import { useState } from "react"; import { Link, useLocation } from "react-router"; import { Box, CircularProgress } from "@mui/material"; import { ChevronLeft } from "lucide-react"; import { AuthBrandLogo } from "@/app/(auth)/_components/auth-brand-logo"; import { AuthCardHeader } from "@/app/(auth)/_components/auth-card-header"; import { AuthPageShell } from "@/app/(auth)/_components/auth-page-shell"; import { INVALID_INVITE_MESSAGE } from "@/domain/team-member-invite/types/team-member-invite"; import { useTeamMemberInviteDetails } from "@/domain/team-member-invite/use-cases/use-team-member-invite"; import { InviteWizard } from "./_components/invite-wizard"; /** The invite email links to `/invite#`; a fragment never reaches a server or a Referer. */ function readInviteToken(hash: string): string { return hash.replace(/^#/, "").trim(); } function InviteBody({ token }: { token: string }) { const details = useTeamMemberInviteDetails(token); const [inviteEnded, setInviteEnded] = useState(false); if (token.length > 0 && details.isPending) { return ( ); } if (inviteEnded || details.data === undefined) { return ; } return ( setInviteEnded(true)} /> ); } export default function InviteRegistrationPage() { const { hash } = useLocation(); const token = readInviteToken(hash); return ( ); }