// auth.jsx — вход / регистрация ("впиши имя в книгу") function Auth({ mode = "register", onMode, onDone, onBack }) { const isReg = mode === "register"; const [name, setName] = React.useState(""); const [email, setEmail] = React.useState(""); const [pass, setPass] = React.useState(""); const [error, setError] = React.useState(""); const [busy, setBusy] = React.useState(false); const ready = isReg ? (name.trim() && email.trim() && pass.length >= 8) : (email.trim() && pass.trim()); async function submit(e) { e.preventDefault(); if (!ready || busy) return; setBusy(true); setError(""); try { const res = isReg ? await window.AzothApi.register({ displayName: name.trim(), email: email.trim(), password: pass }) : await window.AzothApi.login({ email: email.trim(), password: pass }); window.AzothApi.setToken(res.token); onDone({ id: res.user.id, name: res.user.display_name || name.trim() || "мандрівник", email: res.user.email, isNew: isReg, disciplines: ["free", "tarot", "numero"], }); } catch (err) { const msg = String(err.message || err); setError(msg.includes("already registered") ? "Ця адреса вже вписана. Спробуй увійти." : msg.includes("Invalid email or password") ? "Ключ не збігся з іменем. Перевір адресу й таємне слово." : msg); } finally { setBusy(false); } } return (