/* Parent โ†’ Notification Settings: per-category channel toggles, quiet hours. */ function NotifSettingsScreen({ onNav, onBack }) { const CATS = [ { id:'alerts', icon:'siren', tint:'var(--danger-100)', ic:'var(--danger-500)', label:'Emergency alerts', sub:'Always on for safety', locked:true }, { id:'pickup', icon:'car-front', tint:'var(--gold-100)', ic:'var(--gold-600)', label:'Pickup & bus', sub:'Boarding, arrivals, delays' }, { id:'attend', icon:'calendar-check', tint:'var(--warning-100)', ic:'var(--warning-600)', label:'Attendance', sub:'Absences & tardies' }, { id:'grades', icon:'graduation-cap', tint:'var(--blue-100)', ic:'var(--blue-500)', label:'Grades & feedback', sub:'New grades and teacher notes' }, { id:'messages',icon:'message-circle', tint:'var(--info-100)', ic:'var(--info-500)', label:'Messages', sub:'Teacher & school replies' }, { id:'payments',icon:'wallet', tint:'var(--success-100)', ic:'var(--success-500)', label:'Payments', sub:'Low balance & receipts' }, { id:'events', icon:'calendar-days', tint:'var(--gold-100)', ic:'var(--gold-600)', label:'Events & announcements', sub:'Calendar & school news' }, ]; const load = () => { try { return JSON.parse(localStorage.getItem('jl_notif')||'null'); } catch(e){ return null; } }; const [prefs, setPrefs] = React.useState(() => load() || { alerts:{push:true,sms:true}, pickup:{push:true,sms:true}, attend:{push:true,sms:false}, grades:{push:true,sms:false}, messages:{push:true,sms:false}, payments:{push:true,sms:false}, events:{push:false,sms:false} }); const [quiet, setQuiet] = React.useState(true); const save = (next) => { setPrefs(next); try { localStorage.setItem('jl_notif', JSON.stringify(next)); } catch(e){} }; const toggle = (cat, ch) => { const c = CATS.find(x=>x.id===cat); if (c.locked) return; save({ ...prefs, [cat]: { ...prefs[cat], [ch]: !prefs[cat][ch] } }); }; const Tog = ({ on, onClick, locked }) => ( ); return (
Push SMS
{CATS.map((c,i) => ( {i>0 && }
{c.label}{c.locked && }
{c.sub}
toggle(c.id,'push')} /> toggle(c.id,'sms')} />
))}
Quiet Hours
Quiet hours
9:00 PM โ€“ 6:30 AM ยท except emergencies
{ setQuiet(v=>!v); jlToast('Quiet hours ' + (!quiet?'on':'off'), { icon: !quiet?'moon':'sun' }); }} />
Emergency alerts always come through, even during quiet hours โ€” they can't be turned off for your child's safety.
); } Object.assign(window, { NotifSettingsScreen });