/** * DateField Component * * 날짜 선택 필드 (date, date-range) */ 'use client'; import { useState } from 'react'; import { format } from 'date-fns'; import { ko } from 'date-fns/locale'; import { CalendarIcon } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Calendar } from '@/components/ui/calendar'; import { Label } from '@/components/ui/label'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import type { DynamicFieldProps } from '../types'; import { cn } from '@/lib/utils'; export function DateField({ field, value, error, onChange, onBlur, disabled, }: DynamicFieldProps) { const [open, setOpen] = useState(false); // 값을 Date 객체로 변환 const dateValue = value ? new Date(value as string) : undefined; const isValidDate = dateValue && !isNaN(dateValue.getTime()); const handleSelect = (date: Date | undefined) => { if (date) { // ISO 문자열로 변환 (YYYY-MM-DD) onChange(format(date, 'yyyy-MM-dd')); } else { onChange(null); } setOpen(false); onBlur(); }; return (
{field.help_text && !error && (

{field.help_text}

)} {error &&

{error}

}
); } export default DateField;