import { redirect } from 'next/navigation'; import { Anchor } from 'lucide-react'; import type { Metadata } from 'next'; import { getPortalSession } from '@/lib/portal/auth'; import { getClientInterests } from '@/lib/services/portal.service'; import { Badge } from '@/components/ui/badge'; import { stageLabel, safeStage, type PipelineStage } from '@/lib/constants'; export const metadata: Metadata = { title: 'Interests' }; const STAGE_VARIANT: Record = { open: 'secondary', details_sent: 'secondary', in_communication: 'default', eoi_sent: 'default', eoi_signed: 'default', deposit_10pct: 'default', contract_sent: 'default', contract_signed: 'default', completed: 'outline', }; export default async function PortalInterestsPage() { const session = await getPortalSession(); if (!session) redirect('/portal/login'); const interests = await getClientInterests(session.clientId, session.portId); return (

Berth Interests

Your berth enquiries and applications

{interests.length === 0 ? (

No interests on file

Contact your port representative to discuss available berths.

) : (
{interests.map((interest) => (
{interest.berthMooringNumber ? ( Berth {interest.berthMooringNumber} ) : ( General Interest )} {interest.berthArea && ( — {interest.berthArea} )}
{interest.leadCategory && (

{interest.leadCategory.replace(/_/g, ' ')}

)}
{interest.dateFirstContact && ( First contact:{' '} {new Date(interest.dateFirstContact).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric', })} )} {interest.eoiStatus && ( EOI: {interest.eoiStatus.replace(/_/g, ' ')} )} {interest.contractStatus && ( Contract: {interest.contractStatus.replace(/_/g, ' ')} )}
{stageLabel(interest.pipelineStage)}
))}
)}
); }