button.css 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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: 6px;
  8. text-decoration: none;
  9. user-select: none;
  10. outline: none;
  11. &[data-variant="primary"] {
  12. border-color: var(--border-base);
  13. background-color: var(--surface-brand-base);
  14. color: var(--text-on-brand-strong);
  15. &:hover:not(:disabled) {
  16. border-color: var(--border-hover);
  17. background-color: var(--surface-brand-hover);
  18. }
  19. &:active:not(:disabled) {
  20. border-color: var(--border-active);
  21. background-color: var(--surface-brand-active);
  22. }
  23. &:focus:not(:disabled) {
  24. border-color: var(--border-focus);
  25. background-color: var(--surface-brand-focus);
  26. }
  27. }
  28. &[data-variant="secondary"] {
  29. border: transparent;
  30. background-color: var(--button-secondary-base);
  31. color: var(--text-strong);
  32. box-shadow: var(--shadow-xs-border);
  33. &:hover:not(:disabled) {
  34. background-color: var(--button-secondary-hover);
  35. }
  36. &:active:not(:disabled) {
  37. background-color: var(--button-secondary-base);
  38. }
  39. &:focus:not(:disabled) {
  40. background-color: var(--button-secondary-base);
  41. }
  42. &:focus-visible:not(:active) {
  43. background-color: var(--button-secondary-base);
  44. box-shadow: var(--shadow-xs-border-focus);
  45. }
  46. &:focus-visible:active {
  47. box-shadow: none;
  48. }
  49. [data-slot="icon"] {
  50. color: var(--icon-strong-base);
  51. }
  52. }
  53. &[data-variant="ghost"] {
  54. border-color: transparent;
  55. background-color: transparent;
  56. color: var(--text-strong);
  57. &:hover:not(:disabled) {
  58. background-color: var(--surface-hover);
  59. }
  60. &:active:not(:disabled) {
  61. border-color: var(--border-active);
  62. background-color: var(--surface-active);
  63. }
  64. &:focus:not(:disabled) {
  65. border-color: var(--border-focus);
  66. background-color: var(--surface-focus);
  67. }
  68. }
  69. &[data-size="normal"] {
  70. padding: 0 6px;
  71. &[data-icon] {
  72. padding: 0 6px 0 4px;
  73. }
  74. font-size: var(--font-size-small);
  75. line-height: var(--line-height-large);
  76. gap: calc(var(--spacing) * 0.5);
  77. }
  78. &[data-size="large"] {
  79. height: 32px;
  80. padding: 0 8px;
  81. &[data-icon] {
  82. padding: 0 8px 0 6px;
  83. }
  84. gap: 8px;
  85. font-family: var(--font-family-sans);
  86. font-size: var(--font-size-base);
  87. font-style: normal;
  88. font-weight: var(--font-weight-medium);
  89. line-height: var(--line-height-large); /* 171.429% */
  90. letter-spacing: var(--letter-spacing-normal);
  91. }
  92. &:disabled {
  93. border-color: var(--border-disabled);
  94. background-color: var(--surface-disabled);
  95. color: var(--text-weak);
  96. cursor: not-allowed;
  97. }
  98. &:focus {
  99. outline: none;
  100. }
  101. }