button.css 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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-md);
  8. text-decoration: none;
  9. user-select: none;
  10. cursor: default;
  11. outline: none;
  12. white-space: nowrap;
  13. &[data-variant="primary"] {
  14. background-color: var(--icon-strong-base);
  15. border-color: var(--border-weak-base);
  16. color: var(--icon-invert-base);
  17. [data-slot="icon-svg"] {
  18. color: var(--icon-invert-base);
  19. }
  20. &:hover:not(:disabled) {
  21. background-color: var(--icon-strong-hover);
  22. }
  23. &:focus:not(:disabled) {
  24. background-color: var(--icon-strong-focus);
  25. }
  26. &:active:not(:disabled) {
  27. background-color: var(--icon-strong-active);
  28. }
  29. &:disabled {
  30. background-color: var(--icon-strong-disabled);
  31. [data-slot="icon-svg"] {
  32. color: var(--icon-invert-base);
  33. }
  34. }
  35. }
  36. &[data-variant="ghost"] {
  37. border-color: transparent;
  38. background-color: transparent;
  39. color: var(--text-strong);
  40. &:hover:not(:disabled) {
  41. background-color: var(--surface-raised-base-hover);
  42. }
  43. &:focus:not(:disabled) {
  44. background-color: var(--surface-raised-base-hover);
  45. }
  46. &:active:not(:disabled) {
  47. background-color: var(--surface-raised-base-active);
  48. }
  49. &:disabled {
  50. color: var(--text-weak);
  51. opacity: 0.7;
  52. cursor: not-allowed;
  53. }
  54. &[data-selected="true"]:not(:disabled) {
  55. background-color: var(--surface-raised-base-hover);
  56. }
  57. &[data-active="true"] {
  58. background-color: var(--surface-raised-base-active);
  59. }
  60. }
  61. &[data-variant="secondary"] {
  62. border: transparent;
  63. background-color: var(--button-secondary-base);
  64. color: var(--text-strong);
  65. box-shadow: var(--shadow-xs-border);
  66. &:hover:not(:disabled) {
  67. background-color: var(--button-secondary-hover);
  68. }
  69. &:focus:not(:disabled) {
  70. background-color: var(--button-secondary-base);
  71. }
  72. &:focus-visible:not(:active) {
  73. background-color: var(--button-secondary-base);
  74. box-shadow: var(--shadow-xs-border-focus);
  75. }
  76. &:focus-visible:active {
  77. box-shadow: none;
  78. }
  79. &:active:not(:disabled) {
  80. background-color: var(--button-secondary-base);
  81. scale: 0.99;
  82. transition: all 150ms ease-out;
  83. }
  84. &:disabled {
  85. border-color: var(--border-disabled);
  86. background-color: var(--surface-disabled);
  87. color: var(--text-weak);
  88. cursor: not-allowed;
  89. }
  90. [data-slot="icon-svg"] {
  91. color: var(--icon-strong-base);
  92. }
  93. }
  94. &[data-size="small"] {
  95. height: 22px;
  96. padding: 0 8px;
  97. &[data-icon] {
  98. padding: 0 12px 0 4px;
  99. }
  100. font-size: var(--font-size-small);
  101. line-height: var(--line-height-large);
  102. gap: 4px;
  103. /* text-12-medium */
  104. font-family: var(--font-family-sans);
  105. font-size: var(--font-size-small);
  106. font-style: normal;
  107. font-weight: var(--font-weight-medium);
  108. line-height: var(--line-height-large); /* 166.667% */
  109. letter-spacing: var(--letter-spacing-normal);
  110. }
  111. &[data-size="normal"] {
  112. height: 24px;
  113. padding: 0 6px;
  114. &[data-icon] {
  115. padding: 0 12px 0 4px;
  116. }
  117. font-size: var(--font-size-small);
  118. line-height: var(--line-height-large);
  119. gap: 6px;
  120. /* text-12-medium */
  121. font-family: var(--font-family-sans);
  122. font-size: var(--font-size-small);
  123. font-style: normal;
  124. font-weight: var(--font-weight-medium);
  125. line-height: var(--line-height-large); /* 166.667% */
  126. letter-spacing: var(--letter-spacing-normal);
  127. }
  128. &[data-size="large"] {
  129. height: 32px;
  130. padding: 6px 12px;
  131. &[data-icon] {
  132. padding: 0 12px 0 8px;
  133. }
  134. gap: 8px;
  135. /* text-14-medium */
  136. font-family: var(--font-family-sans);
  137. font-size: 14px;
  138. font-style: normal;
  139. font-weight: var(--font-weight-medium);
  140. line-height: var(--line-height-large); /* 142.857% */
  141. letter-spacing: var(--letter-spacing-normal);
  142. }
  143. &:focus {
  144. outline: none;
  145. }
  146. }