'use client'; /** * Agenda Toolbar Component * * View switcher and date navigation for the calendar. */ import { ChevronLeft, ChevronRight, Plus, Calendar } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { format } from 'date-fns'; import { nl } from 'date-fns/locale'; import type { CalendarView } from '../types'; interface AgendaToolbarProps { currentDate: Date; currentView: CalendarView; onViewChange: (view: CalendarView) => void; onNavigate: (direction: 'prev' | 'next' | 'today') => void; onNewAppointment: () => void; } const VIEW_OPTIONS: { value: CalendarView; label: string }[] = [ { value: 'timeGridDay', label: 'Dag' }, { value: 'timeGridWeek', label: 'Week' }, { value: 'timeGridWorkWeek', label: 'Werkweek' }, ]; export function AgendaToolbar({ currentDate, currentView, onViewChange, onNavigate, onNewAppointment, }: AgendaToolbarProps) { const getDateLabel = () => { if (currentView === 'timeGridDay') { return format(currentDate, 'EEEE d MMMM yyyy', { locale: nl }); } // For week views, show the week range const startOfWeek = new Date(currentDate); const day = startOfWeek.getDay(); const diff = startOfWeek.getDate() - day + (day === 0 ? -6 : 1); startOfWeek.setDate(diff); const endOfWeek = new Date(startOfWeek); endOfWeek.setDate(endOfWeek.getDate() + (currentView === 'timeGridWorkWeek' ? 4 : 6)); if (startOfWeek.getMonth() === endOfWeek.getMonth()) { return `${format(startOfWeek, 'd')} - ${format(endOfWeek, 'd MMMM yyyy', { locale: nl })}`; } if (startOfWeek.getFullYear() === endOfWeek.getFullYear()) { return `${format(startOfWeek, 'd MMM', { locale: nl })} - ${format(endOfWeek, 'd MMM yyyy', { locale: nl })}`; } return `${format(startOfWeek, 'd MMM yyyy', { locale: nl })} - ${format(endOfWeek, 'd MMM yyyy', { locale: nl })}`; }; return (