// student.jsx — student-facing check-in screens (in iOS frames)
const StudentNamePicker = () => {
const [query, setQuery] = React.useState("");
const filtered = STUDENTS.filter((s) => s.name.toLowerCase().includes(query.toLowerCase()));
return (
Check-in · K7QJ-MX2P
Wer bist du?
{COURSE.name} · Do 30. April · 14 Uhr
setQuery(e.target.value)}
placeholder="Name eingeben…"
style={{ border: "none", background: "transparent", outline: "none", fontSize: 14, flex: 1 }} />
{filtered.map((s) => (
))}
Nicht in der Liste? Sprich die Tutor:in an.
);
};
const StudentSeatPicker = () => {
return (
Hallo, Carla 👋
Wähle deinen Sitz
Tippe auf einen freien Platz · {ROOM.name}
{/* Mini seat map scaled to fit phone width */}
frei
belegt
dein Sitz
ℹ️
Du kannst deinen Sitz wechseln, solange der Slot offen ist.
);
};
const StudentConfirmed = () => {
return (
Eingecheckt um 14:03
Du sitzt auf T1-3
+3 Bonuspunkte für diese Woche
Präsent
Slot-Status
Sperrt voraussichtlich um 14:15
);
};
const StudentLocked = () => {
return (
Slot gesperrt · 14:18
Anwesenheit erfasst
Dein Sitz für diese Woche bleibt sichtbar.
Check-in für diesen Slot ist geschlossen. Bonus wurde gutgeschrieben.
Nächstes Tutorium: Do, 7. Mai · 14:00
);
};
Object.assign(window, { StudentNamePicker, StudentSeatPicker, StudentConfirmed, StudentLocked });