# Communication — Component Map ## Shell & layout | Component | Path | Role | | --- | --- | --- | | CommunicationRootLayout | `components/createPortalLayout.tsx` | Auth + tenant gate | | CommunicationPortalShell | `components/CommunicationPortalShell.tsx` | Sidebar nav, dark mode, lock icons | | CommunicationBreadcrumbs | `components/CommunicationBreadcrumbs.tsx` | RTL breadcrumbs | | CommunicationFeatureLock | `components/CommunicationFeatureLock.tsx` | Locked module premium UI | ## Data & CRUD | Component | Path | Role | | --- | --- | --- | | createCommunicationListPage | `components/CommunicationListCrudPage.tsx` | CRUD factory (providers, templates, contacts) | | CommunicationTablePage | `design-system/CommunicationTablePage.tsx` | Search, pagination, toolbar | | CommunicationStatGrid | `design-system/CommunicationStatGrid.tsx` | KPI cards | | CommunicationStatusChip | `design-system/CommunicationStatusChip.tsx` | Message/provider status | ## Shared (reused) | Source | Used for | | --- | --- | | `@/components/ds` | Button, Card, Dialog, Drawer, FormField, StatCard, DataTable | | `@/src/shared/ui` | PageLoader, PermissionDeniedState, Timeline, DetailDrawer | | `@/src/shared/hooks` | useDebouncedValue (available) | ## Hooks | Hook | Path | | --- | --- | | useCommunicationCapabilities | `hooks/useCommunicationCapabilities.ts` | | useCommunicationPermissions | `hooks/useCommunicationPermissions.ts` | ## API | Module | Path | | --- | --- | | communicationApi | `services/communication-api.ts` | | normalizeCapabilities | same | ## Constants | File | Contents | | --- | --- | | portals.ts | Full nav tree (locked items visible) | | featureRegistry.ts | FUTURE_MODULE_REGISTRY | | resourceRegistry.ts | SMS CRUD configs | | permissions.ts | communication.* tree |