Guest User

Untitled

a guest
Jun 23rd, 2025
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. "use client";
  2. import { format } from "date-fns";
  3. import { CalendarIcon } from "lucide-react";
  4. import { ComponentProps } from "react";
  5. import { DateRange } from "react-day-picker";
  6.  
  7. import { Button } from "@/components/ui/button";
  8. import { Calendar } from "@/components/ui/calendar";
  9. import {
  10. Popover,
  11. PopoverContent,
  12. PopoverTrigger,
  13. } from "@/components/ui/popover";
  14. import { cn } from "@/lib/utils";
  15.  
  16. interface DateRangePickerProps extends ComponentProps<"div"> {
  17. date: DateRange | undefined;
  18. onDateChange: (date: DateRange | undefined) => void;
  19. }
  20.  
  21. export function DateRangePicker({
  22. date,
  23. onDateChange,
  24. className,
  25. }: DateRangePickerProps) {
  26. return (
  27. <div className={cn("grid gap-2", className)}>
  28. <Popover>
  29. <PopoverTrigger asChild>
  30. <Button
  31. id="date"
  32. variant={"outline"}
  33. className={cn(
  34. "w-[300px] justify-start px-3 text-left font-normal",
  35. !date && "text-muted-foreground"
  36. )}
  37. >
  38. <CalendarIcon className="mr-2 h-4 w-4" />
  39. {date?.from ? (
  40. date.to ? (
  41. <>
  42. {format(date.from, "LLL dd, y")} -{" "}
  43. {format(date.to, "LLL dd, y")}
  44. </>
  45. ) : (
  46. format(date.from, "LLL dd, y")
  47. )
  48. ) : (
  49. <span>Pick a date</span>
  50. )}
  51. </Button>
  52. </PopoverTrigger>
  53. <PopoverContent className="w-auto p-0" align="start">
  54. <Calendar
  55. initialFocus
  56. mode="range"
  57. defaultMonth={date?.from}
  58. selected={date}
  59. onSelect={onDateChange}
  60. numberOfMonths={2}
  61. />
  62. </PopoverContent>
  63. </Popover>
  64. </div>
  65. );
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment