Tab Reference
Three hubs at the top, sub-tabs underneath. Here's every tab, what it shows, and which file owns it.
?hub=client&tab=home (default) or ?hub=reporting&tab=pipeline or ?hub=info. Both client and admin can see Client Hub and Client Info; Reporting is admin-only today.HubNav (top dark bar)
Sticky 56px black bar. Left side: client logo + name + tier badge. Center: three hub tabs. Right: Book a Call + Submit a Request CTAs. Mobile collapses non-essential elements.
| Hub | URL | Visible to | Owns the page |
|---|---|---|---|
| Client Hub | ?hub=client | Admin + Client | ClientPortalTab + new HomeSection |
| Reporting | ?hub=reporting | Admin (today) | Existing render functions inside ClientDashboard |
| Client Info | ?hub=info | Admin + Client | ClientInfoSection (single page, no sub-tabs) |
Client Hub sub-tabs
SubNav array lives at src/components/portal/nav/SubNav.tsx as CLIENT_HUB_TABS.
| Sub-tab | Status | Renders |
|---|---|---|
| Home | live | New HomeSection — bento grid + program timeline + GHL pipeline strip + quick actions + pillar health. |
| Onboarding | planned | ComingSoonSection placeholder. Phase 11. |
| Scorecard | live | Existing ScorecardSection routed via the legacy ClientPortalTab with forcedSubTab. |
| Game Plan | live | Existing GamePlanSection (forcedSubTab="gameplan"). |
| Deliverables | live | Existing DeliverablesSection (forcedSubTab="deliverables"). Phase 6 will overhaul it. |
| Wins & Progress | planned | ComingSoonSection placeholder. Phase 4. |
| Content & Authority | live | Existing ContentTrackerSection (forcedSubTab="content"). Phase 9 will mirror the CBO Content Plan structure. |
| Meeting Notes | planned | ComingSoonSection placeholder. Phase 5. |
| Resources & Docs | live | Existing DocumentsSection (forcedSubTab="documents"). Phase 10 will add the media-submission iframe. |
| Billing & Package | planned | ComingSoonSection placeholder. Phase 12. |
Reporting Dashboard sub-tabs
Built on top of the existing render functions in ClientDashboard.tsx (renderPaidMarketing, renderSocialMedia, renderWebsite, renderSEO, renderLocalSEO, renderEmailSMS).
| Sub-tab | Status | Renders |
|---|---|---|
| Reporting Home | planned | ComingSoonSection placeholder. Phase 3 will build the aggregate cross-channel summary. |
| Pipeline Overview | live | Existing PipelineSection (forcedSubTab="pipeline"). Live GHL data with the date-range fix shipped April 2026. |
| Website Performance | live | renderWebsite() — GA4 traffic, conversion rate, PageSpeed gauges, Microsoft Clarity (currently always hidden). |
| SEO & AEO Performance | live | renderSEO() + renderLocalSEO() stacked. Organic search, keyword rankings (DataForSEO), backlinks, Local/GBP, geo-grid embeds. |
| Paid Ads | live | renderPaidMarketing() — Google Ads, Meta Ads, ROAS. |
| Social Media | live | renderSocialMedia() — Social engagement (n8n), YouTube. |
| Email & Automation | live | renderEmailSMS() — Email/SMS counts (n8n), Summary card. |
Client Info — single page
No sub-tabs. The SubNav component returns null when hub === 'info'. Bento grid covers 8 cards in a 12-column layout; spec lives in the Client Info Hub page.
Responsive behaviour
Each render function uses grid-cols-12 gap-4 with span classes (5/6/7/12) responsive at lg. Belowlg (1024px) every tile collapses to span-12. The HubNav hides the FPM brand text on small screens; sub-nav scrolls horizontally on mobile.