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.
@@ -0,0 +1,1126 @@
1
+ // src/tokens/contract.ts
2
+ function defineTheme(tokens) {
3
+ return tokens;
4
+ }
5
+ var TOKEN_CATEGORIES = [
6
+ "meta",
7
+ "color",
8
+ "radius",
9
+ "spacing",
10
+ "typography",
11
+ "shadow",
12
+ "elevation",
13
+ "motion",
14
+ "border",
15
+ "effects"
16
+ ];
17
+ var REQUIRED_TOKEN_PATHS = [
18
+ "meta.name",
19
+ "meta.label",
20
+ "meta.description",
21
+ ...["0", "50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"].map((k) => `color.neutral.${k}`),
22
+ ...["success", "danger", "warning", "info"].flatMap(
23
+ (c) => ["light", "subtle", "base", "dark", "deeper"].map((k) => `color.${c}.${k}`)
24
+ ),
25
+ "color.background",
26
+ "color.surface",
27
+ "color.surfaceRaised",
28
+ "color.border",
29
+ "color.borderFocus",
30
+ "color.text",
31
+ "color.textMuted",
32
+ "color.textInverse",
33
+ "radius.sm",
34
+ "radius.md",
35
+ "radius.lg",
36
+ "radius.xl",
37
+ "radius.2xl",
38
+ "radius.full",
39
+ "spacing.xs",
40
+ "spacing.sm",
41
+ "spacing.md",
42
+ "spacing.lg",
43
+ "spacing.xl",
44
+ "spacing.2xl",
45
+ "typography.fontSans",
46
+ "typography.fontMono",
47
+ "typography.sizeXs",
48
+ "typography.sizeSm",
49
+ "typography.sizeMd",
50
+ "typography.sizeLg",
51
+ "typography.sizeXl",
52
+ "typography.weightNormal",
53
+ "typography.weightMedium",
54
+ "typography.weightBold",
55
+ "typography.lineHeightTight",
56
+ "typography.lineHeightNormal",
57
+ "shadow.xs",
58
+ "shadow.sm",
59
+ "shadow.md",
60
+ "shadow.lg",
61
+ "shadow.xl",
62
+ "shadow.2xl",
63
+ "shadow.inner",
64
+ "elevation.dropdown",
65
+ "elevation.popover",
66
+ "elevation.modal",
67
+ "elevation.toast",
68
+ "elevation.tooltip",
69
+ "motion.durationFast",
70
+ "motion.durationNormal",
71
+ "motion.durationSlow",
72
+ "motion.easeStandard",
73
+ "motion.easeEmphasized",
74
+ "motion.durationInstant",
75
+ "border.widthThin",
76
+ "border.widthMedium",
77
+ "border.widthThick",
78
+ "border.style",
79
+ "effects.backdropBlur"
80
+ ];
81
+ function getAtPath(obj, path) {
82
+ return path.split(".").reduce((acc, key) => {
83
+ if (acc === null || typeof acc !== "object") return void 0;
84
+ return acc[key];
85
+ }, obj);
86
+ }
87
+ function findMissingTokenPaths(theme) {
88
+ return REQUIRED_TOKEN_PATHS.filter((path) => {
89
+ const value = getAtPath(theme, path);
90
+ return value === null || value === void 0 || value === "";
91
+ });
92
+ }
93
+
94
+ // src/tokens/themes/light.ts
95
+ var light = defineTheme({
96
+ meta: {
97
+ name: "light",
98
+ label: "Light",
99
+ description: "Default, neutral, high-legibility surface."
100
+ },
101
+ color: {
102
+ neutral: {
103
+ 0: "#ffffff",
104
+ 50: "#f9fafb",
105
+ 100: "#f3f4f6",
106
+ 200: "#e5e7eb",
107
+ 300: "#d1d5db",
108
+ 400: "#9ca3af",
109
+ 500: "#6b7280",
110
+ 600: "#4b5563",
111
+ 700: "#374151",
112
+ 800: "#1f2937",
113
+ 900: "#111827",
114
+ 950: "#030712"
115
+ },
116
+ success: { light: "#d1fae5", subtle: "#a7f3d0", base: "#10b981", dark: "#059669", deeper: "#064e3b" },
117
+ danger: { light: "#fee2e2", subtle: "#fecaca", base: "#ef4444", dark: "#dc2626", deeper: "#7f1d1d" },
118
+ warning: { light: "#fef3c7", subtle: "#fde68a", base: "#f59e0b", dark: "#d97706", deeper: "#78350f" },
119
+ info: { light: "#dbeafe", subtle: "#bfdbfe", base: "#3b82f6", dark: "#2563eb", deeper: "#1e3a5f" },
120
+ background: "#ffffff",
121
+ surface: "#ffffff",
122
+ surfaceRaised: "#ffffff",
123
+ border: "#e5e7eb",
124
+ // Neutral, not brand-tied — the actual focus-ring color
125
+ // interactive components use is the picked accent
126
+ // (--color-brand-500/600), not this. This exists for
127
+ // non-branded emphasis borders.
128
+ borderFocus: "#9ca3af",
129
+ text: "#111827",
130
+ textMuted: "#6b7280",
131
+ textInverse: "#ffffff"
132
+ },
133
+ radius: { sm: "6px", md: "10px", lg: "14px", xl: "18px", "2xl": "24px", full: "9999px" },
134
+ spacing: { xs: "4px", sm: "8px", md: "12px", lg: "16px", xl: "24px", "2xl": "32px" },
135
+ typography: {
136
+ fontSans: "'Inter', system-ui, sans-serif",
137
+ fontMono: "'JetBrains Mono', monospace",
138
+ sizeXs: "12px",
139
+ sizeSm: "14px",
140
+ sizeMd: "16px",
141
+ sizeLg: "18px",
142
+ sizeXl: "22px",
143
+ weightNormal: "400",
144
+ weightMedium: "500",
145
+ weightBold: "700",
146
+ lineHeightTight: "1.2",
147
+ lineHeightNormal: "1.5"
148
+ },
149
+ shadow: {
150
+ xs: "0 1px 2px rgba(0,0,0,0.05)",
151
+ sm: "0 2px 6px rgba(0,0,0,0.06)",
152
+ md: "0 4px 12px rgba(0,0,0,0.08)",
153
+ lg: "0 10px 24px rgba(0,0,0,0.10)",
154
+ xl: "0 20px 40px rgba(0,0,0,0.12)",
155
+ "2xl": "0 28px 56px rgba(0,0,0,0.16)",
156
+ inner: "inset 0 1px 2px rgba(0,0,0,0.05)"
157
+ },
158
+ elevation: { dropdown: 1e3, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },
159
+ motion: {
160
+ durationFast: "120ms",
161
+ durationNormal: "200ms",
162
+ durationSlow: "320ms",
163
+ easeStandard: "cubic-bezier(0.4, 0, 0.2, 1)",
164
+ easeEmphasized: "cubic-bezier(0.2, 0, 0, 1)",
165
+ durationInstant: "0ms"
166
+ },
167
+ border: { widthThin: "1px", widthMedium: "1.5px", widthThick: "2px", style: "solid" },
168
+ effects: { backdropBlur: "0px" }
169
+ });
170
+
171
+ // src/tokens/themes/dark.ts
172
+ var dark = defineTheme({
173
+ meta: {
174
+ name: "dark",
175
+ label: "Dark",
176
+ description: "Low-glare surface for extended use."
177
+ },
178
+ color: {
179
+ neutral: {
180
+ 0: "#030712",
181
+ 50: "#111827",
182
+ 100: "#1f2937",
183
+ 200: "#374151",
184
+ 300: "#4b5563",
185
+ 400: "#6b7280",
186
+ 500: "#9ca3af",
187
+ 600: "#d1d5db",
188
+ 700: "#e5e7eb",
189
+ 800: "#f3f4f6",
190
+ 900: "#f9fafb",
191
+ 950: "#ffffff"
192
+ },
193
+ success: { light: "#064e3b", subtle: "#065f46", base: "#34d399", dark: "#6ee7b7", deeper: "#d1fae5" },
194
+ danger: { light: "#7f1d1d", subtle: "#991b1b", base: "#f87171", dark: "#fca5a5", deeper: "#fee2e2" },
195
+ warning: { light: "#78350f", subtle: "#92400e", base: "#fbbf24", dark: "#fcd34d", deeper: "#fef3c7" },
196
+ info: { light: "#1e3a5f", subtle: "#1e40af", base: "#60a5fa", dark: "#93c5fd", deeper: "#dbeafe" },
197
+ background: "#0b0f19",
198
+ surface: "#131826",
199
+ surfaceRaised: "#1c2333",
200
+ border: "#2a3143",
201
+ borderFocus: "#6b7280",
202
+ text: "#f3f4f6",
203
+ textMuted: "#9ca3af",
204
+ textInverse: "#111827"
205
+ },
206
+ radius: { sm: "6px", md: "10px", lg: "14px", xl: "18px", "2xl": "24px", full: "9999px" },
207
+ spacing: { xs: "4px", sm: "8px", md: "12px", lg: "16px", xl: "24px", "2xl": "32px" },
208
+ typography: {
209
+ fontSans: "'Inter', system-ui, sans-serif",
210
+ fontMono: "'JetBrains Mono', monospace",
211
+ sizeXs: "12px",
212
+ sizeSm: "14px",
213
+ sizeMd: "16px",
214
+ sizeLg: "18px",
215
+ sizeXl: "22px",
216
+ weightNormal: "400",
217
+ weightMedium: "500",
218
+ weightBold: "700",
219
+ lineHeightTight: "1.2",
220
+ lineHeightNormal: "1.5"
221
+ },
222
+ shadow: {
223
+ xs: "0 1px 2px rgba(0,0,0,0.4)",
224
+ sm: "0 2px 6px rgba(0,0,0,0.45)",
225
+ md: "0 4px 12px rgba(0,0,0,0.5)",
226
+ lg: "0 10px 24px rgba(0,0,0,0.55)",
227
+ xl: "0 20px 40px rgba(0,0,0,0.6)",
228
+ "2xl": "0 28px 56px rgba(0,0,0,0.65)",
229
+ inner: "inset 0 1px 2px rgba(0,0,0,0.4)"
230
+ },
231
+ elevation: { dropdown: 1e3, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },
232
+ motion: {
233
+ durationFast: "120ms",
234
+ durationNormal: "200ms",
235
+ durationSlow: "320ms",
236
+ easeStandard: "cubic-bezier(0.4, 0, 0.2, 1)",
237
+ easeEmphasized: "cubic-bezier(0.2, 0, 0, 1)",
238
+ durationInstant: "0ms"
239
+ },
240
+ border: { widthThin: "1px", widthMedium: "1.5px", widthThick: "2px", style: "solid" },
241
+ effects: { backdropBlur: "0px" }
242
+ });
243
+
244
+ // src/tokens/themes/glass.ts
245
+ var glass = defineTheme({
246
+ meta: {
247
+ name: "glass",
248
+ label: "Glass",
249
+ description: "Translucent, softly rounded, floating surfaces. Needs a rich background behind it."
250
+ },
251
+ color: {
252
+ neutral: {
253
+ 0: "#ffffff",
254
+ 50: "#f9fafb",
255
+ 100: "#f3f4f6",
256
+ 200: "#e5e7eb",
257
+ 300: "#d1d5db",
258
+ 400: "#9ca3af",
259
+ 500: "#6b7280",
260
+ 600: "#4b5563",
261
+ 700: "#374151",
262
+ 800: "#1f2937",
263
+ 900: "#111827",
264
+ 950: "#030712"
265
+ },
266
+ success: { light: "#d1fae5", subtle: "#a7f3d0", base: "#10b981", dark: "#059669", deeper: "#064e3b" },
267
+ danger: { light: "#fee2e2", subtle: "#fecaca", base: "#ef4444", dark: "#dc2626", deeper: "#7f1d1d" },
268
+ warning: { light: "#fef3c7", subtle: "#fde68a", base: "#f59e0b", dark: "#d97706", deeper: "#78350f" },
269
+ info: { light: "#dbeafe", subtle: "#bfdbfe", base: "#3b82f6", dark: "#2563eb", deeper: "#1e3a5f" },
270
+ background: "transparent",
271
+ surface: "rgba(255,255,255,0.55)",
272
+ surfaceRaised: "rgba(255,255,255,0.75)",
273
+ border: "rgba(255,255,255,0.35)",
274
+ borderFocus: "#9ca3af",
275
+ text: "#111827",
276
+ textMuted: "rgba(17,24,39,0.65)",
277
+ textInverse: "#ffffff"
278
+ },
279
+ // Notably rounder than light/dark — this is a shape difference, not just color.
280
+ radius: { sm: "10px", md: "16px", lg: "22px", xl: "28px", "2xl": "36px", full: "9999px" },
281
+ spacing: { xs: "4px", sm: "8px", md: "12px", lg: "16px", xl: "24px", "2xl": "32px" },
282
+ typography: {
283
+ fontSans: "'Inter', system-ui, sans-serif",
284
+ fontMono: "'JetBrains Mono', monospace",
285
+ sizeXs: "12px",
286
+ sizeSm: "14px",
287
+ sizeMd: "16px",
288
+ sizeLg: "18px",
289
+ sizeXl: "22px",
290
+ weightNormal: "400",
291
+ weightMedium: "500",
292
+ weightBold: "700",
293
+ lineHeightTight: "1.2",
294
+ lineHeightNormal: "1.5"
295
+ },
296
+ shadow: {
297
+ xs: "0 2px 8px rgba(0,0,0,0.06)",
298
+ sm: "0 4px 16px rgba(0,0,0,0.08)",
299
+ md: "0 8px 32px rgba(0,0,0,0.10)",
300
+ lg: "0 16px 48px rgba(0,0,0,0.12)",
301
+ xl: "0 24px 64px rgba(0,0,0,0.14)",
302
+ "2xl": "0 32px 80px rgba(0,0,0,0.18)",
303
+ inner: "inset 0 1px 0 rgba(255,255,255,0.4)"
304
+ },
305
+ elevation: { dropdown: 1e3, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },
306
+ motion: {
307
+ // Slightly slower/softer than light/dark — matches "everything floats".
308
+ durationFast: "160ms",
309
+ durationNormal: "260ms",
310
+ durationSlow: "400ms",
311
+ easeStandard: "cubic-bezier(0.25, 0.1, 0.25, 1)",
312
+ easeEmphasized: "cubic-bezier(0.16, 1, 0.3, 1)",
313
+ durationInstant: "0ms"
314
+ },
315
+ border: { widthThin: "1px", widthMedium: "1px", widthThick: "1.5px", style: "solid" },
316
+ effects: { backdropBlur: "16px" }
317
+ });
318
+
319
+ // src/tokens/themes/dark-glass.ts
320
+ var darkGlass = defineTheme({
321
+ ...dark,
322
+ meta: {
323
+ name: "dark-glass",
324
+ label: "Dark Glass",
325
+ description: "Translucent glass panels floating over a dark background."
326
+ },
327
+ color: {
328
+ ...dark.color,
329
+ background: "#05070d",
330
+ surface: "rgba(255,255,255,0.06)",
331
+ surfaceRaised: "rgba(255,255,255,0.10)",
332
+ border: "rgba(255,255,255,0.12)"
333
+ },
334
+ radius: { sm: "10px", md: "16px", lg: "22px", xl: "28px", "2xl": "36px", full: "9999px" },
335
+ shadow: {
336
+ xs: "0 2px 8px rgba(0,0,0,0.5)",
337
+ sm: "0 4px 16px rgba(0,0,0,0.55)",
338
+ md: "0 8px 32px rgba(0,0,0,0.6)",
339
+ lg: "0 16px 48px rgba(0,0,0,0.65)",
340
+ xl: "0 24px 64px rgba(0,0,0,0.7)",
341
+ "2xl": "0 32px 80px rgba(0,0,0,0.75)",
342
+ inner: "inset 0 1px 0 rgba(255,255,255,0.08)"
343
+ },
344
+ motion: { ...dark.motion, durationFast: "160ms", durationNormal: "260ms", durationSlow: "400ms" },
345
+ effects: { backdropBlur: "18px" }
346
+ });
347
+
348
+ // src/tokens/themes/minimalism.ts
349
+ var minimalism = defineTheme({
350
+ ...light,
351
+ meta: {
352
+ name: "minimalism",
353
+ label: "Minimalism",
354
+ description: "Reduced to essentials \u2014 thin borders, flat surfaces, no shadow, tight radius."
355
+ },
356
+ color: {
357
+ ...light.color,
358
+ border: "#e2e2e2",
359
+ surface: "#ffffff",
360
+ surfaceRaised: "#ffffff"
361
+ },
362
+ radius: { sm: "2px", md: "3px", lg: "4px", xl: "6px", "2xl": "8px", full: "9999px" },
363
+ shadow: { xs: "none", sm: "none", md: "none", lg: "none", xl: "none", "2xl": "none", inner: "none" },
364
+ border: { widthThin: "1px", widthMedium: "1px", widthThick: "1px", style: "solid" },
365
+ effects: { backdropBlur: "0px" }
366
+ });
367
+
368
+ // src/tokens/themes/brutalism.ts
369
+ var brutalism = defineTheme({
370
+ ...light,
371
+ meta: {
372
+ name: "brutalism",
373
+ label: "Brutalism",
374
+ description: "Raw, unstyled web aesthetic \u2014 square corners, zero shadow, monospace type."
375
+ },
376
+ color: {
377
+ ...light.color,
378
+ background: "#ffffff",
379
+ surface: "#ffffff",
380
+ surfaceRaised: "#ffffff",
381
+ border: "#000000",
382
+ borderFocus: "#ff0000",
383
+ text: "#000000"
384
+ },
385
+ radius: { sm: "0px", md: "0px", lg: "0px", xl: "0px", "2xl": "0px", full: "0px" },
386
+ typography: { ...light.typography, fontSans: "'Courier New', monospace", fontMono: "'Courier New', monospace" },
387
+ shadow: { xs: "none", sm: "none", md: "none", lg: "none", xl: "none", "2xl": "none", inner: "none" },
388
+ border: { widthThin: "1px", widthMedium: "2px", widthThick: "3px", style: "solid" },
389
+ motion: { ...light.motion, durationFast: "0ms", durationNormal: "0ms", durationSlow: "0ms" },
390
+ effects: { backdropBlur: "0px" }
391
+ });
392
+
393
+ // src/tokens/themes/neobrutalism.ts
394
+ var neobrutalism = defineTheme({
395
+ ...light,
396
+ meta: {
397
+ name: "neobrutalism",
398
+ label: "Neo Brutalism",
399
+ description: "Bold black borders, flat offset shadows, saturated color blocks."
400
+ },
401
+ color: {
402
+ ...light.color,
403
+ background: "#fef3c7",
404
+ surface: "#ffffff",
405
+ surfaceRaised: "#ffffff",
406
+ border: "#000000",
407
+ borderFocus: "#000000"
408
+ },
409
+ radius: { sm: "4px", md: "6px", lg: "8px", xl: "10px", "2xl": "12px", full: "9999px" },
410
+ shadow: {
411
+ xs: "2px 2px 0 #000000",
412
+ sm: "3px 3px 0 #000000",
413
+ md: "4px 4px 0 #000000",
414
+ lg: "6px 6px 0 #000000",
415
+ xl: "8px 8px 0 #000000",
416
+ "2xl": "10px 10px 0 #000000",
417
+ inner: "inset 2px 2px 0 #000000"
418
+ },
419
+ border: { widthThin: "2px", widthMedium: "3px", widthThick: "4px", style: "solid" },
420
+ motion: { ...light.motion, durationFast: "80ms", durationNormal: "140ms", durationSlow: "200ms", easeStandard: "linear", easeEmphasized: "linear" },
421
+ effects: { backdropBlur: "0px" }
422
+ });
423
+
424
+ // src/tokens/themes/cyberpunk.ts
425
+ var cyberpunk = defineTheme({
426
+ ...dark,
427
+ meta: {
428
+ name: "cyberpunk",
429
+ label: "Cyberpunk",
430
+ description: "Neon-on-black, glowing edges, high-saturation magenta/cyan accents."
431
+ },
432
+ color: {
433
+ ...dark.color,
434
+ background: "#0a0014",
435
+ surface: "#12001f",
436
+ surfaceRaised: "#1a0230",
437
+ border: "#ff2bd6",
438
+ borderFocus: "#00f0ff",
439
+ text: "#e8faff",
440
+ textMuted: "#9a8cc9"
441
+ },
442
+ radius: { sm: "2px", md: "4px", lg: "6px", xl: "8px", "2xl": "10px", full: "9999px" },
443
+ shadow: {
444
+ xs: "0 0 6px rgba(255,43,214,0.5)",
445
+ sm: "0 0 12px rgba(255,43,214,0.55)",
446
+ md: "0 0 20px rgba(0,240,255,0.5)",
447
+ lg: "0 0 32px rgba(0,240,255,0.55)",
448
+ xl: "0 0 48px rgba(255,43,214,0.6)",
449
+ "2xl": "0 0 64px rgba(0,240,255,0.65)",
450
+ inner: "inset 0 0 8px rgba(255,43,214,0.4)"
451
+ },
452
+ border: { widthThin: "1px", widthMedium: "1.5px", widthThick: "2px", style: "solid" },
453
+ motion: { ...dark.motion, easeStandard: "cubic-bezier(0.83,0,0.17,1)", easeEmphasized: "cubic-bezier(0.9,0,0.1,1)" },
454
+ effects: { backdropBlur: "0px" }
455
+ });
456
+
457
+ // src/tokens/themes/gradient.ts
458
+ var gradient = defineTheme({
459
+ ...light,
460
+ meta: {
461
+ name: "gradient",
462
+ label: "Gradient",
463
+ description: "Vibrant, colorful transitions across surfaces and accents."
464
+ },
465
+ color: {
466
+ ...light.color,
467
+ background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
468
+ surface: "linear-gradient(135deg, rgba(255,255,255,0.92), rgba(255,255,255,0.75))",
469
+ surfaceRaised: "#ffffff",
470
+ border: "rgba(118,75,162,0.25)",
471
+ borderFocus: "#764ba2"
472
+ },
473
+ radius: { sm: "12px", md: "18px", lg: "24px", xl: "32px", "2xl": "40px", full: "9999px" },
474
+ shadow: {
475
+ xs: "0 2px 10px rgba(118,75,162,0.15)",
476
+ sm: "0 4px 20px rgba(118,75,162,0.18)",
477
+ md: "0 8px 30px rgba(118,75,162,0.22)",
478
+ lg: "0 16px 40px rgba(118,75,162,0.26)",
479
+ xl: "0 24px 56px rgba(118,75,162,0.3)",
480
+ "2xl": "0 32px 72px rgba(118,75,162,0.35)",
481
+ inner: "inset 0 1px 0 rgba(255,255,255,0.5)"
482
+ },
483
+ motion: { ...light.motion, durationNormal: "240ms", durationSlow: "380ms" },
484
+ effects: { backdropBlur: "0px" }
485
+ });
486
+
487
+ // src/tokens/themes/material.ts
488
+ var material = defineTheme({
489
+ ...light,
490
+ meta: {
491
+ name: "material",
492
+ label: "Material",
493
+ description: "Google Material Design-inspired elevation shadows and motion curves."
494
+ },
495
+ color: {
496
+ ...light.color,
497
+ surface: "#ffffff",
498
+ background: "#fafafa"
499
+ },
500
+ radius: { sm: "4px", md: "8px", lg: "12px", xl: "16px", "2xl": "28px", full: "9999px" },
501
+ typography: { ...light.typography, fontSans: "'Roboto', system-ui, sans-serif" },
502
+ shadow: {
503
+ xs: "0 1px 2px rgba(0,0,0,0.24)",
504
+ sm: "0 1px 4px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.12)",
505
+ md: "0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)",
506
+ lg: "0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)",
507
+ xl: "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)",
508
+ "2xl": "0 19px 38px rgba(0,0,0,0.3), 0 15px 12px rgba(0,0,0,0.22)",
509
+ inner: "inset 0 1px 2px rgba(0,0,0,0.12)"
510
+ },
511
+ motion: { ...light.motion, easeStandard: "cubic-bezier(0.4,0,0.2,1)", easeEmphasized: "cubic-bezier(0.0,0,0.2,1)" },
512
+ effects: { backdropBlur: "0px" }
513
+ });
514
+
515
+ // src/tokens/themes/skeuomorphism.ts
516
+ var skeuomorphism = defineTheme({
517
+ ...light,
518
+ meta: {
519
+ name: "skeuomorphism",
520
+ label: "Skeuomorphism",
521
+ description: "Realistic depth \u2014 soft embossed surfaces mimicking physical material."
522
+ },
523
+ color: {
524
+ ...light.color,
525
+ background: "#e8e4da",
526
+ surface: "#f0ece2",
527
+ surfaceRaised: "#f7f4ec",
528
+ border: "#c9c2b0",
529
+ text: "#3a3226"
530
+ },
531
+ radius: { sm: "8px", md: "12px", lg: "18px", xl: "24px", "2xl": "32px", full: "9999px" },
532
+ shadow: {
533
+ xs: "inset 0 1px 1px rgba(255,255,255,0.8), 0 1px 3px rgba(58,50,38,0.25)",
534
+ sm: "inset 0 1px 1px rgba(255,255,255,0.8), 0 2px 6px rgba(58,50,38,0.28)",
535
+ md: "inset 0 1px 1px rgba(255,255,255,0.8), 0 4px 10px rgba(58,50,38,0.3)",
536
+ lg: "inset 0 1px 1px rgba(255,255,255,0.8), 0 8px 18px rgba(58,50,38,0.32)",
537
+ xl: "inset 0 1px 1px rgba(255,255,255,0.8), 0 14px 28px rgba(58,50,38,0.35)",
538
+ "2xl": "inset 0 1px 1px rgba(255,255,255,0.8), 0 20px 40px rgba(58,50,38,0.38)",
539
+ inner: "inset 0 2px 4px rgba(58,50,38,0.3)"
540
+ },
541
+ motion: { ...light.motion, durationNormal: "220ms", easeStandard: "cubic-bezier(0.34,1.56,0.64,1)" },
542
+ effects: { backdropBlur: "0px" }
543
+ });
544
+
545
+ // src/tokens/registry.ts
546
+ var registry = /* @__PURE__ */ new Map();
547
+ function assertComplete(theme) {
548
+ const missing = findMissingTokenPaths(theme);
549
+ if (missing.length > 0) {
550
+ throw new Error(
551
+ `Theme "${theme.meta?.name ?? "unknown"}" is missing/empty required token(s): ${missing.join(", ")}`
552
+ );
553
+ }
554
+ }
555
+ function registerTheme(theme) {
556
+ assertComplete(theme);
557
+ registry.set(theme.meta.name, theme);
558
+ }
559
+ function getTheme(name) {
560
+ return registry.get(name);
561
+ }
562
+ function listThemes() {
563
+ return Array.from(registry.values());
564
+ }
565
+ registerTheme(light);
566
+ registerTheme(dark);
567
+ registerTheme(glass);
568
+ registerTheme(darkGlass);
569
+ registerTheme(minimalism);
570
+ registerTheme(brutalism);
571
+ registerTheme(neobrutalism);
572
+ registerTheme(cyberpunk);
573
+ registerTheme(gradient);
574
+ registerTheme(material);
575
+ registerTheme(skeuomorphism);
576
+
577
+ // src/tokens/accents/indigo.ts
578
+ var indigo = {
579
+ name: "indigo",
580
+ label: "Indigo",
581
+ scale: {
582
+ 50: "#f0f4ff",
583
+ 100: "#e0e8ff",
584
+ 200: "#c7d5fe",
585
+ 300: "#a5b4fc",
586
+ 400: "#818cf8",
587
+ 500: "#6366f1",
588
+ 600: "#4f46e5",
589
+ 700: "#4338ca",
590
+ 800: "#3730a3",
591
+ 900: "#312e81"
592
+ }
593
+ };
594
+
595
+ // src/tokens/accents/violet.ts
596
+ var violet = {
597
+ name: "violet",
598
+ label: "Violet",
599
+ scale: {
600
+ 50: "#faf5ff",
601
+ 100: "#f3e8ff",
602
+ 200: "#e9d5ff",
603
+ 300: "#d8b4fe",
604
+ 400: "#c084fc",
605
+ 500: "#a855f7",
606
+ 600: "#9333ea",
607
+ 700: "#7e22ce",
608
+ 800: "#6b21a8",
609
+ 900: "#581c87"
610
+ }
611
+ };
612
+
613
+ // src/tokens/accents/teal.ts
614
+ var teal = {
615
+ name: "teal",
616
+ label: "Teal",
617
+ scale: {
618
+ 50: "#f0fdfa",
619
+ 100: "#ccfbf1",
620
+ 200: "#99f6e4",
621
+ 300: "#5eead4",
622
+ 400: "#2dd4bf",
623
+ 500: "#14b8a6",
624
+ 600: "#0d9488",
625
+ 700: "#0f766e",
626
+ 800: "#115e59",
627
+ 900: "#134e4a"
628
+ }
629
+ };
630
+
631
+ // src/tokens/accents/rose.ts
632
+ var rose = {
633
+ name: "rose",
634
+ label: "Rose",
635
+ scale: {
636
+ 50: "#fff1f2",
637
+ 100: "#ffe4e6",
638
+ 200: "#fecdd3",
639
+ 300: "#fda4af",
640
+ 400: "#fb7185",
641
+ 500: "#f43f5e",
642
+ 600: "#e11d48",
643
+ 700: "#be123c",
644
+ 800: "#9f1239",
645
+ 900: "#881337"
646
+ }
647
+ };
648
+
649
+ // src/tokens/accents/amber.ts
650
+ var amber = {
651
+ name: "amber",
652
+ label: "Amber",
653
+ scale: {
654
+ 50: "#fffbeb",
655
+ 100: "#fef3c7",
656
+ 200: "#fde68a",
657
+ 300: "#fcd34d",
658
+ 400: "#fbbf24",
659
+ 500: "#f59e0b",
660
+ 600: "#d97706",
661
+ 700: "#b45309",
662
+ 800: "#92400e",
663
+ 900: "#78350f"
664
+ }
665
+ };
666
+
667
+ // src/tokens/accents/emerald.ts
668
+ var emerald = {
669
+ name: "emerald",
670
+ label: "Emerald",
671
+ scale: {
672
+ 50: "#ecfdf5",
673
+ 100: "#d1fae5",
674
+ 200: "#a7f3d0",
675
+ 300: "#6ee7b7",
676
+ 400: "#34d399",
677
+ 500: "#10b981",
678
+ 600: "#059669",
679
+ 700: "#047857",
680
+ 800: "#065f46",
681
+ 900: "#064e3b"
682
+ }
683
+ };
684
+
685
+ // src/tokens/accents/copper.ts
686
+ var copper = {
687
+ name: "copper",
688
+ label: "Copper",
689
+ scale: {
690
+ 50: "#fdf6ec",
691
+ 100: "#faebd2",
692
+ 200: "#f3d3a0",
693
+ 300: "#e9b56b",
694
+ 400: "#d99a45",
695
+ 500: "#b9752c",
696
+ 600: "#9c5d24",
697
+ 700: "#7d4a1f",
698
+ 800: "#623a1c",
699
+ 900: "#4e2f19"
700
+ }
701
+ };
702
+
703
+ // src/tokens/accents/graphite.ts
704
+ var graphite = {
705
+ name: "graphite",
706
+ label: "Graphite",
707
+ scale: {
708
+ 50: "#fafafa",
709
+ 100: "#f0f0f0",
710
+ 200: "#e0e0e0",
711
+ 300: "#c7c7c7",
712
+ 400: "#a3a3a3",
713
+ 500: "#525252",
714
+ 600: "#404040",
715
+ 700: "#262626",
716
+ 800: "#171717",
717
+ 900: "#0a0a0a"
718
+ }
719
+ };
720
+
721
+ // src/tokens/accents/magenta.ts
722
+ var magenta = {
723
+ name: "magenta",
724
+ label: "Magenta",
725
+ scale: {
726
+ 50: "#ffe0fb",
727
+ 100: "#ffb3f5",
728
+ 200: "#ff80ee",
729
+ 300: "#ff4de6",
730
+ 400: "#ff26e0",
731
+ 500: "#ff00d9",
732
+ 600: "#e600c4",
733
+ 700: "#cc00af",
734
+ 800: "#b3009a",
735
+ 900: "#800070"
736
+ }
737
+ };
738
+
739
+ // src/tokens/accents.ts
740
+ var registry2 = /* @__PURE__ */ new Map();
741
+ function assertCompleteScale(def) {
742
+ const missing = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900"].filter(
743
+ (k) => !def.scale[k]
744
+ );
745
+ if (missing.length > 0) {
746
+ throw new Error(`Accent "${def.name}" is missing scale step(s): ${missing.join(", ")}`);
747
+ }
748
+ }
749
+ function registerAccent(def) {
750
+ assertCompleteScale(def);
751
+ registry2.set(def.name, def);
752
+ }
753
+ function getAccent(name) {
754
+ return registry2.get(name);
755
+ }
756
+ function listAccents() {
757
+ return Array.from(registry2.values());
758
+ }
759
+ registerAccent(indigo);
760
+ registerAccent(violet);
761
+ registerAccent(teal);
762
+ registerAccent(rose);
763
+ registerAccent(amber);
764
+ registerAccent(emerald);
765
+ registerAccent(copper);
766
+ registerAccent(graphite);
767
+ registerAccent(magenta);
768
+ var DEFAULT_ACCENT = "indigo";
769
+
770
+ // src/core/field.ts
771
+ function resolveFieldState(props) {
772
+ return {
773
+ // ?? throughout, never || (CONTRACT.md Rule 3) — `error={false}`
774
+ // or `disabled={false}` must not be silently discarded.
775
+ isDisabled: props.disabled ?? false,
776
+ isRequired: props.required ?? false,
777
+ isInvalid: props.error ?? false,
778
+ size: props.size ?? "md"
779
+ };
780
+ }
781
+ function getFieldAriaProps(state, describedBy) {
782
+ return {
783
+ "aria-invalid": state.isInvalid ? true : void 0,
784
+ "aria-required": state.isRequired ? true : void 0,
785
+ "aria-describedby": describedBy
786
+ };
787
+ }
788
+
789
+ // src/core/colorpicker.ts
790
+ var DEFAULT_PRESETS = [
791
+ "#ef4444",
792
+ "#f97316",
793
+ "#f59e0b",
794
+ "#eab308",
795
+ "#84cc16",
796
+ "#22c55e",
797
+ "#10b981",
798
+ "#14b8a6",
799
+ "#06b6d4",
800
+ "#3b82f6",
801
+ "#6366f1",
802
+ "#8b5cf6",
803
+ "#a855f7",
804
+ "#d946ef",
805
+ "#ec4899",
806
+ "#6b7280",
807
+ "#171717",
808
+ "#ffffff"
809
+ ];
810
+ function resolveColorPickerState(props) {
811
+ return {
812
+ ...resolveFieldState(props),
813
+ presets: props.presets ?? DEFAULT_PRESETS,
814
+ variant: props.variant ?? "both"
815
+ };
816
+ }
817
+ var HEX_RE = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
818
+ function normalizeHex(text) {
819
+ const trimmed = text.trim();
820
+ const match = trimmed.match(HEX_RE);
821
+ if (!match) return null;
822
+ let hex = match[1].toLowerCase();
823
+ if (hex.length === 3) {
824
+ hex = hex.split("").map((c) => c + c).join("");
825
+ }
826
+ return `#${hex}`;
827
+ }
828
+ function isSameColor(a, b) {
829
+ if (!a || !b) return a === b;
830
+ const na = normalizeHex(a);
831
+ const nb = normalizeHex(b);
832
+ return na !== null && na === nb;
833
+ }
834
+ function getSwatchClasses(input) {
835
+ return [
836
+ "nx-colorpicker__swatch-option",
837
+ input.isSelected && "nx-colorpicker__swatch-option--selected",
838
+ input.isActive && "nx-colorpicker__swatch-option--active"
839
+ ].filter(Boolean).join(" ");
840
+ }
841
+ function getSwatchGridAriaProps(label) {
842
+ return { role: "listbox", "aria-label": label };
843
+ }
844
+ function getSwatchAriaProps(input) {
845
+ return {
846
+ role: "option",
847
+ "aria-selected": input.isSelected,
848
+ "aria-label": input.label,
849
+ tabIndex: input.isFocusable ? 0 : -1
850
+ };
851
+ }
852
+ function getFieldTriggerAriaProps(state, describedBy) {
853
+ return getFieldAriaProps(state, describedBy);
854
+ }
855
+ var COLOR_FORMATS = ["hex", "rgb", "hsl"];
856
+ function clampNum(n, min, max) {
857
+ return Math.min(Math.max(n, min), max);
858
+ }
859
+ function hexToRgb(hex) {
860
+ const normalized = normalizeHex(hex);
861
+ if (!normalized) return null;
862
+ return {
863
+ r: parseInt(normalized.slice(1, 3), 16),
864
+ g: parseInt(normalized.slice(3, 5), 16),
865
+ b: parseInt(normalized.slice(5, 7), 16)
866
+ };
867
+ }
868
+ function rgbToHex({ r, g, b }) {
869
+ const channel = (n) => clampNum(Math.round(n), 0, 255).toString(16).padStart(2, "0");
870
+ return `#${channel(r)}${channel(g)}${channel(b)}`;
871
+ }
872
+ function rgbToHsv({ r, g, b }) {
873
+ const rn = r / 255, gn = g / 255, bn = b / 255;
874
+ const max = Math.max(rn, gn, bn), min = Math.min(rn, gn, bn);
875
+ const d = max - min;
876
+ let h = 0;
877
+ if (d !== 0) {
878
+ if (max === rn) h = (gn - bn) / d % 6;
879
+ else if (max === gn) h = (bn - rn) / d + 2;
880
+ else h = (rn - gn) / d + 4;
881
+ h *= 60;
882
+ if (h < 0) h += 360;
883
+ }
884
+ const s = max === 0 ? 0 : d / max;
885
+ return { h, s: s * 100, v: max * 100 };
886
+ }
887
+ function hsvToRgb({ h, s, v }) {
888
+ const s1 = clampNum(s, 0, 100) / 100;
889
+ const v1 = clampNum(v, 0, 100) / 100;
890
+ const hh = (h % 360 + 360) % 360 / 60;
891
+ const c = v1 * s1;
892
+ const x = c * (1 - Math.abs(hh % 2 - 1));
893
+ const m = v1 - c;
894
+ let [r1, g1, b1] = [0, 0, 0];
895
+ if (hh < 1) [r1, g1, b1] = [c, x, 0];
896
+ else if (hh < 2) [r1, g1, b1] = [x, c, 0];
897
+ else if (hh < 3) [r1, g1, b1] = [0, c, x];
898
+ else if (hh < 4) [r1, g1, b1] = [0, x, c];
899
+ else if (hh < 5) [r1, g1, b1] = [x, 0, c];
900
+ else [r1, g1, b1] = [c, 0, x];
901
+ return { r: (r1 + m) * 255, g: (g1 + m) * 255, b: (b1 + m) * 255 };
902
+ }
903
+ function rgbToHsl({ r, g, b }) {
904
+ const rn = r / 255, gn = g / 255, bn = b / 255;
905
+ const max = Math.max(rn, gn, bn), min = Math.min(rn, gn, bn);
906
+ const l = (max + min) / 2;
907
+ const d = max - min;
908
+ let h = 0, s = 0;
909
+ if (d !== 0) {
910
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
911
+ if (max === rn) h = (gn - bn) / d % 6;
912
+ else if (max === gn) h = (bn - rn) / d + 2;
913
+ else h = (rn - gn) / d + 4;
914
+ h *= 60;
915
+ if (h < 0) h += 360;
916
+ }
917
+ return { h, s: s * 100, l: l * 100 };
918
+ }
919
+ function hslToRgb({ h, s, l }) {
920
+ const s1 = clampNum(s, 0, 100) / 100;
921
+ const l1 = clampNum(l, 0, 100) / 100;
922
+ const c = (1 - Math.abs(2 * l1 - 1)) * s1;
923
+ const hh = (h % 360 + 360) % 360 / 60;
924
+ const x = c * (1 - Math.abs(hh % 2 - 1));
925
+ const m = l1 - c / 2;
926
+ let [r1, g1, b1] = [0, 0, 0];
927
+ if (hh < 1) [r1, g1, b1] = [c, x, 0];
928
+ else if (hh < 2) [r1, g1, b1] = [x, c, 0];
929
+ else if (hh < 3) [r1, g1, b1] = [0, c, x];
930
+ else if (hh < 4) [r1, g1, b1] = [0, x, c];
931
+ else if (hh < 5) [r1, g1, b1] = [x, 0, c];
932
+ else [r1, g1, b1] = [c, 0, x];
933
+ return { r: (r1 + m) * 255, g: (g1 + m) * 255, b: (b1 + m) * 255 };
934
+ }
935
+ function hexToHsv(hex) {
936
+ const rgb = hexToRgb(hex);
937
+ return rgb ? rgbToHsv(rgb) : null;
938
+ }
939
+ function hsvToHex(hsv) {
940
+ return rgbToHex(hsvToRgb(hsv));
941
+ }
942
+ function hslToHex(hsl) {
943
+ return rgbToHex(hslToRgb(hsl));
944
+ }
945
+ var RGB_FUNCTION_RE = /^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*[\d.]+\s*)?\)$/i;
946
+ var HSL_FUNCTION_RE = /^hsla?\(\s*(-?\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*(?:,\s*[\d.]+\s*)?\)$/i;
947
+ function parseColorInput(text) {
948
+ const trimmed = text.trim();
949
+ const hex = normalizeHex(trimmed);
950
+ if (hex) return hex;
951
+ const rgbMatch = trimmed.match(RGB_FUNCTION_RE);
952
+ if (rgbMatch) {
953
+ const [, r, g, b] = rgbMatch;
954
+ return rgbToHex({ r: clampNum(Number(r), 0, 255), g: clampNum(Number(g), 0, 255), b: clampNum(Number(b), 0, 255) });
955
+ }
956
+ const hslMatch = trimmed.match(HSL_FUNCTION_RE);
957
+ if (hslMatch) {
958
+ const [, h, s, l] = hslMatch;
959
+ return hslToHex({ h: clampNum(Number(h), 0, 360), s: clampNum(Number(s), 0, 100), l: clampNum(Number(l), 0, 100) });
960
+ }
961
+ return null;
962
+ }
963
+ function formatColorValue(hex, format) {
964
+ if (format === "hex") return hex;
965
+ const rgb = hexToRgb(hex);
966
+ if (!rgb) return hex;
967
+ if (format === "rgb") return `rgb(${Math.round(rgb.r)}, ${Math.round(rgb.g)}, ${Math.round(rgb.b)})`;
968
+ const hsl = rgbToHsl(rgb);
969
+ return `hsl(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(hsl.l)}%)`;
970
+ }
971
+ function getSvKeyboardDelta(key, coarse) {
972
+ const step = coarse ? 10 : 2;
973
+ switch (key) {
974
+ case "ArrowLeft":
975
+ return { ds: -step, dv: 0 };
976
+ case "ArrowRight":
977
+ return { ds: step, dv: 0 };
978
+ case "ArrowUp":
979
+ return { ds: 0, dv: step };
980
+ case "ArrowDown":
981
+ return { ds: 0, dv: -step };
982
+ default:
983
+ return null;
984
+ }
985
+ }
986
+ function clampPercent(n) {
987
+ return clampNum(n, 0, 100);
988
+ }
989
+ function getFormatTabClasses(isActive) {
990
+ return ["nx-colorpicker__format-tab", isActive && "nx-colorpicker__format-tab--active"].filter(Boolean).join(" ");
991
+ }
992
+ function getFormatTablistAriaProps(label) {
993
+ return { role: "tablist", "aria-label": label };
994
+ }
995
+ function getFormatTabAriaProps(isActive) {
996
+ return { role: "tab", "aria-selected": isActive, tabIndex: isActive ? 0 : -1 };
997
+ }
998
+ function getSvThumbAriaProps(saturation, value) {
999
+ return {
1000
+ role: "slider",
1001
+ "aria-label": "Color saturation and brightness",
1002
+ "aria-valuetext": `Saturation ${Math.round(saturation)}%, brightness ${Math.round(value)}%`,
1003
+ tabIndex: 0
1004
+ };
1005
+ }
1006
+
1007
+ // src/core/table.ts
1008
+ function resolveTableState(props) {
1009
+ return {
1010
+ size: props.size ?? "md",
1011
+ striped: props.striped ?? false,
1012
+ bordered: props.bordered ?? false,
1013
+ stickyHeader: props.stickyHeader ?? false
1014
+ };
1015
+ }
1016
+ function getWrapperClasses(className) {
1017
+ return ["nx-table-wrapper", className].filter(Boolean).join(" ");
1018
+ }
1019
+ function getTableClasses(state, className) {
1020
+ return [
1021
+ "nx-table",
1022
+ `nx-table--${state.size}`,
1023
+ state.striped && "nx-table--striped",
1024
+ state.bordered && "nx-table--bordered",
1025
+ state.stickyHeader && "nx-table--sticky-header",
1026
+ className
1027
+ ].filter(Boolean).join(" ");
1028
+ }
1029
+ function getRowClasses(selected, clickable, className) {
1030
+ return [
1031
+ "nx-table__row",
1032
+ selected && "nx-table__row--selected",
1033
+ clickable && "nx-table__row--clickable",
1034
+ className
1035
+ ].filter(Boolean).join(" ");
1036
+ }
1037
+ function getHeadCellClasses(sortable, className) {
1038
+ return ["nx-table__head-cell", sortable && "nx-table__head-cell--sortable", className].filter(Boolean).join(" ");
1039
+ }
1040
+ function getCellClasses(className) {
1041
+ return ["nx-table__cell", className].filter(Boolean).join(" ");
1042
+ }
1043
+ function getNextSortDirection(current) {
1044
+ if (current === null) return "asc";
1045
+ if (current === "asc") return "desc";
1046
+ return null;
1047
+ }
1048
+ function getSortAriaProps(direction) {
1049
+ return {
1050
+ "aria-sort": direction === "asc" ? "ascending" : direction === "desc" ? "descending" : "none"
1051
+ };
1052
+ }
1053
+ function getSelectAllState(totalCount, selectedCount) {
1054
+ if (totalCount <= 0 || selectedCount <= 0) return "none";
1055
+ if (selectedCount >= totalCount) return "all";
1056
+ return "some";
1057
+ }
1058
+
1059
+ export {
1060
+ defineTheme,
1061
+ TOKEN_CATEGORIES,
1062
+ REQUIRED_TOKEN_PATHS,
1063
+ findMissingTokenPaths,
1064
+ light,
1065
+ dark,
1066
+ glass,
1067
+ darkGlass,
1068
+ minimalism,
1069
+ brutalism,
1070
+ neobrutalism,
1071
+ cyberpunk,
1072
+ gradient,
1073
+ material,
1074
+ skeuomorphism,
1075
+ registerTheme,
1076
+ getTheme,
1077
+ listThemes,
1078
+ indigo,
1079
+ violet,
1080
+ teal,
1081
+ rose,
1082
+ amber,
1083
+ emerald,
1084
+ copper,
1085
+ graphite,
1086
+ magenta,
1087
+ registerAccent,
1088
+ getAccent,
1089
+ listAccents,
1090
+ DEFAULT_ACCENT,
1091
+ resolveFieldState,
1092
+ getFieldAriaProps,
1093
+ DEFAULT_PRESETS,
1094
+ resolveColorPickerState,
1095
+ normalizeHex,
1096
+ isSameColor,
1097
+ getSwatchClasses,
1098
+ getSwatchGridAriaProps,
1099
+ getSwatchAriaProps,
1100
+ getFieldTriggerAriaProps,
1101
+ COLOR_FORMATS,
1102
+ hexToRgb,
1103
+ rgbToHex,
1104
+ rgbToHsl,
1105
+ hexToHsv,
1106
+ hsvToHex,
1107
+ hslToHex,
1108
+ parseColorInput,
1109
+ formatColorValue,
1110
+ getSvKeyboardDelta,
1111
+ clampPercent,
1112
+ getFormatTabClasses,
1113
+ getFormatTablistAriaProps,
1114
+ getFormatTabAriaProps,
1115
+ getSvThumbAriaProps,
1116
+ resolveTableState,
1117
+ getWrapperClasses,
1118
+ getTableClasses,
1119
+ getRowClasses,
1120
+ getHeadCellClasses,
1121
+ getCellClasses,
1122
+ getNextSortDirection,
1123
+ getSortAriaProps,
1124
+ getSelectAllState
1125
+ };
1126
+ //# sourceMappingURL=chunk-3F7OVF4J.js.map