// settings/Settings.jsx — Settings root + Account/Server/Timezone/Theme/About.
function SetRow({ ic, color, ti, de, badge, chevron = true, danger = false }) {
return (
{ic &&
}
{ti}
{badge &&
{badge}}
{de &&
{de}
}
{chevron && !danger &&
}
);
}
window.SetRow = SetRow;
function SettingsRoot({ dark = false, isAdmin = true }) {
return (
v0.9.3}
trailing={}/>
{/* User card */}
L
Lukas Park
lukas · admin · since Feb 2025
Server
Apple Health
Appearance
Notifications
{isAdmin && (
<>
Administration
>
)}
About
Ordentus iOS · v0.9.3 (build 142) · 13 May 2026
Server portal.lukas.dev · v2.4.1
);
}
window.SettingsRoot = SettingsRoot;
function SettingsAccount({ dark = false }) {
return (
Profile
Security
This device
);
}
window.SettingsAccount = SettingsAccount;
function SettingsTheme({ dark = false }) {
// Three big preview cards: Light · Dark · System (auto)
const Card = ({ name, sel, mode }) => (
);
return (
The bedtime gradient stays the same in both modes. Surfaces and text adapt.
Schedule
Accessibility
);
}
window.SettingsTheme = SettingsTheme;
function SettingsTimezone({ dark = false }) {
const zones = [
{ z: 'Europe/London', local: '10:26', sel: true },
{ z: 'Europe/Paris', local: '11:26' },
{ z: 'America/New_York', local: '06:26' },
{ z: 'America/Los_Angeles', local: '03:26' },
{ z: 'Asia/Tokyo', local: '19:26' },
{ z: 'Asia/Seoul', local: '19:26' },
{ z: 'Australia/Sydney', local: '21:26' },
];
return (
Detected
Common
{zones.map((r, i) => (
{r.z}
UTC {r.z.startsWith('Europe') ? '+0' : r.z.includes('New') ? '−5' : r.z.includes('Los') ? '−8' : r.z.includes('Tokyo') ? '+9' : r.z.includes('Seoul') ? '+9' : '+11'}
{r.local}
{r.sel &&
}
))}
IANA time-zone identifiers. Calendar feeds carry their own zone — Ordentus renders each event in the right local time.
);
}
window.SettingsTimezone = SettingsTimezone;