import { format } from 'date-fns'; import { id } from 'date-fns/locale'; import { CalendarIcon } from 'lucide-react'; import * as React from 'react'; import { Button } from '@/components/ui/button'; import { Calendar } from '@/components/ui/calendar'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { cn } from '@/lib/utils'; interface DatePickerProps { value?: Date | string | null; onChange?: (date: Date | undefined) => void; placeholder?: string; disabled?: boolean; className?: string; name?: string; id?: string; min?: Date; max?: Date; } function DatePicker({ value, onChange, placeholder = 'Pilih tanggal', disabled = false, className, name, id, min, max, }: DatePickerProps) { const [open, setOpen] = React.useState(false); const date = React.useMemo(() => { if (!value) { return undefined; } if (value instanceof Date) { return value; } return new Date(value); }, [value]); const formattedDate = React.useMemo(() => { if (!date) { return ''; } return format(date, 'dd MMM yyyy', { locale: id }); }, [date]); return ( { onChange?.(selectedDate); setOpen(false); }} disabled={(date) => { if (min && date < min) { return true; } if (max && date > max) { return true; } return false; }} initialFocus /> {name && ( )} ); } export { DatePicker };