@bliss-design-system/button
Version:
Button component, or an anchor element styled as a button.
314 lines (271 loc) • 7.66 kB
JavaScript
import { css } from 'lit-element';
export const styles = css `
:host[hidden] {
display: none;
}
:host {
display: inline-block;
outline: 0;
}
:host [part=button] {
display: inline-flex;
align-items: center;
justify-content: center;
appearance: none;
box-sizing: border-box;
border: 1px solid transparent;
border-radius: 2px;
cursor: pointer;
font-weight: 600;
font-family: inherit;
height: auto;
margin: 0;
position: relative;
text-decoration: none;
user-select: none;
white-space: nowrap;
font-size: 1rem;
line-height: 1.2;
min-height: 40px;
padding: 0 12px;
}
:host [part=button] span {
margin: 0 4px;
}
:host [part=button] [part=loading],
:host [part=button] [part=icon] {
display: block;
margin: 0 4px 0 0;
}
:host [part=button]:disabled {
cursor: default;
opacity: 0.5;
pointer-events: none;
}
:host [part=button]:not(:disabled):focus-visible, :host [part=button]:not(:disabled):hover:focus-visible, :host [part=button]:not(:disabled):active:focus-visible {
outline: 2px solid #186bf2;
outline-offset: 1px;
}
@supports not selector(:focus-visible) {
:host [part=button]:focus, :host [part=button]:hover:focus, :host [part=button]:active:focus {
outline: 2px solid #186bf2;
outline-offset: 1px;
}
}
:host([size=small]) [part=button] {
font-size: 0.875rem;
min-height: 32px;
padding: 0 8px;
}
:host([size=small]) [part=button] [part=loading],
:host([size=small]) [part=button] [part=icon] {
display: block;
margin: 0 0 0 0;
}
:host([full-width]),
:host([full-width]) [part=button] {
width: 100%;
}
:host([icon-only]) [part=button],
:host([icon-only][loading]) [part=button],
:host([icon-only][icon-trailing]) [part=button] {
padding: 0 8px;
}
:host([icon-only]) [part=button] [part=loading],
:host([icon-only]) [part=button] [part=icon],
:host([icon-only][loading]) [part=button] [part=loading],
:host([icon-only][loading]) [part=button] [part=icon],
:host([icon-only][icon-trailing]) [part=button] [part=loading],
:host([icon-only][icon-trailing]) [part=button] [part=icon] {
display: block;
margin: 0;
}
:host([size=small][icon-only]) [part=button],
:host([size=small][icon-only][icon-trailing]) [part=button] {
padding: 0 4px;
}
:host([icon-trailing]) [part=button] [part=icon] {
display: block;
margin: 0 0 0 4px;
}
:host([loading]) [part=button] {
opacity: 1;
}
:host([loading]) [part=button] [part=loading] {
display: inherit;
position: absolute;
}
:host([loading]) [part=button] [part=icon],
:host([loading]) [part=button] [part=content] {
visibility: hidden;
}
:host([icon-only][loading]) [part=button] [part=loading] {
display: inherit;
position: relative;
}
:host([icon-only][loading]) [part=button] [part=icon] {
display: none;
}
:host([size=small][icon-trailing]) [part=button] [part=icon] {
display: block;
margin: 0 0 0 0;
}
:host [part=button] {
background-color: #186bf2;
border-color: #186bf2;
color: #ffffff;
}
:host(:hover) [part=button]:not(:disabled) {
background-color: #004ac2;
border-color: #004ac2;
}
:host([loading]) [part=button]:disabled,
:host(:active) [part=button]:not(:disabled) {
background-color: #003fa3;
border-color: #003fa3;
}
:host([theme=neutral]) [part=button] {
background-color: #6c7789;
border-color: #6c7789;
color: #ffffff;
}
:host([theme=neutral]:hover) [part=button]:not(:disabled) {
background-color: #444a55;
border-color: #444a55;
}
:host([theme=neutral][loading]) [part=button]:disabled,
:host([theme=neutral]:active) [part=button]:not(:disabled) {
background-color: #32363e;
border-color: #32363e;
}
:host([theme=critical]) [part=button] {
background-color: #df2033;
border-color: #df2033;
color: #ffffff;
}
:host([theme=critical]:hover) [part=button]:not(:disabled) {
background-color: #8a0a17;
border-color: #8a0a17;
}
:host([theme=critical][loading]) [part=button]:disabled,
:host([theme=critical]:active) [part=button]:not(:disabled) {
background-color: #780712;
border-color: #780712;
}
:host([variant=secondary]) [part=button] {
background-color: #ffffff;
border-color: #186bf2;
color: #186bf2;
}
:host([variant=secondary]:hover) [part=button]:not(:disabled) {
background-color: #f5f8ff;
border-color: #004ac2;
color: #004ac2;
}
:host([variant=secondary][transparent]) [part=button] {
background-color: transparent;
}
:host([variant=secondary][loading]) [part=button]:disabled,
:host([variant=secondary]:active) [part=button]:not(:disabled) {
background-color: #d6e7ff;
border-color: #003fa3;
color: #003fa3;
}
:host([variant=secondary][theme=neutral]) [part=button] {
background-color: #ffffff;
border-color: #6c7789;
color: #6c7789;
}
:host([variant=secondary][theme=neutral]:hover) [part=button]:not(:disabled) {
background-color: #f4f4f6;
border-color: #444a55;
color: #444a55;
}
:host([variant=secondary][theme=neutral][transparent]) [part=button] {
background-color: transparent;
}
:host([variant=secondary][theme=neutral][loading]) [part=button]:disabled,
:host([variant=secondary][theme=neutral]:active) [part=button]:not(:disabled) {
background-color: #e2e5e9;
border-color: #32363e;
color: #32363e;
}
:host([variant=secondary][theme=critical]) [part=button] {
background-color: #ffffff;
border-color: #df2033;
color: #df2033;
}
:host([variant=secondary][theme=critical]:hover) [part=button]:not(:disabled) {
background-color: #fff0f1;
border-color: #8a0a17;
color: #8a0a17;
}
:host([variant=secondary][theme=critical][transparent]) [part=button] {
background-color: transparent;
}
:host([variant=secondary][theme=critical][loading]) [part=button]:disabled,
:host([variant=secondary][theme=critical]:active) [part=button]:not(:disabled) {
background-color: #fed2d6;
border-color: #780712;
color: #780712;
}
:host([variant=ghost]) [part=button] {
background-color: #ffffff;
border-color: #ffffff;
color: #186bf2;
}
:host([variant=ghost]:hover) [part=button]:not(:disabled) {
background-color: #f5f8ff;
border-color: #f5f8ff;
color: #004ac2;
}
:host([variant=ghost][transparent]) [part=button] {
background-color: transparent;
border-color: transparent;
}
:host([variant=ghost][loading]) [part=button]:disabled,
:host([variant=ghost]:active) [part=button]:not(:disabled) {
background-color: #d6e7ff;
border-color: #d6e7ff;
color: #003fa3;
}
:host([variant=ghost][theme=neutral]) [part=button] {
background-color: #ffffff;
border-color: #ffffff;
color: #6c7789;
}
:host([variant=ghost][theme=neutral]:hover) [part=button]:not(:disabled) {
background-color: #f4f4f6;
border-color: #f4f4f6;
color: #444a55;
}
:host([variant=ghost][theme=neutral][transparent]) [part=button] {
background-color: transparent;
border-color: transparent;
}
:host([variant=ghost][theme=neutral][loading]) [part=button]:disabled,
:host([variant=ghost][theme=neutral]:active) [part=button]:not(:disabled) {
background-color: #e2e5e9;
border-color: #e2e5e9;
color: #32363e;
}
:host([variant=ghost][theme=critical]) [part=button] {
background-color: #ffffff;
border-color: #ffffff;
color: #df2033;
}
:host([variant=ghost][theme=critical]:hover) [part=button]:not(:disabled) {
background-color: #fff0f1;
border-color: #fff0f1;
color: #8a0a17;
}
:host([variant=ghost][theme=critical][transparent]) [part=button] {
background-color: transparent;
border-color: transparent;
}
:host([variant=ghost][theme=critical][loading]) [part=button]:disabled,
:host([variant=ghost][theme=critical]:active) [part=button]:not(:disabled) {
background-color: #fed2d6;
border-color: #fed2d6;
color: #780712;
}`;