# Zones Of Regulation Integration ## Purpose `ZonesOfRegulation` renders backend-owned regulation zone content through the three-layer frontend architecture. ```text View -> Business Logic -> API/Data Access -> Backend ``` Runtime zone records, behaviors, strategies, matching signs, safety connections, and quick de-escalation flow content belong to backend content catalog payloads. The frontend owns only UI state, tab config, style-token mappings, and presentation. ## Frontend Layers View: - `frontend/src/components/frameworks/ZonesOfRegulation.tsx` - `frontend/src/components/zones-of-regulation/ZonesOfRegulationView.tsx` - `frontend/src/components/zones-of-regulation/ZonesHeader.tsx` - `frontend/src/components/zones-of-regulation/ZonesTabs.tsx` - `frontend/src/components/zones-of-regulation/ZonesOverviewGrid.tsx` - `frontend/src/components/zones-of-regulation/ZoneOverviewCard.tsx` - `frontend/src/components/zones-of-regulation/ZoneDetailPanel.tsx` - `frontend/src/components/zones-of-regulation/ZoneDetailListPanel.tsx` - `frontend/src/components/zones-of-regulation/ZoneSignsPanel.tsx` - `frontend/src/components/zones-of-regulation/ZoneSafetyConnectionPanel.tsx` - `frontend/src/components/zones-of-regulation/ZonesQuickFlow.tsx` Business logic: - `frontend/src/business/zones/hooks.ts` - `frontend/src/business/zones/selectors.ts` - `frontend/src/business/zones/types.ts` Shared contracts and UI config: - `frontend/src/shared/types/app.ts` - `frontend/src/shared/constants/zonesOfRegulation.ts` - `frontend/src/shared/constants/contentCatalog.ts` ## Backend Contracts The page reads: - `GET /api/public/content-catalog/regulation-zones` - `GET /api/public/content-catalog/zones-of-regulation-page-content` Content payloads are seeded in: - `backend/src/db/seeders/content-catalog-data/content-catalog-seed-payloads.js` ## Behavior - `useZonesOfRegulationPage` loads zone records and page-level content. - Selectors handle expanded-zone toggling, selected-zone lookup, safety connection lookup, and active-tab wording. - View components receive a prepared page model and do not call API/data access modules. - Loading and error states are explicit through `StatePanel`. - The module preserves the current behavior: selecting a zone expands details; zone check-in persistence remains owned by the dashboard check-in flow until a dedicated UX task adds it here. ## Data Ownership Rules - Do not add zone records, QBS safety connection copy, or de-escalation flow content to frontend constants. - Do not add frontend fallback zone payloads. - Keep frontend constants limited to tab labels, default UI state, gradients, and ring classes. - Test-only fixtures may live in selector tests or `frontend/src/test-seeds/`.