button.css 2.6 KB

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