@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
package/src/components/core/Button-VerticalList-Item/platforms/ios/VerticalListButtonItemTests.swift
DELETED
|
@@ -1,794 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Button-VerticalListItem iOS Platform
|
|
3
|
-
*
|
|
4
|
-
* Tests visual state rendering, padding compensation, VoiceOver accessibility,
|
|
5
|
-
* and RTL layout adaptation for the SwiftUI implementation.
|
|
6
|
-
*
|
|
7
|
-
* Part of the DesignerPunk Button System infrastructure.
|
|
8
|
-
*
|
|
9
|
-
* Test Categories:
|
|
10
|
-
* - Visual State Rendering: Verify correct styling for each visual state (Property 1)
|
|
11
|
-
* - Selection Indicator: Verify checkmark visibility rules (Property 2)
|
|
12
|
-
* - Padding Compensation: Verify height stability across border width changes (Property 11)
|
|
13
|
-
* - iOS Native Rendering: Verify SwiftUI patterns and strokeBorder usage (Property 18)
|
|
14
|
-
* - VoiceOver Accessibility: Verify label and state announcements (Property 19)
|
|
15
|
-
* - RTL Layout: Verify automatic layout mirroring (Property 22)
|
|
16
|
-
*
|
|
17
|
-
* @module Button-VerticalListItem/platforms/ios
|
|
18
|
-
* @see Requirements: Properties 1, 2, 11, 18, 19, 22 from design
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
import XCTest
|
|
22
|
-
import SwiftUI
|
|
23
|
-
// Note: ViewInspector would be used for full SwiftUI view testing
|
|
24
|
-
// For now, we test the underlying logic and style computation functions
|
|
25
|
-
// which provides equivalent coverage of the component's behavior
|
|
26
|
-
@testable import DesignerPunk
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Unit tests for VerticalListButtonItem iOS component.
|
|
30
|
-
*
|
|
31
|
-
* These tests verify the component's behavior by testing:
|
|
32
|
-
* 1. Visual state style computation (getStylesForState, computeStyles)
|
|
33
|
-
* 2. Padding compensation calculations (calculatePaddingBlock)
|
|
34
|
-
* 3. Error state application (applyErrorStyles)
|
|
35
|
-
* 4. Accessibility state descriptions (VisualState.accessibilityStateDescription)
|
|
36
|
-
* 5. Mode detection (isSelectMode, isMultiSelectMode)
|
|
37
|
-
*
|
|
38
|
-
* The tests focus on behavior verification rather than implementation details,
|
|
39
|
-
* following Test Development Standards.
|
|
40
|
-
*/
|
|
41
|
-
final class VerticalListButtonItemTests: XCTestCase {
|
|
42
|
-
|
|
43
|
-
// MARK: - Visual State Rendering Tests (Property 1)
|
|
44
|
-
|
|
45
|
-
/// Test that rest state renders with correct styling
|
|
46
|
-
/// Feature: 038-vertical-list-buttons, Property 1: Visual State Styling Consistency
|
|
47
|
-
/// Requirements: 1.1 - color.background, borderDefault (1px), color.text.default
|
|
48
|
-
func testRestStateRendering() throws {
|
|
49
|
-
let styles = getStylesForState(.rest)
|
|
50
|
-
|
|
51
|
-
// Verify rest state styling
|
|
52
|
-
XCTAssertFalse(styles.checkmarkVisible, "Rest state should not show checkmark")
|
|
53
|
-
XCTAssertEqual(styles.borderWidth, DesignTokens.borderDefault, "Rest state should use default border (1pt)")
|
|
54
|
-
XCTAssertEqual(styles.borderColor, .clear, "Rest state should have transparent border color")
|
|
55
|
-
|
|
56
|
-
// Verify colors use correct tokens (comparing against static styles)
|
|
57
|
-
XCTAssertEqual(styles, VisualStateStyles.rest, "Rest state should match static rest styles")
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/// Test that selected state renders with correct styling
|
|
61
|
-
/// Feature: 038-vertical-list-buttons, Property 1: Visual State Styling Consistency
|
|
62
|
-
/// Requirements: 1.2 - color.select.selected.subtle, borderEmphasis (2px), color.select.selected.strong
|
|
63
|
-
func testSelectedStateRendering() throws {
|
|
64
|
-
let styles = getStylesForState(.selected)
|
|
65
|
-
|
|
66
|
-
// Verify selected state styling
|
|
67
|
-
XCTAssertTrue(styles.checkmarkVisible, "Selected state should show checkmark")
|
|
68
|
-
XCTAssertEqual(styles.borderWidth, DesignTokens.borderEmphasis, "Selected state should use emphasis border (2pt)")
|
|
69
|
-
XCTAssertNotEqual(styles.borderColor, .clear, "Selected state should have visible border color")
|
|
70
|
-
|
|
71
|
-
// Verify colors use correct tokens
|
|
72
|
-
XCTAssertEqual(styles, VisualStateStyles.selected, "Selected state should match static selected styles")
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/// Test that notSelected state renders with correct styling
|
|
76
|
-
/// Feature: 038-vertical-list-buttons, Property 1: Visual State Styling Consistency
|
|
77
|
-
/// Requirements: 1.3 - color.select.notSelected.subtle, borderDefault (1px), transparent border
|
|
78
|
-
func testNotSelectedStateRendering() throws {
|
|
79
|
-
let styles = getStylesForState(.notSelected)
|
|
80
|
-
|
|
81
|
-
// Verify notSelected state styling
|
|
82
|
-
XCTAssertFalse(styles.checkmarkVisible, "NotSelected state should not show checkmark")
|
|
83
|
-
XCTAssertEqual(styles.borderWidth, DesignTokens.borderDefault, "NotSelected state should use default border (1pt)")
|
|
84
|
-
XCTAssertEqual(styles.borderColor, .clear, "NotSelected state should have transparent border color")
|
|
85
|
-
|
|
86
|
-
// Verify colors use correct tokens
|
|
87
|
-
XCTAssertEqual(styles, VisualStateStyles.notSelected, "NotSelected state should match static notSelected styles")
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/// Test that checked state renders with correct styling
|
|
91
|
-
/// Feature: 038-vertical-list-buttons, Property 1: Visual State Styling Consistency
|
|
92
|
-
/// Requirements: 1.4 - color.select.selected.subtle, borderDefault (1px), transparent border
|
|
93
|
-
func testCheckedStateRendering() throws {
|
|
94
|
-
let styles = getStylesForState(.checked)
|
|
95
|
-
|
|
96
|
-
// Verify checked state styling
|
|
97
|
-
XCTAssertTrue(styles.checkmarkVisible, "Checked state should show checkmark")
|
|
98
|
-
XCTAssertEqual(styles.borderWidth, DesignTokens.borderDefault, "Checked state should use default border (1pt)")
|
|
99
|
-
XCTAssertEqual(styles.borderColor, .clear, "Checked state should have transparent border color")
|
|
100
|
-
|
|
101
|
-
// Verify colors use correct tokens
|
|
102
|
-
XCTAssertEqual(styles, VisualStateStyles.checked, "Checked state should match static checked styles")
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/// Test that unchecked state renders with correct styling
|
|
106
|
-
/// Feature: 038-vertical-list-buttons, Property 1: Visual State Styling Consistency
|
|
107
|
-
/// Requirements: 1.5 - color.background, borderDefault (1px), transparent border
|
|
108
|
-
func testUncheckedStateRendering() throws {
|
|
109
|
-
let styles = getStylesForState(.unchecked)
|
|
110
|
-
|
|
111
|
-
// Verify unchecked state styling
|
|
112
|
-
XCTAssertFalse(styles.checkmarkVisible, "Unchecked state should not show checkmark")
|
|
113
|
-
XCTAssertEqual(styles.borderWidth, DesignTokens.borderDefault, "Unchecked state should use default border (1pt)")
|
|
114
|
-
XCTAssertEqual(styles.borderColor, .clear, "Unchecked state should have transparent border color")
|
|
115
|
-
|
|
116
|
-
// Verify colors use correct tokens
|
|
117
|
-
XCTAssertEqual(styles, VisualStateStyles.unchecked, "Unchecked state should match static unchecked styles")
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/// Test that all visual states produce unique styling
|
|
121
|
-
/// Feature: 038-vertical-list-buttons, Property 1: Visual State Styling Consistency
|
|
122
|
-
func testAllVisualStatesProduceUniqueStyles() throws {
|
|
123
|
-
// Get styles for all states
|
|
124
|
-
let restStyles = getStylesForState(.rest)
|
|
125
|
-
let selectedStyles = getStylesForState(.selected)
|
|
126
|
-
let notSelectedStyles = getStylesForState(.notSelected)
|
|
127
|
-
let checkedStyles = getStylesForState(.checked)
|
|
128
|
-
let uncheckedStyles = getStylesForState(.unchecked)
|
|
129
|
-
|
|
130
|
-
// Verify selected and checked have different border widths (key differentiator)
|
|
131
|
-
XCTAssertNotEqual(selectedStyles.borderWidth, checkedStyles.borderWidth,
|
|
132
|
-
"Selected (2pt border) and checked (1pt border) should have different border widths")
|
|
133
|
-
|
|
134
|
-
// Verify rest and unchecked have same styling (both are default states)
|
|
135
|
-
XCTAssertEqual(restStyles, uncheckedStyles,
|
|
136
|
-
"Rest and unchecked should have identical styling")
|
|
137
|
-
|
|
138
|
-
// Verify notSelected is different from rest
|
|
139
|
-
XCTAssertNotEqual(notSelectedStyles, restStyles,
|
|
140
|
-
"NotSelected should have different styling than rest")
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// MARK: - Selection Indicator Tests (Property 2)
|
|
144
|
-
|
|
145
|
-
/// Test that checkmark is visible for selected state
|
|
146
|
-
/// Feature: 038-vertical-list-buttons, Property 2: Selection Indicator Visibility
|
|
147
|
-
/// Requirements: 2.1 - Checkmark visible when visualState is selected or checked
|
|
148
|
-
func testCheckmarkVisibleForSelectedState() throws {
|
|
149
|
-
XCTAssertTrue(VisualState.selected.showsCheckmark, "Selected state should show checkmark")
|
|
150
|
-
let styles = getStylesForState(.selected)
|
|
151
|
-
XCTAssertTrue(styles.checkmarkVisible, "Selected styles should have checkmark visible")
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/// Test that checkmark is visible for checked state
|
|
155
|
-
/// Feature: 038-vertical-list-buttons, Property 2: Selection Indicator Visibility
|
|
156
|
-
/// Requirements: 2.1 - Checkmark visible when visualState is selected or checked
|
|
157
|
-
func testCheckmarkVisibleForCheckedState() throws {
|
|
158
|
-
XCTAssertTrue(VisualState.checked.showsCheckmark, "Checked state should show checkmark")
|
|
159
|
-
let styles = getStylesForState(.checked)
|
|
160
|
-
XCTAssertTrue(styles.checkmarkVisible, "Checked styles should have checkmark visible")
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/// Test that checkmark is hidden for rest state
|
|
164
|
-
/// Feature: 038-vertical-list-buttons, Property 2: Selection Indicator Visibility
|
|
165
|
-
/// Requirements: 2.2 - Checkmark hidden when visualState is rest, notSelected, or unchecked
|
|
166
|
-
func testCheckmarkHiddenForRestState() throws {
|
|
167
|
-
XCTAssertFalse(VisualState.rest.showsCheckmark, "Rest state should not show checkmark")
|
|
168
|
-
let styles = getStylesForState(.rest)
|
|
169
|
-
XCTAssertFalse(styles.checkmarkVisible, "Rest styles should have checkmark hidden")
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/// Test that checkmark is hidden for notSelected state
|
|
173
|
-
/// Feature: 038-vertical-list-buttons, Property 2: Selection Indicator Visibility
|
|
174
|
-
/// Requirements: 2.2 - Checkmark hidden when visualState is rest, notSelected, or unchecked
|
|
175
|
-
func testCheckmarkHiddenForNotSelectedState() throws {
|
|
176
|
-
XCTAssertFalse(VisualState.notSelected.showsCheckmark, "NotSelected state should not show checkmark")
|
|
177
|
-
let styles = getStylesForState(.notSelected)
|
|
178
|
-
XCTAssertFalse(styles.checkmarkVisible, "NotSelected styles should have checkmark hidden")
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/// Test that checkmark is hidden for unchecked state
|
|
182
|
-
/// Feature: 038-vertical-list-buttons, Property 2: Selection Indicator Visibility
|
|
183
|
-
/// Requirements: 2.2 - Checkmark hidden when visualState is rest, notSelected, or unchecked
|
|
184
|
-
func testCheckmarkHiddenForUncheckedState() throws {
|
|
185
|
-
XCTAssertFalse(VisualState.unchecked.showsCheckmark, "Unchecked state should not show checkmark")
|
|
186
|
-
let styles = getStylesForState(.unchecked)
|
|
187
|
-
XCTAssertFalse(styles.checkmarkVisible, "Unchecked styles should have checkmark hidden")
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/// Test checkmark visibility is preserved in error state
|
|
191
|
-
/// Feature: 038-vertical-list-buttons, Property 2: Selection Indicator Visibility
|
|
192
|
-
/// Requirements: 2.3, 2.4 - Checkmark color changes but visibility preserved
|
|
193
|
-
func testCheckmarkVisibilityPreservedInErrorState() throws {
|
|
194
|
-
// Selected with error should still show checkmark
|
|
195
|
-
let selectedErrorStyles = computeStyles(visualState: .selected, error: true)
|
|
196
|
-
XCTAssertTrue(selectedErrorStyles.checkmarkVisible, "Selected with error should still show checkmark")
|
|
197
|
-
|
|
198
|
-
// Checked with error should still show checkmark
|
|
199
|
-
let checkedErrorStyles = computeStyles(visualState: .checked, error: true)
|
|
200
|
-
XCTAssertTrue(checkedErrorStyles.checkmarkVisible, "Checked with error should still show checkmark")
|
|
201
|
-
|
|
202
|
-
// Rest with error should still hide checkmark
|
|
203
|
-
let restErrorStyles = computeStyles(visualState: .rest, error: true)
|
|
204
|
-
XCTAssertFalse(restErrorStyles.checkmarkVisible, "Rest with error should still hide checkmark")
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// MARK: - Padding Compensation Tests (Property 11)
|
|
208
|
-
|
|
209
|
-
/// Test padding compensation for 1pt border (rest state)
|
|
210
|
-
/// Feature: 038-vertical-list-buttons, Property 11: Padding Compensation Correctness
|
|
211
|
-
/// Requirements: 6.1 - 11pt padding for 1pt border (borderDefault)
|
|
212
|
-
func testPaddingCompensationFor1ptBorder() throws {
|
|
213
|
-
// Verify 11pt padding for 1pt border
|
|
214
|
-
let padding = calculatePaddingBlock(borderWidth: DesignTokens.borderDefault)
|
|
215
|
-
XCTAssertEqual(padding, 11, "1pt border should have 11pt padding")
|
|
216
|
-
|
|
217
|
-
// Verify this matches the component token
|
|
218
|
-
XCTAssertEqual(padding, VerticalListItemTokens.paddingBlockRest,
|
|
219
|
-
"Padding should match verticalListItemPaddingBlockRest token")
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/// Test padding compensation for 2pt border (selected state)
|
|
223
|
-
/// Feature: 038-vertical-list-buttons, Property 11: Padding Compensation Correctness
|
|
224
|
-
/// Requirements: 6.2 - 10pt padding for 2pt border (borderEmphasis)
|
|
225
|
-
func testPaddingCompensationFor2ptBorder() throws {
|
|
226
|
-
// Verify 10pt padding for 2pt border
|
|
227
|
-
let padding = calculatePaddingBlock(borderWidth: DesignTokens.borderEmphasis)
|
|
228
|
-
XCTAssertEqual(padding, 10, "2pt border should have 10pt padding")
|
|
229
|
-
|
|
230
|
-
// Verify this matches the component token
|
|
231
|
-
XCTAssertEqual(padding, VerticalListItemTokens.paddingBlockSelected,
|
|
232
|
-
"Padding should match verticalListItemPaddingBlockSelected token")
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/// Test that total height remains constant at 48pt
|
|
236
|
-
/// Feature: 038-vertical-list-buttons, Property 11: Padding Compensation Correctness
|
|
237
|
-
/// Requirements: 6.3 - Constant 48pt total height regardless of border width
|
|
238
|
-
func testConstantTotalHeight() throws {
|
|
239
|
-
let contentHeight: CGFloat = 24 // Content height (typography.buttonMd line height)
|
|
240
|
-
|
|
241
|
-
// Rest state: 1pt border + 11pt padding + 24pt content + 11pt padding + 1pt border = 48pt
|
|
242
|
-
let restBorder = DesignTokens.borderDefault
|
|
243
|
-
let restPadding = calculatePaddingBlock(borderWidth: restBorder)
|
|
244
|
-
let restTotal = (restBorder * 2) + (restPadding * 2) + contentHeight
|
|
245
|
-
XCTAssertEqual(restTotal, 48, "Rest state should have 48pt total height")
|
|
246
|
-
|
|
247
|
-
// Selected state: 2pt border + 10pt padding + 24pt content + 10pt padding + 2pt border = 48pt
|
|
248
|
-
let selectedBorder = DesignTokens.borderEmphasis
|
|
249
|
-
let selectedPadding = calculatePaddingBlock(borderWidth: selectedBorder)
|
|
250
|
-
let selectedTotal = (selectedBorder * 2) + (selectedPadding * 2) + contentHeight
|
|
251
|
-
XCTAssertEqual(selectedTotal, 48, "Selected state should have 48pt total height")
|
|
252
|
-
|
|
253
|
-
// Verify both totals are equal
|
|
254
|
-
XCTAssertEqual(restTotal, selectedTotal, "Rest and selected states should have equal total height")
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/// Test padding compensation for each visual state
|
|
258
|
-
/// Feature: 038-vertical-list-buttons, Property 11: Padding Compensation Correctness
|
|
259
|
-
/// Requirements: 6.1, 6.2 - Padding varies based on border width
|
|
260
|
-
func testPaddingCompensationForVisualState() throws {
|
|
261
|
-
// Rest state should have 11pt padding (1pt border)
|
|
262
|
-
XCTAssertEqual(calculatePaddingBlock(for: .rest), 11, "Rest state should have 11pt padding")
|
|
263
|
-
|
|
264
|
-
// Selected state should have 10pt padding (2pt border)
|
|
265
|
-
XCTAssertEqual(calculatePaddingBlock(for: .selected), 10, "Selected state should have 10pt padding")
|
|
266
|
-
|
|
267
|
-
// NotSelected state should have 11pt padding (1pt border)
|
|
268
|
-
XCTAssertEqual(calculatePaddingBlock(for: .notSelected), 11, "NotSelected state should have 11pt padding")
|
|
269
|
-
|
|
270
|
-
// Checked state should have 11pt padding (1pt border)
|
|
271
|
-
XCTAssertEqual(calculatePaddingBlock(for: .checked), 11, "Checked state should have 11pt padding")
|
|
272
|
-
|
|
273
|
-
// Unchecked state should have 11pt padding (1pt border)
|
|
274
|
-
XCTAssertEqual(calculatePaddingBlock(for: .unchecked), 11, "Unchecked state should have 11pt padding")
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/// Test padding compensation with error state
|
|
278
|
-
/// Feature: 038-vertical-list-buttons, Property 11: Padding Compensation Correctness
|
|
279
|
-
/// Requirements: 6.1, 6.2 - Error state affects border width in Select mode
|
|
280
|
-
func testPaddingCompensationWithError() throws {
|
|
281
|
-
// Select mode with error should have 10pt padding (2pt border)
|
|
282
|
-
XCTAssertEqual(calculatePaddingBlock(for: .rest, error: true), 10,
|
|
283
|
-
"Rest with error should have 10pt padding (Select mode gets 2pt border)")
|
|
284
|
-
XCTAssertEqual(calculatePaddingBlock(for: .selected, error: true), 10,
|
|
285
|
-
"Selected with error should have 10pt padding")
|
|
286
|
-
XCTAssertEqual(calculatePaddingBlock(for: .notSelected, error: true), 10,
|
|
287
|
-
"NotSelected with error should have 10pt padding")
|
|
288
|
-
|
|
289
|
-
// Multi-Select mode with error should preserve original padding (1pt border)
|
|
290
|
-
XCTAssertEqual(calculatePaddingBlock(for: .checked, error: true), 11,
|
|
291
|
-
"Checked with error should have 11pt padding (Multi-Select preserves border)")
|
|
292
|
-
XCTAssertEqual(calculatePaddingBlock(for: .unchecked, error: true), 11,
|
|
293
|
-
"Unchecked with error should have 11pt padding (Multi-Select preserves border)")
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/// Test that padding compensation uses correct component tokens
|
|
297
|
-
/// Feature: 038-vertical-list-buttons, Property 11: Padding Compensation Correctness
|
|
298
|
-
func testPaddingCompensationUsesComponentTokens() throws {
|
|
299
|
-
// Verify component tokens are defined correctly
|
|
300
|
-
XCTAssertEqual(VerticalListItemTokens.paddingBlockRest, 11,
|
|
301
|
-
"Rest padding token should be 11pt")
|
|
302
|
-
XCTAssertEqual(VerticalListItemTokens.paddingBlockSelected, 10,
|
|
303
|
-
"Selected padding token should be 10pt")
|
|
304
|
-
|
|
305
|
-
// Verify border tokens are defined correctly
|
|
306
|
-
XCTAssertEqual(DesignTokens.borderDefault, 1,
|
|
307
|
-
"Default border token should be 1pt")
|
|
308
|
-
XCTAssertEqual(DesignTokens.borderEmphasis, 2,
|
|
309
|
-
"Emphasis border token should be 2pt")
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// MARK: - VoiceOver Accessibility Tests (Property 19)
|
|
313
|
-
|
|
314
|
-
/// Test VoiceOver announces label correctly
|
|
315
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
316
|
-
/// Requirements: 10.3, 10.5 - Screen readers announce label and current state
|
|
317
|
-
func testVoiceOverAnnouncesLabel() throws {
|
|
318
|
-
// The component uses .accessibilityLabel(label) to announce the label
|
|
319
|
-
// This test verifies the state descriptions that accompany the label
|
|
320
|
-
// Rest state should have empty description (no selection state to announce)
|
|
321
|
-
XCTAssertEqual(VisualState.rest.accessibilityStateDescription, "",
|
|
322
|
-
"Rest state should have empty accessibility description")
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
/// Test VoiceOver announces selected state
|
|
326
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
327
|
-
/// Requirements: 10.5 - VoiceOver announces selection state
|
|
328
|
-
func testVoiceOverAnnouncesSelectedState() throws {
|
|
329
|
-
XCTAssertEqual(VisualState.selected.accessibilityStateDescription, "Selected",
|
|
330
|
-
"Selected state should announce 'Selected'")
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
/// Test VoiceOver announces checked state
|
|
334
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
335
|
-
/// Requirements: 10.5 - VoiceOver announces selection state
|
|
336
|
-
func testVoiceOverAnnouncesCheckedState() throws {
|
|
337
|
-
XCTAssertEqual(VisualState.checked.accessibilityStateDescription, "Checked",
|
|
338
|
-
"Checked state should announce 'Checked'")
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/// Test VoiceOver announces not selected state
|
|
342
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
343
|
-
/// Requirements: 10.5 - VoiceOver announces selection state
|
|
344
|
-
func testVoiceOverAnnouncesNotSelectedState() throws {
|
|
345
|
-
XCTAssertEqual(VisualState.notSelected.accessibilityStateDescription, "Not selected",
|
|
346
|
-
"NotSelected state should announce 'Not selected'")
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
/// Test VoiceOver announces unchecked state
|
|
350
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
351
|
-
/// Requirements: 10.5 - VoiceOver announces selection state
|
|
352
|
-
func testVoiceOverAnnouncesUncheckedState() throws {
|
|
353
|
-
XCTAssertEqual(VisualState.unchecked.accessibilityStateDescription, "Unchecked",
|
|
354
|
-
"Unchecked state should announce 'Unchecked'")
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
/// Test all visual states have appropriate accessibility descriptions
|
|
358
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
359
|
-
/// Requirements: 10.5, 10.7 - VoiceOver announces label and current selection state
|
|
360
|
-
func testAllStatesHaveAccessibilityDescriptions() throws {
|
|
361
|
-
// Verify all states have defined accessibility descriptions
|
|
362
|
-
for state in VisualState.allCases {
|
|
363
|
-
let description = state.accessibilityStateDescription
|
|
364
|
-
|
|
365
|
-
switch state {
|
|
366
|
-
case .rest:
|
|
367
|
-
XCTAssertEqual(description, "", "Rest should have empty description")
|
|
368
|
-
case .selected:
|
|
369
|
-
XCTAssertEqual(description, "Selected", "Selected should announce 'Selected'")
|
|
370
|
-
case .notSelected:
|
|
371
|
-
XCTAssertEqual(description, "Not selected", "NotSelected should announce 'Not selected'")
|
|
372
|
-
case .checked:
|
|
373
|
-
XCTAssertEqual(description, "Checked", "Checked should announce 'Checked'")
|
|
374
|
-
case .unchecked:
|
|
375
|
-
XCTAssertEqual(description, "Unchecked", "Unchecked should announce 'Unchecked'")
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
/// Test checkmark is marked as decorative (aria-hidden equivalent)
|
|
381
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
382
|
-
/// Requirements: 2.5 - Selection indicator marked as decorative
|
|
383
|
-
func testCheckmarkIsDecorativeForAccessibility() throws {
|
|
384
|
-
// The checkmark uses .accessibilityHidden(true) which is the SwiftUI
|
|
385
|
-
// equivalent of aria-hidden="true". This test verifies the requirement
|
|
386
|
-
// is documented and the implementation pattern is correct.
|
|
387
|
-
// The component implementation includes:
|
|
388
|
-
// .accessibilityHidden(true) // Requirements: 2.5 - Decorative, aria-hidden
|
|
389
|
-
// This is verified through code review as SwiftUI accessibility modifiers
|
|
390
|
-
// cannot be directly tested without ViewInspector
|
|
391
|
-
XCTAssertTrue(true, "Checkmark uses .accessibilityHidden(true) - verified in implementation")
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/// Test that component uses native SwiftUI accessibility modifiers
|
|
395
|
-
/// Feature: 038-vertical-list-buttons, Property 19: iOS Accessibility
|
|
396
|
-
/// Requirements: 10.7 - iOS uses native SwiftUI accessibility modifiers
|
|
397
|
-
func testUsesNativeSwiftUIAccessibilityModifiers() throws {
|
|
398
|
-
// The component uses native SwiftUI accessibility modifiers:
|
|
399
|
-
// - .accessibilityLabel(label) for the button label
|
|
400
|
-
// - .accessibilityValue(accessibilityStateDescription) for selection state
|
|
401
|
-
// - .accessibilityAddTraits(.isButton) for button trait
|
|
402
|
-
// - .accessibilityHint(description) for additional context
|
|
403
|
-
// - .accessibilityHidden(true) on checkmark for decorative marking
|
|
404
|
-
// - .accessibilityIdentifier(testID) for UI testing
|
|
405
|
-
// This is verified through code review of the implementation
|
|
406
|
-
XCTAssertTrue(true, "Component uses native SwiftUI accessibility modifiers - verified in implementation")
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
// MARK: - RTL Layout Tests (Property 22)
|
|
410
|
-
|
|
411
|
-
/// Test that layout mirrors in RTL context
|
|
412
|
-
/// Feature: 038-vertical-list-buttons, Property 22: Cross-Platform RTL Support
|
|
413
|
-
/// Requirements: 11.4, 11.6 - Automatic RTL layout adaptation via SwiftUI
|
|
414
|
-
func testRTLLayoutAdaptation() throws {
|
|
415
|
-
// SwiftUI's HStack automatically handles RTL layout mirroring
|
|
416
|
-
// The component uses @Environment(\.layoutDirection) for RTL detection
|
|
417
|
-
// In RTL context:
|
|
418
|
-
// - Leading icon appears on the right (start of reading direction)
|
|
419
|
-
// - Checkmark appears on the left (end of reading direction)
|
|
420
|
-
// - Content flows from right to left
|
|
421
|
-
// This is verified through the preview implementation which includes
|
|
422
|
-
// an RTL preview with .environment(\.layoutDirection, .rightToLeft)
|
|
423
|
-
XCTAssertTrue(true, "RTL layout handled by SwiftUI's automatic layout direction support")
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/// Test that leading icon appears on right in RTL context
|
|
427
|
-
/// Feature: 038-vertical-list-buttons, Property 22: Cross-Platform RTL Support
|
|
428
|
-
/// Requirements: 11.4 - SwiftUI automatic RTL layout support
|
|
429
|
-
func testLeadingIconAppearsOnRightInRTL() throws {
|
|
430
|
-
// SwiftUI's HStack automatically reverses child order in RTL context
|
|
431
|
-
// The leading icon (first child in HStack) appears on the right in RTL
|
|
432
|
-
// This is handled automatically by SwiftUI's layout system
|
|
433
|
-
// The implementation uses HStack which provides automatic RTL support
|
|
434
|
-
XCTAssertTrue(true, "Leading icon position handled by SwiftUI's automatic RTL layout")
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
/// Test that checkmark appears on left in RTL context
|
|
438
|
-
/// Feature: 038-vertical-list-buttons, Property 22: Cross-Platform RTL Support
|
|
439
|
-
/// Requirements: 11.6 - Layout mirrors automatically in RTL context
|
|
440
|
-
func testCheckmarkAppearsOnLeftInRTL() throws {
|
|
441
|
-
// SwiftUI's HStack automatically reverses child order in RTL context
|
|
442
|
-
// The checkmark (last child in HStack) appears on the left in RTL
|
|
443
|
-
// This is handled automatically by SwiftUI's layout system
|
|
444
|
-
XCTAssertTrue(true, "Checkmark position handled by SwiftUI's automatic RTL layout")
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
/// Test that component uses Environment layoutDirection for RTL detection
|
|
448
|
-
/// Feature: 038-vertical-list-buttons, Property 22: Cross-Platform RTL Support
|
|
449
|
-
/// Requirements: 11.4 - Use @Environment(\.layoutDirection) for RTL detection
|
|
450
|
-
func testUsesEnvironmentLayoutDirection() throws {
|
|
451
|
-
// The component declares @Environment(\.layoutDirection) private var layoutDirection
|
|
452
|
-
// This allows the component to detect RTL context if needed for custom behavior
|
|
453
|
-
// SwiftUI's built-in layout system handles automatic mirroring
|
|
454
|
-
// This is verified through code review of the implementation
|
|
455
|
-
XCTAssertTrue(true, "Component uses @Environment(\\.layoutDirection) for RTL detection")
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
// MARK: - Error State Tests (Properties 4, 5)
|
|
459
|
-
|
|
460
|
-
/// Test Select mode error styling
|
|
461
|
-
/// Feature: 038-vertical-list-buttons, Property 4: Error Styling for Select Mode
|
|
462
|
-
/// Requirements: 3.1 - Full error treatment (border + background + colors)
|
|
463
|
-
func testSelectModeErrorStyling() throws {
|
|
464
|
-
// Verify full error treatment (border + background + colors)
|
|
465
|
-
let baseStyles = getStylesForState(.rest)
|
|
466
|
-
let errorStyles = applyErrorStyles(baseStyles, visualState: .rest)
|
|
467
|
-
|
|
468
|
-
// Select mode should have 2pt border
|
|
469
|
-
XCTAssertEqual(errorStyles.borderWidth, DesignTokens.borderEmphasis,
|
|
470
|
-
"Select mode error should use emphasis border (2pt)")
|
|
471
|
-
|
|
472
|
-
// Checkmark visibility should be preserved
|
|
473
|
-
XCTAssertEqual(errorStyles.checkmarkVisible, baseStyles.checkmarkVisible,
|
|
474
|
-
"Checkmark visibility should be preserved in error state")
|
|
475
|
-
|
|
476
|
-
// Border color should be error strong
|
|
477
|
-
XCTAssertNotEqual(errorStyles.borderColor, .clear,
|
|
478
|
-
"Select mode error should have visible border color")
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
/// Test Multi-Select mode error styling
|
|
482
|
-
/// Feature: 038-vertical-list-buttons, Property 5: Error Styling for Multi-Select Mode
|
|
483
|
-
/// Requirements: 3.2 - Colors only treatment (no border/background change)
|
|
484
|
-
func testMultiSelectModeErrorStyling() throws {
|
|
485
|
-
// Verify colors-only error treatment
|
|
486
|
-
let baseStyles = getStylesForState(.unchecked)
|
|
487
|
-
let errorStyles = applyErrorStyles(baseStyles, visualState: .unchecked)
|
|
488
|
-
|
|
489
|
-
// Multi-Select mode should preserve border width
|
|
490
|
-
XCTAssertEqual(errorStyles.borderWidth, baseStyles.borderWidth,
|
|
491
|
-
"Multi-Select mode error should preserve border width")
|
|
492
|
-
|
|
493
|
-
// Checkmark visibility should be preserved
|
|
494
|
-
XCTAssertEqual(errorStyles.checkmarkVisible, baseStyles.checkmarkVisible,
|
|
495
|
-
"Checkmark visibility should be preserved in error state")
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
/// Test error styling for all Select mode states
|
|
499
|
-
/// Feature: 038-vertical-list-buttons, Property 4: Error Styling for Select Mode
|
|
500
|
-
/// Requirements: 3.1 - Full error treatment for rest, selected, notSelected
|
|
501
|
-
func testErrorStylingForAllSelectModeStates() throws {
|
|
502
|
-
let selectModeStates: [VisualState] = [.rest, .selected, .notSelected]
|
|
503
|
-
|
|
504
|
-
for state in selectModeStates {
|
|
505
|
-
let errorStyles = computeStyles(visualState: state, error: true)
|
|
506
|
-
|
|
507
|
-
// All Select mode states with error should have 2pt border
|
|
508
|
-
XCTAssertEqual(errorStyles.borderWidth, DesignTokens.borderEmphasis,
|
|
509
|
-
"\(state) with error should use emphasis border (2pt)")
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
/// Test error styling for all Multi-Select mode states
|
|
514
|
-
/// Feature: 038-vertical-list-buttons, Property 5: Error Styling for Multi-Select Mode
|
|
515
|
-
/// Requirements: 3.2 - Colors only treatment for checked, unchecked
|
|
516
|
-
func testErrorStylingForAllMultiSelectModeStates() throws {
|
|
517
|
-
let multiSelectModeStates: [VisualState] = [.checked, .unchecked]
|
|
518
|
-
|
|
519
|
-
for state in multiSelectModeStates {
|
|
520
|
-
let baseStyles = getStylesForState(state)
|
|
521
|
-
let errorStyles = computeStyles(visualState: state, error: true)
|
|
522
|
-
|
|
523
|
-
// Multi-Select mode states with error should preserve border width
|
|
524
|
-
XCTAssertEqual(errorStyles.borderWidth, baseStyles.borderWidth,
|
|
525
|
-
"\(state) with error should preserve border width")
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
// MARK: - Native Rendering Tests (Property 18)
|
|
530
|
-
|
|
531
|
-
/// Test that component uses SwiftUI strokeBorder for borders
|
|
532
|
-
/// Feature: 038-vertical-list-buttons, Property 18: iOS Native Rendering
|
|
533
|
-
/// Requirements: 13.2, 13.6 - strokeBorder for border rendering inside view bounds
|
|
534
|
-
func testUsesStrokeBorderForBorders() throws {
|
|
535
|
-
// The component uses strokeBorder modifier which draws borders inside view bounds
|
|
536
|
-
// This is verified through code review of the VerticalListButtonItemStyle:
|
|
537
|
-
// RoundedRectangle(cornerRadius: DesignTokens.radiusNormal)
|
|
538
|
-
// .strokeBorder(styles.borderColor, lineWidth: styles.borderWidth)
|
|
539
|
-
// This ensures consistent sizing regardless of border width
|
|
540
|
-
XCTAssertTrue(true, "Component uses strokeBorder for border rendering - verified in implementation")
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
/// Test that animations use motion.selectionTransition timing
|
|
544
|
-
/// Feature: 038-vertical-list-buttons, Property 18: iOS Native Rendering
|
|
545
|
-
/// Requirements: 7.1, 13.3 - Use motion.selectionTransition (250ms, standard easing)
|
|
546
|
-
func testAnimationTiming() throws {
|
|
547
|
-
// Verify motion token is defined correctly
|
|
548
|
-
XCTAssertEqual(DesignTokens.MotionSelectionTransition.duration, 0.25,
|
|
549
|
-
"Motion selection transition duration should be 250ms (0.25 seconds)")
|
|
550
|
-
|
|
551
|
-
// The component uses withAnimation with this timing:
|
|
552
|
-
// Animation.easeInOut(duration: DesignTokens.MotionSelectionTransition.duration)
|
|
553
|
-
// This is verified through code review of the implementation
|
|
554
|
-
XCTAssertTrue(true, "Component uses motion.selectionTransition timing - verified in implementation")
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
/// Test that component uses SwiftUI Button for native interaction
|
|
558
|
-
/// Feature: 038-vertical-list-buttons, Property 18: iOS Native Rendering
|
|
559
|
-
/// Requirements: 13.1 - Use SwiftUI for native rendering
|
|
560
|
-
func testUsesSwiftUIButton() throws {
|
|
561
|
-
// The component wraps content in a SwiftUI Button:
|
|
562
|
-
// Button(action: handleClick) { buttonContent }
|
|
563
|
-
// This provides native button behavior including:
|
|
564
|
-
// - Tap handling
|
|
565
|
-
// - Focus management
|
|
566
|
-
// - Accessibility traits
|
|
567
|
-
// This is verified through code review of the implementation
|
|
568
|
-
XCTAssertTrue(true, "Component uses SwiftUI Button for native interaction - verified in implementation")
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
/// Test that component uses custom ButtonStyle for visual styling
|
|
572
|
-
/// Feature: 038-vertical-list-buttons, Property 18: iOS Native Rendering
|
|
573
|
-
/// Requirements: 13.1 - Use SwiftUI patterns
|
|
574
|
-
func testUsesCustomButtonStyle() throws {
|
|
575
|
-
// The component uses a custom VerticalListButtonItemStyle:
|
|
576
|
-
// .buttonStyle(VerticalListButtonItemStyle(...))
|
|
577
|
-
// This provides:
|
|
578
|
-
// - Background color based on visual state
|
|
579
|
-
// - Border rendering using strokeBorder
|
|
580
|
-
// - Padding compensation for height stability
|
|
581
|
-
// - Pressed state overlay
|
|
582
|
-
// This is verified through code review of the implementation
|
|
583
|
-
XCTAssertTrue(true, "Component uses custom ButtonStyle - verified in implementation")
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
/// Test that component supports haptic feedback delegation
|
|
587
|
-
/// Feature: 038-vertical-list-buttons, Property 18: iOS Native Rendering
|
|
588
|
-
/// Requirements: 13.4 - Support haptic feedback delegation to parent pattern
|
|
589
|
-
func testSupportsHapticFeedbackDelegation() throws {
|
|
590
|
-
// The component has an onHapticFeedback callback:
|
|
591
|
-
// public var onHapticFeedback: ((HapticFeedbackType) -> Void)?
|
|
592
|
-
// This allows the parent pattern to handle haptic feedback
|
|
593
|
-
// The component calls onHapticFeedback?(.tap) in handleClick()
|
|
594
|
-
// This is verified through code review of the implementation
|
|
595
|
-
XCTAssertTrue(true, "Component supports haptic feedback delegation - verified in implementation")
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
/// Test that HapticFeedbackType enum is defined correctly
|
|
599
|
-
/// Feature: 038-vertical-list-buttons, Property 18: iOS Native Rendering
|
|
600
|
-
/// Requirements: 13.4 - Support haptic feedback delegation
|
|
601
|
-
func testHapticFeedbackTypeEnum() throws {
|
|
602
|
-
// Verify HapticFeedbackType cases exist
|
|
603
|
-
// Note: This would require the enum to be accessible in tests
|
|
604
|
-
// The enum is defined in the implementation with cases:
|
|
605
|
-
// - tap: Standard tap/click feedback
|
|
606
|
-
// - selection: Selection feedback
|
|
607
|
-
// - deselection: Deselection feedback
|
|
608
|
-
// - error: Error feedback
|
|
609
|
-
XCTAssertTrue(true, "HapticFeedbackType enum is defined - verified in implementation")
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
// MARK: - Visual State Styles Unit Tests
|
|
614
|
-
|
|
615
|
-
/**
|
|
616
|
-
* Unit tests for VisualStateStyles and related functions.
|
|
617
|
-
*
|
|
618
|
-
* These tests verify the core style computation logic that drives
|
|
619
|
-
* the component's visual appearance.
|
|
620
|
-
*/
|
|
621
|
-
final class VisualStateStylesTests: XCTestCase {
|
|
622
|
-
|
|
623
|
-
// MARK: - Visual State Map Tests
|
|
624
|
-
|
|
625
|
-
/// Test visual state map contains all states
|
|
626
|
-
func testVisualStateMapContainsAllStates() {
|
|
627
|
-
for state in VisualState.allCases {
|
|
628
|
-
XCTAssertNotNil(visualStateMap[state], "Visual state map should contain \(state)")
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
/// Test visual state map returns correct styles for each state
|
|
633
|
-
func testVisualStateMapReturnsCorrectStyles() {
|
|
634
|
-
XCTAssertEqual(visualStateMap[.rest], VisualStateStyles.rest,
|
|
635
|
-
"Map should return rest styles for rest state")
|
|
636
|
-
XCTAssertEqual(visualStateMap[.selected], VisualStateStyles.selected,
|
|
637
|
-
"Map should return selected styles for selected state")
|
|
638
|
-
XCTAssertEqual(visualStateMap[.notSelected], VisualStateStyles.notSelected,
|
|
639
|
-
"Map should return notSelected styles for notSelected state")
|
|
640
|
-
XCTAssertEqual(visualStateMap[.checked], VisualStateStyles.checked,
|
|
641
|
-
"Map should return checked styles for checked state")
|
|
642
|
-
XCTAssertEqual(visualStateMap[.unchecked], VisualStateStyles.unchecked,
|
|
643
|
-
"Map should return unchecked styles for unchecked state")
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
// MARK: - VisualState Property Tests
|
|
647
|
-
|
|
648
|
-
/// Test showsCheckmark property for each state
|
|
649
|
-
func testShowsCheckmarkProperty() {
|
|
650
|
-
XCTAssertFalse(VisualState.rest.showsCheckmark, "Rest should not show checkmark")
|
|
651
|
-
XCTAssertTrue(VisualState.selected.showsCheckmark, "Selected should show checkmark")
|
|
652
|
-
XCTAssertFalse(VisualState.notSelected.showsCheckmark, "NotSelected should not show checkmark")
|
|
653
|
-
XCTAssertTrue(VisualState.checked.showsCheckmark, "Checked should show checkmark")
|
|
654
|
-
XCTAssertFalse(VisualState.unchecked.showsCheckmark, "Unchecked should not show checkmark")
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
/// Test isSelectMode property for each state
|
|
658
|
-
func testIsSelectModeProperty() {
|
|
659
|
-
XCTAssertTrue(VisualState.rest.isSelectMode, "Rest should be Select mode")
|
|
660
|
-
XCTAssertTrue(VisualState.selected.isSelectMode, "Selected should be Select mode")
|
|
661
|
-
XCTAssertTrue(VisualState.notSelected.isSelectMode, "NotSelected should be Select mode")
|
|
662
|
-
XCTAssertFalse(VisualState.checked.isSelectMode, "Checked should not be Select mode")
|
|
663
|
-
XCTAssertFalse(VisualState.unchecked.isSelectMode, "Unchecked should not be Select mode")
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
/// Test isMultiSelectMode property for each state
|
|
667
|
-
func testIsMultiSelectModeProperty() {
|
|
668
|
-
XCTAssertFalse(VisualState.rest.isMultiSelectMode, "Rest should not be Multi-Select mode")
|
|
669
|
-
XCTAssertFalse(VisualState.selected.isMultiSelectMode, "Selected should not be Multi-Select mode")
|
|
670
|
-
XCTAssertFalse(VisualState.notSelected.isMultiSelectMode, "NotSelected should not be Multi-Select mode")
|
|
671
|
-
XCTAssertTrue(VisualState.checked.isMultiSelectMode, "Checked should be Multi-Select mode")
|
|
672
|
-
XCTAssertTrue(VisualState.unchecked.isMultiSelectMode, "Unchecked should be Multi-Select mode")
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
/// Test usesEmphasisBorder property for each state
|
|
676
|
-
func testUsesEmphasisBorderProperty() {
|
|
677
|
-
XCTAssertFalse(VisualState.rest.usesEmphasisBorder, "Rest should not use emphasis border")
|
|
678
|
-
XCTAssertTrue(VisualState.selected.usesEmphasisBorder, "Selected should use emphasis border")
|
|
679
|
-
XCTAssertFalse(VisualState.notSelected.usesEmphasisBorder, "NotSelected should not use emphasis border")
|
|
680
|
-
XCTAssertFalse(VisualState.checked.usesEmphasisBorder, "Checked should not use emphasis border")
|
|
681
|
-
XCTAssertFalse(VisualState.unchecked.usesEmphasisBorder, "Unchecked should not use emphasis border")
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
/// Test accessibility state descriptions
|
|
685
|
-
func testAccessibilityStateDescriptions() {
|
|
686
|
-
XCTAssertEqual(VisualState.rest.accessibilityStateDescription, "",
|
|
687
|
-
"Rest should have empty description")
|
|
688
|
-
XCTAssertEqual(VisualState.selected.accessibilityStateDescription, "Selected",
|
|
689
|
-
"Selected should have 'Selected' description")
|
|
690
|
-
XCTAssertEqual(VisualState.notSelected.accessibilityStateDescription, "Not selected",
|
|
691
|
-
"NotSelected should have 'Not selected' description")
|
|
692
|
-
XCTAssertEqual(VisualState.checked.accessibilityStateDescription, "Checked",
|
|
693
|
-
"Checked should have 'Checked' description")
|
|
694
|
-
XCTAssertEqual(VisualState.unchecked.accessibilityStateDescription, "Unchecked",
|
|
695
|
-
"Unchecked should have 'Unchecked' description")
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
// MARK: - Error Styling Tests
|
|
699
|
-
|
|
700
|
-
/// Test error styling for Select mode applies full treatment
|
|
701
|
-
func testErrorStylingSelectModeFullTreatment() {
|
|
702
|
-
let baseStyles = VisualStateStyles.rest
|
|
703
|
-
let errorStyles = applyErrorStyles(baseStyles, visualState: .rest)
|
|
704
|
-
|
|
705
|
-
// Select mode should have 2pt border
|
|
706
|
-
XCTAssertEqual(errorStyles.borderWidth, DesignTokens.borderEmphasis,
|
|
707
|
-
"Select mode error should use emphasis border")
|
|
708
|
-
// Checkmark visibility should be preserved
|
|
709
|
-
XCTAssertEqual(errorStyles.checkmarkVisible, baseStyles.checkmarkVisible,
|
|
710
|
-
"Checkmark visibility should be preserved")
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
/// Test error styling for Multi-Select mode applies colors only
|
|
714
|
-
func testErrorStylingMultiSelectModeColorsOnly() {
|
|
715
|
-
let baseStyles = VisualStateStyles.unchecked
|
|
716
|
-
let errorStyles = applyErrorStyles(baseStyles, visualState: .unchecked)
|
|
717
|
-
|
|
718
|
-
// Multi-Select mode should preserve border width
|
|
719
|
-
XCTAssertEqual(errorStyles.borderWidth, baseStyles.borderWidth,
|
|
720
|
-
"Multi-Select mode error should preserve border width")
|
|
721
|
-
// Checkmark visibility should be preserved
|
|
722
|
-
XCTAssertEqual(errorStyles.checkmarkVisible, baseStyles.checkmarkVisible,
|
|
723
|
-
"Checkmark visibility should be preserved")
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
/// Test computeStyles function without error
|
|
727
|
-
func testComputeStylesWithoutError() {
|
|
728
|
-
for state in VisualState.allCases {
|
|
729
|
-
let styles = computeStyles(visualState: state, error: false)
|
|
730
|
-
let expectedStyles = getStylesForState(state)
|
|
731
|
-
XCTAssertEqual(styles, expectedStyles,
|
|
732
|
-
"computeStyles without error should return base styles for \(state)")
|
|
733
|
-
}
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
/// Test computeStyles function with error
|
|
737
|
-
func testComputeStylesWithError() {
|
|
738
|
-
// Select mode with error
|
|
739
|
-
let restErrorStyles = computeStyles(visualState: .rest, error: true)
|
|
740
|
-
XCTAssertEqual(restErrorStyles.borderWidth, DesignTokens.borderEmphasis,
|
|
741
|
-
"Rest with error should use emphasis border")
|
|
742
|
-
|
|
743
|
-
// Multi-Select mode with error
|
|
744
|
-
let checkedErrorStyles = computeStyles(visualState: .checked, error: true)
|
|
745
|
-
XCTAssertEqual(checkedErrorStyles.borderWidth, DesignTokens.borderDefault,
|
|
746
|
-
"Checked with error should preserve default border")
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
/// Test getStylesForState function
|
|
750
|
-
func testGetStylesForState() {
|
|
751
|
-
for state in VisualState.allCases {
|
|
752
|
-
let styles = getStylesForState(state)
|
|
753
|
-
XCTAssertEqual(styles.checkmarkVisible, state.showsCheckmark,
|
|
754
|
-
"Checkmark visibility should match state for \(state)")
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
// MARK: - Equality Tests
|
|
759
|
-
|
|
760
|
-
/// Test VisualStateStyles equality
|
|
761
|
-
func testVisualStateStylesEquality() {
|
|
762
|
-
let styles1 = VisualStateStyles.rest
|
|
763
|
-
let styles2 = getStylesForState(.rest)
|
|
764
|
-
XCTAssertEqual(styles1, styles2, "Same state styles should be equal")
|
|
765
|
-
|
|
766
|
-
let styles3 = VisualStateStyles.selected
|
|
767
|
-
XCTAssertNotEqual(styles1, styles3, "Different state styles should not be equal")
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
/// Test VisualState equality
|
|
771
|
-
func testVisualStateEquality() {
|
|
772
|
-
XCTAssertEqual(VisualState.rest, VisualState.rest, "Same state should be equal")
|
|
773
|
-
XCTAssertNotEqual(VisualState.rest, VisualState.selected, "Different states should not be equal")
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
/// Test CheckmarkTransition equality
|
|
777
|
-
func testCheckmarkTransitionEquality() {
|
|
778
|
-
XCTAssertEqual(CheckmarkTransition.fade, CheckmarkTransition.fade, "Same transition should be equal")
|
|
779
|
-
XCTAssertNotEqual(CheckmarkTransition.fade, CheckmarkTransition.instant, "Different transitions should not be equal")
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
// MARK: - CaseIterable Tests
|
|
783
|
-
|
|
784
|
-
/// Test VisualState.allCases contains all states
|
|
785
|
-
func testVisualStateAllCases() {
|
|
786
|
-
let allCases = VisualState.allCases
|
|
787
|
-
XCTAssertEqual(allCases.count, 5, "Should have 5 visual states")
|
|
788
|
-
XCTAssertTrue(allCases.contains(.rest), "Should contain rest")
|
|
789
|
-
XCTAssertTrue(allCases.contains(.selected), "Should contain selected")
|
|
790
|
-
XCTAssertTrue(allCases.contains(.notSelected), "Should contain notSelected")
|
|
791
|
-
XCTAssertTrue(allCases.contains(.checked), "Should contain checked")
|
|
792
|
-
XCTAssertTrue(allCases.contains(.unchecked), "Should contain unchecked")
|
|
793
|
-
}
|
|
794
|
-
}
|