Files
Investidor-V2/resources/js/pages/partnerships/dashboard.tsx
T
nala 1106509116
tests / ci (push) Canceled after 0s
vrsao 2
2026-10-08 14:02:01 +02:00

125 lines
5.1 KiB
TypeScript

import { Link, router } from '@inertiajs/react';
import { Frame, labels, button, type Partnership } from './shared';
type Props = {
mine: Pick<Partnership, 'id' | 'title' | 'status'>[];
interests: {
id: number;
partnership_id: number;
title: string;
status: string;
decision_reason: string | null;
room_id: number | null;
}[];
moderation: Pick<Partnership, 'id' | 'title' | 'status'>[];
notifications: {
id: number;
title: string;
href: string;
read_at: string | null;
}[];
};
export default function Dashboard(p: Props) {
return (
<Frame title="O meu painel de parcerias">
<div className="space-y-8">
<section>
<h2 className="mb-4 text-xl font-bold">
Ideias e propostas
</h2>
<Link className={button} href="/parcerias/criar">
Preparar uma parceria
</Link>
{p.mine.map((x) => (
<article className="mt-4 rounded border p-4" key={x.id}>
<Link
className="font-semibold underline"
href={'/parcerias/' + x.id}
>
{x.title || 'Ideia sem título'}
</Link>
<p>{labels[x.status] ?? x.status}</p>
<p>
Próxima ação:{' '}
{['draft', 'returned', 'rejected'].includes(
x.status,
)
? 'Completar e pré-visualizar para submissão'
: x.status === 'published'
? 'Consultar candidatos e esclarecer pendências'
: 'Acompanhar a decisão'}
</p>
</article>
))}
</section>
<section>
<h2 className="text-xl font-bold">
As minhas candidaturas
</h2>
{p.interests.map((x) => (
<article className="my-4 rounded border p-4" key={x.id}>
<Link
className="underline"
href={'/parcerias/' + x.partnership_id}
>
{x.title}
</Link>
<p>
{labels[x.status]} · {x.decision_reason}
</p>
{x.room_id && (
<Link
className={button}
href={'/parcerias/salas/' + x.room_id}
>
Abrir conexão privada
</Link>
)}
</article>
))}
</section>
{p.moderation.length > 0 && (
<section>
<h2 className="text-xl font-bold">Fila de moderação</h2>
{p.moderation.map((x) => (
<p key={x.id}>
<Link
className="underline"
href={'/parcerias/' + x.id}
>
{x.title} · {labels[x.status]}
</Link>
</p>
))}
</section>
)}
<section>
<h2 className="text-xl font-bold">
Notificações no portal
</h2>
{p.notifications.map((n) => (
<article className="my-3 rounded border p-3" key={n.id}>
<Link href={n.href} className="underline">
{n.title}
</Link>
{!n.read_at && (
<button
className="ml-4 underline"
onClick={() =>
router.post(
'/parcerias/notificacoes/' +
n.id +
'/ler',
)
}
>
Marcar como lida
</button>
)}
</article>
))}
</section>
</div>
</Frame>
);
}