@loworbitstudio/visor-theme-engine 0.18.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/index.d.ts +5 -1
- package/dist/adapters/index.js +72 -25
- package/dist/{chunk-BUWBBUFG.js → chunk-JDYLDGUN.js} +610 -20
- package/dist/index.d.ts +272 -4
- package/dist/index.js +216 -4
- package/dist/{types-Cvm7vFwe.d.ts → types-BG-YT4JW.d.ts} +176 -1
- package/package.json +1 -1
- package/src/visor-theme.schema.json +134 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { F as FontResolveOptions, a as FontResolution, V as VisorTypography, b as FontDisplayStrategy, T as ThemeFontResult, G as GoogleFontEntry, c as VisorBrand, B as BrandSlot, d as BrandSource, e as BrandResolution, C as ColorScheme, f as ThemeBrandResult, g as BrandStrategy, h as BrandStrategyContext, i as BrandStrategyIssue, j as BrandStrategyValidationResult, S as SerializedBrandStrategy, R as ResolvedThemeConfig, k as GeneratedPrimitives, l as ThemeOutput, m as ThemeData, n as VisorThemeConfig, o as FullShadeScale, p as ColorRole, q as SelectiveShadeScale, r as RGB, P as ParsedColor, O as OKLCH, s as SemanticTokens, t as ShadeStep } from './types-
|
|
2
|
-
export { u as BRAND_VARIANTS, v as BRAND_VISIBILITIES, w as BrandAccessibility, x as BrandArchetype, y as BrandBoilerplate, z as BrandColorPairing, A as BrandColorUsage, D as BrandContrastTarget, E as BrandGoverns, H as BrandLexiconEntry, I as BrandMessaging, J as BrandPersonalityTrait, K as BrandPillar, L as BrandPositioning, M as BrandStrategyIssueSeverity, N as BrandToneEntry, Q as BrandVariant, U as BrandVisibility, W as BrandVoice, X as BrandVoiceTrait, Y as
|
|
1
|
+
import { F as FontResolveOptions, a as FontResolution, V as VisorTypography, b as FontDisplayStrategy, T as ThemeFontResult, G as GoogleFontEntry, c as VisorBrand, B as BrandSlot, d as BrandSource, e as BrandResolution, C as ColorScheme, f as ThemeBrandResult, g as BrandStrategy, h as BrandStrategyContext, i as BrandStrategyIssue, j as BrandStrategyValidationResult, S as SerializedBrandStrategy, R as ResolvedThemeConfig, k as GeneratedPrimitives, l as ThemeOutput, m as ThemeData, n as VisorThemeConfig, o as FullShadeScale, p as ColorRole, q as SelectiveShadeScale, r as RGB, P as ParsedColor, O as OKLCH, s as SemanticTokens, t as ShadeStep } from './types-BG-YT4JW.js';
|
|
2
|
+
export { u as BRAND_VARIANTS, v as BRAND_VISIBILITIES, w as BrandAccessibility, x as BrandArchetype, y as BrandBoilerplate, z as BrandColorPairing, A as BrandColorUsage, D as BrandContrastTarget, E as BrandGoverns, H as BrandLexiconEntry, I as BrandMessaging, J as BrandPersonalityTrait, K as BrandPillar, L as BrandPositioning, M as BrandStrategyIssueSeverity, N as BrandToneEntry, Q as BrandVariant, U as BrandVisibility, W as BrandVoice, X as BrandVoiceTrait, Y as COMPONENT_TOKEN_FAMILIES, Z as COMPONENT_TOKEN_FAMILY_BY_NAME, _ as ColorFormat, $ as ComponentTokenBinding, a0 as ComponentTokenBindings, a1 as ComponentTokenConsumer, a2 as ComponentTokenFamily, a3 as ComponentTokenSpec, a4 as DEFAULT_BRAND_STRATEGY_SURFACES, a5 as DEFAULT_BRAND_STRATEGY_TONE_STATES, a6 as FontSource, a7 as GOVERNS_WILDCARD, a8 as RGBA, a9 as ResolvedComponentTokens, aa as SemanticTokenValue, ab as allComponentTokenNames, ac as componentTokenName, ad as hasComponentBindings, ae as resolveComponentBindings, af as validateComponentBindings } from './types-BG-YT4JW.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Font resolver — maps font family names to loadable font resources.
|
|
@@ -585,7 +585,7 @@ var properties = {
|
|
|
585
585
|
},
|
|
586
586
|
scale: {
|
|
587
587
|
type: "number",
|
|
588
|
-
description: "Type scale multiplier applied to the font-size ramp. Default: 1."
|
|
588
|
+
description: "Type scale multiplier applied to the font-size ramp: every --font-size-* step is multiplied by it, and the page inherits the scaled --font-size-base. Default: 1. CSS adapters only — the Flutter adapter emits Material 3 slot sizes verbatim and ignores this field."
|
|
589
589
|
},
|
|
590
590
|
"text-on-light": {
|
|
591
591
|
type: "string",
|
|
@@ -1025,6 +1025,125 @@ var properties = {
|
|
|
1025
1025
|
}
|
|
1026
1026
|
}
|
|
1027
1027
|
},
|
|
1028
|
+
components: {
|
|
1029
|
+
type: "object",
|
|
1030
|
+
description: "Component-scoped theme bindings for the admin-UI families (VI-625). Keyed by family, then by token key; the value is a string (both modes) or { light, dark }. Every token falls back to its Tier-1 expression, so omitting this block renders exactly as before. Key names are validated against the contract in component-tokens.ts.",
|
|
1031
|
+
additionalProperties: false,
|
|
1032
|
+
properties: {
|
|
1033
|
+
table: {
|
|
1034
|
+
type: "object",
|
|
1035
|
+
description: "Table head, row and cell treatment. The retro measured the same header cell rendered four ways across one admin app; binding this family pins it once. Keys: font-size, text-color, head-height, head-padding-x, head-font-family, head-font-size, head-font-weight, head-letter-spacing, head-text-transform, head-color, head-bg, row-border, row-hover-bg, row-selected-bg, cell-padding, cell-font-size, cell-color, cell-bg, cell-border-top, footer-bg, caption-color.",
|
|
1036
|
+
additionalProperties: {
|
|
1037
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1038
|
+
}
|
|
1039
|
+
},
|
|
1040
|
+
"data-table": {
|
|
1041
|
+
type: "object",
|
|
1042
|
+
description: "The admin-ui Tier-2 data-table surface stack (D3). Shared between the Table primitive and the DataTable shell so a list page and its table read as one surface. Keys: header-bg, row-bg, container-radius, container-shadow, row-py, cell-px, header-font-size.",
|
|
1043
|
+
additionalProperties: {
|
|
1044
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1045
|
+
}
|
|
1046
|
+
},
|
|
1047
|
+
chip: {
|
|
1048
|
+
type: "object",
|
|
1049
|
+
description: "Chip / filter-pill treatment. The retro found the same mono status chip at 8.5 / 9 / 9.5 / 10 / 11px with tracking .03–.14em across nine implementations; this family is the single dial. Keys: radius, border, bg, text-color, font-family, font-weight, letter-spacing, text-transform, sm-height, sm-padding-x, sm-font-size, md-height, md-padding-x, md-font-size, lg-height, lg-padding-x, lg-font-size, selected-bg, selected-border-color, selected-text-color.",
|
|
1050
|
+
additionalProperties: {
|
|
1051
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
badge: {
|
|
1055
|
+
type: "object",
|
|
1056
|
+
description: "Badge treatment — the D3 Tier-2 `--badge-text-transform` / `-letter-spacing` / `-font-size` / `-font-weight` set, promoted from the admin-ui audit to a bindable contract. Keys: radius, border, font-family, font-weight, text-transform, letter-spacing, font-size, md-padding, md-gap.",
|
|
1057
|
+
additionalProperties: {
|
|
1058
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1059
|
+
}
|
|
1060
|
+
},
|
|
1061
|
+
"status-badge": {
|
|
1062
|
+
type: "object",
|
|
1063
|
+
description: "Status-badge indicator dot and the mono readout label. Chrome is inherited from the Badge family. Keys: dot-size, dot-radius, mono-font-family, mono-font-size, mono-letter-spacing.",
|
|
1064
|
+
additionalProperties: {
|
|
1065
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1066
|
+
}
|
|
1067
|
+
},
|
|
1068
|
+
"filter-bar": {
|
|
1069
|
+
type: "object",
|
|
1070
|
+
description: "The operator's named case: \"the filter bar above the table in many admin pages was pretty different from one to the next; that should be streamlined.\" Keys: bg, border, radius, padding, gap, text-color, dense-padding, dense-gap, control-radius, results-font-size, results-color.",
|
|
1071
|
+
additionalProperties: {
|
|
1072
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1073
|
+
}
|
|
1074
|
+
},
|
|
1075
|
+
"page-header": {
|
|
1076
|
+
type: "object",
|
|
1077
|
+
description: "Page-header lockup. The retro found the page title rendered five ways across one app. Keys: gap, text-color, leading-gap, eyebrow-font-size, eyebrow-font-weight, eyebrow-letter-spacing, eyebrow-text-transform, eyebrow-color, title-family, title-size, title-leading, title-font-size, title-font-weight, title-letter-spacing, title-color, description-font-size, description-color, actions-gap.",
|
|
1078
|
+
additionalProperties: {
|
|
1079
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1080
|
+
}
|
|
1081
|
+
},
|
|
1082
|
+
"empty-state": {
|
|
1083
|
+
type: "object",
|
|
1084
|
+
description: "Empty-state placard — surface, icon chip and copy scale. Keys: radius, text-color, gap, padding, bg, border, icon-size, icon-radius, icon-bg, icon-color, heading-font-family, heading-font-size, heading-font-weight, heading-color, description-font-size, description-color, actions-gap.",
|
|
1085
|
+
additionalProperties: {
|
|
1086
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1087
|
+
}
|
|
1088
|
+
},
|
|
1089
|
+
banner: {
|
|
1090
|
+
type: "object",
|
|
1091
|
+
description: "Full-width notice bar. The retro found six separate banner systems across ~180 instances in one app; binding this family collapses them to one. Keys: padding, gap, font-size, radius, border-width, shadow, title-font-weight, description-font-size, info-bg, info-text-color, info-border-color, warning-bg, warning-text-color, warning-border-color, error-bg, error-text-color, error-border-color, success-bg, success-text-color, success-border-color.",
|
|
1092
|
+
additionalProperties: {
|
|
1093
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1094
|
+
}
|
|
1095
|
+
},
|
|
1096
|
+
sidebar: {
|
|
1097
|
+
type: "object",
|
|
1098
|
+
description: "Sidebar chrome and nav-item treatment. The palette roles (`bg`, `text`, `border`, `accent-*`) already ship defaults from visor-core's `visor-semantic` layer and are read bare; the structural roles below are new in VI-625. Keys: bg, text, text-muted, border, accent-bg, accent-text, header-padding, footer-padding, content-padding, menu-gap, group-label-height, group-label-font-size, group-label-font-weight, group-label-letter-spacing, group-label-text-transform, item-radius, item-gap, item-font-size, item-font-weight, item-letter-spacing, item-text-transform, item-height, item-padding, item-active-font-weight.",
|
|
1099
|
+
additionalProperties: {
|
|
1100
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1101
|
+
}
|
|
1102
|
+
},
|
|
1103
|
+
tabs: {
|
|
1104
|
+
type: "object",
|
|
1105
|
+
description: "Tab rail and trigger treatment, for both the segmented (`default`) and underlined (`line`) variants. Keys: list-radius, list-height, list-padding, list-color, list-bg, line-border-bottom, trigger-radius, trigger-padding, trigger-font-size, trigger-font-weight, trigger-letter-spacing, trigger-text-transform, trigger-color, trigger-active-bg, trigger-active-color, trigger-active-shadow, indicator-height, indicator-color.",
|
|
1106
|
+
additionalProperties: {
|
|
1107
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1108
|
+
}
|
|
1109
|
+
},
|
|
1110
|
+
skeleton: {
|
|
1111
|
+
type: "object",
|
|
1112
|
+
description: "Loading-placeholder shimmer and the content-shape geometry the admin list/table/detail skeletons use. Keys: from, to, radius, duration, logo-width, logo-height, pill-width, pill-height, line-h1-height, line-heading-height, line-body-height, avatar-size, avatar-lg-size, badge-width, badge-height, row-gap, row-padding, row-border-bottom.",
|
|
1113
|
+
additionalProperties: {
|
|
1114
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1115
|
+
}
|
|
1116
|
+
},
|
|
1117
|
+
spinner: {
|
|
1118
|
+
type: "object",
|
|
1119
|
+
description: "Inline loading ring — track, leading edge, per-size geometry and cycle length. Keys: track-color, edge-color, primary-edge-color, radius, duration, xs-size, xs-border-width, sm-size, sm-border-width, md-size, md-border-width.",
|
|
1120
|
+
additionalProperties: {
|
|
1121
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1122
|
+
}
|
|
1123
|
+
},
|
|
1124
|
+
checkbox: {
|
|
1125
|
+
type: "object",
|
|
1126
|
+
description: "Control sizing — the D3 Tier-2 `--checkbox-size` / `-radius` / `-bg` / `-border` set, promoted from the admin-ui audit to a bindable contract. Keys: size, radius, bg, border, bg-checked, border-checked.",
|
|
1127
|
+
additionalProperties: {
|
|
1128
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1129
|
+
}
|
|
1130
|
+
},
|
|
1131
|
+
surface: {
|
|
1132
|
+
type: "object",
|
|
1133
|
+
description: "The D3 Tier-2 surface-scale extremes. `elev` is the elevated control tier the chip family already reads; `screen` is the deepest chrome tier consumed by admin pattern shells (`design-prototypes/admin-ui/tokens.css`) rather than by a Visor component. Keys: elev, screen.",
|
|
1134
|
+
additionalProperties: {
|
|
1135
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1136
|
+
}
|
|
1137
|
+
},
|
|
1138
|
+
"admin-ui": {
|
|
1139
|
+
type: "object",
|
|
1140
|
+
description: "Structural roles the admin-ui pattern owns. `marquee-family` is the display face for KPI hero figures and marquee page titles — the role the admin-ui portability audit named as the one piece of ENTR brand coupling a new theme must rebind. Keys: marquee-family.",
|
|
1141
|
+
additionalProperties: {
|
|
1142
|
+
$ref: "#/$defs/componentTokenBinding"
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
},
|
|
1028
1147
|
migrate: {
|
|
1029
1148
|
type: "object",
|
|
1030
1149
|
description: "Migration metadata consumed by `visor migrate` commands. Does not affect CSS generation or theme application.",
|
|
@@ -1041,6 +1160,26 @@ var properties = {
|
|
|
1041
1160
|
}
|
|
1042
1161
|
};
|
|
1043
1162
|
var $defs = {
|
|
1163
|
+
componentTokenBinding: {
|
|
1164
|
+
description: "A component-token binding: one string for both modes, or per-mode values.",
|
|
1165
|
+
oneOf: [
|
|
1166
|
+
{
|
|
1167
|
+
type: "string"
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
type: "object",
|
|
1171
|
+
additionalProperties: false,
|
|
1172
|
+
properties: {
|
|
1173
|
+
light: {
|
|
1174
|
+
type: "string"
|
|
1175
|
+
},
|
|
1176
|
+
dark: {
|
|
1177
|
+
type: "string"
|
|
1178
|
+
}
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
]
|
|
1182
|
+
},
|
|
1044
1183
|
cssColor: {
|
|
1045
1184
|
type: "string",
|
|
1046
1185
|
description: "CSS color value. Accepts hex (#RGB, #RRGGBB, #RRGGBBAA), rgb()/rgba(), hsl()/hsla(), or oklch() formats.",
|
|
@@ -1783,6 +1922,135 @@ declare function generateDarkCss(tokens: SemanticTokens, options?: {
|
|
|
1783
1922
|
}): string;
|
|
1784
1923
|
declare function generateFullBundleCss(primitives: GeneratedPrimitives, tokens: SemanticTokens, config: ResolvedThemeConfig): string;
|
|
1785
1924
|
|
|
1925
|
+
/**
|
|
1926
|
+
* Font-weight resolution (VI-639).
|
|
1927
|
+
*
|
|
1928
|
+
* The named weight ramp used to be three literals and one role leak:
|
|
1929
|
+
*
|
|
1930
|
+
* ```
|
|
1931
|
+
* --font-weight-normal: <body.weight>
|
|
1932
|
+
* --font-weight-medium: 500 // literal
|
|
1933
|
+
* --font-weight-semibold: <heading.weight> // a different concept entirely
|
|
1934
|
+
* --font-weight-bold: 700 // literal
|
|
1935
|
+
* ```
|
|
1936
|
+
*
|
|
1937
|
+
* `semibold` is not a heading. Pinning it there collapsed it onto `medium` on
|
|
1938
|
+
* every theme whose heading weight is 500 (the Blacklight family), onto
|
|
1939
|
+
* `normal` where it is 400 (knowmentum), and inverted the ramp where it is
|
|
1940
|
+
* above `bold` (strata emitted `semibold: 800` over `bold: 700`). Meanwhile the
|
|
1941
|
+
* literals ignored the `weights` array a theme actually loaded, so a theme
|
|
1942
|
+
* declaring `[200, 400, 600, 900]` got tokens pointing at faces it never
|
|
1943
|
+
* fetched — which the browser then silently substituted.
|
|
1944
|
+
*
|
|
1945
|
+
* Resolution here follows the CSS font-matching algorithm's weight-selection
|
|
1946
|
+
* order (CSS Fonts 4 §5.2) rather than naive nearest-numeric. The browser is
|
|
1947
|
+
* already performing exactly this substitution at render time, so an emitted
|
|
1948
|
+
* token becomes the weight that was *already rendering* — which is what makes
|
|
1949
|
+
* this change visually neutral everywhere except where the token was wrong.
|
|
1950
|
+
*/
|
|
1951
|
+
/** Canonical targets for the named ramp above `normal`. */
|
|
1952
|
+
declare const WEIGHT_RAMP_TARGETS: {
|
|
1953
|
+
readonly medium: 500;
|
|
1954
|
+
readonly semibold: 600;
|
|
1955
|
+
readonly bold: 700;
|
|
1956
|
+
};
|
|
1957
|
+
/** The typography slots that can declare a family, weight and weights array. */
|
|
1958
|
+
declare const SLOTS: readonly ["heading", "display", "body", "mono"];
|
|
1959
|
+
type WeightedSlot = {
|
|
1960
|
+
weight?: number;
|
|
1961
|
+
weights?: number[];
|
|
1962
|
+
} | undefined;
|
|
1963
|
+
type SlottedTypography = Partial<Record<(typeof SLOTS)[number], WeightedSlot>>;
|
|
1964
|
+
/**
|
|
1965
|
+
* The weights a theme actually loads: each slot's explicit `weights` array, or
|
|
1966
|
+
* its single `weight` when it declares none — mirroring how the font pipeline
|
|
1967
|
+
* resolves the set it fetches.
|
|
1968
|
+
*/
|
|
1969
|
+
declare function loadedWeights(typography: SlottedTypography): number[];
|
|
1970
|
+
/**
|
|
1971
|
+
* Whether any slot declares an explicit `weights` array.
|
|
1972
|
+
*
|
|
1973
|
+
* Resolution is gated on this. A theme that declares one has told us what it
|
|
1974
|
+
* loads, so we can hold every emitted token to that set. A theme that hasn't
|
|
1975
|
+
* keeps the historical emission untouched — snapping against a set inferred
|
|
1976
|
+
* from three `weight` fields would move tokens on a claim the theme never made
|
|
1977
|
+
* (and says nothing at all about a system font stack, which has whatever the OS
|
|
1978
|
+
* has). `validateFontWeights` warns about those instead.
|
|
1979
|
+
*/
|
|
1980
|
+
declare function declaresWeights(typography: SlottedTypography): boolean;
|
|
1981
|
+
/**
|
|
1982
|
+
* Pick the weight a browser would actually use for `desired`, given the faces
|
|
1983
|
+
* the theme loaded — CSS Fonts 4 §5.2 weight-matching order:
|
|
1984
|
+
*
|
|
1985
|
+
* - exact match wins;
|
|
1986
|
+
* - desired 400–500: heavier faces up to 500 ascending, then lighter descending,
|
|
1987
|
+
* then heavier than 500 ascending;
|
|
1988
|
+
* - desired below 400: lighter descending, then heavier ascending;
|
|
1989
|
+
* - desired above 500: heavier ascending, then lighter descending.
|
|
1990
|
+
*
|
|
1991
|
+
* Returns `desired` unchanged when the theme loads nothing (nothing to match
|
|
1992
|
+
* against, and the system font has its own ideas).
|
|
1993
|
+
*/
|
|
1994
|
+
declare function matchLoadedWeight(desired: number, loaded: readonly number[]): number;
|
|
1995
|
+
/** The four named ramp steps a theme emits, resolved against what it loaded. */
|
|
1996
|
+
interface ResolvedWeightRamp {
|
|
1997
|
+
normal: number;
|
|
1998
|
+
medium: number;
|
|
1999
|
+
semibold: number;
|
|
2000
|
+
bold: number;
|
|
2001
|
+
}
|
|
2002
|
+
/**
|
|
2003
|
+
* Resolve the named ramp.
|
|
2004
|
+
*
|
|
2005
|
+
* `normal` tracks the theme's body weight rather than a hard 400 — it is the
|
|
2006
|
+
* ramp's zero point, and Blacklight's `body.weight: 300` is a deliberate
|
|
2007
|
+
* choice, not a rounding error. It is still coerced to a loaded face (strata
|
|
2008
|
+
* declares `body.weight: 450` and loads `[400, 700, 900]`).
|
|
2009
|
+
*
|
|
2010
|
+
* `medium / semibold / bold` resolve the canonical 500 / 600 / 700 targets.
|
|
2011
|
+
* Names can still share a value on a family that cannot separate them — two
|
|
2012
|
+
* loaded faces cannot back four distinct names — but the result is now the
|
|
2013
|
+
* truth about what renders rather than a number nothing will honour.
|
|
2014
|
+
*/
|
|
2015
|
+
declare function resolveWeightRamp(typography: SlottedTypography & {
|
|
2016
|
+
body?: WeightedSlot;
|
|
2017
|
+
}): ResolvedWeightRamp;
|
|
2018
|
+
/**
|
|
2019
|
+
* Resolve a role weight (`--weight-heading`, `--weight-body`,
|
|
2020
|
+
* `--weight-display`) to a loaded face. Roles carry theme intent — what this
|
|
2021
|
+
* theme's headings weigh — and are the channel components should read when they
|
|
2022
|
+
* mean "the heading weight" rather than "a step above medium".
|
|
2023
|
+
*/
|
|
2024
|
+
declare function resolveRoleWeight(declared: number, typography: SlottedTypography): number;
|
|
2025
|
+
/**
|
|
2026
|
+
* Emit the shared weight declarations: the named ramp, the role tokens, and the
|
|
2027
|
+
* discrete ladder.
|
|
2028
|
+
*
|
|
2029
|
+
* The ladder (`--font-weight-300` … `--font-weight-800`, one per loaded face)
|
|
2030
|
+
* is what makes the `weights` array authoritative instead of decorative. Before
|
|
2031
|
+
* it, a theme could load five faces and reach four of them by name at best —
|
|
2032
|
+
* Blacklight's 800 was unreachable from CSS, so BL-987 had to write a literal.
|
|
2033
|
+
* It follows the `--text-N` / `--space-N` discrete-alias precedent from VI-451.
|
|
2034
|
+
*/
|
|
2035
|
+
declare function generateFontWeightDecls(typography: {
|
|
2036
|
+
heading: {
|
|
2037
|
+
weight: number;
|
|
2038
|
+
weights?: number[];
|
|
2039
|
+
};
|
|
2040
|
+
display: {
|
|
2041
|
+
weight: number;
|
|
2042
|
+
weights?: number[];
|
|
2043
|
+
};
|
|
2044
|
+
body: {
|
|
2045
|
+
weight: number;
|
|
2046
|
+
weights?: number[];
|
|
2047
|
+
};
|
|
2048
|
+
mono: {
|
|
2049
|
+
weight?: number;
|
|
2050
|
+
weights?: number[];
|
|
2051
|
+
};
|
|
2052
|
+
}): string[];
|
|
2053
|
+
|
|
1786
2054
|
/**
|
|
1787
2055
|
* Theme Extraction Engine
|
|
1788
2056
|
*
|
|
@@ -1858,4 +2126,4 @@ declare function cleanFontValue(val: string): string;
|
|
|
1858
2126
|
*/
|
|
1859
2127
|
declare function extractFromCSS(files: CSSFile[], name?: string): ExtractionResult;
|
|
1860
2128
|
|
|
1861
|
-
export { type BrandPassthrough, BrandResolution, BrandSlot, BrandSource, BrandStrategy, BrandStrategyContext, BrandStrategyIssue, BrandStrategyValidationResult, type CSSFile, ColorRole, type Confidence, DEFAULT_VISOR_BRAND, type ExtractedToken, type ExtractionResult, FONT_WEIGHT_ALIASES, type FontCoverageError, type FontCoverageResult, FontDisplayStrategy, type FontFaceDeclaration, FontResolution, FontResolveOptions, FullShadeScale, GeneratedPrimitives, GoogleFontEntry, OKLCH, ParsedColor, RGB, ResolvedThemeConfig, SEMANTIC_MAP, SelectiveShadeScale, SemanticTokens, SerializedBrandStrategy, ShadeStep, TAILWIND_GRAY, ThemeBrandResult, ThemeData, ThemeFontResult, ThemeOutput, type ThemeValidationResult, VISOR_BRANDS_CDN, VISOR_DEFAULT_BRAND_PATH, VISOR_FONTS_CDN, type ValidateOptions, type ValidationIssue, type ValidationSeverity, VisorBrand, VisorThemeConfig, VisorTypography, applyOverrides, assignSemanticTokens, buildVisorBrandUrl, buildVisorFontUrl, checkBrandStrategyCoherence, checkBrandStrategyStructure, clampToSrgb, cleanFontValue, collectBrandPassthrough, compositeOverBackground, exportTheme, extractFromCSS, formatFontCoverageError, generateDarkCss, generateFullBundleCss, generateLightCss, generatePreloadLinks, generatePrimitives, generatePrimitivesCss, generateSemanticCss, generateShadeScale, generateStylesheetLinks, generateTheme, generateThemeData, generateThemeDataFromConfig, generateThemeFromConfig, getContrastRatio, getKnownTokenRefs, getLuminance, googleFontsCatalog, hasBrandPassthrough, hexToOklch, hexToRgb, isValidColor, isValidHex, isVisorThemeConfig, lookupFontWeightAlias, lookupGoogleFont, normalizeHex, oklchToHex, parseCSSDeclarations, parseColor, parseConfig, parseFontFaceDeclarations, parseHex, parseHsla, parseOklch, parseRgba, resolveBrandSlot, resolveBrandSource, resolveConfig, resolveFont, resolveThemeBrand, resolveThemeFonts, rgbToHex, serializeBrandStrategy, serializeColor, validate, validateBrandStrategy, validateConfig, validateFontCoverage, visorTheme_schema as visorThemeSchema };
|
|
2129
|
+
export { type BrandPassthrough, BrandResolution, BrandSlot, BrandSource, BrandStrategy, BrandStrategyContext, BrandStrategyIssue, BrandStrategyValidationResult, type CSSFile, ColorRole, type Confidence, DEFAULT_VISOR_BRAND, type ExtractedToken, type ExtractionResult, FONT_WEIGHT_ALIASES, type FontCoverageError, type FontCoverageResult, FontDisplayStrategy, type FontFaceDeclaration, FontResolution, FontResolveOptions, FullShadeScale, GeneratedPrimitives, GoogleFontEntry, OKLCH, ParsedColor, RGB, ResolvedThemeConfig, type ResolvedWeightRamp, SEMANTIC_MAP, SelectiveShadeScale, SemanticTokens, SerializedBrandStrategy, ShadeStep, TAILWIND_GRAY, ThemeBrandResult, ThemeData, ThemeFontResult, ThemeOutput, type ThemeValidationResult, VISOR_BRANDS_CDN, VISOR_DEFAULT_BRAND_PATH, VISOR_FONTS_CDN, type ValidateOptions, type ValidationIssue, type ValidationSeverity, VisorBrand, VisorThemeConfig, VisorTypography, WEIGHT_RAMP_TARGETS, applyOverrides, assignSemanticTokens, buildVisorBrandUrl, buildVisorFontUrl, checkBrandStrategyCoherence, checkBrandStrategyStructure, clampToSrgb, cleanFontValue, collectBrandPassthrough, compositeOverBackground, declaresWeights, exportTheme, extractFromCSS, formatFontCoverageError, generateDarkCss, generateFontWeightDecls, generateFullBundleCss, generateLightCss, generatePreloadLinks, generatePrimitives, generatePrimitivesCss, generateSemanticCss, generateShadeScale, generateStylesheetLinks, generateTheme, generateThemeData, generateThemeDataFromConfig, generateThemeFromConfig, getContrastRatio, getKnownTokenRefs, getLuminance, googleFontsCatalog, hasBrandPassthrough, hexToOklch, hexToRgb, isValidColor, isValidHex, isVisorThemeConfig, loadedWeights, lookupFontWeightAlias, lookupGoogleFont, matchLoadedWeight, normalizeHex, oklchToHex, parseCSSDeclarations, parseColor, parseConfig, parseFontFaceDeclarations, parseHex, parseHsla, parseOklch, parseRgba, resolveBrandSlot, resolveBrandSource, resolveConfig, resolveFont, resolveRoleWeight, resolveThemeBrand, resolveThemeFonts, resolveWeightRamp, rgbToHex, serializeBrandStrategy, serializeColor, validate, validateBrandStrategy, validateConfig, validateFontCoverage, visorTheme_schema as visorThemeSchema };
|