Spaces:
Sleeping
Sleeping
| 'use client'; | |
| import { useState } from 'react'; | |
| import { format } from 'date-fns'; | |
| import { Calendar as CalendarIcon } from 'lucide-react'; | |
| import { cn } from '@/lib/utils'; | |
| import { Button } from '@/components/ui/Button'; | |
| import { Calendar } from '@/components/ui/calendar'; | |
| import { | |
| Popover, | |
| PopoverContent, | |
| PopoverTrigger, | |
| } from '@/components/ui/popover'; | |
| type DatePickerProps = { | |
| date: string; | |
| setDate: (date: string) => void; | |
| }; | |
| export function DatePicker({ date, setDate }: DatePickerProps) { | |
| const [calendarOpen, setCalendarOpen] = useState(false); | |
| return ( | |
| <Popover open={calendarOpen} onOpenChange={setCalendarOpen}> | |
| <PopoverTrigger asChild> | |
| <Button | |
| variant={'outline'} | |
| className={cn( | |
| 'w-[280px] justify-start text-left font-normal', | |
| !date && 'text-muted-foreground', | |
| )} | |
| > | |
| <CalendarIcon className="mr-2 size-4" /> | |
| {date ? format(date, 'PPP') : <span>Pick a date</span>} | |
| </Button> | |
| </PopoverTrigger> | |
| <PopoverContent className="w-auto p-0"> | |
| <Calendar | |
| mode="single" | |
| selected={new Date(date)} | |
| onSelect={newDate => { | |
| if (newDate) { | |
| setDate(format(newDate, 'yyyy-MM-dd')); | |
| setCalendarOpen(false); | |
| } | |
| }} | |
| initialFocus | |
| /> | |
| </PopoverContent> | |
| </Popover> | |
| ); | |
| } | |