"use client"; import { useEffect, useState } from "react"; import { useCreator } from "../CreatorContext"; import SelectorGrid from "../components/SelectorGrid"; import Modal from "../components/Modal"; import ClassBuilder from "../components/ClassBuilder"; export default function ClassStep() { const { classes, refreshClasses, draft, update } = useCreator(); const [builderOpen, setBuilderOpen] = useState(false); useEffect(() => { refreshClasses(); }, [refreshClasses]); const selectedClassId = draft.classes[0]?.classId; const selectClass = (classId: string) => { update({ classes: [{ classId, level: draft.classes[0]?.level ?? 1 }], }); }; const setLevel = (level: number) => { if (!draft.classes[0]) return; update({ classes: [{ ...draft.classes[0], level }] }); }; return (

Choose a Class

Multi-classing planned for later. Pick one for now.

{selectedClassId && (
setLevel(Math.max(1, Math.min(20, Number(e.target.value) || 1)))} className="w-20 bg-neutral-950 border border-neutral-700 rounded px-2 py-1 text-sm" />
)} selectClass(c.id)} onAddCustom={() => setBuilderOpen(true)} addLabel="Add Class" renderMeta={(c) => `d${c.hitDice?.sides ?? "?"} hit die`} /> setBuilderOpen(false)} title="Create Custom Class" wide confirmClose> setBuilderOpen(false)} onSave={async (c) => { await refreshClasses(); selectClass(c.id); setBuilderOpen(false); }} />
); }