{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "range-calendar",
  "dependencies": [
    "react-aria-components",
    "tailwind-variants"
  ],
  "registryDependencies": [
    "https://taki-ui.com/r/calendar.json",
    "https://taki-ui.com/r/utils.json"
  ],
  "files": [
    {
      "path": "registry/new-york/ui/range-calendar.tsx",
      "content": "\"use client\"\n\nimport React from \"react\"\nimport {\n  RangeCalendar as AriaRangeCalendar,\n  RangeCalendarProps as AriaRangeCalendarProps,\n  CalendarCell,\n  CalendarGrid,\n  CalendarGridBody,\n  DateValue,\n  Text,\n} from \"react-aria-components\"\nimport { tv } from \"tailwind-variants\"\n\nimport { cn, focusRing } from \"../lib/utils\"\nimport {\n  cellStyles as calendarCellStyles,\n  CalendarGridHeader,\n  CalendarHeader,\n} from \"./calendar\"\n\nconst cellStyles = tv({\n  extend: calendarCellStyles,\n  variants: {\n    isSelected: {\n      false: \"hover:bg-accent hover:text-accent-foreground\",\n      true: [\n        \"bg-primary relative text-primary-foreground rounded-none hover:bg-primary  hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n        // these styles are required to fill the gap between the cells for range selection\n        \"after:content-[''] after:h-full after:w-1 after:absolute after:-right-1 after:bg-primary\",\n      ],\n    },\n    isSelectionStart: {\n      true: \"rounded-l-md\",\n    },\n    isSelectionEnd: {\n      true: \"rounded-r-md after:content-none\",\n    },\n  },\n})\n\nexport interface RangeCalendarProps<T extends DateValue>\n  extends Omit<AriaRangeCalendarProps<T>, \"visibleDuration\"> {\n  errorMessage?: string\n  className?: string\n}\n\nexport function RangeCalendar<T extends DateValue>({\n  errorMessage,\n  className,\n  ...props\n}: RangeCalendarProps<T>) {\n  return (\n    <AriaRangeCalendar\n      className={cn(\"flex w-fit flex-col gap-3 p-3\", className)}\n      {...props}\n    >\n      <CalendarHeader />\n      <CalendarGrid className=\"mt-1 w-full border-collapse space-y-1\">\n        <CalendarGridHeader />\n        <CalendarGridBody>\n          {(date) => <CalendarCell date={date} className={cellStyles} />}\n        </CalendarGridBody>\n      </CalendarGrid>\n      {errorMessage && (\n        <Text slot=\"errorMessage\" className=\"text-destructive text-sm\">\n          {errorMessage}\n        </Text>\n      )}\n    </AriaRangeCalendar>\n  )\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}