"use client"; import { useState } from "react"; import { authClient } from "@/lib/auth-client"; import Link from "next/link"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect } from "react"; import { toast } from "sonner"; import { useTranslations } from "next-intl"; import { Card, CardBody } from "@/design-system/base/card"; import { Input } from "@/design-system/base/input"; import { PrimaryButton } from "@/design-system/base/button"; import { VStack } from "@/design-system/layout/stack"; export default function SignUpPage() { const t = useTranslations("auth"); const [username, setUsername] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const searchParams = useSearchParams(); const redirectTo = searchParams.get("redirect"); const { data: session, isPending } = authClient.useSession(); const router = useRouter(); useEffect(() => { if (!isPending && session?.user?.username && !redirectTo) { router.push("/folders"); } }, [session, isPending, router, redirectTo]); const handleSignUp = async () => { if (!username || !email || !password) { toast.error(t("fillAllFields")); return; } setLoading(true); try { const { error } = await authClient.signUp.email({ email: email, name: username, username: username, password: password, }); if (error) { toast.error(error.message ?? t("signUpFailed")); return; } router.push(redirectTo ?? "/folders"); } finally { setLoading(false); } }; return (

{t("signUpTitle")}

setUsername(e.target.value)} /> setEmail(e.target.value)} /> setPassword(e.target.value)} /> {t("confirm")} {t("hasAccountLink")}
); }