@use 'core/_base' as *; @use 'sass:selector'; @include setNamespace('button'); #{b()} { display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; cursor: pointer; background: var(--color-canvas); border: 1px solid var(--color-hairline); border-radius: var(--radius-field); padding: 0 20px; height: 40px; line-height: 1; font-size: 14px; font-weight: 500; color: var(--color-ink); transition: all 0.15s ease; &#{m('primary')} { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-primary-content); &:hover { background: var(--color-primary-active); border-color: var(--color-primary-active); } &:active { opacity: 0.85; } &:disabled { background: var(--color-primary-disabled); border-color: var(--color-primary-disabled); color: var(--color-muted); cursor: not-allowed; } } &#{m('secondary')} { background: var(--color-canvas); border-color: var(--color-hairline); color: var(--color-ink); &:hover { background: var(--color-surface-soft); } &:active { background: var(--color-surface-card); } &:disabled { opacity: 0.5; cursor: not-allowed; } } &#{m('tertiary')} { background: transparent; border-color: transparent; color: var(--color-ink); &:hover { background: var(--color-surface-soft); } &:disabled { opacity: 0.5; cursor: not-allowed; } } &#{m('danger')} { background: var(--color-error); border-color: var(--color-error); color: var(--color-error-content); &:hover { opacity: 0.9; } &:disabled { opacity: 0.5; cursor: not-allowed; } } &#{m('warning')} { background: var(--color-warning); border-color: var(--color-warning); color: var(--color-warning-content); &:hover { opacity: 0.9; } &:disabled { opacity: 0.5; cursor: not-allowed; } } &:hover { opacity: 1; } &:active { opacity: 0.85; } &:disabled { opacity: 0.5; cursor: not-allowed; } // Size variants &#{m('small')} { height: 32px; padding: 0 12px; font-size: 13px; } &#{m('medium')} { height: 40px; padding: 0 20px; font-size: 14px; } &#{m('large')} { height: 48px; padding: 0 24px; font-size: 16px; } } // Loading spinner #{m('spinner')} { display: inline-block; width: 14px; height: 14px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: button-spinner 0.75s linear infinite; margin-right: 8px; } @keyframes button-spinner { to { transform: rotate(360deg); } }