{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "calendar",
  "type": "registry:component",
  "title": "Calendar",
  "description": "Date picker calendar for selecting dates.",
  "dependencies": [
    "@vllnt/ui@^0.2.1"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/default/calendar/calendar.tsx",
      "content": "\"use client\";\n\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { cn } from \"@vllnt/ui\";\nimport { buttonVariants } from \"@vllnt/ui\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction IconLeft() {\n  return <ChevronLeft className=\"size-4\" />;\n}\n\nfunction IconRight() {\n  return <ChevronRight className=\"size-4\" />;\n}\n\nfunction ChevronComponent({\n  orientation = \"right\",\n}: {\n  orientation?: \"down\" | \"left\" | \"right\" | \"up\";\n}) {\n  return orientation === \"left\" ? <IconLeft /> : <IconRight />;\n}\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  ...props\n}: CalendarProps) {\n  return (\n    <DayPicker\n      className={cn(\"p-3\", className)}\n      classNames={{\n        button_next: cn(\n          buttonVariants({ variant: \"outline\" }),\n          \"size-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute right-1\",\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: \"outline\" }),\n          \"size-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute left-1\",\n        ),\n        caption_label: \"text-sm font-medium\",\n        day: \"size-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n        day_button: cn(\n          buttonVariants({ variant: \"ghost\" }),\n          \"size-9 p-0 font-normal aria-selected:opacity-100\",\n        ),\n        disabled: \"text-muted-foreground opacity-50\",\n        hidden: \"invisible\",\n        month: \"space-y-4\",\n        month_caption: \"flex justify-center pt-1 relative items-center\",\n        month_grid: \"w-full border-collapse space-y-1\",\n        months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n        nav: \"space-x-1 flex items-center\",\n        outside:\n          \"day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground\",\n        range_end: \"day-range-end\",\n        range_middle:\n          \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n        selected:\n          \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n        today: \"bg-accent text-accent-foreground\",\n        week: \"flex w-full mt-2\",\n        weekday:\n          \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n        weekdays: \"flex\",\n        ...classNames,\n      }}\n      components={{\n        Chevron: ChevronComponent,\n      }}\n      showOutsideDays={showOutsideDays}\n      {...props}\n    />\n  );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n",
      "type": "registry:component"
    }
  ],
  "version": "0.2.1",
  "stability": "stable"
}
