import ProfileNavigation from '@/components/profile-navigation'; import ContentManagementEntry from '@/components/content-management-entry'; import { Head, Link } from '@inertiajs/react'; import { dashboard } from '@/routes'; import type { InvestmentContext } from '@/pages/investor-path/index'; import type { OpportunityManagementAccess } from '@/types/opportunity-management'; type Summary = { canCreateOpportunity?: boolean; requestsByStatus: Record; publishedOpportunities: number; draftOpportunities: number; activeSectors: number; recentRequests: { id: number; reference: string; sector_interest: string; status: string; created_at: string; }[]; }; const states: Record = { received: 'Recebidos', in_review: 'Em análise', contacted: 'Contactados', closed: 'Encerrados', }; const card = 'rounded-xl border p-5 transition-colors hover:bg-muted focus-visible:outline-2 focus-visible:outline-primary'; export default function Dashboard({ summary, investorPath, opportunityManagement, }: { summary: Summary | null; opportunityManagement?: OpportunityManagementAccess | null; investorPath?: { contexts: InvestmentContext[]; current: { id: string; next: { code: string; title: string } | null; pending: number; documents: number; results: number; tasks: number; } | null; } | null; }) { return (

Painel do portal

{summary ? ( <> {opportunityManagement && (

Gestão de Oportunidades

Os rascunhos de oportunidades não publicam o dossier privado do investidor. Publicação exige uma ação própria.

)}

Manifestações de interesse

{Object.entries(states).map(([status, label]) => (

{label}

{summary.requestsByStatus[status] ?? 0}

))}

{opportunityManagement ? 'Indicadores de oportunidades' : 'Gestão de Oportunidades'}

{[ { label: 'Oportunidades publicadas', value: summary.publishedOpportunities, href: '/management/opportunities?status=published', }, { label: 'Oportunidades em rascunho', value: summary.draftOpportunities, href: '/management/opportunities?status=draft', }, { label: 'Sectores activos', value: summary.activeSectors, href: '/management/sectors?status=active', }, ].map((item) => (

{item.label}

{item.value}

))}

Pedidos mais recentes

Ver todos
{summary.recentRequests.length ? (
    {summary.recentRequests.map((item) => (
  • {item.reference}

    {item.sector_interest} ·{' '} {states[item.status] ?? item.status}

  • ))}
) : (

Ainda não existem manifestações de interesse.

)}
) : investorPath ? (

Os meus investimentos

{investorPath.current && (

{investorPath.current.pending} etapas pendentes · {investorPath.current.documents} documentos ·{' '} {investorPath.current.results} resultados ·{' '} {investorPath.current.tasks} tarefas

{investorPath.current.next && ( Próxima acção:{' '} {investorPath.current.next.code} ·{' '} {investorPath.current.next.title} )}
)} {investorPath.contexts.map((item, index) => (

{index === 0 ? 'Investimento actualizado mais recentemente' : 'Outro investimento'}

{item.title}

Percurso, pendências, documentos, resultados e próxima acção no dossier.

))} {!investorPath.contexts.length && (

Comece pela sua ideia e prepare as etapas ao seu ritmo.

)} Preparar ou escolher um investimento
) : (

Configure o acesso quando estiver pronto

A gestão está disponível para contas autorizadas. Pode consultar os passos de configuração ou continuar a explorar as oportunidades públicas.

Consultar o meu acesso
)} Voltar ao portal público
); } Dashboard.layout = { breadcrumbs: [{ title: 'Painel', href: dashboard() }] };