button.css 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. [data-component="button"] {
  2. display: inline-flex;
  3. align-items: center;
  4. justify-content: center;
  5. border-style: solid;
  6. border-width: 1px;
  7. border-radius: var(--radius-sm);
  8. text-decoration: none;
  9. user-select: none;
  10. cursor: default;
  11. outline: none;
  12. &[data-variant="primary"] {
  13. border-color: var(--border-base);
  14. background-color: var(--surface-brand-base);
  15. color: var(--text-on-brand-strong);
  16. &:hover:not(:disabled) {
  17. border-color: var(--border-hover);
  18. background-color: var(--surface-brand-hover);
  19. }
  20. &:focus:not(:disabled) {
  21. border-color: var(--border-focus);
  22. background-color: var(--surface-brand-focus);
  23. }
  24. &:active:not(:disabled) {
  25. border-color: var(--border-active);
  26. background-color: var(--surface-brand-active);
  27. }
  28. }
  29. &[data-variant="ghost"] {
  30. border-color: transparent;
  31. background-color: transparent;
  32. color: var(--text-strong);
  33. &:hover:not(:disabled) {
  34. background-color: var(--surface-raised-base-hover);
  35. }
  36. &:focus:not(:disabled) {
  37. background-color: var(--surface-raised-base-hover);
  38. }
  39. &:active:not(:disabled) {
  40. background-color: var(--surface-raised-base-active);
  41. }
  42. }
  43. &[data-variant="secondary"] {
  44. border: transparent;
  45. background-color: var(--button-secondary-base);
  46. color: var(--text-strong);
  47. box-shadow: var(--shadow-xs-border);
  48. &:hover:not(:disabled) {
  49. background-color: var(--button-secondary-hover);
  50. }
  51. &:focus:not(:disabled) {
  52. background-color: var(--button-secondary-base);
  53. }
  54. &:focus-visible:not(:active) {
  55. background-color: var(--button-secondary-base);
  56. box-shadow: var(--shadow-xs-border-focus);
  57. }
  58. &:focus-visible:active {
  59. box-shadow: none;
  60. }
  61. &:active:not(:disabled) {
  62. background-color: var(--button-secondary-base);
  63. scale: 0.99;
  64. transition: all 150ms ease-out;
  65. }
  66. [data-slot="icon"] {
  67. color: var(--icon-strong-base);
  68. }
  69. }
  70. &[data-size="normal"] {
  71. height: 24px;
  72. padding: 0 6px;
  73. &[data-icon] {
  74. padding: 0 8px 0 6px;
  75. }
  76. font-size: var(--font-size-small);
  77. line-height: var(--line-height-large);
  78. gap: 6px;
  79. }
  80. &[data-size="large"] {
  81. height: 32px;
  82. padding: 0 8px;
  83. &[data-icon] {
  84. padding: 0 8px 0 6px;
  85. }
  86. gap: 8px;
  87. /* text-12-medium */
  88. font-family: var(--font-family-sans);
  89. font-size: var(--font-size-small);
  90. font-style: normal;
  91. font-weight: var(--font-weight-medium);
  92. line-height: var(--line-height-large); /* 166.667% */
  93. letter-spacing: var(--letter-spacing-normal);
  94. }
  95. &:disabled {
  96. border-color: var(--border-disabled);
  97. background-color: var(--surface-disabled);
  98. color: var(--text-weak);
  99. cursor: not-allowed;
  100. }
  101. &:focus {
  102. outline: none;
  103. }
  104. }