1.9 KiB
1.9 KiB
ADR-0003: Phase 12 component-system architecture
- Status: Accepted for implementation; release acceptance remains gated
- Date: 2026-06-25
- Owners: Frontend architecture, design systems, accessibility
Context
Phase 12 requires a reusable marketing component system without assembling the homepage or inventing unresolved product content. Phase 11 approved semantic CSS modules, native platform behavior, server components by default, and a production shell rather than Storybook.
Decision
- Keep CSS Modules as the only component styling method and consume only component-facing semantic tokens.
- Use native HTML primitives where they provide reliable behavior:
button,a,details,progress, form controls, anddialog. - Add client boundaries only to controls with state, browser APIs, keyboard roving focus, or overlays.
- Use a guarded component-lab route as the approved Storybook-equivalent fixture surface. It returns not found unless
COMPONENT_FIXTURES_ENABLED=true. - Implement the icon set as a small, tree-shakeable internal SVG map to avoid adding a second dependency or shipping an entire icon library.
- Keep unresolved claims, destinations, customer evidence, pricing, CRM submission, and approved media represented as blocked inventory entries or disabled typed states.
- Add Phase 12 inventory and manifest validators. The package dependency graph remains unchanged.
Consequences
- Phase 13 receives stable import paths and explicit section patterns.
- Browser, accessibility, and visual fixtures are deterministic and cannot be exposed accidentally under the default production environment.
- The internal icon map requires deliberate review when adding icons, which is preferable to casual dependency archaeology.
- Runtime acceptance still depends on executing the pinned Node 24.17.0 and pnpm 11.9.0 suites in an environment with registry and browser access.