@tomny-dev/uzi 0.1.9 → 0.1.10

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 (68) hide show
  1. package/README.md +132 -103
  2. package/dist/components/alert/Alert.d.ts +9 -0
  3. package/dist/components/alert/Alert.d.ts.map +1 -0
  4. package/dist/components/app-shell/AppShell.d.ts +46 -0
  5. package/dist/components/app-shell/AppShell.d.ts.map +1 -0
  6. package/dist/components/avatar/Avatar.d.ts +10 -0
  7. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  8. package/dist/components/button/Button.d.ts +20 -0
  9. package/dist/components/button/Button.d.ts.map +1 -0
  10. package/dist/components/card/Card.d.ts +28 -0
  11. package/dist/components/card/Card.d.ts.map +1 -0
  12. package/dist/components/checkbox/Checkbox.d.ts +4 -0
  13. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  14. package/dist/components/dropdown/Dropdown.d.ts +18 -0
  15. package/dist/components/dropdown/Dropdown.d.ts.map +1 -0
  16. package/dist/components/dropdown-menu/DropdownMenu.d.ts +24 -0
  17. package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -0
  18. package/dist/components/input/Input.d.ts +4 -0
  19. package/dist/components/input/Input.d.ts.map +1 -0
  20. package/dist/components/label/Label.d.ts +4 -0
  21. package/dist/components/label/Label.d.ts.map +1 -0
  22. package/dist/components/modal/Modal.d.ts +21 -0
  23. package/dist/components/modal/Modal.d.ts.map +1 -0
  24. package/dist/components/multi-select/MultiSelect.d.ts +21 -0
  25. package/dist/components/multi-select/MultiSelect.d.ts.map +1 -0
  26. package/dist/components/pill/Pill.d.ts +28 -0
  27. package/dist/components/pill/Pill.d.ts.map +1 -0
  28. package/dist/components/progress/Progress.d.ts +12 -0
  29. package/dist/components/progress/Progress.d.ts.map +1 -0
  30. package/dist/components/select/Select.d.ts +28 -0
  31. package/dist/components/select/Select.d.ts.map +1 -0
  32. package/dist/components/sidebar-nav/SidebarNav.d.ts +36 -0
  33. package/dist/components/sidebar-nav/SidebarNav.d.ts.map +1 -0
  34. package/dist/components/skeleton/Skeleton.d.ts +11 -0
  35. package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
  36. package/dist/components/theme-toggle-button/ThemeToggleButton.d.ts +8 -0
  37. package/dist/components/theme-toggle-button/ThemeToggleButton.d.ts.map +1 -0
  38. package/dist/components/toast/ToastContext.d.ts +27 -0
  39. package/dist/components/toast/ToastContext.d.ts.map +1 -0
  40. package/dist/components/toast/types.d.ts +46 -0
  41. package/dist/components/toast/types.d.ts.map +1 -0
  42. package/dist/components/top-bar/TopBar.d.ts +20 -0
  43. package/dist/components/top-bar/TopBar.d.ts.map +1 -0
  44. package/dist/index.cjs +46 -1487
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.ts +44 -390
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +6774 -1152
  49. package/dist/index.js.map +1 -1
  50. package/dist/server.cjs +7 -51
  51. package/dist/server.cjs.map +1 -1
  52. package/dist/server.d.ts +2 -16
  53. package/dist/server.d.ts.map +1 -0
  54. package/dist/server.js +13 -18
  55. package/dist/server.js.map +1 -1
  56. package/dist/style.css +1 -0
  57. package/dist/theme/ThemeProvider.d.ts +29 -0
  58. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  59. package/dist/theme/constants.d.ts +5 -0
  60. package/dist/theme/constants.d.ts.map +1 -0
  61. package/dist/{server.d.cts → theme/themeScript.d.ts} +2 -3
  62. package/dist/theme/themeScript.d.ts.map +1 -0
  63. package/dist/utils/cx.d.ts +2 -0
  64. package/dist/utils/cx.d.ts.map +1 -0
  65. package/package.json +11 -7
  66. package/dist/index.css +0 -1428
  67. package/dist/index.css.map +0 -1
  68. package/dist/index.d.cts +0 -390
