1
0

button.css 3.5 KB

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