@synapsly/tokens 0.1.0 → 0.2.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,963 @@
1
+ 'use strict';
2
+
3
+ // src/createThemeTokens.ts
4
+ function createThemeTokens(base, overrides = {}) {
5
+ return mergeTokens(base, overrides);
6
+ }
7
+ function mergeTokens(base, overrides) {
8
+ if (!isRecord(base) || !isRecord(overrides)) {
9
+ return overrides ?? base;
10
+ }
11
+ const merged = { ...base };
12
+ for (const key of Reflect.ownKeys(overrides)) {
13
+ merged[key] = mergeTokens(base[key], overrides[key]);
14
+ }
15
+ return merged;
16
+ }
17
+ function isRecord(value) {
18
+ return typeof value === "object" && value !== null && !Array.isArray(value);
19
+ }
20
+
21
+ // src/primitiveTokens.ts
22
+ var primitiveTokens = {
23
+ color: {
24
+ white: "#ffffff",
25
+ black: "#000000",
26
+ transparent: "transparent",
27
+ neutral: {
28
+ 25: "#fcfbfb",
29
+ 50: "#f8f7f6",
30
+ 100: "#efedea",
31
+ 200: "#dedad5",
32
+ 300: "#ccc5be",
33
+ 400: "#beb6ad",
34
+ 500: "#b4aba3",
35
+ 600: "#9d9389",
36
+ 700: "#7e756e",
37
+ 800: "#645d57",
38
+ 900: "#514c47",
39
+ 950: "#2a2624",
40
+ 975: "#161413"
41
+ },
42
+ brand: {
43
+ 25: "#fdfbf8",
44
+ 50: "#fbf7f1",
45
+ 100: "#f5ecdf",
46
+ 200: "#ead8bf",
47
+ 300: "#dec29d",
48
+ 400: "#d5b186",
49
+ 500: "#cca67b",
50
+ 600: "#b88c5d",
51
+ 700: "#966f49",
52
+ 800: "#76583b",
53
+ 900: "#604832",
54
+ 950: "#332419",
55
+ 975: "#1c130d"
56
+ },
57
+ blue: {
58
+ 50: "#eff6ff",
59
+ 100: "#dbeafe",
60
+ 200: "#bfdbfe",
61
+ 300: "#93c5fd",
62
+ 400: "#60a5fa",
63
+ 500: "#3b82f6",
64
+ 600: "#2563eb",
65
+ 700: "#1d4ed8",
66
+ 800: "#1e40af",
67
+ 900: "#1e3a8a",
68
+ 950: "#172554"
69
+ },
70
+ green: {
71
+ 50: "#f0fdf4",
72
+ 100: "#dcfce7",
73
+ 200: "#bbf7d0",
74
+ 300: "#86efac",
75
+ 400: "#4ade80",
76
+ 500: "#22c55e",
77
+ 600: "#16a34a",
78
+ 700: "#15803d",
79
+ 800: "#166534",
80
+ 900: "#14532d",
81
+ 950: "#052e16"
82
+ },
83
+ yellow: {
84
+ 50: "#fefce8",
85
+ 100: "#fef9c3",
86
+ 200: "#fef08a",
87
+ 300: "#fde047",
88
+ 400: "#facc15",
89
+ 500: "#eab308",
90
+ 600: "#ca8a04",
91
+ 700: "#a16207",
92
+ 800: "#854d0e",
93
+ 900: "#713f12",
94
+ 950: "#422006"
95
+ },
96
+ orange: {
97
+ 50: "#fff7ed",
98
+ 100: "#ffedd5",
99
+ 200: "#fed7aa",
100
+ 300: "#fdba74",
101
+ 400: "#fb923c",
102
+ 500: "#f97316",
103
+ 600: "#ea580c",
104
+ 700: "#c2410c",
105
+ 800: "#9a3412",
106
+ 900: "#7c2d12",
107
+ 950: "#431407"
108
+ },
109
+ red: {
110
+ 50: "#fef2f2",
111
+ 100: "#fee2e2",
112
+ 200: "#fecaca",
113
+ 300: "#fca5a5",
114
+ 400: "#f87171",
115
+ 500: "#ef4444",
116
+ 600: "#dc2626",
117
+ 700: "#b91c1c",
118
+ 800: "#991b1b",
119
+ 900: "#7f1d1d",
120
+ 950: "#450a0a"
121
+ },
122
+ purple: {
123
+ 50: "#faf5ff",
124
+ 100: "#f3e8ff",
125
+ 200: "#e9d5ff",
126
+ 300: "#d8b4fe",
127
+ 400: "#c084fc",
128
+ 500: "#a855f7",
129
+ 600: "#9333ea",
130
+ 700: "#7e22ce",
131
+ 800: "#6b21a8",
132
+ 900: "#581c87",
133
+ 950: "#3b0764"
134
+ },
135
+ cyan: {
136
+ 50: "#ecfeff",
137
+ 100: "#cffafe",
138
+ 200: "#a5f3fc",
139
+ 300: "#67e8f9",
140
+ 400: "#22d3ee",
141
+ 500: "#06b6d4",
142
+ 600: "#0891b2",
143
+ 700: "#0e7490",
144
+ 800: "#155e75",
145
+ 900: "#164e63",
146
+ 950: "#083344"
147
+ },
148
+ pink: {
149
+ 50: "#fdf2f8",
150
+ 100: "#fce7f3",
151
+ 200: "#fbcfe8",
152
+ 300: "#f9a8d4",
153
+ 400: "#f472b6",
154
+ 500: "#ec4899",
155
+ 600: "#db2777",
156
+ 700: "#be185d",
157
+ 800: "#9d174d",
158
+ 900: "#831843",
159
+ 950: "#500724"
160
+ }
161
+ },
162
+ fontFamily: {
163
+ sans: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
164
+ serif: 'ui-serif, Georgia, Cambria, "Times New Roman", Times, serif',
165
+ mono: '"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace'
166
+ },
167
+ fontSize: {
168
+ 75: "0.75rem",
169
+ 87: "0.875rem",
170
+ 100: "1rem",
171
+ 112: "1.125rem",
172
+ 125: "1.25rem",
173
+ 150: "1.5rem",
174
+ 187: "1.875rem",
175
+ 225: "2.25rem",
176
+ 300: "3rem"
177
+ },
178
+ fontWeight: {
179
+ 400: "400",
180
+ 500: "500",
181
+ 600: "600",
182
+ 700: "700"
183
+ },
184
+ lineHeight: {
185
+ 100: "1",
186
+ 120: "1.2",
187
+ 150: "1.5",
188
+ 175: "1.75"
189
+ },
190
+ letterSpacing: {
191
+ "-2": "-0.02em",
192
+ "-1": "-0.01em",
193
+ 0: "0",
194
+ 1: "0.01em",
195
+ 2: "0.02em",
196
+ 4: "0.04em"
197
+ },
198
+ space: {
199
+ 0: "0",
200
+ 1: "0.25rem",
201
+ 2: "0.5rem",
202
+ 3: "0.75rem",
203
+ 4: "1rem",
204
+ 5: "1.25rem",
205
+ 6: "1.5rem",
206
+ 8: "2rem",
207
+ 10: "2.5rem",
208
+ 12: "3rem",
209
+ 16: "4rem",
210
+ 20: "5rem",
211
+ 24: "6rem",
212
+ 32: "8rem",
213
+ 64: "16rem"
214
+ },
215
+ radius: {
216
+ 0: "0",
217
+ 2: "0.125rem",
218
+ 4: "0.25rem",
219
+ 8: "0.5rem",
220
+ 12: "0.75rem",
221
+ 9999: "9999px"
222
+ },
223
+ shadow: {
224
+ 0: "none",
225
+ 1: "0 1px 2px rgb(17 24 39 / 8%)",
226
+ 2: "0 2px 8px rgb(17 24 39 / 10%)",
227
+ 3: "0 8px 24px rgb(17 24 39 / 12%)",
228
+ 4: "0 16px 40px rgb(17 24 39 / 16%)",
229
+ 5: "0 24px 64px rgb(17 24 39 / 20%)",
230
+ inner: "inset 0 1px 2px rgb(17 24 39 / 8%)",
231
+ focus: "0 0 0 3px rgb(184 140 93 / 28%)"
232
+ },
233
+ zIndex: {
234
+ 0: "0",
235
+ 10: "10",
236
+ 100: "100",
237
+ 1e3: "1000",
238
+ 1100: "1100",
239
+ 1200: "1200"
240
+ },
241
+ duration: {
242
+ 0: "0ms",
243
+ 120: "120ms",
244
+ 200: "200ms",
245
+ 320: "320ms"
246
+ },
247
+ easing: {
248
+ standard: "cubic-bezier(0.2, 0, 0, 1)",
249
+ emphasized: "cubic-bezier(0.2, 0, 0, 1)",
250
+ entrance: "cubic-bezier(0, 0, 0.2, 1)",
251
+ exit: "cubic-bezier(0.4, 0, 1, 1)"
252
+ },
253
+ breakpoint: {
254
+ 360: "360px",
255
+ 640: "640px",
256
+ 768: "768px",
257
+ 1024: "1024px",
258
+ 1280: "1280px"
259
+ },
260
+ opacity: {
261
+ 0: "0",
262
+ 40: "0.4",
263
+ 60: "0.6",
264
+ 64: "0.64",
265
+ 100: "1"
266
+ },
267
+ borderWidth: {
268
+ 0: "0",
269
+ 1: "1px",
270
+ 2: "2px",
271
+ 4: "4px"
272
+ },
273
+ borderStyle: {
274
+ solid: "solid",
275
+ dashed: "dashed"
276
+ },
277
+ iconSize: {
278
+ 12: "0.75rem",
279
+ 16: "1rem",
280
+ 20: "1.25rem",
281
+ 24: "1.5rem",
282
+ 32: "2rem"
283
+ }
284
+ };
285
+
286
+ // src/resolveTokenReferences.ts
287
+ function resolveTokenReferences(value, source) {
288
+ if (typeof value === "string") {
289
+ const match = value.match(/^\{(.+)\}$/);
290
+ if (!match) {
291
+ return value;
292
+ }
293
+ const referencePath = match[1];
294
+ if (!referencePath) {
295
+ return value;
296
+ }
297
+ return getPath(source, referencePath);
298
+ }
299
+ if (Array.isArray(value)) {
300
+ return value.map((item) => resolveTokenReferences(item, source));
301
+ }
302
+ if (typeof value === "object" && value !== null) {
303
+ return Object.fromEntries(
304
+ Object.entries(value).map(([key, childValue]) => [
305
+ key,
306
+ resolveTokenReferences(childValue, source)
307
+ ])
308
+ );
309
+ }
310
+ return value;
311
+ }
312
+ function getPath(source, path) {
313
+ return path.split(".").reduce((current, segment) => {
314
+ if (typeof current !== "object" || current === null || !(segment in current)) {
315
+ throw new Error(`Unable to resolve token reference: {${path}}`);
316
+ }
317
+ return current[segment];
318
+ }, source);
319
+ }
320
+
321
+ // src/semanticTokenReferences.ts
322
+ var defaultLightSemanticTokenReferences = {
323
+ color: {
324
+ bg: {
325
+ canvas: "{primitive.color.white}",
326
+ surface: "{primitive.color.neutral.50}",
327
+ elevated: "{primitive.color.white}",
328
+ inverse: "{primitive.color.neutral.950}",
329
+ disabled: "{primitive.color.neutral.100}",
330
+ overlay: "rgb(3 7 18 / 60%)"
331
+ },
332
+ fg: {
333
+ primary: "{primitive.color.neutral.950}",
334
+ secondary: "{primitive.color.neutral.600}",
335
+ tertiary: "{primitive.color.neutral.500}",
336
+ inverse: "{primitive.color.white}",
337
+ disabled: "{primitive.color.neutral.400}",
338
+ brand: "{primitive.color.brand.700}",
339
+ success: "{primitive.color.green.700}",
340
+ warning: "{primitive.color.yellow.700}",
341
+ danger: "{primitive.color.red.700}",
342
+ info: "{primitive.color.cyan.700}"
343
+ },
344
+ border: {
345
+ subtle: "{primitive.color.neutral.100}",
346
+ default: "{primitive.color.neutral.200}",
347
+ strong: "{primitive.color.neutral.400}",
348
+ focus: "{primitive.color.brand.600}",
349
+ disabled: "{primitive.color.neutral.200}",
350
+ success: "{primitive.color.green.300}",
351
+ warning: "{primitive.color.yellow.300}",
352
+ danger: "{primitive.color.red.300}"
353
+ },
354
+ action: {
355
+ primary: {
356
+ bg: "{primitive.color.brand.500}",
357
+ bgHover: "{primitive.color.brand.600}",
358
+ bgActive: "{primitive.color.brand.700}",
359
+ border: "{primitive.color.brand.500}",
360
+ icon: "{primitive.color.white}",
361
+ fg: "{primitive.color.white}"
362
+ },
363
+ secondary: {
364
+ bg: "{primitive.color.brand.50}",
365
+ bgHover: "{primitive.color.brand.100}",
366
+ bgActive: "{primitive.color.brand.200}",
367
+ border: "{primitive.color.brand.200}",
368
+ icon: "{primitive.color.brand.800}",
369
+ fg: "{primitive.color.brand.800}"
370
+ },
371
+ danger: {
372
+ bg: "{primitive.color.red.600}",
373
+ bgHover: "{primitive.color.red.700}",
374
+ bgActive: "{primitive.color.red.800}",
375
+ border: "{primitive.color.red.600}",
376
+ icon: "{primitive.color.white}",
377
+ fg: "{primitive.color.white}"
378
+ },
379
+ disabled: {
380
+ bg: "{primitive.color.neutral.200}",
381
+ border: "{primitive.color.neutral.200}",
382
+ icon: "{primitive.color.neutral.400}",
383
+ fg: "{primitive.color.neutral.400}"
384
+ }
385
+ },
386
+ state: {
387
+ hover: {
388
+ bg: "{primitive.color.neutral.100}"
389
+ },
390
+ pressed: {
391
+ bg: "{primitive.color.neutral.200}"
392
+ },
393
+ selected: {
394
+ bg: "{primitive.color.brand.50}",
395
+ border: "{primitive.color.brand.500}",
396
+ fg: "{primitive.color.brand.800}"
397
+ },
398
+ focus: {
399
+ ring: "{primitive.color.brand.600}"
400
+ },
401
+ loading: {
402
+ bg: "{primitive.color.neutral.100}",
403
+ fg: "{primitive.color.neutral.500}"
404
+ },
405
+ visited: {
406
+ fg: "{primitive.color.purple.700}"
407
+ },
408
+ readonly: {
409
+ bg: "{primitive.color.neutral.50}",
410
+ border: "{primitive.color.neutral.200}",
411
+ fg: "{primitive.color.neutral.700}"
412
+ }
413
+ },
414
+ form: {
415
+ bg: "{primitive.color.white}",
416
+ bgHover: "{primitive.color.neutral.50}",
417
+ border: "{primitive.color.neutral.300}",
418
+ borderHover: "{primitive.color.neutral.400}",
419
+ borderFocus: "{primitive.color.brand.600}",
420
+ borderInvalid: "{primitive.color.red.600}",
421
+ fg: "{primitive.color.neutral.950}",
422
+ placeholder: "{primitive.color.neutral.500}",
423
+ caret: "{primitive.color.brand.700}",
424
+ disabled: {
425
+ bg: "{primitive.color.neutral.100}",
426
+ border: "{primitive.color.neutral.200}",
427
+ fg: "{primitive.color.neutral.400}"
428
+ },
429
+ readonly: {
430
+ bg: "{primitive.color.neutral.50}",
431
+ border: "{primitive.color.neutral.200}",
432
+ fg: "{primitive.color.neutral.700}"
433
+ }
434
+ },
435
+ feedback: {
436
+ success: {
437
+ bg: "{primitive.color.green.50}",
438
+ fg: "{primitive.color.green.700}"
439
+ },
440
+ warning: {
441
+ bg: "{primitive.color.yellow.50}",
442
+ fg: "{primitive.color.yellow.700}"
443
+ },
444
+ danger: {
445
+ bg: "{primitive.color.red.50}",
446
+ fg: "{primitive.color.red.700}"
447
+ },
448
+ info: {
449
+ bg: "{primitive.color.cyan.50}",
450
+ fg: "{primitive.color.cyan.700}"
451
+ }
452
+ }
453
+ },
454
+ typography: {
455
+ fontFamily: {
456
+ body: "{primitive.fontFamily.sans}",
457
+ heading: "{primitive.fontFamily.sans}",
458
+ code: "{primitive.fontFamily.mono}"
459
+ },
460
+ fontSize: {
461
+ xs: "{primitive.fontSize.75}",
462
+ sm: "{primitive.fontSize.87}",
463
+ md: "{primitive.fontSize.100}",
464
+ lg: "{primitive.fontSize.112}",
465
+ xl: "{primitive.fontSize.125}",
466
+ "2xl": "{primitive.fontSize.150}",
467
+ "3xl": "{primitive.fontSize.187}",
468
+ "4xl": "{primitive.fontSize.225}"
469
+ },
470
+ fontWeight: {
471
+ regular: "{primitive.fontWeight.400}",
472
+ medium: "{primitive.fontWeight.500}",
473
+ semibold: "{primitive.fontWeight.600}",
474
+ bold: "{primitive.fontWeight.700}"
475
+ },
476
+ lineHeight: {
477
+ tight: "{primitive.lineHeight.120}",
478
+ normal: "{primitive.lineHeight.150}",
479
+ relaxed: "{primitive.lineHeight.175}"
480
+ },
481
+ letterSpacing: {
482
+ tighter: "{primitive.letterSpacing.-2}",
483
+ tight: "{primitive.letterSpacing.-1}",
484
+ normal: "{primitive.letterSpacing.0}",
485
+ wide: "{primitive.letterSpacing.1}",
486
+ wider: "{primitive.letterSpacing.2}",
487
+ widest: "{primitive.letterSpacing.4}"
488
+ },
489
+ text: {
490
+ display: {
491
+ fontFamily: "{primitive.fontFamily.sans}",
492
+ fontSize: "{primitive.fontSize.225}",
493
+ fontWeight: "{primitive.fontWeight.700}",
494
+ lineHeight: "{primitive.lineHeight.120}",
495
+ letterSpacing: "{primitive.letterSpacing.-1}"
496
+ },
497
+ heading: {
498
+ lg: {
499
+ fontFamily: "{primitive.fontFamily.sans}",
500
+ fontSize: "{primitive.fontSize.187}",
501
+ fontWeight: "{primitive.fontWeight.700}",
502
+ lineHeight: "{primitive.lineHeight.120}",
503
+ letterSpacing: "{primitive.letterSpacing.-1}"
504
+ },
505
+ md: {
506
+ fontFamily: "{primitive.fontFamily.sans}",
507
+ fontSize: "{primitive.fontSize.150}",
508
+ fontWeight: "{primitive.fontWeight.600}",
509
+ lineHeight: "{primitive.lineHeight.120}",
510
+ letterSpacing: "{primitive.letterSpacing.0}"
511
+ },
512
+ sm: {
513
+ fontFamily: "{primitive.fontFamily.sans}",
514
+ fontSize: "{primitive.fontSize.125}",
515
+ fontWeight: "{primitive.fontWeight.600}",
516
+ lineHeight: "{primitive.lineHeight.120}",
517
+ letterSpacing: "{primitive.letterSpacing.0}"
518
+ }
519
+ },
520
+ body: {
521
+ lg: {
522
+ fontFamily: "{primitive.fontFamily.sans}",
523
+ fontSize: "{primitive.fontSize.112}",
524
+ fontWeight: "{primitive.fontWeight.400}",
525
+ lineHeight: "{primitive.lineHeight.150}",
526
+ letterSpacing: "{primitive.letterSpacing.0}"
527
+ },
528
+ md: {
529
+ fontFamily: "{primitive.fontFamily.sans}",
530
+ fontSize: "{primitive.fontSize.100}",
531
+ fontWeight: "{primitive.fontWeight.400}",
532
+ lineHeight: "{primitive.lineHeight.150}",
533
+ letterSpacing: "{primitive.letterSpacing.0}"
534
+ },
535
+ sm: {
536
+ fontFamily: "{primitive.fontFamily.sans}",
537
+ fontSize: "{primitive.fontSize.87}",
538
+ fontWeight: "{primitive.fontWeight.400}",
539
+ lineHeight: "{primitive.lineHeight.150}",
540
+ letterSpacing: "{primitive.letterSpacing.0}"
541
+ }
542
+ },
543
+ label: {
544
+ md: {
545
+ fontFamily: "{primitive.fontFamily.sans}",
546
+ fontSize: "{primitive.fontSize.87}",
547
+ fontWeight: "{primitive.fontWeight.500}",
548
+ lineHeight: "{primitive.lineHeight.120}",
549
+ letterSpacing: "{primitive.letterSpacing.0}"
550
+ },
551
+ sm: {
552
+ fontFamily: "{primitive.fontFamily.sans}",
553
+ fontSize: "{primitive.fontSize.75}",
554
+ fontWeight: "{primitive.fontWeight.500}",
555
+ lineHeight: "{primitive.lineHeight.120}",
556
+ letterSpacing: "{primitive.letterSpacing.1}"
557
+ }
558
+ },
559
+ caption: {
560
+ fontFamily: "{primitive.fontFamily.sans}",
561
+ fontSize: "{primitive.fontSize.75}",
562
+ fontWeight: "{primitive.fontWeight.400}",
563
+ lineHeight: "{primitive.lineHeight.150}",
564
+ letterSpacing: "{primitive.letterSpacing.0}"
565
+ },
566
+ code: {
567
+ fontFamily: "{primitive.fontFamily.mono}",
568
+ fontSize: "{primitive.fontSize.87}",
569
+ fontWeight: "{primitive.fontWeight.400}",
570
+ lineHeight: "{primitive.lineHeight.150}",
571
+ letterSpacing: "{primitive.letterSpacing.0}"
572
+ }
573
+ }
574
+ },
575
+ spacing: {
576
+ none: "{primitive.space.0}",
577
+ "2xs": "{primitive.space.1}",
578
+ xs: "{primitive.space.2}",
579
+ sm: "{primitive.space.3}",
580
+ md: "{primitive.space.4}",
581
+ lg: "{primitive.space.6}",
582
+ xl: "{primitive.space.8}",
583
+ "2xl": "{primitive.space.12}",
584
+ "3xl": "{primitive.space.16}",
585
+ "4xl": "{primitive.space.32}"
586
+ },
587
+ radius: {
588
+ none: "{primitive.radius.0}",
589
+ xs: "{primitive.radius.2}",
590
+ sm: "{primitive.radius.4}",
591
+ md: "{primitive.radius.8}",
592
+ lg: "{primitive.radius.12}",
593
+ full: "{primitive.radius.9999}"
594
+ },
595
+ shadow: {
596
+ none: "{primitive.shadow.0}",
597
+ sm: "{primitive.shadow.1}",
598
+ md: "{primitive.shadow.3}",
599
+ lg: "{primitive.shadow.4}",
600
+ focus: "{primitive.shadow.focus}"
601
+ },
602
+ zIndex: {
603
+ base: "{primitive.zIndex.0}",
604
+ raised: "{primitive.zIndex.10}",
605
+ sticky: "{primitive.zIndex.100}",
606
+ overlay: "{primitive.zIndex.1000}",
607
+ modal: "{primitive.zIndex.1100}",
608
+ toast: "{primitive.zIndex.1200}"
609
+ },
610
+ motion: {
611
+ duration: {
612
+ instant: "{primitive.duration.0}",
613
+ fast: "{primitive.duration.120}",
614
+ normal: "{primitive.duration.200}",
615
+ slow: "{primitive.duration.320}"
616
+ },
617
+ easing: {
618
+ standard: "{primitive.easing.standard}",
619
+ emphasized: "{primitive.easing.emphasized}",
620
+ entrance: "{primitive.easing.entrance}",
621
+ exit: "{primitive.easing.exit}"
622
+ }
623
+ },
624
+ breakpoint: {
625
+ xs: "{primitive.breakpoint.360}",
626
+ sm: "{primitive.breakpoint.640}",
627
+ md: "{primitive.breakpoint.768}",
628
+ lg: "{primitive.breakpoint.1024}",
629
+ xl: "{primitive.breakpoint.1280}"
630
+ },
631
+ opacity: {
632
+ disabled: "{primitive.opacity.40}",
633
+ muted: "{primitive.opacity.64}",
634
+ overlay: "{primitive.opacity.60}"
635
+ },
636
+ border: {
637
+ width: {
638
+ none: "{primitive.borderWidth.0}",
639
+ thin: "{primitive.borderWidth.1}",
640
+ medium: "{primitive.borderWidth.2}",
641
+ thick: "{primitive.borderWidth.4}"
642
+ },
643
+ style: {
644
+ solid: "{primitive.borderStyle.solid}",
645
+ dashed: "{primitive.borderStyle.dashed}"
646
+ }
647
+ },
648
+ iconSize: {
649
+ xs: "{primitive.iconSize.12}",
650
+ sm: "{primitive.iconSize.16}",
651
+ md: "{primitive.iconSize.20}",
652
+ lg: "{primitive.iconSize.24}",
653
+ xl: "{primitive.iconSize.32}"
654
+ },
655
+ size: {
656
+ control: {
657
+ sm: "{primitive.space.8}",
658
+ md: "{primitive.space.10}",
659
+ lg: "{primitive.space.12}"
660
+ },
661
+ iconButton: {
662
+ sm: "{primitive.space.8}",
663
+ md: "{primitive.space.10}",
664
+ lg: "{primitive.space.12}"
665
+ }
666
+ },
667
+ padding: {
668
+ control: {
669
+ x: {
670
+ sm: "{primitive.space.3}",
671
+ md: "{primitive.space.4}",
672
+ lg: "{primitive.space.5}"
673
+ },
674
+ y: {
675
+ sm: "{primitive.space.1}",
676
+ md: "{primitive.space.2}",
677
+ lg: "{primitive.space.3}"
678
+ }
679
+ },
680
+ page: {
681
+ xMobile: "{primitive.space.4}",
682
+ xDesktop: "{primitive.space.8}"
683
+ }
684
+ },
685
+ gap: {
686
+ inline: {
687
+ sm: "{primitive.space.1}",
688
+ md: "{primitive.space.2}",
689
+ lg: "{primitive.space.3}"
690
+ },
691
+ stack: {
692
+ sm: "{primitive.space.2}",
693
+ md: "{primitive.space.4}",
694
+ lg: "{primitive.space.6}"
695
+ },
696
+ section: {
697
+ sm: "{primitive.space.8}",
698
+ md: "{primitive.space.12}",
699
+ lg: "{primitive.space.16}"
700
+ }
701
+ },
702
+ layout: {
703
+ container: {
704
+ sm: "{primitive.breakpoint.640}",
705
+ md: "{primitive.breakpoint.768}",
706
+ lg: "{primitive.breakpoint.1024}",
707
+ xl: "{primitive.breakpoint.1280}"
708
+ },
709
+ gutter: {
710
+ mobile: "{primitive.space.4}",
711
+ desktop: "{primitive.space.8}"
712
+ },
713
+ sidebar: {
714
+ width: "{primitive.space.64}",
715
+ collapsedWidth: "{primitive.space.16}"
716
+ }
717
+ }
718
+ };
719
+ var defaultDarkSemanticTokenReferences = {
720
+ ...defaultLightSemanticTokenReferences,
721
+ color: {
722
+ bg: {
723
+ canvas: "{primitive.color.neutral.975}",
724
+ surface: "{primitive.color.neutral.950}",
725
+ elevated: "{primitive.color.neutral.950}",
726
+ inverse: "{primitive.color.white}",
727
+ disabled: "{primitive.color.neutral.900}",
728
+ overlay: "rgb(0 0 0 / 70%)"
729
+ },
730
+ fg: {
731
+ primary: "{primitive.color.neutral.50}",
732
+ secondary: "{primitive.color.neutral.300}",
733
+ tertiary: "{primitive.color.neutral.400}",
734
+ inverse: "{primitive.color.neutral.950}",
735
+ disabled: "{primitive.color.neutral.500}",
736
+ brand: "{primitive.color.brand.300}",
737
+ success: "{primitive.color.green.300}",
738
+ warning: "{primitive.color.yellow.300}",
739
+ danger: "{primitive.color.red.300}",
740
+ info: "{primitive.color.cyan.300}"
741
+ },
742
+ border: {
743
+ subtle: "{primitive.color.neutral.800}",
744
+ default: "{primitive.color.neutral.700}",
745
+ strong: "{primitive.color.neutral.500}",
746
+ focus: "{primitive.color.brand.400}",
747
+ disabled: "{primitive.color.neutral.800}",
748
+ success: "{primitive.color.green.700}",
749
+ warning: "{primitive.color.yellow.700}",
750
+ danger: "{primitive.color.red.700}"
751
+ },
752
+ action: {
753
+ primary: {
754
+ bg: "{primitive.color.brand.400}",
755
+ bgHover: "{primitive.color.brand.300}",
756
+ bgActive: "{primitive.color.brand.200}",
757
+ border: "{primitive.color.brand.400}",
758
+ icon: "{primitive.color.neutral.950}",
759
+ fg: "{primitive.color.neutral.950}"
760
+ },
761
+ secondary: {
762
+ bg: "{primitive.color.neutral.800}",
763
+ bgHover: "{primitive.color.neutral.700}",
764
+ bgActive: "{primitive.color.neutral.600}",
765
+ border: "{primitive.color.neutral.700}",
766
+ icon: "{primitive.color.brand.200}",
767
+ fg: "{primitive.color.brand.200}"
768
+ },
769
+ danger: {
770
+ bg: "{primitive.color.red.500}",
771
+ bgHover: "{primitive.color.red.400}",
772
+ bgActive: "{primitive.color.red.300}",
773
+ border: "{primitive.color.red.500}",
774
+ icon: "{primitive.color.white}",
775
+ fg: "{primitive.color.white}"
776
+ },
777
+ disabled: {
778
+ bg: "{primitive.color.neutral.800}",
779
+ border: "{primitive.color.neutral.800}",
780
+ icon: "{primitive.color.neutral.500}",
781
+ fg: "{primitive.color.neutral.500}"
782
+ }
783
+ },
784
+ state: {
785
+ hover: {
786
+ bg: "{primitive.color.neutral.800}"
787
+ },
788
+ pressed: {
789
+ bg: "{primitive.color.neutral.700}"
790
+ },
791
+ selected: {
792
+ bg: "{primitive.color.brand.950}",
793
+ border: "{primitive.color.brand.400}",
794
+ fg: "{primitive.color.brand.200}"
795
+ },
796
+ focus: {
797
+ ring: "{primitive.color.brand.400}"
798
+ },
799
+ loading: {
800
+ bg: "{primitive.color.neutral.800}",
801
+ fg: "{primitive.color.neutral.400}"
802
+ },
803
+ visited: {
804
+ fg: "{primitive.color.purple.300}"
805
+ },
806
+ readonly: {
807
+ bg: "{primitive.color.neutral.900}",
808
+ border: "{primitive.color.neutral.700}",
809
+ fg: "{primitive.color.neutral.300}"
810
+ }
811
+ },
812
+ form: {
813
+ bg: "{primitive.color.neutral.900}",
814
+ bgHover: "{primitive.color.neutral.800}",
815
+ border: "{primitive.color.neutral.700}",
816
+ borderHover: "{primitive.color.neutral.600}",
817
+ borderFocus: "{primitive.color.brand.400}",
818
+ borderInvalid: "{primitive.color.red.400}",
819
+ fg: "{primitive.color.neutral.50}",
820
+ placeholder: "{primitive.color.neutral.500}",
821
+ caret: "{primitive.color.brand.300}",
822
+ disabled: {
823
+ bg: "{primitive.color.neutral.800}",
824
+ border: "{primitive.color.neutral.800}",
825
+ fg: "{primitive.color.neutral.500}"
826
+ },
827
+ readonly: {
828
+ bg: "{primitive.color.neutral.900}",
829
+ border: "{primitive.color.neutral.700}",
830
+ fg: "{primitive.color.neutral.300}"
831
+ }
832
+ },
833
+ feedback: {
834
+ success: {
835
+ bg: "{primitive.color.green.950}",
836
+ fg: "{primitive.color.green.300}"
837
+ },
838
+ warning: {
839
+ bg: "{primitive.color.yellow.950}",
840
+ fg: "{primitive.color.yellow.300}"
841
+ },
842
+ danger: {
843
+ bg: "{primitive.color.red.950}",
844
+ fg: "{primitive.color.red.300}"
845
+ },
846
+ info: {
847
+ bg: "{primitive.color.cyan.950}",
848
+ fg: "{primitive.color.cyan.300}"
849
+ }
850
+ }
851
+ }
852
+ };
853
+
854
+ // src/themeNames.ts
855
+ var themeNames = {
856
+ light: "light",
857
+ dark: "dark"
858
+ };
859
+ var themeAttribute = "data-theme";
860
+ function getThemeSelector(name) {
861
+ return `[${themeAttribute}="${name}"]`;
862
+ }
863
+
864
+ // src/cssVars.ts
865
+ var cssVarPrefix = "synapsly";
866
+ var defaultResolvedLightCssTokens = resolveTokenReferences(
867
+ defaultLightSemanticTokenReferences,
868
+ {
869
+ primitive: primitiveTokens
870
+ }
871
+ );
872
+ var defaultResolvedDarkCssTokens = resolveTokenReferences(
873
+ defaultDarkSemanticTokenReferences,
874
+ {
875
+ primitive: primitiveTokens
876
+ }
877
+ );
878
+ var defaultResolvedCssTokens = defaultResolvedLightCssTokens;
879
+ var cssVars = createCssVarReferences(defaultResolvedLightCssTokens);
880
+ function createCssThemeTokens(base, overrides = {}) {
881
+ return createThemeTokens(base, overrides);
882
+ }
883
+ function createCssTheme(options) {
884
+ const tokens = createCssThemeTokens(
885
+ options.tokens ?? defaultResolvedLightCssTokens,
886
+ options.overrides ?? {}
887
+ );
888
+ const selector = options.selector ?? getThemeSelector(options.name);
889
+ return {
890
+ attributes: {
891
+ [themeAttribute]: options.name
892
+ },
893
+ cssText: createCssThemeRule(selector, tokens),
894
+ name: options.name,
895
+ selector
896
+ };
897
+ }
898
+ function createCssThemeRule(selector, tokens) {
899
+ const declarations = flattenTokenEntries(tokens).map(([path, value]) => ` ${getCssVarName(path)}: ${value};`).join("\n");
900
+ return `${selector} {
901
+ ${declarations}
902
+ }`;
903
+ }
904
+ function createDefaultCssThemes() {
905
+ return [
906
+ createCssThemeRule(
907
+ `:root, ${getThemeSelector(themeNames.light)}`,
908
+ defaultResolvedLightCssTokens
909
+ ),
910
+ createCssThemeRule(getThemeSelector(themeNames.dark), defaultResolvedDarkCssTokens)
911
+ ].join("\n\n");
912
+ }
913
+ function getCssVarName(path) {
914
+ return `--${[cssVarPrefix, ...path.map(toKebabCase)].join("-")}`;
915
+ }
916
+ function createCssVarReferences(tokens) {
917
+ return mapTokenLeaves(tokens, (path) => `var(${getCssVarName(path)})`);
918
+ }
919
+ function mapTokenLeaves(value, mapper, path = []) {
920
+ if (typeof value === "string") {
921
+ return mapper(path);
922
+ }
923
+ if (isRecord2(value)) {
924
+ return Object.fromEntries(
925
+ Object.entries(value).map(([key, childValue]) => [
926
+ key,
927
+ mapTokenLeaves(childValue, mapper, [...path, key])
928
+ ])
929
+ );
930
+ }
931
+ return value;
932
+ }
933
+ function flattenTokenEntries(value, path = []) {
934
+ if (typeof value === "string") {
935
+ return [[path, value]];
936
+ }
937
+ if (isRecord2(value)) {
938
+ return Object.entries(value).flatMap(
939
+ ([key, childValue]) => flattenTokenEntries(childValue, [...path, key])
940
+ );
941
+ }
942
+ return [];
943
+ }
944
+ function toKebabCase(value) {
945
+ return value.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[^a-zA-Z0-9-]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase();
946
+ }
947
+ function isRecord2(value) {
948
+ return typeof value === "object" && value !== null && !Array.isArray(value);
949
+ }
950
+
951
+ exports.createCssTheme = createCssTheme;
952
+ exports.createCssThemeRule = createCssThemeRule;
953
+ exports.createCssThemeTokens = createCssThemeTokens;
954
+ exports.createDefaultCssThemes = createDefaultCssThemes;
955
+ exports.cssVarPrefix = cssVarPrefix;
956
+ exports.cssVars = cssVars;
957
+ exports.defaultResolvedCssTokens = defaultResolvedCssTokens;
958
+ exports.defaultResolvedDarkCssTokens = defaultResolvedDarkCssTokens;
959
+ exports.defaultResolvedLightCssTokens = defaultResolvedLightCssTokens;
960
+ exports.getCssVarName = getCssVarName;
961
+ exports.primitiveTokens = primitiveTokens;
962
+ //# sourceMappingURL=cssVars.cjs.map
963
+ //# sourceMappingURL=cssVars.cjs.map