chore: fix prettier formatting, regenerate phase9 manifest, add missing config files (.env.example, .node-version, .nvmrc, CI workflow)
CI / test (push) Failing after 28s
CI / test (push) Failing after 28s
This commit is contained in:
@@ -1,17 +1,14 @@
|
||||
# Component Contracts
|
||||
|
||||
|
||||
|
||||
Every component below is implemented once for all locales, directions, and themes. Props are semantic; components do not fetch translations internally unless the architecture establishes a single typed content boundary.
|
||||
|
||||
|
||||
## SiteHeader
|
||||
|
||||
**Purpose:** Primary navigation, brand, locale/theme controls, login, demo CTA
|
||||
|
||||
**States:** `default,scrolled`
|
||||
**States:** `default,scrolled`
|
||||
|
||||
**Typed data:** `HeaderModel`
|
||||
**Typed data:** `HeaderModel`
|
||||
|
||||
**Copy namespace:** `header.*`
|
||||
|
||||
@@ -23,14 +20,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## MobileDrawer
|
||||
|
||||
**Purpose:** Compact/medium navigation overlay
|
||||
|
||||
**States:** `closed,open`
|
||||
**States:** `closed,open`
|
||||
|
||||
**Typed data:** `DrawerModel`
|
||||
**Typed data:** `DrawerModel`
|
||||
|
||||
**Copy namespace:** `header.*`
|
||||
|
||||
@@ -42,14 +38,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## LocaleSelector
|
||||
|
||||
**Purpose:** Switch locale by stable route ID
|
||||
|
||||
**States:** `closed,open,disabled`
|
||||
**States:** `closed,open,disabled`
|
||||
|
||||
**Typed data:** `LocaleSelectorProps`
|
||||
**Typed data:** `LocaleSelectorProps`
|
||||
|
||||
**Copy namespace:** `language names`
|
||||
|
||||
@@ -61,14 +56,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## ThemeSelector
|
||||
|
||||
**Purpose:** Set Light/Dark/System preference
|
||||
|
||||
**States:** `light,dark,system`
|
||||
**States:** `light,dark,system`
|
||||
|
||||
**Typed data:** `ThemeSelectorProps`
|
||||
**Typed data:** `ThemeSelectorProps`
|
||||
|
||||
**Copy namespace:** `header.light/dark/system`
|
||||
|
||||
@@ -80,14 +74,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## HeroSection
|
||||
|
||||
**Purpose:** Communicate category, promise, primary and secondary actions
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `HeroModel`
|
||||
**Typed data:** `HeroModel`
|
||||
|
||||
**Copy namespace:** `hero.*`
|
||||
|
||||
@@ -99,14 +92,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## ProductPreview
|
||||
|
||||
**Purpose:** Illustrative/evidence-governed product visual
|
||||
|
||||
**States:** `illustrative,approved-capture`
|
||||
**States:** `illustrative,approved-capture`
|
||||
|
||||
**Typed data:** `ProductPreviewModel`
|
||||
**Typed data:** `ProductPreviewModel`
|
||||
|
||||
**Copy namespace:** `preview.*`
|
||||
|
||||
@@ -118,14 +110,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## LifecycleProof
|
||||
|
||||
**Purpose:** Show operational coverage without customer logos
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `LifecycleItem[]`
|
||||
**Typed data:** `LifecycleItem[]`
|
||||
|
||||
**Copy namespace:** `trust.*`
|
||||
|
||||
@@ -137,14 +128,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## ComparisonSection
|
||||
|
||||
**Purpose:** Fragmented versus connected workflow
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `ComparisonModel`
|
||||
**Typed data:** `ComparisonModel`
|
||||
|
||||
**Copy namespace:** `comparison.*`
|
||||
|
||||
@@ -156,14 +146,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## WorkflowSteps
|
||||
|
||||
**Purpose:** Four-step rental flow and tour source
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `WorkflowStep[]`
|
||||
**Typed data:** `WorkflowStep[]`
|
||||
|
||||
**Copy namespace:** `workflow.*`
|
||||
|
||||
@@ -175,14 +164,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## RoleCards
|
||||
|
||||
**Purpose:** Explain value by operating role
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `RoleCard[]`
|
||||
**Typed data:** `RoleCard[]`
|
||||
|
||||
**Copy namespace:** `roles.*`
|
||||
|
||||
@@ -194,14 +182,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## ModuleGrid
|
||||
|
||||
**Purpose:** Describe approved product modules
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `ModuleCard[]`
|
||||
**Typed data:** `ModuleCard[]`
|
||||
|
||||
**Copy namespace:** `modules.*`
|
||||
|
||||
@@ -213,14 +200,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## MeasurementPlan
|
||||
|
||||
**Purpose:** Show KPI definitions without invented outcomes
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `MetricDefinition[]`
|
||||
**Typed data:** `MetricDefinition[]`
|
||||
|
||||
**Copy namespace:** `results.*`
|
||||
|
||||
@@ -232,14 +218,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## IntegrationCategories
|
||||
|
||||
**Purpose:** Neutral category list
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `IntegrationCategory[]`
|
||||
**Typed data:** `IntegrationCategory[]`
|
||||
|
||||
**Copy namespace:** `integrations.*`
|
||||
|
||||
@@ -251,14 +236,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## SecurityChecklist
|
||||
|
||||
**Purpose:** Evidence-request checklist
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `SecurityCheck[]`
|
||||
**Typed data:** `SecurityCheck[]`
|
||||
|
||||
**Copy namespace:** `security.*`
|
||||
|
||||
@@ -270,14 +254,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## PricingPreview
|
||||
|
||||
**Purpose:** Explain pricing factors and demo route
|
||||
|
||||
**States:** `quote-only,approved-pricing`
|
||||
**States:** `quote-only,approved-pricing`
|
||||
|
||||
**Typed data:** `PricingModel`
|
||||
**Typed data:** `PricingModel`
|
||||
|
||||
**Copy namespace:** `pricing.*`
|
||||
|
||||
@@ -289,14 +272,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## FAQAccordion
|
||||
|
||||
**Purpose:** Localized questions and answers
|
||||
|
||||
**States:** `closed,open`
|
||||
**States:** `closed,open`
|
||||
|
||||
**Typed data:** `FaqItem[]`
|
||||
**Typed data:** `FaqItem[]`
|
||||
|
||||
**Copy namespace:** `faq.*`
|
||||
|
||||
@@ -308,14 +290,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## FinalCTA
|
||||
|
||||
**Purpose:** Final conversion block and approved secondary contact
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `FinalCtaModel`
|
||||
**Typed data:** `FinalCtaModel`
|
||||
|
||||
**Copy namespace:** `finalCta.*`
|
||||
|
||||
@@ -327,14 +308,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## SiteFooter
|
||||
|
||||
**Purpose:** Localized navigation, legal, evidence status internal only
|
||||
|
||||
**States:** `default`
|
||||
**States:** `default`
|
||||
|
||||
**Typed data:** `FooterModel`
|
||||
**Typed data:** `FooterModel`
|
||||
|
||||
**Copy namespace:** `footer.*`
|
||||
|
||||
@@ -346,14 +326,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## DemoDialog
|
||||
|
||||
**Purpose:** Qualification form and submission states
|
||||
|
||||
**States:** `idle,invalid,submitting,success,recoverable-error,terminal-error`
|
||||
**States:** `idle,invalid,submitting,success,recoverable-error,terminal-error`
|
||||
|
||||
**Typed data:** `DemoFormProps`
|
||||
**Typed data:** `DemoFormProps`
|
||||
|
||||
**Copy namespace:** `form.*`
|
||||
|
||||
@@ -365,14 +344,13 @@ Every component below is implemented once for all locales, directions, and theme
|
||||
|
||||
**Content rule:** Block size is content-driven. Unsupported evidence suppresses the component or uses the explicitly approved neutral variant.
|
||||
|
||||
|
||||
## ProductTourDialog
|
||||
|
||||
**Purpose:** Four-step guided overview
|
||||
|
||||
**States:** `step-1,step-2,step-3,step-4,complete`
|
||||
**States:** `step-1,step-2,step-3,step-4,complete`
|
||||
|
||||
**Typed data:** `TourProps`
|
||||
**Typed data:** `TourProps`
|
||||
|
||||
**Copy namespace:** `tour.*`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user