@auvyx/ui 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +48 -0
  2. package/README.md +43 -2
  3. package/dist/auvyx.bundle.css +5941 -0
  4. package/dist/auvyx.chart.min.js +2 -0
  5. package/dist/auvyx.corners.min.js +2 -0
  6. package/dist/auvyx.css +10880 -0
  7. package/dist/auvyx.js +3222 -0
  8. package/dist/auvyx.min.css +2 -0
  9. package/dist/auvyx.min.js +19 -0
  10. package/dist/custom-elements.json +948 -0
  11. package/dist/elements/calendar.min.js +2 -0
  12. package/dist/elements/context-menu.min.js +2 -0
  13. package/dist/elements/data-table.min.js +2 -0
  14. package/dist/elements/date-picker.min.js +2 -0
  15. package/dist/elements/index.min.js +2 -0
  16. package/dist/elements/menu.min.js +2 -0
  17. package/dist/elements/resizable.min.js +2 -0
  18. package/dist/js/accordion.min.js +2 -0
  19. package/dist/js/calendar.min.js +2 -0
  20. package/dist/js/combobox.min.js +2 -0
  21. package/dist/js/command.min.js +2 -0
  22. package/dist/js/context-menu.min.js +2 -0
  23. package/dist/js/copy.min.js +2 -0
  24. package/dist/js/data-table.min.js +2 -0
  25. package/dist/js/date-picker.min.js +2 -0
  26. package/dist/js/drawer.min.js +2 -0
  27. package/dist/js/dropdown-menu.min.js +2 -0
  28. package/dist/js/manifest.json +114 -0
  29. package/dist/js/menu.min.js +2 -0
  30. package/dist/js/popover.min.js +2 -0
  31. package/dist/js/resizable.min.js +2 -0
  32. package/dist/js/select.min.js +2 -0
  33. package/dist/js/sidebar.min.js +2 -0
  34. package/dist/js/slider.min.js +2 -0
  35. package/dist/js/tabs.min.js +2 -0
  36. package/dist/js/toast.min.js +19 -0
  37. package/dist/styles/auvyx-luma.min.css +3 -0
  38. package/dist/styles/auvyx-lyra.min.css +3 -0
  39. package/dist/styles/auvyx-maia.min.css +3 -0
  40. package/dist/styles/auvyx-mira.min.css +3 -0
  41. package/dist/styles/auvyx-nova.min.css +3 -0
  42. package/dist/styles/auvyx-rhea.min.css +3 -0
  43. package/dist/styles/auvyx-sera.min.css +3 -0
  44. package/dist/styles/auvyx-vega.min.css +3 -0
  45. package/dist/types/elements.d.ts +262 -0
  46. package/dist/types/react.d.ts +181 -0
  47. package/dist/types/vue.d.ts +155 -0
  48. package/dist/ui/accordion.css +91 -0
  49. package/dist/ui/accordion.js +249 -0
  50. package/dist/ui/accordion.native.css +24 -0
  51. package/dist/ui/alert.css +119 -0
  52. package/dist/ui/aspect-ratio.css +38 -0
  53. package/dist/ui/attachment.css +211 -0
  54. package/dist/ui/avatar.css +204 -0
  55. package/dist/ui/badge.css +183 -0
  56. package/dist/ui/base.css +1200 -0
  57. package/dist/ui/breadcrumb.css +90 -0
  58. package/dist/ui/bubble.css +171 -0
  59. package/dist/ui/button-group.css +110 -0
  60. package/dist/ui/button.css +328 -0
  61. package/dist/ui/calendar.css +260 -0
  62. package/dist/ui/calendar.js +317 -0
  63. package/dist/ui/card.css +126 -0
  64. package/dist/ui/carousel.css +172 -0
  65. package/dist/ui/chart.css +130 -0
  66. package/dist/ui/checkbox.css +119 -0
  67. package/dist/ui/code-block.css +235 -0
  68. package/dist/ui/combobox.css +500 -0
  69. package/dist/ui/combobox.js +757 -0
  70. package/dist/ui/command.css +366 -0
  71. package/dist/ui/command.js +382 -0
  72. package/dist/ui/context-menu.css +17 -0
  73. package/dist/ui/context-menu.js +52 -0
  74. package/dist/ui/copy.js +56 -0
  75. package/dist/ui/data-table.css +114 -0
  76. package/dist/ui/data-table.js +140 -0
  77. package/dist/ui/date-picker.css +14 -0
  78. package/dist/ui/date-picker.js +101 -0
  79. package/dist/ui/dialog.css +363 -0
  80. package/dist/ui/dialog.native.css +6 -0
  81. package/dist/ui/drawer.css +238 -0
  82. package/dist/ui/drawer.js +265 -0
  83. package/dist/ui/dropdown-menu.css +193 -0
  84. package/dist/ui/dropdown-menu.js +388 -0
  85. package/dist/ui/empty.css +111 -0
  86. package/dist/ui/field.css +293 -0
  87. package/dist/ui/hover-card.css +85 -0
  88. package/dist/ui/input-group.css +269 -0
  89. package/dist/ui/input-otp.css +101 -0
  90. package/dist/ui/input.css +117 -0
  91. package/dist/ui/item.css +223 -0
  92. package/dist/ui/kbd.css +50 -0
  93. package/dist/ui/label.css +48 -0
  94. package/dist/ui/manifest.json +667 -0
  95. package/dist/ui/marker.css +66 -0
  96. package/dist/ui/menu.js +161 -0
  97. package/dist/ui/menubar.css +55 -0
  98. package/dist/ui/message-scroller.css +83 -0
  99. package/dist/ui/message.css +69 -0
  100. package/dist/ui/native-select.css +130 -0
  101. package/dist/ui/navigation-menu.css +166 -0
  102. package/dist/ui/popover.css +154 -0
  103. package/dist/ui/popover.js +268 -0
  104. package/dist/ui/popover.native.css +84 -0
  105. package/dist/ui/progress.css +29 -0
  106. package/dist/ui/questionnaire.css +188 -0
  107. package/dist/ui/radio-group.css +115 -0
  108. package/dist/ui/resizable.css +94 -0
  109. package/dist/ui/resizable.js +95 -0
  110. package/dist/ui/scroll-area.css +43 -0
  111. package/dist/ui/select.css +289 -0
  112. package/dist/ui/select.js +646 -0
  113. package/dist/ui/sheet.css +219 -0
  114. package/dist/ui/sidebar.css +716 -0
  115. package/dist/ui/sidebar.js +287 -0
  116. package/dist/ui/skeleton.css +13 -0
  117. package/dist/ui/slider.css +184 -0
  118. package/dist/ui/slider.js +206 -0
  119. package/dist/ui/switch.css +156 -0
  120. package/dist/ui/table.css +157 -0
  121. package/dist/ui/tabs.css +240 -0
  122. package/dist/ui/tabs.js +288 -0
  123. package/dist/ui/textarea.css +91 -0
  124. package/dist/ui/toast.css +110 -0
  125. package/dist/ui/toast.js +378 -0
  126. package/dist/ui/toggle-group.css +42 -0
  127. package/dist/ui/toggle.css +150 -0
  128. package/dist/ui/tooltip.css +319 -0
  129. package/dist/ui/trace.css +142 -0
  130. package/dist/ui/typography.css +184 -0
  131. package/dist/wc/accordion.min.js +2 -0
  132. package/dist/wc/combobox.min.js +2 -0
  133. package/dist/wc/command.min.js +2 -0
  134. package/dist/wc/drawer.min.js +2 -0
  135. package/dist/wc/dropdown-menu.min.js +2 -0
  136. package/dist/wc/manifest.json +154 -0
  137. package/dist/wc/popover.min.js +2 -0
  138. package/dist/wc/select.min.js +2 -0
  139. package/dist/wc/sidebar.min.js +2 -0
  140. package/dist/wc/slider.min.js +2 -0
  141. package/dist/wc/tabs.min.js +2 -0
  142. package/dist/wc/toast.min.js +19 -0
  143. package/package.json +62 -4
