From f181b671f3e48907d0e1b6e0650aecf1d32df592 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Wed, 19 Mar 2025 19:06:58 +0530 Subject: [PATCH] chore: update year range in the calendar component (#6781) --- packages/ui/src/calendar.tsx | 141 ++++++++++++++++++----------------- 1 file changed, 73 insertions(+), 68 deletions(-) diff --git a/packages/ui/src/calendar.tsx b/packages/ui/src/calendar.tsx index 87a7859f75..9fdbab1766 100644 --- a/packages/ui/src/calendar.tsx +++ b/packages/ui/src/calendar.tsx @@ -8,71 +8,76 @@ import { cn } from "../helpers"; export type CalendarProps = React.ComponentProps; -export const Calendar = ({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) => ( - .day-range-end)]:rounded-r-full [&:has(>.day-range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full" - // : "[&:has([aria-selected])]:rounded-full [&:has([aria-selected])]:bg-custom-primary-100 [&:has([aria-selected])]:text-white" - // ), - // // day_button: - // // "size-10 flex items-center justify-center overflow-hidden box-border m-0 border-2 border-transparent rounded-full", - // day: "size-10 p-0 font-normal aria-selected:opacity-100 rounded-full hover:bg-custom-primary-100/60", - // day_range_start: "day-range-start bg-custom-primary-100 text-white", - // day_range_end: "day-range-end bg-custom-primary-100 text-white", - // day_selected: "", - // day_today: - // "relative after:content-[''] after:absolute after:m-auto after:left-1/3 after:bottom-[6px] after:w-[6px] after:h-[6px] after:bg-custom-primary-100/50 after:rounded-full after:translate-x-1/2 after:translate-y-1/2", - // day_outside: "day-outside", - // day_disabled: "opacity-50 hover:!bg-transparent", - // day_range_middle: "text-black", - // day_hidden: "invisible", - // caption_dropdowns: "inline-flex bg-transparent", - // dropdown_root: "m-0 relative inline-flex items-center", - // dropdowns: "relative inline-flex items-center", - // dropdown: - // "appearance-none absolute z-[2] top-0 bottom-0 left-0 w-full m-0 p-0 opacity-0 border-none text-[1rem] cursor-pointer bg-transparent hover:bg-custom-background-80", - // months_dropdown: "capitalize", - // caption_label: - // "z-[1] inline-flex items-center gap-[0.25rem] m-0 py-0 px-[0.25rem] whitespace-nowrap border-2 border-transparent font-semibold bg-transparent rounded", - // ...classNames, - // }} - components={{ - Chevron: ({ className, ...props }) => ( - - ), - }} - {...props} - /> -); +export const Calendar = ({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) => { + const currentYear = new Date().getFullYear(); + const thirtyYearsAgoFirstDay = new Date(currentYear - 30, 0, 1); + const thirtyYearsFromNowFirstDay = new Date(currentYear + 30, 11, 31); + + return ( + .day-range-end)]:rounded-r-full [&:has(>.day-range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full" + // : "[&:has([aria-selected])]:rounded-full [&:has([aria-selected])]:bg-custom-primary-100 [&:has([aria-selected])]:text-white" + // ), + // // day_button: + // // "size-10 flex items-center justify-center overflow-hidden box-border m-0 border-2 border-transparent rounded-full", + // day: "size-10 p-0 font-normal aria-selected:opacity-100 rounded-full hover:bg-custom-primary-100/60", + // day_range_start: "day-range-start bg-custom-primary-100 text-white", + // day_range_end: "day-range-end bg-custom-primary-100 text-white", + // day_selected: "", + // day_today: + // "relative after:content-[''] after:absolute after:m-auto after:left-1/3 after:bottom-[6px] after:w-[6px] after:h-[6px] after:bg-custom-primary-100/50 after:rounded-full after:translate-x-1/2 after:translate-y-1/2", + // day_outside: "day-outside", + // day_disabled: "opacity-50 hover:!bg-transparent", + // day_range_middle: "text-black", + // day_hidden: "invisible", + // caption_dropdowns: "inline-flex bg-transparent", + // dropdown_root: "m-0 relative inline-flex items-center", + // dropdowns: "relative inline-flex items-center", + // dropdown: + // "appearance-none absolute z-[2] top-0 bottom-0 left-0 w-full m-0 p-0 opacity-0 border-none text-[1rem] cursor-pointer bg-transparent hover:bg-custom-background-80", + // months_dropdown: "capitalize", + // caption_label: + // "z-[1] inline-flex items-center gap-[0.25rem] m-0 py-0 px-[0.25rem] whitespace-nowrap border-2 border-transparent font-semibold bg-transparent rounded", + // ...classNames, + // }} + components={{ + Chevron: ({ className, ...props }) => ( + + ), + }} + startMonth={thirtyYearsAgoFirstDay} + endMonth={thirtyYearsFromNowFirstDay} + {...props} + /> + ); +};