/* ============================================
USER PROFILE / SETTINGS
============================================ */
function ProfileScreen({ onNavigate }) {
const [theme, setTheme] = useState("light");
const [lang, setLang] = useState("English");
const [username, setUsername] = useState("Rio Pratama");
const [emailNotif, setEmailNotif] = useState(true);
const [browserNotif, setBrowserNotif] = useState(false);
return (
<>
User Profile
rio.pratama@bjp-industries.id
· Operator · L2 · Maintenance Line 3
{/* Profile card */}
RP
Rio Pratama
RIO.PRATAMA · ID 4912
Operator · L2
{/* Settings */}
{/* User Settings */}
setUsername(e.target.value)} />
Authenticator app · enabled
Microsoft Authenticator · last used today 08:42
2FA Active
{/* User Preferences */}
{/* Theme */}
setTheme("light")} />
setTheme("dark")} />
setTheme("auto")} />
{/* Language */}
setLang("Indonesian")} />
setLang("English")} />
The assistant responds in the user's question language regardless of this setting.
{/* Density */}
{["Comfortable", "Default", "Compact"].map((d, i) => (
))}
{/* Notification toggles */}
>
);
}
function ProfileMeta({ label, value }) {
return (
{label}
{value}
);
}
function ThemeOption({ kind, active, onClick }) {
const bg = kind === "light" ? "white" : kind === "dark" ? "var(--ink-900)" : "linear-gradient(90deg, white 50%, var(--ink-900) 50%)";
const sidebar = kind === "light" ? "var(--navy-800)" : kind === "dark" ? "#000" : "linear-gradient(90deg, var(--navy-800) 50%, #000 50%)";
return (
);
}
function LangOption({ flag, name, code, active, onClick }) {
return (
);
}
function PrefToggle({ title, desc, on, onChange }) {
return (
);
}
window.ProfileScreen = ProfileScreen;