import { useState } from "react"; import { Link, useSearchParams, redirect } from "react-router"; import { auth } from "~/lib/auth.server"; import { authClient } from "~/lib/auth-client"; import type { Route } from "./+types/register"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; import { Label } from "~/components/ui/label"; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "~/components/ui/card"; export function meta(): Route.MetaDescriptors { return [{ title: "Create Account - Brackt" }]; } function safeRedirectTo(value: string | null): string { if (!value) return "/"; return value.startsWith("/") && !value.startsWith("//") ? value : "/"; } export async function loader(args: Route.LoaderArgs) { const session = await auth.api.getSession({ headers: args.request.headers }); if (session) { const raw = new URL(args.request.url).searchParams.get("redirectTo"); return redirect(safeRedirectTo(raw)); } return {}; } export default function RegisterPage() { const [searchParams] = useSearchParams(); const redirectTo = safeRedirectTo(searchParams.get("redirectTo")); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); async function handleRegister(e: React.FormEvent) { e.preventDefault(); setError(null); setLoading(true); const form = e.currentTarget; const name = (form.elements.namedItem("name") as HTMLInputElement).value; const email = (form.elements.namedItem("email") as HTMLInputElement).value; const password = (form.elements.namedItem("password") as HTMLInputElement).value; const { error: signUpError } = await authClient.signUp.email({ name, email, password, callbackURL: redirectTo, }); if (signUpError) { setError(signUpError.message ?? "Registration failed. Please try again."); setLoading(false); } else { const params = new URLSearchParams({ email, redirectTo }); window.location.href = `/check-email?${params.toString()}`; } } async function handleSocialSignIn(provider: "google" | "discord") { await authClient.signIn.social({ provider, callbackURL: redirectTo }); } return (
Create account Get started with Brackt
or
{error && }

Already have an account?{" "} Sign in

); }