{
  "$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",
    "tailwind-merge"
  ],
  "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/modal",
    "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 'tailwind-merge'\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 { ModalContent } from './modal'\nimport { PopoverContent } 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    <ModalContent 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    </ModalContent>\n  ) : (\n    <PopoverContent\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    </PopoverContent>\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-fg text-muted-fg hover:text-fg focus-visible:text-fg',\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"
}