@vectoriox/iox-ui 5.21.0 → 5.23.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.
@@ -8390,6 +8390,14 @@ interface SwitchElementStyleResult {
8390
8390
  /** Traits the old style owned whose value the author had changed — kept, never overwritten. */
8391
8391
  kept: OwnedTrait[];
8392
8392
  }
8393
+ /** Every trait the style owns with the value it writes — base first, then hover/active/focus. */
8394
+ declare function ownedTraitsOf(style: ElementStyle): Array<OwnedTrait & {
8395
+ value: string;
8396
+ }>;
8397
+ /** The node's value of one owned trait (a base trait, or a trait inside a pseudo-state map). */
8398
+ declare function readOwnedTrait(target: ElementStyleTarget, owned: OwnedTrait): unknown;
8399
+ /** Write one owned trait. False when a builder node has no slot for a base trait (dropped). */
8400
+ declare function writeOwnedTrait(target: ElementStyleTarget, owned: OwnedTrait, value: string): boolean;
8393
8401
  /** Write the style's exact base map and its hover/active/focus maps into the target. */
8394
8402
  declare function applyElementStyle(target: ElementStyleTarget, id: string): ApplyElementStyleResult;
8395
8403
  /**
@@ -8427,6 +8435,125 @@ declare function elementStyleClass(id: string | null | undefined): string | null
8427
8435
  */
8428
8436
  declare function applyHeadingLevelRule(target: ElementStyleTarget, oldLevel: string | null | undefined, newLevel: string | null | undefined, baseline?: Readonly<Record<string, unknown>>): SwitchElementStyleResult | null;
8429
8437
 
8438
+ /**
8439
+ * ADOPT (design-system DS7, decision D5): link the nodes of a page saved before element styles to
8440
+ * the style a NEW node of their type is born wearing, so the page follows the look from then on.
8441
+ * Opt-in per page, one click, one undo step — this module is only the pure tree pass; the builder
8442
+ * owns the click, the history step and the save.
8443
+ *
8444
+ * The rule that keeps the author's work: a trait the style owns is rewritten to the style's
8445
+ * reference ONLY when the node still holds what an untouched node of its type was saved with — the
8446
+ * type's BASELINE (the unstyled constructor default the caller supplies), or a value a machine wrote
8447
+ * into every new node before element styles existed (`PRE_DS2_FLAVOR_DEFAULTS`). Anything else is an
8448
+ * author edit and is KEPT, and reported.
8449
+ *
8450
+ * A node that already wears a style is UPGRADED where it holds a value that style wrote in an OLDER
8451
+ * contract (`SUPERSEDED_STYLE_VALUES`) — the same untouched-means-machine-written rule, one version on.
8452
+ *
8453
+ * Works on both node shapes element-styles.ts does: a builder node (values in `styleTraits`) or a
8454
+ * serialized node (`styleProps`), so the server-side site build can run it too.
8455
+ */
8456
+ /**
8457
+ * What a NEW node holds before its element style is written (C1.1): running text inherits, so a
8458
+ * literal colour on any container would override the section's text. The factory
8459
+ * (`ComponentRegistryService.createConfig`) writes it; adopt releases a baseline colour to it, so an
8460
+ * adopted node is exactly what a new node of its type is.
8461
+ */
8462
+ declare const NEW_NODE_STYLE_DEFAULTS: Readonly<Record<string, string>>;
8463
+ /**
8464
+ * Values a machine wrote into every NEW node of a type before element styles: the F1 Swiss pack's
8465
+ * element defaults (`SWISS_FLAVOR.defaults`, iox-ui 5.3.0 `0a00761` + iox-builder 4.24.0 `85109eb`,
8466
+ * `createConfig → applyFlavorDefaults`, resolved by `resolveFlavorDefaults` to
8467
+ * `var(--iox-<token>, <pack value>)`; deleted in DS2). An untouched node created between F1 and DS2
8468
+ * holds exactly these, so they count as untouched.
8469
+ */
8470
+ declare const PRE_DS2_FLAVOR_DEFAULTS: Readonly<Record<string, Readonly<Record<string, string>>>>;
8471
+ /** One owned trait whose value an element style CHANGED in the contract's history. */
8472
+ interface SupersededStyleValue extends OwnedTrait {
8473
+ readonly style: string;
8474
+ /** What the style wrote before. */
8475
+ readonly values: ReadonlyArray<string>;
8476
+ /** The style did not own the trait before, so an untouched node held its type's baseline. */
8477
+ readonly wasUnowned?: boolean;
8478
+ /** The iox-ai-guidance contract commit that changed it. */
8479
+ readonly contract: string;
8480
+ }
8481
+ /**
8482
+ * Every element-style value the contract has superseded since element styles shipped (a diff of
8483
+ * `flavor-spec.v1.json`'s `elementStyles` across its history — nothing else changed a value):
8484
+ * - `b86c54f` (C1): body / lead `color: var(--iox-text)` → `inherit`;
8485
+ * - `602d96e` (C1.1): box / card / panel / nav gained `color: inherit` — before, they owned no colour.
8486
+ * A spec pins this list against the generated contract. Add an entry with every contract change.
8487
+ */
8488
+ declare const SUPERSEDED_STYLE_VALUES: ReadonlyArray<SupersededStyleValue>;
8489
+ declare enum AdoptOutcome {
8490
+ /** The node wore no style; it now wears its type's default (or its legacy Button variant's). */
8491
+ Linked = "linked",
8492
+ /** The node wore a style; values that style wrote in an older contract were brought current. */
8493
+ Upgraded = "upgraded"
8494
+ }
8495
+ declare enum AdoptSkipReason {
8496
+ /** The type is born wearing no style (Gallery, SliderContainer, Spacer, …). */
8497
+ NoStyle = "no-style",
8498
+ /** The node takes its look from a style preset — the author's own class. */
8499
+ Preset = "preset",
8500
+ /** The node is (inside) a linked symbol instance: its look is the symbol's, shared across pages. */
8501
+ Symbol = "symbol"
8502
+ }
8503
+ interface AdoptContext {
8504
+ /** Per type, the style map an untouched SAVED node of it holds — its unstyled constructor
8505
+ * defaults (the builder's `ComponentRegistryService.adoptionBaseline`). */
8506
+ baseline(type: string): Readonly<Record<string, unknown>>;
8507
+ }
8508
+ /** The shapes this pass reads: an element-style target plus the fields that decide skips and styles. */
8509
+ interface AdoptableNode extends ElementStyleTarget {
8510
+ id?: string;
8511
+ props?: Readonly<Record<string, unknown>> | null;
8512
+ traits?: ReadonlyArray<{
8513
+ name: string;
8514
+ default?: unknown;
8515
+ }> | null;
8516
+ stylePresetId?: string | null;
8517
+ symbolId?: string | null;
8518
+ children?: AdoptableNode[] | null;
8519
+ }
8520
+ /** An owned trait the author had changed — kept, with the value kept. */
8521
+ interface KeptEdit extends OwnedTrait {
8522
+ value: unknown;
8523
+ }
8524
+ interface AdoptedNode {
8525
+ id?: string;
8526
+ type: string;
8527
+ style: string;
8528
+ outcome: AdoptOutcome;
8529
+ /** Traits rewritten (the style's references, a current value, or a released colour). */
8530
+ written: OwnedTrait[];
8531
+ kept: KeptEdit[];
8532
+ }
8533
+ interface SkippedNode {
8534
+ id?: string;
8535
+ type: string;
8536
+ reason: AdoptSkipReason;
8537
+ }
8538
+ interface AdoptReport {
8539
+ adopted: AdoptedNode[];
8540
+ skipped: SkippedNode[];
8541
+ /** Author edits kept across every adopted node. */
8542
+ kept: number;
8543
+ }
8544
+ /** The style an unstyled node adopts: a legacy Button by its `variant` (spec `buttonVariantToStyle`),
8545
+ * every other type by its default (a Heading by its level), or null. */
8546
+ declare function adoptionStyleFor(node: AdoptableNode): string | null;
8547
+ /**
8548
+ * Adopt every node of `tree` in place (children included) and report what happened. Skipped, never
8549
+ * touched: a node with a style preset, and every node of a linked symbol instance. A node whose type
8550
+ * has no default style is not linked, but an untouched baseline colour on it is released to the
8551
+ * new-node default all the same, so adopted text inside it is not painted the old literal.
8552
+ */
8553
+ declare function adoptElementStyles(tree: AdoptableNode[] | null | undefined, ctx: AdoptContext): AdoptReport;
8554
+ /** What adopting `tree` WOULD do, without touching it (the banner's count). */
8555
+ declare function previewElementStyleAdoption(tree: AdoptableNode[] | null | undefined, ctx: AdoptContext): AdoptReport;
8556
+
8430
8557
  /**
8431
8558
  * The design-system classes a node renders, in BOTH renderers (builder canvas, engine component
8432
8559
  * path, engine string path) — ONE helper, so the three can never disagree about which class a node
@@ -8631,7 +8758,12 @@ interface FlavorRevertSnapshot {
8631
8758
  brandSeed: string | null;
8632
8759
  };
8633
8760
  tokens: Array<Pick<DesignTokenRow, 'name' | 'type' | 'value' | 'values' | 'source' | 'group' | 'tier'>>;
8761
+ /** What the apply left in every row it wrote (`flavorSeedWrites`). A row holding something else
8762
+ * since, as the author's (`source: user`), was edited AFTER the apply — the revert keeps it. */
8763
+ wrote?: FlavorRevertWrite[];
8634
8764
  }
