import Link from 'next/link'; import { AcceptInvitationForm } from '@/app/invitation/[token]/AcceptInvitationForm'; import { INVITATION_STATE_LABELS } from '@/domain/access/invitation'; import { resolveInvitation } from '@/server/invitations/service'; export const metadata = { title: 'Invitation · PlanFlow' }; export const dynamic = 'force-dynamic'; /** * Acceptation d'une invitation — page publique. * * Hors du shell applicatif : le destinataire n'a pas encore de session, et * afficher une navigation qu'il ne peut pas suivre serait déroutant. */ export default async function InvitationPage({ params, }: { params: Promise<{ token: string }>; }) { const { token } = await params; const invitation = await resolveInvitation(decodeURIComponent(token)); return (

PlanFlow

{invitation?.state === 'PENDING' ? `Bienvenue${invitation.firstName ? `, ${invitation.firstName}` : ''}` : 'Invitation'}

{!invitation ? ( ) : invitation.state !== 'PENDING' ? ( ) : ( <>

{invitation.accountName} vous ouvre un accès à PlanFlow, où vous consulterez votre planning, vos compteurs et vos demandes d’absence.

)}

Aller à la connexion

); } function Refusal({ title, message }: { title?: string; message: string }) { return (
{title ?

{title}

: null}

{message}

); }