'use client'; import * as React from 'react'; import { CalendarCheck, Loader2, X } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { DatePicker } from '@/components/DatePicker'; import { ClockTimePicker } from '@/components/ClockTimePicker'; import { DurationPicker } from '@/components/DurationPicker'; import type { Appointment } from '@/lib/models/appointments'; interface ScheduleAppointmentDialogProps { open: boolean; onOpenChange: (open: boolean) => void; appointment: Appointment | null; scheduledDate: Date | undefined; setScheduledDate: (date: Date | undefined) => void; scheduledTime: string; setScheduledTime: (time: string) => void; scheduledDuration: number; setScheduledDuration: (duration: number) => void; onSchedule: () => Promise; isScheduling: boolean; isDark?: boolean; title?: string; description?: string; } export function ScheduleAppointmentDialog({ open, onOpenChange, appointment, scheduledDate, setScheduledDate, scheduledTime, setScheduledTime, scheduledDuration, setScheduledDuration, onSchedule, isScheduling, isDark = false, title, description, }: ScheduleAppointmentDialogProps) { const formatDate = (date: Date) => { return date.toLocaleDateString("en-US", { weekday: "long", month: "long", day: "numeric", year: "numeric", }); }; const formatTime = (timeString: string) => { const [hours, minutes] = timeString.split(":").map(Number); const date = new Date(); date.setHours(hours); date.setMinutes(minutes); return date.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, }); }; return ( {title || "Schedule Appointment"} {description || (appointment ? `Set date and time for ${appointment.first_name} ${appointment.last_name}'s appointment` : "Set date and time for this appointment")}
{/* Date Selection */}
{/* Time Selection */}
{/* Duration Selection */}
{/* Preview */} {scheduledDate && scheduledTime && (

Appointment Preview

{formatDate(scheduledDate)}

{formatTime(scheduledTime)} • {scheduledDuration} minutes

)}
); }