@weasel-js/theme 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,22 +48,33 @@ var THEMES = {
48
48
  "--wzl-swatch-magenta": "#ff6eff",
49
49
  "--wzl-radius-sm": "3px",
50
50
  "--wzl-radius-md": "5px",
51
+ "--wzl-radius-lg": "14px",
52
+ "--wzl-radius-pill": "999px",
51
53
  "--wzl-border-w": "1px",
52
54
  "--wzl-line-width": "2px",
53
55
  "--wzl-curve-width": "3px",
54
56
  "--wzl-tb-height": "28px",
55
- "--wzl-radius-lg": "14px",
56
- "--wzl-control-h": "28px",
57
+ "--wzl-control-h": "24px",
57
58
  "--wzl-glass-blur": "3px",
58
- "--wzl-font-size": "13px",
59
+ "--wzl-font-size-2xs": "9px",
60
+ "--wzl-font-size-xs": "10px",
59
61
  "--wzl-font-size-sm": "11px",
62
+ "--wzl-font-size": "13px",
63
+ "--wzl-font-size-lg": "16px",
64
+ "--wzl-font-size-xl": "20px",
60
65
  "--wzl-space-xs": "4px",
61
66
  "--wzl-space-sm": "8px",
62
67
  "--wzl-space-md": "12px",
63
68
  "--wzl-space-lg": "16px",
69
+ "--wzl-tracking-none": "0",
70
+ "--wzl-tracking-wide": "0.06em",
71
+ "--wzl-tracking-wider": "0.08em",
64
72
  "--wzl-z-toolbar": "10",
65
73
  "--wzl-z-overlay": "20",
66
74
  "--wzl-z-modal": "30",
75
+ "--wzl-leading-tight": "1",
76
+ "--wzl-leading-snug": "1.2",
77
+ "--wzl-leading": "1.4",
67
78
  "--wzl-backdrop": "none",
68
79
  "--wzl-motion-fast": "120ms",
69
80
  "--wzl-motion-medium": "240ms",
@@ -87,7 +98,9 @@ var THEMES = {
87
98
  "--wzl-border": "#25272c",
88
99
  "--wzl-border-strong": "#383b42",
89
100
  "--wzl-accent-fg": "#5841b8",
90
- "--wzl-fg-inverse": "#0e0f12"
101
+ "--wzl-fg-inverse": "#0e0f12",
102
+ "--wzl-shadow": "rgba(0, 0, 0, 0.6)",
103
+ "--wzl-border-raised": "#6f737b"
91
104
  },
92
105
  "light": {
93
106
  "--wzl-gray-50": "#f5f5f6",
@@ -133,22 +146,33 @@ var THEMES = {
133
146
  "--wzl-swatch-magenta": "#ff6eff",
134
147
  "--wzl-radius-sm": "3px",
135
148
  "--wzl-radius-md": "5px",
149
+ "--wzl-radius-lg": "14px",
150
+ "--wzl-radius-pill": "999px",
136
151
  "--wzl-border-w": "1px",
137
152
  "--wzl-line-width": "2px",
138
153
  "--wzl-curve-width": "3px",
139
154
  "--wzl-tb-height": "28px",
140
- "--wzl-radius-lg": "14px",
141
- "--wzl-control-h": "28px",
155
+ "--wzl-control-h": "24px",
142
156
  "--wzl-glass-blur": "3px",
143
- "--wzl-font-size": "13px",
157
+ "--wzl-font-size-2xs": "9px",
158
+ "--wzl-font-size-xs": "10px",
144
159
  "--wzl-font-size-sm": "11px",
160
+ "--wzl-font-size": "13px",
161
+ "--wzl-font-size-lg": "16px",
162
+ "--wzl-font-size-xl": "20px",
145
163
  "--wzl-space-xs": "4px",
146
164
  "--wzl-space-sm": "8px",
147
165
  "--wzl-space-md": "12px",
148
166
  "--wzl-space-lg": "16px",
167
+ "--wzl-tracking-none": "0",
168
+ "--wzl-tracking-wide": "0.06em",
169
+ "--wzl-tracking-wider": "0.08em",
149
170
  "--wzl-z-toolbar": "10",
150
171
  "--wzl-z-overlay": "20",
151
172
  "--wzl-z-modal": "30",
173
+ "--wzl-leading-tight": "1",
174
+ "--wzl-leading-snug": "1.2",
175
+ "--wzl-leading": "1.4",
152
176
  "--wzl-backdrop": "none",
153
177
  "--wzl-motion-fast": "120ms",
154
178
  "--wzl-motion-medium": "240ms",
@@ -172,7 +196,9 @@ var THEMES = {
172
196
  "--wzl-border": "#c9cbcf",
173
197
  "--wzl-border-strong": "#9ea1a8",
174
198
  "--wzl-accent-fg": "#2e1f7a",
175
- "--wzl-fg-inverse": "#f5f5f6"
199
+ "--wzl-fg-inverse": "#f5f5f6",
200
+ "--wzl-shadow": "rgba(0, 0, 0, 0.18)",
201
+ "--wzl-border-raised": "#6f737b"
176
202
  }
177
203
  }
178
204
  }
@@ -362,6 +388,15 @@ var THEME_SOURCES = {
362
388
  "type": "dimension",
363
389
  "value": "5px"
364
390
  },
391
+ "radius-lg": {
392
+ "type": "dimension",
393
+ "value": "14px"
394
+ },
395
+ "radius-pill": {
396
+ "type": "dimension",
397
+ "value": "999px",
398
+ "description": "Fully rounded ends \u2014 segmented controls, progress tracks."
399
+ },
365
400
  "border-w": {
366
401
  "type": "dimension",
367
402
  "value": "1px"
@@ -379,29 +414,47 @@ var THEME_SOURCES = {
379
414
  "tb-height": {
380
415
  "type": "dimension",
381
416
  "value": "28px",
382
- "description": "Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToggleBar, ToolOptionsBar)."
383
- },
384
- "radius-lg": {
385
- "type": "dimension",
386
- "value": "14px"
417
+ "description": "Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToolOptionsBar). Taller than control-h so the controls inside a strip are not flush with its edges."
387
418
  },
388
419
  "control-h": {
389
420
  "type": "dimension",
390
- "value": "28px",
391
- "description": "Height of an interactive control \u2014 button, input, select. Distinct from tb-height, which sizes the strip a row of them sits in."
421
+ "value": "24px",
422
+ "description": "Height of an interactive control \u2014 button, input, select, segmented control. Distinct from tb-height, which sizes the strip a row of them sits in."
392
423
  },
393
424
  "glass-blur": {
394
425
  "type": "dimension",
395
426
  "value": "3px",
396
427
  "description": "Backdrop blur radius for frosted surfaces. Pairs with glass-tint."
397
428
  },
398
- "font-size": {
429
+ "font-size-2xs": {
430
+ "type": "dimension",
431
+ "value": "9px",
432
+ "description": "Shortcut keys and index badges. The floor for chrome text."
433
+ },
434
+ "font-size-xs": {
399
435
  "type": "dimension",
400
- "value": "13px"
436
+ "value": "10px",
437
+ "description": "Tool-button labels under an icon."
401
438
  },
402
439
  "font-size-sm": {
403
440
  "type": "dimension",
404
- "value": "11px"
441
+ "value": "11px",
442
+ "description": "Chrome labels, status readouts, section headings."
443
+ },
444
+ "font-size": {
445
+ "type": "dimension",
446
+ "value": "13px",
447
+ "description": "Controls and body text."
448
+ },
449
+ "font-size-lg": {
450
+ "type": "dimension",
451
+ "value": "16px",
452
+ "description": "Panel and dialog titles."
453
+ },
454
+ "font-size-xl": {
455
+ "type": "dimension",
456
+ "value": "20px",
457
+ "description": "The largest chrome text \u2014 a lab or app title."
405
458
  },
406
459
  "space-xs": {
407
460
  "type": "dimension",
@@ -419,6 +472,20 @@ var THEME_SOURCES = {
419
472
  "type": "dimension",
420
473
  "value": "16px"
421
474
  },
475
+ "tracking-none": {
476
+ "type": "dimension",
477
+ "value": "0"
478
+ },
479
+ "tracking-wide": {
480
+ "type": "dimension",
481
+ "value": "0.06em",
482
+ "description": "Uppercase section headings."
483
+ },
484
+ "tracking-wider": {
485
+ "type": "dimension",
486
+ "value": "0.08em",
487
+ "description": "Uppercase at 11px and below."
488
+ },
422
489
  "z-toolbar": {
423
490
  "type": "number",
424
491
  "value": 10
@@ -431,6 +498,21 @@ var THEME_SOURCES = {
431
498
  "type": "number",
432
499
  "value": 30
433
500
  },
501
+ "leading-tight": {
502
+ "type": "number",
503
+ "value": 1,
504
+ "description": "Single-line controls; the box sets the height."
505
+ },
506
+ "leading-snug": {
507
+ "type": "number",
508
+ "value": 1.2,
509
+ "description": "Headings and two-line labels."
510
+ },
511
+ "leading": {
512
+ "type": "number",
513
+ "value": 1.4,
514
+ "description": "Body and anything that wraps."
515
+ },
434
516
  "backdrop": {
435
517
  "type": "gradient",
436
518
  "value": "none",
@@ -583,6 +665,16 @@ var THEME_SOURCES = {
583
665
  "type": "color",
584
666
  "value": "{color.gray-900}",
585
667
  "description": "Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive."
668
+ },
669
+ "shadow": {
670
+ "type": "color",
671
+ "value": "rgba(0, 0, 0, 0.6)",
672
+ "description": "Elevation. Always darker than any surface \u2014 never derived from fg, which is near-white on dark."
673
+ },
674
+ "border-raised": {
675
+ "type": "color",
676
+ "value": "{color.gray-400}",
677
+ "description": "The line around a raised surface. Clears 3:1 against surface and surface-raised in either mode, which the general-purpose border does not; over surface-sunken it does not, so a panel on a sunken field needs its own answer."
586
678
  }
587
679
  },
588
680
  "light": {
@@ -627,6 +719,14 @@ var THEME_SOURCES = {
627
719
  "type": "color",
628
720
  "value": "{color.gray-50}",
629
721
  "description": "Flips with the mode \u2014 see the dark layer."
722
+ },
723
+ "shadow": {
724
+ "type": "color",
725
+ "value": "rgba(0, 0, 0, 0.18)"
726
+ },
727
+ "border-raised": {
728
+ "type": "color",
729
+ "value": "{color.gray-400}"
630
730
  }
631
731
  }
632
732
  }
@@ -783,5 +883,5 @@ function applyTheme(el, theme, mode) {
783
883
  }
784
884
 
785
885
  export { THEMES, THEME_SOURCES, applyTheme, defineTheme, resolveTheme, weaselTheme };
786
- //# sourceMappingURL=chunk-E3FOFGMD.js.map
787
- //# sourceMappingURL=chunk-E3FOFGMD.js.map
886
+ //# sourceMappingURL=chunk-O32P3G22.js.map
887
+ //# sourceMappingURL=chunk-O32P3G22.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generated/themes.ts","../src/theme.ts","../src/dtcg/color.ts","../src/dtcg/resolve.ts","../src/resolveTheme.ts","../src/applyTheme.ts"],"names":[],"mappings":"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","file":"chunk-O32P3G22.js","sourcesContent":["// GENERATED by packages/theme/scripts/build-tokens.ts — do not edit.\n\nimport type { RawToken } from '../dtcg/types';\n\n/** Every design token the built-in themes declare, spelled as the CSS\n * custom property it becomes. */\nexport type TokenName =\n | '--wzl-accent'\n | '--wzl-accent-base'\n | '--wzl-accent-fg'\n | '--wzl-accent-hover'\n | '--wzl-accent-soft'\n | '--wzl-accent-strong'\n | '--wzl-backdrop'\n | '--wzl-border'\n | '--wzl-border-raised'\n | '--wzl-border-strong'\n | '--wzl-border-w'\n | '--wzl-control-h'\n | '--wzl-curve-color'\n | '--wzl-curve-width'\n | '--wzl-danger'\n | '--wzl-danger-base'\n | '--wzl-ease-in-cubic'\n | '--wzl-ease-in-out-cubic'\n | '--wzl-ease-out-back'\n | '--wzl-ease-out-cubic'\n | '--wzl-fg'\n | '--wzl-fg-inverse'\n | '--wzl-fg-muted'\n | '--wzl-fg-on-accent'\n | '--wzl-fg-subtle'\n | '--wzl-focus-ring'\n | '--wzl-font-body'\n | '--wzl-font-display'\n | '--wzl-font-mono'\n | '--wzl-font-size'\n | '--wzl-font-size-2xs'\n | '--wzl-font-size-lg'\n | '--wzl-font-size-sm'\n | '--wzl-font-size-xl'\n | '--wzl-font-size-xs'\n | '--wzl-font-ui'\n | '--wzl-font-weight-bold'\n | '--wzl-font-weight-light'\n | '--wzl-font-weight-medium'\n | '--wzl-font-weight-normal'\n | '--wzl-glass-blur'\n | '--wzl-glass-tint'\n | '--wzl-gray-100'\n | '--wzl-gray-200'\n | '--wzl-gray-300'\n | '--wzl-gray-400'\n | '--wzl-gray-50'\n | '--wzl-gray-500'\n | '--wzl-gray-600'\n | '--wzl-gray-700'\n | '--wzl-gray-800'\n | '--wzl-gray-900'\n | '--wzl-leading'\n | '--wzl-leading-snug'\n | '--wzl-leading-tight'\n | '--wzl-line'\n | '--wzl-line-strong'\n | '--wzl-line-subtle'\n | '--wzl-line-width'\n | '--wzl-motion-fast'\n | '--wzl-motion-medium'\n | '--wzl-radius-lg'\n | '--wzl-radius-md'\n | '--wzl-radius-pill'\n | '--wzl-radius-sm'\n | '--wzl-shadow'\n | '--wzl-space-lg'\n | '--wzl-space-md'\n | '--wzl-space-sm'\n | '--wzl-space-xs'\n | '--wzl-success'\n | '--wzl-success-base'\n | '--wzl-surface'\n | '--wzl-surface-hover'\n | '--wzl-surface-pressed'\n | '--wzl-surface-raised'\n | '--wzl-surface-sunken'\n | '--wzl-swatch-amber'\n | '--wzl-swatch-cyan'\n | '--wzl-swatch-gold'\n | '--wzl-swatch-green'\n | '--wzl-swatch-magenta'\n | '--wzl-swatch-mint'\n | '--wzl-swatch-orange'\n | '--wzl-swatch-pink'\n | '--wzl-swatch-sky'\n | '--wzl-swatch-violet'\n | '--wzl-tb-height'\n | '--wzl-tracking-none'\n | '--wzl-tracking-wide'\n | '--wzl-tracking-wider'\n | '--wzl-warning'\n | '--wzl-warning-base'\n | '--wzl-z-modal'\n | '--wzl-z-overlay'\n | '--wzl-z-toolbar';\n\n/** A built-in theme with its aliases already collapsed: every mode maps\n * every token name to a final CSS value. */\nexport interface GeneratedTheme {\n readonly name: string;\n readonly defaultMode: string;\n readonly modes: Readonly<Record<string, Readonly<Record<TokenName, string>>>>;\n}\n\n/** The built-in themes, resolved, keyed by theme name. Read this to list\n * or preview themes without resolving a token graph yourself. */\nexport const THEMES = {\n \"weasel\": {\n name: \"weasel\",\n defaultMode: \"dark\",\n modes: {\n \"dark\": {\n '--wzl-gray-50': \"#f5f5f6\",\n '--wzl-gray-100': \"#e6e7e9\",\n '--wzl-gray-200': \"#c9cbcf\",\n '--wzl-gray-300': \"#9ea1a8\",\n '--wzl-gray-400': \"#6f737b\",\n '--wzl-gray-500': \"#4d5058\",\n '--wzl-gray-600': \"#383b42\",\n '--wzl-gray-700': \"#25272c\",\n '--wzl-gray-800': \"#181a1e\",\n '--wzl-gray-900': \"#0e0f12\",\n '--wzl-accent-soft': \"#1d1454\",\n '--wzl-accent-base': \"#2e1f7a\",\n '--wzl-accent-strong': \"#5841b8\",\n '--wzl-danger-base': \"#d94a3f\",\n '--wzl-warning-base': \"#d99a3f\",\n '--wzl-success-base': \"#2ec27e\",\n '--wzl-fg-on-accent': \"#f5f5f6\",\n '--wzl-fg': \"#e6e7e9\",\n '--wzl-line-subtle': \"rgba(230, 231, 233, 0.1)\",\n '--wzl-line': \"rgba(230, 231, 233, 0.2)\",\n '--wzl-line-strong': \"rgba(230, 231, 233, 0.4)\",\n '--wzl-curve-color': \"#5841b8\",\n '--wzl-accent': \"#2e1f7a\",\n '--wzl-accent-hover': \"#5841b8\",\n '--wzl-danger': \"#d94a3f\",\n '--wzl-warning': \"#d99a3f\",\n '--wzl-success': \"#2ec27e\",\n '--wzl-focus-ring': \"#5841b8\",\n '--wzl-glass-tint': \"#2e1f7a\",\n '--wzl-surface-hover': \"rgba(230, 231, 233, 0.1)\",\n '--wzl-surface-pressed': \"rgba(230, 231, 233, 0.18)\",\n '--wzl-swatch-green': \"#2fdd18\",\n '--wzl-swatch-pink': \"#ff5885\",\n '--wzl-swatch-cyan': \"#00dfff\",\n '--wzl-swatch-gold': \"#dcb700\",\n '--wzl-swatch-amber': \"#ff8c00\",\n '--wzl-swatch-violet': \"#a497ff\",\n '--wzl-swatch-mint': \"#00e7af\",\n '--wzl-swatch-sky': \"#00b8ff\",\n '--wzl-swatch-orange': \"#ff6b00\",\n '--wzl-swatch-magenta': \"#ff6eff\",\n '--wzl-radius-sm': \"3px\",\n '--wzl-radius-md': \"5px\",\n '--wzl-radius-lg': \"14px\",\n '--wzl-radius-pill': \"999px\",\n '--wzl-border-w': \"1px\",\n '--wzl-line-width': \"2px\",\n '--wzl-curve-width': \"3px\",\n '--wzl-tb-height': \"28px\",\n '--wzl-control-h': \"24px\",\n '--wzl-glass-blur': \"3px\",\n '--wzl-font-size-2xs': \"9px\",\n '--wzl-font-size-xs': \"10px\",\n '--wzl-font-size-sm': \"11px\",\n '--wzl-font-size': \"13px\",\n '--wzl-font-size-lg': \"16px\",\n '--wzl-font-size-xl': \"20px\",\n '--wzl-space-xs': \"4px\",\n '--wzl-space-sm': \"8px\",\n '--wzl-space-md': \"12px\",\n '--wzl-space-lg': \"16px\",\n '--wzl-tracking-none': \"0\",\n '--wzl-tracking-wide': \"0.06em\",\n '--wzl-tracking-wider': \"0.08em\",\n '--wzl-z-toolbar': \"10\",\n '--wzl-z-overlay': \"20\",\n '--wzl-z-modal': \"30\",\n '--wzl-leading-tight': \"1\",\n '--wzl-leading-snug': \"1.2\",\n '--wzl-leading': \"1.4\",\n '--wzl-backdrop': \"none\",\n '--wzl-motion-fast': \"120ms\",\n '--wzl-motion-medium': \"240ms\",\n '--wzl-ease-in-cubic': \"cubic-bezier(0.32, 0, 0.67, 0)\",\n '--wzl-ease-out-cubic': \"cubic-bezier(0.33, 1, 0.68, 1)\",\n '--wzl-ease-in-out-cubic': \"cubic-bezier(0.65, 0, 0.35, 1)\",\n '--wzl-ease-out-back': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n '--wzl-font-ui': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-display': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-body': \"Inter, system-ui, -apple-system, 'Segoe UI', sans-serif\",\n '--wzl-font-mono': \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\",\n '--wzl-font-weight-light': \"200\",\n '--wzl-font-weight-normal': \"300\",\n '--wzl-font-weight-medium': \"350\",\n '--wzl-font-weight-bold': \"400\",\n '--wzl-surface': \"#181a1e\",\n '--wzl-surface-raised': \"#25272c\",\n '--wzl-surface-sunken': \"#0e0f12\",\n '--wzl-fg-muted': \"#9ea1a8\",\n '--wzl-fg-subtle': \"#6f737b\",\n '--wzl-border': \"#25272c\",\n '--wzl-border-strong': \"#383b42\",\n '--wzl-accent-fg': \"#5841b8\",\n '--wzl-fg-inverse': \"#0e0f12\",\n '--wzl-shadow': \"rgba(0, 0, 0, 0.6)\",\n '--wzl-border-raised': \"#6f737b\",\n },\n \"light\": {\n '--wzl-gray-50': \"#f5f5f6\",\n '--wzl-gray-100': \"#e6e7e9\",\n '--wzl-gray-200': \"#c9cbcf\",\n '--wzl-gray-300': \"#9ea1a8\",\n '--wzl-gray-400': \"#6f737b\",\n '--wzl-gray-500': \"#4d5058\",\n '--wzl-gray-600': \"#383b42\",\n '--wzl-gray-700': \"#25272c\",\n '--wzl-gray-800': \"#181a1e\",\n '--wzl-gray-900': \"#0e0f12\",\n '--wzl-accent-soft': \"#1d1454\",\n '--wzl-accent-base': \"#2e1f7a\",\n '--wzl-accent-strong': \"#5841b8\",\n '--wzl-danger-base': \"#d94a3f\",\n '--wzl-warning-base': \"#d99a3f\",\n '--wzl-success-base': \"#2ec27e\",\n '--wzl-fg-on-accent': \"#f5f5f6\",\n '--wzl-fg': \"#0e0f12\",\n '--wzl-line-subtle': \"rgba(14, 15, 18, 0.1)\",\n '--wzl-line': \"rgba(14, 15, 18, 0.2)\",\n '--wzl-line-strong': \"rgba(14, 15, 18, 0.4)\",\n '--wzl-curve-color': \"#5841b8\",\n '--wzl-accent': \"#2e1f7a\",\n '--wzl-accent-hover': \"#5841b8\",\n '--wzl-danger': \"#d94a3f\",\n '--wzl-warning': \"#d99a3f\",\n '--wzl-success': \"#2ec27e\",\n '--wzl-focus-ring': \"#5841b8\",\n '--wzl-glass-tint': \"#2e1f7a\",\n '--wzl-surface-hover': \"rgba(14, 15, 18, 0.1)\",\n '--wzl-surface-pressed': \"rgba(14, 15, 18, 0.18)\",\n '--wzl-swatch-green': \"#2fdd18\",\n '--wzl-swatch-pink': \"#ff5885\",\n '--wzl-swatch-cyan': \"#00dfff\",\n '--wzl-swatch-gold': \"#dcb700\",\n '--wzl-swatch-amber': \"#ff8c00\",\n '--wzl-swatch-violet': \"#a497ff\",\n '--wzl-swatch-mint': \"#00e7af\",\n '--wzl-swatch-sky': \"#00b8ff\",\n '--wzl-swatch-orange': \"#ff6b00\",\n '--wzl-swatch-magenta': \"#ff6eff\",\n '--wzl-radius-sm': \"3px\",\n '--wzl-radius-md': \"5px\",\n '--wzl-radius-lg': \"14px\",\n '--wzl-radius-pill': \"999px\",\n '--wzl-border-w': \"1px\",\n '--wzl-line-width': \"2px\",\n '--wzl-curve-width': \"3px\",\n '--wzl-tb-height': \"28px\",\n '--wzl-control-h': \"24px\",\n '--wzl-glass-blur': \"3px\",\n '--wzl-font-size-2xs': \"9px\",\n '--wzl-font-size-xs': \"10px\",\n '--wzl-font-size-sm': \"11px\",\n '--wzl-font-size': \"13px\",\n '--wzl-font-size-lg': \"16px\",\n '--wzl-font-size-xl': \"20px\",\n '--wzl-space-xs': \"4px\",\n '--wzl-space-sm': \"8px\",\n '--wzl-space-md': \"12px\",\n '--wzl-space-lg': \"16px\",\n '--wzl-tracking-none': \"0\",\n '--wzl-tracking-wide': \"0.06em\",\n '--wzl-tracking-wider': \"0.08em\",\n '--wzl-z-toolbar': \"10\",\n '--wzl-z-overlay': \"20\",\n '--wzl-z-modal': \"30\",\n '--wzl-leading-tight': \"1\",\n '--wzl-leading-snug': \"1.2\",\n '--wzl-leading': \"1.4\",\n '--wzl-backdrop': \"none\",\n '--wzl-motion-fast': \"120ms\",\n '--wzl-motion-medium': \"240ms\",\n '--wzl-ease-in-cubic': \"cubic-bezier(0.32, 0, 0.67, 0)\",\n '--wzl-ease-out-cubic': \"cubic-bezier(0.33, 1, 0.68, 1)\",\n '--wzl-ease-in-out-cubic': \"cubic-bezier(0.65, 0, 0.35, 1)\",\n '--wzl-ease-out-back': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n '--wzl-font-ui': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-display': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-body': \"Inter, system-ui, -apple-system, 'Segoe UI', sans-serif\",\n '--wzl-font-mono': \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\",\n '--wzl-font-weight-light': \"200\",\n '--wzl-font-weight-normal': \"300\",\n '--wzl-font-weight-medium': \"350\",\n '--wzl-font-weight-bold': \"400\",\n '--wzl-surface': \"#f5f5f6\",\n '--wzl-surface-raised': \"#e6e7e9\",\n '--wzl-surface-sunken': \"#c9cbcf\",\n '--wzl-fg-muted': \"#383b42\",\n '--wzl-fg-subtle': \"#4d5058\",\n '--wzl-border': \"#c9cbcf\",\n '--wzl-border-strong': \"#9ea1a8\",\n '--wzl-accent-fg': \"#2e1f7a\",\n '--wzl-fg-inverse': \"#f5f5f6\",\n '--wzl-shadow': \"rgba(0, 0, 0, 0.18)\",\n '--wzl-border-raised': \"#6f737b\",\n },\n },\n },\n} as const satisfies Record<string, GeneratedTheme>;\n\n/** Unresolved token graph. `extends` needs the aliases intact so an override\n * of a base primitive still reaches everything referencing it. */\nexport interface ThemeSource {\n readonly primitives: Readonly<Record<string, RawToken>>;\n readonly modes: Readonly<Record<string, Readonly<Record<string, RawToken>>>>;\n}\n\n/** The same built-in themes as `THEMES`, unresolved. This is what\n * `defineTheme` layers onto. */\nexport const THEME_SOURCES: Readonly<Record<string, ThemeSource>> = {\n \"weasel\": {\n \"primitives\": {\n \"gray-50\": {\n \"type\": \"color\",\n \"value\": \"#f5f5f6\"\n },\n \"gray-100\": {\n \"type\": \"color\",\n \"value\": \"#e6e7e9\"\n },\n \"gray-200\": {\n \"type\": \"color\",\n \"value\": \"#c9cbcf\"\n },\n \"gray-300\": {\n \"type\": \"color\",\n \"value\": \"#9ea1a8\"\n },\n \"gray-400\": {\n \"type\": \"color\",\n \"value\": \"#6f737b\"\n },\n \"gray-500\": {\n \"type\": \"color\",\n \"value\": \"#4d5058\"\n },\n \"gray-600\": {\n \"type\": \"color\",\n \"value\": \"#383b42\"\n },\n \"gray-700\": {\n \"type\": \"color\",\n \"value\": \"#25272c\"\n },\n \"gray-800\": {\n \"type\": \"color\",\n \"value\": \"#181a1e\"\n },\n \"gray-900\": {\n \"type\": \"color\",\n \"value\": \"#0e0f12\"\n },\n \"accent-soft\": {\n \"type\": \"color\",\n \"value\": \"#1d1454\"\n },\n \"accent-base\": {\n \"type\": \"color\",\n \"value\": \"#2e1f7a\",\n \"description\": \"Midnight blue-violet. Deep and saturated; anchors primary actions on light and dark surfaces alike.\"\n },\n \"accent-strong\": {\n \"type\": \"color\",\n \"value\": \"#5841b8\"\n },\n \"danger-base\": {\n \"type\": \"color\",\n \"value\": \"#d94a3f\"\n },\n \"warning-base\": {\n \"type\": \"color\",\n \"value\": \"#d99a3f\"\n },\n \"success-base\": {\n \"type\": \"color\",\n \"value\": \"#2ec27e\"\n },\n \"fg-on-accent\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-50}\"\n },\n \"line-subtle\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.1,\n \"description\": \"Barely-there separators (table rows).\"\n },\n \"line\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.2,\n \"description\": \"Primary gridlines on sunken surfaces.\"\n },\n \"line-strong\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.4,\n \"description\": \"Axes and emphasized dividers.\"\n },\n \"curve-color\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\",\n \"description\": \"Drawn data curves. Routes through the bright accent because accent-base is too dim on sunken surfaces.\"\n },\n \"accent\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-base}\"\n },\n \"accent-hover\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\"\n },\n \"danger\": {\n \"type\": \"color\",\n \"value\": \"{color.danger-base}\"\n },\n \"warning\": {\n \"type\": \"color\",\n \"value\": \"{color.warning-base}\"\n },\n \"success\": {\n \"type\": \"color\",\n \"value\": \"{color.success-base}\"\n },\n \"focus-ring\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\"\n },\n \"glass-tint\": {\n \"type\": \"color\",\n \"value\": \"{color.accent}\",\n \"description\": \"Frosted-glass tint. Components compose it as color-mix(in srgb, var(--wzl-glass-tint) 78%, transparent) with backdrop-filter: blur(3px).\"\n },\n \"surface-hover\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.1,\n \"description\": \"Hover wash over a raised surface. Same formula as line-subtle, different job — do not collapse them.\"\n },\n \"surface-pressed\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.18,\n \"description\": \"Pressed wash over a raised surface.\"\n },\n \"swatch-green\": {\n \"type\": \"color\",\n \"value\": \"#2fdd18\",\n \"description\": \"First of ten categorical spot colors for plotting, status and data viz. Ordered — take them in sequence. Mode-invariant on purpose: a series keeps its color when the mode flips.\"\n },\n \"swatch-pink\": {\n \"type\": \"color\",\n \"value\": \"#ff5885\"\n },\n \"swatch-cyan\": {\n \"type\": \"color\",\n \"value\": \"#00dfff\"\n },\n \"swatch-gold\": {\n \"type\": \"color\",\n \"value\": \"#dcb700\"\n },\n \"swatch-amber\": {\n \"type\": \"color\",\n \"value\": \"#ff8c00\"\n },\n \"swatch-violet\": {\n \"type\": \"color\",\n \"value\": \"#a497ff\"\n },\n \"swatch-mint\": {\n \"type\": \"color\",\n \"value\": \"#00e7af\"\n },\n \"swatch-sky\": {\n \"type\": \"color\",\n \"value\": \"#00b8ff\"\n },\n \"swatch-orange\": {\n \"type\": \"color\",\n \"value\": \"#ff6b00\"\n },\n \"swatch-magenta\": {\n \"type\": \"color\",\n \"value\": \"#ff6eff\"\n },\n \"radius-sm\": {\n \"type\": \"dimension\",\n \"value\": \"3px\"\n },\n \"radius-md\": {\n \"type\": \"dimension\",\n \"value\": \"5px\"\n },\n \"radius-lg\": {\n \"type\": \"dimension\",\n \"value\": \"14px\"\n },\n \"radius-pill\": {\n \"type\": \"dimension\",\n \"value\": \"999px\",\n \"description\": \"Fully rounded ends — segmented controls, progress tracks.\"\n },\n \"border-w\": {\n \"type\": \"dimension\",\n \"value\": \"1px\"\n },\n \"line-width\": {\n \"type\": \"dimension\",\n \"value\": \"2px\",\n \"description\": \"Structural lines — gridlines, dividers, axes.\"\n },\n \"curve-width\": {\n \"type\": \"dimension\",\n \"value\": \"3px\",\n \"description\": \"Drawn data curves. Heavier than structural lines so data reads as primary content.\"\n },\n \"tb-height\": {\n \"type\": \"dimension\",\n \"value\": \"28px\",\n \"description\": \"Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToolOptionsBar). Taller than control-h so the controls inside a strip are not flush with its edges.\"\n },\n \"control-h\": {\n \"type\": \"dimension\",\n \"value\": \"24px\",\n \"description\": \"Height of an interactive control — button, input, select, segmented control. Distinct from tb-height, which sizes the strip a row of them sits in.\"\n },\n \"glass-blur\": {\n \"type\": \"dimension\",\n \"value\": \"3px\",\n \"description\": \"Backdrop blur radius for frosted surfaces. Pairs with glass-tint.\"\n },\n \"font-size-2xs\": {\n \"type\": \"dimension\",\n \"value\": \"9px\",\n \"description\": \"Shortcut keys and index badges. The floor for chrome text.\"\n },\n \"font-size-xs\": {\n \"type\": \"dimension\",\n \"value\": \"10px\",\n \"description\": \"Tool-button labels under an icon.\"\n },\n \"font-size-sm\": {\n \"type\": \"dimension\",\n \"value\": \"11px\",\n \"description\": \"Chrome labels, status readouts, section headings.\"\n },\n \"font-size\": {\n \"type\": \"dimension\",\n \"value\": \"13px\",\n \"description\": \"Controls and body text.\"\n },\n \"font-size-lg\": {\n \"type\": \"dimension\",\n \"value\": \"16px\",\n \"description\": \"Panel and dialog titles.\"\n },\n \"font-size-xl\": {\n \"type\": \"dimension\",\n \"value\": \"20px\",\n \"description\": \"The largest chrome text — a lab or app title.\"\n },\n \"space-xs\": {\n \"type\": \"dimension\",\n \"value\": \"4px\"\n },\n \"space-sm\": {\n \"type\": \"dimension\",\n \"value\": \"8px\"\n },\n \"space-md\": {\n \"type\": \"dimension\",\n \"value\": \"12px\"\n },\n \"space-lg\": {\n \"type\": \"dimension\",\n \"value\": \"16px\"\n },\n \"tracking-none\": {\n \"type\": \"dimension\",\n \"value\": \"0\"\n },\n \"tracking-wide\": {\n \"type\": \"dimension\",\n \"value\": \"0.06em\",\n \"description\": \"Uppercase section headings.\"\n },\n \"tracking-wider\": {\n \"type\": \"dimension\",\n \"value\": \"0.08em\",\n \"description\": \"Uppercase at 11px and below.\"\n },\n \"z-toolbar\": {\n \"type\": \"number\",\n \"value\": 10\n },\n \"z-overlay\": {\n \"type\": \"number\",\n \"value\": 20\n },\n \"z-modal\": {\n \"type\": \"number\",\n \"value\": 30\n },\n \"leading-tight\": {\n \"type\": \"number\",\n \"value\": 1,\n \"description\": \"Single-line controls; the box sets the height.\"\n },\n \"leading-snug\": {\n \"type\": \"number\",\n \"value\": 1.2,\n \"description\": \"Headings and two-line labels.\"\n },\n \"leading\": {\n \"type\": \"number\",\n \"value\": 1.4,\n \"description\": \"Body and anything that wraps.\"\n },\n \"backdrop\": {\n \"type\": \"gradient\",\n \"value\": \"none\",\n \"description\": \"Layered backdrop fill for a page or lab root. `none` here; a theme with a signature background sets it.\"\n },\n \"motion-fast\": {\n \"type\": \"duration\",\n \"value\": \"120ms\",\n \"description\": \"Micro-interactions — hover, focus, pressed.\"\n },\n \"motion-medium\": {\n \"type\": \"duration\",\n \"value\": \"240ms\",\n \"description\": \"Entrances and exits — toasts, popovers, panels.\"\n },\n \"ease-in-cubic\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.32,\n 0,\n 0.67,\n 0\n ]\n },\n \"ease-out-cubic\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.33,\n 1,\n 0.68,\n 1\n ]\n },\n \"ease-in-out-cubic\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.65,\n 0,\n 0.35,\n 1\n ]\n },\n \"ease-out-back\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.34,\n 1.56,\n 0.64,\n 1\n ]\n },\n \"font-ui\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"Oswald\",\n \"Helvetica Neue Condensed\",\n \"Arial Narrow\",\n \"system-ui\",\n \"sans-serif\"\n ],\n \"description\": \"Condensed UI/display face. The heavier cuts get blocky at any size, so the weight tokens stay in the 200-400 range.\"\n },\n \"font-display\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"Oswald\",\n \"Helvetica Neue Condensed\",\n \"Arial Narrow\",\n \"system-ui\",\n \"sans-serif\"\n ]\n },\n \"font-body\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"Inter\",\n \"system-ui\",\n \"-apple-system\",\n \"Segoe UI\",\n \"sans-serif\"\n ]\n },\n \"font-mono\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"ui-monospace\",\n \"SFMono-Regular\",\n \"Menlo\",\n \"Consolas\",\n \"monospace\"\n ]\n },\n \"font-weight-light\": {\n \"type\": \"fontWeight\",\n \"value\": 200\n },\n \"font-weight-normal\": {\n \"type\": \"fontWeight\",\n \"value\": 300\n },\n \"font-weight-medium\": {\n \"type\": \"fontWeight\",\n \"value\": 350\n },\n \"font-weight-bold\": {\n \"type\": \"fontWeight\",\n \"value\": 400\n }\n },\n \"modes\": {\n \"dark\": {\n \"surface\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-800}\"\n },\n \"surface-raised\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-700}\"\n },\n \"surface-sunken\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-900}\"\n },\n \"fg\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-100}\"\n },\n \"fg-muted\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-300}\"\n },\n \"fg-subtle\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-400}\"\n },\n \"border\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-700}\"\n },\n \"border-strong\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-600}\"\n },\n \"accent-fg\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\",\n \"description\": \"Accent for foreground use — text, icons, selected labels drawn on a surface. accent is a fill; the midnight base is too dim to read as text on dark surfaces.\"\n },\n \"fg-inverse\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-900}\",\n \"description\": \"Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive.\"\n },\n \"shadow\": {\n \"type\": \"color\",\n \"value\": \"rgba(0, 0, 0, 0.6)\",\n \"description\": \"Elevation. Always darker than any surface — never derived from fg, which is near-white on dark.\"\n },\n \"border-raised\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-400}\",\n \"description\": \"The line around a raised surface. Clears 3:1 against surface and surface-raised in either mode, which the general-purpose border does not; over surface-sunken it does not, so a panel on a sunken field needs its own answer.\"\n }\n },\n \"light\": {\n \"surface\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-50}\"\n },\n \"surface-raised\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-100}\"\n },\n \"surface-sunken\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-200}\"\n },\n \"fg\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-900}\"\n },\n \"fg-muted\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-600}\"\n },\n \"fg-subtle\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-500}\"\n },\n \"border\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-200}\"\n },\n \"border-strong\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-300}\"\n },\n \"accent-fg\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-base}\",\n \"description\": \"Flips to the deep base in light mode, where it is the legible one.\"\n },\n \"fg-inverse\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-50}\",\n \"description\": \"Flips with the mode — see the dark layer.\"\n },\n \"shadow\": {\n \"type\": \"color\",\n \"value\": \"rgba(0, 0, 0, 0.18)\"\n },\n \"border-raised\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-400}\"\n }\n }\n }\n }\n};\n","import type { FlatTokens, RawToken } from './dtcg/types';\nimport { THEME_SOURCES } from './generated/themes';\n\n/** Authoring shorthand: a bare string is a literal or a `{ref}`. */\nexport type TokenInput = string | number | RawToken;\n\n/** What `defineTheme` accepts: a name, the base theme to layer onto, and the\n * token overrides, split into mode-invariant and per-mode. */\nexport interface ThemeInput {\n readonly name: string;\n /** Base to layer onto. Defaults to `weaselTheme`; `null` opts out. */\n readonly extends?: Theme | null;\n readonly defaultMode?: string;\n /** Mode-invariant overrides. */\n readonly tokens?: Readonly<Record<string, TokenInput>>;\n readonly modes: Readonly<Record<string, Readonly<Record<string, TokenInput>>>>;\n}\n\n/**\n * A theme: a named set of design tokens, organized into a mode-invariant layer\n * plus one layer per mode (light, dark, …), optionally extending another theme.\n * Tokens are held unresolved — aliases between them are collapsed later by\n * `resolveTheme`, so an override of a base primitive still reaches everything\n * that references it.\n */\nexport interface Theme {\n readonly name: string;\n readonly extends: Theme | null;\n readonly defaultMode: string;\n readonly tokens: FlatTokens;\n readonly modes: Readonly<Record<string, FlatTokens>>;\n}\n\nfunction normalize(input: Readonly<Record<string, TokenInput>>): FlatTokens {\n const out: FlatTokens = {};\n for (const [name, v] of Object.entries(input)) {\n out[name] =\n typeof v === 'object'\n ? v\n : { type: 'unknown', value: v, alpha: undefined, description: undefined };\n }\n return out;\n}\n\n/** The built-in theme, materialized from the generated source. */\nexport const weaselTheme: Theme = {\n name: 'weasel',\n extends: null,\n defaultMode: 'dark',\n tokens: THEME_SOURCES.weasel.primitives as FlatTokens,\n modes: THEME_SOURCES.weasel.modes as Record<string, FlatTokens>,\n};\n\n/** Build a theme from authoring shorthand. Unless `extends` says otherwise the\n * result layers onto `weaselTheme`, so a theme only needs to name what it\n * changes. */\nexport function defineTheme(input: ThemeInput): Theme {\n const base = input.extends === undefined ? weaselTheme : input.extends;\n const modes: Record<string, FlatTokens> = {};\n for (const [mode, tokens] of Object.entries(input.modes)) modes[mode] = normalize(tokens);\n return {\n name: input.name,\n extends: base,\n defaultMode: input.defaultMode ?? base?.defaultMode ?? 'dark',\n tokens: normalize(input.tokens ?? {}),\n modes,\n };\n}\n","/**\n * Hex → `rgba()`. The JS side of the alpha extension; the CSS side emits\n * `color-mix()` instead so DOM chrome keeps tracking a downstream override of\n * the referenced token.\n */\nexport function hexToRgba(hex: string, alpha: number): string {\n const m = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m) throw new Error(`Expected a hex color, got \"${hex}\"`);\n\n const body = m[1];\n const full = body.length === 3 ? body.replace(/./g, (c) => c + c) : body;\n const r = Number.parseInt(full.slice(0, 2), 16);\n const g = Number.parseInt(full.slice(2, 4), 16);\n const b = Number.parseInt(full.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","import { hexToRgba } from './color';\nimport type { FlatTokens, ResolvedTokenMap, TokenValue } from './types';\n\n/** `{color.gray-100}` → `gray-100`. The type group is dropped, per the naming rule. */\nconst REF = /^\\{([^}]+)\\}$/;\n\nfunction refTarget(value: TokenValue): string | null {\n if (typeof value !== 'string') return null;\n const m = REF.exec(value.trim());\n if (!m) return null;\n const path = m[1];\n const dot = path.indexOf('.');\n return dot === -1 ? path : path.slice(dot + 1);\n}\n\n/**\n * Quote family names containing whitespace; leave everything else bare.\n * Generic keywords (`sans-serif`) and hyphen-prefixed identifiers\n * (`-apple-system`) break if quoted, and neither contains a space.\n */\nfunction fontStack(value: readonly (string | number)[]): string {\n return value.map((f) => (typeof f === 'string' && /\\s/.test(f) ? `'${f}'` : String(f))).join(', ');\n}\n\nfunction serialize(type: string, value: TokenValue): string {\n if (Array.isArray(value)) {\n if (type === 'cubicBezier') return `cubic-bezier(${value.join(', ')})`;\n if (type === 'fontFamily') return fontStack(value);\n return value.join(', ');\n }\n return String(value);\n}\n\n/**\n * Resolve flat tokens to final CSS-ready strings.\n *\n * Merge modes before calling: this function has no notion of modes, only of a\n * complete token set.\n */\nexport function resolveTokens(tokens: FlatTokens): ResolvedTokenMap {\n const out: ResolvedTokenMap = {};\n const inProgress = new Set<string>();\n\n const resolveOne = (name: string): string => {\n const cached = out[name];\n if (cached !== undefined) return cached;\n\n const token = tokens[name];\n if (!token) throw new Error(`Unknown token \"${name}\"`);\n\n if (inProgress.has(name)) {\n throw new Error(`Reference cycle at token \"${name}\" (${[...inProgress].join(' → ')})`);\n }\n inProgress.add(name);\n\n const target = refTarget(token.value);\n let value: string;\n if (target === null) {\n value = serialize(token.type, token.value);\n } else if (!tokens[target]) {\n throw new Error(`Token \"${name}\" references \"${target}\", which is not defined`);\n } else {\n value = resolveOne(target);\n }\n\n if (token.alpha !== undefined) value = hexToRgba(value, token.alpha);\n\n inProgress.delete(name);\n out[name] = value;\n return value;\n };\n\n for (const name of Object.keys(tokens)) resolveOne(name);\n return out;\n}\n\n/** Merge a mode's tokens over the mode-invariant set. Later wins. */\nexport function mergeTokens(base: FlatTokens, mode: FlatTokens): FlatTokens {\n return { ...base, ...mode };\n}\n","import { resolveTokens } from './dtcg/resolve';\nimport type { FlatTokens } from './dtcg/types';\nimport type { Theme } from './theme';\nimport type { TokenName } from './generated/themes';\n\n/** The output of `resolveTheme`: every token of a theme, for one mode, keyed\n * by CSS custom-property name and flattened to a final CSS value. */\nexport type ResolvedTheme = Readonly<Record<TokenName, string>>;\n\n/** Root-first so the leaf theme's overrides land last. */\nfunction chain(theme: Theme): Theme[] {\n const out: Theme[] = [];\n for (let t: Theme | null = theme; t; t = t.extends) out.unshift(t);\n return out;\n}\n\n/**\n * Merge the extends chain, layer the mode over it, resolve every alias, and\n * key the result by CSS custom-property name.\n *\n * Pure — no DOM. An unresolvable reference throws rather than falling back.\n */\nexport function resolveTheme(theme: Theme, mode: string): ResolvedTheme {\n const themes = chain(theme);\n const effectiveMode = themes.some((t) => mode in t.modes) ? mode : theme.defaultMode;\n\n // Each theme contributes its mode-invariant tokens and then its mode layer,\n // before the next theme down the chain gets a turn. Collecting all `tokens`\n // first and all mode layers second would let the *base's* mode layer outrank\n // a derived theme's deliberate mode-invariant override.\n let merged: FlatTokens = {};\n for (const t of themes) {\n merged = { ...merged, ...t.tokens, ...(t.modes[effectiveMode] ?? {}) };\n }\n\n const resolved = resolveTokens(merged);\n const out: Record<string, string> = {};\n for (const [name, value] of Object.entries(resolved)) out[`--wzl-${name}`] = value;\n return out as ResolvedTheme;\n}\n","import { resolveTheme } from './resolveTheme';\nimport type { Theme } from './theme';\n\nconst STYLE_ID = 'wzl-themes';\n/** `theme.name::mode` → the rule text currently published for it. Keyed by\n * name because that is what the rule's selector matches on, and holding the\n * text is what lets a redefinition under the same name replace its rule\n * rather than be swallowed as a cache hit. */\nconst emitted = new Map<string, string>();\nlet sheet: CSSStyleSheet | null = null;\nlet styleEl: HTMLStyleElement | null = null;\n\n/** Test seam — drops the module-level cache so each case starts clean. */\nexport function __resetThemeSheet(): void {\n emitted.clear();\n sheet = null;\n styleEl = null;\n}\n\nfunction canAdopt(): boolean {\n return (\n typeof CSSStyleSheet !== 'undefined' &&\n 'replaceSync' in CSSStyleSheet.prototype &&\n Array.isArray(document.adoptedStyleSheets)\n );\n}\n\n/** Republish every rule from `emitted`. Rewriting the whole sheet rather than\n * appending keeps it the size of the theme set: a theme redefined under a\n * name it already used replaces its rule instead of stacking another one. */\nfunction flushRules(): void {\n const css = [...emitted.values()].join('\\n');\n if (canAdopt()) {\n if (!sheet) {\n sheet = new CSSStyleSheet();\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n }\n sheet.replaceSync(css);\n return;\n }\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.id = STYLE_ID;\n document.head.appendChild(styleEl);\n }\n styleEl.textContent = css;\n}\n\n/**\n * Apply `theme` at `mode` to `el`'s subtree.\n *\n * Stamps two data attributes and ensures a matching rule block exists in a\n * module-owned stylesheet. Deliberately not inline properties: the cascade\n * then does the work, per-subtree overrides are just a different theme name,\n * and no `!important` is ever needed. No-op outside a DOM.\n */\nexport function applyTheme(el: HTMLElement, theme: Theme, mode: string): void {\n if (typeof document === 'undefined') return;\n\n const key = `${theme.name}::${mode}`;\n const resolved = resolveTheme(theme, mode);\n const body = Object.entries(resolved)\n .map(([name, value]) => `${name}: ${value};`)\n .join(' ');\n const rule = `[data-wzl-theme='${theme.name}'][data-wzl-mode='${mode}'] { ${body} }`;\n if (emitted.get(key) !== rule) {\n emitted.set(key, rule);\n flushRules();\n }\n\n el.setAttribute('data-wzl-theme', theme.name);\n el.setAttribute('data-wzl-mode', mode);\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as Theme } from './resolveTheme-VKCElQaY.js';
2
- export { F as FlatTokens, G as GeneratedTheme, R as RawToken, a as ResolvedTheme, b as THEMES, c as THEME_SOURCES, d as ThemeInput, e as ThemeSource, f as TokenInput, g as TokenName, h as defineTheme, r as resolveTheme, w as weaselTheme } from './resolveTheme-VKCElQaY.js';
1
+ import { T as Theme } from './resolveTheme-Bq7PCVg5.js';
2
+ export { F as FlatTokens, G as GeneratedTheme, R as RawToken, a as ResolvedTheme, b as THEMES, c as THEME_SOURCES, d as ThemeInput, e as ThemeSource, f as TokenInput, g as TokenName, h as defineTheme, r as resolveTheme, w as weaselTheme } from './resolveTheme-Bq7PCVg5.js';
3
3
 
4
4
  /** One row of `TOKEN_MANIFEST`: a token, its DTCG type, the name-prefix
5
5
  * group it belongs to, its value in the default theme and mode, and the
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { weaselTheme } from './chunk-E3FOFGMD.js';
2
- export { THEMES, THEME_SOURCES, applyTheme, defineTheme, resolveTheme, weaselTheme } from './chunk-E3FOFGMD.js';
1
+ import { weaselTheme } from './chunk-O32P3G22.js';
2
+ export { THEMES, THEME_SOURCES, applyTheme, defineTheme, resolveTheme, weaselTheme } from './chunk-O32P3G22.js';
3
3
 
4
4
  // src/generated/manifest.ts
5
5
  var TOKEN_MANIFEST = [
@@ -45,22 +45,33 @@ var TOKEN_MANIFEST = [
45
45
  { name: "--wzl-swatch-magenta", type: "color", group: "swatch", defaultValue: "#ff6eff", description: "" },
46
46
  { name: "--wzl-radius-sm", type: "dimension", group: "radius", defaultValue: "3px", description: "" },
47
47
  { name: "--wzl-radius-md", type: "dimension", group: "radius", defaultValue: "5px", description: "" },
48
+ { name: "--wzl-radius-lg", type: "dimension", group: "radius", defaultValue: "14px", description: "" },
49
+ { name: "--wzl-radius-pill", type: "dimension", group: "radius", defaultValue: "999px", description: "Fully rounded ends \u2014 segmented controls, progress tracks." },
48
50
  { name: "--wzl-border-w", type: "dimension", group: "border", defaultValue: "1px", description: "" },
49
51
  { name: "--wzl-line-width", type: "dimension", group: "line", defaultValue: "2px", description: "Structural lines \u2014 gridlines, dividers, axes." },
50
52
  { name: "--wzl-curve-width", type: "dimension", group: "curve", defaultValue: "3px", description: "Drawn data curves. Heavier than structural lines so data reads as primary content." },
51
- { name: "--wzl-tb-height", type: "dimension", group: "tb", defaultValue: "28px", description: "Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToggleBar, ToolOptionsBar)." },
52
- { name: "--wzl-radius-lg", type: "dimension", group: "radius", defaultValue: "14px", description: "" },
53
- { name: "--wzl-control-h", type: "dimension", group: "control", defaultValue: "28px", description: "Height of an interactive control \u2014 button, input, select. Distinct from tb-height, which sizes the strip a row of them sits in." },
53
+ { name: "--wzl-tb-height", type: "dimension", group: "tb", defaultValue: "28px", description: "Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToolOptionsBar). Taller than control-h so the controls inside a strip are not flush with its edges." },
54
+ { name: "--wzl-control-h", type: "dimension", group: "control", defaultValue: "24px", description: "Height of an interactive control \u2014 button, input, select, segmented control. Distinct from tb-height, which sizes the strip a row of them sits in." },
54
55
  { name: "--wzl-glass-blur", type: "dimension", group: "glass", defaultValue: "3px", description: "Backdrop blur radius for frosted surfaces. Pairs with glass-tint." },
55
- { name: "--wzl-font-size", type: "dimension", group: "font", defaultValue: "13px", description: "" },
56
- { name: "--wzl-font-size-sm", type: "dimension", group: "font", defaultValue: "11px", description: "" },
56
+ { name: "--wzl-font-size-2xs", type: "dimension", group: "font", defaultValue: "9px", description: "Shortcut keys and index badges. The floor for chrome text." },
57
+ { name: "--wzl-font-size-xs", type: "dimension", group: "font", defaultValue: "10px", description: "Tool-button labels under an icon." },
58
+ { name: "--wzl-font-size-sm", type: "dimension", group: "font", defaultValue: "11px", description: "Chrome labels, status readouts, section headings." },
59
+ { name: "--wzl-font-size", type: "dimension", group: "font", defaultValue: "13px", description: "Controls and body text." },
60
+ { name: "--wzl-font-size-lg", type: "dimension", group: "font", defaultValue: "16px", description: "Panel and dialog titles." },
61
+ { name: "--wzl-font-size-xl", type: "dimension", group: "font", defaultValue: "20px", description: "The largest chrome text \u2014 a lab or app title." },
57
62
  { name: "--wzl-space-xs", type: "dimension", group: "space", defaultValue: "4px", description: "" },
58
63
  { name: "--wzl-space-sm", type: "dimension", group: "space", defaultValue: "8px", description: "" },
59
64
  { name: "--wzl-space-md", type: "dimension", group: "space", defaultValue: "12px", description: "" },
60
65
  { name: "--wzl-space-lg", type: "dimension", group: "space", defaultValue: "16px", description: "" },
66
+ { name: "--wzl-tracking-none", type: "dimension", group: "tracking", defaultValue: "0", description: "" },
67
+ { name: "--wzl-tracking-wide", type: "dimension", group: "tracking", defaultValue: "0.06em", description: "Uppercase section headings." },
68
+ { name: "--wzl-tracking-wider", type: "dimension", group: "tracking", defaultValue: "0.08em", description: "Uppercase at 11px and below." },
61
69
  { name: "--wzl-z-toolbar", type: "number", group: "z", defaultValue: "10", description: "" },
62
70
  { name: "--wzl-z-overlay", type: "number", group: "z", defaultValue: "20", description: "" },
63
71
  { name: "--wzl-z-modal", type: "number", group: "z", defaultValue: "30", description: "" },
72
+ { name: "--wzl-leading-tight", type: "number", group: "leading", defaultValue: "1", description: "Single-line controls; the box sets the height." },
73
+ { name: "--wzl-leading-snug", type: "number", group: "leading", defaultValue: "1.2", description: "Headings and two-line labels." },
74
+ { name: "--wzl-leading", type: "number", group: "leading", defaultValue: "1.4", description: "Body and anything that wraps." },
64
75
  { name: "--wzl-backdrop", type: "gradient", group: "backdrop", defaultValue: "none", description: "Layered backdrop fill for a page or lab root. `none` here; a theme with a signature background sets it." },
65
76
  { name: "--wzl-motion-fast", type: "duration", group: "motion", defaultValue: "120ms", description: "Micro-interactions \u2014 hover, focus, pressed." },
66
77
  { name: "--wzl-motion-medium", type: "duration", group: "motion", defaultValue: "240ms", description: "Entrances and exits \u2014 toasts, popovers, panels." },
@@ -85,7 +96,9 @@ var TOKEN_MANIFEST = [
85
96
  { name: "--wzl-border", type: "color", group: "border", defaultValue: "#25272c", description: "" },
86
97
  { name: "--wzl-border-strong", type: "color", group: "border", defaultValue: "#383b42", description: "" },
87
98
  { name: "--wzl-accent-fg", type: "color", group: "accent", defaultValue: "#5841b8", description: "Accent for foreground use \u2014 text, icons, selected labels drawn on a surface. accent is a fill; the midnight base is too dim to read as text on dark surfaces." },
88
- { name: "--wzl-fg-inverse", type: "color", group: "fg", defaultValue: "#0e0f12", description: "Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive." }
99
+ { name: "--wzl-fg-inverse", type: "color", group: "fg", defaultValue: "#0e0f12", description: "Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive." },
100
+ { name: "--wzl-shadow", type: "color", group: "shadow", defaultValue: "rgba(0, 0, 0, 0.6)", description: "Elevation. Always darker than any surface \u2014 never derived from fg, which is near-white on dark." },
101
+ { name: "--wzl-border-raised", type: "color", group: "border", defaultValue: "#6f737b", description: "The line around a raised surface. Clears 3:1 against surface and surface-raised in either mode, which the general-purpose border does not; over surface-sunken it does not, so a panel on a sunken field needs its own answer." }
89
102
  ];
90
103
 
91
104
  // src/dtcg/types.ts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/generated/manifest.ts","../src/dtcg/types.ts","../src/dtcg/flatten.ts","../src/loadDTCG.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// GENERATED by packages/theme/scripts/build-tokens.ts — do not edit.\n\n/** One row of `TOKEN_MANIFEST`: a token, its DTCG type, the name-prefix\n * group it belongs to, its value in the default theme and mode, and the\n * description it was authored with (empty string if none). */\nexport interface TokenManifestEntry {\n readonly name: string;\n readonly type: string;\n readonly group: string;\n readonly defaultValue: string;\n readonly description: string;\n}\n\n/** Every token of the default theme in its default mode, described. Meant\n * for tooling that presents the token set — docs pages, token browsers,\n * the Storybook CSS-vars addon — not for resolving values at runtime. */\nexport const TOKEN_MANIFEST: readonly TokenManifestEntry[] = [\n { name: '--wzl-gray-50', type: \"color\", group: \"gray\", defaultValue: \"#f5f5f6\", description: \"\" },\n { name: '--wzl-gray-100', type: \"color\", group: \"gray\", defaultValue: \"#e6e7e9\", description: \"\" },\n { name: '--wzl-gray-200', type: \"color\", group: \"gray\", defaultValue: \"#c9cbcf\", description: \"\" },\n { name: '--wzl-gray-300', type: \"color\", group: \"gray\", defaultValue: \"#9ea1a8\", description: \"\" },\n { name: '--wzl-gray-400', type: \"color\", group: \"gray\", defaultValue: \"#6f737b\", description: \"\" },\n { name: '--wzl-gray-500', type: \"color\", group: \"gray\", defaultValue: \"#4d5058\", description: \"\" },\n { name: '--wzl-gray-600', type: \"color\", group: \"gray\", defaultValue: \"#383b42\", description: \"\" },\n { name: '--wzl-gray-700', type: \"color\", group: \"gray\", defaultValue: \"#25272c\", description: \"\" },\n { name: '--wzl-gray-800', type: \"color\", group: \"gray\", defaultValue: \"#181a1e\", description: \"\" },\n { name: '--wzl-gray-900', type: \"color\", group: \"gray\", defaultValue: \"#0e0f12\", description: \"\" },\n { name: '--wzl-accent-soft', type: \"color\", group: \"accent\", defaultValue: \"#1d1454\", description: \"\" },\n { name: '--wzl-accent-base', type: \"color\", group: \"accent\", defaultValue: \"#2e1f7a\", description: \"Midnight blue-violet. Deep and saturated; anchors primary actions on light and dark surfaces alike.\" },\n { name: '--wzl-accent-strong', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"\" },\n { name: '--wzl-danger-base', type: \"color\", group: \"danger\", defaultValue: \"#d94a3f\", description: \"\" },\n { name: '--wzl-warning-base', type: \"color\", group: \"warning\", defaultValue: \"#d99a3f\", description: \"\" },\n { name: '--wzl-success-base', type: \"color\", group: \"success\", defaultValue: \"#2ec27e\", description: \"\" },\n { name: '--wzl-fg-on-accent', type: \"color\", group: \"fg\", defaultValue: \"#f5f5f6\", description: \"\" },\n { name: '--wzl-line-subtle', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"Barely-there separators (table rows).\" },\n { name: '--wzl-line', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.2)\", description: \"Primary gridlines on sunken surfaces.\" },\n { name: '--wzl-line-strong', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.4)\", description: \"Axes and emphasized dividers.\" },\n { name: '--wzl-curve-color', type: \"color\", group: \"curve\", defaultValue: \"#5841b8\", description: \"Drawn data curves. Routes through the bright accent because accent-base is too dim on sunken surfaces.\" },\n { name: '--wzl-accent', type: \"color\", group: \"accent\", defaultValue: \"#2e1f7a\", description: \"\" },\n { name: '--wzl-accent-hover', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"\" },\n { name: '--wzl-danger', type: \"color\", group: \"danger\", defaultValue: \"#d94a3f\", description: \"\" },\n { name: '--wzl-warning', type: \"color\", group: \"warning\", defaultValue: \"#d99a3f\", description: \"\" },\n { name: '--wzl-success', type: \"color\", group: \"success\", defaultValue: \"#2ec27e\", description: \"\" },\n { name: '--wzl-focus-ring', type: \"color\", group: \"focus\", defaultValue: \"#5841b8\", description: \"\" },\n { name: '--wzl-glass-tint', type: \"color\", group: \"glass\", defaultValue: \"#2e1f7a\", description: \"Frosted-glass tint. Components compose it as color-mix(in srgb, var(--wzl-glass-tint) 78%, transparent) with backdrop-filter: blur(3px).\" },\n { name: '--wzl-surface-hover', type: \"color\", group: \"surface\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"Hover wash over a raised surface. Same formula as line-subtle, different job — do not collapse them.\" },\n { name: '--wzl-surface-pressed', type: \"color\", group: \"surface\", defaultValue: \"rgba(230, 231, 233, 0.18)\", description: \"Pressed wash over a raised surface.\" },\n { name: '--wzl-swatch-green', type: \"color\", group: \"swatch\", defaultValue: \"#2fdd18\", description: \"First of ten categorical spot colors for plotting, status and data viz. Ordered — take them in sequence. Mode-invariant on purpose: a series keeps its color when the mode flips.\" },\n { name: '--wzl-swatch-pink', type: \"color\", group: \"swatch\", defaultValue: \"#ff5885\", description: \"\" },\n { name: '--wzl-swatch-cyan', type: \"color\", group: \"swatch\", defaultValue: \"#00dfff\", description: \"\" },\n { name: '--wzl-swatch-gold', type: \"color\", group: \"swatch\", defaultValue: \"#dcb700\", description: \"\" },\n { name: '--wzl-swatch-amber', type: \"color\", group: \"swatch\", defaultValue: \"#ff8c00\", description: \"\" },\n { name: '--wzl-swatch-violet', type: \"color\", group: \"swatch\", defaultValue: \"#a497ff\", description: \"\" },\n { name: '--wzl-swatch-mint', type: \"color\", group: \"swatch\", defaultValue: \"#00e7af\", description: \"\" },\n { name: '--wzl-swatch-sky', type: \"color\", group: \"swatch\", defaultValue: \"#00b8ff\", description: \"\" },\n { name: '--wzl-swatch-orange', type: \"color\", group: \"swatch\", defaultValue: \"#ff6b00\", description: \"\" },\n { name: '--wzl-swatch-magenta', type: \"color\", group: \"swatch\", defaultValue: \"#ff6eff\", description: \"\" },\n { name: '--wzl-radius-sm', type: \"dimension\", group: \"radius\", defaultValue: \"3px\", description: \"\" },\n { name: '--wzl-radius-md', type: \"dimension\", group: \"radius\", defaultValue: \"5px\", description: \"\" },\n { name: '--wzl-border-w', type: \"dimension\", group: \"border\", defaultValue: \"1px\", description: \"\" },\n { name: '--wzl-line-width', type: \"dimension\", group: \"line\", defaultValue: \"2px\", description: \"Structural lines — gridlines, dividers, axes.\" },\n { name: '--wzl-curve-width', type: \"dimension\", group: \"curve\", defaultValue: \"3px\", description: \"Drawn data curves. Heavier than structural lines so data reads as primary content.\" },\n { name: '--wzl-tb-height', type: \"dimension\", group: \"tb\", defaultValue: \"28px\", description: \"Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToggleBar, ToolOptionsBar).\" },\n { name: '--wzl-radius-lg', type: \"dimension\", group: \"radius\", defaultValue: \"14px\", description: \"\" },\n { name: '--wzl-control-h', type: \"dimension\", group: \"control\", defaultValue: \"28px\", description: \"Height of an interactive control — button, input, select. Distinct from tb-height, which sizes the strip a row of them sits in.\" },\n { name: '--wzl-glass-blur', type: \"dimension\", group: \"glass\", defaultValue: \"3px\", description: \"Backdrop blur radius for frosted surfaces. Pairs with glass-tint.\" },\n { name: '--wzl-font-size', type: \"dimension\", group: \"font\", defaultValue: \"13px\", description: \"\" },\n { name: '--wzl-font-size-sm', type: \"dimension\", group: \"font\", defaultValue: \"11px\", description: \"\" },\n { name: '--wzl-space-xs', type: \"dimension\", group: \"space\", defaultValue: \"4px\", description: \"\" },\n { name: '--wzl-space-sm', type: \"dimension\", group: \"space\", defaultValue: \"8px\", description: \"\" },\n { name: '--wzl-space-md', type: \"dimension\", group: \"space\", defaultValue: \"12px\", description: \"\" },\n { name: '--wzl-space-lg', type: \"dimension\", group: \"space\", defaultValue: \"16px\", description: \"\" },\n { name: '--wzl-z-toolbar', type: \"number\", group: \"z\", defaultValue: \"10\", description: \"\" },\n { name: '--wzl-z-overlay', type: \"number\", group: \"z\", defaultValue: \"20\", description: \"\" },\n { name: '--wzl-z-modal', type: \"number\", group: \"z\", defaultValue: \"30\", description: \"\" },\n { name: '--wzl-backdrop', type: \"gradient\", group: \"backdrop\", defaultValue: \"none\", description: \"Layered backdrop fill for a page or lab root. `none` here; a theme with a signature background sets it.\" },\n { name: '--wzl-motion-fast', type: \"duration\", group: \"motion\", defaultValue: \"120ms\", description: \"Micro-interactions — hover, focus, pressed.\" },\n { name: '--wzl-motion-medium', type: \"duration\", group: \"motion\", defaultValue: \"240ms\", description: \"Entrances and exits — toasts, popovers, panels.\" },\n { name: '--wzl-ease-in-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.32, 0, 0.67, 0)\", description: \"\" },\n { name: '--wzl-ease-out-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.33, 1, 0.68, 1)\", description: \"\" },\n { name: '--wzl-ease-in-out-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.65, 0, 0.35, 1)\", description: \"\" },\n { name: '--wzl-ease-out-back', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.34, 1.56, 0.64, 1)\", description: \"\" },\n { name: '--wzl-font-ui', type: \"fontFamily\", group: \"font\", defaultValue: \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\", description: \"Condensed UI/display face. The heavier cuts get blocky at any size, so the weight tokens stay in the 200-400 range.\" },\n { name: '--wzl-font-display', type: \"fontFamily\", group: \"font\", defaultValue: \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\", description: \"\" },\n { name: '--wzl-font-body', type: \"fontFamily\", group: \"font\", defaultValue: \"Inter, system-ui, -apple-system, 'Segoe UI', sans-serif\", description: \"\" },\n { name: '--wzl-font-mono', type: \"fontFamily\", group: \"font\", defaultValue: \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\", description: \"\" },\n { name: '--wzl-font-weight-light', type: \"fontWeight\", group: \"font\", defaultValue: \"200\", description: \"\" },\n { name: '--wzl-font-weight-normal', type: \"fontWeight\", group: \"font\", defaultValue: \"300\", description: \"\" },\n { name: '--wzl-font-weight-medium', type: \"fontWeight\", group: \"font\", defaultValue: \"350\", description: \"\" },\n { name: '--wzl-font-weight-bold', type: \"fontWeight\", group: \"font\", defaultValue: \"400\", description: \"\" },\n { name: '--wzl-surface', type: \"color\", group: \"surface\", defaultValue: \"#181a1e\", description: \"\" },\n { name: '--wzl-surface-raised', type: \"color\", group: \"surface\", defaultValue: \"#25272c\", description: \"\" },\n { name: '--wzl-surface-sunken', type: \"color\", group: \"surface\", defaultValue: \"#0e0f12\", description: \"\" },\n { name: '--wzl-fg', type: \"color\", group: \"fg\", defaultValue: \"#e6e7e9\", description: \"\" },\n { name: '--wzl-fg-muted', type: \"color\", group: \"fg\", defaultValue: \"#9ea1a8\", description: \"\" },\n { name: '--wzl-fg-subtle', type: \"color\", group: \"fg\", defaultValue: \"#6f737b\", description: \"\" },\n { name: '--wzl-border', type: \"color\", group: \"border\", defaultValue: \"#25272c\", description: \"\" },\n { name: '--wzl-border-strong', type: \"color\", group: \"border\", defaultValue: \"#383b42\", description: \"\" },\n { name: '--wzl-accent-fg', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"Accent for foreground use — text, icons, selected labels drawn on a surface. accent is a fill; the midnight base is too dim to read as text on dark surfaces.\" },\n { name: '--wzl-fg-inverse', type: \"color\", group: \"fg\", defaultValue: \"#0e0f12\", description: \"Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive.\" },\n];\n","/** The one `$extensions` key this kit defines. */\nexport const ALPHA_EXT = 'com.weasel.alpha';\n\nexport type TokenValue = string | number | readonly (string | number)[];\n\n/**\n * A single design token as authored, before aliases are resolved: a DTCG-shaped\n * `{ type, value }` pair where `value` may still be a `{ref}` to another token.\n */\nexport interface RawToken {\n readonly type: string;\n readonly value: TokenValue;\n /** Render the referenced color at this alpha, 0–1. */\n readonly alpha?: number | undefined;\n readonly description?: string | undefined;\n}\n\n/** A token graph flattened to one level, keyed by token name (no `--wzl-`\n * prefix). Still unresolved — see `ResolvedTokenMap` for the output side. */\nexport type FlatTokens = Record<string, RawToken>;\n\n/** A resolved theme: every token name mapped to its final CSS-ready string.\n * Named ...Map, not ...Tokens, to stay distinct from hud's public `ResolvedTokens`. */\nexport type ResolvedTokenMap = Record<string, string>;\n","import { ALPHA_EXT, type FlatTokens, type RawToken, type TokenValue } from './types';\n\ninterface DtcgToken {\n $value: TokenValue;\n $type?: string;\n $description?: string;\n $extensions?: Record<string, unknown>;\n}\n\nconst isToken = (v: unknown): v is DtcgToken =>\n typeof v === 'object' && v !== null && '$value' in v;\n\n/**\n * Collapse a DTCG document into flat token names.\n *\n * Groups exist only to carry `$type`; they contribute nothing to the name, so\n * `color.fg-muted` becomes `fg-muted` and in turn `--wzl-fg-muted`. This shape\n * is forced by the token set: `--wzl-accent` and `--wzl-accent-base` are both\n * real tokens, and DTCG forbids a token that is also a group.\n */\nexport function flattenTokens(doc: Record<string, unknown>): FlatTokens {\n const out: FlatTokens = {};\n\n for (const [groupName, group] of Object.entries(doc)) {\n if (groupName.startsWith('$')) continue;\n if (typeof group !== 'object' || group === null) continue;\n\n const g = group as Record<string, unknown> & { $type?: string };\n const groupType = g.$type;\n\n for (const [leaf, node] of Object.entries(g)) {\n if (leaf.startsWith('$')) continue;\n if (!isToken(node)) continue;\n\n const type = node.$type ?? groupType;\n if (!type) {\n throw new Error(`Token \"${leaf}\" has no $type and its group \"${groupName}\" declares none`);\n }\n if (leaf in out) {\n throw new Error(`Duplicate token name \"${leaf}\" — leaf keys must be unique across type groups`);\n }\n\n const alphaRaw = node.$extensions?.[ALPHA_EXT];\n const token: RawToken = {\n type,\n value: node.$value,\n alpha: typeof alphaRaw === 'number' ? alphaRaw : undefined,\n description: node.$description,\n };\n out[leaf] = token;\n }\n }\n\n return out;\n}\n","import { flattenTokens } from './dtcg/flatten';\nimport type { FlatTokens } from './dtcg/types';\nimport { weaselTheme, type Theme } from './theme';\n\ninterface DtcgDocument {\n name?: unknown;\n defaultMode?: unknown;\n extends?: Theme | null;\n primitives?: Record<string, unknown>;\n modes?: Record<string, Record<string, unknown>>;\n}\n\n/**\n * Build a `Theme` from a DTCG document — the interchange path, for tokens\n * exported by a design tool rather than authored in TS.\n */\nexport function loadDTCG(doc: DtcgDocument): Theme {\n if (typeof doc.name !== 'string' || doc.name === '') {\n throw new Error('DTCG document needs a string \"name\"');\n }\n const modes: Record<string, FlatTokens> = {};\n for (const [mode, body] of Object.entries(doc.modes ?? {})) {\n modes[mode] = flattenTokens(body);\n }\n const base = doc.extends === undefined ? weaselTheme : doc.extends;\n return {\n name: doc.name,\n extends: base,\n defaultMode:\n typeof doc.defaultMode === 'string' ? doc.defaultMode : (base?.defaultMode ?? 'dark'),\n tokens: flattenTokens(doc.primitives ?? {}),\n modes,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/generated/manifest.ts","../src/dtcg/types.ts","../src/dtcg/flatten.ts","../src/loadDTCG.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// GENERATED by packages/theme/scripts/build-tokens.ts — do not edit.\n\n/** One row of `TOKEN_MANIFEST`: a token, its DTCG type, the name-prefix\n * group it belongs to, its value in the default theme and mode, and the\n * description it was authored with (empty string if none). */\nexport interface TokenManifestEntry {\n readonly name: string;\n readonly type: string;\n readonly group: string;\n readonly defaultValue: string;\n readonly description: string;\n}\n\n/** Every token of the default theme in its default mode, described. Meant\n * for tooling that presents the token set — docs pages, token browsers,\n * the Storybook CSS-vars addon — not for resolving values at runtime. */\nexport const TOKEN_MANIFEST: readonly TokenManifestEntry[] = [\n { name: '--wzl-gray-50', type: \"color\", group: \"gray\", defaultValue: \"#f5f5f6\", description: \"\" },\n { name: '--wzl-gray-100', type: \"color\", group: \"gray\", defaultValue: \"#e6e7e9\", description: \"\" },\n { name: '--wzl-gray-200', type: \"color\", group: \"gray\", defaultValue: \"#c9cbcf\", description: \"\" },\n { name: '--wzl-gray-300', type: \"color\", group: \"gray\", defaultValue: \"#9ea1a8\", description: \"\" },\n { name: '--wzl-gray-400', type: \"color\", group: \"gray\", defaultValue: \"#6f737b\", description: \"\" },\n { name: '--wzl-gray-500', type: \"color\", group: \"gray\", defaultValue: \"#4d5058\", description: \"\" },\n { name: '--wzl-gray-600', type: \"color\", group: \"gray\", defaultValue: \"#383b42\", description: \"\" },\n { name: '--wzl-gray-700', type: \"color\", group: \"gray\", defaultValue: \"#25272c\", description: \"\" },\n { name: '--wzl-gray-800', type: \"color\", group: \"gray\", defaultValue: \"#181a1e\", description: \"\" },\n { name: '--wzl-gray-900', type: \"color\", group: \"gray\", defaultValue: \"#0e0f12\", description: \"\" },\n { name: '--wzl-accent-soft', type: \"color\", group: \"accent\", defaultValue: \"#1d1454\", description: \"\" },\n { name: '--wzl-accent-base', type: \"color\", group: \"accent\", defaultValue: \"#2e1f7a\", description: \"Midnight blue-violet. Deep and saturated; anchors primary actions on light and dark surfaces alike.\" },\n { name: '--wzl-accent-strong', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"\" },\n { name: '--wzl-danger-base', type: \"color\", group: \"danger\", defaultValue: \"#d94a3f\", description: \"\" },\n { name: '--wzl-warning-base', type: \"color\", group: \"warning\", defaultValue: \"#d99a3f\", description: \"\" },\n { name: '--wzl-success-base', type: \"color\", group: \"success\", defaultValue: \"#2ec27e\", description: \"\" },\n { name: '--wzl-fg-on-accent', type: \"color\", group: \"fg\", defaultValue: \"#f5f5f6\", description: \"\" },\n { name: '--wzl-line-subtle', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"Barely-there separators (table rows).\" },\n { name: '--wzl-line', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.2)\", description: \"Primary gridlines on sunken surfaces.\" },\n { name: '--wzl-line-strong', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.4)\", description: \"Axes and emphasized dividers.\" },\n { name: '--wzl-curve-color', type: \"color\", group: \"curve\", defaultValue: \"#5841b8\", description: \"Drawn data curves. Routes through the bright accent because accent-base is too dim on sunken surfaces.\" },\n { name: '--wzl-accent', type: \"color\", group: \"accent\", defaultValue: \"#2e1f7a\", description: \"\" },\n { name: '--wzl-accent-hover', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"\" },\n { name: '--wzl-danger', type: \"color\", group: \"danger\", defaultValue: \"#d94a3f\", description: \"\" },\n { name: '--wzl-warning', type: \"color\", group: \"warning\", defaultValue: \"#d99a3f\", description: \"\" },\n { name: '--wzl-success', type: \"color\", group: \"success\", defaultValue: \"#2ec27e\", description: \"\" },\n { name: '--wzl-focus-ring', type: \"color\", group: \"focus\", defaultValue: \"#5841b8\", description: \"\" },\n { name: '--wzl-glass-tint', type: \"color\", group: \"glass\", defaultValue: \"#2e1f7a\", description: \"Frosted-glass tint. Components compose it as color-mix(in srgb, var(--wzl-glass-tint) 78%, transparent) with backdrop-filter: blur(3px).\" },\n { name: '--wzl-surface-hover', type: \"color\", group: \"surface\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"Hover wash over a raised surface. Same formula as line-subtle, different job — do not collapse them.\" },\n { name: '--wzl-surface-pressed', type: \"color\", group: \"surface\", defaultValue: \"rgba(230, 231, 233, 0.18)\", description: \"Pressed wash over a raised surface.\" },\n { name: '--wzl-swatch-green', type: \"color\", group: \"swatch\", defaultValue: \"#2fdd18\", description: \"First of ten categorical spot colors for plotting, status and data viz. Ordered — take them in sequence. Mode-invariant on purpose: a series keeps its color when the mode flips.\" },\n { name: '--wzl-swatch-pink', type: \"color\", group: \"swatch\", defaultValue: \"#ff5885\", description: \"\" },\n { name: '--wzl-swatch-cyan', type: \"color\", group: \"swatch\", defaultValue: \"#00dfff\", description: \"\" },\n { name: '--wzl-swatch-gold', type: \"color\", group: \"swatch\", defaultValue: \"#dcb700\", description: \"\" },\n { name: '--wzl-swatch-amber', type: \"color\", group: \"swatch\", defaultValue: \"#ff8c00\", description: \"\" },\n { name: '--wzl-swatch-violet', type: \"color\", group: \"swatch\", defaultValue: \"#a497ff\", description: \"\" },\n { name: '--wzl-swatch-mint', type: \"color\", group: \"swatch\", defaultValue: \"#00e7af\", description: \"\" },\n { name: '--wzl-swatch-sky', type: \"color\", group: \"swatch\", defaultValue: \"#00b8ff\", description: \"\" },\n { name: '--wzl-swatch-orange', type: \"color\", group: \"swatch\", defaultValue: \"#ff6b00\", description: \"\" },\n { name: '--wzl-swatch-magenta', type: \"color\", group: \"swatch\", defaultValue: \"#ff6eff\", description: \"\" },\n { name: '--wzl-radius-sm', type: \"dimension\", group: \"radius\", defaultValue: \"3px\", description: \"\" },\n { name: '--wzl-radius-md', type: \"dimension\", group: \"radius\", defaultValue: \"5px\", description: \"\" },\n { name: '--wzl-radius-lg', type: \"dimension\", group: \"radius\", defaultValue: \"14px\", description: \"\" },\n { name: '--wzl-radius-pill', type: \"dimension\", group: \"radius\", defaultValue: \"999px\", description: \"Fully rounded ends — segmented controls, progress tracks.\" },\n { name: '--wzl-border-w', type: \"dimension\", group: \"border\", defaultValue: \"1px\", description: \"\" },\n { name: '--wzl-line-width', type: \"dimension\", group: \"line\", defaultValue: \"2px\", description: \"Structural lines — gridlines, dividers, axes.\" },\n { name: '--wzl-curve-width', type: \"dimension\", group: \"curve\", defaultValue: \"3px\", description: \"Drawn data curves. Heavier than structural lines so data reads as primary content.\" },\n { name: '--wzl-tb-height', type: \"dimension\", group: \"tb\", defaultValue: \"28px\", description: \"Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToolOptionsBar). Taller than control-h so the controls inside a strip are not flush with its edges.\" },\n { name: '--wzl-control-h', type: \"dimension\", group: \"control\", defaultValue: \"24px\", description: \"Height of an interactive control — button, input, select, segmented control. Distinct from tb-height, which sizes the strip a row of them sits in.\" },\n { name: '--wzl-glass-blur', type: \"dimension\", group: \"glass\", defaultValue: \"3px\", description: \"Backdrop blur radius for frosted surfaces. Pairs with glass-tint.\" },\n { name: '--wzl-font-size-2xs', type: \"dimension\", group: \"font\", defaultValue: \"9px\", description: \"Shortcut keys and index badges. The floor for chrome text.\" },\n { name: '--wzl-font-size-xs', type: \"dimension\", group: \"font\", defaultValue: \"10px\", description: \"Tool-button labels under an icon.\" },\n { name: '--wzl-font-size-sm', type: \"dimension\", group: \"font\", defaultValue: \"11px\", description: \"Chrome labels, status readouts, section headings.\" },\n { name: '--wzl-font-size', type: \"dimension\", group: \"font\", defaultValue: \"13px\", description: \"Controls and body text.\" },\n { name: '--wzl-font-size-lg', type: \"dimension\", group: \"font\", defaultValue: \"16px\", description: \"Panel and dialog titles.\" },\n { name: '--wzl-font-size-xl', type: \"dimension\", group: \"font\", defaultValue: \"20px\", description: \"The largest chrome text — a lab or app title.\" },\n { name: '--wzl-space-xs', type: \"dimension\", group: \"space\", defaultValue: \"4px\", description: \"\" },\n { name: '--wzl-space-sm', type: \"dimension\", group: \"space\", defaultValue: \"8px\", description: \"\" },\n { name: '--wzl-space-md', type: \"dimension\", group: \"space\", defaultValue: \"12px\", description: \"\" },\n { name: '--wzl-space-lg', type: \"dimension\", group: \"space\", defaultValue: \"16px\", description: \"\" },\n { name: '--wzl-tracking-none', type: \"dimension\", group: \"tracking\", defaultValue: \"0\", description: \"\" },\n { name: '--wzl-tracking-wide', type: \"dimension\", group: \"tracking\", defaultValue: \"0.06em\", description: \"Uppercase section headings.\" },\n { name: '--wzl-tracking-wider', type: \"dimension\", group: \"tracking\", defaultValue: \"0.08em\", description: \"Uppercase at 11px and below.\" },\n { name: '--wzl-z-toolbar', type: \"number\", group: \"z\", defaultValue: \"10\", description: \"\" },\n { name: '--wzl-z-overlay', type: \"number\", group: \"z\", defaultValue: \"20\", description: \"\" },\n { name: '--wzl-z-modal', type: \"number\", group: \"z\", defaultValue: \"30\", description: \"\" },\n { name: '--wzl-leading-tight', type: \"number\", group: \"leading\", defaultValue: \"1\", description: \"Single-line controls; the box sets the height.\" },\n { name: '--wzl-leading-snug', type: \"number\", group: \"leading\", defaultValue: \"1.2\", description: \"Headings and two-line labels.\" },\n { name: '--wzl-leading', type: \"number\", group: \"leading\", defaultValue: \"1.4\", description: \"Body and anything that wraps.\" },\n { name: '--wzl-backdrop', type: \"gradient\", group: \"backdrop\", defaultValue: \"none\", description: \"Layered backdrop fill for a page or lab root. `none` here; a theme with a signature background sets it.\" },\n { name: '--wzl-motion-fast', type: \"duration\", group: \"motion\", defaultValue: \"120ms\", description: \"Micro-interactions — hover, focus, pressed.\" },\n { name: '--wzl-motion-medium', type: \"duration\", group: \"motion\", defaultValue: \"240ms\", description: \"Entrances and exits — toasts, popovers, panels.\" },\n { name: '--wzl-ease-in-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.32, 0, 0.67, 0)\", description: \"\" },\n { name: '--wzl-ease-out-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.33, 1, 0.68, 1)\", description: \"\" },\n { name: '--wzl-ease-in-out-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.65, 0, 0.35, 1)\", description: \"\" },\n { name: '--wzl-ease-out-back', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.34, 1.56, 0.64, 1)\", description: \"\" },\n { name: '--wzl-font-ui', type: \"fontFamily\", group: \"font\", defaultValue: \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\", description: \"Condensed UI/display face. The heavier cuts get blocky at any size, so the weight tokens stay in the 200-400 range.\" },\n { name: '--wzl-font-display', type: \"fontFamily\", group: \"font\", defaultValue: \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\", description: \"\" },\n { name: '--wzl-font-body', type: \"fontFamily\", group: \"font\", defaultValue: \"Inter, system-ui, -apple-system, 'Segoe UI', sans-serif\", description: \"\" },\n { name: '--wzl-font-mono', type: \"fontFamily\", group: \"font\", defaultValue: \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\", description: \"\" },\n { name: '--wzl-font-weight-light', type: \"fontWeight\", group: \"font\", defaultValue: \"200\", description: \"\" },\n { name: '--wzl-font-weight-normal', type: \"fontWeight\", group: \"font\", defaultValue: \"300\", description: \"\" },\n { name: '--wzl-font-weight-medium', type: \"fontWeight\", group: \"font\", defaultValue: \"350\", description: \"\" },\n { name: '--wzl-font-weight-bold', type: \"fontWeight\", group: \"font\", defaultValue: \"400\", description: \"\" },\n { name: '--wzl-surface', type: \"color\", group: \"surface\", defaultValue: \"#181a1e\", description: \"\" },\n { name: '--wzl-surface-raised', type: \"color\", group: \"surface\", defaultValue: \"#25272c\", description: \"\" },\n { name: '--wzl-surface-sunken', type: \"color\", group: \"surface\", defaultValue: \"#0e0f12\", description: \"\" },\n { name: '--wzl-fg', type: \"color\", group: \"fg\", defaultValue: \"#e6e7e9\", description: \"\" },\n { name: '--wzl-fg-muted', type: \"color\", group: \"fg\", defaultValue: \"#9ea1a8\", description: \"\" },\n { name: '--wzl-fg-subtle', type: \"color\", group: \"fg\", defaultValue: \"#6f737b\", description: \"\" },\n { name: '--wzl-border', type: \"color\", group: \"border\", defaultValue: \"#25272c\", description: \"\" },\n { name: '--wzl-border-strong', type: \"color\", group: \"border\", defaultValue: \"#383b42\", description: \"\" },\n { name: '--wzl-accent-fg', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"Accent for foreground use — text, icons, selected labels drawn on a surface. accent is a fill; the midnight base is too dim to read as text on dark surfaces.\" },\n { name: '--wzl-fg-inverse', type: \"color\", group: \"fg\", defaultValue: \"#0e0f12\", description: \"Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive.\" },\n { name: '--wzl-shadow', type: \"color\", group: \"shadow\", defaultValue: \"rgba(0, 0, 0, 0.6)\", description: \"Elevation. Always darker than any surface — never derived from fg, which is near-white on dark.\" },\n { name: '--wzl-border-raised', type: \"color\", group: \"border\", defaultValue: \"#6f737b\", description: \"The line around a raised surface. Clears 3:1 against surface and surface-raised in either mode, which the general-purpose border does not; over surface-sunken it does not, so a panel on a sunken field needs its own answer.\" },\n];\n","/** The one `$extensions` key this kit defines. */\nexport const ALPHA_EXT = 'com.weasel.alpha';\n\nexport type TokenValue = string | number | readonly (string | number)[];\n\n/**\n * A single design token as authored, before aliases are resolved: a DTCG-shaped\n * `{ type, value }` pair where `value` may still be a `{ref}` to another token.\n */\nexport interface RawToken {\n readonly type: string;\n readonly value: TokenValue;\n /** Render the referenced color at this alpha, 0–1. */\n readonly alpha?: number | undefined;\n readonly description?: string | undefined;\n}\n\n/** A token graph flattened to one level, keyed by token name (no `--wzl-`\n * prefix). Still unresolved — see `ResolvedTokenMap` for the output side. */\nexport type FlatTokens = Record<string, RawToken>;\n\n/** A resolved theme: every token name mapped to its final CSS-ready string.\n * Named ...Map, not ...Tokens, to stay distinct from hud's public `ResolvedTokens`. */\nexport type ResolvedTokenMap = Record<string, string>;\n","import { ALPHA_EXT, type FlatTokens, type RawToken, type TokenValue } from './types';\n\ninterface DtcgToken {\n $value: TokenValue;\n $type?: string;\n $description?: string;\n $extensions?: Record<string, unknown>;\n}\n\nconst isToken = (v: unknown): v is DtcgToken =>\n typeof v === 'object' && v !== null && '$value' in v;\n\n/**\n * Collapse a DTCG document into flat token names.\n *\n * Groups exist only to carry `$type`; they contribute nothing to the name, so\n * `color.fg-muted` becomes `fg-muted` and in turn `--wzl-fg-muted`. This shape\n * is forced by the token set: `--wzl-accent` and `--wzl-accent-base` are both\n * real tokens, and DTCG forbids a token that is also a group.\n */\nexport function flattenTokens(doc: Record<string, unknown>): FlatTokens {\n const out: FlatTokens = {};\n\n for (const [groupName, group] of Object.entries(doc)) {\n if (groupName.startsWith('$')) continue;\n if (typeof group !== 'object' || group === null) continue;\n\n const g = group as Record<string, unknown> & { $type?: string };\n const groupType = g.$type;\n\n for (const [leaf, node] of Object.entries(g)) {\n if (leaf.startsWith('$')) continue;\n if (!isToken(node)) continue;\n\n const type = node.$type ?? groupType;\n if (!type) {\n throw new Error(`Token \"${leaf}\" has no $type and its group \"${groupName}\" declares none`);\n }\n if (leaf in out) {\n throw new Error(`Duplicate token name \"${leaf}\" — leaf keys must be unique across type groups`);\n }\n\n const alphaRaw = node.$extensions?.[ALPHA_EXT];\n const token: RawToken = {\n type,\n value: node.$value,\n alpha: typeof alphaRaw === 'number' ? alphaRaw : undefined,\n description: node.$description,\n };\n out[leaf] = token;\n }\n }\n\n return out;\n}\n","import { flattenTokens } from './dtcg/flatten';\nimport type { FlatTokens } from './dtcg/types';\nimport { weaselTheme, type Theme } from './theme';\n\ninterface DtcgDocument {\n name?: unknown;\n defaultMode?: unknown;\n extends?: Theme | null;\n primitives?: Record<string, unknown>;\n modes?: Record<string, Record<string, unknown>>;\n}\n\n/**\n * Build a `Theme` from a DTCG document — the interchange path, for tokens\n * exported by a design tool rather than authored in TS.\n */\nexport function loadDTCG(doc: DtcgDocument): Theme {\n if (typeof doc.name !== 'string' || doc.name === '') {\n throw new Error('DTCG document needs a string \"name\"');\n }\n const modes: Record<string, FlatTokens> = {};\n for (const [mode, body] of Object.entries(doc.modes ?? {})) {\n modes[mode] = flattenTokens(body);\n }\n const base = doc.extends === undefined ? weaselTheme : doc.extends;\n return {\n name: doc.name,\n extends: base,\n defaultMode:\n typeof doc.defaultMode === 'string' ? doc.defaultMode : (base?.defaultMode ?? 'dark'),\n tokens: flattenTokens(doc.primitives ?? {}),\n modes,\n };\n}\n"]}
package/dist/react.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme, a as ResolvedTheme } from './resolveTheme-VKCElQaY.js';
2
+ import { T as Theme, a as ResolvedTheme } from './resolveTheme-Bq7PCVg5.js';
3
3
 
4
4
  /** What `<ThemeProvider>` publishes: the theme, the mode in force, and the
5
5
  * fully resolved token record for that pair. */
package/dist/react.js CHANGED
@@ -1,4 +1,4 @@
1
- import { weaselTheme, resolveTheme, applyTheme } from './chunk-E3FOFGMD.js';
1
+ import { weaselTheme, resolveTheme, applyTheme } from './chunk-O32P3G22.js';
2
2
  import { createContext, useRef, useMemo, useLayoutEffect, useContext } from 'react';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -16,7 +16,7 @@ type FlatTokens = Record<string, RawToken>;
16
16
 
17
17
  /** Every design token the built-in themes declare, spelled as the CSS
18
18
  * custom property it becomes. */
19
- type TokenName = '--wzl-accent' | '--wzl-accent-base' | '--wzl-accent-fg' | '--wzl-accent-hover' | '--wzl-accent-soft' | '--wzl-accent-strong' | '--wzl-backdrop' | '--wzl-border' | '--wzl-border-strong' | '--wzl-border-w' | '--wzl-control-h' | '--wzl-curve-color' | '--wzl-curve-width' | '--wzl-danger' | '--wzl-danger-base' | '--wzl-ease-in-cubic' | '--wzl-ease-in-out-cubic' | '--wzl-ease-out-back' | '--wzl-ease-out-cubic' | '--wzl-fg' | '--wzl-fg-inverse' | '--wzl-fg-muted' | '--wzl-fg-on-accent' | '--wzl-fg-subtle' | '--wzl-focus-ring' | '--wzl-font-body' | '--wzl-font-display' | '--wzl-font-mono' | '--wzl-font-size' | '--wzl-font-size-sm' | '--wzl-font-ui' | '--wzl-font-weight-bold' | '--wzl-font-weight-light' | '--wzl-font-weight-medium' | '--wzl-font-weight-normal' | '--wzl-glass-blur' | '--wzl-glass-tint' | '--wzl-gray-100' | '--wzl-gray-200' | '--wzl-gray-300' | '--wzl-gray-400' | '--wzl-gray-50' | '--wzl-gray-500' | '--wzl-gray-600' | '--wzl-gray-700' | '--wzl-gray-800' | '--wzl-gray-900' | '--wzl-line' | '--wzl-line-strong' | '--wzl-line-subtle' | '--wzl-line-width' | '--wzl-motion-fast' | '--wzl-motion-medium' | '--wzl-radius-lg' | '--wzl-radius-md' | '--wzl-radius-sm' | '--wzl-space-lg' | '--wzl-space-md' | '--wzl-space-sm' | '--wzl-space-xs' | '--wzl-success' | '--wzl-success-base' | '--wzl-surface' | '--wzl-surface-hover' | '--wzl-surface-pressed' | '--wzl-surface-raised' | '--wzl-surface-sunken' | '--wzl-swatch-amber' | '--wzl-swatch-cyan' | '--wzl-swatch-gold' | '--wzl-swatch-green' | '--wzl-swatch-magenta' | '--wzl-swatch-mint' | '--wzl-swatch-orange' | '--wzl-swatch-pink' | '--wzl-swatch-sky' | '--wzl-swatch-violet' | '--wzl-tb-height' | '--wzl-warning' | '--wzl-warning-base' | '--wzl-z-modal' | '--wzl-z-overlay' | '--wzl-z-toolbar';
19
+ type TokenName = '--wzl-accent' | '--wzl-accent-base' | '--wzl-accent-fg' | '--wzl-accent-hover' | '--wzl-accent-soft' | '--wzl-accent-strong' | '--wzl-backdrop' | '--wzl-border' | '--wzl-border-raised' | '--wzl-border-strong' | '--wzl-border-w' | '--wzl-control-h' | '--wzl-curve-color' | '--wzl-curve-width' | '--wzl-danger' | '--wzl-danger-base' | '--wzl-ease-in-cubic' | '--wzl-ease-in-out-cubic' | '--wzl-ease-out-back' | '--wzl-ease-out-cubic' | '--wzl-fg' | '--wzl-fg-inverse' | '--wzl-fg-muted' | '--wzl-fg-on-accent' | '--wzl-fg-subtle' | '--wzl-focus-ring' | '--wzl-font-body' | '--wzl-font-display' | '--wzl-font-mono' | '--wzl-font-size' | '--wzl-font-size-2xs' | '--wzl-font-size-lg' | '--wzl-font-size-sm' | '--wzl-font-size-xl' | '--wzl-font-size-xs' | '--wzl-font-ui' | '--wzl-font-weight-bold' | '--wzl-font-weight-light' | '--wzl-font-weight-medium' | '--wzl-font-weight-normal' | '--wzl-glass-blur' | '--wzl-glass-tint' | '--wzl-gray-100' | '--wzl-gray-200' | '--wzl-gray-300' | '--wzl-gray-400' | '--wzl-gray-50' | '--wzl-gray-500' | '--wzl-gray-600' | '--wzl-gray-700' | '--wzl-gray-800' | '--wzl-gray-900' | '--wzl-leading' | '--wzl-leading-snug' | '--wzl-leading-tight' | '--wzl-line' | '--wzl-line-strong' | '--wzl-line-subtle' | '--wzl-line-width' | '--wzl-motion-fast' | '--wzl-motion-medium' | '--wzl-radius-lg' | '--wzl-radius-md' | '--wzl-radius-pill' | '--wzl-radius-sm' | '--wzl-shadow' | '--wzl-space-lg' | '--wzl-space-md' | '--wzl-space-sm' | '--wzl-space-xs' | '--wzl-success' | '--wzl-success-base' | '--wzl-surface' | '--wzl-surface-hover' | '--wzl-surface-pressed' | '--wzl-surface-raised' | '--wzl-surface-sunken' | '--wzl-swatch-amber' | '--wzl-swatch-cyan' | '--wzl-swatch-gold' | '--wzl-swatch-green' | '--wzl-swatch-magenta' | '--wzl-swatch-mint' | '--wzl-swatch-orange' | '--wzl-swatch-pink' | '--wzl-swatch-sky' | '--wzl-swatch-violet' | '--wzl-tb-height' | '--wzl-tracking-none' | '--wzl-tracking-wide' | '--wzl-tracking-wider' | '--wzl-warning' | '--wzl-warning-base' | '--wzl-z-modal' | '--wzl-z-overlay' | '--wzl-z-toolbar';
20
20
  /** A built-in theme with its aliases already collapsed: every mode maps
21
21
  * every token name to a final CSS value. */
22
22
  interface GeneratedTheme {
@@ -75,22 +75,33 @@ declare const THEMES: {
75
75
  readonly '--wzl-swatch-magenta': "#ff6eff";
76
76
  readonly '--wzl-radius-sm': "3px";
77
77
  readonly '--wzl-radius-md': "5px";
78
+ readonly '--wzl-radius-lg': "14px";
79
+ readonly '--wzl-radius-pill': "999px";
78
80
  readonly '--wzl-border-w': "1px";
79
81
  readonly '--wzl-line-width': "2px";
80
82
  readonly '--wzl-curve-width': "3px";
81
83
  readonly '--wzl-tb-height': "28px";
82
- readonly '--wzl-radius-lg': "14px";
83
- readonly '--wzl-control-h': "28px";
84
+ readonly '--wzl-control-h': "24px";
84
85
  readonly '--wzl-glass-blur': "3px";
85
- readonly '--wzl-font-size': "13px";
86
+ readonly '--wzl-font-size-2xs': "9px";
87
+ readonly '--wzl-font-size-xs': "10px";
86
88
  readonly '--wzl-font-size-sm': "11px";
89
+ readonly '--wzl-font-size': "13px";
90
+ readonly '--wzl-font-size-lg': "16px";
91
+ readonly '--wzl-font-size-xl': "20px";
87
92
  readonly '--wzl-space-xs': "4px";
88
93
  readonly '--wzl-space-sm': "8px";
89
94
  readonly '--wzl-space-md': "12px";
90
95
  readonly '--wzl-space-lg': "16px";
96
+ readonly '--wzl-tracking-none': "0";
97
+ readonly '--wzl-tracking-wide': "0.06em";
98
+ readonly '--wzl-tracking-wider': "0.08em";
91
99
  readonly '--wzl-z-toolbar': "10";
92
100
  readonly '--wzl-z-overlay': "20";
93
101
  readonly '--wzl-z-modal': "30";
102
+ readonly '--wzl-leading-tight': "1";
103
+ readonly '--wzl-leading-snug': "1.2";
104
+ readonly '--wzl-leading': "1.4";
94
105
  readonly '--wzl-backdrop': "none";
95
106
  readonly '--wzl-motion-fast': "120ms";
96
107
  readonly '--wzl-motion-medium': "240ms";
@@ -115,6 +126,8 @@ declare const THEMES: {
115
126
  readonly '--wzl-border-strong': "#383b42";
116
127
  readonly '--wzl-accent-fg': "#5841b8";
117
128
  readonly '--wzl-fg-inverse': "#0e0f12";
129
+ readonly '--wzl-shadow': "rgba(0, 0, 0, 0.6)";
130
+ readonly '--wzl-border-raised': "#6f737b";
118
131
  };
119
132
  readonly light: {
120
133
  readonly '--wzl-gray-50': "#f5f5f6";
@@ -160,22 +173,33 @@ declare const THEMES: {
160
173
  readonly '--wzl-swatch-magenta': "#ff6eff";
161
174
  readonly '--wzl-radius-sm': "3px";
162
175
  readonly '--wzl-radius-md': "5px";
176
+ readonly '--wzl-radius-lg': "14px";
177
+ readonly '--wzl-radius-pill': "999px";
163
178
  readonly '--wzl-border-w': "1px";
164
179
  readonly '--wzl-line-width': "2px";
165
180
  readonly '--wzl-curve-width': "3px";
166
181
  readonly '--wzl-tb-height': "28px";
167
- readonly '--wzl-radius-lg': "14px";
168
- readonly '--wzl-control-h': "28px";
182
+ readonly '--wzl-control-h': "24px";
169
183
  readonly '--wzl-glass-blur': "3px";
170
- readonly '--wzl-font-size': "13px";
184
+ readonly '--wzl-font-size-2xs': "9px";
185
+ readonly '--wzl-font-size-xs': "10px";
171
186
  readonly '--wzl-font-size-sm': "11px";
187
+ readonly '--wzl-font-size': "13px";
188
+ readonly '--wzl-font-size-lg': "16px";
189
+ readonly '--wzl-font-size-xl': "20px";
172
190
  readonly '--wzl-space-xs': "4px";
173
191
  readonly '--wzl-space-sm': "8px";
174
192
  readonly '--wzl-space-md': "12px";
175
193
  readonly '--wzl-space-lg': "16px";
194
+ readonly '--wzl-tracking-none': "0";
195
+ readonly '--wzl-tracking-wide': "0.06em";
196
+ readonly '--wzl-tracking-wider': "0.08em";
176
197
  readonly '--wzl-z-toolbar': "10";
177
198
  readonly '--wzl-z-overlay': "20";
178
199
  readonly '--wzl-z-modal': "30";
200
+ readonly '--wzl-leading-tight': "1";
201
+ readonly '--wzl-leading-snug': "1.2";
202
+ readonly '--wzl-leading': "1.4";
179
203
  readonly '--wzl-backdrop': "none";
180
204
  readonly '--wzl-motion-fast': "120ms";
181
205
  readonly '--wzl-motion-medium': "240ms";
@@ -200,6 +224,8 @@ declare const THEMES: {
200
224
  readonly '--wzl-border-strong': "#9ea1a8";
201
225
  readonly '--wzl-accent-fg': "#2e1f7a";
202
226
  readonly '--wzl-fg-inverse': "#f5f5f6";
227
+ readonly '--wzl-shadow': "rgba(0, 0, 0, 0.18)";
228
+ readonly '--wzl-border-raised': "#6f737b";
203
229
  };
204
230
  };
205
231
  };
package/dist/tokens.css CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
 
5
5
  :root {
6
+ color-scheme: dark;
6
7
  --wzl-gray-50: #f5f5f6;
7
8
  --wzl-gray-100: #e6e7e9;
8
9
  --wzl-gray-200: #c9cbcf;
@@ -54,27 +55,50 @@
54
55
  --wzl-swatch-magenta: #ff6eff;
55
56
  --wzl-radius-sm: 3px;
56
57
  --wzl-radius-md: 5px;
58
+ --wzl-radius-lg: 14px;
59
+ /* Fully rounded ends — segmented controls, progress tracks. */
60
+ --wzl-radius-pill: 999px;
57
61
  --wzl-border-w: 1px;
58
62
  /* Structural lines — gridlines, dividers, axes. */
59
63
  --wzl-line-width: 2px;
60
64
  /* Drawn data curves. Heavier than structural lines so data reads as primary content. */
61
65
  --wzl-curve-width: 3px;
62
- /* Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToggleBar, ToolOptionsBar). */
66
+ /* Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToolOptionsBar). Taller than control-h so the controls inside a strip are not flush with its edges. */
63
67
  --wzl-tb-height: 28px;
64
- --wzl-radius-lg: 14px;
65
- /* Height of an interactive control — button, input, select. Distinct from tb-height, which sizes the strip a row of them sits in. */
66
- --wzl-control-h: 28px;
68
+ /* Height of an interactive control — button, input, select, segmented control. Distinct from tb-height, which sizes the strip a row of them sits in. */
69
+ --wzl-control-h: 24px;
67
70
  /* Backdrop blur radius for frosted surfaces. Pairs with glass-tint. */
68
71
  --wzl-glass-blur: 3px;
69
- --wzl-font-size: 13px;
72
+ /* Shortcut keys and index badges. The floor for chrome text. */
73
+ --wzl-font-size-2xs: 9px;
74
+ /* Tool-button labels under an icon. */
75
+ --wzl-font-size-xs: 10px;
76
+ /* Chrome labels, status readouts, section headings. */
70
77
  --wzl-font-size-sm: 11px;
78
+ /* Controls and body text. */
79
+ --wzl-font-size: 13px;
80
+ /* Panel and dialog titles. */
81
+ --wzl-font-size-lg: 16px;
82
+ /* The largest chrome text — a lab or app title. */
83
+ --wzl-font-size-xl: 20px;
71
84
  --wzl-space-xs: 4px;
72
85
  --wzl-space-sm: 8px;
73
86
  --wzl-space-md: 12px;
74
87
  --wzl-space-lg: 16px;
88
+ --wzl-tracking-none: 0;
89
+ /* Uppercase section headings. */
90
+ --wzl-tracking-wide: 0.06em;
91
+ /* Uppercase at 11px and below. */
92
+ --wzl-tracking-wider: 0.08em;
75
93
  --wzl-z-toolbar: 10;
76
94
  --wzl-z-overlay: 20;
77
95
  --wzl-z-modal: 30;
96
+ /* Single-line controls; the box sets the height. */
97
+ --wzl-leading-tight: 1;
98
+ /* Headings and two-line labels. */
99
+ --wzl-leading-snug: 1.2;
100
+ /* Body and anything that wraps. */
101
+ --wzl-leading: 1.4;
78
102
  /* Layered backdrop fill for a page or lab root. `none` here; a theme with a signature background sets it. */
79
103
  --wzl-backdrop: none;
80
104
  /* Micro-interactions — hover, focus, pressed. */
@@ -106,6 +130,10 @@
106
130
  --wzl-accent-fg: var(--wzl-accent-strong);
107
131
  /* Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive. */
108
132
  --wzl-fg-inverse: var(--wzl-gray-900);
133
+ /* Elevation. Always darker than any surface — never derived from fg, which is near-white on dark. */
134
+ --wzl-shadow: rgba(0, 0, 0, 0.6);
135
+ /* The line around a raised surface. Clears 3:1 against surface and surface-raised in either mode, which the general-purpose border does not; over surface-sunken it does not, so a panel on a sunken field needs its own answer. */
136
+ --wzl-border-raised: var(--wzl-gray-400);
109
137
  }
110
138
 
111
139
  :root {
@@ -126,6 +154,8 @@
126
154
  --wzl-border-strong: var(--wzl-gray-600);
127
155
  --wzl-accent-fg: var(--wzl-accent-strong);
128
156
  --wzl-fg-inverse: var(--wzl-gray-900);
157
+ --wzl-shadow: rgba(0, 0, 0, 0.6);
158
+ --wzl-border-raised: var(--wzl-gray-400);
129
159
  }
130
160
 
131
161
  [data-wzl-theme='weasel'][data-wzl-mode='light'],
@@ -141,4 +171,6 @@
141
171
  --wzl-border-strong: var(--wzl-gray-300);
142
172
  --wzl-accent-fg: var(--wzl-accent-base);
143
173
  --wzl-fg-inverse: var(--wzl-gray-50);
174
+ --wzl-shadow: rgba(0, 0, 0, 0.18);
175
+ --wzl-border-raised: var(--wzl-gray-400);
144
176
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weasel-js/theme",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Design tokens shared by weasel-ui and weasel-hud — CSS variables + a parallel TS export.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/generated/themes.ts","../src/theme.ts","../src/dtcg/color.ts","../src/dtcg/resolve.ts","../src/resolveTheme.ts","../src/applyTheme.ts"],"names":[],"mappings":"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","file":"chunk-E3FOFGMD.js","sourcesContent":["// GENERATED by packages/theme/scripts/build-tokens.ts — do not edit.\n\nimport type { RawToken } from '../dtcg/types';\n\n/** Every design token the built-in themes declare, spelled as the CSS\n * custom property it becomes. */\nexport type TokenName =\n | '--wzl-accent'\n | '--wzl-accent-base'\n | '--wzl-accent-fg'\n | '--wzl-accent-hover'\n | '--wzl-accent-soft'\n | '--wzl-accent-strong'\n | '--wzl-backdrop'\n | '--wzl-border'\n | '--wzl-border-strong'\n | '--wzl-border-w'\n | '--wzl-control-h'\n | '--wzl-curve-color'\n | '--wzl-curve-width'\n | '--wzl-danger'\n | '--wzl-danger-base'\n | '--wzl-ease-in-cubic'\n | '--wzl-ease-in-out-cubic'\n | '--wzl-ease-out-back'\n | '--wzl-ease-out-cubic'\n | '--wzl-fg'\n | '--wzl-fg-inverse'\n | '--wzl-fg-muted'\n | '--wzl-fg-on-accent'\n | '--wzl-fg-subtle'\n | '--wzl-focus-ring'\n | '--wzl-font-body'\n | '--wzl-font-display'\n | '--wzl-font-mono'\n | '--wzl-font-size'\n | '--wzl-font-size-sm'\n | '--wzl-font-ui'\n | '--wzl-font-weight-bold'\n | '--wzl-font-weight-light'\n | '--wzl-font-weight-medium'\n | '--wzl-font-weight-normal'\n | '--wzl-glass-blur'\n | '--wzl-glass-tint'\n | '--wzl-gray-100'\n | '--wzl-gray-200'\n | '--wzl-gray-300'\n | '--wzl-gray-400'\n | '--wzl-gray-50'\n | '--wzl-gray-500'\n | '--wzl-gray-600'\n | '--wzl-gray-700'\n | '--wzl-gray-800'\n | '--wzl-gray-900'\n | '--wzl-line'\n | '--wzl-line-strong'\n | '--wzl-line-subtle'\n | '--wzl-line-width'\n | '--wzl-motion-fast'\n | '--wzl-motion-medium'\n | '--wzl-radius-lg'\n | '--wzl-radius-md'\n | '--wzl-radius-sm'\n | '--wzl-space-lg'\n | '--wzl-space-md'\n | '--wzl-space-sm'\n | '--wzl-space-xs'\n | '--wzl-success'\n | '--wzl-success-base'\n | '--wzl-surface'\n | '--wzl-surface-hover'\n | '--wzl-surface-pressed'\n | '--wzl-surface-raised'\n | '--wzl-surface-sunken'\n | '--wzl-swatch-amber'\n | '--wzl-swatch-cyan'\n | '--wzl-swatch-gold'\n | '--wzl-swatch-green'\n | '--wzl-swatch-magenta'\n | '--wzl-swatch-mint'\n | '--wzl-swatch-orange'\n | '--wzl-swatch-pink'\n | '--wzl-swatch-sky'\n | '--wzl-swatch-violet'\n | '--wzl-tb-height'\n | '--wzl-warning'\n | '--wzl-warning-base'\n | '--wzl-z-modal'\n | '--wzl-z-overlay'\n | '--wzl-z-toolbar';\n\n/** A built-in theme with its aliases already collapsed: every mode maps\n * every token name to a final CSS value. */\nexport interface GeneratedTheme {\n readonly name: string;\n readonly defaultMode: string;\n readonly modes: Readonly<Record<string, Readonly<Record<TokenName, string>>>>;\n}\n\n/** The built-in themes, resolved, keyed by theme name. Read this to list\n * or preview themes without resolving a token graph yourself. */\nexport const THEMES = {\n \"weasel\": {\n name: \"weasel\",\n defaultMode: \"dark\",\n modes: {\n \"dark\": {\n '--wzl-gray-50': \"#f5f5f6\",\n '--wzl-gray-100': \"#e6e7e9\",\n '--wzl-gray-200': \"#c9cbcf\",\n '--wzl-gray-300': \"#9ea1a8\",\n '--wzl-gray-400': \"#6f737b\",\n '--wzl-gray-500': \"#4d5058\",\n '--wzl-gray-600': \"#383b42\",\n '--wzl-gray-700': \"#25272c\",\n '--wzl-gray-800': \"#181a1e\",\n '--wzl-gray-900': \"#0e0f12\",\n '--wzl-accent-soft': \"#1d1454\",\n '--wzl-accent-base': \"#2e1f7a\",\n '--wzl-accent-strong': \"#5841b8\",\n '--wzl-danger-base': \"#d94a3f\",\n '--wzl-warning-base': \"#d99a3f\",\n '--wzl-success-base': \"#2ec27e\",\n '--wzl-fg-on-accent': \"#f5f5f6\",\n '--wzl-fg': \"#e6e7e9\",\n '--wzl-line-subtle': \"rgba(230, 231, 233, 0.1)\",\n '--wzl-line': \"rgba(230, 231, 233, 0.2)\",\n '--wzl-line-strong': \"rgba(230, 231, 233, 0.4)\",\n '--wzl-curve-color': \"#5841b8\",\n '--wzl-accent': \"#2e1f7a\",\n '--wzl-accent-hover': \"#5841b8\",\n '--wzl-danger': \"#d94a3f\",\n '--wzl-warning': \"#d99a3f\",\n '--wzl-success': \"#2ec27e\",\n '--wzl-focus-ring': \"#5841b8\",\n '--wzl-glass-tint': \"#2e1f7a\",\n '--wzl-surface-hover': \"rgba(230, 231, 233, 0.1)\",\n '--wzl-surface-pressed': \"rgba(230, 231, 233, 0.18)\",\n '--wzl-swatch-green': \"#2fdd18\",\n '--wzl-swatch-pink': \"#ff5885\",\n '--wzl-swatch-cyan': \"#00dfff\",\n '--wzl-swatch-gold': \"#dcb700\",\n '--wzl-swatch-amber': \"#ff8c00\",\n '--wzl-swatch-violet': \"#a497ff\",\n '--wzl-swatch-mint': \"#00e7af\",\n '--wzl-swatch-sky': \"#00b8ff\",\n '--wzl-swatch-orange': \"#ff6b00\",\n '--wzl-swatch-magenta': \"#ff6eff\",\n '--wzl-radius-sm': \"3px\",\n '--wzl-radius-md': \"5px\",\n '--wzl-border-w': \"1px\",\n '--wzl-line-width': \"2px\",\n '--wzl-curve-width': \"3px\",\n '--wzl-tb-height': \"28px\",\n '--wzl-radius-lg': \"14px\",\n '--wzl-control-h': \"28px\",\n '--wzl-glass-blur': \"3px\",\n '--wzl-font-size': \"13px\",\n '--wzl-font-size-sm': \"11px\",\n '--wzl-space-xs': \"4px\",\n '--wzl-space-sm': \"8px\",\n '--wzl-space-md': \"12px\",\n '--wzl-space-lg': \"16px\",\n '--wzl-z-toolbar': \"10\",\n '--wzl-z-overlay': \"20\",\n '--wzl-z-modal': \"30\",\n '--wzl-backdrop': \"none\",\n '--wzl-motion-fast': \"120ms\",\n '--wzl-motion-medium': \"240ms\",\n '--wzl-ease-in-cubic': \"cubic-bezier(0.32, 0, 0.67, 0)\",\n '--wzl-ease-out-cubic': \"cubic-bezier(0.33, 1, 0.68, 1)\",\n '--wzl-ease-in-out-cubic': \"cubic-bezier(0.65, 0, 0.35, 1)\",\n '--wzl-ease-out-back': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n '--wzl-font-ui': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-display': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-body': \"Inter, system-ui, -apple-system, 'Segoe UI', sans-serif\",\n '--wzl-font-mono': \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\",\n '--wzl-font-weight-light': \"200\",\n '--wzl-font-weight-normal': \"300\",\n '--wzl-font-weight-medium': \"350\",\n '--wzl-font-weight-bold': \"400\",\n '--wzl-surface': \"#181a1e\",\n '--wzl-surface-raised': \"#25272c\",\n '--wzl-surface-sunken': \"#0e0f12\",\n '--wzl-fg-muted': \"#9ea1a8\",\n '--wzl-fg-subtle': \"#6f737b\",\n '--wzl-border': \"#25272c\",\n '--wzl-border-strong': \"#383b42\",\n '--wzl-accent-fg': \"#5841b8\",\n '--wzl-fg-inverse': \"#0e0f12\",\n },\n \"light\": {\n '--wzl-gray-50': \"#f5f5f6\",\n '--wzl-gray-100': \"#e6e7e9\",\n '--wzl-gray-200': \"#c9cbcf\",\n '--wzl-gray-300': \"#9ea1a8\",\n '--wzl-gray-400': \"#6f737b\",\n '--wzl-gray-500': \"#4d5058\",\n '--wzl-gray-600': \"#383b42\",\n '--wzl-gray-700': \"#25272c\",\n '--wzl-gray-800': \"#181a1e\",\n '--wzl-gray-900': \"#0e0f12\",\n '--wzl-accent-soft': \"#1d1454\",\n '--wzl-accent-base': \"#2e1f7a\",\n '--wzl-accent-strong': \"#5841b8\",\n '--wzl-danger-base': \"#d94a3f\",\n '--wzl-warning-base': \"#d99a3f\",\n '--wzl-success-base': \"#2ec27e\",\n '--wzl-fg-on-accent': \"#f5f5f6\",\n '--wzl-fg': \"#0e0f12\",\n '--wzl-line-subtle': \"rgba(14, 15, 18, 0.1)\",\n '--wzl-line': \"rgba(14, 15, 18, 0.2)\",\n '--wzl-line-strong': \"rgba(14, 15, 18, 0.4)\",\n '--wzl-curve-color': \"#5841b8\",\n '--wzl-accent': \"#2e1f7a\",\n '--wzl-accent-hover': \"#5841b8\",\n '--wzl-danger': \"#d94a3f\",\n '--wzl-warning': \"#d99a3f\",\n '--wzl-success': \"#2ec27e\",\n '--wzl-focus-ring': \"#5841b8\",\n '--wzl-glass-tint': \"#2e1f7a\",\n '--wzl-surface-hover': \"rgba(14, 15, 18, 0.1)\",\n '--wzl-surface-pressed': \"rgba(14, 15, 18, 0.18)\",\n '--wzl-swatch-green': \"#2fdd18\",\n '--wzl-swatch-pink': \"#ff5885\",\n '--wzl-swatch-cyan': \"#00dfff\",\n '--wzl-swatch-gold': \"#dcb700\",\n '--wzl-swatch-amber': \"#ff8c00\",\n '--wzl-swatch-violet': \"#a497ff\",\n '--wzl-swatch-mint': \"#00e7af\",\n '--wzl-swatch-sky': \"#00b8ff\",\n '--wzl-swatch-orange': \"#ff6b00\",\n '--wzl-swatch-magenta': \"#ff6eff\",\n '--wzl-radius-sm': \"3px\",\n '--wzl-radius-md': \"5px\",\n '--wzl-border-w': \"1px\",\n '--wzl-line-width': \"2px\",\n '--wzl-curve-width': \"3px\",\n '--wzl-tb-height': \"28px\",\n '--wzl-radius-lg': \"14px\",\n '--wzl-control-h': \"28px\",\n '--wzl-glass-blur': \"3px\",\n '--wzl-font-size': \"13px\",\n '--wzl-font-size-sm': \"11px\",\n '--wzl-space-xs': \"4px\",\n '--wzl-space-sm': \"8px\",\n '--wzl-space-md': \"12px\",\n '--wzl-space-lg': \"16px\",\n '--wzl-z-toolbar': \"10\",\n '--wzl-z-overlay': \"20\",\n '--wzl-z-modal': \"30\",\n '--wzl-backdrop': \"none\",\n '--wzl-motion-fast': \"120ms\",\n '--wzl-motion-medium': \"240ms\",\n '--wzl-ease-in-cubic': \"cubic-bezier(0.32, 0, 0.67, 0)\",\n '--wzl-ease-out-cubic': \"cubic-bezier(0.33, 1, 0.68, 1)\",\n '--wzl-ease-in-out-cubic': \"cubic-bezier(0.65, 0, 0.35, 1)\",\n '--wzl-ease-out-back': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n '--wzl-font-ui': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-display': \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\",\n '--wzl-font-body': \"Inter, system-ui, -apple-system, 'Segoe UI', sans-serif\",\n '--wzl-font-mono': \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\",\n '--wzl-font-weight-light': \"200\",\n '--wzl-font-weight-normal': \"300\",\n '--wzl-font-weight-medium': \"350\",\n '--wzl-font-weight-bold': \"400\",\n '--wzl-surface': \"#f5f5f6\",\n '--wzl-surface-raised': \"#e6e7e9\",\n '--wzl-surface-sunken': \"#c9cbcf\",\n '--wzl-fg-muted': \"#383b42\",\n '--wzl-fg-subtle': \"#4d5058\",\n '--wzl-border': \"#c9cbcf\",\n '--wzl-border-strong': \"#9ea1a8\",\n '--wzl-accent-fg': \"#2e1f7a\",\n '--wzl-fg-inverse': \"#f5f5f6\",\n },\n },\n },\n} as const satisfies Record<string, GeneratedTheme>;\n\n/** Unresolved token graph. `extends` needs the aliases intact so an override\n * of a base primitive still reaches everything referencing it. */\nexport interface ThemeSource {\n readonly primitives: Readonly<Record<string, RawToken>>;\n readonly modes: Readonly<Record<string, Readonly<Record<string, RawToken>>>>;\n}\n\n/** The same built-in themes as `THEMES`, unresolved. This is what\n * `defineTheme` layers onto. */\nexport const THEME_SOURCES: Readonly<Record<string, ThemeSource>> = {\n \"weasel\": {\n \"primitives\": {\n \"gray-50\": {\n \"type\": \"color\",\n \"value\": \"#f5f5f6\"\n },\n \"gray-100\": {\n \"type\": \"color\",\n \"value\": \"#e6e7e9\"\n },\n \"gray-200\": {\n \"type\": \"color\",\n \"value\": \"#c9cbcf\"\n },\n \"gray-300\": {\n \"type\": \"color\",\n \"value\": \"#9ea1a8\"\n },\n \"gray-400\": {\n \"type\": \"color\",\n \"value\": \"#6f737b\"\n },\n \"gray-500\": {\n \"type\": \"color\",\n \"value\": \"#4d5058\"\n },\n \"gray-600\": {\n \"type\": \"color\",\n \"value\": \"#383b42\"\n },\n \"gray-700\": {\n \"type\": \"color\",\n \"value\": \"#25272c\"\n },\n \"gray-800\": {\n \"type\": \"color\",\n \"value\": \"#181a1e\"\n },\n \"gray-900\": {\n \"type\": \"color\",\n \"value\": \"#0e0f12\"\n },\n \"accent-soft\": {\n \"type\": \"color\",\n \"value\": \"#1d1454\"\n },\n \"accent-base\": {\n \"type\": \"color\",\n \"value\": \"#2e1f7a\",\n \"description\": \"Midnight blue-violet. Deep and saturated; anchors primary actions on light and dark surfaces alike.\"\n },\n \"accent-strong\": {\n \"type\": \"color\",\n \"value\": \"#5841b8\"\n },\n \"danger-base\": {\n \"type\": \"color\",\n \"value\": \"#d94a3f\"\n },\n \"warning-base\": {\n \"type\": \"color\",\n \"value\": \"#d99a3f\"\n },\n \"success-base\": {\n \"type\": \"color\",\n \"value\": \"#2ec27e\"\n },\n \"fg-on-accent\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-50}\"\n },\n \"line-subtle\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.1,\n \"description\": \"Barely-there separators (table rows).\"\n },\n \"line\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.2,\n \"description\": \"Primary gridlines on sunken surfaces.\"\n },\n \"line-strong\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.4,\n \"description\": \"Axes and emphasized dividers.\"\n },\n \"curve-color\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\",\n \"description\": \"Drawn data curves. Routes through the bright accent because accent-base is too dim on sunken surfaces.\"\n },\n \"accent\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-base}\"\n },\n \"accent-hover\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\"\n },\n \"danger\": {\n \"type\": \"color\",\n \"value\": \"{color.danger-base}\"\n },\n \"warning\": {\n \"type\": \"color\",\n \"value\": \"{color.warning-base}\"\n },\n \"success\": {\n \"type\": \"color\",\n \"value\": \"{color.success-base}\"\n },\n \"focus-ring\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\"\n },\n \"glass-tint\": {\n \"type\": \"color\",\n \"value\": \"{color.accent}\",\n \"description\": \"Frosted-glass tint. Components compose it as color-mix(in srgb, var(--wzl-glass-tint) 78%, transparent) with backdrop-filter: blur(3px).\"\n },\n \"surface-hover\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.1,\n \"description\": \"Hover wash over a raised surface. Same formula as line-subtle, different job — do not collapse them.\"\n },\n \"surface-pressed\": {\n \"type\": \"color\",\n \"value\": \"{color.fg}\",\n \"alpha\": 0.18,\n \"description\": \"Pressed wash over a raised surface.\"\n },\n \"swatch-green\": {\n \"type\": \"color\",\n \"value\": \"#2fdd18\",\n \"description\": \"First of ten categorical spot colors for plotting, status and data viz. Ordered — take them in sequence. Mode-invariant on purpose: a series keeps its color when the mode flips.\"\n },\n \"swatch-pink\": {\n \"type\": \"color\",\n \"value\": \"#ff5885\"\n },\n \"swatch-cyan\": {\n \"type\": \"color\",\n \"value\": \"#00dfff\"\n },\n \"swatch-gold\": {\n \"type\": \"color\",\n \"value\": \"#dcb700\"\n },\n \"swatch-amber\": {\n \"type\": \"color\",\n \"value\": \"#ff8c00\"\n },\n \"swatch-violet\": {\n \"type\": \"color\",\n \"value\": \"#a497ff\"\n },\n \"swatch-mint\": {\n \"type\": \"color\",\n \"value\": \"#00e7af\"\n },\n \"swatch-sky\": {\n \"type\": \"color\",\n \"value\": \"#00b8ff\"\n },\n \"swatch-orange\": {\n \"type\": \"color\",\n \"value\": \"#ff6b00\"\n },\n \"swatch-magenta\": {\n \"type\": \"color\",\n \"value\": \"#ff6eff\"\n },\n \"radius-sm\": {\n \"type\": \"dimension\",\n \"value\": \"3px\"\n },\n \"radius-md\": {\n \"type\": \"dimension\",\n \"value\": \"5px\"\n },\n \"border-w\": {\n \"type\": \"dimension\",\n \"value\": \"1px\"\n },\n \"line-width\": {\n \"type\": \"dimension\",\n \"value\": \"2px\",\n \"description\": \"Structural lines — gridlines, dividers, axes.\"\n },\n \"curve-width\": {\n \"type\": \"dimension\",\n \"value\": \"3px\",\n \"description\": \"Drawn data curves. Heavier than structural lines so data reads as primary content.\"\n },\n \"tb-height\": {\n \"type\": \"dimension\",\n \"value\": \"28px\",\n \"description\": \"Height of a horizontal toolbar strip (ActionsBar, OptionsBar, ToggleBar, ToolOptionsBar).\"\n },\n \"radius-lg\": {\n \"type\": \"dimension\",\n \"value\": \"14px\"\n },\n \"control-h\": {\n \"type\": \"dimension\",\n \"value\": \"28px\",\n \"description\": \"Height of an interactive control — button, input, select. Distinct from tb-height, which sizes the strip a row of them sits in.\"\n },\n \"glass-blur\": {\n \"type\": \"dimension\",\n \"value\": \"3px\",\n \"description\": \"Backdrop blur radius for frosted surfaces. Pairs with glass-tint.\"\n },\n \"font-size\": {\n \"type\": \"dimension\",\n \"value\": \"13px\"\n },\n \"font-size-sm\": {\n \"type\": \"dimension\",\n \"value\": \"11px\"\n },\n \"space-xs\": {\n \"type\": \"dimension\",\n \"value\": \"4px\"\n },\n \"space-sm\": {\n \"type\": \"dimension\",\n \"value\": \"8px\"\n },\n \"space-md\": {\n \"type\": \"dimension\",\n \"value\": \"12px\"\n },\n \"space-lg\": {\n \"type\": \"dimension\",\n \"value\": \"16px\"\n },\n \"z-toolbar\": {\n \"type\": \"number\",\n \"value\": 10\n },\n \"z-overlay\": {\n \"type\": \"number\",\n \"value\": 20\n },\n \"z-modal\": {\n \"type\": \"number\",\n \"value\": 30\n },\n \"backdrop\": {\n \"type\": \"gradient\",\n \"value\": \"none\",\n \"description\": \"Layered backdrop fill for a page or lab root. `none` here; a theme with a signature background sets it.\"\n },\n \"motion-fast\": {\n \"type\": \"duration\",\n \"value\": \"120ms\",\n \"description\": \"Micro-interactions — hover, focus, pressed.\"\n },\n \"motion-medium\": {\n \"type\": \"duration\",\n \"value\": \"240ms\",\n \"description\": \"Entrances and exits — toasts, popovers, panels.\"\n },\n \"ease-in-cubic\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.32,\n 0,\n 0.67,\n 0\n ]\n },\n \"ease-out-cubic\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.33,\n 1,\n 0.68,\n 1\n ]\n },\n \"ease-in-out-cubic\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.65,\n 0,\n 0.35,\n 1\n ]\n },\n \"ease-out-back\": {\n \"type\": \"cubicBezier\",\n \"value\": [\n 0.34,\n 1.56,\n 0.64,\n 1\n ]\n },\n \"font-ui\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"Oswald\",\n \"Helvetica Neue Condensed\",\n \"Arial Narrow\",\n \"system-ui\",\n \"sans-serif\"\n ],\n \"description\": \"Condensed UI/display face. The heavier cuts get blocky at any size, so the weight tokens stay in the 200-400 range.\"\n },\n \"font-display\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"Oswald\",\n \"Helvetica Neue Condensed\",\n \"Arial Narrow\",\n \"system-ui\",\n \"sans-serif\"\n ]\n },\n \"font-body\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"Inter\",\n \"system-ui\",\n \"-apple-system\",\n \"Segoe UI\",\n \"sans-serif\"\n ]\n },\n \"font-mono\": {\n \"type\": \"fontFamily\",\n \"value\": [\n \"ui-monospace\",\n \"SFMono-Regular\",\n \"Menlo\",\n \"Consolas\",\n \"monospace\"\n ]\n },\n \"font-weight-light\": {\n \"type\": \"fontWeight\",\n \"value\": 200\n },\n \"font-weight-normal\": {\n \"type\": \"fontWeight\",\n \"value\": 300\n },\n \"font-weight-medium\": {\n \"type\": \"fontWeight\",\n \"value\": 350\n },\n \"font-weight-bold\": {\n \"type\": \"fontWeight\",\n \"value\": 400\n }\n },\n \"modes\": {\n \"dark\": {\n \"surface\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-800}\"\n },\n \"surface-raised\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-700}\"\n },\n \"surface-sunken\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-900}\"\n },\n \"fg\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-100}\"\n },\n \"fg-muted\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-300}\"\n },\n \"fg-subtle\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-400}\"\n },\n \"border\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-700}\"\n },\n \"border-strong\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-600}\"\n },\n \"accent-fg\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-strong}\",\n \"description\": \"Accent for foreground use — text, icons, selected labels drawn on a surface. accent is a fill; the midnight base is too dim to read as text on dark surfaces.\"\n },\n \"fg-inverse\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-900}\",\n \"description\": \"Text drawn on a filled foreground-colored element (e.g. a slider thumb). Flips with the mode, so it is a semantic, not an alias to a primitive.\"\n }\n },\n \"light\": {\n \"surface\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-50}\"\n },\n \"surface-raised\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-100}\"\n },\n \"surface-sunken\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-200}\"\n },\n \"fg\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-900}\"\n },\n \"fg-muted\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-600}\"\n },\n \"fg-subtle\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-500}\"\n },\n \"border\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-200}\"\n },\n \"border-strong\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-300}\"\n },\n \"accent-fg\": {\n \"type\": \"color\",\n \"value\": \"{color.accent-base}\",\n \"description\": \"Flips to the deep base in light mode, where it is the legible one.\"\n },\n \"fg-inverse\": {\n \"type\": \"color\",\n \"value\": \"{color.gray-50}\",\n \"description\": \"Flips with the mode — see the dark layer.\"\n }\n }\n }\n }\n};\n","import type { FlatTokens, RawToken } from './dtcg/types';\nimport { THEME_SOURCES } from './generated/themes';\n\n/** Authoring shorthand: a bare string is a literal or a `{ref}`. */\nexport type TokenInput = string | number | RawToken;\n\n/** What `defineTheme` accepts: a name, the base theme to layer onto, and the\n * token overrides, split into mode-invariant and per-mode. */\nexport interface ThemeInput {\n readonly name: string;\n /** Base to layer onto. Defaults to `weaselTheme`; `null` opts out. */\n readonly extends?: Theme | null;\n readonly defaultMode?: string;\n /** Mode-invariant overrides. */\n readonly tokens?: Readonly<Record<string, TokenInput>>;\n readonly modes: Readonly<Record<string, Readonly<Record<string, TokenInput>>>>;\n}\n\n/**\n * A theme: a named set of design tokens, organized into a mode-invariant layer\n * plus one layer per mode (light, dark, …), optionally extending another theme.\n * Tokens are held unresolved — aliases between them are collapsed later by\n * `resolveTheme`, so an override of a base primitive still reaches everything\n * that references it.\n */\nexport interface Theme {\n readonly name: string;\n readonly extends: Theme | null;\n readonly defaultMode: string;\n readonly tokens: FlatTokens;\n readonly modes: Readonly<Record<string, FlatTokens>>;\n}\n\nfunction normalize(input: Readonly<Record<string, TokenInput>>): FlatTokens {\n const out: FlatTokens = {};\n for (const [name, v] of Object.entries(input)) {\n out[name] =\n typeof v === 'object'\n ? v\n : { type: 'unknown', value: v, alpha: undefined, description: undefined };\n }\n return out;\n}\n\n/** The built-in theme, materialized from the generated source. */\nexport const weaselTheme: Theme = {\n name: 'weasel',\n extends: null,\n defaultMode: 'dark',\n tokens: THEME_SOURCES.weasel.primitives as FlatTokens,\n modes: THEME_SOURCES.weasel.modes as Record<string, FlatTokens>,\n};\n\n/** Build a theme from authoring shorthand. Unless `extends` says otherwise the\n * result layers onto `weaselTheme`, so a theme only needs to name what it\n * changes. */\nexport function defineTheme(input: ThemeInput): Theme {\n const base = input.extends === undefined ? weaselTheme : input.extends;\n const modes: Record<string, FlatTokens> = {};\n for (const [mode, tokens] of Object.entries(input.modes)) modes[mode] = normalize(tokens);\n return {\n name: input.name,\n extends: base,\n defaultMode: input.defaultMode ?? base?.defaultMode ?? 'dark',\n tokens: normalize(input.tokens ?? {}),\n modes,\n };\n}\n","/**\n * Hex → `rgba()`. The JS side of the alpha extension; the CSS side emits\n * `color-mix()` instead so DOM chrome keeps tracking a downstream override of\n * the referenced token.\n */\nexport function hexToRgba(hex: string, alpha: number): string {\n const m = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m) throw new Error(`Expected a hex color, got \"${hex}\"`);\n\n const body = m[1];\n const full = body.length === 3 ? body.replace(/./g, (c) => c + c) : body;\n const r = Number.parseInt(full.slice(0, 2), 16);\n const g = Number.parseInt(full.slice(2, 4), 16);\n const b = Number.parseInt(full.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","import { hexToRgba } from './color';\nimport type { FlatTokens, ResolvedTokenMap, TokenValue } from './types';\n\n/** `{color.gray-100}` → `gray-100`. The type group is dropped, per the naming rule. */\nconst REF = /^\\{([^}]+)\\}$/;\n\nfunction refTarget(value: TokenValue): string | null {\n if (typeof value !== 'string') return null;\n const m = REF.exec(value.trim());\n if (!m) return null;\n const path = m[1];\n const dot = path.indexOf('.');\n return dot === -1 ? path : path.slice(dot + 1);\n}\n\n/**\n * Quote family names containing whitespace; leave everything else bare.\n * Generic keywords (`sans-serif`) and hyphen-prefixed identifiers\n * (`-apple-system`) break if quoted, and neither contains a space.\n */\nfunction fontStack(value: readonly (string | number)[]): string {\n return value.map((f) => (typeof f === 'string' && /\\s/.test(f) ? `'${f}'` : String(f))).join(', ');\n}\n\nfunction serialize(type: string, value: TokenValue): string {\n if (Array.isArray(value)) {\n if (type === 'cubicBezier') return `cubic-bezier(${value.join(', ')})`;\n if (type === 'fontFamily') return fontStack(value);\n return value.join(', ');\n }\n return String(value);\n}\n\n/**\n * Resolve flat tokens to final CSS-ready strings.\n *\n * Merge modes before calling: this function has no notion of modes, only of a\n * complete token set.\n */\nexport function resolveTokens(tokens: FlatTokens): ResolvedTokenMap {\n const out: ResolvedTokenMap = {};\n const inProgress = new Set<string>();\n\n const resolveOne = (name: string): string => {\n const cached = out[name];\n if (cached !== undefined) return cached;\n\n const token = tokens[name];\n if (!token) throw new Error(`Unknown token \"${name}\"`);\n\n if (inProgress.has(name)) {\n throw new Error(`Reference cycle at token \"${name}\" (${[...inProgress].join(' → ')})`);\n }\n inProgress.add(name);\n\n const target = refTarget(token.value);\n let value: string;\n if (target === null) {\n value = serialize(token.type, token.value);\n } else if (!tokens[target]) {\n throw new Error(`Token \"${name}\" references \"${target}\", which is not defined`);\n } else {\n value = resolveOne(target);\n }\n\n if (token.alpha !== undefined) value = hexToRgba(value, token.alpha);\n\n inProgress.delete(name);\n out[name] = value;\n return value;\n };\n\n for (const name of Object.keys(tokens)) resolveOne(name);\n return out;\n}\n\n/** Merge a mode's tokens over the mode-invariant set. Later wins. */\nexport function mergeTokens(base: FlatTokens, mode: FlatTokens): FlatTokens {\n return { ...base, ...mode };\n}\n","import { resolveTokens } from './dtcg/resolve';\nimport type { FlatTokens } from './dtcg/types';\nimport type { Theme } from './theme';\nimport type { TokenName } from './generated/themes';\n\n/** The output of `resolveTheme`: every token of a theme, for one mode, keyed\n * by CSS custom-property name and flattened to a final CSS value. */\nexport type ResolvedTheme = Readonly<Record<TokenName, string>>;\n\n/** Root-first so the leaf theme's overrides land last. */\nfunction chain(theme: Theme): Theme[] {\n const out: Theme[] = [];\n for (let t: Theme | null = theme; t; t = t.extends) out.unshift(t);\n return out;\n}\n\n/**\n * Merge the extends chain, layer the mode over it, resolve every alias, and\n * key the result by CSS custom-property name.\n *\n * Pure — no DOM. An unresolvable reference throws rather than falling back.\n */\nexport function resolveTheme(theme: Theme, mode: string): ResolvedTheme {\n const themes = chain(theme);\n const effectiveMode = themes.some((t) => mode in t.modes) ? mode : theme.defaultMode;\n\n // Each theme contributes its mode-invariant tokens and then its mode layer,\n // before the next theme down the chain gets a turn. Collecting all `tokens`\n // first and all mode layers second would let the *base's* mode layer outrank\n // a derived theme's deliberate mode-invariant override.\n let merged: FlatTokens = {};\n for (const t of themes) {\n merged = { ...merged, ...t.tokens, ...(t.modes[effectiveMode] ?? {}) };\n }\n\n const resolved = resolveTokens(merged);\n const out: Record<string, string> = {};\n for (const [name, value] of Object.entries(resolved)) out[`--wzl-${name}`] = value;\n return out as ResolvedTheme;\n}\n","import { resolveTheme } from './resolveTheme';\nimport type { Theme } from './theme';\n\nconst STYLE_ID = 'wzl-themes';\n/** `theme.name::mode` → the rule text currently published for it. Keyed by\n * name because that is what the rule's selector matches on, and holding the\n * text is what lets a redefinition under the same name replace its rule\n * rather than be swallowed as a cache hit. */\nconst emitted = new Map<string, string>();\nlet sheet: CSSStyleSheet | null = null;\nlet styleEl: HTMLStyleElement | null = null;\n\n/** Test seam — drops the module-level cache so each case starts clean. */\nexport function __resetThemeSheet(): void {\n emitted.clear();\n sheet = null;\n styleEl = null;\n}\n\nfunction canAdopt(): boolean {\n return (\n typeof CSSStyleSheet !== 'undefined' &&\n 'replaceSync' in CSSStyleSheet.prototype &&\n Array.isArray(document.adoptedStyleSheets)\n );\n}\n\n/** Republish every rule from `emitted`. Rewriting the whole sheet rather than\n * appending keeps it the size of the theme set: a theme redefined under a\n * name it already used replaces its rule instead of stacking another one. */\nfunction flushRules(): void {\n const css = [...emitted.values()].join('\\n');\n if (canAdopt()) {\n if (!sheet) {\n sheet = new CSSStyleSheet();\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n }\n sheet.replaceSync(css);\n return;\n }\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.id = STYLE_ID;\n document.head.appendChild(styleEl);\n }\n styleEl.textContent = css;\n}\n\n/**\n * Apply `theme` at `mode` to `el`'s subtree.\n *\n * Stamps two data attributes and ensures a matching rule block exists in a\n * module-owned stylesheet. Deliberately not inline properties: the cascade\n * then does the work, per-subtree overrides are just a different theme name,\n * and no `!important` is ever needed. No-op outside a DOM.\n */\nexport function applyTheme(el: HTMLElement, theme: Theme, mode: string): void {\n if (typeof document === 'undefined') return;\n\n const key = `${theme.name}::${mode}`;\n const resolved = resolveTheme(theme, mode);\n const body = Object.entries(resolved)\n .map(([name, value]) => `${name}: ${value};`)\n .join(' ');\n const rule = `[data-wzl-theme='${theme.name}'][data-wzl-mode='${mode}'] { ${body} }`;\n if (emitted.get(key) !== rule) {\n emitted.set(key, rule);\n flushRules();\n }\n\n el.setAttribute('data-wzl-theme', theme.name);\n el.setAttribute('data-wzl-mode', mode);\n}\n"]}