czero 0.1.0 → 0.2.5

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 (95) hide show
  1. package/README.md +209 -169
  2. package/dist/cli/index.js +4678 -28
  3. package/dist/components.css +2158 -336
  4. package/dist/react/core/component-defaults.d.ts +8 -0
  5. package/dist/react/core/component-defaults.d.ts.map +1 -0
  6. package/dist/react/core/types/config.d.ts +649 -0
  7. package/dist/react/core/types/config.d.ts.map +1 -0
  8. package/dist/react/index.cjs +12261 -18
  9. package/dist/react/index.cjs.map +1 -1
  10. package/dist/react/index.d.ts +536 -6
  11. package/dist/react/index.js +12213 -7
  12. package/dist/react/index.js.map +1 -1
  13. package/dist/react/presets/index.d.ts +45 -0
  14. package/dist/react/presets/index.d.ts.map +1 -0
  15. package/dist/react/react/components/accordion.d.ts +30 -0
  16. package/dist/react/react/components/accordion.d.ts.map +1 -0
  17. package/dist/react/react/components/alert.d.ts +7 -0
  18. package/dist/react/react/components/alert.d.ts.map +1 -0
  19. package/dist/react/react/components/aspect-ratio.d.ts +8 -0
  20. package/dist/react/react/components/aspect-ratio.d.ts.map +1 -0
  21. package/dist/react/react/components/avatar.d.ts +10 -0
  22. package/dist/react/react/components/avatar.d.ts.map +1 -0
  23. package/dist/react/react/components/breadcrumb.d.ts +28 -0
  24. package/dist/react/react/components/breadcrumb.d.ts.map +1 -0
  25. package/dist/react/react/components/button.d.ts +4 -2
  26. package/dist/react/react/components/button.d.ts.map +1 -1
  27. package/dist/react/react/components/checkbox.d.ts +9 -0
  28. package/dist/react/react/components/checkbox.d.ts.map +1 -0
  29. package/dist/react/react/components/code.d.ts +6 -0
  30. package/dist/react/react/components/code.d.ts.map +1 -0
  31. package/dist/react/react/components/container.d.ts +8 -0
  32. package/dist/react/react/components/container.d.ts.map +1 -0
  33. package/dist/react/react/components/data-table.d.ts +39 -0
  34. package/dist/react/react/components/data-table.d.ts.map +1 -0
  35. package/dist/react/react/components/dialog.d.ts +28 -0
  36. package/dist/react/react/components/dialog.d.ts.map +1 -0
  37. package/dist/react/react/components/dropdown-menu.d.ts +32 -0
  38. package/dist/react/react/components/dropdown-menu.d.ts.map +1 -0
  39. package/dist/react/react/components/grid.d.ts +8 -0
  40. package/dist/react/react/components/grid.d.ts.map +1 -0
  41. package/dist/react/react/components/input.d.ts +9 -2
  42. package/dist/react/react/components/input.d.ts.map +1 -1
  43. package/dist/react/react/components/kbd.d.ts +6 -0
  44. package/dist/react/react/components/kbd.d.ts.map +1 -0
  45. package/dist/react/react/components/label.d.ts +7 -0
  46. package/dist/react/react/components/label.d.ts.map +1 -0
  47. package/dist/react/react/components/modal.d.ts +44 -0
  48. package/dist/react/react/components/modal.d.ts.map +1 -0
  49. package/dist/react/react/components/progress.d.ts +10 -0
  50. package/dist/react/react/components/progress.d.ts.map +1 -0
  51. package/dist/react/react/components/radio-group.d.ts +15 -0
  52. package/dist/react/react/components/radio-group.d.ts.map +1 -0
  53. package/dist/react/react/components/scroll-area.d.ts +8 -0
  54. package/dist/react/react/components/scroll-area.d.ts.map +1 -0
  55. package/dist/react/react/components/search-input.d.ts +13 -0
  56. package/dist/react/react/components/search-input.d.ts.map +1 -0
  57. package/dist/react/react/components/select.d.ts +29 -0
  58. package/dist/react/react/components/select.d.ts.map +1 -0
  59. package/dist/react/react/components/separator.d.ts +8 -0
  60. package/dist/react/react/components/separator.d.ts.map +1 -0
  61. package/dist/react/react/components/skeleton.d.ts +8 -0
  62. package/dist/react/react/components/skeleton.d.ts.map +1 -0
  63. package/dist/react/react/components/spinner.d.ts +7 -0
  64. package/dist/react/react/components/spinner.d.ts.map +1 -0
  65. package/dist/react/react/components/stack.d.ts +11 -0
  66. package/dist/react/react/components/stack.d.ts.map +1 -0
  67. package/dist/react/react/components/status-badge.d.ts +11 -0
  68. package/dist/react/react/components/status-badge.d.ts.map +1 -0
  69. package/dist/react/react/components/switch.d.ts +10 -0
  70. package/dist/react/react/components/switch.d.ts.map +1 -0
  71. package/dist/react/react/components/table.d.ts +27 -0
  72. package/dist/react/react/components/table.d.ts.map +1 -0
  73. package/dist/react/react/components/tabs.d.ts +56 -0
  74. package/dist/react/react/components/tabs.d.ts.map +1 -0
  75. package/dist/react/react/components/tag.d.ts +10 -0
  76. package/dist/react/react/components/tag.d.ts.map +1 -0
  77. package/dist/react/react/components/textarea.d.ts +11 -0
  78. package/dist/react/react/components/textarea.d.ts.map +1 -0
  79. package/dist/react/react/components/toast.d.ts +28 -0
  80. package/dist/react/react/components/toast.d.ts.map +1 -0
  81. package/dist/react/react/components/tooltip.d.ts +16 -0
  82. package/dist/react/react/components/tooltip.d.ts.map +1 -0
  83. package/dist/react/react/components/visually-hidden.d.ts +7 -0
  84. package/dist/react/react/components/visually-hidden.d.ts.map +1 -0
  85. package/dist/react/react/hooks/index.d.ts +5 -0
  86. package/dist/react/react/hooks/index.d.ts.map +1 -0
  87. package/dist/react/react/hooks/use-theme.d.ts +17 -0
  88. package/dist/react/react/hooks/use-theme.d.ts.map +1 -0
  89. package/dist/react/react/index.d.ts +33 -0
  90. package/dist/react/react/index.d.ts.map +1 -1
  91. package/dist/reset.css +6 -15
  92. package/dist/styles.css +2244 -431
  93. package/package.json +93 -61
  94. package/dist/react/react/lib/cn.d.ts +0 -7
  95. package/dist/react/react/lib/cn.d.ts.map +0 -1
