@3fn/core 13.0.0 → 14.1.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/agents/ada-prompt.md +80 -132
- package/.kiro/agents/ada-prompt.md.attribution.json +45 -0
- package/.kiro/agents/ada.json +44 -59
- package/.kiro/agents/ada.json.attribution.json +13 -0
- package/.kiro/agents/data-prompt.md +83 -74
- package/.kiro/agents/data-prompt.md.attribution.json +53 -0
- package/.kiro/agents/data.json +31 -38
- package/.kiro/agents/data.json.attribution.json +13 -0
- package/.kiro/agents/kenya-prompt.md +83 -72
- package/.kiro/agents/kenya-prompt.md.attribution.json +53 -0
- package/.kiro/agents/kenya.json +27 -35
- package/.kiro/agents/kenya.json.attribution.json +13 -0
- package/.kiro/agents/leonardo-prompt.md +176 -234
- package/.kiro/agents/leonardo-prompt.md.attribution.json +45 -0
- package/.kiro/agents/leonardo.json +28 -36
- package/.kiro/agents/leonardo.json.attribution.json +13 -0
- package/.kiro/agents/lina-prompt.md +110 -151
- package/.kiro/agents/lina-prompt.md.attribution.json +53 -0
- package/.kiro/agents/lina.json +46 -59
- package/.kiro/agents/lina.json.attribution.json +13 -0
- package/.kiro/agents/sparky-prompt.md +89 -72
- package/.kiro/agents/sparky-prompt.md.attribution.json +53 -0
- package/.kiro/agents/sparky.json +37 -37
- package/.kiro/agents/sparky.json.attribution.json +13 -0
- package/.kiro/agents/stacy-prompt.md +74 -48
- package/.kiro/agents/stacy-prompt.md.attribution.json +45 -0
- package/.kiro/agents/stacy.json +28 -30
- package/.kiro/agents/stacy.json.attribution.json +13 -0
- package/.kiro/agents/thurgood-prompt.md +94 -138
- package/.kiro/agents/thurgood-prompt.md.attribution.json +45 -0
- package/.kiro/agents/thurgood.json +31 -35
- package/.kiro/agents/thurgood.json.attribution.json +13 -0
- package/.kiro/steering/AI-Collaboration-Principles.md +3 -3
- package/.kiro/steering/Civitas-System-Overview.md +7 -16
- package/.kiro/steering/DesignerPunk-Systems-Overview.md +6 -6
- package/.kiro/steering/Spec-Feedback-Protocol.md +2 -11
- package/.kiro/steering/Task-Completion-Protocol.md +98 -17
- package/.kiro/steering/core-goals.md +3 -3
- package/.kiro/steering/personal-note.md +1 -1
- package/.kiro/steering/start-up-tasks.md +17 -6
- package/application-mcp-server/src/index.ts +26 -0
- package/dist/ComponentTokens.android.kt +12 -12
- package/dist/ComponentTokens.ios.swift +12 -12
- package/dist/ComponentTokens.web.css +3 -3
- package/dist/DesignTokens.android.kt +1 -1
- package/dist/DesignTokens.dtcg.json +8 -5
- package/dist/DesignTokens.figma.json +2 -2
- package/dist/DesignTokens.ios.swift +1 -1
- package/dist/DesignTokens.web.css +1 -1
- package/dist/android/DesignTokens.android.kt +1 -1
- package/dist/blend/OklchBlendCalculator.js +1 -0
- package/dist/blend/ThemeAwareBlendUtilities.web.d.ts +13 -2
- package/dist/blend/ThemeAwareBlendUtilities.web.js +6 -1
- package/dist/browser/designerpunk.esm.js +36 -90
- package/dist/browser/designerpunk.esm.min.js +33 -36
- package/dist/browser/designerpunk.umd.js +36 -90
- package/dist/browser/designerpunk.umd.min.js +47 -50
- package/dist/browser/tokens.css +3 -3
- package/dist/build/tokens/defineComponentTokens.d.ts +10 -0
- package/dist/build/tokens/defineComponentTokens.js +26 -0
- package/dist/components/core/Avatar-Base/avatar.tokens.d.ts +21 -26
- package/dist/components/core/Avatar-Base/avatar.tokens.js +31 -34
- package/dist/components/core/Avatar-Base/index.d.ts +1 -1
- package/dist/components/core/Avatar-Base/index.js +2 -2
- package/dist/components/core/Avatar-Base/platforms/web/Avatar.web.js +24 -5
- package/dist/components/core/Button-CTA/examples/BasicUsage.d.ts +16 -28
- package/dist/components/core/Button-CTA/examples/BasicUsage.js +18 -43
- package/dist/components/core/Button-CTA/platforms/web/ButtonCTA.web.d.ts +3 -15
- package/dist/components/core/Button-CTA/platforms/web/ButtonCTA.web.js +9 -58
- package/dist/components/core/Button-CTA/types.d.ts +0 -24
- package/dist/components/core/Button-CTA/types.js +6 -0
- package/dist/components/core/Button-Icon/buttonIcon.tokens.d.ts +28 -14
- package/dist/components/core/Button-Icon/buttonIcon.tokens.js +35 -20
- package/dist/components/core/Input-Text-Base/types.d.ts +13 -1
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.js +11 -2
- package/dist/generators/DTCGFormatGenerator.js +8 -0
- package/dist/generators/TokenFileGenerator.js +7 -2
- package/dist/integration/BuildErrorHandler.js +2 -2
- package/dist/ios/DesignTokens.ios.swift +1 -1
- package/dist/mcp/application-mcp.js +24 -0
- package/dist/mcp/docs-mcp.js +130 -15
- package/dist/mcp/product-mcp.js +25 -0
- package/dist/tokens/OpacityTokens.js +1 -1
- package/dist/tokens/component/progress.d.ts +65 -5
- package/dist/tokens/component/progress.js +79 -18
- package/dist/tokens/semantic/BlendTokens.d.ts +10 -3
- package/dist/tokens/semantic/BlendTokens.js +17 -5
- package/dist/tokens/semantic/OpacityTokens.d.ts +4 -4
- package/dist/tokens/semantic/OpacityTokens.js +4 -4
- package/dist/types/ComponentTypes.d.ts +1 -1
- package/dist/types/generated/TokenTypes.d.ts +1 -1
- package/dist/types/generated/TokenTypes.js +1 -1
- package/dist/validators/StemmaTokenUsageValidator.js +3 -2
- package/dist/web/DesignTokens.web.css +1 -1
- package/governance/BUILD-SYSTEM-SETUP.md +1 -2
- package/governance/Component-Development-Guide.md +23 -13
- package/governance/Component-Development-Standards.md +21 -20
- package/governance/Component-Family-Avatar.md +6 -7
- package/governance/Component-Family-Badge.md +19 -20
- package/governance/Component-Family-Button.md +30 -43
- package/governance/Component-Family-Chip.md +14 -15
- package/governance/Component-Family-Container.md +12 -13
- package/governance/Component-Family-Data-Display.md +1 -2
- package/governance/Component-Family-Divider.md +1 -2
- package/governance/Component-Family-Form-Inputs.md +65 -65
- package/governance/Component-Family-Icon.md +9 -10
- package/governance/Component-Family-Loading.md +1 -2
- package/governance/Component-Family-Modal.md +1 -2
- package/governance/Component-Family-Navigation.md +1 -2
- package/governance/Component-Family-Progress.md +0 -1
- package/governance/Component-Inheritance-Structures.md +219 -99
- package/governance/Component-MCP-Document-Template.md +6 -5
- package/governance/Component-Primitive-vs-Semantic-Philosophy.md +1 -1
- package/governance/Component-Quick-Reference.md +33 -33
- package/governance/Component-Readiness-Status.md +59 -44
- package/governance/Component-Templates.md +57 -61
- package/governance/Contract-System-Reference.md +7 -7
- package/governance/MCP-Integration-Guide.md +1 -1
- package/governance/Process-Cross-Reference-Standards.md +31 -13
- package/governance/Process-Development-Workflow.md +49 -59
- package/governance/Process-File-Organization.md +25 -28
- package/governance/Process-Hook-Operations.md +22 -11
- package/governance/Process-Orchestration-Model-Selection.md +92 -0
- package/governance/Process-Spec-Planning.md +98 -52
- package/governance/Process-Task-Type-Definitions.md +80 -4
- package/governance/Product-Handoff-Protocol.md +2 -0
- package/governance/Rosetta-System-Architecture.md +13 -11
- package/governance/Test-Behavioral-Contract-Validation.md +38 -31
- package/governance/Test-Failure-Audit-Methodology.md +1 -1
- package/governance/Token-Family-Accessibility.md +1 -2
- package/governance/Token-Family-Blend.md +18 -16
- package/governance/Token-Family-Blur.md +0 -1
- package/governance/Token-Family-Border.md +1 -2
- package/governance/Token-Family-Color.md +0 -1
- package/governance/Token-Family-Glow.md +1 -2
- package/governance/Token-Family-Layering.md +0 -1
- package/governance/Token-Family-Motion.md +1 -2
- package/governance/Token-Family-Opacity.md +0 -1
- package/governance/Token-Family-Radius.md +1 -2
- package/governance/Token-Family-Responsive.md +1 -2
- package/governance/Token-Family-Shadow.md +1 -2
- package/governance/Token-Family-Sizing.md +0 -1
- package/governance/Token-Family-Spacing.md +1 -2
- package/governance/Token-Family-Typography.md +1 -2
- package/governance/Token-Governance.md +8 -8
- package/governance/Token-Quick-Reference.md +47 -34
- package/governance/Token-Resolution-Patterns.md +1 -1
- package/governance/Token-Semantic-Structure.md +1 -1
- package/governance/Web-Authoring-Standards.md +5 -5
- package/governance/browser-distribution-guide.md +1 -4
- package/governance/classification-map.md +474 -0
- package/governance/completion-documentation-guide.md +23 -37
- package/governance/component-meta-authoring-guide.md +1 -1
- package/governance/cross-platform-vs-platform-specific-decision-framework.md +1 -1
- package/governance/platform-implementation-guidelines.md +2 -3
- package/governance/release-management-system.md +28 -63
- package/governance/rosetta-system-principles.md +8 -6
- package/governance/stemma-system-principles.md +18 -17
- package/mcp-server/src/index.ts +24 -6
- package/mcp-server/src/indexer/DocumentIndexer.ts +119 -9
- package/mcp-server/src/indexer/__tests__/bare-id-crossrefs.test.ts +250 -0
- package/mcp-server/src/indexer/cross-ref-parser.ts +29 -1
- package/mcp-server/src/indexer/index-health.ts +27 -2
- package/mcp-server/src/query/__tests__/find-docs-calibration.test.ts +11 -26
- package/mcp-server/src/relocation-integrity-gate/__tests__/relocation-integrity-gate.test.ts +72 -5
- package/mcp-server/src/relocation-integrity-gate/relocation-integrity-gate.ts +81 -24
- package/mcp-server/src/tools/list-cross-references.ts +2 -2
- package/package.json +24 -26
- package/src/__tests__/browser-distribution/css-bundling.test.ts +6 -4
- package/src/__tests__/console-allowlist.json +14 -0
- package/src/__tests__/console-fail-setup.ts +169 -0
- package/src/__tests__/integration/Spec107-DesignLanguageContext.test.ts +16 -0
- package/src/__tests__/stemma-system/behavioral-contract-validation.test.ts +70 -17
- package/src/__tests__/stemma-system/contract-catalog-name-validation.test.ts +28 -0
- package/src/__tests__/stemma-system/form-inputs-contracts.test.ts +223 -16
- package/src/__tests__/stemma-system/input-text-native-base-call-alignment.test.ts +298 -0
- package/src/blend/OklchBlendCalculator.ts +3 -0
- package/src/blend/ThemeAwareBlendUtilities.android.kt +3 -0
- package/src/blend/ThemeAwareBlendUtilities.ios.swift +3 -0
- package/src/blend/ThemeAwareBlendUtilities.web.ts +9 -1
- package/src/blend/__tests__/InteractionStateAudit.test.ts +12 -9
- package/src/build/errors/__tests__/ErrorHandler.integration.test.ts +8 -0
- package/src/build/errors/__tests__/ErrorHandler.test.ts +5 -0
- package/src/build/tokens/__tests__/defineComponentTokens.test.ts +113 -0
- package/src/build/tokens/defineComponentTokens.ts +43 -1
- package/src/build/workflow/__tests__/CICDIntegration.test.ts +12 -1
- package/src/cli/__tests__/init.test.ts +45 -11
- package/src/components/core/Avatar-Base/Avatar-Base.schema.yaml +1 -1
- package/src/components/core/Avatar-Base/__tests__/Avatar.accessibility.test.ts +121 -7
- package/src/components/core/Avatar-Base/__tests__/Avatar.image.test.ts +3 -0
- package/src/components/core/Avatar-Base/__tests__/Avatar.test.ts +15 -6
- package/src/components/core/Avatar-Base/avatar.tokens.ts +31 -34
- package/src/components/core/Avatar-Base/contracts.yaml +11 -1
- package/src/components/core/Avatar-Base/index.ts +1 -1
- package/src/components/core/Avatar-Base/platforms/web/Avatar.web.ts +24 -5
- package/src/components/core/Badge-Count-Base/contracts.yaml +1 -1
- package/src/components/core/Badge-Label-Base/contracts.yaml +1 -1
- package/src/components/core/Button-CTA/Button-CTA.schema.yaml +2 -12
- package/src/components/core/Button-CTA/README.md +3 -6
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.test.ts +35 -89
- package/src/components/core/Button-CTA/__tests__/setup.test.ts +0 -2
- package/src/components/core/Button-CTA/__tests__/test-utils.ts +0 -2
- package/src/components/core/Button-CTA/contracts.yaml +6 -29
- package/src/components/core/Button-CTA/examples/BasicUsage.html +2 -14
- package/src/components/core/Button-CTA/examples/BasicUsage.tsx +17 -44
- package/src/components/core/Button-CTA/platforms/android/ButtonCTA.android.kt +12 -20
- package/src/components/core/Button-CTA/platforms/ios/ButtonCTA.ios.swift +12 -51
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.css +2 -26
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.ts +18 -71
- package/src/components/core/Button-CTA/types.ts +10 -28
- package/src/components/core/Button-Icon/buttonIcon.tokens.ts +43 -27
- package/src/components/core/Chip-Base/__tests__/ChipBase.test.ts +13 -0
- package/src/components/core/Chip-Filter/__tests__/ChipFilter.test.ts +13 -0
- package/src/components/core/Chip-Input/__tests__/ChipInput.test.ts +13 -0
- package/src/components/core/Input-Text-Base/Input-Text-Base.schema.yaml +30 -2
- package/src/components/core/Input-Text-Base/README.md +25 -2
- package/src/components/core/Input-Text-Base/__tests__/focusIndicators.test.ts +16 -15
- package/src/components/core/Input-Text-Base/contracts.yaml +90 -0
- package/src/components/core/Input-Text-Base/platforms/android/InputTextBase.android.kt +26 -12
- package/src/components/core/Input-Text-Base/platforms/ios/InputTextBase.ios.swift +195 -59
- package/src/components/core/Input-Text-Base/types.ts +13 -1
- package/src/components/core/Input-Text-Email/Input-Text-Email.schema.yaml +5 -1
- package/src/components/core/Input-Text-Email/README.md +8 -7
- package/src/components/core/Input-Text-Email/platforms/android/InputTextEmail.android.kt +1 -4
- package/src/components/core/Input-Text-Email/platforms/ios/InputTextEmail.ios.swift +2 -16
- package/src/components/core/Input-Text-Password/Input-Text-Password.schema.yaml +10 -3
- package/src/components/core/Input-Text-Password/README.md +9 -8
- package/src/components/core/Input-Text-Password/contracts.yaml +5 -0
- package/src/components/core/Input-Text-Password/platforms/android/InputTextPassword.android.kt +17 -7
- package/src/components/core/Input-Text-Password/platforms/ios/InputTextPassword.ios.swift +22 -20
- package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.ts +11 -2
- package/src/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.schema.yaml +5 -1
- package/src/components/core/Input-Text-PhoneNumber/README.md +9 -8
- package/src/components/core/Input-Text-PhoneNumber/platforms/android/InputTextPhoneNumber.android.kt +2 -5
- package/src/components/core/Input-Text-PhoneNumber/platforms/ios/InputTextPhoneNumber.ios.swift +3 -17
- package/src/components/core/Nav-Header-App/contracts.yaml +1 -1
- package/src/components/core/Nav-SegmentedChoice-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Indicator-Connector-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Indicator-Label-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Indicator-Node-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Stepper-Base/__tests__/StepperBase.test.ts +5 -2
- package/src/components/core/Progress-Stepper-Detailed/__tests__/StepperDetailed.test.ts +5 -2
- package/src/generators/DTCGFormatGenerator.ts +6 -0
- package/src/generators/TokenFileGenerator.ts +7 -2
- package/src/generators/__tests__/DTCGConfigOptions.test.ts +14 -5
- package/src/integration/BuildErrorHandler.ts +2 -2
- package/src/tokens/OpacityTokens.ts +1 -1
- package/src/tokens/__tests__/OpacityTokens.test.ts +3 -1
- package/src/tokens/__tests__/ProgressTokenCompliance.test.ts +5 -3
- package/src/tokens/__tests__/ProgressTokenFormulas.test.ts +11 -11
- package/src/tokens/__tests__/ProgressTokenTranslation.test.ts +22 -20
- package/src/tokens/component/progress.ts +83 -21
- package/src/tokens/semantic/BlendTokens.ts +26 -5
- package/src/tokens/semantic/OpacityTokens.ts +4 -4
- package/src/types/ComponentTypes.ts +1 -1
- package/src/types/generated/TokenTypes.ts +1 -1
- package/src/validators/StemmaTokenUsageValidator.ts +3 -2
- package/token-index/components.yaml +8 -8
- package/token-index/semantics.yaml +1 -2
- package/src/tools/release/__tests__/ChangeClassifier.test.ts +0 -133
- package/src/tools/release/__tests__/ChangeExtractor.test.ts +0 -222
- package/src/tools/release/__tests__/GitHubPublisher.test.ts +0 -240
- package/src/tools/release/__tests__/NotesRenderer.test.ts +0 -142
- package/src/tools/release/__tests__/NpmPublisher.test.ts +0 -289
- package/src/tools/release/__tests__/PipelineIntegration.test.ts +0 -188
- package/src/tools/release/__tests__/ReleasePipeline.test.ts +0 -192
- package/src/tools/release/__tests__/SemanticVersionValidator.test.ts +0 -49
- package/src/tools/release/__tests__/SummaryScanner.test.ts +0 -141
- package/src/tools/release/__tests__/TagResolver.test.ts +0 -91
- package/src/tools/release/__tests__/VersionCalculator.test.ts +0 -270
- package/src/tools/release/__tests__/helpers/NpmMockHelper.ts +0 -80
- package/src/tools/release/cli/ReleasePipeline.ts +0 -165
- package/src/tools/release/cli/release-tool.ts +0 -107
- package/src/tools/release/pipeline/ChangeClassifier.ts +0 -61
- package/src/tools/release/pipeline/ChangeExtractor.ts +0 -87
- package/src/tools/release/pipeline/NotesRenderer.ts +0 -66
- package/src/tools/release/pipeline/SummaryScanner.ts +0 -70
- package/src/tools/release/pipeline/TagResolver.ts +0 -40
- package/src/tools/release/pipeline/VersionCalculator.ts +0 -375
- package/src/tools/release/publishers/GitHubPublisher.ts +0 -228
- package/src/tools/release/publishers/NpmPublisher.ts +0 -196
- package/src/tools/release/release-config.json +0 -5
- package/src/tools/release/types/index.ts +0 -282
- package/src/tools/release/validators/SemanticVersionValidator.ts +0 -67
|
@@ -69,7 +69,7 @@ Type primitives are specialized components within a family that provide opiniona
|
|
|
69
69
|
|
|
70
70
|
For detailed Container-Card-Base documentation including props mapping, interactive behavior, and usage examples:
|
|
71
71
|
```
|
|
72
|
-
get_section({ path: "
|
|
72
|
+
get_section({ path: "component-family-container", heading: "Container-Card-Base" })
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
## Naming Convention
|
|
@@ -156,22 +156,22 @@ Returns metadata and outline (~200 tokens) to understand document structure befo
|
|
|
156
156
|
|
|
157
157
|
```
|
|
158
158
|
// Understand Form Inputs family structure
|
|
159
|
-
get_document_summary({ path: "
|
|
159
|
+
get_document_summary({ path: "component-family-form-inputs" })
|
|
160
160
|
|
|
161
161
|
// Understand Button family structure
|
|
162
|
-
get_document_summary({ path: "
|
|
162
|
+
get_document_summary({ path: "component-family-button" })
|
|
163
163
|
|
|
164
164
|
// Understand Container family structure
|
|
165
|
-
get_document_summary({ path: "
|
|
165
|
+
get_document_summary({ path: "component-family-container" })
|
|
166
166
|
|
|
167
167
|
// Understand Icon family structure
|
|
168
|
-
get_document_summary({ path: "
|
|
168
|
+
get_document_summary({ path: "component-family-icon" })
|
|
169
169
|
|
|
170
170
|
// Understand Chip family structure
|
|
171
|
-
get_document_summary({ path: "
|
|
171
|
+
get_document_summary({ path: "component-family-chip" })
|
|
172
172
|
|
|
173
173
|
// Get Container-Card-Base type primitive details
|
|
174
|
-
get_section({ path: "
|
|
174
|
+
get_section({ path: "component-family-container", heading: "Container-Card-Base" })
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
**Returns**: Document metadata (purpose, layer, relevant tasks) plus section outline with headings.
|
|
@@ -182,37 +182,37 @@ Returns targeted content (~500-2,000 tokens) for specific information needs:
|
|
|
182
182
|
|
|
183
183
|
```
|
|
184
184
|
// Get component behavioral contracts
|
|
185
|
-
get_section({ path: "
|
|
185
|
+
get_section({ path: "component-family-form-inputs", heading: "Behavioral Contracts" })
|
|
186
186
|
|
|
187
187
|
// Get contract system conventions (taxonomy, naming, format)
|
|
188
|
-
get_section({ path: "
|
|
189
|
-
get_section({ path: "
|
|
190
|
-
get_section({ path: "
|
|
188
|
+
get_section({ path: "contract-system-reference", heading: "Taxonomy" })
|
|
189
|
+
get_section({ path: "contract-system-reference", heading: "Naming Convention" })
|
|
190
|
+
get_section({ path: "contract-system-reference", heading: "Canonical Format" })
|
|
191
191
|
|
|
192
192
|
// Get inheritance structure
|
|
193
|
-
get_section({ path: "
|
|
193
|
+
get_section({ path: "component-family-button", heading: "Inheritance Structure" })
|
|
194
194
|
|
|
195
195
|
// Get token dependencies
|
|
196
|
-
get_section({ path: "
|
|
196
|
+
get_section({ path: "component-family-container", heading: "Token Dependencies" })
|
|
197
197
|
|
|
198
198
|
// Get usage guidelines
|
|
199
|
-
get_section({ path: "
|
|
199
|
+
get_section({ path: "component-family-icon", heading: "Usage Guidelines" })
|
|
200
200
|
|
|
201
201
|
// Get Chip family behavioral contracts
|
|
202
|
-
get_section({ path: "
|
|
202
|
+
get_section({ path: "component-family-chip", heading: "Behavioral Contracts" })
|
|
203
203
|
|
|
204
204
|
// Get cross-platform notes
|
|
205
|
-
get_section({ path: "
|
|
205
|
+
get_section({ path: "component-family-form-inputs", heading: "Cross-Platform Notes" })
|
|
206
206
|
|
|
207
207
|
// Get radio component details
|
|
208
|
-
get_section({ path: "
|
|
209
|
-
get_section({ path: "
|
|
208
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Base" })
|
|
209
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Set" })
|
|
210
210
|
|
|
211
211
|
// Get component schema definitions
|
|
212
|
-
get_section({ path: "
|
|
212
|
+
get_section({ path: "component-family-button", heading: "Component Schemas" })
|
|
213
213
|
|
|
214
214
|
// Get placeholder family planned characteristics
|
|
215
|
-
get_section({ path: "
|
|
215
|
+
get_section({ path: "component-family-modal", heading: "Planned Characteristics" })
|
|
216
216
|
```
|
|
217
217
|
|
|
218
218
|
**Returns**: Section content with parent heading context for document location.
|
|
@@ -223,10 +223,10 @@ Returns complete content (~2,000-10,000 tokens) when comprehensive reference is
|
|
|
223
223
|
|
|
224
224
|
```
|
|
225
225
|
// Full Form Inputs family reference
|
|
226
|
-
get_document_full({ path: "
|
|
226
|
+
get_document_full({ path: "component-family-form-inputs" })
|
|
227
227
|
|
|
228
228
|
// Full Button family reference
|
|
229
|
-
get_document_full({ path: "
|
|
229
|
+
get_document_full({ path: "component-family-button" })
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
**Use sparingly**: Only when you need complete component family documentation.
|
|
@@ -241,10 +241,10 @@ find_docs({ concept: "form inputs" }) // discover by concept/keyword
|
|
|
241
241
|
find_docs({ list: true }) // full catalog, paginated
|
|
242
242
|
|
|
243
243
|
// List cross-references in a document
|
|
244
|
-
list_cross_references({ path: "
|
|
244
|
+
list_cross_references({ path: "component-family-form-inputs" })
|
|
245
245
|
|
|
246
246
|
// Validate document metadata schema
|
|
247
|
-
validate_metadata({ path: "
|
|
247
|
+
validate_metadata({ path: "component-family-button" })
|
|
248
248
|
|
|
249
249
|
// Check documentation index health
|
|
250
250
|
get_index_health()
|
|
@@ -270,30 +270,30 @@ rebuild_index()
|
|
|
270
270
|
**Example: Building a Login Form:**
|
|
271
271
|
```
|
|
272
272
|
// Step 1: Get Form Inputs overview
|
|
273
|
-
get_document_summary({ path: "
|
|
273
|
+
get_document_summary({ path: "component-family-form-inputs" })
|
|
274
274
|
|
|
275
275
|
// Step 2: Get specific component contracts
|
|
276
|
-
get_section({ path: "
|
|
277
|
-
get_section({ path: "
|
|
276
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Text-Email" })
|
|
277
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Text-Password" })
|
|
278
278
|
|
|
279
279
|
// Step 3: Get button for submit action
|
|
280
|
-
get_section({ path: "
|
|
280
|
+
get_section({ path: "component-family-button", heading: "Button-CTA" })
|
|
281
281
|
|
|
282
282
|
// Step 4: Get container for layout
|
|
283
|
-
get_section({ path: "
|
|
283
|
+
get_section({ path: "component-family-container", heading: "Container-Base" })
|
|
284
284
|
```
|
|
285
285
|
|
|
286
286
|
**Example: Building a Survey with Radio Groups:**
|
|
287
287
|
```
|
|
288
288
|
// Step 1: Get radio component details
|
|
289
|
-
get_section({ path: "
|
|
290
|
-
get_section({ path: "
|
|
289
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Base" })
|
|
290
|
+
get_section({ path: "component-family-form-inputs", heading: "Input-Radio-Set" })
|
|
291
291
|
|
|
292
292
|
// Step 2: Get container for section layout
|
|
293
|
-
get_section({ path: "
|
|
293
|
+
get_section({ path: "component-family-container", heading: "Container-Base" })
|
|
294
294
|
|
|
295
295
|
// Step 3: Get button for submit
|
|
296
|
-
get_section({ path: "
|
|
296
|
+
get_section({ path: "component-family-button", heading: "Button-CTA" })
|
|
297
297
|
```
|
|
298
298
|
|
|
299
299
|
## Related Documentation
|
|
@@ -13,7 +13,7 @@ description: Readiness status definitions, usage recommendations, and transition
|
|
|
13
13
|
**Scope**: cross-project
|
|
14
14
|
**Layer**: 2
|
|
15
15
|
**Relevant Tasks**: component-development, architecture, spec-planning
|
|
16
|
-
**Last Reviewed**: 2026-
|
|
16
|
+
**Last Reviewed**: 2026-07-09
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -520,17 +520,16 @@ metadata:
|
|
|
520
520
|
**Query component readiness**:
|
|
521
521
|
```
|
|
522
522
|
get_section({
|
|
523
|
-
path: "
|
|
524
|
-
heading: "Component
|
|
523
|
+
path: "component-readiness-status",
|
|
524
|
+
heading: "Individual Component Status"
|
|
525
525
|
})
|
|
526
526
|
```
|
|
527
527
|
|
|
528
528
|
**Response includes**:
|
|
529
|
-
- Component name
|
|
530
|
-
-
|
|
531
|
-
-
|
|
532
|
-
-
|
|
533
|
-
- Migration guidance (if deprecated)
|
|
529
|
+
- Component name and family
|
|
530
|
+
- Roll-up status indicator (production-ready / web-ready-mobile-scaffold / scaffold)
|
|
531
|
+
- Per-platform readiness breakdown (web / iOS / Android)
|
|
532
|
+
- Implementation path
|
|
534
533
|
|
|
535
534
|
---
|
|
536
535
|
|
|
@@ -544,54 +543,70 @@ get_section({
|
|
|
544
543
|
| Component Family | Shared Need/Purpose | Status | MCP Document Path |
|
|
545
544
|
|------------------|---------------------|--------|-------------------|
|
|
546
545
|
| Buttons | User interaction and actions | 🟢 | `.kiro/steering/Component-Family-Button.md` |
|
|
547
|
-
| Form Inputs | Data collection and validation |
|
|
548
|
-
| Containers | Layout and content organization |
|
|
549
|
-
| Icons | Visual communication |
|
|
546
|
+
| Form Inputs | Data collection and validation | 🟡 | `.kiro/steering/Component-Family-Form-Inputs.md` |
|
|
547
|
+
| Containers | Layout and content organization | 🟡 | `.kiro/steering/Component-Family-Container.md` |
|
|
548
|
+
| Icons | Visual communication | 🟡 | `.kiro/steering/Component-Family-Icon.md` |
|
|
549
|
+
| Avatars | Identity representation | 🟡 | `.kiro/steering/Component-Family-Avatar.md` |
|
|
550
|
+
| Badges & Tags | Status and labeling | 🟡 | `.kiro/steering/Component-Family-Badge.md` |
|
|
551
|
+
| Chips | Selection, filtering, and input tokens | 🟡 | `.kiro/steering/Component-Family-Chip.md` |
|
|
552
|
+
| Navigation | Wayfinding | 🟡 | `.kiro/steering/Component-Family-Navigation.md` |
|
|
553
|
+
| Progress Indicators | Progress and step indication | 🟡 | `.kiro/steering/Component-Family-Progress.md` |
|
|
550
554
|
| Modals | Overlay interactions | 🔴 | `.kiro/steering/Component-Family-Modal.md` |
|
|
551
|
-
| Avatars | Identity representation | 🔴 | `.kiro/steering/Component-Family-Avatar.md` |
|
|
552
|
-
| Badges & Tags | Status and labeling | 🔴 | `.kiro/steering/Component-Family-Badge.md` |
|
|
553
555
|
| Data Displays | Information presentation | 🔴 | `.kiro/steering/Component-Family-Data-Display.md` |
|
|
554
556
|
| Dividers | Visual separation | 🔴 | `.kiro/steering/Component-Family-Divider.md` |
|
|
555
557
|
| Loading | Progress indication | 🔴 | `.kiro/steering/Component-Family-Loading.md` |
|
|
556
|
-
| Navigation | Wayfinding | 🔴 | `.kiro/steering/Component-Family-Navigation.md` |
|
|
557
558
|
```
|
|
558
559
|
|
|
560
|
+
> **🟡 in this table = "shipping, web production-ready, iOS/Android scaffold"** — the family has usable web implementations but has not reached the strict all-platform 🟢 bar. Per-component per-platform detail is in the Individual Component Status table below. Buttons is 🟢 only because it contains all-platform-production components (Button-VerticalList-Item/Set); its CTA/Icon members are themselves web-ready/mobile-scaffold. 🔴 families are genuine placeholders (no components ship).
|
|
561
|
+
|
|
559
562
|
---
|
|
560
563
|
|
|
561
564
|
## Individual Component Status
|
|
562
565
|
|
|
563
566
|
This section lists all implemented components with their readiness status and implementation paths. Used by extraction workflows to check component existence and status.
|
|
564
567
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
|
572
|
-
|
|
573
|
-
|
|
|
574
|
-
|
|
|
575
|
-
|
|
|
576
|
-
|
|
|
577
|
-
|
|
|
578
|
-
|
|
|
579
|
-
|
|
|
580
|
-
|
|
|
581
|
-
|
|
|
582
|
-
|
|
|
583
|
-
|
|
|
584
|
-
|
|
|
585
|
-
|
|
|
586
|
-
|
|
|
587
|
-
|
|
|
588
|
-
|
|
|
589
|
-
|
|
|
590
|
-
|
|
|
591
|
-
|
|
|
592
|
-
|
|
|
593
|
-
|
|
|
594
|
-
|
|
|
568
|
+
**Per-platform status convention**: readiness is tracked per platform (web / iOS / Android). The **Status** column carries a single roll-up indicator; the **Platform Readiness** column shows the honest per-platform breakdown so no component's mobile immaturity is hidden behind a green light.
|
|
569
|
+
|
|
570
|
+
- 🟢 **Production Ready** — production-ready across ALL declared platforms (web, iOS, Android), per the strict definition above. Currently only Button-VerticalList-Item and Button-VerticalList-Set meet this bar.
|
|
571
|
+
- 🟡 **Web-ready, mobile-scaffold** — web is production-ready (implemented, tested, documented) but iOS and Android are scaffold (structure present, not test-covered). Safe to consume on web; treat mobile as not-yet-ready.
|
|
572
|
+
- 🟡 **Scaffold (all platforms)** — structure present on all platforms but none production-ready; intentional for permissive/internal primitives (noted inline).
|
|
573
|
+
|
|
574
|
+
| Component | Family | Status | Platform Readiness (web / iOS / Android) | Implementation Path |
|
|
575
|
+
|-----------|--------|--------|------------------------------------------|---------------------|
|
|
576
|
+
| Avatar-Base | Avatar | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Avatar-Base/` |
|
|
577
|
+
| Badge-Count-Base | Badge | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Badge-Count-Base/` |
|
|
578
|
+
| Badge-Count-Notification | Badge | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Badge-Count-Notification/` |
|
|
579
|
+
| Badge-Label-Base | Badge | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Badge-Label-Base/` |
|
|
580
|
+
| Button-CTA | Button | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Button-CTA/` |
|
|
581
|
+
| Button-Icon | Button | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Button-Icon/` |
|
|
582
|
+
| Button-VerticalList-Item | Button | 🟢 | 🟢 / 🟢 / 🟢 | `src/components/core/Button-VerticalList-Item/` |
|
|
583
|
+
| Button-VerticalList-Set | Button | 🟢 | 🟢 / 🟢 / 🟢 | `src/components/core/Button-VerticalList-Set/` |
|
|
584
|
+
| Chip-Base | Chip | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Chip-Base/` |
|
|
585
|
+
| Chip-Filter | Chip | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Chip-Filter/` |
|
|
586
|
+
| Chip-Input | Chip | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Chip-Input/` |
|
|
587
|
+
| Container-Base | Container | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Container-Base/` |
|
|
588
|
+
| Container-Card-Base | Container | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Container-Card-Base/` |
|
|
589
|
+
| Icon-Base | Icon | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Icon-Base/` |
|
|
590
|
+
| Input-Checkbox-Base | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Checkbox-Base/` |
|
|
591
|
+
| Input-Checkbox-Legal | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Checkbox-Legal/` |
|
|
592
|
+
| Input-Radio-Base | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Radio-Base/` |
|
|
593
|
+
| Input-Radio-Set | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Radio-Set/` |
|
|
594
|
+
| Input-Text-Base | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-Base/` |
|
|
595
|
+
| Input-Text-Email | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-Email/` |
|
|
596
|
+
| Input-Text-Password | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-Password/` |
|
|
597
|
+
| Input-Text-PhoneNumber | Form Inputs | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Input-Text-PhoneNumber/` |
|
|
598
|
+
| Nav-Header-Page | Navigation | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Nav-Header-Page/` |
|
|
599
|
+
| Nav-SegmentedChoice-Base | Navigation | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Nav-SegmentedChoice-Base/` |
|
|
600
|
+
| Nav-TabBar-Base | Navigation | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Nav-TabBar-Base/` |
|
|
601
|
+
| Nav-Header-App | Navigation | 🟡 | scaffold / scaffold / scaffold — permissive scaffold by design | `src/components/core/Nav-Header-App/` |
|
|
602
|
+
| Nav-Header-Base | Navigation | 🟡 | scaffold / scaffold / scaffold — internal-only primitive | `src/components/core/Nav-Header-Base/` |
|
|
603
|
+
| Progress-Bar-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Bar-Base/` |
|
|
604
|
+
| Progress-Indicator-Node-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Indicator-Node-Base/` |
|
|
605
|
+
| Progress-Pagination-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Pagination-Base/` |
|
|
606
|
+
| Progress-Stepper-Base | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Stepper-Base/` |
|
|
607
|
+
| Progress-Stepper-Detailed | Progress Indicators | 🟡 | 🟢 / scaffold / scaffold | `src/components/core/Progress-Stepper-Detailed/` |
|
|
608
|
+
| Progress-Indicator-Connector-Base | Progress Indicators | 🟡 | scaffold / scaffold / scaffold | `src/components/core/Progress-Indicator-Connector-Base/` |
|
|
609
|
+
| Progress-Indicator-Label-Base | Progress Indicators | 🟡 | scaffold / scaffold / scaffold | `src/components/core/Progress-Indicator-Label-Base/` |
|
|
595
610
|
|
|
596
611
|
**Usage:**
|
|
597
612
|
|
|
@@ -12,7 +12,7 @@ aliases: how do i scaffold a new component, scaffold a new component template, n
|
|
|
12
12
|
**Scope**: cross-project
|
|
13
13
|
**Layer**: 2
|
|
14
14
|
**Relevant Tasks**: component-development, architecture, spec-planning
|
|
15
|
-
**Last Reviewed**: 2026-
|
|
15
|
+
**Last Reviewed**: 2026-07-15
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -412,14 +412,6 @@ properties:
|
|
|
412
412
|
- secondary: [description]
|
|
413
413
|
- tertiary: [description]
|
|
414
414
|
|
|
415
|
-
# State properties
|
|
416
|
-
disabled:
|
|
417
|
-
type: boolean
|
|
418
|
-
required: false
|
|
419
|
-
default: false
|
|
420
|
-
description: |
|
|
421
|
-
When true, component is non-interactive with disabled visual styling.
|
|
422
|
-
|
|
423
415
|
# Callback properties
|
|
424
416
|
[callbackProp]:
|
|
425
417
|
type: "() => void"
|
|
@@ -704,29 +696,27 @@ Use when semantic variants represent different states or statuses.
|
|
|
704
696
|
#### Focusable Contract
|
|
705
697
|
|
|
706
698
|
```yaml
|
|
707
|
-
|
|
699
|
+
interaction_focusable:
|
|
708
700
|
description: Can receive keyboard focus
|
|
709
701
|
behavior: |
|
|
710
702
|
Component can receive focus via Tab key navigation.
|
|
711
703
|
Focus state is visually indicated with a focus ring.
|
|
712
|
-
Focus is managed appropriately when disabled state changes.
|
|
713
704
|
wcag: "2.1.1 Keyboard, 2.4.7 Focus Visible"
|
|
714
705
|
platforms: [web, ios, android]
|
|
715
706
|
validation: |
|
|
716
707
|
- Tab key moves focus to component
|
|
717
708
|
- Focus state is visually distinct with focus ring
|
|
718
709
|
- Focus ring meets 3:1 contrast ratio
|
|
719
|
-
- Disabled components are not focusable
|
|
720
710
|
```
|
|
721
711
|
|
|
722
712
|
#### Pressable Contract
|
|
723
713
|
|
|
724
714
|
```yaml
|
|
725
|
-
|
|
715
|
+
interaction_pressable:
|
|
726
716
|
description: Responds to press/click events
|
|
727
717
|
behavior: |
|
|
728
718
|
Component responds to click, tap, Enter key, and Space key.
|
|
729
|
-
Press triggers the callback
|
|
719
|
+
Press triggers the callback.
|
|
730
720
|
Platform-appropriate feedback is provided during press.
|
|
731
721
|
wcag: "2.1.1 Keyboard"
|
|
732
722
|
platforms: [web, ios, android]
|
|
@@ -734,25 +724,22 @@ pressable:
|
|
|
734
724
|
- Click/tap triggers callback
|
|
735
725
|
- Enter key triggers callback
|
|
736
726
|
- Space key triggers callback
|
|
737
|
-
- Callback not called when disabled
|
|
738
727
|
```
|
|
739
728
|
|
|
740
729
|
#### Hoverable Contract
|
|
741
730
|
|
|
742
731
|
```yaml
|
|
743
|
-
|
|
732
|
+
interaction_hover:
|
|
744
733
|
description: Visual feedback on hover (pointer devices only)
|
|
745
734
|
behavior: |
|
|
746
735
|
On pointer devices, component shows visual feedback when mouse
|
|
747
736
|
hovers over the component. Uses blend.hoverDarker token.
|
|
748
|
-
Hover state not shown when disabled.
|
|
749
737
|
wcag: "1.4.13 Content on Hover or Focus"
|
|
750
738
|
platforms: [web, ios, android]
|
|
751
739
|
validation: |
|
|
752
740
|
- Visual feedback shown on mouse enter
|
|
753
741
|
- Visual feedback removed on mouse leave
|
|
754
742
|
- Hover uses blend.hoverDarker token
|
|
755
|
-
- Hover state not shown when disabled
|
|
756
743
|
- iOS: Only on macOS/iPadOS with pointer
|
|
757
744
|
- Android: Only on desktop/ChromeOS with pointer
|
|
758
745
|
```
|
|
@@ -761,32 +748,42 @@ hoverable:
|
|
|
761
748
|
|
|
762
749
|
### Contract Category 2: State Contracts
|
|
763
750
|
|
|
764
|
-
#### Disabled
|
|
751
|
+
#### No Disabled States — Standardized Exclusion
|
|
752
|
+
|
|
753
|
+
**DesignerPunk components MUST NOT declare a disabled-state contract.** Per the
|
|
754
|
+
2026-07-15 adjudication (`.kiro/issues/button-cta-disabled-state-adjudication.md`),
|
|
755
|
+
the no-disabled-states philosophy now holds corpus-wide with zero exceptions —
|
|
756
|
+
Button-CTA was the last remaining component with a live `disabled_state`
|
|
757
|
+
contract, and it has been removed in favor of the standardized exclusion below.
|
|
758
|
+
|
|
759
|
+
If an action is temporarily unavailable, use one of these alternatives instead:
|
|
760
|
+
|
|
761
|
+
- **`state_loading`** — the action is in-flight (async operation running).
|
|
762
|
+
- **Validate-on-press / validate-on-blur** — the action is available but the
|
|
763
|
+
current input is invalid; surface the error rather than disabling the trigger.
|
|
764
|
+
- **Do not render the component** — if an action is genuinely unavailable
|
|
765
|
+
(no valid path forward), omit the component entirely rather than rendering
|
|
766
|
+
it in a disabled state.
|
|
767
|
+
|
|
768
|
+
Every component's `contracts.yaml` MUST carry the standardized exclusion block
|
|
769
|
+
(mirrored corpus-wide, e.g. `src/components/core/Button-CTA/contracts.yaml`):
|
|
765
770
|
|
|
766
771
|
```yaml
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
- Cannot receive focus
|
|
772
|
-
- Cannot be interacted with
|
|
773
|
-
- Uses desaturated colors (blend.disabledDesaturate)
|
|
774
|
-
- Shows cursor: not-allowed (web)
|
|
775
|
-
- Communicates disabled state to assistive technology
|
|
776
|
-
wcag: "4.1.2 Name, Role, Value"
|
|
777
|
-
platforms: [web, ios, android]
|
|
778
|
-
validation: |
|
|
779
|
-
- Component cannot receive focus when disabled
|
|
780
|
-
- Interactions do not trigger callbacks when disabled
|
|
781
|
-
- Visual styling indicates disabled state
|
|
782
|
-
- aria-disabled="true" set (web)
|
|
783
|
-
- Disabled state announced to screen readers
|
|
772
|
+
excludes:
|
|
773
|
+
state_disabled:
|
|
774
|
+
reason: "DesignerPunk does not support disabled states for usability and accessibility reasons. If an action is unavailable, the component should not be rendered."
|
|
775
|
+
category: state
|
|
784
776
|
```
|
|
785
777
|
|
|
778
|
+
Do not scaffold a `disabled` prop, a `disabled_state` contract, or any
|
|
779
|
+
disabled-specific validation steps in new components. For the full rationale,
|
|
780
|
+
see the exclusion reason above and the 2026-07-15 adjudication ruling
|
|
781
|
+
(`.kiro/issues/button-cta-disabled-state-adjudication.md`).
|
|
782
|
+
|
|
786
783
|
#### Error State Contract
|
|
787
784
|
|
|
788
785
|
```yaml
|
|
789
|
-
|
|
786
|
+
state_error:
|
|
790
787
|
description: Shows error message and styling
|
|
791
788
|
behavior: |
|
|
792
789
|
When in error state, component displays:
|
|
@@ -807,7 +804,7 @@ error_state:
|
|
|
807
804
|
#### Success State Contract
|
|
808
805
|
|
|
809
806
|
```yaml
|
|
810
|
-
|
|
807
|
+
state_success:
|
|
811
808
|
description: Shows success styling
|
|
812
809
|
behavior: |
|
|
813
810
|
When in success state, component displays:
|
|
@@ -825,12 +822,12 @@ success_state:
|
|
|
825
822
|
#### Loading State Contract
|
|
826
823
|
|
|
827
824
|
```yaml
|
|
828
|
-
|
|
825
|
+
state_loading:
|
|
829
826
|
description: Shows loading indicator during async operations
|
|
830
827
|
behavior: |
|
|
831
828
|
When in loading state, component:
|
|
832
829
|
- Shows loading spinner or indicator
|
|
833
|
-
- Prevents interaction
|
|
830
|
+
- Prevents interaction while the async operation is in-flight
|
|
834
831
|
- Maintains dimensions to prevent layout shift
|
|
835
832
|
- Communicates loading state to assistive technology
|
|
836
833
|
wcag: "4.1.3 Status Messages"
|
|
@@ -849,7 +846,7 @@ loading_state:
|
|
|
849
846
|
#### Focus Ring Contract
|
|
850
847
|
|
|
851
848
|
```yaml
|
|
852
|
-
|
|
849
|
+
interaction_focus_ring:
|
|
853
850
|
description: WCAG 2.4.7 focus visible indicator
|
|
854
851
|
behavior: |
|
|
855
852
|
When focused via keyboard, component displays:
|
|
@@ -870,7 +867,7 @@ focus_ring:
|
|
|
870
867
|
#### Reduced Motion Support Contract
|
|
871
868
|
|
|
872
869
|
```yaml
|
|
873
|
-
|
|
870
|
+
accessibility_reduced_motion:
|
|
874
871
|
description: Respects prefers-reduced-motion
|
|
875
872
|
behavior: |
|
|
876
873
|
When user has reduced motion preference:
|
|
@@ -913,7 +910,7 @@ accessibility_hidden:
|
|
|
913
910
|
#### Float Label Animation Contract
|
|
914
911
|
|
|
915
912
|
```yaml
|
|
916
|
-
|
|
913
|
+
content_float_label:
|
|
917
914
|
description: Label animates on focus
|
|
918
915
|
behavior: |
|
|
919
916
|
Label smoothly transitions from placeholder position inside component
|
|
@@ -932,7 +929,7 @@ float_label_animation:
|
|
|
932
929
|
#### Pressed State Visual Contract
|
|
933
930
|
|
|
934
931
|
```yaml
|
|
935
|
-
|
|
932
|
+
interaction_pressed:
|
|
936
933
|
description: Visual feedback when pressed
|
|
937
934
|
behavior: |
|
|
938
935
|
Component shows visual feedback during active press/click.
|
|
@@ -947,13 +944,12 @@ pressed_state:
|
|
|
947
944
|
- Visual feedback shown during press
|
|
948
945
|
- Feedback uses blend.pressedDarker token
|
|
949
946
|
- Platform-appropriate animation/effect applied
|
|
950
|
-
- Pressed state not shown when disabled
|
|
951
947
|
```
|
|
952
948
|
|
|
953
949
|
#### Gradient Glow Contract
|
|
954
950
|
|
|
955
951
|
```yaml
|
|
956
|
-
|
|
952
|
+
visual_gradient_glow:
|
|
957
953
|
description: Radial gradient background providing state-dependent visual emphasis
|
|
958
954
|
behavior: |
|
|
959
955
|
Component renders an elliptical radial gradient background on
|
|
@@ -979,7 +975,7 @@ gradient_glow:
|
|
|
979
975
|
#### Validates On Blur Contract
|
|
980
976
|
|
|
981
977
|
```yaml
|
|
982
|
-
|
|
978
|
+
validation_on_blur:
|
|
983
979
|
description: Validation triggers on blur
|
|
984
980
|
behavior: |
|
|
985
981
|
Validation state is evaluated when component loses focus.
|
|
@@ -1018,7 +1014,7 @@ custom_validation:
|
|
|
1018
1014
|
#### Contains Children Contract
|
|
1019
1015
|
|
|
1020
1016
|
```yaml
|
|
1021
|
-
|
|
1017
|
+
layout_contains_children:
|
|
1022
1018
|
description: Can contain child components
|
|
1023
1019
|
behavior: |
|
|
1024
1020
|
Component can contain any child components or content.
|
|
@@ -1038,7 +1034,7 @@ contains_children:
|
|
|
1038
1034
|
#### Renders SVG Contract
|
|
1039
1035
|
|
|
1040
1036
|
```yaml
|
|
1041
|
-
|
|
1037
|
+
visual_renders_svg:
|
|
1042
1038
|
description: Renders inline SVG with correct attributes
|
|
1043
1039
|
behavior: |
|
|
1044
1040
|
Component renders an inline SVG element with:
|
|
@@ -1046,7 +1042,7 @@ renders_svg:
|
|
|
1046
1042
|
- Appropriate fill/stroke attributes
|
|
1047
1043
|
- Proper sizing based on size prop
|
|
1048
1044
|
SVG content is loaded based on name from internal map.
|
|
1049
|
-
wcag:
|
|
1045
|
+
wcag: null
|
|
1050
1046
|
platforms: [web, ios, android]
|
|
1051
1047
|
validation: |
|
|
1052
1048
|
- SVG element renders with correct viewBox
|
|
@@ -1081,18 +1077,18 @@ renders_svg:
|
|
|
1081
1077
|
|
|
1082
1078
|
| Behavior Needed | Contract(s) to Include |
|
|
1083
1079
|
|-----------------|------------------------|
|
|
1084
|
-
| Keyboard navigation |
|
|
1085
|
-
| Click/tap interaction |
|
|
1086
|
-
| Mouse hover feedback |
|
|
1087
|
-
|
|
|
1088
|
-
| Error handling |
|
|
1089
|
-
| Success feedback |
|
|
1090
|
-
| Loading indication |
|
|
1091
|
-
| Animation support |
|
|
1080
|
+
| Keyboard navigation | interaction_focusable, interaction_focus_ring |
|
|
1081
|
+
| Click/tap interaction | interaction_pressable, interaction_pressed |
|
|
1082
|
+
| Mouse hover feedback | interaction_hover |
|
|
1083
|
+
| Action temporarily unavailable | state_loading (in-flight), validation_on_blur (invalid input), or do not render (no valid path) — never a disabled-state contract; see "No Disabled States — Standardized Exclusion" |
|
|
1084
|
+
| Error handling | state_error, validation_on_blur |
|
|
1085
|
+
| Success feedback | state_success |
|
|
1086
|
+
| Loading indication | state_loading |
|
|
1087
|
+
| Animation support | accessibility_reduced_motion |
|
|
1092
1088
|
| Decorative elements | accessibility_hidden |
|
|
1093
|
-
| Form validation |
|
|
1094
|
-
| Container behavior |
|
|
1095
|
-
| Icon rendering |
|
|
1089
|
+
| Form validation | validation_on_blur, custom_validation |
|
|
1090
|
+
| Container behavior | layout_contains_children |
|
|
1091
|
+
| Icon rendering | visual_renders_svg, accessibility_hidden |
|
|
1096
1092
|
|
|
1097
1093
|
### Application MCP Checklist
|
|
1098
1094
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: contract-system-reference
|
|
3
3
|
inclusion: manual
|
|
4
4
|
name: Contract-System-Reference
|
|
5
|
-
description: Uniform behavioral contract system reference — 10-category taxonomy with definitions, concept catalog with all
|
|
5
|
+
description: Uniform behavioral contract system reference — 10-category taxonomy with definitions, concept catalog with all 137 concepts, {category}_{concept} naming convention, canonical contracts.yaml format, exclusion format, inheritance and composition patterns, classification rules. Load when creating or modifying component contracts, auditing contract coverage, or building contract-consuming systems.
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Contract System Reference
|
|
@@ -46,9 +46,9 @@ This document is the authoritative reference for contract conventions. For the d
|
|
|
46
46
|
|
|
47
47
|
## Concept Catalog
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
137 concepts across 10 categories. Originally 116, derived from the 29 deployed contracts.yaml files in the Spec 078 audit; grown since through governed additions (`gradient_glow` ballot measure, Spec 088 Nav-Header concepts, Spec 090 Progress-Bar-Base concepts, `readonly` ballot measure 2026-07-15).
|
|
50
50
|
|
|
51
|
-
*Adjudicated 2026-07-03 (Lina):
|
|
51
|
+
*Adjudicated 2026-07-03 (Lina): 137 counted empirically from the per-category lists below (26+6+7+17+19+6+1+16+10+29), which are the enforced source of truth via `src/__tests__/stemma-system/contract-catalog-name-validation.test.ts`; the stale "117" figures dated from the last full-sweep update (gradient_glow, 2026-03-18), while only this section's rolling "Updated:" line had tracked subsequent additions to 136. state grew to 16 via the 2026-07-15 readonly ballot.*
|
|
52
52
|
|
|
53
53
|
### accessibility (26)
|
|
54
54
|
|
|
@@ -78,9 +78,9 @@ This document is the authoritative reference for contract conventions. For the d
|
|
|
78
78
|
|
|
79
79
|
`virtualization`
|
|
80
80
|
|
|
81
|
-
### state (
|
|
81
|
+
### state (16)
|
|
82
82
|
|
|
83
|
-
`binary_derivation` · `checked` · `connector_derivation` · `controlled` · `disabled` · `error` · `indeterminate` · `loading` · `mode_driven` · `priority_derivation` · `selected` · `selected_styling` · `styling` · `success` · `visual_driven`
|
|
83
|
+
`binary_derivation` · `checked` · `connector_derivation` · `controlled` · `disabled` · `error` · `indeterminate` · `loading` · `mode_driven` · `priority_derivation` · `readonly` · `selected` · `selected_styling` · `styling` · `success` · `visual_driven`
|
|
84
84
|
|
|
85
85
|
### validation (10)
|
|
86
86
|
|
|
@@ -110,7 +110,7 @@ All contract names follow `{category}_{concept}` in `snake_case`. No `supports_`
|
|
|
110
110
|
| Checkmark animation | `animation_checkmark` |
|
|
111
111
|
| Circular shape | `visual_circular_shape` |
|
|
112
112
|
|
|
113
|
-
The Concept Catalog above lists all
|
|
113
|
+
The Concept Catalog above lists all 137 concepts. For the historical migration mapping (113 source names → 104 canonical names, pre-Task 2.1), see `.kiro/specs/063-uniform-contract-system/findings/canonical-name-mapping.md`.
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
@@ -180,7 +180,7 @@ excludes:
|
|
|
180
180
|
| `category` | Taxonomy category (redundant with name prefix — enables validation) |
|
|
181
181
|
| `description` | Short description of the behavioral guarantee |
|
|
182
182
|
| `behavior` | Detailed behavior description |
|
|
183
|
-
| `wcag` | WCAG criterion this contract supports (
|
|
183
|
+
| `wcag` | WCAG criterion this contract supports — required for allowlisted contracts (use the 'N/A' sentinel when genuinely not applicable); null only for non-allowlisted contracts |
|
|
184
184
|
| `platforms` | Platforms where this contract applies |
|
|
185
185
|
| `validation` | Testable criteria for verifying the contract |
|
|
186
186
|
| `test_approach` | How to test this contract |
|