@3fn/core 14.1.0 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.kiro/steering/AI-Collaboration-Principles.md +9 -3
- package/.kiro/steering/Agent-Directory.md +31 -7
- package/.kiro/steering/Civitas-System-Overview.md +3 -3
- package/.kiro/steering/DesignerPunk-Systems-Overview.md +3 -3
- package/.kiro/steering/Task-Completion-Protocol.md +12 -11
- package/.kiro/steering/start-up-tasks.md +12 -4
- package/CHANGELOG.md +74 -0
- package/README.md +26 -21
- package/application-mcp-server/src/__tests__/consumerRootLiveReindex.test.ts +118 -0
- package/application-mcp-server/src/__tests__/errorCatalogWiring.test.ts +73 -0
- package/application-mcp-server/src/__tests__/mcpDataRootsDeclaration.test.ts +107 -0
- package/application-mcp-server/src/__tests__/tool-boundary.contract.test.ts +55 -0
- package/application-mcp-server/src/index.ts +249 -59
- package/application-mcp-server/src/indexer/ComponentIndexer.ts +273 -46
- package/application-mcp-server/src/indexer/ModeClassifier.ts +23 -16
- package/application-mcp-server/src/indexer/SemanticOverrideReader.ts +113 -0
- package/application-mcp-server/src/indexer/TokenIndexer.ts +195 -3
- package/application-mcp-server/src/indexer/__tests__/MultiRootIndexing.test.ts +134 -0
- package/application-mcp-server/src/indexer/__tests__/ThemeResolution.test.ts +241 -0
- package/application-mcp-server/src/indexer/__tests__/ThemeRootFollowsIndex.test.ts +216 -0
- package/application-mcp-server/src/indexer/__tests__/fixtures/consumerFixture.ts +84 -0
- package/application-mcp-server/src/indexer/resolveThemeTierRoot.ts +61 -0
- package/application-mcp-server/src/watcher/FileWatcher.ts +20 -7
- package/dist/ComponentTokens.android.kt +1 -1
- package/dist/ComponentTokens.ios.swift +1 -1
- package/dist/ComponentTokens.web.css +1 -1
- package/dist/DesignTokens.android.kt +1 -5
- package/dist/DesignTokens.dtcg.json +388 -122
- package/dist/DesignTokens.figma.json +281 -941
- package/dist/DesignTokens.ios.swift +1 -5
- package/dist/DesignTokens.web.css +5 -5
- package/dist/browser/designerpunk.esm.js +160 -94
- package/dist/browser/designerpunk.esm.min.js +58 -55
- package/dist/browser/designerpunk.umd.js +160 -94
- package/dist/browser/designerpunk.umd.min.js +57 -54
- package/dist/browser/tokens.css +5 -5
- package/dist/build/platforms/AndroidMotionTokenFormatter.d.ts +101 -0
- package/dist/build/platforms/AndroidMotionTokenFormatter.js +220 -0
- package/dist/build/platforms/WebMotionTokenFormatter.d.ts +85 -0
- package/dist/build/platforms/WebMotionTokenFormatter.js +167 -0
- package/dist/build/platforms/iOSMotionTokenFormatter.d.ts +99 -0
- package/dist/build/platforms/iOSMotionTokenFormatter.js +221 -0
- package/dist/build/validation/index.d.ts +0 -4
- package/dist/build/validation/index.js +1 -8
- package/dist/cli/attach.d.ts +153 -0
- package/dist/cli/attach.js +423 -0
- package/dist/cli/designerpunk.d.ts +46 -0
- package/dist/cli/designerpunk.js +171 -34
- package/dist/cli/figma-extract.js +10 -1
- package/dist/cli/figma-push.js +11 -2
- package/dist/cli/init.d.ts +36 -5
- package/dist/cli/init.js +348 -143
- package/dist/cli/loadComponentTokens.d.ts +25 -0
- package/dist/cli/loadComponentTokens.js +87 -8
- package/dist/cli/shared/bornRepo.d.ts +50 -0
- package/dist/cli/shared/bornRepo.js +199 -0
- package/dist/cli/shared/errorCatalog.d.ts +130 -0
- package/dist/cli/shared/errorCatalog.js +148 -0
- package/dist/cli/shared/mcpConfig/cc.d.ts +25 -0
- package/dist/cli/shared/mcpConfig/cc.js +156 -0
- package/dist/cli/shared/mcpConfig/kiro.d.ts +53 -0
- package/dist/cli/shared/mcpConfig/kiro.js +140 -0
- package/dist/cli/shared/mcpDataRoots.d.ts +88 -1
- package/dist/cli/shared/mcpDataRoots.js +76 -2
- package/dist/cli/shared/transforms.d.ts +64 -0
- package/dist/cli/shared/transforms.js +138 -0
- package/dist/cli/shared/vocabulary.d.ts +50 -0
- package/dist/cli/shared/vocabulary.js +62 -0
- package/dist/cli/sync/Applier.d.ts +25 -26
- package/dist/cli/sync/Applier.js +37 -73
- package/dist/cli/sync/Classifier.d.ts +70 -6
- package/dist/cli/sync/Classifier.js +123 -84
- package/dist/cli/sync/FileScanner.d.ts +19 -10
- package/dist/cli/sync/FileScanner.js +33 -25
- package/dist/cli/sync/KeyGrain.d.ts +106 -0
- package/dist/cli/sync/KeyGrain.js +301 -0
- package/dist/cli/sync/Manifest.d.ts +147 -12
- package/dist/cli/sync/Manifest.js +276 -21
- package/dist/cli/sync/Migration.d.ts +271 -0
- package/dist/cli/sync/Migration.js +764 -0
- package/dist/cli/sync/NameContract.d.ts +169 -0
- package/dist/cli/sync/NameContract.js +246 -0
- package/dist/cli/sync/RegionGrain.d.ts +118 -0
- package/dist/cli/sync/RegionGrain.js +167 -0
- package/dist/cli/sync/Reporter.d.ts +33 -4
- package/dist/cli/sync/Reporter.js +112 -53
- package/dist/cli/sync/SteeringDirCheck.d.ts +32 -4
- package/dist/cli/sync/SteeringDirCheck.js +62 -14
- package/dist/cli/sync/index.d.ts +125 -6
- package/dist/cli/sync/index.js +716 -66
- package/dist/color/OklchValidator.d.ts +43 -3
- package/dist/color/OklchValidator.js +46 -8
- package/dist/components/core/Button-CTA/Button-CTA.refs.d.ts +83 -0
- package/dist/components/core/Button-CTA/Button-CTA.refs.js +86 -0
- package/dist/components/core/Button-CTA/Button-CTA.tokens.d.ts +20 -10
- package/dist/components/core/Button-CTA/Button-CTA.tokens.js +21 -10
- package/dist/components/core/Button-CTA/index.d.ts +2 -2
- package/dist/components/core/Button-CTA/index.js +3 -3
- package/dist/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.d.ts +11 -30
- package/dist/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.js +16 -49
- package/dist/components/core/Container-Base/Container-Base.refs.d.ts +181 -0
- package/dist/components/core/Container-Base/Container-Base.refs.js +223 -0
- package/dist/components/core/Container-Base/index.d.ts +2 -2
- package/dist/components/core/Container-Base/index.js +10 -10
- package/dist/components/core/Container-Base/platforms/web/ContainerBase.web.js +1 -1
- package/dist/components/core/Container-Base/platforms/web/token-mapping.d.ts +27 -9
- package/dist/components/core/Container-Base/platforms/web/token-mapping.js +50 -22
- package/dist/components/core/Container-Card-Base/Container-Card-Base.refs.d.ts +149 -0
- package/dist/components/core/Container-Card-Base/Container-Card-Base.refs.js +207 -0
- package/dist/components/core/Container-Card-Base/index.d.ts +1 -1
- package/dist/components/core/Container-Card-Base/index.js +19 -19
- package/dist/components/core/Container-Card-Base/platforms/web/ContainerCardBase.web.js +7 -6
- package/dist/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.d.ts +15 -0
- package/dist/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.js +41 -1
- package/dist/components/core/Input-Text-Base/Input-Text-Base.refs.d.ts +331 -0
- package/dist/components/core/Input-Text-Base/Input-Text-Base.refs.js +164 -0
- package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.web.js +1 -1
- package/dist/components/core/Input-Text-Email/Input-Text-Email.refs.d.ts +20 -0
- package/dist/components/core/Input-Text-Email/Input-Text-Email.refs.js +34 -0
- package/dist/components/core/Input-Text-Password/Input-Text-Password.refs.d.ts +20 -0
- package/dist/components/core/Input-Text-Password/Input-Text-Password.refs.js +34 -0
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.d.ts +30 -0
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.js +72 -3
- package/dist/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.refs.d.ts +20 -0
- package/dist/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.refs.js +34 -0
- package/dist/consumer-canonical/agents/ada.md +331 -0
- package/dist/consumer-canonical/agents/data.md +429 -0
- package/dist/consumer-canonical/agents/kenya.md +400 -0
- package/dist/consumer-canonical/agents/leonardo.md +524 -0
- package/dist/consumer-canonical/agents/lina.md +501 -0
- package/dist/consumer-canonical/agents/sparky.md +395 -0
- package/dist/consumer-canonical/agents/stacy.md +515 -0
- package/dist/consumer-canonical/agents/thurgood.md +463 -0
- package/dist/consumer-canonical/always-set/agent-directory.dispositions.yaml +21 -0
- package/dist/consumer-canonical/always-set/agent-directory.overlay.md +51 -0
- package/dist/consumer-canonical/always-set/ai-collaboration-principles.dispositions.yaml +15 -0
- package/dist/consumer-canonical/always-set/ai-collaboration-principles.overlay.md +26 -0
- package/dist/consumer-canonical/always-set/civitas-system-overview.dispositions.yaml +15 -0
- package/dist/consumer-canonical/always-set/civitas-system-overview.overlay.md +70 -0
- package/dist/consumer-canonical/always-set/core-goals.dispositions.yaml +9 -0
- package/dist/consumer-canonical/always-set/core-goals.overlay.md +74 -0
- package/dist/consumer-canonical/always-set/designerpunk-systems-overview.dispositions.yaml +16 -0
- package/dist/consumer-canonical/always-set/designerpunk-systems-overview.overlay.md +44 -0
- package/dist/consumer-canonical/always-set/spec-feedback-protocol.dispositions.yaml +21 -0
- package/dist/consumer-canonical/always-set/spec-feedback-protocol.overlay.md +44 -0
- package/dist/consumer-canonical/always-set/start-up-tasks.dispositions.yaml +15 -0
- package/dist/consumer-canonical/always-set/start-up-tasks.overlay.md +25 -0
- package/dist/consumer-canonical/always-set/task-completion-protocol.dispositions.yaml +19 -0
- package/dist/consumer-canonical/always-set/task-completion-protocol.overlay.md +116 -0
- package/dist/consumer-canonical/consumer-profile.yaml +9 -0
- package/dist/consumer-canonical/shared/always-set.yaml +113 -0
- package/dist/consumer-canonical/shared/field-dispositions.yaml +85 -0
- package/dist/consumer-canonical/shared/shared-catalog.yaml +19 -0
- package/dist/consumer-canonical/shared/skills-map.yaml +33 -0
- package/dist/consumer-canonical/skills/adaptive/SKILL.md +301 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +112 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +69 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +81 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +170 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +238 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +51 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +73 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +168 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +329 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/tooling/debug.md +114 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/dist/consumer-canonical/skills/edge-to-edge/SKILL.md +426 -0
- package/dist/consumer-canonical/skills/impeccable/SKILL.md +237 -0
- package/dist/consumer-canonical/skills/impeccable/detector-exclusions.md +42 -0
- package/dist/consumer-canonical/skills/impeccable/reference/adapt.md +190 -0
- package/dist/consumer-canonical/skills/impeccable/reference/animate.md +194 -0
- package/dist/consumer-canonical/skills/impeccable/reference/audit.md +150 -0
- package/dist/consumer-canonical/skills/impeccable/reference/bolder.md +113 -0
- package/dist/consumer-canonical/skills/impeccable/reference/brand-dp.md +103 -0
- package/dist/consumer-canonical/skills/impeccable/reference/clarify.md +174 -0
- package/dist/consumer-canonical/skills/impeccable/reference/codex.md +105 -0
- package/dist/consumer-canonical/skills/impeccable/reference/cognitive-load.md +106 -0
- package/dist/consumer-canonical/skills/impeccable/reference/color-and-contrast.md +122 -0
- package/dist/consumer-canonical/skills/impeccable/reference/colorize.md +155 -0
- package/dist/consumer-canonical/skills/impeccable/reference/craft.md +123 -0
- package/dist/consumer-canonical/skills/impeccable/reference/critique.md +245 -0
- package/dist/consumer-canonical/skills/impeccable/reference/delight.md +302 -0
- package/dist/consumer-canonical/skills/impeccable/reference/distill.md +111 -0
- package/dist/consumer-canonical/skills/impeccable/reference/extract-dp.md +43 -0
- package/dist/consumer-canonical/skills/impeccable/reference/harden.md +347 -0
- package/dist/consumer-canonical/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/dist/consumer-canonical/skills/impeccable/reference/interaction-design.md +195 -0
- package/dist/consumer-canonical/skills/impeccable/reference/layout.md +141 -0
- package/dist/consumer-canonical/skills/impeccable/reference/live.md +622 -0
- package/dist/consumer-canonical/skills/impeccable/reference/motion-design.md +109 -0
- package/dist/consumer-canonical/skills/impeccable/reference/onboard.md +234 -0
- package/dist/consumer-canonical/skills/impeccable/reference/optimize.md +258 -0
- package/dist/consumer-canonical/skills/impeccable/reference/overdrive.md +130 -0
- package/dist/consumer-canonical/skills/impeccable/reference/personas.md +179 -0
- package/dist/consumer-canonical/skills/impeccable/reference/polish.md +242 -0
- package/dist/consumer-canonical/skills/impeccable/reference/product-dp.md +79 -0
- package/dist/consumer-canonical/skills/impeccable/reference/quieter.md +99 -0
- package/dist/consumer-canonical/skills/impeccable/reference/responsive-design.md +114 -0
- package/dist/consumer-canonical/skills/impeccable/reference/shape.md +165 -0
- package/dist/consumer-canonical/skills/impeccable/reference/spatial-design.md +100 -0
- package/dist/consumer-canonical/skills/impeccable/reference/typeset.md +126 -0
- package/dist/consumer-canonical/skills/impeccable/reference/typography.md +159 -0
- package/dist/consumer-canonical/skills/impeccable/reference/ux-writing.md +107 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detect.mjs +21 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/browser/injected/index.mjs +1725 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/cli/main.mjs +244 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +4567 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +252 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +535 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +986 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +208 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/findings.mjs +12 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/registry/antipatterns.mjs +419 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/rules/checks.mjs +2316 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/color.mjs +156 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/dist/consumer-canonical/skills/navigation-3/SKILL.md +110 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/index.md +38 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md +498 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md +147 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md +89 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +85 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +90 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +195 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md +200 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md +230 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-advanced.md +155 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-basic.md +744 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md +107 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +145 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +283 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +287 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +436 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +371 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md +272 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md +266 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +435 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +244 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/type-safe-destinations.md +129 -0
- package/dist/consumer-canonical/skills/theming-styles/SKILL.md +220 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/designsystems/custom.md +459 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/fundamentals.md +420 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/state-animations.md +461 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +48 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/theming.md +257 -0
- package/dist/generator/consumer-entry.js +5939 -0
- package/dist/generators/DTCGFormatGenerator.d.ts +14 -4
- package/dist/generators/DTCGFormatGenerator.js +35 -18
- package/dist/generators/TokenFileGenerator.js +13 -13
- package/dist/generators/generateTokenIndex.d.ts +14 -0
- package/dist/generators/generateTokenIndex.js +23 -0
- package/dist/generators/transformers/FigmaTransformer.d.ts +35 -0
- package/dist/generators/transformers/FigmaTransformer.js +101 -13
- package/dist/generators/types/DTCGTypes.d.ts +10 -0
- package/dist/mcp/application-mcp.js +1062 -261
- package/dist/mcp/docs-mcp.js +93 -13
- package/dist/mcp/product-mcp.js +539 -41
- package/dist/mcp/tool-manifest.json +184 -0
- package/dist/name-contract.json +4283 -0
- package/dist/tokens/BlurTokens.d.ts +3 -1
- package/dist/tokens/BlurTokens.js +6 -4
- package/dist/tokens/ShadowOffsetTokens.js +14 -14
- package/dist/tokens/SizingTokens.js +3 -3
- package/dist/tokens/TapAreaTokens.d.ts +13 -2
- package/dist/tokens/TapAreaTokens.js +19 -8
- package/dist/tokens/semantic/ColorTokens.js +50 -5
- package/dist/tokens/semantic/TypographyTokens.js +10 -10
- package/dist/tokens/themes/dark/SemanticOverrides.js +21 -4
- package/dist/tools/integrity/Invariants.d.ts +23 -8
- package/dist/tools/integrity/Invariants.js +27 -8
- package/dist/tools/integrity/cli/run-audit.js +1 -1
- package/dist/types/PrimitiveToken.d.ts +15 -1
- package/dist/types/generated/TokenTypes.d.ts +1 -1
- package/dist/types/generated/TokenTypes.js +1 -1
- package/dist/types/index.d.ts +1 -0
- package/governance/AI-Collaboration-Framework.md +19 -10
- package/governance/Component-Family-Navigation.md +2 -2
- package/governance/DTCG-Integration-Guide.md +63 -36
- package/governance/DesignerPunk-Integration-Guide.md +57 -61
- package/governance/Figma-Workflow-Guide.md +15 -8
- package/governance/Process-Integration-Methodology.md +5 -5
- package/governance/Process-Spec-Planning.md +179 -54
- package/governance/Product-Handoff-Protocol.md +27 -2
- package/governance/Test-Behavioral-Contract-Validation.md +5 -0
- package/governance/Test-Development-Standards.md +4 -4
- package/governance/Token-Family-Accessibility.md +18 -14
- package/governance/Token-Family-Blend.md +5 -4
- package/governance/Token-Family-Blur.md +8 -8
- package/governance/Token-Family-Color.md +40 -22
- package/governance/Token-Family-Glow.md +26 -24
- package/governance/Token-Family-Layering.md +1 -0
- package/governance/Token-Family-Motion.md +22 -13
- package/governance/Token-Family-Opacity.md +20 -34
- package/governance/Token-Family-Radius.md +4 -2
- package/governance/Token-Family-Responsive.md +4 -4
- package/governance/Token-Family-Shadow.md +69 -46
- package/governance/Token-Family-Spacing.md +22 -12
- package/governance/Token-Family-Typography.md +86 -85
- package/governance/Token-Governance.md +5 -1
- package/governance/Token-Quick-Reference.md +67 -63
- package/governance/Transformer-Development-Guide.md +5 -4
- package/governance/classification-map.md +597 -7
- package/governance/completion-documentation-guide.md +284 -2
- package/governance/platform-implementation-guidelines.md +2 -1
- package/mcp-server/src/index.ts +16 -12
- package/mcp-server/src/relocation-integrity-gate/__tests__/relocation-integrity-gate.test.ts +3 -3
- package/mcp-server/src/relocation-integrity-gate/relocation-integrity-gate.ts +70 -49
- package/mcp-server/src/tools/find-docs.ts +1 -0
- package/mcp-server/src/tools/get-document-full.ts +1 -0
- package/mcp-server/src/tools/get-document-summary.ts +1 -0
- package/mcp-server/src/tools/get-index-health.ts +1 -0
- package/mcp-server/src/tools/get-section.ts +1 -0
- package/mcp-server/src/tools/list-cross-references.ts +1 -0
- package/mcp-server/src/tools/rebuild-index.ts +1 -0
- package/mcp-server/src/tools/validate-metadata.ts +1 -0
- package/package.json +75 -11
- package/src/cli/templates/mcp-config.json.template +15 -20
- package/src/components/core/Avatar-Base/platforms/android/AvatarPreview.kt +9 -2
- package/src/components/core/Container-Base/Container-Base.schema.yaml +9 -11
- package/src/components/core/Container-Base/platforms/android/ContainerBase.android.kt +5 -5
- package/src/components/core/Container-Base/platforms/ios/ContainerBase.ios.swift +5 -5
- package/src/components/core/Container-Card-Base/platforms/android/ContainerCardBase.android.kt +3 -3
- package/src/components/core/Container-Card-Base/platforms/ios/ContainerCardBase.ios.swift +2 -2
- package/src/components/core/Nav-Header-App/contracts.yaml +1 -1
- package/src/components/core/Nav-Header-Base/component-meta.yaml +0 -1
- package/src/components/core/Nav-Header-Base/contracts.yaml +1 -1
- package/src/components/core/Nav-Header-Page/contracts.yaml +1 -1
- package/src/components/core/Nav-TabBar-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Bar-Base/contracts.yaml +1 -1
- package/src/tokens/BlurTokens.ts +6 -4
- package/src/tokens/ShadowOffsetTokens.ts +14 -14
- package/src/tokens/SizingTokens.ts +3 -3
- package/src/tokens/TapAreaTokens.ts +20 -8
- package/src/tokens/__tests__/BaselineGridAlignmentFlag.test.ts +116 -0
- package/src/tokens/__tests__/BlurTokens.test.ts +10 -2
- package/src/tokens/__tests__/SemanticColorContrast.test.ts +339 -0
- package/src/tokens/__tests__/ShadowOffsetTokens.test.ts +8 -7
- package/src/tokens/__tests__/SizingTokens.test.ts +10 -2
- package/src/tokens/__tests__/TokenCategories.test.ts +1 -1
- package/src/tokens/__tests__/neutral-partition.test.ts +28 -0
- package/src/tokens/semantic/AccessibilityTokens.README.md +2 -2
- package/src/tokens/semantic/ColorTokens.ts +50 -5
- package/src/tokens/semantic/TypographyTokens.ts +10 -10
- package/src/tokens/semantic/__tests__/ColorTokens.test.ts +8 -4
- package/src/tokens/themes/dark/SemanticOverrides.ts +23 -4
- package/src/types/PrimitiveToken.ts +15 -1
- package/token-index/meta.json +3 -0
- package/token-index/semantics.yaml +21 -15
- package/.kiro/agents/ada-prompt.md +0 -213
- package/.kiro/agents/ada-prompt.md.attribution.json +0 -45
- package/.kiro/agents/ada.json +0 -72
- package/.kiro/agents/ada.json.attribution.json +0 -13
- package/.kiro/agents/data-prompt.md +0 -324
- package/.kiro/agents/data-prompt.md.attribution.json +0 -53
- package/.kiro/agents/data.json +0 -51
- package/.kiro/agents/data.json.attribution.json +0 -13
- package/.kiro/agents/kenya-prompt.md +0 -309
- package/.kiro/agents/kenya-prompt.md.attribution.json +0 -53
- package/.kiro/agents/kenya.json +0 -46
- package/.kiro/agents/kenya.json.attribution.json +0 -13
- package/.kiro/agents/leonardo-prompt.md +0 -359
- package/.kiro/agents/leonardo-prompt.md.attribution.json +0 -45
- package/.kiro/agents/leonardo.json +0 -47
- package/.kiro/agents/leonardo.json.attribution.json +0 -13
- package/.kiro/agents/lina-prompt.md +0 -344
- package/.kiro/agents/lina-prompt.md.attribution.json +0 -53
- package/.kiro/agents/lina.json +0 -64
- package/.kiro/agents/lina.json.attribution.json +0 -13
- package/.kiro/agents/sparky-prompt.md +0 -312
- package/.kiro/agents/sparky-prompt.md.attribution.json +0 -53
- package/.kiro/agents/sparky.json +0 -56
- package/.kiro/agents/sparky.json.attribution.json +0 -13
- package/.kiro/agents/stacy-prompt.md +0 -304
- package/.kiro/agents/stacy-prompt.md.attribution.json +0 -45
- package/.kiro/agents/stacy.json +0 -46
- package/.kiro/agents/stacy.json.attribution.json +0 -13
- package/.kiro/agents/thurgood-prompt.md +0 -363
- package/.kiro/agents/thurgood-prompt.md.attribution.json +0 -45
- package/.kiro/agents/thurgood.json +0 -47
- package/.kiro/agents/thurgood.json.attribution.json +0 -13
- package/.kiro/steering/personal-note.md +0 -35
- package/designerpunk.config.ts +0 -27
- package/dist/android/DesignTokens.android.kt +0 -695
- package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.d.ts +0 -26
- package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.js +0 -224
- package/dist/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.d.ts +0 -30
- package/dist/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.js +0 -254
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.d.ts +0 -44
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.js +0 -376
- package/dist/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.d.ts +0 -38
- package/dist/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.js +0 -328
- package/dist/ios/DesignTokens.ios.swift +0 -697
- package/dist/web/DesignTokens.web.css +0 -929
- package/product-template/agents/README.md +0 -73
- package/product-template/agents/ada-prompt.md +0 -83
- package/product-template/agents/data-prompt.md +0 -74
- package/product-template/agents/kenya-prompt.md +0 -74
- package/product-template/agents/leonardo-prompt.md +0 -99
- package/product-template/agents/lina-prompt.md +0 -61
- package/product-template/agents/sparky-prompt.md +0 -66
- package/product-template/agents/stacy-prompt.md +0 -51
- package/product-template/agents/thurgood-prompt.md +0 -64
- package/src/TokenEngine.ts +0 -628
- package/src/__tests__/BuildSystemIntegration.test.ts +0 -485
- package/src/__tests__/ProductMCPIntegration.test.ts +0 -204
- package/src/__tests__/__mocks__/styleMock.js +0 -18
- package/src/__tests__/browser-distribution/build-error-handling.test.ts +0 -143
- package/src/__tests__/browser-distribution/bundle-loading.test.ts +0 -353
- package/src/__tests__/browser-distribution/bundler-resolution.test.ts +0 -223
- package/src/__tests__/browser-distribution/component-registration.test.ts +0 -217
- package/src/__tests__/browser-distribution/css-bundling.test.ts +0 -233
- package/src/__tests__/browser-distribution/demo-system.test.ts +0 -588
- package/src/__tests__/browser-distribution/mcp-format-compliance.property.test.ts +0 -379
- package/src/__tests__/browser-distribution/mcp-queryability.test.ts +0 -342
- package/src/__tests__/browser-distribution/minification-effectiveness.property.test.ts +0 -188
- package/src/__tests__/browser-distribution/registration-idempotency.property.test.ts +0 -372
- package/src/__tests__/browser-distribution/soft-ceiling-warning.test.ts +0 -161
- package/src/__tests__/browser-distribution/token-completeness.property.test.ts +0 -412
- package/src/__tests__/browser-distribution/token-loading.test.ts +0 -344
- package/src/__tests__/browser-distribution/umd-bundle-loading.test.ts +0 -169
- package/src/__tests__/console-allowlist.json +0 -14
- package/src/__tests__/console-fail-setup.ts +0 -169
- package/src/__tests__/examples/improved-test-example.test.ts +0 -120
- package/src/__tests__/expected-exports.json +0 -66
- package/src/__tests__/export-contracts.test.ts +0 -83
- package/src/__tests__/fixtures/acknowledged-differences.json +0 -127
- package/src/__tests__/fixtures/acknowledged-differences.schema.json +0 -113
- package/src/__tests__/fixtures/acknowledged-differences.types.ts +0 -230
- package/src/__tests__/fixtures/tokenFixtures.ts +0 -248
- package/src/__tests__/helpers/configModuleLoader.ts +0 -20
- package/src/__tests__/helpers/tsModuleLoader.ts +0 -24
- package/src/__tests__/helpers/web-component-test-utils.ts +0 -39
- package/src/__tests__/integration/BlendCrossPlatformConsistency.test.ts +0 -505
- package/src/__tests__/integration/BuildSystemCompatibility.test.ts +0 -551
- package/src/__tests__/integration/CrossPlatformConsistency.test.ts +0 -855
- package/src/__tests__/integration/EndToEndWorkflow.test.ts +0 -601
- package/src/__tests__/integration/ErrorHandling.test.ts +0 -459
- package/src/__tests__/integration/OpacityPlatformTranslation.test.ts +0 -364
- package/src/__tests__/integration/PerformanceValidation.test.ts +0 -887
- package/src/__tests__/integration/SemanticTokenGeneration.test.ts +0 -451
- package/src/__tests__/integration/Spec107-DesignLanguageContext.test.ts +0 -139
- package/src/__tests__/integration/TokenSystemIntegration.test.ts +0 -890
- package/src/__tests__/integration/ValidationPipeline.test.ts +0 -404
- package/src/__tests__/package-drift-validation.test.ts +0 -249
- package/src/__tests__/performance/GenerationPerformance.test.ts +0 -409
- package/src/__tests__/performance/OptimizationValidation.test.ts +0 -509
- package/src/__tests__/platform-parity/ProgressPlatformParity.test.ts +0 -546
- package/src/__tests__/spec073-opacity-architecture.test.ts +0 -344
- package/src/__tests__/stemma-system/behavioral-contract-validation.test.ts +0 -520
- package/src/__tests__/stemma-system/composition-compliance-validation.test.ts +0 -162
- package/src/__tests__/stemma-system/contract-catalog-name-validation.test.ts +0 -184
- package/src/__tests__/stemma-system/contract-existence-validation.test.ts +0 -43
- package/src/__tests__/stemma-system/contract-test-reporter.ts +0 -269
- package/src/__tests__/stemma-system/cross-platform-consistency.test.ts +0 -564
- package/src/__tests__/stemma-system/form-inputs-contracts.test.ts +0 -710
- package/src/__tests__/stemma-system/input-text-native-base-call-alignment.test.ts +0 -298
- package/src/__tests__/stemma-system/mcp-component-integration.test.ts +0 -445
- package/src/analytics/PrimitiveTokenFallbackTracker.ts +0 -228
- package/src/analytics/SemanticTokenUsageTracker.ts +0 -193
- package/src/analytics/StrategicFlexibilityTracker.ts +0 -226
- package/src/analytics/TokenUsageTracker.ts +0 -177
- package/src/analytics/UsagePatternAnalyzer.ts +0 -177
- package/src/analytics/__tests__/UsageTracking.test.ts +0 -647
- package/src/analytics/index.ts +0 -42
- package/src/assets/fonts/__tests__/androidFontLoadingValidation.test.ts +0 -600
- package/src/assets/fonts/__tests__/fontLoading.test.ts +0 -341
- package/src/assets/fonts/__tests__/iosFontConfiguration.test.ts +0 -256
- package/src/assets/fonts/__tests__/iosFontLoadingValidation.test.ts +0 -465
- package/src/assets/fonts/inter/Inter-Bold.ttf +0 -0
- package/src/assets/fonts/inter/Inter-Bold.woff2 +0 -0
- package/src/assets/fonts/inter/Inter-Medium.ttf +0 -0
- package/src/assets/fonts/inter/Inter-Medium.woff2 +0 -0
- package/src/assets/fonts/inter/Inter-Regular.ttf +0 -0
- package/src/assets/fonts/inter/Inter-Regular.woff2 +0 -0
- package/src/assets/fonts/inter/Inter-SemiBold.ttf +0 -0
- package/src/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
- package/src/assets/fonts/inter/inter.css +0 -49
- package/src/blend/BlendCalculator.ts +0 -120
- package/src/blend/ColorSpaceUtils.ts +0 -325
- package/src/blend/OklchBlendCalculator.ts +0 -82
- package/src/blend/ThemeAwareBlendUtilities.web.ts +0 -323
- package/src/blend/__tests__/BlendCalculator.test.ts +0 -393
- package/src/blend/__tests__/BlendUtilities.property.test.ts +0 -600
- package/src/blend/__tests__/ColorSpaceUtils.test.ts +0 -885
- package/src/blend/__tests__/InteractionStateAudit.test.ts +0 -238
- package/src/blend/__tests__/OklchBlendCalculator.test.ts +0 -134
- package/src/blend/__tests__/ThemeAwareBlendUtilities.test.ts +0 -200
- package/src/blend/__tests__/ThemeSwitching.test.ts +0 -508
- package/src/blend/index.ts +0 -37
- package/src/browser-entry.ts +0 -270
- package/src/build/.gitkeep +0 -1
- package/src/build/BuildOrchestrator.ts +0 -663
- package/src/build/__tests__/AndroidBuildIntegration.test.ts +0 -437
- package/src/build/__tests__/AndroidMotionTokenGeneration.test.ts +0 -256
- package/src/build/__tests__/BuildOrchestrator.test.ts +0 -562
- package/src/build/__tests__/MotionTokenCrossPlatformIntegration.test.ts +0 -424
- package/src/build/__tests__/WebCSSTokenGeneration.test.ts +0 -271
- package/src/build/__tests__/WebMotionTokenGeneration.test.ts +0 -305
- package/src/build/__tests__/WebNPMPackageStructure.test.ts +0 -447
- package/src/build/__tests__/iOSMotionTokenGeneration.test.ts +0 -298
- package/src/build/errors/BuildError.ts +0 -140
- package/src/build/errors/ErrorDocumentation.ts +0 -638
- package/src/build/errors/ErrorHandler.ts +0 -406
- package/src/build/errors/ErrorReporter.ts +0 -573
- package/src/build/errors/PlatformGenerationError.ts +0 -201
- package/src/build/errors/README.md +0 -486
- package/src/build/errors/RecoveryStrategy.ts +0 -393
- package/src/build/errors/TokenGenerationError.ts +0 -196
- package/src/build/errors/TokenReferenceError.ts +0 -204
- package/src/build/errors/__tests__/BuildError.test.ts +0 -212
- package/src/build/errors/__tests__/ErrorDocumentation.example.ts +0 -272
- package/src/build/errors/__tests__/ErrorDocumentation.test.ts +0 -458
- package/src/build/errors/__tests__/ErrorHandler.integration.test.ts +0 -303
- package/src/build/errors/__tests__/ErrorHandler.test.ts +0 -502
- package/src/build/errors/__tests__/ErrorReporter.test.ts +0 -581
- package/src/build/errors/__tests__/MotionTokenErrors.test.ts +0 -392
- package/src/build/errors/__tests__/RecoveryStrategy.test.ts +0 -643
- package/src/build/errors/index.ts +0 -90
- package/src/build/index.ts +0 -73
- package/src/build/orchestration/IncrementalBuilder.ts +0 -532
- package/src/build/orchestration/ParallelExecutor.ts +0 -336
- package/src/build/orchestration/ProgressTracker.ts +0 -582
- package/src/build/orchestration/SequentialExecutor.ts +0 -305
- package/src/build/orchestration/__tests__/IncrementalBuilder.test.ts +0 -354
- package/src/build/orchestration/__tests__/ParallelExecutor.integration.test.ts +0 -295
- package/src/build/orchestration/__tests__/ParallelExecutor.test.ts +0 -493
- package/src/build/orchestration/__tests__/ProgressTracker.test.ts +0 -529
- package/src/build/orchestration/__tests__/SequentialExecutor.integration.test.ts +0 -202
- package/src/build/orchestration/__tests__/SequentialExecutor.test.ts +0 -232
- package/src/build/orchestration/index.ts +0 -35
- package/src/build/platforms/.gitkeep +0 -1
- package/src/build/platforms/AndroidBuilder.ts +0 -1366
- package/src/build/platforms/AndroidShadowGenerator.ts +0 -394
- package/src/build/platforms/IOSShadowGenerator.ts +0 -324
- package/src/build/platforms/PlatformBuilder.ts +0 -131
- package/src/build/platforms/WebBuilder.ts +0 -1414
- package/src/build/platforms/WebShadowGenerator.ts +0 -288
- package/src/build/platforms/__tests__/AndroidBuilder.tokenGeneration.test.ts +0 -146
- package/src/build/platforms/__tests__/AndroidShadowGenerator.test.ts +0 -195
- package/src/build/platforms/__tests__/IOSShadowGenerator.test.ts +0 -156
- package/src/build/platforms/__tests__/WebShadowGenerator.test.ts +0 -123
- package/src/build/platforms/__tests__/iOSBuilder.test.ts +0 -1599
- package/src/build/platforms/iOSBuilder.ts +0 -1746
- package/src/build/platforms/index.ts +0 -9
- package/src/build/product/ProductTokenGenerator.ts +0 -162
- package/src/build/product/TokenIndexReader.ts +0 -78
- package/src/build/product/__tests__/KotlinEmitter.test.ts +0 -109
- package/src/build/product/__tests__/ProductTokenGenerator.test.ts +0 -135
- package/src/build/product/__tests__/SwiftEmitter.test.ts +0 -90
- package/src/build/product/__tests__/TokenIndexReader.test.ts +0 -85
- package/src/build/product/__tests__/WebEmitter.test.ts +0 -111
- package/src/build/product/__tests__/fixtures/tokens/layout.yaml +0 -21
- package/src/build/product/__tests__/fixtures/tokens/motion.yaml +0 -11
- package/src/build/product/__tests__/fixtures/tokens/visualization.yaml +0 -8
- package/src/build/product/emitters/KotlinEmitter.ts +0 -83
- package/src/build/product/emitters/SwiftEmitter.ts +0 -95
- package/src/build/product/emitters/WebEmitter.ts +0 -69
- package/src/build/tokens/.gitkeep +0 -1
- package/src/build/tokens/__tests__/ClassInvariantGuard.test.ts +0 -167
- package/src/build/tokens/__tests__/ComponentTokenGenerator.test.ts +0 -285
- package/src/build/tokens/__tests__/TokenIntegrator.test.ts +0 -319
- package/src/build/tokens/__tests__/TokenSelector.test.ts +0 -264
- package/src/build/tokens/__tests__/UnitConverter.applyScaleWithRounding.test.ts +0 -160
- package/src/build/tokens/__tests__/UnitConverter.test.ts +0 -331
- package/src/build/tokens/__tests__/brand-dual-instance.test.ts +0 -135
- package/src/build/tokens/__tests__/defineComponentTokens.test.ts +0 -553
- package/src/build/types/.gitkeep +0 -1
- package/src/build/types/BuildConfig.ts +0 -123
- package/src/build/types/BuildOrchestrator.ts +0 -114
- package/src/build/types/BuildResult.ts +0 -125
- package/src/build/types/index.ts +0 -39
- package/src/build/validation/.gitkeep +0 -1
- package/src/build/validation/AndroidBuildValidator.ts +0 -630
- package/src/build/validation/CrossPlatformValidationReporter.ts +0 -1267
- package/src/build/validation/InterfaceContractValidator.ts +0 -417
- package/src/build/validation/InterfaceValidator.ts +0 -326
- package/src/build/validation/MathematicalConsistencyValidator.ts +0 -874
- package/src/build/validation/MethodSignatureValidator.ts +0 -374
- package/src/build/validation/PropertyTypeValidator.ts +0 -312
- package/src/build/validation/TokenComparator.ts +0 -796
- package/src/build/validation/ValidationReporter.example.ts +0 -310
- package/src/build/validation/ValidationReporter.ts +0 -745
- package/src/build/validation/WebBuildValidator.ts +0 -583
- package/src/build/validation/__tests__/AndroidBuildValidator.test.ts +0 -522
- package/src/build/validation/__tests__/CrossPlatformValidationReporter.test.ts +0 -593
- package/src/build/validation/__tests__/InterfaceContractValidator.test.ts +0 -647
- package/src/build/validation/__tests__/InterfaceValidation.functional.test.ts +0 -360
- package/src/build/validation/__tests__/InterfaceValidator.test.ts +0 -318
- package/src/build/validation/__tests__/MethodSignatureValidator.test.ts +0 -625
- package/src/build/validation/__tests__/MotionTokenCrossPlatformValidation.test.ts +0 -305
- package/src/build/validation/__tests__/MotionTokenValidation.test.ts +0 -309
- package/src/build/validation/__tests__/PropertyTypeValidator.test.ts +0 -557
- package/src/build/validation/__tests__/TokenComparator.test.ts +0 -358
- package/src/build/validation/__tests__/ValidationReporter.integration.test.ts +0 -424
- package/src/build/validation/__tests__/ValidationReporter.test.ts +0 -793
- package/src/build/validation/__tests__/WebBuildValidator.test.ts +0 -495
- package/src/build/validation/iOSBuildValidator.ts +0 -783
- package/src/build/validation/index.ts +0 -74
- package/src/build/validation/types/InterfaceDefinition.ts +0 -101
- package/src/build/validation/types/ValidationResult.ts +0 -114
- package/src/build/workflow/BuildMode.ts +0 -336
- package/src/build/workflow/CICDIntegration.ts +0 -503
- package/src/build/workflow/ConfigHelpers.example.ts +0 -317
- package/src/build/workflow/ConfigHelpers.ts +0 -834
- package/src/build/workflow/README.md +0 -327
- package/src/build/workflow/SourceMapGenerator.ts +0 -362
- package/src/build/workflow/__tests__/BuildMode.test.ts +0 -544
- package/src/build/workflow/__tests__/CICDIntegration.test.ts +0 -602
- package/src/build/workflow/__tests__/ConfigHelpers.test.ts +0 -559
- package/src/build/workflow/__tests__/SourceMapGenerator.test.ts +0 -421
- package/src/build/workflow/index.ts +0 -42
- package/src/cli/__tests__/Applier.test.ts +0 -202
- package/src/cli/__tests__/Classifier.test.ts +0 -187
- package/src/cli/__tests__/FileScanner.test.ts +0 -108
- package/src/cli/__tests__/IgnoreFilter.test.ts +0 -92
- package/src/cli/__tests__/Manifest.test.ts +0 -107
- package/src/cli/__tests__/PackageResolver.test.ts +0 -66
- package/src/cli/__tests__/Prompter.test.ts +0 -165
- package/src/cli/__tests__/Reporter.test.ts +0 -128
- package/src/cli/__tests__/backward-compat.test.ts +0 -142
- package/src/cli/__tests__/figma-extract.test.ts +0 -342
- package/src/cli/__tests__/figma-push.test.ts +0 -350
- package/src/cli/__tests__/init.test.ts +0 -293
- package/src/cli/__tests__/loadComponentTokens.test.ts +0 -187
- package/src/cli/__tests__/pipeline-independence.test.ts +0 -127
- package/src/cli/__tests__/product-only.test.ts +0 -130
- package/src/cli/__tests__/resolveTokens.test.ts +0 -88
- package/src/cli/__tests__/staleness.test.ts +0 -132
- package/src/cli/__tests__/sync.test.ts +0 -199
- package/src/cli/__tests__/validate.test.ts +0 -69
- package/src/cli/designerpunk.ts +0 -410
- package/src/cli/figma-extract.ts +0 -331
- package/src/cli/figma-push.ts +0 -288
- package/src/cli/generateProductTokens.ts +0 -69
- package/src/cli/init.ts +0 -481
- package/src/cli/loadComponentTokens.ts +0 -145
- package/src/cli/resolveTokens.ts +0 -123
- package/src/cli/shared/mcpDataRoots.ts +0 -122
- package/src/cli/shared/resolvePackageRoot.ts +0 -58
- package/src/cli/shared/transforms.ts +0 -18
- package/src/cli/staleness.ts +0 -81
- package/src/cli/sync/Applier.ts +0 -128
- package/src/cli/sync/Classifier.ts +0 -130
- package/src/cli/sync/FileScanner.ts +0 -64
- package/src/cli/sync/IgnoreFilter.ts +0 -44
- package/src/cli/sync/Manifest.ts +0 -64
- package/src/cli/sync/PackageResolver.ts +0 -40
- package/src/cli/sync/Prompter.ts +0 -173
- package/src/cli/sync/Reporter.ts +0 -78
- package/src/cli/sync/SteeringDirCheck.ts +0 -166
- package/src/cli/sync/index.ts +0 -115
- package/src/cli/validate.ts +0 -135
- package/src/cli/validateProductTokens.ts +0 -55
- package/src/color/OklchConverter.ts +0 -284
- package/src/color/OklchValidator.ts +0 -186
- package/src/color/__tests__/OklchConverter.test.ts +0 -232
- package/src/color/__tests__/OklchRegression.test.ts +0 -101
- package/src/color/__tests__/OklchValidator.test.ts +0 -199
- package/src/color/__tests__/WcagContrast.test.ts +0 -76
- package/src/components/__tests__/BlendTokenUsageValidation.test.ts +0 -726
- package/src/components/__tests__/DynamicImportGuard.test.ts +0 -226
- package/src/components/__tests__/ExtensionLintPolicy.test.ts +0 -113
- package/src/components/__tests__/TokenCompliance.test.ts +0 -921
- package/src/components/__tests__/colorInheritanceValidation.test.ts +0 -267
- package/src/components/__tests__/componentTypographyInheritance.test.ts +0 -326
- package/src/components/core/Avatar-Base/README.md +0 -366
- package/src/components/core/Avatar-Base/__tests__/.gitkeep +0 -3
- package/src/components/core/Avatar-Base/__tests__/Avatar.accessibility.test.ts +0 -597
- package/src/components/core/Avatar-Base/__tests__/Avatar.icon-integration.test.ts +0 -656
- package/src/components/core/Avatar-Base/__tests__/Avatar.image.test.ts +0 -396
- package/src/components/core/Avatar-Base/__tests__/Avatar.lifecycle.test.ts +0 -545
- package/src/components/core/Avatar-Base/__tests__/Avatar.rendering.test.ts +0 -505
- package/src/components/core/Avatar-Base/__tests__/Avatar.test.ts +0 -701
- package/src/components/core/Avatar-Base/avatar.tokens.ts +0 -373
- package/src/components/core/Avatar-Base/index.ts +0 -25
- package/src/components/core/Avatar-Base/platforms/ios/.gitkeep +0 -3
- package/src/components/core/Avatar-Base/platforms/web/.gitkeep +0 -3
- package/src/components/core/Avatar-Base/platforms/web/Avatar.styles.css +0 -595
- package/src/components/core/Avatar-Base/platforms/web/Avatar.web.ts +0 -892
- package/src/components/core/Avatar-Base/platforms/web/hexagon-clip.svg +0 -87
- package/src/components/core/Avatar-Base/tokens/.gitkeep +0 -4
- package/src/components/core/Avatar-Base/types.ts +0 -86
- package/src/components/core/Badge-Count-Base/README.md +0 -323
- package/src/components/core/Badge-Count-Base/__tests__/BadgeCountBase.stemma.test.ts +0 -548
- package/src/components/core/Badge-Count-Base/__tests__/BadgeCountBase.test.ts +0 -452
- package/src/components/core/Badge-Count-Base/__tests__/test-utils.ts +0 -244
- package/src/components/core/Badge-Count-Base/index.ts +0 -37
- package/src/components/core/Badge-Count-Base/platforms/ios/.gitkeep +0 -1
- package/src/components/core/Badge-Count-Base/platforms/web/BadgeCountBase.styles.css +0 -148
- package/src/components/core/Badge-Count-Base/platforms/web/BadgeCountBase.web.ts +0 -363
- package/src/components/core/Badge-Count-Base/types.ts +0 -150
- package/src/components/core/Badge-Count-Notification/README.md +0 -396
- package/src/components/core/Badge-Count-Notification/__tests__/BadgeCountNotification.stemma.test.ts +0 -571
- package/src/components/core/Badge-Count-Notification/__tests__/BadgeCountNotification.test.ts +0 -490
- package/src/components/core/Badge-Count-Notification/__tests__/test-utils.ts +0 -256
- package/src/components/core/Badge-Count-Notification/index.ts +0 -60
- package/src/components/core/Badge-Count-Notification/platforms/web/BadgeCountNotification.styles.css +0 -182
- package/src/components/core/Badge-Count-Notification/platforms/web/BadgeCountNotification.web.ts +0 -401
- package/src/components/core/Badge-Count-Notification/tokens.ts +0 -124
- package/src/components/core/Badge-Count-Notification/types.ts +0 -119
- package/src/components/core/Badge-Label-Base/README.md +0 -251
- package/src/components/core/Badge-Label-Base/__tests__/BadgeLabelBase.stemma.test.ts +0 -549
- package/src/components/core/Badge-Label-Base/__tests__/BadgeLabelBase.test.ts +0 -439
- package/src/components/core/Badge-Label-Base/__tests__/test-utils.ts +0 -269
- package/src/components/core/Badge-Label-Base/__tests__/tokens.test.ts +0 -88
- package/src/components/core/Badge-Label-Base/index.ts +0 -41
- package/src/components/core/Badge-Label-Base/platforms/web/BadgeLabelBase.styles.css +0 -166
- package/src/components/core/Badge-Label-Base/platforms/web/BadgeLabelBase.web.ts +0 -340
- package/src/components/core/Badge-Label-Base/tokens.ts +0 -80
- package/src/components/core/Badge-Label-Base/types.ts +0 -148
- package/src/components/core/Button-CTA/Button-CTA.tokens.ts +0 -79
- package/src/components/core/Button-CTA/README.md +0 -293
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.alignment.test.ts +0 -355
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.test.ts +0 -698
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.tokens.test.ts +0 -89
- package/src/components/core/Button-CTA/__tests__/setup.test.ts +0 -209
- package/src/components/core/Button-CTA/__tests__/test-utils.ts +0 -185
- package/src/components/core/Button-CTA/examples/BasicUsage.html +0 -133
- package/src/components/core/Button-CTA/examples/BasicUsage.tsx +0 -219
- package/src/components/core/Button-CTA/examples/Variants.html +0 -263
- package/src/components/core/Button-CTA/examples/WithIcon.html +0 -166
- package/src/components/core/Button-CTA/index.ts +0 -20
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.css +0 -395
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.ts +0 -644
- package/src/components/core/Button-CTA/platforms/web/__tests__/ButtonCTA.icon-integration.test.ts +0 -476
- package/src/components/core/Button-CTA/types.ts +0 -239
- package/src/components/core/Button-Icon/README.md +0 -371
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.alignment.test.ts +0 -358
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.properties-8-13.test.ts +0 -953
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.properties.test.ts +0 -920
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.stemma.test.ts +0 -622
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.unit.test.ts +0 -560
- package/src/components/core/Button-Icon/__tests__/setup.test.ts +0 -361
- package/src/components/core/Button-Icon/__tests__/test-utils.ts +0 -248
- package/src/components/core/Button-Icon/buttonIcon.tokens.ts +0 -218
- package/src/components/core/Button-Icon/platforms/web/.gitkeep +0 -4
- package/src/components/core/Button-Icon/platforms/web/ButtonIcon.web.css +0 -600
- package/src/components/core/Button-Icon/platforms/web/ButtonIcon.web.ts +0 -625
- package/src/components/core/Button-Icon/types.ts +0 -186
- package/src/components/core/Button-VerticalList-Item/Button-VerticalList-Item.tokens.ts +0 -112
- package/src/components/core/Button-VerticalList-Item/README.md +0 -450
- package/src/components/core/Button-VerticalList-Item/__tests__/.gitkeep +0 -2
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.alignment.test.ts +0 -271
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.failLoudly.test.ts +0 -106
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.integration.test.ts +0 -480
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.properties.test.ts +0 -634
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.unit.test.ts +0 -746
- package/src/components/core/Button-VerticalList-Item/__tests__/rtlSupport.test.ts +0 -206
- package/src/components/core/Button-VerticalList-Item/__tests__/test-utils.ts +0 -297
- package/src/components/core/Button-VerticalList-Item/__tests__/visualStateMapping.test.ts +0 -419
- package/src/components/core/Button-VerticalList-Item/index.ts +0 -49
- package/src/components/core/Button-VerticalList-Item/platforms/android/VerticalListButtonItemTest.kt +0 -1109
- package/src/components/core/Button-VerticalList-Item/platforms/ios/.gitkeep +0 -2
- package/src/components/core/Button-VerticalList-Item/platforms/ios/VerticalListButtonItemTests.swift +0 -794
- package/src/components/core/Button-VerticalList-Item/platforms/web/.gitkeep +0 -2
- package/src/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.styles.css +0 -459
- package/src/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.ts +0 -1030
- package/src/components/core/Button-VerticalList-Item/platforms/web/visualStateMapping.ts +0 -411
- package/src/components/core/Button-VerticalList-Item/types.ts +0 -338
- package/src/components/core/Button-VerticalList-Set/README.md +0 -578
- package/src/components/core/Button-VerticalList-Set/__tests__/.gitkeep +0 -5
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.integration.test.ts +0 -676
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.property.test.ts +0 -786
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.property2.test.ts +0 -1109
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.unit.test.ts +0 -924
- package/src/components/core/Button-VerticalList-Set/__tests__/animationTiming.test.ts +0 -182
- package/src/components/core/Button-VerticalList-Set/__tests__/crossPlatformConsistency.test.ts +0 -685
- package/src/components/core/Button-VerticalList-Set/__tests__/deriveItemStates.test.ts +0 -179
- package/src/components/core/Button-VerticalList-Set/__tests__/validation.test.ts +0 -275
- package/src/components/core/Button-VerticalList-Set/index.ts +0 -32
- package/src/components/core/Button-VerticalList-Set/platforms/android/ButtonVerticalListSetTest.kt +0 -961
- package/src/components/core/Button-VerticalList-Set/platforms/ios/.gitkeep +0 -0
- package/src/components/core/Button-VerticalList-Set/platforms/ios/ButtonVerticalListSetTests.swift +0 -475
- package/src/components/core/Button-VerticalList-Set/platforms/web/.gitkeep +0 -4
- package/src/components/core/Button-VerticalList-Set/platforms/web/Button-VerticalList-Set.styles.css +0 -167
- package/src/components/core/Button-VerticalList-Set/platforms/web/ButtonVerticalListSet.web.ts +0 -1446
- package/src/components/core/Button-VerticalList-Set/types.ts +0 -788
- package/src/components/core/Chip-Base/__tests__/ChipBase.test.ts +0 -534
- package/src/components/core/Chip-Base/index.ts +0 -40
- package/src/components/core/Chip-Base/platforms/ios/.gitkeep +0 -3
- package/src/components/core/Chip-Base/platforms/web/.gitkeep +0 -5
- package/src/components/core/Chip-Base/platforms/web/ChipBase.styles.css +0 -280
- package/src/components/core/Chip-Base/platforms/web/ChipBase.web.ts +0 -480
- package/src/components/core/Chip-Base/types.ts +0 -189
- package/src/components/core/Chip-Filter/__tests__/ChipFilter.test.ts +0 -592
- package/src/components/core/Chip-Filter/index.ts +0 -34
- package/src/components/core/Chip-Filter/platforms/web/ChipFilter.styles.css +0 -105
- package/src/components/core/Chip-Filter/platforms/web/ChipFilter.web.ts +0 -539
- package/src/components/core/Chip-Filter/types.ts +0 -47
- package/src/components/core/Chip-Input/__tests__/ChipInput.test.ts +0 -472
- package/src/components/core/Chip-Input/index.ts +0 -35
- package/src/components/core/Chip-Input/platforms/ios/.gitkeep +0 -3
- package/src/components/core/Chip-Input/platforms/web/ChipInput.styles.css +0 -99
- package/src/components/core/Chip-Input/platforms/web/ChipInput.web.ts +0 -485
- package/src/components/core/Chip-Input/types.ts +0 -35
- package/src/components/core/Container-Base/README.md +0 -450
- package/src/components/core/Container-Base/__tests__/ContainerBase.test.ts +0 -712
- package/src/components/core/Container-Base/index.ts +0 -47
- package/src/components/core/Container-Base/platforms/web/ContainerBase.web.ts +0 -405
- package/src/components/core/Container-Base/platforms/web/styles.css +0 -198
- package/src/components/core/Container-Base/platforms/web/token-mapping.ts +0 -573
- package/src/components/core/Container-Base/tokens.ts +0 -241
- package/src/components/core/Container-Base/types.ts +0 -307
- package/src/components/core/Container-Card-Base/README.md +0 -506
- package/src/components/core/Container-Card-Base/__tests__/ContainerCardBase.composition.test.ts +0 -167
- package/src/components/core/Container-Card-Base/__tests__/ContainerCardBase.test.ts +0 -646
- package/src/components/core/Container-Card-Base/index.ts +0 -64
- package/src/components/core/Container-Card-Base/platforms/web/ContainerCardBase.web.ts +0 -373
- package/src/components/core/Container-Card-Base/tokens.ts +0 -224
- package/src/components/core/Container-Card-Base/types.ts +0 -332
- package/src/components/core/Icon-Base/README.md +0 -168
- package/src/components/core/Icon-Base/__tests__/IconBase.test.ts +0 -192
- package/src/components/core/Icon-Base/index.ts +0 -34
- package/src/components/core/Icon-Base/platforms/ios/ASSET_CATALOG_SETUP.md +0 -239
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Contents.json +0 -6
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/Contents.json +0 -9
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/alert-circle.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/alert-circle.imageset/alert-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-down.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-down.imageset/arrow-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-left.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-left.imageset/arrow-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-right.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-right.imageset/arrow-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-up.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-up.imageset/arrow-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/award.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/award.imageset/award.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/bell.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/bell.imageset/bell.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/briefcase.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/briefcase.imageset/briefcase.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/calendar.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/calendar.imageset/calendar.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check-circle.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check-circle.imageset/check-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check.imageset/check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-down.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-down.imageset/chevron-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-left.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-left.imageset/chevron-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-right.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-right.imageset/chevron-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/circle.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/circle.imageset/circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/clock.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/clock.imageset/clock.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/credit-card.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/credit-card.imageset/credit-card.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/dollar-sign.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/dollar-sign.imageset/dollar-sign.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/external-link.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/external-link.imageset/external-link.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye-off.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye-off.imageset/eye-off.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye.imageset/eye.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/file-text.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/file-text.imageset/file-text.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/filter.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/filter.imageset/filter.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/globe.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/globe.imageset/globe.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/heart.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/heart.imageset/heart.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/info.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/info.imageset/info.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/mail.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/mail.imageset/mail.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/map-pin.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/map-pin.imageset/map-pin.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/minus.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/minus.imageset/minus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-horizontal.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-horizontal.imageset/more-horizontal.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-vertical.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-vertical.imageset/more-vertical.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/phone.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/phone.imageset/phone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/plus.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/plus.imageset/plus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/refresh-cw.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/refresh-cw.imageset/refresh-cw.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/save.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/save.imageset/save.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/search.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/search.imageset/search.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/settings.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/settings.imageset/settings.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share-2.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share-2.imageset/share-2.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share.imageset/share.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/shield.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/shield.imageset/shield.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smartphone.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smartphone.imageset/smartphone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smile.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smile.imageset/smile.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/star.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/star.imageset/star.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/trending-up.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/trending-up.imageset/trending-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-check.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-check.imageset/user-check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-x.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-x.imageset/user-x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user.imageset/user.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/users.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/users.imageset/users.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/wifi.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/wifi.imageset/wifi.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/x.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/x.imageset/x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/IconBase.web.ts +0 -553
- package/src/components/core/Icon-Base/platforms/web/assets/alert-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/award.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/bell.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/briefcase.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/calendar.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/check-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/chevron-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/chevron-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/chevron-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/clock.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/credit-card.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/dollar-sign.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/external-link.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/eye-off.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/eye.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/file-text.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/filter.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/globe.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/heart.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/info.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/mail.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/map-pin.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/minus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/more-horizontal.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/more-vertical.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/phone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/plus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/refresh-cw.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/save.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/search.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/settings.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/share-2.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/share.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/shield.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/smartphone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/smile.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/star.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/trending-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/user-check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/user-x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/user.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/users.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/wifi.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/styles.css +0 -203
- package/src/components/core/Icon-Base/types.ts +0 -338
- package/src/components/core/Input-Checkbox-Base/README.md +0 -390
- package/src/components/core/Input-Checkbox-Base/__tests__/InputCheckboxBase.stemma.test.ts +0 -552
- package/src/components/core/Input-Checkbox-Base/__tests__/InputCheckboxBase.test.ts +0 -878
- package/src/components/core/Input-Checkbox-Base/checkbox-sizing.tokens.ts +0 -37
- package/src/components/core/Input-Checkbox-Base/platforms/web/InputCheckboxBase.web.css +0 -477
- package/src/components/core/Input-Checkbox-Base/platforms/web/InputCheckboxBase.web.ts +0 -561
- package/src/components/core/Input-Checkbox-Base/types.ts +0 -399
- package/src/components/core/Input-Checkbox-Legal/README.md +0 -554
- package/src/components/core/Input-Checkbox-Legal/__tests__/InputCheckboxLegal.test.ts +0 -727
- package/src/components/core/Input-Checkbox-Legal/platforms/ios/.gitkeep +0 -2
- package/src/components/core/Input-Checkbox-Legal/platforms/web/InputCheckboxLegal.web.css +0 -112
- package/src/components/core/Input-Checkbox-Legal/platforms/web/InputCheckboxLegal.web.ts +0 -505
- package/src/components/core/Input-Checkbox-Legal/types.ts +0 -348
- package/src/components/core/Input-Radio-Base/.gitkeep +0 -2
- package/src/components/core/Input-Radio-Base/README.md +0 -427
- package/src/components/core/Input-Radio-Base/__tests__/.gitkeep +0 -1
- package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.form.test.ts +0 -299
- package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.stemma.test.ts +0 -543
- package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.test.ts +0 -429
- package/src/components/core/Input-Radio-Base/platforms/ios/.gitkeep +0 -1
- package/src/components/core/Input-Radio-Base/platforms/web/.gitkeep +0 -1
- package/src/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.css +0 -504
- package/src/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.ts +0 -648
- package/src/components/core/Input-Radio-Base/radio-sizing.tokens.ts +0 -37
- package/src/components/core/Input-Radio-Base/types.ts +0 -362
- package/src/components/core/Input-Radio-Set/README.md +0 -373
- package/src/components/core/Input-Radio-Set/__tests__/.gitkeep +0 -0
- package/src/components/core/Input-Radio-Set/__tests__/InputRadioSet.stemma.test.ts +0 -493
- package/src/components/core/Input-Radio-Set/__tests__/InputRadioSet.test.ts +0 -499
- package/src/components/core/Input-Radio-Set/platforms/web/InputRadioSet.web.css +0 -99
- package/src/components/core/Input-Radio-Set/platforms/web/InputRadioSet.web.ts +0 -790
- package/src/components/core/Input-Radio-Set/types.ts +0 -301
- package/src/components/core/Input-Text-Base/README.md +0 -258
- package/src/components/core/Input-Text-Base/__tests__/focusIndicators.test.ts +0 -311
- package/src/components/core/Input-Text-Base/__tests__/keyboardNavigation.test.ts +0 -444
- package/src/components/core/Input-Text-Base/__tests__/labelAssociation.test.ts +0 -418
- package/src/components/core/Input-Text-Base/__tests__/screenReaderSupport.test.ts +0 -405
- package/src/components/core/Input-Text-Base/__tests__/setup.ts +0 -17
- package/src/components/core/Input-Text-Base/__tests__/stateManagement.test.ts +0 -718
- package/src/components/core/Input-Text-Base/__tests__/test-utils.ts +0 -81
- package/src/components/core/Input-Text-Base/__tests__/touchTargetSizing.test.ts +0 -319
- package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.ts +0 -241
- package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.web.css +0 -293
- package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.web.ts +0 -448
- package/src/components/core/Input-Text-Base/stateManagement.ts +0 -267
- package/src/components/core/Input-Text-Base/tokens.ts +0 -210
- package/src/components/core/Input-Text-Base/types.ts +0 -114
- package/src/components/core/Input-Text-Email/README.md +0 -252
- package/src/components/core/Input-Text-Email/__tests__/validation.test.ts +0 -127
- package/src/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.ts +0 -276
- package/src/components/core/Input-Text-Email/platforms/web/InputTextEmail.web.ts +0 -319
- package/src/components/core/Input-Text-Email/stateManagement.ts +0 -160
- package/src/components/core/Input-Text-Email/tokens.ts +0 -33
- package/src/components/core/Input-Text-Email/types.ts +0 -72
- package/src/components/core/Input-Text-Email/validation.ts +0 -130
- package/src/components/core/Input-Text-Password/README.md +0 -360
- package/src/components/core/Input-Text-Password/__tests__/validation.test.ts +0 -362
- package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.ts +0 -434
- package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.ts +0 -512
- package/src/components/core/Input-Text-Password/stateManagement.ts +0 -244
- package/src/components/core/Input-Text-Password/tokens.ts +0 -32
- package/src/components/core/Input-Text-Password/types.ts +0 -177
- package/src/components/core/Input-Text-Password/validation.ts +0 -207
- package/src/components/core/Input-Text-PhoneNumber/README.md +0 -276
- package/src/components/core/Input-Text-PhoneNumber/__tests__/validation.test.ts +0 -301
- package/src/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.ts +0 -370
- package/src/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.web.ts +0 -393
- package/src/components/core/Input-Text-PhoneNumber/stateManagement.ts +0 -250
- package/src/components/core/Input-Text-PhoneNumber/tokens.ts +0 -33
- package/src/components/core/Input-Text-PhoneNumber/types.ts +0 -135
- package/src/components/core/Input-Text-PhoneNumber/validation.ts +0 -302
- package/src/components/core/Nav-Header-App/README.md +0 -29
- package/src/components/core/Nav-Header-App/index.ts +0 -5
- package/src/components/core/Nav-Header-App/platforms/web/NavHeaderApp.web.ts +0 -37
- package/src/components/core/Nav-Header-App/types.ts +0 -32
- package/src/components/core/Nav-Header-Base/README.md +0 -21
- package/src/components/core/Nav-Header-Base/index.ts +0 -12
- package/src/components/core/Nav-Header-Base/platforms/web/NavHeaderBase.styles.css +0 -75
- package/src/components/core/Nav-Header-Base/platforms/web/NavHeaderBase.web.ts +0 -120
- package/src/components/core/Nav-Header-Base/types.ts +0 -63
- package/src/components/core/Nav-Header-Page/README.md +0 -34
- package/src/components/core/Nav-Header-Page/__tests__/NavHeaderPage.test.ts +0 -250
- package/src/components/core/Nav-Header-Page/index.ts +0 -12
- package/src/components/core/Nav-Header-Page/platforms/web/NavHeaderPage.styles.css +0 -90
- package/src/components/core/Nav-Header-Page/platforms/web/NavHeaderPage.web.ts +0 -169
- package/src/components/core/Nav-Header-Page/types.ts +0 -55
- package/src/components/core/Nav-SegmentedChoice-Base/README.md +0 -327
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.android.test.ts +0 -218
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.interaction.test.ts +0 -419
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.ios.test.ts +0 -207
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.visual.test.ts +0 -371
- package/src/components/core/Nav-SegmentedChoice-Base/index.ts +0 -38
- package/src/components/core/Nav-SegmentedChoice-Base/platforms/web/NavSegmentedChoiceBase.styles.css +0 -160
- package/src/components/core/Nav-SegmentedChoice-Base/platforms/web/NavSegmentedChoiceBase.web.ts +0 -477
- package/src/components/core/Nav-SegmentedChoice-Base/types.ts +0 -65
- package/src/components/core/Nav-TabBar-Base/README.md +0 -264
- package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.android.test.ts +0 -270
- package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.ios.test.ts +0 -221
- package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.test.ts +0 -421
- package/src/components/core/Nav-TabBar-Base/examples/BasicUsage.html +0 -2
- package/src/components/core/Nav-TabBar-Base/examples/BasicUsage.tsx +0 -2
- package/src/components/core/Nav-TabBar-Base/index.ts +0 -20
- package/src/components/core/Nav-TabBar-Base/platforms/web/NavTabBarBase.styles.css +0 -281
- package/src/components/core/Nav-TabBar-Base/platforms/web/NavTabBarBase.web.ts +0 -420
- package/src/components/core/Nav-TabBar-Base/types.ts +0 -43
- package/src/components/core/Progress-Bar-Base/README.md +0 -31
- package/src/components/core/Progress-Bar-Base/__tests__/ProgressBarBase.test.ts +0 -202
- package/src/components/core/Progress-Bar-Base/index.ts +0 -6
- package/src/components/core/Progress-Bar-Base/platforms/web/ProgressBarBase.styles.css +0 -52
- package/src/components/core/Progress-Bar-Base/platforms/web/ProgressBarBase.web.ts +0 -135
- package/src/components/core/Progress-Bar-Base/types.ts +0 -46
- package/src/components/core/Progress-Indicator-Connector-Base/README.md +0 -169
- package/src/components/core/Progress-Indicator-Connector-Base/index.ts +0 -33
- package/src/components/core/Progress-Indicator-Connector-Base/platforms/web/ProgressIndicatorConnectorBase.styles.css +0 -50
- package/src/components/core/Progress-Indicator-Connector-Base/platforms/web/ProgressIndicatorConnectorBase.web.ts +0 -141
- package/src/components/core/Progress-Indicator-Connector-Base/types.ts +0 -67
- package/src/components/core/Progress-Indicator-Label-Base/README.md +0 -191
- package/src/components/core/Progress-Indicator-Label-Base/index.ts +0 -28
- package/src/components/core/Progress-Indicator-Label-Base/platforms/web/ProgressIndicatorLabelBase.styles.css +0 -81
- package/src/components/core/Progress-Indicator-Label-Base/platforms/web/ProgressIndicatorLabelBase.web.ts +0 -174
- package/src/components/core/Progress-Indicator-Label-Base/types.ts +0 -64
- package/src/components/core/Progress-Indicator-Node-Base/README.md +0 -206
- package/src/components/core/Progress-Indicator-Node-Base/__tests__/VisualStates.test.ts +0 -259
- package/src/components/core/Progress-Indicator-Node-Base/index.ts +0 -36
- package/src/components/core/Progress-Indicator-Node-Base/platforms/web/ProgressIndicatorNodeBase.styles.css +0 -193
- package/src/components/core/Progress-Indicator-Node-Base/platforms/web/ProgressIndicatorNodeBase.web.ts +0 -226
- package/src/components/core/Progress-Indicator-Node-Base/types.ts +0 -142
- package/src/components/core/Progress-Pagination-Base/README.md +0 -290
- package/src/components/core/Progress-Pagination-Base/__tests__/PaginationBase.test.ts +0 -290
- package/src/components/core/Progress-Pagination-Base/index.ts +0 -40
- package/src/components/core/Progress-Pagination-Base/platforms/web/ProgressPaginationBase.styles.css +0 -80
- package/src/components/core/Progress-Pagination-Base/platforms/web/ProgressPaginationBase.web.ts +0 -293
- package/src/components/core/Progress-Pagination-Base/types.ts +0 -112
- package/src/components/core/Progress-Stepper-Base/README.md +0 -311
- package/src/components/core/Progress-Stepper-Base/__tests__/StepperBase.test.ts +0 -345
- package/src/components/core/Progress-Stepper-Base/index.ts +0 -43
- package/src/components/core/Progress-Stepper-Base/platforms/web/ProgressStepperBase.styles.css +0 -49
- package/src/components/core/Progress-Stepper-Base/platforms/web/ProgressStepperBase.web.ts +0 -288
- package/src/components/core/Progress-Stepper-Base/types.ts +0 -175
- package/src/components/core/Progress-Stepper-Detailed/README.md +0 -401
- package/src/components/core/Progress-Stepper-Detailed/__tests__/StepperDetailed.test.ts +0 -481
- package/src/components/core/Progress-Stepper-Detailed/index.ts +0 -48
- package/src/components/core/Progress-Stepper-Detailed/platforms/web/ProgressStepperDetailed.styles.css +0 -106
- package/src/components/core/Progress-Stepper-Detailed/platforms/web/ProgressStepperDetailed.web.ts +0 -336
- package/src/components/core/Progress-Stepper-Detailed/types.ts +0 -195
- package/src/composition/BlendComposition.ts +0 -46
- package/src/composition/BlendCompositionParser.ts +0 -215
- package/src/composition/OpacityComposition.ts +0 -62
- package/src/composition/OpacityCompositionParser.ts +0 -308
- package/src/composition/__tests__/BlendCompositionParser.test.ts +0 -431
- package/src/composition/__tests__/OpacityCompositionParser.test.ts +0 -539
- package/src/composition/index.ts +0 -20
- package/src/config/ConfigLoader.ts +0 -143
- package/src/config/__resolution-matrix__/README.md +0 -76
- package/src/config/__resolution-matrix__/fixtures/faithful-cjs/compiled/defineConfig.js +0 -9
- package/src/config/__resolution-matrix__/fixtures/faithful-cjs/designerpunk.config.ts +0 -20
- package/src/config/__resolution-matrix__/fixtures/faithful-cjs/my-overrides.ts +0 -8
- package/src/config/__resolution-matrix__/fixtures/faithful-esm/compiled/defineConfig.js +0 -11
- package/src/config/__resolution-matrix__/fixtures/faithful-esm/designerpunk.config.ts +0 -23
- package/src/config/__resolution-matrix__/fixtures/faithful-esm/my-overrides.ts +0 -6
- package/src/config/__resolution-matrix__/fixtures/source-dir-cjs/designerpunk.config.ts +0 -11
- package/src/config/__resolution-matrix__/fixtures/source-dir-cjs/src/config/index.ts +0 -15
- package/src/config/__resolution-matrix__/fixtures/source-dir-esm/designerpunk.config.ts +0 -15
- package/src/config/__resolution-matrix__/fixtures/source-dir-esm/src/config/index.ts +0 -13
- package/src/config/__resolution-matrix__/run-matrix.js +0 -107
- package/src/config/__resolution-matrix__/runner.js +0 -153
- package/src/config/__resolution-matrix__/verify-real-loadconfig.js +0 -122
- package/src/config/__tests__/ConfigLoader.test.ts +0 -115
- package/src/config/defineConfig.ts +0 -71
- package/src/config/index.ts +0 -7
- package/src/config/scopedTsRequire.ts +0 -62
- package/src/constants/BaselineGrid.ts +0 -41
- package/src/constants/SpacingTokens.ts +0 -55
- package/src/figma/ComponentAnalysis.ts +0 -292
- package/src/figma/ComponentAnalysisGenerator.ts +0 -444
- package/src/figma/ConsoleMCPClient.ts +0 -168
- package/src/figma/ConsoleMCPClientImpl.ts +0 -1034
- package/src/figma/DesignExtractor.ts +0 -3620
- package/src/figma/TokenSyncWorkflow.ts +0 -915
- package/src/figma/TokenTranslator.ts +0 -891
- package/src/figma/VariantAnalyzer.ts +0 -712
- package/src/figma/__tests__/ComponentAnalysisGenerator.json.test.ts +0 -429
- package/src/figma/__tests__/ComponentAnalysisGenerator.markdown.test.ts +0 -428
- package/src/figma/__tests__/ConsoleMCPClient.bugfix.test.ts +0 -261
- package/src/figma/__tests__/ConsoleMCPClient.preservation.test.ts +0 -395
- package/src/figma/__tests__/ConsoleMCPClient.test.ts +0 -375
- package/src/figma/__tests__/DesignExtractor.boundVariableResolution.test.ts +0 -580
- package/src/figma/__tests__/DesignExtractor.buildNodeTree.test.ts +0 -535
- package/src/figma/__tests__/DesignExtractor.captureComponentScreenshot.test.ts +0 -176
- package/src/figma/__tests__/DesignExtractor.detectBehavioralContracts.test.ts +0 -263
- package/src/figma/__tests__/DesignExtractor.detectComponentTokenDecisions.test.ts +0 -379
- package/src/figma/__tests__/DesignExtractor.detectCompositionPatterns.test.ts +0 -507
- package/src/figma/__tests__/DesignExtractor.detectPlatformParity.test.ts +0 -406
- package/src/figma/__tests__/DesignExtractor.queryContext.test.ts +0 -214
- package/src/figma/__tests__/DesignExtractor.readFigmaComponent.test.ts +0 -431
- package/src/figma/__tests__/DesignExtractor.readStyles.test.ts +0 -204
- package/src/figma/__tests__/DesignExtractor.readTokenBindings.test.ts +0 -268
- package/src/figma/__tests__/DesignExtractor.reconstructCompositeTokens.test.ts +0 -403
- package/src/figma/__tests__/DesignExtractor.resolveUnknownVariableIds.test.ts +0 -259
- package/src/figma/__tests__/DesignExtractor.translateTokens.test.ts +0 -433
- package/src/figma/__tests__/DesignExtractor.validateModes.test.ts +0 -350
- package/src/figma/__tests__/TokenSyncWorkflow.batch.test.ts +0 -277
- package/src/figma/__tests__/TokenSyncWorkflow.drift.test.ts +0 -187
- package/src/figma/__tests__/TokenSyncWorkflow.preservation.test.ts +0 -544
- package/src/figma/__tests__/TokenSyncWorkflow.styles.test.ts +0 -245
- package/src/figma/__tests__/TokenSyncWorkflow.sync.test.ts +0 -217
- package/src/figma/__tests__/TokenTranslator.test.ts +0 -757
- package/src/figma/__tests__/VariantAnalyzer.detectConflicts.test.ts +0 -126
- package/src/figma/__tests__/VariantAnalyzer.test.ts +0 -633
- package/src/figma/__tests__/error-reporting.test.ts +0 -254
- package/src/figma/__tests__/preflight.test.ts +0 -94
- package/src/figma/error-reporting.ts +0 -260
- package/src/figma/index.ts +0 -98
- package/src/figma/portCleanup.ts +0 -86
- package/src/figma/preflight.ts +0 -120
- package/src/generators/BlendUtilityGenerator.ts +0 -847
- package/src/generators/BlendValueGenerator.ts +0 -198
- package/src/generators/DTCGFormatGenerator.ts +0 -1355
- package/src/generators/DTCGGeneratorConfig.ts +0 -46
- package/src/generators/ModeResolvedTokens.ts +0 -58
- package/src/generators/ResponsiveGridGenerator.ts +0 -273
- package/src/generators/TokenFileGenerator.ts +0 -2075
- package/src/generators/__tests__/AccessibilityTokenGeneration.test.ts +0 -350
- package/src/generators/__tests__/BlendUtilityGenerator.test.ts +0 -829
- package/src/generators/__tests__/BlendValueGenerator.test.ts +0 -200
- package/src/generators/__tests__/BreakpointTokenGeneration.test.ts +0 -172
- package/src/generators/__tests__/CSSThemeScoping.test.ts +0 -153
- package/src/generators/__tests__/DTCGConfigOptions.test.ts +0 -271
- package/src/generators/__tests__/DTCGErrorHandling.test.ts +0 -139
- package/src/generators/__tests__/DTCGFormatGenerator.integration.test.ts +0 -346
- package/src/generators/__tests__/DTCGFormatGenerator.property.test.ts +0 -497
- package/src/generators/__tests__/DTCGFormatGenerator.test.ts +0 -469
- package/src/generators/__tests__/FigmaTransformer.styles.test.ts +0 -398
- package/src/generators/__tests__/FigmaTransformer.variables.test.ts +0 -540
- package/src/generators/__tests__/GridSpacingTokenGeneration.test.ts +0 -254
- package/src/generators/__tests__/IconTokenGeneration.test.ts +0 -452
- package/src/generators/__tests__/KotlinThemeTypes.test.ts +0 -110
- package/src/generators/__tests__/ModeAwareGeneration.test.ts +0 -160
- package/src/generators/__tests__/NativeOklchOutput.test.ts +0 -56
- package/src/generators/__tests__/OklchExport.test.ts +0 -71
- package/src/generators/__tests__/ProductRepoSimulation.test.ts +0 -91
- package/src/generators/__tests__/ResponsiveGridGeneration.test.ts +0 -291
- package/src/generators/__tests__/Spec076TokenMigration.test.ts +0 -106
- package/src/generators/__tests__/Spec077ModesVerification.test.ts +0 -52
- package/src/generators/__tests__/SwiftThemeTypes.test.ts +0 -122
- package/src/generators/__tests__/TokenFileGenerator.test.ts +0 -914
- package/src/generators/__tests__/TransformerRegistry.test.ts +0 -118
- package/src/generators/__tests__/WcagValueExportSupport.test.ts +0 -84
- package/src/generators/__tests__/WcagValueInfrastructure.test.ts +0 -122
- package/src/generators/__tests__/WebOklchOutput.test.ts +0 -72
- package/src/generators/__tests__/generateTokenIndex.test.ts +0 -204
- package/src/generators/__tests__/helpers/defaultSemanticOptions.ts +0 -24
- package/src/generators/generateTokenFiles.ts +0 -337
- package/src/generators/generateTokenIndex.ts +0 -258
- package/src/generators/oklch/OklchExportUtils.ts +0 -57
- package/src/generators/oklch/OklchTokenIndexMetadata.ts +0 -30
- package/src/generators/transformers/FigmaTransformer.ts +0 -912
- package/src/generators/transformers/ITokenTransformer.ts +0 -56
- package/src/generators/transformers/TransformerRegistry.ts +0 -63
- package/src/generators/transformers/index.ts +0 -52
- package/src/generators/types/DTCGTypes.ts +0 -101
- package/src/integration/BuildErrorHandler.ts +0 -440
- package/src/integration/BuildSystemInterface.ts +0 -338
- package/src/integration/PlatformFileSelector.ts +0 -288
- package/src/integration/RegistryCoordinator.ts +0 -404
- package/src/integration/TranslationCoordinator.ts +0 -458
- package/src/integration/TreeShakingOptimizer.ts +0 -350
- package/src/integration/ValidationCoordinator.ts +0 -780
- package/src/integration/__tests__/ComponentTokenValidation.test.ts +0 -762
- package/src/integration/__tests__/ValidationCoordinator.test.ts +0 -609
- package/src/integration/__tests__/performance/ComponentTokenValidationPerformance.test.ts +0 -161
- package/src/integration/index.ts +0 -55
- package/src/naming/NamingConventionManager.ts +0 -318
- package/src/naming/PlatformNamingRules.ts +0 -278
- package/src/naming/__tests__/NamingConventions.test.ts +0 -224
- package/src/naming/index.ts +0 -23
- package/src/parent-completion.md +0 -1
- package/src/performance/CachingStrategy.ts +0 -426
- package/src/performance/FileGenerationOptimizer.ts +0 -294
- package/src/performance/PerformanceMonitor.ts +0 -185
- package/src/performance/PerformanceOptimizer.ts +0 -348
- package/src/performance/index.ts +0 -30
- package/src/providers/AndroidFileOrganizer.ts +0 -241
- package/src/providers/AndroidFormatGenerator.ts +0 -750
- package/src/providers/AndroidUnitConverter.ts +0 -177
- package/src/providers/FormatProvider.ts +0 -187
- package/src/providers/PathProvider.ts +0 -197
- package/src/providers/UnitProvider.ts +0 -106
- package/src/providers/WebFileOrganizer.ts +0 -121
- package/src/providers/WebFormatGenerator.ts +0 -611
- package/src/providers/WebUnitConverter.ts +0 -116
- package/src/providers/__tests__/AndroidAccessibilityTokens.test.ts +0 -86
- package/src/providers/__tests__/AndroidFormatGenerator-semantic.test.ts +0 -494
- package/src/providers/__tests__/FormatProviders.test.ts +0 -828
- package/src/providers/__tests__/InsetTokenGeneration.test.ts +0 -627
- package/src/providers/__tests__/PathProviders.test.ts +0 -512
- package/src/providers/__tests__/PlatformOutputFormat.test.ts +0 -252
- package/src/providers/__tests__/UnitProviders.test.ts +0 -721
- package/src/providers/__tests__/WebFormatGenerator-semantic.test.ts +0 -293
- package/src/providers/__tests__/iOSFormatGenerator-semantic.test.ts +0 -410
- package/src/providers/iOSFileOrganizer.ts +0 -162
- package/src/providers/iOSFormatGenerator.ts +0 -599
- package/src/providers/iOSUnitConverter.ts +0 -125
- package/src/providers/index.ts +0 -26
- package/src/registries/ComponentTokenRegistry.ts +0 -292
- package/src/registries/IRegistry.ts +0 -170
- package/src/registries/__tests__/ComponentTokenRegistry.test.ts +0 -446
- package/src/registries/__tests__/IRegistry.test.ts +0 -250
- package/src/registries/__tests__/PrimitiveTokenRegistry.test.ts +0 -342
- package/src/registries/__tests__/SemanticTokenRegistry.test.ts +0 -444
- package/src/resolvers/AndroidColorResolver.ts +0 -333
- package/src/resolvers/ModeThemeResolver.ts +0 -152
- package/src/resolvers/SemanticOverrideResolver.ts +0 -155
- package/src/resolvers/SemanticValueResolver.ts +0 -133
- package/src/resolvers/WebColorResolver.ts +0 -240
- package/src/resolvers/__tests__/AndroidColorResolver.test.ts +0 -507
- package/src/resolvers/__tests__/ModeThemeResolver.test.ts +0 -411
- package/src/resolvers/__tests__/SemanticOverrideResolver.test.ts +0 -186
- package/src/resolvers/__tests__/WebColorResolver.test.ts +0 -405
- package/src/resolvers/__tests__/iOSColorResolver.test.ts +0 -432
- package/src/resolvers/iOSColorResolver.ts +0 -224
- package/src/resolvers/index.ts +0 -11
- package/src/security/AIAgentRestrictions.ts +0 -298
- package/src/security/ContaminationAuditor.ts +0 -393
- package/src/security/ContaminationPrevention.ts +0 -275
- package/src/security/DocumentationGuard.ts +0 -258
- package/src/security/FlexibilityTokenGuard.ts +0 -256
- package/src/security/HumanApprovalWorkflow.ts +0 -319
- package/src/security/__tests__/AIAgentRestrictions.test.ts +0 -482
- package/src/security/__tests__/ContaminationPrevention.test.ts +0 -424
- package/src/security/__tests__/SecurityIntegration.test.ts +0 -505
- package/src/security/index.ts +0 -48
- package/src/testing/__tests__/utilities.test.ts +0 -175
- package/src/testing/index.ts +0 -154
- package/src/testing/jest-preset.ts +0 -62
- package/src/testing/style-mock.ts +0 -7
- package/src/testing/validators.ts +0 -10
- package/src/themes/ResolvedThemeSet.ts +0 -22
- package/src/themes/ThemeRegistry.ts +0 -97
- package/src/themes/__tests__/ThemeRegistry.test.ts +0 -162
- package/src/tools/ThemeFileGenerator.ts +0 -109
- package/src/tools/integrity/DiskFreshGenerator.ts +0 -36
- package/src/tools/integrity/GenerationIntegrityCheck.ts +0 -132
- package/src/tools/integrity/Invariants.ts +0 -228
- package/src/tools/integrity/Normalizer.ts +0 -94
- package/src/tools/integrity/SemanticComparator.ts +0 -127
- package/src/tools/integrity/__tests__/GenerationIntegrityCheck.test.ts +0 -132
- package/src/tools/integrity/__tests__/Invariants.test.ts +0 -142
- package/src/tools/integrity/__tests__/Normalizer.test.ts +0 -65
- package/src/tools/integrity/__tests__/SemanticComparator.test.ts +0 -62
- package/src/tools/integrity/__tests__/consumer-package-mode.test.ts +0 -205
- package/src/tools/integrity/cli/run-audit.ts +0 -150
- package/src/tools/integrity/inventory.ts +0 -51
- package/src/tools/integrity/manifest.ts +0 -56
- package/src/tools/integrity/types/index.ts +0 -183
- package/src/types/ComponentTypes.ts +0 -76
- package/src/types/TranslationOutput.ts +0 -105
- package/src/types/ValidationResult.ts +0 -74
- package/src/types/__tests__/ComponentTypes.test.ts +0 -73
- package/src/types/css.d.ts +0 -35
- package/src/types/generated/TokenTypes.ts +0 -142
- package/src/types/index.ts +0 -42
- package/src/validators/BaselineGridValidator.ts +0 -119
- package/src/validators/CompositionPatternValidator.ts +0 -259
- package/src/validators/CrossPlatformConsistencyValidator.ts +0 -498
- package/src/validators/ErrorValidator.ts +0 -998
- package/src/validators/IValidator.ts +0 -273
- package/src/validators/MathematicalRelationshipParser.ts +0 -434
- package/src/validators/ModeParity.ts +0 -123
- package/src/validators/PassValidator.ts +0 -533
- package/src/validators/PlatformConstraintHandler.ts +0 -453
- package/src/validators/PrimitiveReferenceValidator.ts +0 -284
- package/src/validators/SemanticTokenValidator.ts +0 -496
- package/src/validators/StemmaComponentNamingValidator.ts +0 -524
- package/src/validators/StemmaErrorGuidanceSystem.ts +0 -1600
- package/src/validators/StemmaPropertyAccessibilityValidator.ts +0 -823
- package/src/validators/StemmaTokenUsageValidator.ts +0 -651
- package/src/validators/SyntaxValidator.ts +0 -537
- package/src/validators/ThreeTierValidator.ts +0 -822
- package/src/validators/ToleranceCalculator.ts +0 -324
- package/src/validators/ValidationReasoning.ts +0 -464
- package/src/validators/WCAGValidator.ts +0 -219
- package/src/validators/WarningValidator.ts +0 -626
- package/src/validators/__tests__/BaselineGridValidator.test.ts +0 -292
- package/src/validators/__tests__/BorderWidthValidation.test.ts +0 -595
- package/src/validators/__tests__/CompositionPatterns.test.ts +0 -463
- package/src/validators/__tests__/CrossPlatformConsistency.test.ts +0 -834
- package/src/validators/__tests__/IValidator.test.ts +0 -258
- package/src/validators/__tests__/MathematicalRelationshipParser.test.ts +0 -465
- package/src/validators/__tests__/PlatformConstraints.test.ts +0 -486
- package/src/validators/__tests__/SemanticTokenValidator.test.ts +0 -723
- package/src/validators/__tests__/StemmaComponentNamingValidator.test.ts +0 -597
- package/src/validators/__tests__/StemmaErrorGuidanceSystem.test.ts +0 -717
- package/src/validators/__tests__/StemmaPropertyAccessibilityValidator.test.ts +0 -349
- package/src/validators/__tests__/StemmaTokenUsageValidator.test.ts +0 -432
- package/src/validators/__tests__/SyntaxValidator.test.ts +0 -360
- package/src/validators/__tests__/ThreeTierValidator.test.ts +0 -906
- package/src/validators/__tests__/ValidationReasoning.test.ts +0 -636
- package/src/validators/__tests__/WCAGValidator.test.ts +0 -243
- package/src/validators/buildValidation.ts +0 -170
- package/src/validators/index.ts +0 -144
- package/src/workflows/ConsistencyValidator.ts +0 -339
- package/src/workflows/TokenGenerationWorkflow.ts +0 -460
- package/src/workflows/ValidationPipeline.ts +0 -284
- package/src/workflows/WorkflowErrorHandler.ts +0 -441
|
@@ -1,1600 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stemma System Error Guidance System
|
|
3
|
-
*
|
|
4
|
-
* Provides comprehensive error message templates with correction guidance,
|
|
5
|
-
* links to relevant documentation, and IDE integration for real-time feedback.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Unified error message templates across all Stemma validators
|
|
9
|
-
* - Documentation links for each error type
|
|
10
|
-
* - IDE-friendly output formats (JSON, plain text, markdown)
|
|
11
|
-
* - Severity levels for prioritization
|
|
12
|
-
* - Quick fix suggestions for common issues
|
|
13
|
-
*
|
|
14
|
-
* @see .kiro/steering/stemma-system-principles.md
|
|
15
|
-
* @see Requirements: R8 (Health Guardrails and Validation)
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import type {
|
|
19
|
-
ComponentNameValidationResult,
|
|
20
|
-
ComponentNameError,
|
|
21
|
-
ComponentNameWarning,
|
|
22
|
-
ComponentNameErrorCode,
|
|
23
|
-
ComponentNameWarningCode,
|
|
24
|
-
} from './StemmaComponentNamingValidator';
|
|
25
|
-
|
|
26
|
-
import type {
|
|
27
|
-
TokenUsageValidationResult,
|
|
28
|
-
TokenUsageError,
|
|
29
|
-
TokenUsageWarning,
|
|
30
|
-
TokenUsageErrorCode,
|
|
31
|
-
TokenUsageWarningCode,
|
|
32
|
-
} from './StemmaTokenUsageValidator';
|
|
33
|
-
|
|
34
|
-
import type {
|
|
35
|
-
PropertyAccessibilityValidationResult,
|
|
36
|
-
PropertyAccessibilityError,
|
|
37
|
-
PropertyAccessibilityWarning,
|
|
38
|
-
PropertyAccessibilityErrorCode,
|
|
39
|
-
PropertyAccessibilityWarningCode,
|
|
40
|
-
} from './StemmaPropertyAccessibilityValidator';
|
|
41
|
-
|
|
42
|
-
// ============================================================================
|
|
43
|
-
// Types and Interfaces
|
|
44
|
-
// ============================================================================
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Severity levels for errors and warnings
|
|
48
|
-
*/
|
|
49
|
-
export type ErrorSeverity = 'error' | 'warning' | 'info' | 'hint';
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Error category for grouping related errors
|
|
53
|
-
*/
|
|
54
|
-
export type ErrorCategory =
|
|
55
|
-
| 'naming'
|
|
56
|
-
| 'token-usage'
|
|
57
|
-
| 'property'
|
|
58
|
-
| 'accessibility'
|
|
59
|
-
| 'schema'
|
|
60
|
-
| 'documentation';
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Unified error guidance entry
|
|
65
|
-
*/
|
|
66
|
-
export interface ErrorGuidance {
|
|
67
|
-
/** Unique error code */
|
|
68
|
-
code: string;
|
|
69
|
-
|
|
70
|
-
/** Error category */
|
|
71
|
-
category: ErrorCategory;
|
|
72
|
-
|
|
73
|
-
/** Severity level */
|
|
74
|
-
severity: ErrorSeverity;
|
|
75
|
-
|
|
76
|
-
/** Short title for the error */
|
|
77
|
-
title: string;
|
|
78
|
-
|
|
79
|
-
/** Detailed description of the error */
|
|
80
|
-
description: string;
|
|
81
|
-
|
|
82
|
-
/** Step-by-step guidance for fixing the error */
|
|
83
|
-
guidance: string[];
|
|
84
|
-
|
|
85
|
-
/** Link to relevant documentation */
|
|
86
|
-
documentationLink?: string;
|
|
87
|
-
|
|
88
|
-
/** Quick fix suggestion (if available) */
|
|
89
|
-
quickFix?: QuickFix;
|
|
90
|
-
|
|
91
|
-
/** Related error codes */
|
|
92
|
-
relatedCodes?: string[];
|
|
93
|
-
|
|
94
|
-
/** WCAG reference (for accessibility errors) */
|
|
95
|
-
wcag?: string;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Quick fix suggestion for IDE integration
|
|
100
|
-
*/
|
|
101
|
-
export interface QuickFix {
|
|
102
|
-
/** Title of the quick fix */
|
|
103
|
-
title: string;
|
|
104
|
-
|
|
105
|
-
/** Type of fix */
|
|
106
|
-
type: 'replace' | 'insert' | 'delete' | 'refactor';
|
|
107
|
-
|
|
108
|
-
/** Suggested replacement text (for replace/insert) */
|
|
109
|
-
replacement?: string;
|
|
110
|
-
|
|
111
|
-
/** Whether this fix can be applied automatically */
|
|
112
|
-
autoApplicable: boolean;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* IDE diagnostic format (compatible with VS Code, ESLint, etc.)
|
|
117
|
-
*/
|
|
118
|
-
export interface IDEDiagnostic {
|
|
119
|
-
/** Severity level (1=error, 2=warning, 3=info, 4=hint) */
|
|
120
|
-
severity: 1 | 2 | 3 | 4;
|
|
121
|
-
|
|
122
|
-
/** Error message */
|
|
123
|
-
message: string;
|
|
124
|
-
|
|
125
|
-
/** Error code */
|
|
126
|
-
code: string;
|
|
127
|
-
|
|
128
|
-
/** Source identifier */
|
|
129
|
-
source: string;
|
|
130
|
-
|
|
131
|
-
/** Start position */
|
|
132
|
-
range: {
|
|
133
|
-
start: { line: number; character: number };
|
|
134
|
-
end: { line: number; character: number };
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
/** Related information */
|
|
138
|
-
relatedInformation?: Array<{
|
|
139
|
-
location: { uri: string; range: { start: { line: number; character: number }; end: { line: number; character: number } } };
|
|
140
|
-
message: string;
|
|
141
|
-
}>;
|
|
142
|
-
|
|
143
|
-
/** Quick fix actions */
|
|
144
|
-
codeActions?: Array<{
|
|
145
|
-
title: string;
|
|
146
|
-
kind: string;
|
|
147
|
-
edit?: { changes: Record<string, Array<{ range: { start: { line: number; character: number }; end: { line: number; character: number } }; newText: string }>> };
|
|
148
|
-
}>;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Aggregated validation result from all validators
|
|
154
|
-
*/
|
|
155
|
-
export interface AggregatedValidationResult {
|
|
156
|
-
/** Overall validity */
|
|
157
|
-
valid: boolean;
|
|
158
|
-
|
|
159
|
-
/** All errors grouped by category */
|
|
160
|
-
errors: ErrorGuidance[];
|
|
161
|
-
|
|
162
|
-
/** All warnings grouped by category */
|
|
163
|
-
warnings: ErrorGuidance[];
|
|
164
|
-
|
|
165
|
-
/** Summary statistics */
|
|
166
|
-
summary: {
|
|
167
|
-
totalErrors: number;
|
|
168
|
-
totalWarnings: number;
|
|
169
|
-
byCategory: Record<ErrorCategory, { errors: number; warnings: number }>;
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
/** IDE diagnostics for all issues */
|
|
173
|
-
diagnostics: IDEDiagnostic[];
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// ============================================================================
|
|
177
|
-
// Documentation Links
|
|
178
|
-
// ============================================================================
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Documentation links for error guidance
|
|
182
|
-
*/
|
|
183
|
-
export const DOCUMENTATION_LINKS = {
|
|
184
|
-
// Stemma System documentation
|
|
185
|
-
STEMMA_PRINCIPLES: '.kiro/steering/stemma-system-principles.md',
|
|
186
|
-
COMPONENT_QUICK_REFERENCE: '.kiro/steering/Component-Quick-Reference.md',
|
|
187
|
-
COMPONENT_DEVELOPMENT_GUIDE: '.kiro/steering/Component-Development-Guide.md',
|
|
188
|
-
|
|
189
|
-
// Component family documentation
|
|
190
|
-
FORM_INPUTS_COMPONENTS: '.kiro/steering/form-inputs-components.md',
|
|
191
|
-
BUTTON_COMPONENTS: '.kiro/steering/button-components.md',
|
|
192
|
-
CONTAINER_COMPONENTS: '.kiro/steering/container-components.md',
|
|
193
|
-
ICON_COMPONENTS: '.kiro/steering/icon-components.md',
|
|
194
|
-
|
|
195
|
-
// Token documentation
|
|
196
|
-
TOKEN_QUICK_REFERENCE: '.kiro/steering/Token Quick Reference.md',
|
|
197
|
-
|
|
198
|
-
// WCAG documentation
|
|
199
|
-
WCAG_GUIDELINES: 'https://www.w3.org/WAI/WCAG21/quickref/',
|
|
200
|
-
|
|
201
|
-
// MCP query examples
|
|
202
|
-
MCP_QUERY_EXAMPLES: '.kiro/steering/Component-Quick-Reference.md#mcp-query-examples',
|
|
203
|
-
} as const;
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
// ============================================================================
|
|
207
|
-
// Error Message Templates
|
|
208
|
-
// ============================================================================
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Error message templates for component naming validation
|
|
212
|
-
*/
|
|
213
|
-
export const NAMING_ERROR_TEMPLATES: Record<ComponentNameErrorCode, ErrorGuidance> = {
|
|
214
|
-
MISSING_HYPHENS: {
|
|
215
|
-
code: 'MISSING_HYPHENS',
|
|
216
|
-
category: 'naming',
|
|
217
|
-
severity: 'error',
|
|
218
|
-
title: 'Missing Hyphens in Component Name',
|
|
219
|
-
description: 'Component names must use hyphens to separate segments following the [Family]-[Type]-[Variant] pattern.',
|
|
220
|
-
guidance: [
|
|
221
|
-
'Add hyphens between name segments',
|
|
222
|
-
'Use the pattern [Family]-[Type] or [Family]-[Type]-[Variant]',
|
|
223
|
-
'Example: "InputText" should be "Input-Text"',
|
|
224
|
-
'Example: "ButtonCTA" should be "Button-CTA"',
|
|
225
|
-
],
|
|
226
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
227
|
-
quickFix: {
|
|
228
|
-
title: 'Convert to hyphenated format',
|
|
229
|
-
type: 'replace',
|
|
230
|
-
autoApplicable: true,
|
|
231
|
-
},
|
|
232
|
-
relatedCodes: ['WRONG_CASE', 'TOO_FEW_SEGMENTS'],
|
|
233
|
-
},
|
|
234
|
-
|
|
235
|
-
WRONG_CASE: {
|
|
236
|
-
code: 'WRONG_CASE',
|
|
237
|
-
category: 'naming',
|
|
238
|
-
severity: 'error',
|
|
239
|
-
title: 'Incorrect Case in Component Name',
|
|
240
|
-
description: 'Each segment in a component name must use PascalCase (first letter uppercase).',
|
|
241
|
-
guidance: [
|
|
242
|
-
'Capitalize the first letter of each segment',
|
|
243
|
-
'Use PascalCase for each word within a segment',
|
|
244
|
-
'Short acronyms (2-3 chars like CTA, URL) can be all uppercase',
|
|
245
|
-
'Example: "input-text" should be "Input-Text"',
|
|
246
|
-
],
|
|
247
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
248
|
-
quickFix: {
|
|
249
|
-
title: 'Convert to PascalCase',
|
|
250
|
-
type: 'replace',
|
|
251
|
-
autoApplicable: true,
|
|
252
|
-
},
|
|
253
|
-
},
|
|
254
|
-
|
|
255
|
-
TOO_MANY_SEGMENTS: {
|
|
256
|
-
code: 'TOO_MANY_SEGMENTS',
|
|
257
|
-
category: 'naming',
|
|
258
|
-
severity: 'error',
|
|
259
|
-
title: 'Too Many Segments in Component Name',
|
|
260
|
-
description: 'Component names should have 2-3 segments maximum: [Family]-[Type] or [Family]-[Type]-[Variant].',
|
|
261
|
-
guidance: [
|
|
262
|
-
'Simplify the component name to 2-3 segments',
|
|
263
|
-
'Consider if some segments can be combined',
|
|
264
|
-
'Use the variant segment for specialization, not additional hierarchy',
|
|
265
|
-
'Example: "Input-Text-Email-Validation" should be "Input-Text-Email"',
|
|
266
|
-
],
|
|
267
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
268
|
-
},
|
|
269
|
-
|
|
270
|
-
TOO_FEW_SEGMENTS: {
|
|
271
|
-
code: 'TOO_FEW_SEGMENTS',
|
|
272
|
-
category: 'naming',
|
|
273
|
-
severity: 'error',
|
|
274
|
-
title: 'Too Few Segments in Component Name',
|
|
275
|
-
description: 'Component names must have at least 2 segments: [Family]-[Type].',
|
|
276
|
-
guidance: [
|
|
277
|
-
'Add a type segment to identify the component role',
|
|
278
|
-
'Use [Family]-[Type] for standalone components',
|
|
279
|
-
'Use [Family]-Base for primitive/foundational components',
|
|
280
|
-
'Example: "Input" should be "Input-Text" or "Input-Base"',
|
|
281
|
-
],
|
|
282
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
283
|
-
},
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
INVALID_SEGMENT_FORMAT: {
|
|
287
|
-
code: 'INVALID_SEGMENT_FORMAT',
|
|
288
|
-
category: 'naming',
|
|
289
|
-
severity: 'error',
|
|
290
|
-
title: 'Invalid Segment Format',
|
|
291
|
-
description: 'One or more segments in the component name have an invalid format.',
|
|
292
|
-
guidance: [
|
|
293
|
-
'Ensure each segment contains only letters and numbers',
|
|
294
|
-
'Start each segment with an uppercase letter',
|
|
295
|
-
'Avoid special characters except hyphens between segments',
|
|
296
|
-
],
|
|
297
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
298
|
-
},
|
|
299
|
-
|
|
300
|
-
RESERVED_KEYWORD_MISUSE: {
|
|
301
|
-
code: 'RESERVED_KEYWORD_MISUSE',
|
|
302
|
-
category: 'naming',
|
|
303
|
-
severity: 'error',
|
|
304
|
-
title: 'Reserved Keyword Misuse',
|
|
305
|
-
description: 'A reserved keyword is being used incorrectly in the component name.',
|
|
306
|
-
guidance: [
|
|
307
|
-
'Use "Base" for foundational/primitive components',
|
|
308
|
-
'Avoid using "Abstract", "Core", or "Default" as they are reserved',
|
|
309
|
-
'Example: Use "Container-Base" instead of "Container-Abstract"',
|
|
310
|
-
],
|
|
311
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
312
|
-
quickFix: {
|
|
313
|
-
title: 'Replace with "Base"',
|
|
314
|
-
type: 'replace',
|
|
315
|
-
replacement: 'Base',
|
|
316
|
-
autoApplicable: true,
|
|
317
|
-
},
|
|
318
|
-
},
|
|
319
|
-
|
|
320
|
-
EMPTY_SEGMENT: {
|
|
321
|
-
code: 'EMPTY_SEGMENT',
|
|
322
|
-
category: 'naming',
|
|
323
|
-
severity: 'error',
|
|
324
|
-
title: 'Empty Segment in Component Name',
|
|
325
|
-
description: 'Component name contains empty segments (consecutive hyphens or empty string).',
|
|
326
|
-
guidance: [
|
|
327
|
-
'Remove consecutive hyphens',
|
|
328
|
-
'Ensure each segment has at least one character',
|
|
329
|
-
'Example: "Input--Text" should be "Input-Text"',
|
|
330
|
-
],
|
|
331
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
332
|
-
quickFix: {
|
|
333
|
-
title: 'Remove empty segments',
|
|
334
|
-
type: 'replace',
|
|
335
|
-
autoApplicable: true,
|
|
336
|
-
},
|
|
337
|
-
},
|
|
338
|
-
|
|
339
|
-
INVALID_CHARACTERS: {
|
|
340
|
-
code: 'INVALID_CHARACTERS',
|
|
341
|
-
category: 'naming',
|
|
342
|
-
severity: 'error',
|
|
343
|
-
title: 'Invalid Characters in Component Name',
|
|
344
|
-
description: 'Component name contains characters that are not allowed.',
|
|
345
|
-
guidance: [
|
|
346
|
-
'Use only letters (a-z, A-Z), numbers (0-9), and hyphens (-)',
|
|
347
|
-
'Remove underscores, spaces, and special characters',
|
|
348
|
-
'Example: "Input_Text" should be "Input-Text"',
|
|
349
|
-
],
|
|
350
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
351
|
-
quickFix: {
|
|
352
|
-
title: 'Replace invalid characters',
|
|
353
|
-
type: 'replace',
|
|
354
|
-
autoApplicable: true,
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Warning message templates for component naming validation
|
|
362
|
-
*/
|
|
363
|
-
export const NAMING_WARNING_TEMPLATES: Record<ComponentNameWarningCode, ErrorGuidance> = {
|
|
364
|
-
BASE_NOT_AT_END: {
|
|
365
|
-
code: 'BASE_NOT_AT_END',
|
|
366
|
-
category: 'naming',
|
|
367
|
-
severity: 'warning',
|
|
368
|
-
title: '"Base" Used Incorrectly',
|
|
369
|
-
description: '"Base" is used as Type but there is also a Variant segment.',
|
|
370
|
-
guidance: [
|
|
371
|
-
'When using "Base" as Type, there should be no Variant',
|
|
372
|
-
'Consider restructuring: [Family]-Base or [Family]-[Type]-[Variant]',
|
|
373
|
-
'Example: "Container-Base-Large" should be "Container-Large" or "Container-Base"',
|
|
374
|
-
],
|
|
375
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
376
|
-
},
|
|
377
|
-
|
|
378
|
-
UNUSUAL_FAMILY_NAME: {
|
|
379
|
-
code: 'UNUSUAL_FAMILY_NAME',
|
|
380
|
-
category: 'naming',
|
|
381
|
-
severity: 'warning',
|
|
382
|
-
title: 'Unknown Component Family',
|
|
383
|
-
description: 'The family name is not in the list of known Stemma System families.',
|
|
384
|
-
guidance: [
|
|
385
|
-
'Known families: Input, Button, Container, Icon, Modal, Avatar, Badge, DataDisplay, Divider, Loading, Nav',
|
|
386
|
-
'If this is a new family, ensure it is documented in the Component Quick Reference',
|
|
387
|
-
'Consider if the component belongs to an existing family',
|
|
388
|
-
],
|
|
389
|
-
documentationLink: DOCUMENTATION_LINKS.COMPONENT_QUICK_REFERENCE,
|
|
390
|
-
},
|
|
391
|
-
|
|
392
|
-
LONG_SEGMENT_NAME: {
|
|
393
|
-
code: 'LONG_SEGMENT_NAME',
|
|
394
|
-
category: 'naming',
|
|
395
|
-
severity: 'warning',
|
|
396
|
-
title: 'Long Segment Name',
|
|
397
|
-
description: 'A segment in the component name is unusually long (over 20 characters).',
|
|
398
|
-
guidance: [
|
|
399
|
-
'Consider using a shorter, more concise name',
|
|
400
|
-
'Long names can be harder to read and type',
|
|
401
|
-
'Abbreviations are acceptable if they are well-known (e.g., CTA, URL)',
|
|
402
|
-
],
|
|
403
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
404
|
-
},
|
|
405
|
-
};
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
/**
|
|
409
|
-
* Error message templates for token usage validation
|
|
410
|
-
*/
|
|
411
|
-
export const TOKEN_USAGE_ERROR_TEMPLATES: Record<TokenUsageErrorCode, ErrorGuidance> = {
|
|
412
|
-
INLINE_STYLE_COLOR: {
|
|
413
|
-
code: 'INLINE_STYLE_COLOR',
|
|
414
|
-
category: 'token-usage',
|
|
415
|
-
severity: 'error',
|
|
416
|
-
title: 'Inline Color Style Detected',
|
|
417
|
-
description: 'A hardcoded color value was found instead of a design token reference.',
|
|
418
|
-
guidance: [
|
|
419
|
-
'Replace inline color with a semantic color token',
|
|
420
|
-
'Use tokens like color.primary, color.text.default, color.background',
|
|
421
|
-
'For state colors, use blend tokens like blend.hoverDarker',
|
|
422
|
-
'Query MCP for available color tokens: get_section("Token Quick Reference.md", "Color Tokens")',
|
|
423
|
-
],
|
|
424
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
425
|
-
quickFix: {
|
|
426
|
-
title: 'Replace with color token',
|
|
427
|
-
type: 'replace',
|
|
428
|
-
autoApplicable: false,
|
|
429
|
-
},
|
|
430
|
-
},
|
|
431
|
-
|
|
432
|
-
INLINE_STYLE_SPACING: {
|
|
433
|
-
code: 'INLINE_STYLE_SPACING',
|
|
434
|
-
category: 'token-usage',
|
|
435
|
-
severity: 'error',
|
|
436
|
-
title: 'Inline Spacing Style Detected',
|
|
437
|
-
description: 'A hardcoded spacing value was found instead of a design token reference.',
|
|
438
|
-
guidance: [
|
|
439
|
-
'Replace inline spacing with a semantic spacing token',
|
|
440
|
-
'Use tokens like space.inset.100, space.inline.150, space.grouped.tight',
|
|
441
|
-
'Spacing tokens follow the 8px baseline grid',
|
|
442
|
-
'Query MCP for available spacing tokens: get_section("Token Quick Reference.md", "Spacing Tokens")',
|
|
443
|
-
],
|
|
444
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
445
|
-
quickFix: {
|
|
446
|
-
title: 'Replace with spacing token',
|
|
447
|
-
type: 'replace',
|
|
448
|
-
autoApplicable: false,
|
|
449
|
-
},
|
|
450
|
-
},
|
|
451
|
-
|
|
452
|
-
INLINE_STYLE_TYPOGRAPHY: {
|
|
453
|
-
code: 'INLINE_STYLE_TYPOGRAPHY',
|
|
454
|
-
category: 'token-usage',
|
|
455
|
-
severity: 'error',
|
|
456
|
-
title: 'Inline Typography Style Detected',
|
|
457
|
-
description: 'A hardcoded typography value was found instead of a design token reference.',
|
|
458
|
-
guidance: [
|
|
459
|
-
'Replace inline typography with a semantic typography token',
|
|
460
|
-
'Use tokens like typography.body, typography.labelMd, typography.heading',
|
|
461
|
-
'Typography tokens include fontSize, lineHeight, fontWeight, and letterSpacing',
|
|
462
|
-
'Query MCP for available typography tokens: get_section("Token Quick Reference.md", "Typography Tokens")',
|
|
463
|
-
],
|
|
464
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
465
|
-
quickFix: {
|
|
466
|
-
title: 'Replace with typography token',
|
|
467
|
-
type: 'replace',
|
|
468
|
-
autoApplicable: false,
|
|
469
|
-
},
|
|
470
|
-
},
|
|
471
|
-
|
|
472
|
-
INLINE_STYLE_BORDER: {
|
|
473
|
-
code: 'INLINE_STYLE_BORDER',
|
|
474
|
-
category: 'token-usage',
|
|
475
|
-
severity: 'error',
|
|
476
|
-
title: 'Inline Border Style Detected',
|
|
477
|
-
description: 'A hardcoded border value was found instead of a design token reference.',
|
|
478
|
-
guidance: [
|
|
479
|
-
'Replace inline border with a semantic border token',
|
|
480
|
-
'Use tokens like border.default, radius.100, radius.150',
|
|
481
|
-
'Border radius tokens follow the spacing scale',
|
|
482
|
-
'Query MCP for available border tokens: get_section("Token Quick Reference.md", "Border Tokens")',
|
|
483
|
-
],
|
|
484
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
485
|
-
quickFix: {
|
|
486
|
-
title: 'Replace with border token',
|
|
487
|
-
type: 'replace',
|
|
488
|
-
autoApplicable: false,
|
|
489
|
-
},
|
|
490
|
-
},
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
HARDCODED_COLOR: {
|
|
494
|
-
code: 'HARDCODED_COLOR',
|
|
495
|
-
category: 'token-usage',
|
|
496
|
-
severity: 'error',
|
|
497
|
-
title: 'Hardcoded Color Value',
|
|
498
|
-
description: 'A hex or RGB color value was found that should use a design token.',
|
|
499
|
-
guidance: [
|
|
500
|
-
'Replace hardcoded color with a semantic color token',
|
|
501
|
-
'Semantic tokens ensure consistency across themes and platforms',
|
|
502
|
-
'Example: Replace "#FF0000" with color.error or color.danger',
|
|
503
|
-
'Query MCP for color token mapping: get_document_full("Token Quick Reference.md")',
|
|
504
|
-
],
|
|
505
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
506
|
-
quickFix: {
|
|
507
|
-
title: 'Replace with semantic color token',
|
|
508
|
-
type: 'replace',
|
|
509
|
-
autoApplicable: false,
|
|
510
|
-
},
|
|
511
|
-
},
|
|
512
|
-
|
|
513
|
-
HARDCODED_SPACING: {
|
|
514
|
-
code: 'HARDCODED_SPACING',
|
|
515
|
-
category: 'token-usage',
|
|
516
|
-
severity: 'error',
|
|
517
|
-
title: 'Hardcoded Spacing Value',
|
|
518
|
-
description: 'A pixel or rem spacing value was found that should use a design token.',
|
|
519
|
-
guidance: [
|
|
520
|
-
'Replace hardcoded spacing with a semantic spacing token',
|
|
521
|
-
'Spacing tokens ensure consistent rhythm across the design system',
|
|
522
|
-
'Example: Replace "16px" with space.inset.200',
|
|
523
|
-
'Query MCP for spacing token mapping: get_section("Token Quick Reference.md", "Spacing Tokens")',
|
|
524
|
-
],
|
|
525
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
526
|
-
quickFix: {
|
|
527
|
-
title: 'Replace with spacing token',
|
|
528
|
-
type: 'replace',
|
|
529
|
-
autoApplicable: false,
|
|
530
|
-
},
|
|
531
|
-
},
|
|
532
|
-
|
|
533
|
-
HARDCODED_FONT_SIZE: {
|
|
534
|
-
code: 'HARDCODED_FONT_SIZE',
|
|
535
|
-
category: 'token-usage',
|
|
536
|
-
severity: 'error',
|
|
537
|
-
title: 'Hardcoded Font Size',
|
|
538
|
-
description: 'A hardcoded font size was found that should use a typography token.',
|
|
539
|
-
guidance: [
|
|
540
|
-
'Replace hardcoded font size with a typography token',
|
|
541
|
-
'Typography tokens include fontSize as part of a complete type style',
|
|
542
|
-
'Example: Replace "14px" with typography.bodySm',
|
|
543
|
-
'Query MCP for typography tokens: get_section("Token Quick Reference.md", "Typography Tokens")',
|
|
544
|
-
],
|
|
545
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
546
|
-
quickFix: {
|
|
547
|
-
title: 'Replace with typography token',
|
|
548
|
-
type: 'replace',
|
|
549
|
-
autoApplicable: false,
|
|
550
|
-
},
|
|
551
|
-
},
|
|
552
|
-
|
|
553
|
-
HARDCODED_BORDER_RADIUS: {
|
|
554
|
-
code: 'HARDCODED_BORDER_RADIUS',
|
|
555
|
-
category: 'token-usage',
|
|
556
|
-
severity: 'error',
|
|
557
|
-
title: 'Hardcoded Border Radius',
|
|
558
|
-
description: 'A hardcoded border radius was found that should use a radius token.',
|
|
559
|
-
guidance: [
|
|
560
|
-
'Replace hardcoded border radius with a radius token',
|
|
561
|
-
'Radius tokens ensure consistent corner rounding',
|
|
562
|
-
'Example: Replace "8px" with radius.100',
|
|
563
|
-
'Query MCP for radius tokens: get_section("Token Quick Reference.md", "Border Tokens")',
|
|
564
|
-
],
|
|
565
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
566
|
-
quickFix: {
|
|
567
|
-
title: 'Replace with radius token',
|
|
568
|
-
type: 'replace',
|
|
569
|
-
autoApplicable: false,
|
|
570
|
-
},
|
|
571
|
-
},
|
|
572
|
-
|
|
573
|
-
MISSING_REQUIRED_TOKEN: {
|
|
574
|
-
code: 'MISSING_REQUIRED_TOKEN',
|
|
575
|
-
category: 'token-usage',
|
|
576
|
-
severity: 'error',
|
|
577
|
-
title: 'Missing Required Token',
|
|
578
|
-
description: 'A token required by the component schema is not being used.',
|
|
579
|
-
guidance: [
|
|
580
|
-
'Check the component schema for required tokens',
|
|
581
|
-
'Ensure all required tokens are referenced in the implementation',
|
|
582
|
-
'Required tokens are defined in the component\'s .schema.yaml file',
|
|
583
|
-
'Query MCP for component schema: get_document_full("[component]-components.md")',
|
|
584
|
-
],
|
|
585
|
-
documentationLink: DOCUMENTATION_LINKS.COMPONENT_DEVELOPMENT_GUIDE,
|
|
586
|
-
},
|
|
587
|
-
|
|
588
|
-
INVALID_TOKEN_REFERENCE: {
|
|
589
|
-
code: 'INVALID_TOKEN_REFERENCE',
|
|
590
|
-
category: 'token-usage',
|
|
591
|
-
severity: 'error',
|
|
592
|
-
title: 'Invalid Token Reference',
|
|
593
|
-
description: 'A token reference was found that does not match any known token.',
|
|
594
|
-
guidance: [
|
|
595
|
-
'Verify the token name is spelled correctly',
|
|
596
|
-
'Check that the token exists in the design system',
|
|
597
|
-
'Use the Token Quick Reference to find valid token names',
|
|
598
|
-
'Query MCP for available tokens: get_documentation_map()',
|
|
599
|
-
],
|
|
600
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
601
|
-
},
|
|
602
|
-
};
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
/**
|
|
606
|
-
* Warning message templates for token usage validation
|
|
607
|
-
*/
|
|
608
|
-
export const TOKEN_USAGE_WARNING_TEMPLATES: Record<TokenUsageWarningCode, ErrorGuidance> = {
|
|
609
|
-
OPACITY_WORKAROUND: {
|
|
610
|
-
code: 'OPACITY_WORKAROUND',
|
|
611
|
-
category: 'token-usage',
|
|
612
|
-
severity: 'warning',
|
|
613
|
-
title: 'Opacity Workaround Detected',
|
|
614
|
-
description: 'An opacity value is being used that may be a workaround for state colors.',
|
|
615
|
-
guidance: [
|
|
616
|
-
'Consider using blend tokens instead of opacity for state colors',
|
|
617
|
-
'Blend tokens like blend.hoverDarker provide consistent state styling',
|
|
618
|
-
'Opacity workarounds can cause accessibility issues with contrast',
|
|
619
|
-
],
|
|
620
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
621
|
-
},
|
|
622
|
-
|
|
623
|
-
FILTERBRIGHTNESS_WORKAROUND: {
|
|
624
|
-
code: 'FILTERBRIGHTNESS_WORKAROUND',
|
|
625
|
-
category: 'token-usage',
|
|
626
|
-
severity: 'warning',
|
|
627
|
-
title: 'Filter Brightness Workaround Detected',
|
|
628
|
-
description: 'A CSS filter brightness is being used that may be a workaround for state colors.',
|
|
629
|
-
guidance: [
|
|
630
|
-
'Consider using blend tokens instead of filter brightness',
|
|
631
|
-
'Blend tokens provide more predictable color transformations',
|
|
632
|
-
'Filter brightness can cause unexpected results on different backgrounds',
|
|
633
|
-
],
|
|
634
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
635
|
-
},
|
|
636
|
-
|
|
637
|
-
SCALEEFFECT_WORKAROUND: {
|
|
638
|
-
code: 'SCALEEFFECT_WORKAROUND',
|
|
639
|
-
category: 'token-usage',
|
|
640
|
-
severity: 'warning',
|
|
641
|
-
title: 'Scale Effect Workaround Detected',
|
|
642
|
-
description: 'A SwiftUI scaleEffect is being used that may be a workaround for pressed states.',
|
|
643
|
-
guidance: [
|
|
644
|
-
'Consider using blend tokens for pressed state styling',
|
|
645
|
-
'Scale effects can cause layout shifts and accessibility issues',
|
|
646
|
-
'Blend tokens provide consistent pressed state appearance',
|
|
647
|
-
],
|
|
648
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
649
|
-
},
|
|
650
|
-
|
|
651
|
-
RIPPLE_WORKAROUND: {
|
|
652
|
-
code: 'RIPPLE_WORKAROUND',
|
|
653
|
-
category: 'token-usage',
|
|
654
|
-
severity: 'warning',
|
|
655
|
-
title: 'Ripple Workaround Detected',
|
|
656
|
-
description: 'A Jetpack Compose ripple is being used that may need blend token integration.',
|
|
657
|
-
guidance: [
|
|
658
|
-
'Ensure ripple colors use blend tokens for consistency',
|
|
659
|
-
'Blend tokens can be applied to ripple effects for state colors',
|
|
660
|
-
'Consider the interaction between ripple and blend tokens',
|
|
661
|
-
],
|
|
662
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
663
|
-
},
|
|
664
|
-
|
|
665
|
-
MAGIC_NUMBER: {
|
|
666
|
-
code: 'MAGIC_NUMBER',
|
|
667
|
-
category: 'token-usage',
|
|
668
|
-
severity: 'warning',
|
|
669
|
-
title: 'Magic Number Detected',
|
|
670
|
-
description: 'A numeric value was found that may be a magic number.',
|
|
671
|
-
guidance: [
|
|
672
|
-
'Consider if this value should be a design token',
|
|
673
|
-
'Magic numbers make maintenance difficult',
|
|
674
|
-
'If the value is intentional, add a comment explaining why',
|
|
675
|
-
],
|
|
676
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
677
|
-
},
|
|
678
|
-
|
|
679
|
-
UNKNOWN_TOKEN_PATTERN: {
|
|
680
|
-
code: 'UNKNOWN_TOKEN_PATTERN',
|
|
681
|
-
category: 'token-usage',
|
|
682
|
-
severity: 'warning',
|
|
683
|
-
title: 'Unknown Token Pattern',
|
|
684
|
-
description: 'A token-like pattern was found that does not match known token formats.',
|
|
685
|
-
guidance: [
|
|
686
|
-
'Verify the token reference format is correct',
|
|
687
|
-
'Check the Token Quick Reference for valid token patterns',
|
|
688
|
-
'Ensure the token exists in the design system',
|
|
689
|
-
],
|
|
690
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
691
|
-
},
|
|
692
|
-
|
|
693
|
-
DEPRECATED_TOKEN: {
|
|
694
|
-
code: 'DEPRECATED_TOKEN',
|
|
695
|
-
category: 'token-usage',
|
|
696
|
-
severity: 'warning',
|
|
697
|
-
title: 'Deprecated Token Usage',
|
|
698
|
-
description: 'A deprecated token is being used that should be replaced.',
|
|
699
|
-
guidance: [
|
|
700
|
-
'Check the Token Quick Reference for the replacement token',
|
|
701
|
-
'Deprecated tokens may be removed in future versions',
|
|
702
|
-
'Update to the recommended replacement token',
|
|
703
|
-
],
|
|
704
|
-
documentationLink: DOCUMENTATION_LINKS.TOKEN_QUICK_REFERENCE,
|
|
705
|
-
},
|
|
706
|
-
};
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
/**
|
|
710
|
-
* Error message templates for property and accessibility validation
|
|
711
|
-
*/
|
|
712
|
-
export const PROPERTY_ACCESSIBILITY_ERROR_TEMPLATES: Record<PropertyAccessibilityErrorCode, ErrorGuidance> = {
|
|
713
|
-
MISSING_REQUIRED_PROPERTY: {
|
|
714
|
-
code: 'MISSING_REQUIRED_PROPERTY',
|
|
715
|
-
category: 'property',
|
|
716
|
-
severity: 'error',
|
|
717
|
-
title: 'Missing Required Property',
|
|
718
|
-
description: 'A required property is not provided for the component.',
|
|
719
|
-
guidance: [
|
|
720
|
-
'Check the component schema for required properties',
|
|
721
|
-
'Add the missing property with an appropriate value',
|
|
722
|
-
'Required properties are marked with "required: true" in the schema',
|
|
723
|
-
'Query MCP for component schema: get_document_full("[family]-components.md")',
|
|
724
|
-
],
|
|
725
|
-
documentationLink: DOCUMENTATION_LINKS.COMPONENT_DEVELOPMENT_GUIDE,
|
|
726
|
-
},
|
|
727
|
-
|
|
728
|
-
INVALID_PROPERTY_TYPE: {
|
|
729
|
-
code: 'INVALID_PROPERTY_TYPE',
|
|
730
|
-
category: 'property',
|
|
731
|
-
severity: 'error',
|
|
732
|
-
title: 'Invalid Property Type',
|
|
733
|
-
description: 'A property value has the wrong type.',
|
|
734
|
-
guidance: [
|
|
735
|
-
'Check the expected type in the component schema',
|
|
736
|
-
'Convert the value to the correct type',
|
|
737
|
-
'Common types: string, boolean, number',
|
|
738
|
-
],
|
|
739
|
-
documentationLink: DOCUMENTATION_LINKS.COMPONENT_DEVELOPMENT_GUIDE,
|
|
740
|
-
},
|
|
741
|
-
|
|
742
|
-
INVALID_PROPERTY_VALUE: {
|
|
743
|
-
code: 'INVALID_PROPERTY_VALUE',
|
|
744
|
-
category: 'property',
|
|
745
|
-
severity: 'error',
|
|
746
|
-
title: 'Invalid Property Value',
|
|
747
|
-
description: 'A property value is not in the allowed set of values.',
|
|
748
|
-
guidance: [
|
|
749
|
-
'Check the allowed values in the component schema',
|
|
750
|
-
'Use one of the valid options',
|
|
751
|
-
'Union types list all allowed values',
|
|
752
|
-
],
|
|
753
|
-
documentationLink: DOCUMENTATION_LINKS.COMPONENT_DEVELOPMENT_GUIDE,
|
|
754
|
-
},
|
|
755
|
-
|
|
756
|
-
MISSING_ACCESSIBILITY_LABEL: {
|
|
757
|
-
code: 'MISSING_ACCESSIBILITY_LABEL',
|
|
758
|
-
category: 'accessibility',
|
|
759
|
-
severity: 'error',
|
|
760
|
-
title: 'Missing Accessibility Label',
|
|
761
|
-
description: 'An interactive component is missing an accessibility label.',
|
|
762
|
-
guidance: [
|
|
763
|
-
'Add a "label" property for visible labels',
|
|
764
|
-
'Add "accessibilityLabel" for screen reader only labels',
|
|
765
|
-
'All interactive elements must have accessible names (WCAG 4.1.2)',
|
|
766
|
-
'For icon-only buttons, use accessibilityLabel to describe the action',
|
|
767
|
-
],
|
|
768
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
769
|
-
wcag: '4.1.2',
|
|
770
|
-
},
|
|
771
|
-
|
|
772
|
-
MISSING_FOCUS_INDICATOR: {
|
|
773
|
-
code: 'MISSING_FOCUS_INDICATOR',
|
|
774
|
-
category: 'accessibility',
|
|
775
|
-
severity: 'error',
|
|
776
|
-
title: 'Missing Focus Indicator',
|
|
777
|
-
description: 'An interactive component does not have a visible focus indicator.',
|
|
778
|
-
guidance: [
|
|
779
|
-
'Ensure the component has a visible focus ring',
|
|
780
|
-
'Use focus ring tokens for consistent styling',
|
|
781
|
-
'Focus indicators must be visible (WCAG 2.4.7)',
|
|
782
|
-
'Test with keyboard navigation to verify focus visibility',
|
|
783
|
-
],
|
|
784
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
785
|
-
wcag: '2.4.7',
|
|
786
|
-
},
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
INSUFFICIENT_TOUCH_TARGET: {
|
|
790
|
-
code: 'INSUFFICIENT_TOUCH_TARGET',
|
|
791
|
-
category: 'accessibility',
|
|
792
|
-
severity: 'error',
|
|
793
|
-
title: 'Insufficient Touch Target Size',
|
|
794
|
-
description: 'The touch target size is below the minimum required for accessibility.',
|
|
795
|
-
guidance: [
|
|
796
|
-
'Increase the touch target to at least 24x24 CSS pixels (WCAG 2.5.8)',
|
|
797
|
-
'Recommended size is 44x44 CSS pixels (WCAG 2.5.5)',
|
|
798
|
-
'iOS Human Interface Guidelines recommend 48x48 points',
|
|
799
|
-
'Use padding to increase touch target without changing visual size',
|
|
800
|
-
],
|
|
801
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
802
|
-
wcag: '2.5.8',
|
|
803
|
-
},
|
|
804
|
-
|
|
805
|
-
MISSING_ERROR_IDENTIFICATION: {
|
|
806
|
-
code: 'MISSING_ERROR_IDENTIFICATION',
|
|
807
|
-
category: 'accessibility',
|
|
808
|
-
severity: 'error',
|
|
809
|
-
title: 'Missing Error Identification',
|
|
810
|
-
description: 'Form input errors are not properly identified to users.',
|
|
811
|
-
guidance: [
|
|
812
|
-
'Add error message support to form inputs',
|
|
813
|
-
'Use aria-invalid and aria-describedby for error states',
|
|
814
|
-
'Error messages must be programmatically associated (WCAG 3.3.1)',
|
|
815
|
-
'Provide clear, specific error messages',
|
|
816
|
-
],
|
|
817
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
818
|
-
wcag: '3.3.1',
|
|
819
|
-
},
|
|
820
|
-
|
|
821
|
-
MISSING_KEYBOARD_SUPPORT: {
|
|
822
|
-
code: 'MISSING_KEYBOARD_SUPPORT',
|
|
823
|
-
category: 'accessibility',
|
|
824
|
-
severity: 'error',
|
|
825
|
-
title: 'Missing Keyboard Support',
|
|
826
|
-
description: 'An interactive component cannot be operated with keyboard.',
|
|
827
|
-
guidance: [
|
|
828
|
-
'Ensure the component is focusable (tabindex)',
|
|
829
|
-
'Add keyboard event handlers for activation',
|
|
830
|
-
'All functionality must be keyboard accessible (WCAG 2.1.1)',
|
|
831
|
-
'Test with Tab, Enter, Space, and arrow keys',
|
|
832
|
-
],
|
|
833
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
834
|
-
wcag: '2.1.1',
|
|
835
|
-
},
|
|
836
|
-
|
|
837
|
-
SCHEMA_NOT_FOUND: {
|
|
838
|
-
code: 'SCHEMA_NOT_FOUND',
|
|
839
|
-
category: 'schema',
|
|
840
|
-
severity: 'error',
|
|
841
|
-
title: 'Component Schema Not Found',
|
|
842
|
-
description: 'The component schema file could not be found.',
|
|
843
|
-
guidance: [
|
|
844
|
-
'Ensure the schema file exists at the expected path',
|
|
845
|
-
'Schema files should be named [Component-Name].schema.yaml',
|
|
846
|
-
'Schema files should be in the component directory',
|
|
847
|
-
'Create a schema file following the Stemma System template',
|
|
848
|
-
],
|
|
849
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
850
|
-
},
|
|
851
|
-
|
|
852
|
-
SCHEMA_PARSE_ERROR: {
|
|
853
|
-
code: 'SCHEMA_PARSE_ERROR',
|
|
854
|
-
category: 'schema',
|
|
855
|
-
severity: 'error',
|
|
856
|
-
title: 'Schema Parse Error',
|
|
857
|
-
description: 'The component schema file could not be parsed.',
|
|
858
|
-
guidance: [
|
|
859
|
-
'Check the schema file for YAML syntax errors',
|
|
860
|
-
'Ensure proper indentation (2 spaces)',
|
|
861
|
-
'Verify all required fields are present',
|
|
862
|
-
'Use a YAML validator to check syntax',
|
|
863
|
-
],
|
|
864
|
-
documentationLink: DOCUMENTATION_LINKS.STEMMA_PRINCIPLES,
|
|
865
|
-
},
|
|
866
|
-
};
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
/**
|
|
870
|
-
* Warning message templates for property and accessibility validation
|
|
871
|
-
*/
|
|
872
|
-
export const PROPERTY_ACCESSIBILITY_WARNING_TEMPLATES: Record<PropertyAccessibilityWarningCode, ErrorGuidance> = {
|
|
873
|
-
OPTIONAL_PROPERTY_MISSING: {
|
|
874
|
-
code: 'OPTIONAL_PROPERTY_MISSING',
|
|
875
|
-
category: 'property',
|
|
876
|
-
severity: 'info',
|
|
877
|
-
title: 'Optional Property Not Set',
|
|
878
|
-
description: 'An optional property that could improve the component is not set.',
|
|
879
|
-
guidance: [
|
|
880
|
-
'Consider adding this property for better functionality',
|
|
881
|
-
'Optional properties enhance but are not required',
|
|
882
|
-
'Check the component schema for property descriptions',
|
|
883
|
-
],
|
|
884
|
-
documentationLink: DOCUMENTATION_LINKS.COMPONENT_DEVELOPMENT_GUIDE,
|
|
885
|
-
},
|
|
886
|
-
|
|
887
|
-
DEPRECATED_PROPERTY: {
|
|
888
|
-
code: 'DEPRECATED_PROPERTY',
|
|
889
|
-
category: 'property',
|
|
890
|
-
severity: 'warning',
|
|
891
|
-
title: 'Deprecated Property Usage',
|
|
892
|
-
description: 'A deprecated property is being used.',
|
|
893
|
-
guidance: [
|
|
894
|
-
'Check the component schema for the replacement property',
|
|
895
|
-
'Deprecated properties may be removed in future versions',
|
|
896
|
-
'Update to the recommended replacement',
|
|
897
|
-
],
|
|
898
|
-
documentationLink: DOCUMENTATION_LINKS.COMPONENT_DEVELOPMENT_GUIDE,
|
|
899
|
-
},
|
|
900
|
-
|
|
901
|
-
ACCESSIBILITY_ENHANCEMENT_AVAILABLE: {
|
|
902
|
-
code: 'ACCESSIBILITY_ENHANCEMENT_AVAILABLE',
|
|
903
|
-
category: 'accessibility',
|
|
904
|
-
severity: 'info',
|
|
905
|
-
title: 'Accessibility Enhancement Available',
|
|
906
|
-
description: 'An accessibility enhancement is available for this component.',
|
|
907
|
-
guidance: [
|
|
908
|
-
'Consider adding the suggested accessibility feature',
|
|
909
|
-
'Enhancements improve the experience for all users',
|
|
910
|
-
'Check WCAG guidelines for best practices',
|
|
911
|
-
],
|
|
912
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
913
|
-
},
|
|
914
|
-
|
|
915
|
-
TOUCH_TARGET_SUBOPTIMAL: {
|
|
916
|
-
code: 'TOUCH_TARGET_SUBOPTIMAL',
|
|
917
|
-
category: 'accessibility',
|
|
918
|
-
severity: 'warning',
|
|
919
|
-
title: 'Touch Target Size Suboptimal',
|
|
920
|
-
description: 'The touch target size meets minimum but is below recommended size.',
|
|
921
|
-
guidance: [
|
|
922
|
-
'Consider increasing to 44x44 CSS pixels (WCAG 2.5.5)',
|
|
923
|
-
'Larger touch targets improve usability for all users',
|
|
924
|
-
'iOS Human Interface Guidelines recommend 48x48 points',
|
|
925
|
-
],
|
|
926
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
927
|
-
wcag: '2.5.5',
|
|
928
|
-
},
|
|
929
|
-
|
|
930
|
-
MISSING_HELPER_TEXT: {
|
|
931
|
-
code: 'MISSING_HELPER_TEXT',
|
|
932
|
-
category: 'accessibility',
|
|
933
|
-
severity: 'info',
|
|
934
|
-
title: 'Missing Helper Text',
|
|
935
|
-
description: 'Form input could benefit from helper text.',
|
|
936
|
-
guidance: [
|
|
937
|
-
'Consider adding helper text to guide users',
|
|
938
|
-
'Helper text improves form completion rates',
|
|
939
|
-
'Use aria-describedby to associate helper text',
|
|
940
|
-
],
|
|
941
|
-
documentationLink: DOCUMENTATION_LINKS.WCAG_GUIDELINES,
|
|
942
|
-
wcag: '3.3.2',
|
|
943
|
-
},
|
|
944
|
-
};
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
// ============================================================================
|
|
948
|
-
// Core Functions
|
|
949
|
-
// ============================================================================
|
|
950
|
-
|
|
951
|
-
/**
|
|
952
|
-
* Get error guidance for a specific error code
|
|
953
|
-
*/
|
|
954
|
-
export function getErrorGuidance(code: string): ErrorGuidance | undefined {
|
|
955
|
-
// Check naming errors
|
|
956
|
-
if (code in NAMING_ERROR_TEMPLATES) {
|
|
957
|
-
return NAMING_ERROR_TEMPLATES[code as ComponentNameErrorCode];
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
// Check naming warnings
|
|
961
|
-
if (code in NAMING_WARNING_TEMPLATES) {
|
|
962
|
-
return NAMING_WARNING_TEMPLATES[code as ComponentNameWarningCode];
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
// Check token usage errors
|
|
966
|
-
if (code in TOKEN_USAGE_ERROR_TEMPLATES) {
|
|
967
|
-
return TOKEN_USAGE_ERROR_TEMPLATES[code as TokenUsageErrorCode];
|
|
968
|
-
}
|
|
969
|
-
|
|
970
|
-
// Check token usage warnings
|
|
971
|
-
if (code in TOKEN_USAGE_WARNING_TEMPLATES) {
|
|
972
|
-
return TOKEN_USAGE_WARNING_TEMPLATES[code as TokenUsageWarningCode];
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
// Check property/accessibility errors
|
|
976
|
-
if (code in PROPERTY_ACCESSIBILITY_ERROR_TEMPLATES) {
|
|
977
|
-
return PROPERTY_ACCESSIBILITY_ERROR_TEMPLATES[code as PropertyAccessibilityErrorCode];
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
// Check property/accessibility warnings
|
|
981
|
-
if (code in PROPERTY_ACCESSIBILITY_WARNING_TEMPLATES) {
|
|
982
|
-
return PROPERTY_ACCESSIBILITY_WARNING_TEMPLATES[code as PropertyAccessibilityWarningCode];
|
|
983
|
-
}
|
|
984
|
-
|
|
985
|
-
return undefined;
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
/**
|
|
989
|
-
* Get all error guidance entries for a category
|
|
990
|
-
*/
|
|
991
|
-
export function getGuidanceByCategory(category: ErrorCategory): ErrorGuidance[] {
|
|
992
|
-
const allGuidance: ErrorGuidance[] = [
|
|
993
|
-
...Object.values(NAMING_ERROR_TEMPLATES),
|
|
994
|
-
...Object.values(NAMING_WARNING_TEMPLATES),
|
|
995
|
-
...Object.values(TOKEN_USAGE_ERROR_TEMPLATES),
|
|
996
|
-
...Object.values(TOKEN_USAGE_WARNING_TEMPLATES),
|
|
997
|
-
...Object.values(PROPERTY_ACCESSIBILITY_ERROR_TEMPLATES),
|
|
998
|
-
...Object.values(PROPERTY_ACCESSIBILITY_WARNING_TEMPLATES),
|
|
999
|
-
];
|
|
1000
|
-
|
|
1001
|
-
return allGuidance.filter(g => g.category === category);
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
/**
|
|
1005
|
-
* Get all error guidance entries for a severity level
|
|
1006
|
-
*/
|
|
1007
|
-
export function getGuidanceBySeverity(severity: ErrorSeverity): ErrorGuidance[] {
|
|
1008
|
-
const allGuidance: ErrorGuidance[] = [
|
|
1009
|
-
...Object.values(NAMING_ERROR_TEMPLATES),
|
|
1010
|
-
...Object.values(NAMING_WARNING_TEMPLATES),
|
|
1011
|
-
...Object.values(TOKEN_USAGE_ERROR_TEMPLATES),
|
|
1012
|
-
...Object.values(TOKEN_USAGE_WARNING_TEMPLATES),
|
|
1013
|
-
...Object.values(PROPERTY_ACCESSIBILITY_ERROR_TEMPLATES),
|
|
1014
|
-
...Object.values(PROPERTY_ACCESSIBILITY_WARNING_TEMPLATES),
|
|
1015
|
-
];
|
|
1016
|
-
|
|
1017
|
-
return allGuidance.filter(g => g.severity === severity);
|
|
1018
|
-
}
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
/**
|
|
1022
|
-
* Convert severity to IDE diagnostic severity number
|
|
1023
|
-
*/
|
|
1024
|
-
function severityToNumber(severity: ErrorSeverity): 1 | 2 | 3 | 4 {
|
|
1025
|
-
switch (severity) {
|
|
1026
|
-
case 'error': return 1;
|
|
1027
|
-
case 'warning': return 2;
|
|
1028
|
-
case 'info': return 3;
|
|
1029
|
-
case 'hint': return 4;
|
|
1030
|
-
default: return 1;
|
|
1031
|
-
}
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
/**
|
|
1035
|
-
* Create an IDE diagnostic from an error guidance entry
|
|
1036
|
-
*/
|
|
1037
|
-
export function createIDEDiagnostic(
|
|
1038
|
-
guidance: ErrorGuidance,
|
|
1039
|
-
filePath: string,
|
|
1040
|
-
line: number = 1,
|
|
1041
|
-
column: number = 1,
|
|
1042
|
-
endLine?: number,
|
|
1043
|
-
endColumn?: number
|
|
1044
|
-
): IDEDiagnostic {
|
|
1045
|
-
const diagnostic: IDEDiagnostic = {
|
|
1046
|
-
severity: severityToNumber(guidance.severity),
|
|
1047
|
-
message: `${guidance.title}: ${guidance.description}`,
|
|
1048
|
-
code: guidance.code,
|
|
1049
|
-
source: 'stemma-system',
|
|
1050
|
-
range: {
|
|
1051
|
-
start: { line: line - 1, character: column - 1 },
|
|
1052
|
-
end: { line: (endLine || line) - 1, character: (endColumn || column + 10) - 1 },
|
|
1053
|
-
},
|
|
1054
|
-
};
|
|
1055
|
-
|
|
1056
|
-
// Add related information if documentation link exists
|
|
1057
|
-
if (guidance.documentationLink) {
|
|
1058
|
-
diagnostic.relatedInformation = [{
|
|
1059
|
-
location: {
|
|
1060
|
-
uri: guidance.documentationLink,
|
|
1061
|
-
range: { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } },
|
|
1062
|
-
},
|
|
1063
|
-
message: `See documentation: ${guidance.documentationLink}`,
|
|
1064
|
-
}];
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
// Add quick fix if available
|
|
1068
|
-
if (guidance.quickFix && guidance.quickFix.autoApplicable) {
|
|
1069
|
-
diagnostic.codeActions = [{
|
|
1070
|
-
title: guidance.quickFix.title,
|
|
1071
|
-
kind: 'quickfix',
|
|
1072
|
-
}];
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
return diagnostic;
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
/**
|
|
1080
|
-
* Convert component naming validation result to error guidance
|
|
1081
|
-
*/
|
|
1082
|
-
export function convertNamingResultToGuidance(
|
|
1083
|
-
result: ComponentNameValidationResult
|
|
1084
|
-
): { errors: ErrorGuidance[]; warnings: ErrorGuidance[] } {
|
|
1085
|
-
const errors: ErrorGuidance[] = [];
|
|
1086
|
-
const warnings: ErrorGuidance[] = [];
|
|
1087
|
-
|
|
1088
|
-
for (const error of result.errors) {
|
|
1089
|
-
const template = NAMING_ERROR_TEMPLATES[error.code];
|
|
1090
|
-
if (template) {
|
|
1091
|
-
errors.push({
|
|
1092
|
-
...template,
|
|
1093
|
-
description: error.message,
|
|
1094
|
-
guidance: [error.guidance, ...template.guidance.slice(1)],
|
|
1095
|
-
});
|
|
1096
|
-
}
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
for (const warning of result.warnings) {
|
|
1100
|
-
const template = NAMING_WARNING_TEMPLATES[warning.code];
|
|
1101
|
-
if (template) {
|
|
1102
|
-
warnings.push({
|
|
1103
|
-
...template,
|
|
1104
|
-
description: warning.message,
|
|
1105
|
-
guidance: [warning.guidance, ...template.guidance.slice(1)],
|
|
1106
|
-
});
|
|
1107
|
-
}
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
return { errors, warnings };
|
|
1111
|
-
}
|
|
1112
|
-
|
|
1113
|
-
/**
|
|
1114
|
-
* Convert token usage validation result to error guidance
|
|
1115
|
-
*/
|
|
1116
|
-
export function convertTokenUsageResultToGuidance(
|
|
1117
|
-
result: TokenUsageValidationResult
|
|
1118
|
-
): { errors: ErrorGuidance[]; warnings: ErrorGuidance[] } {
|
|
1119
|
-
const errors: ErrorGuidance[] = [];
|
|
1120
|
-
const warnings: ErrorGuidance[] = [];
|
|
1121
|
-
|
|
1122
|
-
for (const error of result.errors) {
|
|
1123
|
-
const template = TOKEN_USAGE_ERROR_TEMPLATES[error.code];
|
|
1124
|
-
if (template) {
|
|
1125
|
-
errors.push({
|
|
1126
|
-
...template,
|
|
1127
|
-
description: error.message,
|
|
1128
|
-
guidance: [error.guidance, ...template.guidance.slice(1)],
|
|
1129
|
-
});
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
|
-
|
|
1133
|
-
for (const warning of result.warnings) {
|
|
1134
|
-
const template = TOKEN_USAGE_WARNING_TEMPLATES[warning.code];
|
|
1135
|
-
if (template) {
|
|
1136
|
-
warnings.push({
|
|
1137
|
-
...template,
|
|
1138
|
-
description: warning.message,
|
|
1139
|
-
guidance: [warning.guidance, ...template.guidance.slice(1)],
|
|
1140
|
-
});
|
|
1141
|
-
}
|
|
1142
|
-
}
|
|
1143
|
-
|
|
1144
|
-
return { errors, warnings };
|
|
1145
|
-
}
|
|
1146
|
-
|
|
1147
|
-
/**
|
|
1148
|
-
* Convert property/accessibility validation result to error guidance
|
|
1149
|
-
*/
|
|
1150
|
-
export function convertPropertyAccessibilityResultToGuidance(
|
|
1151
|
-
result: PropertyAccessibilityValidationResult
|
|
1152
|
-
): { errors: ErrorGuidance[]; warnings: ErrorGuidance[] } {
|
|
1153
|
-
const errors: ErrorGuidance[] = [];
|
|
1154
|
-
const warnings: ErrorGuidance[] = [];
|
|
1155
|
-
|
|
1156
|
-
for (const error of result.errors) {
|
|
1157
|
-
const template = PROPERTY_ACCESSIBILITY_ERROR_TEMPLATES[error.code];
|
|
1158
|
-
if (template) {
|
|
1159
|
-
errors.push({
|
|
1160
|
-
...template,
|
|
1161
|
-
description: error.message,
|
|
1162
|
-
guidance: [error.guidance, ...template.guidance.slice(1)],
|
|
1163
|
-
});
|
|
1164
|
-
}
|
|
1165
|
-
}
|
|
1166
|
-
|
|
1167
|
-
for (const warning of result.warnings) {
|
|
1168
|
-
const template = PROPERTY_ACCESSIBILITY_WARNING_TEMPLATES[warning.code];
|
|
1169
|
-
if (template) {
|
|
1170
|
-
warnings.push({
|
|
1171
|
-
...template,
|
|
1172
|
-
description: warning.message,
|
|
1173
|
-
guidance: [warning.guidance, ...template.guidance.slice(1)],
|
|
1174
|
-
});
|
|
1175
|
-
}
|
|
1176
|
-
}
|
|
1177
|
-
|
|
1178
|
-
return { errors, warnings };
|
|
1179
|
-
}
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
/**
|
|
1183
|
-
* Aggregate validation results from all validators
|
|
1184
|
-
*/
|
|
1185
|
-
export function aggregateValidationResults(
|
|
1186
|
-
namingResult?: ComponentNameValidationResult,
|
|
1187
|
-
tokenUsageResult?: TokenUsageValidationResult,
|
|
1188
|
-
propertyAccessibilityResult?: PropertyAccessibilityValidationResult
|
|
1189
|
-
): AggregatedValidationResult {
|
|
1190
|
-
const allErrors: ErrorGuidance[] = [];
|
|
1191
|
-
const allWarnings: ErrorGuidance[] = [];
|
|
1192
|
-
const diagnostics: IDEDiagnostic[] = [];
|
|
1193
|
-
|
|
1194
|
-
const byCategory: Record<ErrorCategory, { errors: number; warnings: number }> = {
|
|
1195
|
-
naming: { errors: 0, warnings: 0 },
|
|
1196
|
-
'token-usage': { errors: 0, warnings: 0 },
|
|
1197
|
-
property: { errors: 0, warnings: 0 },
|
|
1198
|
-
accessibility: { errors: 0, warnings: 0 },
|
|
1199
|
-
schema: { errors: 0, warnings: 0 },
|
|
1200
|
-
documentation: { errors: 0, warnings: 0 },
|
|
1201
|
-
};
|
|
1202
|
-
|
|
1203
|
-
// Process naming results
|
|
1204
|
-
if (namingResult) {
|
|
1205
|
-
const { errors, warnings } = convertNamingResultToGuidance(namingResult);
|
|
1206
|
-
allErrors.push(...errors);
|
|
1207
|
-
allWarnings.push(...warnings);
|
|
1208
|
-
byCategory.naming.errors += errors.length;
|
|
1209
|
-
byCategory.naming.warnings += warnings.length;
|
|
1210
|
-
|
|
1211
|
-
// Create diagnostics
|
|
1212
|
-
for (const error of errors) {
|
|
1213
|
-
diagnostics.push(createIDEDiagnostic(error, namingResult.name));
|
|
1214
|
-
}
|
|
1215
|
-
for (const warning of warnings) {
|
|
1216
|
-
diagnostics.push(createIDEDiagnostic(warning, namingResult.name));
|
|
1217
|
-
}
|
|
1218
|
-
}
|
|
1219
|
-
|
|
1220
|
-
// Process token usage results
|
|
1221
|
-
if (tokenUsageResult) {
|
|
1222
|
-
const { errors, warnings } = convertTokenUsageResultToGuidance(tokenUsageResult);
|
|
1223
|
-
allErrors.push(...errors);
|
|
1224
|
-
allWarnings.push(...warnings);
|
|
1225
|
-
byCategory['token-usage'].errors += errors.length;
|
|
1226
|
-
byCategory['token-usage'].warnings += warnings.length;
|
|
1227
|
-
|
|
1228
|
-
// Create diagnostics with line numbers
|
|
1229
|
-
for (let i = 0; i < tokenUsageResult.errors.length; i++) {
|
|
1230
|
-
const error = tokenUsageResult.errors[i];
|
|
1231
|
-
const guidance = errors[i];
|
|
1232
|
-
if (guidance) {
|
|
1233
|
-
diagnostics.push(createIDEDiagnostic(
|
|
1234
|
-
guidance,
|
|
1235
|
-
tokenUsageResult.filePath,
|
|
1236
|
-
error.line,
|
|
1237
|
-
error.column || 1
|
|
1238
|
-
));
|
|
1239
|
-
}
|
|
1240
|
-
}
|
|
1241
|
-
for (let i = 0; i < tokenUsageResult.warnings.length; i++) {
|
|
1242
|
-
const warning = tokenUsageResult.warnings[i];
|
|
1243
|
-
const guidance = warnings[i];
|
|
1244
|
-
if (guidance) {
|
|
1245
|
-
diagnostics.push(createIDEDiagnostic(
|
|
1246
|
-
guidance,
|
|
1247
|
-
tokenUsageResult.filePath,
|
|
1248
|
-
warning.line
|
|
1249
|
-
));
|
|
1250
|
-
}
|
|
1251
|
-
}
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
// Process property/accessibility results
|
|
1255
|
-
if (propertyAccessibilityResult) {
|
|
1256
|
-
const { errors, warnings } = convertPropertyAccessibilityResultToGuidance(propertyAccessibilityResult);
|
|
1257
|
-
allErrors.push(...errors);
|
|
1258
|
-
allWarnings.push(...warnings);
|
|
1259
|
-
|
|
1260
|
-
// Categorize by type
|
|
1261
|
-
for (const error of errors) {
|
|
1262
|
-
if (error.category === 'accessibility') {
|
|
1263
|
-
byCategory.accessibility.errors++;
|
|
1264
|
-
} else if (error.category === 'schema') {
|
|
1265
|
-
byCategory.schema.errors++;
|
|
1266
|
-
} else {
|
|
1267
|
-
byCategory.property.errors++;
|
|
1268
|
-
}
|
|
1269
|
-
}
|
|
1270
|
-
for (const warning of warnings) {
|
|
1271
|
-
if (warning.category === 'accessibility') {
|
|
1272
|
-
byCategory.accessibility.warnings++;
|
|
1273
|
-
} else {
|
|
1274
|
-
byCategory.property.warnings++;
|
|
1275
|
-
}
|
|
1276
|
-
}
|
|
1277
|
-
|
|
1278
|
-
// Create diagnostics
|
|
1279
|
-
for (const error of errors) {
|
|
1280
|
-
diagnostics.push(createIDEDiagnostic(error, propertyAccessibilityResult.componentName));
|
|
1281
|
-
}
|
|
1282
|
-
for (const warning of warnings) {
|
|
1283
|
-
diagnostics.push(createIDEDiagnostic(warning, propertyAccessibilityResult.componentName));
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1286
|
-
|
|
1287
|
-
return {
|
|
1288
|
-
valid: allErrors.length === 0,
|
|
1289
|
-
errors: allErrors,
|
|
1290
|
-
warnings: allWarnings,
|
|
1291
|
-
summary: {
|
|
1292
|
-
totalErrors: allErrors.length,
|
|
1293
|
-
totalWarnings: allWarnings.length,
|
|
1294
|
-
byCategory,
|
|
1295
|
-
},
|
|
1296
|
-
diagnostics,
|
|
1297
|
-
};
|
|
1298
|
-
}
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
// ============================================================================
|
|
1302
|
-
// Formatting Functions
|
|
1303
|
-
// ============================================================================
|
|
1304
|
-
|
|
1305
|
-
/**
|
|
1306
|
-
* Format error guidance for console output
|
|
1307
|
-
*/
|
|
1308
|
-
export function formatErrorGuidanceForConsole(guidance: ErrorGuidance): string {
|
|
1309
|
-
const icon = guidance.severity === 'error' ? '❌' :
|
|
1310
|
-
guidance.severity === 'warning' ? '⚠️' :
|
|
1311
|
-
guidance.severity === 'info' ? 'ℹ️' : '💡';
|
|
1312
|
-
|
|
1313
|
-
const lines: string[] = [
|
|
1314
|
-
`${icon} ${guidance.title} [${guidance.code}]`,
|
|
1315
|
-
` ${guidance.description}`,
|
|
1316
|
-
'',
|
|
1317
|
-
' How to fix:',
|
|
1318
|
-
];
|
|
1319
|
-
|
|
1320
|
-
for (const step of guidance.guidance) {
|
|
1321
|
-
lines.push(` • ${step}`);
|
|
1322
|
-
}
|
|
1323
|
-
|
|
1324
|
-
if (guidance.documentationLink) {
|
|
1325
|
-
lines.push('');
|
|
1326
|
-
lines.push(` 📚 Documentation: ${guidance.documentationLink}`);
|
|
1327
|
-
}
|
|
1328
|
-
|
|
1329
|
-
if (guidance.wcag) {
|
|
1330
|
-
lines.push(` ♿ WCAG: ${guidance.wcag}`);
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
|
-
if (guidance.quickFix) {
|
|
1334
|
-
lines.push('');
|
|
1335
|
-
lines.push(` 💡 Quick fix: ${guidance.quickFix.title}`);
|
|
1336
|
-
}
|
|
1337
|
-
|
|
1338
|
-
return lines.join('\n');
|
|
1339
|
-
}
|
|
1340
|
-
|
|
1341
|
-
/**
|
|
1342
|
-
* Format error guidance for markdown output
|
|
1343
|
-
*/
|
|
1344
|
-
export function formatErrorGuidanceForMarkdown(guidance: ErrorGuidance): string {
|
|
1345
|
-
const icon = guidance.severity === 'error' ? '❌' :
|
|
1346
|
-
guidance.severity === 'warning' ? '⚠️' :
|
|
1347
|
-
guidance.severity === 'info' ? 'ℹ️' : '💡';
|
|
1348
|
-
|
|
1349
|
-
const lines: string[] = [
|
|
1350
|
-
`### ${icon} ${guidance.title}`,
|
|
1351
|
-
'',
|
|
1352
|
-
`**Code:** \`${guidance.code}\``,
|
|
1353
|
-
'',
|
|
1354
|
-
guidance.description,
|
|
1355
|
-
'',
|
|
1356
|
-
'**How to fix:**',
|
|
1357
|
-
'',
|
|
1358
|
-
];
|
|
1359
|
-
|
|
1360
|
-
for (const step of guidance.guidance) {
|
|
1361
|
-
lines.push(`- ${step}`);
|
|
1362
|
-
}
|
|
1363
|
-
|
|
1364
|
-
if (guidance.documentationLink) {
|
|
1365
|
-
lines.push('');
|
|
1366
|
-
lines.push(`**Documentation:** [${guidance.documentationLink}](${guidance.documentationLink})`);
|
|
1367
|
-
}
|
|
1368
|
-
|
|
1369
|
-
if (guidance.wcag) {
|
|
1370
|
-
lines.push('');
|
|
1371
|
-
lines.push(`**WCAG Reference:** ${guidance.wcag}`);
|
|
1372
|
-
}
|
|
1373
|
-
|
|
1374
|
-
if (guidance.quickFix) {
|
|
1375
|
-
lines.push('');
|
|
1376
|
-
lines.push(`**Quick Fix:** ${guidance.quickFix.title}`);
|
|
1377
|
-
}
|
|
1378
|
-
|
|
1379
|
-
return lines.join('\n');
|
|
1380
|
-
}
|
|
1381
|
-
|
|
1382
|
-
/**
|
|
1383
|
-
* Format error guidance for JSON output (IDE integration)
|
|
1384
|
-
*/
|
|
1385
|
-
export function formatErrorGuidanceForJSON(guidance: ErrorGuidance): string {
|
|
1386
|
-
return JSON.stringify(guidance, null, 2);
|
|
1387
|
-
}
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
/**
|
|
1391
|
-
* Format aggregated validation result for console output
|
|
1392
|
-
*/
|
|
1393
|
-
export function formatAggregatedResultForConsole(result: AggregatedValidationResult): string {
|
|
1394
|
-
const lines: string[] = [];
|
|
1395
|
-
|
|
1396
|
-
// Header
|
|
1397
|
-
if (result.valid) {
|
|
1398
|
-
lines.push('✅ All validations passed!');
|
|
1399
|
-
} else {
|
|
1400
|
-
lines.push(`❌ Validation failed: ${result.summary.totalErrors} error(s), ${result.summary.totalWarnings} warning(s)`);
|
|
1401
|
-
}
|
|
1402
|
-
lines.push('');
|
|
1403
|
-
|
|
1404
|
-
// Summary by category
|
|
1405
|
-
lines.push('Summary by category:');
|
|
1406
|
-
for (const [category, counts] of Object.entries(result.summary.byCategory)) {
|
|
1407
|
-
if (counts.errors > 0 || counts.warnings > 0) {
|
|
1408
|
-
lines.push(` ${category}: ${counts.errors} error(s), ${counts.warnings} warning(s)`);
|
|
1409
|
-
}
|
|
1410
|
-
}
|
|
1411
|
-
lines.push('');
|
|
1412
|
-
|
|
1413
|
-
// Errors
|
|
1414
|
-
if (result.errors.length > 0) {
|
|
1415
|
-
lines.push('Errors:');
|
|
1416
|
-
lines.push('');
|
|
1417
|
-
for (const error of result.errors) {
|
|
1418
|
-
lines.push(formatErrorGuidanceForConsole(error));
|
|
1419
|
-
lines.push('');
|
|
1420
|
-
}
|
|
1421
|
-
}
|
|
1422
|
-
|
|
1423
|
-
// Warnings
|
|
1424
|
-
if (result.warnings.length > 0) {
|
|
1425
|
-
lines.push('Warnings:');
|
|
1426
|
-
lines.push('');
|
|
1427
|
-
for (const warning of result.warnings) {
|
|
1428
|
-
lines.push(formatErrorGuidanceForConsole(warning));
|
|
1429
|
-
lines.push('');
|
|
1430
|
-
}
|
|
1431
|
-
}
|
|
1432
|
-
|
|
1433
|
-
return lines.join('\n');
|
|
1434
|
-
}
|
|
1435
|
-
|
|
1436
|
-
/**
|
|
1437
|
-
* Format aggregated validation result for markdown output
|
|
1438
|
-
*/
|
|
1439
|
-
export function formatAggregatedResultForMarkdown(result: AggregatedValidationResult): string {
|
|
1440
|
-
const lines: string[] = [];
|
|
1441
|
-
|
|
1442
|
-
// Header
|
|
1443
|
-
lines.push('# Stemma System Validation Report');
|
|
1444
|
-
lines.push('');
|
|
1445
|
-
|
|
1446
|
-
if (result.valid) {
|
|
1447
|
-
lines.push('✅ **All validations passed!**');
|
|
1448
|
-
} else {
|
|
1449
|
-
lines.push(`❌ **Validation failed:** ${result.summary.totalErrors} error(s), ${result.summary.totalWarnings} warning(s)`);
|
|
1450
|
-
}
|
|
1451
|
-
lines.push('');
|
|
1452
|
-
|
|
1453
|
-
// Summary table
|
|
1454
|
-
lines.push('## Summary');
|
|
1455
|
-
lines.push('');
|
|
1456
|
-
lines.push('| Category | Errors | Warnings |');
|
|
1457
|
-
lines.push('|----------|--------|----------|');
|
|
1458
|
-
for (const [category, counts] of Object.entries(result.summary.byCategory)) {
|
|
1459
|
-
lines.push(`| ${category} | ${counts.errors} | ${counts.warnings} |`);
|
|
1460
|
-
}
|
|
1461
|
-
lines.push('');
|
|
1462
|
-
|
|
1463
|
-
// Errors
|
|
1464
|
-
if (result.errors.length > 0) {
|
|
1465
|
-
lines.push('## Errors');
|
|
1466
|
-
lines.push('');
|
|
1467
|
-
for (const error of result.errors) {
|
|
1468
|
-
lines.push(formatErrorGuidanceForMarkdown(error));
|
|
1469
|
-
lines.push('');
|
|
1470
|
-
lines.push('---');
|
|
1471
|
-
lines.push('');
|
|
1472
|
-
}
|
|
1473
|
-
}
|
|
1474
|
-
|
|
1475
|
-
// Warnings
|
|
1476
|
-
if (result.warnings.length > 0) {
|
|
1477
|
-
lines.push('## Warnings');
|
|
1478
|
-
lines.push('');
|
|
1479
|
-
for (const warning of result.warnings) {
|
|
1480
|
-
lines.push(formatErrorGuidanceForMarkdown(warning));
|
|
1481
|
-
lines.push('');
|
|
1482
|
-
lines.push('---');
|
|
1483
|
-
lines.push('');
|
|
1484
|
-
}
|
|
1485
|
-
}
|
|
1486
|
-
|
|
1487
|
-
return lines.join('\n');
|
|
1488
|
-
}
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
// ============================================================================
|
|
1492
|
-
// IDE Integration Helpers
|
|
1493
|
-
// ============================================================================
|
|
1494
|
-
|
|
1495
|
-
/**
|
|
1496
|
-
* Get all available error codes with their guidance
|
|
1497
|
-
*/
|
|
1498
|
-
export function getAllErrorCodes(): Map<string, ErrorGuidance> {
|
|
1499
|
-
const codes = new Map<string, ErrorGuidance>();
|
|
1500
|
-
|
|
1501
|
-
for (const [code, guidance] of Object.entries(NAMING_ERROR_TEMPLATES)) {
|
|
1502
|
-
codes.set(code, guidance);
|
|
1503
|
-
}
|
|
1504
|
-
for (const [code, guidance] of Object.entries(NAMING_WARNING_TEMPLATES)) {
|
|
1505
|
-
codes.set(code, guidance);
|
|
1506
|
-
}
|
|
1507
|
-
for (const [code, guidance] of Object.entries(TOKEN_USAGE_ERROR_TEMPLATES)) {
|
|
1508
|
-
codes.set(code, guidance);
|
|
1509
|
-
}
|
|
1510
|
-
for (const [code, guidance] of Object.entries(TOKEN_USAGE_WARNING_TEMPLATES)) {
|
|
1511
|
-
codes.set(code, guidance);
|
|
1512
|
-
}
|
|
1513
|
-
for (const [code, guidance] of Object.entries(PROPERTY_ACCESSIBILITY_ERROR_TEMPLATES)) {
|
|
1514
|
-
codes.set(code, guidance);
|
|
1515
|
-
}
|
|
1516
|
-
for (const [code, guidance] of Object.entries(PROPERTY_ACCESSIBILITY_WARNING_TEMPLATES)) {
|
|
1517
|
-
codes.set(code, guidance);
|
|
1518
|
-
}
|
|
1519
|
-
|
|
1520
|
-
return codes;
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
/**
|
|
1524
|
-
* Get documentation link for an error code
|
|
1525
|
-
*/
|
|
1526
|
-
export function getDocumentationLink(code: string): string | undefined {
|
|
1527
|
-
const guidance = getErrorGuidance(code);
|
|
1528
|
-
return guidance?.documentationLink;
|
|
1529
|
-
}
|
|
1530
|
-
|
|
1531
|
-
/**
|
|
1532
|
-
* Get quick fix for an error code
|
|
1533
|
-
*/
|
|
1534
|
-
export function getQuickFix(code: string): QuickFix | undefined {
|
|
1535
|
-
const guidance = getErrorGuidance(code);
|
|
1536
|
-
return guidance?.quickFix;
|
|
1537
|
-
}
|
|
1538
|
-
|
|
1539
|
-
/**
|
|
1540
|
-
* Check if an error code has an auto-applicable quick fix
|
|
1541
|
-
*/
|
|
1542
|
-
export function hasAutoFix(code: string): boolean {
|
|
1543
|
-
const quickFix = getQuickFix(code);
|
|
1544
|
-
return quickFix?.autoApplicable ?? false;
|
|
1545
|
-
}
|
|
1546
|
-
|
|
1547
|
-
/**
|
|
1548
|
-
* Get WCAG reference for an error code
|
|
1549
|
-
*/
|
|
1550
|
-
export function getWCAGReference(code: string): string | undefined {
|
|
1551
|
-
const guidance = getErrorGuidance(code);
|
|
1552
|
-
return guidance?.wcag;
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
/**
|
|
1556
|
-
* Get related error codes for an error code
|
|
1557
|
-
*/
|
|
1558
|
-
export function getRelatedCodes(code: string): string[] {
|
|
1559
|
-
const guidance = getErrorGuidance(code);
|
|
1560
|
-
return guidance?.relatedCodes ?? [];
|
|
1561
|
-
}
|
|
1562
|
-
|
|
1563
|
-
/**
|
|
1564
|
-
* Export diagnostics in VS Code compatible format
|
|
1565
|
-
*/
|
|
1566
|
-
export function exportDiagnosticsForVSCode(
|
|
1567
|
-
diagnostics: IDEDiagnostic[],
|
|
1568
|
-
uri: string
|
|
1569
|
-
): { uri: string; diagnostics: IDEDiagnostic[] } {
|
|
1570
|
-
return {
|
|
1571
|
-
uri,
|
|
1572
|
-
diagnostics,
|
|
1573
|
-
};
|
|
1574
|
-
}
|
|
1575
|
-
|
|
1576
|
-
/**
|
|
1577
|
-
* Export diagnostics in ESLint compatible format
|
|
1578
|
-
*/
|
|
1579
|
-
export function exportDiagnosticsForESLint(
|
|
1580
|
-
diagnostics: IDEDiagnostic[],
|
|
1581
|
-
filePath: string
|
|
1582
|
-
): Array<{
|
|
1583
|
-
ruleId: string;
|
|
1584
|
-
severity: number;
|
|
1585
|
-
message: string;
|
|
1586
|
-
line: number;
|
|
1587
|
-
column: number;
|
|
1588
|
-
endLine?: number;
|
|
1589
|
-
endColumn?: number;
|
|
1590
|
-
}> {
|
|
1591
|
-
return diagnostics.map(d => ({
|
|
1592
|
-
ruleId: `stemma/${d.code}`,
|
|
1593
|
-
severity: d.severity === 1 ? 2 : 1, // ESLint: 2=error, 1=warning
|
|
1594
|
-
message: d.message,
|
|
1595
|
-
line: d.range.start.line + 1,
|
|
1596
|
-
column: d.range.start.character + 1,
|
|
1597
|
-
endLine: d.range.end.line + 1,
|
|
1598
|
-
endColumn: d.range.end.character + 1,
|
|
1599
|
-
}));
|
|
1600
|
-
}
|