import React from 'react';
import { ChevronLeftIcon, ChevronRightIcon } from '@radix-ui/react-icons';
import { ctw } from '@/common/utils/ctw/ctw';
import { DayPicker, DayPickerRangeProps } from 'react-day-picker';
import { buttonVariants } from '../../atoms/Button/Button';
export type CalendarProps = DayPickerRangeProps & { bottomActions?: React.ReactNode };
export const Calendar = ({
className,
classNames,
showOutsideDays = true,
bottomActions,
...props
}: CalendarProps) => {
return (
.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'
: '[&:has([aria-selected])]:rounded-md',
),
day: ctw(
buttonVariants({ variant: 'ghost' }),
'h-8 w-8 p-0 font-normal aria-selected:opacity-100',
),
day_range_start: 'day-range-start',
day_range_end: 'day-range-end',
day_selected:
'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',
day_today: 'bg-accent text-accent-foreground',
day_outside:
'day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30',
day_disabled: 'text-muted-foreground opacity-50',
day_range_middle: 'aria-selected:bg-accent aria-selected:text-accent-foreground',
day_hidden: 'invisible',
...classNames,
}}
components={{
IconLeft: ({ ...props }) => ,
IconRight: ({ ...props }) => ,
}}
{...props}
/>
{bottomActions && {bottomActions}
}
);
};
Calendar.displayName = 'Calendar';