import type { Metadata } from 'next'; import { getPortalSession } from '@/lib/portal/auth'; import { getPortalDashboard } from '@/lib/services/portal.service'; import { PortalHeader } from '@/components/portal/portal-header'; import { PortalNav } from '@/components/portal/portal-nav'; export const metadata: Metadata = { title: { default: 'Client Portal', template: '%s | Client Portal', }, }; export default async function PortalLayout({ children, }: { children: React.ReactNode; }) { // This layout wraps all portal routes including login/verify // We can't easily check pathname in a server layout, so we attempt // to get the session and pass it down — login/verify pages handle their own // redirect logic independently. const session = await getPortalSession().catch(() => null); // For authenticated routes we need client info for the header. // If session is absent, children (login/verify pages) handle their own redirect. let clientName = ''; let portName = 'Client Portal'; let portLogoUrl: string | null = null; if (session) { const dashboard = await getPortalDashboard(session.clientId, session.portId).catch(() => null); if (dashboard) { clientName = dashboard.client.fullName; portName = dashboard.port.name; portLogoUrl = dashboard.port.logoUrl; } } return (