package/dist/index.css DELETED
@@ -1,1428 +0,0 @@
1
- /* src/theme/theme.css */
2
- :root {
3
- --focus-ring: 2px solid color-mix(in srgb, var(--ring, #94a3b8) 50%, transparent);
4
- --focus-ring-offset: 2px;
5
- --success: hsl(142 71% 45%);
6
- --warning: hsl(38 92% 50%);
7
- }
8
- :root,
9
- :root[data-uzi-theme=light],
10
- [data-uzi-theme=light] {
11
- color-scheme: light;
12
- --background: hsl(210 20% 98%);
13
- --foreground: hsl(222 47% 11%);
14
- --card: hsl(0 0% 100%);
15
- --card-foreground: hsl(222 47% 11%);
16
- --popover: hsl(0 0% 100%);
17
- --popover-foreground: hsl(222 47% 11%);
18
- --secondary: hsl(214 32% 94%);
19
- --secondary-foreground: hsl(222 47% 11%);
20
- --muted: hsl(214 32% 94%);
21
- --muted-foreground: hsl(215 16% 47%);
22
- --accent: hsl(214 32% 92%);
23
- --accent-foreground: hsl(222 47% 11%);
24
- --destructive: hsl(0 84% 60%);
25
- --destructive-foreground: hsl(0 0% 98%);
26
- --border: hsl(214 32% 88%);
27
- --input: hsl(214 32% 88%);
28
- --panel: var(--card);
29
- --text: var(--foreground);
30
- }
31
- :root[data-uzi-theme=dark],
32
- [data-uzi-theme=dark] {
33
- color-scheme: dark;
34
- --background: #0f172a;
35
- --foreground: #e2e8f0;
36
- --card: #111827;
37
- --card-foreground: #e2e8f0;
38
- --popover: #111827;
39
- --popover-foreground: #e2e8f0;
40
- --secondary: #152036;
41
- --secondary-foreground: #e2e8f0;
42
- --muted: #152036;
43
- --muted-foreground: #94a3b8;
44
- --accent: color-mix(in srgb, var(--primary, #22d3ee) 12%, transparent);
45
- --accent-foreground: #e2e8f0;
46
- --destructive: hsl(0 72% 51%);
47
- --destructive-foreground: hsl(0 0% 98%);
48
- --border: #1f2937;
49
- --input: #1f2937;
50
- --panel: #111827;
51
- --surface-elevated: #0b1224;
52
- --surface-topbar: color-mix(in srgb, var(--background, #0b1224) 85%, transparent);
53
- --text: #e2e8f0;
54
- }
55
- :root,
56
- :root[data-uzi-accent=blue],
57
- [data-uzi-accent=blue] {
58
- --primary: hsl(221 83% 53%);
59
- --primary-foreground: hsl(210 40% 98%);
60
- --ring: hsl(221 83% 53%);
61
- }
62
- :root[data-uzi-accent=cyan],
63
- [data-uzi-accent=cyan] {
64
- --primary: hsl(188 94% 43%);
65
- --primary-foreground: hsl(222 47% 11%);
66
- --ring: hsl(188 94% 43%);
67
- }
68
- :root[data-uzi-accent=violet],
69
- [data-uzi-accent=violet] {
70
- --primary: hsl(262 83% 58%);
71
- --primary-foreground: hsl(210 40% 98%);
72
- --ring: hsl(262 83% 58%);
73
- }
74
- :root[data-uzi-accent=emerald],
75
- [data-uzi-accent=emerald] {
76
- --primary: hsl(160 84% 39%);
77
- --primary-foreground: hsl(210 40% 98%);
78
- --ring: hsl(160 84% 39%);
79
- }
80
- :root[data-uzi-accent=amber],
81
- [data-uzi-accent=amber] {
82
- --primary: hsl(38 92% 50%);
83
- --primary-foreground: hsl(222 47% 11%);
84
- --ring: hsl(38 92% 50%);
85
- }
86
- :root[data-uzi-accent=rose],
87
- [data-uzi-accent=rose] {
88
- --primary: hsl(346 77% 49%);
89
- --primary-foreground: hsl(210 40% 98%);
90
- --ring: hsl(346 77% 49%);
91
- }
92
-
93
- /* src/components/button/button.module.css */
94
- .button {
95
- display: inline-flex;
96
- align-items: center;
97
- justify-content: center;
98
- gap: 8px;
99
- font-family: inherit;
100
- font-weight: 600;
101
- border-radius: 8px;
102
- border: 1px solid transparent;
103
- cursor: pointer;
104
- text-decoration: none;
105
- transition:
106
- opacity 0.15s,
107
- border-color 0.15s,
108
- color 0.15s,
109
- background 0.15s;
110
- white-space: nowrap;
111
- line-height: 1;
112
- }
113
- .button:focus-visible {
114
- outline: var(--focus-ring);
115
- outline-offset: var(--focus-ring-offset);
116
- }
117
- .button svg {
118
- width: 1rem;
119
- height: 1rem;
120
- flex-shrink: 0;
121
- }
122
- .button:disabled {
123
- opacity: 0.45;
124
- cursor: not-allowed;
125
- }
126
- .size-sm {
127
- font-size: 0.82rem;
128
- min-height: 2rem;
129
- padding: 6px 14px;
130
- }
131
- .size-md {
132
- font-size: 0.95rem;
133
- min-height: 2.25rem;
134
- padding: 10px 22px;
135
- }
136
- .size-lg {
137
- font-size: 1rem;
138
- min-height: 2.5rem;
139
- padding: 12px 28px;
140
- }
141
- .size-icon {
142
- width: 2.25rem;
143
- height: 2.25rem;
144
- padding: 0;
145
- }
146
- .variant-primary {
147
- background: var(--ts-btn-primary-bg, var(--primary, #22d3ee));
148
- color: var(--ts-btn-primary-text, var(--primary-foreground, #0f172a));
149
- }
150
- .variant-primary:hover:not(:disabled) {
151
- opacity: 0.88;
152
- }
153
- .variant-secondary {
154
- background: var(--ts-btn-secondary-bg, var(--secondary, rgba(255, 255, 255, 0.06)));
155
- color: var(--ts-btn-secondary-text, var(--secondary-foreground, var(--text, #e2e8f0)));
156
- border-color: var(--ts-btn-secondary-border, var(--border, #1f2937));
157
- }
158
- .variant-secondary:hover:not(:disabled) {
159
- background: var(--ts-btn-secondary-hover-bg, color-mix(in srgb, var(--secondary, rgba(255, 255, 255, 0.06)) 90%, black));
160
- }
161
- .variant-outline {
162
- background: var(--ts-btn-outline-bg, var(--background, transparent));
163
- color: var(--ts-btn-outline-text, var(--foreground, var(--text, #e2e8f0)));
164
- border-color: var(--ts-btn-outline-border, var(--border, #1f2937));
165
- }
166
- .variant-outline:hover:not(:disabled) {
167
- background: var(--ts-btn-outline-hover-bg, var(--accent, rgba(255, 255, 255, 0.06)));
168
- color: var(--ts-btn-outline-hover-text, var(--accent-foreground, var(--foreground, #e2e8f0)));
169
- }
170
- .variant-ghost {
171
- background: transparent;
172
- color: var(--ts-btn-ghost-text, var(--muted-foreground, var(--muted, #94a3b8)));
173
- padding-left: 8px;
174
- padding-right: 8px;
175
- }
176
- .variant-ghost:hover:not(:disabled) {
177
- background: var(--ts-btn-ghost-hover-bg, var(--accent, rgba(255, 255, 255, 0.05)));
178
- color: var(--ts-btn-ghost-hover-text, var(--accent-foreground, var(--foreground, #e2e8f0)));
179
- }
180
- .variant-destructive {
181
- background: var(--ts-btn-danger-bg, var(--destructive, #f87171));
182
- color: var(--ts-btn-danger-text, var(--destructive-foreground, #fff));
183
- }
184
- .variant-destructive:hover:not(:disabled) {
185
- opacity: 0.9;
186
- }
187
- .variant-link {
188
- background: transparent;
189
- color: var(--ts-btn-link-text, var(--primary, #22d3ee));
190
- border-color: transparent;
191
- min-height: auto;
192
- padding: 0;
193
- border-radius: 0;
194
- }
195
- .variant-link:hover:not(:disabled) {
196
- text-decoration: underline;
197
- text-underline-offset: 0.2em;
198
- }
199
-
200
- /* src/components/avatar/avatar.module.css */
201
- .avatar {
202
- position: relative;
203
- display: inline-flex;
204
- flex-shrink: 0;
205
- align-items: center;
206
- justify-content: center;
207
- overflow: hidden;
208
- border-radius: 999px;
209
- background: var(--ts-avatar-bg, var(--muted, rgba(255, 255, 255, 0.08)));
210
- color: var(--ts-avatar-fg, var(--muted-foreground, var(--text, #e2e8f0)));
211
- }
212
- .size-sm {
213
- width: 1.75rem;
214
- height: 1.75rem;
215
- }
216
- .size-md {
217
- width: 2rem;
218
- height: 2rem;
219
- }
220
- .size-lg {
221
- width: 2.25rem;
222
- height: 2.25rem;
223
- }
224
- .image {
225
- width: 100%;
226
- height: 100%;
227
- object-fit: cover;
228
- }
229
- .fallback {
230
- display: flex;
231
- width: 100%;
232
- height: 100%;
233
- align-items: center;
234
- justify-content: center;
235
- border-radius: inherit;
236
- background: var(--ts-avatar-fallback-bg, var(--muted, rgba(255, 255, 255, 0.08)));
237
- color: var(--ts-avatar-fallback-fg, var(--muted-foreground, var(--text, #e2e8f0)));
238
- font-size: 0.85rem;
239
- font-weight: 700;
240
- line-height: 1;
241
- text-transform: uppercase;
242
- }
243
-
244
- /* src/components/card/card.module.css */
245
- .card {
246
- position: relative;
247
- overflow: visible;
248
- border-radius: var(--ts-card-radius, 12px);
249
- border: 1px solid var(--ts-card-border, var(--border, #1f2937));
250
- background: var(--ts-card-bg, var(--panel, #111827));
251
- color: var(--ts-card-fg, var(--text, #e2e8f0));
252
- box-shadow: var(--ts-card-shadow, 0 16px 36px rgba(0, 0, 0, 0.28));
253
- padding: var(--ts-card-padding, 16px);
254
- transition:
255
- transform 140ms ease,
256
- box-shadow 140ms ease,
257
- border-color 140ms ease,
258
- background-color 140ms ease;
259
- }
260
- .tone-default {
261
- --ts-card-bg: var(--panel, #111827);
262
- --ts-card-border: var(--border, #1f2937);
263
- --ts-card-shadow: 0 16px 36px rgba(0, 0, 0, 0.28);
264
- }
265
- .tone-muted {
266
- --ts-card-bg: var(--ts-card-muted-bg, rgba(255, 255, 255, 0.02));
267
- --ts-card-border: var(--ts-card-muted-border, rgba(255, 255, 255, 0.06));
268
- --ts-card-shadow: 0 10px 26px rgba(0, 0, 0, 0.22);
269
- }
270
- .tone-contrast {
271
- --ts-card-bg: var(--ts-card-contrast-bg, #0b1224);
272
- --ts-card-border: var(--ts-card-contrast-border, rgba(255, 255, 255, 0.1));
273
- --ts-card-shadow: 0 18px 50px rgba(0, 0, 0, 0.32);
274
- }
275
- .interactive {
276
- cursor: default;
277
- }
278
- .interactive:hover {
279
- transform: translateY(-1px);
280
- box-shadow: 0 22px 60px rgba(0, 0, 0, 0.32);
281
- border-color: var(--ts-card-hover-border, color-mix(in srgb, var(--primary, #22d3ee) 40%, transparent));
282
- }
283
- .interactive:focus-within {
284
- outline: var(--focus-ring);
285
- outline-offset: var(--focus-ring-offset);
286
- }
287
- .padding-none {
288
- --ts-card-padding: 0;
289
- }
290
- .padding-sm {
291
- --ts-card-padding: 10px;
292
- }
293
- .padding-md {
294
- --ts-card-padding: 16px;
295
- }
296
- .padding-lg {
297
- --ts-card-padding: 20px;
298
- }
299
-
300
- /* src/components/pill/pill.module.css */
301
- .pill {
302
- display: inline-flex;
303
- align-items: center;
304
- gap: 6px;
305
- padding: 4px 10px;
306
- border-radius: 999px;
307
- border: 1px solid var(--ts-pill-border, var(--border, #1f2937));
308
- background: var(--ts-pill-bg, rgba(255, 255, 255, 0.04));
309
- color: var(--ts-pill-fg, var(--muted, #94a3b8));
310
- font-size: 12px;
311
- font-weight: 700;
312
- letter-spacing: 0.05em;
313
- text-transform: uppercase;
314
- line-height: 1.2;
315
- white-space: nowrap;
316
- }
317
- .size-sm {
318
- padding: 3px 8px;
319
- font-size: 11px;
320
- }
321
- .size-md {
322
- padding: 4px 10px;
323
- }
324
- .tone-neutral {
325
- background: var(--ts-pill-bg, rgba(255, 255, 255, 0.04));
326
- border-color: var(--ts-pill-border, var(--border, #1f2937));
327
- color: var(--ts-pill-fg, var(--muted, #94a3b8));
328
- }
329
- .tone-success {
330
- color: var(--success, hsl(142 71% 45%));
331
- border-color: color-mix(in srgb, var(--success, hsl(142 71% 45%)) 45%, transparent);
332
- background: color-mix(in srgb, var(--success, hsl(142 71% 45%)) 12%, transparent);
333
- }
334
- .tone-warning {
335
- color: var(--warning, hsl(38 92% 50%));
336
- border-color: color-mix(in srgb, var(--warning, hsl(38 92% 50%)) 45%, transparent);
337
- background: color-mix(in srgb, var(--warning, hsl(38 92% 50%)) 12%, transparent);
338
- }
339
- .tone-info {
340
- color: var(--primary, #22d3ee);
341
- border-color: color-mix(in srgb, var(--primary, #22d3ee) 50%, transparent);
342
- background: color-mix(in srgb, var(--primary, #22d3ee) 12%, transparent);
343
- }
344
- .tone-danger {
345
- color: var(--destructive, #f87171);
346
- border-color: color-mix(in srgb, var(--destructive, #f87171) 45%, transparent);
347
- background: color-mix(in srgb, var(--destructive, #f87171) 12%, transparent);
348
- }
349
- .icon {
350
- display: inline-flex;
351
- align-items: center;
352
- justify-content: center;
353
- width: 12px;
354
- height: 12px;
355
- }
356
- .content {
357
- display: inline-flex;
358
- align-items: center;
359
- gap: 4px;
360
- }
361
-
362
- /* src/components/modal/modal.module.css */
363
- .backdrop {
364
- position: fixed;
365
- inset: 0;
366
- background: rgba(0, 0, 0, 0.55);
367
- display: flex;
368
- align-items: center;
369
- justify-content: center;
370
- padding: 16px;
371
- z-index: 100;
372
- }
373
- .modal {
374
- background: var(--background, #0f172a);
375
- border: 1px solid var(--border, #1f2937);
376
- border-radius: 14px;
377
- padding: 24px;
378
- width: min(500px, 100%);
379
- box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);
380
- display: flex;
381
- flex-direction: column;
382
- gap: 0;
383
- }
384
- .size-sm {
385
- width: min(380px, 100%);
386
- }
387
- .size-md {
388
- width: min(500px, 100%);
389
- }
390
- .size-lg {
391
- width: min(640px, 100%);
392
- }
393
- .size-xl {
394
- width: min(900px, 100%);
395
- }
396
- .header {
397
- display: flex;
398
- align-items: flex-start;
399
- justify-content: space-between;
400
- gap: 12px;
401
- margin-bottom: 16px;
402
- }
403
- .titles {
404
- display: flex;
405
- flex-direction: column;
406
- gap: 3px;
407
- }
408
- .title {
409
- font-weight: 700;
410
- font-size: 16px;
411
- color: var(--text, #e2e8f0);
412
- line-height: 1.3;
413
- }
414
- .subtitle {
415
- font-size: 13px;
416
- color: var(--muted, #94a3b8);
417
- line-height: 1.4;
418
- }
419
- .closeButton {
420
- display: inline-flex;
421
- align-items: center;
422
- justify-content: center;
423
- width: 28px;
424
- height: 28px;
425
- flex-shrink: 0;
426
- background: transparent;
427
- border: 1px solid transparent;
428
- border-radius: 6px;
429
- color: var(--muted, #94a3b8);
430
- cursor: pointer;
431
- transition: background 0.12s, color 0.12s;
432
- padding: 0;
433
- }
434
- .closeButton:hover {
435
- background: rgba(255, 255, 255, 0.07);
436
- color: var(--text, #e2e8f0);
437
- }
438
- .closeButton:focus-visible {
439
- outline: var(--focus-ring);
440
- outline-offset: var(--focus-ring-offset);
441
- }
442
- .body {
443
- display: flex;
444
- flex-direction: column;
445
- gap: 12px;
446
- }
447
- .footer {
448
- display: flex;
449
- gap: 8px;
450
- margin-top: 20px;
451
- }
452
-
453
- /* src/components/alert/alert.module.css */
454
- .alert {
455
- display: flex;
456
- align-items: flex-start;
457
- gap: 0.5rem;
458
- border-radius: 0.375rem;
459
- border: 1px solid;
460
- padding: 0.625rem 0.875rem;
461
- font-size: 0.875rem;
462
- line-height: 1.5;
463
- }
464
- .success {
465
- border-color: color-mix(in srgb, var(--success, hsl(142 71% 45%)) 35%, transparent);
466
- background: color-mix(in srgb, var(--success, hsl(142 71% 45%)) 10%, transparent);
467
- color: color-mix(in srgb, var(--success, hsl(142 71% 45%)) 90%, var(--foreground, #e2e8f0));
468
- }
469
- .error {
470
- border-color: color-mix(in srgb, var(--destructive, #f87171) 35%, transparent);
471
- background: color-mix(in srgb, var(--destructive, #f87171) 10%, transparent);
472
- color: color-mix(in srgb, var(--destructive, #f87171) 90%, var(--foreground, #e2e8f0));
473
- }
474
- .warning {
475
- border-color: color-mix(in srgb, var(--warning, hsl(38 92% 50%)) 35%, transparent);
476
- background: color-mix(in srgb, var(--warning, hsl(38 92% 50%)) 10%, transparent);
477
- color: color-mix(in srgb, var(--warning, hsl(38 92% 50%)) 90%, var(--foreground, #e2e8f0));
478
- }
479
- .info {
480
- border-color: color-mix(in srgb, var(--primary, #22d3ee) 35%, transparent);
481
- background: color-mix(in srgb, var(--primary, #22d3ee) 10%, transparent);
482
- color: color-mix(in srgb, var(--primary, #22d3ee) 90%, var(--foreground, #e2e8f0));
483
- }
484
-
485
- /* src/components/toast/toast.module.css */
486
- .stack {
487
- position: fixed;
488
- z-index: 2147483000;
489
- display: flex;
490
- flex-direction: column;
491
- gap: 10px;
492
- pointer-events: none;
493
- }
494
- .topRight {
495
- top: 16px;
496
- right: 16px;
497
- align-items: flex-end;
498
- }
499
- .topLeft {
500
- top: 16px;
501
- left: 16px;
502
- align-items: flex-start;
503
- }
504
- .topCenter {
505
- top: 16px;
506
- left: 50%;
507
- transform: translateX(-50%);
508
- align-items: center;
509
- }
510
- .bottomRight {
511
- bottom: 16px;
512
- right: 16px;
513
- align-items: flex-end;
514
- }
515
- .bottomLeft {
516
- bottom: 16px;
517
- left: 16px;
518
- align-items: flex-start;
519
- }
520
- .bottomCenter {
521
- bottom: 16px;
522
- left: 50%;
523
- transform: translateX(-50%);
524
- align-items: center;
525
- }
526
- .toast {
527
- pointer-events: auto;
528
- display: flex;
529
- align-items: flex-start;
530
- gap: 10px;
531
- min-width: 280px;
532
- max-width: min(420px, calc(100vw - 32px));
533
- padding: 12px 14px;
534
- border-radius: 10px;
535
- border: 1px solid var(--toast-border, #1f2937);
536
- background: var(--toast-bg, #111827);
537
- color: var(--toast-text, #e2e8f0);
538
- box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
539
- animation: toastSlideIn 180ms ease-out;
540
- }
541
- .toast.exit {
542
- animation: toastSlideOut 160ms ease-in forwards;
543
- }
544
- .icon {
545
- width: 18px;
546
- height: 18px;
547
- flex-shrink: 0;
548
- }
549
- .body {
550
- flex: 1;
551
- min-width: 0;
552
- display: grid;
553
- gap: 6px;
554
- }
555
- .message {
556
- word-break: break-word;
557
- font-size: 14px;
558
- line-height: 1.4;
559
- }
560
- .actions {
561
- display: flex;
562
- gap: 6px;
563
- flex-wrap: wrap;
564
- }
565
- .actionButton {
566
- padding: 5px 10px;
567
- font-size: 12px;
568
- font-weight: 600;
569
- border-radius: 6px;
570
- border: 1px solid var(--toast-action-border, rgba(0, 0, 0, 0.2));
571
- background: var(--toast-action-bg, rgba(0, 0, 0, 0.1));
572
- color: var(--toast-text, #e2e8f0);
573
- cursor: pointer;
574
- transition: background 120ms ease;
575
- }
576
- .actionButton:hover {
577
- background: var(--toast-button-bg, rgba(0, 0, 0, 0.15));
578
- }
579
- .closeButton {
580
- flex-shrink: 0;
581
- display: flex;
582
- align-items: center;
583
- justify-content: center;
584
- width: 20px;
585
- height: 20px;
586
- padding: 0;
587
- margin: -2px -4px -2px 0;
588
- border: none;
589
- border-radius: 4px;
590
- background: transparent;
591
- color: var(--toast-text, #e2e8f0);
592
- opacity: 0.6;
593
- cursor: pointer;
594
- transition: opacity 120ms ease, background 120ms ease;
595
- }
596
- .closeButton:hover {
597
- opacity: 1;
598
- background: var(--toast-button-bg, rgba(0, 0, 0, 0.1));
599
- }
600
- @keyframes toastSlideIn {
601
- from {
602
- opacity: 0;
603
- transform: translateY(-8px);
604
- }
605
- to {
606
- opacity: 1;
607
- transform: translateY(0);
608
- }
609
- }
610
- @keyframes toastSlideOut {
611
- from {
612
- opacity: 1;
613
- transform: translateY(0);
614
- }
615
- to {
616
- opacity: 0;
617
- transform: translateY(-6px);
618
- }
619
- }
620
-
621
- /* src/components/input/input.module.css */
622
- .input {
623
- display: flex;
624
- width: 100%;
625
- min-height: 2.25rem;
626
- border-radius: 0.5rem;
627
- border: 1px solid var(--ts-input-border, var(--input, var(--border, #1f2937)));
628
- background: var(--ts-input-bg, var(--background, #fff));
629
- color: var(--ts-input-fg, var(--foreground, var(--text, #e2e8f0)));
630
- padding: 0.25rem 0.75rem;
631
- font-size: 0.875rem;
632
- line-height: 1.25rem;
633
- box-shadow: var(--ts-input-shadow, 0 1px 2px rgba(0, 0, 0, 0.04));
634
- transition: border-color 0.15s ease, background 0.15s ease;
635
- }
636
- .input::placeholder {
637
- color: var(--ts-input-placeholder, var(--muted-foreground, var(--muted, #94a3b8)));
638
- }
639
- .input:focus-visible {
640
- outline: var(--focus-ring);
641
- outline-offset: var(--focus-ring-offset);
642
- }
643
- .input:disabled {
644
- cursor: not-allowed;
645
- opacity: 0.5;
646
- }
647
-
648
- /* src/components/label/label.module.css */
649
- .label {
650
- font-size: 0.875rem;
651
- font-weight: 500;
652
- line-height: 1.2;
653
- color: var(--ts-label-fg, inherit);
654
- }
655
-
656
- /* src/components/checkbox/checkbox.module.css */
657
- .checkbox {
658
- width: 1rem;
659
- height: 1rem;
660
- margin: 0;
661
- border-radius: 0.25rem;
662
- border: 1px solid var(--ts-checkbox-border, var(--primary, var(--border, #1f2937)));
663
- background: var(--ts-checkbox-bg, var(--background, #fff));
664
- accent-color: var(--ts-checkbox-accent, var(--primary, #0f172a));
665
- cursor: pointer;
666
- }
667
- .checkbox:focus-visible {
668
- outline: var(--focus-ring);
669
- outline-offset: var(--focus-ring-offset);
670
- }
671
- .checkbox:disabled {
672
- cursor: not-allowed;
673
- opacity: 0.5;
674
- }
675
-
676
- /* src/components/dropdown/dropdown.module.css */
677
- .wrapper {
678
- position: relative;
679
- display: inline-block;
680
- }
681
- .trigger {
682
- display: flex;
683
- align-items: center;
684
- justify-content: space-between;
685
- gap: 8px;
686
- padding: 6px 10px 6px 14px;
687
- background: var(--ts-dropdown-bg, var(--panel, #111827));
688
- border: 1px solid var(--ts-dropdown-border, var(--border, #1f2937));
689
- border-radius: 8px;
690
- color: var(--ts-dropdown-text, var(--text, #e2e8f0));
691
- font-size: 0.85rem;
692
- font-weight: 500;
693
- cursor: pointer;
694
- white-space: nowrap;
695
- transition: border-color 0.15s;
696
- user-select: none;
697
- }
698
- .trigger:hover {
699
- border-color: var(--ts-dropdown-accent, var(--accent, #22d3ee));
700
- }
701
- .trigger:focus-visible {
702
- outline: var(--focus-ring);
703
- outline-offset: var(--focus-ring-offset);
704
- }
705
- .trigger-active {
706
- border-color: var(--ts-dropdown-accent, var(--accent, #22d3ee));
707
- color: var(--ts-dropdown-accent, var(--accent, #22d3ee));
708
- }
709
- .chevron {
710
- width: 10px;
711
- height: 10px;
712
- display: flex;
713
- align-items: center;
714
- justify-content: center;
715
- transition: transform 0.15s;
716
- color: var(--muted, #94a3b8);
717
- flex-shrink: 0;
718
- }
719
- .chevron-open {
720
- transform: rotate(180deg);
721
- }
722
- .menu {
723
- position: absolute;
724
- top: calc(100% + 6px);
725
- left: 0;
726
- min-width: 100%;
727
- background: var(--ts-dropdown-bg, var(--panel, #111827));
728
- border: 1px solid var(--ts-dropdown-border, var(--border, #1f2937));
729
- border-radius: 10px;
730
- padding: 4px;
731
- z-index: 50;
732
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
733
- animation: dropdownFadeIn 0.1s ease;
734
- }
735
- @keyframes dropdownFadeIn {
736
- from {
737
- opacity: 0;
738
- transform: translateY(-4px);
739
- }
740
- to {
741
- opacity: 1;
742
- transform: translateY(0);
743
- }
744
- }
745
- .option {
746
- display: block;
747
- width: 100%;
748
- padding: 8px 12px;
749
- border-radius: 6px;
750
- font-size: 0.85rem;
751
- font-weight: 500;
752
- color: var(--muted, #94a3b8);
753
- background: none;
754
- border: none;
755
- cursor: pointer;
756
- text-align: left;
757
- white-space: nowrap;
758
- transition: background 0.1s, color 0.1s;
759
- }
760
- .option:hover {
761
- background: var(--accent, color-mix(in srgb, var(--primary, #22d3ee) 8%, transparent));
762
- color: var(--ts-dropdown-text, var(--text, #e2e8f0));
763
- }
764
- .option:focus-visible {
765
- outline: var(--focus-ring);
766
- outline-offset: var(--focus-ring-offset);
767
- }
768
- .option-selected {
769
- color: var(--primary, #22d3ee);
770
- background: color-mix(in srgb, var(--primary, #22d3ee) 8%, transparent);
771
- }
772
-
773
- /* src/components/dropdown-menu/dropdown-menu.module.css */
774
- .content {
775
- z-index: 50;
776
- min-width: 8rem;
777
- max-height: var(--radix-dropdown-menu-content-available-height);
778
- overflow-x: hidden;
779
- overflow-y: auto;
780
- border: 1px solid var(--ts-menu-border, var(--border, #1f2937));
781
- border-radius: 0.5rem;
782
- background: var(--ts-menu-bg, var(--popover, var(--panel, #111827)));
783
- color: var(--ts-menu-fg, var(--popover-foreground, var(--text, #e2e8f0)));
784
- padding: 0.25rem;
785
- box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18);
786
- transform-origin: var(--radix-dropdown-menu-content-transform-origin);
787
- animation: menuFadeIn 140ms ease;
788
- }
789
- .item {
790
- position: relative;
791
- display: flex;
792
- width: 100%;
793
- cursor: default;
794
- user-select: none;
795
- align-items: center;
796
- gap: 0.5rem;
797
- border-radius: 0.375rem;
798
- padding: 0.375rem 0.5rem;
799
- font-size: 0.875rem;
800
- line-height: 1.25rem;
801
- outline: none;
802
- }
803
- .item[data-inset=true] {
804
- padding-left: 2rem;
805
- }
806
- .item[data-highlighted] {
807
- background: var(--ts-menu-hover-bg, var(--accent, rgba(255, 255, 255, 0.06)));
808
- color: var(--ts-menu-hover-fg, var(--accent-foreground, var(--foreground, #e2e8f0)));
809
- }
810
- .item[data-disabled] {
811
- pointer-events: none;
812
- opacity: 0.5;
813
- }
814
- .destructive {
815
- color: var(--ts-menu-danger, var(--destructive, #f87171));
816
- }
817
- .destructive[data-highlighted] {
818
- background: color-mix(in srgb, var(--destructive, #f87171) 15%, transparent);
819
- color: var(--ts-menu-danger-fg, var(--destructive, #f87171));
820
- }
821
- .insetItem {
822
- padding-left: 2rem;
823
- }
824
- .indicator {
825
- position: absolute;
826
- left: 0.5rem;
827
- display: inline-flex;
828
- width: 1rem;
829
- height: 1rem;
830
- align-items: center;
831
- justify-content: center;
832
- color: currentColor;
833
- }
834
- .indicatorIcon {
835
- display: block;
836
- }
837
- .radioDot {
838
- display: block;
839
- width: 0.5rem;
840
- height: 0.5rem;
841
- border-radius: 999px;
842
- background: currentColor;
843
- }
844
- .label {
845
- padding: 0.375rem 0.5rem;
846
- font-size: 0.875rem;
847
- font-weight: 600;
848
- line-height: 1.25rem;
849
- }
850
- .label[data-inset=true] {
851
- padding-left: 2rem;
852
- }
853
- .separator {
854
- height: 1px;
855
- margin: 0.25rem -0.25rem;
856
- background: var(--ts-menu-separator, var(--border, rgba(255, 255, 255, 0.12)));
857
- }
858
- .chevron {
859
- margin-left: auto;
860
- flex-shrink: 0;
861
- }
862
- @keyframes menuFadeIn {
863
- from {
864
- opacity: 0;
865
- transform: translateY(-4px) scale(0.98);
866
- }
867
- to {
868
- opacity: 1;
869
- transform: translateY(0) scale(1);
870
- }
871
- }
872
-
873
- /* src/components/theme-toggle-button/theme-toggle-button.module.css */
874
- .withLabel {
875
- padding-left: 12px;
876
- padding-right: 12px;
877
- }
878
-
879
- /* src/components/top-bar/top-bar.module.css */
880
- .topBar {
881
- position: sticky;
882
- top: 0;
883
- z-index: 30;
884
- border-bottom: 1px solid var(--ts-topbar-border, var(--border, rgba(15, 23, 42, 0.1)));
885
- background: var(--ts-topbar-bg, color-mix(in srgb, var(--background, #fff) 92%, transparent));
886
- box-shadow: var(--ts-topbar-shadow, 0 1px 2px rgba(15, 23, 42, 0.06));
887
- backdrop-filter: blur(12px);
888
- }
889
- .topBarStatic {
890
- position: relative;
891
- }
892
- .topBarInner {
893
- display: flex;
894
- align-items: center;
895
- justify-content: space-between;
896
- gap: 1rem;
897
- min-height: 4.25rem;
898
- padding: env(safe-area-inset-top) 1rem 0 1rem;
899
- }
900
- .topBarStart {
901
- display: flex;
902
- align-items: center;
903
- gap: 0.875rem;
904
- min-width: 0;
905
- flex: 1 1 auto;
906
- }
907
- .topBarBrand {
908
- display: inline-flex;
909
- align-items: center;
910
- gap: 0.625rem;
911
- min-width: 0;
912
- color: var(--ts-topbar-brand-fg, var(--foreground, var(--text, #0f172a)));
913
- text-decoration: none;
914
- }
915
- .topBarBrandContent {
916
- min-width: 0;
917
- overflow: hidden;
918
- text-overflow: ellipsis;
919
- white-space: nowrap;
920
- }
921
- .topBarCenter {
922
- display: flex;
923
- align-items: center;
924
- justify-content: center;
925
- flex: 0 1 auto;
926
- min-width: 0;
927
- }
928
- .topBarCenterGroup {
929
- display: inline-flex;
930
- align-items: center;
931
- gap: 1rem;
932
- min-width: 0;
933
- }
934
- .topBarActions {
935
- display: flex;
936
- align-items: center;
937
- justify-content: flex-end;
938
- gap: 0.75rem;
939
- min-width: 0;
940
- flex: 1 1 auto;
941
- }
942
- @media (max-width: 768px) {
943
- .topBarInner {
944
- min-height: 4rem;
945
- gap: 0.75rem;
946
- padding-left: max(0.75rem, env(safe-area-inset-left));
947
- padding-right: max(0.75rem, env(safe-area-inset-right));
948
- }
949
- .topBarStart {
950
- gap: 0.75rem;
951
- }
952
- .topBarActions {
953
- gap: 0.5rem;
954
- }
955
- }
956
-
957
- /* src/components/app-shell/app-shell.module.css */
958
- .appShell {
959
- display: grid;
960
- grid-template-rows: calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top)) 1fr;
961
- grid-template-columns: var(--app-shell-sidebar-width, 240px) 1fr;
962
- height: 100vh;
963
- height: 100dvh;
964
- }
965
- .appShellAnimated {
966
- transition: grid-template-columns 200ms ease;
967
- }
968
- .appShell.appShellOpen {
969
- grid-template-columns: var(--app-shell-sidebar-width, 240px) 1fr;
970
- }
971
- .appShell.appShellCollapsed {
972
- grid-template-columns: 0 1fr;
973
- }
974
- .appShellTopbar {
975
- --ts-topbar-bg: var(--surface-topbar, var(--surface-elevated, color-mix(in srgb, var(--background, #fff) 90%, transparent)));
976
- --ts-topbar-border: var(--border);
977
- --ts-topbar-brand-fg: var(--foreground, var(--text, #0f172a));
978
- grid-column: 1 / -1;
979
- min-height: calc(var(--app-shell-topbar-height, 64px) + env(safe-area-inset-top));
980
- padding-left: 0;
981
- padding-right: 0;
982
- box-shadow: none;
983
- }
984
- .appShellTopbarLeft {
985
- display: flex;
986
- align-items: center;
987
- gap: 12px;
988
- flex: 1;
989
- min-width: 0;
990
- }
991
- .appShellTopbarStart {
992
- flex: 1;
993
- min-width: 0;
994
- display: flex;
995
- align-items: center;
996
- }
997
- .appShellTopbarRight {
998
- display: flex;
999
- align-items: center;
1000
- gap: 8px;
1001
- min-width: 0;
1002
- flex-shrink: 0;
1003
- }
1004
- .appShellTopbarRight > * {
1005
- min-width: 0;
1006
- }
1007
- .appShellBrand {
1008
- font-size: 26px;
1009
- color: var(--text);
1010
- text-decoration: none;
1011
- display: flex;
1012
- align-items: center;
1013
- min-width: 0;
1014
- overflow: hidden;
1015
- text-overflow: ellipsis;
1016
- white-space: nowrap;
1017
- }
1018
- .appShellHamburger {
1019
- background: transparent;
1020
- border: none;
1021
- padding: 0;
1022
- width: 40px;
1023
- height: 40px;
1024
- border-radius: 8px;
1025
- display: inline-flex;
1026
- align-items: center;
1027
- justify-content: center;
1028
- color: var(--text);
1029
- cursor: pointer;
1030
- transition: background 120ms ease;
1031
- }
1032
- .appShellHamburger:hover {
1033
- background: var(--accent);
1034
- }
1035
- .appShellHamburger:focus-visible {
1036
- outline: var(--focus-ring);
1037
- outline-offset: var(--focus-ring-offset);
1038
- }
1039
- .appShellHamburger svg {
1040
- width: 28px;
1041
- height: 28px;
1042
- }
1043
- .appShellSidebar {
1044
- border-right: 1px solid var(--border);
1045
- background: var(--panel, var(--card, #111827));
1046
- padding: 24px;
1047
- overflow-y: auto;
1048
- }
1049
- .appShellAnimated .appShellSidebar {
1050
- transition: transform 200ms ease, opacity 200ms ease;
1051
- }
1052
- .appShell.appShellCollapsed .appShellSidebar {
1053
- transform: translateX(-110%);
1054
- opacity: 0;
1055
- pointer-events: none;
1056
- }
1057
- .appShellMain {
1058
- overflow-y: auto;
1059
- min-height: 0;
1060
- flex: 1 1 0;
1061
- }
1062
- .appShellBackdrop {
1063
- display: none;
1064
- }
1065
- @media (max-width: 960px) {
1066
- .appShellBackdrop {
1067
- display: block;
1068
- position: fixed;
1069
- inset: 0;
1070
- top: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));
1071
- background: rgba(0, 0, 0, 0.5);
1072
- z-index: 14;
1073
- }
1074
- .appShell {
1075
- --app-shell-topbar-height: 56px;
1076
- grid-template-columns: 1fr;
1077
- grid-template-rows: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top)) 1fr;
1078
- }
1079
- .appShell.appShellOpen,
1080
- .appShell.appShellCollapsed {
1081
- grid-template-columns: 1fr;
1082
- }
1083
- .appShellSidebar {
1084
- display: block;
1085
- position: fixed;
1086
- top: calc(var(--app-shell-topbar-height, 56px) + env(safe-area-inset-top));
1087
- left: 0;
1088
- bottom: 0;
1089
- width: var(--app-shell-sidebar-width, 240px);
1090
- max-width: 80vw;
1091
- background: var(--panel, var(--card, #111827));
1092
- padding: 16px 12px;
1093
- transform: translateX(-105%);
1094
- z-index: 15;
1095
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.35);
1096
- }
1097
- .appShellSidebar.appShellSidebarOpen {
1098
- transform: translateX(0);
1099
- }
1100
- .appShellTopbar {
1101
- padding-left: max(12px, env(safe-area-inset-left));
1102
- padding-right: max(12px, env(safe-area-inset-right));
1103
- gap: 10px;
1104
- }
1105
- .appShellTopbarLeft {
1106
- gap: 10px;
1107
- flex: 1;
1108
- }
1109
- .appShellTopbarStart {
1110
- min-width: 0;
1111
- }
1112
- .appShellTopbarRight {
1113
- gap: 6px;
1114
- }
1115
- .appShellBrand {
1116
- font-size: 24px;
1117
- max-width: 50vw;
1118
- }
1119
- .appShellHamburger {
1120
- width: 40px;
1121
- height: 40px;
1122
- border-radius: 8px;
1123
- }
1124
- .appShellHamburger svg {
1125
- width: 24px;
1126
- height: 24px;
1127
- }
1128
- }
1129
- @media (max-width: 640px) {
1130
- .appShellTopbar {
1131
- gap: 8px;
1132
- }
1133
- .appShellBrand {
1134
- font-size: 22px;
1135
- max-width: 34vw;
1136
- }
1137
- .appShellTopbarRight {
1138
- max-width: 44vw;
1139
- }
1140
- }
1141
- @media (max-width: 480px) {
1142
- .appShellBrand {
1143
- font-size: 20px;
1144
- max-width: 30vw;
1145
- }
1146
- }
1147
-
1148
- /* src/components/sidebar-nav/sidebar-nav.module.css */
1149
- .uziSidebarNav {
1150
- --sidebar-nav-icon-size: 18px;
1151
- --sidebar-nav-icon-size-mobile: 16px;
1152
- display: flex;
1153
- flex-direction: column;
1154
- gap: 12px;
1155
- align-items: stretch;
1156
- min-height: 0;
1157
- }
1158
- .uziSidebarNavCollapsed {
1159
- gap: 10px;
1160
- }
1161
- .uziSidebarNavHeader,
1162
- .uziSidebarNavFooter {
1163
- display: flex;
1164
- flex-direction: column;
1165
- gap: 8px;
1166
- }
1167
- .uziSidebarNavFooter {
1168
- margin-top: auto;
1169
- padding-top: 12px;
1170
- border-top: 1px solid var(--border, #1f2937);
1171
- }
1172
- .uziSidebarNavSections {
1173
- display: flex;
1174
- flex: 1 1 auto;
1175
- flex-direction: column;
1176
- gap: 14px;
1177
- }
1178
- .uziSidebarNavSection {
1179
- display: flex;
1180
- flex-direction: column;
1181
- gap: 8px;
1182
- }
1183
- .uziSidebarNavSectionItems {
1184
- display: flex;
1185
- flex-direction: column;
1186
- gap: 8px;
1187
- }
1188
- .uziSidebarNavSectionLabel {
1189
- padding: 0 10px;
1190
- font-size: 11px;
1191
- font-weight: 700;
1192
- letter-spacing: 0.08em;
1193
- text-transform: uppercase;
1194
- color: var(--muted-foreground, #94a3b8);
1195
- opacity: 0.75;
1196
- }
1197
- .uziSidebarNavItem {
1198
- color: var(--foreground, #e2e8f0);
1199
- background: transparent;
1200
- border: none;
1201
- box-shadow: none;
1202
- padding: 10px 12px 10px 10px;
1203
- border-radius: 10px;
1204
- text-decoration: none;
1205
- font-size: 14px;
1206
- display: grid;
1207
- grid-template-columns: var(--sidebar-nav-icon-size) minmax(0, 1fr);
1208
- align-items: center;
1209
- column-gap: 10px;
1210
- width: 100%;
1211
- text-align: left;
1212
- box-sizing: border-box;
1213
- line-height: 1.2;
1214
- transition: background 120ms ease, color 120ms ease;
1215
- }
1216
- button.uziSidebarNavItem {
1217
- font-family: inherit;
1218
- cursor: pointer;
1219
- }
1220
- .uziSidebarNavItem:focus-visible {
1221
- outline: var(--focus-ring);
1222
- outline-offset: var(--focus-ring-offset);
1223
- }
1224
- .uziSidebarNavItem:hover {
1225
- background: color-mix(in srgb, var(--primary, #22d3ee) 10%, transparent);
1226
- }
1227
- .uziSidebarNavItem.uziSidebarNavItemActive {
1228
- background: color-mix(in srgb, var(--primary, #22d3ee) 18%, transparent);
1229
- color: var(--foreground, #e2e8f0);
1230
- font-weight: 700;
1231
- }
1232
- .uziSidebarNavItemCollapsed {
1233
- grid-template-columns: 1fr;
1234
- justify-items: center;
1235
- padding-right: 10px;
1236
- padding-left: 10px;
1237
- }
1238
- .uziSidebarNavItemDisabled {
1239
- opacity: 0.5;
1240
- cursor: not-allowed;
1241
- }
1242
- .uziSidebarNavIcon {
1243
- width: var(--sidebar-nav-icon-size);
1244
- height: var(--sidebar-nav-icon-size);
1245
- min-width: var(--sidebar-nav-icon-size);
1246
- color: var(--muted-foreground, #94a3b8);
1247
- display: inline-flex;
1248
- align-items: center;
1249
- justify-content: center;
1250
- vertical-align: middle;
1251
- }
1252
- .uziSidebarNavIcon > * {
1253
- width: 100% !important;
1254
- height: 100% !important;
1255
- max-width: 100%;
1256
- max-height: 100%;
1257
- }
1258
- .uziSidebarNavIcon :where(svg) {
1259
- width: 100%;
1260
- height: 100%;
1261
- display: block;
1262
- stroke: currentColor;
1263
- }
1264
- .uziSidebarNavItem.uziSidebarNavItemActive .uziSidebarNavIcon {
1265
- color: var(--primary, #22d3ee);
1266
- }
1267
- .uziSidebarNavItemBody {
1268
- display: flex;
1269
- min-width: 0;
1270
- flex: 1 1 auto;
1271
- flex-direction: column;
1272
- gap: 3px;
1273
- overflow: hidden;
1274
- }
1275
- .uziSidebarNavLabelRow {
1276
- display: flex;
1277
- min-width: 0;
1278
- align-items: center;
1279
- gap: 8px;
1280
- }
1281
- .uziSidebarNavLabel {
1282
- flex: 1;
1283
- min-width: 0;
1284
- overflow: hidden;
1285
- text-overflow: ellipsis;
1286
- white-space: nowrap;
1287
- }
1288
- .uziSidebarNavDescription {
1289
- color: var(--muted-foreground, #94a3b8);
1290
- font-size: 12px;
1291
- line-height: 1.35;
1292
- }
1293
- .uziSidebarNavBadge {
1294
- display: inline-flex;
1295
- align-items: center;
1296
- justify-content: center;
1297
- gap: 6px;
1298
- padding: 4px 8px;
1299
- border-radius: 999px;
1300
- border: 1px solid var(--border, #1f2937);
1301
- background: rgba(255, 255, 255, 0.04);
1302
- color: var(--muted-foreground, #94a3b8);
1303
- font-size: 11px;
1304
- letter-spacing: 0.04em;
1305
- text-transform: uppercase;
1306
- }
1307
- @media (max-width: 960px) {
1308
- .uziSidebarNav {
1309
- gap: 10px;
1310
- }
1311
- .uziSidebarNavSections {
1312
- gap: 12px;
1313
- }
1314
- .uziSidebarNavSectionItems {
1315
- gap: 6px;
1316
- }
1317
- .uziSidebarNavItem {
1318
- padding: 9px 10px 9px 8px;
1319
- border-radius: 9px;
1320
- font-size: 14px;
1321
- grid-template-columns: var(--sidebar-nav-icon-size-mobile) minmax(0, 1fr);
1322
- column-gap: 8px;
1323
- }
1324
- .uziSidebarNavIcon {
1325
- width: var(--sidebar-nav-icon-size-mobile);
1326
- height: var(--sidebar-nav-icon-size-mobile);
1327
- min-width: var(--sidebar-nav-icon-size-mobile);
1328
- }
1329
- .uziSidebarNavIcon :where(svg) {
1330
- width: var(--sidebar-nav-icon-size-mobile);
1331
- height: var(--sidebar-nav-icon-size-mobile);
1332
- }
1333
- .uziSidebarNavDescription {
1334
- font-size: 11px;
1335
- }
1336
- }
1337
- @media (max-width: 480px) {
1338
- .uziSidebarNavItem {
1339
- padding: 8px 9px 8px 7px;
1340
- font-size: 13px;
1341
- }
1342
- }
1343
-
1344
- /* src/components/skeleton/skeleton.module.css */
1345
- .skeleton {
1346
- background: color-mix(in srgb, var(--muted-foreground, #94a3b8) 14%, var(--background, #0f172a));
1347
- animation: skeleton-pulse 1.6s ease-in-out infinite;
1348
- }
1349
- @keyframes skeleton-pulse {
1350
- 0%, 100% {
1351
- opacity: 1;
1352
- }
1353
- 50% {
1354
- opacity: 0.45;
1355
- }
1356
- }
1357
- .radius-sm {
1358
- border-radius: 4px;
1359
- }
1360
- .radius-md {
1361
- border-radius: 8px;
1362
- }
1363
- .radius-lg {
1364
- border-radius: 12px;
1365
- }
1366
- .radius-full {
1367
- border-radius: 9999px;
1368
- }
1369
-
1370
- /* src/components/progress/progress.module.css */
1371
- .track {
1372
- height: 8px;
1373
- border-radius: 9999px;
1374
- overflow: hidden;
1375
- background: color-mix(in srgb, var(--border, #1f2937) 60%, transparent);
1376
- }
1377
- .fill {
1378
- height: 100%;
1379
- border-radius: 9999px;
1380
- transition: width 0.4s ease;
1381
- }
1382
- .tone-default {
1383
- background: var(--foreground, #e2e8f0);
1384
- }
1385
- .tone-success {
1386
- background: var(--success, hsl(142 71% 45%));
1387
- }
1388
- .tone-warning {
1389
- background: var(--warning, hsl(38 92% 50%));
1390
- }
1391
- .tone-danger {
1392
- background: var(--destructive, #f87171);
1393
- }
1394
-
1395
- /* src/components/select/select.module.css */
1396
- .select {
1397
- display: flex;
1398
- width: 100%;
1399
- min-height: 2.25rem;
1400
- border-radius: 0.5rem;
1401
- border: 1px solid var(--ts-input-border, var(--input, var(--border, #1f2937)));
1402
- background: var(--ts-input-bg, var(--background, #fff));
1403
- color: var(--ts-input-fg, var(--foreground, var(--text, #e2e8f0)));
1404
- padding: 0.25rem 2rem 0.25rem 0.75rem;
1405
- font-size: 0.875rem;
1406
- line-height: 1.25rem;
1407
- font-family: inherit;
1408
- box-shadow: var(--ts-input-shadow, 0 1px 2px rgba(0, 0, 0, 0.04));
1409
- transition: border-color 0.15s ease, background 0.15s ease;
1410
- appearance: none;
1411
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M2 3.5L5 6.5L8 3.5' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
1412
- background-repeat: no-repeat;
1413
- background-position: right 0.625rem center;
1414
- cursor: pointer;
1415
- }
1416
- .select:focus-visible {
1417
- outline: var(--focus-ring);
1418
- outline-offset: var(--focus-ring-offset);
1419
- }
1420
- .select:disabled {
1421
- cursor: not-allowed;
1422
- opacity: 0.5;
1423
- }
1424
- .select option {
1425
- background: var(--background, #0f172a);
1426
- color: var(--foreground, #e2e8f0);
1427
- }
1428
- /*# sourceMappingURL=index.css.map */