{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "date-picker",
  "title": "date-picker",
  "description": "date-picker",
  "dependencies": [
    "@heroicons/react",
    "@internationalized/date",
    "react-aria-components",
    "cn"
  ],
  "registryDependencies": [
    "https://intentui.com/r/use-mobile",
    "https://intentui.com/r/primitive",
    "https://intentui.com/r/calendar",
    "https://intentui.com/r/date-field",
    "https://intentui.com/r/field",
    "https://intentui.com/r/input",
    "https://intentui.com/r/dialog",
    "https://intentui.com/r/popover",
    "https://intentui.com/r/range-calendar"
  ],
  "files": [
    {
      "path": "src/components/ui/date-picker.tsx",
      "content": "\"use client\"\n\nimport { CalendarDaysIcon } from \"@heroicons/react/24/outline\"\nimport type { DateDuration } from \"@internationalized/date\"\nimport { Button } from \"react-aria-components/Button\"\nimport type { DateValue } from \"react-aria-components/DateField\"\nimport {\n  DatePicker as DatePickerPrimitive,\n  type DatePickerProps as DatePickerPrimitiveProps,\n} from \"react-aria-components/DatePicker\"\nimport type { GroupProps } from \"react-aria-components/Group\"\nimport type { PopoverProps } from \"react-aria-components/Popover\"\nimport { twJoin } from \"cn\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cx } from \"@/lib/primitive\"\nimport { Calendar } from \"./calendar\"\nimport { DateInput } from \"./date-field\"\nimport { fieldStyles } from \"./field\"\nimport { InputGroup } from \"./input\"\nimport { Dialog } from \"./dialog\"\nimport { Popover } from \"./popover\"\nimport { RangeCalendar } from \"./range-calendar\"\n\nexport interface DatePickerProps<T extends DateValue> extends DatePickerPrimitiveProps<T> {\n  popover?: Omit<PopoverProps, \"children\">\n}\n\nexport function DatePicker<T extends DateValue>({\n  className,\n  children,\n  popover,\n  ...props\n}: DatePickerProps<T>) {\n  return (\n    <DatePickerPrimitive\n      data-slot=\"control\"\n      className={cx(fieldStyles({ className: \"group\" }), className)}\n      {...props}\n    >\n      {(values) => (\n        <>\n          {typeof children === \"function\" ? children(values) : children}\n          <DatePickerOverlay {...popover} />\n        </>\n      )}\n    </DatePickerPrimitive>\n  )\n}\n\nexport interface DatePickerOverlayProps extends Omit<PopoverProps, \"children\"> {\n  range?: boolean\n  visibleDuration?: DateDuration\n  pageBehavior?: \"visible\" | \"single\"\n}\n\nexport function DatePickerOverlay({\n  visibleDuration = { months: 1 },\n  pageBehavior = \"visible\",\n  placement = \"bottom\",\n  range,\n  ...props\n}: DatePickerOverlayProps) {\n  const isMobile = useIsMobile()\n\n  return isMobile ? (\n    <Dialog closeButton={false}>\n      <div className=\"flex justify-center p-6\">\n        {range ? (\n          <RangeCalendar pageBehavior={pageBehavior} visibleDuration={visibleDuration} />\n        ) : (\n          <Calendar />\n        )}\n      </div>\n    </Dialog>\n  ) : (\n    <Popover\n      placement={placement}\n      arrow={false}\n      className={twJoin(\n        \"flex min-w-auto max-w-none snap-x justify-center p-4 sm:min-w-[16.5rem] sm:p-2 sm:pt-3\",\n        visibleDuration?.months === 1 ? \"sm:max-w-2xs\" : \"sm:max-w-none\"\n      )}\n      {...props}\n    >\n      {range ? (\n        <RangeCalendar pageBehavior={pageBehavior} visibleDuration={visibleDuration} />\n      ) : (\n        <Calendar />\n      )}\n    </Popover>\n  )\n}\n\nexport function DatePickerTrigger({ className, ...props }: GroupProps) {\n  return (\n    <InputGroup className={cx(\"*:data-[slot=control]:w-full\", className)} {...props}>\n      <DateInput />\n      <Button\n        data-slot=\"date-picker-trigger\"\n        className={twJoin(\n          \"touch-target grid place-content-center outline-hidden\",\n          \"pressed:text-foreground text-muted-foreground hover:text-foreground focus-visible:text-foreground\",\n          \"px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2.5)-1px)] sm:px-[calc(--spacing(3)-1px)] sm:py-[calc(--spacing(1.5)-1px)]\",\n          \"*:size-5 sm:*:size-4\"\n        )}\n      >\n        <CalendarDaysIcon />\n      </Button>\n    </InputGroup>\n  )\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}