UNPKG

@synergy-design-system/components

Version:

This package provides the base of the Synergy Design System as native web components. It uses [lit](https://www.lit.dev) and parts of [shoelace](https://shoelace.style/). Synergy officially supports the latest two versions of all major browsers (as define

366 lines (303 loc) 9.02 kB
// src/components/button/button.styles.ts import { css } from "lit"; var button_styles_default = css` /* stylelint-disable */ :host { display: inline-block; position: relative; width: auto; cursor: pointer; } .button { display: inline-flex; align-items: stretch; justify-content: center; width: 100%; border-style: solid; border-width: var(--syn-input-border-width); font-family: var(--syn-input-font-family); font-weight: var(--syn-font-weight-semibold); text-decoration: none; user-select: none; -webkit-user-select: none; white-space: nowrap; vertical-align: middle; padding: 0; transition: var(--syn-transition-x-fast) background-color, var(--syn-transition-x-fast) color, var(--syn-transition-x-fast) border, var(--syn-transition-x-fast) box-shadow; cursor: inherit; } .button::-moz-focus-inner { border: 0; } .button:focus { outline: none; } .button:focus-visible { outline: var(--syn-focus-ring); outline-offset: var(--syn-focus-ring-offset); } .button--disabled { opacity: 0.5; cursor: not-allowed; } /* When disabled, prevent mouse events from bubbling up from children */ .button--disabled * { pointer-events: none; } .button__prefix, .button__suffix { flex: 0 0 auto; display: flex; align-items: center; pointer-events: none; } .button__label { display: inline-block; } .button__label::slotted(syn-icon) { vertical-align: -2px; } /* * Standard buttons */ /* Primary */ .button--filled.button--primary { background-color: var(--syn-color-primary-600); border-color: var(--syn-color-primary-600); color: var(--syn-color-neutral-0); } .button--filled.button--primary:hover:not(.button--disabled) { background-color: var(--syn-color-primary-500); border-color: var(--syn-color-primary-500); color: var(--syn-color-neutral-0); } .button--filled.button--primary:active:not(.button--disabled) { background-color: var(--syn-color-primary-600); border-color: var(--syn-color-primary-600); color: var(--syn-color-neutral-0); } /* * Outline buttons */ .button--outline { background: none; border: solid 1px; } /* Primary */ .button--outline.button--primary { border-color: var(--syn-color-primary-600); color: var(--syn-color-primary-600); } .button--outline.button--primary:hover:not(.button--disabled), .button--outline.button--primary.button--checked:not(.button--disabled) { background-color: var(--syn-color-primary-600); color: var(--syn-color-neutral-0); } .button--outline.button--primary:active:not(.button--disabled) { border-color: var(--syn-color-primary-700); background-color: var(--syn-color-primary-700); color: var(--syn-color-neutral-0); } /* * Text buttons */ .button--text { background-color: transparent; border-color: transparent; color: var(--syn-color-primary-600); } .button--text:hover:not(.button--disabled) { background-color: transparent; border-color: transparent; color: var(--syn-color-primary-500); } .button--text:focus-visible:not(.button--disabled) { background-color: transparent; border-color: transparent; color: var(--syn-color-primary-500); } .button--text:active:not(.button--disabled) { background-color: transparent; border-color: transparent; color: var(--syn-color-primary-700); } /* * Size modifiers */ .button--small { height: auto; min-height: var(--syn-input-height-small); font-size: var(--syn-button-font-size-small); line-height: calc(var(--syn-input-height-small) - var(--syn-input-border-width) * 2); border-radius: var(--syn-input-border-radius-small); } .button--medium { height: auto; min-height: var(--syn-input-height-medium); font-size: var(--syn-button-font-size-medium); line-height: calc(var(--syn-input-height-medium) - var(--syn-input-border-width) * 2); border-radius: var(--syn-input-border-radius-medium); } .button--large { height: auto; min-height: var(--syn-input-height-large); font-size: var(--syn-button-font-size-large); line-height: calc(var(--syn-input-height-large) - var(--syn-input-border-width) * 2); border-radius: var(--syn-input-border-radius-large); } /* * Caret modifier */ .button--caret .button__suffix { display: none; } .button--caret .button__caret { height: auto; } /* * Loading modifier */ .button--loading { position: relative; cursor: wait; } .button--loading .button__prefix, .button--loading .button__label, .button--loading .button__suffix, .button--loading .button__caret { visibility: hidden; } .button--loading syn-spinner { --indicator-color: currentColor; position: absolute; font-size: 1em; height: 1em; width: 1em; top: calc(50% - 0.5em); left: calc(50% - 0.5em); } /* * Badges */ .button ::slotted(syn-badge) { position: absolute; top: 0; right: 0; translate: 50% -50%; pointer-events: none; } .button--rtl ::slotted(syn-badge) { right: auto; left: 0; translate: -50% -50%; } /* * Button spacing */ .button--has-label.button--small .button__label { padding: 0 var(--syn-spacing-small); } .button--has-label.button--medium .button__label { padding: 0 var(--syn-spacing-medium); } .button--has-label.button--large .button__label { padding: 0 var(--syn-spacing-large); } .button--has-prefix.button--small { padding-inline-start: var(--syn-spacing-x-small); } .button--has-prefix.button--small .button__label { padding-inline-start: var(--syn-spacing-x-small); } .button--has-prefix.button--medium { padding-inline-start: var(--syn-spacing-small); } .button--has-prefix.button--medium .button__label { padding-inline-start: var(--syn-spacing-small); } .button--has-prefix.button--large { padding-inline-start: var(--syn-spacing-small); } .button--has-prefix.button--large .button__label { padding-inline-start: var(--syn-spacing-small); } .button--has-suffix.button--small, .button--caret.button--small { padding-inline-end: var(--syn-spacing-x-small); } .button--has-suffix.button--small .button__label, .button--caret.button--small .button__label { padding-inline-end: var(--syn-spacing-x-small); } .button--has-suffix.button--medium, .button--caret.button--medium { padding-inline-end: var(--syn-spacing-small); } .button--has-suffix.button--medium .button__label, .button--caret.button--medium .button__label { padding-inline-end: var(--syn-spacing-small); } .button--has-suffix.button--large, .button--caret.button--large { padding-inline-end: var(--syn-spacing-small); } .button--has-suffix.button--large .button__label, .button--caret.button--large .button__label { padding-inline-end: var(--syn-spacing-small); } /* * Button groups support a variety of button types (e.g. buttons with tooltips, buttons as dropdown triggers, etc.). * This means buttons aren't always direct descendants of the button group, thus we can't target them with the * ::slotted selector. To work around this, the button group component does some magic to add these special classes to * buttons and we style them here instead. */ :host([data-syn-button-group__button--first]:not([data-syn-button-group__button--last])) .button { border-start-end-radius: 0; border-end-end-radius: 0; } :host([data-syn-button-group__button--inner]) .button { border-radius: 0; } :host([data-syn-button-group__button--last]:not([data-syn-button-group__button--first])) .button { border-start-start-radius: 0; border-end-start-radius: 0; } /* All except the first */ :host([data-syn-button-group__button]:not([data-syn-button-group__button--first])) { margin-inline-start: calc(-1 * var(--syn-input-border-width)); } /* Add a visual separator between solid buttons */ :host( [data-syn-button-group__button]:not( [data-syn-button-group__button--first], [data-syn-button-group__button--radio], [variant='filled'] ):not(:hover) ) .button:after { content: ''; position: absolute; top: 0; inset-inline-start: 0; bottom: 0; border-left: solid 1px rgb(128 128 128 / 33%); mix-blend-mode: multiply; } /* Bump hovered, focused, and checked buttons up so their focus ring isn't clipped */ :host([data-syn-button-group__button--hover]) { z-index: 1; } /* Focus and checked are always on top */ :host([data-syn-button-group__button--focus]), :host([data-syn-button-group__button][checked]) { z-index: 2; } `; export { button_styles_default }; //# sourceMappingURL=chunk.5SQ7NVBX.js.map