"use client"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { ImmbotLogo, UqoLogo } from "@/components/logo"; import { Button, Card, Input, Label, Spinner, cn } from "@/components/ui"; const COURSES = [ { code: "IMM1003" as const, title: "Éléments d'évaluation immobilière", session: "Automne 2026" }, { code: "IMM1033" as const, title: "Méthodes du coût", session: "Automne 2026" }, ]; export default function RegisterPage() { const router = useRouter(); const [form, setForm] = useState({ username: "", displayName: "", email: "", password: "", accessCode: "" }); const [courses, setCourses] = useState(["IMM1003"]); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); const set = (k: keyof typeof form) => (e: React.ChangeEvent) => setForm((f) => ({ ...f, [k]: e.target.value })); async function submit(e: React.FormEvent) { e.preventDefault(); setError(null); if (courses.length === 0) return setError("Choisissez au moins un cours."); setLoading(true); try { const res = await fetch("/api/auth/register", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ ...form, courses }), }); const data = await res.json(); if (!res.ok) return setError(data.error ?? "Erreur d'inscription."); router.push("/chat"); router.refresh(); } catch { setError("Impossible de joindre le serveur."); } finally { setLoading(false); } } return (

Créer un compte étudiant

Choisissez vos cours et commencez à étudier.

{COURSES.map((c) => { const on = courses.includes(c.code); return ( ); })}
{error &&

{error}

}

En créant un compte, vous acceptez les{" "} conditions d'utilisation et la{" "} politique de confidentialité{" "} (plateforme pédagogique réservée aux cours IMM1003 et IMM1033).

Déjà inscrit ? Connexion

); }