"use client"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState, FormEvent } from "react"; import { ContactSection } from "../../components/contact-section"; import { DemoCta } from "../../components/demo-cta"; import { FaqSection } from "../../components/faq-section"; import { PageSchema } from "../../components/page-schema"; import { SiteFooter } from "../../components/site-footer"; import { SiteHeader } from "../../components/site-header"; import { defaultFaqs } from "../../data/faq"; import { siteInfo } from "../../data/site"; type ApiResponse = { data: T; meta: { timestamp: string; version: "v1" }; error: null | { message: string; code?: string }; }; type AuthData = { user: { id: string; email: string }; token: string }; export default function RegisterPage() { const router = useRouter(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [status, setStatus] = useState(""); const schema = [ { "@context": "https://schema.org", "@type": "WebPage", name: "LedgerOne Create Account", description: "Create a LedgerOne account and start with two free accounts.", url: `${siteInfo.url}/register` }, { "@context": "https://schema.org", "@type": "FAQPage", mainEntity: defaultFaqs.map((item) => ({ "@type": "Question", name: item.question, acceptedAnswer: { "@type": "Answer", text: item.answer } })) } ]; const onSubmit = async (event: FormEvent) => { event.preventDefault(); setStatus("Creating account..."); try { const res = await fetch("/api/auth/register", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ email, password }) }); const payload = (await res.json()) as ApiResponse; if (!res.ok || payload.error) { setStatus(payload.error?.message ?? "Registration failed."); return; } setStatus(`Welcome, ${payload.data.user.email}`); localStorage.setItem("ledgerone_token", payload.data.token); localStorage.setItem("ledgerone_user_id", payload.data.user.id); router.push("/login"); } catch { setStatus("Registration failed."); } }; return (
L1

Create your account

Already have an account?{" "} Sign in

setEmail(e.target.value)} className="block w-full appearance-none rounded-lg border border-border bg-background/50 px-3 py-2 placeholder-muted-foreground shadow-sm focus:border-primary focus:outline-none focus:ring-primary sm:text-sm transition-all" />
setPassword(e.target.value)} className="block w-full appearance-none rounded-lg border border-border bg-background/50 px-3 py-2 placeholder-muted-foreground shadow-sm focus:border-primary focus:outline-none focus:ring-primary sm:text-sm transition-all" />
{ const btn = document.getElementById("submit-btn") as HTMLButtonElement; if (btn) btn.disabled = !e.target.checked; }} />
{status && (

{status}

)}
); }