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