@weasel-js/theme 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -14
- package/dist/chunk-LL2ERJPZ.js +175 -0
- package/dist/chunk-LL2ERJPZ.js.map +1 -0
- package/dist/chunk-PJMTWM34.js +6 -0
- package/dist/chunk-PJMTWM34.js.map +1 -0
- package/dist/chunk-YBHW5LZM.js +1582 -0
- package/dist/chunk-YBHW5LZM.js.map +1 -0
- package/dist/engine.d.ts +293 -0
- package/dist/engine.js +1761 -0
- package/dist/engine.js.map +1 -0
- package/dist/index.d.ts +49 -15
- package/dist/index.js +143 -116
- package/dist/index.js.map +1 -1
- package/dist/react.d.ts +7 -5
- package/dist/react.js +13 -18
- package/dist/react.js.map +1 -1
- package/dist/{resolveTheme-DiF2Ew25.d.ts → resolveTheme-CHnPdh8W.d.ts} +84 -114
- package/dist/theme-BtpBHcUg.d.ts +189 -0
- package/dist/tokens.css +33 -27
- package/package.json +8 -1
- package/dist/chunk-VKZ4JIVX.js +0 -912
- package/dist/chunk-VKZ4JIVX.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,112 +1,134 @@
|
|
|
1
|
-
import { weaselTheme } from './chunk-
|
|
2
|
-
export { THEMES, THEME_SOURCES, applyTheme, defineTheme,
|
|
1
|
+
import { weaselTheme } from './chunk-YBHW5LZM.js';
|
|
2
|
+
export { BAKED_THEMES, THEMES, THEME_SOURCES, applyTheme, defineTheme, weaselTheme } from './chunk-YBHW5LZM.js';
|
|
3
|
+
import { ALPHA_EXT } from './chunk-PJMTWM34.js';
|
|
4
|
+
import { themeAxes } from './chunk-LL2ERJPZ.js';
|
|
5
|
+
export { enumerateSelections, fullSelection, isByAxis, parseTokenValue, resolveTheme, selectionKey, serializeTokenValue, themeAxes } from './chunk-LL2ERJPZ.js';
|
|
3
6
|
|
|
4
7
|
// src/generated/manifest.ts
|
|
5
8
|
var TOKEN_MANIFEST = [
|
|
6
|
-
{ name: "--wzl-gray-50", type: "color", group: "gray", defaultValue: "#f5f5f6", description: "" },
|
|
7
|
-
{ name: "--wzl-gray-100", type: "color", group: "gray", defaultValue: "#e6e7e9", description: "" },
|
|
8
|
-
{ name: "--wzl-gray-200", type: "color", group: "gray", defaultValue: "#c9cbcf", description: "" },
|
|
9
|
-
{ name: "--wzl-gray-300", type: "color", group: "gray", defaultValue: "#9ea1a8", description: "" },
|
|
10
|
-
{ name: "--wzl-gray-400", type: "color", group: "gray", defaultValue: "#6f737b", description: "" },
|
|
11
|
-
{ name: "--wzl-gray-500", type: "color", group: "gray", defaultValue: "#4d5058", description: "" },
|
|
12
|
-
{ name: "--wzl-gray-600", type: "color", group: "gray", defaultValue: "#383b42", description: "" },
|
|
13
|
-
{ name: "--wzl-gray-700", type: "color", group: "gray", defaultValue: "#25272c", description: "" },
|
|
14
|
-
{ name: "--wzl-gray-800", type: "color", group: "gray", defaultValue: "#181a1e", description: "" },
|
|
15
|
-
{ name: "--wzl-gray-900", type: "color", group: "gray", defaultValue: "#0e0f12", description: "" },
|
|
16
|
-
{ name: "--wzl-accent-soft", type: "color", group: "accent", defaultValue: "#1d1454", description: "" },
|
|
17
|
-
{ 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." },
|
|
18
|
-
{ name: "--wzl-accent-strong", type: "color", group: "accent", defaultValue: "#5841b8", description: "" },
|
|
19
|
-
{ name: "--wzl-
|
|
20
|
-
{ name: "--wzl-
|
|
21
|
-
{ name: "--wzl-
|
|
22
|
-
{ name: "--wzl-
|
|
23
|
-
{ name: "--wzl-
|
|
24
|
-
{ name: "--wzl-
|
|
25
|
-
{ name: "--wzl-
|
|
26
|
-
{ name: "--wzl-
|
|
27
|
-
{ name: "--wzl-
|
|
28
|
-
{ name: "--wzl-
|
|
29
|
-
{ name: "--wzl-
|
|
30
|
-
{ name: "--wzl-
|
|
31
|
-
{ name: "--wzl-
|
|
32
|
-
{ name: "--wzl-
|
|
33
|
-
{ name: "--wzl-
|
|
34
|
-
{ name: "--wzl-
|
|
35
|
-
{ name: "--wzl-
|
|
36
|
-
{ name: "--wzl-
|
|
37
|
-
{ name: "--wzl-
|
|
38
|
-
{ name: "--wzl-
|
|
39
|
-
{ name: "--wzl-
|
|
40
|
-
{ name: "--wzl-
|
|
41
|
-
{ name: "--wzl-
|
|
42
|
-
{ name: "--wzl-
|
|
43
|
-
{ name: "--wzl-
|
|
44
|
-
{ name: "--wzl-
|
|
45
|
-
{ name: "--wzl-
|
|
46
|
-
{ name: "--wzl-
|
|
47
|
-
{ name: "--wzl-
|
|
48
|
-
{ name: "--wzl-
|
|
49
|
-
{ name: "--wzl-
|
|
50
|
-
{ name: "--wzl-
|
|
51
|
-
{ name: "--wzl-
|
|
52
|
-
{ name: "--wzl-
|
|
53
|
-
{ name: "--wzl-
|
|
54
|
-
{ name: "--wzl-
|
|
55
|
-
{ name: "--wzl-
|
|
56
|
-
{ name: "--wzl-
|
|
57
|
-
{ name: "--wzl-
|
|
58
|
-
{ name: "--wzl-
|
|
59
|
-
{ name: "--wzl-
|
|
60
|
-
{ name: "--wzl-
|
|
61
|
-
{ name: "--wzl-
|
|
62
|
-
{ name: "--wzl-
|
|
63
|
-
{ name: "--wzl-
|
|
64
|
-
{ name: "--wzl-
|
|
65
|
-
{ name: "--wzl-
|
|
66
|
-
{ name: "--wzl-
|
|
67
|
-
{ name: "--wzl-
|
|
68
|
-
{ name: "--wzl-
|
|
69
|
-
{ name: "--wzl-
|
|
70
|
-
{ name: "--wzl-
|
|
71
|
-
{ name: "--wzl-
|
|
72
|
-
{ name: "--wzl-
|
|
73
|
-
{ name: "--wzl-
|
|
74
|
-
{ name: "--wzl-
|
|
75
|
-
{ name: "--wzl-
|
|
76
|
-
{ name: "--wzl-
|
|
77
|
-
{ name: "--wzl-
|
|
78
|
-
{ name: "--wzl-
|
|
79
|
-
{ name: "--wzl-
|
|
80
|
-
{ name: "--wzl-
|
|
81
|
-
{ name: "--wzl-
|
|
82
|
-
{ name: "--wzl-
|
|
83
|
-
{ name: "--wzl-
|
|
84
|
-
{ name: "--wzl-
|
|
85
|
-
{ name: "--wzl-
|
|
86
|
-
{ name: "--wzl-
|
|
87
|
-
{ name: "--wzl-
|
|
88
|
-
{ name: "--wzl-
|
|
89
|
-
{ name: "--wzl-
|
|
90
|
-
{ name: "--wzl-
|
|
91
|
-
{ name: "--wzl-
|
|
92
|
-
{ name: "--wzl-
|
|
93
|
-
{ name: "--wzl-
|
|
94
|
-
{ name: "--wzl-
|
|
95
|
-
{ name: "--wzl-
|
|
96
|
-
{ name: "--wzl-
|
|
97
|
-
{ name: "--wzl-
|
|
98
|
-
{ name: "--wzl-
|
|
99
|
-
{ name: "--wzl-
|
|
100
|
-
{ name: "--wzl-
|
|
101
|
-
{ name: "--wzl-
|
|
102
|
-
{ name: "--wzl-
|
|
103
|
-
{ name: "--wzl-
|
|
104
|
-
{ name: "--wzl-
|
|
105
|
-
{ name: "--wzl-
|
|
9
|
+
{ name: "--wzl-gray-50", type: "color", group: "gray", defaultValue: "#f5f5f6", description: "", hook: false },
|
|
10
|
+
{ name: "--wzl-gray-100", type: "color", group: "gray", defaultValue: "#e6e7e9", description: "", hook: false },
|
|
11
|
+
{ name: "--wzl-gray-200", type: "color", group: "gray", defaultValue: "#c9cbcf", description: "", hook: false },
|
|
12
|
+
{ name: "--wzl-gray-300", type: "color", group: "gray", defaultValue: "#9ea1a8", description: "", hook: false },
|
|
13
|
+
{ name: "--wzl-gray-400", type: "color", group: "gray", defaultValue: "#6f737b", description: "", hook: false },
|
|
14
|
+
{ name: "--wzl-gray-500", type: "color", group: "gray", defaultValue: "#4d5058", description: "", hook: false },
|
|
15
|
+
{ name: "--wzl-gray-600", type: "color", group: "gray", defaultValue: "#383b42", description: "", hook: false },
|
|
16
|
+
{ name: "--wzl-gray-700", type: "color", group: "gray", defaultValue: "#25272c", description: "", hook: false },
|
|
17
|
+
{ name: "--wzl-gray-800", type: "color", group: "gray", defaultValue: "#181a1e", description: "", hook: false },
|
|
18
|
+
{ name: "--wzl-gray-900", type: "color", group: "gray", defaultValue: "#0e0f12", description: "", hook: false },
|
|
19
|
+
{ name: "--wzl-accent-soft", type: "color", group: "accent", defaultValue: "#1d1454", description: "", hook: false },
|
|
20
|
+
{ 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.", hook: false },
|
|
21
|
+
{ name: "--wzl-accent-strong", type: "color", group: "accent", defaultValue: "#5841b8", description: "", hook: false },
|
|
22
|
+
{ name: "--wzl-swatch-fuchsia", type: "color", group: "swatch", defaultValue: "#f641f7", description: "First of ten categorical spot colors for plotting, status and data viz. Take them in sequence: the order is farthest-point over hue, so the first N are as separated as N colors can be (first three 87\xB0 apart, all ten 32\xB0). Mode-invariant on purpose \u2014 a series keeps its color when the mode flips, which is why they are tuned for a dark surface and clear only 1.5:1 on a light one.", hook: false },
|
|
23
|
+
{ name: "--wzl-swatch-green", type: "color", group: "swatch", defaultValue: "#48e628", description: "", hook: false },
|
|
24
|
+
{ name: "--wzl-swatch-sky", type: "color", group: "swatch", defaultValue: "#36bff2", description: "", hook: false },
|
|
25
|
+
{ name: "--wzl-swatch-amber", type: "color", group: "swatch", defaultValue: "#e69628", description: "", hook: false },
|
|
26
|
+
{ name: "--wzl-swatch-teal", type: "color", group: "swatch", defaultValue: "#3ee1cb", description: "", hook: false },
|
|
27
|
+
{ name: "--wzl-swatch-red", type: "color", group: "swatch", defaultValue: "#f75034", description: "", hook: false },
|
|
28
|
+
{ name: "--wzl-swatch-blue", type: "color", group: "swatch", defaultValue: "#407ef7", description: "", hook: false },
|
|
29
|
+
{ name: "--wzl-swatch-citron", type: "color", group: "swatch", defaultValue: "#d5d23a", description: "", hook: false },
|
|
30
|
+
{ name: "--wzl-swatch-rose", type: "color", group: "swatch", defaultValue: "#fa4590", description: "", hook: false },
|
|
31
|
+
{ name: "--wzl-swatch-violet", type: "color", group: "swatch", defaultValue: "#955cf9", description: "", hook: false },
|
|
32
|
+
{ name: "--wzl-surface", type: "color", group: "surface", defaultValue: "#181a1e", description: "", hook: false },
|
|
33
|
+
{ name: "--wzl-surface-raised", type: "color", group: "surface", defaultValue: "#25272c", description: "", hook: false },
|
|
34
|
+
{ name: "--wzl-surface-sunken", type: "color", group: "surface", defaultValue: "#0e0f12", description: "", hook: false },
|
|
35
|
+
{ name: "--wzl-fg", type: "color", group: "fg", defaultValue: "#e6e7e9", description: "", hook: false },
|
|
36
|
+
{ name: "--wzl-fg-muted", type: "color", group: "fg", defaultValue: "#9ea1a8", description: "", hook: false },
|
|
37
|
+
{ name: "--wzl-fg-subtle", type: "color", group: "fg", defaultValue: "#6f737b", description: "", hook: false },
|
|
38
|
+
{ name: "--wzl-border", type: "color", group: "border", defaultValue: "#25272c", description: "", hook: false },
|
|
39
|
+
{ name: "--wzl-border-strong", type: "color", group: "border", defaultValue: "#6f737b", description: "The line that has to be seen: a control's edge, a raised surface's outline. Clears WCAG 1.4.11's 3:1 against every surface in both modes.", hook: false },
|
|
40
|
+
{ 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.", hook: false },
|
|
41
|
+
{ 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.", hook: false },
|
|
42
|
+
{ 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.", hook: false },
|
|
43
|
+
{ name: "--wzl-danger-base", type: "color", group: "danger", defaultValue: "#d94a3f", description: "", hook: false },
|
|
44
|
+
{ name: "--wzl-warning-base", type: "color", group: "warning", defaultValue: "#d99a3f", description: "", hook: false },
|
|
45
|
+
{ name: "--wzl-success-base", type: "color", group: "success", defaultValue: "#2ec27e", description: "", hook: false },
|
|
46
|
+
{ name: "--wzl-fg-on-accent", type: "color", group: "fg", defaultValue: "#f5f5f6", description: "", hook: false },
|
|
47
|
+
{ name: "--wzl-line-subtle", type: "color", group: "line", defaultValue: "rgba(230, 231, 233, 0.1)", description: "Barely-there separators (table rows).", hook: false },
|
|
48
|
+
{ name: "--wzl-line", type: "color", group: "line", defaultValue: "rgba(230, 231, 233, 0.2)", description: "Primary gridlines on sunken surfaces.", hook: false },
|
|
49
|
+
{ name: "--wzl-line-strong", type: "color", group: "line", defaultValue: "rgba(230, 231, 233, 0.4)", description: "Axes and emphasized dividers.", hook: false },
|
|
50
|
+
{ 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.", hook: false },
|
|
51
|
+
{ name: "--wzl-accent", type: "color", group: "accent", defaultValue: "#2e1f7a", description: "", hook: false },
|
|
52
|
+
{ name: "--wzl-accent-hover", type: "color", group: "accent", defaultValue: "#5841b8", description: "", hook: false },
|
|
53
|
+
{ name: "--wzl-danger", type: "color", group: "danger", defaultValue: "#d94a3f", description: "", hook: false },
|
|
54
|
+
{ name: "--wzl-warning", type: "color", group: "warning", defaultValue: "#d99a3f", description: "", hook: false },
|
|
55
|
+
{ name: "--wzl-success", type: "color", group: "success", defaultValue: "#2ec27e", description: "", hook: false },
|
|
56
|
+
{ name: "--wzl-focus-ring", type: "color", group: "focus", defaultValue: "#5841b8", description: "", hook: false },
|
|
57
|
+
{ 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).", hook: false },
|
|
58
|
+
{ 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 \u2014 do not collapse them.", hook: false },
|
|
59
|
+
{ name: "--wzl-surface-pressed", type: "color", group: "surface", defaultValue: "rgba(230, 231, 233, 0.18)", description: "Pressed wash over a raised surface.", hook: false },
|
|
60
|
+
{ name: "--wzl-radius-sm", type: "dimension", group: "radius", defaultValue: "3px", description: "", hook: false },
|
|
61
|
+
{ name: "--wzl-radius-md", type: "dimension", group: "radius", defaultValue: "5px", description: "", hook: false },
|
|
62
|
+
{ name: "--wzl-radius-lg", type: "dimension", group: "radius", defaultValue: "14px", description: "", hook: false },
|
|
63
|
+
{ name: "--wzl-radius-pill", type: "dimension", group: "radius", defaultValue: "999px", description: "Fully rounded ends \u2014 segmented controls, progress tracks.", hook: false },
|
|
64
|
+
{ name: "--wzl-border-w", type: "dimension", group: "border", defaultValue: "1px", description: "", hook: false },
|
|
65
|
+
{ name: "--wzl-line-width", type: "dimension", group: "line", defaultValue: "2px", description: "Structural lines \u2014 gridlines, dividers, axes.", hook: false },
|
|
66
|
+
{ name: "--wzl-curve-width", type: "dimension", group: "curve", defaultValue: "3px", description: "Drawn data curves. Heavier than structural lines so data reads as primary content.", hook: false },
|
|
67
|
+
{ 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.", hook: false },
|
|
68
|
+
{ 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.", hook: false },
|
|
69
|
+
{ name: "--wzl-slider-track-h", type: "dimension", group: "slider", defaultValue: "4px", description: "Height of a linear range track. The kit's single-thumb ranges all wear this; Slider's default 24px canvas track does not.", hook: false },
|
|
70
|
+
{ name: "--wzl-slider-thumb-size", type: "dimension", group: "slider", defaultValue: "8px", description: "Diameter of a linear range thumb.", hook: false },
|
|
71
|
+
{ name: "--wzl-slider-track-mix", type: "dimension", group: "slider", defaultValue: "18%", description: "Accent proportion in a range track, as a color-mix percentage \u2014 not a color. Mixed into a real property, never into another custom property.", hook: false },
|
|
72
|
+
{ name: "--wzl-slider-thumb-mix", type: "dimension", group: "slider", defaultValue: "70%", description: "Accent proportion in a range thumb, as a color-mix percentage \u2014 not a color.", hook: false },
|
|
73
|
+
{ name: "--wzl-handle-size", type: "dimension", group: "handle", defaultValue: "9px", description: "Edge of a draggable handle on a plot or timeline \u2014 a keyframe diamond, a timeline key, an event mark. The default rank; -sm and -lg are the two deliberate departures from it.", hook: false },
|
|
74
|
+
{ name: "--wzl-handle-size-sm", type: "dimension", group: "handle", defaultValue: "7px", description: "A handle that is drawn but not draggable \u2014 a locked or pinned point. Smaller so it reads as inert next to a live one.", hook: false },
|
|
75
|
+
{ name: "--wzl-handle-size-lg", type: "dimension", group: "handle", defaultValue: "10px", description: "A handle that is a category of its own rather than one of a row \u2014 a curve's endpoint. Larger so it separates from the handles it sits in line with.", hook: false },
|
|
76
|
+
{ name: "--wzl-field-pad-x", type: "dimension", group: "field", defaultValue: "8px", description: "Horizontal padding inside a boxed field. Pairs with --wzl-field-h, which is a container override and has no :root default.", hook: false },
|
|
77
|
+
{ name: "--wzl-glass-blur", type: "dimension", group: "glass", defaultValue: "3px", description: "Backdrop blur radius for frosted surfaces. Pairs with glass-tint.", hook: false },
|
|
78
|
+
{ name: "--wzl-font-size-2xs", type: "dimension", group: "font", defaultValue: "9px", description: "Shortcut keys and index badges. The floor for chrome text.", hook: false },
|
|
79
|
+
{ name: "--wzl-font-size-xs", type: "dimension", group: "font", defaultValue: "10px", description: "Tool-button labels under an icon.", hook: false },
|
|
80
|
+
{ name: "--wzl-font-size-sm", type: "dimension", group: "font", defaultValue: "11px", description: "Chrome labels, status readouts, section headings.", hook: false },
|
|
81
|
+
{ name: "--wzl-font-size", type: "dimension", group: "font", defaultValue: "13px", description: "Controls and body text.", hook: false },
|
|
82
|
+
{ name: "--wzl-font-size-lg", type: "dimension", group: "font", defaultValue: "16px", description: "Panel and dialog titles.", hook: false },
|
|
83
|
+
{ name: "--wzl-font-size-xl", type: "dimension", group: "font", defaultValue: "20px", description: "The largest chrome text \u2014 a lab or app title.", hook: false },
|
|
84
|
+
{ name: "--wzl-space-xs", type: "dimension", group: "space", defaultValue: "4px", description: "", hook: false },
|
|
85
|
+
{ name: "--wzl-space-sm", type: "dimension", group: "space", defaultValue: "8px", description: "", hook: false },
|
|
86
|
+
{ name: "--wzl-space-md", type: "dimension", group: "space", defaultValue: "12px", description: "", hook: false },
|
|
87
|
+
{ name: "--wzl-space-lg", type: "dimension", group: "space", defaultValue: "16px", description: "", hook: false },
|
|
88
|
+
{ name: "--wzl-tracking-none", type: "dimension", group: "tracking", defaultValue: "0", description: "", hook: false },
|
|
89
|
+
{ name: "--wzl-tracking-wide", type: "dimension", group: "tracking", defaultValue: "0.06em", description: "Uppercase section headings.", hook: false },
|
|
90
|
+
{ name: "--wzl-tracking-wider", type: "dimension", group: "tracking", defaultValue: "0.08em", description: "Uppercase at 11px and below.", hook: false },
|
|
91
|
+
{ name: "--wzl-z-toolbar", type: "number", group: "z", defaultValue: "10", description: "", hook: false },
|
|
92
|
+
{ name: "--wzl-z-overlay", type: "number", group: "z", defaultValue: "20", description: "", hook: false },
|
|
93
|
+
{ name: "--wzl-z-modal", type: "number", group: "z", defaultValue: "30", description: "", hook: false },
|
|
94
|
+
{ name: "--wzl-leading-tight", type: "number", group: "leading", defaultValue: "1", description: "Single-line controls; the box sets the height.", hook: false },
|
|
95
|
+
{ name: "--wzl-leading-snug", type: "number", group: "leading", defaultValue: "1.2", description: "Headings and two-line labels.", hook: false },
|
|
96
|
+
{ name: "--wzl-leading", type: "number", group: "leading", defaultValue: "1.4", description: "Body and anything that wraps.", hook: false },
|
|
97
|
+
{ 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.", hook: false },
|
|
98
|
+
{ name: "--wzl-motion-fast", type: "duration", group: "motion", defaultValue: "120ms", description: "Micro-interactions \u2014 hover, focus, pressed.", hook: false },
|
|
99
|
+
{ name: "--wzl-motion-medium", type: "duration", group: "motion", defaultValue: "240ms", description: "Entrances and exits \u2014 toasts, popovers, panels.", hook: false },
|
|
100
|
+
{ name: "--wzl-ease-in-cubic", type: "cubicBezier", group: "ease", defaultValue: "cubic-bezier(0.32, 0, 0.67, 0)", description: "", hook: false },
|
|
101
|
+
{ name: "--wzl-ease-out-cubic", type: "cubicBezier", group: "ease", defaultValue: "cubic-bezier(0.33, 1, 0.68, 1)", description: "", hook: false },
|
|
102
|
+
{ name: "--wzl-ease-in-out-cubic", type: "cubicBezier", group: "ease", defaultValue: "cubic-bezier(0.65, 0, 0.35, 1)", description: "", hook: false },
|
|
103
|
+
{ name: "--wzl-ease-out-back", type: "cubicBezier", group: "ease", defaultValue: "cubic-bezier(0.34, 1.56, 0.64, 1)", description: "", hook: false },
|
|
104
|
+
{ 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.", hook: false },
|
|
105
|
+
{ name: "--wzl-font-display", type: "fontFamily", group: "font", defaultValue: "Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif", description: "", hook: false },
|
|
106
|
+
{ name: "--wzl-font-body", type: "fontFamily", group: "font", defaultValue: "Inter, system-ui, -apple-system, 'Segoe UI', sans-serif", description: "", hook: false },
|
|
107
|
+
{ name: "--wzl-font-mono", type: "fontFamily", group: "font", defaultValue: "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace", description: "", hook: false },
|
|
108
|
+
{ name: "--wzl-font-weight-light", type: "fontWeight", group: "font", defaultValue: "200", description: "", hook: false },
|
|
109
|
+
{ name: "--wzl-font-weight-normal", type: "fontWeight", group: "font", defaultValue: "300", description: "", hook: false },
|
|
110
|
+
{ name: "--wzl-font-weight-medium", type: "fontWeight", group: "font", defaultValue: "350", description: "", hook: false },
|
|
111
|
+
{ name: "--wzl-font-weight-bold", type: "fontWeight", group: "font", defaultValue: "400", description: "", hook: false },
|
|
112
|
+
{ name: "--wzl-disclosure-gap", type: "dimension", group: "disclosure", defaultValue: "4px", description: "Gap between a Disclosure\u2019s twisty and its label.", hook: true },
|
|
113
|
+
{ name: "--wzl-disclosure-target", type: "dimension", group: "disclosure", defaultValue: "20px", description: "Hit-target square of a Disclosure twisty, and of a labkit LayerList row\u2019s.", hook: true },
|
|
114
|
+
{ name: "--wzl-number-field-width", type: "dimension", group: "number", defaultValue: "9ch", description: "Width of a NumberField\u2019s input.", hook: true },
|
|
115
|
+
{ name: "--wzl-prefs-column-width", type: "dimension", group: "prefs", defaultValue: "300px", description: "Width of the Prefs category column.", hook: true },
|
|
116
|
+
{ name: "--wzl-prop-number-width", type: "dimension", group: "prop", defaultValue: "9ch", description: "Width of a numeric field in the Properties panel.", hook: true },
|
|
117
|
+
{ name: "--wzl-prop-text-width", type: "dimension", group: "prop", defaultValue: "16ch", description: "Width of a text field in the Properties panel.", hook: true },
|
|
118
|
+
{ name: "--wzl-property-readout-w", type: "dimension", group: "property", defaultValue: "2.8em", description: "Minimum width of a Properties row\u2019s value readout.", hook: true },
|
|
119
|
+
{ name: "--wzl-swatch-size", type: "dimension", group: "swatch", defaultValue: "28px", description: "Minimum cell of a swatch grid \u2014 PatternPicker, and any panel laying swatches out the same way.", hook: true },
|
|
120
|
+
{ name: "--wzl-timeline-label-w", type: "dimension", group: "timeline", defaultValue: "120px", description: "Width of the Timeline\u2019s track-label gutter.", hook: true },
|
|
121
|
+
{ name: "--wzl-timeline-value-axis-w", type: "dimension", group: "timeline", defaultValue: "32px", description: "Width reserved for the Timeline\u2019s value axis.", hook: true }
|
|
106
122
|
];
|
|
107
123
|
|
|
108
|
-
// src/
|
|
109
|
-
var
|
|
124
|
+
// src/tokenPx.ts
|
|
125
|
+
var DEFAULTS = new Map(TOKEN_MANIFEST.map((t) => [t.name, t.defaultValue]));
|
|
126
|
+
function tokenPx(name, resolved) {
|
|
127
|
+
const raw = resolved?.[name] ?? DEFAULTS.get(name);
|
|
128
|
+
const m = /^(-?\d*\.?\d+)px$/.exec((raw ?? "").trim());
|
|
129
|
+
if (!m) throw new Error(`tokenPx: ${name} is not a px length (${raw ?? "unknown token"})`);
|
|
130
|
+
return Number(m[1]);
|
|
131
|
+
}
|
|
110
132
|
|
|
111
133
|
// src/dtcg/flatten.ts
|
|
112
134
|
var isToken = (v) => typeof v === "object" && v !== null && "$value" in v;
|
|
@@ -145,20 +167,25 @@ function loadDTCG(doc) {
|
|
|
145
167
|
if (typeof doc.name !== "string" || doc.name === "") {
|
|
146
168
|
throw new Error('DTCG document needs a string "name"');
|
|
147
169
|
}
|
|
148
|
-
const modes = {};
|
|
149
|
-
for (const [mode, body] of Object.entries(doc.modes ?? {})) {
|
|
150
|
-
modes[mode] = flattenTokens(body);
|
|
151
|
-
}
|
|
152
170
|
const base = doc.extends === void 0 ? weaselTheme : doc.extends;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
171
|
+
const primitives = flattenTokens(doc.primitives ?? {});
|
|
172
|
+
const modeNames = Object.keys(doc.modes ?? {});
|
|
173
|
+
const modes = Object.fromEntries(modeNames.map((m) => [m, flattenTokens(doc.modes[m])]));
|
|
174
|
+
const tokens = { ...primitives };
|
|
175
|
+
for (const name of new Set(modeNames.flatMap((m) => Object.keys(modes[m])))) {
|
|
176
|
+
const branch = { by: "mode" };
|
|
177
|
+
for (const m of modeNames) {
|
|
178
|
+
const t = modes[m][name] ?? primitives[name];
|
|
179
|
+
if (t) branch[m] = t;
|
|
180
|
+
}
|
|
181
|
+
tokens[name] = branch;
|
|
182
|
+
}
|
|
183
|
+
const inherited = base ? themeAxes(base).mode?.default : void 0;
|
|
184
|
+
const defaultMode = typeof doc.defaultMode === "string" ? doc.defaultMode : inherited ?? "dark";
|
|
185
|
+
const axes = modeNames.length > 0 ? { mode: { default: defaultMode, values: Object.fromEntries(modeNames.map((m) => [m, {}])) } } : {};
|
|
186
|
+
return { name: doc.name, extends: base, axes, tokens };
|
|
160
187
|
}
|
|
161
188
|
|
|
162
|
-
export { TOKEN_MANIFEST, loadDTCG };
|
|
189
|
+
export { TOKEN_MANIFEST, loadDTCG, tokenPx };
|
|
163
190
|
//# sourceMappingURL=index.js.map
|
|
164
191
|
//# sourceMappingURL=index.js.map
|
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-fuchsia', type: \"color\", group: \"swatch\", defaultValue: \"#f641f7\", description: \"First of ten categorical spot colors for plotting, status and data viz. Take them in sequence: the order is farthest-point over hue, so the first N are as separated as N colors can be (first three 87° apart, all ten 32°). Mode-invariant on purpose — a series keeps its color when the mode flips, which is why they are tuned for a dark surface and clear only 1.5:1 on a light one.\" },\n { name: '--wzl-swatch-green', type: \"color\", group: \"swatch\", defaultValue: \"#48e628\", description: \"\" },\n { name: '--wzl-swatch-sky', type: \"color\", group: \"swatch\", defaultValue: \"#36bff2\", description: \"\" },\n { name: '--wzl-swatch-amber', type: \"color\", group: \"swatch\", defaultValue: \"#e69628\", description: \"\" },\n { name: '--wzl-swatch-teal', type: \"color\", group: \"swatch\", defaultValue: \"#3ee1cb\", description: \"\" },\n { name: '--wzl-swatch-red', type: \"color\", group: \"swatch\", defaultValue: \"#f75034\", description: \"\" },\n { name: '--wzl-swatch-blue', type: \"color\", group: \"swatch\", defaultValue: \"#407ef7\", description: \"\" },\n { name: '--wzl-swatch-citron', type: \"color\", group: \"swatch\", defaultValue: \"#d5d23a\", description: \"\" },\n { name: '--wzl-swatch-rose', type: \"color\", group: \"swatch\", defaultValue: \"#fa4590\", description: \"\" },\n { name: '--wzl-swatch-violet', type: \"color\", group: \"swatch\", defaultValue: \"#955cf9\", 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-slider-track-h', type: \"dimension\", group: \"slider\", defaultValue: \"4px\", description: \"Height of a linear range track. The kit's single-thumb ranges all wear this; Slider's default 24px canvas track does not.\" },\n { name: '--wzl-slider-thumb-size', type: \"dimension\", group: \"slider\", defaultValue: \"8px\", description: \"Diameter of a linear range thumb.\" },\n { name: '--wzl-slider-track-mix', type: \"dimension\", group: \"slider\", defaultValue: \"18%\", description: \"Accent proportion in a range track, as a color-mix percentage — not a color. Mixed into a real property, never into another custom property.\" },\n { name: '--wzl-slider-thumb-mix', type: \"dimension\", group: \"slider\", defaultValue: \"70%\", description: \"Accent proportion in a range thumb, as a color-mix percentage — not a color.\" },\n { name: '--wzl-field-pad-x', type: \"dimension\", group: \"field\", defaultValue: \"8px\", description: \"Horizontal padding inside a boxed field. Pairs with --wzl-field-h, which is a container override and has no :root default.\" },\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: \"#6f737b\", description: \"The line that has to be seen: a control's edge, a raised surface's outline. Clears WCAG 1.4.11's 3:1 against every surface in both modes.\" },\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];\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/tokenPx.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 selection, and\n * the 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 /** A consumer override hook rather than a theme token: no theme declares\n * it, kit CSS reads it with `defaultValue` as the fallback, and setting\n * it on any container is what changes it. */\n readonly hook: boolean;\n}\n\n/** Every token of the default theme at its default selection, plus every\n * consumer override hook, described. Meant for tooling that presents the\n * token set — docs pages, token browsers, forge's CSS-vars panel — not\n * for resolving values at runtime. */\nexport const TOKEN_MANIFEST: readonly TokenManifestEntry[] = [\n { name: '--wzl-gray-50', type: \"color\", group: \"gray\", defaultValue: \"#f5f5f6\", description: \"\", hook: false },\n { name: '--wzl-gray-100', type: \"color\", group: \"gray\", defaultValue: \"#e6e7e9\", description: \"\", hook: false },\n { name: '--wzl-gray-200', type: \"color\", group: \"gray\", defaultValue: \"#c9cbcf\", description: \"\", hook: false },\n { name: '--wzl-gray-300', type: \"color\", group: \"gray\", defaultValue: \"#9ea1a8\", description: \"\", hook: false },\n { name: '--wzl-gray-400', type: \"color\", group: \"gray\", defaultValue: \"#6f737b\", description: \"\", hook: false },\n { name: '--wzl-gray-500', type: \"color\", group: \"gray\", defaultValue: \"#4d5058\", description: \"\", hook: false },\n { name: '--wzl-gray-600', type: \"color\", group: \"gray\", defaultValue: \"#383b42\", description: \"\", hook: false },\n { name: '--wzl-gray-700', type: \"color\", group: \"gray\", defaultValue: \"#25272c\", description: \"\", hook: false },\n { name: '--wzl-gray-800', type: \"color\", group: \"gray\", defaultValue: \"#181a1e\", description: \"\", hook: false },\n { name: '--wzl-gray-900', type: \"color\", group: \"gray\", defaultValue: \"#0e0f12\", description: \"\", hook: false },\n { name: '--wzl-accent-soft', type: \"color\", group: \"accent\", defaultValue: \"#1d1454\", description: \"\", hook: false },\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.\", hook: false },\n { name: '--wzl-accent-strong', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"\", hook: false },\n { name: '--wzl-swatch-fuchsia', type: \"color\", group: \"swatch\", defaultValue: \"#f641f7\", description: \"First of ten categorical spot colors for plotting, status and data viz. Take them in sequence: the order is farthest-point over hue, so the first N are as separated as N colors can be (first three 87° apart, all ten 32°). Mode-invariant on purpose — a series keeps its color when the mode flips, which is why they are tuned for a dark surface and clear only 1.5:1 on a light one.\", hook: false },\n { name: '--wzl-swatch-green', type: \"color\", group: \"swatch\", defaultValue: \"#48e628\", description: \"\", hook: false },\n { name: '--wzl-swatch-sky', type: \"color\", group: \"swatch\", defaultValue: \"#36bff2\", description: \"\", hook: false },\n { name: '--wzl-swatch-amber', type: \"color\", group: \"swatch\", defaultValue: \"#e69628\", description: \"\", hook: false },\n { name: '--wzl-swatch-teal', type: \"color\", group: \"swatch\", defaultValue: \"#3ee1cb\", description: \"\", hook: false },\n { name: '--wzl-swatch-red', type: \"color\", group: \"swatch\", defaultValue: \"#f75034\", description: \"\", hook: false },\n { name: '--wzl-swatch-blue', type: \"color\", group: \"swatch\", defaultValue: \"#407ef7\", description: \"\", hook: false },\n { name: '--wzl-swatch-citron', type: \"color\", group: \"swatch\", defaultValue: \"#d5d23a\", description: \"\", hook: false },\n { name: '--wzl-swatch-rose', type: \"color\", group: \"swatch\", defaultValue: \"#fa4590\", description: \"\", hook: false },\n { name: '--wzl-swatch-violet', type: \"color\", group: \"swatch\", defaultValue: \"#955cf9\", description: \"\", hook: false },\n { name: '--wzl-surface', type: \"color\", group: \"surface\", defaultValue: \"#181a1e\", description: \"\", hook: false },\n { name: '--wzl-surface-raised', type: \"color\", group: \"surface\", defaultValue: \"#25272c\", description: \"\", hook: false },\n { name: '--wzl-surface-sunken', type: \"color\", group: \"surface\", defaultValue: \"#0e0f12\", description: \"\", hook: false },\n { name: '--wzl-fg', type: \"color\", group: \"fg\", defaultValue: \"#e6e7e9\", description: \"\", hook: false },\n { name: '--wzl-fg-muted', type: \"color\", group: \"fg\", defaultValue: \"#9ea1a8\", description: \"\", hook: false },\n { name: '--wzl-fg-subtle', type: \"color\", group: \"fg\", defaultValue: \"#6f737b\", description: \"\", hook: false },\n { name: '--wzl-border', type: \"color\", group: \"border\", defaultValue: \"#25272c\", description: \"\", hook: false },\n { name: '--wzl-border-strong', type: \"color\", group: \"border\", defaultValue: \"#6f737b\", description: \"The line that has to be seen: a control's edge, a raised surface's outline. Clears WCAG 1.4.11's 3:1 against every surface in both modes.\", hook: false },\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.\", hook: false },\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.\", hook: false },\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.\", hook: false },\n { name: '--wzl-danger-base', type: \"color\", group: \"danger\", defaultValue: \"#d94a3f\", description: \"\", hook: false },\n { name: '--wzl-warning-base', type: \"color\", group: \"warning\", defaultValue: \"#d99a3f\", description: \"\", hook: false },\n { name: '--wzl-success-base', type: \"color\", group: \"success\", defaultValue: \"#2ec27e\", description: \"\", hook: false },\n { name: '--wzl-fg-on-accent', type: \"color\", group: \"fg\", defaultValue: \"#f5f5f6\", description: \"\", hook: false },\n { name: '--wzl-line-subtle', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"Barely-there separators (table rows).\", hook: false },\n { name: '--wzl-line', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.2)\", description: \"Primary gridlines on sunken surfaces.\", hook: false },\n { name: '--wzl-line-strong', type: \"color\", group: \"line\", defaultValue: \"rgba(230, 231, 233, 0.4)\", description: \"Axes and emphasized dividers.\", hook: false },\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.\", hook: false },\n { name: '--wzl-accent', type: \"color\", group: \"accent\", defaultValue: \"#2e1f7a\", description: \"\", hook: false },\n { name: '--wzl-accent-hover', type: \"color\", group: \"accent\", defaultValue: \"#5841b8\", description: \"\", hook: false },\n { name: '--wzl-danger', type: \"color\", group: \"danger\", defaultValue: \"#d94a3f\", description: \"\", hook: false },\n { name: '--wzl-warning', type: \"color\", group: \"warning\", defaultValue: \"#d99a3f\", description: \"\", hook: false },\n { name: '--wzl-success', type: \"color\", group: \"success\", defaultValue: \"#2ec27e\", description: \"\", hook: false },\n { name: '--wzl-focus-ring', type: \"color\", group: \"focus\", defaultValue: \"#5841b8\", description: \"\", hook: false },\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).\", hook: false },\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.\", hook: false },\n { name: '--wzl-surface-pressed', type: \"color\", group: \"surface\", defaultValue: \"rgba(230, 231, 233, 0.18)\", description: \"Pressed wash over a raised surface.\", hook: false },\n { name: '--wzl-radius-sm', type: \"dimension\", group: \"radius\", defaultValue: \"3px\", description: \"\", hook: false },\n { name: '--wzl-radius-md', type: \"dimension\", group: \"radius\", defaultValue: \"5px\", description: \"\", hook: false },\n { name: '--wzl-radius-lg', type: \"dimension\", group: \"radius\", defaultValue: \"14px\", description: \"\", hook: false },\n { name: '--wzl-radius-pill', type: \"dimension\", group: \"radius\", defaultValue: \"999px\", description: \"Fully rounded ends — segmented controls, progress tracks.\", hook: false },\n { name: '--wzl-border-w', type: \"dimension\", group: \"border\", defaultValue: \"1px\", description: \"\", hook: false },\n { name: '--wzl-line-width', type: \"dimension\", group: \"line\", defaultValue: \"2px\", description: \"Structural lines — gridlines, dividers, axes.\", hook: false },\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.\", hook: false },\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.\", hook: false },\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.\", hook: false },\n { name: '--wzl-slider-track-h', type: \"dimension\", group: \"slider\", defaultValue: \"4px\", description: \"Height of a linear range track. The kit's single-thumb ranges all wear this; Slider's default 24px canvas track does not.\", hook: false },\n { name: '--wzl-slider-thumb-size', type: \"dimension\", group: \"slider\", defaultValue: \"8px\", description: \"Diameter of a linear range thumb.\", hook: false },\n { name: '--wzl-slider-track-mix', type: \"dimension\", group: \"slider\", defaultValue: \"18%\", description: \"Accent proportion in a range track, as a color-mix percentage — not a color. Mixed into a real property, never into another custom property.\", hook: false },\n { name: '--wzl-slider-thumb-mix', type: \"dimension\", group: \"slider\", defaultValue: \"70%\", description: \"Accent proportion in a range thumb, as a color-mix percentage — not a color.\", hook: false },\n { name: '--wzl-handle-size', type: \"dimension\", group: \"handle\", defaultValue: \"9px\", description: \"Edge of a draggable handle on a plot or timeline — a keyframe diamond, a timeline key, an event mark. The default rank; -sm and -lg are the two deliberate departures from it.\", hook: false },\n { name: '--wzl-handle-size-sm', type: \"dimension\", group: \"handle\", defaultValue: \"7px\", description: \"A handle that is drawn but not draggable — a locked or pinned point. Smaller so it reads as inert next to a live one.\", hook: false },\n { name: '--wzl-handle-size-lg', type: \"dimension\", group: \"handle\", defaultValue: \"10px\", description: \"A handle that is a category of its own rather than one of a row — a curve's endpoint. Larger so it separates from the handles it sits in line with.\", hook: false },\n { name: '--wzl-field-pad-x', type: \"dimension\", group: \"field\", defaultValue: \"8px\", description: \"Horizontal padding inside a boxed field. Pairs with --wzl-field-h, which is a container override and has no :root default.\", hook: false },\n { name: '--wzl-glass-blur', type: \"dimension\", group: \"glass\", defaultValue: \"3px\", description: \"Backdrop blur radius for frosted surfaces. Pairs with glass-tint.\", hook: false },\n { name: '--wzl-font-size-2xs', type: \"dimension\", group: \"font\", defaultValue: \"9px\", description: \"Shortcut keys and index badges. The floor for chrome text.\", hook: false },\n { name: '--wzl-font-size-xs', type: \"dimension\", group: \"font\", defaultValue: \"10px\", description: \"Tool-button labels under an icon.\", hook: false },\n { name: '--wzl-font-size-sm', type: \"dimension\", group: \"font\", defaultValue: \"11px\", description: \"Chrome labels, status readouts, section headings.\", hook: false },\n { name: '--wzl-font-size', type: \"dimension\", group: \"font\", defaultValue: \"13px\", description: \"Controls and body text.\", hook: false },\n { name: '--wzl-font-size-lg', type: \"dimension\", group: \"font\", defaultValue: \"16px\", description: \"Panel and dialog titles.\", hook: false },\n { name: '--wzl-font-size-xl', type: \"dimension\", group: \"font\", defaultValue: \"20px\", description: \"The largest chrome text — a lab or app title.\", hook: false },\n { name: '--wzl-space-xs', type: \"dimension\", group: \"space\", defaultValue: \"4px\", description: \"\", hook: false },\n { name: '--wzl-space-sm', type: \"dimension\", group: \"space\", defaultValue: \"8px\", description: \"\", hook: false },\n { name: '--wzl-space-md', type: \"dimension\", group: \"space\", defaultValue: \"12px\", description: \"\", hook: false },\n { name: '--wzl-space-lg', type: \"dimension\", group: \"space\", defaultValue: \"16px\", description: \"\", hook: false },\n { name: '--wzl-tracking-none', type: \"dimension\", group: \"tracking\", defaultValue: \"0\", description: \"\", hook: false },\n { name: '--wzl-tracking-wide', type: \"dimension\", group: \"tracking\", defaultValue: \"0.06em\", description: \"Uppercase section headings.\", hook: false },\n { name: '--wzl-tracking-wider', type: \"dimension\", group: \"tracking\", defaultValue: \"0.08em\", description: \"Uppercase at 11px and below.\", hook: false },\n { name: '--wzl-z-toolbar', type: \"number\", group: \"z\", defaultValue: \"10\", description: \"\", hook: false },\n { name: '--wzl-z-overlay', type: \"number\", group: \"z\", defaultValue: \"20\", description: \"\", hook: false },\n { name: '--wzl-z-modal', type: \"number\", group: \"z\", defaultValue: \"30\", description: \"\", hook: false },\n { name: '--wzl-leading-tight', type: \"number\", group: \"leading\", defaultValue: \"1\", description: \"Single-line controls; the box sets the height.\", hook: false },\n { name: '--wzl-leading-snug', type: \"number\", group: \"leading\", defaultValue: \"1.2\", description: \"Headings and two-line labels.\", hook: false },\n { name: '--wzl-leading', type: \"number\", group: \"leading\", defaultValue: \"1.4\", description: \"Body and anything that wraps.\", hook: false },\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.\", hook: false },\n { name: '--wzl-motion-fast', type: \"duration\", group: \"motion\", defaultValue: \"120ms\", description: \"Micro-interactions — hover, focus, pressed.\", hook: false },\n { name: '--wzl-motion-medium', type: \"duration\", group: \"motion\", defaultValue: \"240ms\", description: \"Entrances and exits — toasts, popovers, panels.\", hook: false },\n { name: '--wzl-ease-in-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.32, 0, 0.67, 0)\", description: \"\", hook: false },\n { name: '--wzl-ease-out-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.33, 1, 0.68, 1)\", description: \"\", hook: false },\n { name: '--wzl-ease-in-out-cubic', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.65, 0, 0.35, 1)\", description: \"\", hook: false },\n { name: '--wzl-ease-out-back', type: \"cubicBezier\", group: \"ease\", defaultValue: \"cubic-bezier(0.34, 1.56, 0.64, 1)\", description: \"\", hook: false },\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.\", hook: false },\n { name: '--wzl-font-display', type: \"fontFamily\", group: \"font\", defaultValue: \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\", description: \"\", hook: false },\n { name: '--wzl-font-body', type: \"fontFamily\", group: \"font\", defaultValue: \"Inter, system-ui, -apple-system, 'Segoe UI', sans-serif\", description: \"\", hook: false },\n { name: '--wzl-font-mono', type: \"fontFamily\", group: \"font\", defaultValue: \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\", description: \"\", hook: false },\n { name: '--wzl-font-weight-light', type: \"fontWeight\", group: \"font\", defaultValue: \"200\", description: \"\", hook: false },\n { name: '--wzl-font-weight-normal', type: \"fontWeight\", group: \"font\", defaultValue: \"300\", description: \"\", hook: false },\n { name: '--wzl-font-weight-medium', type: \"fontWeight\", group: \"font\", defaultValue: \"350\", description: \"\", hook: false },\n { name: '--wzl-font-weight-bold', type: \"fontWeight\", group: \"font\", defaultValue: \"400\", description: \"\", hook: false },\n { name: '--wzl-disclosure-gap', type: \"dimension\", group: \"disclosure\", defaultValue: \"4px\", description: \"Gap between a Disclosure’s twisty and its label.\", hook: true },\n { name: '--wzl-disclosure-target', type: \"dimension\", group: \"disclosure\", defaultValue: \"20px\", description: \"Hit-target square of a Disclosure twisty, and of a labkit LayerList row’s.\", hook: true },\n { name: '--wzl-number-field-width', type: \"dimension\", group: \"number\", defaultValue: \"9ch\", description: \"Width of a NumberField’s input.\", hook: true },\n { name: '--wzl-prefs-column-width', type: \"dimension\", group: \"prefs\", defaultValue: \"300px\", description: \"Width of the Prefs category column.\", hook: true },\n { name: '--wzl-prop-number-width', type: \"dimension\", group: \"prop\", defaultValue: \"9ch\", description: \"Width of a numeric field in the Properties panel.\", hook: true },\n { name: '--wzl-prop-text-width', type: \"dimension\", group: \"prop\", defaultValue: \"16ch\", description: \"Width of a text field in the Properties panel.\", hook: true },\n { name: '--wzl-property-readout-w', type: \"dimension\", group: \"property\", defaultValue: \"2.8em\", description: \"Minimum width of a Properties row’s value readout.\", hook: true },\n { name: '--wzl-swatch-size', type: \"dimension\", group: \"swatch\", defaultValue: \"28px\", description: \"Minimum cell of a swatch grid — PatternPicker, and any panel laying swatches out the same way.\", hook: true },\n { name: '--wzl-timeline-label-w', type: \"dimension\", group: \"timeline\", defaultValue: \"120px\", description: \"Width of the Timeline’s track-label gutter.\", hook: true },\n { name: '--wzl-timeline-value-axis-w', type: \"dimension\", group: \"timeline\", defaultValue: \"32px\", description: \"Width reserved for the Timeline’s value axis.\", hook: true },\n];\n","import { TOKEN_MANIFEST } from './generated/manifest';\nimport type { ResolvedTheme } from './resolveTheme';\nimport type { TokenName } from './generated/themes';\n\nconst DEFAULTS = new Map<string, string>(TOKEN_MANIFEST.map((t) => [t.name, t.defaultValue]));\n\n/**\n * A px-valued token as a number, for code that draws rather than styles —\n * SVG geometry attributes, canvas, WebGL. Pass `resolved` (from\n * `useTheme().resolved`) where a live theme override must reach the drawing;\n * without it the built-in theme's value is used, which is static and costs no\n * style resolution.\n *\n * Throws rather than guessing: a token that is not a plain px length has no\n * number, and silently returning 0 collapses whatever it sized.\n */\nexport function tokenPx(name: TokenName, resolved?: ResolvedTheme): number {\n const raw = resolved?.[name] ?? DEFAULTS.get(name);\n const m = /^(-?\\d*\\.?\\d+)px$/.exec((raw ?? '').trim());\n if (!m) throw new Error(`tokenPx: ${name} is not a px length (${raw ?? 'unknown token'})`);\n return Number(m[1]);\n}\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 type { AxisDefs, Varying } from './axes';\nimport { flattenTokens } from './dtcg/flatten';\nimport type { RawToken } from './dtcg/types';\nimport { themeAxes } from './resolveTheme';\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. A token a mode leaves\n * out takes the document's primitive of the same name, or else the base theme's.\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 base = doc.extends === undefined ? weaselTheme : doc.extends;\n const primitives = flattenTokens(doc.primitives ?? {});\n const modeNames = Object.keys(doc.modes ?? {});\n const modes = Object.fromEntries(modeNames.map((m) => [m, flattenTokens(doc.modes![m])]));\n\n const tokens: Record<string, Varying<RawToken>> = { ...primitives };\n for (const name of new Set(modeNames.flatMap((m) => Object.keys(modes[m])))) {\n const branch: Record<string, unknown> = { by: 'mode' };\n for (const m of modeNames) {\n const t = modes[m][name] ?? primitives[name];\n if (t) branch[m] = t;\n }\n tokens[name] = branch as Varying<RawToken>;\n }\n\n const inherited = base ? themeAxes(base).mode?.default : undefined;\n const defaultMode = typeof doc.defaultMode === 'string' ? doc.defaultMode : (inherited ?? 'dark');\n const axes: AxisDefs =\n modeNames.length > 0\n ? { mode: { default: defaultMode, values: Object.fromEntries(modeNames.map((m) => [m, {}])) } }\n : {};\n return { name: doc.name, extends: base, axes, tokens };\n}\n"]}
|