8765
+ /** One row as an apply left it — the value and dark half the revert compares a live row against. */
8766
+ type FlavorRevertWrite = Pick<DesignTokenRow, 'name' | 'value' | 'values'>;
8635
8767
  interface FlavorRevertPlan {
8636
8768
  create: DesignTokenRow[];
8637
8769
  update: Array<{
@@ -8640,17 +8772,25 @@ interface FlavorRevertPlan {
8640
8772
  }>;
8641
8773
  /** Rows the apply created (flavor-stamped, absent from the snapshot) — removed on revert. */
8642
8774
  remove: string[];
8775
+ /** The author's edits made after the apply, left as they are (names) — what the Revert hint counts. */
8776
+ kept: string[];
8643
8777
  }
8644
8778
  declare const REVERT_WINDOW_MS: number;
8645
8779
  /** Board F7's footer promise, as a boundary: available through the 7th day, not beyond. */
8646
8780
  declare function revertAvailable(appliedAt: number | null | undefined, now: number): boolean;
8647
8781
  /**
8648
- * Restore the snapshot EXACTLY: snapshot rows come back to their stored value/dark/source
8649
- * (update when present, recreate when deleted); rows the apply CREATED (flavor-stamped and
8650
- * absent from the snapshot) are removed. Hand-made rows born after the apply are not ours
8651
- * to touch — a revert undoes the FLAVOR, not the author's week.
8782
+ * Restore the snapshot: snapshot rows come back to their stored value/dark/source (update when
8783
+ * present, recreate when deleted); rows the apply CREATED (flavor-stamped and absent from the
8784
+ * snapshot) are removed. A revert undoes the FLAVOR, not the author's week: hand-made rows born after
8785
+ * the apply are not touched, and a row the author EDITED after the apply is kept (DS8: an edit makes
8786
+ * the row the author's, and a pack switch keeps it — so does going back). Edited-after = `source: user`,
8787
+ * differing from the snapshot, and holding something other than what the apply wrote (`wrote` — the
8788
+ * apply's own author rows, a chosen font or an Element-styles edit, still go back with it). With no
8789
+ * `wrote` at all, every author row that differs from the snapshot is judged edited after.
8652
8790
  */
8653
- declare function planFlavorRevert(current: ReadonlyArray<StoredDesignTokenRow>, snapshot: FlavorRevertSnapshot['tokens']): FlavorRevertPlan;
8791
+ declare function planFlavorRevert(current: ReadonlyArray<StoredDesignTokenRow>, snapshot: FlavorRevertSnapshot['tokens'], wrote?: ReadonlyArray<FlavorRevertWrite> | null): FlavorRevertPlan;
8792
+ /** What a seed plan leaves in each row it writes, by name — the snapshot's `wrote`. */
8793
+ declare function flavorSeedWrites(plan: FlavorSeedPlan, existing: ReadonlyArray<StoredDesignTokenRow>): FlavorRevertWrite[];
8654
8794
  /** What a previous seed wrote for one row — the "untouched" comparison base. */
8655
8795
  interface SeedExpectation {
8656
8796
  value: string;
@@ -8990,6 +9130,14 @@ declare function designTokenRows(choices: DesignChoices): DesignTokenRow[];
8990
9130
  declare function designBaseline(previous: StoredDesign): SeedBaseline;
8991
9131
  /** Apply `next` over the org's rows, judged against `previous` — the plan FlavorApplyService runs. */
8992
9132
  declare function planDesignApply(existing: ReadonlyArray<StoredDesignTokenRow>, previous: StoredDesign, next: DesignChoices): FlavorSeedPlan;
9133
+ /**
9134
+ * "Revert to previous look" over the org's rows — the ONE plan the Revert executes and its hint counts
9135
+ * (`kept`: the author's edits since the apply, left as they are). The apply's record of what it wrote
9136
+ * decides what an edit since is; a snapshot stored before that record existed (DS8.1) is judged against
9137
+ * the rows the applied design writes — the look's own author rows (a chosen font) still go back.
9138
+ * `null` when the design holds no snapshot.
9139
+ */
9140
+ declare function planDesignRevert(current: ReadonlyArray<StoredDesignTokenRow>, design: StoredDesign): FlavorRevertPlan | null;
8993
9141
  /** The rows a design is missing by name — the builder-load top-up (never touches an existing row). */
8994
9142
  declare function missingDesignRows(existing: ReadonlyArray<{
8995
9143
  name: string;
@@ -9045,5 +9193,5 @@ interface FontFamilyRemoval {
9045
9193
  */
9046
9194
  declare function planFontFamilyRemoval(existing: ReadonlyArray<StoredDesignTokenRow>, previous: StoredDesign, family: string): FontFamilyRemoval;
9047
9195
 
9048
- export { ACCENT_TOKEN_NAMES, BUTTON_VARIANT_TO_STYLE, COLOR_SCHEMES, COLOR_SCHEME_TRAIT, COLOR_SCHEME_TYPES, ColorScheme, DEFAULT_FLAVOR_ID, DESIGN_TOKEN_GROUPS, DESIGN_TOKEN_TIERS, DESIGN_TOKEN_TYPES, DesignConfigKey, ELEMENT_STYLES, ELEMENT_STYLE_MARKER_CLASS, ELEMENT_STYLE_STATES, EMPTY_IMAGE_ATTRIBUTE, EMPTY_IMAGE_SRC, ElementStyleState, FLAVOR_SPEC_VERSION, FONT_CATALOG, FONT_FAMILY_TOKENS, FONT_FILE_ACCEPT, FONT_FILE_EXTENSIONS, FONT_FILE_FORMATS, FONT_STYLES, FONT_WEIGHTS, FontUploadError, GOOGLE_FONTS_CSS_ORIGIN, GOOGLE_FONTS_FILE_ORIGIN, MAX_FONT_FILE_BYTES, OwnedTraitLink, PALETTE_PRESETS, REDUCED_MOTION_OVERRIDES, REDUCED_TRANSPARENCY_OVERRIDES, REVERT_WINDOW_MS, SPEC_A11Y, SPEC_AXES, SPEC_BUTTON_VARIANT_TO_STYLE, SPEC_CONTRAST, SPEC_DEFAULT_ELEMENT_STYLE, SPEC_ELEMENT_STYLES, SPEC_FIELD_CLASS_BASELINE, SPEC_FLAVORS, SPEC_FLAVOR_PACKS, SPEC_FONTS, SPEC_FONT_ROLES, SPEC_LEGACY_ALIASES, SPEC_PALETTE_PRESETS, SPEC_SCHEMES, SPEC_SPRINGS, SPEC_TIERS, SPEC_TIER_IDS, SPEC_TOKEN_TYPES, SWISS_FLAVOR, USER_TOKEN_SOURCE, WCAG_AA_TEXT, apcaLc, applyElementStyle, applyHeadingLevelRule, buildFlavorTokens, buildFontFaceCss, catalogFontId, checkFontWeight, choicesForPack, colorSchemeClass, colorSchemeOf, compareFontWeights, compileSchemeCss, compileTokenCss, compileTokenCssBlocks, cssString, defaultDesignChoices, defaultElementStyleFor, deriveAccentTokens, deriveBrandTokens, designBaseline, designConfigEntries, designModeOf, designTokenRepairs, designTokenRows, elementStyleById, elementStyleClass, elementStylesFor, emptyImageLabelSrc, emptyImagePlaceholder, emptyImageSrc, flavorPackById, flavorSourceStamp, fontFamilyKey, fontFileName, fontFileStem, fontFormatOf, fontPreloads, fontRoleReferences, fontStackWithout, fontWeightCovers, fontWeightRange, fontWeightValue, fontsForTokens, formatFontFamilies, formatFontFamily, formatFontWeight, googleFontHref, groupFontFamilies, hasElementStyleMarker, isDesignTokenGroup, isDesignTokenTier, isDesignTokenType, isFontWeightRange, isRetiredFlavorId, legacyRuleTokenReferences, matchFontWeight, missingDesignRows, missingFontRoles, nodeDesignClasses, normalizeFontStyle, normalizeFontWeight, normalizeFontWeightValue, oklabToRgb, ownedTraitStatus, packDesignChoices, parseFontFamilies, parseFontWeight, parseHexColor, planDesignApply, planFlavorRevert, planFlavorSeed, planFontFamilyRemoval, planSwissMigration, previewFontWeight, readDesignConfig, relativeLuminance, resolveDesignChoices, resolveTokenReferences, resolveTokenValues, revertAvailable, rgbToOklab, sameDesignChoices, specTokenNames, springToLinear, stackNamesFamily, styleKeyToKebab, switchElementStyle, syncNodeDesignClasses, toHexColor, tokenReferences, tokensToDarkVarMap, tokensToVarMap, unknownTokenReferences, userFontStack, validateFlavorPack, wcagContrastRatio };
9049
- export type { AccentBackgrounds, AccentTokenName, ApplyElementStyleResult, DensityId, DesignChoices, DesignClassSource, DesignConfigEntry, DesignMode, DesignTokenGroup, DesignTokenLike, DesignTokenRow, DesignTokenTier, DesignTokenType, ElementStyle, ElementStyleTarget, ElementStyleTraitLike, FlavorPack, FlavorPackV2, FlavorRevertPlan, FlavorRevertSnapshot, FlavorSeedPlan, FlavorSpecToken, FlavorTokenDef, FontDescriptor, FontFamilyGroup, FontFamilyRemoval, FontFamilyToken, FontFormat, FontPair, FontRoleToken, FontStyle, FontWeight, FontWeightRange, FontsForTokensOptions, LinearSpring, MissingFontRole, MotionId, OkLab, OwnedTrait, OwnedTraitStatus, PalettePreset, ResolvedMode, Rgb, SchemeId, SeedBaseline, SeedExpectation, ShapeId, StoredDesign, StoredDesignTokenRow, SwissMigration, SwitchElementStyleResult, TokenCssBlocks, TokenCssOptions };
9196
+ export { ACCENT_TOKEN_NAMES, AdoptOutcome, AdoptSkipReason, BUTTON_VARIANT_TO_STYLE, COLOR_SCHEMES, COLOR_SCHEME_TRAIT, COLOR_SCHEME_TYPES, ColorScheme, DEFAULT_FLAVOR_ID, DESIGN_TOKEN_GROUPS, DESIGN_TOKEN_TIERS, DESIGN_TOKEN_TYPES, DesignConfigKey, ELEMENT_STYLES, ELEMENT_STYLE_MARKER_CLASS, ELEMENT_STYLE_STATES, EMPTY_IMAGE_ATTRIBUTE, EMPTY_IMAGE_SRC, ElementStyleState, FLAVOR_SPEC_VERSION, FONT_CATALOG, FONT_FAMILY_TOKENS, FONT_FILE_ACCEPT, FONT_FILE_EXTENSIONS, FONT_FILE_FORMATS, FONT_STYLES, FONT_WEIGHTS, FontUploadError, GOOGLE_FONTS_CSS_ORIGIN, GOOGLE_FONTS_FILE_ORIGIN, MAX_FONT_FILE_BYTES, NEW_NODE_STYLE_DEFAULTS, OwnedTraitLink, PALETTE_PRESETS, PRE_DS2_FLAVOR_DEFAULTS, REDUCED_MOTION_OVERRIDES, REDUCED_TRANSPARENCY_OVERRIDES, REVERT_WINDOW_MS, SPEC_A11Y, SPEC_AXES, SPEC_BUTTON_VARIANT_TO_STYLE, SPEC_CONTRAST, SPEC_DEFAULT_ELEMENT_STYLE, SPEC_ELEMENT_STYLES, SPEC_FIELD_CLASS_BASELINE, SPEC_FLAVORS, SPEC_FLAVOR_PACKS, SPEC_FONTS, SPEC_FONT_ROLES, SPEC_LEGACY_ALIASES, SPEC_PALETTE_PRESETS, SPEC_SCHEMES, SPEC_SPRINGS, SPEC_TIERS, SPEC_TIER_IDS, SPEC_TOKEN_TYPES, SUPERSEDED_STYLE_VALUES, SWISS_FLAVOR, USER_TOKEN_SOURCE, WCAG_AA_TEXT, adoptElementStyles, adoptionStyleFor, apcaLc, applyElementStyle, applyHeadingLevelRule, buildFlavorTokens, buildFontFaceCss, catalogFontId, checkFontWeight, choicesForPack, colorSchemeClass, colorSchemeOf, compareFontWeights, compileSchemeCss, compileTokenCss, compileTokenCssBlocks, cssString, defaultDesignChoices, defaultElementStyleFor, deriveAccentTokens, deriveBrandTokens, designBaseline, designConfigEntries, designModeOf, designTokenRepairs, designTokenRows, elementStyleById, elementStyleClass, elementStylesFor, emptyImageLabelSrc, emptyImagePlaceholder, emptyImageSrc, flavorPackById, flavorSeedWrites, flavorSourceStamp, fontFamilyKey, fontFileName, fontFileStem, fontFormatOf, fontPreloads, fontRoleReferences, fontStackWithout, fontWeightCovers, fontWeightRange, fontWeightValue, fontsForTokens, formatFontFamilies, formatFontFamily, formatFontWeight, googleFontHref, groupFontFamilies, hasElementStyleMarker, isDesignTokenGroup, isDesignTokenTier, isDesignTokenType, isFontWeightRange, isRetiredFlavorId, legacyRuleTokenReferences, matchFontWeight, missingDesignRows, missingFontRoles, nodeDesignClasses, normalizeFontStyle, normalizeFontWeight, normalizeFontWeightValue, oklabToRgb, ownedTraitStatus, ownedTraitsOf, packDesignChoices, parseFontFamilies, parseFontWeight, parseHexColor, planDesignApply, planDesignRevert, planFlavorRevert, planFlavorSeed, planFontFamilyRemoval, planSwissMigration, previewElementStyleAdoption, previewFontWeight, readDesignConfig, readOwnedTrait, relativeLuminance, resolveDesignChoices, resolveTokenReferences, resolveTokenValues, revertAvailable, rgbToOklab, sameDesignChoices, specTokenNames, springToLinear, stackNamesFamily, styleKeyToKebab, switchElementStyle, syncNodeDesignClasses, toHexColor, tokenReferences, tokensToDarkVarMap, tokensToVarMap, unknownTokenReferences, userFontStack, validateFlavorPack, wcagContrastRatio, writeOwnedTrait };
9197
+ export type { AccentBackgrounds, AccentTokenName, AdoptContext, AdoptReport, AdoptableNode, AdoptedNode, ApplyElementStyleResult, DensityId, DesignChoices, DesignClassSource, DesignConfigEntry, DesignMode, DesignTokenGroup, DesignTokenLike, DesignTokenRow, DesignTokenTier, DesignTokenType, ElementStyle, ElementStyleTarget, ElementStyleTraitLike, FlavorPack, FlavorPackV2, FlavorRevertPlan, FlavorRevertSnapshot, FlavorRevertWrite, FlavorSeedPlan, FlavorSpecToken, FlavorTokenDef, FontDescriptor, FontFamilyGroup, FontFamilyRemoval, FontFamilyToken, FontFormat, FontPair, FontRoleToken, FontStyle, FontWeight, FontWeightRange, FontsForTokensOptions, KeptEdit, LinearSpring, MissingFontRole, MotionId, OkLab, OwnedTrait, OwnedTraitStatus, PalettePreset, ResolvedMode, Rgb, SchemeId, SeedBaseline, SeedExpectation, ShapeId, SkippedNode, StoredDesign, StoredDesignTokenRow, SupersededStyleValue, SwissMigration, SwitchElementStyleResult, TokenCssBlocks, TokenCssOptions };
@@ -9914,6 +9914,21 @@ function ownedEntries(style) {
9914
9914
  }
9915
9915
  return out;
9916
9916
  }
9917
+ /** Every trait the style owns with the value it writes — base first, then hover/active/focus. */
9918
+ function ownedTraitsOf(style) {
9919
+ return ownedEntries(style);
9920
+ }
9921
+ /** The node's value of one owned trait (a base trait, or a trait inside a pseudo-state map). */
9922
+ function readOwnedTrait(target, owned) {
9923
+ return owned.state ? readState(target, owned.state, owned.trait) : readBase(target, owned.trait);
9924
+ }
9925
+ /** Write one owned trait. False when a builder node has no slot for a base trait (dropped). */
9926
+ function writeOwnedTrait(target, owned, value) {
9927
+ if (!owned.state)
9928
+ return writeBase(target, owned.trait, value);
9929
+ writeState(target, owned.state, owned.trait, value);
9930
+ return true;
9931
+ }
9917
9932
  const sameOwned = (a, b) => a.trait === b.trait && a.state === b.state;
9918
9933
  function writeEntries(target, style, skip = []) {
9919
9934
  const unknown = [];
@@ -10043,6 +10058,202 @@ function applyHeadingLevelRule(target, oldLevel, newLevel, baseline = {}) {
10043
10058
  return switchElementStyle(target, from, to, baseline);
10044
10059
  }
10045
10060
 
10061
+ /**
10062
+ * ADOPT (design-system DS7, decision D5): link the nodes of a page saved before element styles to
10063
+ * the style a NEW node of their type is born wearing, so the page follows the look from then on.
10064
+ * Opt-in per page, one click, one undo step — this module is only the pure tree pass; the builder
10065
+ * owns the click, the history step and the save.
10066
+ *
10067
+ * The rule that keeps the author's work: a trait the style owns is rewritten to the style's
10068
+ * reference ONLY when the node still holds what an untouched node of its type was saved with — the
10069
+ * type's BASELINE (the unstyled constructor default the caller supplies), or a value a machine wrote
10070
+ * into every new node before element styles existed (`PRE_DS2_FLAVOR_DEFAULTS`). Anything else is an
10071
+ * author edit and is KEPT, and reported.
10072
+ *
10073
+ * A node that already wears a style is UPGRADED where it holds a value that style wrote in an OLDER
10074
+ * contract (`SUPERSEDED_STYLE_VALUES`) — the same untouched-means-machine-written rule, one version on.
10075
+ *
10076
+ * Works on both node shapes element-styles.ts does: a builder node (values in `styleTraits`) or a
10077
+ * serialized node (`styleProps`), so the server-side site build can run it too.
10078
+ */
10079
+ /**
10080
+ * What a NEW node holds before its element style is written (C1.1): running text inherits, so a
10081
+ * literal colour on any container would override the section's text. The factory
10082
+ * (`ComponentRegistryService.createConfig`) writes it; adopt releases a baseline colour to it, so an
10083
+ * adopted node is exactly what a new node of its type is.
10084
+ */
10085
+ const NEW_NODE_STYLE_DEFAULTS = { color: 'inherit' };
10086
+ /**
10087
+ * Values a machine wrote into every NEW node of a type before element styles: the F1 Swiss pack's
10088
+ * element defaults (`SWISS_FLAVOR.defaults`, iox-ui 5.3.0 `0a00761` + iox-builder 4.24.0 `85109eb`,
10089
+ * `createConfig → applyFlavorDefaults`, resolved by `resolveFlavorDefaults` to
10090
+ * `var(--iox-<token>, <pack value>)`; deleted in DS2). An untouched node created between F1 and DS2
10091
+ * holds exactly these, so they count as untouched.
10092
+ */
10093
+ const PRE_DS2_FLAVOR_DEFAULTS = {
10094
+ Button: { borderRadius: 'var(--iox-radius-control, 4px)', padding: 'var(--iox-space-control, 10px 18px)' },
10095
+ ButtonBlock: { borderRadius: 'var(--iox-radius-control, 4px)', padding: 'var(--iox-space-control, 10px 18px)' },
10096
+ Card: { borderRadius: 'var(--iox-radius-surface, 4px)' },
10097
+ };
10098
+ /**
10099
+ * Every element-style value the contract has superseded since element styles shipped (a diff of
10100
+ * `flavor-spec.v1.json`'s `elementStyles` across its history — nothing else changed a value):
10101
+ * - `b86c54f` (C1): body / lead `color: var(--iox-text)` → `inherit`;
10102
+ * - `602d96e` (C1.1): box / card / panel / nav gained `color: inherit` — before, they owned no colour.
10103
+ * A spec pins this list against the generated contract. Add an entry with every contract change.
10104
+ */
10105
+ const SUPERSEDED_STYLE_VALUES = [
10106
+ { style: 'body', trait: 'color', values: ['var(--iox-text)'], contract: 'b86c54f' },
10107
+ { style: 'lead', trait: 'color', values: ['var(--iox-text)'], contract: 'b86c54f' },
10108
+ { style: 'box', trait: 'color', values: [], wasUnowned: true, contract: '602d96e' },
10109
+ { style: 'card', trait: 'color', values: [], wasUnowned: true, contract: '602d96e' },
10110
+ { style: 'panel', trait: 'color', values: [], wasUnowned: true, contract: '602d96e' },
10111
+ { style: 'nav', trait: 'color', values: [], wasUnowned: true, contract: '602d96e' },
10112
+ ];
10113
+ var AdoptOutcome;
10114
+ (function (AdoptOutcome) {
10115
+ /** The node wore no style; it now wears its type's default (or its legacy Button variant's). */
10116
+ AdoptOutcome["Linked"] = "linked";
10117
+ /** The node wore a style; values that style wrote in an older contract were brought current. */
10118
+ AdoptOutcome["Upgraded"] = "upgraded";
10119
+ })(AdoptOutcome || (AdoptOutcome = {}));
10120
+ var AdoptSkipReason;
10121
+ (function (AdoptSkipReason) {
10122
+ /** The type is born wearing no style (Gallery, SliderContainer, Spacer, …). */
10123
+ AdoptSkipReason["NoStyle"] = "no-style";
10124
+ /** The node takes its look from a style preset — the author's own class. */
10125
+ AdoptSkipReason["Preset"] = "preset";
10126
+ /** The node is (inside) a linked symbol instance: its look is the symbol's, shared across pages. */
10127
+ AdoptSkipReason["Symbol"] = "symbol";
10128
+ })(AdoptSkipReason || (AdoptSkipReason = {}));
10129
+ const sameValue$1 = (a, b) => a === b || (a !== undefined && a !== null && b !== undefined && b !== null && String(a) === String(b));
10130
+ function propOf(node, name) {
10131
+ const fromProps = node.props?.[name];
10132
+ if (fromProps !== undefined)
10133
+ return fromProps;
10134
+ return node.traits?.find(t => t?.name === name)?.default;
10135
+ }
10136
+ /** The style an unstyled node adopts: a legacy Button by its `variant` (spec `buttonVariantToStyle`),
10137
+ * every other type by its default (a Heading by its level), or null. */
10138
+ function adoptionStyleFor(node) {
10139
+ if (node.type === 'Button') {
10140
+ const byVariant = BUTTON_VARIANT_TO_STYLE[String(propOf(node, 'variant') ?? '')];
10141
+ if (byVariant)
10142
+ return byVariant;
10143
+ }
10144
+ const traits = { ...(node.props ?? {}) };
10145
+ for (const t of node.traits ?? [])
10146
+ if (t?.name && !(t.name in traits))
10147
+ traits[t.name] = t.default;
10148
+ return defaultElementStyleFor(node.type, traits);
10149
+ }
10150
+ const owns = (style, trait) => trait in style.base;
10151
+ /** Release each new-node default the style does not own, where the node still holds its baseline. */
10152
+ function releaseNewNodeDefaults(node, style, baseline, written) {
10153
+ for (const [trait, value] of Object.entries(NEW_NODE_STYLE_DEFAULTS)) {
10154
+ if (style && owns(style, trait))
10155
+ continue;
10156
+ const ref = { trait };
10157
+ const current = readOwnedTrait(node, ref);
10158
+ if (current === undefined || sameValue$1(current, value) || !sameValue$1(current, baseline[trait]))
10159
+ continue;
10160
+ if (writeOwnedTrait(node, ref, value))
10161
+ written.push(ref);
10162
+ }
10163
+ }
10164
+ function untouched(node, trait, value, baseline) {
10165
+ return value === undefined || sameValue$1(value, baseline[trait]) || sameValue$1(value, PRE_DS2_FLAVOR_DEFAULTS[node.type]?.[trait]);
10166
+ }
10167
+ function link(node, style, baseline) {
10168
+ const written = [];
10169
+ const kept = [];
10170
+ for (const { value, ...ref } of ownedTraitsOf(style)) {
10171
+ const current = readOwnedTrait(node, ref);
10172
+ if (sameValue$1(current, value))
10173
+ continue;
10174
+ // A pseudo-state map has no baseline: a state value is always the author's.
10175
+ const free = ref.state ? current === undefined : untouched(node, ref.trait, current, baseline);
10176
+ if (!free) {
10177
+ kept.push({ ...ref, value: current });
10178
+ continue;
10179
+ }
10180
+ if (writeOwnedTrait(node, ref, value))
10181
+ written.push(ref);
10182
+ }
10183
+ releaseNewNodeDefaults(node, style, baseline, written);
10184
+ node.elementStyle = style.id;
10185
+ return { id: node.id, type: node.type, style: style.id, outcome: AdoptOutcome.Linked, written, kept };
10186
+ }
10187
+ function upgrade(node, style, baseline) {
10188
+ const written = [];
10189
+ for (const old of SUPERSEDED_STYLE_VALUES) {
10190
+ if (old.style !== style.id)
10191
+ continue;
10192
+ const ref = old.state ? { trait: old.trait, state: old.state } : { trait: old.trait };
10193
+ const now = old.state ? style[old.state]?.[old.trait] : style.base[old.trait];
10194
+ if (now === undefined)
10195
+ continue;
10196
+ const current = readOwnedTrait(node, ref);
10197
+ const before = old.wasUnowned ? [...old.values, baseline[old.trait]] : old.values;
10198
+ if (!before.some(v => sameValue$1(current, v)))
10199
+ continue;
10200
+ if (writeOwnedTrait(node, ref, now))
10201
+ written.push(ref);
10202
+ }
10203
+ releaseNewNodeDefaults(node, style, baseline, written);
10204
+ return written.length ? { id: node.id, type: node.type, style: style.id, outcome: AdoptOutcome.Upgraded, written, kept: [] } : null;
10205
+ }
10206
+ /**
10207
+ * Adopt every node of `tree` in place (children included) and report what happened. Skipped, never
10208
+ * touched: a node with a style preset, and every node of a linked symbol instance. A node whose type
10209
+ * has no default style is not linked, but an untouched baseline colour on it is released to the
10210
+ * new-node default all the same, so adopted text inside it is not painted the old literal.
10211
+ */
10212
+ function adoptElementStyles(tree, ctx) {
10213
+ const report = { adopted: [], skipped: [], kept: 0 };
10214
+ const visit = (nodes, inSymbol) => {
10215
+ for (const node of nodes ?? []) {
10216
+ if (!node?.type)
10217
+ continue;
10218
+ const symbol = inSymbol || !!node.symbolId;
10219
+ adoptNode(node, symbol, ctx, report);
10220
+ visit(node.children, symbol);
10221
+ }
10222
+ };
10223
+ visit(tree, false);
10224
+ report.kept = report.adopted.reduce((n, a) => n + a.kept.length, 0);
10225
+ return report;
10226
+ }
10227
+ function adoptNode(node, inSymbol, ctx, report) {
10228
+ const worn = elementStyleById(node.elementStyle);
10229
+ const target = worn ? null : elementStyleById(adoptionStyleFor(node));
10230
+ const reason = inSymbol ? AdoptSkipReason.Symbol : node.stylePresetId ? AdoptSkipReason.Preset : null;
10231
+ if (reason) {
10232
+ if (target)
10233
+ report.skipped.push({ id: node.id, type: node.type, reason });
10234
+ return;
10235
+ }
10236
+ const baseline = ctx.baseline(node.type) ?? {};
10237
+ if (worn) {
10238
+ const upgraded = upgrade(node, worn, baseline);
10239
+ if (upgraded)
10240
+ report.adopted.push(upgraded);
10241
+ return;
10242
+ }
10243
+ if (node.elementStyle)
10244
+ return;
10245
+ if (!target) {
10246
+ releaseNewNodeDefaults(node, null, baseline, []);
10247
+ report.skipped.push({ id: node.id, type: node.type, reason: AdoptSkipReason.NoStyle });
10248
+ return;
10249
+ }
10250
+ report.adopted.push(link(node, target, baseline));
10251
+ }
10252
+ /** What adopting `tree` WOULD do, without touching it (the banner's count). */
10253
+ function previewElementStyleAdoption(tree, ctx) {
10254
+ return adoptElementStyles(JSON.parse(JSON.stringify(tree ?? [])), ctx);
10255
+ }
10256
+
10046
10257
  /**
10047
10258
  * The design-system classes a node renders, in BOTH renderers (builder canvas, engine component
10048
10259
  * path, engine string path) — ONE helper, so the three can never disagree about which class a node
@@ -11058,17 +11269,28 @@ function revertAvailable(appliedAt, now) {
11058
11269
  return typeof appliedAt === 'number' && appliedAt > 0 && now - appliedAt <= REVERT_WINDOW_MS;
11059
11270
  }
11060
11271
  /**
11061
- * Restore the snapshot EXACTLY: snapshot rows come back to their stored value/dark/source
11062
- * (update when present, recreate when deleted); rows the apply CREATED (flavor-stamped and
11063
- * absent from the snapshot) are removed. Hand-made rows born after the apply are not ours
11064
- * to touch — a revert undoes the FLAVOR, not the author's week.
11272
+ * Restore the snapshot: snapshot rows come back to their stored value/dark/source (update when
11273
+ * present, recreate when deleted); rows the apply CREATED (flavor-stamped and absent from the
11274
+ * snapshot) are removed. A revert undoes the FLAVOR, not the author's week: hand-made rows born after
11275
+ * the apply are not touched, and a row the author EDITED after the apply is kept (DS8: an edit makes
11276
+ * the row the author's, and a pack switch keeps it — so does going back). Edited-after = `source: user`,
11277
+ * differing from the snapshot, and holding something other than what the apply wrote (`wrote` — the
11278
+ * apply's own author rows, a chosen font or an Element-styles edit, still go back with it). With no
11279
+ * `wrote` at all, every author row that differs from the snapshot is judged edited after.
11065
11280
  */
11066
- function planFlavorRevert(current, snapshot) {
11281
+ function planFlavorRevert(current, snapshot, wrote) {
11067
11282
  const byName = new Map();
11068
11283
  for (const row of current ?? [])
11069
11284
  byName.set(row.name, row);
11285
+ const written = new Map((wrote ?? []).map(w => [w.name, w]));
11286
+ const editedAfter = (live) => {
11287
+ if (live.source !== USER_TOKEN_SOURCE)
11288
+ return false;
11289
+ const w = written.get(live.name);
11290
+ return !w || !sameValue(live, { value: w.value, dark: w.values?.dark });
11291
+ };
11070
11292
  const snapNames = new Set();
11071
- const plan = { create: [], update: [], remove: [] };
11293
+ const plan = { create: [], update: [], remove: [], kept: [] };
11072
11294
  for (const snap of snapshot ?? []) {
11073
11295
  snapNames.add(snap.name);
11074
11296
  const live = byName.get(snap.name);
@@ -11079,18 +11301,39 @@ function planFlavorRevert(current, snapshot) {
11079
11301
  const differs = live.value !== snap.value
11080
11302
  || (live.values?.dark ?? null) !== (snap.values?.dark ?? null)
11081
11303
  || (live.source ?? null) !== (snap.source ?? null);
11304
+ if (!differs || !live._id)
11305
+ continue;
11306
+ if (editedAfter(live)) {
11307
+ plan.kept.push(live.name);
11308
+ continue;
11309
+ }
11082
11310
  // `values` is ALWAYS sent: an absent key is dropped by JSON and a `$set` then keeps the
11083
11311
  // apply's dark override — a snapshot row with no dark must clear it, so it sends `{}`.
11084
- if (differs && live._id) {
11085
- plan.update.push({ id: live._id, data: { value: snap.value, values: snap.values ?? {}, source: snap.source } });
11086
- }
11312
+ plan.update.push({ id: live._id, data: { value: snap.value, values: snap.values ?? {}, source: snap.source } });
11087
11313
  }
11088
11314
  for (const row of current ?? []) {
11089
- if (!snapNames.has(row.name) && row._id && isSeeded(row))
11315
+ if (snapNames.has(row.name) || !row._id)
11316
+ continue;
11317
+ if (isSeeded(row))
11090
11318
  plan.remove.push(row._id);
11319
+ else if (written.has(row.name) && editedAfter(row))
11320
+ plan.kept.push(row.name);
11091
11321
  }
11092
11322
  return plan;
11093
11323
  }
11324
+ /** What a seed plan leaves in each row it writes, by name — the snapshot's `wrote`. */
11325
+ function flavorSeedWrites(plan, existing) {
11326
+ const byId = new Map((existing ?? []).filter(r => r._id).map(r => [r._id, r]));
11327
+ const out = (plan?.create ?? []).map(r => ({ name: r.name, value: r.value, ...(r.values ? { values: r.values } : {}) }));
11328
+ for (const u of plan?.update ?? []) {
11329
+ const row = byId.get(u.id);
11330
+ if (!row)
11331
+ continue;
11332
+ const values = u.data.values ?? row.values;
11333
+ out.push({ name: row.name, value: u.data.value ?? row.value, ...(values ? { values } : {}) });
11334
+ }
11335
+ return out;
11336
+ }
11094
11337
  const expectationFor = (baseline, row) => !baseline ? undefined : typeof baseline === 'function' ? baseline(row) : baseline.get(row.name);
11095
11338
  const sameValue = (row, e) => row.value === e.value && (row.values?.dark ?? '') === (e.dark ?? '');
11096
11339
  /**
@@ -11409,6 +11652,19 @@ function planDesignApply(existing, previous, next) {
11409
11652
  return { create: [], update: [], kept: [] };
11410
11653
  return planFlavorSeed(designTokenRows(next), existing, flavorSourceStamp(pack.id), designBaseline(previous));
11411
11654
  }
11655
+ /**
11656
+ * "Revert to previous look" over the org's rows — the ONE plan the Revert executes and its hint counts
11657
+ * (`kept`: the author's edits since the apply, left as they are). The apply's record of what it wrote
11658
+ * decides what an edit since is; a snapshot stored before that record existed (DS8.1) is judged against
11659
+ * the rows the applied design writes — the look's own author rows (a chosen font) still go back.
11660
+ * `null` when the design holds no snapshot.
11661
+ */
11662
+ function planDesignRevert(current, design) {
11663
+ const snapshot = design?.revert;
11664
+ if (!snapshot)
11665
+ return null;
11666
+ return planFlavorRevert(current, snapshot.tokens, snapshot.wrote ?? designTokenRows(design.choices));
11667
+ }
11412
11668
  /** The rows a design is missing by name — the builder-load top-up (never touches an existing row). */
11413
11669
  function missingDesignRows(existing, choices) {
11414
11670
  const have = new Set((existing ?? []).map(r => r.name));
@@ -11523,5 +11779,5 @@ function planFontFamilyRemoval(existing, previous, family) {
11523
11779
  * Generated bundle index. Do not edit.
11524
11780
  */
11525
11781
 
11526
- export { ACCENT_TOKEN_NAMES, BUTTON_VARIANT_TO_STYLE, COLOR_SCHEMES, COLOR_SCHEME_TRAIT, COLOR_SCHEME_TYPES, ColorScheme, DEFAULT_FLAVOR_ID, DESIGN_TOKEN_GROUPS, DESIGN_TOKEN_TIERS, DESIGN_TOKEN_TYPES, DesignConfigKey, ELEMENT_STYLES, ELEMENT_STYLE_MARKER_CLASS, ELEMENT_STYLE_STATES, EMPTY_IMAGE_ATTRIBUTE, EMPTY_IMAGE_SRC, ElementStyleState, FLAVOR_SPEC_VERSION, FONT_CATALOG, FONT_FAMILY_TOKENS, FONT_FILE_ACCEPT, FONT_FILE_EXTENSIONS, FONT_FILE_FORMATS, FONT_STYLES, FONT_WEIGHTS, FontUploadError, GOOGLE_FONTS_CSS_ORIGIN, GOOGLE_FONTS_FILE_ORIGIN, MAX_FONT_FILE_BYTES, OwnedTraitLink, PALETTE_PRESETS, REDUCED_MOTION_OVERRIDES, REDUCED_TRANSPARENCY_OVERRIDES, REVERT_WINDOW_MS, SPEC_A11Y, SPEC_AXES, SPEC_BUTTON_VARIANT_TO_STYLE, SPEC_CONTRAST, SPEC_DEFAULT_ELEMENT_STYLE, SPEC_ELEMENT_STYLES, SPEC_FIELD_CLASS_BASELINE, SPEC_FLAVORS, SPEC_FLAVOR_PACKS, SPEC_FONTS, SPEC_FONT_ROLES, SPEC_LEGACY_ALIASES, SPEC_PALETTE_PRESETS, SPEC_SCHEMES, SPEC_SPRINGS, SPEC_TIERS, SPEC_TIER_IDS, SPEC_TOKEN_TYPES, SWISS_FLAVOR, USER_TOKEN_SOURCE, WCAG_AA_TEXT, apcaLc, applyElementStyle, applyHeadingLevelRule, buildFlavorTokens, buildFontFaceCss, catalogFontId, checkFontWeight, choicesForPack, colorSchemeClass, colorSchemeOf, compareFontWeights, compileSchemeCss, compileTokenCss, compileTokenCssBlocks, cssString, defaultDesignChoices, defaultElementStyleFor, deriveAccentTokens, deriveBrandTokens, designBaseline, designConfigEntries, designModeOf, designTokenRepairs, designTokenRows, elementStyleById, elementStyleClass, elementStylesFor, emptyImageLabelSrc, emptyImagePlaceholder, emptyImageSrc, flavorPackById, flavorSourceStamp, fontFamilyKey, fontFileName, fontFileStem, fontFormatOf, fontPreloads, fontRoleReferences, fontStackWithout, fontWeightCovers, fontWeightRange, fontWeightValue, fontsForTokens, formatFontFamilies, formatFontFamily, formatFontWeight, googleFontHref, groupFontFamilies, hasElementStyleMarker, isDesignTokenGroup, isDesignTokenTier, isDesignTokenType, isFontWeightRange, isRetiredFlavorId, legacyRuleTokenReferences, matchFontWeight, missingDesignRows, missingFontRoles, nodeDesignClasses, normalizeFontStyle, normalizeFontWeight, normalizeFontWeightValue, oklabToRgb, ownedTraitStatus, packDesignChoices, parseFontFamilies, parseFontWeight, parseHexColor, planDesignApply, planFlavorRevert, planFlavorSeed, planFontFamilyRemoval, planSwissMigration, previewFontWeight, readDesignConfig, relativeLuminance, resolveDesignChoices, resolveTokenReferences, resolveTokenValues, revertAvailable, rgbToOklab, sameDesignChoices, specTokenNames, springToLinear, stackNamesFamily, styleKeyToKebab, switchElementStyle, syncNodeDesignClasses, toHexColor, tokenReferences, tokensToDarkVarMap, tokensToVarMap, unknownTokenReferences, userFontStack, validateFlavorPack, wcagContrastRatio };
11782
+ export { ACCENT_TOKEN_NAMES, AdoptOutcome, AdoptSkipReason, BUTTON_VARIANT_TO_STYLE, COLOR_SCHEMES, COLOR_SCHEME_TRAIT, COLOR_SCHEME_TYPES, ColorScheme, DEFAULT_FLAVOR_ID, DESIGN_TOKEN_GROUPS, DESIGN_TOKEN_TIERS, DESIGN_TOKEN_TYPES, DesignConfigKey, ELEMENT_STYLES, ELEMENT_STYLE_MARKER_CLASS, ELEMENT_STYLE_STATES, EMPTY_IMAGE_ATTRIBUTE, EMPTY_IMAGE_SRC, ElementStyleState, FLAVOR_SPEC_VERSION, FONT_CATALOG, FONT_FAMILY_TOKENS, FONT_FILE_ACCEPT, FONT_FILE_EXTENSIONS, FONT_FILE_FORMATS, FONT_STYLES, FONT_WEIGHTS, FontUploadError, GOOGLE_FONTS_CSS_ORIGIN, GOOGLE_FONTS_FILE_ORIGIN, MAX_FONT_FILE_BYTES, NEW_NODE_STYLE_DEFAULTS, OwnedTraitLink, PALETTE_PRESETS, PRE_DS2_FLAVOR_DEFAULTS, REDUCED_MOTION_OVERRIDES, REDUCED_TRANSPARENCY_OVERRIDES, REVERT_WINDOW_MS, SPEC_A11Y, SPEC_AXES, SPEC_BUTTON_VARIANT_TO_STYLE, SPEC_CONTRAST, SPEC_DEFAULT_ELEMENT_STYLE, SPEC_ELEMENT_STYLES, SPEC_FIELD_CLASS_BASELINE, SPEC_FLAVORS, SPEC_FLAVOR_PACKS, SPEC_FONTS, SPEC_FONT_ROLES, SPEC_LEGACY_ALIASES, SPEC_PALETTE_PRESETS, SPEC_SCHEMES, SPEC_SPRINGS, SPEC_TIERS, SPEC_TIER_IDS, SPEC_TOKEN_TYPES, SUPERSEDED_STYLE_VALUES, SWISS_FLAVOR, USER_TOKEN_SOURCE, WCAG_AA_TEXT, adoptElementStyles, adoptionStyleFor, apcaLc, applyElementStyle, applyHeadingLevelRule, buildFlavorTokens, buildFontFaceCss, catalogFontId, checkFontWeight, choicesForPack, colorSchemeClass, colorSchemeOf, compareFontWeights, compileSchemeCss, compileTokenCss, compileTokenCssBlocks, cssString, defaultDesignChoices, defaultElementStyleFor, deriveAccentTokens, deriveBrandTokens, designBaseline, designConfigEntries, designModeOf, designTokenRepairs, designTokenRows, elementStyleById, elementStyleClass, elementStylesFor, emptyImageLabelSrc, emptyImagePlaceholder, emptyImageSrc, flavorPackById, flavorSeedWrites, flavorSourceStamp, fontFamilyKey, fontFileName, fontFileStem, fontFormatOf, fontPreloads, fontRoleReferences, fontStackWithout, fontWeightCovers, fontWeightRange, fontWeightValue, fontsForTokens, formatFontFamilies, formatFontFamily, formatFontWeight, googleFontHref, groupFontFamilies, hasElementStyleMarker, isDesignTokenGroup, isDesignTokenTier, isDesignTokenType, isFontWeightRange, isRetiredFlavorId, legacyRuleTokenReferences, matchFontWeight, missingDesignRows, missingFontRoles, nodeDesignClasses, normalizeFontStyle, normalizeFontWeight, normalizeFontWeightValue, oklabToRgb, ownedTraitStatus, ownedTraitsOf, packDesignChoices, parseFontFamilies, parseFontWeight, parseHexColor, planDesignApply, planDesignRevert, planFlavorRevert, planFlavorSeed, planFontFamilyRemoval, planSwissMigration, previewElementStyleAdoption, previewFontWeight, readDesignConfig, readOwnedTrait, relativeLuminance, resolveDesignChoices, resolveTokenReferences, resolveTokenValues, revertAvailable, rgbToOklab, sameDesignChoices, specTokenNames, springToLinear, stackNamesFamily, styleKeyToKebab, switchElementStyle, syncNodeDesignClasses, toHexColor, tokenReferences, tokensToDarkVarMap, tokensToVarMap, unknownTokenReferences, userFontStack, validateFlavorPack, wcagContrastRatio, writeOwnedTrait };
11527
11783
  //# sourceMappingURL=vectoriox-iox-ui-design-core.mjs.map