nuvox 0.1.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/index.cjs ADDED
@@ -0,0 +1,896 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ DEFAULT_COLOR_PRESETS: () => DEFAULT_PRESETS,
24
+ REQUIRED_TOKEN_PATHS: () => REQUIRED_TOKEN_PATHS,
25
+ TOKEN_CATEGORIES: () => TOKEN_CATEGORIES,
26
+ amber: () => amber,
27
+ brutalism: () => brutalism,
28
+ copper: () => copper,
29
+ cyberpunk: () => cyberpunk,
30
+ dark: () => dark,
31
+ darkGlass: () => darkGlass,
32
+ defineTheme: () => defineTheme,
33
+ emerald: () => emerald,
34
+ findMissingTokenPaths: () => findMissingTokenPaths,
35
+ getAccent: () => getAccent,
36
+ getNextSortDirection: () => getNextSortDirection,
37
+ getSelectAllState: () => getSelectAllState,
38
+ getTheme: () => getTheme,
39
+ glass: () => glass,
40
+ gradient: () => gradient,
41
+ graphite: () => graphite,
42
+ indigo: () => indigo,
43
+ light: () => light,
44
+ listAccents: () => listAccents,
45
+ listThemes: () => listThemes,
46
+ magenta: () => magenta,
47
+ material: () => material,
48
+ minimalism: () => minimalism,
49
+ neobrutalism: () => neobrutalism,
50
+ registerAccent: () => registerAccent,
51
+ registerTheme: () => registerTheme,
52
+ rose: () => rose,
53
+ skeuomorphism: () => skeuomorphism,
54
+ teal: () => teal,
55
+ violet: () => violet
56
+ });
57
+ module.exports = __toCommonJS(src_exports);
58
+
59
+ // src/tokens/contract.ts
60
+ function defineTheme(tokens) {
61
+ return tokens;
62
+ }
63
+ var TOKEN_CATEGORIES = [
64
+ "meta",
65
+ "color",
66
+ "radius",
67
+ "spacing",
68
+ "typography",
69
+ "shadow",
70
+ "elevation",
71
+ "motion",
72
+ "border",
73
+ "effects"
74
+ ];
75
+ var REQUIRED_TOKEN_PATHS = [
76
+ "meta.name",
77
+ "meta.label",
78
+ "meta.description",
79
+ ...["0", "50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"].map((k) => `color.neutral.${k}`),
80
+ ...["success", "danger", "warning", "info"].flatMap(
81
+ (c) => ["light", "subtle", "base", "dark", "deeper"].map((k) => `color.${c}.${k}`)
82
+ ),
83
+ "color.background",
84
+ "color.surface",
85
+ "color.surfaceRaised",
86
+ "color.border",
87
+ "color.borderFocus",
88
+ "color.text",
89
+ "color.textMuted",
90
+ "color.textInverse",
91
+ "radius.sm",
92
+ "radius.md",
93
+ "radius.lg",
94
+ "radius.xl",
95
+ "radius.2xl",
96
+ "radius.full",
97
+ "spacing.xs",
98
+ "spacing.sm",
99
+ "spacing.md",
100
+ "spacing.lg",
101
+ "spacing.xl",
102
+ "spacing.2xl",
103
+ "typography.fontSans",
104
+ "typography.fontMono",
105
+ "typography.sizeXs",
106
+ "typography.sizeSm",
107
+ "typography.sizeMd",
108
+ "typography.sizeLg",
109
+ "typography.sizeXl",
110
+ "typography.weightNormal",
111
+ "typography.weightMedium",
112
+ "typography.weightBold",
113
+ "typography.lineHeightTight",
114
+ "typography.lineHeightNormal",
115
+ "shadow.xs",
116
+ "shadow.sm",
117
+ "shadow.md",
118
+ "shadow.lg",
119
+ "shadow.xl",
120
+ "shadow.2xl",
121
+ "shadow.inner",
122
+ "elevation.dropdown",
123
+ "elevation.popover",
124
+ "elevation.modal",
125
+ "elevation.toast",
126
+ "elevation.tooltip",
127
+ "motion.durationFast",
128
+ "motion.durationNormal",
129
+ "motion.durationSlow",
130
+ "motion.easeStandard",
131
+ "motion.easeEmphasized",
132
+ "motion.durationInstant",
133
+ "border.widthThin",
134
+ "border.widthMedium",
135
+ "border.widthThick",
136
+ "border.style",
137
+ "effects.backdropBlur"
138
+ ];
139
+ function getAtPath(obj, path) {
140
+ return path.split(".").reduce((acc, key) => {
141
+ if (acc === null || typeof acc !== "object") return void 0;
142
+ return acc[key];
143
+ }, obj);
144
+ }
145
+ function findMissingTokenPaths(theme) {
146
+ return REQUIRED_TOKEN_PATHS.filter((path) => {
147
+ const value = getAtPath(theme, path);
148
+ return value === null || value === void 0 || value === "";
149
+ });
150
+ }
151
+
152
+ // src/tokens/themes/light.ts
153
+ var light = defineTheme({
154
+ meta: {
155
+ name: "light",
156
+ label: "Light",
157
+ description: "Default, neutral, high-legibility surface."
158
+ },
159
+ color: {
160
+ neutral: {
161
+ 0: "#ffffff",
162
+ 50: "#f9fafb",
163
+ 100: "#f3f4f6",
164
+ 200: "#e5e7eb",
165
+ 300: "#d1d5db",
166
+ 400: "#9ca3af",
167
+ 500: "#6b7280",
168
+ 600: "#4b5563",
169
+ 700: "#374151",
170
+ 800: "#1f2937",
171
+ 900: "#111827",
172
+ 950: "#030712"
173
+ },
174
+ success: { light: "#d1fae5", subtle: "#a7f3d0", base: "#10b981", dark: "#059669", deeper: "#064e3b" },
175
+ danger: { light: "#fee2e2", subtle: "#fecaca", base: "#ef4444", dark: "#dc2626", deeper: "#7f1d1d" },
176
+ warning: { light: "#fef3c7", subtle: "#fde68a", base: "#f59e0b", dark: "#d97706", deeper: "#78350f" },
177
+ info: { light: "#dbeafe", subtle: "#bfdbfe", base: "#3b82f6", dark: "#2563eb", deeper: "#1e3a5f" },
178
+ background: "#ffffff",
179
+ surface: "#ffffff",
180
+ surfaceRaised: "#ffffff",
181
+ border: "#e5e7eb",
182
+ // Neutral, not brand-tied — the actual focus-ring color
183
+ // interactive components use is the picked accent
184
+ // (--color-brand-500/600), not this. This exists for
185
+ // non-branded emphasis borders.
186
+ borderFocus: "#9ca3af",
187
+ text: "#111827",
188
+ textMuted: "#6b7280",
189
+ textInverse: "#ffffff"
190
+ },
191
+ radius: { sm: "6px", md: "10px", lg: "14px", xl: "18px", "2xl": "24px", full: "9999px" },
192
+ spacing: { xs: "4px", sm: "8px", md: "12px", lg: "16px", xl: "24px", "2xl": "32px" },
193
+ typography: {
194
+ fontSans: "'Inter', system-ui, sans-serif",
195
+ fontMono: "'JetBrains Mono', monospace",
196
+ sizeXs: "12px",
197
+ sizeSm: "14px",
198
+ sizeMd: "16px",
199
+ sizeLg: "18px",
200
+ sizeXl: "22px",
201
+ weightNormal: "400",
202
+ weightMedium: "500",
203
+ weightBold: "700",
204
+ lineHeightTight: "1.2",
205
+ lineHeightNormal: "1.5"
206
+ },
207
+ shadow: {
208
+ xs: "0 1px 2px rgba(0,0,0,0.05)",
209
+ sm: "0 2px 6px rgba(0,0,0,0.06)",
210
+ md: "0 4px 12px rgba(0,0,0,0.08)",
211
+ lg: "0 10px 24px rgba(0,0,0,0.10)",
212
+ xl: "0 20px 40px rgba(0,0,0,0.12)",
213
+ "2xl": "0 28px 56px rgba(0,0,0,0.16)",
214
+ inner: "inset 0 1px 2px rgba(0,0,0,0.05)"
215
+ },
216
+ elevation: { dropdown: 1e3, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },
217
+ motion: {
218
+ durationFast: "120ms",
219
+ durationNormal: "200ms",
220
+ durationSlow: "320ms",
221
+ easeStandard: "cubic-bezier(0.4, 0, 0.2, 1)",
222
+ easeEmphasized: "cubic-bezier(0.2, 0, 0, 1)",
223
+ durationInstant: "0ms"
224
+ },
225
+ border: { widthThin: "1px", widthMedium: "1.5px", widthThick: "2px", style: "solid" },
226
+ effects: { backdropBlur: "0px" }
227
+ });
228
+
229
+ // src/tokens/themes/dark.ts
230
+ var dark = defineTheme({
231
+ meta: {
232
+ name: "dark",
233
+ label: "Dark",
234
+ description: "Low-glare surface for extended use."
235
+ },
236
+ color: {
237
+ neutral: {
238
+ 0: "#030712",
239
+ 50: "#111827",
240
+ 100: "#1f2937",
241
+ 200: "#374151",
242
+ 300: "#4b5563",
243
+ 400: "#6b7280",
244
+ 500: "#9ca3af",
245
+ 600: "#d1d5db",
246
+ 700: "#e5e7eb",
247
+ 800: "#f3f4f6",
248
+ 900: "#f9fafb",
249
+ 950: "#ffffff"
250
+ },
251
+ success: { light: "#064e3b", subtle: "#065f46", base: "#34d399", dark: "#6ee7b7", deeper: "#d1fae5" },
252
+ danger: { light: "#7f1d1d", subtle: "#991b1b", base: "#f87171", dark: "#fca5a5", deeper: "#fee2e2" },
253
+ warning: { light: "#78350f", subtle: "#92400e", base: "#fbbf24", dark: "#fcd34d", deeper: "#fef3c7" },
254
+ info: { light: "#1e3a5f", subtle: "#1e40af", base: "#60a5fa", dark: "#93c5fd", deeper: "#dbeafe" },
255
+ background: "#0b0f19",
256
+ surface: "#131826",
257
+ surfaceRaised: "#1c2333",
258
+ border: "#2a3143",
259
+ borderFocus: "#6b7280",
260
+ text: "#f3f4f6",
261
+ textMuted: "#9ca3af",
262
+ textInverse: "#111827"
263
+ },
264
+ radius: { sm: "6px", md: "10px", lg: "14px", xl: "18px", "2xl": "24px", full: "9999px" },
265
+ spacing: { xs: "4px", sm: "8px", md: "12px", lg: "16px", xl: "24px", "2xl": "32px" },
266
+ typography: {
267
+ fontSans: "'Inter', system-ui, sans-serif",
268
+ fontMono: "'JetBrains Mono', monospace",
269
+ sizeXs: "12px",
270
+ sizeSm: "14px",
271
+ sizeMd: "16px",
272
+ sizeLg: "18px",
273
+ sizeXl: "22px",
274
+ weightNormal: "400",
275
+ weightMedium: "500",
276
+ weightBold: "700",
277
+ lineHeightTight: "1.2",
278
+ lineHeightNormal: "1.5"
279
+ },
280
+ shadow: {
281
+ xs: "0 1px 2px rgba(0,0,0,0.4)",
282
+ sm: "0 2px 6px rgba(0,0,0,0.45)",
283
+ md: "0 4px 12px rgba(0,0,0,0.5)",
284
+ lg: "0 10px 24px rgba(0,0,0,0.55)",
285
+ xl: "0 20px 40px rgba(0,0,0,0.6)",
286
+ "2xl": "0 28px 56px rgba(0,0,0,0.65)",
287
+ inner: "inset 0 1px 2px rgba(0,0,0,0.4)"
288
+ },
289
+ elevation: { dropdown: 1e3, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },
290
+ motion: {
291
+ durationFast: "120ms",
292
+ durationNormal: "200ms",
293
+ durationSlow: "320ms",
294
+ easeStandard: "cubic-bezier(0.4, 0, 0.2, 1)",
295
+ easeEmphasized: "cubic-bezier(0.2, 0, 0, 1)",
296
+ durationInstant: "0ms"
297
+ },
298
+ border: { widthThin: "1px", widthMedium: "1.5px", widthThick: "2px", style: "solid" },
299
+ effects: { backdropBlur: "0px" }
300
+ });
301
+
302
+ // src/tokens/themes/glass.ts
303
+ var glass = defineTheme({
304
+ meta: {
305
+ name: "glass",
306
+ label: "Glass",
307
+ description: "Translucent, softly rounded, floating surfaces. Needs a rich background behind it."
308
+ },
309
+ color: {
310
+ neutral: {
311
+ 0: "#ffffff",
312
+ 50: "#f9fafb",
313
+ 100: "#f3f4f6",
314
+ 200: "#e5e7eb",
315
+ 300: "#d1d5db",
316
+ 400: "#9ca3af",
317
+ 500: "#6b7280",
318
+ 600: "#4b5563",
319
+ 700: "#374151",
320
+ 800: "#1f2937",
321
+ 900: "#111827",
322
+ 950: "#030712"
323
+ },
324
+ success: { light: "#d1fae5", subtle: "#a7f3d0", base: "#10b981", dark: "#059669", deeper: "#064e3b" },
325
+ danger: { light: "#fee2e2", subtle: "#fecaca", base: "#ef4444", dark: "#dc2626", deeper: "#7f1d1d" },
326
+ warning: { light: "#fef3c7", subtle: "#fde68a", base: "#f59e0b", dark: "#d97706", deeper: "#78350f" },
327
+ info: { light: "#dbeafe", subtle: "#bfdbfe", base: "#3b82f6", dark: "#2563eb", deeper: "#1e3a5f" },
328
+ background: "transparent",
329
+ surface: "rgba(255,255,255,0.55)",
330
+ surfaceRaised: "rgba(255,255,255,0.75)",
331
+ border: "rgba(255,255,255,0.35)",
332
+ borderFocus: "#9ca3af",
333
+ text: "#111827",
334
+ textMuted: "rgba(17,24,39,0.65)",
335
+ textInverse: "#ffffff"
336
+ },
337
+ // Notably rounder than light/dark — this is a shape difference, not just color.
338
+ radius: { sm: "10px", md: "16px", lg: "22px", xl: "28px", "2xl": "36px", full: "9999px" },
339
+ spacing: { xs: "4px", sm: "8px", md: "12px", lg: "16px", xl: "24px", "2xl": "32px" },
340
+ typography: {
341
+ fontSans: "'Inter', system-ui, sans-serif",
342
+ fontMono: "'JetBrains Mono', monospace",
343
+ sizeXs: "12px",
344
+ sizeSm: "14px",
345
+ sizeMd: "16px",
346
+ sizeLg: "18px",
347
+ sizeXl: "22px",
348
+ weightNormal: "400",
349
+ weightMedium: "500",
350
+ weightBold: "700",
351
+ lineHeightTight: "1.2",
352
+ lineHeightNormal: "1.5"
353
+ },
354
+ shadow: {
355
+ xs: "0 2px 8px rgba(0,0,0,0.06)",
356
+ sm: "0 4px 16px rgba(0,0,0,0.08)",
357
+ md: "0 8px 32px rgba(0,0,0,0.10)",
358
+ lg: "0 16px 48px rgba(0,0,0,0.12)",
359
+ xl: "0 24px 64px rgba(0,0,0,0.14)",
360
+ "2xl": "0 32px 80px rgba(0,0,0,0.18)",
361
+ inner: "inset 0 1px 0 rgba(255,255,255,0.4)"
362
+ },
363
+ elevation: { dropdown: 1e3, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },
364
+ motion: {
365
+ // Slightly slower/softer than light/dark — matches "everything floats".
366
+ durationFast: "160ms",
367
+ durationNormal: "260ms",
368
+ durationSlow: "400ms",
369
+ easeStandard: "cubic-bezier(0.25, 0.1, 0.25, 1)",
370
+ easeEmphasized: "cubic-bezier(0.16, 1, 0.3, 1)",
371
+ durationInstant: "0ms"
372
+ },
373
+ border: { widthThin: "1px", widthMedium: "1px", widthThick: "1.5px", style: "solid" },
374
+ effects: { backdropBlur: "16px" }
375
+ });
376
+
377
+ // src/tokens/themes/dark-glass.ts
378
+ var darkGlass = defineTheme({
379
+ ...dark,
380
+ meta: {
381
+ name: "dark-glass",
382
+ label: "Dark Glass",
383
+ description: "Translucent glass panels floating over a dark background."
384
+ },
385
+ color: {
386
+ ...dark.color,
387
+ background: "#05070d",
388
+ surface: "rgba(255,255,255,0.06)",
389
+ surfaceRaised: "rgba(255,255,255,0.10)",
390
+ border: "rgba(255,255,255,0.12)"
391
+ },
392
+ radius: { sm: "10px", md: "16px", lg: "22px", xl: "28px", "2xl": "36px", full: "9999px" },
393
+ shadow: {
394
+ xs: "0 2px 8px rgba(0,0,0,0.5)",
395
+ sm: "0 4px 16px rgba(0,0,0,0.55)",
396
+ md: "0 8px 32px rgba(0,0,0,0.6)",
397
+ lg: "0 16px 48px rgba(0,0,0,0.65)",
398
+ xl: "0 24px 64px rgba(0,0,0,0.7)",
399
+ "2xl": "0 32px 80px rgba(0,0,0,0.75)",
400
+ inner: "inset 0 1px 0 rgba(255,255,255,0.08)"
401
+ },
402
+ motion: { ...dark.motion, durationFast: "160ms", durationNormal: "260ms", durationSlow: "400ms" },
403
+ effects: { backdropBlur: "18px" }
404
+ });
405
+
406
+ // src/tokens/themes/minimalism.ts
407
+ var minimalism = defineTheme({
408
+ ...light,
409
+ meta: {
410
+ name: "minimalism",
411
+ label: "Minimalism",
412
+ description: "Reduced to essentials \u2014 thin borders, flat surfaces, no shadow, tight radius."
413
+ },
414
+ color: {
415
+ ...light.color,
416
+ border: "#e2e2e2",
417
+ surface: "#ffffff",
418
+ surfaceRaised: "#ffffff"
419
+ },
420
+ radius: { sm: "2px", md: "3px", lg: "4px", xl: "6px", "2xl": "8px", full: "9999px" },
421
+ shadow: { xs: "none", sm: "none", md: "none", lg: "none", xl: "none", "2xl": "none", inner: "none" },
422
+ border: { widthThin: "1px", widthMedium: "1px", widthThick: "1px", style: "solid" },
423
+ effects: { backdropBlur: "0px" }
424
+ });
425
+
426
+ // src/tokens/themes/brutalism.ts
427
+ var brutalism = defineTheme({
428
+ ...light,
429
+ meta: {
430
+ name: "brutalism",
431
+ label: "Brutalism",
432
+ description: "Raw, unstyled web aesthetic \u2014 square corners, zero shadow, monospace type."
433
+ },
434
+ color: {
435
+ ...light.color,
436
+ background: "#ffffff",
437
+ surface: "#ffffff",
438
+ surfaceRaised: "#ffffff",
439
+ border: "#000000",
440
+ borderFocus: "#ff0000",
441
+ text: "#000000"
442
+ },
443
+ radius: { sm: "0px", md: "0px", lg: "0px", xl: "0px", "2xl": "0px", full: "0px" },
444
+ typography: { ...light.typography, fontSans: "'Courier New', monospace", fontMono: "'Courier New', monospace" },
445
+ shadow: { xs: "none", sm: "none", md: "none", lg: "none", xl: "none", "2xl": "none", inner: "none" },
446
+ border: { widthThin: "1px", widthMedium: "2px", widthThick: "3px", style: "solid" },
447
+ motion: { ...light.motion, durationFast: "0ms", durationNormal: "0ms", durationSlow: "0ms" },
448
+ effects: { backdropBlur: "0px" }
449
+ });
450
+
451
+ // src/tokens/themes/neobrutalism.ts
452
+ var neobrutalism = defineTheme({
453
+ ...light,
454
+ meta: {
455
+ name: "neobrutalism",
456
+ label: "Neo Brutalism",
457
+ description: "Bold black borders, flat offset shadows, saturated color blocks."
458
+ },
459
+ color: {
460
+ ...light.color,
461
+ background: "#fef3c7",
462
+ surface: "#ffffff",
463
+ surfaceRaised: "#ffffff",
464
+ border: "#000000",
465
+ borderFocus: "#000000"
466
+ },
467
+ radius: { sm: "4px", md: "6px", lg: "8px", xl: "10px", "2xl": "12px", full: "9999px" },
468
+ shadow: {
469
+ xs: "2px 2px 0 #000000",
470
+ sm: "3px 3px 0 #000000",
471
+ md: "4px 4px 0 #000000",
472
+ lg: "6px 6px 0 #000000",
473
+ xl: "8px 8px 0 #000000",
474
+ "2xl": "10px 10px 0 #000000",
475
+ inner: "inset 2px 2px 0 #000000"
476
+ },
477
+ border: { widthThin: "2px", widthMedium: "3px", widthThick: "4px", style: "solid" },
478
+ motion: { ...light.motion, durationFast: "80ms", durationNormal: "140ms", durationSlow: "200ms", easeStandard: "linear", easeEmphasized: "linear" },
479
+ effects: { backdropBlur: "0px" }
480
+ });
481
+
482
+ // src/tokens/themes/cyberpunk.ts
483
+ var cyberpunk = defineTheme({
484
+ ...dark,
485
+ meta: {
486
+ name: "cyberpunk",
487
+ label: "Cyberpunk",
488
+ description: "Neon-on-black, glowing edges, high-saturation magenta/cyan accents."
489
+ },
490
+ color: {
491
+ ...dark.color,
492
+ background: "#0a0014",
493
+ surface: "#12001f",
494
+ surfaceRaised: "#1a0230",
495
+ border: "#ff2bd6",
496
+ borderFocus: "#00f0ff",
497
+ text: "#e8faff",
498
+ textMuted: "#9a8cc9"
499
+ },
500
+ radius: { sm: "2px", md: "4px", lg: "6px", xl: "8px", "2xl": "10px", full: "9999px" },
501
+ shadow: {
502
+ xs: "0 0 6px rgba(255,43,214,0.5)",
503
+ sm: "0 0 12px rgba(255,43,214,0.55)",
504
+ md: "0 0 20px rgba(0,240,255,0.5)",
505
+ lg: "0 0 32px rgba(0,240,255,0.55)",
506
+ xl: "0 0 48px rgba(255,43,214,0.6)",
507
+ "2xl": "0 0 64px rgba(0,240,255,0.65)",
508
+ inner: "inset 0 0 8px rgba(255,43,214,0.4)"
509
+ },
510
+ border: { widthThin: "1px", widthMedium: "1.5px", widthThick: "2px", style: "solid" },
511
+ motion: { ...dark.motion, easeStandard: "cubic-bezier(0.83,0,0.17,1)", easeEmphasized: "cubic-bezier(0.9,0,0.1,1)" },
512
+ effects: { backdropBlur: "0px" }
513
+ });
514
+
515
+ // src/tokens/themes/gradient.ts
516
+ var gradient = defineTheme({
517
+ ...light,
518
+ meta: {
519
+ name: "gradient",
520
+ label: "Gradient",
521
+ description: "Vibrant, colorful transitions across surfaces and accents."
522
+ },
523
+ color: {
524
+ ...light.color,
525
+ background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
526
+ surface: "linear-gradient(135deg, rgba(255,255,255,0.92), rgba(255,255,255,0.75))",
527
+ surfaceRaised: "#ffffff",
528
+ border: "rgba(118,75,162,0.25)",
529
+ borderFocus: "#764ba2"
530
+ },
531
+ radius: { sm: "12px", md: "18px", lg: "24px", xl: "32px", "2xl": "40px", full: "9999px" },
532
+ shadow: {
533
+ xs: "0 2px 10px rgba(118,75,162,0.15)",
534
+ sm: "0 4px 20px rgba(118,75,162,0.18)",
535
+ md: "0 8px 30px rgba(118,75,162,0.22)",
536
+ lg: "0 16px 40px rgba(118,75,162,0.26)",
537
+ xl: "0 24px 56px rgba(118,75,162,0.3)",
538
+ "2xl": "0 32px 72px rgba(118,75,162,0.35)",
539
+ inner: "inset 0 1px 0 rgba(255,255,255,0.5)"
540
+ },
541
+ motion: { ...light.motion, durationNormal: "240ms", durationSlow: "380ms" },
542
+ effects: { backdropBlur: "0px" }
543
+ });
544
+
545
+ // src/tokens/themes/material.ts
546
+ var material = defineTheme({
547
+ ...light,
548
+ meta: {
549
+ name: "material",
550
+ label: "Material",
551
+ description: "Google Material Design-inspired elevation shadows and motion curves."
552
+ },
553
+ color: {
554
+ ...light.color,
555
+ surface: "#ffffff",
556
+ background: "#fafafa"
557
+ },
558
+ radius: { sm: "4px", md: "8px", lg: "12px", xl: "16px", "2xl": "28px", full: "9999px" },
559
+ typography: { ...light.typography, fontSans: "'Roboto', system-ui, sans-serif" },
560
+ shadow: {
561
+ xs: "0 1px 2px rgba(0,0,0,0.24)",
562
+ sm: "0 1px 4px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.12)",
563
+ md: "0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)",
564
+ lg: "0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)",
565
+ xl: "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)",
566
+ "2xl": "0 19px 38px rgba(0,0,0,0.3), 0 15px 12px rgba(0,0,0,0.22)",
567
+ inner: "inset 0 1px 2px rgba(0,0,0,0.12)"
568
+ },
569
+ motion: { ...light.motion, easeStandard: "cubic-bezier(0.4,0,0.2,1)", easeEmphasized: "cubic-bezier(0.0,0,0.2,1)" },
570
+ effects: { backdropBlur: "0px" }
571
+ });
572
+
573
+ // src/tokens/themes/skeuomorphism.ts
574
+ var skeuomorphism = defineTheme({
575
+ ...light,
576
+ meta: {
577
+ name: "skeuomorphism",
578
+ label: "Skeuomorphism",
579
+ description: "Realistic depth \u2014 soft embossed surfaces mimicking physical material."
580
+ },
581
+ color: {
582
+ ...light.color,
583
+ background: "#e8e4da",
584
+ surface: "#f0ece2",
585
+ surfaceRaised: "#f7f4ec",
586
+ border: "#c9c2b0",
587
+ text: "#3a3226"
588
+ },
589
+ radius: { sm: "8px", md: "12px", lg: "18px", xl: "24px", "2xl": "32px", full: "9999px" },
590
+ shadow: {
591
+ xs: "inset 0 1px 1px rgba(255,255,255,0.8), 0 1px 3px rgba(58,50,38,0.25)",
592
+ sm: "inset 0 1px 1px rgba(255,255,255,0.8), 0 2px 6px rgba(58,50,38,0.28)",
593
+ md: "inset 0 1px 1px rgba(255,255,255,0.8), 0 4px 10px rgba(58,50,38,0.3)",
594
+ lg: "inset 0 1px 1px rgba(255,255,255,0.8), 0 8px 18px rgba(58,50,38,0.32)",
595
+ xl: "inset 0 1px 1px rgba(255,255,255,0.8), 0 14px 28px rgba(58,50,38,0.35)",
596
+ "2xl": "inset 0 1px 1px rgba(255,255,255,0.8), 0 20px 40px rgba(58,50,38,0.38)",
597
+ inner: "inset 0 2px 4px rgba(58,50,38,0.3)"
598
+ },
599
+ motion: { ...light.motion, durationNormal: "220ms", easeStandard: "cubic-bezier(0.34,1.56,0.64,1)" },
600
+ effects: { backdropBlur: "0px" }
601
+ });
602
+
603
+ // src/tokens/registry.ts
604
+ var registry = /* @__PURE__ */ new Map();
605
+ function assertComplete(theme) {
606
+ const missing = findMissingTokenPaths(theme);
607
+ if (missing.length > 0) {
608
+ throw new Error(
609
+ `Theme "${theme.meta?.name ?? "unknown"}" is missing/empty required token(s): ${missing.join(", ")}`
610
+ );
611
+ }
612
+ }
613
+ function registerTheme(theme) {
614
+ assertComplete(theme);
615
+ registry.set(theme.meta.name, theme);
616
+ }
617
+ function getTheme(name) {
618
+ return registry.get(name);
619
+ }
620
+ function listThemes() {
621
+ return Array.from(registry.values());
622
+ }
623
+ registerTheme(light);
624
+ registerTheme(dark);
625
+ registerTheme(glass);
626
+ registerTheme(darkGlass);
627
+ registerTheme(minimalism);
628
+ registerTheme(brutalism);
629
+ registerTheme(neobrutalism);
630
+ registerTheme(cyberpunk);
631
+ registerTheme(gradient);
632
+ registerTheme(material);
633
+ registerTheme(skeuomorphism);
634
+
635
+ // src/tokens/accents/indigo.ts
636
+ var indigo = {
637
+ name: "indigo",
638
+ label: "Indigo",
639
+ scale: {
640
+ 50: "#f0f4ff",
641
+ 100: "#e0e8ff",
642
+ 200: "#c7d5fe",
643
+ 300: "#a5b4fc",
644
+ 400: "#818cf8",
645
+ 500: "#6366f1",
646
+ 600: "#4f46e5",
647
+ 700: "#4338ca",
648
+ 800: "#3730a3",
649
+ 900: "#312e81"
650
+ }
651
+ };
652
+
653
+ // src/tokens/accents/violet.ts
654
+ var violet = {
655
+ name: "violet",
656
+ label: "Violet",
657
+ scale: {
658
+ 50: "#faf5ff",
659
+ 100: "#f3e8ff",
660
+ 200: "#e9d5ff",
661
+ 300: "#d8b4fe",
662
+ 400: "#c084fc",
663
+ 500: "#a855f7",
664
+ 600: "#9333ea",
665
+ 700: "#7e22ce",
666
+ 800: "#6b21a8",
667
+ 900: "#581c87"
668
+ }
669
+ };
670
+
671
+ // src/tokens/accents/teal.ts
672
+ var teal = {
673
+ name: "teal",
674
+ label: "Teal",
675
+ scale: {
676
+ 50: "#f0fdfa",
677
+ 100: "#ccfbf1",
678
+ 200: "#99f6e4",
679
+ 300: "#5eead4",
680
+ 400: "#2dd4bf",
681
+ 500: "#14b8a6",
682
+ 600: "#0d9488",
683
+ 700: "#0f766e",
684
+ 800: "#115e59",
685
+ 900: "#134e4a"
686
+ }
687
+ };
688
+
689
+ // src/tokens/accents/rose.ts
690
+ var rose = {
691
+ name: "rose",
692
+ label: "Rose",
693
+ scale: {
694
+ 50: "#fff1f2",
695
+ 100: "#ffe4e6",
696
+ 200: "#fecdd3",
697
+ 300: "#fda4af",
698
+ 400: "#fb7185",
699
+ 500: "#f43f5e",
700
+ 600: "#e11d48",
701
+ 700: "#be123c",
702
+ 800: "#9f1239",
703
+ 900: "#881337"
704
+ }
705
+ };
706
+
707
+ // src/tokens/accents/amber.ts
708
+ var amber = {
709
+ name: "amber",
710
+ label: "Amber",
711
+ scale: {
712
+ 50: "#fffbeb",
713
+ 100: "#fef3c7",
714
+ 200: "#fde68a",
715
+ 300: "#fcd34d",
716
+ 400: "#fbbf24",
717
+ 500: "#f59e0b",
718
+ 600: "#d97706",
719
+ 700: "#b45309",
720
+ 800: "#92400e",
721
+ 900: "#78350f"
722
+ }
723
+ };
724
+
725
+ // src/tokens/accents/emerald.ts
726
+ var emerald = {
727
+ name: "emerald",
728
+ label: "Emerald",
729
+ scale: {
730
+ 50: "#ecfdf5",
731
+ 100: "#d1fae5",
732
+ 200: "#a7f3d0",
733
+ 300: "#6ee7b7",
734
+ 400: "#34d399",
735
+ 500: "#10b981",
736
+ 600: "#059669",
737
+ 700: "#047857",
738
+ 800: "#065f46",
739
+ 900: "#064e3b"
740
+ }
741
+ };
742
+
743
+ // src/tokens/accents/copper.ts
744
+ var copper = {
745
+ name: "copper",
746
+ label: "Copper",
747
+ scale: {
748
+ 50: "#fdf6ec",
749
+ 100: "#faebd2",
750
+ 200: "#f3d3a0",
751
+ 300: "#e9b56b",
752
+ 400: "#d99a45",
753
+ 500: "#b9752c",
754
+ 600: "#9c5d24",
755
+ 700: "#7d4a1f",
756
+ 800: "#623a1c",
757
+ 900: "#4e2f19"
758
+ }
759
+ };
760
+
761
+ // src/tokens/accents/graphite.ts
762
+ var graphite = {
763
+ name: "graphite",
764
+ label: "Graphite",
765
+ scale: {
766
+ 50: "#fafafa",
767
+ 100: "#f0f0f0",
768
+ 200: "#e0e0e0",
769
+ 300: "#c7c7c7",
770
+ 400: "#a3a3a3",
771
+ 500: "#525252",
772
+ 600: "#404040",
773
+ 700: "#262626",
774
+ 800: "#171717",
775
+ 900: "#0a0a0a"
776
+ }
777
+ };
778
+
779
+ // src/tokens/accents/magenta.ts
780
+ var magenta = {
781
+ name: "magenta",
782
+ label: "Magenta",
783
+ scale: {
784
+ 50: "#ffe0fb",
785
+ 100: "#ffb3f5",
786
+ 200: "#ff80ee",
787
+ 300: "#ff4de6",
788
+ 400: "#ff26e0",
789
+ 500: "#ff00d9",
790
+ 600: "#e600c4",
791
+ 700: "#cc00af",
792
+ 800: "#b3009a",
793
+ 900: "#800070"
794
+ }
795
+ };
796
+
797
+ // src/tokens/accents.ts
798
+ var registry2 = /* @__PURE__ */ new Map();
799
+ function assertCompleteScale(def) {
800
+ const missing = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900"].filter(
801
+ (k) => !def.scale[k]
802
+ );
803
+ if (missing.length > 0) {
804
+ throw new Error(`Accent "${def.name}" is missing scale step(s): ${missing.join(", ")}`);
805
+ }
806
+ }
807
+ function registerAccent(def) {
808
+ assertCompleteScale(def);
809
+ registry2.set(def.name, def);
810
+ }
811
+ function getAccent(name) {
812
+ return registry2.get(name);
813
+ }
814
+ function listAccents() {
815
+ return Array.from(registry2.values());
816
+ }
817
+ registerAccent(indigo);
818
+ registerAccent(violet);
819
+ registerAccent(teal);
820
+ registerAccent(rose);
821
+ registerAccent(amber);
822
+ registerAccent(emerald);
823
+ registerAccent(copper);
824
+ registerAccent(graphite);
825
+ registerAccent(magenta);
826
+
827
+ // src/core/colorpicker.ts
828
+ var DEFAULT_PRESETS = [
829
+ "#ef4444",
830
+ "#f97316",
831
+ "#f59e0b",
832
+ "#eab308",
833
+ "#84cc16",
834
+ "#22c55e",
835
+ "#10b981",
836
+ "#14b8a6",
837
+ "#06b6d4",
838
+ "#3b82f6",
839
+ "#6366f1",
840
+ "#8b5cf6",
841
+ "#a855f7",
842
+ "#d946ef",
843
+ "#ec4899",
844
+ "#6b7280",
845
+ "#171717",
846
+ "#ffffff"
847
+ ];
848
+
849
+ // src/core/table.ts
850
+ function getNextSortDirection(current) {
851
+ if (current === null) return "asc";
852
+ if (current === "asc") return "desc";
853
+ return null;
854
+ }
855
+ function getSelectAllState(totalCount, selectedCount) {
856
+ if (totalCount <= 0 || selectedCount <= 0) return "none";
857
+ if (selectedCount >= totalCount) return "all";
858
+ return "some";
859
+ }
860
+ // Annotate the CommonJS export names for ESM import in node:
861
+ 0 && (module.exports = {
862
+ DEFAULT_COLOR_PRESETS,
863
+ REQUIRED_TOKEN_PATHS,
864
+ TOKEN_CATEGORIES,
865
+ amber,
866
+ brutalism,
867
+ copper,
868
+ cyberpunk,
869
+ dark,
870
+ darkGlass,
871
+ defineTheme,
872
+ emerald,
873
+ findMissingTokenPaths,
874
+ getAccent,
875
+ getNextSortDirection,
876
+ getSelectAllState,
877
+ getTheme,
878
+ glass,
879
+ gradient,
880
+ graphite,
881
+ indigo,
882
+ light,
883
+ listAccents,
884
+ listThemes,
885
+ magenta,
886
+ material,
887
+ minimalism,
888
+ neobrutalism,
889
+ registerAccent,
890
+ registerTheme,
891
+ rose,
892
+ skeuomorphism,
893
+ teal,
894
+ violet
895
+ });
896
+ //# sourceMappingURL=index.cjs.map