/** * Step 1 — Audience hints. * * Optional refinements that bias the planner: who the viewer is, * what level they're at, and what language to author in. The * defaults work fine — the wizard's "Next" stays enabled even * when nothing's been touched. */ import React from "react"; import type { WizardForm } from "../wizardState"; export interface Step1Props { form: WizardForm; setForm: (patch: Partial) => void; } const ROLE_OPTIONS = [ { value: "viewer", label: "Viewer", hint: "Generic audience." }, { value: "learner", label: "Learner", hint: "Student / trainee." }, { value: "customer", label: "Customer", hint: "Buyer / prospect." }, { value: "trainee", label: "Employee trainee", hint: "Onboarding / compliance." }, { value: "lead", label: "Sales lead", hint: "Demo / discovery." }, ]; const LEVEL_OPTIONS: Array<{ value: WizardForm["audience_level"]; label: string }> = [ { value: "beginner", label: "Beginner" }, { value: "intermediate", label: "Intermediate" }, { value: "advanced", label: "Advanced" }, ]; const LANGUAGE_OPTIONS = [ { value: "en", label: "English" }, { value: "es", label: "Spanish" }, { value: "fr", label: "French" }, { value: "de", label: "German" }, { value: "it", label: "Italian" }, { value: "pt", label: "Portuguese" }, { value: "ja", label: "Japanese" }, { value: "zh", label: "Chinese" }, ]; export function Step1Audience({ form, setForm }: Step1Props) { return (
{ROLE_OPTIONS.map((r) => ( setForm({ audience_role: r.value })} label={r.label} hint={r.hint} /> ))}
{LEVEL_OPTIONS.map((lv) => { const selected = form.audience_level === lv.value; return ( ); })}
setForm({ audience_locale_hint: e.target.value })} placeholder="(optional)" maxLength={32} className="w-full bg-[#121212] border border-[#3f3f3f] rounded-md px-3 py-2.5 text-sm outline-none focus:border-[#3ea6ff] focus:ring-1 focus:ring-[#3ea6ff]/50" />
); } function Field({ label, hint, htmlFor, children, }: { label: string; hint?: string; htmlFor?: string; children: React.ReactNode; }) { return (
{hint &&

{hint}

} {children}
); } function ChoiceCard({ selected, onClick, label, hint, }: { selected: boolean; onClick: () => void; label: string; hint?: string; }) { return ( ); } /** Audience step has no hard requirements — defaults are fine. */ export function step1Valid(_f: WizardForm): boolean { return true; }