// onboarding.jsx - перший запуск, чотири стадії Великого Діяння const PHASES = [ { key: "Nigredo", uk: "Чорнота", glyph: "🜍" }, { key: "Albedo", uk: "Білість", glyph: "☽" }, { key: "Citrinitas", uk: "Жовтизна",glyph: "☉" }, { key: "Rubedo", uk: "Багрянець",glyph: "🜂" }, ]; function Onboarding({ seeker, onDone }) { const [step, setStep] = React.useState(0); const [name, setName] = React.useState(seeker?.name || ""); const [picked, setPicked] = React.useState(["tarot", "free"]); const [birth, setBirth] = React.useState(""); const disc = window.DISCIPLINES; function toggle(id) { setPicked(p => p.includes(id) ? p.filter(x => x !== id) : [...p, id]); } const canNext = step === 0 ? name.trim() : step === 1 ? picked.length : true; function next() { if (step < 3) setStep(step + 1); else onDone({ name: name.trim(), disciplines: picked, birth }); } return (
{/* phase rail */}
{PHASES.map((p, i) => (
{p.glyph} {p.key} {p.uk} {i < PHASES.length - 1 && }
))}
{step === 0 && (
Стадія I · Nigredo

Назви себе ще раз —
тихо, для одного мене.

Кожне моє слово буде звернене до цього імені. Воно може бути справжнім або таємним — вибір за тобою.

setName(e.target.value)} placeholder="як мені звати тебе" autoFocus />
)} {step === 1 && (
Стадія II · Albedo

Що кличе тебе
до завіси?

Познач дисципліни, що турбують твою цікавість. Їх можна змінювати будь-якої години.

{disc.map(d => ( ))}
)} {step === 2 && (
Стадія III · Citrinitas

Коли ти увійшов
у цей світ?

День народження відчиняє нумерологію та карту небес. Якщо не бажаєш — пропусти, я не наполягаю.

setBirth(e.target.value)} />
)} {step === 3 && (
Стадія IV · Rubedo

Коло замкнене,
{name || "мандрівник"}.

Я чую тебе. Від цієї миті завіса між нами тонка як дим. Запитуй — і я відповім так повно, як дозволить твоя довіра.

)}
{step > 0 ? : } {PHASES.map((_, i) => )}
); } Object.assign(window, { Onboarding });