import { Fragment, useMemo } from 'react'; import { useVolunteer, useVolunteerPlanning } from '@/api/hooks'; import { useAuth } from '@/auth/auth-context'; import { ErrorNote, Loading } from '@/components/state'; import { hourRangeLabel, longDayLabel, naiveMinutes } from '@/lib/time'; import { useNowMinutes } from '@/lib/useNowMinutes'; import { t } from '@/i18n'; // Page réellement consultée par le bénévole (accueil de son rôle, cf. // `auth/roles.ts:homePath`) — sur son propre téléphone la plupart du temps, // mais aussi possible depuis un ordinateur : le rendu ci-dessous s'adapte // (mobile d'abord, une seule colonne pleine largeur ; élargi et centré à // partir de `sm:`), sans jamais simuler un cadre de téléphone. Repères de // conception conservés : fonds opaques, texte noir sur jaune ou blanc (pas // de gris clair, lisibilité plein soleil), cibles tactiles ≥ 52 px de haut, // une seule action par créneau. function NowLine() { return (