/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import { Calendar as CalendarIcon } from 'lucide-react' import { enUS, fr, ja, ru, vi, zhCN } from 'react-day-picker/locale' import { useTranslation } from 'react-i18next' import dayjs from '@/lib/dayjs' import { Button } from '@/components/ui/button' import { Calendar } from '@/components/ui/calendar' import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover' const calendarLocales = { en: enUS, zh: zhCN, fr, ru, ja, vi, } as const type DatePickerProps = { selected: Date | undefined onSelect: (date: Date | undefined) => void placeholder?: string } export function DatePicker({ selected, onSelect, placeholder, }: DatePickerProps) { const { t, i18n } = useTranslation() const placeholderText = placeholder ?? t('Pick a date') const calendarLocale = calendarLocales[i18n.language as keyof typeof calendarLocales] ?? enUS return ( } > {selected ? ( dayjs(selected).format('YYYY-MM-DD') ) : ( {placeholderText} )} date > new Date() || date < new Date('1900-01-01') } /> ) }