import { Stepper } from "@/components/ui/stepper"; import { useAuth } from "@/store/auth"; import { useVerify } from "@/store/verify"; import { Eye, MailCheck, ScanFace } from "lucide-react"; import { useEffect, type FC } from "react"; import { Navigate, Outlet, useLocation, useNavigate } from "react-router"; const steps = [ { id: "email", icon: , label: "Verify Email", description: "Confirm your address", }, { id: "avatar", icon: , label: "Profile Picture", description: "Add profile image", }, { id: "review", icon: , label: "Done", description: "Review & Quit", }, ]; const VerificationLayout: FC = () => { const location = useLocation(); const profile = useAuth((s) => s.profile); const step = useVerify((s) => s.step); const loadStep = useVerify((s) => s.loadStep); const redirect = useVerify((s) => s.redirect); const setRedirect = useVerify((s) => s.setRedirect); const navigate = useNavigate(); useEffect(() => { if (profile) loadStep(profile); }, [loadStep, profile]); useEffect(() => { if (location.state?.from) { setRedirect(location.state.from); } }, [location.state?.from, setRedirect]); useEffect(() => { if (step === false) { navigate(redirect ?? "/", { state: { reset: true } }); } }, [navigate, redirect, step]); if ( step === "email" && !location.pathname.startsWith("/verify/email") && location.pathname.replace(/\/$/i, "") !== "/verify" ) { return ; } if (step === "avatar" && !location.pathname.startsWith("/verify/avatar")) { return ; } if (step === "review" && !location.pathname.startsWith("/verify/review")) { return ; } return (
{location.pathname.replace(/\/$/i, "") !== "/verify" && typeof step === "string" && ( )}
); }; export default VerificationLayout;