@@ -1,336 +1,2158 @@
1
- /**
2
- * CZero Component Styles
3
- * Pure CSS using --cz-* design tokens
4
- */
5
-
6
- /* ===== UTILITIES ===== */
7
-
8
- /* Display */
9
- .cz-inline-flex { display: inline-flex; }
10
- .cz-flex { display: flex; }
11
- .cz-flex-col { flex-direction: column; }
12
- .cz-items-center { align-items: center; }
13
- .cz-justify-center { justify-content: center; }
14
- .cz-flex-wrap { flex-wrap: wrap; }
15
-
16
- /* Gap */
17
- .cz-gap-1 { gap: 0.25rem; }
18
- .cz-gap-1\.5 { gap: 0.375rem; }
19
- .cz-gap-2 { gap: 0.5rem; }
20
-
21
- /* Width */
22
- .cz-w-full { width: 100%; }
23
-
24
- /* Whitespace */
25
- .cz-whitespace-nowrap { white-space: nowrap; }
26
-
27
- /* Opacity */
28
- .cz-opacity-25 { opacity: 0.25; }
29
- .cz-opacity-50 { opacity: 0.5; }
30
- .cz-opacity-75 { opacity: 0.75; }
31
-
32
- /* Animation */
33
- @keyframes cz-spin {
34
- from { transform: rotate(0deg); }
35
- to { transform: rotate(360deg); }
36
- }
37
- .cz-animate-spin { animation: cz-spin 1s linear infinite; }
38
-
39
- /* Sizing */
40
- .cz-h-4 { height: 1rem; }
41
- .cz-w-4 { width: 1rem; }
42
- .cz-h-8 { height: 2rem; }
43
- .cz-h-10 { height: 2.5rem; }
44
- .cz-h-12 { height: 3rem; }
45
-
46
- /* Padding */
47
- .cz-px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
48
- .cz-px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
49
- .cz-px-4 { padding-left: 1rem; padding-right: 1rem; }
50
- .cz-px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
51
- .cz-py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
52
- .cz-p-lg { padding: var(--cz-spacing-lg); }
53
- .cz-pb-md { padding-bottom: var(--cz-spacing-md); }
54
- .cz-pt-md { padding-top: var(--cz-spacing-md); }
55
- .cz-px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }
56
-
57
- /* Margin */
58
- .cz-mb-md { margin-bottom: var(--cz-spacing-md); }
59
- .cz-mt-md { margin-top: var(--cz-spacing-md); }
60
-
61
- /* Typography */
62
- .cz-text-xs { font-size: var(--cz-font-size-xs); }
63
- .cz-text-sm { font-size: var(--cz-font-size-sm); }
64
- .cz-text-md { font-size: var(--cz-font-size-md); }
65
- .cz-text-lg { font-size: var(--cz-font-size-lg); }
66
- .cz-font-medium { font-weight: var(--cz-font-weight-medium); }
67
- .cz-font-semibold { font-weight: var(--cz-font-weight-semibold); }
68
- .cz-leading-tight { line-height: var(--cz-font-lineHeight-tight); }
69
-
70
- /* Colors - Background */
71
- .cz-bg-bg { background-color: hsl(var(--cz-color-bg)); }
72
- .cz-bg-primary { background-color: hsl(var(--cz-color-primary)); }
73
- .cz-bg-secondary { background-color: hsl(var(--cz-color-secondary)); }
74
- .cz-bg-muted { background-color: hsl(var(--cz-color-muted)); }
75
- .cz-bg-danger { background-color: hsl(var(--cz-color-danger)); }
76
- .cz-bg-success { background-color: hsl(var(--cz-color-success)); }
77
- .cz-bg-warning { background-color: hsl(var(--cz-color-warning)); }
78
- .cz-bg-transparent { background-color: transparent; }
79
-
80
- /* Colors - Text */
81
- .cz-text-fg { color: hsl(var(--cz-color-fg)); }
82
- .cz-text-primary-fg { color: hsl(var(--cz-color-primaryFg)); }
83
- .cz-text-secondary-fg { color: hsl(var(--cz-color-secondaryFg)); }
84
- .cz-text-muted-fg { color: hsl(var(--cz-color-mutedFg)); }
85
- .cz-text-danger { color: hsl(var(--cz-color-danger)); }
86
- .cz-text-danger-fg { color: hsl(var(--cz-color-dangerFg)); }
87
- .cz-text-success-fg { color: hsl(var(--cz-color-successFg)); }
88
- .cz-text-warning-fg { color: hsl(var(--cz-color-warningFg)); }
89
-
90
- /* Border */
91
- .cz-border { border-width: 1px; border-style: solid; }
92
- .cz-border-b { border-bottom-width: 1px; border-bottom-style: solid; }
93
- .cz-border-t { border-top-width: 1px; border-top-style: solid; }
94
- .cz-border-border { border-color: hsl(var(--cz-color-border)); }
95
- .cz-border-danger { border-color: hsl(var(--cz-color-danger)); }
96
-
97
- /* Border Radius */
98
- .cz-rounded-sm { border-radius: var(--cz-radius-sm); }
99
- .cz-rounded-md { border-radius: var(--cz-radius-md); }
100
- .cz-rounded-lg { border-radius: var(--cz-radius-lg); }
101
- .cz-rounded-full { border-radius: var(--cz-radius-full); }
102
-
103
- /* Shadow */
104
- .cz-shadow-sm { box-shadow: var(--cz-shadow-sm); }
105
-
106
- /* Transitions */
107
- .cz-transition { transition: all var(--cz-transition-fast); }
108
-
109
- /* States */
110
- .cz-disabled {
111
- pointer-events: none;
112
- opacity: 0.5;
113
- cursor: not-allowed;
114
- }
115
-
116
- /* Focus */
117
- .cz-focus-ring:focus {
118
- outline: none;
119
- box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
120
- }
121
-
122
- .cz-focus-ring:focus-visible {
123
- outline: none;
124
- box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
125
- }
126
-
127
- /* Hover states */
128
- .cz-hover-opacity:hover { opacity: 0.9; }
129
- .cz-hover-muted:hover { background-color: hsl(var(--cz-color-muted)); }
130
-
131
- /* ===== BUTTON ===== */
132
-
133
- .cz-btn {
134
- display: inline-flex;
135
- align-items: center;
136
- justify-content: center;
137
- gap: 0.5rem;
138
- border-radius: var(--cz-radius-md);
139
- font-weight: var(--cz-font-weight-medium);
140
- transition: all var(--cz-transition-fast);
141
- cursor: pointer;
142
- border: none;
143
- }
144
-
145
- .cz-btn:focus-visible {
146
- outline: none;
147
- box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
148
- }
149
-
150
- .cz-btn:disabled {
151
- pointer-events: none;
152
- opacity: 0.5;
153
- }
154
-
155
- /* Button Sizes */
156
- .cz-btn-sm { height: 2rem; padding: 0 0.75rem; font-size: var(--cz-font-size-sm); }
157
- .cz-btn-md { height: 2.5rem; padding: 0 1rem; font-size: var(--cz-font-size-md); }
158
- .cz-btn-lg { height: 3rem; padding: 0 1.5rem; font-size: var(--cz-font-size-lg); }
159
-
160
- /* Button Variants */
161
- .cz-btn-primary {
162
- background-color: hsl(var(--cz-color-primary));
163
- color: hsl(var(--cz-color-primaryFg));
164
- }
165
- .cz-btn-primary:hover { opacity: 0.9; }
166
-
167
- .cz-btn-secondary {
168
- background-color: hsl(var(--cz-color-secondary));
169
- color: hsl(var(--cz-color-secondaryFg));
170
- }
171
- .cz-btn-secondary:hover { opacity: 0.8; }
172
-
173
- .cz-btn-outline {
174
- background-color: transparent;
175
- border: 1px solid hsl(var(--cz-color-border));
176
- color: hsl(var(--cz-color-fg));
177
- }
178
- .cz-btn-outline:hover { background-color: hsl(var(--cz-color-muted)); }
179
-
180
- .cz-btn-ghost {
181
- background-color: transparent;
182
- color: hsl(var(--cz-color-fg));
183
- }
184
- .cz-btn-ghost:hover { background-color: hsl(var(--cz-color-muted)); }
185
-
186
- .cz-btn-danger {
187
- background-color: hsl(var(--cz-color-danger));
188
- color: hsl(var(--cz-color-dangerFg));
189
- }
190
- .cz-btn-danger:hover { opacity: 0.9; }
191
-
192
- /* ===== INPUT ===== */
193
-
194
- .cz-input {
195
- width: 100%;
196
- border-radius: var(--cz-radius-md);
197
- border: 1px solid hsl(var(--cz-color-border));
198
- background-color: hsl(var(--cz-color-bg));
199
- color: hsl(var(--cz-color-fg));
200
- transition: all var(--cz-transition-fast);
201
- }
202
-
203
- .cz-input::placeholder {
204
- color: hsl(var(--cz-color-mutedFg));
205
- }
206
-
207
- .cz-input:focus {
208
- outline: none;
209
- box-shadow: 0 0 0 2px hsl(var(--cz-color-ring));
210
- }
211
-
212
- .cz-input:disabled {
213
- cursor: not-allowed;
214
- opacity: 0.5;
215
- }
216
-
217
- .cz-input-error {
218
- border-color: hsl(var(--cz-color-danger));
219
- }
220
- .cz-input-error:focus {
221
- box-shadow: 0 0 0 2px hsl(var(--cz-color-danger));
222
- }
223
-
224
- /* Input Sizes */
225
- .cz-input-sm { height: 2rem; padding: 0 0.5rem; font-size: var(--cz-font-size-sm); }
226
- .cz-input-md { height: 2.5rem; padding: 0 0.75rem; font-size: var(--cz-font-size-md); }
227
- .cz-input-lg { height: 3rem; padding: 0 1rem; font-size: var(--cz-font-size-lg); }
228
-
229
- /* ===== CARD ===== */
230
-
231
- .cz-card {
232
- border-radius: var(--cz-radius-lg);
233
- border: 1px solid hsl(var(--cz-color-border));
234
- background-color: hsl(var(--cz-color-bg));
235
- box-shadow: var(--cz-shadow-sm);
236
- padding: var(--cz-spacing-lg);
237
- }
238
-
239
- .cz-card-no-padding {
240
- padding: 0;
241
- }
242
-
243
- .cz-card-header {
244
- display: flex;
245
- flex-direction: column;
246
- gap: 0.375rem;
247
- padding-bottom: var(--cz-spacing-md);
248
- border-bottom: 1px solid hsl(var(--cz-color-border));
249
- margin-bottom: var(--cz-spacing-md);
250
- }
251
-
252
- .cz-card-title {
253
- font-size: var(--cz-font-size-lg);
254
- font-weight: var(--cz-font-weight-semibold);
255
- color: hsl(var(--cz-color-fg));
256
- line-height: var(--cz-font-lineHeight-tight);
257
- }
258
-
259
- .cz-card-description {
260
- font-size: var(--cz-font-size-sm);
261
- color: hsl(var(--cz-color-mutedFg));
262
- }
263
-
264
- .cz-card-body {
265
- color: hsl(var(--cz-color-fg));
266
- }
267
-
268
- .cz-card-footer {
269
- display: flex;
270
- align-items: center;
271
- gap: 0.5rem;
272
- padding-top: var(--cz-spacing-md);
273
- margin-top: var(--cz-spacing-md);
274
- border-top: 1px solid hsl(var(--cz-color-border));
275
- }
276
-
277
- /* ===== BADGE ===== */
278
-
279
- .cz-badge {
280
- display: inline-flex;
281
- align-items: center;
282
- border-radius: var(--cz-radius-full);
283
- font-weight: var(--cz-font-weight-medium);
284
- white-space: nowrap;
285
- }
286
-
287
- /* Badge Sizes */
288
- .cz-badge-sm { padding: 0.125rem 0.375rem; font-size: 0.7rem; }
289
- .cz-badge-md { padding: 0.125rem 0.5rem; font-size: var(--cz-font-size-xs); }
290
-
291
- /* Badge Variants */
292
- .cz-badge-default {
293
- background-color: hsl(var(--cz-color-secondary));
294
- color: hsl(var(--cz-color-secondaryFg));
295
- }
296
-
297
- .cz-badge-primary {
298
- background-color: hsl(var(--cz-color-primary));
299
- color: hsl(var(--cz-color-primaryFg));
300
- }
301
-
302
- .cz-badge-success {
303
- background-color: hsl(var(--cz-color-success));
304
- color: hsl(var(--cz-color-successFg));
305
- }
306
-
307
- .cz-badge-danger {
308
- background-color: hsl(var(--cz-color-danger));
309
- color: hsl(var(--cz-color-dangerFg));
310
- }
311
-
312
- .cz-badge-warning {
313
- background-color: hsl(var(--cz-color-warning));
314
- color: hsl(var(--cz-color-warningFg));
315
- }
316
-
317
- .cz-badge-outline {
318
- background-color: transparent;
319
- border: 1px solid hsl(var(--cz-color-border));
320
- color: hsl(var(--cz-color-fg));
321
- }
322
-
323
- /* ===== LABEL ===== */
324
-
325
- .cz-label {
326
- font-size: var(--cz-font-size-sm);
327
- font-weight: var(--cz-font-weight-medium);
328
- color: hsl(var(--cz-color-fg));
329
- }
330
-
331
- /* ===== ERROR TEXT ===== */
332
-
333
- .cz-error {
334
- font-size: var(--cz-font-size-sm);
335
- color: hsl(var(--cz-color-danger));
336
- }
1
+ /**
2
+ * CZero Component Styles
3
+ * Pure CSS using --cz-* design tokens
4
+ */
5
+
6
+ /* ===== UTILITIES ===== */
7
+
8
+ /* Display */
9
+ .cz-inline-flex { display: inline-flex; }
10
+ .cz-flex { display: flex; }
11
+ .cz-flex-col { flex-direction: column; }
12
+ .cz-items-center { align-items: center; }
13
+ .cz-justify-center { justify-content: center; }
14
+ .cz-flex-wrap { flex-wrap: wrap; }
15
+
16
+ /* Gap */
17
+ .cz-gap-1 { gap: 0.25rem; }
18
+ .cz-gap-1\.5 { gap: 0.375rem; }
19
+ .cz-gap-2 { gap: 0.5rem; }
20
+
21
+ /* Width */
22
+ .cz-w-full { width: 100%; }
23
+
24
+ /* Whitespace */
25
+ .cz-whitespace-nowrap { white-space: nowrap; }
26
+
27
+ /* Opacity */
28
+ .cz-opacity-25 { opacity: 0.25; }
29
+ .cz-opacity-50 { opacity: 0.5; }
30
+ .cz-opacity-75 { opacity: 0.75; }
31
+
32
+ /* Animation */
33
+ @keyframes cz-spin {
34
+ from { transform: rotate(0deg); }
35
+ to { transform: rotate(360deg); }
36
+ }
37
+ .cz-animate-spin { animation: cz-spin 1s linear infinite; }
38
+
39
+ /* Sizing */
40
+ .cz-h-4 { height: 1rem; }
41
+ .cz-w-4 { width: 1rem; }
42
+ .cz-h-8 { height: 2rem; }
43
+ .cz-h-10 { height: 2.5rem; }
44
+ .cz-h-12 { height: 3rem; }
45
+
46
+ /* Padding */
47
+ .cz-px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
48
+ .cz-px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
49
+ .cz-px-4 { padding-left: 1rem; padding-right: 1rem; }
50
+ .cz-px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
51
+ .cz-py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
52
+ .cz-p-lg { padding: var(--cz-spacing-lg); }
53
+ .cz-pb-md { padding-bottom: var(--cz-spacing-md); }
54
+ .cz-pt-md { padding-top: var(--cz-spacing-md); }
55
+ .cz-px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }
56
+
57
+ /* Margin */
58
+ .cz-mb-md { margin-bottom: var(--cz-spacing-md); }
59
+ .cz-mt-md { margin-top: var(--cz-spacing-md); }
60
+
61
+ /* Typography */
62
+ .cz-text-xs { font-size: var(--cz-font-size-xs); }
63
+ .cz-text-sm { font-size: var(--cz-font-size-sm); }
64
+ .cz-text-md { font-size: var(--cz-font-size-md); }
65
+ .cz-text-lg { font-size: var(--cz-font-size-lg); }
66
+ .cz-font-medium { font-weight: var(--cz-font-weight-medium); }
67
+ .cz-font-semibold { font-weight: var(--cz-font-weight-semibold); }
68
+ .cz-leading-tight { line-height: var(--cz-font-lineHeight-tight); }
69
+
70
+ /* Colors - Background */
71
+ .cz-bg-bg { background-color: hsl(var(--cz-color-bg)); }
72
+ .cz-bg-primary { background-color: hsl(var(--cz-color-primary)); }
73
+ .cz-bg-secondary { background-color: hsl(var(--cz-color-secondary)); }
74
+ .cz-bg-muted { background-color: hsl(var(--cz-color-muted)); }
75
+ .cz-bg-danger { background-color: hsl(var(--cz-color-danger)); }
76
+ .cz-bg-success { background-color: hsl(var(--cz-color-success)); }
77
+ .cz-bg-warning { background-color: hsl(var(--cz-color-warning)); }
78
+ .cz-bg-transparent { background-color: transparent; }
79
+
80
+ /* Colors - Text */
81
+ .cz-text-fg { color: hsl(var(--cz-color-fg)); }
82
+ .cz-text-primary-fg { color: hsl(var(--cz-color-primaryFg)); }
83
+ .cz-text-secondary-fg { color: hsl(var(--cz-color-secondaryFg)); }
84
+ .cz-text-muted-fg { color: hsl(var(--cz-color-mutedFg)); }
85
+ .cz-text-danger { color: hsl(var(--cz-color-danger)); }
86
+ .cz-text-danger-fg { color: hsl(var(--cz-color-dangerFg)); }
87
+ .cz-text-success-fg { color: hsl(var(--cz-color-successFg)); }
88
+ .cz-text-warning-fg { color: hsl(var(--cz-color-warningFg)); }
89
+
90
+ /* Border */
91
+ .cz-border { border-width: 1px; border-style: solid; }
92
+ .cz-border-b { border-bottom-width: 1px; border-bottom-style: solid; }
93
+ .cz-border-t { border-top-width: 1px; border-top-style: solid; }
94
+ .cz-border-border { border-color: hsl(var(--cz-color-border)); }
95
+ .cz-border-danger { border-color: hsl(var(--cz-color-danger)); }
96
+
97
+ /* Border Radius */
98
+ .cz-rounded-sm { border-radius: var(--cz-radius-sm); }
99
+ .cz-rounded-md { border-radius: var(--cz-radius-md); }
100
+ .cz-rounded-lg { border-radius: var(--cz-radius-lg); }
101
+ .cz-rounded-full { border-radius: var(--cz-radius-full); }
102
+
103
+ /* Shadow */
104
+ .cz-shadow-sm { box-shadow: var(--cz-shadow-sm); }
105
+
106
+ /* Transitions */
107
+ .cz-transition { transition: all var(--cz-transition-fast); }
108
+
109
+ /* States */
110
+ .cz-disabled {
111
+ pointer-events: none;
112
+ opacity: 0.5;
113
+ cursor: not-allowed;
114
+ }
115
+
116
+ /* Focus */
117
+ .cz-focus-ring:focus {
118
+ outline: none;
119
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
120
+ }
121
+
122
+ .cz-focus-ring:focus-visible {
123
+ outline: none;
124
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
125
+ }
126
+
127
+ /* Hover states */
128
+ .cz-hover-opacity:hover { opacity: 0.9; }
129
+ .cz-hover-muted:hover { background-color: hsl(var(--cz-color-muted)); }
130
+
131
+ /* ===== BUTTON ===== */
132
+
133
+ .cz-btn {
134
+ display: inline-flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ gap: 0.5rem;
138
+ border-radius: var(--cz-radius-md);
139
+ font-weight: var(--cz-font-weight-medium);
140
+ transition: all var(--cz-transition-fast);
141
+ cursor: pointer;
142
+ border: none;
143
+ }
144
+
145
+ .cz-btn:focus-visible {
146
+ outline: none;
147
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
148
+ }
149
+
150
+ .cz-btn:disabled {
151
+ pointer-events: none;
152
+ opacity: 0.5;
153
+ }
154
+
155
+ /* Button Sizes */
156
+ .cz-btn-sm { height: 2rem; padding: 0 0.75rem; font-size: var(--cz-font-size-sm); }
157
+ .cz-btn-md { height: 2.5rem; padding: 0 1rem; font-size: var(--cz-font-size-md); }
158
+ .cz-btn-lg { height: 3rem; padding: 0 1.5rem; font-size: var(--cz-font-size-lg); }
159
+
160
+ /* Button Variants */
161
+ .cz-btn-primary {
162
+ background-color: hsl(var(--cz-color-primary));
163
+ color: hsl(var(--cz-color-primaryFg));
164
+ }
165
+ .cz-btn-primary:hover { opacity: 0.9; }
166
+
167
+ .cz-btn-secondary {
168
+ background-color: hsl(var(--cz-color-secondary));
169
+ color: hsl(var(--cz-color-secondaryFg));
170
+ }
171
+ .cz-btn-secondary:hover { opacity: 0.8; }
172
+
173
+ .cz-btn-outline {
174
+ background-color: transparent;
175
+ border: 1px solid hsl(var(--cz-color-border));
176
+ color: hsl(var(--cz-color-fg));
177
+ }
178
+ .cz-btn-outline:hover { background-color: hsl(var(--cz-color-muted)); }
179
+
180
+ .cz-btn-ghost {
181
+ background-color: transparent;
182
+ color: hsl(var(--cz-color-fg));
183
+ }
184
+ .cz-btn-ghost:hover { background-color: hsl(var(--cz-color-muted)); }
185
+
186
+ .cz-btn-danger {
187
+ background-color: hsl(var(--cz-color-danger));
188
+ color: hsl(var(--cz-color-dangerFg));
189
+ }
190
+ .cz-btn-danger:hover { opacity: 0.9; }
191
+
192
+ .cz-btn-link {
193
+ background-color: transparent;
194
+ color: hsl(var(--cz-color-primary));
195
+ text-decoration: underline;
196
+ text-underline-offset: 4px;
197
+ }
198
+ .cz-btn-link:hover { text-decoration-thickness: 2px; }
199
+
200
+ /* Button Icon Size */
201
+ .cz-btn-icon {
202
+ width: 2.5rem;
203
+ height: 2.5rem;
204
+ padding: 0;
205
+ }
206
+ .cz-btn-icon.cz-btn-sm { width: 2rem; height: 2rem; }
207
+ .cz-btn-icon.cz-btn-lg { width: 3rem; height: 3rem; }
208
+
209
+ /* Button Loading State */
210
+ .cz-btn-loading { position: relative; }
211
+ .cz-btn-spinner {
212
+ width: 1rem;
213
+ height: 1rem;
214
+ animation: cz-spin 0.75s linear infinite;
215
+ flex-shrink: 0;
216
+ }
217
+ .cz-btn-content { opacity: 1; }
218
+
219
+ /* ===== INPUT ===== */
220
+
221
+ .cz-input-field {
222
+ display: flex;
223
+ flex-direction: column;
224
+ gap: 0.375rem;
225
+ }
226
+
227
+ .cz-input-wrapper {
228
+ position: relative;
229
+ display: flex;
230
+ align-items: center;
231
+ width: 100%;
232
+ --cz-input-icon-spacing-current: 2.5rem;
233
+ --cz-input-icon-size-current: 1rem;
234
+ --cz-input-clear-icon-size-current: var(--cz-input-icon-size-current);
235
+ }
236
+
237
+ .cz-input-wrapper-sm {
238
+ --cz-input-icon-spacing-current: 2rem;
239
+ --cz-input-icon-size-current: 0.875rem;
240
+ --cz-input-clear-icon-size-current: var(--cz-input-icon-size-current);
241
+ }
242
+
243
+ .cz-input-wrapper-md {
244
+ --cz-input-icon-spacing-current: 2.5rem;
245
+ --cz-input-icon-size-current: 1rem;
246
+ --cz-input-clear-icon-size-current: var(--cz-input-icon-size-current);
247
+ }
248
+
249
+ .cz-input-wrapper-lg {
250
+ --cz-input-icon-spacing-current: 3rem;
251
+ --cz-input-icon-size-current: 1.125rem;
252
+ --cz-input-clear-icon-size-current: var(--cz-input-icon-size-current);
253
+ }
254
+
255
+ .cz-input {
256
+ width: 100%;
257
+ border-radius: var(--cz-radius-md);
258
+ border: 1px solid hsl(var(--cz-color-border));
259
+ background-color: hsl(var(--cz-color-bg));
260
+ color: hsl(var(--cz-color-fg));
261
+ transition: all var(--cz-transition-fast);
262
+ }
263
+
264
+ .cz-input::placeholder {
265
+ color: hsl(var(--cz-color-mutedFg));
266
+ }
267
+
268
+ .cz-input:focus {
269
+ outline: none;
270
+ border-color: hsl(var(--cz-color-ring));
271
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-ring) / 0.2);
272
+ }
273
+
274
+ .cz-input:disabled {
275
+ cursor: not-allowed;
276
+ opacity: 0.5;
277
+ background-color: hsl(var(--cz-color-muted));
278
+ color: hsl(var(--cz-color-mutedFg));
279
+ }
280
+
281
+ .cz-input:read-only {
282
+ cursor: default;
283
+ background-color: hsl(var(--cz-color-muted));
284
+ color: hsl(var(--cz-color-mutedFg));
285
+ }
286
+
287
+ .cz-input-error {
288
+ border-color: hsl(var(--cz-color-danger));
289
+ }
290
+ .cz-input-error:focus {
291
+ border-color: hsl(var(--cz-color-danger));
292
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-danger) / 0.2);
293
+ }
294
+
295
+ /* Input with Icons */
296
+ .cz-input-has-left-icon .cz-input { padding-left: var(--cz-input-icon-spacing-current); }
297
+ .cz-input-has-right-icon .cz-input { padding-right: var(--cz-input-icon-spacing-current); }
298
+
299
+ .cz-input-icon {
300
+ position: absolute;
301
+ display: flex;
302
+ align-items: center;
303
+ justify-content: center;
304
+ width: var(--cz-input-icon-spacing-current);
305
+ height: 100%;
306
+ color: hsl(var(--cz-color-mutedFg));
307
+ pointer-events: none;
308
+ transition: color var(--cz-transition-fast);
309
+ }
310
+ .cz-input-icon svg {
311
+ width: var(--cz-input-icon-size-current);
312
+ height: var(--cz-input-icon-size-current);
313
+ }
314
+ .cz-input-icon-left { left: 0; }
315
+ .cz-input-icon-right { right: 0; }
316
+
317
+ .cz-input-wrapper:focus-within .cz-input-icon {
318
+ color: hsl(var(--cz-color-primary));
319
+ }
320
+
321
+ .cz-input-wrapper-error .cz-input-icon {
322
+ color: hsl(var(--cz-color-danger));
323
+ }
324
+
325
+ /* Input Clear Button */
326
+ .cz-input-clear {
327
+ position: absolute;
328
+ right: 0;
329
+ display: flex;
330
+ align-items: center;
331
+ justify-content: center;
332
+ width: var(--cz-input-icon-spacing-current);
333
+ height: 100%;
334
+ color: hsl(var(--cz-color-mutedFg));
335
+ background: transparent;
336
+ border: none;
337
+ border-radius: var(--cz-radius-sm);
338
+ cursor: pointer;
339
+ transition: color var(--cz-transition-fast), background-color var(--cz-transition-fast);
340
+ }
341
+ .cz-input-clear:hover {
342
+ color: hsl(var(--cz-color-danger));
343
+ background-color: hsl(var(--cz-color-muted));
344
+ }
345
+ .cz-input-clear svg {
346
+ width: var(--cz-input-clear-icon-size-current);
347
+ height: var(--cz-input-clear-icon-size-current);
348
+ }
349
+
350
+ /* Input Password Toggle */
351
+ .cz-input-password-toggle {
352
+ position: absolute;
353
+ right: 0;
354
+ display: flex;
355
+ align-items: center;
356
+ justify-content: center;
357
+ width: var(--cz-input-icon-spacing-current);
358
+ height: 100%;
359
+ color: hsl(var(--cz-color-mutedFg));
360
+ background: transparent;
361
+ border: none;
362
+ border-radius: var(--cz-radius-sm);
363
+ cursor: pointer;
364
+ transition: color var(--cz-transition-fast), background-color var(--cz-transition-fast);
365
+ }
366
+
367
+ .cz-input-password-toggle:hover {
368
+ color: hsl(var(--cz-color-primary));
369
+ background-color: hsl(var(--cz-color-muted));
370
+ }
371
+
372
+ .cz-input-password-toggle svg {
373
+ width: var(--cz-input-clear-icon-size-current);
374
+ height: var(--cz-input-clear-icon-size-current);
375
+ }
376
+
377
+ /* Input Description */
378
+ .cz-input-description {
379
+ font-size: var(--cz-font-size-xs);
380
+ color: hsl(var(--cz-color-mutedFg));
381
+ }
382
+
383
+ /* Input Sizes */
384
+ .cz-input-sm { height: 2rem; padding: 0 0.5rem; font-size: var(--cz-font-size-sm); }
385
+ .cz-input-md { height: 2.5rem; padding: 0 0.75rem; font-size: var(--cz-font-size-md); }
386
+ .cz-input-lg { height: 3rem; padding: 0 1rem; font-size: var(--cz-font-size-lg); }
387
+
388
+
389
+ /* ===== CARD ===== */
390
+
391
+ .cz-card {
392
+ border-radius: var(--cz-radius-lg);
393
+ border: 1px solid hsl(var(--cz-color-border));
394
+ background-color: hsl(var(--cz-color-bg));
395
+ box-shadow: var(--cz-shadow-sm);
396
+ padding: var(--cz-spacing-lg);
397
+ }
398
+
399
+ .cz-card-no-padding {
400
+ padding: 0;
401
+ }
402
+
403
+ .cz-card-header {
404
+ display: flex;
405
+ flex-direction: column;
406
+ gap: 0.375rem;
407
+ padding-bottom: var(--cz-spacing-md);
408
+ border-bottom: 1px solid hsl(var(--cz-color-border));
409
+ margin-bottom: var(--cz-spacing-md);
410
+ }
411
+
412
+ .cz-card-title {
413
+ font-size: var(--cz-font-size-lg);
414
+ font-weight: var(--cz-font-weight-semibold);
415
+ color: hsl(var(--cz-color-fg));
416
+ line-height: var(--cz-font-lineHeight-tight);
417
+ }
418
+
419
+ .cz-card-description {
420
+ font-size: var(--cz-font-size-sm);
421
+ color: hsl(var(--cz-color-mutedFg));
422
+ }
423
+
424
+ .cz-card-body {
425
+ color: hsl(var(--cz-color-fg));
426
+ }
427
+
428
+ .cz-card-footer {
429
+ display: flex;
430
+ align-items: center;
431
+ gap: 0.5rem;
432
+ padding-top: var(--cz-spacing-md);
433
+ margin-top: var(--cz-spacing-md);
434
+ border-top: 1px solid hsl(var(--cz-color-border));
435
+ }
436
+
437
+ /* ===== BADGE ===== */
438
+
439
+ .cz-badge {
440
+ display: inline-flex;
441
+ align-items: center;
442
+ border-radius: var(--cz-radius-full);
443
+ font-weight: var(--cz-font-weight-medium);
444
+ white-space: nowrap;
445
+ }
446
+
447
+ /* Badge Sizes */
448
+ .cz-badge-sm { padding: 0.125rem 0.375rem; font-size: 0.7rem; }
449
+ .cz-badge-md { padding: 0.125rem 0.5rem; font-size: var(--cz-font-size-xs); }
450
+
451
+ /* Badge Variants */
452
+ .cz-badge-default {
453
+ background-color: hsl(var(--cz-color-secondary));
454
+ color: hsl(var(--cz-color-secondaryFg));
455
+ }
456
+
457
+ .cz-badge-primary {
458
+ background-color: hsl(var(--cz-color-primary));
459
+ color: hsl(var(--cz-color-primaryFg));
460
+ }
461
+
462
+ .cz-badge-success {
463
+ background-color: hsl(var(--cz-color-success));
464
+ color: hsl(var(--cz-color-successFg));
465
+ }
466
+
467
+ .cz-badge-danger {
468
+ background-color: hsl(var(--cz-color-danger));
469
+ color: hsl(var(--cz-color-dangerFg));
470
+ }
471
+
472
+ .cz-badge-warning {
473
+ background-color: hsl(var(--cz-color-warning));
474
+ color: hsl(var(--cz-color-warningFg));
475
+ }
476
+
477
+ .cz-badge-outline {
478
+ background-color: transparent;
479
+ border: 1px solid hsl(var(--cz-color-border));
480
+ color: hsl(var(--cz-color-fg));
481
+ }
482
+
483
+ /* ===== LABEL ===== */
484
+
485
+ .cz-label {
486
+ font-size: var(--cz-font-size-sm);
487
+ font-weight: var(--cz-font-weight-medium);
488
+ color: hsl(var(--cz-color-fg));
489
+ }
490
+
491
+ /* ===== ERROR TEXT ===== */
492
+
493
+ .cz-error {
494
+ font-size: var(--cz-font-size-sm);
495
+ color: hsl(var(--cz-color-danger));
496
+ }
497
+
498
+ /* ===== TEXTAREA ===== */
499
+
500
+ .cz-textarea-field {
501
+ display: flex;
502
+ flex-direction: column;
503
+ gap: 0.375rem;
504
+ }
505
+
506
+ .cz-textarea {
507
+ width: 100%;
508
+ min-height: 5rem;
509
+ border-radius: var(--cz-radius-md);
510
+ border: 1px solid hsl(var(--cz-color-border));
511
+ background-color: hsl(var(--cz-color-bg));
512
+ color: hsl(var(--cz-color-fg));
513
+ transition: all var(--cz-transition-fast);
514
+ resize: vertical;
515
+ font-family: inherit;
516
+ }
517
+
518
+ .cz-textarea::placeholder {
519
+ color: hsl(var(--cz-color-mutedFg));
520
+ }
521
+
522
+ .cz-textarea:focus {
523
+ outline: none;
524
+ border-color: hsl(var(--cz-color-ring));
525
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-ring) / 0.2);
526
+ }
527
+
528
+ .cz-textarea:disabled {
529
+ cursor: not-allowed;
530
+ opacity: 0.5;
531
+ }
532
+
533
+ .cz-textarea-error {
534
+ border-color: hsl(var(--cz-color-danger));
535
+ }
536
+ .cz-textarea-error:focus {
537
+ border-color: hsl(var(--cz-color-danger));
538
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-danger) / 0.2);
539
+ }
540
+
541
+ .cz-textarea-auto-resize {
542
+ overflow: hidden;
543
+ resize: none;
544
+ }
545
+
546
+ .cz-textarea-description {
547
+ font-size: var(--cz-font-size-xs);
548
+ color: hsl(var(--cz-color-mutedFg));
549
+ }
550
+
551
+ /* Textarea Sizes */
552
+ .cz-textarea-sm { padding: 0.375rem 0.5rem; font-size: var(--cz-font-size-sm); }
553
+ .cz-textarea-md { padding: 0.5rem 0.75rem; font-size: var(--cz-font-size-md); }
554
+ .cz-textarea-lg { padding: 0.75rem 1rem; font-size: var(--cz-font-size-lg); }
555
+
556
+ /* ===== SWITCH ===== */
557
+
558
+ .cz-switch {
559
+ all: unset;
560
+ box-sizing: border-box;
561
+ display: inline-flex;
562
+ align-items: center;
563
+ position: relative;
564
+ width: 2.75rem;
565
+ height: 1.5rem;
566
+ border-radius: var(--cz-radius-full);
567
+ background-color: hsl(var(--cz-color-muted));
568
+ transition: all var(--cz-transition-fast);
569
+ cursor: pointer;
570
+ }
571
+
572
+ .cz-switch:focus-visible {
573
+ outline: none;
574
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
575
+ }
576
+
577
+ .cz-switch[data-state="checked"] {
578
+ background-color: hsl(var(--cz-color-primary));
579
+ }
580
+
581
+ .cz-switch.cz-switch-checked {
582
+ background-color: hsl(var(--cz-color-primary));
583
+ }
584
+
585
+ .cz-switch.cz-disabled,
586
+ .cz-switch:disabled {
587
+ opacity: 0.5;
588
+ cursor: not-allowed;
589
+ }
590
+
591
+ .cz-switch-thumb {
592
+ display: block;
593
+ width: 1.25rem;
594
+ height: 1.25rem;
595
+ border-radius: var(--cz-radius-full);
596
+ background-color: hsl(var(--cz-color-bg));
597
+ box-shadow: var(--cz-shadow-sm);
598
+ transition: transform var(--cz-transition-fast);
599
+ transform: translateX(0.125rem);
600
+ }
601
+
602
+ .cz-switch[data-state="checked"] .cz-switch-thumb,
603
+ .cz-switch.cz-switch-checked .cz-switch-thumb {
604
+ transform: translateX(calc(2.75rem - 1.25rem - 0.125rem));
605
+ }
606
+
607
+ /* Switch Sizes */
608
+ .cz-switch-sm { width: 2rem; height: 1.125rem; }
609
+ .cz-switch-sm .cz-switch-thumb { width: 0.875rem; height: 0.875rem; transform: translateX(0.125rem); }
610
+ .cz-switch-sm[data-state="checked"] .cz-switch-thumb,
611
+ .cz-switch-sm.cz-switch-checked .cz-switch-thumb { transform: translateX(calc(2rem - 0.875rem - 0.125rem)); }
612
+
613
+ .cz-switch-md { width: 2.75rem; height: 1.5rem; }
614
+ .cz-switch-md .cz-switch-thumb { width: 1.25rem; height: 1.25rem; transform: translateX(0.125rem); }
615
+ .cz-switch-md[data-state="checked"] .cz-switch-thumb,
616
+ .cz-switch-md.cz-switch-checked .cz-switch-thumb { transform: translateX(calc(2.75rem - 1.25rem - 0.125rem)); }
617
+
618
+ .cz-switch-lg { width: 3.5rem; height: 1.875rem; }
619
+ .cz-switch-lg .cz-switch-thumb { width: 1.625rem; height: 1.625rem; transform: translateX(0.125rem); }
620
+ .cz-switch-lg[data-state="checked"] .cz-switch-thumb,
621
+ .cz-switch-lg.cz-switch-checked .cz-switch-thumb { transform: translateX(calc(3.5rem - 1.625rem - 0.125rem)); }
622
+
623
+ /* Switch with Label */
624
+ .cz-switch-container {
625
+ display: inline-flex;
626
+ align-items: flex-start;
627
+ gap: 0.75rem;
628
+ cursor: pointer;
629
+ }
630
+ .cz-switch-container.cz-disabled {
631
+ opacity: 0.5;
632
+ cursor: not-allowed;
633
+ }
634
+
635
+ .cz-switch-label-left { flex-direction: row-reverse; }
636
+ .cz-switch-label-right { flex-direction: row; }
637
+
638
+ .cz-switch-text {
639
+ display: flex;
640
+ flex-direction: column;
641
+ gap: 0.125rem;
642
+ }
643
+
644
+ .cz-switch-label {
645
+ font-size: var(--cz-font-size-sm);
646
+ font-weight: var(--cz-font-weight-medium);
647
+ color: hsl(var(--cz-color-fg));
648
+ line-height: 1.5;
649
+ }
650
+
651
+ .cz-switch-description {
652
+ font-size: var(--cz-font-size-xs);
653
+ color: hsl(var(--cz-color-mutedFg));
654
+ }
655
+
656
+ /* ===== AVATAR ===== */
657
+
658
+ .cz-avatar {
659
+ display: inline-flex;
660
+ align-items: center;
661
+ justify-content: center;
662
+ border-radius: var(--cz-radius-full);
663
+ background-color: hsl(var(--cz-color-muted));
664
+ overflow: hidden;
665
+ flex-shrink: 0;
666
+ }
667
+
668
+ .cz-avatar-image {
669
+ width: 100%;
670
+ height: 100%;
671
+ object-fit: cover;
672
+ }
673
+
674
+ .cz-avatar-fallback {
675
+ font-weight: var(--cz-font-weight-medium);
676
+ color: hsl(var(--cz-color-mutedFg));
677
+ text-transform: uppercase;
678
+ }
679
+
680
+ /* Avatar Sizes */
681
+ .cz-avatar-sm { width: 2rem; height: 2rem; font-size: var(--cz-font-size-xs); }
682
+ .cz-avatar-md { width: 2.5rem; height: 2.5rem; font-size: var(--cz-font-size-sm); }
683
+ .cz-avatar-lg { width: 3.5rem; height: 3.5rem; font-size: var(--cz-font-size-md); }
684
+
685
+ /* ===== SEPARATOR ===== */
686
+
687
+ .cz-separator {
688
+ background-color: hsl(var(--cz-color-border));
689
+ flex-shrink: 0;
690
+ }
691
+
692
+ .cz-separator-horizontal {
693
+ height: 1px;
694
+ width: 100%;
695
+ }
696
+
697
+ .cz-separator-vertical {
698
+ width: 1px;
699
+ height: 100%;
700
+ align-self: stretch;
701
+ }
702
+
703
+ /* ===== ALERT ===== */
704
+
705
+ .cz-alert {
706
+ display: flex;
707
+ flex-direction: column;
708
+ gap: 0.25rem;
709
+ padding: var(--cz-spacing-md) var(--cz-spacing-lg);
710
+ border-radius: var(--cz-radius-md);
711
+ border: 1px solid transparent;
712
+ }
713
+
714
+ .cz-alert-title {
715
+ font-weight: var(--cz-font-weight-semibold);
716
+ font-size: var(--cz-font-size-sm);
717
+ }
718
+
719
+ .cz-alert-content {
720
+ font-size: var(--cz-font-size-sm);
721
+ }
722
+
723
+ /* Alert Variants */
724
+ .cz-alert-info {
725
+ background-color: hsl(var(--cz-color-primary) / 0.1);
726
+ border-color: hsl(var(--cz-color-primary) / 0.3);
727
+ color: hsl(var(--cz-color-primary));
728
+ }
729
+
730
+ .cz-alert-success {
731
+ background-color: hsl(var(--cz-color-success) / 0.1);
732
+ border-color: hsl(var(--cz-color-success) / 0.3);
733
+ color: hsl(var(--cz-color-success));
734
+ }
735
+
736
+ .cz-alert-warning {
737
+ background-color: hsl(var(--cz-color-warning) / 0.1);
738
+ border-color: hsl(var(--cz-color-warning) / 0.3);
739
+ color: hsl(var(--cz-color-warning));
740
+ }
741
+
742
+ .cz-alert-danger {
743
+ background-color: hsl(var(--cz-color-danger) / 0.1);
744
+ border-color: hsl(var(--cz-color-danger) / 0.3);
745
+ color: hsl(var(--cz-color-danger));
746
+ }
747
+
748
+ /* ===== CHECKBOX ===== */
749
+
750
+ .cz-checkbox-wrapper {
751
+ display: inline-flex;
752
+ align-items: center;
753
+ gap: 0.5rem;
754
+ cursor: pointer;
755
+ user-select: none;
756
+ }
757
+
758
+ .cz-checkbox-wrapper.cz-disabled {
759
+ cursor: not-allowed;
760
+ opacity: 0.5;
761
+ }
762
+
763
+ .cz-checkbox {
764
+ all: unset;
765
+ box-sizing: border-box;
766
+ display: inline-flex;
767
+ align-items: center;
768
+ justify-content: center;
769
+ width: 1.25rem;
770
+ height: 1.25rem;
771
+ border-radius: var(--cz-radius-sm);
772
+ border: 2px solid hsl(var(--cz-color-border));
773
+ background-color: hsl(var(--cz-color-bg));
774
+ transition: all var(--cz-transition-fast);
775
+ flex-shrink: 0;
776
+ cursor: pointer;
777
+ }
778
+
779
+ .cz-checkbox:hover {
780
+ border-color: hsl(var(--cz-color-primary));
781
+ }
782
+
783
+ .cz-checkbox:focus-visible {
784
+ outline: none;
785
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
786
+ }
787
+
788
+ .cz-checkbox:disabled {
789
+ cursor: not-allowed;
790
+ opacity: 0.5;
791
+ }
792
+
793
+ .cz-checkbox[data-state="checked"],
794
+ .cz-checkbox[data-state="indeterminate"] {
795
+ background-color: hsl(var(--cz-color-primary));
796
+ border-color: hsl(var(--cz-color-primary));
797
+ }
798
+
799
+ .cz-checkbox-indicator {
800
+ display: flex;
801
+ align-items: center;
802
+ justify-content: center;
803
+ color: hsl(var(--cz-color-primaryFg));
804
+ width: 100%;
805
+ height: 100%;
806
+ }
807
+
808
+ .cz-checkbox-indicator svg {
809
+ width: 12px;
810
+ height: 12px;
811
+ }
812
+
813
+ .cz-checkbox-label {
814
+ font-size: var(--cz-font-size-sm);
815
+ color: hsl(var(--cz-color-fg));
816
+ }
817
+
818
+ /* Checkbox Sizes */
819
+ .cz-checkbox-sm { width: 1rem; height: 1rem; }
820
+ .cz-checkbox-sm .cz-checkbox-indicator svg { width: 10px; height: 10px; }
821
+
822
+ .cz-checkbox-md { width: 1.25rem; height: 1.25rem; }
823
+ .cz-checkbox-md .cz-checkbox-indicator svg { width: 12px; height: 12px; }
824
+
825
+ .cz-checkbox-lg { width: 1.5rem; height: 1.5rem; }
826
+ .cz-checkbox-lg .cz-checkbox-indicator svg { width: 14px; height: 14px; }
827
+
828
+ /* Checkbox with Description */
829
+ .cz-checkbox-wrapper-with-description {
830
+ align-items: flex-start;
831
+ }
832
+ .cz-checkbox-wrapper-with-description .cz-checkbox {
833
+ margin-top: 0.125rem;
834
+ }
835
+
836
+ .cz-checkbox-text {
837
+ display: flex;
838
+ flex-direction: column;
839
+ gap: 0.125rem;
840
+ }
841
+
842
+ .cz-checkbox-description {
843
+ font-size: var(--cz-font-size-xs);
844
+ color: hsl(var(--cz-color-mutedFg));
845
+ }
846
+
847
+ /* ===== RADIO GROUP ===== */
848
+
849
+ .cz-radio-group {
850
+ display: flex;
851
+ gap: 0.5rem;
852
+ }
853
+ .cz-radio-group-vertical { flex-direction: column; }
854
+ .cz-radio-group-horizontal { flex-direction: row; flex-wrap: wrap; }
855
+
856
+ .cz-radio-wrapper {
857
+ display: inline-flex;
858
+ align-items: center;
859
+ gap: 0.5rem;
860
+ cursor: pointer;
861
+ user-select: none;
862
+ }
863
+
864
+ .cz-radio-wrapper.cz-disabled {
865
+ cursor: not-allowed;
866
+ opacity: 0.5;
867
+ }
868
+
869
+ .cz-radio-wrapper-with-description {
870
+ align-items: flex-start;
871
+ }
872
+ .cz-radio-wrapper-with-description .cz-radio {
873
+ margin-top: 0.125rem;
874
+ }
875
+
876
+ .cz-radio {
877
+ all: unset;
878
+ box-sizing: border-box;
879
+ display: inline-flex;
880
+ align-items: center;
881
+ justify-content: center;
882
+ width: 1.25rem;
883
+ height: 1.25rem;
884
+ border-radius: var(--cz-radius-full);
885
+ border: 2px solid hsl(var(--cz-color-border));
886
+ background-color: hsl(var(--cz-color-bg));
887
+ transition: all var(--cz-transition-fast);
888
+ flex-shrink: 0;
889
+ cursor: pointer;
890
+ }
891
+
892
+ .cz-radio:hover {
893
+ border-color: hsl(var(--cz-color-primary));
894
+ }
895
+
896
+ .cz-radio:focus-visible {
897
+ outline: none;
898
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
899
+ }
900
+
901
+ .cz-radio:disabled {
902
+ cursor: not-allowed;
903
+ opacity: 0.5;
904
+ }
905
+
906
+ .cz-radio[data-state="checked"] {
907
+ border-color: hsl(var(--cz-color-primary));
908
+ }
909
+
910
+ .cz-radio-indicator {
911
+ width: 0.625rem;
912
+ height: 0.625rem;
913
+ border-radius: var(--cz-radius-full);
914
+ background-color: hsl(var(--cz-color-primary));
915
+ transform: scale(0);
916
+ transition: transform var(--cz-transition-fast);
917
+ }
918
+
919
+ .cz-radio[data-state="checked"] .cz-radio-indicator {
920
+ transform: scale(1);
921
+ }
922
+
923
+ .cz-radio-text {
924
+ display: flex;
925
+ flex-direction: column;
926
+ gap: 0.125rem;
927
+ }
928
+
929
+ .cz-radio-label {
930
+ font-size: var(--cz-font-size-sm);
931
+ color: hsl(var(--cz-color-fg));
932
+ }
933
+
934
+ .cz-radio-description {
935
+ font-size: var(--cz-font-size-xs);
936
+ color: hsl(var(--cz-color-mutedFg));
937
+ }
938
+
939
+ /* ===== TOOLTIP ===== */
940
+
941
+ .cz-tooltip-wrapper {
942
+ position: relative;
943
+ display: inline-flex;
944
+ }
945
+
946
+ .cz-tooltip {
947
+ position: absolute;
948
+ z-index: 50;
949
+ padding: 0.375rem 0.75rem;
950
+ font-size: var(--cz-font-size-sm);
951
+ background-color: hsl(var(--cz-color-fg));
952
+ color: hsl(var(--cz-color-bg));
953
+ border-radius: var(--cz-radius-md);
954
+ white-space: nowrap;
955
+ pointer-events: none;
956
+ box-shadow: var(--cz-shadow-md);
957
+ }
958
+
959
+ .cz-tooltip-top {
960
+ bottom: 100%;
961
+ left: 50%;
962
+ transform: translateX(-50%);
963
+ margin-bottom: 0.5rem;
964
+ }
965
+
966
+ .cz-tooltip-bottom {
967
+ top: 100%;
968
+ left: 50%;
969
+ transform: translateX(-50%);
970
+ margin-top: 0.5rem;
971
+ }
972
+
973
+ .cz-tooltip-left {
974
+ right: 100%;
975
+ top: 50%;
976
+ transform: translateY(-50%);
977
+ margin-right: 0.5rem;
978
+ }
979
+
980
+ .cz-tooltip-right {
981
+ left: 100%;
982
+ top: 50%;
983
+ transform: translateY(-50%);
984
+ margin-left: 0.5rem;
985
+ }
986
+
987
+ /* ===== PROGRESS ===== */
988
+
989
+ .cz-progress {
990
+ width: 100%;
991
+ background-color: hsl(var(--cz-color-muted));
992
+ border-radius: var(--cz-radius-full);
993
+ overflow: hidden;
994
+ }
995
+
996
+ .cz-progress-bar {
997
+ height: 100%;
998
+ width: 100%;
999
+ border-radius: var(--cz-radius-full);
1000
+ transition: transform var(--cz-transition-normal);
1001
+ }
1002
+
1003
+ /* Progress Sizes */
1004
+ .cz-progress-sm { height: 0.375rem; }
1005
+ .cz-progress-md { height: 0.5rem; }
1006
+ .cz-progress-lg { height: 0.75rem; }
1007
+
1008
+ /* Progress Variants */
1009
+ .cz-progress-default { background-color: hsl(var(--cz-color-primary)); }
1010
+ .cz-progress-success { background-color: hsl(var(--cz-color-success)); }
1011
+ .cz-progress-warning { background-color: hsl(var(--cz-color-warning)); }
1012
+ .cz-progress-danger { background-color: hsl(var(--cz-color-danger)); }
1013
+
1014
+ /* ===== SKELETON ===== */
1015
+
1016
+ @keyframes cz-skeleton-pulse {
1017
+ 0%, 100% { opacity: 1; }
1018
+ 50% { opacity: 0.4; }
1019
+ }
1020
+
1021
+ .cz-skeleton {
1022
+ background-color: hsl(var(--cz-color-muted));
1023
+ animation: cz-skeleton-pulse 1.5s ease-in-out infinite;
1024
+ }
1025
+
1026
+ .cz-skeleton-text {
1027
+ height: 1rem;
1028
+ width: 100%;
1029
+ border-radius: var(--cz-radius-sm);
1030
+ }
1031
+
1032
+ .cz-skeleton-circular {
1033
+ border-radius: var(--cz-radius-full);
1034
+ }
1035
+
1036
+ .cz-skeleton-rectangular {
1037
+ border-radius: var(--cz-radius-md);
1038
+ }
1039
+
1040
+ /* ===== TABS ===== */
1041
+
1042
+ .cz-tabs {
1043
+ display: flex;
1044
+ flex-direction: column;
1045
+ width: 100%;
1046
+ }
1047
+
1048
+ .cz-tabs-list {
1049
+ display: inline-flex;
1050
+ align-items: center;
1051
+ gap: 0.25rem;
1052
+ border-bottom: 1px solid hsl(var(--cz-color-border));
1053
+ padding-bottom: 0;
1054
+ }
1055
+
1056
+ .cz-tabs-trigger {
1057
+ display: inline-flex;
1058
+ align-items: center;
1059
+ justify-content: center;
1060
+ padding: 0.5rem 1rem;
1061
+ font-size: var(--cz-font-size-sm);
1062
+ font-weight: var(--cz-font-weight-medium);
1063
+ color: hsl(var(--cz-color-mutedFg));
1064
+ background: transparent;
1065
+ border: none;
1066
+ border-bottom: 2px solid transparent;
1067
+ margin-bottom: -1px;
1068
+ cursor: pointer;
1069
+ transition: all var(--cz-transition-fast);
1070
+ }
1071
+
1072
+ .cz-tabs-trigger:hover {
1073
+ color: hsl(var(--cz-color-fg));
1074
+ }
1075
+
1076
+ .cz-tabs-trigger-active {
1077
+ color: hsl(var(--cz-color-primary));
1078
+ border-bottom-color: hsl(var(--cz-color-primary));
1079
+ }
1080
+
1081
+ .cz-tabs-trigger:focus-visible {
1082
+ outline: none;
1083
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-ring));
1084
+ border-radius: var(--cz-radius-sm);
1085
+ }
1086
+
1087
+ .cz-tabs-content {
1088
+ padding-top: var(--cz-spacing-lg);
1089
+ }
1090
+
1091
+ /* ===== DIALOG ===== */
1092
+
1093
+ .cz-dialog-overlay {
1094
+ position: fixed;
1095
+ inset: 0;
1096
+ z-index: 50;
1097
+ background-color: rgba(0, 0, 0, 0.5);
1098
+ }
1099
+
1100
+ .cz-dialog-content {
1101
+ position: fixed;
1102
+ left: 50%;
1103
+ top: 50%;
1104
+ transform: translate(-50%, -50%);
1105
+ z-index: 51;
1106
+ background-color: hsl(var(--cz-color-bg));
1107
+ border-radius: var(--cz-radius-lg);
1108
+ box-shadow: var(--cz-shadow-lg);
1109
+ max-width: 32rem;
1110
+ width: calc(100% - 2rem);
1111
+ max-height: calc(100vh - 4rem);
1112
+ overflow-y: auto;
1113
+ padding: var(--cz-spacing-lg);
1114
+ }
1115
+
1116
+ .cz-dialog-close {
1117
+ position: absolute;
1118
+ top: 0.75rem;
1119
+ right: 0.75rem;
1120
+ width: 2rem;
1121
+ height: 2rem;
1122
+ display: flex;
1123
+ align-items: center;
1124
+ justify-content: center;
1125
+ border: none;
1126
+ background: transparent;
1127
+ border-radius: var(--cz-radius-sm);
1128
+ font-size: 1.25rem;
1129
+ color: hsl(var(--cz-color-mutedFg));
1130
+ cursor: pointer;
1131
+ transition: all var(--cz-transition-fast);
1132
+ }
1133
+
1134
+ .cz-dialog-close:hover {
1135
+ background-color: hsl(var(--cz-color-muted));
1136
+ color: hsl(var(--cz-color-fg));
1137
+ }
1138
+
1139
+ .cz-dialog-header {
1140
+ display: flex;
1141
+ flex-direction: column;
1142
+ gap: 0.25rem;
1143
+ padding-bottom: var(--cz-spacing-md);
1144
+ }
1145
+
1146
+ .cz-dialog-title {
1147
+ font-size: var(--cz-font-size-lg);
1148
+ font-weight: var(--cz-font-weight-semibold);
1149
+ color: hsl(var(--cz-color-fg));
1150
+ margin: 0;
1151
+ }
1152
+
1153
+ .cz-dialog-description {
1154
+ font-size: var(--cz-font-size-sm);
1155
+ color: hsl(var(--cz-color-mutedFg));
1156
+ margin: 0;
1157
+ }
1158
+
1159
+ .cz-dialog-footer {
1160
+ display: flex;
1161
+ justify-content: flex-end;
1162
+ gap: 0.5rem;
1163
+ padding-top: var(--cz-spacing-lg);
1164
+ }
1165
+
1166
+ /* ===== MODAL ===== */
1167
+
1168
+ .cz-modal-overlay {
1169
+ position: fixed;
1170
+ inset: 0;
1171
+ z-index: 60;
1172
+ background-color: var(--cz-modal-overlay-bg, var(--color-bg-modal-overlay, rgba(15, 23, 42, 0.55)));
1173
+ backdrop-filter: blur(2px);
1174
+ animation: cz-modal-overlay-show 150ms ease;
1175
+ }
1176
+
1177
+ .cz-modal-content {
1178
+ position: fixed;
1179
+ left: 50%;
1180
+ top: 50%;
1181
+ transform: translate(-50%, -50%);
1182
+ z-index: 61;
1183
+ background-color: var(--cz-modal-content-bg, var(--color-bg-primary, hsl(var(--cz-color-bg))));
1184
+ border-radius: var(--cz-modal-content-border-radius, var(--radius-modal, var(--cz-radius-lg)));
1185
+ border: 1px solid var(--cz-modal-content-border-color, hsl(var(--cz-color-border)));
1186
+ box-shadow: var(--cz-modal-content-shadow, var(--shadow-modal, var(--cz-shadow-lg)));
1187
+ width: min(36rem, calc(100% - 2rem));
1188
+ max-width: calc(100% - 2rem);
1189
+ max-height: calc(100vh - 2rem);
1190
+ display: flex;
1191
+ flex-direction: column;
1192
+ overflow: hidden;
1193
+ animation: cz-modal-content-show 180ms ease;
1194
+ }
1195
+
1196
+ .cz-modal-size-sm { width: min(28rem, calc(100% - 2rem)); }
1197
+ .cz-modal-size-md { width: min(36rem, calc(100% - 2rem)); }
1198
+ .cz-modal-size-lg { width: min(48rem, calc(100% - 2rem)); }
1199
+ .cz-modal-size-xl { width: min(64rem, calc(100% - 2rem)); }
1200
+ .cz-modal-size-full { width: min(96vw, 96rem); }
1201
+
1202
+ .cz-modal-full-height {
1203
+ height: calc(100vh - 2rem);
1204
+ }
1205
+
1206
+ .cz-modal-header {
1207
+ display: flex;
1208
+ align-items: flex-start;
1209
+ justify-content: space-between;
1210
+ gap: var(--cz-spacing-md);
1211
+ padding: var(--cz-modal-header-padding, var(--cz-spacing-lg) var(--cz-spacing-lg) var(--cz-spacing-md));
1212
+ border-bottom: 1px solid hsl(var(--cz-color-border));
1213
+ flex-shrink: 0;
1214
+ }
1215
+
1216
+ .cz-modal-header-text {
1217
+ min-width: 0;
1218
+ display: flex;
1219
+ flex-direction: column;
1220
+ gap: 0.25rem;
1221
+ }
1222
+
1223
+ .cz-modal-title {
1224
+ margin: 0;
1225
+ font-size: var(--cz-font-size-xl);
1226
+ font-weight: var(--cz-font-weight-semibold);
1227
+ color: var(--color-primary, hsl(var(--cz-color-primary)));
1228
+ line-height: var(--cz-font-lineHeight-tight);
1229
+ }
1230
+
1231
+ .cz-modal-description {
1232
+ margin: 0;
1233
+ font-size: var(--cz-font-size-sm);
1234
+ color: hsl(var(--cz-color-mutedFg));
1235
+ }
1236
+
1237
+ .cz-modal-close-icon {
1238
+ display: inline-flex;
1239
+ align-items: center;
1240
+ justify-content: center;
1241
+ width: var(--cz-modal-close-icon-size, 2rem);
1242
+ height: var(--cz-modal-close-icon-size, 2rem);
1243
+ padding: var(--cz-modal-close-icon-padding, 0.5rem);
1244
+ flex-shrink: 0;
1245
+ border: 0;
1246
+ border-radius: var(--cz-modal-close-icon-radius, var(--radius-button, var(--cz-radius-md)));
1247
+ background: var(--cz-modal-close-icon-bg, transparent);
1248
+ color: var(--cz-modal-close-icon-color, var(--color-text-muted, hsl(var(--cz-color-mutedFg))));
1249
+ cursor: pointer;
1250
+ transition: all var(--cz-modal-close-icon-transition, 200ms ease);
1251
+ }
1252
+
1253
+ .cz-modal-close-icon:hover {
1254
+ background: var(--cz-modal-close-icon-hover-bg, var(--color-primary-bg, var(--color-bg-tertiary, hsl(var(--cz-color-muted)))));
1255
+ color: var(--cz-modal-close-icon-hover-color, var(--color-primary, hsl(var(--cz-color-primary))));
1256
+ }
1257
+
1258
+ .cz-modal-close-icon:focus,
1259
+ .cz-modal-close-icon:focus-visible {
1260
+ outline: none;
1261
+ box-shadow: var(--cz-modal-close-icon-focus-ring, none);
1262
+ }
1263
+
1264
+ .cz-modal-close-btn {
1265
+ flex-shrink: 0;
1266
+ }
1267
+
1268
+ .cz-modal-tab-btn:focus,
1269
+ .cz-modal-tab-btn:focus-visible {
1270
+ outline: none;
1271
+ box-shadow: none;
1272
+ }
1273
+
1274
+ .cz-modal-body {
1275
+ padding: var(--cz-modal-body-padding, var(--cz-spacing-md) var(--cz-spacing-lg) var(--cz-spacing-lg));
1276
+ overflow-y: auto;
1277
+ flex: 1;
1278
+ }
1279
+
1280
+ .cz-modal-footer {
1281
+ display: flex;
1282
+ align-items: center;
1283
+ justify-content: flex-end;
1284
+ gap: var(--cz-modal-footer-gap, var(--cz-spacing-md, 0.75rem));
1285
+ padding: var(--cz-modal-footer-padding, var(--cz-spacing-md) var(--cz-spacing-lg));
1286
+ border-top: 1px solid hsl(var(--cz-color-border));
1287
+ flex-shrink: 0;
1288
+ }
1289
+
1290
+ @supports not (gap: 0.75rem) {
1291
+ .cz-modal-footer > * + * {
1292
+ margin-left: var(--cz-modal-footer-gap, var(--cz-spacing-md, 0.75rem));
1293
+ }
1294
+ }
1295
+
1296
+ @keyframes cz-modal-overlay-show {
1297
+ from { opacity: 0; }
1298
+ to { opacity: 1; }
1299
+ }
1300
+
1301
+ @keyframes cz-modal-content-show {
1302
+ from { opacity: 0; transform: translate(-50%, -48%) scale(0.97); }
1303
+ to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
1304
+ }
1305
+
1306
+ /* ===== DATA TABLE ===== */
1307
+
1308
+ .cz-data-table-page-btn {
1309
+ transition: all var(--transition-fast, var(--cz-transition-fast));
1310
+ }
1311
+
1312
+ .cz-data-table-page-btn:hover:not(:disabled) {
1313
+ background: var(--cz-data-table-pagination-button-hover-bg, transparent);
1314
+ border-color: var(--cz-data-table-pagination-button-border-color, transparent);
1315
+ }
1316
+
1317
+ .cz-data-table-shimmer {
1318
+ background-size: 200% 100%;
1319
+ animation: cz-data-table-shimmer 1.5s infinite;
1320
+ }
1321
+
1322
+ @keyframes cz-data-table-shimmer {
1323
+ 0% { background-position: 200% 0; }
1324
+ 100% { background-position: -200% 0; }
1325
+ }
1326
+
1327
+ /* ===== SELECT ===== */
1328
+
1329
+ .cz-select {
1330
+ all: unset;
1331
+ box-sizing: border-box;
1332
+ display: inline-flex;
1333
+ align-items: center;
1334
+ justify-content: space-between;
1335
+ width: 100%;
1336
+ height: 2.5rem;
1337
+ padding: 0 0.75rem;
1338
+ border-radius: var(--cz-radius-md);
1339
+ border: 1px solid hsl(var(--cz-color-border));
1340
+ background-color: hsl(var(--cz-color-bg));
1341
+ color: hsl(var(--cz-color-fg));
1342
+ font-size: var(--cz-font-size-md);
1343
+ transition: all var(--cz-transition-fast);
1344
+ cursor: pointer;
1345
+ }
1346
+
1347
+ .cz-select:hover {
1348
+ border-color: hsl(var(--cz-color-primary));
1349
+ }
1350
+
1351
+ .cz-select:focus-visible {
1352
+ outline: none;
1353
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-ring));
1354
+ }
1355
+
1356
+ .cz-select:disabled,
1357
+ .cz-select[data-disabled] {
1358
+ cursor: not-allowed;
1359
+ opacity: 0.5;
1360
+ }
1361
+
1362
+ .cz-select[data-placeholder] {
1363
+ color: hsl(var(--cz-color-mutedFg));
1364
+ }
1365
+
1366
+ .cz-select-icon {
1367
+ color: hsl(var(--cz-color-mutedFg));
1368
+ margin-left: 0.5rem;
1369
+ flex-shrink: 0;
1370
+ }
1371
+
1372
+ /* Select Sizes */
1373
+ .cz-select-sm { height: 2rem; padding: 0 0.5rem; font-size: var(--cz-font-size-sm); }
1374
+ .cz-select-md { height: 2.5rem; padding: 0 0.75rem; font-size: var(--cz-font-size-md); }
1375
+ .cz-select-lg { height: 3rem; padding: 0 1rem; font-size: var(--cz-font-size-lg); }
1376
+
1377
+ /* Select Content (Dropdown) */
1378
+ .cz-select-content {
1379
+ z-index: 50;
1380
+ min-width: 8rem;
1381
+ max-height: 15rem;
1382
+ overflow: hidden;
1383
+ background-color: hsl(var(--cz-color-bg));
1384
+ border: 1px solid hsl(var(--cz-color-border));
1385
+ border-radius: var(--cz-radius-md);
1386
+ box-shadow: var(--cz-shadow-lg);
1387
+ }
1388
+
1389
+ .cz-select-viewport {
1390
+ padding: 0.25rem;
1391
+ }
1392
+
1393
+ .cz-select-item {
1394
+ display: flex;
1395
+ align-items: center;
1396
+ gap: 0.5rem;
1397
+ padding: 0.5rem 0.75rem;
1398
+ font-size: var(--cz-font-size-sm);
1399
+ color: hsl(var(--cz-color-fg));
1400
+ border-radius: var(--cz-radius-sm);
1401
+ cursor: pointer;
1402
+ user-select: none;
1403
+ outline: none;
1404
+ }
1405
+
1406
+ .cz-select-item:hover,
1407
+ .cz-select-item[data-highlighted] {
1408
+ background-color: hsl(var(--cz-color-muted));
1409
+ }
1410
+
1411
+ .cz-select-item[data-disabled] {
1412
+ opacity: 0.5;
1413
+ cursor: not-allowed;
1414
+ }
1415
+
1416
+ .cz-select-item-indicator {
1417
+ width: 1rem;
1418
+ display: flex;
1419
+ align-items: center;
1420
+ justify-content: center;
1421
+ color: hsl(var(--cz-color-primary));
1422
+ }
1423
+
1424
+ .cz-select-separator {
1425
+ height: 1px;
1426
+ background-color: hsl(var(--cz-color-border));
1427
+ margin: 0.25rem 0;
1428
+ }
1429
+
1430
+ .cz-select-label {
1431
+ padding: 0.375rem 0.75rem;
1432
+ font-size: var(--cz-font-size-xs);
1433
+ font-weight: var(--cz-font-weight-semibold);
1434
+ color: hsl(var(--cz-color-mutedFg));
1435
+ }
1436
+
1437
+ /* ===== RADIO GROUP ===== */
1438
+
1439
+ .cz-radio-group {
1440
+ display: flex;
1441
+ }
1442
+
1443
+ .cz-radio-group-vertical {
1444
+ flex-direction: column;
1445
+ gap: 0.5rem;
1446
+ }
1447
+
1448
+ .cz-radio-group-horizontal {
1449
+ flex-direction: row;
1450
+ gap: 1rem;
1451
+ }
1452
+
1453
+ .cz-radio-wrapper {
1454
+ display: inline-flex;
1455
+ align-items: center;
1456
+ gap: 0.5rem;
1457
+ cursor: pointer;
1458
+ user-select: none;
1459
+ }
1460
+
1461
+ .cz-radio-wrapper.cz-disabled {
1462
+ cursor: not-allowed;
1463
+ opacity: 0.5;
1464
+ }
1465
+
1466
+ .cz-radio {
1467
+ all: unset;
1468
+ box-sizing: border-box;
1469
+ width: 1.25rem;
1470
+ height: 1.25rem;
1471
+ border-radius: var(--cz-radius-full);
1472
+ border: 2px solid hsl(var(--cz-color-border));
1473
+ background-color: hsl(var(--cz-color-bg));
1474
+ transition: all var(--cz-transition-fast);
1475
+ display: inline-flex;
1476
+ align-items: center;
1477
+ justify-content: center;
1478
+ flex-shrink: 0;
1479
+ cursor: pointer;
1480
+ }
1481
+
1482
+ .cz-radio:hover {
1483
+ border-color: hsl(var(--cz-color-primary));
1484
+ }
1485
+
1486
+ .cz-radio:focus-visible {
1487
+ outline: none;
1488
+ box-shadow: 0 0 0 2px hsl(var(--cz-color-bg)), 0 0 0 4px hsl(var(--cz-color-ring));
1489
+ }
1490
+
1491
+ .cz-radio:disabled {
1492
+ cursor: not-allowed;
1493
+ opacity: 0.5;
1494
+ }
1495
+
1496
+ .cz-radio[data-state="checked"] {
1497
+ border-color: hsl(var(--cz-color-primary));
1498
+ }
1499
+
1500
+ .cz-radio-indicator {
1501
+ width: 0.625rem;
1502
+ height: 0.625rem;
1503
+ border-radius: var(--cz-radius-full);
1504
+ background-color: hsl(var(--cz-color-primary));
1505
+ }
1506
+
1507
+ .cz-radio-label {
1508
+ font-size: var(--cz-font-size-sm);
1509
+ color: hsl(var(--cz-color-fg));
1510
+ }
1511
+
1512
+ /* ===== TABLE ===== */
1513
+
1514
+ :root {
1515
+ --cz-table-border-radius: var(--cz-radius-md);
1516
+ --cz-table-border-width: 1px;
1517
+ --cz-table-cell-padding: 0.75rem 1rem;
1518
+ }
1519
+
1520
+ .cz-table-wrapper {
1521
+ width: 100%;
1522
+ overflow-x: auto;
1523
+ border-radius: var(--cz-table-border-radius);
1524
+ }
1525
+
1526
+ .cz-table {
1527
+ width: 100%;
1528
+ border-collapse: collapse;
1529
+ font-size: var(--cz-font-size-sm);
1530
+ }
1531
+
1532
+ .cz-table-header {
1533
+ background-color: hsl(var(--cz-color-muted));
1534
+ }
1535
+
1536
+ .cz-table-row {
1537
+ border-bottom: 1px solid hsl(var(--cz-color-border));
1538
+ transition: background-color var(--cz-transition-fast);
1539
+ }
1540
+
1541
+ .cz-table-body .cz-table-row:hover {
1542
+ background-color: hsl(var(--cz-color-muted) / 0.5);
1543
+ }
1544
+
1545
+ .cz-table-head {
1546
+ padding: var(--cz-table-cell-padding);
1547
+ text-align: left;
1548
+ font-weight: var(--cz-font-weight-semibold);
1549
+ color: hsl(var(--cz-color-fg));
1550
+ white-space: nowrap;
1551
+ border-bottom: var(--cz-table-border-width) solid hsl(var(--cz-color-border));
1552
+ }
1553
+
1554
+ .cz-table-cell {
1555
+ padding: var(--cz-table-cell-padding);
1556
+ color: hsl(var(--cz-color-fg));
1557
+ border-bottom: var(--cz-table-border-width) solid hsl(var(--cz-color-border));
1558
+ }
1559
+
1560
+ /* ===== ACCORDION ===== */
1561
+
1562
+ .cz-accordion {
1563
+ display: flex;
1564
+ flex-direction: column;
1565
+ width: 100%;
1566
+ }
1567
+
1568
+ .cz-accordion-item {
1569
+ border-bottom: 1px solid hsl(var(--cz-color-border));
1570
+ }
1571
+
1572
+ .cz-accordion-trigger {
1573
+ display: flex;
1574
+ align-items: center;
1575
+ justify-content: space-between;
1576
+ width: 100%;
1577
+ padding: 1rem 0;
1578
+ font-size: var(--cz-font-size-md);
1579
+ font-weight: var(--cz-font-weight-medium);
1580
+ color: hsl(var(--cz-color-fg));
1581
+ background: transparent;
1582
+ border: none;
1583
+ cursor: pointer;
1584
+ text-align: left;
1585
+ transition: all var(--cz-transition-fast);
1586
+ }
1587
+
1588
+ .cz-accordion-trigger:hover {
1589
+ color: hsl(var(--cz-color-primary));
1590
+ }
1591
+
1592
+ .cz-accordion-icon {
1593
+ transition: transform var(--cz-transition-fast);
1594
+ color: hsl(var(--cz-color-mutedFg));
1595
+ }
1596
+
1597
+ .cz-accordion-icon-expanded,
1598
+ .cz-accordion-trigger[data-state="open"] .cz-accordion-icon {
1599
+ transform: rotate(180deg);
1600
+ }
1601
+
1602
+ .cz-accordion-content {
1603
+ overflow: hidden;
1604
+ font-size: var(--cz-font-size-sm);
1605
+ color: hsl(var(--cz-color-mutedFg));
1606
+ }
1607
+
1608
+ .cz-accordion-content[data-state="open"] {
1609
+ animation: cz-accordion-down var(--cz-transition-fast) ease-out;
1610
+ }
1611
+
1612
+ .cz-accordion-content[data-state="closed"] {
1613
+ animation: cz-accordion-up var(--cz-transition-fast) ease-out;
1614
+ }
1615
+
1616
+ .cz-accordion-content-inner {
1617
+ padding-bottom: 1rem;
1618
+ }
1619
+
1620
+ @keyframes cz-accordion-down {
1621
+ from { height: 0; }
1622
+ to { height: var(--radix-accordion-content-height); }
1623
+ }
1624
+
1625
+ @keyframes cz-accordion-up {
1626
+ from { height: var(--radix-accordion-content-height); }
1627
+ to { height: 0; }
1628
+ }
1629
+
1630
+ /* ===== STACK ===== */
1631
+
1632
+ .cz-stack {
1633
+ display: flex;
1634
+ }
1635
+
1636
+ .cz-stack-row { flex-direction: row; }
1637
+ .cz-stack-column { flex-direction: column; }
1638
+
1639
+ .cz-stack-gap-xs { gap: var(--cz-spacing-xs); }
1640
+ .cz-stack-gap-sm { gap: var(--cz-spacing-sm); }
1641
+ .cz-stack-gap-md { gap: var(--cz-spacing-md); }
1642
+ .cz-stack-gap-lg { gap: var(--cz-spacing-lg); }
1643
+ .cz-stack-gap-xl { gap: var(--cz-spacing-xl); }
1644
+
1645
+ .cz-stack-align-start { align-items: flex-start; }
1646
+ .cz-stack-align-center { align-items: center; }
1647
+ .cz-stack-align-end { align-items: flex-end; }
1648
+ .cz-stack-align-stretch { align-items: stretch; }
1649
+
1650
+ .cz-stack-justify-start { justify-content: flex-start; }
1651
+ .cz-stack-justify-center { justify-content: center; }
1652
+ .cz-stack-justify-end { justify-content: flex-end; }
1653
+ .cz-stack-justify-between { justify-content: space-between; }
1654
+ .cz-stack-justify-around { justify-content: space-around; }
1655
+
1656
+ .cz-stack-wrap { flex-wrap: wrap; }
1657
+
1658
+ /* ===== SPINNER ===== */
1659
+
1660
+ .cz-spinner {
1661
+ display: inline-flex;
1662
+ animation: cz-spin 1s linear infinite;
1663
+ }
1664
+
1665
+ .cz-spinner-svg {
1666
+ width: 100%;
1667
+ height: 100%;
1668
+ }
1669
+
1670
+ .cz-spinner-track {
1671
+ opacity: 0.2;
1672
+ }
1673
+
1674
+ .cz-spinner-indicator {
1675
+ opacity: 1;
1676
+ }
1677
+
1678
+ /* Spinner Sizes */
1679
+ .cz-spinner-sm { width: 1rem; height: 1rem; }
1680
+ .cz-spinner-md { width: 1.5rem; height: 1.5rem; }
1681
+ .cz-spinner-lg { width: 2rem; height: 2rem; }
1682
+
1683
+ /* Spinner Variants */
1684
+ .cz-spinner-default { color: hsl(var(--cz-color-fg)); }
1685
+ .cz-spinner-primary { color: hsl(var(--cz-color-primary)); }
1686
+
1687
+ /* ===== ASPECT RATIO ===== */
1688
+
1689
+ .cz-aspect-ratio {
1690
+ position: relative;
1691
+ width: 100%;
1692
+ }
1693
+
1694
+ .cz-aspect-ratio-content {
1695
+ position: absolute;
1696
+ inset: 0;
1697
+ }
1698
+
1699
+ .cz-aspect-ratio-content > * {
1700
+ width: 100%;
1701
+ height: 100%;
1702
+ object-fit: cover;
1703
+ }
1704
+
1705
+ /* ===== BREADCRUMB ===== */
1706
+
1707
+ .cz-breadcrumb {
1708
+ display: flex;
1709
+ align-items: center;
1710
+ }
1711
+
1712
+ .cz-breadcrumb-list {
1713
+ display: flex;
1714
+ align-items: center;
1715
+ gap: 0.25rem;
1716
+ list-style: none;
1717
+ margin: 0;
1718
+ padding: 0;
1719
+ }
1720
+
1721
+ .cz-breadcrumb-item {
1722
+ display: inline-flex;
1723
+ align-items: center;
1724
+ gap: 0.25rem;
1725
+ }
1726
+
1727
+ .cz-breadcrumb-link {
1728
+ font-size: var(--cz-font-size-sm);
1729
+ color: hsl(var(--cz-color-mutedFg));
1730
+ text-decoration: none;
1731
+ transition: color var(--cz-transition-fast);
1732
+ }
1733
+
1734
+ .cz-breadcrumb-link:hover {
1735
+ color: hsl(var(--cz-color-fg));
1736
+ }
1737
+
1738
+ .cz-breadcrumb-separator {
1739
+ color: hsl(var(--cz-color-mutedFg));
1740
+ display: inline-flex;
1741
+ }
1742
+
1743
+ .cz-breadcrumb-page {
1744
+ font-size: var(--cz-font-size-sm);
1745
+ font-weight: var(--cz-font-weight-medium);
1746
+ color: hsl(var(--cz-color-fg));
1747
+ }
1748
+
1749
+ /* ===== LABEL (extended) ===== */
1750
+
1751
+ .cz-label-required {
1752
+ color: hsl(var(--cz-color-danger));
1753
+ margin-left: 0.125rem;
1754
+ }
1755
+
1756
+ /* ===== VISUALLY HIDDEN ===== */
1757
+
1758
+ .cz-visually-hidden {
1759
+ position: absolute;
1760
+ width: 1px;
1761
+ height: 1px;
1762
+ padding: 0;
1763
+ margin: -1px;
1764
+ overflow: hidden;
1765
+ clip: rect(0, 0, 0, 0);
1766
+ white-space: nowrap;
1767
+ border: 0;
1768
+ }
1769
+
1770
+ /* ===== CONTAINER ===== */
1771
+
1772
+ .cz-container {
1773
+ width: 100%;
1774
+ padding-left: var(--cz-spacing-lg);
1775
+ padding-right: var(--cz-spacing-lg);
1776
+ }
1777
+
1778
+ .cz-container-centered {
1779
+ margin-left: auto;
1780
+ margin-right: auto;
1781
+ }
1782
+
1783
+ .cz-container-sm { max-width: 640px; }
1784
+ .cz-container-md { max-width: 768px; }
1785
+ .cz-container-lg { max-width: 1024px; }
1786
+ .cz-container-xl { max-width: 1280px; }
1787
+ .cz-container-full { max-width: 100%; }
1788
+
1789
+ /* ===== GRID ===== */
1790
+
1791
+ .cz-grid {
1792
+ display: grid;
1793
+ }
1794
+
1795
+ .cz-grid-cols-1 { grid-template-columns: repeat(1, 1fr); }
1796
+ .cz-grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
1797
+ .cz-grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
1798
+ .cz-grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
1799
+ .cz-grid-cols-5 { grid-template-columns: repeat(5, 1fr); }
1800
+ .cz-grid-cols-6 { grid-template-columns: repeat(6, 1fr); }
1801
+ .cz-grid-cols-12 { grid-template-columns: repeat(12, 1fr); }
1802
+
1803
+ .cz-grid-gap-xs { gap: var(--cz-spacing-xs); }
1804
+ .cz-grid-gap-sm { gap: var(--cz-spacing-sm); }
1805
+ .cz-grid-gap-md { gap: var(--cz-spacing-md); }
1806
+ .cz-grid-gap-lg { gap: var(--cz-spacing-lg); }
1807
+ .cz-grid-gap-xl { gap: var(--cz-spacing-xl); }
1808
+
1809
+ /* ===== KBD ===== */
1810
+
1811
+ .cz-kbd {
1812
+ display: inline-flex;
1813
+ align-items: center;
1814
+ justify-content: center;
1815
+ padding: 0.125rem 0.375rem;
1816
+ font-size: var(--cz-font-size-xs);
1817
+ font-family: var(--cz-font-mono, ui-monospace, monospace);
1818
+ font-weight: var(--cz-font-weight-medium);
1819
+ background-color: hsl(var(--cz-color-muted));
1820
+ color: hsl(var(--cz-color-fg));
1821
+ border: 1px solid hsl(var(--cz-color-border));
1822
+ border-radius: var(--cz-radius-sm);
1823
+ box-shadow: 0 1px 0 hsl(var(--cz-color-border));
1824
+ }
1825
+
1826
+ /* ===== CODE ===== */
1827
+
1828
+ .cz-code {
1829
+ display: inline;
1830
+ padding: 0.125rem 0.375rem;
1831
+ font-size: 0.875em;
1832
+ font-family: var(--cz-font-mono, ui-monospace, monospace);
1833
+ background-color: hsl(var(--cz-color-muted));
1834
+ color: hsl(var(--cz-color-fg));
1835
+ border-radius: var(--cz-radius-sm);
1836
+ }
1837
+
1838
+ /* ===== SCROLL AREA ===== */
1839
+
1840
+ .cz-scroll-area {
1841
+ overflow: auto;
1842
+ scrollbar-width: thin;
1843
+ scrollbar-color: hsl(var(--cz-color-border)) transparent;
1844
+ }
1845
+
1846
+ .cz-scroll-area::-webkit-scrollbar {
1847
+ width: 8px;
1848
+ height: 8px;
1849
+ }
1850
+
1851
+ .cz-scroll-area::-webkit-scrollbar-track {
1852
+ background: transparent;
1853
+ }
1854
+
1855
+ .cz-scroll-area::-webkit-scrollbar-thumb {
1856
+ background-color: hsl(var(--cz-color-border));
1857
+ border-radius: var(--cz-radius-full);
1858
+ }
1859
+
1860
+ .cz-scroll-area::-webkit-scrollbar-thumb:hover {
1861
+ background-color: hsl(var(--cz-color-mutedFg));
1862
+ }
1863
+
1864
+ /* ===== DROPDOWN MENU ===== */
1865
+
1866
+ .cz-dropdown {
1867
+ position: relative;
1868
+ display: inline-block;
1869
+ }
1870
+
1871
+ .cz-dropdown-trigger {
1872
+ display: inline-flex;
1873
+ align-items: center;
1874
+ gap: 0.25rem;
1875
+ }
1876
+
1877
+ .cz-dropdown-content {
1878
+ position: absolute;
1879
+ top: 100%;
1880
+ margin-top: 0.25rem;
1881
+ z-index: 50;
1882
+ min-width: 10rem;
1883
+ background-color: hsl(var(--cz-color-bg));
1884
+ border: 1px solid hsl(var(--cz-color-border));
1885
+ border-radius: var(--cz-radius-md);
1886
+ box-shadow: var(--cz-shadow-lg);
1887
+ padding: 0.25rem;
1888
+ animation: cz-fade-in 0.15s ease-out;
1889
+ }
1890
+
1891
+ .cz-dropdown-align-start { left: 0; }
1892
+ .cz-dropdown-align-center { left: 50%; transform: translateX(-50%); }
1893
+ .cz-dropdown-align-end { right: 0; }
1894
+
1895
+ .cz-dropdown-item {
1896
+ display: flex;
1897
+ align-items: center;
1898
+ width: 100%;
1899
+ padding: 0.5rem 0.75rem;
1900
+ font-size: var(--cz-font-size-sm);
1901
+ color: hsl(var(--cz-color-fg));
1902
+ background: transparent;
1903
+ border: none;
1904
+ border-radius: var(--cz-radius-sm);
1905
+ cursor: pointer;
1906
+ text-align: left;
1907
+ transition: all var(--cz-transition-fast);
1908
+ }
1909
+
1910
+ .cz-dropdown-item:hover {
1911
+ background-color: hsl(var(--cz-color-muted));
1912
+ }
1913
+
1914
+ .cz-dropdown-item:focus {
1915
+ outline: none;
1916
+ background-color: hsl(var(--cz-color-muted));
1917
+ }
1918
+
1919
+ .cz-dropdown-separator {
1920
+ height: 1px;
1921
+ background-color: hsl(var(--cz-color-border));
1922
+ margin: 0.25rem 0;
1923
+ }
1924
+
1925
+ .cz-dropdown-label {
1926
+ padding: 0.5rem 0.75rem;
1927
+ font-size: var(--cz-font-size-xs);
1928
+ font-weight: var(--cz-font-weight-semibold);
1929
+ color: hsl(var(--cz-color-mutedFg));
1930
+ }
1931
+
1932
+ /* ===== TOAST ===== */
1933
+
1934
+ .cz-toaster {
1935
+ position: fixed;
1936
+ z-index: 100;
1937
+ display: flex;
1938
+ flex-direction: column;
1939
+ gap: 0.5rem;
1940
+ padding: 1rem;
1941
+ max-width: 24rem;
1942
+ width: 100%;
1943
+ pointer-events: none;
1944
+ }
1945
+
1946
+ .cz-toaster-top-left { top: 0; left: 0; }
1947
+ .cz-toaster-top-center { top: 0; left: 50%; transform: translateX(-50%); }
1948
+ .cz-toaster-top-right { top: 0; right: 0; }
1949
+ .cz-toaster-bottom-left { bottom: 0; left: 0; }
1950
+ .cz-toaster-bottom-center { bottom: 0; left: 50%; transform: translateX(-50%); }
1951
+ .cz-toaster-bottom-right { bottom: 0; right: 0; }
1952
+
1953
+ .cz-toast {
1954
+ display: flex;
1955
+ align-items: flex-start;
1956
+ gap: 0.75rem;
1957
+ padding: 1rem;
1958
+ background-color: hsl(var(--cz-color-bg));
1959
+ border: 1px solid hsl(var(--cz-color-border));
1960
+ border-radius: var(--cz-radius-lg);
1961
+ box-shadow: var(--cz-shadow-lg);
1962
+ pointer-events: auto;
1963
+ animation: cz-slide-in 0.3s ease-out;
1964
+ }
1965
+
1966
+ @keyframes cz-slide-in {
1967
+ from {
1968
+ opacity: 0;
1969
+ transform: translateY(1rem);
1970
+ }
1971
+ to {
1972
+ opacity: 1;
1973
+ transform: translateY(0);
1974
+ }
1975
+ }
1976
+
1977
+ .cz-toast-content {
1978
+ flex: 1;
1979
+ min-width: 0;
1980
+ }
1981
+
1982
+ .cz-toast-title {
1983
+ font-size: var(--cz-font-size-sm);
1984
+ font-weight: var(--cz-font-weight-semibold);
1985
+ color: hsl(var(--cz-color-fg));
1986
+ }
1987
+
1988
+ .cz-toast-description {
1989
+ font-size: var(--cz-font-size-sm);
1990
+ color: hsl(var(--cz-color-mutedFg));
1991
+ margin-top: 0.125rem;
1992
+ }
1993
+
1994
+ .cz-toast-close {
1995
+ flex-shrink: 0;
1996
+ width: 1.25rem;
1997
+ height: 1.25rem;
1998
+ display: flex;
1999
+ align-items: center;
2000
+ justify-content: center;
2001
+ border: none;
2002
+ background: transparent;
2003
+ color: hsl(var(--cz-color-mutedFg));
2004
+ cursor: pointer;
2005
+ border-radius: var(--cz-radius-sm);
2006
+ font-size: 1rem;
2007
+ transition: all var(--cz-transition-fast);
2008
+ }
2009
+
2010
+ .cz-toast-close:hover {
2011
+ background-color: hsl(var(--cz-color-muted));
2012
+ color: hsl(var(--cz-color-fg));
2013
+ }
2014
+
2015
+ /* Toast Variants */
2016
+ .cz-toast-success {
2017
+ border-left: 4px solid hsl(var(--cz-color-success));
2018
+ }
2019
+
2020
+ .cz-toast-warning {
2021
+ border-left: 4px solid hsl(var(--cz-color-warning));
2022
+ }
2023
+
2024
+ .cz-toast-danger {
2025
+ border-left: 4px solid hsl(var(--cz-color-danger));
2026
+ }
2027
+
2028
+ /* ===== TAG ===== */
2029
+
2030
+ .cz-tag {
2031
+ display: inline-flex;
2032
+ align-items: center;
2033
+ gap: 0.25rem;
2034
+ border-radius: var(--cz-radius-full);
2035
+ font-weight: var(--cz-font-weight-medium);
2036
+ transition: all var(--cz-transition-fast);
2037
+ }
2038
+
2039
+ .cz-tag-content {
2040
+ display: inline-flex;
2041
+ align-items: center;
2042
+ }
2043
+
2044
+ .cz-tag-remove {
2045
+ display: inline-flex;
2046
+ align-items: center;
2047
+ justify-content: center;
2048
+ border: none;
2049
+ background: transparent;
2050
+ cursor: pointer;
2051
+ padding: 0;
2052
+ color: inherit;
2053
+ opacity: 0.6;
2054
+ transition: opacity var(--cz-transition-fast);
2055
+ border-radius: var(--cz-radius-full);
2056
+ }
2057
+
2058
+ .cz-tag-remove:hover {
2059
+ opacity: 1;
2060
+ }
2061
+
2062
+ /* Tag Sizes */
2063
+ .cz-tag-sm { padding: 0.125rem 0.5rem; font-size: var(--cz-font-size-xs); }
2064
+ .cz-tag-md { padding: 0.25rem 0.625rem; font-size: var(--cz-font-size-sm); }
2065
+ .cz-tag-lg { padding: 0.375rem 0.75rem; font-size: var(--cz-font-size-md); }
2066
+
2067
+ /* Tag Variants */
2068
+ .cz-tag-default {
2069
+ background-color: hsl(var(--cz-color-muted));
2070
+ color: hsl(var(--cz-color-fg));
2071
+ }
2072
+
2073
+ .cz-tag-primary {
2074
+ background-color: hsl(var(--cz-color-primary));
2075
+ color: hsl(var(--cz-color-primaryFg));
2076
+ }
2077
+
2078
+ .cz-tag-secondary {
2079
+ background-color: hsl(var(--cz-color-secondary));
2080
+ color: hsl(var(--cz-color-secondaryFg));
2081
+ }
2082
+
2083
+ .cz-tag-success {
2084
+ background-color: hsl(142 76% 36%);
2085
+ color: white;
2086
+ }
2087
+
2088
+ .cz-tag-warning {
2089
+ background-color: hsl(38 92% 50%);
2090
+ color: white;
2091
+ }
2092
+
2093
+ .cz-tag-danger {
2094
+ background-color: hsl(var(--cz-color-danger));
2095
+ color: white;
2096
+ }
2097
+
2098
+ /* ===== SCROLL AREA ===== */
2099
+
2100
+ .cz-scroll-area {
2101
+ overflow: hidden;
2102
+ }
2103
+
2104
+ .cz-scroll-area-viewport {
2105
+ width: 100%;
2106
+ height: 100%;
2107
+ border-radius: inherit;
2108
+ }
2109
+
2110
+ .cz-scroll-area-scrollbar {
2111
+ display: flex;
2112
+ touch-action: none;
2113
+ user-select: none;
2114
+ padding: 2px;
2115
+ background-color: transparent;
2116
+ transition: background-color var(--cz-transition-fast);
2117
+ }
2118
+
2119
+ .cz-scroll-area-scrollbar:hover {
2120
+ background-color: hsl(var(--cz-color-muted) / 0.5);
2121
+ }
2122
+
2123
+ .cz-scroll-area-scrollbar-vertical {
2124
+ width: 10px;
2125
+ }
2126
+
2127
+ .cz-scroll-area-scrollbar-horizontal {
2128
+ flex-direction: column;
2129
+ height: 10px;
2130
+ }
2131
+
2132
+ .cz-scroll-area-thumb {
2133
+ flex: 1;
2134
+ background-color: hsl(var(--cz-color-border));
2135
+ border-radius: var(--cz-radius-full);
2136
+ position: relative;
2137
+ transition: background-color var(--cz-transition-fast);
2138
+ }
2139
+
2140
+ .cz-scroll-area-thumb::before {
2141
+ content: "";
2142
+ position: absolute;
2143
+ top: 50%;
2144
+ left: 50%;
2145
+ transform: translate(-50%, -50%);
2146
+ width: 100%;
2147
+ height: 100%;
2148
+ min-width: 44px;
2149
+ min-height: 44px;
2150
+ }
2151
+
2152
+ .cz-scroll-area-thumb:hover {
2153
+ background-color: hsl(var(--cz-color-mutedFg));
2154
+ }
2155
+
2156
+ .cz-scroll-area-corner {
2157
+ background-color: hsl(var(--cz-color-muted));
2158
+ }