UNPKG

@bliss-design-system/button

Version:

Button component, or an anchor element styled as a button.

314 lines (271 loc) 7.66 kB
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; }`;