{{ monthLabel() | titlecase }}

JO
@if (reservasService.isLoading()) {
}
@if (reservasService.error()) {
error_outline {{ reservasService.error() }}
}
GMT-04
@for (res of filteredResources(); track res.id; let idx = $index) {
{{ res.type }}
{{ res.icon }}
{{ res.name }}
}
@for (time of timeSlots; track time) {
{{ time }}
}
@for (res of filteredResources(); track res.id; let colIdx = $index) {
@for (time of timeSlots; track time) {
@if (isSlotOccupied(res.name, time)) {
{{ getReservaForSlot(res.name, time)?.author || 'Reservado' }}
{{ time }} – {{ getEndTime(time) }}
} @else {
} @if (selectedSlot()?.resource?.id === res.id && selectedSlot()?.time === time) {
drag_handle

{{ res.name }}

schedule
{{ activeDateLabel() | titlecase }} {{ time }} – {{ getEndTime(time) }}
room Capacidad: {{ res.capacity }} personas
info_outline {{ res.type }}
@if (confirmError()) {
error {{ confirmError() }}
} @if (confirmSuccess()) {
check_circle ¡Reserva guardada en Supabase!
}
}
}
}
@if (filteredResources().length === 0) {
calendar_today

No hay recursos seleccionados. Marque las categorías en el panel izquierdo.

}