@aloudata/aloudata-design 3.1.0 → 3.1.2

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.
Files changed (196) hide show
  1. package/dist/AProgress/index.js +10 -0
  2. package/dist/AProgress/index.js.map +1 -1
  3. package/dist/Alert/index.js +3 -1
  4. package/dist/Alert/index.js.map +1 -1
  5. package/dist/Badge/index.js +37 -11
  6. package/dist/Badge/index.js.map +1 -1
  7. package/dist/Breadcrumb/index.js +12 -2
  8. package/dist/Breadcrumb/index.js.map +1 -1
  9. package/dist/Button/index.d.ts +1 -1
  10. package/dist/Button/index.js +20 -6
  11. package/dist/Button/index.js.map +1 -1
  12. package/dist/Card/index.js +1 -1
  13. package/dist/Card/index.js.map +1 -1
  14. package/dist/Carousel/index.js +9 -1
  15. package/dist/Carousel/index.js.map +1 -1
  16. package/dist/Checkbox/index.js +17 -2
  17. package/dist/Checkbox/index.js.map +1 -1
  18. package/dist/Checkbox/type.d.ts +10 -2
  19. package/dist/ColorPicker/index.js +112 -46
  20. package/dist/ColorPicker/index.js.map +1 -1
  21. package/dist/DataPreviewTable/components/Body/Cell.d.ts +2 -0
  22. package/dist/DataPreviewTable/components/Body/Cell.js +9 -1
  23. package/dist/DataPreviewTable/components/Body/Cell.js.map +1 -1
  24. package/dist/DataPreviewTable/components/Body/index.d.ts +1 -0
  25. package/dist/DataPreviewTable/components/Body/index.js +35 -23
  26. package/dist/DataPreviewTable/components/Body/index.js.map +1 -1
  27. package/dist/DataPreviewTable/components/Header/index.d.ts +1 -0
  28. package/dist/DataPreviewTable/components/Header/index.js +36 -28
  29. package/dist/DataPreviewTable/components/Header/index.js.map +1 -1
  30. package/dist/DataPreviewTable/index.js +19 -2
  31. package/dist/DataPreviewTable/index.js.map +1 -1
  32. package/dist/Drawer/index.d.ts +4 -0
  33. package/dist/Drawer/index.js +93 -79
  34. package/dist/Drawer/index.js.map +1 -1
  35. package/dist/Dropdown/index.d.ts +1 -1
  36. package/dist/Dropdown/index.js +64 -13
  37. package/dist/Dropdown/index.js.map +1 -1
  38. package/dist/Form/FormItemContext.d.ts +1 -1
  39. package/dist/Form/FormItemContext.js.map +1 -1
  40. package/dist/Form/index.js +50 -7
  41. package/dist/Form/index.js.map +1 -1
  42. package/dist/IconButton/index.d.ts +2 -2
  43. package/dist/IconButton/index.js +9 -3
  44. package/dist/IconButton/index.js.map +1 -1
  45. package/dist/Input/components/Input/index.js +18 -8
  46. package/dist/Input/components/Input/index.js.map +1 -1
  47. package/dist/Input/components/TextArea/index.js +18 -7
  48. package/dist/Input/components/TextArea/index.js.map +1 -1
  49. package/dist/Input/privateSemanticOwner.d.ts +2 -0
  50. package/dist/Input/privateSemanticOwner.js +1 -0
  51. package/dist/InputNumber/index.js +16 -9
  52. package/dist/InputNumber/index.js.map +1 -1
  53. package/dist/InputNumber/type.d.ts +2 -2
  54. package/dist/LogicTree/components/LogicItem/index.d.ts +2 -1
  55. package/dist/LogicTree/components/LogicItem/index.js +13 -2
  56. package/dist/LogicTree/components/LogicItem/index.js.map +1 -1
  57. package/dist/LogicTree/index.js +2 -0
  58. package/dist/LogicTree/index.js.map +1 -1
  59. package/dist/MemberPicker/components/MemberSelection.d.ts +2 -0
  60. package/dist/MemberPicker/components/MemberSelection.js +15 -13
  61. package/dist/MemberPicker/components/MemberSelection.js.map +1 -1
  62. package/dist/MemberPicker/components/MultipleOption.js +12 -0
  63. package/dist/MemberPicker/components/MultipleOption.js.map +1 -1
  64. package/dist/MemberPicker/components/Panel.d.ts +2 -0
  65. package/dist/MemberPicker/components/Panel.js +11 -1
  66. package/dist/MemberPicker/components/Panel.js.map +1 -1
  67. package/dist/MemberPicker/components/PanelWrapper.js +2 -0
  68. package/dist/MemberPicker/components/PanelWrapper.js.map +1 -1
  69. package/dist/MemberPicker/components/SelectedMemberTags.js +14 -6
  70. package/dist/MemberPicker/components/SelectedMemberTags.js.map +1 -1
  71. package/dist/MemberPicker/components/SingleOption.js +12 -0
  72. package/dist/MemberPicker/components/SingleOption.js.map +1 -1
  73. package/dist/MemberPicker/components/UserGroupSelection.d.ts +3 -1
  74. package/dist/MemberPicker/components/UserGroupSelection.js +65 -42
  75. package/dist/MemberPicker/components/UserGroupSelection.js.map +1 -1
  76. package/dist/MemberPicker/index.js +134 -108
  77. package/dist/MemberPicker/index.js.map +1 -1
  78. package/dist/Menu/index.d.ts +8 -0
  79. package/dist/Menu/index.js +33 -3
  80. package/dist/Menu/index.js.map +1 -1
  81. package/dist/Modal/index.d.ts +4 -0
  82. package/dist/Modal/index.js +55 -66
  83. package/dist/Modal/index.js.map +1 -1
  84. package/dist/OverflowCount/index.js +10 -0
  85. package/dist/OverflowCount/index.js.map +1 -1
  86. package/dist/Pagination/index.js +1 -0
  87. package/dist/Pagination/index.js.map +1 -1
  88. package/dist/Popconfirm/index.js +9 -1
  89. package/dist/Popconfirm/index.js.map +1 -1
  90. package/dist/Popover/index.js +52 -1
  91. package/dist/Popover/index.js.map +1 -1
  92. package/dist/Progress/index.js +4 -0
  93. package/dist/Progress/index.js.map +1 -1
  94. package/dist/Radio/components/Group/index.d.ts +5 -1
  95. package/dist/Radio/components/Group/index.js +7 -2
  96. package/dist/Radio/components/Group/index.js.map +1 -1
  97. package/dist/Radio/components/Radio/index.js +26 -0
  98. package/dist/Radio/components/Radio/index.js.map +1 -1
  99. package/dist/Radio/interface/radio.d.ts +7 -0
  100. package/dist/Radio/interface/radioGroup.d.ts +2 -0
  101. package/dist/RenameInput/index.js +11 -0
  102. package/dist/RenameInput/index.js.map +1 -1
  103. package/dist/Select/BaseSelect.d.ts +3 -0
  104. package/dist/Select/BaseSelect.js +229 -32
  105. package/dist/Select/BaseSelect.js.map +1 -1
  106. package/dist/Select/SelectTrigger.d.ts +2 -0
  107. package/dist/Select/SelectTrigger.js +13 -5
  108. package/dist/Select/SelectTrigger.js.map +1 -1
  109. package/dist/Select/components/OptionCollection.d.ts +41 -0
  110. package/dist/Select/components/OptionCollection.js +124 -0
  111. package/dist/Select/components/OptionCollection.js.map +1 -0
  112. package/dist/Select/index.js +45 -3
  113. package/dist/Select/index.js.map +1 -1
  114. package/dist/Select/interface.d.ts +1 -1
  115. package/dist/Skeleton/index.js +1 -1
  116. package/dist/Skeleton/index.js.map +1 -1
  117. package/dist/Spin/index.d.ts +1 -1
  118. package/dist/Spin/index.js +22 -7
  119. package/dist/Spin/index.js.map +1 -1
  120. package/dist/Switch/index.d.ts +5 -0
  121. package/dist/Switch/index.js +15 -5
  122. package/dist/Switch/index.js.map +1 -1
  123. package/dist/Table/components/Header.js +0 -1
  124. package/dist/Table/components/Header.js.map +1 -1
  125. package/dist/Table/index.js +42 -27
  126. package/dist/Table/index.js.map +1 -1
  127. package/dist/Tabs/index.js +1 -0
  128. package/dist/Tabs/index.js.map +1 -1
  129. package/dist/Tag/index.js +20 -1
  130. package/dist/Tag/index.js.map +1 -1
  131. package/dist/Tooltip/index.js +34 -5
  132. package/dist/Tooltip/index.js.map +1 -1
  133. package/dist/Tour/index.js +13 -1
  134. package/dist/Tour/index.js.map +1 -1
  135. package/dist/Tree/Tree2.js +2 -0
  136. package/dist/Tree/Tree2.js.map +1 -1
  137. package/dist/_utils/dialogAccessibility.d.ts +17 -0
  138. package/dist/_utils/dialogAccessibility.js +110 -0
  139. package/dist/_utils/dialogAccessibility.js.map +1 -0
  140. package/dist/_utils/formControlSemanticOwner.d.ts +3 -0
  141. package/dist/_utils/formControlSemanticOwner.js +17 -0
  142. package/dist/_utils/formControlSemanticOwner.js.map +1 -0
  143. package/dist/_utils/overlayCoordinator.js +1 -11
  144. package/dist/_utils/overlayCoordinator.js.map +1 -1
  145. package/dist/aloudata-design.css +1 -1
  146. package/dist/governance/semantic.d.ts +1 -0
  147. package/dist/governance/semantic.js +2 -0
  148. package/dist/governance/semantic.json +1737 -0
  149. package/dist/theme/contract/baselineResolvedTokenValueManifest.d.ts +1 -1
  150. package/dist/theme/contract/darkResolvedTokenValueManifest.d.ts +1 -1
  151. package/dist/theme/contract/tokenOutputContract.js +1 -0
  152. package/dist/theme/contract/tokenOutputContract.js.map +1 -1
  153. package/dist/theme/generator/acceptedColorValues.d.ts +2 -1
  154. package/dist/theme/generator/baselineTokenValueDelivery.d.ts +9 -1
  155. package/dist/theme/generator/minimalAcceptedColorValues.d.ts +2 -2
  156. package/dist/theme/generator/neutralSourceResolver.d.ts +28 -0
  157. package/dist/theme/generator/neutralSourceResolver.js +2 -0
  158. package/dist/theme/generator/neutralSourceValues.d.ts +28 -0
  159. package/dist/theme/generator/neutralSourceValues.js +2 -0
  160. package/dist/theme/governance/semanticGovernanceContract.d.ts +91 -0
  161. package/dist/theme/governance/semanticGovernanceContract.js +342 -0
  162. package/dist/theme/governance/semanticGovernanceContract.js.map +1 -0
  163. package/dist/theme/index.d.ts +2 -0
  164. package/dist/theme/index.js +1 -0
  165. package/dist/theme/neutralSourceContract.d.ts +3 -0
  166. package/dist/theme/neutralSourceContract.js +11 -0
  167. package/dist/theme/neutralSourceContract.js.map +1 -0
  168. package/dist/theme/runtime/colorValueMode/generated/darkBaselineDeclarations.d.ts +1 -1
  169. package/dist/theme/runtime/colorValueMode/generated/darkBaselineDeclarations.js +46 -45
  170. package/dist/theme/runtime/colorValueMode/generated/darkBaselineDeclarations.js.map +1 -1
  171. package/dist/theme/runtime/colorValueMode/generated/slateDarkDeclarations.d.ts +3 -0
  172. package/dist/theme/runtime/colorValueMode/generated/slateDarkDeclarations.js +2 -0
  173. package/dist/theme/runtime/colorValueMode/generated/slateLightDeclarations.d.ts +3 -0
  174. package/dist/theme/runtime/colorValueMode/generated/slateLightDeclarations.js +2 -0
  175. package/dist/theme/runtime/colorValueMode/generated/stoneDarkDeclarations.d.ts +3 -0
  176. package/dist/theme/runtime/colorValueMode/generated/stoneDarkDeclarations.js +2 -0
  177. package/dist/theme/runtime/colorValueMode/generated/stoneLightDeclarations.d.ts +3 -0
  178. package/dist/theme/runtime/colorValueMode/generated/stoneLightDeclarations.js +2 -0
  179. package/dist/theme/runtime/colorValueMode/generated/v3BaselineDeclarations.d.ts +1 -1
  180. package/dist/theme/runtime/colorValueMode/generated/v3BaselineDeclarations.js +42 -41
  181. package/dist/theme/runtime/colorValueMode/generated/v3BaselineDeclarations.js.map +1 -1
  182. package/dist/theme/runtime/colorValueMode/index.js +2 -12
  183. package/dist/theme/runtime/colorValueMode/index.js.map +1 -1
  184. package/dist/theme/runtime/colorValueMode/legacyNeutralCompatibility.d.ts +2 -0
  185. package/dist/theme/runtime/colorValueMode/legacyNeutralCompatibility.js +48 -0
  186. package/dist/theme/runtime/colorValueMode/legacyNeutralCompatibility.js.map +1 -0
  187. package/dist/theme/runtime/colorValueMode/registry.d.ts +1 -1
  188. package/dist/theme/runtime/colorValueMode/registry.js +2 -1
  189. package/dist/theme/runtime/colorValueMode/registry.js.map +1 -1
  190. package/dist/theme/runtime/initAldTheme.js +1 -3
  191. package/dist/theme/runtime/initAldTheme.js.map +1 -1
  192. package/dist/theme/runtime/neutralSource/index.d.ts +6 -0
  193. package/dist/theme/runtime/neutralSource/index.js +11 -0
  194. package/dist/theme/runtime/neutralSource/index.js.map +1 -0
  195. package/dist/theme/runtime/neutralSource.d.ts +2 -0
  196. package/package.json +12 -2
@@ -16,7 +16,7 @@ export interface BaselineResolvedTokenValueManifestValidationResult {
16
16
  errors: string[];
17
17
  fingerprint: string;
18
18
  }
19
- export declare const baselineResolvedTokenValueManifestVersion: "baseline-resolved-token-values-v1";
19
+ export declare const baselineResolvedTokenValueManifestVersion: "baseline-resolved-token-values-v2";
20
20
  export declare const baselineResolvedTokenValueManifest: readonly BaselineResolvedTokenValueManifestRecord[];
21
21
  export declare const baselineResolvedTokenValueManifestFingerprint: string;
22
22
  export declare function validateBaselineResolvedTokenValueManifest(): BaselineResolvedTokenValueManifestValidationResult;
@@ -1,5 +1,5 @@
1
1
  import { BaselineResolvedTokenValueManifestRecord, BaselineResolvedTokenValueManifestValidationResult } from './baselineResolvedTokenValueManifest.js';
2
- export declare const darkResolvedTokenValueManifestVersion: "dark-resolved-token-values-v1";
2
+ export declare const darkResolvedTokenValueManifestVersion: "dark-resolved-token-values-v2";
3
3
  export declare const darkResolvedTokenValueManifest: readonly BaselineResolvedTokenValueManifestRecord[];
4
4
  export declare const darkResolvedTokenValueManifestFingerprint: string;
5
5
  export declare function validateDarkResolvedTokenValueManifest(): BaselineResolvedTokenValueManifestValidationResult;
@@ -39,6 +39,7 @@ var actionOutputNames = [
39
39
  var backgroundOutputNames = [
40
40
  "--background-default",
41
41
  "--background-inverted",
42
+ "--background-mask",
42
43
  "--background-brand-muted",
43
44
  "--background-brand-on-subtle",
44
45
  "--background-brand-strong",
@@ -1 +1 @@
1
- {"version":3,"file":"tokenOutputContract.js","names":[],"sources":["../../../src/theme/contract/tokenOutputContract.ts"],"sourcesContent":["import {\n migrationMappingRegistry,\n type LegacyCssVariableName,\n type TokenOutputVariableName,\n} from '../governance/migrationMappingRegistry';\n\nexport type TokenOutputContractGroup =\n | 'action'\n | 'background'\n | 'border'\n | 'control-state'\n | 'focus'\n | 'content'\n | 'dimension'\n | 'compatibility';\n\nexport type TokenOutputContractDeliveryKind = 'css-variable';\n\nexport type TokenOutputContractLifecycle =\n | 'active'\n | 'deprecated'\n | 'compatibility';\n\nexport interface TokenOutputContractCompatibility {\n source?: LegacyCssVariableName;\n reason: string;\n}\n\nexport interface TokenOutputContractEntry {\n name: TokenOutputVariableName;\n group: TokenOutputContractGroup;\n delivery: TokenOutputContractDeliveryKind;\n lifecycle: TokenOutputContractLifecycle;\n compatibility?: TokenOutputContractCompatibility;\n description?: string;\n}\n\nexport type TokenOutputContractValidationIssueCode =\n | 'duplicate-name'\n | 'invalid-name'\n | 'invalid-legacy-canonical-name'\n | 'invalid-compatibility-name'\n | 'missing-published-migration-target'\n | 'legacy-source-promoted-to-canonical-output';\n\nexport interface TokenOutputContractValidationIssue {\n code: TokenOutputContractValidationIssueCode;\n name: string;\n message: string;\n}\n\nexport interface TokenOutputContractValidationReport {\n valid: boolean;\n entriesChecked: number;\n errors: TokenOutputContractValidationIssue[];\n}\n\nconst legacySourcePrefixes = [\n '--alias-',\n '--interaction-',\n '--non-semantic-',\n] as const;\n\nfunction createEntries(\n group: TokenOutputContractGroup,\n names: readonly TokenOutputVariableName[],\n): TokenOutputContractEntry[] {\n return names.map((name) => ({\n name,\n group,\n delivery: 'css-variable',\n lifecycle: 'active',\n compatibility: undefined,\n }));\n}\n\nfunction actionStates(\n family: string,\n states: readonly string[] = ['normal', 'hover', 'active', 'selected'],\n): TokenOutputVariableName[] {\n return states.map((state) => `--action-${family}-${state}` as const);\n}\n\nconst actionOutputNames: TokenOutputVariableName[] = [\n ...actionStates('primary'),\n ...actionStates('primary-subtle'),\n ...actionStates('neutral'),\n ...actionStates('neutral-subtle'),\n ...actionStates('destructive'),\n ...actionStates('destructive-subtle'),\n ...actionStates('ghost'),\n ...actionStates('ghost-inverted', ['hover', 'active', 'selected']),\n ...actionStates('ghost-destructive', ['hover', 'active', 'selected']),\n ...actionStates('inverted'),\n];\n\nconst backgroundOutputNames: TokenOutputVariableName[] = [\n '--background-default',\n '--background-inverted',\n '--background-brand-muted',\n '--background-brand-on-subtle',\n '--background-brand-strong',\n '--background-neutral-hard',\n '--background-neutral-muted',\n '--background-neutral-on-subtle',\n '--background-neutral-strong',\n '--background-neutral-subtle',\n '--background-neutral-surface',\n '--background-informative-muted',\n '--background-informative-on-subtle',\n '--background-informative-strong',\n '--background-informative-subtle',\n '--background-informative-surface',\n '--background-positive-muted',\n '--background-positive-on-subtle',\n '--background-positive-strong',\n '--background-positive-subtle',\n '--background-positive-surface',\n '--background-warning-muted',\n '--background-warning-on-subtle',\n '--background-warning-strong',\n '--background-warning-subtle',\n '--background-warning-surface',\n '--background-negative-muted',\n '--background-negative-on-subtle',\n '--background-negative-strong',\n '--background-negative-subtle',\n '--background-negative-surface',\n];\n\nconst borderOutputNames: TokenOutputVariableName[] = [\n '--border-default',\n '--border-default-alpha',\n '--border-inverted',\n '--border-brand-strong',\n '--border-brand-subtle',\n '--border-neutral-strong',\n '--border-neutral-subtle',\n '--border-informative-strong',\n '--border-informative-subtle',\n '--border-positive-strong',\n '--border-positive-subtle',\n '--border-warning-strong',\n '--border-warning-subtle',\n '--border-negative-strong',\n '--border-negative-subtle',\n];\n\nconst contentOutputNames: TokenOutputVariableName[] = [\n '--content-primary',\n '--content-secondary',\n '--content-tertiary',\n '--content-disabled',\n '--content-brand-primary',\n '--content-brand-secondary',\n '--content-inverted-primary',\n '--content-inverted-secondary',\n '--content-inverted-tertiary',\n '--content-inverted-disabled',\n '--content-informative-primary',\n '--content-informative-secondary',\n '--content-positive-primary',\n '--content-positive-secondary',\n '--content-warning-primary',\n '--content-warning-secondary',\n '--content-negative-primary',\n '--content-negative-secondary',\n];\n\nconst controlStateOutputNames: TokenOutputVariableName[] = [\n '--control-state-selected',\n '--control-state-unselected',\n];\n\nconst focusOutputNames: TokenOutputVariableName[] = ['--focus-ring'];\n\nconst dimensionOutputNames: TokenOutputVariableName[] = [\n '--dimension-0',\n '--dimension-0-5',\n '--dimension-1',\n '--dimension-1-5',\n '--dimension-2',\n '--dimension-3',\n '--dimension-4',\n '--dimension-5',\n '--dimension-6',\n '--dimension-8',\n '--dimension-10',\n '--dimension-12',\n '--dimension-14',\n '--dimension-16',\n '--dimension-18',\n '--dimension-20',\n];\n\nexport const tokenOutputContractEntries = [\n ...createEntries('action', actionOutputNames),\n ...createEntries('background', backgroundOutputNames),\n ...createEntries('border', borderOutputNames),\n ...createEntries('control-state', controlStateOutputNames),\n ...createEntries('focus', focusOutputNames),\n ...createEntries('content', contentOutputNames),\n ...createEntries('dimension', dimensionOutputNames),\n] as const satisfies readonly TokenOutputContractEntry[];\n\nfunction isLegacySourceName(name: string) {\n return legacySourcePrefixes.some((prefix) => name.startsWith(prefix));\n}\n\nfunction createEntryMap(entries = tokenOutputContractEntries) {\n return new Map(entries.map((entry) => [entry.name, entry]));\n}\n\nexport function getTokenOutputContractEntries(): TokenOutputContractEntry[] {\n return [...tokenOutputContractEntries];\n}\n\nexport function getTokenOutputContractEntry(\n name: string,\n): TokenOutputContractEntry | undefined {\n return createEntryMap().get(name as TokenOutputVariableName);\n}\n\nexport function isTokenOutputContractName(\n name: string,\n): name is TokenOutputVariableName {\n return createEntryMap().has(name as TokenOutputVariableName);\n}\n\nexport function getTokenOutputContractEntriesByGroup(\n group: TokenOutputContractGroup,\n): TokenOutputContractEntry[] {\n return tokenOutputContractEntries.filter((entry) => entry.group === group);\n}\n\nexport function getCanonicalTokenOutputContractEntries(): TokenOutputContractEntry[] {\n return tokenOutputContractEntries.filter(\n (entry) => entry.lifecycle === 'active' && !entry.compatibility,\n );\n}\n\nexport function getCompatibilityTokenOutputContractEntries(): TokenOutputContractEntry[] {\n return tokenOutputContractEntries.filter(\n (entry) =>\n entry.lifecycle === 'compatibility' || Boolean(entry.compatibility),\n );\n}\n\nfunction createError(\n code: TokenOutputContractValidationIssueCode,\n name: string,\n message: string,\n): TokenOutputContractValidationIssue {\n return { code, name, message };\n}\n\nexport function validateTokenOutputContract(\n entries: readonly TokenOutputContractEntry[] = tokenOutputContractEntries,\n): TokenOutputContractValidationReport {\n const errors: TokenOutputContractValidationIssue[] = [];\n const seen = new Set<string>();\n const entryMap = createEntryMap(entries);\n\n for (const entry of entries) {\n if (seen.has(entry.name)) {\n errors.push(\n createError(\n 'duplicate-name',\n entry.name,\n `${entry.name} is duplicated in Token Output Contract.`,\n ),\n );\n }\n seen.add(entry.name);\n\n if (!entry.name.startsWith('--')) {\n errors.push(\n createError(\n 'invalid-name',\n entry.name,\n `${entry.name} must be a CSS custom property name.`,\n ),\n );\n }\n\n if (\n entry.lifecycle === 'active' &&\n !entry.compatibility &&\n isLegacySourceName(entry.name)\n ) {\n errors.push(\n createError(\n 'invalid-legacy-canonical-name',\n entry.name,\n `${entry.name} must not be promoted to active canonical output.`,\n ),\n );\n }\n\n if (\n isLegacySourceName(entry.name) &&\n (entry.lifecycle !== 'compatibility' || !entry.compatibility)\n ) {\n errors.push(\n createError(\n 'invalid-compatibility-name',\n entry.name,\n `${entry.name} uses legacy naming and must be explicit compatibility output.`,\n ),\n );\n }\n }\n\n for (const mapping of migrationMappingRegistry) {\n if (mapping.lifecycle === 'published' && mapping.target) {\n if (!entryMap.has(mapping.target)) {\n errors.push(\n createError(\n 'missing-published-migration-target',\n mapping.target,\n `${mapping.target} is targeted by ${mapping.source} but is not in Token Output Contract.`,\n ),\n );\n }\n }\n\n const sourceEntry = entryMap.get(mapping.source);\n if (\n sourceEntry &&\n sourceEntry.lifecycle === 'active' &&\n !sourceEntry.compatibility\n ) {\n errors.push(\n createError(\n 'legacy-source-promoted-to-canonical-output',\n mapping.source,\n `${mapping.source} is a legacy source and must not be active canonical output.`,\n ),\n );\n }\n }\n\n return {\n valid: errors.length === 0,\n entriesChecked: entries.length,\n errors,\n };\n}\n"],"mappings":";AA+DA,SAAS,cACP,OACA,OAC4B;AAC5B,QAAO,MAAM,KAAK,UAAU;EAC1B;EACA;EACA,UAAU;EACV,WAAW;EACX,eAAe;EAChB,EAAE;;AAGL,SAAS,aACP,QACA,SAA4B;CAAC;CAAU;CAAS;CAAU;CAAW,EAC1C;AAC3B,QAAO,OAAO,KAAK,UAAU,YAAY,OAAO,GAAG,QAAiB;;AAGtE,IAAM,oBAA+C;CACnD,GAAG,aAAa,UAAU;CAC1B,GAAG,aAAa,iBAAiB;CACjC,GAAG,aAAa,UAAU;CAC1B,GAAG,aAAa,iBAAiB;CACjC,GAAG,aAAa,cAAc;CAC9B,GAAG,aAAa,qBAAqB;CACrC,GAAG,aAAa,QAAQ;CACxB,GAAG,aAAa,kBAAkB;EAAC;EAAS;EAAU;EAAW,CAAC;CAClE,GAAG,aAAa,qBAAqB;EAAC;EAAS;EAAU;EAAW,CAAC;CACrE,GAAG,aAAa,WAAW;CAC5B;AAED,IAAM,wBAAmD;CACvD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAM,oBAA+C;CACnD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAM,qBAAgD;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAM,0BAAqD,CACzD,4BACA,6BACD;AAED,IAAM,mBAA8C,CAAC,eAAe;AAEpE,IAAM,uBAAkD;CACtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAa,6BAA6B;CACxC,GAAG,cAAc,UAAU,kBAAkB;CAC7C,GAAG,cAAc,cAAc,sBAAsB;CACrD,GAAG,cAAc,UAAU,kBAAkB;CAC7C,GAAG,cAAc,iBAAiB,wBAAwB;CAC1D,GAAG,cAAc,SAAS,iBAAiB;CAC3C,GAAG,cAAc,WAAW,mBAAmB;CAC/C,GAAG,cAAc,aAAa,qBAAqB;CACpD;AAMD,SAAS,eAAe,UAAU,4BAA4B;AAC5D,QAAO,IAAI,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC;;AAG7D,SAAgB,gCAA4D;AAC1E,QAAO,CAAC,GAAG,2BAA2B;;AAGxC,SAAgB,4BACd,MACsC;AACtC,QAAO,gBAAgB,CAAC,IAAI,KAAgC;;AAS9D,SAAgB,qCACd,OAC4B;AAC5B,QAAO,2BAA2B,QAAQ,UAAU,MAAM,UAAU,MAAM;;AAG5E,SAAgB,yCAAqE;AACnF,QAAO,2BAA2B,QAC/B,UAAU,MAAM,cAAc,YAAY,CAAC,MAAM,cACnD;;AAGH,SAAgB,6CAAyE;AACvF,QAAO,2BAA2B,QAC/B,UACC,MAAM,cAAc,mBAAmB,QAAQ,MAAM,cAAc,CACtE"}
1
+ {"version":3,"file":"tokenOutputContract.js","names":[],"sources":["../../../src/theme/contract/tokenOutputContract.ts"],"sourcesContent":["import {\n migrationMappingRegistry,\n type LegacyCssVariableName,\n type TokenOutputVariableName,\n} from '../governance/migrationMappingRegistry';\n\nexport type TokenOutputContractGroup =\n | 'action'\n | 'background'\n | 'border'\n | 'control-state'\n | 'focus'\n | 'content'\n | 'dimension'\n | 'compatibility';\n\nexport type TokenOutputContractDeliveryKind = 'css-variable';\n\nexport type TokenOutputContractLifecycle =\n | 'active'\n | 'deprecated'\n | 'compatibility';\n\nexport interface TokenOutputContractCompatibility {\n source?: LegacyCssVariableName;\n reason: string;\n}\n\nexport interface TokenOutputContractEntry {\n name: TokenOutputVariableName;\n group: TokenOutputContractGroup;\n delivery: TokenOutputContractDeliveryKind;\n lifecycle: TokenOutputContractLifecycle;\n compatibility?: TokenOutputContractCompatibility;\n description?: string;\n}\n\nexport type TokenOutputContractValidationIssueCode =\n | 'duplicate-name'\n | 'invalid-name'\n | 'invalid-legacy-canonical-name'\n | 'invalid-compatibility-name'\n | 'missing-published-migration-target'\n | 'legacy-source-promoted-to-canonical-output';\n\nexport interface TokenOutputContractValidationIssue {\n code: TokenOutputContractValidationIssueCode;\n name: string;\n message: string;\n}\n\nexport interface TokenOutputContractValidationReport {\n valid: boolean;\n entriesChecked: number;\n errors: TokenOutputContractValidationIssue[];\n}\n\nconst legacySourcePrefixes = [\n '--alias-',\n '--interaction-',\n '--non-semantic-',\n] as const;\n\nfunction createEntries(\n group: TokenOutputContractGroup,\n names: readonly TokenOutputVariableName[],\n): TokenOutputContractEntry[] {\n return names.map((name) => ({\n name,\n group,\n delivery: 'css-variable',\n lifecycle: 'active',\n compatibility: undefined,\n }));\n}\n\nfunction actionStates(\n family: string,\n states: readonly string[] = ['normal', 'hover', 'active', 'selected'],\n): TokenOutputVariableName[] {\n return states.map((state) => `--action-${family}-${state}` as const);\n}\n\nconst actionOutputNames: TokenOutputVariableName[] = [\n ...actionStates('primary'),\n ...actionStates('primary-subtle'),\n ...actionStates('neutral'),\n ...actionStates('neutral-subtle'),\n ...actionStates('destructive'),\n ...actionStates('destructive-subtle'),\n ...actionStates('ghost'),\n ...actionStates('ghost-inverted', ['hover', 'active', 'selected']),\n ...actionStates('ghost-destructive', ['hover', 'active', 'selected']),\n ...actionStates('inverted'),\n];\n\nconst backgroundOutputNames: TokenOutputVariableName[] = [\n '--background-default',\n '--background-inverted',\n '--background-mask',\n '--background-brand-muted',\n '--background-brand-on-subtle',\n '--background-brand-strong',\n '--background-neutral-hard',\n '--background-neutral-muted',\n '--background-neutral-on-subtle',\n '--background-neutral-strong',\n '--background-neutral-subtle',\n '--background-neutral-surface',\n '--background-informative-muted',\n '--background-informative-on-subtle',\n '--background-informative-strong',\n '--background-informative-subtle',\n '--background-informative-surface',\n '--background-positive-muted',\n '--background-positive-on-subtle',\n '--background-positive-strong',\n '--background-positive-subtle',\n '--background-positive-surface',\n '--background-warning-muted',\n '--background-warning-on-subtle',\n '--background-warning-strong',\n '--background-warning-subtle',\n '--background-warning-surface',\n '--background-negative-muted',\n '--background-negative-on-subtle',\n '--background-negative-strong',\n '--background-negative-subtle',\n '--background-negative-surface',\n];\n\nconst borderOutputNames: TokenOutputVariableName[] = [\n '--border-default',\n '--border-default-alpha',\n '--border-inverted',\n '--border-brand-strong',\n '--border-brand-subtle',\n '--border-neutral-strong',\n '--border-neutral-subtle',\n '--border-informative-strong',\n '--border-informative-subtle',\n '--border-positive-strong',\n '--border-positive-subtle',\n '--border-warning-strong',\n '--border-warning-subtle',\n '--border-negative-strong',\n '--border-negative-subtle',\n];\n\nconst contentOutputNames: TokenOutputVariableName[] = [\n '--content-primary',\n '--content-secondary',\n '--content-tertiary',\n '--content-disabled',\n '--content-brand-primary',\n '--content-brand-secondary',\n '--content-inverted-primary',\n '--content-inverted-secondary',\n '--content-inverted-tertiary',\n '--content-inverted-disabled',\n '--content-informative-primary',\n '--content-informative-secondary',\n '--content-positive-primary',\n '--content-positive-secondary',\n '--content-warning-primary',\n '--content-warning-secondary',\n '--content-negative-primary',\n '--content-negative-secondary',\n];\n\nconst controlStateOutputNames: TokenOutputVariableName[] = [\n '--control-state-selected',\n '--control-state-unselected',\n];\n\nconst focusOutputNames: TokenOutputVariableName[] = ['--focus-ring'];\n\nconst dimensionOutputNames: TokenOutputVariableName[] = [\n '--dimension-0',\n '--dimension-0-5',\n '--dimension-1',\n '--dimension-1-5',\n '--dimension-2',\n '--dimension-3',\n '--dimension-4',\n '--dimension-5',\n '--dimension-6',\n '--dimension-8',\n '--dimension-10',\n '--dimension-12',\n '--dimension-14',\n '--dimension-16',\n '--dimension-18',\n '--dimension-20',\n];\n\nexport const tokenOutputContractEntries = [\n ...createEntries('action', actionOutputNames),\n ...createEntries('background', backgroundOutputNames),\n ...createEntries('border', borderOutputNames),\n ...createEntries('control-state', controlStateOutputNames),\n ...createEntries('focus', focusOutputNames),\n ...createEntries('content', contentOutputNames),\n ...createEntries('dimension', dimensionOutputNames),\n] as const satisfies readonly TokenOutputContractEntry[];\n\nfunction isLegacySourceName(name: string) {\n return legacySourcePrefixes.some((prefix) => name.startsWith(prefix));\n}\n\nfunction createEntryMap(entries = tokenOutputContractEntries) {\n return new Map(entries.map((entry) => [entry.name, entry]));\n}\n\nexport function getTokenOutputContractEntries(): TokenOutputContractEntry[] {\n return [...tokenOutputContractEntries];\n}\n\nexport function getTokenOutputContractEntry(\n name: string,\n): TokenOutputContractEntry | undefined {\n return createEntryMap().get(name as TokenOutputVariableName);\n}\n\nexport function isTokenOutputContractName(\n name: string,\n): name is TokenOutputVariableName {\n return createEntryMap().has(name as TokenOutputVariableName);\n}\n\nexport function getTokenOutputContractEntriesByGroup(\n group: TokenOutputContractGroup,\n): TokenOutputContractEntry[] {\n return tokenOutputContractEntries.filter((entry) => entry.group === group);\n}\n\nexport function getCanonicalTokenOutputContractEntries(): TokenOutputContractEntry[] {\n return tokenOutputContractEntries.filter(\n (entry) => entry.lifecycle === 'active' && !entry.compatibility,\n );\n}\n\nexport function getCompatibilityTokenOutputContractEntries(): TokenOutputContractEntry[] {\n return tokenOutputContractEntries.filter(\n (entry) =>\n entry.lifecycle === 'compatibility' || Boolean(entry.compatibility),\n );\n}\n\nfunction createError(\n code: TokenOutputContractValidationIssueCode,\n name: string,\n message: string,\n): TokenOutputContractValidationIssue {\n return { code, name, message };\n}\n\nexport function validateTokenOutputContract(\n entries: readonly TokenOutputContractEntry[] = tokenOutputContractEntries,\n): TokenOutputContractValidationReport {\n const errors: TokenOutputContractValidationIssue[] = [];\n const seen = new Set<string>();\n const entryMap = createEntryMap(entries);\n\n for (const entry of entries) {\n if (seen.has(entry.name)) {\n errors.push(\n createError(\n 'duplicate-name',\n entry.name,\n `${entry.name} is duplicated in Token Output Contract.`,\n ),\n );\n }\n seen.add(entry.name);\n\n if (!entry.name.startsWith('--')) {\n errors.push(\n createError(\n 'invalid-name',\n entry.name,\n `${entry.name} must be a CSS custom property name.`,\n ),\n );\n }\n\n if (\n entry.lifecycle === 'active' &&\n !entry.compatibility &&\n isLegacySourceName(entry.name)\n ) {\n errors.push(\n createError(\n 'invalid-legacy-canonical-name',\n entry.name,\n `${entry.name} must not be promoted to active canonical output.`,\n ),\n );\n }\n\n if (\n isLegacySourceName(entry.name) &&\n (entry.lifecycle !== 'compatibility' || !entry.compatibility)\n ) {\n errors.push(\n createError(\n 'invalid-compatibility-name',\n entry.name,\n `${entry.name} uses legacy naming and must be explicit compatibility output.`,\n ),\n );\n }\n }\n\n for (const mapping of migrationMappingRegistry) {\n if (mapping.lifecycle === 'published' && mapping.target) {\n if (!entryMap.has(mapping.target)) {\n errors.push(\n createError(\n 'missing-published-migration-target',\n mapping.target,\n `${mapping.target} is targeted by ${mapping.source} but is not in Token Output Contract.`,\n ),\n );\n }\n }\n\n const sourceEntry = entryMap.get(mapping.source);\n if (\n sourceEntry &&\n sourceEntry.lifecycle === 'active' &&\n !sourceEntry.compatibility\n ) {\n errors.push(\n createError(\n 'legacy-source-promoted-to-canonical-output',\n mapping.source,\n `${mapping.source} is a legacy source and must not be active canonical output.`,\n ),\n );\n }\n }\n\n return {\n valid: errors.length === 0,\n entriesChecked: entries.length,\n errors,\n };\n}\n"],"mappings":";AA+DA,SAAS,cACP,OACA,OAC4B;AAC5B,QAAO,MAAM,KAAK,UAAU;EAC1B;EACA;EACA,UAAU;EACV,WAAW;EACX,eAAe;EAChB,EAAE;;AAGL,SAAS,aACP,QACA,SAA4B;CAAC;CAAU;CAAS;CAAU;CAAW,EAC1C;AAC3B,QAAO,OAAO,KAAK,UAAU,YAAY,OAAO,GAAG,QAAiB;;AAGtE,IAAM,oBAA+C;CACnD,GAAG,aAAa,UAAU;CAC1B,GAAG,aAAa,iBAAiB;CACjC,GAAG,aAAa,UAAU;CAC1B,GAAG,aAAa,iBAAiB;CACjC,GAAG,aAAa,cAAc;CAC9B,GAAG,aAAa,qBAAqB;CACrC,GAAG,aAAa,QAAQ;CACxB,GAAG,aAAa,kBAAkB;EAAC;EAAS;EAAU;EAAW,CAAC;CAClE,GAAG,aAAa,qBAAqB;EAAC;EAAS;EAAU;EAAW,CAAC;CACrE,GAAG,aAAa,WAAW;CAC5B;AAED,IAAM,wBAAmD;CACvD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAM,oBAA+C;CACnD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAM,qBAAgD;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAM,0BAAqD,CACzD,4BACA,6BACD;AAED,IAAM,mBAA8C,CAAC,eAAe;AAEpE,IAAM,uBAAkD;CACtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAa,6BAA6B;CACxC,GAAG,cAAc,UAAU,kBAAkB;CAC7C,GAAG,cAAc,cAAc,sBAAsB;CACrD,GAAG,cAAc,UAAU,kBAAkB;CAC7C,GAAG,cAAc,iBAAiB,wBAAwB;CAC1D,GAAG,cAAc,SAAS,iBAAiB;CAC3C,GAAG,cAAc,WAAW,mBAAmB;CAC/C,GAAG,cAAc,aAAa,qBAAqB;CACpD;AAMD,SAAS,eAAe,UAAU,4BAA4B;AAC5D,QAAO,IAAI,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC;;AAG7D,SAAgB,gCAA4D;AAC1E,QAAO,CAAC,GAAG,2BAA2B;;AAGxC,SAAgB,4BACd,MACsC;AACtC,QAAO,gBAAgB,CAAC,IAAI,KAAgC;;AAS9D,SAAgB,qCACd,OAC4B;AAC5B,QAAO,2BAA2B,QAAQ,UAAU,MAAM,UAAU,MAAM;;AAG5E,SAAgB,yCAAqE;AACnF,QAAO,2BAA2B,QAC/B,UAAU,MAAM,cAAc,YAAY,CAAC,MAAM,cACnD;;AAGH,SAAgB,6CAAyE;AACvF,QAAO,2BAA2B,QAC/B,UACC,MAAM,cAAc,mBAAmB,QAAQ,MAAM,cAAc,CACtE"}
@@ -46,6 +46,7 @@ export interface AcceptedPaletteValueRecord extends AcceptedColorValueBaseRecord
46
46
  format: AcceptedColorValueFormat;
47
47
  scale: string;
48
48
  role?: string;
49
+ source?: 'neutral' | 'slate' | 'stone';
49
50
  }
50
51
  export interface AcceptedSemanticRoleRecord extends AcceptedColorValueBaseRecord {
51
52
  type: 'semantic-role';
@@ -70,7 +71,7 @@ export interface AcceptedBrandSeedRecord extends AcceptedColorValueBaseRecord {
70
71
  overridePolicy: AcceptedBrandSeedOverridePolicy;
71
72
  }
72
73
  export type AcceptedColorValueRecord = AcceptedPaletteValueRecord | AcceptedSemanticRoleRecord | AcceptedThemeMappingRecord | AcceptedBrandSeedRecord;
73
- export type AcceptedColorValueSourceValidationIssueCode = 'invalid-record' | 'duplicate-id' | 'duplicate-name-in-family' | 'missing-required-field' | 'invalid-family' | 'invalid-record-type' | 'invalid-lifecycle' | 'invalid-color-format' | 'invalid-theme' | 'invalid-semantic-domain' | 'invalid-provenance-decision-status' | 'invalid-provenance-derivation' | 'invalid-resolution-mode' | 'invalid-override-policy' | 'invalid-record-family' | 'forbidden-authority' | 'missing-theme-mapping-source' | 'missing-scale-stop';
74
+ export type AcceptedColorValueSourceValidationIssueCode = 'invalid-record' | 'duplicate-id' | 'duplicate-name-in-family' | 'missing-required-field' | 'invalid-family' | 'invalid-record-type' | 'invalid-lifecycle' | 'invalid-color-format' | 'invalid-theme' | 'invalid-semantic-domain' | 'invalid-provenance-decision-status' | 'invalid-provenance-derivation' | 'invalid-resolution-mode' | 'invalid-override-policy' | 'invalid-record-family' | 'forbidden-authority' | 'missing-theme-mapping-source' | 'missing-scale-stop' | 'invalid-neutral-source' | 'duplicate-neutral-source-stop';
74
75
  export interface AcceptedColorValueSourceValidationIssue {
75
76
  code: AcceptedColorValueSourceValidationIssueCode;
76
77
  message: string;
@@ -1,5 +1,7 @@
1
1
  import { BaselineResolvedTokenValueManifestRecord, BaselineResolvedTokenValueManifestValidationResult } from '../contract/baselineResolvedTokenValueManifest';
2
+ import { NeutralSourceId } from './neutralSourceValues.js';
2
3
  export interface TokenValueDeliveryDefinition {
4
+ source: NeutralSourceId;
3
5
  mode: 'light' | 'dark';
4
6
  manifestName: string;
5
7
  fingerprint: string;
@@ -8,10 +10,16 @@ export interface TokenValueDeliveryDefinition {
8
10
  validate: () => BaselineResolvedTokenValueManifestValidationResult;
9
11
  runtimeExportName: string;
10
12
  runtimeFingerprintExportName: string;
13
+ cssFileName: string;
14
+ runtimeFileName: string;
11
15
  }
12
16
  export declare const baselineTokenValueDeliveryDefinition: TokenValueDeliveryDefinition;
13
17
  export declare const darkTokenValueDeliveryDefinition: TokenValueDeliveryDefinition;
14
- export declare const tokenValueDeliveryDefinitions: readonly [TokenValueDeliveryDefinition, TokenValueDeliveryDefinition];
18
+ export declare const slateLightTokenValueDeliveryDefinition: TokenValueDeliveryDefinition;
19
+ export declare const slateDarkTokenValueDeliveryDefinition: TokenValueDeliveryDefinition;
20
+ export declare const stoneLightTokenValueDeliveryDefinition: TokenValueDeliveryDefinition;
21
+ export declare const stoneDarkTokenValueDeliveryDefinition: TokenValueDeliveryDefinition;
22
+ export declare const tokenValueDeliveryDefinitions: readonly [TokenValueDeliveryDefinition, TokenValueDeliveryDefinition, TokenValueDeliveryDefinition, TokenValueDeliveryDefinition, TokenValueDeliveryDefinition, TokenValueDeliveryDefinition];
15
23
  export declare function renderTokenValuesCss(definition: TokenValueDeliveryDefinition): string;
16
24
  export declare function renderTokenValueDeclarationsModule(definition: TokenValueDeliveryDefinition): string;
17
25
  export declare function renderBaselineTokenValuesCss(): string;
@@ -1,5 +1,5 @@
1
1
  import { AcceptedPaletteValueRecord, ValueSourceProvenance } from './acceptedColorValues.js';
2
- export declare const minimalAcceptedPaletteValues: readonly [AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord];
2
+ export declare const minimalAcceptedPaletteValues: readonly [...AcceptedPaletteValueRecord[], AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord];
3
3
  export declare const minimalAcceptedBrandSeedValues: readonly [{
4
4
  readonly id: "brand-seed:default-brand";
5
5
  readonly type: "brand-seed";
@@ -12,7 +12,7 @@ export declare const minimalAcceptedBrandSeedValues: readonly [{
12
12
  readonly generatedScaleFamily: "brand";
13
13
  readonly overridePolicy: "default-only";
14
14
  }];
15
- export declare const minimalAcceptedColorValues: readonly [AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, {
15
+ export declare const minimalAcceptedColorValues: readonly [...AcceptedPaletteValueRecord[], AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, AcceptedPaletteValueRecord, {
16
16
  readonly id: "brand-seed:default-brand";
17
17
  readonly type: "brand-seed";
18
18
  readonly family: "brand";
@@ -0,0 +1,28 @@
1
+ import { BaselineResolvedTokenValueManifestRecord, BaselineResolvedTokenValueManifestValidationResult } from '../contract/baselineResolvedTokenValueManifest';
2
+ import { TokenOutputVariableName } from '../governance/migrationMappingRegistry';
3
+ import { absoluteColorValues, blackAlphaValues, whiteAlphaValues, NeutralSourceId, NeutralStop } from './neutralSourceValues.js';
4
+ export type NeutralSourceMode = 'light' | 'dark';
5
+ export interface ResolveNeutralSourceManifestInput {
6
+ source: NeutralSourceId;
7
+ mode: NeutralSourceMode;
8
+ }
9
+ type NeutralReference = {
10
+ type: 'source';
11
+ stop: NeutralStop;
12
+ } | {
13
+ type: 'black-alpha';
14
+ stop: keyof typeof blackAlphaValues;
15
+ } | {
16
+ type: 'white-alpha';
17
+ stop: keyof typeof whiteAlphaValues;
18
+ } | {
19
+ type: 'absolute';
20
+ value: keyof typeof absoluteColorValues;
21
+ };
22
+ type NeutralSemanticMapping = Partial<Record<TokenOutputVariableName, NeutralReference>>;
23
+ export declare const lightNeutralSemanticMapping: NeutralSemanticMapping;
24
+ export declare const darkNeutralSemanticMapping: NeutralSemanticMapping;
25
+ export declare function resolveNeutralSourceManifest({ source: sourceId, mode, }: ResolveNeutralSourceManifestInput): readonly BaselineResolvedTokenValueManifestRecord[];
26
+ export declare function createNeutralSourceManifestFingerprint(records: readonly BaselineResolvedTokenValueManifestRecord[]): string;
27
+ export declare function validateNeutralSourceManifest({ source, mode, }: ResolveNeutralSourceManifestInput): BaselineResolvedTokenValueManifestValidationResult;
28
+ export {};
@@ -0,0 +1,2 @@
1
+ // type-only module stub
2
+ export {};
@@ -0,0 +1,28 @@
1
+ import { NeutralSourceId } from '../neutralSourceContract';
2
+ export { DEFAULT_NEUTRAL_SOURCE, neutralSourceIds, } from '../neutralSourceContract';
3
+ export type { NeutralSourceId } from '../neutralSourceContract';
4
+ export declare const neutralStops: readonly ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"];
5
+ export type NeutralStop = (typeof neutralStops)[number];
6
+ export declare const neutralSourceValues: Readonly<Record<NeutralSourceId, Readonly<Record<NeutralStop, string>>>>;
7
+ export declare const blackAlphaValues: {
8
+ readonly '5': "rgba(0 0 0 / 0.05)";
9
+ readonly '10': "rgba(0 0 0 / 0.10)";
10
+ readonly '15': "rgba(0 0 0 / 0.15)";
11
+ readonly '20': "rgba(0 0 0 / 0.20)";
12
+ readonly '45': "rgba(0 0 0 / 0.45)";
13
+ };
14
+ export declare const whiteAlphaValues: {
15
+ readonly '5': "rgba(255 255 255 / 0.05)";
16
+ readonly '10': "rgba(255 255 255 / 0.10)";
17
+ readonly '15': "rgba(255 255 255 / 0.15)";
18
+ readonly '20': "rgba(255 255 255 / 0.20)";
19
+ readonly '40': "rgba(255 255 255 / 0.40)";
20
+ readonly '60': "rgba(255 255 255 / 0.60)";
21
+ readonly '70': "rgba(255 255 255 / 0.70)";
22
+ readonly '80': "rgba(255 255 255 / 0.80)";
23
+ };
24
+ export declare const absoluteColorValues: {
25
+ readonly white: "#FFFFFF";
26
+ readonly black: "#000000";
27
+ readonly transparent: "transparent";
28
+ };
@@ -0,0 +1,2 @@
1
+ // type-only module stub
2
+ export {};
@@ -0,0 +1,91 @@
1
+ import { TokenOutputContractLifecycle } from '../contract/tokenOutputContract';
2
+ import { TokenOutputVariableName } from './migrationMappingRegistry.js';
3
+ export type SemanticGovernanceRole = 'background' | 'content' | 'action' | 'border' | 'control-state' | 'focus';
4
+ export type SemanticGovernanceFamily = 'neutral-structural' | 'inverted' | 'brand' | 'informative' | 'positive' | 'warning' | 'negative' | `action-${string}`;
5
+ export type ActionState = 'normal' | 'hover' | 'active' | 'selected';
6
+ export interface SemanticGovernanceProvenance {
7
+ id: string;
8
+ authorityDocument: string;
9
+ authorityLocator: string;
10
+ authorityStatus: 'Accepted';
11
+ governanceVersion: string;
12
+ }
13
+ export interface SemanticGovernanceTokenFact {
14
+ token: TokenOutputVariableName;
15
+ role: SemanticGovernanceRole;
16
+ family?: SemanticGovernanceFamily;
17
+ state?: ActionState;
18
+ lifecycle: TokenOutputContractLifecycle;
19
+ provenance: readonly string[];
20
+ }
21
+ interface SemanticHierarchy {
22
+ id: string;
23
+ kind: 'semantic-emphasis' | 'semantic-structural';
24
+ tokens: readonly TokenOutputVariableName[];
25
+ provenance: readonly string[];
26
+ }
27
+ interface SemanticPair {
28
+ id: string;
29
+ kind: 'feedback-family' | 'inverted-content' | 'action-state-family';
30
+ families?: readonly SemanticGovernanceFamily[];
31
+ roles: readonly SemanticGovernanceRole[];
32
+ tokenReferences: readonly TokenOutputVariableName[];
33
+ provenance: readonly string[];
34
+ }
35
+ interface SemanticRoleRequirement {
36
+ role: SemanticGovernanceRole;
37
+ tokenReferences: readonly TokenOutputVariableName[];
38
+ }
39
+ interface UiConcept {
40
+ id: string;
41
+ purpose: string;
42
+ requiredRoles: readonly SemanticRoleRequirement[];
43
+ optionalRoles: readonly SemanticRoleRequirement[];
44
+ scope: string;
45
+ nonGoals: readonly string[];
46
+ provenance: readonly string[];
47
+ }
48
+ interface CompositionPattern {
49
+ id: string;
50
+ scope: string;
51
+ requiredRoles: readonly SemanticRoleRequirement[];
52
+ optionalRoles: readonly SemanticRoleRequirement[];
53
+ allowedStates: readonly ActionState[];
54
+ relatedUiConcepts: readonly string[];
55
+ owningGovernanceSource: readonly string[];
56
+ nonGoals: readonly string[];
57
+ provenance: readonly string[];
58
+ }
59
+ interface DeterministicAntiPattern {
60
+ id: string;
61
+ meaning: string;
62
+ scope: string;
63
+ provenance: readonly string[];
64
+ }
65
+ export interface SemanticGovernanceContract {
66
+ schemaVersion: '1.0.0';
67
+ semanticGovernanceArtifactVersion: '1.0.0';
68
+ packageCompatibility: {
69
+ minimumPackageVersion: '3.1.0';
70
+ maximumExclusivePackageVersion: '4.0.0';
71
+ };
72
+ tokenOutputContract: {
73
+ entryCount: number;
74
+ identitySetFingerprint: string;
75
+ referencedTokenCount: number;
76
+ };
77
+ provenance: readonly SemanticGovernanceProvenance[];
78
+ tokenFacts: readonly SemanticGovernanceTokenFact[];
79
+ hierarchies: readonly SemanticHierarchy[];
80
+ pairs: readonly SemanticPair[];
81
+ uiConcepts: readonly UiConcept[];
82
+ compositionPatterns: readonly CompositionPattern[];
83
+ antiPatterns: readonly DeterministicAntiPattern[];
84
+ }
85
+ export interface SemanticGovernanceContractValidationReport {
86
+ valid: boolean;
87
+ errors: readonly string[];
88
+ }
89
+ export declare const semanticGovernanceContract: SemanticGovernanceContract;
90
+ export declare function validateSemanticGovernanceContract(contract?: SemanticGovernanceContract): SemanticGovernanceContractValidationReport;
91
+ export {};
@@ -0,0 +1,342 @@
1
+ import { getTokenOutputContractEntries } from "../contract/tokenOutputContract.js";
2
+ //#region src/theme/governance/semanticGovernanceContract.ts
3
+ var provenance = [
4
+ {
5
+ id: "token-output-contract",
6
+ authorityDocument: "src/theme/contract/tokenOutputContract.ts",
7
+ authorityLocator: "tokenOutputContractEntries",
8
+ authorityStatus: "Accepted",
9
+ governanceVersion: "current-token-output-contract"
10
+ },
11
+ {
12
+ id: "neutral-architecture-23a",
13
+ authorityDocument: "docs/color-system/23A-neutral-color-architecture-decision.md",
14
+ authorityLocator: "Sections 8-9",
15
+ authorityStatus: "Accepted",
16
+ governanceVersion: "23A"
17
+ },
18
+ {
19
+ id: "semantic-knowledge-decision-26",
20
+ authorityDocument: "docs/color-system/26-semantic-governance-knowledge-delivery-decision.md",
21
+ authorityLocator: "Sections 5-14",
22
+ authorityStatus: "Accepted",
23
+ governanceVersion: "26"
24
+ },
25
+ {
26
+ id: "semantic-knowledge-specification-27",
27
+ authorityDocument: "docs/color-system/27-semantic-governance-knowledge-delivery-specification.md",
28
+ authorityLocator: "Sections 6-14",
29
+ authorityStatus: "Accepted",
30
+ governanceVersion: "27"
31
+ }
32
+ ];
33
+ var feedbackFamilies = [
34
+ "informative",
35
+ "positive",
36
+ "warning",
37
+ "negative"
38
+ ];
39
+ var actionStates = [
40
+ "normal",
41
+ "hover",
42
+ "active",
43
+ "selected"
44
+ ];
45
+ function asToken(value) {
46
+ return value;
47
+ }
48
+ function roleFor(entry) {
49
+ return entry.group === "dimension" || entry.group === "compatibility" ? null : entry.group;
50
+ }
51
+ function familyFor(name, role) {
52
+ if (role === "action") return `action-${name.replace(/^--action-/, "").replace(/-(normal|hover|active|selected)$/, "")}`;
53
+ if (name.includes("-neutral-")) return "neutral-structural";
54
+ if (name.includes("-inverted")) return "inverted";
55
+ if (name.includes("-brand-")) return "brand";
56
+ for (const family of feedbackFamilies) if (name.includes(`-${family}-`)) return family;
57
+ }
58
+ function stateFor(name, role) {
59
+ if (role !== "action") return void 0;
60
+ return actionStates.find((state) => name.endsWith(`-${state}`));
61
+ }
62
+ function fnv1a32(value) {
63
+ let hash = 2166136261;
64
+ for (const character of value) {
65
+ hash ^= character.charCodeAt(0);
66
+ hash = Math.imul(hash, 16777619) >>> 0;
67
+ }
68
+ return `fnv1a32:${hash.toString(16).padStart(8, "0")}`;
69
+ }
70
+ function requirement(role, tokenReferences) {
71
+ return {
72
+ role,
73
+ tokenReferences: tokenReferences.map(asToken)
74
+ };
75
+ }
76
+ var allOutputEntries = getTokenOutputContractEntries();
77
+ var referencedEntries = allOutputEntries.filter((entry) => roleFor(entry) !== null);
78
+ var tokenFacts = referencedEntries.map((entry) => {
79
+ const role = roleFor(entry);
80
+ return {
81
+ token: entry.name,
82
+ role,
83
+ family: familyFor(entry.name, role),
84
+ state: stateFor(entry.name, role),
85
+ lifecycle: entry.lifecycle,
86
+ provenance: ["token-output-contract", "semantic-knowledge-decision-26"]
87
+ };
88
+ });
89
+ var hierarchies = [{
90
+ id: "content-emphasis",
91
+ kind: "semantic-emphasis",
92
+ tokens: [
93
+ "--content-primary",
94
+ "--content-secondary",
95
+ "--content-tertiary",
96
+ "--content-disabled"
97
+ ].map(asToken),
98
+ provenance: ["token-output-contract", "semantic-knowledge-decision-26"]
99
+ }, {
100
+ id: "neutral-structural-relation",
101
+ kind: "semantic-structural",
102
+ tokens: [
103
+ "--background-default",
104
+ "--background-neutral-surface",
105
+ "--background-neutral-subtle",
106
+ "--background-neutral-on-subtle",
107
+ "--background-neutral-muted",
108
+ "--background-neutral-strong",
109
+ "--background-neutral-hard"
110
+ ].map(asToken),
111
+ provenance: ["token-output-contract", "neutral-architecture-23a"]
112
+ }];
113
+ var pairs = [
114
+ {
115
+ id: "feedback-family-alignment",
116
+ kind: "feedback-family",
117
+ families: feedbackFamilies,
118
+ roles: [
119
+ "background",
120
+ "border",
121
+ "content"
122
+ ],
123
+ tokenReferences: feedbackFamilies.flatMap((family) => [
124
+ `--background-${family}-subtle`,
125
+ `--border-${family}-subtle`,
126
+ `--content-${family}-primary`
127
+ ]).map(asToken),
128
+ provenance: ["semantic-knowledge-decision-26"]
129
+ },
130
+ {
131
+ id: "inverted-surface-content",
132
+ kind: "inverted-content",
133
+ roles: [
134
+ "background",
135
+ "action",
136
+ "content"
137
+ ],
138
+ tokenReferences: [
139
+ "--background-inverted",
140
+ "--action-inverted-normal",
141
+ "--content-inverted-primary"
142
+ ].map(asToken),
143
+ provenance: ["semantic-knowledge-decision-26"]
144
+ },
145
+ {
146
+ id: "action-state-family-membership",
147
+ kind: "action-state-family",
148
+ families: ["action-primary"],
149
+ roles: ["action"],
150
+ tokenReferences: actionStates.map((state) => asToken(`--action-primary-${state}`)),
151
+ provenance: ["semantic-knowledge-decision-26"]
152
+ }
153
+ ];
154
+ var uiConcepts = [
155
+ {
156
+ id: "structural-surface",
157
+ purpose: "A readable structural surface.",
158
+ requiredRoles: [requirement("background", ["--background-default"]), requirement("content", ["--content-primary"])],
159
+ optionalRoles: [requirement("border", ["--border-default"])],
160
+ scope: "Structural UI surfaces.",
161
+ nonGoals: ["Does not define page hierarchy."],
162
+ provenance: ["semantic-knowledge-decision-26"]
163
+ },
164
+ {
165
+ id: "neutral-structural-tier",
166
+ purpose: "A neutral secondary structural grouping.",
167
+ requiredRoles: [requirement("background", ["--background-neutral-surface", "--background-neutral-subtle"]), requirement("content", ["--content-primary"])],
168
+ optionalRoles: [requirement("border", ["--border-neutral-subtle"])],
169
+ scope: "Neutral structural grouping.",
170
+ nonGoals: ["Does not prescribe page-to-card hierarchy."],
171
+ provenance: ["neutral-architecture-23a", "semantic-knowledge-decision-26"]
172
+ },
173
+ {
174
+ id: "interactive-action-surface",
175
+ purpose: "An interactive action control surface.",
176
+ requiredRoles: [
177
+ requirement("action", ["--action-primary-normal"]),
178
+ requirement("content", ["--content-inverted-primary"]),
179
+ requirement("focus", ["--focus-ring"])
180
+ ],
181
+ optionalRoles: [requirement("border", ["--border-default"])],
182
+ scope: "Interactive actions.",
183
+ nonGoals: ["Does not define Menu or Dialog behavior."],
184
+ provenance: ["semantic-knowledge-decision-26"]
185
+ },
186
+ {
187
+ id: "field-control-surface",
188
+ purpose: "An editable field control surface.",
189
+ requiredRoles: [
190
+ requirement("background", ["--background-default"]),
191
+ requirement("border", ["--border-neutral-subtle"]),
192
+ requirement("content", ["--content-primary"]),
193
+ requirement("focus", ["--focus-ring"])
194
+ ],
195
+ optionalRoles: [requirement("action", ["--action-ghost-hover"])],
196
+ scope: "Field controls.",
197
+ nonGoals: ["Does not define Select interaction."],
198
+ provenance: ["semantic-knowledge-decision-26"]
199
+ },
200
+ {
201
+ id: "floating-command-surface",
202
+ purpose: "A temporary floating command surface.",
203
+ requiredRoles: [
204
+ requirement("background", ["--background-default"]),
205
+ requirement("border", ["--border-default-alpha"]),
206
+ requirement("content", ["--content-primary"]),
207
+ requirement("action", ["--action-ghost-hover"]),
208
+ requirement("focus", ["--focus-ring"])
209
+ ],
210
+ optionalRoles: [],
211
+ scope: "Floating command surfaces.",
212
+ nonGoals: ["Does not define Menu keyboard behavior."],
213
+ provenance: ["semantic-knowledge-decision-26"]
214
+ },
215
+ {
216
+ id: "feedback-surface",
217
+ purpose: "A same-family feedback surface.",
218
+ requiredRoles: [
219
+ requirement("background", ["--background-informative-subtle"]),
220
+ requirement("border", ["--border-informative-subtle"]),
221
+ requirement("content", ["--content-informative-primary"])
222
+ ],
223
+ optionalRoles: [],
224
+ scope: "Feedback callouts.",
225
+ nonGoals: ["Does not select feedback purpose from context."],
226
+ provenance: ["semantic-knowledge-decision-26"]
227
+ },
228
+ {
229
+ id: "inverted-surface",
230
+ purpose: "A local inverted semantic context.",
231
+ requiredRoles: [requirement("background", ["--background-inverted"]), requirement("content", ["--content-inverted-primary"])],
232
+ optionalRoles: [requirement("action", ["--action-inverted-normal"])],
233
+ scope: "Inverted local surfaces.",
234
+ nonGoals: ["Does not imply dark theme."],
235
+ provenance: ["semantic-knowledge-decision-26"]
236
+ }
237
+ ];
238
+ var compositionPatterns = [
239
+ {
240
+ id: "action-control",
241
+ scope: "A stable action control composition.",
242
+ requiredRoles: uiConcepts[2].requiredRoles,
243
+ optionalRoles: uiConcepts[2].optionalRoles,
244
+ allowedStates: actionStates,
245
+ relatedUiConcepts: ["interactive-action-surface"],
246
+ owningGovernanceSource: ["semantic-knowledge-decision-26"],
247
+ nonGoals: ["Does not define component interaction."],
248
+ provenance: ["semantic-knowledge-decision-26"]
249
+ },
250
+ {
251
+ id: "field-control",
252
+ scope: "A stable field control composition.",
253
+ requiredRoles: uiConcepts[3].requiredRoles,
254
+ optionalRoles: uiConcepts[3].optionalRoles,
255
+ allowedStates: [],
256
+ relatedUiConcepts: ["field-control-surface"],
257
+ owningGovernanceSource: ["semantic-knowledge-decision-26"],
258
+ nonGoals: ["Does not define complex Select behavior."],
259
+ provenance: ["semantic-knowledge-decision-26"]
260
+ },
261
+ {
262
+ id: "floating-command-collection",
263
+ scope: "A floating command collection composition.",
264
+ requiredRoles: uiConcepts[4].requiredRoles,
265
+ optionalRoles: uiConcepts[4].optionalRoles,
266
+ allowedStates: [
267
+ "hover",
268
+ "active",
269
+ "selected"
270
+ ],
271
+ relatedUiConcepts: ["floating-command-surface"],
272
+ owningGovernanceSource: ["semantic-knowledge-decision-26"],
273
+ nonGoals: ["Does not define Menu behavior."],
274
+ provenance: ["semantic-knowledge-decision-26"]
275
+ },
276
+ {
277
+ id: "feedback-callout",
278
+ scope: "A same-family feedback callout composition.",
279
+ requiredRoles: uiConcepts[5].requiredRoles,
280
+ optionalRoles: uiConcepts[5].optionalRoles,
281
+ allowedStates: [],
282
+ relatedUiConcepts: ["feedback-surface"],
283
+ owningGovernanceSource: ["semantic-knowledge-decision-26"],
284
+ nonGoals: ["Does not select feedback intent."],
285
+ provenance: ["semantic-knowledge-decision-26"]
286
+ }
287
+ ];
288
+ var semanticGovernanceContract = {
289
+ schemaVersion: "1.0.0",
290
+ semanticGovernanceArtifactVersion: "1.0.0",
291
+ packageCompatibility: {
292
+ minimumPackageVersion: "3.1.0",
293
+ maximumExclusivePackageVersion: "4.0.0"
294
+ },
295
+ tokenOutputContract: {
296
+ entryCount: allOutputEntries.length,
297
+ identitySetFingerprint: fnv1a32(referencedEntries.map((entry) => `${entry.name}:${entry.lifecycle}`).sort().join("\n")),
298
+ referencedTokenCount: referencedEntries.length
299
+ },
300
+ provenance,
301
+ tokenFacts,
302
+ hierarchies,
303
+ pairs,
304
+ uiConcepts,
305
+ compositionPatterns,
306
+ antiPatterns: [
307
+ {
308
+ id: "primitive-bypass",
309
+ meaning: "Consumer UI bypasses semantic ownership.",
310
+ scope: "Consumer color use.",
311
+ provenance: ["semantic-knowledge-decision-26"]
312
+ },
313
+ {
314
+ id: "wrong-domain",
315
+ meaning: "A semantic role is used outside its domain.",
316
+ scope: "Consumer color use.",
317
+ provenance: ["semantic-knowledge-decision-26"]
318
+ },
319
+ {
320
+ id: "wrong-feedback-family",
321
+ meaning: "Feedback roles mix published families.",
322
+ scope: "Feedback composition.",
323
+ provenance: ["semantic-knowledge-decision-26"]
324
+ },
325
+ {
326
+ id: "source-aware-consumer",
327
+ meaning: "Consumer branches on source identity.",
328
+ scope: "Consumer runtime boundary.",
329
+ provenance: ["neutral-architecture-23a", "semantic-knowledge-decision-26"]
330
+ },
331
+ {
332
+ id: "invalid-lifecycle",
333
+ meaning: "Consumer uses an unavailable output lifecycle.",
334
+ scope: "Consumer token use.",
335
+ provenance: ["token-output-contract", "semantic-knowledge-decision-26"]
336
+ }
337
+ ]
338
+ };
339
+ //#endregion
340
+ export { semanticGovernanceContract };
341
+
342
+ //# sourceMappingURL=semanticGovernanceContract.js.map