"use client"; import ShiftCard from "@/components/molecules/cards/ShiftCard"; import { useShift } from "@/lib/shift-context"; import { useMemo, useState } from "react"; import type { MobileShiftViewProps } from "./ShiftSchedule.types"; const DAY_HEADERS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; const MONTH_NAMES = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ]; function formatDateKey(d: Date): string { const y = d.getFullYear(); const m = (d.getMonth() + 1).toString().padStart(2, "0"); const day = d.getDate().toString().padStart(2, "0"); return `${y}-${m}-${day}`; } function isToday(d: Date): boolean { const today = new Date(2026, 3, 10); return formatDateKey(d) === formatDateKey(today); } export default function MobileShiftView({ onShiftClick, }: MobileShiftViewProps) { const { currentDate, getShiftsForDate, goToNextMonth, goToPrevMonth } = useShift(); const [selectedDate, setSelectedDate] = useState(new Date(2026, 3, 10)); const calendarDays = useMemo(() => { const year = currentDate.getFullYear(); const month = currentDate.getMonth(); const firstDay = new Date(year, month, 1); const lastDay = new Date(year, month + 1, 0); let startOffset = firstDay.getDay() - 1; if (startOffset < 0) startOffset = 6; const days: (Date | null)[] = []; for (let i = 0; i < startOffset; i++) days.push(null); for (let d = 1; d <= lastDay.getDate(); d++) days.push(new Date(year, month, d)); while (days.length % 7 !== 0) days.push(null); return days; }, [currentDate]); const selectedShifts = useMemo( () => getShiftsForDate(selectedDate), [selectedDate, getShiftsForDate], ); const dayOfWeek = DAY_HEADERS[(selectedDate.getDay() + 6) % 7]; return (
{/* Month calendar card */}
{/* Month navigation */}

{MONTH_NAMES[currentDate.getMonth()]} {currentDate.getFullYear()}

{/* Day headers */}
{DAY_HEADERS.map((day, i) => (
= 5 ? "text-rose-400" : "text-(--color-text-muted)" }`} > {day}
))}
{/* Calendar grid */}
{calendarDays.map((date, i) => { if (!date) return
; const today = isToday(date); const selected = formatDateKey(date) === formatDateKey(selectedDate); const dayShifts = getShiftsForDate(date); const isWeekend = date.getDay() === 0 || date.getDay() === 6; return ( ); })}
{/* Selected day shifts */}

{dayOfWeek}, {selectedDate.getDate()}/{selectedDate.getMonth() + 1}/ {selectedDate.getFullYear()}

0 ? "bg-(--color-primary)/10 text-(--color-primary)" : "bg-gray-100 text-(--color-text-muted)" }`} > {selectedShifts.length} shifts
{selectedShifts.length === 0 ? (

No shifts

No shifts created for this day

) : (
{selectedShifts.map((shift) => ( ))}
)}
); }