rapid-test/components/datepicker.tsx

47 lines
1.2 KiB
TypeScript

"use client";
import * as React from "react";
import { format } from "date-fns";
import { Calendar as CalendarIcon } from "~/icons";
import { cn } from "~/cn";
import { Button } from "~/button";
import { Calendar } from "~/calendar";
import { Popover, PopoverContent, PopoverTrigger } from "~/popover";
import { DayPickerSingleProps } from "react-day-picker";
export type DatePickerProps = Omit<DayPickerSingleProps, "mode">;
function DatePicker({ ...props }: DatePickerProps) {
const [date, setDate] = React.useState<Date>();
return (
<Popover>
<PopoverTrigger asChild>
<Button
variant={"outline"}
className={cn(
"justify-start text-left font-normal",
!date && "text-slate-400"
)}
>
<CalendarIcon className="mr-2 h-4 w-4" />
{date ? format(date, "PPP") : <span>Pick a date</span>}
</Button>
</PopoverTrigger>
<PopoverContent className="w-auto p-0">
<Calendar
mode="single"
selected={date}
onSelect={setDate}
initialFocus
{...props}
/>
</PopoverContent>
</Popover>
);
}
DatePicker.displayName = "DatePicker";
export { DatePicker };