import { publicApi, ROLE_LABEL } from '@/lib/api';
import { AuthShell, InvalidLink } from '@/components/AuthShell';
import { AcceptInviteForm } from '@/components/AccountForms';

export const metadata = { title: 'Accept invitation' };
export const dynamic = 'force-dynamic';

export default async function AcceptInvite({ searchParams }: { searchParams: Promise<{ token?: string }> }) {
  const { token = '' } = await searchParams;
  const invite = token ? (await publicApi<{ valid: boolean; email?: string; name?: string | null; role?: string }>('/auth/invitation/check', { token })).data : { valid: false };
  return (
    <AuthShell
      title="Activate your account"
      description={
        invite.valid ? (
          <>
            You’ve been invited as <strong className="text-ink">{ROLE_LABEL[invite.role ?? ''] ?? invite.role}</strong> with <strong className="text-ink">{invite.email}</strong>. Choose a password to finish.
          </>
        ) : undefined
      }
    >
      {invite.valid ? <AcceptInviteForm token={token} name={invite.name ?? null} /> : <InvalidLink what="invitation" />}
    </AuthShell>
  );
}
