@nar-bus/lena-ui-shared 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/theme.css ADDED
@@ -0,0 +1,464 @@
1
+ @custom-variant dark (&:is(.dark *));
2
+
3
+ /* =============================================================================
4
+ LENA UI - Slate Blue Professional Theme
5
+ ============================================================================= */
6
+
7
+ /* =============================================================================
8
+ LIGHT MODE
9
+ ============================================================================= */
10
+ :root {
11
+ --radius: 0.625rem;
12
+
13
+ /* Custom Font Sizes - Small Scale for Data-Dense UI */
14
+ --text-2xs: 0.625rem; /* 10px */
15
+
16
+ /* Filter System Sizing */
17
+ --filter-width-xs: 4.375rem; /* 70px - boolean/short */
18
+ --filter-width-sm: 5rem; /* 80px - number inputs */
19
+ --filter-width-md: 6.25rem; /* 100px - operators */
20
+ --filter-width-lg: 7.5rem; /* 120px - text/date inputs, field select */
21
+ --filter-width-xl: 8.125rem; /* 130px - long enums */
22
+
23
+ /* Sidebar Layout */
24
+ --sidebar-icon-size: 1.125rem; /* 18px */
25
+ --sidebar-indent-step: 0.75rem; /* 12px per depth level */
26
+ --sidebar-toggle-offset: 3.25rem; /* 52px from top */
27
+
28
+ /* Component Sizing */
29
+ --property-label-max-width: 11.25rem; /* 180px */
30
+ --tree-indent-step: 1rem; /* 16px per depth level */
31
+ --dropdown-menu-width-sm: 7.5rem; /* 120px */
32
+ --dropdown-menu-width-md: 10rem; /* 160px */
33
+
34
+ /* Surfaces */
35
+ --background: oklch(0.984 0.003 265);
36
+ --foreground: oklch(0.129 0.042 265);
37
+ --card: oklch(1 0 0);
38
+ --card-foreground: oklch(0.129 0.042 265);
39
+ --popover: oklch(1 0 0);
40
+ --popover-foreground: oklch(0.129 0.042 265);
41
+
42
+ /* Primary */
43
+ --primary: oklch(0.208 0.042 265);
44
+ --primary-foreground: oklch(0.984 0.003 265);
45
+
46
+ /* Secondary & Muted */
47
+ --secondary: oklch(0.968 0.007 265);
48
+ --secondary-foreground: oklch(0.208 0.042 265);
49
+ --muted: oklch(0.968 0.007 265);
50
+ --muted-foreground: oklch(0.554 0.046 257);
51
+
52
+ /* Accent */
53
+ --accent: oklch(0.968 0.007 265);
54
+ --accent-foreground: oklch(0.208 0.042 265);
55
+
56
+ /* Destructive */
57
+ --destructive: oklch(0.577 0.245 27);
58
+ --destructive-foreground: oklch(0.985 0 0);
59
+
60
+ /* Borders & Inputs */
61
+ --border: oklch(0.929 0.013 265);
62
+ --input: oklch(0.929 0.013 265);
63
+ --ring: oklch(0.554 0.046 257);
64
+
65
+ /* Overlay */
66
+ --overlay: oklch(0 0 0 / 0.5);
67
+
68
+ /* Sidebar - Deep Navy Blue */
69
+ --sidebar: oklch(0.16 0.05 245);
70
+ --sidebar-foreground: oklch(0.82 0.02 245);
71
+ --sidebar-primary: oklch(0.92 0.02 245);
72
+ --sidebar-primary-foreground: oklch(0.98 0.01 245);
73
+ --sidebar-accent: oklch(0.22 0.06 245);
74
+ --sidebar-accent-foreground: oklch(0.92 0.02 245);
75
+ --sidebar-border: oklch(0.24 0.05 245);
76
+ --sidebar-ring: oklch(0.85 0.02 245);
77
+
78
+ /* Status */
79
+ --status-online: oklch(0.627 0.194 149);
80
+ --status-offline: oklch(0.554 0.046 257);
81
+ --status-warning: oklch(0.769 0.188 70);
82
+ --status-error: oklch(0.577 0.245 27);
83
+
84
+ /* Accent Colors */
85
+ --accent-cyan: oklch(0.25 0.25 220);
86
+ --accent-violet: oklch(0.541 0.281 293);
87
+
88
+ /* Semantic Status (extended) */
89
+ --status-success: oklch(0.548 0.205 152);
90
+ --status-success-foreground: oklch(0.432 0.17 153);
91
+ --status-info: oklch(0.623 0.214 259);
92
+ --status-info-foreground: oklch(0.546 0.215 262);
93
+ --status-neutral: oklch(0.554 0.046 257);
94
+ --status-neutral-foreground: oklch(0.446 0.043 257.3);
95
+ --status-purple: oklch(0.627 0.265 303);
96
+ --status-purple-foreground: oklch(0.558 0.288 302);
97
+
98
+ /* Surface Backgrounds (for containers, cards, banners) */
99
+ --surface-success: oklch(0.95 0.05 152);
100
+ --surface-success-foreground: oklch(0.432 0.17 153);
101
+ --surface-warning: oklch(0.95 0.06 85);
102
+ --surface-warning-foreground: oklch(0.55 0.18 70);
103
+ --surface-error: oklch(0.95 0.04 25);
104
+ --surface-error-foreground: oklch(0.50 0.21 27);
105
+ --surface-info: oklch(0.95 0.04 255);
106
+ --surface-info-foreground: oklch(0.546 0.215 262);
107
+ --surface-purple: oklch(0.95 0.04 295);
108
+ --surface-purple-foreground: oklch(0.558 0.288 302);
109
+
110
+ /* Syntax Highlighting */
111
+ --syntax-string: oklch(0.548 0.205 152);
112
+ --syntax-boolean: oklch(0.702 0.183 56);
113
+ --syntax-number: var(--accent-cyan);
114
+ --syntax-key: var(--accent-violet);
115
+ --syntax-null: var(--muted-foreground);
116
+
117
+ /* Feedback */
118
+ --feedback-success: oklch(0.548 0.205 152);
119
+ --feedback-warning: oklch(0.769 0.188 70);
120
+ --feedback-error: oklch(0.577 0.245 27);
121
+
122
+ /* Sidebar Theming */
123
+ --sidebar-active-gradient: linear-gradient(90deg, oklch(0.92 0.015 250 / 0.15) 0%, transparent 100%);
124
+ --sidebar-indicator-gradient: linear-gradient(180deg, oklch(0.92 0.015 250) 0%, oklch(0.80 0.02 250) 100%);
125
+ --sidebar-indicator-glow: 0 0 8px oklch(0.92 0.015 250 / 0.5);
126
+ --sidebar-logo-gradient: linear-gradient(135deg, oklch(0.92 0.015 250) 0%, oklch(0.80 0.02 250) 100%);
127
+ --sidebar-logo-shadow: 0 2px 8px oklch(0.92 0.015 250 / 0.3);
128
+ --sidebar-overlay-gradient: linear-gradient(180deg, oklch(0.18 0.04 250) 0%, transparent 20%, transparent 80%, oklch(0.12 0.04 250) 100%);
129
+ --sidebar-inset-shadow: inset -1px 0 0 0 oklch(0.25 0.04 250 / 0.5);
130
+
131
+ /* Charts */
132
+ --chart-1: oklch(0.40 0.20 245);
133
+ --chart-2: oklch(0.627 0.194 149);
134
+ --chart-3: oklch(0.769 0.188 70);
135
+ --chart-4: oklch(0.554 0.046 257);
136
+ --chart-5: oklch(0.606 0.25 292);
137
+
138
+ /* Table Rows */
139
+ --table-row-even: oklch(0.984 0.003 265);
140
+ --table-row-hover: oklch(0.968 0.007 265);
141
+ --table-row-selected: oklch(0.929 0.013 265);
142
+ }
143
+
144
+ /* =============================================================================
145
+ DARK MODE
146
+ ============================================================================= */
147
+ .dark {
148
+ /* Surfaces - Neutral Zinc */
149
+ --background: oklch(0.145 0.000 0);
150
+ --foreground: oklch(0.985 0.000 0);
151
+ --card: oklch(0.180 0.000 0);
152
+ --card-foreground: oklch(0.985 0.000 0);
153
+ --popover: oklch(0.205 0.000 0);
154
+ --popover-foreground: oklch(0.985 0.000 0);
155
+
156
+ /* Primary */
157
+ --primary: oklch(0.985 0.000 0);
158
+ --primary-foreground: oklch(0.205 0.000 0);
159
+
160
+ /* Secondary & Muted - Neutral */
161
+ --secondary: oklch(0.270 0.000 0);
162
+ --secondary-foreground: oklch(0.985 0.000 0);
163
+ --muted: oklch(0.270 0.000 0);
164
+ --muted-foreground: oklch(0.710 0.000 0);
165
+
166
+ /* Accent - Neutral */
167
+ --accent: oklch(0.270 0.000 0);
168
+ --accent-foreground: oklch(0.985 0.000 0);
169
+
170
+ /* Destructive */
171
+ --destructive: oklch(0.577 0.245 27);
172
+ --destructive-foreground: oklch(0.985 0 0);
173
+
174
+ /* Borders & Inputs - Neutral */
175
+ --border: oklch(0.270 0.000 0);
176
+ --input: oklch(0.270 0.000 0);
177
+ --ring: oklch(0.520 0.000 0);
178
+
179
+ /* Overlay */
180
+ --overlay: oklch(0 0 0 / 0.5);
181
+
182
+ /* Sidebar - Neutral */
183
+ --sidebar: oklch(0.160 0.000 0);
184
+ --sidebar-foreground: oklch(0.820 0.000 0);
185
+ --sidebar-primary: oklch(0.920 0.000 0);
186
+ --sidebar-primary-foreground: oklch(0.980 0.000 0);
187
+ --sidebar-accent: oklch(0.220 0.000 0);
188
+ --sidebar-accent-foreground: oklch(0.920 0.000 0);
189
+ --sidebar-border: oklch(0.240 0.000 0);
190
+ --sidebar-ring: oklch(0.850 0.000 0);
191
+
192
+ /* Status */
193
+ --status-online: oklch(0.723 0.15 149);
194
+ --status-offline: oklch(0.554 0.046 257);
195
+ --status-warning: oklch(0.828 0.15 84);
196
+ --status-error: oklch(0.637 0.20 25);
197
+
198
+ /* Accent Colors */
199
+ --accent-cyan: oklch(0.750 0.000 0);
200
+ --accent-violet: oklch(0.650 0.000 0);
201
+
202
+ /* Semantic Status (extended) */
203
+ --status-success: oklch(0.723 0.15 149);
204
+ --status-success-foreground: oklch(0.723 0.15 149);
205
+ --status-info: oklch(0.707 0.165 254);
206
+ --status-info-foreground: oklch(0.707 0.165 254);
207
+ --status-neutral: oklch(0.704 0.04 256);
208
+ --status-neutral-foreground: oklch(0.704 0.04 256);
209
+ --status-purple: oklch(0.702 0.18 292);
210
+ --status-purple-foreground: oklch(0.702 0.18 292);
211
+
212
+ /* Surface Backgrounds */
213
+ --surface-success: oklch(0.25 0.06 152 / 0.3);
214
+ --surface-success-foreground: oklch(0.75 0.12 149);
215
+ --surface-warning: oklch(0.28 0.06 85 / 0.3);
216
+ --surface-warning-foreground: oklch(0.80 0.12 84);
217
+ --surface-error: oklch(0.25 0.06 25 / 0.3);
218
+ --surface-error-foreground: oklch(0.72 0.15 25);
219
+ --surface-info: oklch(0.25 0.06 255 / 0.3);
220
+ --surface-info-foreground: oklch(0.75 0.12 254);
221
+ --surface-purple: oklch(0.25 0.06 295 / 0.3);
222
+ --surface-purple-foreground: oklch(0.75 0.12 292);
223
+
224
+ /* Syntax Highlighting */
225
+ --syntax-string: oklch(0.723 0.15 149);
226
+ --syntax-boolean: oklch(0.792 0.16 56);
227
+ --syntax-number: var(--accent-cyan);
228
+ --syntax-key: var(--accent-violet);
229
+ --syntax-null: var(--muted-foreground);
230
+
231
+ /* Feedback */
232
+ --feedback-success: oklch(0.723 0.15 149);
233
+ --feedback-warning: oklch(0.828 0.15 84);
234
+ --feedback-error: oklch(0.637 0.20 25);
235
+
236
+ /* Sidebar Theming */
237
+ --sidebar-active-gradient: linear-gradient(90deg, oklch(0.92 0.000 0 / 0.10) 0%, transparent 100%);
238
+ --sidebar-indicator-gradient: linear-gradient(180deg, oklch(0.75 0.000 0) 0%, oklch(0.60 0.000 0) 100%);
239
+ --sidebar-indicator-glow: 0 0 8px oklch(0.75 0.000 0 / 0.4);
240
+ --sidebar-logo-gradient: linear-gradient(135deg, oklch(0.75 0.000 0) 0%, oklch(0.55 0.000 0) 100%);
241
+ --sidebar-logo-shadow: 0 2px 8px oklch(0.75 0.000 0 / 0.2);
242
+ --sidebar-overlay-gradient: linear-gradient(180deg, oklch(0.18 0.000 0) 0%, transparent 20%, transparent 80%, oklch(0.12 0.000 0) 100%);
243
+ --sidebar-inset-shadow: inset -1px 0 0 0 oklch(0.25 0.000 0 / 0.5);
244
+
245
+ /* Charts */
246
+ --chart-1: oklch(0.55 0.18 245);
247
+ --chart-2: oklch(0.723 0.15 149);
248
+ --chart-3: oklch(0.828 0.15 84);
249
+ --chart-4: oklch(0.704 0.04 256);
250
+ --chart-5: oklch(0.702 0.18 292);
251
+
252
+ /* Table Rows - Neutral */
253
+ --table-row-even: oklch(0.160 0.000 0);
254
+ --table-row-hover: oklch(0.220 0.000 0);
255
+ --table-row-selected: oklch(0.270 0.000 0);
256
+ }
257
+
258
+ /* =============================================================================
259
+ TAILWIND THEME MAPPING
260
+ ============================================================================= */
261
+ @theme inline {
262
+ --text-2xs: 0.625rem;
263
+ --text-2xs--line-height: 0.875rem;
264
+
265
+ /* Filter System Widths */
266
+ --spacing-filter-xs: var(--filter-width-xs);
267
+ --spacing-filter-sm: var(--filter-width-sm);
268
+ --spacing-filter-md: var(--filter-width-md);
269
+ --spacing-filter-lg: var(--filter-width-lg);
270
+ --spacing-filter-xl: var(--filter-width-xl);
271
+
272
+ /* Sidebar Layout */
273
+ --spacing-sidebar-icon: var(--sidebar-icon-size);
274
+ --spacing-sidebar-indent: var(--sidebar-indent-step);
275
+
276
+ /* Component Sizing */
277
+ --spacing-property-label: var(--property-label-max-width);
278
+ --spacing-tree-indent: var(--tree-indent-step);
279
+ --spacing-dropdown-sm: var(--dropdown-menu-width-sm);
280
+ --spacing-dropdown-md: var(--dropdown-menu-width-md);
281
+
282
+ --radius-sm: calc(var(--radius) - 4px);
283
+ --radius-md: calc(var(--radius) - 2px);
284
+ --radius-lg: var(--radius);
285
+ --radius-xl: calc(var(--radius) + 4px);
286
+ --radius-2xl: calc(var(--radius) + 8px);
287
+
288
+ --color-overlay: var(--overlay);
289
+ --color-background: var(--background);
290
+ --color-foreground: var(--foreground);
291
+ --color-card: var(--card);
292
+ --color-card-foreground: var(--card-foreground);
293
+ --color-popover: var(--popover);
294
+ --color-popover-foreground: var(--popover-foreground);
295
+ --color-primary: var(--primary);
296
+ --color-primary-foreground: var(--primary-foreground);
297
+ --color-secondary: var(--secondary);
298
+ --color-secondary-foreground: var(--secondary-foreground);
299
+ --color-muted: var(--muted);
300
+ --color-muted-foreground: var(--muted-foreground);
301
+ --color-accent: var(--accent);
302
+ --color-accent-foreground: var(--accent-foreground);
303
+ --color-destructive: var(--destructive);
304
+ --color-destructive-foreground: var(--destructive-foreground);
305
+ --color-border: var(--border);
306
+ --color-input: var(--input);
307
+ --color-ring: var(--ring);
308
+
309
+ --color-sidebar: var(--sidebar);
310
+ --color-sidebar-foreground: var(--sidebar-foreground);
311
+ --color-sidebar-primary: var(--sidebar-primary);
312
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
313
+ --color-sidebar-accent: var(--sidebar-accent);
314
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
315
+ --color-sidebar-border: var(--sidebar-border);
316
+ --color-sidebar-ring: var(--sidebar-ring);
317
+
318
+ --color-status-online: var(--status-online);
319
+ --color-status-offline: var(--status-offline);
320
+ --color-status-warning: var(--status-warning);
321
+ --color-status-error: var(--status-error);
322
+
323
+ --color-accent-cyan: var(--accent-cyan);
324
+ --color-accent-violet: var(--accent-violet);
325
+
326
+ --color-status-success: var(--status-success);
327
+ --color-status-success-foreground: var(--status-success-foreground);
328
+ --color-status-info: var(--status-info);
329
+ --color-status-info-foreground: var(--status-info-foreground);
330
+ --color-status-neutral: var(--status-neutral);
331
+ --color-status-neutral-foreground: var(--status-neutral-foreground);
332
+ --color-status-purple: var(--status-purple);
333
+ --color-status-purple-foreground: var(--status-purple-foreground);
334
+
335
+ --color-surface-success: var(--surface-success);
336
+ --color-surface-success-foreground: var(--surface-success-foreground);
337
+ --color-surface-warning: var(--surface-warning);
338
+ --color-surface-warning-foreground: var(--surface-warning-foreground);
339
+ --color-surface-error: var(--surface-error);
340
+ --color-surface-error-foreground: var(--surface-error-foreground);
341
+ --color-surface-info: var(--surface-info);
342
+ --color-surface-info-foreground: var(--surface-info-foreground);
343
+ --color-surface-purple: var(--surface-purple);
344
+ --color-surface-purple-foreground: var(--surface-purple-foreground);
345
+
346
+ --color-syntax-string: var(--syntax-string);
347
+ --color-syntax-boolean: var(--syntax-boolean);
348
+ --color-syntax-number: var(--syntax-number);
349
+ --color-syntax-key: var(--syntax-key);
350
+ --color-syntax-null: var(--syntax-null);
351
+
352
+ --color-feedback-success: var(--feedback-success);
353
+ --color-feedback-warning: var(--feedback-warning);
354
+ --color-feedback-error: var(--feedback-error);
355
+
356
+ --color-chart-1: var(--chart-1);
357
+ --color-chart-2: var(--chart-2);
358
+ --color-chart-3: var(--chart-3);
359
+ --color-chart-4: var(--chart-4);
360
+ --color-chart-5: var(--chart-5);
361
+
362
+ --color-table-row-even: var(--table-row-even);
363
+ --color-table-row-hover: var(--table-row-hover);
364
+ --color-table-row-selected: var(--table-row-selected);
365
+ }
366
+
367
+ /* =============================================================================
368
+ BASE STYLES
369
+ ============================================================================= */
370
+ @layer base {
371
+ * {
372
+ @apply border-border;
373
+ font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
374
+ }
375
+
376
+ body {
377
+ @apply bg-background text-foreground antialiased;
378
+ font-feature-settings: "rlig" 1, "calt" 1;
379
+ }
380
+
381
+ h1, h2, h3, h4, h5, h6 {
382
+ @apply font-semibold tracking-tight;
383
+ }
384
+
385
+ ::-webkit-scrollbar {
386
+ @apply w-1.5 h-1.5;
387
+ }
388
+
389
+ ::-webkit-scrollbar-track {
390
+ @apply bg-transparent;
391
+ }
392
+
393
+ ::-webkit-scrollbar-thumb {
394
+ @apply bg-border rounded-full;
395
+ }
396
+
397
+ ::-webkit-scrollbar-thumb:hover {
398
+ @apply bg-muted-foreground;
399
+ }
400
+ }
401
+
402
+ /* =============================================================================
403
+ DATA TABLE ROW STATES
404
+ ============================================================================= */
405
+ .data-table-row:nth-child(even) {
406
+ background-color: var(--table-row-even);
407
+ }
408
+
409
+ .data-table-row:hover {
410
+ background-color: var(--table-row-hover);
411
+ }
412
+
413
+ .data-table-row[data-state="selected"] {
414
+ background-color: var(--table-row-selected);
415
+ }
416
+
417
+ .data-table-row {
418
+ @apply transition-colors duration-150;
419
+ }
420
+
421
+ /* =============================================================================
422
+ UTILITY CLASSES
423
+ ============================================================================= */
424
+ .scrollbar-none {
425
+ -ms-overflow-style: none;
426
+ scrollbar-width: none;
427
+ }
428
+
429
+ .scrollbar-none::-webkit-scrollbar {
430
+ display: none;
431
+ }
432
+
433
+ /* =============================================================================
434
+ TAB PANEL ANIMATIONS
435
+ ============================================================================= */
436
+ @keyframes tab-fade-in {
437
+ from { opacity: 0; }
438
+ to { opacity: 1; }
439
+ }
440
+
441
+ @keyframes tab-slide-in-from-right {
442
+ from { opacity: 0; transform: translateX(8px); }
443
+ to { opacity: 1; transform: translateX(0); }
444
+ }
445
+
446
+ @keyframes tab-slide-in-from-left {
447
+ from { opacity: 0; transform: translateX(-8px); }
448
+ to { opacity: 1; transform: translateX(0); }
449
+ }
450
+
451
+ .tab-panel-enter {
452
+ animation: tab-fade-in 200ms ease-out;
453
+ }
454
+
455
+ .tab-panel-enter[data-tab-direction="1"] {
456
+ animation: tab-slide-in-from-right 200ms ease-out;
457
+ }
458
+
459
+ .tab-panel-enter[data-tab-direction="-1"] {
460
+ animation: tab-slide-in-from-left 200ms ease-out;
461
+ }
462
+
463
+ /* Scan package dist for Tailwind class detection */
464
+ @source "..";
package/package.json ADDED
@@ -0,0 +1,106 @@
1
+ {
2
+ "name": "@nar-bus/lena-ui-shared",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ },
12
+ "./theme.css": "./dist/theme.css"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "publishConfig": {
18
+ "access": "public",
19
+ "registry": "https://registry.npmjs.org/"
20
+ },
21
+ "peerDependencies": {
22
+ "@tanstack/react-query": "^5.0.0",
23
+ "@tanstack/react-router": "^1.0.0",
24
+ "@tanstack/react-table": "^8.0.0",
25
+ "react": "^19.0.0",
26
+ "react-dom": "^19.0.0",
27
+ "react-hook-form": "^7.0.0",
28
+ "tailwindcss": "^4.0.0",
29
+ "zod": "^4.0.0",
30
+ "zustand": "^5.0.0"
31
+ },
32
+ "peerDependenciesMeta": {
33
+ "react-hook-form": {
34
+ "optional": true
35
+ },
36
+ "zod": {
37
+ "optional": true
38
+ },
39
+ "@tanstack/react-table": {
40
+ "optional": true
41
+ }
42
+ },
43
+ "dependencies": {
44
+ "@hookform/resolvers": "^5.2.2",
45
+ "@radix-ui/react-accordion": "^1.2.12",
46
+ "@radix-ui/react-alert-dialog": "^1.1.15",
47
+ "@radix-ui/react-avatar": "^1.1.11",
48
+ "@radix-ui/react-checkbox": "^1.3.3",
49
+ "@radix-ui/react-collapsible": "^1.1.12",
50
+ "@radix-ui/react-context-menu": "^2.2.16",
51
+ "@radix-ui/react-dialog": "^1.1.15",
52
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
53
+ "@radix-ui/react-label": "^2.1.8",
54
+ "@radix-ui/react-popover": "^1.1.15",
55
+ "@radix-ui/react-progress": "^1.1.8",
56
+ "@radix-ui/react-radio-group": "^1.3.8",
57
+ "@radix-ui/react-scroll-area": "^1.2.10",
58
+ "@radix-ui/react-select": "^2.2.6",
59
+ "@radix-ui/react-separator": "^1.1.8",
60
+ "@radix-ui/react-slider": "^1.3.6",
61
+ "@radix-ui/react-slot": "^1.2.4",
62
+ "@radix-ui/react-switch": "^1.2.6",
63
+ "@radix-ui/react-tabs": "^1.1.13",
64
+ "@radix-ui/react-toggle": "^1.1.10",
65
+ "@radix-ui/react-toggle-group": "^1.1.11",
66
+ "@radix-ui/react-tooltip": "^1.2.8",
67
+ "@tanstack/react-virtual": "^3.13.18",
68
+ "class-variance-authority": "^0.7.1",
69
+ "clsx": "^2.1.1",
70
+ "cmdk": "^1.1.1",
71
+ "date-fns": "^4.1.0",
72
+ "immer": "^11.1.3",
73
+ "lucide-react": "^0.563.0",
74
+ "nanoid": "^5.1.6",
75
+ "next-themes": "^0.4.6",
76
+ "react-day-picker": "^9.13.0",
77
+ "react-resizable-panels": "^4.6.4",
78
+ "sonner": "^2.0.7",
79
+ "tailwind-merge": "^3.4.0"
80
+ },
81
+ "devDependencies": {
82
+ "@tailwindcss/vite": "^4.1.18",
83
+ "@tanstack/react-query": "^5.90.20",
84
+ "@tanstack/react-router": "^1.157.15",
85
+ "@tanstack/react-table": "^8.21.3",
86
+ "@types/node": "^24.10.9",
87
+ "@types/react": "^19.2.5",
88
+ "@types/react-dom": "^19.2.3",
89
+ "@vitejs/plugin-react": "^5.1.1",
90
+ "react": "^19.2.0",
91
+ "react-dom": "^19.2.0",
92
+ "react-hook-form": "^7.71.1",
93
+ "tailwindcss": "^4.1.18",
94
+ "typescript": "~5.9.3",
95
+ "vite": "7.1.7",
96
+ "vite-plugin-dts": "^4.0.0",
97
+ "zod": "^4.3.6",
98
+ "zustand": "^5.0.10"
99
+ },
100
+ "scripts": {
101
+ "build": "vite build && cp src/styles/theme.css dist/theme.css",
102
+ "dev": "vite build --watch",
103
+ "typecheck": "tsc --noEmit",
104
+ "prepublishOnly": "npm run build"
105
+ }
106
+ }