button.css 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. [data-component="button"] {
  2. width: fit-content;
  3. display: flex;
  4. line-height: 1;
  5. align-items: center;
  6. justify-content: center;
  7. gap: var(--space-2);
  8. font-size: var(--font-size-md);
  9. text-transform: uppercase;
  10. height: var(--space-11);
  11. outline: none;
  12. font-weight: 500;
  13. padding: 0 var(--space-4);
  14. border-width: 2px;
  15. border-color: var(--color-border);
  16. cursor: pointer;
  17. &:disabled {
  18. opacity: 0.5;
  19. cursor: default;
  20. }
  21. &[data-color="primary"] {
  22. background-color: var(--color-text);
  23. border-color: var(--color-text);
  24. color: var(--color-text-invert);
  25. &:active {
  26. border-color: var(--color-accent);
  27. }
  28. }
  29. &[data-color="secondary"] {
  30. &:active {
  31. border-color: var(--color-accent);
  32. }
  33. }
  34. &[data-color="ghost"] {
  35. border: none;
  36. text-decoration: underline;
  37. &:active {
  38. color: var(--color-text-accent);
  39. }
  40. }
  41. &:has([data-slot="icon"]) {
  42. padding-left: var(--space-3);
  43. padding-right: var(--space-3);
  44. }
  45. &[data-size="sm"] {
  46. height: var(--space-8);
  47. padding: var(--space-3);
  48. font-size: var(--font-size-xs);
  49. [data-slot="icon"] {
  50. width: var(--space-3-5);
  51. height: var(--space-3-5);
  52. }
  53. &:has([data-slot="icon"]) {
  54. padding-left: var(--space-2);
  55. padding-right: var(--space-2);
  56. }
  57. }
  58. [data-slot="icon"] {
  59. width: var(--space-4);
  60. height: var(--space-4);
  61. transition: transform 0.2s ease;
  62. }
  63. &[data-rotate] [data-slot="icon"] {
  64. transform: rotate(180deg);
  65. }
  66. }