// Atlas · Settings modal const { useState: useStgState, useEffect: useStgEffect } = React; const TABS = ["Profile", "Appearance", "Preferences", "Account"]; function SettingsModal({ user, onClose, onSave, theme, setTheme }) { const [tab, setTab] = useStgState("Profile"); const [saving, setSaving] = useStgState(false); const [saved, setSaved] = useStgState(false); const profile = user?.profile || {}; const [form, setForm] = useStgState({ name: user?.name || "", title: profile.title || "", company: profile.company || "", department: profile.department || "", companySize: profile.companySize || "", useCase: profile.useCase || "", defaultReportType: profile.defaultReportType || "tech", defaultFormat: profile.defaultFormat || "pdf", defaultAudience: profile.defaultAudience || "Internal R&D / science team", emailNotifications: profile.emailNotifications !== false, digestFrequency: profile.digestFrequency || "weekly", }); const set = (k, v) => setForm((f) => ({ ...f, [k]: v })); const handleSave = async () => { setSaving(true); try { await fetch("/api/profile", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(form), }); setSaved(true); setTimeout(() => setSaved(false), 2000); onSave && onSave(form); } catch (e) { alert("Could not save: " + e.message); } finally { setSaving(false); } }; // Close on Escape useStgEffect(() => { const handler = (e) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", handler); return () => window.removeEventListener("keydown", handler); }, []); const COMPANY_SIZES = ["1–10", "11–50", "51–200", "201–1,000", "1,000+"]; const USE_CASES = ["Academic / university research", "Biotech / pharma R&D", "Corporate strategy & BD", "Investment / VC due diligence", "Market intelligence", "Consulting", "Other"]; return (