"use client"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { api } from "@/lib/api/client"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; export default function RegisterPage() { const router = useRouter(); const [email, setEmail] = useState(""); const [displayName, setDisplayName] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); async function onSubmit(e: React.FormEvent) { e.preventDefault(); setLoading(true); setError(null); const { error } = await api.POST("/api/v1/auth/register", { body: { email, password, display_name: displayName || null }, }); setLoading(false); if (error) { setError("Could not register. The email may already be in use, or the password is too short (min 8)."); return; } router.push("/trees"); } return (
{/* eslint-disable-next-line @next/next/no-img-element */} Provenance Create your account
setDisplayName(e.target.value)} />
setEmail(e.target.value)} required />
setPassword(e.target.value)} minLength={8} required />
{error &&

{error}

}

Already have an account?{" "} Sign in

); }