@weasel-js/theme 1.14.2 → 1.15.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/dist/{chunk-F5ODXRE3.js → chunk-4PFMGV3U.js} +3 -3
- package/dist/{chunk-F5ODXRE3.js.map → chunk-4PFMGV3U.js.map} +1 -1
- package/dist/{chunk-S7MJPFDP.js → chunk-UKUFGM6D.js} +6 -6
- package/dist/chunk-UKUFGM6D.js.map +1 -0
- package/dist/{chunk-PYRAKINY.js → chunk-Y4COX5NW.js} +3 -3
- package/dist/{chunk-PYRAKINY.js.map → chunk-Y4COX5NW.js.map} +1 -1
- package/dist/engine.js +3 -3
- package/dist/engine.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/prefs.js +1 -1
- package/dist/react.js +3 -3
- package/package.json +4 -4
- package/dist/chunk-S7MJPFDP.js.map +0 -1
|
@@ -202,7 +202,7 @@ var TOKEN_MANIFEST = [
|
|
|
202
202
|
{ name: "--wzl-disclosure-gap", type: "dimension", group: "disclosure", defaultValue: "4px", description: "Gap between a Disclosure\u2019s twisty and its label.", hook: true },
|
|
203
203
|
{ name: "--wzl-disclosure-target", type: "dimension", group: "disclosure", defaultValue: "20px", description: "Hit-target square of a Disclosure twisty, and the twisty column of a LayerList row.", hook: true },
|
|
204
204
|
{ name: "--wzl-entered-group", type: "color", group: "entered", defaultValue: "#a48bd4", description: "Color of the dashed frame a canvas draws around the group it is working inside. Read off the canvas element, so it can be set on it or anything above it.", hook: true },
|
|
205
|
-
{ name: "--wzl-field-border", type: "border", group: "field", defaultValue: "1px solid var(--wzl-border)", description: "Border of a field\u2019s frame. A theme whose --wzl-bevel-sunken draws the edge sets it to a border of no width.", hook: true },
|
|
205
|
+
{ name: "--wzl-field-border", type: "border", group: "field", defaultValue: "1px solid color-mix(in srgb, var(--wzl-border), var(--wzl-border-strong) 30%)", description: "Border of a field\u2019s frame. A theme whose --wzl-bevel-sunken draws the edge sets it to a border of no width.", hook: true },
|
|
206
206
|
{ name: "--wzl-field-focus-shadow", type: "shadow", group: "field", defaultValue: "0 0 0 1px var(--wzl-focus-ring)", description: "Box shadow of a field\u2019s frame while it holds focus. It replaces --wzl-bevel-sunken there, so a beveled theme restates the bevel in it.", hook: true },
|
|
207
207
|
{ name: "--wzl-field-font-size", type: "dimension", group: "field", defaultValue: "var(--wzl-font-size)", description: "Font size of the text in a field, a select, a radio, a segmented bar or a button. Unset, each takes its own size; a params row sets it to --wzl-params-text-size.", hook: true },
|
|
208
208
|
{ name: "--wzl-input-surface", type: "color", group: "input", defaultValue: "var(--wzl-surface-sunken)", description: "Surface a field\u2019s frame sits on \u2014 Input, NumberField, ComboBox, Select, MenuButton, ListEditor and the property rows. Set it on any container whose own background is the default \u2014 a sunken rail or panel \u2014 where an unset field is the same color as what is behind it.", hook: true },
|
|
@@ -247,5 +247,5 @@ var TOKEN_MANIFEST = [
|
|
|
247
247
|
];
|
|
248
248
|
|
|
249
249
|
export { TOKEN_MANIFEST };
|
|
250
|
-
//# sourceMappingURL=chunk-
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
250
|
+
//# sourceMappingURL=chunk-4PFMGV3U.js.map
|
|
251
|
+
//# sourceMappingURL=chunk-4PFMGV3U.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/manifest.ts"],"names":[],"mappings":"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","file":"chunk-F5ODXRE3.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: \"#262a66\", description: \"\", hook: false },\n { name: '--wzl-accent-base', type: \"color\", group: \"accent\", defaultValue: \"#5b63c9\", description: \"Periwinkle. Anchors primary actions on dark surfaces.\", hook: false },\n { name: '--wzl-accent-strong', type: \"color\", group: \"accent\", defaultValue: \"#8c94ee\", description: \"\", hook: false },\n { name: '--wzl-secondary-soft', type: \"color\", group: \"secondary\", defaultValue: \"#704e09\", description: \"\", hook: false },\n { name: '--wzl-secondary-base', type: \"color\", group: \"secondary\", defaultValue: \"#dc9d15\", description: \"\", hook: false },\n { name: '--wzl-secondary-strong', type: \"color\", group: \"secondary\", defaultValue: \"#f1cb8d\", 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-font-size-2xs', type: \"dimension\", group: \"font\", defaultValue: \"10px\", description: \"Shortcut keys and index badges. The floor for chrome text.\", hook: false },\n { name: '--wzl-font-size-xs', type: \"dimension\", group: \"font\", defaultValue: \"12px\", description: \"Tool-button labels under an icon.\", hook: false },\n { name: '--wzl-font-size-sm', type: \"dimension\", group: \"font\", defaultValue: \"13px\", description: \"Chrome labels, status readouts, section headings.\", hook: false },\n { name: '--wzl-font-size-md', type: \"dimension\", group: \"font\", defaultValue: \"15px\", description: \"Controls and body text.\", hook: false },\n { name: '--wzl-font-size-lg', type: \"dimension\", group: \"font\", defaultValue: \"18px\", description: \"Panel and dialog titles.\", hook: false },\n { name: '--wzl-font-size-xl', type: \"dimension\", group: \"font\", defaultValue: \"23px\", description: \"The largest chrome text — a lab or app title.\", hook: false },\n { name: '--wzl-space-1', type: \"dimension\", group: \"space\", defaultValue: \"2px\", description: \"\", hook: false },\n { name: '--wzl-space-2', type: \"dimension\", group: \"space\", defaultValue: \"4px\", description: \"\", hook: false },\n { name: '--wzl-space-3', type: \"dimension\", group: \"space\", defaultValue: \"6px\", description: \"\", hook: false },\n { name: '--wzl-space-4', type: \"dimension\", group: \"space\", defaultValue: \"8px\", description: \"\", hook: false },\n { name: '--wzl-space-5', type: \"dimension\", group: \"space\", defaultValue: \"10px\", description: \"\", hook: false },\n { name: '--wzl-space-6', type: \"dimension\", group: \"space\", defaultValue: \"12px\", description: \"\", hook: false },\n { name: '--wzl-space-7', type: \"dimension\", group: \"space\", defaultValue: \"14px\", description: \"\", hook: false },\n { name: '--wzl-space-8', type: \"dimension\", group: \"space\", defaultValue: \"16px\", 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-popover', type: \"color\", group: \"surface\", defaultValue: \"#25272c\", description: \"Background of a dropdown, menu or other popover list. Follows surface-raised unless a theme needs floating lists to read differently from the panels beneath them.\", 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: \"rgb(from currentColor r g b / 0.7)\", description: \"Secondary text: the text color in effect where it is used, at reduced alpha, so it steps down from whatever text it sits beside on any surface. The alpha is absolute, so muted text nested in muted text stays one step down. Under fg it clears WCAG 4.5:1 on surface, surface-raised, and surface-sunken in both modes.\", hook: false },\n { name: '--wzl-fg-subtle', type: \"color\", group: \"fg\", defaultValue: \"rgb(from currentColor r g b / 0.54)\", description: \"Tertiary text: a further step down from the text color in effect, by the same rule as fg-muted. Under fg it clears WCAG 4.5:1 on surface, surface-raised, and surface-sunken in both modes.\", hook: false },\n { name: '--wzl-fg-muted-on-accent', type: \"color\", group: \"fg\", defaultValue: \"rgb(from currentColor r g b / 0.98)\", description: \"Secondary text on an accent fill. Every rule that sets --wzl-fg-on-accent text redirects --wzl-fg-muted here (npm run check:on-accent), because the general step falls below WCAG 4.5:1 on the accent. In dark mode that leaves almost no step to show.\", hook: false },\n { name: '--wzl-fg-subtle-on-accent', type: \"color\", group: \"fg\", defaultValue: \"rgb(from currentColor r g b / 0.96)\", description: \"Tertiary text on an accent fill, redirected from --wzl-fg-subtle by the same rule as fg-muted-on-accent. Clears WCAG 4.5:1 on the accent in both modes.\", 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: \"#8c94ee\", 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-secondary-fg', type: \"color\", group: \"secondary\", defaultValue: \"#dc9d15\", description: \"Secondary accent for foreground use: a second voice beside the accent, such as a value the panel derived rather than one the user set. Picked from the ramp so it clears 4.5:1 on the surface in both modes.\", 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-scrim', type: \"color\", group: \"scrim\", defaultValue: \"rgba(0, 0, 0, 0.4)\", description: \"What a modal dims the page behind it with.\", hook: false },\n { name: '--wzl-code-keyword', type: \"color\", group: \"code\", defaultValue: \"#955cf9\", description: \"Keywords in highlighted code.\", hook: false },\n { name: '--wzl-code-string', type: \"color\", group: \"code\", defaultValue: \"#48e628\", description: \"String literals in highlighted code.\", hook: false },\n { name: '--wzl-code-number', type: \"color\", group: \"code\", defaultValue: \"#e69628\", description: \"Numbers in highlighted code.\", hook: false },\n { name: '--wzl-code-constant', type: \"color\", group: \"code\", defaultValue: \"#3ee1cb\", description: \"true, false, null and undefined in highlighted code.\", hook: false },\n { name: '--wzl-code-property', type: \"color\", group: \"code\", defaultValue: \"#36bff2\", description: \"Property keys and attribute names in highlighted code.\", hook: false },\n { name: '--wzl-code-name', type: \"color\", group: \"code\", defaultValue: \"#fa4590\", description: \"Functions, classes and other names in highlighted code.\", hook: false },\n { name: '--wzl-panel-surface', type: \"color\", group: \"panel\", defaultValue: \"#25272c\", description: \"Fill of a PropertyPanel.\", hook: false },\n { name: '--wzl-panel-border-color', type: \"color\", group: \"panel\", defaultValue: \"#25272c\", description: \"\", hook: false },\n { name: '--wzl-panel-border-style', type: \"string\", group: \"panel\", defaultValue: \"solid\", description: \"\", hook: false },\n { name: '--wzl-panel-border-width', type: \"dimension\", group: \"panel\", defaultValue: \"1px\", description: \"\", hook: false },\n { name: '--wzl-panel-radius', type: \"dimension\", group: \"panel\", defaultValue: \"14px\", description: \"\", hook: false },\n { name: '--wzl-panel-pad', type: \"dimension\", group: \"panel\", defaultValue: \"14px 16px\", description: \"A panel’s padding when no density sets one.\", hook: false },\n { name: '--wzl-panel-blur', type: \"dimension\", group: \"panel\", defaultValue: \"3px\", description: \"\", hook: false },\n { name: '--wzl-panel-tint-mix', type: \"number\", group: \"panel\", defaultValue: \"14%\", description: \"How much of a panel’s tint mixes into its surface.\", hook: false },\n { name: '--wzl-panel-title-font', type: \"fontFamily\", group: \"panel\", defaultValue: \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\", description: \"\", hook: false },\n { name: '--wzl-panel-title-weight', type: \"fontWeight\", group: \"panel\", defaultValue: \"200\", description: \"\", hook: false },\n { name: '--wzl-panel-title-size', type: \"dimension\", group: \"panel\", defaultValue: \"18px\", description: \"\", hook: false },\n { name: '--wzl-panel-title-case', type: \"string\", group: \"panel\", defaultValue: \"none\", description: \"\", hook: false },\n { name: '--wzl-panel-title-tracking', type: \"dimension\", group: \"panel\", defaultValue: \"0.01em\", description: \"\", hook: false },\n { name: '--wzl-panel-title-color', type: \"color\", group: \"panel\", defaultValue: \"#e6e7e9\", description: \"\", hook: false },\n { name: '--wzl-panel-title-inset', type: \"dimension\", group: \"panel\", defaultValue: \"0\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-border-width', type: \"dimension\", group: \"stance\", defaultValue: \"0\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-radius', type: \"dimension\", group: \"stance\", defaultValue: \"8px\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-tint-mix', type: \"number\", group: \"stance\", defaultValue: \"22%\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-nested-radius', type: \"dimension\", group: \"stance\", defaultValue: \"6px\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-nested-surface', type: \"color\", group: \"stance\", defaultValue: \"#181a1e\", description: \"A clarify panel inside another sits back into it.\", hook: false },\n { name: '--wzl-stance-aside-surface', type: \"color\", group: \"stance\", defaultValue: \"transparent\", description: \"\", hook: false },\n { name: '--wzl-stance-aside-border-color', type: \"color\", group: \"stance\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"\", hook: false },\n { name: '--wzl-stance-aside-blur', type: \"dimension\", group: \"stance\", defaultValue: \"0px\", description: \"\", hook: false },\n { name: '--wzl-stance-aside-title-color', type: \"color\", group: \"stance\", defaultValue: \"rgb(from currentColor r g b / 0.54)\", description: \"\", hook: false },\n { name: '--wzl-stance-advanced-title-color', type: \"color\", group: \"stance\", defaultValue: \"rgb(from currentColor r g b / 0.54)\", description: \"\", hook: false },\n { name: '--wzl-stance-debug-border-style', type: \"string\", group: \"stance\", defaultValue: \"dashed\", description: \"\", hook: false },\n { name: '--wzl-stance-debug-title-font', type: \"fontFamily\", group: \"stance\", defaultValue: \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\", description: \"\", hook: false },\n { name: '--wzl-stance-debug-title-case', type: \"string\", group: \"stance\", defaultValue: \"none\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-pad', type: \"dimension\", group: \"stance\", defaultValue: \"0\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-title-size', type: \"dimension\", group: \"stance\", defaultValue: \"12px\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-title-case', type: \"string\", group: \"stance\", defaultValue: \"none\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-title-inset', type: \"dimension\", group: \"stance\", defaultValue: \"6px 10px 0\", description: \"\", hook: false },\n { name: '--wzl-danger-base', type: \"color\", group: \"status\", defaultValue: \"#d94a3f\", description: \"\", hook: false },\n { name: '--wzl-warning-base', type: \"color\", group: \"status\", defaultValue: \"#d99a3f\", description: \"\", hook: false },\n { name: '--wzl-success-base', type: \"color\", group: \"status\", defaultValue: \"#2ec27e\", description: \"\", hook: false },\n { name: '--wzl-info-base', type: \"color\", group: \"info\", defaultValue: \"#7ab8d4\", 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-border-on-sunken', type: \"color\", group: \"border\", defaultValue: \"rgba(230, 231, 233, 0.12)\", description: \"The edge of a box filled with surface-sunken. Stepped from the text color, because light mode's border is the sunken fill's own gray.\", hook: false },\n { name: '--wzl-curve-color', type: \"color\", group: \"curve\", defaultValue: \"#8c94ee\", 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: \"#5b63c9\", description: \"\", hook: false },\n { name: '--wzl-accent-hover', type: \"color\", group: \"accent\", defaultValue: \"#8c94ee\", description: \"\", hook: false },\n { name: '--wzl-secondary', type: \"color\", group: \"secondary\", defaultValue: \"#dc9d15\", description: \"Honey amber in dark mode and teal in light, where a darkened amber reads as brown. A fill; use secondary-fg for text.\", hook: false },\n { name: '--wzl-danger', type: \"color\", group: \"status\", defaultValue: \"#d94a3f\", description: \"\", hook: false },\n { name: '--wzl-warning', type: \"color\", group: \"status\", defaultValue: \"#d99a3f\", description: \"\", hook: false },\n { name: '--wzl-success', type: \"color\", group: \"status\", defaultValue: \"#2ec27e\", description: \"\", hook: false },\n { name: '--wzl-info', type: \"color\", group: \"info\", defaultValue: \"#7ab8d4\", description: \"\", hook: false },\n { name: '--wzl-focus-ring', type: \"color\", group: \"focus\", defaultValue: \"#8c94ee\", description: \"\", hook: false },\n { name: '--wzl-glass-tint', type: \"color\", group: \"glass\", defaultValue: \"#5b63c9\", 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: \"32px\", description: \"Height of a horizontal toolbar strip (ButtonBar, 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-xs', type: \"dimension\", group: \"control\", defaultValue: \"22px\", description: \"Height of the smallest interactive control -- a stepper, a keycap, a swatch button in a dense row. The rank below control-h-sm.\", hook: false },\n { name: '--wzl-control-h-sm', type: \"dimension\", group: \"control\", defaultValue: \"24px\", description: \"Height of a control in a dense inspector -- a Properties field, a small Button. The rank below control-h, which sizes a standalone control.\", hook: false },\n { name: '--wzl-control-h', type: \"dimension\", group: \"control\", defaultValue: \"28px\", 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-icon-button-size', type: \"dimension\", group: \"icon\", defaultValue: \"26px\", description: \"Side of a square icon button -- a dialog close, a row remove, a field clear. Smaller than control-h because it carries a glyph rather than a label, and square, so it sizes both axes.\", 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-slop', type: \"dimension\", group: \"slider\", defaultValue: \"6px\", description: \"How far past a range track's edge a press still lands on it. Invisible, and overlaps whatever sits beside the track rather than taking layout space.\", hook: false },\n { name: '--wzl-slider-thumb-slop', type: \"dimension\", group: \"slider\", defaultValue: \"6px\", description: \"How far past a range thumb's edge a press still grabs the thumb rather than landing on the track. Sits over the track's own slop.\", hook: false },\n { name: '--wzl-slider-track-mix', type: \"dimension\", group: \"slider\", defaultValue: \"40%\", description: \"Proportion of accent-fg in a range track, as a color-mix percentage — not a color. Mixed into a real property, never into another custom property. Higher in dark mode, where a light tint of the accent sinks into the surface.\", hook: false },\n { name: '--wzl-slider-thumb-mix', type: \"dimension\", group: \"slider\", defaultValue: \"100%\", description: \"Proportion of accent-fg in a range thumb, as a color-mix percentage — not a color. Solid in dark mode.\", 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-handle-dot-size', type: \"dimension\", group: \"handle\", defaultValue: \"8px\", description: \"Diameter of a round handle — a plain anchor on a curve. Its own rank beside handle-size, because a circle and a diamond of one edge do not read as one size.\", hook: false },\n { name: '--wzl-handle-dot-size-sm', type: \"dimension\", group: \"handle\", defaultValue: \"7px\", description: \"A round handle that belongs to another point — a bezier control handle at the end of its stem.\", hook: false },\n { name: '--wzl-checker-a', type: \"color\", group: \"checker\", defaultValue: \"#25272c\", description: \"One square of the transparency checker drawn under a paint that is empty, mixed or translucent. weasel-ui builds the checker layer once, in components/checker.module.css: compose its `checker` class and paint with var(--wzl-checker-layer).\", hook: false },\n { name: '--wzl-checker-b', type: \"color\", group: \"checker\", defaultValue: \"#181a1e\", description: \"The other square of the transparency checker.\", hook: false },\n { name: '--wzl-checker-size', type: \"dimension\", group: \"checker\", defaultValue: \"8px\", description: \"Edge of one repeat of the transparency checker: two squares by two.\", hook: false },\n { name: '--wzl-workspace-surface', type: \"color\", group: \"workspace\", defaultValue: \"#272727\", description: \"Ground of a canvas app's workspace — the area around the document page: surface-raised with its tint taken out (its OKLCH chroma set to 0).\", hook: false },\n { name: '--wzl-workspace-line', type: \"color\", group: \"workspace\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"Marks drawn over workspace-surface, such as its diagonal stripes, so the page reads as the thing on top.\", hook: false },\n { name: '--wzl-workspace', type: \"gradient\", group: \"workspace\", defaultValue: \"repeating-linear-gradient(45deg, transparent 0 8px, var(--wzl-workspace-line) 8px 16px) var(--wzl-workspace-surface)\", description: \"The workspace as one background layer: workspace-surface struck with wide diagonal bands of workspace-line. Use it as an element's whole background.\", 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-gloss', type: \"number\", group: \"gloss\", defaultValue: \"0\", description: \"How much glass a boxed button and a selected segment wear, from 0 to 1: at 0 a flat fill, at 1 the full ramp, specular gloss, rim, and drop shadow.\", 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', type: \"dimension\", group: \"font\", defaultValue: \"15px\", description: \"Controls and body text.\", 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: \"Chrome pinned over a workspace.\", hook: false },\n { name: '--wzl-z-overlay', type: \"number\", group: \"z\", defaultValue: \"20\", description: \"A panel or readout floating over the chrome.\", hook: false },\n { name: '--wzl-z-hud', type: \"number\", group: \"z\", defaultValue: \"900\", description: \"Debug readouts, over the app and under anything modal.\", hook: false },\n { name: '--wzl-z-modal', type: \"number\", group: \"z\", defaultValue: \"1000\", description: \"A dialog or lightbox and its scrim.\", hook: false },\n { name: '--wzl-z-toast', type: \"number\", group: \"z\", defaultValue: \"1100\", description: \"Toasts, which stay readable over a dialog.\", hook: false },\n { name: '--wzl-z-popover', type: \"number\", group: \"z\", defaultValue: \"1200\", description: \"Tooltips and callouts, which a dialog or a toast can open.\", hook: false },\n { name: '--wzl-z-drag', type: \"number\", group: \"z\", defaultValue: \"10000\", description: \"A drag ghost, over everything it can be dragged across.\", 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-numeric', type: \"fontFamily\", group: \"font\", defaultValue: \"'Oswald Tabular', var(--wzl-font-ui)\", description: \"The UI face with equal-width digits, for numbers read down a column or updated in place. Oswald Tabular carries only 0-9 and the figure space (U+2007); every other character falls through to the UI face.\", 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-space-xs', type: \"dimension\", group: \"space\", defaultValue: \"4px\", description: \"Alias for space-2. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-space-sm', type: \"dimension\", group: \"space\", defaultValue: \"8px\", description: \"Alias for space-4. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-space-md', type: \"dimension\", group: \"space\", defaultValue: \"12px\", description: \"Alias for space-6. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-space-lg', type: \"dimension\", group: \"space\", defaultValue: \"16px\", description: \"Alias for space-8. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-bevel-pressed', type: \"shadow\", group: \"bevel\", defaultValue: \"none\", description: \"Box shadow of a Button held down, or of a Button or a toolbar’s button that stays down. Unset, a Button draws its own inset (--btn-relief-pressed) and a toolbar’s button none.\", hook: true },\n { name: '--wzl-bevel-raised', type: \"shadow\", group: \"bevel\", defaultValue: \"none\", description: \"Box shadow of a raised face: a Button, a PropertyPanel, a menu, popover, tooltip, or Dialog, a thumb, the chosen segment of a segmented control, a toolbar’s strip, and every edge of a tab but the one its panel is on. A theme that draws its edges in relief declares it; unset, each keeps the shadow it draws for itself, which for most is none.\", hook: true },\n { name: '--wzl-bevel-sunken', type: \"shadow\", group: \"bevel\", defaultValue: \"none\", description: \"Box shadow of a well: the frame a field draws its value in, a checkbox, a radio, the track of a switch, a slider, or a segmented control, and a cell of a flat one.\", hook: true },\n { name: '--wzl-button-confirm-bevel', type: \"shadow\", group: \"button\", defaultValue: \"var(--wzl-bevel-raised)\", description: \"Box shadow of a confirm Button, where it differs from --wzl-bevel-raised: the heavier frame of a default button.\", hook: true },\n { name: '--wzl-button-confirm-fg', type: \"color\", group: \"button\", defaultValue: \"var(--wzl-fg-on-accent)\", description: \"Text color of a confirm Button, for a theme whose --wzl-button-confirm-surface is not an accent fill.\", hook: true },\n { name: '--wzl-button-confirm-pressed-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass-pressed)\", description: \"Background of a confirm Button while it is held down.\", hook: true },\n { name: '--wzl-button-confirm-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass)\", description: \"Background of a confirm Button. Unset, glass tinted with --wzl-accent.\", hook: true },\n { name: '--wzl-button-font-weight', type: \"fontWeight\", group: \"button\", defaultValue: \"var(--wzl-font-weight-medium)\", description: \"Font weight of a Button’s label below the container that sets it.\", hook: true },\n { name: '--wzl-button-gloss', type: \"number\", group: \"button\", defaultValue: \"1\", description: \"Opacity of the specular sheen over a Button’s upper half. 0 for a flat face.\", hook: true },\n { name: '--wzl-button-icon-size', type: \"dimension\", group: \"button\", defaultValue: \"14px\", description: \"The glyph in a Button. Unset, 12px in a small one and 14px otherwise.\", hook: true },\n { name: '--wzl-button-pad-x', type: \"dimension\", group: \"button\", defaultValue: \"var(--wzl-space-6)\", description: \"Inline padding of a text Button below the container that sets it, at every size. Unset, `--wzl-space-4` at sm and `--wzl-space-6` at md. Icon-only buttons stay square.\", hook: true },\n { name: '--wzl-button-pressed-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass-pressed)\", description: \"Background of a solid Button while it is held down.\", hook: true },\n { name: '--wzl-button-radius', type: \"dimension\", group: \"button\", defaultValue: \"calc(var(--btn-height) * 0.1)\", description: \"Corner radius of a Button. Unset, a tenth of its height.\", hook: true },\n { name: '--wzl-button-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass)\", description: \"Background of a solid Button. Unset, neutral glass mixed from the surfaces.\", hook: true },\n { name: '--wzl-button-text-shadow', type: \"shadow\", group: \"button\", defaultValue: \"var(--btn-engraving)\", description: \"Text shadow of a Button’s label. Unset, an engraving stamp under the glyphs in dark mode.\", hook: true },\n { name: '--wzl-detail-figure-min-width', type: \"dimension\", group: \"detail\", defaultValue: \"8ch\", description: \"Least width of a value cell in a `values=\\\"figures\\\"` DetailList.\", hook: true },\n { name: '--wzl-dialog-max-width', type: \"dimension\", group: \"dialog\", defaultValue: \"900px\", description: \"Widest a Dialog grows, modal or inline, before its contents wrap or scroll.\", hook: true },\n { name: '--wzl-disclosure-fill', type: \"color\", group: \"disclosure\", defaultValue: \"var(--wzl-accent-fg)\", description: \"Fill of a Disclosure’s fold mark.\", hook: true },\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 the twisty column of a LayerList row.\", hook: true },\n { name: '--wzl-entered-group', type: \"color\", group: \"entered\", defaultValue: \"#a48bd4\", description: \"Color of the dashed frame a canvas draws around the group it is working inside. Read off the canvas element, so it can be set on it or anything above it.\", hook: true },\n { name: '--wzl-field-border', type: \"border\", group: \"field\", defaultValue: \"1px solid var(--wzl-border)\", description: \"Border of a field’s frame. A theme whose --wzl-bevel-sunken draws the edge sets it to a border of no width.\", hook: true },\n { name: '--wzl-field-focus-shadow', type: \"shadow\", group: \"field\", defaultValue: \"0 0 0 1px var(--wzl-focus-ring)\", description: \"Box shadow of a field’s frame while it holds focus. It replaces --wzl-bevel-sunken there, so a beveled theme restates the bevel in it.\", hook: true },\n { name: '--wzl-field-font-size', type: \"dimension\", group: \"field\", defaultValue: \"var(--wzl-font-size)\", description: \"Font size of the text in a field, a select, a radio, a segmented bar or a button. Unset, each takes its own size; a params row sets it to --wzl-params-text-size.\", hook: true },\n { name: '--wzl-input-surface', type: \"color\", group: \"input\", defaultValue: \"var(--wzl-surface-sunken)\", description: \"Surface a field’s frame sits on — Input, NumberField, ComboBox, Select, MenuButton, ListEditor and the property rows. Set it on any container whose own background is the default — a sunken rail or panel — where an unset field is the same color as what is behind it.\", 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-params-label-align', type: \"string\", group: \"params\", defaultValue: \"start\", description: \"Text alignment of row labels in PropertyPanel, Prefs and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-params-label-case', type: \"string\", group: \"params\", defaultValue: \"uppercase\", description: \"text-transform of every label and title in PropertyPanel, Prefs and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-params-label-tracking', type: \"dimension\", group: \"params\", defaultValue: \"var(--wzl-tracking-wide)\", description: \"Letter spacing of every label and title in PropertyPanel, Prefs and labkit’s ControlPanel. Unset, rows take --wzl-tracking-wide and titles --wzl-tracking-wider.\", hook: true },\n { name: '--wzl-params-label-width', type: \"dimension\", group: \"params\", defaultValue: \"auto\", description: \"Inline size of row labels in PropertyPanel, Prefs and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-params-text-size', type: \"dimension\", group: \"params\", defaultValue: \"var(--wzl-font-size-sm)\", description: \"Font size of a row’s label and of its value, one size for both, in PropertyPanel, Prefs, SelectionPanel and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-prefs-across-gap', type: \"dimension\", group: \"prefs\", defaultValue: \"28px\", description: \"Gap between the two columns of rows a PrefsForm pane sets side by side.\", 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-prefs-control-min', type: \"dimension\", group: \"prefs\", defaultValue: \"80px\", description: \"Narrowest a PrefsForm row’s control gets in a two-across pane before the row wraps it under its label.\", hook: true },\n { name: '--wzl-prefs-rail-width', type: \"dimension\", group: \"prefs\", defaultValue: \"216px\", description: \"Width of the Prefs navigation rail.\", hook: true },\n { name: '--wzl-prop-columns', type: \"string\", group: \"prop\", defaultValue: \"1fr 1fr\", description: \"Column tracks of a Properties list, group body, and subpanel. A container too narrow for two columns sets `minmax(0, 1fr)` to stack every row.\", 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-panel-actions-align', type: \"string\", group: \"prop\", defaultValue: \"center\", description: \"How a PropertyPanel’s title row lines its actions up with the title: center, or baseline for actions that are text.\", hook: true },\n { name: '--wzl-prop-panel-actions-basis', type: \"dimension\", group: \"prop\", defaultValue: \"auto\", description: \"Width a PropertyPanel’s title row gives its actions. Set, it holds that width whatever the actions are.\", hook: true },\n { name: '--wzl-prop-row-h', type: \"dimension\", group: \"prop\", defaultValue: \"20px\", description: \"Floor under every Properties row, whatever control it holds. Unset, it is the panel’s own field height, so it follows density — 20px at the default one.\", 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: \"calc(4.5ch + 2px)\", description: \"Width of a Properties row’s value readout — four digits, so the controls beside a column of readouts end on one line. A range whose widest value needs more widens its own readout.\", hook: true },\n { name: '--wzl-select-border', type: \"border\", group: \"select\", defaultValue: \"1px solid var(--wzl-border)\", description: \"Border of a Select’s trigger. Unset, a boxed trigger draws --wzl-border and a bare one a transparent border of the same width.\", hook: true },\n { name: '--wzl-select-fg', type: \"color\", group: \"select\", defaultValue: \"var(--wzl-fg)\", description: \"Text color of a Select’s trigger.\", 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 { name: '--wzl-titlebar-align', type: \"string\", group: \"titlebar\", defaultValue: \"start\", description: \"Text alignment of a `titlebar` frame’s title along its strip.\", hook: true },\n { name: '--wzl-titlebar-border', type: \"border\", group: \"titlebar\", defaultValue: \"1px solid var(--_edge)\", description: \"Border of a `titlebar` frame. A theme whose --wzl-bevel-raised draws the edge sets it to a border of no width.\", hook: true },\n { name: '--wzl-titlebar-fg', type: \"color\", group: \"titlebar\", defaultValue: \"var(--_edge-ink)\", description: \"Text color on a `titlebar` frame’s strip. Unset, black or white, whichever reads on the edge color.\", hook: true },\n { name: '--wzl-titlebar-inset', type: \"dimension\", group: \"titlebar\", defaultValue: \"0\", description: \"Padding between a `titlebar` frame’s edge and its strip and body: the width of the bevel a theme draws there.\", hook: true },\n { name: '--wzl-titlebar-label-pad', type: \"dimension\", group: \"titlebar\", defaultValue: \"0\", description: \"Inline padding of the patch --wzl-titlebar-label-surface paints behind a `titlebar` frame’s title.\", hook: true },\n { name: '--wzl-titlebar-label-surface', type: \"color\", group: \"titlebar\", defaultValue: \"transparent\", description: \"Background behind a `titlebar` frame’s title alone, for a strip drawn in stripes that must not run through the letters.\", hook: true },\n { name: '--wzl-titlebar-surface', type: \"color\", group: \"titlebar\", defaultValue: \"var(--_edge)\", description: \"Background of the strip a `titlebar` frame carries its title in: a color, a gradient, or stripes. Unset, the frame’s edge color. A frame that names a tint paints the tint instead.\", hook: true },\n { name: '--wzl-titlebar-weight', type: \"fontWeight\", group: \"titlebar\", defaultValue: \"var(--wzl-font-weight-bold)\", description: \"Font weight of a `titlebar` frame’s title.\", hook: true },\n { name: '--wzl-tree-current', type: \"color\", group: \"tree\", defaultValue: \"var(--wzl-accent-fg)\", description: \"Text color of the Tree row marked `current`, the page or item being shown.\", hook: true },\n { name: '--wzl-tree-fold-size', type: \"dimension\", group: \"tree\", defaultValue: \"16px\", description: \"Size of the leading glyph a Tree folds a branch by, where its branches fold by their glyphs.\", hook: true },\n { name: '--wzl-tree-font-size', type: \"dimension\", group: \"tree\", defaultValue: \"var(--wzl-font-size-sm)\", description: \"Size of a Tree row’s text.\", hook: true },\n { name: '--wzl-tree-guide', type: \"color\", group: \"tree\", defaultValue: \"var(--wzl-fg-subtle)\", description: \"Color of the bracket a Tree draws down a branch.\", hook: true },\n { name: '--wzl-tree-indent', type: \"dimension\", group: \"tree\", defaultValue: \"calc(var(--wzl-control-h-xs) + var(--wzl-space-2))\", description: \"Indent of each Tree level. Unset, it is one twisty and one gap, so a child’s twisty sits under its parent’s label.\", hook: true },\n { name: '--wzl-tree-leaf-indent', type: \"dimension\", group: \"tree\", defaultValue: \"0\", description: \"How far in from its branches' glyphs a Tree with guides sets a row that folds nothing.\", hook: true },\n { name: '--wzl-tree-row-h', type: \"dimension\", group: \"tree\", defaultValue: \"var(--wzl-control-h)\", description: \"Height of every row in a Tree below the container that sets it, and of its drag ghost. Unset, the control height.\", hook: true },\n { name: '--wzl-tree-selected', type: \"color\", group: \"tree\", defaultValue: \"var(--wzl-border)\", description: \"Background of a selected Tree row.\", hook: true },\n];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/generated/manifest.ts"],"names":[],"mappings":"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","file":"chunk-4PFMGV3U.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: \"#262a66\", description: \"\", hook: false },\n { name: '--wzl-accent-base', type: \"color\", group: \"accent\", defaultValue: \"#5b63c9\", description: \"Periwinkle. Anchors primary actions on dark surfaces.\", hook: false },\n { name: '--wzl-accent-strong', type: \"color\", group: \"accent\", defaultValue: \"#8c94ee\", description: \"\", hook: false },\n { name: '--wzl-secondary-soft', type: \"color\", group: \"secondary\", defaultValue: \"#704e09\", description: \"\", hook: false },\n { name: '--wzl-secondary-base', type: \"color\", group: \"secondary\", defaultValue: \"#dc9d15\", description: \"\", hook: false },\n { name: '--wzl-secondary-strong', type: \"color\", group: \"secondary\", defaultValue: \"#f1cb8d\", 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-font-size-2xs', type: \"dimension\", group: \"font\", defaultValue: \"10px\", description: \"Shortcut keys and index badges. The floor for chrome text.\", hook: false },\n { name: '--wzl-font-size-xs', type: \"dimension\", group: \"font\", defaultValue: \"12px\", description: \"Tool-button labels under an icon.\", hook: false },\n { name: '--wzl-font-size-sm', type: \"dimension\", group: \"font\", defaultValue: \"13px\", description: \"Chrome labels, status readouts, section headings.\", hook: false },\n { name: '--wzl-font-size-md', type: \"dimension\", group: \"font\", defaultValue: \"15px\", description: \"Controls and body text.\", hook: false },\n { name: '--wzl-font-size-lg', type: \"dimension\", group: \"font\", defaultValue: \"18px\", description: \"Panel and dialog titles.\", hook: false },\n { name: '--wzl-font-size-xl', type: \"dimension\", group: \"font\", defaultValue: \"23px\", description: \"The largest chrome text — a lab or app title.\", hook: false },\n { name: '--wzl-space-1', type: \"dimension\", group: \"space\", defaultValue: \"2px\", description: \"\", hook: false },\n { name: '--wzl-space-2', type: \"dimension\", group: \"space\", defaultValue: \"4px\", description: \"\", hook: false },\n { name: '--wzl-space-3', type: \"dimension\", group: \"space\", defaultValue: \"6px\", description: \"\", hook: false },\n { name: '--wzl-space-4', type: \"dimension\", group: \"space\", defaultValue: \"8px\", description: \"\", hook: false },\n { name: '--wzl-space-5', type: \"dimension\", group: \"space\", defaultValue: \"10px\", description: \"\", hook: false },\n { name: '--wzl-space-6', type: \"dimension\", group: \"space\", defaultValue: \"12px\", description: \"\", hook: false },\n { name: '--wzl-space-7', type: \"dimension\", group: \"space\", defaultValue: \"14px\", description: \"\", hook: false },\n { name: '--wzl-space-8', type: \"dimension\", group: \"space\", defaultValue: \"16px\", 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-popover', type: \"color\", group: \"surface\", defaultValue: \"#25272c\", description: \"Background of a dropdown, menu or other popover list. Follows surface-raised unless a theme needs floating lists to read differently from the panels beneath them.\", 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: \"rgb(from currentColor r g b / 0.7)\", description: \"Secondary text: the text color in effect where it is used, at reduced alpha, so it steps down from whatever text it sits beside on any surface. The alpha is absolute, so muted text nested in muted text stays one step down. Under fg it clears WCAG 4.5:1 on surface, surface-raised, and surface-sunken in both modes.\", hook: false },\n { name: '--wzl-fg-subtle', type: \"color\", group: \"fg\", defaultValue: \"rgb(from currentColor r g b / 0.54)\", description: \"Tertiary text: a further step down from the text color in effect, by the same rule as fg-muted. Under fg it clears WCAG 4.5:1 on surface, surface-raised, and surface-sunken in both modes.\", hook: false },\n { name: '--wzl-fg-muted-on-accent', type: \"color\", group: \"fg\", defaultValue: \"rgb(from currentColor r g b / 0.98)\", description: \"Secondary text on an accent fill. Every rule that sets --wzl-fg-on-accent text redirects --wzl-fg-muted here (npm run check:on-accent), because the general step falls below WCAG 4.5:1 on the accent. In dark mode that leaves almost no step to show.\", hook: false },\n { name: '--wzl-fg-subtle-on-accent', type: \"color\", group: \"fg\", defaultValue: \"rgb(from currentColor r g b / 0.96)\", description: \"Tertiary text on an accent fill, redirected from --wzl-fg-subtle by the same rule as fg-muted-on-accent. Clears WCAG 4.5:1 on the accent in both modes.\", 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: \"#8c94ee\", 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-secondary-fg', type: \"color\", group: \"secondary\", defaultValue: \"#dc9d15\", description: \"Secondary accent for foreground use: a second voice beside the accent, such as a value the panel derived rather than one the user set. Picked from the ramp so it clears 4.5:1 on the surface in both modes.\", 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-scrim', type: \"color\", group: \"scrim\", defaultValue: \"rgba(0, 0, 0, 0.4)\", description: \"What a modal dims the page behind it with.\", hook: false },\n { name: '--wzl-code-keyword', type: \"color\", group: \"code\", defaultValue: \"#955cf9\", description: \"Keywords in highlighted code.\", hook: false },\n { name: '--wzl-code-string', type: \"color\", group: \"code\", defaultValue: \"#48e628\", description: \"String literals in highlighted code.\", hook: false },\n { name: '--wzl-code-number', type: \"color\", group: \"code\", defaultValue: \"#e69628\", description: \"Numbers in highlighted code.\", hook: false },\n { name: '--wzl-code-constant', type: \"color\", group: \"code\", defaultValue: \"#3ee1cb\", description: \"true, false, null and undefined in highlighted code.\", hook: false },\n { name: '--wzl-code-property', type: \"color\", group: \"code\", defaultValue: \"#36bff2\", description: \"Property keys and attribute names in highlighted code.\", hook: false },\n { name: '--wzl-code-name', type: \"color\", group: \"code\", defaultValue: \"#fa4590\", description: \"Functions, classes and other names in highlighted code.\", hook: false },\n { name: '--wzl-panel-surface', type: \"color\", group: \"panel\", defaultValue: \"#25272c\", description: \"Fill of a PropertyPanel.\", hook: false },\n { name: '--wzl-panel-border-color', type: \"color\", group: \"panel\", defaultValue: \"#25272c\", description: \"\", hook: false },\n { name: '--wzl-panel-border-style', type: \"string\", group: \"panel\", defaultValue: \"solid\", description: \"\", hook: false },\n { name: '--wzl-panel-border-width', type: \"dimension\", group: \"panel\", defaultValue: \"1px\", description: \"\", hook: false },\n { name: '--wzl-panel-radius', type: \"dimension\", group: \"panel\", defaultValue: \"14px\", description: \"\", hook: false },\n { name: '--wzl-panel-pad', type: \"dimension\", group: \"panel\", defaultValue: \"14px 16px\", description: \"A panel’s padding when no density sets one.\", hook: false },\n { name: '--wzl-panel-blur', type: \"dimension\", group: \"panel\", defaultValue: \"3px\", description: \"\", hook: false },\n { name: '--wzl-panel-tint-mix', type: \"number\", group: \"panel\", defaultValue: \"14%\", description: \"How much of a panel’s tint mixes into its surface.\", hook: false },\n { name: '--wzl-panel-title-font', type: \"fontFamily\", group: \"panel\", defaultValue: \"Oswald, 'Helvetica Neue Condensed', 'Arial Narrow', system-ui, sans-serif\", description: \"\", hook: false },\n { name: '--wzl-panel-title-weight', type: \"fontWeight\", group: \"panel\", defaultValue: \"200\", description: \"\", hook: false },\n { name: '--wzl-panel-title-size', type: \"dimension\", group: \"panel\", defaultValue: \"18px\", description: \"\", hook: false },\n { name: '--wzl-panel-title-case', type: \"string\", group: \"panel\", defaultValue: \"none\", description: \"\", hook: false },\n { name: '--wzl-panel-title-tracking', type: \"dimension\", group: \"panel\", defaultValue: \"0.01em\", description: \"\", hook: false },\n { name: '--wzl-panel-title-color', type: \"color\", group: \"panel\", defaultValue: \"#e6e7e9\", description: \"\", hook: false },\n { name: '--wzl-panel-title-inset', type: \"dimension\", group: \"panel\", defaultValue: \"0\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-border-width', type: \"dimension\", group: \"stance\", defaultValue: \"0\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-radius', type: \"dimension\", group: \"stance\", defaultValue: \"8px\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-tint-mix', type: \"number\", group: \"stance\", defaultValue: \"22%\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-nested-radius', type: \"dimension\", group: \"stance\", defaultValue: \"6px\", description: \"\", hook: false },\n { name: '--wzl-stance-clarify-nested-surface', type: \"color\", group: \"stance\", defaultValue: \"#181a1e\", description: \"A clarify panel inside another sits back into it.\", hook: false },\n { name: '--wzl-stance-aside-surface', type: \"color\", group: \"stance\", defaultValue: \"transparent\", description: \"\", hook: false },\n { name: '--wzl-stance-aside-border-color', type: \"color\", group: \"stance\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"\", hook: false },\n { name: '--wzl-stance-aside-blur', type: \"dimension\", group: \"stance\", defaultValue: \"0px\", description: \"\", hook: false },\n { name: '--wzl-stance-aside-title-color', type: \"color\", group: \"stance\", defaultValue: \"rgb(from currentColor r g b / 0.54)\", description: \"\", hook: false },\n { name: '--wzl-stance-advanced-title-color', type: \"color\", group: \"stance\", defaultValue: \"rgb(from currentColor r g b / 0.54)\", description: \"\", hook: false },\n { name: '--wzl-stance-debug-border-style', type: \"string\", group: \"stance\", defaultValue: \"dashed\", description: \"\", hook: false },\n { name: '--wzl-stance-debug-title-font', type: \"fontFamily\", group: \"stance\", defaultValue: \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\", description: \"\", hook: false },\n { name: '--wzl-stance-debug-title-case', type: \"string\", group: \"stance\", defaultValue: \"none\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-pad', type: \"dimension\", group: \"stance\", defaultValue: \"0\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-title-size', type: \"dimension\", group: \"stance\", defaultValue: \"12px\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-title-case', type: \"string\", group: \"stance\", defaultValue: \"none\", description: \"\", hook: false },\n { name: '--wzl-stance-preview-title-inset', type: \"dimension\", group: \"stance\", defaultValue: \"6px 10px 0\", description: \"\", hook: false },\n { name: '--wzl-danger-base', type: \"color\", group: \"status\", defaultValue: \"#d94a3f\", description: \"\", hook: false },\n { name: '--wzl-warning-base', type: \"color\", group: \"status\", defaultValue: \"#d99a3f\", description: \"\", hook: false },\n { name: '--wzl-success-base', type: \"color\", group: \"status\", defaultValue: \"#2ec27e\", description: \"\", hook: false },\n { name: '--wzl-info-base', type: \"color\", group: \"info\", defaultValue: \"#7ab8d4\", 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-border-on-sunken', type: \"color\", group: \"border\", defaultValue: \"rgba(230, 231, 233, 0.12)\", description: \"The edge of a box filled with surface-sunken. Stepped from the text color, because light mode's border is the sunken fill's own gray.\", hook: false },\n { name: '--wzl-curve-color', type: \"color\", group: \"curve\", defaultValue: \"#8c94ee\", 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: \"#5b63c9\", description: \"\", hook: false },\n { name: '--wzl-accent-hover', type: \"color\", group: \"accent\", defaultValue: \"#8c94ee\", description: \"\", hook: false },\n { name: '--wzl-secondary', type: \"color\", group: \"secondary\", defaultValue: \"#dc9d15\", description: \"Honey amber in dark mode and teal in light, where a darkened amber reads as brown. A fill; use secondary-fg for text.\", hook: false },\n { name: '--wzl-danger', type: \"color\", group: \"status\", defaultValue: \"#d94a3f\", description: \"\", hook: false },\n { name: '--wzl-warning', type: \"color\", group: \"status\", defaultValue: \"#d99a3f\", description: \"\", hook: false },\n { name: '--wzl-success', type: \"color\", group: \"status\", defaultValue: \"#2ec27e\", description: \"\", hook: false },\n { name: '--wzl-info', type: \"color\", group: \"info\", defaultValue: \"#7ab8d4\", description: \"\", hook: false },\n { name: '--wzl-focus-ring', type: \"color\", group: \"focus\", defaultValue: \"#8c94ee\", description: \"\", hook: false },\n { name: '--wzl-glass-tint', type: \"color\", group: \"glass\", defaultValue: \"#5b63c9\", 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: \"32px\", description: \"Height of a horizontal toolbar strip (ButtonBar, 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-xs', type: \"dimension\", group: \"control\", defaultValue: \"22px\", description: \"Height of the smallest interactive control -- a stepper, a keycap, a swatch button in a dense row. The rank below control-h-sm.\", hook: false },\n { name: '--wzl-control-h-sm', type: \"dimension\", group: \"control\", defaultValue: \"24px\", description: \"Height of a control in a dense inspector -- a Properties field, a small Button. The rank below control-h, which sizes a standalone control.\", hook: false },\n { name: '--wzl-control-h', type: \"dimension\", group: \"control\", defaultValue: \"28px\", 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-icon-button-size', type: \"dimension\", group: \"icon\", defaultValue: \"26px\", description: \"Side of a square icon button -- a dialog close, a row remove, a field clear. Smaller than control-h because it carries a glyph rather than a label, and square, so it sizes both axes.\", 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-slop', type: \"dimension\", group: \"slider\", defaultValue: \"6px\", description: \"How far past a range track's edge a press still lands on it. Invisible, and overlaps whatever sits beside the track rather than taking layout space.\", hook: false },\n { name: '--wzl-slider-thumb-slop', type: \"dimension\", group: \"slider\", defaultValue: \"6px\", description: \"How far past a range thumb's edge a press still grabs the thumb rather than landing on the track. Sits over the track's own slop.\", hook: false },\n { name: '--wzl-slider-track-mix', type: \"dimension\", group: \"slider\", defaultValue: \"40%\", description: \"Proportion of accent-fg in a range track, as a color-mix percentage — not a color. Mixed into a real property, never into another custom property. Higher in dark mode, where a light tint of the accent sinks into the surface.\", hook: false },\n { name: '--wzl-slider-thumb-mix', type: \"dimension\", group: \"slider\", defaultValue: \"100%\", description: \"Proportion of accent-fg in a range thumb, as a color-mix percentage — not a color. Solid in dark mode.\", 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-handle-dot-size', type: \"dimension\", group: \"handle\", defaultValue: \"8px\", description: \"Diameter of a round handle — a plain anchor on a curve. Its own rank beside handle-size, because a circle and a diamond of one edge do not read as one size.\", hook: false },\n { name: '--wzl-handle-dot-size-sm', type: \"dimension\", group: \"handle\", defaultValue: \"7px\", description: \"A round handle that belongs to another point — a bezier control handle at the end of its stem.\", hook: false },\n { name: '--wzl-checker-a', type: \"color\", group: \"checker\", defaultValue: \"#25272c\", description: \"One square of the transparency checker drawn under a paint that is empty, mixed or translucent. weasel-ui builds the checker layer once, in components/checker.module.css: compose its `checker` class and paint with var(--wzl-checker-layer).\", hook: false },\n { name: '--wzl-checker-b', type: \"color\", group: \"checker\", defaultValue: \"#181a1e\", description: \"The other square of the transparency checker.\", hook: false },\n { name: '--wzl-checker-size', type: \"dimension\", group: \"checker\", defaultValue: \"8px\", description: \"Edge of one repeat of the transparency checker: two squares by two.\", hook: false },\n { name: '--wzl-workspace-surface', type: \"color\", group: \"workspace\", defaultValue: \"#272727\", description: \"Ground of a canvas app's workspace — the area around the document page: surface-raised with its tint taken out (its OKLCH chroma set to 0).\", hook: false },\n { name: '--wzl-workspace-line', type: \"color\", group: \"workspace\", defaultValue: \"rgba(230, 231, 233, 0.1)\", description: \"Marks drawn over workspace-surface, such as its diagonal stripes, so the page reads as the thing on top.\", hook: false },\n { name: '--wzl-workspace', type: \"gradient\", group: \"workspace\", defaultValue: \"repeating-linear-gradient(45deg, transparent 0 8px, var(--wzl-workspace-line) 8px 16px) var(--wzl-workspace-surface)\", description: \"The workspace as one background layer: workspace-surface struck with wide diagonal bands of workspace-line. Use it as an element's whole background.\", 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-gloss', type: \"number\", group: \"gloss\", defaultValue: \"0\", description: \"How much glass a boxed button and a selected segment wear, from 0 to 1: at 0 a flat fill, at 1 the full ramp, specular gloss, rim, and drop shadow.\", 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', type: \"dimension\", group: \"font\", defaultValue: \"15px\", description: \"Controls and body text.\", 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: \"Chrome pinned over a workspace.\", hook: false },\n { name: '--wzl-z-overlay', type: \"number\", group: \"z\", defaultValue: \"20\", description: \"A panel or readout floating over the chrome.\", hook: false },\n { name: '--wzl-z-hud', type: \"number\", group: \"z\", defaultValue: \"900\", description: \"Debug readouts, over the app and under anything modal.\", hook: false },\n { name: '--wzl-z-modal', type: \"number\", group: \"z\", defaultValue: \"1000\", description: \"A dialog or lightbox and its scrim.\", hook: false },\n { name: '--wzl-z-toast', type: \"number\", group: \"z\", defaultValue: \"1100\", description: \"Toasts, which stay readable over a dialog.\", hook: false },\n { name: '--wzl-z-popover', type: \"number\", group: \"z\", defaultValue: \"1200\", description: \"Tooltips and callouts, which a dialog or a toast can open.\", hook: false },\n { name: '--wzl-z-drag', type: \"number\", group: \"z\", defaultValue: \"10000\", description: \"A drag ghost, over everything it can be dragged across.\", 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-numeric', type: \"fontFamily\", group: \"font\", defaultValue: \"'Oswald Tabular', var(--wzl-font-ui)\", description: \"The UI face with equal-width digits, for numbers read down a column or updated in place. Oswald Tabular carries only 0-9 and the figure space (U+2007); every other character falls through to the UI face.\", 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-space-xs', type: \"dimension\", group: \"space\", defaultValue: \"4px\", description: \"Alias for space-2. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-space-sm', type: \"dimension\", group: \"space\", defaultValue: \"8px\", description: \"Alias for space-4. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-space-md', type: \"dimension\", group: \"space\", defaultValue: \"12px\", description: \"Alias for space-6. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-space-lg', type: \"dimension\", group: \"space\", defaultValue: \"16px\", description: \"Alias for space-8. The t-shirt names name every other rung of the ladder.\", hook: false },\n { name: '--wzl-bevel-pressed', type: \"shadow\", group: \"bevel\", defaultValue: \"none\", description: \"Box shadow of a Button held down, or of a Button or a toolbar’s button that stays down. Unset, a Button draws its own inset (--btn-relief-pressed) and a toolbar’s button none.\", hook: true },\n { name: '--wzl-bevel-raised', type: \"shadow\", group: \"bevel\", defaultValue: \"none\", description: \"Box shadow of a raised face: a Button, a PropertyPanel, a menu, popover, tooltip, or Dialog, a thumb, the chosen segment of a segmented control, a toolbar’s strip, and every edge of a tab but the one its panel is on. A theme that draws its edges in relief declares it; unset, each keeps the shadow it draws for itself, which for most is none.\", hook: true },\n { name: '--wzl-bevel-sunken', type: \"shadow\", group: \"bevel\", defaultValue: \"none\", description: \"Box shadow of a well: the frame a field draws its value in, a checkbox, a radio, the track of a switch, a slider, or a segmented control, and a cell of a flat one.\", hook: true },\n { name: '--wzl-button-confirm-bevel', type: \"shadow\", group: \"button\", defaultValue: \"var(--wzl-bevel-raised)\", description: \"Box shadow of a confirm Button, where it differs from --wzl-bevel-raised: the heavier frame of a default button.\", hook: true },\n { name: '--wzl-button-confirm-fg', type: \"color\", group: \"button\", defaultValue: \"var(--wzl-fg-on-accent)\", description: \"Text color of a confirm Button, for a theme whose --wzl-button-confirm-surface is not an accent fill.\", hook: true },\n { name: '--wzl-button-confirm-pressed-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass-pressed)\", description: \"Background of a confirm Button while it is held down.\", hook: true },\n { name: '--wzl-button-confirm-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass)\", description: \"Background of a confirm Button. Unset, glass tinted with --wzl-accent.\", hook: true },\n { name: '--wzl-button-font-weight', type: \"fontWeight\", group: \"button\", defaultValue: \"var(--wzl-font-weight-medium)\", description: \"Font weight of a Button’s label below the container that sets it.\", hook: true },\n { name: '--wzl-button-gloss', type: \"number\", group: \"button\", defaultValue: \"1\", description: \"Opacity of the specular sheen over a Button’s upper half. 0 for a flat face.\", hook: true },\n { name: '--wzl-button-icon-size', type: \"dimension\", group: \"button\", defaultValue: \"14px\", description: \"The glyph in a Button. Unset, 12px in a small one and 14px otherwise.\", hook: true },\n { name: '--wzl-button-pad-x', type: \"dimension\", group: \"button\", defaultValue: \"var(--wzl-space-6)\", description: \"Inline padding of a text Button below the container that sets it, at every size. Unset, `--wzl-space-4` at sm and `--wzl-space-6` at md. Icon-only buttons stay square.\", hook: true },\n { name: '--wzl-button-pressed-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass-pressed)\", description: \"Background of a solid Button while it is held down.\", hook: true },\n { name: '--wzl-button-radius', type: \"dimension\", group: \"button\", defaultValue: \"calc(var(--btn-height) * 0.1)\", description: \"Corner radius of a Button. Unset, a tenth of its height.\", hook: true },\n { name: '--wzl-button-surface', type: \"color\", group: \"button\", defaultValue: \"var(--btn-glass)\", description: \"Background of a solid Button. Unset, neutral glass mixed from the surfaces.\", hook: true },\n { name: '--wzl-button-text-shadow', type: \"shadow\", group: \"button\", defaultValue: \"var(--btn-engraving)\", description: \"Text shadow of a Button’s label. Unset, an engraving stamp under the glyphs in dark mode.\", hook: true },\n { name: '--wzl-detail-figure-min-width', type: \"dimension\", group: \"detail\", defaultValue: \"8ch\", description: \"Least width of a value cell in a `values=\\\"figures\\\"` DetailList.\", hook: true },\n { name: '--wzl-dialog-max-width', type: \"dimension\", group: \"dialog\", defaultValue: \"900px\", description: \"Widest a Dialog grows, modal or inline, before its contents wrap or scroll.\", hook: true },\n { name: '--wzl-disclosure-fill', type: \"color\", group: \"disclosure\", defaultValue: \"var(--wzl-accent-fg)\", description: \"Fill of a Disclosure’s fold mark.\", hook: true },\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 the twisty column of a LayerList row.\", hook: true },\n { name: '--wzl-entered-group', type: \"color\", group: \"entered\", defaultValue: \"#a48bd4\", description: \"Color of the dashed frame a canvas draws around the group it is working inside. Read off the canvas element, so it can be set on it or anything above it.\", hook: true },\n { name: '--wzl-field-border', type: \"border\", group: \"field\", defaultValue: \"1px solid color-mix(in srgb, var(--wzl-border), var(--wzl-border-strong) 30%)\", description: \"Border of a field’s frame. A theme whose --wzl-bevel-sunken draws the edge sets it to a border of no width.\", hook: true },\n { name: '--wzl-field-focus-shadow', type: \"shadow\", group: \"field\", defaultValue: \"0 0 0 1px var(--wzl-focus-ring)\", description: \"Box shadow of a field’s frame while it holds focus. It replaces --wzl-bevel-sunken there, so a beveled theme restates the bevel in it.\", hook: true },\n { name: '--wzl-field-font-size', type: \"dimension\", group: \"field\", defaultValue: \"var(--wzl-font-size)\", description: \"Font size of the text in a field, a select, a radio, a segmented bar or a button. Unset, each takes its own size; a params row sets it to --wzl-params-text-size.\", hook: true },\n { name: '--wzl-input-surface', type: \"color\", group: \"input\", defaultValue: \"var(--wzl-surface-sunken)\", description: \"Surface a field’s frame sits on — Input, NumberField, ComboBox, Select, MenuButton, ListEditor and the property rows. Set it on any container whose own background is the default — a sunken rail or panel — where an unset field is the same color as what is behind it.\", 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-params-label-align', type: \"string\", group: \"params\", defaultValue: \"start\", description: \"Text alignment of row labels in PropertyPanel, Prefs and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-params-label-case', type: \"string\", group: \"params\", defaultValue: \"uppercase\", description: \"text-transform of every label and title in PropertyPanel, Prefs and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-params-label-tracking', type: \"dimension\", group: \"params\", defaultValue: \"var(--wzl-tracking-wide)\", description: \"Letter spacing of every label and title in PropertyPanel, Prefs and labkit’s ControlPanel. Unset, rows take --wzl-tracking-wide and titles --wzl-tracking-wider.\", hook: true },\n { name: '--wzl-params-label-width', type: \"dimension\", group: \"params\", defaultValue: \"auto\", description: \"Inline size of row labels in PropertyPanel, Prefs and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-params-text-size', type: \"dimension\", group: \"params\", defaultValue: \"var(--wzl-font-size-sm)\", description: \"Font size of a row’s label and of its value, one size for both, in PropertyPanel, Prefs, SelectionPanel and labkit’s ControlPanel.\", hook: true },\n { name: '--wzl-prefs-across-gap', type: \"dimension\", group: \"prefs\", defaultValue: \"28px\", description: \"Gap between the two columns of rows a PrefsForm pane sets side by side.\", 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-prefs-control-min', type: \"dimension\", group: \"prefs\", defaultValue: \"80px\", description: \"Narrowest a PrefsForm row’s control gets in a two-across pane before the row wraps it under its label.\", hook: true },\n { name: '--wzl-prefs-rail-width', type: \"dimension\", group: \"prefs\", defaultValue: \"216px\", description: \"Width of the Prefs navigation rail.\", hook: true },\n { name: '--wzl-prop-columns', type: \"string\", group: \"prop\", defaultValue: \"1fr 1fr\", description: \"Column tracks of a Properties list, group body, and subpanel. A container too narrow for two columns sets `minmax(0, 1fr)` to stack every row.\", 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-panel-actions-align', type: \"string\", group: \"prop\", defaultValue: \"center\", description: \"How a PropertyPanel’s title row lines its actions up with the title: center, or baseline for actions that are text.\", hook: true },\n { name: '--wzl-prop-panel-actions-basis', type: \"dimension\", group: \"prop\", defaultValue: \"auto\", description: \"Width a PropertyPanel’s title row gives its actions. Set, it holds that width whatever the actions are.\", hook: true },\n { name: '--wzl-prop-row-h', type: \"dimension\", group: \"prop\", defaultValue: \"20px\", description: \"Floor under every Properties row, whatever control it holds. Unset, it is the panel’s own field height, so it follows density — 20px at the default one.\", 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: \"calc(4.5ch + 2px)\", description: \"Width of a Properties row’s value readout — four digits, so the controls beside a column of readouts end on one line. A range whose widest value needs more widens its own readout.\", hook: true },\n { name: '--wzl-select-border', type: \"border\", group: \"select\", defaultValue: \"1px solid var(--wzl-border)\", description: \"Border of a Select’s trigger. Unset, a boxed trigger draws --wzl-border and a bare one a transparent border of the same width.\", hook: true },\n { name: '--wzl-select-fg', type: \"color\", group: \"select\", defaultValue: \"var(--wzl-fg)\", description: \"Text color of a Select’s trigger.\", 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 { name: '--wzl-titlebar-align', type: \"string\", group: \"titlebar\", defaultValue: \"start\", description: \"Text alignment of a `titlebar` frame’s title along its strip.\", hook: true },\n { name: '--wzl-titlebar-border', type: \"border\", group: \"titlebar\", defaultValue: \"1px solid var(--_edge)\", description: \"Border of a `titlebar` frame. A theme whose --wzl-bevel-raised draws the edge sets it to a border of no width.\", hook: true },\n { name: '--wzl-titlebar-fg', type: \"color\", group: \"titlebar\", defaultValue: \"var(--_edge-ink)\", description: \"Text color on a `titlebar` frame’s strip. Unset, black or white, whichever reads on the edge color.\", hook: true },\n { name: '--wzl-titlebar-inset', type: \"dimension\", group: \"titlebar\", defaultValue: \"0\", description: \"Padding between a `titlebar` frame’s edge and its strip and body: the width of the bevel a theme draws there.\", hook: true },\n { name: '--wzl-titlebar-label-pad', type: \"dimension\", group: \"titlebar\", defaultValue: \"0\", description: \"Inline padding of the patch --wzl-titlebar-label-surface paints behind a `titlebar` frame’s title.\", hook: true },\n { name: '--wzl-titlebar-label-surface', type: \"color\", group: \"titlebar\", defaultValue: \"transparent\", description: \"Background behind a `titlebar` frame’s title alone, for a strip drawn in stripes that must not run through the letters.\", hook: true },\n { name: '--wzl-titlebar-surface', type: \"color\", group: \"titlebar\", defaultValue: \"var(--_edge)\", description: \"Background of the strip a `titlebar` frame carries its title in: a color, a gradient, or stripes. Unset, the frame’s edge color. A frame that names a tint paints the tint instead.\", hook: true },\n { name: '--wzl-titlebar-weight', type: \"fontWeight\", group: \"titlebar\", defaultValue: \"var(--wzl-font-weight-bold)\", description: \"Font weight of a `titlebar` frame’s title.\", hook: true },\n { name: '--wzl-tree-current', type: \"color\", group: \"tree\", defaultValue: \"var(--wzl-accent-fg)\", description: \"Text color of the Tree row marked `current`, the page or item being shown.\", hook: true },\n { name: '--wzl-tree-fold-size', type: \"dimension\", group: \"tree\", defaultValue: \"16px\", description: \"Size of the leading glyph a Tree folds a branch by, where its branches fold by their glyphs.\", hook: true },\n { name: '--wzl-tree-font-size', type: \"dimension\", group: \"tree\", defaultValue: \"var(--wzl-font-size-sm)\", description: \"Size of a Tree row’s text.\", hook: true },\n { name: '--wzl-tree-guide', type: \"color\", group: \"tree\", defaultValue: \"var(--wzl-fg-subtle)\", description: \"Color of the bracket a Tree draws down a branch.\", hook: true },\n { name: '--wzl-tree-indent', type: \"dimension\", group: \"tree\", defaultValue: \"calc(var(--wzl-control-h-xs) + var(--wzl-space-2))\", description: \"Indent of each Tree level. Unset, it is one twisty and one gap, so a child’s twisty sits under its parent’s label.\", hook: true },\n { name: '--wzl-tree-leaf-indent', type: \"dimension\", group: \"tree\", defaultValue: \"0\", description: \"How far in from its branches' glyphs a Tree with guides sets a row that folds nothing.\", hook: true },\n { name: '--wzl-tree-row-h', type: \"dimension\", group: \"tree\", defaultValue: \"var(--wzl-control-h)\", description: \"Height of every row in a Tree below the container that sets it, and of its drag ghost. Unset, the control height.\", hook: true },\n { name: '--wzl-tree-selected', type: \"color\", group: \"tree\", defaultValue: \"var(--wzl-border)\", description: \"Background of a selected Tree row.\", hook: true },\n];\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hexToRgbBytes, oklchDegToHex, hexToOklchDeg, srgbU8ToOklab } from '@weasel-js/paint';
|
|
2
2
|
|
|
3
3
|
// src/engine/color/oklch.ts
|
|
4
4
|
var hexToRgb = hexToRgbBytes;
|
|
@@ -47,9 +47,9 @@ function peakLightness(H) {
|
|
|
47
47
|
}
|
|
48
48
|
return bestL;
|
|
49
49
|
}
|
|
50
|
-
var PEAK =
|
|
51
|
-
|
|
52
|
-
var peakAt = (H) => PEAK[(
|
|
50
|
+
var PEAK = new Array(360);
|
|
51
|
+
var hueIndex = (H) => (Math.round(H) % 360 + 360) % 360;
|
|
52
|
+
var peakAt = (H) => PEAK[hueIndex(H)] ??= peakLightness(hueIndex(H));
|
|
53
53
|
function place(H, c) {
|
|
54
54
|
const L = peakAt(H) + (c.lightnessTarget - peakAt(H)) * c.lightnessPull;
|
|
55
55
|
return toHex(L, chromaCap(L, H) * c.chromaFraction, H);
|
|
@@ -380,5 +380,5 @@ function anchorFromHex(hex, name) {
|
|
|
380
380
|
}
|
|
381
381
|
|
|
382
382
|
export { CHROMA_WEIGHT, DEFAULT_CONSTRAINTS, anchorFromHex, chromaCap, contrast, deltaE, floorDegrees, generate, hexToRgb, hueGap, hueName, luminance, toHex, toHexPreview, toLab, toLch, vividAt };
|
|
383
|
-
//# sourceMappingURL=chunk-
|
|
384
|
-
//# sourceMappingURL=chunk-
|
|
383
|
+
//# sourceMappingURL=chunk-UKUFGM6D.js.map
|
|
384
|
+
//# sourceMappingURL=chunk-UKUFGM6D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/color/oklch.ts","../src/engine/color/generate.ts"],"names":[],"mappings":"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","file":"chunk-UKUFGM6D.js","sourcesContent":["import { hexToOklchDeg, hexToRgbBytes, oklchDegToHex, srgbU8ToOklab, type OklchDeg } from '@weasel-js/paint';\n\n/** A color in OKLCH: lightness 0–1, chroma, hue in degrees. paint's own type,\n * under the name this engine has always called it. */\nexport type Lch = OklchDeg;\n\n/** A hex color to 0–255 channels, its alpha dropped. Throws on anything else. */\nexport const hexToRgb: (hex: string) => [number, number, number] = hexToRgbBytes;\n\n/** OKLCH (lightness 0–1, chroma, hue in degrees) to `#rrggbb`. Chroma past the gamut is clipped at constant lightness. */\nexport const toHex = oklchDegToHex;\n/** `#rrggbb` to OKLCH, hue in 0–360. */\nexport const toLch: (hex: string) => Lch = hexToOklchDeg;\n\n/** The most chroma this hue can carry at this lightness, inside sRGB. */\nexport function chromaCap(L: number, H: number): number {\n return toLch(toHex(L, 0.5, H)).C;\n}\n\n/** WCAG relative luminance. */\nexport function luminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((v) => v / 255);\n const f = (u: number) => (u <= 0.04045 ? u / 12.92 : ((u + 0.055) / 1.055) ** 2.4);\n return 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n}\n\n/** WCAG contrast ratio between two hex colors, 1–21, in either order. */\nexport function contrast(a: string, b: string): number {\n const [hi, lo] = [luminance(a), luminance(b)].sort((p, q) => q - p);\n return (hi + 0.05) / (lo + 0.05);\n}\n\n/** Shortest angular distance between two hues, in degrees. */\nexport function hueGap(a: number, b: number): number {\n const d = Math.abs(a - b) % 360;\n return Math.min(d, 360 - d);\n}\n\n/** OKLab coordinates, for distance work. */\nexport function toLab(hex: string): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n return srgbU8ToOklab(r, g, b);\n}\n\n/**\n * How far apart two colors look, with chroma weighted up.\n *\n * Two things this is not. It is not WCAG contrast, which reads lightness only\n * and so scores a vivid yellow on white at 1.2:1 and calls it illegible when\n * what separates them is chroma. And it is not plain euclidean OKLab distance:\n * OKLab's chroma range is small beside its lightness range, so an unweighted\n * distance is almost all lightness, and it ranks a mid-gray as further from\n * white than a pale blue is.\n *\n * `CHROMA_WEIGHT` restores CIELAB's ordering. It is a weight, not a unit\n * conversion, so these numbers do not transfer to or from CIELAB dE.\n *\n * Rough calibration in the weighted space: 0.17 is a pale wash against paper,\n * 0.25 is a real color, 0.5 is unmistakable.\n */\nexport const CHROMA_WEIGHT = 3;\n\n/** Perceptual distance between two hex colors: OKLab with chroma weighted by {@link CHROMA_WEIGHT}. */\nexport function deltaE(a: string, b: string): number {\n const [l1, a1, b1] = toLab(a);\n const [l2, a2, b2] = toLab(b);\n return Math.hypot(l1 - l2, CHROMA_WEIGHT * (a1 - a2), CHROMA_WEIGHT * (b1 - b2));\n}\n\n/** The most chroma this hue can carry at this lightness, as a hex. */\nexport function vividAt(L: number, H: number): string {\n return toHex(L, chromaCap(L, H), H);\n}\n","import {\n chromaCap,\n contrast,\n CHROMA_WEIGHT,\n deltaE,\n hueGap,\n toHex,\n toLab,\n toLch,\n type Lch,\n} from './oklch.ts';\n\n/**\n * A hue pinned into the palette with its own lightness.\n *\n * Anchors exist because the lightness law excludes some colors entirely. Yellow\n * is the case that forces it: its chroma peaks at L 0.95 — higher than any other\n * hue — so a law that picks lightness for legibility silently yields gold, then\n * olive, and never reports that yellow was dropped.\n */\nexport interface Anchor {\n readonly name: string;\n readonly hue: number;\n readonly lightness: number;\n /**\n * Absolute chroma. Omitted means \"as much as the gamut allows here\", which is\n * what a bright color wants. A muted color has to say so: hue and lightness\n * alone can only describe vivid colors, so a tan asked for at max chroma\n * comes back as an amber.\n */\n readonly chroma?: number;\n}\n\n/** Every constraint the generator honors. A zero disables the ones that gate. */\nexport interface Constraints {\n readonly count: number;\n /**\n * Minimum hue separation, as a share of the even `360 / count` spacing an\n * ideal set would have. 0 disables the check.\n *\n * A share rather than degrees, because absolute degrees mean different things\n * at different cardinalities: 30 degrees is generous for 8 colors and\n * impossible for 16, so a floor in degrees silently becomes unsatisfiable as\n * the set grows.\n */\n readonly hueFloor: number;\n /** Minimum WCAG contrast every swatch must clear against `surface`. 0 disables. */\n readonly minContrast: number;\n /**\n * Minimum perceptual distance from `surface`. 0 disables.\n *\n * The gate WCAG contrast cannot express. Contrast reads only lightness, so it\n * scores a vivid yellow on white at 1.2:1 and calls it illegible, when what\n * separates them is chroma. Gate on this instead of on lightness and a yellow\n * can be a yellow; gate on contrast alone and the search quietly returns gold.\n */\n readonly minSurfaceDistance: number;\n /** Minimum perceptual distance between any two swatches. 0 disables. */\n readonly minDistance: number;\n readonly surface: string;\n /** Where `lightnessPull` drags each hue, away from its own chroma peak. */\n readonly lightnessTarget: number;\n /** 0 leaves every hue at its chroma peak; 1 puts them all at the target. */\n readonly lightnessPull: number;\n /** Fraction of the in-gamut chroma ceiling to take. */\n readonly chromaFraction: number;\n /** 0 leaves chroma alone; 1 pulls every hue to the set mean. */\n readonly equalize: number;\n readonly anchors: readonly Anchor[];\n readonly order: 'hue' | 'farthest';\n}\n\n/** One color of a generated {@link Palette}. */\nexport interface Swatch {\n readonly name: string;\n readonly hex: string;\n readonly lch: Lch;\n /** Came from one of the constraints' anchors. */\n readonly anchored: boolean;\n /** WCAG contrast against the constraints' `surface`. */\n readonly contrast: number;\n}\n\n/** Measurements of a generated palette as a whole: the minimums are over every swatch, or every pair. */\nexport interface Stats {\n readonly meanChroma: number;\n readonly chromaSpread: number;\n readonly lightnessSpread: number;\n readonly minHueGap: number;\n /** The realized floor as a share of even spacing, comparable across sizes. */\n readonly hueFloorShare: number;\n readonly minContrast: number;\n readonly minSurfaceDistance: number;\n readonly minDistance: number;\n}\n\n/** What {@link generate} returns. */\nexport interface Palette {\n readonly swatches: readonly Swatch[];\n readonly stats: Stats;\n /** False when no hue arrangement satisfied the gates; `swatches` is then the\n * best unconstrained attempt, so the lab still has something to draw. */\n readonly feasible: boolean;\n}\n\n/** Lightness at which a hue reaches its highest chroma. */\nfunction peakLightness(H: number): number {\n let bestL = 0.5;\n let bestC = -1;\n for (let L = 0.32; L <= 0.96; L += 0.01) {\n const c = chromaCap(L, H);\n if (c > bestC) {\n bestC = c;\n bestL = L;\n }\n }\n return bestL;\n}\n\nconst PEAK: (number | undefined)[] = new Array(360);\nconst hueIndex = (H: number) => ((Math.round(H) % 360) + 360) % 360;\nconst peakAt = (H: number) => (PEAK[hueIndex(H)] ??= peakLightness(hueIndex(H)));\n\n/** The default law: sit near this hue's chroma peak, pulled toward the target. */\nfunction place(H: number, c: Constraints): string {\n const L = peakAt(H) + (c.lightnessTarget - peakAt(H)) * c.lightnessPull;\n return toHex(L, chromaCap(L, H) * c.chromaFraction, H);\n}\n\nconst HUE_NAMES: readonly (readonly [number, string])[] = [\n [15, 'rose'], [45, 'red'], [62, 'orange'], [85, 'amber'], [100, 'gold'],\n [122, 'yellow'], [138, 'lime'], [165, 'green'], [195, 'teal'], [218, 'cyan'],\n [245, 'sky'], [275, 'blue'], [310, 'violet'], [345, 'fuchsia'],\n];\n/** A plain color name for a hue in degrees: `red`, `teal`, `violet`. */\nexport function hueName(H: number): string {\n for (const [ceil, name] of HUE_NAMES) if (H < ceil) return name;\n return 'rose';\n}\n\n/** Disambiguate repeats: two hues can land in one name's band. */\nfunction uniqueNames(hues: number[]): string[] {\n const seen = new Map<string, number>();\n return hues.map((h) => {\n const base = hueName(h);\n const n = (seen.get(base) ?? 0) + 1;\n seen.set(base, n);\n return n === 1 ? base : `${base}-${n}`;\n });\n}\n\n/**\n * Pull each chroma toward the set mean.\n *\n * Raising a chroma is not always possible in place — the weak hues sit on the\n * gamut ceiling already — so this walks lightness to where the target chroma\n * exists, choosing the nearest such lightness. Anchors keep theirs and are\n * only ever desaturated. That asymmetry is why equalizing moves the lightness\n * spread as well.\n */\nfunction equalizeChroma(hexes: string[], k: number, anchored: boolean[]): string[] {\n if (k <= 0) return hexes;\n const lch = hexes.map(toLch);\n const target = lch.reduce((sum, x) => sum + x.C, 0) / lch.length;\n\n return lch.map((x, i) => {\n const wanted = x.C + (target - x.C) * k;\n if (anchored[i]) return toHex(x.L, Math.min(wanted, chromaCap(x.L, x.H)), x.H);\n if (chromaCap(x.L, x.H) >= wanted) return toHex(x.L, wanted, x.H);\n\n let bestL = x.L;\n let bestDistance = Infinity;\n for (let L = 0.30; L <= 0.96; L += 0.005) {\n if (chromaCap(L, x.H) >= wanted) {\n const d = Math.abs(L - x.L);\n if (d < bestDistance) {\n bestDistance = d;\n bestL = L;\n }\n }\n }\n if (bestDistance === Infinity) {\n const pk = peakAt(x.H);\n return toHex(pk, chromaCap(pk, x.H), x.H);\n }\n return toHex(bestL, wanted, x.H);\n });\n}\n\n/**\n * Reorder so every prefix stays as separated as a set that size can be.\n * A consumer taking the first three of ten should get three colors 87° apart,\n * not three neighbors.\n */\nfunction farthestFirst(hues: number[]): number[] {\n const order = [0];\n while (order.length < hues.length) {\n let best = -1;\n let bestGap = -1;\n for (let i = 0; i < hues.length; i += 1) {\n if (order.includes(i)) continue;\n const gap = Math.min(...order.map((j) => hueGap(hues[i], hues[j])));\n if (gap > bestGap) {\n bestGap = gap;\n best = i;\n }\n }\n order.push(best);\n }\n return order;\n}\n\n/**\n * Search hue positions that maximize mean chroma subject to the gates.\n *\n * Seeds matter: a uniform 360/n ring can never open a `2 * minHueGap` hole\n * around a pinned hue, so with anchors the seeds spread across the arc the\n * anchors leave free instead.\n */\n/** The share-of-even floor, in degrees, for a set of this size. */\nexport function floorDegrees(c: Pick<Constraints, 'hueFloor' | 'count'>): number {\n return c.hueFloor <= 0 ? 0 : (c.hueFloor * 360) / Math.max(1, c.count);\n}\n\nfunction searchHues(c: Constraints): number[] | null {\n const minGapDeg = floorDegrees(c);\n const anchorHues = c.anchors.map((a) => a.hue);\n const anchorHexes = c.anchors.map(toHexPreview);\n const freeCount = c.count - c.anchors.length;\n if (freeCount < 0) return null;\n\n // Hue is an integer 0-359 and the constraints are fixed for one call, so the\n // placed color, its realized hue and its contrast are each computed once.\n interface Placed {\n hex: string;\n hue: number;\n contrast: number;\n chroma: number;\n surfaceDistance: number;\n /** OKLab coordinates, chroma pre-weighted, so a pairwise distance in the\n * search is three subtractions rather than two color conversions. */\n lab: readonly [number, number, number];\n }\n const weighted = (hex: string): readonly [number, number, number] => {\n const [L, a, b] = toLab(hex);\n return [L, CHROMA_WEIGHT * a, CHROMA_WEIGHT * b];\n };\n const between = (p: readonly [number, number, number], q: readonly [number, number, number]) =>\n Math.hypot(p[0] - q[0], p[1] - q[1], p[2] - q[2]);\n const placed = new Map<number, Placed>();\n const at = (H: number) => {\n const key = ((Math.round(H) % 360) + 360) % 360;\n let v = placed.get(key);\n if (!v) {\n const hex = place(key, c);\n const lch = toLch(hex);\n v = {\n hex,\n hue: lch.H,\n contrast: contrast(hex, c.surface),\n chroma: lch.C,\n surfaceDistance: deltaE(hex, c.surface),\n lab: weighted(hex),\n };\n placed.set(key, v);\n }\n return v;\n };\n const anchorMeta = anchorHexes.map((hex) => {\n const lch = toLch(hex);\n return {\n hex,\n hue: lch.H,\n contrast: contrast(hex, c.surface),\n chroma: lch.C,\n surfaceDistance: deltaE(hex, c.surface),\n lab: weighted(hex),\n };\n });\n const metaFor = (free: number[]) => [...anchorMeta, ...free.map(at)];\n\n /**\n * How far a set is from legal, in one number: degrees of hue crowding plus\n * contrast shortfall. Zero means feasible. The search descends this first and\n * only then maximizes chroma, because a seed ring is often illegal and the\n * legal region may not be reachable by chroma-improving moves alone.\n */\n const penalty = (free: number[]): number => {\n const m = metaFor(free);\n let p = 0;\n if (minGapDeg > 0) {\n for (let i = 0; i < m.length; i += 1) {\n for (let j = i + 1; j < m.length; j += 1) {\n const short = minGapDeg - hueGap(m[i].hue, m[j].hue);\n if (short > 0) p += short;\n }\n }\n }\n if (c.minContrast > 0) {\n for (const x of m) {\n const short = c.minContrast - x.contrast;\n if (short > 0) p += short * 40;\n }\n }\n // Distances are small numbers in OKLab (0.10 already reads as two colors),\n // so they are weighted up to sit on the same scale as degrees of crowding.\n if (c.minSurfaceDistance > 0) {\n for (const x of m) {\n const short = c.minSurfaceDistance - x.surfaceDistance;\n if (short > 0) p += short * 400;\n }\n }\n if (c.minDistance > 0) {\n for (let i = 0; i < m.length; i += 1) {\n for (let j = i + 1; j < m.length; j += 1) {\n const short = c.minDistance - between(m[i].lab, m[j].lab);\n if (short > 0) p += short * 400;\n }\n }\n }\n return p;\n };\n const score = (free: number[]) => {\n const m = metaFor(free);\n return m.reduce((sum, x) => sum + x.chroma, 0) / m.length;\n };\n if (freeCount === 0) return penalty([]) > 0 ? null : [];\n\n const seeds: number[][] = [];\n const seedStep = Math.max(6, Math.round(freeCount * 1.6));\n for (let start = 0; start < 360; start += seedStep) {\n seeds.push(Array.from({ length: freeCount }, (_, i) => Math.round((start + (i * 360) / freeCount) % 360)));\n }\n if (anchorHues.length > 0) {\n // A uniform ring can never open a 2 * minHueGap hole around a pinned hue,\n // so also seed across the arc the anchors leave free.\n const base = anchorHues[0];\n const span = 360 - 2 * Math.max(minGapDeg, 1);\n for (let jitter = -8; jitter <= 8; jitter += 2) {\n for (const divisor of [Math.max(1, freeCount - 1), freeCount]) {\n seeds.push(\n Array.from({ length: freeCount }, (_, i) =>\n Math.round((((base + minGapDeg + jitter + (i * span) / divisor) % 360) + 360) % 360),\n ),\n );\n }\n }\n }\n\n const STEPS = [-16, -8, -4, -2, -1, 1, 2, 4, 8, 16];\n\n /**\n * Everything one position contributes to the penalty: its own shortfalls plus\n * the pairs it takes part in.\n *\n * `descend` moves exactly one hue at a time, so recomputing the whole set for\n * each candidate costs O(n^2) to learn about O(n) changed terms. Scoring the\n * moved position alone is what keeps the count slider live at 16 colors.\n */\n const penaltyAt = (m: readonly Placed[], i: number): number => {\n let p = 0;\n const x = m[i];\n if (c.minContrast > 0) {\n const short = c.minContrast - x.contrast;\n if (short > 0) p += short * 40;\n }\n if (c.minSurfaceDistance > 0) {\n const short = c.minSurfaceDistance - x.surfaceDistance;\n if (short > 0) p += short * 400;\n }\n for (let j = 0; j < m.length; j += 1) {\n if (j === i) continue;\n if (minGapDeg > 0) {\n const short = minGapDeg - hueGap(x.hue, m[j].hue);\n if (short > 0) p += short;\n }\n if (c.minDistance > 0) {\n const short = c.minDistance - between(x.lab, m[j].lab);\n if (short > 0) p += short * 400;\n }\n }\n return p;\n };\n\n const descend = (hues: number[], useChroma: boolean, keepLegal: boolean) => {\n const current = [...hues];\n let meta = metaFor(current);\n const offset = anchorMeta.length;\n for (let iteration = 0; iteration < 120; iteration += 1) {\n let improved = false;\n for (let i = 0; i < freeCount; i += 1) {\n const slot = offset + i;\n const beforeP = penaltyAt(meta, slot);\n const beforeC = meta[slot].chroma;\n for (const delta of STEPS) {\n const next = (((current[i] + delta) % 360) + 360) % 360;\n if (next === current[i]) continue;\n const candidate = at(next);\n const trialMeta = meta.slice();\n trialMeta[slot] = candidate;\n const afterP = penaltyAt(trialMeta, slot);\n const better = useChroma\n ? (keepLegal ? afterP <= beforeP : true) && candidate.chroma > beforeC\n : afterP < beforeP;\n if (!better) continue;\n if (keepLegal && afterP > beforeP) continue;\n current[i] = next;\n meta = trialMeta;\n improved = true;\n break;\n }\n }\n if (!improved) break;\n }\n return current;\n };\n\n let best: number[] | null = null;\n let bestScore = -1;\n for (const seed of seeds) {\n const repaired = penalty(seed) > 0 ? descend(seed, false, false) : seed;\n if (penalty(repaired) > 0) continue;\n const tuned = descend(repaired, true, true);\n if (penalty(tuned) > 0) continue;\n const s = score(tuned);\n if (s > bestScore) {\n bestScore = s;\n best = tuned;\n }\n }\n return best;\n}\n\n/** Closest any two colors in the set look. */\nfunction pairwiseMin(hexes: string[]): number {\n if (hexes.length < 2) return 1;\n let min = Infinity;\n for (let i = 0; i < hexes.length; i += 1) {\n for (let j = i + 1; j < hexes.length; j += 1) min = Math.min(min, deltaE(hexes[i], hexes[j]));\n }\n return min;\n}\n\nfunction summarize(swatches: Swatch[], surface: string): Stats {\n const cs = swatches.map((s) => s.lch.C);\n const ls = swatches.map((s) => s.lch.L);\n let gap = 360;\n for (let i = 0; i < swatches.length; i += 1) {\n for (let j = i + 1; j < swatches.length; j += 1) {\n gap = Math.min(gap, hueGap(swatches[i].lch.H, swatches[j].lch.H));\n }\n }\n return {\n meanChroma: cs.reduce((a, b) => a + b, 0) / (cs.length || 1),\n chromaSpread: Math.max(...cs) - Math.min(...cs),\n lightnessSpread: Math.max(...ls) - Math.min(...ls),\n minHueGap: swatches.length > 1 ? gap : 360,\n hueFloorShare: swatches.length > 1 ? (gap * swatches.length) / 360 : 1,\n minContrast: Math.min(...swatches.map((s) => contrast(s.hex, surface))),\n minSurfaceDistance: Math.min(...swatches.map((s) => deltaE(s.hex, surface))),\n minDistance: pairwiseMin(swatches.map((s) => s.hex)),\n };\n}\n\n/**\n * A categorical palette of `count` swatches, anchors included, satisfying the gates. When no hue arrangement\n * satisfies them the result is still a full palette, with `feasible` false.\n */\nexport function generate(c: Constraints): Palette {\n const found = searchHues(c);\n const feasible = found !== null;\n // An infeasible gate still has to draw something, so fall back to an even ring.\n const free =\n found ??\n Array.from({ length: Math.max(0, c.count - c.anchors.length) }, (_, i) =>\n Math.round((i * 360) / Math.max(1, c.count - c.anchors.length)),\n );\n\n const hues = [...c.anchors.map((a) => a.hue), ...free];\n const anchoredFlags = [...c.anchors.map(() => true), ...free.map(() => false)];\n const raw = [\n ...c.anchors.map(toHexPreview),\n ...free.map((h) => place(h, c)),\n ];\n const hexes = equalizeChroma(raw, c.equalize, anchoredFlags);\n\n const order =\n c.order === 'farthest'\n ? farthestFirst(hues)\n : [...hues.keys()].sort((a, b) => hues[a] - hues[b]);\n\n const names = uniqueNames(order.map((i) => toLch(hexes[i]).H));\n const swatches: Swatch[] = order.map((i, position) => ({\n name: c.anchors[i]?.name ?? names[position],\n hex: hexes[i],\n lch: toLch(hexes[i]),\n anchored: anchoredFlags[i],\n contrast: contrast(hexes[i], c.surface),\n }));\n\n return { swatches, stats: summarize(swatches, c.surface), feasible };\n}\n\n/** What the lab opens with: the set this palette work landed on. */\nexport const DEFAULT_CONSTRAINTS: Constraints = {\n count: 10,\n hueFloor: 0.9,\n minContrast: 4,\n surface: '#181a1e',\n lightnessTarget: 0.72,\n lightnessPull: 0.4,\n chromaFraction: 0.95,\n equalize: 0,\n minSurfaceDistance: 0.25,\n minDistance: 0.22,\n anchors: [],\n order: 'farthest',\n};\n\n/** The color an anchor will actually contribute, for a swatch beside its controls. */\nexport function toHexPreview(a: Pick<Anchor, 'hue' | 'lightness' | 'chroma'>): string {\n const cap = chromaCap(a.lightness, a.hue);\n return toHex(a.lightness, a.chroma === undefined ? cap : Math.min(a.chroma, cap), a.hue);\n}\n\n/**\n * An anchor taken from an existing color — a brand hex, or a color lifted from\n * somewhere else in the theme. Lightness comes along with the hue, which is the\n * point: the reason to pin a color is usually that the lightness law would not\n * have chosen its lightness. `name` defaults to the hue's {@link hueName}.\n */\nexport function anchorFromHex(hex: string, name?: string): Anchor {\n const { L, C, H } = toLch(hex);\n return {\n name: name ?? hueName(H),\n hue: Math.round(H),\n lightness: Number(L.toFixed(3)),\n chroma: Number(C.toFixed(4)),\n };\n}\n\n"]}
|