import type { Route } from "./+types/login"; import { Alert, AlertDescription } from "~/components/ui/alert"; import { AlertCircleIcon, IdCardIcon, LoaderCircle, LogIn, MailIcon } from "lucide-react"; import { Label } from "~/components/ui/label"; import { Input } from "~/components/ui/input"; import { Button } from "~/components/ui/button"; import { useState } from "react"; import AuthLayout from "~/layout"; import { useNavigate, useSearchParams } from "react-router"; import { capitalizeFirstLetter } from "~/lib/utils"; import { Combobox } from "~/components/combobox"; export function meta({ }: Route.MetaArgs) { return [ { title: "Khollisé - Inscription" }, { name: "description", content: "Connectez-vous à Khollisé" }, ]; } export default function Register() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const email = searchParams.get("email")!; const [emailFirst, emailLast] = getNameFromEmail(email); const [firstName, setFirstName] = useState(emailFirst); const [lastName, setLastName] = useState(emailLast); const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); // TODO: Validate... // TODO: Check if combobox is valid (not empty !!) setIsLoading(true); // TODO: Fetch function const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); await sleep(5000) .then((data) => { setIsLoading(false); // TODO: Callback }) .catch((err) => { setIsLoading(false); setError(err.message); }); }; return (
setFirstName(capitalizeFirstLetter(e.target.value))} required />
setLastName(e.target.value.toUpperCase())} required />
{/* TODO: Pass ref to combobox to validate */}
{error && ( {error} )}
); } function getNameFromEmail(email: string): [string, string] { const parts = email.split("@")[0].split("."); if (parts.length < 2) return ["", ""]; const firstName = capitalizeFirstLetter(parts[0]); const lastName = parts.slice(1).join(" ").toUpperCase(); return [firstName, lastName]; }