// Login screen — 2 users, password = username const USERS = { baptiste: { name: "Baptiste", color: "#C2603F", avatar: "B" }, imelda: { name: "Imelda", color: "#8E5A8A", avatar: "I" }, }; function useAuth() { const [user, setUser] = React.useState(() => { try { return localStorage.getItem("maisonnee:user") || null; } catch { return null; } }); const login = (u) => { setUser(u); try { localStorage.setItem("maisonnee:user", u); } catch {} }; const logout = () => { setUser(null); try { localStorage.removeItem("maisonnee:user"); } catch {} }; return { user, login, logout }; } function LoginScreen({ onLogin }) { const [pickedUser, setPickedUser] = React.useState(null); const [pwd, setPwd] = React.useState(""); const [err, setErr] = React.useState(""); const inputRef = React.useRef(null); React.useEffect(() => { if (pickedUser && inputRef.current) inputRef.current.focus(); }, [pickedUser]); const [busy, setBusy] = React.useState(false); const submit = async (e) => { e?.preventDefault?.(); if (!pickedUser || busy) return; if (pwd.trim().toLowerCase() !== pickedUser) { setErr("Mot de passe incorrect"); setTimeout(() => setErr(""), 1800); return; } setBusy(true); try { await onLogin(pickedUser); } catch (e) { setErr(e?.message || "Connexion impossible"); } finally { setBusy(false); } }; return (