Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use client";
- import { format } from "date-fns";
- import { CalendarIcon } from "lucide-react";
- import { ComponentProps } from "react";
- import { DateRange } from "react-day-picker";
- 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 DateRangePickerProps extends ComponentProps<"div"> {
- date: DateRange | undefined;
- onDateChange: (date: DateRange | undefined) => void;
- }
- export function DateRangePicker({
- date,
- onDateChange,
- className,
- }: DateRangePickerProps) {
- return (
- <div className={cn("grid gap-2", className)}>
- <Popover>
- <PopoverTrigger asChild>
- <Button
- id="date"
- variant={"outline"}
- className={cn(
- "w-[300px] justify-start px-3 text-left font-normal",
- !date && "text-muted-foreground"
- )}
- >
- <CalendarIcon className="mr-2 h-4 w-4" />
- {date?.from ? (
- date.to ? (
- <>
- {format(date.from, "LLL dd, y")} -{" "}
- {format(date.to, "LLL dd, y")}
- </>
- ) : (
- format(date.from, "LLL dd, y")
- )
- ) : (
- <span>Pick a date</span>
- )}
- </Button>
- </PopoverTrigger>
- <PopoverContent className="w-auto p-0" align="start">
- <Calendar
- initialFocus
- mode="range"
- defaultMonth={date?.from}
- selected={date}
- onSelect={onDateChange}
- numberOfMonths={2}
- />
- </PopoverContent>
- </Popover>
- </div>
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment