@sdvf23rvfa43f/stealth-glass 1.3.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.
@@ -0,0 +1,494 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ STEALTH GLASS DESIGN SYSTEM — Portable Theme
3
+ ═══════════════════════════════════════════════════════════════
4
+
5
+ HOW TO USE:
6
+ 1. Copy this file into your new project's /styles/ directory
7
+ 2. Import it in your globals.css AFTER @import "tailwindcss":
8
+
9
+ @import "tailwindcss";
10
+ @import "./stealth-glass-theme.css";
11
+
12
+ 3. Done! All tokens, utilities, and animations are now available.
13
+
14
+ Compatible with: Tailwind CSS v4 + React + any framework
15
+ ═══════════════════════════════════════════════════════════════ */
16
+
17
+
18
+ /* ─────────────────────────────────────────────────────────
19
+ LAYER 1: DESIGN TOKENS (CSS Custom Properties)
20
+ ───────────────────────────────────────────────────────── */
21
+
22
+ :root {
23
+ /* === Core Palette === */
24
+ --sg-void: #0B0E14; /* Deepest background (the "void") */
25
+ --sg-subtle: #0D0F13; /* Subtle background variation */
26
+ --sg-surface: #0E1119; /* Card/tile surface */
27
+ --sg-elevated: #12151B; /* Elevated surfaces (hover, popover) */
28
+ --sg-highlight: #1A1E26; /* Highlighted/active surfaces */
29
+
30
+ /* === Text Hierarchy === */
31
+ --sg-text-primary: #EDEDEF; /* Headlines, values, primary content */
32
+ --sg-text-secondary: #9A92B1; /* Descriptions, secondary info */
33
+ --sg-text-muted: #535C6B; /* Labels, timestamps, tertiary */
34
+
35
+ /* === Borders === */
36
+ --sg-border-default: #252C41; /* Default border (visible) */
37
+ --sg-border-subtle: rgba(255, 255, 255, 0.05); /* Glass edge */
38
+ --sg-border-hover: rgba(255, 255, 255, 0.10); /* Hover state */
39
+ --sg-border-active: rgba(255, 255, 255, 0.15); /* Active/focus */
40
+
41
+ /* === Brand Colors === */
42
+ --sg-brand-blue: #3B82F6;
43
+ --sg-brand-indigo: #6366F1;
44
+ --sg-brand-purple: #8B5CF6;
45
+
46
+ /* === Semantic Status Colors === */
47
+ --sg-success: #10B981; /* Emerald — Active/Online/Success */
48
+ --sg-warning: #F59E0B; /* Amber — Warning/Pending */
49
+ --sg-danger: #EF4444; /* Red — Error/Danger/Offline */
50
+ --sg-info: #3B82F6; /* Blue — Info/Processing */
51
+
52
+ /* === Form Control Surfaces === */
53
+ --sg-input-background: var(--sg-elevated); /* Dark input bg */
54
+ --sg-switch-track: var(--sg-highlight); /* Unchecked switch track */
55
+
56
+ /* === Shadows & Glows === */
57
+ --sg-glow-blue: rgba(59, 130, 246, 0.3);
58
+ --sg-glow-indigo: rgba(99, 102, 241, 0.3);
59
+ --sg-glow-success: rgba(16, 185, 129, 0.3);
60
+ --sg-glow-danger: rgba(239, 68, 68, 0.3);
61
+ --sg-glow-warning: rgba(245, 158, 11, 0.3);
62
+
63
+ /* === Shared Shadows === */
64
+ --sg-shadow-dropdown: 0 16px 48px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.05);
65
+ --sg-shadow-tile-inset: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
66
+ --sg-shadow-tile-inset-hover:inset 0 0 0 1px rgba(255, 255, 255, 0.05);
67
+ --sg-shadow-cta: 0 4px 20px rgba(37, 99, 235, 0.3);
68
+ --sg-shadow-cta-hover: 0 6px 25px rgba(37, 99, 235, 0.4);
69
+ --sg-glow-blue-md: 0 0 10px rgba(59, 130, 246, 0.5);
70
+ --sg-glow-success-md: 0 0 10px rgba(16, 185, 129, 0.5);
71
+
72
+ /* === Geometry === */
73
+ --sg-radius-tile: 2rem; /* 32px — Bento tile corners */
74
+ --sg-radius-inner: 1rem; /* 16px — Inner elements */
75
+ --sg-radius-button: 9999px; /* Pill buttons */
76
+ --sg-radius-input: 0.75rem; /* 12px — Inputs */
77
+
78
+ /* === Spacing === */
79
+ --sg-gap-mobile: 1rem; /* gap-4 */
80
+ --sg-gap-desktop: 1.5rem; /* gap-6 */
81
+ --sg-container-max: 1600px;
82
+
83
+ /* === Motion === */
84
+ --sg-duration-fast: 150ms;
85
+ --sg-duration-normal: 300ms;
86
+ --sg-duration-slow: 500ms;
87
+ --sg-duration-cinematic: 700ms;
88
+ --sg-ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
89
+
90
+ /* === Input === */
91
+ --sg-input-height: 3.5rem; /* 56px — h-14 */
92
+ --sg-input-bg: var(--sg-surface);
93
+ --sg-input-bg-focus: var(--sg-elevated);
94
+
95
+ /* === Focus === */
96
+ --sg-focus-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15);
97
+
98
+ /* === Font Weights === */
99
+ --font-weight-medium: 500;
100
+ --font-weight-normal: 400;
101
+
102
+ /* ──────────────────────────────────────────────────
103
+ ShadCN / Radix Mappings
104
+ Map our tokens to the ShadCN variable contract
105
+ so all shadcn/ui components inherit our theme.
106
+ ────────────────────────────────────────────────── */
107
+ --background: var(--sg-void);
108
+ --foreground: var(--sg-text-primary);
109
+ --card: var(--sg-surface);
110
+ --card-foreground: var(--sg-text-primary);
111
+ --popover: var(--sg-elevated);
112
+ --popover-foreground: var(--sg-text-primary);
113
+ --primary: var(--sg-brand-blue);
114
+ --primary-foreground: #FFFFFF;
115
+ --secondary: var(--sg-elevated);
116
+ --secondary-foreground:var(--sg-text-primary);
117
+ --muted: var(--sg-subtle);
118
+ --muted-foreground: var(--sg-text-secondary);
119
+ --accent: var(--sg-elevated);
120
+ --accent-foreground: var(--sg-text-primary);
121
+ --destructive: var(--sg-danger);
122
+ --destructive-foreground: #FFFFFF;
123
+ --border: var(--sg-border-default);
124
+ --input: var(--sg-elevated);
125
+ --ring: var(--sg-brand-blue);
126
+ --radius: var(--sg-radius-input);
127
+
128
+ /* Form control surfaces */
129
+ --input-background: var(--sg-input-background);
130
+ --switch-background: var(--sg-switch-track);
131
+
132
+ /* Chart colors (dark-optimised) */
133
+ --chart-1: oklch(0.488 0.243 264.376);
134
+ --chart-2: oklch(0.696 0.17 162.48);
135
+ --chart-3: oklch(0.769 0.188 70.08);
136
+ --chart-4: oklch(0.627 0.265 303.9);
137
+ --chart-5: oklch(0.645 0.246 16.439);
138
+
139
+ /* Sidebar */
140
+ --sidebar: var(--sg-surface);
141
+ --sidebar-foreground: var(--sg-text-primary);
142
+ --sidebar-primary: var(--sg-brand-blue);
143
+ --sidebar-primary-foreground: #FFFFFF;
144
+ --sidebar-accent: var(--sg-elevated);
145
+ --sidebar-accent-foreground:var(--sg-text-primary);
146
+ --sidebar-border: var(--sg-border-default);
147
+ --sidebar-ring: var(--sg-brand-blue);
148
+ }
149
+
150
+
151
+ /* ─────────────────────────────────────────────────────────
152
+ LAYER 2: TAILWIND v4 THEME INTEGRATION
153
+ Maps CSS tokens into Tailwind's theme system so you can
154
+ use classes like `bg-card`, `text-muted-foreground`, etc.
155
+ ───────────────────────────────────────────────────────── */
156
+
157
+ @theme inline {
158
+ --color-background: var(--background);
159
+ --color-foreground: var(--foreground);
160
+ --color-card: var(--card);
161
+ --color-card-foreground: var(--card-foreground);
162
+ --color-popover: var(--popover);
163
+ --color-popover-foreground: var(--popover-foreground);
164
+ --color-primary: var(--primary);
165
+ --color-primary-foreground: var(--primary-foreground);
166
+ --color-secondary: var(--secondary);
167
+ --color-secondary-foreground:var(--secondary-foreground);
168
+ --color-muted: var(--muted);
169
+ --color-muted-foreground: var(--muted-foreground);
170
+ --color-accent: var(--accent);
171
+ --color-accent-foreground: var(--accent-foreground);
172
+ --color-destructive: var(--destructive);
173
+ --color-destructive-foreground: var(--destructive-foreground);
174
+ --color-border: var(--border);
175
+ --color-input: var(--input);
176
+ --color-ring: var(--ring);
177
+
178
+ /* Form control surfaces */
179
+ --color-input-background: var(--input-background);
180
+ --color-switch-background: var(--switch-background);
181
+
182
+ /* Chart colors */
183
+ --color-chart-1: var(--chart-1);
184
+ --color-chart-2: var(--chart-2);
185
+ --color-chart-3: var(--chart-3);
186
+ --color-chart-4: var(--chart-4);
187
+ --color-chart-5: var(--chart-5);
188
+
189
+ /* Sidebar */
190
+ --color-sidebar: var(--sidebar);
191
+ --color-sidebar-foreground: var(--sidebar-foreground);
192
+ --color-sidebar-primary: var(--sidebar-primary);
193
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
194
+ --color-sidebar-accent: var(--sidebar-accent);
195
+ --color-sidebar-accent-foreground:var(--sidebar-accent-foreground);
196
+ --color-sidebar-border: var(--sidebar-border);
197
+ --color-sidebar-ring: var(--sidebar-ring);
198
+
199
+ /* Extended palette for direct use */
200
+ --color-sg-void: var(--sg-void);
201
+ --color-sg-subtle: var(--sg-subtle);
202
+ --color-sg-surface: var(--sg-surface);
203
+ --color-sg-elevated: var(--sg-elevated);
204
+ --color-sg-highlight: var(--sg-highlight);
205
+
206
+ /* Text hierarchy — full coverage */
207
+ --color-sg-text-primary: var(--sg-text-primary);
208
+ --color-sg-text-secondary: var(--sg-text-secondary);
209
+ --color-sg-text-muted: var(--sg-text-muted);
210
+
211
+ /* Status colors — direct Tailwind access */
212
+ --color-sg-success: var(--sg-success);
213
+ --color-sg-warning: var(--sg-warning);
214
+ --color-sg-danger: var(--sg-danger);
215
+ --color-sg-info: var(--sg-info);
216
+
217
+ /* Brand colors — direct Tailwind access */
218
+ --color-sg-brand-blue: var(--sg-brand-blue);
219
+ --color-sg-brand-indigo: var(--sg-brand-indigo);
220
+ --color-sg-brand-purple: var(--sg-brand-purple);
221
+
222
+ /* Shared shadows — Tailwind shadow-* classes */
223
+ --shadow-sg-dropdown: var(--sg-shadow-dropdown);
224
+ --shadow-sg-tile-inset: var(--sg-shadow-tile-inset);
225
+ --shadow-sg-tile-inset-hover:var(--sg-shadow-tile-inset-hover);
226
+ --shadow-sg-cta: var(--sg-shadow-cta);
227
+ --shadow-sg-cta-hover: var(--sg-shadow-cta-hover);
228
+ --shadow-sg-glow-blue: var(--sg-glow-blue-md);
229
+ --shadow-sg-glow-success: var(--sg-glow-success-md);
230
+
231
+ --radius-sm: calc(var(--radius) - 4px);
232
+ --radius-md: calc(var(--radius) - 2px);
233
+ --radius-lg: var(--radius);
234
+ --radius-xl: calc(var(--radius) + 4px);
235
+ --radius-2xl: 1rem;
236
+
237
+ /* Accordion animations */
238
+ --animate-accordion-down: accordion-down 200ms ease-out;
239
+ --animate-accordion-up: accordion-up 200ms ease-out;
240
+ }
241
+
242
+
243
+ /* ─────────────────────────────────────────────────────────
244
+ LAYER 3: BASE STYLES
245
+ ───────────────────────────────────────────────────────── */
246
+
247
+ @layer base {
248
+ * {
249
+ @apply border-border outline-ring/50;
250
+ }
251
+
252
+ body {
253
+ @apply bg-background text-foreground antialiased;
254
+ font-family: 'Inter', 'Geist', system-ui, -apple-system, sans-serif;
255
+ }
256
+
257
+ /* ── Focus Indicators (WCAG AA) ── */
258
+ *:focus-visible {
259
+ outline: 2px solid rgba(59, 130, 246, 0.6);
260
+ outline-offset: 2px;
261
+ border-radius: 4px;
262
+ }
263
+
264
+ /* ── Selection ── */
265
+ ::selection {
266
+ background-color: rgba(99, 102, 241, 0.25);
267
+ color: #EDEDEF;
268
+ }
269
+ }
270
+
271
+
272
+ /* ─────────────────────────────────────────────────────────
273
+ LAYER 4: UTILITY CLASSES & ANIMATIONS
274
+ ───────────────────────────────────────────────────────── */
275
+
276
+ @layer utilities {
277
+
278
+ /* ── Pulse-subtle — used by StatusDot ── */
279
+
280
+ @keyframes pulse-subtle {
281
+ 0%, 100% { opacity: 1; }
282
+ 50% { opacity: 0.5; }
283
+ }
284
+ .animate-pulse-subtle {
285
+ animation: pulse-subtle 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
286
+ }
287
+
288
+ /* ── Shimmer — used by Progress bar ── */
289
+
290
+ @keyframes shimmer {
291
+ 0% { transform: translateX(-200%); }
292
+ 100% { transform: translateX(200%); }
293
+ }
294
+
295
+ /* ── Ambient Background float ── */
296
+
297
+ @keyframes float-slow {
298
+ 0%, 100% { transform: translate(0, 0) scale(1); }
299
+ 25% { transform: translate(5%, 10%) scale(1.05); }
300
+ 50% { transform: translate(-3%, 5%) scale(0.95); }
301
+ 75% { transform: translate(-8%, -5%) scale(1.02); }
302
+ }
303
+ .animate-float-slow {
304
+ animation: float-slow 20s ease-in-out infinite;
305
+ }
306
+
307
+ @keyframes float-slower {
308
+ 0%, 100% { transform: translate(0, 0) scale(1); }
309
+ 33% { transform: translate(-5%, 8%) scale(1.03); }
310
+ 66% { transform: translate(8%, -3%) scale(0.97); }
311
+ }
312
+ .animate-float-slower {
313
+ animation: float-slower 30s ease-in-out infinite;
314
+ }
315
+
316
+ @keyframes float-slowest {
317
+ 0%, 100% { transform: translate(0, 0) scale(1); }
318
+ 50% { transform: translate(3%, -5%) scale(1.04); }
319
+ }
320
+ .animate-float-slowest {
321
+ animation: float-slowest 40s ease-in-out infinite;
322
+ }
323
+
324
+ /* ── CTA shimmer effect ── */
325
+
326
+ .cta-shimmer {
327
+ position: relative;
328
+ overflow: hidden;
329
+ }
330
+ .cta-shimmer::after {
331
+ content: '';
332
+ position: absolute;
333
+ inset: 0;
334
+ background: linear-gradient(
335
+ 105deg,
336
+ transparent 40%,
337
+ rgba(255,255,255,0.15) 50%,
338
+ transparent 60%
339
+ );
340
+ transform: translateX(-200%);
341
+ transition: transform 700ms;
342
+ }
343
+ .cta-shimmer:hover::after {
344
+ transform: translateX(200%);
345
+ }
346
+
347
+ /* ── Scrollbar utilities ── */
348
+
349
+ .scrollbar-none {
350
+ -ms-overflow-style: none;
351
+ scrollbar-width: none;
352
+ }
353
+ .scrollbar-none::-webkit-scrollbar {
354
+ display: none;
355
+ }
356
+
357
+ /* ── Glass input — shared base for form inputs ── */
358
+ .glass-input {
359
+ background-color: rgba(255, 255, 255, 0.03);
360
+ border: 1px solid var(--sg-border-subtle);
361
+ color: var(--sg-text-primary);
362
+ transition: all var(--sg-duration-fast) ease;
363
+ }
364
+ .glass-input:focus {
365
+ border-color: rgba(59, 130, 246, 0.5);
366
+ background-color: rgba(255, 255, 255, 0.05);
367
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
368
+ outline: none;
369
+ }
370
+ .glass-input::placeholder {
371
+ color: rgba(83, 92, 107, 0.6);
372
+ }
373
+
374
+ /* ── Stealth Glass Focus Ring ── */
375
+ .sg-focus-ring {
376
+ &:focus-visible {
377
+ outline: none;
378
+ box-shadow:
379
+ 0 0 0 2px var(--sg-void),
380
+ 0 0 0 4px rgba(59, 130, 246, 0.5),
381
+ var(--sg-focus-shadow);
382
+ }
383
+ }
384
+ }
385
+
386
+
387
+ /* ─────────────────────────────────────────────────────────
388
+ ACCORDION ANIMATIONS
389
+ ───────────────────────────────────────────────────────── */
390
+
391
+ @keyframes accordion-down {
392
+ from { height: 0; opacity: 0; }
393
+ to { height: var(--radix-accordion-content-height); opacity: 1; }
394
+ }
395
+ @keyframes accordion-up {
396
+ from { height: var(--radix-accordion-content-height); opacity: 1; }
397
+ to { height: 0; opacity: 0; }
398
+ }
399
+
400
+ .animate-accordion-down {
401
+ animation: accordion-down 200ms ease-out;
402
+ }
403
+ .animate-accordion-up {
404
+ animation: accordion-up 200ms ease-out;
405
+ }
406
+
407
+
408
+ /* ─────────────────────────────────────────────────────────
409
+ LAYER 5: MOBILE PERFORMANCE
410
+ Disable backdrop-blur, cap animation/transition durations,
411
+ force GPU compositing, and simplify shadows on mobile for
412
+ 60 FPS performance.
413
+ ───────────────────────────────────────────────────────── */
414
+
415
+ @media (max-width: 768px) {
416
+ /* Disable backdrop-blur for 60fps on mobile */
417
+ .backdrop-blur-xl,
418
+ .backdrop-blur-2xl,
419
+ .backdrop-blur-md,
420
+ .backdrop-blur-sm,
421
+ [class*="backdrop-blur"] {
422
+ -webkit-backdrop-filter: none !important;
423
+ backdrop-filter: none !important;
424
+ }
425
+
426
+ /* Cap transition/animation durations */
427
+ *,
428
+ *::before,
429
+ *::after {
430
+ transition-duration: 0.15s !important;
431
+ animation-duration: 0.05s !important;
432
+ }
433
+
434
+ /* Force GPU compositing on animated elements */
435
+ .transition-all,
436
+ .transition-transform,
437
+ .transition-opacity,
438
+ .transition-colors,
439
+ [class*="animate-"] {
440
+ transform: translateZ(0);
441
+ backface-visibility: hidden;
442
+ -webkit-backface-visibility: hidden;
443
+ }
444
+
445
+ /* Simplified shadows for mobile */
446
+ .shadow-2xl,
447
+ .shadow-xl,
448
+ .shadow-lg {
449
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;
450
+ }
451
+ }
452
+
453
+
454
+ /* ─────────────────────────────────────────────────────────
455
+ LAYER 6: REDUCED MOTION
456
+ Full prefers-reduced-motion: reduce support — all
457
+ animations/transitions set to 0.01ms instant.
458
+ ───────────────────────────────────────────────────────── */
459
+
460
+ @media (prefers-reduced-motion: reduce) {
461
+ *,
462
+ *::before,
463
+ *::after {
464
+ animation-duration: 0.01ms !important;
465
+ animation-iteration-count: 1 !important;
466
+ transition-duration: 0.01ms !important;
467
+ scroll-behavior: auto !important;
468
+ }
469
+
470
+ .animate-pulse-subtle,
471
+ .animate-float-slow,
472
+ .animate-float-slower,
473
+ .animate-float-slowest,
474
+ .animate-pulse,
475
+ .animate-spin,
476
+ [class*="animate-"] {
477
+ animation: none !important;
478
+ }
479
+ }
480
+
481
+
482
+ /* ─────────────────────────────────────────────────────────
483
+ LAYER 7: TOUCH DEVICE OVERRIDES
484
+ On touch devices (hover: none), reveal hidden actions
485
+ since there is no hover trigger available.
486
+ ───────────────────────────────────────────────────────── */
487
+
488
+ @media (hover: none) {
489
+ /* Reveal hidden actions on touch devices */
490
+ .reveal-touch-visible {
491
+ opacity: 1 !important;
492
+ transform: none !important;
493
+ }
494
+ }
package/package.json ADDED
@@ -0,0 +1,132 @@
1
+ {
2
+ "name": "@sdvf23rvfa43f/stealth-glass",
3
+ "version": "1.3.0",
4
+ "description": "Stealth Glass Design System - Dark dashboard theme for Caasify PaaS platform",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./components": {
15
+ "import": "./dist/components/index.js",
16
+ "types": "./dist/components/index.d.ts"
17
+ },
18
+ "./design-tokens": {
19
+ "import": "./dist/design-tokens.js",
20
+ "types": "./dist/design-tokens.d.ts"
21
+ },
22
+ "./stealth-glass-theme.css": "./dist/stealth-glass-theme.css"
23
+ },
24
+ "files": [
25
+ "dist/**/*"
26
+ ],
27
+ "scripts": {
28
+ "build": "npx tsup",
29
+ "dev": "npx tsup --watch",
30
+ "clean": "rm -rf dist",
31
+ "typecheck": "npx tsc --noEmit",
32
+ "verify": "node -e \"const p=require('./package.json'); if(p.name!=='@sdvf23rvfa43f/stealth-glass'){console.error('WRONG PACKAGE: '+p.name);process.exit(1)} console.log('OK: '+p.name+'@'+p.version)\"",
33
+ "prepublishOnly": "npm run verify && npm run clean && npm run build"
34
+ },
35
+ "keywords": [
36
+ "caasify",
37
+ "design-system",
38
+ "stealth-glass",
39
+ "dark-theme",
40
+ "dashboard",
41
+ "react",
42
+ "tailwindcss",
43
+ "paas"
44
+ ],
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/caasify/stealth-glass-theme.git",
48
+ "directory": "theme"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public",
52
+ "registry": "https://registry.npmjs.org/"
53
+ },
54
+ "license": "MIT",
55
+ "sideEffects": [
56
+ "*.css"
57
+ ],
58
+ "peerDependencies": {
59
+ "react": "^18.0.0 || ^19.0.0",
60
+ "react-dom": "^18.0.0 || ^19.0.0",
61
+ "lucide-react": ">=0.300.0",
62
+ "tailwind-merge": ">=2.0.0",
63
+ "class-variance-authority": ">=0.7.0",
64
+ "tailwindcss": ">=4.0.0",
65
+ "@radix-ui/react-accordion": ">=1.0.0",
66
+ "@radix-ui/react-avatar": ">=1.0.0",
67
+ "@radix-ui/react-checkbox": ">=1.0.0",
68
+ "@radix-ui/react-context-menu": ">=2.0.0",
69
+ "@radix-ui/react-dialog": ">=1.0.0",
70
+ "@radix-ui/react-dropdown-menu": ">=2.0.0",
71
+ "@radix-ui/react-popover": ">=1.0.0",
72
+ "@radix-ui/react-progress": ">=1.0.0",
73
+ "@radix-ui/react-radio-group": ">=1.0.0",
74
+ "@radix-ui/react-scroll-area": ">=1.0.0",
75
+ "@radix-ui/react-select": ">=2.0.0",
76
+ "@radix-ui/react-slider": ">=1.0.0",
77
+ "@radix-ui/react-slot": ">=1.0.0",
78
+ "@radix-ui/react-switch": ">=1.0.0",
79
+ "@radix-ui/react-tabs": ">=1.0.0",
80
+ "@radix-ui/react-toggle": ">=1.0.0",
81
+ "@radix-ui/react-toggle-group": ">=1.0.0",
82
+ "@radix-ui/react-tooltip": ">=1.0.0",
83
+ "cmdk": ">=1.0.0",
84
+ "motion": ">=12.0.0",
85
+ "recharts": ">=2.0.0",
86
+ "sonner": ">=2.0.0",
87
+ "vaul": ">=1.0.0",
88
+ "date-fns": ">=3.0.0"
89
+ },
90
+ "peerDependenciesMeta": {
91
+ "recharts": { "optional": true },
92
+ "cmdk": { "optional": true },
93
+ "motion": { "optional": true },
94
+ "vaul": { "optional": true },
95
+ "date-fns": { "optional": true }
96
+ },
97
+ "devDependencies": {
98
+ "tsup": "^8.0.0",
99
+ "typescript": "^5.0.0",
100
+ "react": "^18.0.0",
101
+ "react-dom": "^18.0.0",
102
+ "@types/react": "^18.0.0",
103
+ "@types/react-dom": "^18.0.0",
104
+ "motion": "^12.0.0",
105
+ "recharts": "^2.0.0",
106
+ "sonner": "^2.0.0",
107
+ "vaul": "^1.0.0",
108
+ "cmdk": "^1.0.0",
109
+ "date-fns": "^3.0.0",
110
+ "lucide-react": ">=0.300.0",
111
+ "tailwind-merge": ">=2.0.0",
112
+ "class-variance-authority": ">=0.7.0",
113
+ "@radix-ui/react-accordion": ">=1.0.0",
114
+ "@radix-ui/react-avatar": ">=1.0.0",
115
+ "@radix-ui/react-checkbox": ">=1.0.0",
116
+ "@radix-ui/react-context-menu": ">=2.0.0",
117
+ "@radix-ui/react-dialog": ">=1.0.0",
118
+ "@radix-ui/react-dropdown-menu": ">=2.0.0",
119
+ "@radix-ui/react-popover": ">=1.0.0",
120
+ "@radix-ui/react-progress": ">=1.0.0",
121
+ "@radix-ui/react-radio-group": ">=1.0.0",
122
+ "@radix-ui/react-scroll-area": ">=1.0.0",
123
+ "@radix-ui/react-select": ">=2.0.0",
124
+ "@radix-ui/react-slider": ">=1.0.0",
125
+ "@radix-ui/react-slot": ">=1.0.0",
126
+ "@radix-ui/react-switch": ">=1.0.0",
127
+ "@radix-ui/react-tabs": ">=1.0.0",
128
+ "@radix-ui/react-toggle": ">=1.0.0",
129
+ "@radix-ui/react-toggle-group": ">=1.0.0",
130
+ "@radix-ui/react-tooltip": ">=1.0.0"
131
+ }
132
+ }