// fichaje.eu — Screen: Bandeja de entrada const ScreenBandeja = () => { const [filter, setFilter] = React.useState('todos'); const [selected, setSelected] = React.useState(INBOX[0]); const filtered = filter === 'todos' ? INBOX : INBOX.filter(i => i.type === filter); const typeMeta = { approval: { i: , c: 'brand', l: 'Aprobación' }, sign: { i: , c: 'violet', l: 'Firma' }, mention: { i: , c: 'warning', l: 'Mención' }, reminder: { i: , c: 'slate', l: 'Aviso' }, birthday: { i: , c: 'pink', l: 'Cumple' }, }; return (
{[ { v: 'todos', l: 'Todo' }, { v: 'approval', l: 'Aprobar' }, { v: 'sign', l: 'Firmar' }, { v: 'mention', l: 'Menciones' }, ].map(f => ( ))}
{filtered.map(item => { const m = typeMeta[item.type]; const active = selected?.id === item.id; return ( ); })}
{selected && ( <>
{typeMeta[selected.type].i}{typeMeta[selected.type].l}
{selected.title}
{selected.from}
{selected.time}
{selected.type === 'approval' && (
{selected.from} ha solicitado una ausencia. Revisa los detalles y aprueba o rechaza la solicitud.
Pendiente}/>
Motivo
Vacaciones de verano con mi familia. Cobertura prevista con Sofía y Dani durante mi ausencia.
Solapamiento: Berta Folch ya tiene vacaciones aprobadas del 14 al 22 ago. Tu equipo Implementación tendría 2 personas fuera la semana del 18 ago.
)} {selected.type === 'sign' && (
Necesitamos tu firma en la nueva Política de teletrabajo 2026. Vigencia desde el 1 de junio. Plazo para firmar: 25 de mayo.
)} {selected.type === 'mention' && (
Núria Castells te ha mencionado en un anuncio del tablón sobre los cambios en el horario de verano.
)} {selected.type === 'reminder' && (
No registraste tu fichaje de salida el viernes 9 de mayo. Por favor, regulariza el registro desde Control horario.
)} {selected.type === 'birthday' && (
Mañana cumple años Sofía Marín. ¡No olvides felicitarla!
)}
{selected.action && (
{selected.action === 'approve' && ( <> }>Rechazar }>Aprobar solicitud )} {selected.action === 'sign' && ( }>Ir a firmar )}
)} )}
); }; Object.assign(window, { ScreenBandeja });