/* Attendance & Truancy Prevention — rate, one-tap absence report, pattern alert */
function AttendanceScreen({ onNav, onBack }) {
const [sheet, setSheet] = React.useState(false);
const [date, setDate] = React.useState('Today');
const [reason, setReason] = React.useState(null);
const [note, setNote] = React.useState('');
const DATES = ['Today','Tomorrow','Pick a date'];
const REASONS = [
{ id:'sick', label:'Illness', icon:'thermometer' },
{ id:'appt', label:'Appointment', icon:'stethoscope' },
{ id:'family',label:'Family', icon:'users' },
{ id:'other', label:'Other', icon:'circle-ellipsis' },
];
const recent = [
{ day:'Fri, May 29', status:'Present', bg:'var(--success-100)', fg:'var(--success-600)', icon:'check' },
{ day:'Thu, May 28', status:'Present', bg:'var(--success-100)', fg:'var(--success-600)', icon:'check' },
{ day:'Wed, May 27', status:'Tardy', bg:'var(--warning-100)', fg:'var(--warning-600)', icon:'clock' },
{ day:'Tue, May 26', status:'Present', bg:'var(--success-100)', fg:'var(--success-600)', icon:'check' },
{ day:'Mon, May 25', status:'Excused', bg:'var(--info-100)', fg:'var(--info-500)', icon:'shield-check' },
];
const reset = () => { setSheet(false); setReason(null); setNote(''); setDate('Today'); };
const submit = () => {
const r = REASONS.find(x=>x.id===reason);
jlToast('Absence reported · ' + date + (r ? ' · ' + r.label : ''), { icon:'calendar-check' });
reset();
};
return (
{/* rate hero */}
THIS SCHOOL YEAR
172 of 180 school days present
{[
{ n:'172', l:'Present', c:'var(--success-500)' },
{ n:'5', l:'Absent', c:'var(--danger-500)' },
{ n:'3', l:'Tardy', c:'var(--warning-600)' },
].map(s => (
))}
{/* report absence CTA */}
{/* pattern alert */}
Attendance pattern noticed
EJ has been absent or tardy on 3 Mondays this term. Catching this early helps avoid chronic absence.
{/* recent days */}
Recent Days
{recent.map((r,i) => (
{i>0 && }
))}
{/* report-absence sheet */}
{sheet && (
e.stopPropagation()} style={{ width:'100%', background:'#fff', borderRadius:'22px 22px 0 0', padding:'10px 18px 30px' }}>
Report an Absence
For EJ Hatten · Katy Middle School
Which day?
{DATES.map(d => {
const on = date===d;
return (
);
})}
Reason
{REASONS.map(r => {
const on = reason===r.id;
return (
);
})}
Note to school (optional)
)}
);
}
Object.assign(window, { AttendanceScreen });