@@ -0,0 +1,90 @@
1
+ /* @auvyx/ui breadcrumb | order 5 */
2
+ @layer components {
3
+ .breadcrumb > ol {
4
+ margin: 0;
5
+ display: flex;
6
+ list-style-type: none;
7
+ flex-wrap: wrap;
8
+ align-items: center;
9
+ padding: 0;
10
+ overflow-wrap: break-word;
11
+ }
12
+ .breadcrumb li {
13
+ display: inline-flex;
14
+ align-items: center;
15
+ }
16
+ .breadcrumb a {
17
+ border-radius: var(--radius-sm);
18
+ --tw-outline-style: none;
19
+ outline-style: none;
20
+ &:focus-visible {
21
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
22
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
23
+ }
24
+ &:focus-visible {
25
+ --tw-ring-color: var(--color-ring);
26
+ @supports (color: color-mix(in lab, red, red)) {
27
+ --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);
28
+ }
29
+ }
30
+ }
31
+ .breadcrumb [aria-current='page'] {
32
+ cursor: default;
33
+ }
34
+ .breadcrumb li[aria-hidden='true'] {
35
+ -webkit-user-select: none;
36
+ user-select: none;
37
+ }
38
+ .breadcrumb li > span[aria-hidden='true'] {
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ }
43
+ .breadcrumb [data-rtl-flip] {
44
+ &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
45
+ rotate: 180deg;
46
+ }
47
+ }
48
+ }
49
+
50
+ @layer components {
51
+ .breadcrumb > ol {
52
+ gap: calc(var(--spacing) * 1.5);
53
+ font-size: var(--text-sm);
54
+ line-height: var(--tw-leading, var(--text-sm--line-height));
55
+ color: var(--color-muted-foreground);
56
+ @media (width >= 40rem) {
57
+ gap: calc(var(--spacing) * 2.5);
58
+ }
59
+ }
60
+ .breadcrumb li {
61
+ gap: calc(var(--spacing) * 1.5);
62
+ }
63
+ .breadcrumb a {
64
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
65
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
66
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
67
+ &:hover {
68
+ @media (hover: hover) {
69
+ color: var(--color-foreground);
70
+ }
71
+ }
72
+ }
73
+ .breadcrumb [aria-current='page'] {
74
+ --tw-font-weight: var(--font-weight-normal);
75
+ font-weight: var(--font-weight-normal);
76
+ color: var(--color-foreground);
77
+ }
78
+ .breadcrumb li[aria-hidden='true'] > svg {
79
+ width: calc(var(--spacing) * 3.5);
80
+ height: calc(var(--spacing) * 3.5);
81
+ }
82
+ .breadcrumb li > span[aria-hidden='true'] {
83
+ width: calc(var(--spacing) * 5);
84
+ height: calc(var(--spacing) * 5);
85
+ &>svg {
86
+ width: calc(var(--spacing) * 4);
87
+ height: calc(var(--spacing) * 4);
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,171 @@
1
+ /* @auvyx/ui bubble | order 45 */
2
+ @layer components {
3
+ .bubble-group {
4
+ display: flex;
5
+ min-width: 0;
6
+ flex-direction: column;
7
+ }
8
+ .bubble {
9
+ position: relative;
10
+ display: flex;
11
+ width: fit-content;
12
+ min-width: 0;
13
+ flex-direction: column;
14
+ &[data-align='end'] {
15
+ align-self: flex-end;
16
+ }
17
+ > :not(aside) {
18
+ width: fit-content;
19
+ max-width: 100%;
20
+ min-width: 0;
21
+ overflow: hidden;
22
+ overflow-wrap: break-word;
23
+ }
24
+ > :is(button, a):not(aside) {
25
+ cursor: pointer;
26
+ text-align: start;
27
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
28
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
29
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
30
+ }
31
+ > aside {
32
+ position: absolute;
33
+ z-index: 10;
34
+ display: flex;
35
+ width: fit-content;
36
+ align-items: center;
37
+ justify-content: center;
38
+ }
39
+ }
40
+ }
41
+
42
+ @layer components {
43
+ .bubble-group {
44
+ gap: calc(var(--spacing) * 2);
45
+ }
46
+ .bubble {
47
+ max-width: 80%;
48
+ gap: var(--spacing);
49
+ }
50
+ .bubble[data-variant='ghost'] {
51
+ max-width: 100%;
52
+ }
53
+ .message[data-align='end'] .bubble {
54
+ align-self: flex-end;
55
+ }
56
+ .bubble > :not(aside) {
57
+ margin: 0;
58
+ border-radius: var(--auvyx-r-card);
59
+ border-style: var(--tw-border-style);
60
+ border-width: 1px;
61
+ border-color: transparent;
62
+ background-color: var(--color-primary);
63
+ padding-inline: calc(var(--spacing) * 3);
64
+ padding-block: calc(var(--spacing) * 2);
65
+ font-size: var(--text-sm);
66
+ line-height: var(--tw-leading, var(--text-sm--line-height));
67
+ --tw-leading: var(--leading-relaxed);
68
+ line-height: var(--leading-relaxed);
69
+ color: var(--color-primary-foreground);
70
+ }
71
+ .bubble > :is(a, button):not(aside) {
72
+ --tw-outline-style: none;
73
+ outline-style: none;
74
+ &:hover {
75
+ @media (hover: hover) {
76
+ background-color: var(--color-primary);
77
+ @supports (color: color-mix(in lab, red, red)) {
78
+ background-color: color-mix(in oklab, var(--color-primary) 80%, transparent);
79
+ }
80
+ }
81
+ }
82
+ &:focus-visible {
83
+ border-color: var(--color-ring);
84
+ }
85
+ &:focus-visible {
86
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
87
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
88
+ }
89
+ &:focus-visible {
90
+ --tw-ring-color: var(--color-ring);
91
+ @supports (color: color-mix(in lab, red, red)) {
92
+ --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);
93
+ }
94
+ }
95
+ }
96
+ .bubble[data-variant='secondary'] > :not(aside) {
97
+ background-color: var(--color-secondary);
98
+ color: var(--color-secondary-foreground);
99
+ }
100
+ .bubble[data-variant='muted'] > :not(aside) {
101
+ background-color: var(--color-muted);
102
+ color: var(--color-foreground);
103
+ }
104
+ .bubble[data-variant='tinted'] > :not(aside) {
105
+ color: var(--color-foreground);
106
+ background-color: oklch(from var(--primary) 0.93 calc(c * 0.4) h);
107
+ }
108
+ html.dark .bubble[data-variant='tinted'] > :not(aside) {
109
+ background-color: oklch(from var(--primary) 0.3 calc(c * 0.4) h);
110
+ }
111
+ .bubble[data-variant='outline'] > :not(aside) {
112
+ border-color: var(--color-border);
113
+ background-color: var(--color-background);
114
+ color: var(--color-foreground);
115
+ }
116
+ .bubble[data-variant='ghost'] > :not(aside) {
117
+ border-radius: 0;
118
+ --tw-border-style: none;
119
+ border-style: none;
120
+ background-color: transparent;
121
+ padding: 0;
122
+ color: var(--color-foreground);
123
+ }
124
+ .bubble[data-variant='destructive'] > :not(aside) {
125
+ background-color: var(--color-destructive);
126
+ @supports (color: color-mix(in lab, red, red)) {
127
+ background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);
128
+ }
129
+ color: var(--color-destructive);
130
+ &:is(html.dark *) {
131
+ background-color: var(--color-destructive);
132
+ @supports (color: color-mix(in lab, red, red)) {
133
+ background-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
134
+ }
135
+ }
136
+ }
137
+ .bubble:is([data-variant='secondary'], [data-variant='muted'], [data-variant='outline'], [data-variant='ghost']) > :is(a, button):not(aside) {
138
+ &:hover {
139
+ @media (hover: hover) {
140
+ background-color: var(--color-muted);
141
+ }
142
+ }
143
+ }
144
+ .bubble > aside {
145
+ inset-inline-end: calc(var(--spacing) * 3);
146
+ bottom: 0;
147
+ flex-shrink: 0;
148
+ --tw-translate-y: calc(3 / 4 * 100%);
149
+ translate: var(--tw-translate-x) var(--tw-translate-y);
150
+ gap: var(--spacing);
151
+ border-radius: calc(infinity * 1px);
152
+ background-color: var(--color-muted);
153
+ padding-inline: calc(var(--spacing) * 1.5);
154
+ padding-block: calc(var(--spacing) * 0.5);
155
+ font-size: var(--text-sm);
156
+ line-height: var(--tw-leading, var(--text-sm--line-height));
157
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
158
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
159
+ --tw-ring-color: var(--color-card);
160
+ }
161
+ .bubble > aside[data-side='top'] {
162
+ top: 0;
163
+ bottom: auto;
164
+ --tw-translate-y: calc(calc(3 / 4 * 100%) * -1);
165
+ translate: var(--tw-translate-x) var(--tw-translate-y);
166
+ }
167
+ .bubble > aside[data-align='start'] {
168
+ inset-inline-start: calc(var(--spacing) * 3);
169
+ inset-inline-end: auto;
170
+ }
171
+ }
@@ -0,0 +1,110 @@
1
+ /* @auvyx/ui button-group | order 7 */
2
+ @layer components {
3
+ .button-group {
4
+ isolation: isolate;
5
+ display: inline-flex;
6
+ width: fit-content;
7
+ align-items: stretch;
8
+ &:has(> :is(.dropdown-menu, .popover, .select) > [data-popover][aria-hidden='false']) {
9
+ position: relative;
10
+ z-index: 50;
11
+ }
12
+ > .input {
13
+ flex: 1;
14
+ }
15
+ > *:focus-visible, > :is(.dropdown-menu, .popover, .select) > button:focus-visible {
16
+ position: relative;
17
+ z-index: 10;
18
+ }
19
+ > hr[role='separator'] {
20
+ position: relative;
21
+ margin-inline: 0;
22
+ margin-block: 1px;
23
+ height: auto;
24
+ width: 1px;
25
+ flex-shrink: 0;
26
+ align-self: stretch;
27
+ border-style: var(--tw-border-style);
28
+ border-width: 0px;
29
+ }
30
+ &:not([data-orientation='vertical']) {
31
+ > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {
32
+ border-start-start-radius: 0;
33
+ border-end-start-radius: 0;
34
+ border-inline-start-style: var(--tw-border-style);
35
+ border-inline-start-width: 0px;
36
+ }
37
+ > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {
38
+ border-start-end-radius: 0;
39
+ border-end-end-radius: 0;
40
+ }
41
+ }
42
+ &[data-orientation='vertical'] {
43
+ flex-direction: column;
44
+ > hr[role='separator'] {
45
+ margin-inline: 1px;
46
+ margin-block: 0;
47
+ height: 1px;
48
+ width: auto;
49
+ }
50
+ > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {
51
+ border-top-left-radius: 0;
52
+ border-top-right-radius: 0;
53
+ border-top-style: var(--tw-border-style);
54
+ border-top-width: 0px;
55
+ }
56
+ > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {
57
+ border-bottom-right-radius: 0;
58
+ border-bottom-left-radius: 0;
59
+ }
60
+ }
61
+ }
62
+ .button-group > :is(span, label, output) {
63
+ display: flex;
64
+ align-items: center;
65
+ & svg {
66
+ pointer-events: none;
67
+ }
68
+ }
69
+ }
70
+
71
+ @layer components {
72
+ .button-group {
73
+ &:has(>.button-group) {
74
+ gap: calc(var(--spacing) * 2);
75
+ }
76
+ }
77
+ .button-group:not([data-orientation='vertical']) {
78
+ > :last-child, > :is(.dropdown-menu, .popover, .select):last-child > button {
79
+ border-start-end-radius: var(--radius-md) !important;
80
+ border-end-end-radius: var(--radius-md) !important;
81
+ }
82
+ }
83
+ .button-group[data-orientation='vertical'] {
84
+ > :last-child, > :is(.dropdown-menu, .popover, .select):last-child > button {
85
+ border-bottom-right-radius: var(--radius-md) !important;
86
+ border-bottom-left-radius: var(--radius-md) !important;
87
+ }
88
+ }
89
+ .button-group > :is(span, label, output) {
90
+ gap: calc(var(--spacing) * 2);
91
+ border-radius: var(--radius-md);
92
+ border-style: var(--tw-border-style);
93
+ border-width: 1px;
94
+ background-color: var(--color-muted);
95
+ padding-inline: calc(var(--spacing) * 2.5);
96
+ font-size: var(--text-sm);
97
+ line-height: var(--tw-leading, var(--text-sm--line-height));
98
+ --tw-font-weight: var(--font-weight-medium);
99
+ font-weight: var(--font-weight-medium);
100
+ --tw-shadow: var(--shadow-xs, 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05)));
101
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
102
+ & svg:not([class*='size-']) {
103
+ width: calc(var(--spacing) * 4);
104
+ height: calc(var(--spacing) * 4);
105
+ }
106
+ }
107
+ .button-group > hr[role='separator'] {
108
+ background-color: var(--color-input);
109
+ }
110
+ }
@@ -0,0 +1,328 @@
1
+ /* @auvyx/ui button | order 6 */
2
+ @layer components {
3
+ .btn {
4
+ display: inline-flex;
5
+ flex-shrink: 0;
6
+ align-items: center;
7
+ justify-content: center;
8
+ white-space: nowrap;
9
+ transition-property: all;
10
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
11
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
12
+ --tw-outline-style: none;
13
+ outline-style: none;
14
+ -webkit-user-select: none;
15
+ user-select: none;
16
+ &:disabled {
17
+ pointer-events: none;
18
+ }
19
+ &:disabled {
20
+ opacity: 50%;
21
+ }
22
+ & svg {
23
+ pointer-events: none;
24
+ }
25
+ & svg {
26
+ flex-shrink: 0;
27
+ }
28
+ }
29
+ }
30
+
31
+ @layer components {
32
+ .btn {
33
+ border-radius: var(--radius-md);
34
+ border-style: var(--tw-border-style);
35
+ border-width: 1px;
36
+ border-color: transparent;
37
+ background-clip: padding-box;
38
+ font-size: var(--text-sm);
39
+ line-height: var(--tw-leading, var(--text-sm--line-height));
40
+ --tw-font-weight: var(--font-weight-medium);
41
+ font-weight: var(--font-weight-medium);
42
+ &:focus-visible {
43
+ border-color: var(--color-ring);
44
+ }
45
+ &:focus-visible {
46
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
47
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
48
+ }
49
+ &:focus-visible {
50
+ --tw-ring-color: var(--color-ring);
51
+ @supports (color: color-mix(in lab, red, red)) {
52
+ --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);
53
+ }
54
+ }
55
+ &:active {
56
+ &:not(*[aria-haspopup]) {
57
+ --tw-translate-y: 1px;
58
+ translate: var(--tw-translate-x) var(--tw-translate-y);
59
+ }
60
+ }
61
+ &[aria-invalid="true"] {
62
+ border-color: var(--color-destructive);
63
+ }
64
+ &[aria-invalid="true"] {
65
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
66
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
67
+ }
68
+ &[aria-invalid="true"] {
69
+ --tw-ring-color: var(--color-destructive);
70
+ @supports (color: color-mix(in lab, red, red)) {
71
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
72
+ }
73
+ }
74
+ &:is(html.dark *) {
75
+ &[aria-invalid="true"] {
76
+ border-color: var(--color-destructive);
77
+ @supports (color: color-mix(in lab, red, red)) {
78
+ border-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);
79
+ }
80
+ }
81
+ }
82
+ &:is(html.dark *) {
83
+ &[aria-invalid="true"] {
84
+ --tw-ring-color: var(--color-destructive);
85
+ @supports (color: color-mix(in lab, red, red)) {
86
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);
87
+ }
88
+ }
89
+ }
90
+ & svg:not([class*='size-']) {
91
+ width: calc(var(--spacing) * 4);
92
+ height: calc(var(--spacing) * 4);
93
+ }
94
+ }
95
+ .btn:not([data-size]), .btn[data-size='default'] {
96
+ height: calc(var(--spacing) * 9);
97
+ gap: calc(var(--spacing) * 1.5);
98
+ padding-inline: calc(var(--spacing) * 2.5);
99
+ &:has(*:is([data-icon='inline-end'])) {
100
+ padding-right: calc(var(--spacing) * 2);
101
+ }
102
+ &:has(*:is([data-icon='inline-start'])) {
103
+ padding-left: calc(var(--spacing) * 2);
104
+ }
105
+ }
106
+ .btn[data-size='xs'] {
107
+ height: calc(var(--spacing) * 6);
108
+ gap: var(--spacing);
109
+ border-radius: min(var(--radius-md), 8px);
110
+ padding-inline: calc(var(--spacing) * 2);
111
+ font-size: var(--text-xs);
112
+ line-height: var(--tw-leading, var(--text-xs--line-height));
113
+ &:has(*:is([data-icon='inline-end'])) {
114
+ padding-right: calc(var(--spacing) * 1.5);
115
+ }
116
+ &:has(*:is([data-icon='inline-start'])) {
117
+ padding-left: calc(var(--spacing) * 1.5);
118
+ }
119
+ & svg:not([class*='size-']) {
120
+ width: calc(var(--spacing) * 3);
121
+ height: calc(var(--spacing) * 3);
122
+ }
123
+ }
124
+ .btn[data-size='sm'] {
125
+ height: calc(var(--spacing) * 8);
126
+ gap: var(--spacing);
127
+ border-radius: min(var(--radius-md), 10px);
128
+ padding-inline: calc(var(--spacing) * 2.5);
129
+ &:has(*:is([data-icon='inline-end'])) {
130
+ padding-right: calc(var(--spacing) * 1.5);
131
+ }
132
+ &:has(*:is([data-icon='inline-start'])) {
133
+ padding-left: calc(var(--spacing) * 1.5);
134
+ }
135
+ }
136
+ .btn[data-size='lg'] {
137
+ height: calc(var(--spacing) * 10);
138
+ gap: calc(var(--spacing) * 1.5);
139
+ padding-inline: calc(var(--spacing) * 2.5);
140
+ &:has(*:is([data-icon='inline-end'])) {
141
+ padding-right: calc(var(--spacing) * 2);
142
+ }
143
+ &:has(*:is([data-icon='inline-start'])) {
144
+ padding-left: calc(var(--spacing) * 2);
145
+ }
146
+ }
147
+ .btn[data-size='icon'] {
148
+ width: calc(var(--spacing) * 9);
149
+ height: calc(var(--spacing) * 9);
150
+ }
151
+ .btn[data-size='icon-xs'] {
152
+ width: calc(var(--spacing) * 6);
153
+ height: calc(var(--spacing) * 6);
154
+ border-radius: min(var(--radius-md), 8px);
155
+ & svg:not([class*='size-']) {
156
+ width: calc(var(--spacing) * 3);
157
+ height: calc(var(--spacing) * 3);
158
+ }
159
+ }
160
+ .btn[data-size='icon-sm'] {
161
+ width: calc(var(--spacing) * 8);
162
+ height: calc(var(--spacing) * 8);
163
+ border-radius: min(var(--radius-md), 10px);
164
+ }
165
+ .btn[data-size='icon-lg'] {
166
+ width: calc(var(--spacing) * 10);
167
+ height: calc(var(--spacing) * 10);
168
+ }
169
+ .btn:not([data-variant]), .btn[data-variant='primary'] {
170
+ background-color: var(--color-primary);
171
+ color: var(--color-primary-foreground);
172
+ &:hover {
173
+ @media (hover: hover) {
174
+ background-color: var(--color-primary);
175
+ @supports (color: color-mix(in lab, red, red)) {
176
+ background-color: color-mix(in oklab, var(--color-primary) 80%, transparent);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ .btn[data-variant='secondary'] {
182
+ background-color: var(--color-secondary);
183
+ color: var(--color-secondary-foreground);
184
+ &:hover {
185
+ @media (hover: hover) {
186
+ background-color: var(--secondary);
187
+ @supports (color: color-mix(in lab, red, red)) {
188
+ background-color: color-mix(in oklch,var(--secondary),var(--foreground) 5%);
189
+ }
190
+ }
191
+ }
192
+ &[aria-expanded="true"] {
193
+ background-color: var(--color-secondary);
194
+ }
195
+ &[aria-expanded="true"] {
196
+ color: var(--color-secondary-foreground);
197
+ }
198
+ }
199
+ .btn[data-variant='outline'] {
200
+ border-color: var(--color-border);
201
+ background-color: var(--color-background);
202
+ --tw-shadow: var(--shadow-xs, 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05)));
203
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
204
+ &:hover {
205
+ @media (hover: hover) {
206
+ background-color: var(--color-muted);
207
+ }
208
+ }
209
+ &:hover {
210
+ @media (hover: hover) {
211
+ color: var(--color-foreground);
212
+ }
213
+ }
214
+ &[aria-expanded="true"] {
215
+ background-color: var(--color-muted);
216
+ }
217
+ &[aria-expanded="true"] {
218
+ color: var(--color-foreground);
219
+ }
220
+ &:is(html.dark *) {
221
+ border-color: var(--color-input);
222
+ }
223
+ &:is(html.dark *) {
224
+ background-color: var(--color-input);
225
+ @supports (color: color-mix(in lab, red, red)) {
226
+ background-color: color-mix(in oklab, var(--color-input) 30%, transparent);
227
+ }
228
+ }
229
+ &:is(html.dark *) {
230
+ &:hover {
231
+ @media (hover: hover) {
232
+ background-color: var(--color-input);
233
+ @supports (color: color-mix(in lab, red, red)) {
234
+ background-color: color-mix(in oklab, var(--color-input) 50%, transparent);
235
+ }
236
+ }
237
+ }
238
+ }
239
+ }
240
+ .btn[data-variant='ghost'] {
241
+ &:hover {
242
+ @media (hover: hover) {
243
+ background-color: var(--color-muted);
244
+ }
245
+ }
246
+ &:hover {
247
+ @media (hover: hover) {
248
+ color: var(--color-foreground);
249
+ }
250
+ }
251
+ &[aria-expanded="true"] {
252
+ background-color: var(--color-muted);
253
+ }
254
+ &[aria-expanded="true"] {
255
+ color: var(--color-foreground);
256
+ }
257
+ &:is(html.dark *) {
258
+ &:hover {
259
+ @media (hover: hover) {
260
+ background-color: var(--color-muted);
261
+ @supports (color: color-mix(in lab, red, red)) {
262
+ background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }
268
+ .btn[data-variant='link'] {
269
+ color: var(--color-primary);
270
+ text-underline-offset: 4px;
271
+ &:hover {
272
+ @media (hover: hover) {
273
+ text-decoration-line: underline;
274
+ }
275
+ }
276
+ }
277
+ .btn[data-variant='destructive'] {
278
+ background-color: var(--color-destructive);
279
+ @supports (color: color-mix(in lab, red, red)) {
280
+ background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);
281
+ }
282
+ color: var(--color-destructive);
283
+ &:hover {
284
+ @media (hover: hover) {
285
+ background-color: var(--color-destructive);
286
+ @supports (color: color-mix(in lab, red, red)) {
287
+ background-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
288
+ }
289
+ }
290
+ }
291
+ &:focus-visible {
292
+ border-color: var(--color-destructive);
293
+ @supports (color: color-mix(in lab, red, red)) {
294
+ border-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);
295
+ }
296
+ }
297
+ &:focus-visible {
298
+ --tw-ring-color: var(--color-destructive);
299
+ @supports (color: color-mix(in lab, red, red)) {
300
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
301
+ }
302
+ }
303
+ &:is(html.dark *) {
304
+ background-color: var(--color-destructive);
305
+ @supports (color: color-mix(in lab, red, red)) {
306
+ background-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);
307
+ }
308
+ }
309
+ &:is(html.dark *) {
310
+ &:hover {
311
+ @media (hover: hover) {
312
+ background-color: var(--color-destructive);
313
+ @supports (color: color-mix(in lab, red, red)) {
314
+ background-color: color-mix(in oklab, var(--color-destructive) 30%, transparent);
315
+ }
316
+ }
317
+ }
318
+ }
319
+ &:is(html.dark *) {
320
+ &:focus-visible {
321
+ --tw-ring-color: var(--color-destructive);
322
+ @supports (color: color-mix(in lab, red, red)) {
323
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }