@mich8060/unified-design-system 0.2.14 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/discovery.json +14 -0
- package/dist/ai/examples/training.examples.cjs +1 -1
- package/dist/ai/examples/training.examples.js +1 -1
- package/dist/ai/figma-make.contract.json +190 -0
- package/dist/ai/figma-make.md +71 -0
- package/dist/ai/icons/catalog.json +76 -0
- package/dist/ai/index.cjs +1 -1
- package/dist/ai/index.js +1 -1
- package/dist/ai/manifest/components.manifest.cjs +1 -1
- package/dist/ai/manifest/components.manifest.js +1 -1
- package/dist/ai/manifest/index.cjs +1 -1
- package/dist/ai/manifest/index.js +1 -1
- package/dist/ai/manifest/intent-mappings.manifest.cjs +1 -0
- package/dist/ai/manifest/intent-mappings.manifest.js +1 -0
- package/dist/ai/manifest/system.manifest.cjs +1 -1
- package/dist/ai/manifest/system.manifest.js +1 -1
- package/dist/ai/manifest.json +366 -2
- package/dist/ai/policies/policy.engine.cjs +1 -1
- package/dist/ai/policies/policy.engine.js +1 -1
- package/dist/ai/policies/rules/props.rules.cjs +1 -1
- package/dist/ai/policies/rules/props.rules.js +1 -1
- package/dist/ai/policies/rules/tailwind.rules.cjs +1 -0
- package/dist/ai/policies/rules/tailwind.rules.js +1 -0
- package/dist/ai/policies/rules/token-variable.rules.cjs +1 -0
- package/dist/ai/policies/rules/token-variable.rules.js +1 -0
- package/dist/ai/prompts/figma-make.prompt.md +59 -0
- package/dist/ai/prompts/repair.prompt.md +13 -0
- package/dist/ai/prompts/starter.prompt.md +59 -0
- package/dist/ai/prompts/system.prompt.md +33 -0
- package/dist/ai/templates/layouts.json +272 -37
- package/dist/ai/validation/deterministicFeedback.cjs +1 -1
- package/dist/ai/validation/deterministicFeedback.js +1 -1
- package/dist/ai/validation/driftDetection.cjs +1 -1
- package/dist/ai/validation/driftDetection.js +1 -1
- package/dist/app-shell/AppShell.d.ts +8 -0
- package/dist/charts/BizChartsAdapters.cjs +1 -0
- package/dist/charts/BizChartsAdapters.js +1 -0
- package/dist/charts-bizcharts/index.cjs +1 -0
- package/dist/charts-bizcharts/index.js +1 -0
- package/dist/components/ButtonGroup/ButtonGroup.cjs +1 -0
- package/dist/components/ButtonGroup/ButtonGroup.js +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.cjs +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.js +1 -0
- package/dist/components/Checklist/Checklist.cjs +1 -0
- package/dist/components/Checklist/Checklist.js +1 -0
- package/dist/components/Chip/Chip.cjs +1 -1
- package/dist/components/Chip/Chip.js +1 -1
- package/dist/components/CurrencyInput/CurrencyInput.cjs +1 -0
- package/dist/components/CurrencyInput/CurrencyInput.js +1 -0
- package/dist/components/DateInput/DateInput.cjs +1 -0
- package/dist/components/DateInput/DateInput.js +1 -0
- package/dist/components/DateRangeInput/DateRangeInput.cjs +1 -0
- package/dist/components/DateRangeInput/DateRangeInput.js +1 -0
- package/dist/components/Icon/Icon.cjs +1 -1
- package/dist/components/Icon/Icon.js +1 -1
- package/dist/components/Menu/Menu.cjs +1 -1
- package/dist/components/Menu/Menu.js +1 -1
- package/dist/components/NumberInput/NumberInput.cjs +1 -0
- package/dist/components/NumberInput/NumberInput.js +1 -0
- package/dist/components/PasswordInput/PasswordInput.cjs +1 -0
- package/dist/components/PasswordInput/PasswordInput.js +1 -0
- package/dist/components/PhoneInput/PhoneInput.cjs +1 -0
- package/dist/components/PhoneInput/PhoneInput.js +1 -0
- package/dist/components/RadioGroup/RadioGroup.cjs +1 -0
- package/dist/components/RadioGroup/RadioGroup.js +1 -0
- package/dist/components/SearchInput/SearchInput.cjs +1 -0
- package/dist/components/SearchInput/SearchInput.js +1 -0
- package/dist/components/SectionHeader/SectionHeader.cjs +1 -0
- package/dist/components/SectionHeader/SectionHeader.js +1 -0
- package/dist/components/Statistics/Statistics.cjs +1 -0
- package/dist/components/Statistics/Statistics.js +1 -0
- package/dist/components/Status/Status.cjs +1 -1
- package/dist/components/Status/Status.js +1 -1
- package/dist/components/Table/Table.cjs +1 -1
- package/dist/components/Table/Table.js +1 -1
- package/dist/components/Tabs/Tabs.cjs +1 -1
- package/dist/components/Tabs/Tabs.js +1 -1
- package/dist/components/TimeInput/TimeInput.cjs +1 -0
- package/dist/components/TimeInput/TimeInput.js +1 -0
- package/dist/components/TokenInput/TokenInput.cjs +1 -0
- package/dist/components/TokenInput/TokenInput.js +1 -0
- package/dist/components/Toolbar/Toolbar.cjs +1 -0
- package/dist/components/Toolbar/Toolbar.js +1 -0
- package/dist/design-system/ai/index.d.ts +2 -1
- package/dist/design-system/ai/manifest/index.d.ts +1 -0
- package/dist/design-system/ai/manifest/intent-mappings.manifest.d.ts +63 -0
- package/dist/design-system/ai/manifest/types.d.ts +8 -0
- package/dist/design-system/ai/policies/rules/tailwind.rules.d.ts +2 -0
- package/dist/design-system/ai/policies/rules/token-variable.rules.d.ts +2 -0
- package/dist/design-system/charts/BizChartsAdapters.d.ts +40 -0
- package/dist/design-system/charts/index.d.ts +1 -0
- package/dist/design-system/components/ButtonGroup/ButtonGroup.d.ts +3 -0
- package/dist/design-system/components/ButtonGroup/ButtonGroup.types.d.ts +19 -0
- package/dist/design-system/components/ButtonGroup/index.d.ts +2 -0
- package/dist/design-system/components/CheckboxGroup/CheckboxGroup.d.ts +3 -0
- package/dist/design-system/components/CheckboxGroup/CheckboxGroup.types.d.ts +15 -0
- package/dist/design-system/components/CheckboxGroup/index.d.ts +2 -0
- package/dist/design-system/components/Checklist/Checklist.d.ts +3 -0
- package/dist/design-system/components/Checklist/Checklist.types.d.ts +13 -0
- package/dist/design-system/components/Checklist/index.d.ts +2 -0
- package/dist/design-system/components/Chip/Chip.d.ts +1 -1
- package/dist/design-system/components/Chip/Chip.types.d.ts +1 -1
- package/dist/design-system/components/CurrencyInput/CurrencyInput.d.ts +2 -0
- package/dist/design-system/components/CurrencyInput/CurrencyInput.types.d.ts +3 -0
- package/dist/design-system/components/CurrencyInput/index.d.ts +2 -0
- package/dist/design-system/components/DateInput/DateInput.d.ts +2 -0
- package/dist/design-system/components/DateInput/DateInput.types.d.ts +3 -0
- package/dist/design-system/components/DateInput/index.d.ts +2 -0
- package/dist/design-system/components/DateRangeInput/DateRangeInput.d.ts +3 -0
- package/dist/design-system/components/DateRangeInput/DateRangeInput.types.d.ts +15 -0
- package/dist/design-system/components/DateRangeInput/index.d.ts +2 -0
- package/dist/design-system/components/Menu/index.d.ts +3 -0
- package/dist/design-system/components/NumberInput/NumberInput.d.ts +3 -0
- package/dist/design-system/components/NumberInput/NumberInput.types.d.ts +2 -0
- package/dist/design-system/components/NumberInput/index.d.ts +2 -0
- package/dist/design-system/components/PasswordInput/PasswordInput.d.ts +2 -0
- package/dist/design-system/components/PasswordInput/PasswordInput.types.d.ts +5 -0
- package/dist/design-system/components/PasswordInput/index.d.ts +2 -0
- package/dist/design-system/components/PhoneInput/PhoneInput.d.ts +2 -0
- package/dist/design-system/components/PhoneInput/PhoneInput.types.d.ts +5 -0
- package/dist/design-system/components/PhoneInput/index.d.ts +2 -0
- package/dist/design-system/components/RadioGroup/RadioGroup.d.ts +3 -0
- package/dist/design-system/components/RadioGroup/RadioGroup.types.d.ts +16 -0
- package/dist/design-system/components/RadioGroup/index.d.ts +2 -0
- package/dist/design-system/components/SearchInput/SearchInput.d.ts +2 -0
- package/dist/design-system/components/SearchInput/SearchInput.types.d.ts +3 -0
- package/dist/design-system/components/SearchInput/index.d.ts +2 -0
- package/dist/design-system/components/SectionHeader/SectionHeader.d.ts +3 -0
- package/dist/design-system/components/SectionHeader/SectionHeader.types.d.ts +9 -0
- package/dist/design-system/components/SectionHeader/index.d.ts +2 -0
- package/dist/design-system/components/Statistics/Statistics.d.ts +3 -0
- package/dist/design-system/components/Statistics/Statistics.types.d.ts +18 -0
- package/dist/design-system/components/Statistics/index.d.ts +2 -0
- package/dist/design-system/components/Status/Status.types.d.ts +4 -2
- package/dist/design-system/components/Tabs/Tabs.d.ts +1 -1
- package/dist/design-system/components/Tabs/Tabs.types.d.ts +4 -1
- package/dist/design-system/components/TimeInput/TimeInput.d.ts +2 -0
- package/dist/design-system/components/TimeInput/TimeInput.types.d.ts +3 -0
- package/dist/design-system/components/TimeInput/index.d.ts +2 -0
- package/dist/design-system/components/Toggle/index.d.ts +2 -0
- package/dist/design-system/components/TokenInput/TokenInput.d.ts +4 -0
- package/dist/design-system/components/TokenInput/TokenInput.types.d.ts +17 -0
- package/dist/design-system/components/TokenInput/index.d.ts +3 -0
- package/dist/design-system/components/Toolbar/Toolbar.d.ts +3 -0
- package/dist/design-system/components/Toolbar/Toolbar.types.d.ts +8 -0
- package/dist/design-system/components/Toolbar/index.d.ts +2 -0
- package/dist/design-system/figma-make/index.d.ts +42 -0
- package/dist/design-system/generated/component-api.d.ts +477 -2
- package/dist/design-system/index.d.ts +17 -0
- package/dist/figma-make/index.cjs +1 -0
- package/dist/figma-make/index.js +1 -0
- package/dist/generated/component-api.cjs +1 -1
- package/dist/generated/component-api.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/src/app-shell/AppShell.cjs +1 -1
- package/dist/src/app-shell/AppShell.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +52 -2
package/dist/ai/discovery.json
CHANGED
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
"@mich8060/unified-design-system/ai/discovery.json",
|
|
7
7
|
"@mich8060/unified-design-system/ai/manifest.json",
|
|
8
8
|
"@mich8060/unified-design-system/ai/schema",
|
|
9
|
+
"@mich8060/unified-design-system/ai/icons",
|
|
10
|
+
"@mich8060/unified-design-system/ai/figma-make.json",
|
|
11
|
+
"@mich8060/unified-design-system/ai/figma-make",
|
|
12
|
+
"@mich8060/unified-design-system/ai/prompts/figma-make",
|
|
13
|
+
"@mich8060/unified-design-system/ai/prompts/system",
|
|
14
|
+
"@mich8060/unified-design-system/ai/prompts/repair",
|
|
15
|
+
"@mich8060/unified-design-system/ai/prompts/starter",
|
|
9
16
|
"@mich8060/unified-design-system/ai/templates",
|
|
10
17
|
"@mich8060/unified-design-system/ai/examples",
|
|
11
18
|
"@mich8060/unified-design-system/ai/validation",
|
|
@@ -15,6 +22,13 @@
|
|
|
15
22
|
"discovery": "@mich8060/unified-design-system/ai/discovery.json",
|
|
16
23
|
"contractManifest": "@mich8060/unified-design-system/ai/manifest.json",
|
|
17
24
|
"schema": "@mich8060/unified-design-system/ai/schema",
|
|
25
|
+
"iconCatalog": "@mich8060/unified-design-system/ai/icons",
|
|
26
|
+
"figmaMakeContractJson": "@mich8060/unified-design-system/ai/figma-make.json",
|
|
27
|
+
"figmaMakeContract": "@mich8060/unified-design-system/ai/figma-make",
|
|
28
|
+
"figmaMakePrompt": "@mich8060/unified-design-system/ai/prompts/figma-make",
|
|
29
|
+
"systemPrompt": "@mich8060/unified-design-system/ai/prompts/system",
|
|
30
|
+
"repairPrompt": "@mich8060/unified-design-system/ai/prompts/repair",
|
|
31
|
+
"starterPrompt": "@mich8060/unified-design-system/ai/prompts/starter",
|
|
18
32
|
"templatesCatalog": "@mich8060/unified-design-system/ai/templates",
|
|
19
33
|
"runtimeApi": "@mich8060/unified-design-system/ai",
|
|
20
34
|
"manifestModule": "@mich8060/unified-design-system/ai/manifest",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=[{id:"valid-auth-form",scenario:"Simple authentication card with semantic layout and one primary action.",kind:"valid",tags:["form","auth","field-wrapping"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-24"},children:[{type:"Card",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Field",children:[{type:"TextInput",props:{type:"email",iconPosition:"left"}}]},{type:"Field",children:[{type:"TextInput",props:{type:"password"}}]},{type:"Flex",children:[{type:"Button",props:{appearance:"primary",label:"Sign in"}},{type:"Button",props:{appearance:"text",label:"Forgot password?"}}]}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed composition (Container > Card > Field/Text/Button), valid spacing token, and a single primary action."}},{id:"valid-table-summary",scenario:"Data summary area with table-related indicators and a single primary action.",kind:"valid",tags:["table","status","dashboard"],output:{tree:{type:"Container",children:[{type:"Flex",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Button",props:{appearance:"primary",label:"Create row"}}]},{type:"Table",children:[{type:"Status",props:{variant:"success",text:"Ready"}},{type:"Tag",props:{variant:"blue",label:"Active"}},{type:"DotStatus",props:{status:"positive"}},{type:"ActionMenu",props:{triggerLabel:"Row actions"}}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed Table children and keeps primary action count within limit."}},{id:"invalid-two-primary-actions",scenario:"Section contains two primary buttons.",kind:"invalid",tags:["actions","policy"],output:{tree:{type:"Container",children:[{type:"Button",props:{appearance:"primary",label:"Save"}},{type:"Button",props:{appearance:"primary",label:"Publish"}}]}},expected:{status:"fail",violationCodes:["RULE_MAX_PRIMARY_ACTIONS"]},rationale:{why:"Violates max primary actions per section.",fix:"Keep one primary action and convert the rest to secondary appearances."}},{id:"invalid-raw-html-and-inline-style",scenario:"Output includes raw HTML and inline style values.",kind:"invalid",tags:["raw-html","inline-style","governance"],output:{tree:{type:"Container",children:[{type:"div",props:{style:{color:"#ff0000"}},children:[{type:"Text",props:{variant:"body-16"}}]}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_COMPONENT","RULE_RAW_HTML_DISALLOWED","RULE_INLINE_STYLE_DISALLOWED"]},rationale:{why:"Governance forbids raw HTML tags and inline styling in generated output.",fix:"Replace raw HTML with UDS components and use tokenized component props."}},{id:"invalid-spacing-token",scenario:"Spacing prop uses a non-system token.",kind:"invalid",tags:["tokens","spacing"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-999"},children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_SPACING_TOKEN"]},rationale:{why:"Spacing token is outside allowed spacing system.",fix:"Use an allowed token such as --uds-spacing-8/12/16/24."}},{id:"invalid-composition-parent-child",scenario:"Composition places a form field directly inside Menu.",kind:"invalid",tags:["composition","parent-child","layout"],output:{tree:{type:"Menu",children:[{type:"Field",children:[{type:"TextInput",props:{type:"text"}}]}]}},expected:{status:"fail",violationCodes:["RULE_INVALID_COMPOSITION","RULE_INVALID_PARENT_COMPOSITION"]},rationale:{why:"Field is not an allowed Menu child and Field requires a form/container context.",fix:"Use Menu-approved children or move Field under Container/Card/Modal/Tabs."}},{id:"invalid-ambiguous-prop-alias",scenario:"Uses an ambiguous legacy alias prop instead of canonical prop.",kind:"invalid",tags:["props","aliases","governance"],output:{tree:{type:"Chip",props:{label:"Demo",iconplacement:"left",icon:"User"}}},expected:{status:"fail",violationCodes:["RULE_AMBIGUOUS_PROP_ALIAS"]},rationale:{why:"Alias props create inconsistent generation behavior across models.",fix:"Use canonical prop name `iconPlacement`."}},{id:"invalid-version-mismatch",scenario:"Output version fields do not match current governance contract.",kind:"invalid",tags:["versioning","contract","governance"],output:{manifestVersion:"0.0.1",governanceVersion:"0.0.1",policyVersion:"0.0.1",tree:{type:"Container",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_VERSION_MISMATCH_MANIFESTVERSION","RULE_VERSION_MISMATCH_GOVERNANCEVERSION","RULE_VERSION_MISMATCH_POLICYVERSION"]},rationale:{why:"Generated output must declare versions that match the active AI contract.",fix:"Use the current manifest/governance/policy versions from UDSGovernance."}},{id:"invalid-schema-node-type",scenario:"Malformed output with missing node type.",kind:"invalid",tags:["schema","malformed"],output:{tree:{type:"",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["SCHEMA_NODE_TYPE"]},rationale:{why:"Schema requires each node to have a non-empty string `type`.",fix:"Set a valid UDS component type for every node."}}];exports.UDS_TRAINING_EXAMPLES=e;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=[{id:"valid-auth-form",scenario:"Simple authentication card with semantic layout and one primary action.",kind:"valid",tags:["form","auth","field-wrapping"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-24"},children:[{type:"Card",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Field",children:[{type:"TextInput",props:{type:"email",iconPosition:"left"}}]},{type:"Field",children:[{type:"TextInput",props:{type:"password"}}]},{type:"Flex",children:[{type:"Button",props:{appearance:"primary",label:"Sign in"}},{type:"Button",props:{appearance:"text",label:"Forgot password?"}}]}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed composition (Container > Card > Field/Text/Button), valid spacing token, and a single primary action."}},{id:"valid-table-summary",scenario:"Data summary area with table-related indicators and a single primary action.",kind:"valid",tags:["table","status","dashboard"],output:{tree:{type:"Container",children:[{type:"Flex",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Button",props:{appearance:"primary",label:"Create row"}}]},{type:"Table",children:[{type:"Status",props:{variant:"success",text:"Ready"}},{type:"Tag",props:{variant:"blue",label:"Active"}},{type:"DotStatus",props:{status:"positive"}},{type:"ActionMenu",props:{triggerLabel:"Row actions"}}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed Table children and keeps primary action count within limit."}},{id:"invalid-two-primary-actions",scenario:"Section contains two primary buttons.",kind:"invalid",tags:["actions","policy"],output:{tree:{type:"Container",children:[{type:"Button",props:{appearance:"primary",label:"Save"}},{type:"Button",props:{appearance:"primary",label:"Publish"}}]}},expected:{status:"fail",violationCodes:["RULE_MAX_PRIMARY_ACTIONS"]},rationale:{why:"Violates max primary actions per section.",fix:"Keep one primary action and convert the rest to secondary appearances."}},{id:"invalid-raw-html-and-inline-style",scenario:"Output includes raw HTML and inline style values.",kind:"invalid",tags:["raw-html","inline-style","governance"],output:{tree:{type:"Container",children:[{type:"div",props:{style:{color:"#ff0000"}},children:[{type:"Text",props:{variant:"body-16"}}]}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_COMPONENT","RULE_RAW_HTML_DISALLOWED","RULE_INLINE_STYLE_DISALLOWED"]},rationale:{why:"Governance forbids raw HTML tags and inline styling in generated output.",fix:"Replace raw HTML with UDS components and use tokenized component props."}},{id:"invalid-spacing-token",scenario:"Spacing prop uses a non-system token.",kind:"invalid",tags:["tokens","spacing"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-999"},children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_SPACING_TOKEN"]},rationale:{why:"Spacing token is outside allowed spacing system.",fix:"Use an allowed token such as --uds-spacing-8/12/16/24."}},{id:"invalid-custom-css-variable",scenario:"Uses non-UDS CSS variable references in component props.",kind:"invalid",tags:["tokens","css-variables","governance"],output:{tree:{type:"Container",props:{surfaceColor:"var(--brand-primary-500)"},children:[{type:"Text",props:{color:"--custom-text-color",variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_CUSTOM_CSS_VAR_DISALLOWED"]},rationale:{why:"Generated output must not introduce custom CSS variables outside --uds-* namespace.",fix:"Use --uds-* references or hardcoded literal values."}},{id:"invalid-tailwind-classname",scenario:"Output includes Tailwind utility classes.",kind:"invalid",tags:["tailwind","className","governance"],output:{tree:{type:"Container",props:{className:"p-4 bg-blue-600 text-white"},children:[{type:"Text",props:{variant:"body-16",text:"Example"}}]}},expected:{status:"fail",violationCodes:["RULE_TAILWIND_CLASS_DISALLOWED"]},rationale:{why:"Figma Make output must not fall back to Tailwind utility classes.",fix:"Use UDS components and governed tokenized props instead of className utilities."}},{id:"invalid-menu-ant-props",scenario:"Menu uses Ant-style props that are not part of the UDS contract.",kind:"invalid",tags:["menu","props","contract-drift"],output:{tree:{type:"Menu",props:{items:[{label:"Dashboard",icon:"House",path:"/"}],selectedKeys:["/"],mode:"inline"}}},expected:{status:"fail",violationCodes:["RULE_FORBIDDEN_PROP"]},rationale:{why:"Menu must use UDS canonical props, not Ant-style API props.",fix:"Use navItems plus activeMode/app state driven selection."}},{id:"invalid-flex-ant-props",scenario:"Flex uses vertical/justify/align aliases from non-UDS APIs.",kind:"invalid",tags:["flex","props","contract-drift"],output:{tree:{type:"Flex",props:{vertical:!0,justify:"space-between",align:"center"},children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_FORBIDDEN_PROP"]},rationale:{why:"Flex layout must use canonical props for deterministic cross-model behavior.",fix:"Use direction, justifyContent, and alignItems props."}},{id:"invalid-composition-parent-child",scenario:"Composition places a form field directly inside Menu.",kind:"invalid",tags:["composition","parent-child","layout"],output:{tree:{type:"Menu",children:[{type:"Field",children:[{type:"TextInput",props:{type:"text"}}]}]}},expected:{status:"fail",violationCodes:["RULE_INVALID_COMPOSITION","RULE_INVALID_PARENT_COMPOSITION"]},rationale:{why:"Field is not an allowed Menu child and Field requires a form/container context.",fix:"Use Menu-approved children or move Field under Container/Card/Modal/Tabs."}},{id:"invalid-ambiguous-prop-alias",scenario:"Uses an ambiguous legacy alias prop instead of canonical prop.",kind:"invalid",tags:["props","aliases","governance"],output:{tree:{type:"Chip",props:{label:"Demo",iconplacement:"left",icon:"User"}}},expected:{status:"fail",violationCodes:["RULE_AMBIGUOUS_PROP_ALIAS"]},rationale:{why:"Alias props create inconsistent generation behavior across models.",fix:"Use canonical prop name `iconPlacement`."}},{id:"invalid-version-mismatch",scenario:"Output version fields do not match current governance contract.",kind:"invalid",tags:["versioning","contract","governance"],output:{manifestVersion:"0.0.1",governanceVersion:"0.0.1",policyVersion:"0.0.1",tree:{type:"Container",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_VERSION_MISMATCH_MANIFESTVERSION","RULE_VERSION_MISMATCH_GOVERNANCEVERSION","RULE_VERSION_MISMATCH_POLICYVERSION"]},rationale:{why:"Generated output must declare versions that match the active AI contract.",fix:"Use the current manifest/governance/policy versions from UDSGovernance."}},{id:"invalid-schema-node-type",scenario:"Malformed output with missing node type.",kind:"invalid",tags:["schema","malformed"],output:{tree:{type:"",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["SCHEMA_NODE_TYPE"]},rationale:{why:"Schema requires each node to have a non-empty string `type`.",fix:"Set a valid UDS component type for every node."}}];exports.UDS_TRAINING_EXAMPLES=e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=[{id:"valid-auth-form",scenario:"Simple authentication card with semantic layout and one primary action.",kind:"valid",tags:["form","auth","field-wrapping"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-24"},children:[{type:"Card",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Field",children:[{type:"TextInput",props:{type:"email",iconPosition:"left"}}]},{type:"Field",children:[{type:"TextInput",props:{type:"password"}}]},{type:"Flex",children:[{type:"Button",props:{appearance:"primary",label:"Sign in"}},{type:"Button",props:{appearance:"text",label:"Forgot password?"}}]}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed composition (Container > Card > Field/Text/Button), valid spacing token, and a single primary action."}},{id:"valid-table-summary",scenario:"Data summary area with table-related indicators and a single primary action.",kind:"valid",tags:["table","status","dashboard"],output:{tree:{type:"Container",children:[{type:"Flex",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Button",props:{appearance:"primary",label:"Create row"}}]},{type:"Table",children:[{type:"Status",props:{variant:"success",text:"Ready"}},{type:"Tag",props:{variant:"blue",label:"Active"}},{type:"DotStatus",props:{status:"positive"}},{type:"ActionMenu",props:{triggerLabel:"Row actions"}}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed Table children and keeps primary action count within limit."}},{id:"invalid-two-primary-actions",scenario:"Section contains two primary buttons.",kind:"invalid",tags:["actions","policy"],output:{tree:{type:"Container",children:[{type:"Button",props:{appearance:"primary",label:"Save"}},{type:"Button",props:{appearance:"primary",label:"Publish"}}]}},expected:{status:"fail",violationCodes:["RULE_MAX_PRIMARY_ACTIONS"]},rationale:{why:"Violates max primary actions per section.",fix:"Keep one primary action and convert the rest to secondary appearances."}},{id:"invalid-raw-html-and-inline-style",scenario:"Output includes raw HTML and inline style values.",kind:"invalid",tags:["raw-html","inline-style","governance"],output:{tree:{type:"Container",children:[{type:"div",props:{style:{color:"#ff0000"}},children:[{type:"Text",props:{variant:"body-16"}}]}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_COMPONENT","RULE_RAW_HTML_DISALLOWED","RULE_INLINE_STYLE_DISALLOWED"]},rationale:{why:"Governance forbids raw HTML tags and inline styling in generated output.",fix:"Replace raw HTML with UDS components and use tokenized component props."}},{id:"invalid-spacing-token",scenario:"Spacing prop uses a non-system token.",kind:"invalid",tags:["tokens","spacing"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-999"},children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_SPACING_TOKEN"]},rationale:{why:"Spacing token is outside allowed spacing system.",fix:"Use an allowed token such as --uds-spacing-8/12/16/24."}},{id:"invalid-composition-parent-child",scenario:"Composition places a form field directly inside Menu.",kind:"invalid",tags:["composition","parent-child","layout"],output:{tree:{type:"Menu",children:[{type:"Field",children:[{type:"TextInput",props:{type:"text"}}]}]}},expected:{status:"fail",violationCodes:["RULE_INVALID_COMPOSITION","RULE_INVALID_PARENT_COMPOSITION"]},rationale:{why:"Field is not an allowed Menu child and Field requires a form/container context.",fix:"Use Menu-approved children or move Field under Container/Card/Modal/Tabs."}},{id:"invalid-ambiguous-prop-alias",scenario:"Uses an ambiguous legacy alias prop instead of canonical prop.",kind:"invalid",tags:["props","aliases","governance"],output:{tree:{type:"Chip",props:{label:"Demo",iconplacement:"left",icon:"User"}}},expected:{status:"fail",violationCodes:["RULE_AMBIGUOUS_PROP_ALIAS"]},rationale:{why:"Alias props create inconsistent generation behavior across models.",fix:"Use canonical prop name `iconPlacement`."}},{id:"invalid-version-mismatch",scenario:"Output version fields do not match current governance contract.",kind:"invalid",tags:["versioning","contract","governance"],output:{manifestVersion:"0.0.1",governanceVersion:"0.0.1",policyVersion:"0.0.1",tree:{type:"Container",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_VERSION_MISMATCH_MANIFESTVERSION","RULE_VERSION_MISMATCH_GOVERNANCEVERSION","RULE_VERSION_MISMATCH_POLICYVERSION"]},rationale:{why:"Generated output must declare versions that match the active AI contract.",fix:"Use the current manifest/governance/policy versions from UDSGovernance."}},{id:"invalid-schema-node-type",scenario:"Malformed output with missing node type.",kind:"invalid",tags:["schema","malformed"],output:{tree:{type:"",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["SCHEMA_NODE_TYPE"]},rationale:{why:"Schema requires each node to have a non-empty string `type`.",fix:"Set a valid UDS component type for every node."}}];export{e as UDS_TRAINING_EXAMPLES};
|
|
1
|
+
const e=[{id:"valid-auth-form",scenario:"Simple authentication card with semantic layout and one primary action.",kind:"valid",tags:["form","auth","field-wrapping"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-24"},children:[{type:"Card",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Field",children:[{type:"TextInput",props:{type:"email",iconPosition:"left"}}]},{type:"Field",children:[{type:"TextInput",props:{type:"password"}}]},{type:"Flex",children:[{type:"Button",props:{appearance:"primary",label:"Sign in"}},{type:"Button",props:{appearance:"text",label:"Forgot password?"}}]}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed composition (Container > Card > Field/Text/Button), valid spacing token, and a single primary action."}},{id:"valid-table-summary",scenario:"Data summary area with table-related indicators and a single primary action.",kind:"valid",tags:["table","status","dashboard"],output:{tree:{type:"Container",children:[{type:"Flex",children:[{type:"Text",props:{variant:"heading-24"}},{type:"Button",props:{appearance:"primary",label:"Create row"}}]},{type:"Table",children:[{type:"Status",props:{variant:"success",text:"Ready"}},{type:"Tag",props:{variant:"blue",label:"Active"}},{type:"DotStatus",props:{status:"positive"}},{type:"ActionMenu",props:{triggerLabel:"Row actions"}}]}]}},expected:{status:"pass"},rationale:{why:"Uses allowed Table children and keeps primary action count within limit."}},{id:"invalid-two-primary-actions",scenario:"Section contains two primary buttons.",kind:"invalid",tags:["actions","policy"],output:{tree:{type:"Container",children:[{type:"Button",props:{appearance:"primary",label:"Save"}},{type:"Button",props:{appearance:"primary",label:"Publish"}}]}},expected:{status:"fail",violationCodes:["RULE_MAX_PRIMARY_ACTIONS"]},rationale:{why:"Violates max primary actions per section.",fix:"Keep one primary action and convert the rest to secondary appearances."}},{id:"invalid-raw-html-and-inline-style",scenario:"Output includes raw HTML and inline style values.",kind:"invalid",tags:["raw-html","inline-style","governance"],output:{tree:{type:"Container",children:[{type:"div",props:{style:{color:"#ff0000"}},children:[{type:"Text",props:{variant:"body-16"}}]}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_COMPONENT","RULE_RAW_HTML_DISALLOWED","RULE_INLINE_STYLE_DISALLOWED"]},rationale:{why:"Governance forbids raw HTML tags and inline styling in generated output.",fix:"Replace raw HTML with UDS components and use tokenized component props."}},{id:"invalid-spacing-token",scenario:"Spacing prop uses a non-system token.",kind:"invalid",tags:["tokens","spacing"],output:{tree:{type:"Container",props:{gap:"--uds-spacing-999"},children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_UNKNOWN_SPACING_TOKEN"]},rationale:{why:"Spacing token is outside allowed spacing system.",fix:"Use an allowed token such as --uds-spacing-8/12/16/24."}},{id:"invalid-custom-css-variable",scenario:"Uses non-UDS CSS variable references in component props.",kind:"invalid",tags:["tokens","css-variables","governance"],output:{tree:{type:"Container",props:{surfaceColor:"var(--brand-primary-500)"},children:[{type:"Text",props:{color:"--custom-text-color",variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_CUSTOM_CSS_VAR_DISALLOWED"]},rationale:{why:"Generated output must not introduce custom CSS variables outside --uds-* namespace.",fix:"Use --uds-* references or hardcoded literal values."}},{id:"invalid-tailwind-classname",scenario:"Output includes Tailwind utility classes.",kind:"invalid",tags:["tailwind","className","governance"],output:{tree:{type:"Container",props:{className:"p-4 bg-blue-600 text-white"},children:[{type:"Text",props:{variant:"body-16",text:"Example"}}]}},expected:{status:"fail",violationCodes:["RULE_TAILWIND_CLASS_DISALLOWED"]},rationale:{why:"Figma Make output must not fall back to Tailwind utility classes.",fix:"Use UDS components and governed tokenized props instead of className utilities."}},{id:"invalid-menu-ant-props",scenario:"Menu uses Ant-style props that are not part of the UDS contract.",kind:"invalid",tags:["menu","props","contract-drift"],output:{tree:{type:"Menu",props:{items:[{label:"Dashboard",icon:"House",path:"/"}],selectedKeys:["/"],mode:"inline"}}},expected:{status:"fail",violationCodes:["RULE_FORBIDDEN_PROP"]},rationale:{why:"Menu must use UDS canonical props, not Ant-style API props.",fix:"Use navItems plus activeMode/app state driven selection."}},{id:"invalid-flex-ant-props",scenario:"Flex uses vertical/justify/align aliases from non-UDS APIs.",kind:"invalid",tags:["flex","props","contract-drift"],output:{tree:{type:"Flex",props:{vertical:!0,justify:"space-between",align:"center"},children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_FORBIDDEN_PROP"]},rationale:{why:"Flex layout must use canonical props for deterministic cross-model behavior.",fix:"Use direction, justifyContent, and alignItems props."}},{id:"invalid-composition-parent-child",scenario:"Composition places a form field directly inside Menu.",kind:"invalid",tags:["composition","parent-child","layout"],output:{tree:{type:"Menu",children:[{type:"Field",children:[{type:"TextInput",props:{type:"text"}}]}]}},expected:{status:"fail",violationCodes:["RULE_INVALID_COMPOSITION","RULE_INVALID_PARENT_COMPOSITION"]},rationale:{why:"Field is not an allowed Menu child and Field requires a form/container context.",fix:"Use Menu-approved children or move Field under Container/Card/Modal/Tabs."}},{id:"invalid-ambiguous-prop-alias",scenario:"Uses an ambiguous legacy alias prop instead of canonical prop.",kind:"invalid",tags:["props","aliases","governance"],output:{tree:{type:"Chip",props:{label:"Demo",iconplacement:"left",icon:"User"}}},expected:{status:"fail",violationCodes:["RULE_AMBIGUOUS_PROP_ALIAS"]},rationale:{why:"Alias props create inconsistent generation behavior across models.",fix:"Use canonical prop name `iconPlacement`."}},{id:"invalid-version-mismatch",scenario:"Output version fields do not match current governance contract.",kind:"invalid",tags:["versioning","contract","governance"],output:{manifestVersion:"0.0.1",governanceVersion:"0.0.1",policyVersion:"0.0.1",tree:{type:"Container",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["RULE_VERSION_MISMATCH_MANIFESTVERSION","RULE_VERSION_MISMATCH_GOVERNANCEVERSION","RULE_VERSION_MISMATCH_POLICYVERSION"]},rationale:{why:"Generated output must declare versions that match the active AI contract.",fix:"Use the current manifest/governance/policy versions from UDSGovernance."}},{id:"invalid-schema-node-type",scenario:"Malformed output with missing node type.",kind:"invalid",tags:["schema","malformed"],output:{tree:{type:"",children:[{type:"Text",props:{variant:"body-16"}}]}},expected:{status:"fail",violationCodes:["SCHEMA_NODE_TYPE"]},rationale:{why:"Schema requires each node to have a non-empty string `type`.",fix:"Set a valid UDS component type for every node."}}];export{e as UDS_TRAINING_EXAMPLES};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contractName": "uds.ai.figma-make",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"package": "@mich8060/unified-design-system",
|
|
5
|
+
"scope": "Figma Make to UDS generation",
|
|
6
|
+
"outputFormat": "json-tree",
|
|
7
|
+
"principles": [
|
|
8
|
+
"Token-driven styling with governed UDS tokens.",
|
|
9
|
+
"No Tailwind utilities or className-based utility styling.",
|
|
10
|
+
"Use governed component composition rules and layout templates.",
|
|
11
|
+
"Use icon names from the UDS icon catalog."
|
|
12
|
+
],
|
|
13
|
+
"hardConstraints": {
|
|
14
|
+
"allowedImports": [
|
|
15
|
+
"@mich8060/unified-design-system",
|
|
16
|
+
"@mich8060/unified-design-system/figma-make"
|
|
17
|
+
],
|
|
18
|
+
"importRules": {
|
|
19
|
+
"allowPackageLevelImportsOnly": true,
|
|
20
|
+
"disallowDeepComponentImports": true
|
|
21
|
+
},
|
|
22
|
+
"disallowedPatterns": [
|
|
23
|
+
"tailwind-utility-class",
|
|
24
|
+
"className-utility-styling",
|
|
25
|
+
"custom-css-variable",
|
|
26
|
+
"raw-html-layout-wrapper"
|
|
27
|
+
],
|
|
28
|
+
"styling": {
|
|
29
|
+
"allowedVariableNamespace": "--uds-*",
|
|
30
|
+
"allowHardcodedLiterals": true,
|
|
31
|
+
"spacingPropsMustUseUDSSpacingToken": true
|
|
32
|
+
},
|
|
33
|
+
"layoutGovernance": {
|
|
34
|
+
"useAppShellForRootLayout": true,
|
|
35
|
+
"maxPrimaryActionsPerSection": 1
|
|
36
|
+
},
|
|
37
|
+
"forbiddenPropsByComponent": {
|
|
38
|
+
"Menu": ["items", "selectedKeys", "mode"],
|
|
39
|
+
"Flex": ["vertical", "justify", "align"],
|
|
40
|
+
"Text": ["type", "strong"],
|
|
41
|
+
"Button": ["type"],
|
|
42
|
+
"Badge": ["status", "color"],
|
|
43
|
+
"Statistics": ["title", "prefix", "suffix", "valueStyle"]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"componentContracts": {
|
|
47
|
+
"AppShell": {
|
|
48
|
+
"import": "@mich8060/unified-design-system",
|
|
49
|
+
"compoundSlots": [
|
|
50
|
+
"Menu",
|
|
51
|
+
"Content",
|
|
52
|
+
"Listview",
|
|
53
|
+
"Main"
|
|
54
|
+
],
|
|
55
|
+
"namedSlots": [
|
|
56
|
+
"Header",
|
|
57
|
+
"Sidebar",
|
|
58
|
+
"Breadcrumb",
|
|
59
|
+
"Footer",
|
|
60
|
+
"SubNav"
|
|
61
|
+
],
|
|
62
|
+
"requiredProps": {
|
|
63
|
+
"brand": "connect|comphealth|locumsmart|default|weatherby|modio|gms|wireframe",
|
|
64
|
+
"theme": "light|dark"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"Menu": {
|
|
68
|
+
"requiredProps": [
|
|
69
|
+
"navItems"
|
|
70
|
+
],
|
|
71
|
+
"optionalProps": [
|
|
72
|
+
"activeBrand",
|
|
73
|
+
"brands",
|
|
74
|
+
"showBrandSwitcher",
|
|
75
|
+
"showModeToggle",
|
|
76
|
+
"activeMode",
|
|
77
|
+
"onBrandChange",
|
|
78
|
+
"onModeChange"
|
|
79
|
+
],
|
|
80
|
+
"iconInput": "Phosphor icon string names only"
|
|
81
|
+
},
|
|
82
|
+
"Badge": {
|
|
83
|
+
"variant": [
|
|
84
|
+
"blue",
|
|
85
|
+
"cyan",
|
|
86
|
+
"green",
|
|
87
|
+
"magenta",
|
|
88
|
+
"indigo",
|
|
89
|
+
"rose",
|
|
90
|
+
"neutral",
|
|
91
|
+
"orange",
|
|
92
|
+
"purple",
|
|
93
|
+
"red",
|
|
94
|
+
"sky",
|
|
95
|
+
"yellow",
|
|
96
|
+
"inverse",
|
|
97
|
+
"lime"
|
|
98
|
+
],
|
|
99
|
+
"appearance": [
|
|
100
|
+
"solid",
|
|
101
|
+
"outlined"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"Button": {
|
|
105
|
+
"appearance": [
|
|
106
|
+
"primary",
|
|
107
|
+
"soft",
|
|
108
|
+
"outline",
|
|
109
|
+
"text",
|
|
110
|
+
"ghost",
|
|
111
|
+
"destructive"
|
|
112
|
+
],
|
|
113
|
+
"size": [
|
|
114
|
+
"large",
|
|
115
|
+
"default",
|
|
116
|
+
"small",
|
|
117
|
+
"xsmall"
|
|
118
|
+
],
|
|
119
|
+
"icon": "Phosphor icon string name"
|
|
120
|
+
},
|
|
121
|
+
"Avatar": {
|
|
122
|
+
"size": [
|
|
123
|
+
"small",
|
|
124
|
+
"default",
|
|
125
|
+
"large"
|
|
126
|
+
],
|
|
127
|
+
"initials": "2-character string"
|
|
128
|
+
},
|
|
129
|
+
"Text": {
|
|
130
|
+
"variantFamilies": [
|
|
131
|
+
"display-*",
|
|
132
|
+
"heading-*",
|
|
133
|
+
"body-*"
|
|
134
|
+
],
|
|
135
|
+
"weight": [
|
|
136
|
+
"regular",
|
|
137
|
+
"medium",
|
|
138
|
+
"semibold",
|
|
139
|
+
"bold"
|
|
140
|
+
],
|
|
141
|
+
"leading": [
|
|
142
|
+
"tight",
|
|
143
|
+
"regular",
|
|
144
|
+
"loose"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"Flex": {
|
|
148
|
+
"direction": [
|
|
149
|
+
"row",
|
|
150
|
+
"column"
|
|
151
|
+
],
|
|
152
|
+
"justifyContent": [
|
|
153
|
+
"flex-start",
|
|
154
|
+
"center",
|
|
155
|
+
"flex-end",
|
|
156
|
+
"space-between",
|
|
157
|
+
"space-around",
|
|
158
|
+
"space-evenly"
|
|
159
|
+
],
|
|
160
|
+
"alignItems": [
|
|
161
|
+
"stretch",
|
|
162
|
+
"flex-start",
|
|
163
|
+
"center",
|
|
164
|
+
"flex-end",
|
|
165
|
+
"baseline"
|
|
166
|
+
],
|
|
167
|
+
"gapRule": "Use --uds-spacing-* token values only."
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"navigationLogic": {
|
|
171
|
+
"router": "react-router-dom (^6.26.2 || ^7.0.0)",
|
|
172
|
+
"rootLayoutPattern": "AppShell with route outlet in AppShell.Main"
|
|
173
|
+
},
|
|
174
|
+
"iconMappings": {
|
|
175
|
+
"dashboard": "House",
|
|
176
|
+
"requests": "ClipboardText",
|
|
177
|
+
"providers": "Users",
|
|
178
|
+
"calendar": "CalendarBlank",
|
|
179
|
+
"invoices": "FileText",
|
|
180
|
+
"reporting": "ChartBar"
|
|
181
|
+
},
|
|
182
|
+
"references": {
|
|
183
|
+
"manifest": "@mich8060/unified-design-system/ai/manifest.json",
|
|
184
|
+
"schema": "@mich8060/unified-design-system/ai/schema",
|
|
185
|
+
"icons": "@mich8060/unified-design-system/ai/icons",
|
|
186
|
+
"templates": "@mich8060/unified-design-system/ai/templates",
|
|
187
|
+
"validation": "@mich8060/unified-design-system/ai/validation",
|
|
188
|
+
"adapter": "@mich8060/unified-design-system/figma-make"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Figma Make Contract (UDS Only)
|
|
2
|
+
|
|
3
|
+
Use this contract when generating interfaces from Figma Make into code for `@mich8060/unified-design-system`.
|
|
4
|
+
|
|
5
|
+
## Required Stack
|
|
6
|
+
|
|
7
|
+
- Use only imports from `@mich8060/unified-design-system` (or `@mich8060/unified-design-system/figma-make`).
|
|
8
|
+
- Do not deep import from internal paths (for example `@/.../components/Menu`).
|
|
9
|
+
- Compose UI with UDS components.
|
|
10
|
+
- Style only with `--uds-*` tokens or hardcoded literals when necessary.
|
|
11
|
+
|
|
12
|
+
## Banned Patterns
|
|
13
|
+
|
|
14
|
+
- No Tailwind classes or utility tokens (`bg-*`, `text-*`, `p-*`, `m-*`, `grid-*`, `flex-*`, etc.).
|
|
15
|
+
- No `className` utility styling.
|
|
16
|
+
- No raw HTML layout wrappers when a UDS component exists (`div`, `section`, `main`, etc.).
|
|
17
|
+
- No custom CSS variables (`--brand-*`, `--custom-*`, `--foo-*`).
|
|
18
|
+
- No Ant-style prop APIs on UDS components:
|
|
19
|
+
- `Menu.items`, `Menu.selectedKeys`, `Menu.mode`
|
|
20
|
+
- `Flex.vertical`, `Flex.justify`, `Flex.align`
|
|
21
|
+
- `Button.type`
|
|
22
|
+
- `Text.type`, `Text.strong`
|
|
23
|
+
- `Badge.status`, `Badge.color`
|
|
24
|
+
- `Statistics.title`, `Statistics.prefix`, `Statistics.suffix`, `Statistics.valueStyle`
|
|
25
|
+
|
|
26
|
+
## Output Requirements
|
|
27
|
+
|
|
28
|
+
- Return deterministic JSON tree output.
|
|
29
|
+
- Use canonical prop names only.
|
|
30
|
+
- Respect governed composition rules and spacing token rules.
|
|
31
|
+
- Max one primary action per section.
|
|
32
|
+
|
|
33
|
+
## Starter Layout Recipes
|
|
34
|
+
|
|
35
|
+
1. `auth-form-card`
|
|
36
|
+
- `Container(gap="--uds-spacing-24") > Card > Text + Field(TextInput) + Field(TextInput) + Flex(Button primary + Button text)`
|
|
37
|
+
|
|
38
|
+
2. `dashboard-table-summary`
|
|
39
|
+
- `Container(gap="--uds-spacing-16") > Flex(Text heading + Button primary) + Table(Status/Tag/ActionMenu)`
|
|
40
|
+
|
|
41
|
+
3. `settings-two-column`
|
|
42
|
+
- `Container > Text heading + Flex(gap="--uds-spacing-24") > Card(form) + Card(summary)`
|
|
43
|
+
|
|
44
|
+
4. `modal-confirmation`
|
|
45
|
+
- `Modal > Text heading + Text body + Flex(Button text + Button destructive)`
|
|
46
|
+
|
|
47
|
+
5. `wizard-steps-form`
|
|
48
|
+
- `Container > Text heading + Steps + Card(Field + Field + Flex(Button text + Button primary))`
|
|
49
|
+
|
|
50
|
+
## Icon Guidance
|
|
51
|
+
|
|
52
|
+
- Choose icon names only from `@mich8060/unified-design-system/ai/icons`.
|
|
53
|
+
- Prefer intent-aligned icons from catalog `recommendedByIntent`.
|
|
54
|
+
|
|
55
|
+
## Enforcement Notes
|
|
56
|
+
|
|
57
|
+
- Generation is validated by AI policy rules.
|
|
58
|
+
- Any Tailwind utility or custom variable usage will fail validation.
|
|
59
|
+
- Forbidden non-UDS props fail validation (`RULE_FORBIDDEN_PROP`).
|
|
60
|
+
|
|
61
|
+
## Contract Examples
|
|
62
|
+
|
|
63
|
+
Bad (rejected):
|
|
64
|
+
- `Menu` with `items`/`selectedKeys`/`mode`
|
|
65
|
+
- `Flex` with `vertical`/`justify`/`align`
|
|
66
|
+
- `Button` with `type="primary"`
|
|
67
|
+
|
|
68
|
+
Good (accepted):
|
|
69
|
+
- `Menu` with `navItems` and `activeMode`
|
|
70
|
+
- `Flex` with `direction`, `justifyContent`, `alignItems`
|
|
71
|
+
- `Button` with `appearance="primary"`
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contractName": "uds.ai.icon-catalog",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"library": "@phosphor-icons/react",
|
|
5
|
+
"naming": {
|
|
6
|
+
"format": "PascalCase",
|
|
7
|
+
"examples": ["House", "MagnifyingGlass", "CaretDown", "WarningCircle"],
|
|
8
|
+
"normalization": "If user prompt includes kebab/snake/space case, normalize to PascalCase before output."
|
|
9
|
+
},
|
|
10
|
+
"appearanceOptions": ["regular", "bold", "thin", "light", "duotone", "fill"],
|
|
11
|
+
"sizeGuidance": {
|
|
12
|
+
"small": 16,
|
|
13
|
+
"default": 20,
|
|
14
|
+
"large": 24
|
|
15
|
+
},
|
|
16
|
+
"recommendedByIntent": {
|
|
17
|
+
"navigation": ["House", "Compass", "List", "Sidebar", "ArrowLeft", "ArrowRight", "CaretLeft", "CaretRight"],
|
|
18
|
+
"search": ["MagnifyingGlass", "Funnel", "SlidersHorizontal"],
|
|
19
|
+
"actions": ["Plus", "PlusCircle", "PencilSimple", "Copy", "Trash", "Check", "X", "DotsThreeVertical"],
|
|
20
|
+
"statusPositive": ["CheckCircle", "Check", "SealCheck"],
|
|
21
|
+
"statusWarning": ["Warning", "WarningCircle"],
|
|
22
|
+
"statusError": ["XCircle", "WarningOctagon"],
|
|
23
|
+
"statusInfo": ["Info", "Info"],
|
|
24
|
+
"timeAndCalendar": ["CalendarBlank", "Clock", "Timer"],
|
|
25
|
+
"communication": ["Bell", "ChatCircle", "EnvelopeSimple", "Phone"],
|
|
26
|
+
"userAndAccess": ["User", "Users", "UserCircle", "Lock", "ShieldCheck"],
|
|
27
|
+
"filesAndData": ["FileText", "DownloadSimple", "UploadSimple", "Paperclip", "Database"]
|
|
28
|
+
},
|
|
29
|
+
"componentUsageHints": [
|
|
30
|
+
{
|
|
31
|
+
"component": "Button",
|
|
32
|
+
"props": {
|
|
33
|
+
"icon": "string",
|
|
34
|
+
"layout": "icon-left | icon-right | icon-only | label-only"
|
|
35
|
+
},
|
|
36
|
+
"examples": [
|
|
37
|
+
"<Button label=\"Search\" icon=\"MagnifyingGlass\" layout=\"icon-left\" />",
|
|
38
|
+
"<Button icon=\"DotsThreeVertical\" layout=\"icon-only\" appearance=\"ghost\" aria-label=\"More actions\" />"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"component": "Icon",
|
|
43
|
+
"props": {
|
|
44
|
+
"name": "Phosphor icon name",
|
|
45
|
+
"appearance": "regular | bold | thin | light | duotone | fill",
|
|
46
|
+
"size": "number"
|
|
47
|
+
},
|
|
48
|
+
"examples": [
|
|
49
|
+
"<Icon name=\"House\" size={20} appearance=\"regular\" />",
|
|
50
|
+
"<Icon name=\"WarningCircle\" size={16} appearance=\"fill\" />"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"component": "Status",
|
|
55
|
+
"props": {
|
|
56
|
+
"variant": "icon",
|
|
57
|
+
"icon": "Phosphor icon name"
|
|
58
|
+
},
|
|
59
|
+
"examples": ["<Status label=\"Error\" color=\"red\" variant=\"icon\" icon=\"WarningCircle\" />"]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"component": "Chip",
|
|
63
|
+
"props": {
|
|
64
|
+
"icon": "Phosphor icon name",
|
|
65
|
+
"iconPlacement": "left | right | both | none"
|
|
66
|
+
},
|
|
67
|
+
"examples": ["<Chip label=\"Messages\" icon=\"ChatCircle\" iconPlacement=\"left\" />"]
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"rules": [
|
|
71
|
+
"Prefer at least one icon in dense navigation/action regions unless prohibited by accessibility context.",
|
|
72
|
+
"For icon-only buttons, always include aria-label.",
|
|
73
|
+
"Do not use inline SVGs or external icon libraries in generated output.",
|
|
74
|
+
"If uncertain, use a recommendedByIntent icon before inventing names."
|
|
75
|
+
]
|
|
76
|
+
}
|
package/dist/ai/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./manifest/components.manifest.cjs"),s=require("./manifest/governance.manifest.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./manifest/components.manifest.cjs"),s=require("./manifest/governance.manifest.cjs"),u=require("./manifest/intent-mappings.manifest.cjs"),i=require("./manifest/layout.manifest.cjs"),o=require("./manifest/patterns.manifest.cjs"),d=require("./manifest/prop-aliases.manifest.cjs"),n=require("./manifest/system.manifest.cjs"),a=require("./manifest/tokens.intent.manifest.cjs"),p=require("./policies/policy.engine.cjs"),_=require("./validation/validateTree.cjs"),m=require("./validation/validateAIOutput.cjs"),D=require("./validation/schemaValidation.cjs"),g=require("./validation/driftDetection.cjs"),c=require("./validation/deterministicFeedback.cjs"),S=require("./audit/auditLogger.cjs"),r=require("./telemetry/usageMetrics.cjs"),A=require("./examples/trees.example.cjs"),T=require("./examples/validation-run.example.cjs"),M=require("./examples/training.examples.cjs"),U=require("./sdk/runtime-sdk.cjs"),E=e.ComponentRegistry,I=e.ComponentRegistry.Button,R=e.ComponentRegistry.Table,y=e.ComponentRegistry.Field,N=e.ComponentRegistry.Modal,L=Object.values(o.PatternRegistry),O=Object.entries(a.TokenIntentMap).map(([t,l])=>({intent:t,tokens:Object.values(l),guidance:`Use ${t} intents to map semantic UI choices to valid UDS tokens.`})),v=[{id:"spacing-system",rule:`Allowed spacing tokens: ${i.LayoutRules.spacingSystem.allowedTokens.join(", ")}`,rationale:"Prevents ad-hoc spacing and preserves deterministic rhythm."},{id:"composition",rule:"Use allowed composition mapping per parent component.",rationale:"Avoids invalid nesting and improves generated UI consistency."}],q=i.LayoutRules.disallowedNesting.map(t=>`Do not nest ${t.child} inside ${t.parent}.`);exports.ComponentRegistry=e.ComponentRegistry;exports.UDSGovernance=s.UDSGovernance;exports.getVersionLineage=s.getVersionLineage;exports.IntentComponentMappings=u.IntentComponentMappings;exports.LayoutRules=i.LayoutRules;exports.PatternRegistry=o.PatternRegistry;exports.PropAliasRules=d.PropAliasRules;exports.UDSAIContract=n.UDSAIContract;exports.UDSManifest=n.UDSManifest;exports.UDS_AI_CONTRACT=n.UDS_AI_CONTRACT;exports.UDS_AI_MANIFEST=n.UDS_AI_MANIFEST;exports.TokenIntentMap=a.TokenIntentMap;exports.runPolicyEngine=p.runPolicyEngine;exports.validateTree=_.validateTree;exports.validateAIOutput=m.validateAIOutput;exports.validateSchema=D.validateSchema;exports.detectDrift=g.detectDrift;exports.buildDeterministicFeedback=c.buildDeterministicFeedback;exports.sortAndDedupeViolations=c.sortAndDedupeViolations;exports.logAIGeneration=S.logAIGeneration;exports.getUsageMetrics=r.getUsageMetrics;exports.recordUsageMetric=r.recordUsageMetric;exports.resetUsageMetrics=r.resetUsageMetrics;exports.InvalidPrimaryActionTree=A.InvalidPrimaryActionTree;exports.ValidAuthFormTree=A.ValidAuthFormTree;exports.StrictModeFailureTree=T.StrictModeFailureTree;exports.strictModeFailureExample=T.strictModeFailureExample;exports.UDS_TRAINING_EXAMPLES=M.UDS_TRAINING_EXAMPLES;exports.createUDSRuntimeHelperSDK=U.createUDSRuntimeHelperSDK;exports.AI_COMPONENT_METADATA=E;exports.BUTTON_METADATA=I;exports.FIELD_METADATA=y;exports.MODAL_METADATA=N;exports.TABLE_METADATA=R;exports.UDS_FLOW_PATTERNS=L;exports.UDS_GLOBAL_ANTI_PATTERNS=q;exports.UDS_LAYOUT_RULES=v;exports.UDS_TOKEN_INTENTS=O;
|
package/dist/ai/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ComponentRegistry as t}from"./manifest/components.manifest.js";import{UDSGovernance as
|
|
1
|
+
import{ComponentRegistry as t}from"./manifest/components.manifest.js";import{UDSGovernance as x,getVersionLineage as E}from"./manifest/governance.manifest.js";import{IntentComponentMappings as u}from"./manifest/intent-mappings.manifest.js";import{LayoutRules as o}from"./manifest/layout.manifest.js";import{PatternRegistry as n}from"./manifest/patterns.manifest.js";import{PropAliasRules as N}from"./manifest/prop-aliases.manifest.js";import{UDSAIContract as O,UDSManifest as L,UDS_AI_CONTRACT as R,UDS_AI_MANIFEST as y}from"./manifest/system.manifest.js";import{TokenIntentMap as i}from"./manifest/tokens.intent.manifest.js";import{runPolicyEngine as F}from"./policies/policy.engine.js";import{validateTree as b}from"./validation/validateTree.js";import{validateAIOutput as C}from"./validation/validateAIOutput.js";import{validateSchema as w}from"./validation/schemaValidation.js";import{detectDrift as G}from"./validation/driftDetection.js";import{buildDeterministicFeedback as V,sortAndDedupeViolations as K}from"./validation/deterministicFeedback.js";import{logAIGeneration as W}from"./audit/auditLogger.js";import{getUsageMetrics as Y,recordUsageMetric as q,resetUsageMetrics as z}from"./telemetry/usageMetrics.js";import{InvalidPrimaryActionTree as Q,ValidAuthFormTree as Z}from"./examples/trees.example.js";import{StrictModeFailureTree as te,strictModeFailureExample as oe}from"./examples/validation-run.example.js";import{UDS_TRAINING_EXAMPLES as ne}from"./examples/training.examples.js";import{createUDSRuntimeHelperSDK as se}from"./sdk/runtime-sdk.js";const c=t,A=t.Button,l=t.Table,T=t.Field,d=t.Modal,D=Object.values(n),f=Object.entries(i).map(([e,r])=>({intent:e,tokens:Object.values(r),guidance:`Use ${e} intents to map semantic UI choices to valid UDS tokens.`})),S=[{id:"spacing-system",rule:`Allowed spacing tokens: ${o.spacingSystem.allowedTokens.join(", ")}`,rationale:"Prevents ad-hoc spacing and preserves deterministic rhythm."},{id:"composition",rule:"Use allowed composition mapping per parent component.",rationale:"Avoids invalid nesting and improves generated UI consistency."}],U=o.disallowedNesting.map(e=>`Do not nest ${e.child} inside ${e.parent}.`);export{c as AI_COMPONENT_METADATA,A as BUTTON_METADATA,t as ComponentRegistry,T as FIELD_METADATA,u as IntentComponentMappings,Q as InvalidPrimaryActionTree,o as LayoutRules,d as MODAL_METADATA,n as PatternRegistry,N as PropAliasRules,te as StrictModeFailureTree,l as TABLE_METADATA,i as TokenIntentMap,O as UDSAIContract,x as UDSGovernance,L as UDSManifest,R as UDS_AI_CONTRACT,y as UDS_AI_MANIFEST,D as UDS_FLOW_PATTERNS,U as UDS_GLOBAL_ANTI_PATTERNS,S as UDS_LAYOUT_RULES,f as UDS_TOKEN_INTENTS,ne as UDS_TRAINING_EXAMPLES,Z as ValidAuthFormTree,V as buildDeterministicFeedback,se as createUDSRuntimeHelperSDK,G as detectDrift,Y as getUsageMetrics,E as getVersionLineage,W as logAIGeneration,q as recordUsageMetric,z as resetUsageMetrics,F as runPolicyEngine,K as sortAndDedupeViolations,oe as strictModeFailureExample,C as validateAIOutput,w as validateSchema,b as validateTree};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=e=>e==="form"?["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-blue-600"]:e==="feedback"?["--uds-spacing-8","--uds-color-green-600","--uds-color-red-600"]:e==="layout"?["--uds-spacing-16","--uds-spacing-24","--uds-radius-8"]:e==="navigation"?["--uds-spacing-8","--uds-color-neutral-600","--uds-color-blue-600"]:["--uds-spacing-8","--uds-color-neutral-700","--uds-radius-8"],r=e=>({name:e.name,category:e.category,intent:e.intent,priority:e.priority,variants:e.variants??[],sizes:e.sizes,slots:e.slots,usage:{preferredContexts:e.preferredContexts,maxPerSection:e.maxPerSection},constraints:e.constraints,accessibility:{role:e.accessibilityRole??"group",keyboardSupport:e.keyboardSupport??["Tab"]},tokenDependencies:e.tokenDependencies??t(e.category)}),o=[{name:"Accordion",category:"layout",intent:"Progressive disclosure for grouped content.",preferredContexts:["settings","details"],accessibilityRole:"region"},{name:"ActionMenu",category:"navigation",intent:"Contextual action list for row/item actions.",preferredContexts:["tables","cards"],accessibilityRole:"menu",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown","Escape"]},{name:"AppShell",category:"layout",intent:"Top-level application shell composition.",preferredContexts:["app-root"],maxPerSection:1,tokenDependencies:["--uds-spacing-16","--uds-color-neutral-50","--uds-elevation-overlay"],accessibilityRole:"application"},{name:"Avatar",category:"data-display",intent:"Represent people or entities with image/initials.",preferredContexts:["lists","tables","headers"],accessibilityRole:"img"},{name:"Badge",category:"data-display",intent:"Small count/status indicator.",preferredContexts:["notifications","tabs"],maxPerSection:6},{name:"Branding",category:"branding",intent:"Brand identity lockup and context marker.",preferredContexts:["navigation","headers"],maxPerSection:1},{name:"Breadcrumb",category:"navigation",intent:"Hierarchy-aware page context trail.",preferredContexts:["page-header"],maxPerSection:1,accessibilityRole:"navigation"},{name:"Button",category:"action",intent:"Primary and secondary user actions.",preferredContexts:["forms","toolbars","dialogs"],constraints:{onlyOnePrimaryPerSection:!0},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-blue-600","--uds-color-red-600","--uds-radius-8"],accessibilityRole:"button",keyboardSupport:["Tab","Enter","Space"]},{name:"Calendar",category:"form",intent:"Calendar date grid interactions.",preferredContexts:["scheduling","date-selection"]},{name:"Card",category:"layout",intent:"Contained content region with optional actions.",preferredContexts:["dashboards","details"]},{name:"Checkbox",category:"form",intent:"Multi-select boolean control.",preferredContexts:["forms","filters"],accessibilityRole:"checkbox",keyboardSupport:["Tab","Space"]},{name:"Chip",category:"form",intent:"Compact selectable/taggable item.",preferredContexts:["filters","tags"],maxPerSection:12,accessibilityRole:"button"},{name:"Code",category:"data-display",intent:"Formatted code snippet display.",preferredContexts:["documentation","developer-tools"],tokenDependencies:["--uds-spacing-12","--uds-color-neutral-900","--uds-radius-8"]},{name:"Container",category:"layout",intent:"Consistent page/content width boundaries.",preferredContexts:["page-layout"],maxPerSection:1},{name:"Datepicker",category:"form",intent:"Date selection input control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"Dialog",category:"feedback",intent:"Structured dialog surface with actions.",preferredContexts:["confirmations","warnings"],maxPerSection:1,accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Divider",category:"layout",intent:"Semantic separation between sections.",preferredContexts:["page-sections","cards"]},{name:"DotStatus",category:"data-display",intent:"Compact status indicator dot.",preferredContexts:["tables","status-lists"]},{name:"Dropdown",category:"form",intent:"Select-style single choice control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"EmptyState",category:"feedback",intent:"Empty data guidance and next action.",preferredContexts:["tables","search-results"],maxPerSection:1},{name:"EventCard",category:"data-display",intent:"Event summary card with key metadata.",preferredContexts:["scheduling","timelines"]},{name:"Field",category:"form",intent:"Label/helper/error wrapper for form controls.",preferredContexts:["forms"],slots:{control:{required:!0,description:"Input-like child control."},helper:{required:!1},error:{required:!1}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-red-600"],accessibilityRole:"group"},{name:"FileUpload",category:"form",intent:"Upload surface for file selection/drop.",preferredContexts:["forms","document-intake"]},{name:"Flex",category:"layout",intent:"Primary layout utility for component composition.",preferredContexts:["all-layouts"],maxPerSection:999,tokenDependencies:["--uds-spacing-8","--uds-spacing-16","--uds-spacing-24"]},{name:"Icon",category:"data-display",intent:"Consistent icon rendering wrapper.",preferredContexts:["buttons","status","navigation"],tokenDependencies:["--uds-color-neutral-700","--uds-color-blue-600"],accessibilityRole:"img"},{name:"ImageAspect",category:"layout",intent:"Image with deterministic aspect ratio.",preferredContexts:["cards","media"]},{name:"Input",category:"form",intent:"Alias for TextInput control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Key",category:"data-display",intent:"Keyboard shortcut visual token.",preferredContexts:["help","tooltips"]},{name:"Menu",category:"navigation",intent:"Main app navigation rail/menu.",preferredContexts:["app-shell"],maxPerSection:1,accessibilityRole:"navigation",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown"]},{name:"MicroCalendar",category:"data-display",intent:"Compact calendar visualization.",preferredContexts:["dashboards","side-panels"]},{name:"Modal",category:"feedback",intent:"Blocking focus-trap overlay with actions.",preferredContexts:["confirmations","forms"],maxPerSection:1,constraints:{disallowedChildren:["Modal"]},tokenDependencies:["--uds-elevation-overlay","--uds-spacing-16","--uds-radius-12"],accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Pagination",category:"navigation",intent:"Navigate paged dataset slices.",preferredContexts:["tables","list-pages"],maxPerSection:1,accessibilityRole:"navigation"},{name:"ProgressCircle",category:"data-display",intent:"Circular completion progress indicator.",preferredContexts:["status","dashboard"]},{name:"ProgressIndicator",category:"data-display",intent:"Linear progress indicator.",preferredContexts:["loaders","step-flows"]},{name:"Radio",category:"form",intent:"Single-select option control.",preferredContexts:["forms","filters"],accessibilityRole:"radio",keyboardSupport:["Tab","ArrowUp","ArrowDown","Space"]},{name:"Slider",category:"form",intent:"Bounded numeric range control.",preferredContexts:["filters","settings"],accessibilityRole:"slider",keyboardSupport:["Tab","ArrowLeft","ArrowRight"]},{name:"Status",category:"data-display",intent:"Text + status color indicator.",preferredContexts:["tables","cards"]},{name:"Steps",category:"navigation",intent:"Multi-step flow progress tracker.",preferredContexts:["wizards","onboarding"],maxPerSection:1},{name:"Table",category:"data-display",intent:"Structured multi-column data presentation.",preferredContexts:["admin","reporting"],maxPerSection:1,slots:{row:{required:!0},cell:{required:!0},header:{required:!0}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-100","--uds-color-neutral-700"],accessibilityRole:"table",keyboardSupport:["Tab","ArrowUp","ArrowDown"]},{name:"Tabs",category:"navigation",intent:"Switch between peer content panels.",preferredContexts:["details","settings"],maxPerSection:1,accessibilityRole:"tablist",keyboardSupport:["Tab","ArrowLeft","ArrowRight","Enter"]},{name:"Tag",category:"data-display",intent:"Categorical metadata marker.",preferredContexts:["tables","cards"],maxPerSection:10},{name:"Text",category:"data-display",intent:"Semantic typography primitive.",preferredContexts:["all-content"],maxPerSection:999},{name:"TextInput",category:"form",intent:"Single-line text entry control.",preferredContexts:["forms","search"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Textarea",category:"form",intent:"Multi-line text entry control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Toast",category:"feedback",intent:"Transient non-blocking notification.",preferredContexts:["system-feedback"],maxPerSection:3,constraints:{disallowedChildren:["Modal","Dialog"]},accessibilityRole:"status"},{name:"Toggle",category:"form",intent:"Binary on/off switch control.",preferredContexts:["settings","filters"],accessibilityRole:"switch",keyboardSupport:["Tab","Space"]},{name:"Tooltip",category:"feedback",intent:"Contextual hover/focus helper text.",preferredContexts:["dense-actions","icons"],maxPerSection:12,accessibilityRole:"tooltip"}],a=Object.fromEntries(o.map(e=>[e.name,r(e)]));exports.ComponentRegistry=a;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=e=>e==="form"?["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-blue-600"]:e==="feedback"?["--uds-spacing-8","--uds-color-green-600","--uds-color-red-600"]:e==="layout"?["--uds-spacing-16","--uds-spacing-24","--uds-radius-8"]:e==="navigation"?["--uds-spacing-8","--uds-color-neutral-600","--uds-color-blue-600"]:["--uds-spacing-8","--uds-color-neutral-700","--uds-radius-8"],r=e=>({name:e.name,category:e.category,intent:e.intent,priority:e.priority,variants:e.variants??[],sizes:e.sizes,slots:e.slots,usage:{preferredContexts:e.preferredContexts,maxPerSection:e.maxPerSection},constraints:e.constraints,accessibility:{role:e.accessibilityRole??"group",keyboardSupport:e.keyboardSupport??["Tab"]},tokenDependencies:e.tokenDependencies??t(e.category)}),a=[{name:"Accordion",category:"layout",intent:"Progressive disclosure for grouped content.",preferredContexts:["settings","details"],accessibilityRole:"region"},{name:"ActionMenu",category:"navigation",intent:"Contextual action list for row/item actions.",preferredContexts:["tables","cards"],accessibilityRole:"menu",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown","Escape"]},{name:"AppShell",category:"layout",intent:"Top-level application shell composition.",preferredContexts:["app-root"],maxPerSection:1,tokenDependencies:["--uds-spacing-16","--uds-color-neutral-50","--uds-elevation-overlay"],accessibilityRole:"application"},{name:"Avatar",category:"data-display",intent:"Represent people or entities with image/initials.",preferredContexts:["lists","tables","headers"],accessibilityRole:"img"},{name:"Badge",category:"data-display",intent:"Small count/status indicator.",preferredContexts:["notifications","tabs"],maxPerSection:6},{name:"Branding",category:"branding",intent:"Brand identity lockup and context marker.",preferredContexts:["navigation","headers"],maxPerSection:1},{name:"Breadcrumb",category:"navigation",intent:"Hierarchy-aware page context trail.",preferredContexts:["page-header"],maxPerSection:1,accessibilityRole:"navigation"},{name:"Button",category:"action",intent:"Primary and secondary user actions.",preferredContexts:["forms","toolbars","dialogs"],constraints:{onlyOnePrimaryPerSection:!0},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-blue-600","--uds-color-red-600","--uds-radius-8"],accessibilityRole:"button",keyboardSupport:["Tab","Enter","Space"]},{name:"ButtonGroup",category:"action",intent:"Grouped related button actions.",preferredContexts:["forms","dialogs","cards"],accessibilityRole:"group",keyboardSupport:["Tab","Enter","Space"]},{name:"Calendar",category:"form",intent:"Calendar date grid interactions.",preferredContexts:["scheduling","date-selection"]},{name:"Card",category:"layout",intent:"Contained content region with optional actions.",preferredContexts:["dashboards","details"]},{name:"Checkbox",category:"form",intent:"Multi-select boolean control.",preferredContexts:["forms","filters"],accessibilityRole:"checkbox",keyboardSupport:["Tab","Space"]},{name:"CheckboxGroup",category:"form",intent:"Grouped multi-select checkboxes.",preferredContexts:["forms","filters"],accessibilityRole:"group",keyboardSupport:["Tab","Space"]},{name:"Checklist",category:"navigation",intent:"Sidebar checklist for multi-step flows with completion status.",preferredContexts:["application-flow","forms","sidebars"],maxPerSection:1,tokenDependencies:["--uds-surface-primary","--uds-border-primary","--uds-text-primary","--uds-text-secondary","--uds-surface-brand-primary","--uds-spacing-8","--uds-spacing-12","--uds-spacing-20","--uds-spacing-24"],accessibilityRole:"navigation",keyboardSupport:["Tab","Enter","Space"]},{name:"Chip",category:"form",intent:"Compact selectable/taggable item.",preferredContexts:["filters","tags"],maxPerSection:12,accessibilityRole:"button"},{name:"Code",category:"data-display",intent:"Formatted code snippet display.",preferredContexts:["documentation","developer-tools"],tokenDependencies:["--uds-spacing-12","--uds-color-neutral-900","--uds-radius-8"]},{name:"Container",category:"layout",intent:"Consistent page/content width boundaries.",preferredContexts:["page-layout"],maxPerSection:1},{name:"Datepicker",category:"form",intent:"Date selection input control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"Dialog",category:"feedback",intent:"Structured dialog surface with actions.",preferredContexts:["confirmations","warnings"],maxPerSection:1,accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Divider",category:"layout",intent:"Semantic separation between sections.",preferredContexts:["page-sections","cards"]},{name:"DotStatus",category:"data-display",intent:"Compact status indicator dot.",preferredContexts:["tables","status-lists"]},{name:"Dropdown",category:"form",intent:"Select-style single choice control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"EmptyState",category:"feedback",intent:"Empty data guidance and next action.",preferredContexts:["tables","search-results"],maxPerSection:1},{name:"EventCard",category:"data-display",intent:"Event summary card with key metadata.",preferredContexts:["scheduling","timelines"]},{name:"Field",category:"form",intent:"Label/helper/error wrapper for form controls.",preferredContexts:["forms"],slots:{control:{required:!0,description:"Input-like child control."},helper:{required:!1},error:{required:!1}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-red-600"],accessibilityRole:"group"},{name:"FileUpload",category:"form",intent:"Upload surface for file selection/drop.",preferredContexts:["forms","document-intake"]},{name:"Flex",category:"layout",intent:"Primary layout utility for component composition.",preferredContexts:["all-layouts"],maxPerSection:999,tokenDependencies:["--uds-spacing-8","--uds-spacing-16","--uds-spacing-24"]},{name:"Icon",category:"data-display",intent:"Consistent icon rendering wrapper.",preferredContexts:["buttons","status","navigation"],tokenDependencies:["--uds-color-neutral-700","--uds-color-blue-600"],accessibilityRole:"img"},{name:"ImageAspect",category:"layout",intent:"Image with deterministic aspect ratio.",preferredContexts:["cards","media"]},{name:"Input",category:"form",intent:"Alias for TextInput control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Key",category:"data-display",intent:"Keyboard shortcut visual token.",preferredContexts:["help","tooltips"]},{name:"Menu",category:"navigation",intent:"Main app navigation rail/menu.",preferredContexts:["app-shell"],maxPerSection:1,accessibilityRole:"navigation",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown"]},{name:"MicroCalendar",category:"data-display",intent:"Compact calendar visualization.",preferredContexts:["dashboards","side-panels"]},{name:"Modal",category:"feedback",intent:"Blocking focus-trap overlay with actions.",preferredContexts:["confirmations","forms"],maxPerSection:1,constraints:{disallowedChildren:["Modal"]},tokenDependencies:["--uds-elevation-overlay","--uds-spacing-16","--uds-radius-12"],accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Pagination",category:"navigation",intent:"Navigate paged dataset slices.",preferredContexts:["tables","list-pages"],maxPerSection:1,accessibilityRole:"navigation"},{name:"ProgressCircle",category:"data-display",intent:"Circular completion progress indicator.",preferredContexts:["status","dashboard"]},{name:"ProgressIndicator",category:"data-display",intent:"Linear progress indicator.",preferredContexts:["loaders","step-flows"]},{name:"Radio",category:"form",intent:"Single-select option control.",preferredContexts:["forms","filters"],accessibilityRole:"radio",keyboardSupport:["Tab","ArrowUp","ArrowDown","Space"]},{name:"RadioGroup",category:"form",intent:"Grouped single-select radios.",preferredContexts:["forms","filters"],accessibilityRole:"radiogroup",keyboardSupport:["Tab","ArrowUp","ArrowDown","Space"]},{name:"Slider",category:"form",intent:"Bounded numeric range control.",preferredContexts:["filters","settings"],accessibilityRole:"slider",keyboardSupport:["Tab","ArrowLeft","ArrowRight"]},{name:"Status",category:"data-display",intent:"Text + status color indicator.",preferredContexts:["tables","cards"]},{name:"Statistics",category:"data-display",intent:"KPI and metric summary display.",preferredContexts:["dashboards","cards","reporting"],accessibilityRole:"status"},{name:"Steps",category:"navigation",intent:"Multi-step flow progress tracker.",preferredContexts:["wizards","onboarding"],maxPerSection:1},{name:"Table",category:"data-display",intent:"Structured multi-column data presentation.",preferredContexts:["admin","reporting"],maxPerSection:1,slots:{row:{required:!0},cell:{required:!0},header:{required:!0}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-100","--uds-color-neutral-700"],accessibilityRole:"table",keyboardSupport:["Tab","ArrowUp","ArrowDown"]},{name:"Tabs",category:"navigation",intent:"Switch between peer content panels.",preferredContexts:["details","settings"],maxPerSection:1,accessibilityRole:"tablist",keyboardSupport:["Tab","ArrowLeft","ArrowRight","Enter"]},{name:"Tag",category:"data-display",intent:"Categorical metadata marker.",preferredContexts:["tables","cards"],maxPerSection:10},{name:"Text",category:"data-display",intent:"Semantic typography primitive.",preferredContexts:["all-content"],maxPerSection:999},{name:"TextInput",category:"form",intent:"Single-line text entry control.",preferredContexts:["forms","search"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Textarea",category:"form",intent:"Multi-line text entry control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Toolbar",category:"layout",intent:"Top bar with left/right actions and centered title or branding.",preferredContexts:["app-shell","page-header","navigation"],maxPerSection:1,tokenDependencies:["--uds-surface-primary","--uds-border-primary","--uds-spacing-8","--uds-spacing-12","--uds-spacing-16"],accessibilityRole:"toolbar",keyboardSupport:["Tab"]},{name:"Toast",category:"feedback",intent:"Transient non-blocking notification.",preferredContexts:["system-feedback"],maxPerSection:3,constraints:{disallowedChildren:["Modal","Dialog"]},accessibilityRole:"status"},{name:"Toggle",category:"form",intent:"Binary on/off switch control.",preferredContexts:["settings","filters"],accessibilityRole:"switch",keyboardSupport:["Tab","Space"]},{name:"Tooltip",category:"feedback",intent:"Contextual hover/focus helper text.",preferredContexts:["dense-actions","icons"],maxPerSection:12,accessibilityRole:"tooltip"}],o=Object.fromEntries(a.map(e=>[e.name,r(e)]));exports.ComponentRegistry=o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=e=>e==="form"?["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-blue-600"]:e==="feedback"?["--uds-spacing-8","--uds-color-green-600","--uds-color-red-600"]:e==="layout"?["--uds-spacing-16","--uds-spacing-24","--uds-radius-8"]:e==="navigation"?["--uds-spacing-8","--uds-color-neutral-600","--uds-color-blue-600"]:["--uds-spacing-8","--uds-color-neutral-700","--uds-radius-8"],r=e=>({name:e.name,category:e.category,intent:e.intent,priority:e.priority,variants:e.variants??[],sizes:e.sizes,slots:e.slots,usage:{preferredContexts:e.preferredContexts,maxPerSection:e.maxPerSection},constraints:e.constraints,accessibility:{role:e.accessibilityRole??"group",keyboardSupport:e.keyboardSupport??["Tab"]},tokenDependencies:e.tokenDependencies??t(e.category)}),a=[{name:"Accordion",category:"layout",intent:"Progressive disclosure for grouped content.",preferredContexts:["settings","details"],accessibilityRole:"region"},{name:"ActionMenu",category:"navigation",intent:"Contextual action list for row/item actions.",preferredContexts:["tables","cards"],accessibilityRole:"menu",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown","Escape"]},{name:"AppShell",category:"layout",intent:"Top-level application shell composition.",preferredContexts:["app-root"],maxPerSection:1,tokenDependencies:["--uds-spacing-16","--uds-color-neutral-50","--uds-elevation-overlay"],accessibilityRole:"application"},{name:"Avatar",category:"data-display",intent:"Represent people or entities with image/initials.",preferredContexts:["lists","tables","headers"],accessibilityRole:"img"},{name:"Badge",category:"data-display",intent:"Small count/status indicator.",preferredContexts:["notifications","tabs"],maxPerSection:6},{name:"Branding",category:"branding",intent:"Brand identity lockup and context marker.",preferredContexts:["navigation","headers"],maxPerSection:1},{name:"Breadcrumb",category:"navigation",intent:"Hierarchy-aware page context trail.",preferredContexts:["page-header"],maxPerSection:1,accessibilityRole:"navigation"},{name:"Button",category:"action",intent:"Primary and secondary user actions.",preferredContexts:["forms","toolbars","dialogs"],constraints:{onlyOnePrimaryPerSection:!0},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-blue-600","--uds-color-red-600","--uds-radius-8"],accessibilityRole:"button",keyboardSupport:["Tab","Enter","Space"]},{name:"Calendar",category:"form",intent:"Calendar date grid interactions.",preferredContexts:["scheduling","date-selection"]},{name:"Card",category:"layout",intent:"Contained content region with optional actions.",preferredContexts:["dashboards","details"]},{name:"Checkbox",category:"form",intent:"Multi-select boolean control.",preferredContexts:["forms","filters"],accessibilityRole:"checkbox",keyboardSupport:["Tab","Space"]},{name:"Chip",category:"form",intent:"Compact selectable/taggable item.",preferredContexts:["filters","tags"],maxPerSection:12,accessibilityRole:"button"},{name:"Code",category:"data-display",intent:"Formatted code snippet display.",preferredContexts:["documentation","developer-tools"],tokenDependencies:["--uds-spacing-12","--uds-color-neutral-900","--uds-radius-8"]},{name:"Container",category:"layout",intent:"Consistent page/content width boundaries.",preferredContexts:["page-layout"],maxPerSection:1},{name:"Datepicker",category:"form",intent:"Date selection input control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"Dialog",category:"feedback",intent:"Structured dialog surface with actions.",preferredContexts:["confirmations","warnings"],maxPerSection:1,accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Divider",category:"layout",intent:"Semantic separation between sections.",preferredContexts:["page-sections","cards"]},{name:"DotStatus",category:"data-display",intent:"Compact status indicator dot.",preferredContexts:["tables","status-lists"]},{name:"Dropdown",category:"form",intent:"Select-style single choice control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"EmptyState",category:"feedback",intent:"Empty data guidance and next action.",preferredContexts:["tables","search-results"],maxPerSection:1},{name:"EventCard",category:"data-display",intent:"Event summary card with key metadata.",preferredContexts:["scheduling","timelines"]},{name:"Field",category:"form",intent:"Label/helper/error wrapper for form controls.",preferredContexts:["forms"],slots:{control:{required:!0,description:"Input-like child control."},helper:{required:!1},error:{required:!1}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-red-600"],accessibilityRole:"group"},{name:"FileUpload",category:"form",intent:"Upload surface for file selection/drop.",preferredContexts:["forms","document-intake"]},{name:"Flex",category:"layout",intent:"Primary layout utility for component composition.",preferredContexts:["all-layouts"],maxPerSection:999,tokenDependencies:["--uds-spacing-8","--uds-spacing-16","--uds-spacing-24"]},{name:"Icon",category:"data-display",intent:"Consistent icon rendering wrapper.",preferredContexts:["buttons","status","navigation"],tokenDependencies:["--uds-color-neutral-700","--uds-color-blue-600"],accessibilityRole:"img"},{name:"ImageAspect",category:"layout",intent:"Image with deterministic aspect ratio.",preferredContexts:["cards","media"]},{name:"Input",category:"form",intent:"Alias for TextInput control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Key",category:"data-display",intent:"Keyboard shortcut visual token.",preferredContexts:["help","tooltips"]},{name:"Menu",category:"navigation",intent:"Main app navigation rail/menu.",preferredContexts:["app-shell"],maxPerSection:1,accessibilityRole:"navigation",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown"]},{name:"MicroCalendar",category:"data-display",intent:"Compact calendar visualization.",preferredContexts:["dashboards","side-panels"]},{name:"Modal",category:"feedback",intent:"Blocking focus-trap overlay with actions.",preferredContexts:["confirmations","forms"],maxPerSection:1,constraints:{disallowedChildren:["Modal"]},tokenDependencies:["--uds-elevation-overlay","--uds-spacing-16","--uds-radius-12"],accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Pagination",category:"navigation",intent:"Navigate paged dataset slices.",preferredContexts:["tables","list-pages"],maxPerSection:1,accessibilityRole:"navigation"},{name:"ProgressCircle",category:"data-display",intent:"Circular completion progress indicator.",preferredContexts:["status","dashboard"]},{name:"ProgressIndicator",category:"data-display",intent:"Linear progress indicator.",preferredContexts:["loaders","step-flows"]},{name:"Radio",category:"form",intent:"Single-select option control.",preferredContexts:["forms","filters"],accessibilityRole:"radio",keyboardSupport:["Tab","ArrowUp","ArrowDown","Space"]},{name:"Slider",category:"form",intent:"Bounded numeric range control.",preferredContexts:["filters","settings"],accessibilityRole:"slider",keyboardSupport:["Tab","ArrowLeft","ArrowRight"]},{name:"Status",category:"data-display",intent:"Text + status color indicator.",preferredContexts:["tables","cards"]},{name:"Steps",category:"navigation",intent:"Multi-step flow progress tracker.",preferredContexts:["wizards","onboarding"],maxPerSection:1},{name:"Table",category:"data-display",intent:"Structured multi-column data presentation.",preferredContexts:["admin","reporting"],maxPerSection:1,slots:{row:{required:!0},cell:{required:!0},header:{required:!0}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-100","--uds-color-neutral-700"],accessibilityRole:"table",keyboardSupport:["Tab","ArrowUp","ArrowDown"]},{name:"Tabs",category:"navigation",intent:"Switch between peer content panels.",preferredContexts:["details","settings"],maxPerSection:1,accessibilityRole:"tablist",keyboardSupport:["Tab","ArrowLeft","ArrowRight","Enter"]},{name:"Tag",category:"data-display",intent:"Categorical metadata marker.",preferredContexts:["tables","cards"],maxPerSection:10},{name:"Text",category:"data-display",intent:"Semantic typography primitive.",preferredContexts:["all-content"],maxPerSection:999},{name:"TextInput",category:"form",intent:"Single-line text entry control.",preferredContexts:["forms","search"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Textarea",category:"form",intent:"Multi-line text entry control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Toast",category:"feedback",intent:"Transient non-blocking notification.",preferredContexts:["system-feedback"],maxPerSection:3,constraints:{disallowedChildren:["Modal","Dialog"]},accessibilityRole:"status"},{name:"Toggle",category:"form",intent:"Binary on/off switch control.",preferredContexts:["settings","filters"],accessibilityRole:"switch",keyboardSupport:["Tab","Space"]},{name:"Tooltip",category:"feedback",intent:"Contextual hover/focus helper text.",preferredContexts:["dense-actions","icons"],maxPerSection:12,accessibilityRole:"tooltip"}],o=Object.fromEntries(a.map(e=>[e.name,r(e)]));export{o as ComponentRegistry};
|
|
1
|
+
const t=e=>e==="form"?["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-blue-600"]:e==="feedback"?["--uds-spacing-8","--uds-color-green-600","--uds-color-red-600"]:e==="layout"?["--uds-spacing-16","--uds-spacing-24","--uds-radius-8"]:e==="navigation"?["--uds-spacing-8","--uds-color-neutral-600","--uds-color-blue-600"]:["--uds-spacing-8","--uds-color-neutral-700","--uds-radius-8"],r=e=>({name:e.name,category:e.category,intent:e.intent,priority:e.priority,variants:e.variants??[],sizes:e.sizes,slots:e.slots,usage:{preferredContexts:e.preferredContexts,maxPerSection:e.maxPerSection},constraints:e.constraints,accessibility:{role:e.accessibilityRole??"group",keyboardSupport:e.keyboardSupport??["Tab"]},tokenDependencies:e.tokenDependencies??t(e.category)}),a=[{name:"Accordion",category:"layout",intent:"Progressive disclosure for grouped content.",preferredContexts:["settings","details"],accessibilityRole:"region"},{name:"ActionMenu",category:"navigation",intent:"Contextual action list for row/item actions.",preferredContexts:["tables","cards"],accessibilityRole:"menu",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown","Escape"]},{name:"AppShell",category:"layout",intent:"Top-level application shell composition.",preferredContexts:["app-root"],maxPerSection:1,tokenDependencies:["--uds-spacing-16","--uds-color-neutral-50","--uds-elevation-overlay"],accessibilityRole:"application"},{name:"Avatar",category:"data-display",intent:"Represent people or entities with image/initials.",preferredContexts:["lists","tables","headers"],accessibilityRole:"img"},{name:"Badge",category:"data-display",intent:"Small count/status indicator.",preferredContexts:["notifications","tabs"],maxPerSection:6},{name:"Branding",category:"branding",intent:"Brand identity lockup and context marker.",preferredContexts:["navigation","headers"],maxPerSection:1},{name:"Breadcrumb",category:"navigation",intent:"Hierarchy-aware page context trail.",preferredContexts:["page-header"],maxPerSection:1,accessibilityRole:"navigation"},{name:"Button",category:"action",intent:"Primary and secondary user actions.",preferredContexts:["forms","toolbars","dialogs"],constraints:{onlyOnePrimaryPerSection:!0},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-blue-600","--uds-color-red-600","--uds-radius-8"],accessibilityRole:"button",keyboardSupport:["Tab","Enter","Space"]},{name:"ButtonGroup",category:"action",intent:"Grouped related button actions.",preferredContexts:["forms","dialogs","cards"],accessibilityRole:"group",keyboardSupport:["Tab","Enter","Space"]},{name:"Calendar",category:"form",intent:"Calendar date grid interactions.",preferredContexts:["scheduling","date-selection"]},{name:"Card",category:"layout",intent:"Contained content region with optional actions.",preferredContexts:["dashboards","details"]},{name:"Checkbox",category:"form",intent:"Multi-select boolean control.",preferredContexts:["forms","filters"],accessibilityRole:"checkbox",keyboardSupport:["Tab","Space"]},{name:"CheckboxGroup",category:"form",intent:"Grouped multi-select checkboxes.",preferredContexts:["forms","filters"],accessibilityRole:"group",keyboardSupport:["Tab","Space"]},{name:"Checklist",category:"navigation",intent:"Sidebar checklist for multi-step flows with completion status.",preferredContexts:["application-flow","forms","sidebars"],maxPerSection:1,tokenDependencies:["--uds-surface-primary","--uds-border-primary","--uds-text-primary","--uds-text-secondary","--uds-surface-brand-primary","--uds-spacing-8","--uds-spacing-12","--uds-spacing-20","--uds-spacing-24"],accessibilityRole:"navigation",keyboardSupport:["Tab","Enter","Space"]},{name:"Chip",category:"form",intent:"Compact selectable/taggable item.",preferredContexts:["filters","tags"],maxPerSection:12,accessibilityRole:"button"},{name:"Code",category:"data-display",intent:"Formatted code snippet display.",preferredContexts:["documentation","developer-tools"],tokenDependencies:["--uds-spacing-12","--uds-color-neutral-900","--uds-radius-8"]},{name:"Container",category:"layout",intent:"Consistent page/content width boundaries.",preferredContexts:["page-layout"],maxPerSection:1},{name:"Datepicker",category:"form",intent:"Date selection input control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"Dialog",category:"feedback",intent:"Structured dialog surface with actions.",preferredContexts:["confirmations","warnings"],maxPerSection:1,accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Divider",category:"layout",intent:"Semantic separation between sections.",preferredContexts:["page-sections","cards"]},{name:"DotStatus",category:"data-display",intent:"Compact status indicator dot.",preferredContexts:["tables","status-lists"]},{name:"Dropdown",category:"form",intent:"Select-style single choice control.",preferredContexts:["forms","filters"],accessibilityRole:"combobox",keyboardSupport:["Tab","Enter","ArrowDown"]},{name:"EmptyState",category:"feedback",intent:"Empty data guidance and next action.",preferredContexts:["tables","search-results"],maxPerSection:1},{name:"EventCard",category:"data-display",intent:"Event summary card with key metadata.",preferredContexts:["scheduling","timelines"]},{name:"Field",category:"form",intent:"Label/helper/error wrapper for form controls.",preferredContexts:["forms"],slots:{control:{required:!0,description:"Input-like child control."},helper:{required:!1},error:{required:!1}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-700","--uds-color-red-600"],accessibilityRole:"group"},{name:"FileUpload",category:"form",intent:"Upload surface for file selection/drop.",preferredContexts:["forms","document-intake"]},{name:"Flex",category:"layout",intent:"Primary layout utility for component composition.",preferredContexts:["all-layouts"],maxPerSection:999,tokenDependencies:["--uds-spacing-8","--uds-spacing-16","--uds-spacing-24"]},{name:"Icon",category:"data-display",intent:"Consistent icon rendering wrapper.",preferredContexts:["buttons","status","navigation"],tokenDependencies:["--uds-color-neutral-700","--uds-color-blue-600"],accessibilityRole:"img"},{name:"ImageAspect",category:"layout",intent:"Image with deterministic aspect ratio.",preferredContexts:["cards","media"]},{name:"Input",category:"form",intent:"Alias for TextInput control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Key",category:"data-display",intent:"Keyboard shortcut visual token.",preferredContexts:["help","tooltips"]},{name:"Menu",category:"navigation",intent:"Main app navigation rail/menu.",preferredContexts:["app-shell"],maxPerSection:1,accessibilityRole:"navigation",keyboardSupport:["Tab","Enter","ArrowUp","ArrowDown"]},{name:"MicroCalendar",category:"data-display",intent:"Compact calendar visualization.",preferredContexts:["dashboards","side-panels"]},{name:"Modal",category:"feedback",intent:"Blocking focus-trap overlay with actions.",preferredContexts:["confirmations","forms"],maxPerSection:1,constraints:{disallowedChildren:["Modal"]},tokenDependencies:["--uds-elevation-overlay","--uds-spacing-16","--uds-radius-12"],accessibilityRole:"dialog",keyboardSupport:["Tab","Escape","Enter"]},{name:"Pagination",category:"navigation",intent:"Navigate paged dataset slices.",preferredContexts:["tables","list-pages"],maxPerSection:1,accessibilityRole:"navigation"},{name:"ProgressCircle",category:"data-display",intent:"Circular completion progress indicator.",preferredContexts:["status","dashboard"]},{name:"ProgressIndicator",category:"data-display",intent:"Linear progress indicator.",preferredContexts:["loaders","step-flows"]},{name:"Radio",category:"form",intent:"Single-select option control.",preferredContexts:["forms","filters"],accessibilityRole:"radio",keyboardSupport:["Tab","ArrowUp","ArrowDown","Space"]},{name:"RadioGroup",category:"form",intent:"Grouped single-select radios.",preferredContexts:["forms","filters"],accessibilityRole:"radiogroup",keyboardSupport:["Tab","ArrowUp","ArrowDown","Space"]},{name:"Slider",category:"form",intent:"Bounded numeric range control.",preferredContexts:["filters","settings"],accessibilityRole:"slider",keyboardSupport:["Tab","ArrowLeft","ArrowRight"]},{name:"Status",category:"data-display",intent:"Text + status color indicator.",preferredContexts:["tables","cards"]},{name:"Statistics",category:"data-display",intent:"KPI and metric summary display.",preferredContexts:["dashboards","cards","reporting"],accessibilityRole:"status"},{name:"Steps",category:"navigation",intent:"Multi-step flow progress tracker.",preferredContexts:["wizards","onboarding"],maxPerSection:1},{name:"Table",category:"data-display",intent:"Structured multi-column data presentation.",preferredContexts:["admin","reporting"],maxPerSection:1,slots:{row:{required:!0},cell:{required:!0},header:{required:!0}},tokenDependencies:["--uds-spacing-8","--uds-spacing-12","--uds-color-neutral-100","--uds-color-neutral-700"],accessibilityRole:"table",keyboardSupport:["Tab","ArrowUp","ArrowDown"]},{name:"Tabs",category:"navigation",intent:"Switch between peer content panels.",preferredContexts:["details","settings"],maxPerSection:1,accessibilityRole:"tablist",keyboardSupport:["Tab","ArrowLeft","ArrowRight","Enter"]},{name:"Tag",category:"data-display",intent:"Categorical metadata marker.",preferredContexts:["tables","cards"],maxPerSection:10},{name:"Text",category:"data-display",intent:"Semantic typography primitive.",preferredContexts:["all-content"],maxPerSection:999},{name:"TextInput",category:"form",intent:"Single-line text entry control.",preferredContexts:["forms","search"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Textarea",category:"form",intent:"Multi-line text entry control.",preferredContexts:["forms"],accessibilityRole:"textbox",keyboardSupport:["Tab"]},{name:"Toolbar",category:"layout",intent:"Top bar with left/right actions and centered title or branding.",preferredContexts:["app-shell","page-header","navigation"],maxPerSection:1,tokenDependencies:["--uds-surface-primary","--uds-border-primary","--uds-spacing-8","--uds-spacing-12","--uds-spacing-16"],accessibilityRole:"toolbar",keyboardSupport:["Tab"]},{name:"Toast",category:"feedback",intent:"Transient non-blocking notification.",preferredContexts:["system-feedback"],maxPerSection:3,constraints:{disallowedChildren:["Modal","Dialog"]},accessibilityRole:"status"},{name:"Toggle",category:"form",intent:"Binary on/off switch control.",preferredContexts:["settings","filters"],accessibilityRole:"switch",keyboardSupport:["Tab","Space"]},{name:"Tooltip",category:"feedback",intent:"Contextual hover/focus helper text.",preferredContexts:["dense-actions","icons"],maxPerSection:12,accessibilityRole:"tooltip"}],o=Object.fromEntries(a.map(e=>[e.name,r(e)]));export{o as ComponentRegistry};
|