"use client"; import MobileShiftView from "@/components/organisms/shift-schedule/MobileShiftView"; import MonthlyCalendar from "@/components/organisms/shift-schedule/MonthlyCalendar"; import ShiftCreateModal from "@/components/organisms/shift-schedule/ShiftCreateModal"; import ShiftDetailModal from "@/components/organisms/shift-schedule/ShiftDetailModal"; import WeeklySchedule from "@/components/organisms/shift-schedule/WeeklySchedule"; import { useAuth } from "@/lib/auth-context"; import { useShift } from "@/lib/shift-context"; import type { ShiftEntity } from "@/lib/types"; import Link from "next/link"; import { useState } from "react"; const MONTH_NAMES = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ]; function getMonday(d: Date): Date { const date = new Date(d); const day = date.getDay(); const diff = date.getDate() - day + (day === 0 ? -6 : 1); date.setDate(diff); return date; } function formatDateShort(d: Date): string { return `${d.getDate().toString().padStart(2, "0")}/${(d.getMonth() + 1).toString().padStart(2, "0")}`; } export default function StaffSchedulePage() { const { user, logout } = useAuth(); const { view, setView, currentDate, goToNextWeek, goToPrevWeek, goToNextMonth, goToPrevMonth, goToToday, getWeeklyBudget, } = useShift(); const [selectedShift, setSelectedShift] = useState(null); const [detailOpen, setDetailOpen] = useState(false); const [createOpen, setCreateOpen] = useState(false); const [createDate, setCreateDate] = useState(); const isManager = user?.role === "manager"; const handleShiftClick = (shift: ShiftEntity) => { setSelectedShift(shift); setDetailOpen(true); }; const handleCreateShift = (date: Date) => { setCreateDate(date); setCreateOpen(true); }; const handleDateSelect = (date: Date) => { // In month view on desktop, clicking a date could open create modal for managers if (isManager) { setCreateDate(date); setCreateOpen(true); } }; // Week range label const monday = getMonday(currentDate); const sunday = new Date(monday); sunday.setDate(monday.getDate() + 6); const weekLabel = `${formatDateShort(monday)} – ${formatDateShort(sunday)}`; const weeklyBudget = getWeeklyBudget(); return (
{/* ── Sidebar (Desktop) ── */} {/* ── Main content ── */}
{/* Header */}

Register Shift

{view === "week" ? weekLabel : `${MONTH_NAMES[currentDate.getMonth()]} ${currentDate.getFullYear()}`}

{/* View toggle (mobile) */}
{/* Navigation arrows */}
{/* Create shift button (manager only) */} {isManager && ( )} {/* Mobile nav */}
{/* Content */}
{/* Desktop views */}
{view === "week" ? ( ) : ( )}
{/* Mobile view */}
{view === "week" ? ( ) : ( )}
{/* Mobile FAB for manager */} {isManager && ( )}
{/* Modals */} { setDetailOpen(false); setSelectedShift(null); }} /> setCreateOpen(false)} defaultDate={createDate} />
); }