{"version":3,"sources":["../src/index.ts","../src/accordion/Accordion.tsx","../src/lib/cn.ts","../src/alert/Alert.tsx","../src/alert/constants.ts","../src/alert-box/AlertBox.tsx","../src/audio-player/AudioPlayer.tsx","../src/avatar/Avatar.tsx","../src/badge/Badge.tsx","../src/beta-badge/BetaBadge.tsx","../src/bookmark-tabs/BookmarkTabs.tsx","../src/box-option-selector/BoxOptionSelector.tsx","../src/switch/Switch.tsx","../src/label/Label.tsx","../src/error-message/ErrorMessage.tsx","../src/breadcrumbs/Breadcrumb.tsx","../src/breadcrumbs/Breadcrumbs.tsx","../src/button/Button.tsx","../src/button/buttonVariants.ts","../src/button-group/ButtonGroup.tsx","../src/button-group/buttonGroupVariants.ts","../src/buttons-group-label/ButtonsGroupLabel.tsx","../src/calendar/Calendar.tsx","../src/icon-button/iconButtonVariants.ts","../src/calendar/calendarStyles.ts","../src/card/Card.tsx","../src/check-list/CheckList.tsx","../src/check-list/listVariants.ts","../src/checkbox/BaseCheckbox.tsx","../src/checkbox/Checkbox.tsx","../src/field-error-message/FieldErrorMessage.tsx","../src/checkbox/CheckboxGroup.tsx","../src/scroll-area/ScrollArea.tsx","../src/comming-soon-badge/CommingSoonBadge.tsx","../src/tooltip/Tooltip.tsx","../src/lib/utils.ts","../src/tooltip/useTooltipTouch.ts","../src/status-badge/StatusBadge.tsx","../src/copy-icon/CopyIcon.tsx","../src/icon-button/IconButton.tsx","../src/copy-link-button/CopyLinkButton.tsx","../src/hooks/use-copy-to-clipboard.ts","../src/lib/copy-to-clipboard.ts","../src/copy-string/CopyString.tsx","../src/counter/Counter.tsx","../src/data-table/DataTable.tsx","../src/table/Table.tsx","../src/loading-bar/LoadingBar.tsx","../src/dialog/Dialog.tsx","../src/hooks/use-scroll-to-top.ts","../src/hooks/use-abort-controller.ts","../src/hooks/use-accordion-state.ts","../src/hooks/use-click-escape.ts","../src/hooks/use-event.ts","../src/hooks/use-combined-ref.ts","../src/hooks/use-is-mobile.ts","../src/hooks/use-is-mounted.ts","../src/hooks/use-load-more.ts","../src/hooks/use-modal-controls.ts","../src/hooks/use-modal-with-history-controls.ts","../src/hooks/use-timeout-ref.ts","../src/hooks/use-outside-click.ts","../src/hooks/use-screen-resize.ts","../src/hooks/use-lock-body-scroll.ts","../src/hooks/use-scroll-frame-into-view.ts","../src/lib/runtimeSettings.ts","../src/hooks/use-scrollable-area.ts","../src/hooks/use-debounce.ts","../src/hooks/use-debounced-function.ts","../src/hooks/use-previous.ts","../src/hooks/use-pagination.ts","../src/storage/AbstractStorage.ts","../src/storage/safeStorage.ts","../src/storage/utils.ts","../src/storage/SessionStorage.ts","../src/hooks/use-search-input.ts","../src/hooks/use-sticky-stuck.ts","../src/hooks/use-switch-section-active.ts","../src/hooks/use-countdown.ts","../src/hooks/use-timeout.ts","../src/hooks/use-hover.ts","../src/hooks/use-key-down.ts","../src/hooks/use-iframe-focus-trap-fallback.ts","../src/hooks/use-reset-after-request-status.ts","../src/hooks/use-promised-modal-controls.ts","../src/hooks/use-is-form-touched.ts","../src/dialog/ConfirmationDialog.tsx","../src/default-select-trigger/DefaultSelectTrigger.tsx","../src/dropdown-button/DropdownButton.tsx","../src/dropdown-menu/DropdownMenu.tsx","../src/dropdown-menu/DropdownMenuItemContent.tsx","../src/dropdown-menu/CheckboxDropdownGroup.tsx","../src/dropdown-menu/CheckboxDropdownMultiGroup.tsx","../src/dropdown-menu/CustomCheckboxDropdownGroup.tsx","../src/empty/Empty.tsx","../src/empty/EmptyHeader.tsx","../src/empty/EmptyTitle.tsx","../src/empty/EmptyDescription.tsx","../src/empty/EmptyContent.tsx","../src/empty/EmptyMedia.tsx","../src/empty-section-placeholder/EmptySectionPlaceholder.tsx","../src/halo-icon/HaloIcon.tsx","../src/halo-icon/constants.ts","../src/external-link/ExternalLink.tsx","../src/expandable-content/ExpandableContent.tsx","../src/collapsible/Collapsible.tsx","../src/file-input-button/FileInputButton.tsx","../src/form-box/Content.tsx","../src/form-box/Header.tsx","../src/form-box/Root.tsx","../src/form-box/SubHeader.tsx","../src/form-box/index.ts","../src/framed-icon/FramedIcon.tsx","../src/help-tooltip/HelpTooltip.tsx","../src/svg-icon/SvgIcon.tsx","../src/info-box/InfoBox.tsx","../src/image/Image.tsx","../src/input-otp/InputOTP.tsx","../src/input-otp/InputOTPContext.ts","../src/input-otp/useInputOTP.ts","../src/input-otp/useInputOTPSlot.ts","../src/icons-dropdown/IconsDropdown.tsx","../src/locales/bg/translation.json","../src/locales/ca/translation.json","../src/locales/cs/translation.json","../src/locales/de/translation.json","../src/locales/el/translation.json","../src/locales/en/translation.json","../src/locales/es/translation.json","../src/locales/et/translation.json","../src/locales/fr/translation.json","../src/locales/hu/translation.json","../src/locales/it/translation.json","../src/locales/ko/translation.json","../src/locales/nl/translation.json","../src/locales/pl/translation.json","../src/locales/pt/translation.json","../src/locales/ro/translation.json","../src/locales/ru/translation.json","../src/locales/uk/translation.json","../src/i18n/resources.ts","../src/large-modal/LargeModal.tsx","../src/drawer/Drawer.tsx","../src/lib/device.ts","../src/learn-more-button/LearnMoreButton.tsx","../src/link/Link.tsx","../src/image-full-screen-view/ImageFullScreenView.tsx","../src/modal/Modal.tsx","../src/modal-loader/ModalLoader.tsx","../src/circular-loader/CircularLoader.tsx","../src/numbered-list/NumberedList.tsx","../src/overlay-loader/OverlayLoader.tsx","../src/pagination/Pagination.tsx","../src/legacy-fields/select/Select.tsx","../src/legacy-fields/select/components.tsx","../src/legacy-fields/select/MultiSelect.tsx","../src/legacy-fields/select/InfinitySelect.tsx","../src/popover/Popover.tsx","../src/popover/PopoverWithTooltip.tsx","../src/radio/Radio.tsx","../src/radio-group/RadioGroup.tsx","../src/radio/useRadioOptions.ts","../src/radio/RadioWithBorder.tsx","../src/radio-cards-group/RadioCardsGroup.tsx","../src/rating-progress/RatingProgress.tsx","../src/rating-radio-group/RatingRadioGroupContext.tsx","../src/rating-radio-group/RatingRadioGroupItem.tsx","../src/rating-radio-group/RatingRadioGroupLegend.tsx","../src/rating-radio-group/RatingRadioGroupList.tsx","../src/rating-radio-group/useRatingPreview.ts","../src/rating-radio-group/RatingRadioGroup.tsx","../src/rating-stars/RatingStars.tsx","../src/rotate-arrow/RotateArrow.tsx","../src/search-button/SearchButton.tsx","../src/search-input/SearchInput.tsx","../src/legacy-fields/input/Input.tsx","../src/search-input/DebouncedSearchInput.tsx","../src/section-tag/sectionTagVariants.ts","../src/section-tag/SectionTag.tsx","../src/section-tag/constants.ts","../src/section/Section.tsx","../src/section/constants.ts","../src/separator/Separator.tsx","../src/section-group/SectionGroup.tsx","../src/sheet/Sheet.tsx","../src/sidebar/Sidebar.tsx","../src/skeleton/Skeleton.tsx","../src/sidebar/SidebarContext.ts","../src/sidebar/useSidebarMenuButton.ts","../src/sidebar/SidebarMenuButtonContext.ts","../src/sidebar/SidebarIcon.tsx","../src/sidebar/useSidebar.ts","../src/sidebar/getSidebarState.ts","../src/signature-canvas/SignatureCanvas.tsx","../src/carousel/Carousel.tsx","../src/carousel/CarouselControls.tsx","../src/carousel/CarouselContext.tsx","../src/carousel/CarouselRoot.tsx","../src/carousel/CarouselSlide.tsx","../src/carousel/CarouselTrack.tsx","../src/carousel/CarouselViewport.tsx","../src/slider/Slider.tsx","../src/small-grid-single-item/SmallGridSingleItem.tsx","../src/sorting-action/SortingAction.tsx","../src/status-button/StatusButton.tsx","../src/status-box/StatusBox.tsx","../src/stepper/Stepper.tsx","../src/switch-blocks/SwitchBlocks.tsx","../src/switch-group/SwitchGroup.tsx","../src/tabs/Tabs.tsx","../src/tabbed-section/TabbedSection.tsx","../src/table-filter/TableFilter.tsx","../src/table-filter/DateTableFilter.tsx","../src/table-loader/TableLoader.tsx","../src/table-placeholder/TablePlaceholder.tsx","../src/timeline/Timeline.tsx","../src/timeline/TimelineContext.ts","../src/toaster/index.ts","../src/toaster/useUpdateToast.ts","../src/toggle-group/ToggleGroup.tsx","../src/toggle-group/style.ts","../src/toggle-group/Toggles.tsx","../src/three-dots-loader/ThreeDotsLoader.tsx","../src/uploaded-files-list/UploadedFilesList.tsx","../src/vertical-tabs/VerticalTabs.tsx","../src/video-modal/VideoModal.tsx","../src/video-player/VideoPlayer.tsx","../src/webcam/Webcam.tsx","../src/lib/compression.ts","../src/webcam/useErrorHandler.ts","../src/webcam/utils.ts","../src/mobile-webcam/MobileWebcam.tsx","../src/mobile-webcam/DeviceCamera/DeviceCamera.tsx","../src/wide-button/WideButton.tsx","../src/responsive-sheet/ResponsiveSheet.tsx","../src/responsive-dropdown/ResponsiveDropdown.tsx","../src/fields/input/Input.tsx","../src/fields/input/useInputValueState.ts","../src/fields/_fieldset/Fieldset.tsx","../src/fields/copy-input/CopyInput.tsx","../src/fields/phone-input/PhoneInput.tsx","../src/fields/_select-internals/SelectFieldShell.tsx","../src/fields/_select-internals/SelectMenu.tsx","../src/fields/_select-internals/utils.ts","../src/fields/_select-internals/slots/DefaultOption.tsx","../src/fields/_select-internals/SelectMenuPanel.tsx","../src/fields/_select-internals/SelectSearchInput.tsx","../src/fields/_select-internals/SelectTrigger.tsx","../src/fields/_select-internals/ComboboxTrigger.tsx","../src/fields/_select-internals/useSelectIds.ts","../src/fields/_select-internals/useSelectMenuState.ts","../src/fields/_select-internals/useSelectState.ts","../src/fields/_select-internals/slots/DefaultMultiValueChip.tsx","../src/fields/_select-internals/slots/DefaultControl.tsx","../src/fields/_select-internals/slots/StaticControl.tsx","../src/fields/_select-internals/slots/DefaultMenuList.tsx","../src/fields/_select-internals/slots/DefaultCreateOption.tsx","../src/fields/_select-internals/slots/mergeComponents.ts","../src/fields/select/Select.tsx","../src/fields/select/useSetCorrectOptionIfThereIsOnlyValue.ts","../src/fields/phone-input/utils.ts","../src/fields/creatable-select/CreatableSelect.tsx","../src/fields/multi-select/MultiSelect.tsx","../src/fields/creatable-multi-select/CreatableMultiSelect.tsx","../src/fields/infinite-scroll-select/InfiniteScrollSelect.tsx","../src/fields/infinite-scroll-select/VirtualMenuList.tsx","../src/fields/infinite-scroll-select/InfiniteScrollContext.tsx","../src/fields/infinite-scroll-multi-select/InfiniteScrollMultiSelect.tsx","../src/fields/select-checkboxes/SelectCheckboxes.tsx","../src/fields/select-checkboxes/VisualCheckbox.tsx","../src/fields/select-checkboxes/SelectCheckboxOption.tsx","../src/fields/select-checkboxes/CountTrigger.tsx","../src/fields/select-checkboxes/SelectAllRow.tsx","../src/fields/textarea/Textarea.tsx","../src/fields/textarea/useTextareaValueState.ts","../src/fields/datepicker/Datepicker.tsx","../src/airbnb-fields/datepicker/useDatePickerWheel.ts","../src/airbnb-fields/datepicker/datePicker.utils.ts","../src/airbnb-fields/datepicker/DatePickerWheelColumn.tsx","../src/airbnb-fields/datepicker/DatePickerContent.tsx","../src/fields/datepicker/useMonthCombobox.ts","../src/fields/date-range-picker/DateRangePicker.tsx","../src/fields/date-range-picker/isDayBlocked.ts","../src/fields/date-range-picker/dateUtils.ts","../src/fields/date-range-picker/createDisabledMatchers.ts","../src/fields/date-range-picker/hooks/useRangeValue.ts","../src/fields/date-range-picker/hooks/useRangeTextInputs.ts","../src/fields/date-range-picker/utils/inputFormat.ts","../src/fields/date-range-picker/hooks/useRangeMonthSync.ts","../src/fields/date-range-picker/utils/rangeSelection.ts","../src/fields/date-range-picker/components/DateRangeInputs.tsx","../src/fields/date-range-picker/components/DateRangeCalendar.tsx","../src/fields/date-range-picker/components/DateRangePopover.tsx","../src/fields/date-range-picker/useValidateDates.ts","../src/fields/single-date-picker/SingleDatePicker.tsx","../src/fields/single-date-picker/hooks/useSingleDateValue.ts","../src/fields/single-date-picker/hooks/useSingleDateText.ts","../src/fields/single-date-picker/components/SingleDateInput.tsx","../src/fields/single-date-picker/components/SingleDateCalendar.tsx","../src/fields/time-picker/TimePicker.tsx","../src/fields/file-input/FileInput.tsx","../src/fields/select-icons-box/SelectIconsBox.tsx","../src/lib/breakpoints.ts","../src/lib/toastResponseError.tsx","../src/lib/getErrorMessage.ts","../src/legacy-fields/textarea/Textarea.tsx","../src/airbnb-fields/datepicker/DatePicker.tsx","../src/airbnb-fields/field-trigger/FieldTrigger.tsx","../src/airbnb-fields/field-helper-text/FieldHelperText.tsx","../src/airbnb-fields/date-range-picker/DateRangePicker.tsx","../src/airbnb-fields/date-range-picker/DateRangePopover.tsx","../src/airbnb-fields/input/Input.tsx","../src/airbnb-fields/phone-field/PhoneField.tsx","../src/airbnb-fields/select/Select.tsx","../src/airbnb-fields/select/SelectDesktopMenu.tsx","../src/airbnb-fields/select/SelectDesktopContent.tsx","../src/airbnb-fields/select/constants.ts","../src/airbnb-fields/select/select.utils.ts","../src/airbnb-fields/select/SelectMobileWheel.tsx","../src/airbnb-fields/select/SelectMobileContent.tsx","../src/airbnb-fields/select/SelectTrigger.tsx","../src/airbnb-fields/select/useDesktopSelect.ts","../src/airbnb-fields/select/useMobileSelectWheel.ts","../src/airbnb-fields/select/useSelectIds.ts","../src/airbnb-fields/searchable-select/SearchableSelect.tsx","../src/airbnb-fields/search-input/SearchInput.tsx","../src/airbnb-fields/switch/Switch.tsx","../src/airbnb-fields/time-picker/TimePicker.tsx"],"sourcesContent":["export * from './accordion';\nexport * from './alert';\nexport * from './alert-box';\nexport * from './audio-player';\nexport * from './avatar';\nexport * from './badge';\nexport * from './beta-badge';\nexport * from './bookmark-tabs';\nexport * from './box-option-selector';\nexport * from './breadcrumbs';\nexport * from './button';\nexport * from './button-group';\nexport * from './buttons-group-label';\nexport * from './calendar';\nexport * from './card';\nexport * from './check-list';\nexport * from './checkbox';\nexport * from './comming-soon-badge';\nexport * from './copy-icon';\nexport * from './copy-link-button';\nexport * from './copy-string';\nexport * from './counter';\nexport * from './data-table';\nexport * from './dialog';\nexport * from './default-select-trigger';\nexport * from './dropdown-button';\nexport * from './dropdown-menu';\nexport * from './empty';\nexport * from './empty-section-placeholder';\nexport * from './external-link';\nexport * from './expandable-content';\nexport * from './file-input-button';\nexport * from './form-box';\nexport * from './framed-icon';\nexport * from './halo-icon';\nexport * from './tooltip';\nexport * from './help-tooltip';\nexport * from './svg-icon';\nexport * from './icon-button';\nexport * from './info-box';\nexport * from './image';\nexport * from './input-otp';\nexport * from './icons-dropdown';\nexport * from './i18n';\nexport * from './label';\nexport * from './large-modal';\nexport * from './learn-more-button';\nexport * from './link';\nexport * from './image-full-screen-view';\nexport * from './loading-bar';\nexport * from './modal';\nexport * from './modal-loader';\nexport * from './numbered-list';\nexport * from './overlay-loader';\nexport * from './pagination';\nexport * from './popover';\nexport * from './radio';\nexport * from './radio-cards-group';\nexport * from './radio-group';\nexport * from './rating-progress';\nexport * from './rating-radio-group';\nexport * from './rating-stars';\nexport * from './rotate-arrow';\nexport * from './scroll-area';\nexport * from './search-button';\nexport * from './search-input';\nexport * from './section-tag';\nexport * from './section';\nexport * from './separator';\nexport * from './section-group';\nexport * from './sheet';\nexport * from './sidebar';\nexport * from './signature-canvas';\nexport * from './skeleton';\nexport * from './circular-loader';\nexport * from './collapsible';\nexport * from './carousel';\nexport * from './slider';\nexport * from './small-grid-single-item';\nexport * from './sorting-action';\nexport * from './status-badge';\nexport * from './status-button';\nexport * from './status-box';\nexport * from './stepper';\nexport * from './switch';\nexport * from './switch-blocks';\nexport * from './switch-group';\nexport * from './tabbed-section';\nexport * from './table';\nexport * from './table-filter';\nexport * from './table-loader';\nexport * from './table-placeholder';\nexport * from './tabs';\nexport * from './timeline';\nexport * from './toaster';\nexport * from './toggle-group';\nexport * from './error-message';\nexport * from './three-dots-loader';\nexport * from './uploaded-files-list';\nexport * from './vertical-tabs';\nexport * from './video-modal';\nexport * from './video-player';\nexport * from './webcam';\nexport * from './mobile-webcam';\nexport * from './wide-button';\nexport * from './drawer';\nexport * from './button';\nexport * from './field-error-message';\nexport * from './responsive-sheet';\nexport * from './responsive-dropdown';\nexport * from './fields';\nexport * from './circular-loader';\nexport * from './lib/selector-option';\nexport * from './lib/copy-to-clipboard';\nexport * from './lib/compression';\nexport {toCssSize, isNumeric, scrollToTop, getFileSizeMB} from './lib/utils';\nexport * from './hooks';\nexport {cn} from './lib/cn';\nexport {DEVICE_BREAKPOINTS} from './lib/breakpoints';\nexport {toastResponseError, addSupportEmailToMessage} from './lib/toastResponseError';\nexport {getErrorMessage} from './lib/getErrorMessage';\nimport './i18n';\n\nexport * from './legacy-fields/textarea';\nexport * from './legacy-fields/input';\nexport * from './legacy-fields/select';\nexport * from './airbnb-fields/datepicker';\nexport * from './airbnb-fields/date-range-picker';\nexport * from './airbnb-fields/field-helper-text';\nexport * from './airbnb-fields/field-trigger';\nexport * from './airbnb-fields/input';\nexport * from './airbnb-fields/phone-field';\nexport * from './airbnb-fields/select';\nexport * from './airbnb-fields/searchable-select';\nexport * from './airbnb-fields/search-input';\nexport * from './airbnb-fields/switch';\nexport * from './airbnb-fields/time-picker';\n","import * as React from 'react';\nimport {Minus, Plus} from 'lucide-react';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport {cn} from '../lib/cn';\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({className, ...props}, ref) => (\n  <AccordionPrimitive.Item\n    ref={ref}\n    className={cn(\n      'accordion__item',\n      'rounded-[var(--accordion-item-radius)] border border-solid border-[var(--accordion-item-border)] bg-[var(--accordion-item-bg)] [box-shadow:var(--accordion-item-shadow)] transition-colors duration-200 ease-in-out [border-top-color:var(--accordion-item-divider)] data-[state=open]:bg-[var(--accordion-item-open-bg)] data-[state=closed]:bg-[var(--accordion-item-bg)] data-[state=closed]:hover:bg-[var(--accordion-item-hover-bg)]',\n      className,\n    )}\n    {...props}\n  />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nexport type AccordionTriggerProps = React.ComponentPropsWithoutRef<\n  typeof AccordionPrimitive.Trigger\n> & {\n  openIcon?: React.ReactNode;\n  closedIcon?: React.ReactNode;\n};\n\nconst AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  AccordionTriggerProps\n>(({className, children, openIcon, closedIcon, ...props}, ref) => {\n  const resolvedClosedIcon = closedIcon ?? (\n    <Plus aria-hidden=\"true\" className=\"h-4 w-4\" />\n  );\n  const resolvedOpenIcon = openIcon ?? <Minus aria-hidden=\"true\" className=\"h-4 w-4\" />;\n\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        ref={ref}\n        className={cn(\n          'accordion__trigger',\n          'flex h-auto w-full flex-1 items-center justify-between text-left outline-none transition-colors duration-200',\n          'hover:no-underline disabled:pointer-events-none',\n          'gap-[var(--accordion-trigger-gap)] p-6 text-lg leading-7 text-[var(--accordion-trigger-color)] [font-family:var(--accordion-trigger-font-family)] [font-weight:var(--accordion-trigger-font-weight)] focus-visible:shadow-[var(--accordion-trigger-focus-shadow)] disabled:opacity-[var(--accordion-trigger-disabled-opacity)]',\n          'group',\n          className,\n        )}\n        {...props}\n      >\n        <span className=\"flex-1 text-left\">{children}</span>\n        <div\n          className={cn(\n            'accordion__icon',\n            'ml-auto h-[var(--accordion-icon-size)] w-4 min-w-0 shrink-0 rounded-full p-0.5 text-[var(--accordion-icon-color-closed)] group-data-[state=open]:text-[var(--accordion-icon-color-open)] [&_svg]:h-[var(--accordion-icon-size)] [&_svg]:w-[var(--accordion-icon-size)] [&_svg]:transition-transform [&_svg]:duration-200',\n            'transition-colors duration-200',\n            'relative',\n          )}\n        >\n          <span\n            className={cn(\n              'absolute inset-0 flex items-center justify-center transition-opacity duration-300',\n              'group-data-[state=open]:opacity-0',\n            )}\n            aria-hidden=\"true\"\n          >\n            {resolvedClosedIcon}\n          </span>\n          <span\n            className={cn(\n              'absolute inset-0 flex items-center justify-center transition-opacity duration-300',\n              'opacity-0 group-data-[state=open]:opacity-100',\n            )}\n            aria-hidden=\"true\"\n          >\n            {resolvedOpenIcon}\n          </span>\n        </div>\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  );\n});\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nexport interface AccordionContentProps extends React.ComponentPropsWithoutRef<\n  typeof AccordionPrimitive.Content\n> {\n  contentClassName?: string;\n}\n\nconst AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  AccordionContentProps\n>(({className, contentClassName, children, ...props}, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className={cn(\n      'accordion__content',\n      'transition-all',\n      'data-[state=closed]:animate-accordion-up',\n      'data-[state=open]:animate-accordion-down',\n      'text-[length:var(--accordion-content-font-size)] leading-[var(--accordion-content-line-height)] text-[var(--accordion-content-color)]',\n      // TODO Uncomment the next line when dropdown position is fixed\n      // 'overflow-hidden',\n      className,\n    )}\n    {...props}\n  >\n    <div className={cn('accordion__contentItem px-6 pb-6 pt-2', contentClassName)}>\n      {children}\n    </div>\n  </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport {Accordion, AccordionContent, AccordionItem, AccordionTrigger};\n","import {clsx, type ClassValue} from 'clsx';\nimport {twMerge} from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n  return twMerge(clsx(inputs));\n}\n","import * as React from 'react';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nconst alertVariants = cva(\n  [\n    'relative w-full rounded-[var(--alert-radius)] py-2 pl-2 pr-4 text-sm',\n    '[&>svg+div]:translate-y-[-2px]',\n    '[&>svg]:absolute [&>svg]:left-2 [&>svg]:text-[currentColor]',\n    '[&>svg~*]:pl-6',\n  ],\n  {\n    variants: {\n      variant: {\n        default:\n          'bg-[color-mix(in_hsl,var(--alert-default-text)_10%,transparent)] text-[var(--alert-default-text)]',\n        destructive:\n          'text-[var(--alert-destructive-text)] [&>svg]:text-[var(--alert-destructive-text)]',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nexport const Alert = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({className, variant, ...props}, ref) => (\n  <div\n    ref={ref}\n    role=\"alert\"\n    data-slot=\"alert\"\n    className={cn(alertVariants({variant}), className)}\n    {...props}\n  />\n));\nAlert.displayName = 'Alert';\n\nexport const AlertTitle = React.forwardRef<\n  React.ElementRef<'h5'>,\n  React.ComponentPropsWithoutRef<'h5'>\n>(({className, ...props}, ref) => (\n  <h5\n    ref={ref}\n    data-slot=\"alert-title\"\n    className={cn('mb-1 font-medium leading-none tracking-tight', className)}\n    {...props}\n  />\n));\nAlertTitle.displayName = 'AlertTitle';\n\nexport const AlertDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({className, ...props}, ref) => (\n  <div\n    ref={ref}\n    data-slot=\"alert-description\"\n    className={cn('text-sm [&_p]:leading-relaxed', className)}\n    {...props}\n  />\n));\nAlertDescription.displayName = 'AlertDescription';\n","const ALERT_BOX_VARIANTS = {\n  primary: 'primary',\n  secondary: 'secondary',\n} as const;\n\ntype AlertBoxVariant = (typeof ALERT_BOX_VARIANTS)[keyof typeof ALERT_BOX_VARIANTS];\n\nexport {ALERT_BOX_VARIANTS};\nexport type {AlertBoxVariant};\n","import * as React from 'react';\nimport {AlertCircle, Check, TriangleAlert, XCircle} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport enum AlertType {\n  INFO = 'INFO',\n  WARNING = 'WARNING',\n  SUCCESS = 'SUCCESS',\n  ERROR = 'ERROR',\n  LIGHT = 'LIGHT',\n}\n\nexport enum AlertSize {\n  S = 'S',\n  M = 'M',\n  L = 'L',\n}\n\nconst getIcon = (type: AlertType) => {\n  const key = type.toLowerCase();\n  const iconProps = {\n    className: 'relative',\n    stroke: `var(--alert-box-${key}-icon)`,\n  };\n  return {\n    [AlertType.INFO]: <AlertCircle {...iconProps} />,\n    [AlertType.WARNING]: <TriangleAlert {...iconProps} />,\n    [AlertType.ERROR]: <XCircle {...iconProps} />,\n    [AlertType.LIGHT]: null,\n    [AlertType.SUCCESS]: <Check {...iconProps} />,\n  }[type];\n};\n\nconst sizeClasses: Record<AlertSize, string> = {\n  [AlertSize.S]: 'px-3 py-3 text-sm font-medium items-start',\n  [AlertSize.M]: 'p-4 text-base font-medium items-start',\n  [AlertSize.L]: 'px-6 py-5 items-start',\n};\n\nconst typeStyles: Record<AlertType, string> = {\n  [AlertType.INFO]:\n    'border-[color:var(--alert-box-info-border)] bg-[var(--alert-box-info-bg)] text-[color:var(--alert-box-info-text)]',\n  [AlertType.WARNING]:\n    'border-[color:var(--alert-box-warning-border)] bg-[var(--alert-box-warning-bg)] text-[color:var(--alert-box-warning-text)]',\n  [AlertType.ERROR]:\n    'border-[color:var(--alert-box-error-border)] bg-[var(--alert-box-error-bg)] text-[color:var(--alert-box-error-text)]',\n  [AlertType.SUCCESS]:\n    'border-[color:var(--alert-box-success-border)] bg-[var(--alert-box-success-bg)] text-[color:var(--alert-box-success-text)]',\n  [AlertType.LIGHT]:\n    'border-[color:var(--alert-box-light-border)] bg-[var(--alert-box-light-bg)] text-[color:var(--alert-box-light-text)]',\n};\n\nexport interface AlertBoxProps {\n  children: React.ReactNode;\n  type?: AlertType;\n  size?: AlertSize;\n  withIcon?: boolean;\n  className?: string;\n}\n\nexport function AlertBox({\n  children,\n  className = '',\n  withIcon = true,\n  size = AlertSize.L,\n  type = AlertType.INFO,\n}: AlertBoxProps) {\n  return (\n    <div\n      data-slot=\"alert-box\"\n      className={cn(\n        'flex gap-3 rounded-[var(--alert-box-radius)] border-solid border-[length:var(--alert-box-border-width)] [&_svg]:h-5 [&_svg]:w-5 [&_svg]:shrink-0',\n        sizeClasses[size],\n        typeStyles[type],\n        className,\n      )}\n    >\n      {withIcon && getIcon(type)}\n      <div className=\"max-w-4xl text-left font-medium lg:max-w-full\">{children}</div>\n    </div>\n  );\n}\n\nAlertBox.displayName = 'AlertBox';\n\nexport const AlertTypes = AlertType;\nexport const AlertSizes = AlertSize;\n","import * as React from 'react';\nimport {useCallback, useEffect, useRef, useState} from 'react';\nimport {Pause, Play} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nfunction formatTime(seconds: number): string {\n  const mins = Math.floor(seconds / 60);\n  const secs = Math.floor(seconds % 60);\n  return `${String(mins).padStart(2, '0')}:${String(secs).padStart(2, '0')}`;\n}\n\nexport interface AudioPlayerProps {\n  src: string;\n  compact?: boolean;\n  className?: string;\n}\n\nexport function AudioPlayer({src, compact, className}: AudioPlayerProps) {\n  const audioRef = useRef<HTMLAudioElement>(null);\n  const progressRef = useRef<HTMLDivElement>(null);\n  const [isPlaying, setIsPlaying] = useState(false);\n  const [progress, setProgress] = useState(0);\n  const [duration, setDuration] = useState(0);\n  const [currentTime, setCurrentTime] = useState(0);\n\n  useEffect(() => {\n    const audio = audioRef.current;\n    if (!audio) return;\n\n    const onLoadedMetadata = () => setDuration(audio.duration);\n\n    const onTimeUpdate = () => {\n      setCurrentTime(audio.currentTime);\n      setProgress(audio.duration ? (audio.currentTime / audio.duration) * 100 : 0);\n    };\n\n    const onEnded = () => {\n      setIsPlaying(false);\n      setProgress(0);\n      setCurrentTime(0);\n    };\n\n    audio.addEventListener('loadedmetadata', onLoadedMetadata);\n    audio.addEventListener('timeupdate', onTimeUpdate);\n    audio.addEventListener('ended', onEnded);\n\n    return () => {\n      audio.removeEventListener('loadedmetadata', onLoadedMetadata);\n      audio.removeEventListener('timeupdate', onTimeUpdate);\n      audio.removeEventListener('ended', onEnded);\n    };\n  }, [src]);\n\n  const togglePlayPause = useCallback(() => {\n    const audio = audioRef.current;\n    if (!audio) return;\n\n    if (isPlaying) {\n      audio.pause();\n    } else {\n      void audio.play();\n    }\n\n    setIsPlaying(!isPlaying);\n  }, [isPlaying]);\n\n  const handleSeek = useCallback(\n    (event: React.MouseEvent<HTMLDivElement>) => {\n      const audio = audioRef.current;\n      const bar = progressRef.current;\n      if (!audio || !bar || !duration) return;\n\n      const rect = bar.getBoundingClientRect();\n      const ratio = Math.max(0, Math.min(1, (event.clientX - rect.left) / rect.width));\n      audio.currentTime = ratio * duration;\n    },\n    [duration],\n  );\n\n  return (\n    <div data-slot=\"audio-player\" className={cn('flex items-center gap-2', className)}>\n      <audio ref={audioRef} src={src} preload=\"metadata\" />\n      <button\n        type=\"button\"\n        className={cn(\n          'inline-flex items-center justify-center rounded-[var(--audio-player-button-radius)] bg-[var(--audio-player-button-bg)] hover:bg-[var(--audio-player-button-hover-bg)] [&_svg]:text-[var(--audio-player-icon-color)]',\n          compact ? 'h-6 min-w-6 p-1' : 'h-8 min-w-8 p-1.5',\n        )}\n        onClick={togglePlayPause}\n      >\n        {isPlaying ? (\n          <Pause className={cn(compact ? 'h-2.5 w-2.5' : 'h-3 w-3', 'fill-current')} />\n        ) : (\n          <Play className={cn(compact ? 'h-2.5 w-2.5' : 'h-3 w-3', 'fill-current')} />\n        )}\n      </button>\n      {!compact && (\n        <>\n          <div\n            ref={progressRef}\n            className=\"h-1 flex-1 cursor-pointer overflow-hidden rounded-full bg-[var(--audio-player-track-bg)]\"\n            onClick={handleSeek}\n          >\n            <div\n              className=\"h-full bg-[var(--audio-player-progress-bg)] transition-all duration-100 ease-linear\"\n              style={{width: `${progress}%`}}\n            />\n          </div>\n          <span className=\"min-w-10 text-xs font-medium text-[var(--audio-player-time-color)]\">\n            {isPlaying || currentTime > 0\n              ? formatTime(currentTime)\n              : formatTime(duration)}\n          </span>\n        </>\n      )}\n    </div>\n  );\n}\n\nAudioPlayer.displayName = 'AudioPlayer';\n","import * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport {cn} from '../lib/cn';\n\nexport interface AvatarProps extends React.ComponentPropsWithoutRef<\n  typeof AvatarPrimitive.Root\n> {\n  src?: string;\n  alt?: string;\n  fallback?: string;\n  size?: 'sm' | 'md' | 'lg';\n  fallbackClassName?: string;\n}\n\nconst sizeClasses = {\n  sm: 'h-8 w-8',\n  md: 'h-10 w-10',\n  lg: 'h-12 w-12',\n};\n\nexport const Avatar = React.forwardRef<\n  React.ElementRef<typeof AvatarPrimitive.Root>,\n  AvatarProps\n>(({className, src, alt, fallback, size = 'md', fallbackClassName, ...props}, ref) => (\n  <AvatarPrimitive.Root\n    ref={ref}\n    data-slot=\"avatar\"\n    className={cn(\n      'relative flex shrink-0 overflow-hidden rounded-full',\n      sizeClasses[size],\n      className,\n    )}\n    {...props}\n  >\n    <AvatarPrimitive.Image\n      src={src}\n      alt={alt}\n      className=\"h-full w-full rounded-full object-cover\"\n    />\n    <AvatarPrimitive.Fallback\n      className={cn(\n        'flex h-full w-full items-center justify-center rounded-full font-medium text-[var(--avatar-fallback-text)]',\n        !fallbackClassName && 'bg-[var(--avatar-fallback-bg)]',\n        fallbackClassName,\n      )}\n    >\n      {fallback}\n    </AvatarPrimitive.Fallback>\n  </AvatarPrimitive.Root>\n));\n\nAvatar.displayName = 'Avatar';\n","import * as React from 'react';\nimport {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nexport const badgeVariants = cva(\n  [\n    'inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden whitespace-nowrap',\n    'rounded-md border px-2.5 py-0.5 text-xs font-semibold',\n    '[&>svg]:pointer-events-none [&>svg]:size-3',\n    'transition-[color,box-shadow]',\n    'focus-visible:border-[var(--chekin-color-brand-blue)] focus-visible:ring-[3px] focus-visible:ring-[rgba(56,91,248,0.2)]',\n    'aria-invalid:border-[var(--chekin-color-brand-red)] aria-invalid:ring-[rgba(255,36,103,0.2)]',\n  ],\n  {\n    variants: {\n      variant: {\n        default:\n          'border-transparent bg-[var(--chekin-color-brand-blue)] text-[var(--chekin-color-white)] [a&]:hover:bg-[var(--chekin-color-brand-blue-hover)]',\n        secondary:\n          'border-transparent bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-brand-navy)] [a&]:hover:bg-[color-mix(in_srgb,var(--chekin-color-surface-input-empty)_90%,transparent)]',\n        destructive:\n          'border-transparent bg-[var(--chekin-color-brand-red)] text-[var(--chekin-color-white)] [a&]:hover:bg-[color-mix(in_srgb,var(--chekin-color-brand-red)_90%,transparent)]',\n        outline:\n          'border-[var(--chekin-color-gray-3)] text-[var(--chekin-color-brand-navy)] [a&]:hover:bg-[var(--chekin-color-surface-input-empty)]',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nexport interface BadgeProps\n  extends React.ComponentProps<'span'>, VariantProps<typeof badgeVariants> {\n  asChild?: boolean;\n}\n\nexport function Badge({className, variant, asChild = false, ...props}: BadgeProps) {\n  const Comp = asChild ? Slot : 'span';\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      className={cn(badgeVariants({variant}), className)}\n      {...props}\n    />\n  );\n}\n\nBadge.displayName = 'Badge';\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\n\nexport interface BetaBadgeProps extends React.ComponentProps<'div'> {\n  text?: string;\n  readOnly?: boolean;\n}\n\nexport function BetaBadge({\n  className,\n  children,\n  text,\n  readOnly = false,\n  ...props\n}: BetaBadgeProps) {\n  const {t} = useTranslation();\n\n  return (\n    <div\n      data-slot=\"beta-badge\"\n      className={cn(\n        'rounded-sm bg-[var(--beta-badge-bg)] px-2 py-1 text-sm/4 font-semibold uppercase text-[var(--beta-badge-text)]',\n        readOnly &&\n          'bg-[var(--beta-badge-readonly-bg)] text-[var(--beta-badge-readonly-text)]',\n        className,\n      )}\n      {...props}\n    >\n      {text || t('beta')}\n      {children}\n    </div>\n  );\n}\n\nBetaBadge.displayName = 'BetaBadge';\n","import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nexport const bookmarkTabsListVariants = cva(\n  'inline-flex items-center justify-center rounded-md p-1 text-[var(--chekin-color-gray-1)]',\n  {\n    variants: {\n      variant: {\n        default: [\n          'relative h-auto w-full gap-1 bg-transparent p-0',\n          'before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-[var(--chekin-border-default)]',\n        ],\n        material: [\n          'relative h-auto w-full gap-1 bg-transparent p-0',\n          'before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-[var(--chekin-border-default)]',\n        ],\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nexport const bookmarkTabsTriggerVariants = cva(\n  [\n    'inline-flex items-center justify-center whitespace-nowrap transition-all',\n    'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--chekin-color-brand-blue)] focus-visible:ring-offset-2',\n    'disabled:pointer-events-none disabled:opacity-50',\n  ],\n  {\n    variants: {\n      variant: {\n        default: [\n          'overflow-hidden rounded-lg rounded-b-none border-x border-t border-[var(--chekin-border-default)]',\n          'bg-[var(--chekin-color-surface-input-empty)] px-4 py-2 text-base font-semibold text-[var(--chekin-color-gray-1)]',\n          'data-[state=active]:z-10 data-[state=active]:cursor-default data-[state=active]:bg-[var(--chekin-color-white)]',\n          'data-[state=active]:text-[var(--chekin-color-brand-navy)] data-[state=active]:shadow-none',\n          'hover:text-[var(--chekin-color-brand-navy)]',\n        ],\n        material: [\n          'rounded-none border-0 bg-transparent px-4 py-2 text-base font-medium text-[var(--chekin-color-gray-1)]',\n          'hover:text-[var(--chekin-color-brand-blue)]',\n          'data-[state=active]:border-b-[3px] data-[state=active]:border-[var(--chekin-color-brand-blue)]',\n          'data-[state=active]:bg-transparent data-[state=active]:font-semibold data-[state=active]:text-[var(--chekin-color-brand-blue)]',\n        ],\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nexport interface BookmarkTabsListProps\n  extends\n    React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n    VariantProps<typeof bookmarkTabsListVariants> {}\n\nexport const BookmarkTabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  BookmarkTabsListProps\n>(({className, variant, ...props}, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    data-slot=\"bookmark-tabs-list\"\n    className={cn(bookmarkTabsListVariants({variant}), className)}\n    {...props}\n  />\n));\nBookmarkTabsList.displayName = 'BookmarkTabsList';\n\nexport interface BookmarkTabsTriggerProps\n  extends\n    React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n    VariantProps<typeof bookmarkTabsTriggerVariants> {}\n\nexport const BookmarkTabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  BookmarkTabsTriggerProps\n>(({className, variant, ...props}, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    data-slot=\"bookmark-tabs-trigger\"\n    className={cn(bookmarkTabsTriggerVariants({variant}), className)}\n    {...props}\n  />\n));\nBookmarkTabsTrigger.displayName = 'BookmarkTabsTrigger';\n","import {forwardRef, useEffect, useState} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\nimport {Switch} from '../switch';\n\nexport interface BoxOptionSelectorSwitchProps {\n  value: string;\n}\n\nexport interface BoxOptionSelectorProps {\n  id: string;\n  title: string;\n  description: string;\n  value: string;\n  switch?: BoxOptionSelectorSwitchProps;\n  onChange: (value: string) => void;\n  disabled?: boolean;\n  selectedValue: string;\n  optionalLabel?: string;\n}\n\nexport const BoxOptionSelector = forwardRef<HTMLDivElement, BoxOptionSelectorProps>(\n  (\n    {\n      id,\n      title,\n      description,\n      value,\n      switch: switchProps,\n      onChange,\n      disabled = false,\n      selectedValue,\n      optionalLabel,\n    },\n    ref,\n  ) => {\n    const {t} = useTranslation();\n    const [isSwitchActive, setIsSwitchActive] = useState(false);\n\n    const isSelected = switchProps?.value === selectedValue || value === selectedValue;\n\n    const handleClick = () => {\n      if (disabled) return;\n      onChange(isSwitchActive ? (switchProps?.value ?? value) : value);\n    };\n\n    const handleSwitchChange = (checked: boolean) => {\n      if (disabled) return;\n      setIsSwitchActive(checked);\n      onChange(checked ? (switchProps?.value ?? value) : value);\n    };\n\n    useEffect(() => {\n      setIsSwitchActive(selectedValue === switchProps?.value);\n    }, [selectedValue, switchProps?.value]);\n\n    return (\n      <div\n        ref={ref}\n        data-slot=\"box-option-selector\"\n        className={cn(\n          'flex min-h-[116px] w-full max-w-[400px] cursor-pointer flex-col gap-4 rounded-lg border border-[var(--box-option-border)] bg-[var(--box-option-bg)] p-4 transition-all duration-200 hover:bg-[var(--box-option-hover-bg)]',\n          isSelected &&\n            'border-[var(--box-option-selected-border)] bg-[var(--box-option-selected-bg)] hover:bg-[var(--box-option-selected-bg)]',\n          disabled && 'cursor-not-allowed opacity-50',\n        )}\n        onClick={handleClick}\n      >\n        <div className=\"flex w-full items-center justify-between gap-5\">\n          <h3 className=\"whitespace-nowrap text-base font-semibold leading-6\">{title}</h3>\n          {switchProps && isSelected && (\n            <div\n              onClick={event => event.stopPropagation()}\n              className=\"flex items-center gap-2\"\n            >\n              <Switch\n                id={`optional-${id}`}\n                value={isSwitchActive}\n                disabled={disabled}\n                size=\"sm\"\n                onChange={handleSwitchChange}\n              />\n              <span\n                className={cn(\n                  'rounded-3xl px-3 py-1 text-sm font-medium leading-4 mix-blend-multiply',\n                  isSwitchActive\n                    ? 'bg-[var(--chekin-color-surface-pressed)] text-[var(--chekin-color-brand-blue)]'\n                    : 'bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-gray-2)]',\n                )}\n              >\n                {optionalLabel || t('optional')}\n              </span>\n            </div>\n          )}\n        </div>\n        <p className=\"w-full text-sm font-medium leading-4 text-[var(--chekin-color-gray-1)]\">\n          {description}\n        </p>\n      </div>\n    );\n  },\n);\n\nBoxOptionSelector.displayName = 'BoxOptionSelector';\n","import * as React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {Label} from '../label';\nimport {ErrorMessage} from '../error-message';\n\nexport const switchVariants = cva(\n  [\n    'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors',\n    'focus-visible:outline-none focus-visible:shadow-[var(--chekin-shadow-focus)]',\n    'disabled:cursor-not-allowed disabled:opacity-50 aria-busy:cursor-wait aria-busy:opacity-50',\n    'data-[state=checked]:bg-[var(--switch-checked-bg)] data-[state=unchecked]:bg-[var(--switch-unchecked-bg)]',\n  ],\n  {\n    variants: {\n      size: {\n        default: 'h-5 w-10',\n        lg: 'h-5 w-10',\n        sm: 'h-4 w-8',\n      },\n      readOnly: {\n        true: 'cursor-default opacity-100',\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nexport const switchThumbVariants = cva(\n  'pointer-events-none block rounded-full bg-[var(--switch-thumb-bg)] shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0',\n  {\n    variants: {\n      size: {\n        default: 'h-4 w-4 data-[state=checked]:translate-x-5',\n        lg: 'h-4 w-4 data-[state=checked]:translate-x-5',\n        sm: 'h-3 w-3 data-[state=checked]:translate-x-4',\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nexport interface SwitchProps\n  extends\n    Omit<\n      React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>,\n      'onChange' | 'value'\n    >,\n    VariantProps<typeof switchVariants> {\n  onChange?: React.ComponentPropsWithoutRef<\n    typeof SwitchPrimitives.Root\n  >['onCheckedChange'];\n  value?: boolean;\n  loading?: boolean;\n  readOnly?: boolean;\n  label?: React.ReactNode;\n  error?: string;\n  wrapperClassName?: string;\n}\n\nexport const Switch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitives.Root>,\n  SwitchProps\n>(\n  (\n    {\n      className,\n      size,\n      readOnly,\n      loading,\n      onChange,\n      value,\n      id,\n      label,\n      error,\n      wrapperClassName,\n      ...props\n    },\n    ref,\n  ) => {\n    const generatedId = React.useId();\n    const fieldId = id || generatedId;\n    const switchElement = (\n      <SwitchPrimitives.Root\n        ref={ref}\n        className={cn(switchVariants({size, readOnly}), className)}\n        disabled={props.disabled && !readOnly}\n        {...props}\n        id={fieldId}\n        onCheckedChange={readOnly ? undefined : onChange}\n        checked={value}\n        value={String(value)}\n        aria-busy={loading}\n        aria-readonly={readOnly}\n      >\n        <SwitchPrimitives.Thumb className={cn(switchThumbVariants({size}))} />\n      </SwitchPrimitives.Root>\n    );\n\n    if (!label && !error) {\n      return switchElement;\n    }\n\n    return (\n      <>\n        <div className={cn('flex items-center gap-x-3 gap-y-1.5', wrapperClassName)}>\n          {switchElement}\n          {label && (\n            <Label htmlFor={fieldId} className=\"cursor-pointer text-base font-medium\">\n              {label}\n            </Label>\n          )}\n        </div>\n        {error && <ErrorMessage disabled={props.disabled}>{error}</ErrorMessage>}\n      </>\n    );\n  },\n);\n\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n","import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nconst labelVariants = cva(\n  'text-sm font-medium leading-none text-[var(--chekin-color-brand-navy)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70 peer-aria-busy:cursor-wait peer-aria-busy:opacity-70 peer-aria-readonly:cursor-default peer-aria-readonly:opacity-100',\n);\n\nexport type LabelProps = React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n  VariantProps<typeof labelVariants>;\n\nexport const Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  LabelProps\n>(({className, ...props}, ref) => (\n  <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\n\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport {labelVariants};\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type ErrorMessageProps = {\n  children: ReactNode;\n  className?: string;\n  disabled?: boolean;\n};\n\nexport function ErrorMessage({className, children, disabled}: ErrorMessageProps) {\n  return (\n    <div\n      className={cn(\n        'mt-0.5 text-left text-sm font-medium text-[var(--error-message-color)]',\n        disabled && 'opacity-30',\n        className,\n      )}\n    >\n      {children}\n    </div>\n  );\n}\n","import {type ElementType, type ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type BreadcrumbType = {\n  to?: string;\n  hidden?: boolean;\n  current?: boolean;\n  icon?: ReactNode;\n  asLink?: ElementType;\n};\n\nexport type BreadcrumbProps = BreadcrumbType & {\n  className?: string;\n  children: ReactNode;\n};\n\nexport function Breadcrumb({\n  hidden,\n  to,\n  current,\n  icon,\n  className,\n  children,\n  asLink: LinkComponent = 'a',\n}: BreadcrumbProps) {\n  if (hidden) {\n    return null;\n  }\n\n  const isLink = Boolean(to && !current);\n  const contentClassName = cn(\n    'flex items-center gap-2.5 text-sm font-medium text-[var(--breadcrumbs-link-color)]',\n    current && 'font-bold text-[var(--breadcrumbs-current-color)]',\n    isLink && 'transition-opacity hover:opacity-80',\n    className,\n  );\n\n  return (\n    <li className=\"flex gap-2.5\">\n      {isLink ? (\n        <LinkComponent\n          aria-current={current ? 'page' : undefined}\n          className={contentClassName}\n          {...(LinkComponent === 'a' ? {href: to} : {to, href: to})}\n        >\n          {icon ? <span className=\"shrink-0\">{icon}</span> : null}\n          {children}\n        </LinkComponent>\n      ) : (\n        <div aria-current={current ? 'page' : undefined} className={contentClassName}>\n          {icon ? <span className=\"shrink-0\">{icon}</span> : null}\n          {children}\n        </div>\n      )}\n    </li>\n  );\n}\n","import {\n  Children,\n  Fragment,\n  cloneElement,\n  isValidElement,\n  type ReactElement,\n  type ReactNode,\n} from 'react';\nimport {ChevronRight} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport type {BreadcrumbType} from './Breadcrumb';\n\nexport type BreadcrumbsProps = {\n  className?: string;\n  children: ReactNode;\n};\n\nexport function Breadcrumbs({className, children}: BreadcrumbsProps) {\n  const items = Children.toArray(children).filter(child => {\n    if (!isValidElement(child)) {\n      return true;\n    }\n\n    return !(child.props as BreadcrumbType).hidden;\n  }) as ReactElement<BreadcrumbType>[];\n\n  return (\n    <nav className={cn('breadcrumbs', className)} aria-label=\"Breadcrumb\">\n      <ul className=\"m-0 flex list-none flex-wrap items-center gap-3 p-0\">\n        {items.map((child, index) => {\n          const isLastVisibleItem = items.length - 1 === index;\n          const childWithProps = isValidElement(child)\n            ? cloneElement(child, {current: isLastVisibleItem})\n            : child;\n\n          return (\n            <Fragment key={child.key ?? index}>\n              {index > 0 ? (\n                <ChevronRight\n                  aria-hidden=\"true\"\n                  className=\"shrink-0 text-[var(--breadcrumbs-separator-color)]\"\n                  size={16}\n                />\n              ) : null}\n              {childWithProps}\n            </Fragment>\n          );\n        })}\n      </ul>\n    </nav>\n  );\n}\n","import * as React from 'react';\nimport {Slot} from '@radix-ui/react-slot';\nimport {type VariantProps} from 'class-variance-authority';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\nimport {buttonVariants} from './buttonVariants';\n\nexport interface ButtonProps\n  extends\n    React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n  loading?: boolean;\n  loadingText?: string;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  (\n    {\n      className,\n      variant,\n      size,\n      shape,\n      asChild = false,\n      readOnly = false,\n      loading = false,\n      loadingText,\n      disabled,\n      children,\n      type,\n      ...props\n    },\n    ref,\n  ) => {\n    const {t} = useTranslation();\n    const showLoadingLabel = size !== 'icon';\n    const isDisabled = readOnly || disabled || loading;\n    const classNames = cn(buttonVariants({variant, size, shape, readOnly}), className);\n\n    if (asChild) {\n      return (\n        <Slot\n          ref={ref}\n          aria-disabled={isDisabled || undefined}\n          className={classNames}\n          {...props}\n        >\n          {children}\n        </Slot>\n      );\n    }\n\n    return (\n      <button\n        ref={ref}\n        type={type ?? 'button'}\n        disabled={isDisabled}\n        className={classNames}\n        {...props}\n      >\n        {loading ? (\n          <>\n            <Spinner />\n            {showLoadingLabel ? <span>{loadingText || t('please_wait')}</span> : null}\n          </>\n        ) : (\n          children\n        )}\n      </button>\n    );\n  },\n);\n\nButton.displayName = 'Button';\n\nfunction Spinner() {\n  return (\n    <svg\n      className=\"h-4 w-4 animate-spin\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n    >\n      <circle\n        className=\"opacity-25\"\n        cx=\"12\"\n        cy=\"12\"\n        r=\"10\"\n        stroke=\"currentColor\"\n        strokeWidth=\"4\"\n      />\n      <path\n        className=\"opacity-75\"\n        stroke=\"currentColor\"\n        strokeWidth=\"4\"\n        strokeLinecap=\"round\"\n        d=\"M12 2a10 10 0 0 1 10 10\"\n      />\n    </svg>\n  );\n}\n","import {cva} from 'class-variance-authority';\n\nexport const buttonVariants = cva(\n  [\n    'button relative inline-flex items-center justify-center gap-2 whitespace-nowrap',\n    '[font-family:var(--button-font-family)] [font-weight:var(--button-font-weight)]',\n    'transition-all duration-150 ease-out outline-none',\n    'focus-visible:[box-shadow:var(--button-focus-shadow)]',\n    'disabled:pointer-events-none disabled:opacity-50',\n    '[&_svg]:pointer-events-none [&_svg]:size-[var(--button-icon-size)] [&_svg]:shrink-0',\n    'before:absolute before:inset-0 before:rounded-[inherit] before:content-[\"\"]',\n    'before:bg-transparent before:transition-colors before:duration-150',\n    '[&>*]:relative [&>*]:z-[1]',\n  ],\n  {\n    variants: {\n      variant: {\n        default: [\n          'button_default',\n          'bg-[var(--button-primary-bg)] text-[color:var(--button-primary-text)]',\n          'hover:before:bg-[var(--button-primary-hover-overlay)] active:before:bg-[var(--button-primary-active-overlay)]',\n          'disabled:hover:before:bg-transparent',\n        ],\n        primary: [\n          'button_default',\n          'bg-[var(--button-primary-bg)] text-[color:var(--button-primary-text)]',\n          'hover:before:bg-[var(--button-primary-hover-overlay)] active:before:bg-[var(--button-primary-active-overlay)]',\n          'disabled:hover:before:bg-transparent',\n        ],\n        destructive: [\n          'button_destructive',\n          'border border-[var(--button-destructive-border)] bg-[var(--button-destructive-bg)] text-[color:var(--button-destructive-text)]',\n          'shadow-[var(--button-shadow)]',\n          'hover:bg-[var(--button-destructive-hover-bg)]',\n          'disabled:hover:bg-[var(--button-destructive-bg)]',\n        ],\n        secondary: [\n          'button_secondary',\n          'border border-[var(--button-secondary-border)] bg-[var(--button-secondary-bg)] text-[color:var(--button-secondary-text)]',\n          'shadow-[var(--button-shadow)]',\n          'hover:before:bg-[var(--button-secondary-hover-overlay)] active:before:bg-[var(--button-secondary-active-overlay)]',\n          'disabled:hover:before:bg-transparent',\n        ],\n        ghost: [\n          'button_ghost',\n          'bg-[var(--button-ghost-bg)] text-[color:var(--button-ghost-text)]',\n          'hover:bg-[var(--button-ghost-hover-bg)] active:bg-[var(--button-ghost-active-bg)]',\n          'disabled:hover:bg-[var(--button-ghost-bg)]',\n        ],\n        link: [\n          'button_link',\n          'h-auto [font-weight:var(--button-link-font-weight)] min-w-0 rounded-none bg-[var(--button-link-bg)] px-0 py-0 text-[color:var(--button-link-text)]',\n          'hover:opacity-80 active:opacity-80 before:hidden',\n          'disabled:hover:no-opacity-80',\n        ],\n        tertiary: [\n          'button_tertiary',\n          'border border-[var(--button-tertiary-border)] bg-[var(--button-tertiary-bg)] text-[color:var(--button-tertiary-text)]',\n          'shadow-[var(--button-shadow)]',\n          'hover:before:bg-[var(--button-tertiary-hover-overlay)] active:before:bg-[var(--button-tertiary-active-overlay)]',\n          'disabled:hover:before:bg-transparent',\n        ],\n        outline: [\n          'border border-[var(--button-outline-border)] bg-[var(--button-outline-bg)] text-[color:var(--button-outline-text)]',\n          'hover:bg-[var(--button-outline-hover-bg)]',\n          'disabled:hover:bg-[var(--button-outline-bg)]',\n        ],\n      },\n      size: {\n        default:\n          'button_size_default h-[var(--button-height-default)] min-w-[var(--button-min-width-default)] px-4 py-2 text-[length:var(--button-font-size)]',\n        m: 'button_size_m h-[var(--button-height-m)] min-w-[var(--button-min-width-m)] px-4 text-[length:var(--button-font-size)]',\n        md: 'button_size_m h-[var(--button-height-m)] min-w-[var(--button-min-width-m)] px-4 text-[length:var(--button-font-size)]',\n        s: 'button_size_sm h-[var(--button-height-s)] px-[12px] text-[13px]',\n        sm: 'button_size_sm h-[var(--button-height-sm)] px-3 text-[length:var(--button-font-size)]',\n        lg: 'button_size_lg h-[var(--button-height-lg)] px-8 text-[15px]',\n        xs: 'button_size_xs h-[var(--button-height-xs)] px-[10px] text-[12px]',\n        icon: 'button_size_icon h-[var(--button-height-icon)] w-[var(--button-height-icon)] p-0',\n      },\n      shape: {\n        rounded: 'rounded-[var(--button-radius)]',\n        pill: 'rounded-full',\n      },\n      readOnly: {\n        true: 'button_readonly pointer-events-none cursor-not-allowed !opacity-100',\n        false: '',\n      },\n    },\n    compoundVariants: [\n      {\n        variant: 'link',\n        className: 'h-auto min-w-0 px-0 py-0 rounded-none',\n      },\n      {\n        size: 'icon',\n        shape: 'rounded',\n        className: 'rounded-md',\n      },\n      {\n        size: 'icon',\n        shape: 'pill',\n        className: 'rounded-full',\n      },\n    ],\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n      shape: 'rounded',\n      readOnly: false,\n    },\n  },\n);\n","import * as React from 'react';\nimport {Slot} from '@radix-ui/react-slot';\nimport {type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {buttonGroupVariants} from './buttonGroupVariants';\n\nexport interface ButtonGroupProps\n  extends React.ComponentProps<'div'>, VariantProps<typeof buttonGroupVariants> {}\n\nexport function ButtonGroup({\n  className,\n  orientation,\n  seamless,\n  ...props\n}: ButtonGroupProps) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"button-group\"\n      data-orientation={orientation}\n      className={cn(buttonGroupVariants({orientation, seamless}), className)}\n      {...props}\n    />\n  );\n}\n\nButtonGroup.displayName = 'ButtonGroup';\n\nexport interface ButtonGroupTextProps extends React.ComponentProps<'div'> {\n  asChild?: boolean;\n}\n\nexport function ButtonGroupText({\n  className,\n  asChild = false,\n  ...props\n}: ButtonGroupTextProps) {\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      data-slot=\"button-group-text\"\n      className={cn(\n        'flex items-center gap-2 rounded-lg border border-[var(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-input-empty)] px-2.5 text-sm font-medium text-[var(--chekin-color-brand-navy)]',\n        \"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nButtonGroupText.displayName = 'ButtonGroupText';\n","import {cva} from 'class-variance-authority';\n\nexport const buttonGroupVariants = cva(\n  [\n    'flex w-fit items-stretch',\n    'has-[>[data-slot=button-group]]:gap-2',\n    'has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg',\n    '*:focus-visible:relative *:focus-visible:z-10',\n    \"[&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit\",\n    '[&>input]:flex-1',\n  ],\n  {\n    variants: {\n      orientation: {\n        horizontal: [\n          '[&>*]:!shadow-none',\n          '[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!',\n          '[&>*:not(:first-child)]:rounded-l-none',\n          '[&>*:not(:last-child)]:rounded-r-none',\n        ],\n        vertical: [\n          '[&>*]:!shadow-none',\n          '[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!',\n          'flex-col',\n          '[&>*:not(:first-child)]:rounded-t-none',\n          '[&>*:not(:last-child)]:rounded-b-none',\n        ],\n      },\n      seamless: {\n        true: '',\n        false: '',\n      },\n    },\n    compoundVariants: [\n      {\n        orientation: 'horizontal',\n        seamless: true,\n        class: '[&>*:not(:first-child)]:!border-l-0 [&>*:not(:last-child)]:!border-r-0',\n      },\n      {\n        orientation: 'vertical',\n        seamless: true,\n        class: '[&>*:not(:first-child)]:!border-t-0 [&>*:not(:last-child)]:!border-b-0',\n      },\n      {\n        orientation: 'horizontal',\n        seamless: false,\n        class: '[&>*:not(:first-child)]:border-l-0',\n      },\n      {\n        orientation: 'vertical',\n        seamless: false,\n        class: '[&>*:not(:first-child)]:border-t-0',\n      },\n    ],\n    defaultVariants: {\n      orientation: 'horizontal',\n      seamless: false,\n    },\n  },\n);\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport interface ButtonsGroupLabelProps extends React.PropsWithChildren {\n  label: string;\n  className?: string;\n}\n\nexport function ButtonsGroupLabel({children, label, className}: ButtonsGroupLabelProps) {\n  return (\n    <div data-slot=\"buttons-group-label\" className={cn(className)}>\n      <div className=\"mb-2 text-xs font-medium text-[var(--chekin-color-gray-1)]\">\n        {label}\n      </div>\n      <div>{children}</div>\n    </div>\n  );\n}\n\nButtonsGroupLabel.displayName = 'ButtonsGroupLabel';\n","import * as React from 'react';\nimport {DayPicker} from 'react-day-picker';\nimport {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {calendarClassNames} from './calendarStyles';\n\ntype CalendarClassNames = typeof calendarClassNames;\ntype CalendarClassNamesKeys = keyof CalendarClassNames;\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction getMergedClassNames(\n  defaultClassNames: CalendarClassNames,\n  userClassNames?: Partial<CalendarClassNames>,\n): CalendarClassNames {\n  return Object.keys(defaultClassNames).reduce(\n    (acc, key) => ({\n      ...acc,\n      [key]: userClassNames?.[key as CalendarClassNamesKeys]\n        ? cn(\n            defaultClassNames[key as CalendarClassNamesKeys],\n            userClassNames[key as CalendarClassNamesKeys],\n          )\n        : defaultClassNames[key as CalendarClassNamesKeys],\n    }),\n    {} as CalendarClassNames,\n  );\n}\n\nexport function Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  components: userComponents,\n  ...props\n}: CalendarProps) {\n  const mergedClassNames = getMergedClassNames(calendarClassNames, classNames);\n\n  const defaultComponents = {\n    Chevron: (iconProps: {orientation?: string} & React.SVGProps<SVGSVGElement>) => {\n      if (iconProps.orientation === 'left') {\n        return (\n          <ChevronLeft size={16} strokeWidth={2} {...iconProps} aria-hidden=\"true\" />\n        );\n      }\n\n      return <ChevronRight size={16} strokeWidth={2} {...iconProps} aria-hidden=\"true\" />;\n    },\n  };\n\n  return (\n    <DayPicker\n      data-slot=\"calendar\"\n      showOutsideDays={showOutsideDays}\n      className={cn('w-fit', className)}\n      classNames={mergedClassNames}\n      components={{\n        ...defaultComponents,\n        ...userComponents,\n      }}\n      {...props}\n    />\n  );\n}\n\nCalendar.displayName = 'Calendar';\n","import {cva} from 'class-variance-authority';\n\nexport const iconButtonVariants = cva(\n  [\n    'relative inline-flex items-center justify-center shrink-0',\n    'transition-colors duration-150 ease-out outline-none',\n    'disabled:opacity-30 disabled:pointer-events-none',\n    'focus-visible:shadow-[var(--chekin-shadow-focus)]',\n  ],\n  {\n    variants: {\n      size: {\n        s: 'w-8 h-8',\n        m: 'w-8 h-8',\n        l: 'w-[43px] h-[43px]',\n        default: 'w-8 h-8',\n      },\n      shape: {\n        rounded: 'rounded-[var(--chekin-radius-input)]',\n        circle: 'rounded-full',\n      },\n      variant: {\n        primary:\n          'bg-[var(--chekin-color-brand-blue)] text-[var(--chekin-color-white)] hover:brightness-95',\n        secondary:\n          'border border-[var(--chekin-color-gray-3)] bg-[var(--chekin-color-white)] text-[var(--chekin-color-brand-navy)] hover:bg-[var(--chekin-color-surface-input-empty)]',\n        ghost:\n          'bg-transparent text-[var(--chekin-color-gray-1)] hover:bg-[var(--chekin-color-surface-input-empty)]',\n        destructive:\n          'border border-[var(--chekin-color-gray-3)] bg-[var(--chekin-color-white)] text-[var(--error-message-color)] hover:bg-[var(--chekin-red-150)]',\n      },\n    },\n    defaultVariants: {size: 'm', shape: 'rounded', variant: 'secondary'},\n  },\n);\n","import {cn} from '../lib/cn';\nimport {iconButtonVariants} from '../icon-button/iconButtonVariants';\n\nexport const calendarClassNames = {\n  months: 'relative flex flex-col gap-4 sm:flex-row',\n  month: 'w-full',\n  month_caption: 'relative z-20 mx-10 mb-1 flex h-9 items-center justify-center',\n  caption_label: 'text-sm font-medium',\n  nav: 'absolute top-0 z-10 flex w-full justify-between',\n  button_previous: cn(iconButtonVariants({variant: 'ghost'}), 'size-9 p-0'),\n  button_next: cn(iconButtonVariants({variant: 'ghost'}), 'size-9 p-0'),\n  weekday: 'size-9 p-0 text-xs font-medium text-chekin-gray-1',\n  day_button: [\n    'relative flex size-9 items-center justify-center whitespace-nowrap rounded-lg p-0',\n    'text-[var(--calendar-day-text,var(--chekin-blue-900))] outline-offset-2',\n    'group-[[data-selected]:not(.range-middle)]:[transition-property:color,background-color,border-radius,box-shadow]',\n    'group-[[data-selected]:not(.range-middle)]:duration-150',\n    'focus:outline-none focus-visible:z-10 focus-visible:outline focus-visible:outline-2 focus-visible:outline-chekin-blue/70',\n    'hover:bg-[var(--calendar-day-hover-bg,var(--chekin-surface-input-empty))]',\n    'group-data-[selected]:bg-[var(--calendar-selected-bg,var(--chekin-blue-500))] group-data-[selected]:text-[var(--calendar-selected-text,#fff)]',\n    'group-data-[disabled]:pointer-events-none group-data-[disabled]:text-chekin-gray-2 group-data-[disabled]:line-through',\n    'group-data-[outside]:text-chekin-gray-2',\n    'group-data-[outside]:group-data-[selected]:text-[var(--calendar-selected-text,#fff)]',\n    'group-[.range-start:not(.range-end)]:rounded-e-none',\n    'group-[.range-end:not(.range-start)]:rounded-s-none',\n    'group-[.range-middle]:rounded-none',\n    'group-data-[selected]:group-[.range-middle]:bg-[var(--calendar-range-middle-bg,var(--chekin-surface-pressed))] group-data-[selected]:group-[.range-middle]:text-[var(--calendar-range-middle-text,var(--chekin-blue-900))]',\n  ].join(' '),\n  day: 'group size-9 px-0 text-center text-sm',\n  range_start: 'range-start',\n  range_end: 'range-end',\n  range_middle: 'range-middle',\n  today: [\n    '*:after:pointer-events-none *:after:absolute *:after:bottom-1 *:after:start-1/2',\n    '*:after:z-10 *:after:size-[3px] *:after:-translate-x-1/2 *:after:rounded-full',\n    '*:after:bg-[var(--calendar-today-indicator,var(--chekin-blue-500))] *:after:transition-colors',\n    '[&[data-selected]:not(.range-middle)>*]:after:bg-[var(--calendar-selected-text,#fff)]',\n    '[&[data-disabled]>*]:after:bg-chekin-gray-2',\n  ].join(' '),\n  outside:\n    'text-chekin-gray-2 data-selected:bg-chekin-surface-pressed/50 data-selected:text-chekin-gray-1',\n  hidden: 'invisible',\n  week_number: 'size-9 p-0 text-xs font-medium text-chekin-gray-1',\n};\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-slot=\"card\"\n      className={cn(\n        'rounded-[var(--chekin-radius-card)] border border-[var(--chekin-color-gray-3)] bg-[var(--chekin-color-white)] text-[var(--chekin-color-brand-navy)] shadow-[var(--chekin-shadow-card)]',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-slot=\"card-header\"\n      className={cn('flex flex-col space-y-1.5 p-6', className)}\n      {...props}\n    />\n  ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-slot=\"card-title\"\n      className={cn('font-semibold leading-none tracking-tight', className)}\n      {...props}\n    />\n  ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({className, ...props}, ref) => (\n  <div\n    ref={ref}\n    data-slot=\"card-description\"\n    className={cn('text-sm text-[var(--chekin-color-gray-1)]', className)}\n    {...props}\n  />\n));\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({className, ...props}, ref) => (\n  <div\n    ref={ref}\n    data-slot=\"card-content\"\n    className={cn('p-6 pt-0', className)}\n    {...props}\n  />\n));\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-slot=\"card-footer\"\n      className={cn('flex items-center p-6 pt-0', className)}\n      {...props}\n    />\n  ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport {Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent};\n","import {Children, type ReactNode} from 'react';\nimport {type VariantProps} from 'class-variance-authority';\nimport {CircleCheck} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {checkListItemVariants, checkListRootVariants} from './listVariants';\n\ntype CheckListProps = {\n  children?: ReactNode;\n  className?: string;\n  itemClassName?: string;\n} & VariantProps<typeof checkListRootVariants>;\n\nconst CheckList = ({\n  children,\n  className,\n  itemClassName,\n  size = 'default',\n}: CheckListProps) => {\n  const items = Children.toArray(children);\n\n  return (\n    <ul className={cn(checkListRootVariants({size}), className)} data-size={size}>\n      {items.map((child, index) => (\n        <li key={index} className={cn(checkListItemVariants(), itemClassName)}>\n          <CircleCheck\n            className=\"check-list-icon relative top-[2px] shrink-0\"\n            fill=\"var(--check-list-icon-color)\"\n            stroke=\"var(--check-list-icon-mark-color)\"\n          />\n          <div className=\"inline-block\">{child}</div>\n        </li>\n      ))}\n    </ul>\n  );\n};\n\nexport {CheckList};\nexport type {CheckListProps};\n","import {cva} from 'class-variance-authority';\n\nconst checkListRootVariants = cva(\n  'check-list-root m-0 flex w-full list-none flex-col p-0',\n  {\n    variants: {\n      size: {\n        default: 'gap-4',\n        minimal: 'gap-2',\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nconst listItemBase =\n  'flex items-start gap-2 text-base [&_.check-list-icon]:h-6 [&_.check-list-icon]:w-6';\n\nconst listItemMinimalOverrides =\n  '[.check-list-root[data-size=minimal]_&]:gap-1.5 [.check-list-root[data-size=minimal]_&]:text-sm [.check-list-root[data-size=minimal]_&_.check-list-icon]:mt-0.5 [.check-list-root[data-size=minimal]_&_.check-list-icon]:h-[15px] [.check-list-root[data-size=minimal]_&_.check-list-icon]:w-[15px]';\n\nconst checkListItemVariants = cva(`${listItemBase} ${listItemMinimalOverrides}`);\n\nexport {checkListItemVariants, checkListRootVariants};\n","import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport {Check} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport type CheckboxSize = 'default' | 'm' | 's';\n\nexport interface BaseCheckboxProps extends React.ComponentPropsWithoutRef<\n  typeof CheckboxPrimitive.Root\n> {\n  loading?: boolean;\n  readOnly?: boolean;\n  size?: CheckboxSize;\n}\n\nconst checkboxSizeClasses: Record<CheckboxSize, string> = {\n  default: 'h-6 w-6',\n  m: 'h-5 w-5',\n  s: 'h-4 w-4',\n};\n\nconst checkboxIconSizeClasses: Record<CheckboxSize, string> = {\n  default: 'h-5 w-5',\n  m: 'h-4 w-4',\n  s: 'h-3 w-3',\n};\n\nexport const BaseCheckbox = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  BaseCheckboxProps\n>(\n  (\n    {className, loading, onCheckedChange, disabled, readOnly, size = 'default', ...props},\n    ref,\n  ) => (\n    <CheckboxPrimitive.Root\n      ref={ref}\n      className={cn(\n        'checkbox__control peer shrink-0 rounded-sm border border-solid border-[var(--checkbox-border)] bg-[var(--checkbox-bg)]',\n        'focus-visible:outline-none focus-visible:shadow-chekin-focus',\n        'disabled:cursor-not-allowed disabled:opacity-50',\n        'aria-busy:cursor-wait aria-busy:opacity-50 aria-readonly:cursor-default aria-readonly:opacity-100',\n        'data-[state=checked]:border-[var(--checkbox-checked-border)] data-[state=checked]:bg-[var(--checkbox-checked-bg)] data-[state=checked]:text-[var(--checkbox-check-color)]',\n        checkboxSizeClasses[size],\n        className,\n      )}\n      {...props}\n      onCheckedChange={!disabled && !readOnly ? onCheckedChange : undefined}\n      disabled={disabled}\n      aria-busy={loading}\n      aria-readonly={readOnly}\n    >\n      <CheckboxPrimitive.Indicator\n        className={cn(\n          'checkbox__indicator flex items-center justify-center text-current',\n        )}\n      >\n        <Check className={cn('checkbox__icon', checkboxIconSizeClasses[size])} />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  ),\n);\n\nBaseCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {Label} from '../label';\nimport {BaseCheckbox, type CheckboxSize} from './BaseCheckbox';\nimport {FieldErrorMessage} from '../field-error-message';\n\nconst rowSizeClasses: Record<CheckboxSize, string> = {\n  default: 'gap-2.5',\n  m: 'gap-2.5',\n  s: 'gap-2',\n};\n\nconst labelSizeClasses: Record<CheckboxSize, string> = {\n  default: 'text-base',\n  m: 'text-base',\n  s: 'text-sm',\n};\n\nexport interface CheckboxProps {\n  id?: string;\n  label?: React.ReactNode;\n  children?: React.ReactNode;\n  value?: boolean;\n  onChange?: (checked: boolean) => void;\n  onWrapperClick?: (checked: boolean) => void;\n  disabled?: boolean;\n  readOnly?: boolean;\n  loading?: boolean;\n  error?: string;\n  supportingText?: string;\n  className?: string;\n  size?: CheckboxSize;\n  rowClassName?: string;\n  labelClassName?: string;\n  checkboxClassName?: string;\n  errorClassName?: string;\n  supportingTextClassName?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n  (\n    {\n      id,\n      label,\n      value = false,\n      children,\n      onChange,\n      onWrapperClick,\n      error,\n      supportingText,\n      className,\n      size = 'default',\n      rowClassName,\n      labelClassName,\n      checkboxClassName,\n      errorClassName,\n      supportingTextClassName,\n      ...props\n    },\n    ref,\n  ) => {\n    const generatedId = React.useId();\n    const checkboxId = id || generatedId;\n    const errorId = error ? `${checkboxId}-error` : undefined;\n    const descriptionId = supportingText ? `${checkboxId}-desc` : undefined;\n    const ariaDescribedBy = errorId || descriptionId || undefined;\n\n    return (\n      <div className={cn('checkbox flex flex-col', className)}>\n        <div\n          className={cn(\n            'checkbox__row flex items-center',\n            rowSizeClasses[size],\n            rowClassName,\n          )}\n          onClick={() => onWrapperClick?.(!value)}\n        >\n          <BaseCheckbox\n            id={checkboxId}\n            ref={ref}\n            checked={onChange !== undefined ? value : undefined}\n            defaultChecked={onChange === undefined ? value : undefined}\n            onCheckedChange={onChange ? checked => onChange(checked === true) : undefined}\n            className={checkboxClassName}\n            size={size}\n            aria-invalid={!!error || undefined}\n            aria-describedby={ariaDescribedBy}\n            {...props}\n          />\n          {label && (\n            <Label\n              htmlFor={checkboxId}\n              className={cn(\n                'checkbox__label cursor-pointer font-medium leading-none text-[var(--checkbox-label-color)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n                labelSizeClasses[size],\n                labelClassName,\n              )}\n            >\n              {label}\n            </Label>\n          )}\n          {children}\n        </div>\n        {supportingText && !error && (\n          <p\n            id={descriptionId}\n            className={cn(\n              'checkbox__supporting-text mt-1 text-xs italic text-[var(--chekin-color-gray-2)]',\n              supportingTextClassName,\n            )}\n          >\n            {supportingText}\n          </p>\n        )}\n        {error && (\n          <FieldErrorMessage\n            id={errorId}\n            className={cn('checkbox__error', errorClassName)}\n          >\n            {error}\n          </FieldErrorMessage>\n        )}\n      </div>\n    );\n  },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import * as React from 'react';\nimport {AlertCircle} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\ntype FieldErrorMessageProps = Omit<\n  React.HTMLAttributes<HTMLParagraphElement>,\n  'children'\n> & {\n  message?: React.ReactNode;\n  children?: React.ReactNode;\n  disabled?: boolean;\n};\n\nfunction FieldErrorMessage({\n  id,\n  message,\n  children,\n  disabled,\n  className,\n  ...props\n}: FieldErrorMessageProps) {\n  const content = message ?? children;\n\n  if (!content) return null;\n\n  return (\n    <p\n      id={id}\n      role=\"alert\"\n      className={cn(\n        'mt-2 flex items-center gap-1 text-[12px] font-medium leading-5 text-[var(--error-message-color)]',\n        disabled && 'opacity-50',\n        className,\n      )}\n      {...props}\n    >\n      <AlertCircle\n        className=\"h-[18px] w-[18px] shrink-0 text-white\"\n        fill=\"var(--error-message-color)\"\n      />\n      <span>{content}</span>\n    </p>\n  );\n}\n\nexport {FieldErrorMessage};\nexport type {FieldErrorMessageProps};\n","import * as React from 'react';\nimport type {PropsWithChildren} from 'react';\nimport {cn} from '../lib/cn';\nimport {Label} from '../label';\nimport {ScrollArea} from '../scroll-area';\nimport {ErrorMessage} from '../error-message';\nimport {BaseCheckbox} from './BaseCheckbox';\nimport {Checkbox} from './Checkbox';\nimport type {CheckboxOption} from './types';\n\nconst ScrollAreaWrapper = ({\n  children,\n  scrollable,\n  scrollHeight,\n}: Pick<CheckboxGroupProps, 'scrollable' | 'scrollHeight'> & PropsWithChildren) => {\n  if (!scrollable) {\n    return children;\n  }\n\n  return (\n    <ScrollArea\n      className=\"checkbox-group__scroll-area max-h-96 w-full overflow-hidden\"\n      style={scrollHeight ? {height: scrollHeight} : undefined}\n    >\n      {children}\n    </ScrollArea>\n  );\n};\n\nexport interface CheckboxGroupProps {\n  options: CheckboxOption[];\n  value?: string[];\n  onChange?: (selectedValues: string[]) => void;\n  disabled?: boolean;\n  className?: string;\n  showSelectAll?: boolean;\n  selectAllLabel?: string;\n  scrollable?: boolean;\n  scrollHeight?: string | number;\n  error?: string;\n}\n\nexport const CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(\n  (\n    {\n      options,\n      value = [],\n      onChange,\n      disabled = false,\n      className,\n      showSelectAll = true,\n      selectAllLabel = 'All',\n      scrollable,\n      scrollHeight,\n      error,\n      ...props\n    },\n    ref,\n  ) => {\n    const selectAllId = React.useId();\n\n    const handleOptionChange = (optionValue: string, checked: boolean) => {\n      if (!onChange) return;\n\n      if (checked) {\n        onChange([...value, optionValue]);\n        return;\n      }\n\n      onChange(value.filter(selectedValue => selectedValue !== optionValue));\n    };\n\n    const handleSelectAllChange = (checked: boolean) => {\n      if (!onChange) return;\n\n      if (checked) {\n        onChange(options.filter(option => !option.disabled).map(option => option.value));\n        return;\n      }\n\n      onChange([]);\n    };\n\n    const availableOptions = options.filter(option => !option.disabled);\n    const selectedAvailableValues = value.filter(selectedValue =>\n      availableOptions.some(option => option.value === selectedValue),\n    );\n    const isAllSelected =\n      selectedAvailableValues.length > 0 &&\n      selectedAvailableValues.length === availableOptions.length;\n\n    return (\n      <div ref={ref} className={cn('checkbox-group space-y-2', className)} {...props}>\n        {showSelectAll && (\n          <>\n            <div className=\"checkbox-group__select-all flex items-center gap-2\">\n              <BaseCheckbox\n                id={selectAllId}\n                checked={isAllSelected}\n                onCheckedChange={checked => handleSelectAllChange(checked === true)}\n                disabled={disabled || availableOptions.length === 0}\n              />\n              <Label\n                htmlFor={selectAllId}\n                className=\"checkbox-group__select-all-label cursor-pointer text-sm font-medium leading-none text-[var(--checkbox-label-color)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n              >\n                {selectAllLabel}\n              </Label>\n            </div>\n            <hr className=\"checkbox-group__separator border-t border-[var(--chekin-color-gray-3)]\" />\n          </>\n        )}\n        <ScrollAreaWrapper scrollable={scrollable} scrollHeight={scrollHeight}>\n          <div className=\"checkbox-group__options space-y-2\">\n            {options.map(option => (\n              <Checkbox\n                key={option.value}\n                label={option.label}\n                value={value.includes(option.value)}\n                onChange={checked => handleOptionChange(option.value, checked)}\n                disabled={disabled || option.disabled}\n              />\n            ))}\n          </div>\n        </ScrollAreaWrapper>\n        {error && (\n          <ErrorMessage disabled={disabled} className=\"checkbox-group__error\">\n            {error}\n          </ErrorMessage>\n        )}\n      </div>\n    );\n  },\n);\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n","import * as React from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport {cn} from '../lib/cn';\n\nexport type ScrollAreaProps = React.ComponentProps<typeof ScrollAreaPrimitive.Root>;\n\nexport type ScrollBarProps = React.ComponentProps<\n  typeof ScrollAreaPrimitive.ScrollAreaScrollbar\n>;\n\nexport function ScrollArea({className, children, ...props}: ScrollAreaProps) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn('relative overflow-hidden', className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        data-slot=\"scroll-area-viewport\"\n        className=\"size-full rounded-[inherit] outline-none transition-[color,box-shadow] focus-visible:shadow-[var(--chekin-shadow-focus)] [&>div]:!block\"\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  );\n}\n\nexport function ScrollBar({\n  className,\n  orientation = 'vertical',\n  ...props\n}: ScrollBarProps) {\n  return (\n    <ScrollAreaPrimitive.ScrollAreaScrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      orientation={orientation}\n      className={cn(\n        'z-[6] flex touch-none select-none p-px transition-colors',\n        orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent',\n        orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent',\n        className,\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.ScrollAreaThumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"relative flex-1 rounded-full bg-[rgb(0_0_0_/_0.3)]\"\n      />\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\n  );\n}\n","import {useTranslation} from 'react-i18next';\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from '../tooltip';\nimport {StatusBadge} from '../status-badge';\n\nexport type CommingSoonBadgeProps = {\n  tooltip?: boolean;\n};\n\nexport function CommingSoonBadge({tooltip = true}: CommingSoonBadgeProps) {\n  const {t} = useTranslation();\n\n  return (\n    <TooltipProvider>\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <StatusBadge textOnly variant=\"success-blue\">\n            {t('feature_coming_soon')}\n          </StatusBadge>\n        </TooltipTrigger>\n        {tooltip && (\n          <TooltipContent variant=\"dark\">\n            <p className=\"w-[216px] text-balance\">\n              {t('feature_coming_soon_description')}\n            </p>\n          </TooltipContent>\n        )}\n      </Tooltip>\n    </TooltipProvider>\n  );\n}\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\nimport {useTooltipTouch, type TooltipTouchHandlers} from './useTooltipTouch';\n\nexport function TooltipProvider({\n  delayDuration = 0,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delayDuration={delayDuration}\n      {...props}\n    />\n  );\n}\n\nexport const TooltipRoot = TooltipPrimitive.Root;\n\nexport interface TooltipRootProps extends React.ComponentProps<\n  typeof TooltipPrimitive.Root\n> {\n  disabled?: boolean;\n}\n\nexport function TooltipRootWrapper({disabled = false, ...props}: TooltipRootProps) {\n  return (\n    <TooltipProvider>\n      <TooltipPrimitive.Root\n        data-slot=\"tooltip\"\n        open={disabled ? false : undefined}\n        {...props}\n      />\n    </TooltipProvider>\n  );\n}\n\nexport function TooltipTrigger(\n  props: React.ComponentProps<typeof TooltipPrimitive.Trigger>,\n) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nexport interface TooltipContentProps extends React.ComponentProps<\n  typeof TooltipPrimitive.Content\n> {\n  variant?: 'light' | 'dark';\n  container?: HTMLElement | null;\n}\n\nexport function TooltipContent({\n  className,\n  sideOffset = 0,\n  children,\n  variant = 'light',\n  container,\n  ...props\n}: TooltipContentProps) {\n  return (\n    <TooltipPrimitive.Portal container={container ?? getCustomContainer()}>\n      <TooltipPrimitive.Content\n        data-slot=\"tooltip-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out',\n          'data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n          'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n          'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n          'origin-[var(--radix-tooltip-content-transform-origin)] z-50 w-fit text-balance',\n          'rounded-md px-4 py-2 text-sm font-medium',\n          {\n            'bg-[var(--chekin-color-white)] text-[var(--chekin-color-brand-navy)] shadow-[0_0_10px_0_rgba(143,143,143,0.30)]':\n              variant === 'light',\n            'bg-[var(--chekin-color-brand-navy)] text-[var(--chekin-color-white)]':\n              variant === 'dark',\n          },\n          className,\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow\n          className={cn(\n            'z-50 size-3 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]',\n            {\n              'bg-[var(--chekin-color-white)] fill-[var(--chekin-color-white)]':\n                variant === 'light',\n              'bg-[var(--chekin-color-brand-navy)] fill-[var(--chekin-color-brand-navy)]':\n                variant === 'dark',\n            },\n          )}\n        />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  );\n}\n\nexport interface TooltipProps\n  extends\n    Omit<TooltipRootProps, 'children'>,\n    Pick<TooltipContentProps, 'side' | 'sideOffset' | 'variant' | 'container'> {\n  content?: React.ReactNode;\n  children: React.ReactNode;\n  asChild?: boolean;\n  contentClassName?: string;\n  delayDuration?: number;\n  longPressDuration?: number;\n}\n\nexport function Tooltip({\n  content,\n  children,\n  side = 'top',\n  sideOffset = 0,\n  variant = 'light',\n  container,\n  contentClassName,\n  asChild = true,\n  delayDuration = 150,\n  disabled = false,\n  longPressDuration = 500,\n  ...props\n}: TooltipProps) {\n  if (typeof content === 'undefined') {\n    return (\n      <TooltipProvider delayDuration={delayDuration}>\n        <TooltipPrimitive.Root\n          data-slot=\"tooltip\"\n          open={disabled ? false : undefined}\n          {...props}\n        >\n          {children}\n        </TooltipPrimitive.Root>\n      </TooltipProvider>\n    );\n  }\n\n  return (\n    <TooltipProvider delayDuration={delayDuration}>\n      <TooltipTouchRoot\n        disabled={disabled}\n        longPressDuration={longPressDuration}\n        {...props}\n      >\n        {triggerHandlers => (\n          <>\n            <TooltipPrimitive.Trigger\n              data-slot=\"tooltip-trigger\"\n              asChild={asChild}\n              {...triggerHandlers}\n            >\n              {children}\n            </TooltipPrimitive.Trigger>\n            <TooltipContent\n              side={side}\n              sideOffset={sideOffset}\n              variant={variant}\n              container={container}\n              className={contentClassName}\n            >\n              {content}\n            </TooltipContent>\n          </>\n        )}\n      </TooltipTouchRoot>\n    </TooltipProvider>\n  );\n}\n\ninterface TooltipTouchRootProps extends Omit<TooltipRootProps, 'children'> {\n  longPressDuration: number;\n  children: (triggerHandlers: TooltipTouchHandlers) => React.ReactNode;\n}\n\nfunction TooltipTouchRoot({\n  disabled,\n  longPressDuration,\n  children,\n  open: openProp,\n  onOpenChange,\n  defaultOpen,\n  ...props\n}: TooltipTouchRootProps) {\n  const {open, setOpen, handlers} = useTooltipTouch({\n    disabled,\n    longPressDuration,\n    open: openProp,\n    onOpenChange,\n    defaultOpen,\n  });\n\n  return (\n    <TooltipPrimitive.Root\n      data-slot=\"tooltip\"\n      open={open}\n      onOpenChange={setOpen}\n      {...props}\n    >\n      {children(handlers)}\n    </TooltipPrimitive.Root>\n  );\n}\n","export const getWindow = () => {\n  return window.chekinCustomWindow || window;\n};\n\nexport const getDocument = () => {\n  return window.chekinCustomDocument || document;\n};\n\nexport function getCustomContainer() {\n  return getDocument()?.body;\n}\n\nexport function isBrowser(): boolean {\n  return typeof window !== 'undefined';\n}\n\nexport function scrollToTop(value = 0, behavior?: 'auto' | 'smooth') {\n  window.scrollTo({\n    top: value,\n    behavior,\n  });\n}\n\nexport function isObject<T>(value: T) {\n  return value !== null && typeof value === 'object';\n}\n\nexport const isNumeric = (n: string | number) => n !== '' && !isNaN(n as number);\n\nexport function toCssSize(size?: string | number) {\n  if (!size) {\n    return;\n  } else if (size === 'auto') {\n    return size;\n  } else if (typeof size === 'number' || isNumeric(size)) {\n    return `${size}px`;\n  } else if (size.slice(-2) === 'px') {\n    return size;\n  } else {\n    return size;\n  }\n}\n\nexport function getCanvasBlob(canvas: HTMLCanvasElement) {\n  return new Promise<Blob | null>(resolve => {\n    canvas.toBlob(blob => {\n      resolve(blob);\n    });\n  });\n}\n\nexport function toBase64(file: File | Blob): Promise<string> {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    reader.onload = () => resolve(String(reader.result));\n    reader.onerror = () => reject(new Error('Failed to read file as base64'));\n  });\n}\n\nexport function getFileSizeMB(file?: File | Blob) {\n  if (!file) return;\n  return file.size / Math.pow(1024, 2);\n}\n","import * as React from 'react';\n\nexport interface TooltipTouchHandlers {\n  onTouchStart: () => void;\n  onTouchEnd: () => void;\n  onTouchMove: () => void;\n  onTouchCancel: () => void;\n}\n\nexport interface UseTooltipTouchOptions {\n  disabled?: boolean;\n  longPressDuration?: number;\n  open?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  defaultOpen?: boolean;\n}\n\nexport interface UseTooltipTouchResult {\n  open: boolean;\n  setOpen: (open: boolean) => void;\n  handlers: TooltipTouchHandlers;\n}\n\nexport function useTooltipTouch({\n  disabled = false,\n  longPressDuration = 500,\n  open: openProp,\n  onOpenChange,\n  defaultOpen,\n}: UseTooltipTouchOptions = {}): UseTooltipTouchResult {\n  const isControlled = openProp !== undefined;\n  const [internalOpen, setInternalOpen] = React.useState(defaultOpen ?? false);\n  const timerRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n  const open = disabled ? false : isControlled ? openProp : internalOpen;\n\n  const setOpen = React.useCallback(\n    (next: boolean) => {\n      if (disabled) return;\n      if (!isControlled) setInternalOpen(next);\n      onOpenChange?.(next);\n    },\n    [disabled, isControlled, onOpenChange],\n  );\n\n  const clearTimer = React.useCallback(() => clearTimeout(timerRef.current), []);\n\n  React.useEffect(() => clearTimer, [clearTimer]);\n\n  const handlers = React.useMemo<TooltipTouchHandlers>(\n    () => ({\n      onTouchStart: () => {\n        clearTimer();\n        timerRef.current = setTimeout(() => setOpen(true), longPressDuration);\n      },\n      onTouchEnd: clearTimer,\n      onTouchMove: clearTimer,\n      onTouchCancel: clearTimer,\n    }),\n    [setOpen, clearTimer, longPressDuration],\n  );\n\n  return {open, setOpen, handlers};\n}\n","import {type ReactNode, forwardRef, memo} from 'react';\nimport {Check, Clock, X} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\ntype IconVariant = 'clock-grey' | 'clock-blue' | 'tick-blue' | 'tick-green' | 'x-red';\n\ninterface StatusBadgeIconProps {\n  variant: IconVariant;\n  className?: string;\n}\n\nfunction StatusBadgeIcon({variant, className}: StatusBadgeIconProps) {\n  const iconProps = {\n    size: 10,\n    className: cn('stroke-[1.5]', className),\n  };\n\n  switch (variant) {\n    case 'clock-blue':\n      return (\n        <Clock\n          {...iconProps}\n          className={cn('text-[var(--chekin-color-brand-blue)]', className)}\n        />\n      );\n    case 'tick-blue':\n      return (\n        <Check\n          {...iconProps}\n          className={cn('text-[var(--chekin-color-brand-blue)]', className)}\n        />\n      );\n    case 'tick-green':\n      return <Check {...iconProps} className={cn('text-emerald-600', className)} />;\n    case 'x-red':\n      return (\n        <X\n          {...iconProps}\n          className={cn('text-[var(--chekin-color-brand-red)]', className)}\n        />\n      );\n    case 'clock-grey':\n    default:\n      return (\n        <Clock\n          {...iconProps}\n          className={cn('text-[var(--chekin-color-gray-2)]', className)}\n        />\n      );\n  }\n}\n\nexport type StatusBadgeVariant =\n  | 'neutral'\n  | 'progress-blue'\n  | 'progress-blue-light'\n  | 'progress-grey'\n  | 'success-blue'\n  | 'success-green'\n  | 'error';\n\nexport interface StatusBadgeProps {\n  children?: ReactNode;\n  variant?: StatusBadgeVariant;\n  showIcon?: boolean;\n  textOnly?: boolean;\n  iconOnly?: boolean;\n  className?: string;\n  disabled?: boolean;\n}\n\nconst variantStyles: Record<\n  StatusBadgeVariant,\n  {\n    container: string;\n    text: string;\n    icon: IconVariant;\n  }\n> = {\n  neutral: {\n    container: 'bg-[var(--chekin-color-surface-input-empty)]',\n    text: 'text-[var(--chekin-color-gray-2)]',\n    icon: 'clock-grey',\n  },\n  'progress-blue': {\n    container: 'bg-[var(--chekin-color-surface-autocomplete)]',\n    text: 'text-[var(--chekin-color-brand-blue)]',\n    icon: 'clock-blue',\n  },\n  'progress-blue-light': {\n    container: 'bg-[var(--chekin-color-surface-pressed)]',\n    text: 'text-[var(--chekin-color-brand-blue)]',\n    icon: 'clock-blue',\n  },\n  'progress-grey': {\n    container: 'bg-[var(--chekin-color-surface-input-empty)]',\n    text: 'text-[var(--chekin-color-gray-2)]',\n    icon: 'clock-grey',\n  },\n  'success-blue': {\n    container: 'bg-[var(--chekin-color-surface-autocomplete)]',\n    text: 'text-[var(--chekin-color-brand-blue)]',\n    icon: 'tick-blue',\n  },\n  'success-green': {\n    container: 'bg-emerald-50',\n    text: 'text-emerald-600',\n    icon: 'tick-green',\n  },\n  error: {\n    container: 'bg-red-50',\n    text: 'text-[var(--chekin-color-brand-red)]',\n    icon: 'x-red',\n  },\n};\n\nconst StatusBadgeInternal = forwardRef<HTMLDivElement, StatusBadgeProps>(\n  (\n    {\n      children,\n      variant = 'neutral',\n      showIcon = true,\n      textOnly = false,\n      iconOnly = false,\n      className,\n      disabled = false,\n      ...props\n    },\n    ref,\n  ) => {\n    const styles = variantStyles[variant];\n    const hasText = !iconOnly && (children || !textOnly);\n    const hasIcon = !textOnly && showIcon;\n\n    const padding = (() => {\n      if (iconOnly) return 'px-1 py-0';\n      if (textOnly) return 'px-3 py-1';\n      if (hasText && hasIcon) return 'py-1 pl-3 pr-2';\n      return 'px-3 py-1';\n    })();\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'inline-flex cursor-default items-center justify-center gap-1 rounded-3xl text-[14px] font-medium leading-4',\n          styles.container,\n          styles.text,\n          padding,\n          disabled && 'opacity-50',\n          className,\n        )}\n        {...props}\n      >\n        {hasIcon && (\n          <StatusBadgeIcon variant={styles.icon} className=\"size-4 flex-shrink-0\" />\n        )}\n        {hasText && <span className=\"whitespace-nowrap\">{children}</span>}\n      </div>\n    );\n  },\n);\n\nStatusBadgeInternal.displayName = 'StatusBadge';\n\nexport const StatusBadge = memo(StatusBadgeInternal);\n","import {useState} from 'react';\nimport {Check, Copy} from 'lucide-react';\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from '../tooltip';\nimport {cn} from '../lib/cn';\nimport {IconButton} from '../icon-button';\n\nexport type CopyIconProps = {\n  textToCopy: string;\n  className?: string;\n  tooltipText?: string;\n  size?: 'sm' | 'md';\n  variant?: 'default' | 'outline' | 'ghost';\n  onClick?: () => string | Promise<string>;\n};\n\nexport function CopyIcon({\n  textToCopy,\n  className,\n  tooltipText = 'Click to copy',\n  size = 'sm',\n  variant = 'outline',\n  onClick,\n}: CopyIconProps) {\n  const [copied, setCopied] = useState(false);\n\n  const iconSize = {\n    sm: 16,\n    md: 20,\n  };\n\n  const buttonSize = {\n    sm: 's',\n    md: 'default',\n  } as const;\n\n  const handleCopy = async () => {\n    try {\n      const text = onClick ? await onClick() : textToCopy;\n      await navigator.clipboard.writeText(text);\n      setCopied(true);\n      setTimeout(() => setCopied(false), 1500);\n    } catch (error) {\n      console.error('Failed to copy text: ', error);\n    }\n  };\n\n  return (\n    <TooltipProvider delayDuration={0}>\n      <Tooltip>\n        <TooltipTrigger asChild>\n          <IconButton\n            size={buttonSize[size]}\n            className={cn(\n              'relative disabled:opacity-100',\n              {\n                '!px-2 !py-0': size === 'sm',\n                '!p-3': size === 'md',\n                '!h-auto !p-1.5': variant === 'ghost',\n              },\n              className,\n            )}\n            onClick={handleCopy}\n            aria-label={copied ? 'Copied' : 'Copy to clipboard'}\n          >\n            <div\n              className={cn(\n                'transition-all',\n                copied ? 'scale-100 opacity-100' : 'scale-0 opacity-0',\n              )}\n            >\n              <Check\n                className=\"stroke-[var(--copy-icon-success-color)]\"\n                size={iconSize[size]}\n                strokeWidth={2}\n                aria-hidden=\"true\"\n              />\n            </div>\n            <div\n              className={cn(\n                'absolute transition-all',\n                copied ? 'scale-0 opacity-0' : 'scale-100 opacity-100',\n              )}\n            >\n              <Copy size={13} strokeWidth={2} aria-hidden=\"true\" />\n            </div>\n          </IconButton>\n        </TooltipTrigger>\n        <TooltipContent className=\"px-2 py-2 text-xs\">{tooltipText}</TooltipContent>\n      </Tooltip>\n    </TooltipProvider>\n  );\n}\n","import * as React from 'react';\nimport {type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {Tooltip, TooltipContent, TooltipTrigger} from '../tooltip';\nimport {iconButtonVariants} from './iconButtonVariants';\n\nexport interface IconButtonProps\n  extends\n    Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>,\n    VariantProps<typeof iconButtonVariants> {\n  label?: string;\n  children?: React.ReactNode;\n  tooltip?: string;\n  icon?: React.ReactNode;\n  outlined?: boolean;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n  (\n    {\n      className,\n      size,\n      shape,\n      variant,\n      label,\n      children,\n      icon,\n      tooltip,\n      outlined,\n      type = 'button',\n      ...props\n    },\n    ref,\n  ) => {\n    const button = (\n      <button\n        ref={ref}\n        type={type}\n        aria-label={props['aria-label'] ?? label}\n        className={cn(\n          iconButtonVariants({size, shape, variant}),\n          outlined &&\n            'h-[30px] w-[30px] rounded-sm border border-[var(--chekin-border-default)] bg-[var(--chekin-color-white)]',\n          className,\n        )}\n        {...props}\n      >\n        {icon ?? children}\n      </button>\n    );\n\n    if (!tooltip) return button;\n\n    return (\n      <Tooltip>\n        <TooltipTrigger asChild>{button}</TooltipTrigger>\n        <TooltipContent>{tooltip}</TooltipContent>\n      </Tooltip>\n    );\n  },\n);\nIconButton.displayName = 'IconButton';\n","import {type ReactNode} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Button, type ButtonProps} from '../button';\nimport {useCopyToClipboard} from '../hooks/use-copy-to-clipboard';\n\nexport type CopyLinkButtonProps = {\n  link: string | undefined;\n  labelText: string;\n  copiedExclamationText?: string;\n  className?: string;\n  disabled?: boolean;\n  leftAddon?: ReactNode;\n  onCopiedLink?: () => void;\n  variant?: ButtonProps['variant'];\n  size?: ButtonProps['size'];\n};\n\nexport function CopyLinkButton({\n  className,\n  link,\n  disabled,\n  labelText,\n  copiedExclamationText,\n  onCopiedLink,\n  leftAddon,\n  variant = 'outline',\n  size = 'sm',\n}: CopyLinkButtonProps) {\n  const {t} = useTranslation();\n  const {isCopied, copy} = useCopyToClipboard({value: link, onCopiedLink});\n\n  return (\n    <Button\n      className={className}\n      onClick={copy}\n      disabled={!link || disabled}\n      variant={variant}\n      size={size}\n    >\n      {leftAddon}\n      {isCopied\n        ? copiedExclamationText || t('copied_exclamation') || labelText\n        : labelText}\n    </Button>\n  );\n}\n","import {useEffect, useRef, useState} from 'react';\nimport {copyToClipboard} from '../lib/copy-to-clipboard';\n\nconst COPIED_TIMEOUT_S = 1.5;\ntype UseCopyToClipboardProps = {\n  value?: string | number;\n  onCopiedLink?: () => void;\n  onReset?: () => void;\n};\n\nfunction useCopyToClipboard({value, onCopiedLink, onReset}: UseCopyToClipboardProps) {\n  const [isCopied, setIsLinkCopied] = useState(false);\n  const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n  useEffect(() => {\n    return () => {\n      if (timeoutRef.current) {\n        clearTimeout(timeoutRef.current);\n      }\n    };\n  }, []);\n\n  const copy = () => {\n    if (!value) return;\n\n    if (timeoutRef.current) {\n      clearTimeout(timeoutRef.current);\n    }\n\n    copyToClipboard(value);\n    setIsLinkCopied(true);\n    timeoutRef.current = setTimeout(() => {\n      setIsLinkCopied(false);\n      onReset?.();\n    }, COPIED_TIMEOUT_S * 1000);\n    onCopiedLink?.();\n  };\n\n  return {isCopied, copy};\n}\n\nexport {useCopyToClipboard};\n","import {getDocument} from './utils';\n\nfunction copyToClipboardFallback(value: string) {\n  const targetDocument = getDocument();\n  const targetBody = targetDocument.body;\n\n  if (!targetBody) {\n    return;\n  }\n\n  const el = targetDocument.createElement('textarea');\n  el.value = value;\n  el.setAttribute('readonly', '');\n  el.style.position = 'fixed';\n  el.style.opacity = '0';\n  el.style.pointerEvents = 'none';\n  el.style.left = '-9999px';\n  targetBody.appendChild(el);\n  el.focus();\n  el.select();\n  targetDocument.execCommand('copy');\n  targetBody.removeChild(el);\n}\n\nexport function copyToClipboard(value: string | number) {\n  const text = typeof value === 'number' ? value.toString() : value;\n  const targetDocument = getDocument();\n  const clipboard =\n    targetDocument.defaultView?.navigator?.clipboard ?? globalThis.navigator?.clipboard;\n\n  if (!clipboard?.writeText) {\n    copyToClipboardFallback(text);\n    return;\n  }\n\n  void clipboard.writeText(text).catch(() => {\n    copyToClipboardFallback(text);\n  });\n}\n","import {type HTMLAttributes} from 'react';\nimport {CopyIcon} from '../copy-icon';\nimport {cn} from '../lib/cn';\n\ntype CopyStringProps = HTMLAttributes<HTMLDivElement> & {\n  value?: string;\n};\n\nfunction CopyString({value = '', className, ...props}: CopyStringProps) {\n  return (\n    <div className={cn('flex w-fit items-center gap-2', className)} {...props}>\n      <div className=\"copy-string_value w-full overflow-hidden text-ellipsis whitespace-nowrap text-left\">\n        {value}\n      </div>\n      <CopyIcon textToCopy={value} />\n    </div>\n  );\n}\n\nexport {CopyString};\nexport type {CopyStringProps};\n","import React from 'react';\nimport {Minus, Plus} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {ErrorMessage} from '../error-message';\n\nexport enum CounterSize {\n  S = 'small',\n  L = 'large',\n}\n\nexport type CounterProps = {\n  value: number;\n  onChange?: (value: number) => void;\n  disabled?: boolean;\n  readOnly?: boolean;\n  error?: string | boolean;\n  minNumber?: number;\n  maxNumber?: number;\n  size?: CounterSize;\n  className?: string;\n};\n\nconst getIconSize = (size?: CounterSize): number => {\n  if (size === CounterSize.S) {\n    return 16;\n  }\n  return 24;\n};\n\nconst getSizeClasses = (size?: CounterSize) => {\n  if (size === CounterSize.S) {\n    return {\n      button: 'w-6 h-6 rounded-lg',\n      container: 'gap-4',\n      number: 'text-sm leading-6',\n    };\n  }\n  return {\n    button: 'w-8 h-8 rounded-[10px]',\n    container: 'gap-6',\n    number: 'text-xl',\n  };\n};\n\nexport const Counter = ({\n  value,\n  error,\n  onChange,\n  disabled,\n  readOnly,\n  minNumber = 0,\n  maxNumber = 20,\n  size,\n  className,\n}: CounterProps) => {\n  const sizeClasses = getSizeClasses(size);\n  const iconSize = getIconSize(size);\n  const hasError = !!error;\n\n  const handleDecrease = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.stopPropagation();\n    event.preventDefault();\n    const checkedValue = value ?? 0;\n    if (checkedValue < 1) return;\n    if (!disabled) {\n      onChange?.(checkedValue - 1);\n    }\n  };\n\n  const handleIncrease = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.stopPropagation();\n    event.preventDefault();\n    const checkedValue = value ?? 0;\n    if (!disabled) {\n      onChange?.(checkedValue + 1);\n    }\n  };\n\n  return (\n    <div\n      className={cn(\n        'counter flex items-center flex-shrink-0 rounded-[20px] w-[136px] h-full relative',\n        sizeClasses.container,\n        className,\n      )}\n    >\n      {!readOnly && (\n        <button\n          type=\"button\"\n          disabled={disabled || value === minNumber}\n          onClick={handleDecrease}\n          aria-label=\"Decrease\"\n          className={cn(\n            'counter__decrease-button counter__button',\n            'flex items-center justify-center flex-shrink-0 p-0 relative',\n            'border transition-opacity',\n            'bg-transparent',\n            hasError\n              ? 'border-[var(--counter-error-border)]'\n              : 'border-[var(--counter-button-border)]',\n            'disabled:pointer-events-none disabled:opacity-70',\n            sizeClasses.button,\n          )}\n        >\n          <Minus size={iconSize} className=\"text-[var(--counter-icon-color)]\" />\n        </button>\n      )}\n      <span\n        className={cn(\n          'counter__value flex-grow text-center font-bold select-none',\n          hasError ? 'text-[var(--counter-error-text)]' : 'text-[var(--counter-text)]',\n          sizeClasses.number,\n        )}\n      >\n        {value}\n      </span>\n      {!readOnly && (\n        <button\n          type=\"button\"\n          disabled={disabled || value === maxNumber}\n          onClick={handleIncrease}\n          aria-label=\"Increase\"\n          className={cn(\n            'counter__increase-button counter__button',\n            'flex items-center justify-center flex-shrink-0 p-0 relative',\n            'border transition-opacity',\n            'bg-transparent',\n            hasError\n              ? 'border-[var(--counter-error-border)]'\n              : 'border-[var(--counter-button-border)]',\n            'disabled:pointer-events-none disabled:opacity-70',\n            sizeClasses.button,\n          )}\n        >\n          <Plus size={iconSize} className=\"text-[var(--counter-icon-color)]\" />\n        </button>\n      )}\n      {error && typeof error === 'string' && <ErrorMessage>{error}</ErrorMessage>}\n    </div>\n  );\n};\n","import {useTranslation} from 'react-i18next';\nimport {\n  type ColumnDef,\n  flexRender,\n  getCoreRowModel,\n  useReactTable,\n} from '@tanstack/react-table';\nimport {Table, TableBody, TableCell, TableHead, TableHeader, TableRow} from '../table';\n\nexport interface DataTableProps<TData, TValue> {\n  columns: ColumnDef<TData, TValue>[];\n  data: TData[];\n}\n\nexport function DataTable<TData, TValue>({columns, data}: DataTableProps<TData, TValue>) {\n  const {t} = useTranslation();\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n  });\n\n  return (\n    <div className=\"rounded-md border\">\n      <Table>\n        <TableHeader>\n          {table.getHeaderGroups().map(headerGroup => (\n            <TableRow key={headerGroup.id}>\n              {headerGroup.headers.map(header => {\n                return (\n                  <TableHead key={header.id}>\n                    {header.isPlaceholder\n                      ? null\n                      : flexRender(header.column.columnDef.header, header.getContext())}\n                  </TableHead>\n                );\n              })}\n            </TableRow>\n          ))}\n        </TableHeader>\n        <TableBody>\n          {table.getRowModel().rows?.length ? (\n            table.getRowModel().rows.map(row => (\n              <TableRow key={row.id} data-state={row.getIsSelected() && 'selected'}>\n                {row.getVisibleCells().map(cell => (\n                  <TableCell key={cell.id}>\n                    {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                  </TableCell>\n                ))}\n              </TableRow>\n            ))\n          ) : (\n            <TableRow>\n              <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n                {t('no_results')}\n              </TableCell>\n            </TableRow>\n          )}\n        </TableBody>\n      </Table>\n    </div>\n  );\n}\n","import {\n  type HTMLAttributes,\n  type TdHTMLAttributes,\n  type ThHTMLAttributes,\n  forwardRef,\n} from 'react';\nimport {LoadingBar} from '../loading-bar';\nimport {cn} from '../lib/cn';\n\nconst Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(\n  ({className, ...props}, ref) => (\n    <div className=\"relative w-full overflow-auto rounded-[var(--table-radius)] border border-[var(--table-border)]\">\n      <table\n        ref={ref}\n        className={cn('w-full caption-bottom text-sm', className)}\n        {...props}\n      />\n    </div>\n  ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = forwardRef<\n  HTMLTableSectionElement,\n  HTMLAttributes<HTMLTableSectionElement>\n>(({className, ...props}, ref) => (\n  <thead\n    ref={ref}\n    className={cn(\n      '[&_tr]:border-b',\n      'whitespace-nowrap bg-[var(--table-head-bg)] font-medium text-[var(--table-head-text)]',\n      className,\n    )}\n    {...props}\n  />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = forwardRef<\n  HTMLTableSectionElement,\n  HTMLAttributes<HTMLTableSectionElement> & {\n    isLoading?: boolean;\n  }\n>(({className, children, isLoading, ...props}, ref) => (\n  <tbody\n    ref={ref}\n    className={cn('[&_tr:last-child]:border-0', className, {\n      relative: isLoading,\n    })}\n    {...props}\n  >\n    {isLoading && (\n      <tr className=\"absolute bottom-0 left-0 right-0 top-0 z-20 cursor-wait bg-[var(--table-loading-overlay-bg)] opacity-50\" />\n    )}\n    {isLoading && (\n      <tr className=\"!m-0 !p-0\">\n        <td className=\"!m-0 !p-0\">\n          <LoadingBar className=\"absolute z-20 p-0\" />\n        </td>\n      </tr>\n    )}\n    {children}\n  </tbody>\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = forwardRef<\n  HTMLTableSectionElement,\n  HTMLAttributes<HTMLTableSectionElement>\n>(({className, ...props}, ref) => (\n  <tfoot\n    ref={ref}\n    className={cn(\n      'border-t bg-[var(--table-footer-bg)] font-medium [&>tr]:last:border-b-0',\n      className,\n    )}\n    {...props}\n  />\n));\nTableFooter.displayName = 'TableFooter';\n\ntype TableRowProps = HTMLAttributes<HTMLTableRowElement> & {\n  clickable?: boolean;\n};\n\nconst TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n  ({className, clickable, ...props}, ref) => (\n    <tr\n      ref={ref}\n      className={cn(\n        'border-b pl-4 text-[15px] font-medium transition-colors data-[state=selected]:bg-[var(--table-row-selected-bg)]',\n        clickable && 'cursor-pointer hover:bg-[var(--table-row-hover-bg)]',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = forwardRef<\n  HTMLTableCellElement,\n  ThHTMLAttributes<HTMLTableCellElement>\n>(({className, ...props}, ref) => (\n  <th\n    ref={ref}\n    className={cn(\n      'h-12 pr-4 text-left align-middle font-medium first:pl-4 [&:has([role=checkbox])]:pr-0',\n      className,\n    )}\n    {...props}\n  />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = forwardRef<\n  HTMLTableCellElement,\n  TdHTMLAttributes<HTMLTableCellElement>\n>(({className, ...props}, ref) => (\n  <td\n    ref={ref}\n    className={cn(\n      'py-3 pr-4 align-middle first:pl-4 [&:has([role=checkbox])]:pr-0',\n      className,\n    )}\n    {...props}\n  />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = forwardRef<\n  HTMLTableCaptionElement,\n  HTMLAttributes<HTMLTableCaptionElement>\n>(({className, ...props}, ref) => (\n  <caption\n    ref={ref}\n    className={cn('mt-4 text-sm text-[var(--table-caption-text)]', className)}\n    {...props}\n  />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n};\n","import {cn} from '../lib/cn';\n\nexport type LoadingBarProps = {\n  className?: string;\n};\n\nexport function LoadingBar({className}: LoadingBarProps) {\n  return (\n    <div className={cn('w-full p-4', className)}>\n      <div className=\"relative h-1 w-full overflow-hidden rounded-full bg-[var(--chekin-color-white)]\">\n        <div className=\"absolute top-0 h-full animate-[chekin-loading-bar_0.8s_linear_infinite] rounded-full bg-[var(--primary)]\" />\n      </div>\n    </div>\n  );\n}\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport {VisuallyHidden} from '@radix-ui/react-visually-hidden';\nimport {XIcon} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {\n  useCombinedRef,\n  useIframeFocusTrapFallback,\n  useIframeOpenAutoFocusGuard,\n} from '../hooks';\nimport {getCustomContainer} from '../lib/utils';\n\n/**\n * Radix Dialog's TitleWarning uses document.getElementById to check for a title,\n * which can miss iframe-hosted SDK documents. This mirrors the source package\n * workaround by adding a hidden title in the main document when needed.\n */\nfunction useIframeTitleFix(titleRef: React.RefObject<HTMLHeadingElement | null>) {\n  React.useEffect(() => {\n    if (!window.chekinCustomDocument) {\n      return;\n    }\n\n    const titleId = titleRef.current?.id;\n    if (!titleId) return;\n\n    const hiddenTitle = document.createElement('span');\n    hiddenTitle.id = titleId;\n    hiddenTitle.style.display = 'none';\n    document.body.appendChild(hiddenTitle);\n\n    return () => {\n      hiddenTitle.remove();\n    };\n  }, [titleRef]);\n}\n\nfunction Dialog({...props}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({...props}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({...props}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({...props}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst dialogOverlayClasses =\n  'fixed inset-0 z-50 bg-[var(--dialog-overlay-bg)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0';\n\nconst scrollableOverlayClasses =\n  'fixed inset-0 z-50 flex flex-col items-center overflow-y-auto overscroll-none pb-[19px] pt-[20px]';\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({className, ...props}, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    data-slot=\"dialog-overlay\"\n    className={cn(dialogOverlayClasses, className)}\n    {...props}\n  />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentClasses =\n  'relative z-50 my-auto w-full max-w-[calc(100%-2rem)] rounded-[var(--dialog-content-radius)] border border-[var(--dialog-content-border)] bg-[var(--dialog-content-bg)] p-6 text-[var(--dialog-content-text)] shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:max-w-2xl';\n\nconst dialogCloseButtonClasses =\n  'absolute right-4 top-4 flex size-6 items-center justify-center rounded-[var(--dialog-close-radius)] opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:shadow-chekin-focus disabled:pointer-events-none [&_svg:not([class*=size-])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0';\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n    showCloseButton?: boolean;\n    container?: HTMLElement;\n    lockScroll?: boolean;\n    overlayClassName?: string;\n  }\n>(\n  (\n    {\n      className,\n      showCloseButton = true,\n      children,\n      container,\n      lockScroll = true,\n      overlayClassName,\n      ...props\n    },\n    ref,\n  ) => {\n    const contentRef = React.useRef<HTMLDivElement>(null);\n    const combinedRef = useCombinedRef(contentRef, ref);\n    const handleKeyDown = useIframeFocusTrapFallback(contentRef, props.onKeyDown);\n    const handleOpenAutoFocus = useIframeOpenAutoFocusGuard(props.onOpenAutoFocus);\n\n    const contentElement = (\n      <DialogPrimitive.Content\n        ref={combinedRef}\n        data-slot=\"dialog-content\"\n        className={cn(dialogContentClasses, className)}\n        {...props}\n        onKeyDown={handleKeyDown}\n        onOpenAutoFocus={handleOpenAutoFocus}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            className={dialogCloseButtonClasses}\n          >\n            <XIcon />\n            <span className=\"sr-only\">Close</span>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Content>\n    );\n\n    const portalContainer = container || getCustomContainer();\n\n    return (\n      <DialogPortal data-slot=\"dialog-portal\" container={portalContainer}>\n        {lockScroll ? (\n          <DialogOverlay\n            className={cn(\n              dialogOverlayClasses,\n              scrollableOverlayClasses,\n              overlayClassName,\n            )}\n          >\n            {contentElement}\n          </DialogOverlay>\n        ) : (\n          <div\n            className={cn(\n              dialogOverlayClasses,\n              scrollableOverlayClasses,\n              overlayClassName,\n            )}\n          >\n            {contentElement}\n          </div>\n        )}\n      </DialogPortal>\n    );\n  },\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({className, ...props}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    data-slot=\"dialog-header\"\n    className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n    {...props}\n  />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({className, ...props}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    data-slot=\"dialog-footer\"\n    className={cn(\n      'flex flex-col-reverse gap-[var(--dialog-footer-gap)] sm:flex-row sm:justify-end',\n      className,\n    )}\n    {...props}\n  />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({className, ...props}, ref) => {\n  const titleRef = React.useRef<HTMLHeadingElement>(null);\n  const combinedRef = useCombinedRef(titleRef, ref);\n\n  useIframeTitleFix(titleRef);\n\n  return (\n    <DialogPrimitive.Title\n      ref={combinedRef}\n      data-slot=\"dialog-title\"\n      className={cn(\n        'text-[length:var(--dialog-title-font-size)] font-[var(--dialog-title-font-weight)] leading-none',\n        className,\n      )}\n      {...props}\n    />\n  );\n});\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({className, ...props}, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    data-slot=\"dialog-description\"\n    className={cn('text-sm text-[var(--dialog-description-text)]', className)}\n    {...props}\n  />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nconst DialogVisuallyHidden = ({children}: {children: React.ReactNode}) => (\n  <VisuallyHidden>{children}</VisuallyHidden>\n);\nDialogVisuallyHidden.displayName = 'DialogVisuallyHidden';\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogTrigger,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n  DialogVisuallyHidden,\n};\n","import {useEffect} from 'react';\nimport {scrollToTop} from '../lib/utils';\n\nexport function useScrollToTop() {\n  useEffect(() => {\n    scrollToTop();\n  }, []);\n}\n","import React from 'react';\n\nexport function useAbortController() {\n  const [abortController, setAbortController] = React.useState(() => {\n    return new AbortController();\n  });\n\n  const setupAbortController = React.useCallback(() => {\n    const abortController = new AbortController();\n    setAbortController(abortController);\n\n    return abortController.signal;\n  }, []);\n\n  return {\n    abortController,\n    setupAbortController,\n  };\n}\n","import {useCallback, useState} from 'react';\n\ntype AccordionType = 'single' | 'multiple';\n\ntype UseAccordionStateReturn<T extends AccordionType> = {\n  value: T extends 'multiple' ? string[] : string;\n  toggle: (itemValue: string) => void;\n  open: (itemValue: string) => void;\n  close: (itemValue: string) => void;\n  closeAll: () => void;\n  getOpenItems: () => string[];\n};\n\nexport function useAccordionState<T extends AccordionType = 'single'>(props?: {\n  defaultValue?: T extends 'multiple' ? string[] : string;\n  type?: T;\n}): UseAccordionStateReturn<T> {\n  const type = props?.type ?? 'single';\n\n  const [value, setValue] = useState<string | string[]>(() => {\n    if (props?.defaultValue !== undefined) return props.defaultValue;\n    return type === 'multiple' ? [] : '';\n  });\n\n  const closeAll = useCallback(() => {\n    setValue(type === 'multiple' ? [] : '');\n  }, [type]);\n\n  const toggle = useCallback(\n    (itemValue: string) => {\n      setValue(prev => {\n        if (type === 'multiple') {\n          const current = Array.isArray(prev) ? prev : [];\n          return current.includes(itemValue)\n            ? current.filter(v => v !== itemValue)\n            : [...current, itemValue];\n        }\n\n        return prev === itemValue ? '' : itemValue;\n      });\n    },\n    [type],\n  );\n\n  const open = useCallback(\n    (itemValue: string) => {\n      setValue(prev => {\n        if (type === 'multiple') {\n          const current = Array.isArray(prev) ? prev : [];\n          return current.includes(itemValue) ? current : [...current, itemValue];\n        }\n\n        return itemValue;\n      });\n    },\n    [type],\n  );\n\n  const close = useCallback(\n    (itemValue: string) => {\n      setValue(prev => {\n        if (type === 'multiple') {\n          const current = Array.isArray(prev) ? prev : [];\n          return current.filter(v => v !== itemValue);\n        }\n\n        return prev === itemValue ? '' : prev;\n      });\n    },\n    [type],\n  );\n\n  const getOpenItems = useCallback(() => {\n    if (type === 'multiple') {\n      return Array.isArray(value) ? value : [];\n    }\n\n    return value ? [value as string] : [];\n  }, [type, value]);\n\n  return {\n    value: value as UseAccordionStateReturn<T>['value'],\n    toggle,\n    open,\n    close,\n    closeAll,\n    getOpenItems,\n  };\n}\n","import {useEffect} from 'react';\nimport {useEvent} from './use-event';\n\ntype UseClickEscapeProps = {\n  enabled?: boolean;\n  onClick?: () => void;\n};\n\nexport function useClickEscape({enabled = true, onClick}: UseClickEscapeProps) {\n  const handler = useEvent(onClick);\n\n  useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.key === 'Escape' && enabled) {\n        handler();\n      }\n    };\n\n    window.addEventListener('keydown', handleKeyDown);\n    return () => window.removeEventListener('keydown', handleKeyDown);\n  }, [handler, enabled]);\n}\n","import {useCallback, useLayoutEffect, useRef} from 'react';\n\nfunction useEvent<Args extends unknown[], Return>(fn?: (...args: Args) => Return) {\n  const fnRef = useRef(fn);\n\n  useLayoutEffect(() => {\n    fnRef.current = fn;\n  }, [fn]);\n\n  const eventCb = useCallback(\n    (...args: Args) => {\n      return fnRef.current?.apply(null, args);\n    },\n    [fnRef],\n  );\n\n  return eventCb as NonNullable<typeof fn>;\n}\n\nexport {useEvent};\n","import {type MutableRefObject, type Ref, type RefCallback, useCallback} from 'react';\n\nexport function useCombinedRef<T>(...refs: Array<Ref<T> | undefined>): RefCallback<T> {\n  return useCallback(\n    (node: T) => {\n      refs.forEach(ref => {\n        if (!ref) return;\n\n        if (typeof ref === 'function') {\n          ref(node);\n          return;\n        }\n\n        (ref as MutableRefObject<T | null>).current = node;\n      });\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps, react-hooks/use-memo\n    refs,\n  );\n}\n","import {useEffect, useState} from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\ntype UseIsMobileProps = {\n  breakpoint?: number;\n};\n\nexport function useIsMobile({breakpoint = MOBILE_BREAKPOINT}: UseIsMobileProps = {}) {\n  const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined);\n\n  useEffect(() => {\n    const mediaQuery = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);\n    const onChange = () => {\n      setIsMobile(window.innerWidth < breakpoint);\n    };\n\n    setIsMobile(window.innerWidth < breakpoint);\n\n    if (!mediaQuery) {\n      return;\n    }\n\n    mediaQuery.addEventListener('change', onChange);\n\n    return () => {\n      mediaQuery.removeEventListener('change', onChange);\n    };\n  }, [breakpoint]);\n\n  return !!isMobile;\n}\n","import {useEffect, useRef} from 'react';\n\nexport function useIsMounted() {\n  const isMounted = useRef(false);\n\n  useEffect(() => {\n    isMounted.current = true;\n\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n\n  return isMounted;\n}\n","import {useCallback, useEffect, useRef} from 'react';\nimport {useEvent} from './use-event';\n\ntype UseLoadMoreParams = {\n  hasNextPage: boolean;\n  loading: boolean;\n  disabled?: boolean;\n  onLoadMore: () => void;\n  threshold?: number;\n  rootMargin?: string;\n};\n\nexport function useLoadMore<T extends HTMLElement = HTMLDivElement>({\n  hasNextPage,\n  loading,\n  disabled,\n  onLoadMore,\n  threshold = 0.1,\n  rootMargin,\n}: UseLoadMoreParams) {\n  const elementRef = useRef<T | null>(null);\n  const observerRef = useRef<IntersectionObserver | null>(null);\n  const handleLoadMore = useEvent(onLoadMore);\n\n  const cleanupObserver = useCallback(() => {\n    observerRef.current?.disconnect();\n    observerRef.current = null;\n  }, []);\n\n  const observeElement = useCallback(\n    (element: T | null) => {\n      cleanupObserver();\n\n      if (!element || typeof IntersectionObserver === 'undefined') return;\n\n      const observer = new IntersectionObserver(\n        entries => {\n          const entry = entries[0];\n          if (!entry?.isIntersecting || !hasNextPage || loading || disabled) return;\n          handleLoadMore();\n        },\n        {threshold, rootMargin},\n      );\n\n      observer.observe(element);\n      observerRef.current = observer;\n    },\n    [\n      cleanupObserver,\n      disabled,\n      handleLoadMore,\n      hasNextPage,\n      loading,\n      rootMargin,\n      threshold,\n    ],\n  );\n\n  const loadMoreRef = useCallback(\n    (element: T | null) => {\n      elementRef.current = element;\n      observeElement(element);\n    },\n    [observeElement],\n  );\n\n  useEffect(() => {\n    return cleanupObserver;\n  }, [cleanupObserver]);\n\n  return [loadMoreRef] as const;\n}\n","import {useCallback, useState} from 'react';\n\nexport function useModalControls(\n  initState = false,\n  {disabled}: {disabled?: boolean} = {},\n) {\n  const [isOpen, setIsOpen] = useState(initState);\n\n  const openModal = useCallback(() => {\n    if (disabled) return;\n    setIsOpen(true);\n  }, [disabled]);\n\n  const closeModal = useCallback(() => {\n    if (disabled) return;\n    setIsOpen(false);\n  }, [disabled]);\n\n  const toggleModal = useCallback(() => {\n    if (disabled) return;\n    setIsOpen(value => !value);\n  }, [disabled]);\n\n  return {\n    isOpen,\n    openModal,\n    closeModal,\n    toggleModal,\n    setIsOpen,\n  };\n}\n","import {useCallback, useEffect, useRef, useState} from 'react';\nimport {getWindow} from '../lib/utils';\nimport {useTimeoutRef} from './use-timeout-ref';\n\nfunction useIsFirstRender(): boolean {\n  const isFirst = useRef(true);\n\n  if (isFirst.current) {\n    isFirst.current = false;\n\n    return true;\n  }\n\n  return isFirst.current;\n}\n\ntype UseModalControlsOptions = {\n  key: string;\n  enabled?: boolean;\n  initState?: boolean;\n};\n\nexport function useModalWithHistoryControls({\n  key,\n  initState = false,\n  enabled = true,\n}: UseModalControlsOptions) {\n  const isFirstRender = useIsFirstRender();\n  const [isOpen, setIsOpen] = useState(initState);\n  const scrollRef = useRef(0);\n  const resetDelayRef = useRef(false);\n  const resetDelayTimeoutRef = useTimeoutRef();\n\n  const addHash = useCallback(() => {\n    const targetWindow = getWindow();\n    const historyState = targetWindow.history.state;\n\n    if (enabled && historyState?.popupKey !== key) {\n      scrollRef.current = targetWindow.scrollY;\n      targetWindow.history.pushState(\n        {\n          ...historyState,\n          popupKey: key,\n          isPopupOpen: true,\n        },\n        '',\n        targetWindow.location.pathname,\n      );\n      targetWindow.scrollTo(0, scrollRef.current);\n    }\n  }, [enabled, key]);\n\n  const openModal = useCallback(() => {\n    setIsOpen(true);\n    addHash();\n  }, [addHash]);\n\n  const resetHash = useCallback(() => {\n    const targetWindow = getWindow();\n    const historyState = targetWindow.history.state;\n\n    if (enabled && historyState?.popupKey === key && !resetDelayRef.current) {\n      targetWindow.history.back();\n\n      resetDelayRef.current = true;\n\n      resetDelayTimeoutRef.current = setTimeout(() => {\n        resetDelayRef.current = false;\n      }, 300);\n    }\n  }, [enabled, key, resetDelayTimeoutRef]);\n\n  const closeModal = useCallback(() => {\n    setIsOpen(false);\n    resetHash();\n  }, [resetHash]);\n\n  const toggleModal = useCallback(() => {\n    setIsOpen(!isOpen);\n    if (isOpen) {\n      resetHash();\n    } else {\n      addHash();\n    }\n  }, [addHash, isOpen, resetHash]);\n\n  useEffect(() => {\n    const targetWindow = getWindow();\n\n    const handler = () => {\n      if (enabled && isOpen) {\n        setIsOpen(false);\n      }\n    };\n\n    targetWindow.addEventListener('popstate', handler, false);\n    return () => {\n      targetWindow.removeEventListener('popstate', handler, false);\n    };\n  }, [enabled, isOpen]);\n\n  useEffect(\n    function resetDeprecatedState() {\n      const targetWindow = getWindow();\n      const historyState = targetWindow.history.state;\n\n      if (isFirstRender && !isOpen && historyState?.popupKey === key) {\n        targetWindow.history.back();\n      }\n    },\n    [isFirstRender, isOpen, key],\n  );\n\n  return {\n    isOpen,\n    openModal,\n    closeModal,\n    toggleModal,\n    setIsOpen,\n  };\n}\n","import {useCallback, useEffect, useRef} from 'react';\n\nexport function useTimeoutRef() {\n  const timeoutIdRef = useRef<ReturnType<typeof setTimeout>>();\n\n  const resetTimeout = useCallback(() => {\n    if (timeoutIdRef.current) {\n      clearTimeout(timeoutIdRef.current);\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      resetTimeout();\n    };\n  }, [resetTimeout]);\n\n  return timeoutIdRef;\n}\n","import {type RefObject, useCallback, useEffect, useRef} from 'react';\nimport {getDocument} from '../lib/utils';\n\ntype OutsideClickHandler = (event: Event) => void;\n\ntype UseOutsideClickProps<T extends Element> = {\n  elementRef: RefObject<T> | null;\n  onOutsideClick: OutsideClickHandler | null;\n  triggerRef?: RefObject<Element> | null;\n  isDisabled?: boolean;\n  nested?: string[] | string;\n};\n\nexport function useOutsideClick<T extends Element>({\n  elementRef,\n  onOutsideClick,\n  triggerRef,\n  isDisabled,\n  nested,\n}: UseOutsideClickProps<T>) {\n  const handleOutsideClick = useRef(onOutsideClick);\n  handleOutsideClick.current = onOutsideClick;\n\n  const checkNestedElements = useCallback(\n    (event: Event, ownerDocument: Document) => {\n      const checkIsElementClickedBySelector = (selector: string) => {\n        const nestedElement = ownerDocument.querySelector(selector);\n        return nestedElement?.contains(event.target as Node);\n      };\n\n      const checkDataAttribute = () => {\n        const target = event.target;\n        const HTMLElementConstructor =\n          ownerDocument.defaultView?.HTMLElement ?? HTMLElement;\n\n        if (!target || !(target instanceof HTMLElementConstructor)) {\n          return false;\n        }\n\n        let current: HTMLElement | null = target;\n        while (current) {\n          if (current.hasAttribute('data-exclude-from-outside-click')) {\n            return true;\n          }\n          current = current.parentElement;\n        }\n        return false;\n      };\n\n      if (nested) {\n        if (typeof nested === 'string') {\n          if (checkIsElementClickedBySelector(nested)) return true;\n        } else {\n          if (nested.some(checkIsElementClickedBySelector)) return true;\n        }\n      }\n\n      return checkDataAttribute();\n    },\n    [nested],\n  );\n\n  useEffect(() => {\n    if (isDisabled || !handleOutsideClick.current) {\n      return;\n    }\n\n    const ownerDocument =\n      elementRef?.current?.ownerDocument ??\n      triggerRef?.current?.ownerDocument ??\n      getDocument();\n\n    function handleClickOutside(event: Event) {\n      const target = event.target;\n      const NodeConstructor = ownerDocument.defaultView?.Node ?? Node;\n\n      if (!target || !(target instanceof NodeConstructor)) {\n        return;\n      }\n\n      const targetNode = target as Node;\n      const isNestedElement = checkNestedElements(event, ownerDocument);\n\n      if (\n        elementRef?.current &&\n        !elementRef.current.contains(targetNode) &&\n        !triggerRef?.current?.contains(targetNode) &&\n        !isNestedElement\n      ) {\n        handleOutsideClick.current?.(event);\n      }\n    }\n\n    ownerDocument.addEventListener('mousedown', handleClickOutside, true);\n    ownerDocument.addEventListener('touchstart', handleClickOutside, true);\n    return () => {\n      ownerDocument.removeEventListener('mousedown', handleClickOutside, true);\n      ownerDocument.removeEventListener('touchstart', handleClickOutside, true);\n    };\n  }, [checkNestedElements, elementRef, isDisabled, triggerRef]);\n}\n","import React from 'react';\nimport {getWindow} from '../lib/utils';\n\nconst eventName = 'resize';\n\nfunction getMediaQuery(maxWidth: string | null, matchString?: string) {\n  if (matchString) {\n    return matchString;\n  }\n\n  return maxWidth ? `(max-width: ${maxWidth})` : null;\n}\n\nexport function useScreenResize(maxWidth: string | null, matchString?: string) {\n  const [isInitialized, setIsInitialized] = React.useState(false);\n  const [isMatch, setIsMatch] = React.useState(false);\n\n  const handleResizeEvent = React.useCallback(() => {\n    const adjustedMaxWidth = `${parseInt(maxWidth ?? '', 10) - 1}px`;\n    const mediaQuery = getMediaQuery(adjustedMaxWidth, matchString);\n    setIsInitialized(true);\n\n    if (!mediaQuery) {\n      setIsMatch(false);\n      return;\n    }\n\n    const media = getWindow().matchMedia(mediaQuery);\n    setIsMatch(Boolean(media?.matches));\n  }, [maxWidth, matchString]);\n\n  React.useEffect(() => {\n    handleResizeEvent();\n    getWindow().addEventListener(eventName, handleResizeEvent);\n\n    return () => {\n      getWindow().removeEventListener(eventName, handleResizeEvent);\n    };\n  }, [handleResizeEvent]);\n\n  return {isMatch, isInitialized};\n}\n","import {useCallback, useLayoutEffect} from 'react';\nimport {getDocument} from '../lib/utils';\n\nexport function useLockBodyScroll(needLock?: boolean) {\n  const lockScroll = useCallback(() => {\n    getDocument().getElementsByTagName('body')[0].style.overflow = 'hidden';\n  }, []);\n\n  const resetScroll = useCallback(() => {\n    getDocument().getElementsByTagName('body')[0].style.overflow = 'auto';\n  }, []);\n\n  useLayoutEffect(() => {\n    if (needLock) {\n      lockScroll();\n    } else {\n      resetScroll();\n    }\n  }, [lockScroll, needLock, resetScroll]);\n\n  return {resetScroll, lockScroll};\n}\n","import {type RefObject, useEffect} from 'react';\nimport {getChekinRuntimeSettings} from '../lib/runtimeSettings';\n\ntype UseScrollFrameIntoViewOptions = {\n  behavior?: ScrollBehavior;\n  elementRef?: RefObject<HTMLElement | null>;\n};\n\nexport function useScrollFrameIntoView(\n  active?: boolean,\n  options: UseScrollFrameIntoViewOptions = {},\n) {\n  const {behavior = 'smooth', elementRef} = options;\n\n  useEffect(() => {\n    const sdkWindow = window;\n\n    if (!active || !getChekinRuntimeSettings()?.autoHeight) {\n      return;\n    }\n\n    const frame = sdkWindow.chekinCustomFrame;\n\n    if (!frame) {\n      return;\n    }\n\n    const parentWindow = window.parent;\n\n    const scrollToElement = () => {\n      const frameRect = frame.getBoundingClientRect();\n\n      if (elementRef?.current) {\n        const elementRect = elementRef.current.getBoundingClientRect();\n        const elementCenterInFrame = elementRect.top + elementRect.height / 2;\n        const elementCenterInParent = frameRect.top + elementCenterInFrame;\n        const targetScroll =\n          parentWindow.scrollY + elementCenterInParent - parentWindow.innerHeight / 2;\n\n        parentWindow.scrollTo({\n          top: Math.max(0, targetScroll),\n          behavior,\n        });\n        return;\n      }\n\n      frame.scrollIntoView({behavior, block: 'start'});\n    };\n\n    requestAnimationFrame(() => {\n      requestAnimationFrame(scrollToElement);\n    });\n  }, [active, behavior, elementRef]);\n}\n","type ChekinRuntimeSettings = {\n  autoHeight?: boolean;\n};\n\nexport function getChekinRuntimeSettings(): ChekinRuntimeSettings {\n  return window.ChekinProSettings || window.ChekinHousingsSDKSettings || {};\n}\n\nexport function isMobileModalModeAvailable() {\n  const settings = getChekinRuntimeSettings();\n  return !settings.autoHeight;\n}\n","import {type RefObject, useEffect, useRef, useState} from 'react';\n\nconst SCROLL_THRESHOLD = 1;\n\nexport type ScrollableAreaState = {\n  canScrollUp: boolean;\n  canScrollDown: boolean;\n};\n\nexport function getScrollableAreaState(element: HTMLElement): ScrollableAreaState {\n  const {scrollTop, scrollHeight, clientHeight} = element;\n  const canScrollUp = scrollTop > SCROLL_THRESHOLD;\n  const canScrollDown = scrollTop + clientHeight < scrollHeight - SCROLL_THRESHOLD;\n  return {canScrollUp, canScrollDown};\n}\n\nexport type UseScrollableAreaOptions = {\n  ref?: RefObject<HTMLElement | null>;\n};\n\nexport type UseScrollableAreaResult<T extends HTMLElement = HTMLDivElement> = {\n  ref: RefObject<T | null>;\n  canScrollUp: boolean;\n  canScrollDown: boolean;\n};\n\nexport function useScrollableArea<T extends HTMLElement = HTMLDivElement>(\n  options: UseScrollableAreaOptions = {},\n): UseScrollableAreaResult<T> {\n  const internalRef = useRef<T>(null);\n  const ref = (options.ref ?? internalRef) as RefObject<HTMLElement | null>;\n  const [state, setState] = useState({canScrollUp: false, canScrollDown: false});\n\n  useEffect(() => {\n    const element = ref.current;\n    if (!element) return;\n\n    const updateState = () => {\n      const newState = getScrollableAreaState(element);\n      setState(prev =>\n        prev.canScrollUp !== newState.canScrollUp ||\n        prev.canScrollDown !== newState.canScrollDown\n          ? newState\n          : prev,\n      );\n    };\n\n    updateState();\n\n    const resizeObserver = new ResizeObserver(updateState);\n    resizeObserver.observe(element);\n\n    element.addEventListener('scroll', updateState, {passive: true});\n\n    return () => {\n      resizeObserver.disconnect();\n      element.removeEventListener('scroll', updateState);\n    };\n  }, [ref]);\n\n  return {\n    ref: ref as RefObject<T | null>,\n    ...state,\n  };\n}\n","import {useEffect, useState} from 'react';\nimport {useEvent} from './use-event';\n\nexport function useDebounce<ValueType = string>(\n  value: ValueType,\n  delayMs = 1000,\n  handleChange?: (value: ValueType) => void,\n): [ValueType, (value: ValueType) => void] {\n  const onChange = useEvent(handleChange);\n  const [debouncedValue, setDebouncedValue] = useState(value);\n\n  useEffect(() => {\n    const handler = setTimeout(() => {\n      setDebouncedValue(value);\n    }, delayMs);\n\n    return () => {\n      clearTimeout(handler);\n    };\n  }, [value, delayMs]);\n\n  useEffect(() => {\n    onChange?.(debouncedValue);\n  }, [debouncedValue, onChange]);\n\n  return [debouncedValue, setDebouncedValue];\n}\n","import {useCallback, useRef} from 'react';\nimport {useEvent} from './use-event';\n\nexport function useDebouncedFunction<Args extends unknown[]>(\n  callback: (...args: Args) => void,\n  delay: number,\n) {\n  const timerRef = useRef<ReturnType<typeof setTimeout>>();\n  const immediateCalling = useRef(false);\n  const callbackFn = useEvent(callback);\n\n  const throttled = useCallback(\n    (...args: Args) => {\n      clearTimeout(timerRef.current as unknown as number);\n\n      if (immediateCalling.current) {\n        immediateCalling.current = false;\n        callbackFn?.(...args);\n      } else {\n        timerRef.current = setTimeout(() => {\n          immediateCalling.current = false;\n          callbackFn?.(...args);\n        }, delay);\n      }\n    },\n    [callbackFn, delay],\n  );\n\n  const immediate = useCallback(() => {\n    immediateCalling.current = true;\n  }, []);\n\n  return {throttled, immediate};\n}\n","import {useEffect, useRef} from 'react';\nimport {isObject} from '../lib/utils';\n\nexport function usePrevious<T>(value: T, defaultValue?: T) {\n  const ref = useRef<T | undefined>(defaultValue);\n\n  useEffect(() => {\n    ref.current = isObject(value) ? {...value} : value;\n  }, [value]);\n\n  return ref.current;\n}\n","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport {SessionStorage} from '../storage';\n\nexport interface PaginationState {\n  page: number;\n  pageSize: number;\n  totalItems: number;\n}\n\nexport interface PaginationConfig {\n  key: string;\n  defaultPageSize?: number;\n  defaultPage?: number;\n}\n\nexport interface UsePaginationReturn {\n  page: number;\n  pageSize: number;\n  totalItems: number;\n  pages: number;\n\n  setPage: (page: number) => void;\n  setPageSize: (pageSize: number) => void;\n  setTotalItems: (totalItems: number) => void;\n  nextPage: () => void;\n  previousPage: () => void;\n  goToFirstPage: () => void;\n  goToLastPage: () => void;\n  reset: () => void;\n\n  hasNextPage: boolean;\n  hasPreviousPage: boolean;\n  startItem: number;\n  endItem: number;\n  isEmpty: boolean;\n}\n\nconst DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_PAGE = 1;\n\nexport function usePagination(config: PaginationConfig): UsePaginationReturn {\n  const {key, defaultPageSize = DEFAULT_PAGE_SIZE, defaultPage = DEFAULT_PAGE} = config;\n\n  const [state, setState] = useState<PaginationState>(() => {\n    const stored = SessionStorage.get<Partial<PaginationState>>(`pagination-${key}`);\n\n    if (stored) {\n      return {\n        page: stored.page || defaultPage,\n        pageSize: stored.pageSize || defaultPageSize,\n        totalItems: stored.totalItems || 0,\n      };\n    }\n\n    return {\n      page: defaultPage,\n      pageSize: defaultPageSize,\n      totalItems: 0,\n    };\n  });\n\n  useEffect(() => {\n    SessionStorage.set(`pagination-${key}`, state);\n  }, [key, state]);\n\n  const pages = useMemo(() => {\n    return state.totalItems > 0 ? Math.ceil(state.totalItems / state.pageSize) : 0;\n  }, [state.totalItems, state.pageSize]);\n\n  const hasNextPage = useMemo(() => state.page < pages, [state.page, pages]);\n  const hasPreviousPage = useMemo(() => state.page > 1, [state.page]);\n\n  const startItem = useMemo(() => {\n    return state.totalItems === 0 ? 0 : (state.page - 1) * state.pageSize + 1;\n  }, [state.page, state.pageSize, state.totalItems]);\n\n  const endItem = useMemo(() => {\n    return Math.min(state.page * state.pageSize, state.totalItems);\n  }, [state.page, state.pageSize, state.totalItems]);\n\n  const isEmpty = useMemo(() => state.totalItems === 0, [state.totalItems]);\n\n  const setPage = useCallback(\n    (page: number) => {\n      const clampedPage = Math.max(1, Math.min(page, pages || 1));\n      setState(prev => ({...prev, page: clampedPage}));\n    },\n    [pages],\n  );\n\n  const setPageSize = useCallback((pageSize: number) => {\n    const validPageSize = Math.max(1, pageSize);\n    setState(prev => {\n      const currentFirstItem = (prev.page - 1) * prev.pageSize + 1;\n      const newPage = Math.max(1, Math.ceil(currentFirstItem / validPageSize));\n\n      return {\n        ...prev,\n        pageSize: validPageSize,\n        page: newPage,\n      };\n    });\n  }, []);\n\n  const setTotalItems = useCallback((totalItems: number) => {\n    const validTotalItems = Math.max(0, totalItems);\n    setState(prev => {\n      const newPages =\n        validTotalItems > 0 ? Math.ceil(validTotalItems / prev.pageSize) : 0;\n      const clampedPage = prev.page > newPages && newPages > 0 ? newPages : prev.page;\n\n      return {\n        ...prev,\n        totalItems: validTotalItems,\n        page: clampedPage,\n      };\n    });\n  }, []);\n\n  const nextPage = useCallback(() => {\n    setPage(state.page + 1);\n  }, [setPage, state.page]);\n\n  const previousPage = useCallback(() => {\n    setPage(state.page - 1);\n  }, [setPage, state.page]);\n\n  const goToFirstPage = useCallback(() => {\n    setPage(1);\n  }, [setPage]);\n\n  const goToLastPage = useCallback(() => {\n    setPage(pages);\n  }, [setPage, pages]);\n\n  const reset = useCallback(() => {\n    setState({\n      page: defaultPage,\n      pageSize: defaultPageSize,\n      totalItems: 0,\n    });\n  }, [defaultPage, defaultPageSize]);\n\n  return {\n    page: state.page,\n    pageSize: state.pageSize,\n    totalItems: state.totalItems,\n    pages,\n\n    setPage,\n    setPageSize,\n    setTotalItems,\n    nextPage,\n    previousPage,\n    goToFirstPage,\n    goToLastPage,\n    reset,\n\n    hasNextPage,\n    hasPreviousPage,\n    startItem,\n    endItem,\n    isEmpty,\n  };\n}\n","abstract class AbstractStorage {\n  static get<T>(key: string): T | null {\n    if (!key) {\n      throw new Error('The key is not valid');\n    }\n\n    return null;\n  }\n\n  static set<T>(key: string, value: T): void {\n    if (!key) {\n      throw new Error('The key is not valid');\n    }\n\n    if (!value) {\n      throw new Error('The value not passed');\n    }\n  }\n\n  static remove(key: string): void {\n    if (!key) {\n      throw new Error('The key is not valid');\n    }\n  }\n\n  static clear(): void {}\n}\n\nexport default AbstractStorage;\n","type StorageType = 'localStorage' | 'sessionStorage';\n\nexport interface SafeStorage {\n  getItem(key: string): string | null;\n  setItem(key: string, value: string): void;\n  removeItem(key: string): void;\n  clear(): void;\n  keys(): string[];\n}\n\nconst memoryFallback: Record<StorageType, Record<string, string>> = {\n  localStorage: {},\n  sessionStorage: {},\n};\n\nconst cache: Partial<Record<StorageType, SafeStorage>> = {};\n\nfunction getNativeStorage(type: StorageType): Storage | null {\n  try {\n    const storage = window[type];\n    const probe = '__chekin_storage_probe__';\n    storage.setItem(probe, probe);\n    storage.removeItem(probe);\n    return storage;\n  } catch {\n    return null;\n  }\n}\n\nfunction buildSafeStorage(type: StorageType): SafeStorage {\n  const native = getNativeStorage(type);\n  const memory = memoryFallback[type];\n\n  if (native) {\n    return {\n      getItem: key => {\n        try {\n          return native.getItem(key);\n        } catch {\n          return memory[key] ?? null;\n        }\n      },\n      setItem: (key, value) => {\n        try {\n          native.setItem(key, value);\n        } catch {\n          memory[key] = value;\n        }\n      },\n      removeItem: key => {\n        try {\n          native.removeItem(key);\n        } catch {\n          delete memory[key];\n        }\n      },\n      clear: () => {\n        try {\n          native.clear();\n        } catch {\n          /* noop */\n        }\n      },\n      keys: () => {\n        try {\n          return Object.keys(native);\n        } catch {\n          return Object.keys(memory);\n        }\n      },\n    };\n  }\n\n  return {\n    getItem: key => (key in memory ? memory[key] : null),\n    setItem: (key, value) => {\n      memory[key] = value;\n    },\n    removeItem: key => {\n      delete memory[key];\n    },\n    clear: () => {\n      Object.keys(memory).forEach(key => delete memory[key]);\n    },\n    keys: () => Object.keys(memory),\n  };\n}\n\nexport function getSafeStorage(type: StorageType): SafeStorage {\n  if (!cache[type]) {\n    cache[type] = buildSafeStorage(type);\n  }\n\n  return cache[type] as SafeStorage;\n}\n\nexport function isStorageAvailable(type: StorageType): boolean {\n  return getNativeStorage(type) !== null;\n}\n","export function jsonParse(data: string | null) {\n  try {\n    if (data) {\n      return JSON.parse(data);\n    }\n\n    return null;\n  } catch {\n    return data;\n  }\n}\n","import AbstractStorage from './AbstractStorage';\nimport {getSafeStorage} from './safeStorage';\nimport {jsonParse} from './utils';\n\nconst storage = () => getSafeStorage('sessionStorage');\n\nclass SessionStorage extends AbstractStorage {\n  static get<T>(key: string): T | null {\n    const data = storage().getItem(key);\n    return jsonParse(data);\n  }\n\n  static set<T>(key: string, value: T): void {\n    if (value) {\n      storage().setItem(key, JSON.stringify(value));\n    }\n  }\n\n  static update<T>(key: string, field: string, value: T): void {\n    const data = SessionStorage.get<Record<string, T>>(key);\n\n    if (data) {\n      data[field] = value;\n      SessionStorage.set(key, data);\n    } else {\n      SessionStorage.set(key, {[field]: value});\n    }\n  }\n\n  static remove(key: string): void {\n    storage().removeItem(key);\n  }\n\n  static clear(): void {\n    storage().clear();\n  }\n}\n\nexport {SessionStorage};\n","import {type ChangeEvent, useCallback, useState} from 'react';\nimport {useDebounce} from './use-debounce';\n\ntype UseSearchInputProps = {\n  value?: string;\n  onChange?: (value: string) => void;\n};\n\nexport function useSearchInput({value, onChange}: UseSearchInputProps) {\n  const [innerValue, setInnerValue] = useState(value || '');\n  const [, setDebouncedValue] = useDebounce(innerValue, 600, onChange);\n\n  const handleChange = useCallback(\n    (event: ChangeEvent<HTMLInputElement>) => {\n      if (event.target.value === '') {\n        setDebouncedValue('');\n      }\n\n      setInnerValue(event.target.value);\n    },\n    [setDebouncedValue],\n  );\n\n  const reset = innerValue\n    ? () => {\n        if (!innerValue) {\n          return;\n        }\n\n        setInnerValue('');\n        setDebouncedValue('');\n      }\n    : undefined;\n\n  return {innerValue, handleChange, reset};\n}\n","import {type RefObject, useEffect, useState} from 'react';\n\nexport function useStickyStuck(ref: RefObject<HTMLElement | null>) {\n  const [isStuck, setIsStuck] = useState(false);\n\n  useEffect(() => {\n    const element = ref.current;\n    if (!element?.parentElement) return;\n\n    const sentinel = document.createElement('div');\n    Object.assign(sentinel.style, {\n      position: 'absolute',\n      top: `${element.offsetTop}px`,\n      height: '1px',\n      width: '1px',\n      pointerEvents: 'none',\n      visibility: 'hidden',\n    });\n\n    element.parentElement.insertBefore(sentinel, element);\n\n    const observer = new IntersectionObserver(\n      ([entry]) => setIsStuck(!entry.isIntersecting),\n      {threshold: 0},\n    );\n\n    observer.observe(sentinel);\n\n    return () => {\n      observer.disconnect();\n      sentinel.remove();\n    };\n  }, [ref]);\n\n  return isStuck;\n}\n","import {useCallback, useEffect, useLayoutEffect, useState} from 'react';\nimport {useEvent} from './use-event';\n\ntype Options = {\n  canToggle?: (currentState: boolean) => boolean;\n  onToggle?: (currentState: boolean) => void;\n  onTouched?: (currentState: boolean) => void;\n  onSectionActiveChange?: (currentState: boolean) => void;\n};\n\nexport function useSwitchSectionActive(\n  preloadedSectionActive: boolean | undefined,\n  {canToggle, onToggle, onSectionActiveChange, onTouched}: Options = {},\n) {\n  const [isSectionActive, setIsSectionActive] = useState(false);\n  const [preloadedIsSendingEnabled, setPreloadedIsSendingEnabled] = useState<\n    boolean | null\n  >(null);\n  const handleToggle = useEvent(onToggle);\n  const handleOnTouched = useEvent(onTouched);\n  const handleOnSectionActiveChange = useEvent(onSectionActiveChange);\n\n  useLayoutEffect(\n    function preloadIsSectionActive() {\n      if (preloadedSectionActive !== undefined) {\n        setPreloadedIsSendingEnabled(preloadedSectionActive);\n        setIsSectionActive(preloadedSectionActive);\n      } else {\n        setPreloadedIsSendingEnabled(false);\n      }\n    },\n    [preloadedSectionActive],\n  );\n\n  const toggleIsSectionActive = useCallback(() => {\n    const isTogglingDisabled = canToggle && !canToggle(isSectionActive);\n\n    if (isTogglingDisabled) {\n      return;\n    }\n\n    setIsSectionActive(prevState => !prevState);\n    handleToggle(!isSectionActive);\n  }, [canToggle, isSectionActive, handleToggle]);\n\n  const isSectionActiveTouched = isSectionActive !== !!preloadedIsSendingEnabled;\n\n  useEffect(() => {\n    handleOnTouched(isSectionActiveTouched);\n  }, [handleOnTouched, isSectionActiveTouched]);\n\n  useEffect(() => {\n    handleOnSectionActiveChange(isSectionActive);\n  }, [handleOnSectionActiveChange, isSectionActive]);\n\n  return {\n    isSectionActive:\n      preloadedIsSendingEnabled !== null ? isSectionActive : !!preloadedSectionActive,\n    toggleIsSectionActive,\n    setIsSectionActive,\n    isSectionActiveTouched,\n  };\n}\n","import {useEffect, useState} from 'react';\nimport {useEvent} from './use-event';\n\ntype Props = {\n  initialTime?: number;\n  enabled?: boolean;\n  onFinish?: () => void;\n};\n\nexport const useCountdown = ({initialTime, enabled = true, onFinish}: Props = {}) => {\n  const duration = initialTime ?? 60;\n  const [timeLeft, setTimeLeft] = useState(duration);\n  const [isTimerRunning, setIsTimerRunning] = useState(enabled);\n  const handleOnFinish = useEvent(onFinish);\n\n  useEffect(() => {\n    setTimeLeft(duration);\n    setIsTimerRunning(enabled);\n  }, [duration, enabled]);\n\n  useEffect(() => {\n    if (!isTimerRunning) return;\n\n    const timer = setInterval(() => {\n      setTimeLeft(prev => {\n        if (prev <= 1) {\n          clearInterval(timer);\n          setIsTimerRunning(false);\n          return 0;\n        }\n\n        return prev - 1;\n      });\n    }, 1000);\n\n    return () => clearInterval(timer);\n  }, [isTimerRunning]);\n\n  useEffect(() => {\n    if (timeLeft <= 0) {\n      handleOnFinish();\n    }\n  }, [timeLeft, handleOnFinish]);\n\n  const resetTimer = () => {\n    setTimeLeft(duration);\n    setIsTimerRunning(enabled);\n  };\n\n  return {\n    timeLeft,\n    isTimerRunning,\n    resetTimer,\n  };\n};\n","import {useEffect, useMemo, useRef} from 'react';\nimport {useEvent} from './use-event';\n\ntype UseTimeoutCallback = () => void;\n\nexport function useTimeout(callback: UseTimeoutCallback, ms = 0) {\n  const timeoutId = useRef<ReturnType<typeof setTimeout>>();\n  const memoizedCallback = useEvent(callback);\n\n  const handler = useMemo(() => {\n    return {\n      start(overrideMs?: number) {\n        handler.stop();\n        timeoutId.current = setTimeout(\n          memoizedCallback,\n          overrideMs === undefined ? ms : overrideMs,\n        );\n      },\n\n      stop() {\n        if (timeoutId.current) {\n          clearTimeout(timeoutId.current);\n        }\n      },\n\n      restart() {\n        handler.stop();\n        handler.start();\n      },\n    };\n  }, [memoizedCallback, ms]);\n\n  useEffect(() => {\n    return () => {\n      handler.stop();\n    };\n  }, [handler]);\n\n  return handler;\n}\n","import {useCallback, useState} from 'react';\n\nexport function useHover() {\n  const [isHovering, setIsHovering] = useState(false);\n  const handleMouseEnter = useCallback(() => {\n    setIsHovering(true);\n  }, []);\n\n  const handleMouseLeave = useCallback(() => {\n    setIsHovering(false);\n  }, []);\n\n  return {\n    isHovering,\n    handleMouseEnter,\n    handleMouseLeave,\n  };\n}\n","import {useCallback, useEffect} from 'react';\nimport {useEvent} from './use-event';\n\nexport type KeyDownOptions = {\n  enabled?: boolean;\n  metaKey?: boolean;\n  ctrlKey?: boolean;\n  shiftKey?: boolean;\n  altKey?: boolean;\n};\n\nexport function useKeyDown({\n  key,\n  cb,\n  options,\n}: {\n  key: string | string[];\n  cb: (event: KeyboardEvent) => void;\n  options?: KeyDownOptions;\n}) {\n  const {\n    enabled = true,\n    metaKey = false,\n    ctrlKey = false,\n    shiftKey = false,\n    altKey = false,\n  } = options ?? {};\n  const handleCallback = useEvent(cb);\n\n  const handleKeyDown = useCallback(\n    (event: KeyboardEvent) => {\n      const keys = Array.isArray(key) ? key : [key];\n      const isKeyMatch = keys.includes(event.key);\n      const isModifierMatch =\n        event.metaKey === metaKey &&\n        event.ctrlKey === ctrlKey &&\n        event.shiftKey === shiftKey &&\n        event.altKey === altKey;\n\n      if (isKeyMatch && isModifierMatch) {\n        handleCallback(event);\n      }\n    },\n    [key, handleCallback, metaKey, ctrlKey, shiftKey, altKey],\n  );\n\n  useEffect(() => {\n    if (!enabled) return;\n\n    window.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      window.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleKeyDown, enabled]);\n}\n","import * as React from 'react';\n\nconst IFRAME_FOCUSABLE_SELECTOR = [\n  'a[href]',\n  'area[href]',\n  'input:not([disabled]):not([type=\"hidden\"])',\n  'select:not([disabled])',\n  'textarea:not([disabled])',\n  'button:not([disabled])',\n  'iframe',\n  'object',\n  'embed',\n  '[contenteditable=\"true\"]',\n  '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nfunction getFocusableElements(container: HTMLDivElement): HTMLElement[] {\n  const ownerDocument = container.ownerDocument;\n  const HTMLElementConstructor = ownerDocument.defaultView?.HTMLElement ?? HTMLElement;\n\n  return Array.from(\n    container.querySelectorAll<HTMLElement>(IFRAME_FOCUSABLE_SELECTOR),\n  ).filter(element => {\n    if (!(element instanceof HTMLElementConstructor)) {\n      return false;\n    }\n\n    if (element.tabIndex < 0 || element.hidden || element.getAttribute('aria-hidden')) {\n      return false;\n    }\n\n    return element.getClientRects().length > 0 || element === ownerDocument.activeElement;\n  });\n}\n\n/**\n * Radix's focus scope binds auto-focus to the top-level `document`. Inside the SDK iframe\n * (`window.chekinCustomDocument`) that document's `activeElement` is always the `<iframe>`,\n * so the overlay's mount auto-focus bounces between the first field and the content container,\n * leaving searchable Selects stuck half-focused. Preventing the open auto-focus only inside the\n * custom document stops the bounce; Tab trapping stays handled by useIframeFocusTrapFallback.\n */\nexport function useIframeOpenAutoFocusGuard(onOpenAutoFocus?: (event: Event) => void) {\n  return React.useCallback(\n    (event: Event) => {\n      onOpenAutoFocus?.(event);\n\n      if (event.defaultPrevented) {\n        return;\n      }\n\n      if (typeof window !== 'undefined' && window.chekinCustomDocument) {\n        event.preventDefault();\n      }\n    },\n    [onOpenAutoFocus],\n  );\n}\n\nexport function useIframeFocusTrapFallback(\n  contentRef: React.RefObject<HTMLDivElement | null>,\n  onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>,\n) {\n  return React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      onKeyDown?.(event);\n\n      if (event.defaultPrevented || event.key !== 'Tab') {\n        return;\n      }\n\n      const contentNode = contentRef.current;\n\n      if (\n        !contentNode ||\n        !window.chekinCustomDocument ||\n        contentNode.ownerDocument !== window.chekinCustomDocument\n      ) {\n        return;\n      }\n\n      const focusableElements = getFocusableElements(contentNode);\n\n      if (!focusableElements.length) {\n        event.preventDefault();\n        contentNode.focus();\n        return;\n      }\n\n      const firstFocusableElement = focusableElements[0];\n      const lastFocusableElement = focusableElements[focusableElements.length - 1];\n      const activeElement = contentNode.ownerDocument.activeElement;\n\n      if (focusableElements.length === 1) {\n        event.preventDefault();\n        firstFocusableElement.focus();\n        return;\n      }\n\n      if (event.shiftKey) {\n        if (activeElement === firstFocusableElement || activeElement === contentNode) {\n          event.preventDefault();\n          lastFocusableElement.focus();\n        }\n\n        return;\n      }\n\n      if (activeElement === lastFocusableElement) {\n        event.preventDefault();\n        firstFocusableElement.focus();\n      }\n    },\n    [contentRef, onKeyDown],\n  );\n}\n","import {useEffect, useRef} from 'react';\nimport {useEvent} from './use-event';\n\nconst ResetStatusTimeoutMs = 2000;\n\ntype Props = {\n  reset: () => void;\n  status: string;\n};\n\nexport function useResetAfterRequestStatus({status, reset}: Props) {\n  const stateTimeoutRef = useRef<ReturnType<typeof setTimeout>>();\n  const handleReset = useEvent(reset);\n  const isNotIdle = ['success', 'error'].includes(status);\n\n  useEffect(() => {\n    if (isNotIdle) {\n      stateTimeoutRef.current = setTimeout(handleReset, ResetStatusTimeoutMs);\n\n      return () => {\n        clearTimeout(stateTimeoutRef.current);\n      };\n    }\n  }, [handleReset, isNotIdle]);\n\n  return {isNotIdle};\n}\n","import {useRef} from 'react';\nimport {useModalControls} from './use-modal-controls';\n\nexport const usePromisedModalControls = () => {\n  const {closeModal, isOpen, openModal} = useModalControls();\n  const resolveRef = useRef<(value: boolean | PromiseLike<boolean>) => void>();\n\n  const openModalWithPromise = async () => {\n    openModal();\n    return new Promise<boolean>(resolve => {\n      resolveRef.current = resolve;\n    });\n  };\n\n  return {\n    isOpen,\n    openModal: openModalWithPromise,\n    closeModal,\n    resolveRef,\n  };\n};\n","import {useState} from 'react';\n\ntype useIsFormUntouchedTypes = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  watch: any;\n  displayFields: {[key: string]: boolean};\n  debug?: boolean;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  defaultValues?: {[key: string]: any};\n};\n\nexport function useIsFormTouched({\n  watch,\n  displayFields,\n  debug,\n  defaultValues,\n}: useIsFormUntouchedTypes) {\n  const [untouchedValues, setUntouchedValues] = useState<{\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    [key: string]: any;\n  }>(defaultValues || {});\n\n  const getIsFormTouched = () => {\n    if (!Object.keys(untouchedValues)) {\n      return false;\n    }\n\n    return Object.keys(untouchedValues).some(field => {\n      if (!displayFields[field] || watch(field) === undefined) {\n        return false;\n      }\n\n      if (watch(field)?.value && untouchedValues[field]?.value) {\n        if (debug) {\n          console.log({\n            res: untouchedValues[field]?.value !== watch(field)?.value,\n            [field]: {form: watch(field), untouched: untouchedValues[field]},\n          });\n        }\n\n        return untouchedValues[field]?.value !== watch(field)?.value;\n      }\n\n      // if (watch(field) instanceof Date || watch(field) instanceof moment) {\n      //   if (debug) {\n      //     console.log({\n      //       res: !moment(untouchedValues[field]).isSame(watch(field), 'day'),\n      //       [field]: {form: watch(field), untouched: untouchedValues[field]},\n      //     });\n      //   }\n      //   return !moment(untouchedValues[field]).isSame(watch(field), 'day');\n      // }\n\n      if (watch(field) instanceof Array || watch(field) instanceof Object) {\n        if (debug) {\n          console.log({\n            res: JSON.stringify(untouchedValues[field]) !== JSON.stringify(watch(field)),\n            [field]: {form: watch(field), untouched: untouchedValues[field]},\n          });\n        }\n\n        return JSON.stringify(untouchedValues[field]) !== JSON.stringify(watch(field));\n      }\n\n      if (debug) {\n        console.log({\n          res: untouchedValues[field] !== watch(field),\n          [field]: {form: watch(field), untouched: untouchedValues[field]},\n        });\n      }\n\n      return untouchedValues[field] !== watch(field);\n    });\n  };\n\n  return {\n    setUntouchedValues,\n    isFormTouched: getIsFormTouched(),\n  };\n}\n","import {Button, type ButtonProps} from '../button';\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from './Dialog';\n\nexport interface ConfirmationDialogProps {\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n  title: string;\n  description: string;\n  confirmText: string;\n  cancelText: string;\n  onConfirm: () => void;\n  onCancel?: () => void;\n  isLoading?: boolean;\n  variant?: ButtonProps['variant'];\n}\n\nexport function ConfirmationDialog({\n  open,\n  onOpenChange,\n  title,\n  description,\n  confirmText,\n  cancelText,\n  onConfirm,\n  onCancel,\n  isLoading = false,\n  variant = 'destructive',\n}: ConfirmationDialogProps) {\n  const handleOpenChange = (newOpen: boolean) => {\n    if (!newOpen && isLoading) {\n      return;\n    }\n\n    onOpenChange(newOpen);\n  };\n\n  const handleCancel = () => {\n    if (isLoading) {\n      return;\n    }\n\n    onCancel?.();\n    onOpenChange(false);\n  };\n\n  return (\n    <Dialog open={open} onOpenChange={handleOpenChange}>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>{title}</DialogTitle>\n          <DialogDescription>{description}</DialogDescription>\n        </DialogHeader>\n        <DialogFooter className=\"mt-2\">\n          <Button variant=\"outline\" onClick={handleCancel} disabled={isLoading}>\n            {cancelText}\n          </Button>\n          <Button\n            variant={variant}\n            onClick={onConfirm}\n            disabled={isLoading}\n            loading={isLoading}\n          >\n            {confirmText}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport interface DefaultSelectTriggerProps extends React.HTMLAttributes<HTMLDivElement> {\n  disabled?: boolean;\n  empty?: boolean;\n  readOnly?: boolean;\n  width?: string;\n  loading?: boolean;\n  invalid?: boolean;\n}\n\nexport const DefaultSelectTrigger = React.forwardRef<\n  HTMLDivElement,\n  DefaultSelectTriggerProps\n>(\n  (\n    {\n      className,\n      disabled,\n      empty,\n      readOnly,\n      width,\n      loading,\n      invalid: _invalid,\n      children,\n      ...props\n    },\n    ref,\n  ) => {\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'relative box-border flex items-center justify-between',\n          'min-h-[var(--default-select-trigger-height)] rounded-[var(--default-select-trigger-radius)] bg-[var(--default-select-trigger-bg)] shadow-none',\n          'pointer-events-auto px-[14px] font-medium',\n          'transition-colors duration-500',\n          disabled &&\n            'cursor-progress opacity-[var(--default-select-trigger-disabled-opacity)]',\n          disabled && '[&_.select__control]:cursor-not-allowed',\n          loading && 'cursor-progress',\n          loading && '[&_.select__control]:cursor-progress',\n          (empty || readOnly) &&\n            'border-0 bg-[var(--default-select-trigger-empty-bg)] text-[var(--default-select-trigger-empty-text)] hover:border-0',\n          !disabled && !loading && 'cursor-pointer',\n          className,\n        )}\n        style={{width: width ? `${width}px` : 'var(--default-select-trigger-width)'}}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n\nDefaultSelectTrigger.displayName = 'SelectTrigger';\n","import {type ReactNode, useState} from 'react';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  type DropdownMenuContentSide,\n  DropdownMenuTrigger,\n} from '../dropdown-menu';\nimport {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\n\nexport type DropdownButtonProps = {\n  trigger: ReactNode | ((isOpen: boolean) => ReactNode);\n  children?: ReactNode;\n  side?: DropdownMenuContentSide;\n  modal?: boolean;\n  className?: string;\n};\n\nexport function DropdownButton({\n  trigger,\n  children,\n  side,\n  modal,\n  className,\n}: DropdownButtonProps) {\n  const [isOpen, setIsOpen] = useState(false);\n\n  return (\n    <DropdownMenu onOpenChange={setIsOpen} modal={modal}>\n      <DropdownMenuTrigger asChild>\n        {typeof trigger === 'function' ? trigger(isOpen) : trigger}\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        container={getCustomContainer()}\n        className={cn('max-w-[240px]', className)}\n        align=\"start\"\n        side={side}\n      >\n        {children}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n","import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport {Check, ChevronRight, Circle} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\nimport {DropdownMenuItemContent} from './DropdownMenuItemContent';\n\nfunction DropdownMenu({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n  return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n  return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n  return (\n    <DropdownMenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />\n  );\n}\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean;\n  }\n>(({className, inset, children, ...props}, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      `focus:bg-gray-50 focus:text-[var(--chekin-color-brand-navy)] relative flex cursor-default select-none\n      items-center gap-3 rounded-lg px-2 py-1.5 outline-none transition-colors\n      data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none\n      [&_svg]:shrink-0`,\n      `cursor-pointer px-3 py-2 font-medium hover:bg-gray-50 data-[state=checked]:font-bold\n      [&_svg]:h-5 [&_svg]:w-5`,\n      inset && 'pl-8',\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({className, ...props}, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      `bg-[var(--chekin-color-white)] text-[var(--chekin-color-brand-navy)] data-[state=open]:animate-in\n      data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\n      data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\n      data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\n      data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50\n      min-w-[8rem] origin-[--radix-dropdown-menu-content-transform-origin] overflow-hidden\n      rounded-lg border border-gray-200 p-1 shadow-lg`,\n      className,\n    )}\n    {...props}\n  />\n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> & {\n    container?: HTMLElement;\n  }\n>(({className, sideOffset = 4, container, ...props}, ref) => (\n  <DropdownMenuPrimitive.Portal container={container || getCustomContainer()}>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      collisionPadding={{bottom: 16}}\n      className={cn(\n        `bg-[var(--chekin-color-white)] text-[var(--chekin-color-brand-navy)] data-[state=open]:animate-in\n        data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\n        data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\n        data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\n        data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50\n        max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem]\n        origin-[--radix-dropdown-menu-content-transform-origin] overflow-y-auto overflow-x-hidden\n        border border-gray-200`,\n        'w-60 rounded-lg p-2 shadow-lg',\n        className,\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\ntype DropdownMenuContentSide = React.ComponentPropsWithoutRef<\n  typeof DropdownMenuPrimitive.Content\n>['side'];\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean;\n    active?: boolean;\n    leftSlot?: React.ReactNode;\n  }\n>(({className, children, inset, active, leftSlot, ...props}, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      `focus:bg-gray-50 focus:text-[var(--chekin-color-brand-navy)] relative flex cursor-default select-none\n      items-center gap-3 rounded-lg px-2 py-1.5 outline-none transition-colors\n      data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed\n      data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`,\n      `cursor-pointer px-3 py-2 font-medium hover:bg-gray-50 data-[state=checked]:font-bold\n      [&_svg]:h-5 [&_svg]:w-5`,\n      {\n        'bg-gray-50': active,\n      },\n      inset && 'pl-8',\n      className,\n    )}\n    {...props}\n  >\n    {leftSlot}\n    {children}\n  </DropdownMenuPrimitive.Item>\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({className, children, checked, ...props}, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      `focus:bg-gray-50 focus:text-[var(--chekin-color-brand-navy)] relative flex cursor-default select-none\n      items-center rounded-lg outline-none transition-colors data-[disabled]:pointer-events-none\n      data-[state=checked]:font-bold data-[disabled]:opacity-50`,\n      'cursor-pointer px-3 py-2 font-medium hover:bg-gray-50',\n      className,\n    )}\n    checked={checked}\n    {...props}\n  >\n    {children}\n    <span className=\"ml-auto flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n  </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({className, children, ...props}, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      `focus:bg-gray-50 focus:text-[var(--chekin-color-brand-navy)] relative flex cursor-default select-none\n      items-center rounded-lg outline-none transition-colors data-[disabled]:pointer-events-none\n      data-[state=checked]:font-bold data-[disabled]:opacity-50`,\n      'cursor-pointer px-3 py-2 font-medium hover:bg-gray-50',\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean;\n  }\n>(({className, inset, ...props}, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      'cursor-default px-2 py-1.5 text-xs font-semibold uppercase text-gray-400',\n      inset && 'pl-8',\n      className,\n    )}\n    {...props}\n  />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({className, ...props}, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn('my-2 h-px bg-gray-100', className)}\n    {...props}\n  />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn('ml-auto text-xs tracking-widest opacity-60', className)}\n      {...props}\n    />\n  );\n};\n\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n  DropdownMenuItemContent,\n  type DropdownMenuContentSide,\n};\n","import {type ReactNode} from 'react';\n\nexport interface DropdownMenuItemContentProps {\n  icon?: ReactNode;\n  label: ReactNode;\n  description?: ReactNode;\n}\n\nexport function DropdownMenuItemContent({\n  icon,\n  label,\n  description,\n}: DropdownMenuItemContentProps) {\n  return (\n    <div className=\"flex items-center gap-3 text-[var(--chekin-color-brand-navy)] [&_svg]:text-[var(--chekin-neutral-400)]\">\n      {icon}\n      <div>\n        <div>{label}</div>\n        {description && <div className=\"text-xs text-[#666]\">{description}</div>}\n      </div>\n    </div>\n  );\n}\n","import {forwardRef} from 'react';\nimport {cn} from '../lib/cn';\nimport {type CheckboxOption} from '../checkbox';\nimport {DropdownMenuCheckboxItem} from './DropdownMenu';\nimport {type CheckboxDropdownGroupProps} from './types';\n\nconst CheckboxDropdownGroup = forwardRef<HTMLDivElement, CheckboxDropdownGroupProps>(\n  ({options, value = [], onChange, className = '', keepOpenOnSelect, multiple}, ref) => {\n    const isMultipleMode = multiple ?? Array.isArray(value);\n\n    const normalizedValue = Array.isArray(value) ? value : value ? [value] : [];\n\n    const handleCheckboxChange = (optionValue: CheckboxOption, checked: boolean) => {\n      if (isMultipleMode) {\n        const newValue = checked\n          ? [...normalizedValue, optionValue]\n          : normalizedValue.filter(v => v.value !== optionValue.value);\n        (onChange as (selectedValues: CheckboxOption[]) => void)(newValue);\n      } else {\n        if (checked) {\n          (onChange as (selectedValues: CheckboxOption) => void)(optionValue);\n        } else {\n          (onChange as (selectedValues: CheckboxOption | null) => void)(null);\n        }\n      }\n    };\n\n    const isChecked = (optionValue: string) =>\n      normalizedValue.some(v => v.value === optionValue);\n\n    const renderCheckboxItem = (option: CheckboxOption) => {\n      const checked = option.checked ?? isChecked(option.value);\n\n      return (\n        <DropdownMenuCheckboxItem\n          key={option.value}\n          checked={checked}\n          onSelect={e => {\n            if (keepOpenOnSelect) {\n              e.preventDefault();\n            }\n          }}\n          onCheckedChange={newChecked => {\n            if (!isMultipleMode && newChecked) {\n              handleCheckboxChange(option, newChecked);\n            } else {\n              handleCheckboxChange(option, newChecked);\n            }\n          }}\n          disabled={option.disabled}\n          className={cn('cursor-pointer', option.disabled && 'cursor-not-allowed')}\n        >\n          {option.label}\n        </DropdownMenuCheckboxItem>\n      );\n    };\n\n    return (\n      <div ref={ref} className={className}>\n        {options.map(renderCheckboxItem)}\n      </div>\n    );\n  },\n);\n\nCheckboxDropdownGroup.displayName = 'CheckboxDropdownGroup';\n\nexport {CheckboxDropdownGroup};\n","import {forwardRef, Fragment} from 'react';\nimport {cn} from '../lib/cn';\nimport {type CheckboxOption} from '../checkbox';\nimport {CheckboxDropdownGroup} from './CheckboxDropdownGroup';\nimport {\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n} from './DropdownMenu';\n\nexport interface CheckboxDropdownGroupConfig {\n  label: string;\n  options: CheckboxOption[];\n  value: CheckboxOption[] | CheckboxOption | null;\n  onChange: (selectedValues: CheckboxOption[] | CheckboxOption | null) => void;\n  multiple?: boolean;\n}\n\nexport interface CheckboxDropdownMultiGroupProps {\n  groups: CheckboxDropdownGroupConfig[];\n  className?: string;\n  keepOpenOnSelect?: boolean;\n}\n\nconst CheckboxDropdownMultiGroup = forwardRef<\n  HTMLDivElement,\n  CheckboxDropdownMultiGroupProps\n>(({groups, className = '', keepOpenOnSelect}, ref) => {\n  return (\n    <div ref={ref} className={cn('space-y-1', className)}>\n      {groups.map((group, index) => (\n        <Fragment key={group.label}>\n          <DropdownMenuGroup>\n            <DropdownMenuLabel>{group.label}</DropdownMenuLabel>\n            {group.multiple ? (\n              <CheckboxDropdownGroup\n                multiple={true}\n                onChange={\n                  group.onChange as (selectedValues: CheckboxOption[] | null) => void\n                }\n                options={group.options}\n                value={group.value as CheckboxOption[] | null}\n                keepOpenOnSelect={keepOpenOnSelect}\n              />\n            ) : (\n              <CheckboxDropdownGroup\n                multiple={false}\n                onChange={\n                  group.onChange as (selectedValues: CheckboxOption | null) => void\n                }\n                options={group.options}\n                value={group.value as CheckboxOption | null}\n                keepOpenOnSelect={keepOpenOnSelect}\n              />\n            )}\n          </DropdownMenuGroup>\n          {index < groups.length - 1 && <DropdownMenuSeparator />}\n        </Fragment>\n      ))}\n    </div>\n  );\n});\n\nCheckboxDropdownMultiGroup.displayName = 'CheckboxDropdownMultiGroup';\n\nexport {CheckboxDropdownMultiGroup};\n","import {forwardRef} from 'react';\nimport {cn} from '../lib/cn';\nimport {Checkbox, type CheckboxOption} from '../checkbox';\nimport {type CheckboxDropdownGroupProps} from './types';\nimport {DropdownMenuItem} from './DropdownMenu';\n\nconst CustomCheckboxDropdownGroup = forwardRef<\n  HTMLDivElement,\n  CheckboxDropdownGroupProps\n>(({options, value = [], onChange, keepOpenOnSelect, className = '', multiple}, ref) => {\n  const isMultipleMode = multiple ?? Array.isArray(value);\n  const normalizedValue = Array.isArray(value) ? value : value ? [value] : [];\n\n  const handleCheckboxChange = (optionValue: CheckboxOption, checked: boolean) => {\n    if (isMultipleMode) {\n      const newValue = checked\n        ? [...normalizedValue, optionValue]\n        : normalizedValue.filter(v => v.value !== optionValue.value);\n      (onChange as (selectedValues: CheckboxOption[]) => void)(newValue);\n    } else {\n      if (checked) {\n        (onChange as (selectedValues: CheckboxOption) => void)(optionValue);\n      } else {\n        (onChange as (selectedValues: CheckboxOption | null) => void)(null);\n      }\n    }\n  };\n\n  const isChecked = (optionValue: string) =>\n    normalizedValue.some(v => v.value === optionValue);\n\n  const renderCheckboxItem = (option: CheckboxOption, idx: number) => {\n    const checked = option.checked ?? isChecked(option.value);\n\n    return (\n      <DropdownMenuItem\n        key={option.label + idx}\n        onClick={() => {\n          const newChecked = !checked;\n\n          if (!isMultipleMode && newChecked) {\n            handleCheckboxChange(option, newChecked);\n          } else {\n            handleCheckboxChange(option, newChecked);\n          }\n        }}\n        onSelect={e => {\n          if (keepOpenOnSelect) {\n            e.preventDefault();\n          }\n        }}\n      >\n        <Checkbox\n          key={option.value}\n          id={`checkbox-${option.value}`}\n          value={checked}\n          disabled={option.disabled}\n          className={cn(option.disabled && 'cursor-not-allowed opacity-50 w-auto')}\n        />\n        {option.label}\n      </DropdownMenuItem>\n    );\n  };\n\n  return (\n    <div ref={ref} className={className}>\n      {options.map(renderCheckboxItem)}\n    </div>\n  );\n});\n\nCustomCheckboxDropdownGroup.displayName = 'CustomCheckboxGroup';\n\nexport {CustomCheckboxDropdownGroup};\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport function Empty({className, ...props}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"empty\"\n      className={cn(\n        'flex min-w-0 flex-1 flex-col items-center justify-center gap-2 text-balance rounded-lg border-dashed p-6 text-center md:p-12',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport function EmptyHeader({className, ...props}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"empty-header\"\n      className={cn('flex max-w-sm flex-col items-center gap-2 text-center', className)}\n      {...props}\n    />\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport function EmptyTitle({className, ...props}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"empty-title\"\n      className={cn(\n        'text-lg font-medium tracking-tight text-[var(--chekin-color-brand-navy)]',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport function EmptyDescription({className, ...props}: React.ComponentProps<'p'>) {\n  return (\n    <div\n      data-slot=\"empty-description\"\n      className={cn(\n        'text-sm/relaxed text-[var(--chekin-color-gray-1)] [&>a:hover]:text-[var(--chekin-color-brand-blue)] [&>a]:underline [&>a]:underline-offset-4',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport function EmptyContent({className, ...props}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"empty-content\"\n      className={cn(\n        'flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n","import * as React from 'react';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nexport const emptyMediaVariants = cva(\n  'mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0',\n  {\n    variants: {\n      variant: {\n        default: 'bg-transparent',\n        icon: \"flex size-10 shrink-0 items-center justify-center rounded-full bg-blue-50 text-blue-600 [&_svg:not([class*='size-'])]:size-6\",\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nexport function EmptyMedia({\n  className,\n  variant = 'default',\n  ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof emptyMediaVariants>) {\n  return (\n    <div\n      data-slot=\"empty-icon\"\n      data-variant={variant}\n      className={cn(emptyMediaVariants({variant, className}))}\n      {...props}\n    />\n  );\n}\n","import type {ReactNode} from 'react';\nimport {Tag} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {HaloIcon} from '../halo-icon';\nimport {cn} from '../lib/cn';\n\nexport type EmptySectionPlaceholderProps = {\n  title?: string;\n  subtitle?: string;\n  icon?: ReactNode;\n  className?: string;\n};\n\nexport function EmptySectionPlaceholder({\n  title,\n  subtitle,\n  icon,\n  className,\n}: EmptySectionPlaceholderProps) {\n  const {t} = useTranslation();\n\n  return (\n    <div\n      className={cn('flex flex-col items-center justify-center gap-6 py-6', className)}\n    >\n      <HaloIcon status=\"ACTIVE\" className=\"h-20 w-20 [&>svg]:h-10 [&>svg]:w-10\">\n        {icon || <Tag size={40} />}\n      </HaloIcon>\n      <div className=\"flex flex-col items-center gap-2\">\n        <div className=\"font-medium leading-6\">{title || t('nothing_found')}</div>\n        {subtitle && (\n          <div className=\"text-sm leading-6 text-[var(--chekin-color-gray-1)]\">\n            {subtitle}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n","import {type PropsWithChildren, forwardRef} from 'react';\nimport {cn} from '../lib/cn';\nimport {HALO_ICON_STATUS} from './constants';\n\nconst statusStyles = {\n  [HALO_ICON_STATUS.inactive]: {\n    background: 'bg-[var(--chekin-color-surface-input-empty)]',\n    color: 'text-[var(--chekin-color-gray-2)]',\n  },\n  [HALO_ICON_STATUS.active]: {\n    background: 'bg-[var(--chekin-color-surface-autocomplete)]',\n    color: 'text-[var(--chekin-color-brand-blue)]',\n  },\n  [HALO_ICON_STATUS.success]: {\n    background: 'bg-[var(--chekin-green-50)]',\n    color: 'text-[var(--chekin-green-600)]',\n  },\n  [HALO_ICON_STATUS.danger]: {\n    background: 'bg-[var(--chekin-red-100)]',\n    color: 'text-[var(--error-message-color)]',\n  },\n} as const;\n\nexport interface HaloIconProps extends PropsWithChildren {\n  status?: keyof typeof statusStyles;\n  size?: 'M' | 'L' | 'XL';\n  className?: string;\n  variant?: 'default' | 'secondary';\n}\n\nexport const HaloIcon = forwardRef<HTMLDivElement, HaloIconProps>(\n  (\n    {\n      children,\n      variant = 'default',\n      status = HALO_ICON_STATUS.inactive,\n      size = 'M',\n      className,\n    },\n    ref,\n  ) => {\n    const styles = statusStyles[status];\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'halo-icon flex items-center justify-center rounded-[50%]',\n          styles.color,\n          {\n            'h-6 w-6 [&>svg]:h-4 [&>svg]:w-4': size === 'M',\n            'h-8 w-8 [&>svg]:h-5 [&>svg]:w-5': size === 'L',\n            'h-11 w-11 [&>svg]:h-5 [&>svg]:w-5': size === 'XL',\n            [styles.background]: variant === 'default',\n          },\n          className,\n        )}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n\nHaloIcon.displayName = 'HaloIcon';\n","export const HALO_ICON_STATUS = {\n  inactive: 'INACTIVE',\n  active: 'ACTIVE',\n  success: 'SUCCESS',\n  danger: 'DANGER',\n} as const;\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport interface ExternalLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n  showIcon?: boolean;\n}\n\nexport const ExternalLink = React.forwardRef<HTMLAnchorElement, ExternalLinkProps>(\n  ({className, children, showIcon = true, target = '_blank', rel, ...props}, ref) => (\n    <a\n      ref={ref}\n      target={target}\n      rel={rel ?? 'noopener noreferrer'}\n      className={cn(\n        'inline-flex items-center gap-[4px] font-sans font-semibold text-[14px] leading-5',\n        'text-[var(--chekin-color-brand-blue)] hover:text-[var(--chekin-color-brand-blue-hover)]',\n        'rounded-[4px] outline-none focus-visible:shadow-[var(--chekin-shadow-focus)]',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      {showIcon && (\n        <svg\n          width=\"14\"\n          height=\"14\"\n          viewBox=\"0 0 14 14\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.75\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          aria-hidden=\"true\"\n        >\n          <path d=\"M5.5 2.5 H11.5 V 8.5\" />\n          <path d=\"M11.5 2.5 L6 8\" />\n          <path d=\"M10 9 V12 H2 V4 H5\" />\n        </svg>\n      )}\n    </a>\n  ),\n);\nExternalLink.displayName = 'ExternalLink';\n","import {\n  type ComponentProps,\n  type ReactElement,\n  type ReactNode,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Button} from '../button';\nimport {Collapsible, CollapsibleContent, CollapsibleTrigger} from '../collapsible';\nimport {cn} from '../lib/cn';\n\nconst DEFAULT_HEIGHT_LIMIT = 120;\n\nexport type ExpandableContentTrigger = ReactElement | ((isOpen: boolean) => ReactElement);\n\nexport type ExpandableContentProps = Omit<\n  ComponentProps<typeof Collapsible>,\n  'children' | 'defaultOpen' | 'onOpenChange' | 'open'\n> & {\n  children: ReactNode;\n  contentClassName?: string;\n  defaultOpen?: boolean;\n  heightLimit?: number;\n  onOpenChange?: (open: boolean) => void;\n  open?: boolean;\n  showLessLabel?: ReactNode;\n  showMoreLabel?: ReactNode;\n  trigger?: ExpandableContentTrigger;\n  triggerClassName?: string;\n};\n\nexport function ExpandableContent({\n  children,\n  className,\n  contentClassName,\n  defaultOpen = false,\n  disabled,\n  heightLimit = DEFAULT_HEIGHT_LIMIT,\n  onOpenChange,\n  open,\n  showLessLabel,\n  showMoreLabel,\n  trigger,\n  triggerClassName,\n  ...props\n}: ExpandableContentProps) {\n  const {t} = useTranslation();\n  const contentRef = useRef<HTMLDivElement>(null);\n  const [contentHeight, setContentHeight] = useState(0);\n  const [internalOpen, setInternalOpen] = useState(defaultOpen);\n  const isOpen = open ?? internalOpen;\n  const isOverflowing = contentHeight > heightLimit;\n\n  const measureContent = useCallback(() => {\n    const nextHeight = contentRef.current?.getBoundingClientRect().height ?? 0;\n\n    setContentHeight(nextHeight);\n  }, []);\n\n  useEffect(() => {\n    measureContent();\n  }, [children, measureContent]);\n\n  useEffect(() => {\n    const content = contentRef.current;\n\n    if (!content) {\n      return;\n    }\n\n    if (typeof ResizeObserver === 'undefined') {\n      window.addEventListener('resize', measureContent);\n\n      return () => window.removeEventListener('resize', measureContent);\n    }\n\n    const resizeObserver = new ResizeObserver(measureContent);\n\n    resizeObserver.observe(content);\n\n    return () => resizeObserver.disconnect();\n  }, [measureContent]);\n\n  const handleOpenChange = (nextOpen: boolean) => {\n    if (open === undefined) {\n      setInternalOpen(nextOpen);\n    }\n\n    onOpenChange?.(nextOpen);\n  };\n\n  const expandedHeight = contentHeight ? contentHeight + 1 : undefined;\n  const defaultTrigger = (\n    <Button variant=\"link\" disabled={disabled} className={cn('mt-2', triggerClassName)}>\n      {isOpen ? (showLessLabel ?? t('show_less')) : (showMoreLabel ?? t('show_more'))}\n    </Button>\n  );\n  const renderedTrigger =\n    typeof trigger === 'function' ? trigger(isOpen) : (trigger ?? defaultTrigger);\n\n  return (\n    <Collapsible\n      open={isOpen}\n      onOpenChange={handleOpenChange}\n      disabled={disabled}\n      className={cn('flex flex-col items-start', className)}\n      {...props}\n    >\n      <CollapsibleContent\n        forceMount\n        className={cn(\n          'w-full overflow-hidden transition-[max-height] duration-200 ease-out',\n          contentClassName,\n        )}\n        style={{maxHeight: isOpen ? expandedHeight : heightLimit}}\n      >\n        <div ref={contentRef} className=\"flow-root w-full\">\n          {children}\n        </div>\n      </CollapsibleContent>\n\n      {isOverflowing ? (\n        <CollapsibleTrigger asChild>{renderedTrigger}</CollapsibleTrigger>\n      ) : null}\n    </Collapsible>\n  );\n}\n","import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport {Collapsible, CollapsibleTrigger, CollapsibleContent};\n","import {\n  type ChangeEvent,\n  type InputHTMLAttributes,\n  type ReactNode,\n  forwardRef,\n  useCallback,\n} from 'react';\nimport {Upload} from 'lucide-react';\nimport {Button, type ButtonProps} from '../button';\nimport {cn} from '../lib/cn';\n\nexport interface FileInputButtonProps extends Omit<\n  InputHTMLAttributes<HTMLInputElement>,\n  'size'\n> {\n  label?: string;\n  icon?: ReactNode;\n  variant?: ButtonProps['variant'];\n  size?: ButtonProps['size'];\n  buttonClassName?: string;\n}\n\nexport const FileInputButton = forwardRef<HTMLInputElement, FileInputButtonProps>(\n  (\n    {\n      label,\n      onChange,\n      disabled,\n      icon,\n      className,\n      buttonClassName,\n      variant = 'outline',\n      size = 'default',\n      ...props\n    },\n    ref,\n  ) => {\n    const handleChange = useCallback(\n      (event: ChangeEvent<HTMLInputElement>) => {\n        onChange?.(event);\n        event.target.value = '';\n      },\n      [onChange],\n    );\n\n    const iconElement = icon !== undefined ? icon : <Upload className=\"h-4 w-4\" />;\n\n    return (\n      <Button\n        asChild\n        variant={variant}\n        size={size}\n        disabled={disabled}\n        className={cn('justify-start', buttonClassName)}\n      >\n        <label className={cn('cursor-pointer', className)}>\n          <input\n            ref={ref}\n            disabled={disabled}\n            type=\"file\"\n            onChange={handleChange}\n            className=\"absolute hidden h-0.5 w-0.5 opacity-0\"\n            {...props}\n          />\n          {iconElement}\n          {label && <span className=\"ml-1.5\">{label}</span>}\n        </label>\n      </Button>\n    );\n  },\n);\n\nFileInputButton.displayName = 'FileInputButton';\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type FormBoxContentProps = ComponentProps<'div'>;\n\nexport function Content({children, className, ...props}: FormBoxContentProps) {\n  return (\n    <div\n      className={cn(\n        'flex flex-wrap content-start items-start gap-4 self-stretch',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type FormBoxHeaderProps = ComponentProps<'h2'>;\n\nexport function Header({children, className, ...props}: FormBoxHeaderProps) {\n  return (\n    <h2\n      className={cn(\n        'm-0 flex items-center gap-2 self-stretch p-0 text-2xl font-semibold leading-normal text-[var(--form-box-title-color)]',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n    </h2>\n  );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type FormBoxRootProps = ComponentProps<'div'> & {\n  nested?: boolean;\n};\n\nexport function Root({children, nested, className, ...props}: FormBoxRootProps) {\n  return (\n    <div\n      className={cn(\n        'flex max-w-[1400px] flex-col items-start gap-6 self-stretch rounded-[var(--form-box-radius)] border border-[var(--form-box-border)] p-6 [container-type:inline-size]',\n        nested && 'border-0 p-0',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type FormBoxSubHeaderProps = ComponentProps<'h4'>;\n\nexport function SubHeader({children, className, ...props}: FormBoxSubHeaderProps) {\n  return (\n    <h4\n      className={cn(\n        'm-0 flex items-center gap-2 self-stretch border-b border-[var(--form-box-subtitle-border)] px-0 py-2 text-base font-semibold leading-normal text-[var(--form-box-subtitle-color)]',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n    </h4>\n  );\n}\n","import {Content} from './Content';\nimport {Header} from './Header';\nimport {Root} from './Root';\nimport {SubHeader} from './SubHeader';\n\nexport const FormBox = {\n  Root,\n  Header,\n  SubHeader,\n  Content,\n};\n\nexport {Content as FormBoxContent};\nexport type {FormBoxContentProps} from './Content';\nexport {Header as FormBoxHeader};\nexport type {FormBoxHeaderProps} from './Header';\nexport {Root as FormBoxRoot};\nexport type {FormBoxRootProps} from './Root';\nexport {SubHeader as FormBoxSubHeader};\nexport type {FormBoxSubHeaderProps} from './SubHeader';\n","import * as React from 'react';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nconst framedIconVariants = cva('inline-flex items-center justify-center shrink-0', {\n  variants: {\n    size: {\n      s: 'w-8 h-8',\n      m: 'w-10 h-10',\n      l: 'w-12 h-12',\n    },\n    shape: {\n      rounded: 'rounded-[var(--chekin-radius-input)]',\n      circle: 'rounded-full',\n    },\n    tone: {\n      neutral:\n        'bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-gray-1)]',\n      info: 'bg-[var(--chekin-color-surface-pressed)] text-[var(--chekin-color-brand-blue)]',\n      success: 'bg-[var(--chekin-green-50)] text-[var(--chekin-green-700)]',\n      warn: 'bg-[var(--chekin-amber-200)] text-[var(--chekin-amber-700)]',\n      error: 'bg-[var(--chekin-red-150)] text-[var(--error-message-color)]',\n    },\n  },\n  defaultVariants: {size: 'm', shape: 'rounded', tone: 'info'},\n});\n\nexport interface FramedIconProps\n  extends\n    Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'>,\n    VariantProps<typeof framedIconVariants> {\n  children: React.ReactNode;\n}\n\nexport const FramedIcon = React.forwardRef<HTMLSpanElement, FramedIconProps>(\n  ({className, size, shape, tone, children, ...props}, ref) => (\n    <span\n      ref={ref}\n      aria-hidden=\"true\"\n      className={cn(framedIconVariants({size, shape, tone}), className)}\n      {...props}\n    >\n      {children}\n    </span>\n  ),\n);\nFramedIcon.displayName = 'FramedIcon';\n","import type {MouseEvent, ReactNode} from 'react';\nimport type {TooltipContentProps as RadixTooltipContentProps} from '@radix-ui/react-tooltip';\nimport {CircleQuestionMark} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger} from '../tooltip';\n\nexport interface HelpTooltipProps {\n  content?: ReactNode;\n  side?: RadixTooltipContentProps['side'];\n  variant?: 'light' | 'dark';\n  onClick?: (e: MouseEvent) => void;\n  className?: string;\n  contentClassName?: string;\n  size?: 16 | 20;\n  label?: string;\n  triggerAs?: 'button' | 'span';\n}\n\nexport function HelpTooltip({\n  content,\n  side,\n  variant,\n  onClick,\n  className,\n  contentClassName,\n  size = 16,\n  label = 'More info',\n  triggerAs = 'button',\n}: HelpTooltipProps) {\n  const triggerClassName = cn(\n    'relative flex shrink-0 cursor-help items-center justify-center rounded-full',\n    'text-[var(--chekin-color-gray-2)] outline-none transition-colors hover:text-[var(--chekin-color-brand-blue)]',\n    triggerAs === 'button' && 'focus-visible:shadow-[var(--chekin-shadow-focus)]',\n    className,\n  );\n  const triggerStyle = {width: size, height: size};\n  const triggerContent = (\n    <>\n      <CircleQuestionMark aria-hidden=\"true\" style={{width: size, height: size}} />\n      <span className=\"absolute -left-0.5 -top-0.5 h-5 w-5\" />\n    </>\n  );\n\n  return (\n    <TooltipProvider>\n      <TooltipRoot>\n        <TooltipTrigger asChild onClick={onClick}>\n          {triggerAs === 'button' ? (\n            <button\n              type=\"button\"\n              aria-label={label}\n              className={triggerClassName}\n              style={triggerStyle}\n            >\n              {triggerContent}\n            </button>\n          ) : (\n            <span aria-label={label} className={triggerClassName} style={triggerStyle}>\n              {triggerContent}\n            </span>\n          )}\n        </TooltipTrigger>\n        <TooltipContent\n          variant={variant}\n          side={side}\n          className={cn('max-w-64', contentClassName)}\n        >\n          {content}\n        </TooltipContent>\n      </TooltipRoot>\n    </TooltipProvider>\n  );\n}\n","import {type ComponentType, forwardRef, type SVGProps} from 'react';\n\nexport type SvgIconSize = 'sm' | 'md' | 'lg' | number;\n\nconst SIZE_MAP: Record<Exclude<SvgIconSize, number>, number> = {\n  sm: 16,\n  md: 20,\n  lg: 24,\n};\n\nexport interface SvgIconProps extends Omit<SVGProps<SVGSVGElement>, 'ref'> {\n  as: ComponentType<SVGProps<SVGSVGElement>>;\n  size?: SvgIconSize;\n  label?: string;\n}\n\nconst SvgIcon = forwardRef<SVGSVGElement, SvgIconProps>(\n  ({as: Component, size = 'md', label, ...props}, ref) => {\n    const px = typeof size === 'number' ? size : SIZE_MAP[size];\n\n    const labeledFromProp = label !== undefined;\n    const labeledFromAria = 'aria-label' in props || 'aria-labelledby' in props;\n    const isLabeled = labeledFromProp || labeledFromAria;\n\n    const a11y: SVGProps<SVGSVGElement> = isLabeled\n      ? {\n          role: 'img',\n          ...(labeledFromProp && {'aria-label': label}),\n        }\n      : {'aria-hidden': true};\n\n    return (\n      <Component\n        ref={ref}\n        width={px}\n        height={px}\n        focusable={false}\n        {...a11y}\n        {...props}\n      />\n    );\n  },\n);\n\nSvgIcon.displayName = 'SvgIcon';\n\nexport {SvgIcon};\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type InfoBoxProps = {\n  className?: string;\n  children: ReactNode;\n};\n\nexport function InfoBox({className, children}: InfoBoxProps) {\n  return (\n    <div\n      className={cn(\n        'rounded-lg border border-blue-200 bg-blue-50 p-4 text-blue-900 [&_svg]:h-5 [&_svg]:w-5 [&_svg]:text-blue-600',\n        className,\n      )}\n    >\n      {children}\n    </div>\n  );\n}\n","import {type ImgHTMLAttributes, useState} from 'react';\n\nexport interface ImageProps extends ImgHTMLAttributes<HTMLImageElement> {\n  fallbackSrc?: string;\n}\n\nexport function Image({\n  src,\n  alt,\n  className,\n  fallbackSrc = 'https://placehold.co/600x400?text=Image',\n  ...props\n}: ImageProps) {\n  const [error, setError] = useState(false);\n\n  return (\n    <img\n      src={error ? fallbackSrc : src}\n      alt={alt || ''}\n      className={className}\n      onError={() => setError(true)}\n      loading=\"lazy\"\n      {...props}\n    />\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {InputOTPContext} from './InputOTPContext';\nimport {useInputOTP} from './useInputOTP';\nimport {useInputOTPSlot} from './useInputOTPSlot';\n\nexport type InputOTPProps = {\n  maxLength: number;\n  value?: string;\n  onChange?: (value: string) => void;\n  disabled?: boolean;\n  error?: boolean;\n  children: React.ReactNode;\n  className?: string;\n  autoFocus?: boolean;\n};\n\nfunction InputOTP({\n  maxLength,\n  value = '',\n  onChange,\n  disabled = false,\n  error = false,\n  children,\n  className,\n  autoFocus = false,\n}: InputOTPProps) {\n  const {containerRef, contextValue, handleContainerFocusIn, handleContainerFocusOut} =\n    useInputOTP({maxLength, value, onChange, disabled, autoFocus, error});\n\n  return (\n    <InputOTPContext.Provider value={contextValue}>\n      <div\n        ref={containerRef}\n        className={cn('flex items-center gap-2', disabled && 'opacity-50', className)}\n        role=\"group\"\n        aria-label=\"One-time password input\"\n        onFocus={handleContainerFocusIn}\n        onBlur={handleContainerFocusOut}\n      >\n        {children}\n      </div>\n    </InputOTPContext.Provider>\n  );\n}\n\ntype InputOTPGroupProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst InputOTPGroup = React.forwardRef<HTMLDivElement, InputOTPGroupProps>(\n  ({className, ...props}, ref) => (\n    <div ref={ref} className={cn('flex items-center', className)} {...props} />\n  ),\n);\nInputOTPGroup.displayName = 'InputOTPGroup';\n\ntype InputOTPSlotProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> & {\n  index: number;\n};\n\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, InputOTPSlotProps>(\n  ({index, className, ...props}, ref) => {\n    const {\n      char,\n      isActive,\n      disabled,\n      error,\n      maxLength,\n      setInputRef,\n      handleKeyDown,\n      handleInputChange,\n      handlePasteEvent,\n      focusSlot,\n    } = useInputOTPSlot(index);\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'relative flex h-12 w-12 items-center justify-center border-y border-r border-[var(--chekin-color-gray-3)] text-base font-medium transition-all first:rounded-l-md first:border-l last:rounded-r-md',\n          isActive && 'z-10 shadow-[var(--chekin-shadow-focus)]',\n          error && 'border-[var(--error-message-color)]',\n          className,\n        )}\n        onClick={focusSlot}\n        {...props}\n      >\n        <input\n          ref={setInputRef}\n          type=\"text\"\n          inputMode=\"numeric\"\n          autoComplete=\"one-time-code\"\n          pattern=\"\\d*\"\n          maxLength={1}\n          value={char}\n          disabled={disabled}\n          aria-label={`Digit ${index + 1} of ${maxLength}`}\n          className=\"absolute inset-0 h-full w-full select-none bg-transparent text-center text-base font-medium outline-none disabled:cursor-not-allowed\"\n          onKeyDown={handleKeyDown}\n          onChange={handleInputChange}\n          onPaste={handlePasteEvent}\n        />\n      </div>\n    );\n  },\n);\nInputOTPSlot.displayName = 'InputOTPSlot';\n\ntype InputOTPSeparatorProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst InputOTPSeparator = React.forwardRef<HTMLDivElement, InputOTPSeparatorProps>(\n  (props, ref) => <div ref={ref} role=\"separator\" {...props} />,\n);\nInputOTPSeparator.displayName = 'InputOTPSeparator';\n\nexport {InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator};\n","import {createContext, type MutableRefObject, useContext} from 'react';\n\nexport type InputOTPContextValue = {\n  slots: string[];\n  activeIndex: number;\n  maxLength: number;\n  disabled: boolean;\n  error: boolean;\n  setActiveIndex: (index: number) => void;\n  handleDigitInput: (index: number, digit: string) => void;\n  handleDelete: (index: number) => void;\n  handlePaste: (text: string) => void;\n  inputRefs: MutableRefObject<(HTMLInputElement | null)[]>;\n};\n\nconst InputOTPContext = createContext<InputOTPContextValue | null>(null);\n\nfunction useInputOTPContext() {\n  const ctx = useContext(InputOTPContext);\n\n  if (!ctx) {\n    throw new Error('InputOTP compound components must be used within <InputOTP>');\n  }\n\n  return ctx;\n}\n\nconst DIGIT_REGEX = /^\\d$/;\n\nfunction extractDigits(str: string): string {\n  return str.replace(/\\D/g, '');\n}\n\nexport {InputOTPContext, useInputOTPContext, DIGIT_REGEX, extractDigits};\n","import {type FocusEvent, useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {DIGIT_REGEX, extractDigits, type InputOTPContextValue} from './InputOTPContext';\n\nexport type UseInputOTPParams = {\n  maxLength: number;\n  value: string;\n  onChange?: (value: string) => void;\n  disabled: boolean;\n  autoFocus: boolean;\n  error: boolean;\n};\n\nexport function useInputOTP({\n  maxLength,\n  value,\n  onChange,\n  disabled,\n  autoFocus,\n  error,\n}: UseInputOTPParams) {\n  const [activeIndex, setActiveIndex] = useState(-1);\n  const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n  const containerRef = useRef<HTMLDivElement>(null);\n  const blurTimeoutRef = useRef<ReturnType<typeof setTimeout>>();\n  const slotsRef = useRef<string[]>(Array.from({length: maxLength}, () => ''));\n\n  const slots = useMemo(() => {\n    const nextSlots = Array.from({length: maxLength}, () => '');\n\n    for (let index = 0; index < Math.min(value.length, maxLength); index += 1) {\n      const char = value[index];\n\n      if (char && DIGIT_REGEX.test(char)) {\n        nextSlots[index] = char;\n      }\n    }\n\n    return nextSlots;\n  }, [value, maxLength]);\n\n  slotsRef.current = slots;\n\n  const emitValue = useCallback(\n    (newSlots: string[]) => {\n      let lastFilledIndex = -1;\n\n      for (let index = newSlots.length - 1; index >= 0; index -= 1) {\n        if (newSlots[index]) {\n          lastFilledIndex = index;\n          break;\n        }\n      }\n\n      if (lastFilledIndex === -1) {\n        onChange?.('');\n        return;\n      }\n\n      const result = Array.from(\n        {length: lastFilledIndex + 1},\n        (_, index) => newSlots[index] || ' ',\n      ).join('');\n      onChange?.(result);\n    },\n    [onChange],\n  );\n\n  useEffect(() => {\n    if (autoFocus && inputRefs.current[0]) {\n      inputRefs.current[0].focus();\n    }\n  }, [autoFocus]);\n\n  const handleContainerFocusIn = useCallback((event: FocusEvent) => {\n    clearTimeout(blurTimeoutRef.current);\n    const target = event.target as HTMLInputElement;\n    const slotIndex = inputRefs.current.indexOf(target);\n\n    if (slotIndex !== -1) {\n      setActiveIndex(slotIndex);\n    }\n  }, []);\n\n  const handleContainerFocusOut = useCallback(() => {\n    clearTimeout(blurTimeoutRef.current);\n    blurTimeoutRef.current = setTimeout(() => {\n      if (!containerRef.current?.contains(document.activeElement)) {\n        setActiveIndex(-1);\n      }\n    }, 0);\n  }, []);\n\n  useEffect(() => () => clearTimeout(blurTimeoutRef.current), []);\n\n  const handleDigitInput = useCallback(\n    (index: number, digit: string) => {\n      if (!DIGIT_REGEX.test(digit)) return;\n\n      const newSlots = [...slotsRef.current];\n      newSlots[index] = digit;\n      emitValue(newSlots);\n\n      const nextIndex = index + 1;\n\n      if (nextIndex < maxLength) {\n        setActiveIndex(nextIndex);\n        inputRefs.current[nextIndex]?.focus();\n      }\n    },\n    [maxLength, emitValue],\n  );\n\n  const handleDelete = useCallback(\n    (index: number) => {\n      const newSlots = [...slotsRef.current];\n\n      if (newSlots[index]) {\n        newSlots[index] = '';\n        emitValue(newSlots);\n      } else if (index > 0) {\n        newSlots[index - 1] = '';\n        emitValue(newSlots);\n        setActiveIndex(index - 1);\n        inputRefs.current[index - 1]?.focus();\n      }\n    },\n    [emitValue],\n  );\n\n  const handlePaste = useCallback(\n    (text: string) => {\n      const digits = extractDigits(text).slice(0, maxLength);\n\n      if (digits.length > 0) {\n        const newSlots = Array.from(\n          {length: maxLength},\n          (_, index) => digits[index] ?? '',\n        );\n        emitValue(newSlots);\n        const focusIndex = Math.min(digits.length, maxLength - 1);\n        setActiveIndex(focusIndex);\n        inputRefs.current[focusIndex]?.focus();\n      }\n    },\n    [maxLength, emitValue],\n  );\n\n  const contextValue = useMemo<InputOTPContextValue>(\n    () => ({\n      slots,\n      activeIndex,\n      maxLength,\n      disabled,\n      error,\n      setActiveIndex,\n      handleDigitInput,\n      handleDelete,\n      handlePaste,\n      inputRefs,\n    }),\n    [\n      slots,\n      activeIndex,\n      maxLength,\n      disabled,\n      error,\n      handleDigitInput,\n      handleDelete,\n      handlePaste,\n    ],\n  );\n\n  return {\n    containerRef,\n    contextValue,\n    handleContainerFocusIn,\n    handleContainerFocusOut,\n  };\n}\n","import {\n  type ChangeEvent,\n  type ClipboardEvent,\n  type KeyboardEvent,\n  useCallback,\n} from 'react';\nimport {DIGIT_REGEX, extractDigits, useInputOTPContext} from './InputOTPContext';\n\nexport function useInputOTPSlot(index: number) {\n  const {\n    slots,\n    activeIndex,\n    disabled,\n    error,\n    handleDigitInput,\n    handleDelete,\n    handlePaste,\n    setActiveIndex,\n    inputRefs,\n    maxLength,\n  } = useInputOTPContext();\n\n  const char = slots[index] ?? '';\n  const isActive = activeIndex === index;\n\n  const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n    switch (event.key) {\n      case 'Backspace':\n      case 'Delete':\n        event.preventDefault();\n        handleDelete(index);\n        break;\n      case 'ArrowLeft':\n        event.preventDefault();\n        if (index > 0) {\n          setActiveIndex(index - 1);\n          inputRefs.current[index - 1]?.focus();\n        }\n        break;\n      case 'ArrowRight':\n        event.preventDefault();\n        if (index < maxLength - 1) {\n          setActiveIndex(index + 1);\n          inputRefs.current[index + 1]?.focus();\n        }\n        break;\n      case 'Home':\n        event.preventDefault();\n        setActiveIndex(0);\n        inputRefs.current[0]?.focus();\n        break;\n      case 'End': {\n        event.preventDefault();\n        const lastIndex = maxLength - 1;\n        setActiveIndex(lastIndex);\n        inputRefs.current[lastIndex]?.focus();\n        break;\n      }\n      default:\n        if (DIGIT_REGEX.test(event.key)) {\n          event.preventDefault();\n          handleDigitInput(index, event.key);\n        } else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n          event.preventDefault();\n        }\n    }\n  };\n\n  const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n    const digits = extractDigits(event.target.value);\n\n    if (digits.length > 1) {\n      handlePaste(digits);\n    } else if (digits.length === 1) {\n      handleDigitInput(index, digits);\n    }\n  };\n\n  const handlePasteEvent = (event: ClipboardEvent<HTMLInputElement>) => {\n    event.preventDefault();\n    handlePaste(event.clipboardData.getData('text/plain'));\n  };\n\n  const setInputRef = useCallback(\n    (element: HTMLInputElement | null) => {\n      inputRefs.current[index] = element;\n    },\n    [index, inputRefs],\n  );\n\n  const focusSlot = useCallback(() => {\n    inputRefs.current[index]?.focus();\n  }, [index, inputRefs]);\n\n  return {\n    char,\n    isActive,\n    disabled,\n    error,\n    maxLength,\n    setInputRef,\n    handleKeyDown,\n    handleInputChange,\n    handlePasteEvent,\n    focusSlot,\n  };\n}\n","import {type ComponentType, type ReactNode, useState} from 'react';\nimport {type LucideIcon} from 'lucide-react';\nimport {DropdownMenu, DropdownMenuContent, DropdownMenuTrigger} from '../dropdown-menu';\nimport {cn} from '../lib/cn';\n\nexport type LucideIconEntry = {\n  type: 'lucide';\n  name: string;\n  icon: LucideIcon;\n};\n\nexport type CustomIconEntry = {\n  type: 'custom';\n  name: string;\n  icon: ComponentType<{size?: number; color?: string}>;\n};\n\nexport type IconEntry = LucideIconEntry | CustomIconEntry;\n\nexport type IconsDropdownProps = {\n  icons: IconEntry[];\n  onChange: (iconName: string) => void;\n  columns?: number;\n  selectedIcon?: string;\n  children: ReactNode;\n  position?: 'left' | 'right';\n  defaultOpen?: boolean;\n  onOpenChange?: (open: boolean) => void;\n};\n\nexport function IconsDropdown({\n  icons,\n  onChange,\n  columns = 4,\n  selectedIcon,\n  children,\n  position = 'left',\n  defaultOpen,\n  onOpenChange: onOpenChangeProp,\n}: IconsDropdownProps) {\n  const [open, setOpen] = useState(defaultOpen ?? false);\n\n  function handleOpenChange(value: boolean) {\n    setOpen(value);\n    onOpenChangeProp?.(value);\n  }\n\n  return (\n    <DropdownMenu open={open} onOpenChange={handleOpenChange}>\n      <DropdownMenuTrigger asChild>{children}</DropdownMenuTrigger>\n      <DropdownMenuContent\n        align={position === 'right' ? 'end' : 'start'}\n        className=\"max-h-48 w-auto overflow-y-auto p-6 shadow-[0px_5px_15px_rgba(26,148,255,0.16)]\"\n      >\n        <div\n          className=\"grid gap-1\"\n          style={{gridTemplateColumns: `repeat(${columns}, 1fr)`}}\n        >\n          {icons.map(entry => {\n            const isSelected = entry.name === selectedIcon;\n            const iconColor = isSelected\n              ? 'var(--chekin-color-brand-blue)'\n              : 'var(--chekin-color-gray-1)';\n            const IconComponent = entry.icon;\n\n            return (\n              <button\n                key={entry.name}\n                type=\"button\"\n                onClick={() => {\n                  onChange(entry.name);\n                  handleOpenChange(false);\n                }}\n                className={cn(\n                  'flex h-10 w-10 cursor-pointer items-center justify-center rounded-full transition-colors',\n                  'hover:bg-[var(--chekin-color-surface-input-empty)]',\n                  isSelected &&\n                    'bg-[color-mix(in_srgb,var(--chekin-color-brand-blue)_10%,transparent)]',\n                )}\n              >\n                <IconComponent size={24} color={iconColor} />\n              </button>\n            );\n          })}\n        </div>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n","{\n  \"verified\": \"Проверено\",\n  \"iv_status\": {\n    \"verified\": \"Проверено\",\n    \"pending\": \"В очакване\",\n    \"attention\": \"Внимание\"\n  },\n  \"zoom_in\": \"Увеличаване на мащаба\",\n  \"zoom_out\": \"Увеличаване на мащаба\",\n  \"rotate\": \"Завъртете\",\n  \"close\": \"Затвори\",\n  \"esc_to_close\": \"Натиснете ESC, за да затворите\",\n  \"play\": \"Играйте\",\n  \"pause\": \"Пауза\",\n  \"mute\": \"Заглушаване на звука\",\n  \"unmute\": \"Отмяна на звука\",\n  \"enter_full_screen\": \"Въвеждане на цял екран\",\n  \"exit_full_screen\": \"Излизане от цял екран\",\n  \"video_not_supported\": \"Браузърът ви не поддържа тага за видео.\",\n  \"skip_forward\": \"Прескачане напред\",\n  \"skip_backward\": \"Пропускане назад\",\n  \"loading\": \"Зареждане на\",\n  \"loading_video\": \"Зареждане на видео...\",\n  \"loading_data_description\": \"Моля, изчакайте, докато заредим данните ви. Това няма да отнеме много време.\",\n  \"no_results\": \"Няма резултати\",\n  \"nothing_found\": \"Нищо не е намерено\",\n  \"save_changes\": \"Запазване на промените\",\n  \"saved_exclamation\": \"Спасено!\",\n  \"saving\": \"Спестяване на\",\n  \"validating\": \"Утвърждаване на\",\n  \"error\": \"Грешка\",\n  \"optional\": \"По избор\",\n  \"search_property\": \"Търсене на имот\",\n  \"reset_search\": \"Нулиране на търсенето\",\n  \"no_items_to_show\": \"Няма елементи за показване\",\n  \"showing_range_of_total_items\": \"Показване на {{range}} от {{total}} елементи\",\n  \"rows_per_page\": \"Редове на страница\",\n  \"page_of_pages\": \"Страница {{page}} от {{pages}}\",\n  \"go_to_first_page\": \"Отидете на първа страница\",\n  \"go_to_previous_page\": \"Отидете на предишната страница\",\n  \"go_to_next_page\": \"Отидете на следващата страница\",\n  \"go_to_last_page\": \"Отидете на последната страница\",\n  \"sort_in_asc\": \"Сортиране във възходящ ред\",\n  \"sort_in_desc\": \"Сортиране в низходящ ред\",\n  \"sort_a_z\": \"Сортиране A → Z\",\n  \"sort_z_a\": \"Сортиране Z → A\",\n  \"clear_sorting\": \"Ясно сортиране\",\n  \"reach_us_at_email\": \"Обърнете се за помощ към support@chekin.com\",\n  \"please_wait\": \"Моля, изчакайте\",\n  \"feature_coming_soon\": \"Очаквайте скоро\",\n  \"feature_coming_soon_description\": \"Тази функция е в процес на разработка и ще бъде налична скоро. Следете за актуализации!\",\n  \"download_all\": \"Изтегляне на всички\",\n  \"entry_forms\": \"Формуляри за участие\",\n  \"tutorial\": \"Учебник\",\n  \"liveness_video\": \"Видеоклип за жизненост\",\n  \"beta\": \"Бета\",\n  \"reviews\": \"Отзиви\",\n  \"learn_more\": \"Научете повече\",\n  \"this_cannot_be_reverted\": \"Това не може да бъде върнато.\",\n  \"delete\": \"Изтриване на\",\n  \"cancel\": \"Отмяна на\",\n  \"you_have_made_changes\": \"Направили сте промени\",\n  \"would_you_like_to_save_them\": \"Искате ли да ги запазите?\",\n  \"save\": \"Запазете\",\n  \"dont_save\": \"Не запазвайте\",\n  \"copied_exclamation\": \"Копирано!\",\n  \"search_placeholder\": \"Търсене...\",\n  \"type_to_search\": \"Напишете, за да търсите...\",\n  \"loading_more\": \"Зареждане...\",\n  \"no_options\": \"Няма опции\",\n  \"select_option\": \"Изберете опция\",\n  \"clear_all\": \"Изчистване на всички\",\n  \"remove_item\": \"Премахване на {{label}}\",\n  \"upload_file\": \"Качване на файл\",\n  \"download_attachment\": \"Изтегляне на прикачен файл\",\n  \"remove_file\": \"Премахване на файл\",\n  \"open_calendar\": \"Отворен календар\",\n  \"clear_dates\": \"Изчистване на датите\",\n  \"select_dates\": \"Изберете дати\",\n  \"pick_date_range\": \"Изберете диапазон от дати\",\n  \"from\": \"От\",\n  \"to\": \"За\",\n  \"pick_month\": \"Изберете месец\",\n  \"pick_date\": \"Изберете дата\",\n  \"month\": \"Месец\",\n  \"day\": \"Ден\",\n  \"year\": \"Година\",\n  \"done\": \"Готово\",\n  \"wrong_period_of_dates\": \"Избраният период е невалиден\",\n  \"date_range_max_days_error_one\": \"Обхватът не може да надвишава {{count}} ден\",\n  \"date_range_max_days_error_other\": \"Обхватът не може да надвишава {{count}} дни\",\n  \"date_range_min_days_error_one\": \"Обхватът трябва да бъде поне {{count}} ден\",\n  \"date_range_min_days_error_other\": \"Диапазонът трябва да бъде най-малко {{count}} дни\",\n  \"past_dates\": \"Датата не може да бъде преди {{minDate}}\",\n  \"future_dates\": \"Датата не може да е след {{maxDate}}\",\n  \"signature_placeholder_text\": \"Подпишете се в това поле.<br/> Използвайте пръста си.<br/> Докоснете, за да започнете.\",\n  \"open_devices_camera\": \"Отваряне на камерата на устройството\",\n  \"place_document_inside_frame\": \"Поставете документа в рамката\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Затваряне на други приложения, които може да използват камерата\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Ако използвате външна камера, изключете я и я свържете отново\",\n  \"close_the_browser_re_open_it\": \"Затворете браузъра и го отворете отново\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Имате проблеми с камерата?\",\n    \"chekin_cant_use_your_camera\": \"Chekin не може да използва вашата камера\",\n    \"please_try_a_different_browser\": \"Камерата ви не работи в този браузър. Моля, опитайте да отворите връзката в друг браузър.\",\n    \"permissions_denied\": \"Разрешението е отказано\",\n    \"camera_permissions_denied\": \"Камерата не се отваря? Уверете се, че сте разрешили на браузъра да използва камерата.\",\n    \"no_camera_device_found\": \"Не е намерено устройство на камерата. Моля, свържете камера.\",\n    \"constraints_camera_error\": \"Ограниченията не могат да бъдат изпълнени от наличните устройства.\",\n    \"safari_camera_error\": \"Safari не може да отговори на изискванията на камерата\",\n    \"try_chrome_or_firefox\": \"Моля, опитайте с Chrome или Firefox\"\n  },\n  \"clear\": \"Clear\",\n  \"show_less\": \"Покажи по-малко\",\n  \"show_more\": \"Покажи повече\",\n  \"tap_here_to_sign\": \"Докоснете тук, за да подпишете\",\n  \"click_here_to_sign\": \"Кликнете тук, за да подпишете\",\n  \"prefix\": \"Префикс\",\n  \"prefix_required\": \"Изисква се префикс\",\n  \"reset\": \"Нулиране на\",\n  \"show_password\": \"Показване на паролата\",\n  \"hide_password\": \"Скриване на паролата\",\n  \"increment\": \"Увеличаване на\",\n  \"decrement\": \"Намаление\",\n  \"create_option\": \"Създаване на \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"Годината трябва да е между {{min}} и {{max}}\",\n  \"clear_date\": \"Ясна дата\",\n  \"select_date\": \"Изберете дата\",\n  \"draw_signature_here\": \"Поставете подписа си тук\",\n  \"signature_hint\": \"Използвайте мишката или пръста си\",\n  \"clear_signature\": \"Ясен подпис\",\n  \"draw_signature_here_mobile\": \"Нарисувайте подписа си\",\n  \"signature_hint_mobile\": \"Използвайте пръста си\",\n  \"camera_access_needed\": \"Необходим е достъп до камерата\",\n  \"camera_access_needed_text\": \"Разрешете достъп до камерата, за да направите снимката. Ако достъпът е блокиран, разрешете камерата в настройките на браузъра си и опитайте отново.\",\n  \"dialog\": \"Диалог\"\n}\n","{}\n","{\n  \"verified\": \"Ověřeno\",\n  \"iv_status\": {\n    \"verified\": \"Ověřeno\",\n    \"pending\": \"Čeká se na\",\n    \"attention\": \"Pozor\"\n  },\n  \"zoom_in\": \"Přiblížení\",\n  \"zoom_out\": \"Zvětšení\",\n  \"rotate\": \"Rotace\",\n  \"close\": \"Zavřít\",\n  \"esc_to_close\": \"Stisknutím ESC zavřete\",\n  \"play\": \"Přehrát\",\n  \"pause\": \"Pauza\",\n  \"mute\": \"Ztlumit\",\n  \"unmute\": \"Zrušit ztlumení\",\n  \"enter_full_screen\": \"Vstup na celou obrazovku\",\n  \"exit_full_screen\": \"Ukončení celé obrazovky\",\n  \"video_not_supported\": \"Váš prohlížeč nepodporuje značku videa.\",\n  \"skip_forward\": \"Přeskočit dopředu\",\n  \"skip_backward\": \"Přeskočit zpět\",\n  \"loading\": \"Načítání\",\n  \"loading_video\": \"Načítání videa...\",\n  \"loading_data_description\": \"Počkejte prosím, než načteme vaše data. Nebude to trvat dlouho.\",\n  \"no_results\": \"Žádné výsledky\",\n  \"nothing_found\": \"Nic nebylo nalezeno\",\n  \"save_changes\": \"Uložení změn\",\n  \"saved_exclamation\": \"Zachráněno!\",\n  \"saving\": \"Úspora\",\n  \"validating\": \"Ověřování\",\n  \"error\": \"Chyba\",\n  \"optional\": \"Volitelně\",\n  \"search_property\": \"Vyhledávání nemovitostí\",\n  \"reset_search\": \"Obnovení vyhledávání\",\n  \"no_items_to_show\": \"Žádné položky k zobrazení\",\n  \"showing_range_of_total_items\": \"Zobrazeno {{range}} z {{total}} položek\",\n  \"rows_per_page\": \"Řádky na stránku\",\n  \"page_of_pages\": \"Strana {{page}} z {{pages}}\",\n  \"go_to_first_page\": \"Přejít na první stránku\",\n  \"go_to_previous_page\": \"Přejít na předchozí stránku\",\n  \"go_to_next_page\": \"Přejít na další stránku\",\n  \"go_to_last_page\": \"Přejít na poslední stránku\",\n  \"sort_in_asc\": \"Seřadit vzestupně\",\n  \"sort_in_desc\": \"Seřadit sestupně\",\n  \"sort_a_z\": \"Třídit A → Z\",\n  \"sort_z_a\": \"Třídit Z → A\",\n  \"clear_sorting\": \"Přehledné třídění\",\n  \"reach_us_at_email\": \"Získejte podporu na adrese support@chekin.com\",\n  \"please_wait\": \"Počkejte prosím\",\n  \"feature_coming_soon\": \"Již brzy\",\n  \"feature_coming_soon_description\": \"Tato funkce je v současné době ve vývoji a bude brzy k dispozici. Zůstaňte naladěni na aktualizace!\",\n  \"download_all\": \"Stáhnout vše\",\n  \"entry_forms\": \"Přihlašovací formuláře\",\n  \"tutorial\": \"Výukový program\",\n  \"liveness_video\": \"Video Liveness\",\n  \"beta\": \"Beta\",\n  \"reviews\": \"Recenze\",\n  \"learn_more\": \"Zjistěte více\",\n  \"this_cannot_be_reverted\": \"To nelze vrátit zpět\",\n  \"delete\": \"Odstranit\",\n  \"cancel\": \"Zrušit\",\n  \"you_have_made_changes\": \"Provedli jste změny\",\n  \"would_you_like_to_save_them\": \"Chcete je zachránit?\",\n  \"save\": \"Uložit\",\n  \"dont_save\": \"Neukládejte\",\n  \"copied_exclamation\": \"Zkopírováno!\",\n  \"search_placeholder\": \"Vyhledávání...\",\n  \"type_to_search\": \"Zadejte hledání...\",\n  \"loading_more\": \"Načítání...\",\n  \"no_options\": \"Žádné možnosti\",\n  \"select_option\": \"Vyberte možnost\",\n  \"clear_all\": \"Vymazat vše\",\n  \"remove_item\": \"Odstranění {{label}}\",\n  \"upload_file\": \"Nahrát soubor\",\n  \"download_attachment\": \"Stáhnout přílohu\",\n  \"remove_file\": \"Odstranění souboru\",\n  \"open_calendar\": \"Otevřený kalendář\",\n  \"clear_dates\": \"Jasná data\",\n  \"select_dates\": \"Zvolte data\",\n  \"pick_date_range\": \"Výběr rozsahu dat\",\n  \"from\": \"Z\",\n  \"to\": \"Na\",\n  \"pick_month\": \"Vyberte si měsíc\",\n  \"pick_date\": \"Výběr data\",\n  \"month\": \"Měsíc\",\n  \"day\": \"Den\",\n  \"year\": \"Rok\",\n  \"done\": \"Hotovo\",\n  \"wrong_period_of_dates\": \"Zvolené období je neplatné\",\n  \"date_range_max_days_error_one\": \"Rozsah nesmí překročit {{count}} den\",\n  \"date_range_max_days_error_other\": \"Rozsah nesmí překročit {{count}} dnů\",\n  \"date_range_min_days_error_one\": \"Rozsah musí být alespoň {{count}} den\",\n  \"date_range_min_days_error_other\": \"Rozsah musí být alespoň {{count}} dní\",\n  \"past_dates\": \"Datum nesmí být starší než {{minDate}}\",\n  \"future_dates\": \"Datum nesmí být po {{maxDate}}\",\n  \"signature_placeholder_text\": \"Podepište se do tohoto pole.<br/> Použijte prst.<br/> Klepnutím na začněte.\",\n  \"open_devices_camera\": \"Otevření fotoaparátu zařízení\",\n  \"place_document_inside_frame\": \"Umístěte dokument do rámečku\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Zavření dalších aplikací, které mohou používat fotoaparát\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Pokud používáte externí kameru, odpojte ji a znovu připojte.\",\n  \"close_the_browser_re_open_it\": \"Zavřete prohlížeč a znovu jej otevřete\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Máte problémy s fotoaparátem?\",\n    \"chekin_cant_use_your_camera\": \"Chekin nemůže používat váš fotoaparát\",\n    \"please_try_a_different_browser\": \"Váš fotoaparát v tomto prohlížeči nefunguje. Zkuste prosím otevřít odkaz v jiném prohlížeči.\",\n    \"permissions_denied\": \"Povolení zamítnuto\",\n    \"camera_permissions_denied\": \"Fotoaparát se neotevře? Ujistěte se, že jste prohlížeči povolili používat kameru.\",\n    \"no_camera_device_found\": \"Nebylo nalezeno žádné zařízení fotoaparátu. Připojte fotoaparát.\",\n    \"constraints_camera_error\": \"Omezení nelze splnit dostupnými zařízeními.\",\n    \"safari_camera_error\": \"Safari nemohlo splnit požadavky na fotoaparát\",\n    \"try_chrome_or_firefox\": \"Zkuste prosím Chrome nebo Firefox\"\n  },\n  \"clear\": \"Přehledně\",\n  \"show_less\": \"Zobrazit méně\",\n  \"show_more\": \"Zobrazit více\",\n  \"tap_here_to_sign\": \"Klepnutím zde podepíšete\",\n  \"click_here_to_sign\": \"Klikněte zde a podepište se\",\n  \"prefix\": \"Předpona\",\n  \"prefix_required\": \"Předpona je povinná\",\n  \"reset\": \"Obnovení\",\n  \"show_password\": \"Zobrazit heslo\",\n  \"hide_password\": \"Skrýt heslo\",\n  \"increment\": \"Přírůstek\",\n  \"decrement\": \"Snížení\",\n  \"create_option\": \"Vytvořit \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"Rok musí být mezi {{min}} a {{max}}.\",\n  \"clear_date\": \"Datum vymazání\",\n  \"select_date\": \"Zvolte datum\",\n  \"draw_signature_here\": \"Zde se podepište\",\n  \"signature_hint\": \"Použijte myš nebo prst\",\n  \"clear_signature\": \"Čitelný podpis\",\n  \"draw_signature_here_mobile\": \"Nakreslete svůj podpis\",\n  \"signature_hint_mobile\": \"Použijte prst\",\n  \"camera_access_needed\": \"Je nutný přístup k fotoaparátu\",\n  \"camera_access_needed_text\": \"Povolte fotoaparátu přístup, aby bylo možné pořídit fotografii. Pokud je přístup blokován, povolte fotoaparát v nastavení prohlížeče a zkuste to znovu.\",\n  \"dialog\": \"Dialog\"\n}\n","{\n  \"verified\": \"Geprüft\",\n  \"iv_status\": {\n    \"verified\": \"Geprüft\",\n    \"pending\": \"Anhängig\",\n    \"attention\": \"Achtung\"\n  },\n  \"zoom_in\": \"Vergrößern\",\n  \"zoom_out\": \"Herauszoomen\",\n  \"rotate\": \"Drehen Sie\",\n  \"close\": \"Schließen\",\n  \"esc_to_close\": \"Zum Schließen ESC drücken\",\n  \"play\": \"Spielen\",\n  \"pause\": \"Pause\",\n  \"mute\": \"Stummschalten\",\n  \"unmute\": \"Aufheben der Stummschaltung\",\n  \"enter_full_screen\": \"Vollbild eingeben\",\n  \"exit_full_screen\": \"Vollbild beenden\",\n  \"video_not_supported\": \"Ihr Browser unterstützt das Video-Tag nicht.\",\n  \"skip_forward\": \"Vorwärts springen\",\n  \"skip_backward\": \"Rückwärts springen\",\n  \"loading\": \"Laden\",\n  \"loading_video\": \"Video wird geladen...\",\n  \"loading_data_description\": \"Bitte warten Sie, während wir Ihre Daten laden. Dies wird nicht lange dauern.\",\n  \"no_results\": \"Keine Ergebnisse\",\n  \"nothing_found\": \"Nichts gefunden\",\n  \"save_changes\": \"Änderungen speichern\",\n  \"saved_exclamation\": \"Gerettet!\",\n  \"saving\": \"Sparen\",\n  \"validating\": \"Validierung\",\n  \"error\": \"Fehler\",\n  \"optional\": \"Optional\",\n  \"search_property\": \"Eigenschaft suchen\",\n  \"reset_search\": \"Suche zurücksetzen\",\n  \"no_items_to_show\": \"Keine Artikel zu zeigen\",\n  \"showing_range_of_total_items\": \"Zeigt {{range}} von {{total}} Artikeln\",\n  \"rows_per_page\": \"Zeilen pro Seite\",\n  \"page_of_pages\": \"Seite {{page}} von {{pages}}\",\n  \"go_to_first_page\": \"Zur ersten Seite gehen\",\n  \"go_to_previous_page\": \"Zur vorherigen Seite gehen\",\n  \"go_to_next_page\": \"Weiter zur nächsten Seite\",\n  \"go_to_last_page\": \"Gehe zur letzten Seite\",\n  \"sort_in_asc\": \"In aufsteigender Reihenfolge sortieren\",\n  \"sort_in_desc\": \"In absteigender Reihenfolge sortieren\",\n  \"clear_sorting\": \"Eindeutige Sortierung\",\n  \"sort_a_z\": \"A → Z sortieren\",\n  \"sort_z_a\": \"Z → A sortieren\",\n  \"reach_us_at_email\": \"Erreichen Sie den Support unter support@chekin.com\",\n  \"please_wait\": \"Bitte warten\",\n  \"feature_coming_soon\": \"Bald verfügbar\",\n  \"feature_coming_soon_description\": \"Diese Funktion ist derzeit in Entwicklung und wird bald verfügbar sein. Bleiben Sie auf dem Laufenden für Updates!\",\n  \"beta\": \"Beta\",\n  \"download_all\": \"Alle herunterladen\",\n  \"entry_forms\": \"Anmeldeformulare\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Lebendigkeit-Video\",\n  \"reviews\": \"Bewertungen\",\n  \"learn_more\": \"Mehr erfahren\",\n  \"this_cannot_be_reverted\": \"This cannot be reverted\",\n  \"delete\": \"Delete\",\n  \"cancel\": \"Cancel\",\n  \"you_have_made_changes\": \"You have made changes\",\n  \"would_you_like_to_save_them\": \"Would you like to save them?\",\n  \"save\": \"Save\",\n  \"dont_save\": \"Don't save\",\n  \"copied_exclamation\": \"Kopiert!\",\n  \"search_placeholder\": \"Suche...\",\n  \"type_to_search\": \"Tippen Sie für die Suche...\",\n  \"loading_more\": \"Laden...\",\n  \"no_options\": \"Keine Optionen\",\n  \"select_option\": \"Option auswählen\",\n  \"clear_all\": \"Alle löschen\",\n  \"remove_item\": \"{{label}} entfernen\",\n  \"upload_file\": \"Datei hochladen\",\n  \"download_attachment\": \"Anhang herunterladen\",\n  \"remove_file\": \"Datei entfernen\",\n  \"open_calendar\": \"Kalender öffnen\",\n  \"clear_dates\": \"Daten löschen\",\n  \"select_dates\": \"Daten auswählen\",\n  \"pick_date_range\": \"Wählen Sie einen Datumsbereich\",\n  \"from\": \"Von\",\n  \"to\": \"An\",\n  \"pick_month\": \"Wählen Sie einen Monat\",\n  \"pick_date\": \"Wählen Sie ein Datum\",\n  \"month\": \"Monat\",\n  \"day\": \"Tag\",\n  \"year\": \"Jahr\",\n  \"done\": \"Erledigt\",\n  \"wrong_period_of_dates\": \"Ausgewählter Zeitraum ist ungültig\",\n  \"date_range_max_days_error_one\": \"Der Bereich kann {{count}} Tag nicht überschreiten\",\n  \"date_range_max_days_error_other\": \"Der Bereich kann {{count}} Tage nicht überschreiten\",\n  \"date_range_min_days_error_one\": \"Der Bereich muss mindestens {{count}} Tag betragen\",\n  \"date_range_min_days_error_other\": \"Die Reichweite muss mindestens {{count}} Tage betragen\",\n  \"past_dates\": \"Das Datum kann nicht vor {{minDate}} liegen.\",\n  \"future_dates\": \"Das Datum kann nicht nach {{maxDate}} liegen.\",\n  \"signature_placeholder_text\": \"Unterschreibe in diesem Feld.<br/> Benutze deinen Finger.<br/> Tippe zum Starten.\",\n  \"open_devices_camera\": \"Öffnen Sie die Kamera des Geräts\",\n  \"place_document_inside_frame\": \"Legen Sie Ihr Dokument in den Rahmen\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Schließen Sie andere Anwendungen, die möglicherweise Ihre Kamera verwenden\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Wenn Sie eine externe Kamera verwenden, trennen Sie sie ab und schließen Sie sie wieder an.\",\n  \"close_the_browser_re_open_it\": \"Schließen Sie den Browser und öffnen Sie ihn erneut\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Haben Sie Probleme mit der Kamera?\",\n    \"chekin_cant_use_your_camera\": \"Chekin kann deine Kamera nicht benutzen\",\n    \"please_try_a_different_browser\": \"Ihre Kamera funktioniert in diesem Browser nicht. Bitte versuchen Sie, den Link in einem anderen Browser zu öffnen.\",\n    \"permissions_denied\": \"Erlaubnis verweigert\",\n    \"camera_permissions_denied\": \"Die Kamera lässt sich nicht öffnen? Stellen Sie sicher, dass Sie dem Browser die Verwendung der Kamera erlauben.\",\n    \"no_camera_device_found\": \"Kein Kameragerät gefunden. Bitte schließen Sie eine Kamera an.\",\n    \"constraints_camera_error\": \"Einschränkungen können nicht von den verfügbaren Geräten erfüllt werden.\",\n    \"safari_camera_error\": \"Safari konnte die Anforderungen der Kamera nicht erfüllen\",\n    \"try_chrome_or_firefox\": \"Bitte versuchen Sie Chrome oder Firefox\"\n  },\n  \"clear\": \"Klar\",\n  \"show_less\": \"Weniger anzeigen\",\n  \"show_more\": \"Mehr anzeigen\",\n  \"tap_here_to_sign\": \"Zum Unterschreiben hier tippen\",\n  \"click_here_to_sign\": \"Zum Unterschreiben hier klicken\",\n  \"prefix\": \"Vorsilbe\",\n  \"prefix_required\": \"Präfix ist erforderlich\",\n  \"reset\": \"Zurücksetzen\",\n  \"show_password\": \"Passwort anzeigen\",\n  \"hide_password\": \"Passwort verstecken\",\n  \"increment\": \"Inkrement\",\n  \"decrement\": \"Verkleinern\",\n  \"create_option\": \"Erstellen Sie \\\"{{input}}\\\".\",\n  \"year_out_of_range\": \"Das Jahr muss zwischen {{min}} und {{max}} liegen\",\n  \"clear_date\": \"Datum löschen\",\n  \"select_date\": \"Datum auswählen\",\n  \"draw_signature_here\": \"Bitte unterschreiben Sie hier\",\n  \"signature_hint\": \"Benutze deine Maus oder deinen Finger\",\n  \"clear_signature\": \"Deutliche Unterschrift\",\n  \"draw_signature_here_mobile\": \"Schreiben Sie Ihre Unterschrift\",\n  \"signature_hint_mobile\": \"Benutze deinen Finger\",\n  \"camera_access_needed\": \"Kamerazugriff erforderlich\",\n  \"camera_access_needed_text\": \"Erlauben Sie der Kamera den Zugriff, um das Foto aufzunehmen. Falls dies blockiert ist, aktivieren Sie die Kamera in Ihren Browsereinstellungen und versuchen Sie es dann erneut.\",\n  \"dialog\": \"Dialog\"\n}\n","{\n  \"verified\": \"Επαληθευμένο\",\n  \"iv_status\": {\n    \"verified\": \"Επαληθευμένο\",\n    \"pending\": \"Εκκρεμεί\",\n    \"attention\": \"Προσοχή\"\n  },\n  \"zoom_in\": \"Μεγέθυνση\",\n  \"zoom_out\": \"Μεγέθυνση\",\n  \"rotate\": \"Περιστροφή\",\n  \"close\": \"Κλείστε το\",\n  \"esc_to_close\": \"Πατήστε ESC για να κλείσετε\",\n  \"play\": \"Παίξτε\",\n  \"pause\": \"Παύση\",\n  \"mute\": \"Σίγαση\",\n  \"unmute\": \"Αποσυνδέστε τη φωνή σας από το\",\n  \"enter_full_screen\": \"Είσοδος σε πλήρη οθόνη\",\n  \"exit_full_screen\": \"Έξοδος πλήρους οθόνης\",\n  \"video_not_supported\": \"Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα βίντεο.\",\n  \"skip_forward\": \"Μετάβαση προς τα εμπρός\",\n  \"skip_backward\": \"Μετάβαση προς τα πίσω\",\n  \"loading\": \"Φόρτωση\",\n  \"loading_video\": \"Φόρτωση βίντεο...\",\n  \"loading_data_description\": \"Παρακαλούμε περιμένετε μέχρι να φορτώσουμε τα δεδομένα σας. Αυτό δεν θα διαρκέσει πολύ.\",\n  \"no_results\": \"Δεν υπάρχουν αποτελέσματα\",\n  \"nothing_found\": \"Δεν βρέθηκε τίποτα\",\n  \"save_changes\": \"Αποθήκευση αλλαγών\",\n  \"saved_exclamation\": \"Σωθήκαμε!\",\n  \"saving\": \"Εξοικονόμηση\",\n  \"validating\": \"Επικύρωση\",\n  \"error\": \"Σφάλμα\",\n  \"optional\": \"Προαιρετικό\",\n  \"search_property\": \"Αναζήτηση ακινήτου\",\n  \"reset_search\": \"Επαναφορά αναζήτησης\",\n  \"no_items_to_show\": \"Δεν υπάρχουν αντικείμενα προς εμφάνιση\",\n  \"showing_range_of_total_items\": \"Εμφάνιση {{range}} από {{total}} στοιχεία\",\n  \"rows_per_page\": \"Γραμμές ανά σελίδα\",\n  \"page_of_pages\": \"Σελίδα {{page}} από {{pages}}\",\n  \"go_to_first_page\": \"Μετάβαση στην πρώτη σελίδα\",\n  \"go_to_previous_page\": \"Πηγαίνετε στην προηγούμενη σελίδα\",\n  \"go_to_next_page\": \"Μετάβαση στην επόμενη σελίδα\",\n  \"go_to_last_page\": \"Μετάβαση στην τελευταία σελίδα\",\n  \"sort_in_asc\": \"Ταξινόμηση σε αύξουσα σειρά\",\n  \"sort_in_desc\": \"Ταξινόμηση κατά φθίνουσα σειρά\",\n  \"sort_a_z\": \"Ταξινόμηση A → Z\",\n  \"sort_z_a\": \"Ταξινόμηση Z → A\",\n  \"clear_sorting\": \"Σαφής διαλογή\",\n  \"reach_us_at_email\": \"Επικοινωνήστε με την υποστήριξη στη διεύθυνση support@chekin.com\",\n  \"please_wait\": \"Παρακαλώ περιμένετε\",\n  \"feature_coming_soon\": \"Σύντομα\",\n  \"feature_coming_soon_description\": \"Αυτή η λειτουργία βρίσκεται υπό ανάπτυξη και θα είναι διαθέσιμη σύντομα. Μείνετε συντονισμένοι για ενημερώσεις!\",\n  \"download_all\": \"Λήψη όλων\",\n  \"entry_forms\": \"Έντυπα συμμετοχής\",\n  \"tutorial\": \"Σεμινάριο\",\n  \"liveness_video\": \"Βίντεο ζωντάνιας\",\n  \"beta\": \"Beta\",\n  \"reviews\": \"Κριτικές\",\n  \"learn_more\": \"Μάθετε περισσότερα\",\n  \"this_cannot_be_reverted\": \"Αυτό δεν μπορεί να αντιστραφεί\",\n  \"delete\": \"Διαγραφή\",\n  \"cancel\": \"Ακύρωση\",\n  \"you_have_made_changes\": \"Έχετε κάνει αλλαγές\",\n  \"would_you_like_to_save_them\": \"Θα θέλατε να τα σώσετε;\",\n  \"save\": \"Αποθήκευση\",\n  \"dont_save\": \"Μην αποθηκεύετε\",\n  \"copied_exclamation\": \"Αντιγραφή!\",\n  \"search_placeholder\": \"Αναζήτηση...\",\n  \"type_to_search\": \"Πληκτρολογήστε για αναζήτηση...\",\n  \"loading_more\": \"Φόρτωση...\",\n  \"no_options\": \"Δεν υπάρχουν επιλογές\",\n  \"select_option\": \"Επιλέξτε επιλογή\",\n  \"clear_all\": \"Εκκαθάριση όλων\",\n  \"remove_item\": \"Κατάργηση του {{label}}\",\n  \"upload_file\": \"Ανέβασμα αρχείου\",\n  \"download_attachment\": \"Λήψη συνημμένου\",\n  \"remove_file\": \"Αφαίρεση αρχείου\",\n  \"open_calendar\": \"Ανοιχτό ημερολόγιο\",\n  \"clear_dates\": \"Εκκαθάριση ημερομηνιών\",\n  \"select_dates\": \"Επιλέξτε ημερομηνίες\",\n  \"pick_date_range\": \"Επιλέξτε ένα εύρος ημερομηνιών\",\n  \"from\": \"Από το\",\n  \"to\": \"Προς\",\n  \"pick_month\": \"Διαλέξτε ένα μήνα\",\n  \"pick_date\": \"Διαλέξτε μια ημερομηνία\",\n  \"month\": \"Μήνας\",\n  \"day\": \"Ημέρα\",\n  \"year\": \"Έτος\",\n  \"done\": \"Έγινε\",\n  \"wrong_period_of_dates\": \"Η επιλεγμένη περίοδος είναι άκυρη\",\n  \"date_range_max_days_error_one\": \"Το εύρος δεν μπορεί να υπερβαίνει την {{count}} ημέρα\",\n  \"date_range_max_days_error_other\": \"Το εύρος δεν μπορεί να υπερβαίνει τις {{count}} ημέρες\",\n  \"date_range_min_days_error_one\": \"Το εύρος πρέπει να είναι τουλάχιστον {{count}} ημέρα\",\n  \"date_range_min_days_error_other\": \"Το εύρος πρέπει να είναι τουλάχιστον {{count}} ημέρες\",\n  \"past_dates\": \"Η ημερομηνία δεν μπορεί να είναι πριν από το {{minDate}}__\",\n  \"future_dates\": \"Η ημερομηνία δεν μπορεί να είναι μετά το {{maxDate}}__\",\n  \"signature_placeholder_text\": \"Υπογράψτε μέσα σε αυτό το πλαίσιο.<br/> Χρησιμοποιήστε το δάχτυλό σας.<br/> Πατήστε για να ξεκινήσετε.\",\n  \"open_devices_camera\": \"Ανοίξτε την κάμερα της συσκευής\",\n  \"place_document_inside_frame\": \"Τοποθετήστε το έγγραφό σας μέσα στο πλαίσιο\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Κλείστε άλλες εφαρμογές που μπορεί να χρησιμοποιούν την κάμερά σας\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Εάν χρησιμοποιείτε εξωτερική κάμερα, αποσυνδέστε και επανασυνδέστε την.\",\n  \"close_the_browser_re_open_it\": \"Κλείστε το πρόγραμμα περιήγησης και ανοίξτε το ξανά\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Αντιμετωπίζετε προβλήματα με την κάμερα;\",\n    \"chekin_cant_use_your_camera\": \"Ο Τσέκιν δεν μπορεί να χρησιμοποιήσει την κάμερά σας\",\n    \"please_try_a_different_browser\": \"Η κάμερά σας δεν λειτουργεί σε αυτό το πρόγραμμα περιήγησης. Προσπαθήστε να ανοίξετε το σύνδεσμο σε ένα άλλο πρόγραμμα περιήγησης.\",\n    \"permissions_denied\": \"Άδεια αρνηθεί\",\n    \"camera_permissions_denied\": \"Η κάμερα δεν ανοίγει; Βεβαιωθείτε ότι επιτρέπετε στο πρόγραμμα περιήγησης την άδεια χρήσης της κάμερας.\",\n    \"no_camera_device_found\": \"Δεν βρέθηκε συσκευή κάμερας. Παρακαλούμε συνδέστε μια κάμερα.\",\n    \"constraints_camera_error\": \"Οι περιορισμοί δεν μπορούν να ικανοποιηθούν από τις διαθέσιμες συσκευές.\",\n    \"safari_camera_error\": \"Η Safari δεν μπορούσε να ικανοποιήσει τις απαιτήσεις της κάμερας\",\n    \"try_chrome_or_firefox\": \"Δοκιμάστε το Chrome ή το Firefox\"\n  },\n  \"clear\": \"Σαφής\",\n  \"show_less\": \"Εμφάνιση λιγότερων\",\n  \"show_more\": \"Εμφάνιση περισσότερων\",\n  \"tap_here_to_sign\": \"Πατήστε εδώ για να υπογράψετε\",\n  \"click_here_to_sign\": \"Κάντε κλικ εδώ για να υπογράψετε\",\n  \"prefix\": \"Πρόθεμα\",\n  \"prefix_required\": \"Απαιτείται πρόθεμα\",\n  \"reset\": \"Επαναφορά\",\n  \"show_password\": \"Εμφάνιση κωδικού πρόσβασης\",\n  \"hide_password\": \"Απόκρυψη κωδικού πρόσβασης\",\n  \"increment\": \"Αύξηση\",\n  \"decrement\": \"Μείωση\",\n  \"create_option\": \"Δημιουργήστε το \\\"{{input}}__\\\"\",\n  \"year_out_of_range\": \"Το έτος πρέπει να είναι μεταξύ {{min}} και {{max}}\",\n  \"clear_date\": \"Καθαρή ημερομηνία\",\n  \"select_date\": \"Επιλέξτε ημερομηνία\",\n  \"draw_signature_here\": \"Υπογράψτε εδώ\",\n  \"signature_hint\": \"Χρησιμοποιήστε το ποντίκι ή το δάχτυλό σας\",\n  \"clear_signature\": \"Καθαρή υπογραφή\",\n  \"draw_signature_here_mobile\": \"Σχεδιάστε την υπογραφή σας\",\n  \"signature_hint_mobile\": \"Χρησιμοποίησε το δάχτυλό σου\",\n  \"camera_access_needed\": \"Απαιτείται πρόσβαση στην κάμερα\",\n  \"camera_access_needed_text\": \"Επιτρέψτε την πρόσβαση στην κάμερα για να τραβήξετε τη φωτογραφία. Εάν η πρόσβαση είναι αποκλεισμένη, ενεργοποιήστε την κάμερα στις ρυθμίσεις του προγράμματος περιήγησής σας και, στη συνέχεια, δοκιμάστε ξανά.\",\n  \"dialog\": \"Διάλογος\"\n}\n","{\n  \"verified\": \"Verified\",\n  \"iv_status\": {\n    \"verified\": \"Verified\",\n    \"pending\": \"Pending\",\n    \"attention\": \"Attention\"\n  },\n  \"zoom_in\": \"Zoom In\",\n  \"zoom_out\": \"Zoom Out\",\n  \"rotate\": \"Rotate\",\n  \"close\": \"Close\",\n  \"dialog\": \"Dialog\",\n  \"esc_to_close\": \"Press ESC to close\",\n  \"play\": \"Play\",\n  \"pause\": \"Pause\",\n  \"mute\": \"Mute\",\n  \"unmute\": \"Unmute\",\n  \"enter_full_screen\": \"Enter Full Screen\",\n  \"exit_full_screen\": \"Exit Full Screen\",\n  \"video_not_supported\": \"Your browser does not support the video tag.\",\n  \"skip_forward\": \"Skip Forward\",\n  \"skip_backward\": \"Skip Backward\",\n  \"loading\": \"Loading\",\n  \"loading_video\": \"Loading video...\",\n  \"loading_data_description\": \"Please wait while we load your data. This won't take long.\",\n  \"no_results\": \"No results\",\n  \"nothing_found\": \"Nothing found\",\n  \"save_changes\": \"Save Changes\",\n  \"saved_exclamation\": \"Saved!\",\n  \"saving\": \"Saving\",\n  \"validating\": \"Validating\",\n  \"error\": \"Error\",\n  \"optional\": \"Optional\",\n  \"search_property\": \"Search property\",\n  \"reset_search\": \"Reset search\",\n  \"no_items_to_show\": \"No items to show\",\n  \"showing_range_of_total_items\": \"Showing {{range}} of {{total}} items\",\n  \"rows_per_page\": \"Rows per page\",\n  \"page_of_pages\": \"Page {{page}} of {{pages}}\",\n  \"go_to_first_page\": \"Go to first page\",\n  \"go_to_previous_page\": \"Go to previous page\",\n  \"go_to_next_page\": \"Go to next page\",\n  \"go_to_last_page\": \"Go to last page\",\n  \"sort_in_asc\": \"Sort in ascending order\",\n  \"sort_in_desc\": \"Sort in descending order\",\n  \"sort_a_z\": \"Sort A → Z\",\n  \"sort_z_a\": \"Sort Z → A\",\n  \"clear_sorting\": \"Clear sorting\",\n  \"reach_us_at_email\": \"Reach support at support@chekin.com\",\n  \"please_wait\": \"Please wait\",\n  \"feature_coming_soon\": \"Coming soon\",\n  \"feature_coming_soon_description\": \"This feature is currently in development and will be available soon. Stay tuned for updates!\",\n  \"download_all\": \"Download All\",\n  \"entry_forms\": \"Entry forms\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Liveness video\",\n  \"beta\": \"Beta\",\n  \"reviews\": \"Reviews\",\n  \"learn_more\": \"Learn more\",\n  \"this_cannot_be_reverted\": \"This cannot be reverted\",\n  \"delete\": \"Delete\",\n  \"cancel\": \"Cancel\",\n  \"you_have_made_changes\": \"You have made changes\",\n  \"would_you_like_to_save_them\": \"Would you like to save them?\",\n  \"save\": \"Save\",\n  \"dont_save\": \"Don't save\",\n  \"copied_exclamation\": \"Copied!\",\n  \"search_placeholder\": \"Search…\",\n  \"type_to_search\": \"Type to search…\",\n  \"loading_more\": \"Loading…\",\n  \"no_options\": \"No options\",\n  \"select_option\": \"Select option\",\n  \"clear_all\": \"Clear all\",\n  \"remove_item\": \"Remove {{label}}\",\n  \"upload_file\": \"Upload file\",\n  \"download_attachment\": \"Download attachment\",\n  \"remove_file\": \"Remove file\",\n  \"open_calendar\": \"Open calendar\",\n  \"clear_dates\": \"Clear dates\",\n  \"clear_date\": \"Clear date\",\n  \"select_dates\": \"Select dates\",\n  \"select_date\": \"Select date\",\n  \"pick_date_range\": \"Pick a date range\",\n  \"from\": \"From\",\n  \"to\": \"To\",\n  \"pick_month\": \"Pick a month\",\n  \"pick_date\": \"Pick a date\",\n  \"month\": \"Month\",\n  \"day\": \"Day\",\n  \"year\": \"Year\",\n  \"done\": \"Done\",\n  \"wrong_period_of_dates\": \"Selected period is invalid\",\n  \"date_range_max_days_error_one\": \"Range cannot exceed {{count}} day\",\n  \"date_range_max_days_error_other\": \"Range cannot exceed {{count}} days\",\n  \"date_range_min_days_error_one\": \"Range must be at least {{count}} day\",\n  \"date_range_min_days_error_other\": \"Range must be at least {{count}} days\",\n  \"past_dates\": \"Date cannot be before {{minDate}}\",\n  \"future_dates\": \"Date cannot be after {{maxDate}}\",\n  \"year_out_of_range\": \"Year must be between {{min}} and {{max}}\",\n  \"signature_placeholder_text\": \"Sign inside this box.<br/> Use your finger.<br/> Tap to start.\",\n  \"open_devices_camera\": \"Open device's camera\",\n  \"place_document_inside_frame\": \"Place your document inside the frame\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Close other applications that may be using your camera\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"If you use an external camera, disconnect and reconnect it\",\n  \"close_the_browser_re_open_it\": \"Close the browser and reopen it\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Experiencing camera issues?\",\n    \"chekin_cant_use_your_camera\": \"Chekin can't use your camera\",\n    \"please_try_a_different_browser\": \"Your camera doesn't work in this browser. Please, try to open the link in a different browser.\",\n    \"permissions_denied\": \"Permission denied\",\n    \"camera_permissions_denied\": \"The camera doesn't open? Make sure to allow the browser permission to use the camera.\",\n    \"no_camera_device_found\": \"No camera device found. Please connect a camera.\",\n    \"constraints_camera_error\": \"Constraints cannot be satisfied by available devices.\",\n    \"safari_camera_error\": \"Safari could not satisfy the camera requirements\",\n    \"try_chrome_or_firefox\": \"Please try Chrome or Firefox\"\n  },\n  \"clear\": \"Clear\",\n  \"show_less\": \"Show less\",\n  \"show_more\": \"Show more\",\n  \"tap_here_to_sign\": \"Tap here to sign\",\n  \"click_here_to_sign\": \"Click here to sign\",\n  \"prefix\": \"Prefix\",\n  \"prefix_required\": \"Prefix is required\",\n  \"reset\": \"Reset\",\n  \"show_password\": \"Show password\",\n  \"hide_password\": \"Hide password\",\n  \"increment\": \"Increment\",\n  \"decrement\": \"Decrement\",\n  \"create_option\": \"Create \\\"{{input}}\\\"\"\n}\n","{\n  \"verified\": \"Verificado\",\n  \"iv_status\": {\n    \"verified\": \"Verificado\",\n    \"pending\": \"Pendiente\",\n    \"attention\": \"Atención\"\n  },\n  \"zoom_in\": \"Ampliar\",\n  \"zoom_out\": \"Alejar\",\n  \"rotate\": \"Gire\",\n  \"close\": \"Cerrar\",\n  \"esc_to_close\": \"Pulse ESC para cerrar\",\n  \"play\": \"Jugar\",\n  \"pause\": \"Pausa\",\n  \"mute\": \"Silenciar\",\n  \"unmute\": \"Desactivar\",\n  \"enter_full_screen\": \"Entrar en pantalla completa\",\n  \"exit_full_screen\": \"Salir a pantalla completa\",\n  \"video_not_supported\": \"Su navegador no soporta la etiqueta de vídeo.\",\n  \"skip_forward\": \"Saltar adelante\",\n  \"skip_backward\": \"Saltar hacia atrás\",\n  \"loading\": \"Cargando\",\n  \"loading_video\": \"Cargando vídeo...\",\n  \"loading_data_description\": \"Espere mientras cargamos sus datos. No tardaremos mucho.\",\n  \"no_results\": \"Sin resultados\",\n  \"nothing_found\": \"No se encontró nada\",\n  \"save_changes\": \"Guardar cambios\",\n  \"saved_exclamation\": \"¡Salvado!\",\n  \"saving\": \"Guardar\",\n  \"validating\": \"Validando\",\n  \"error\": \"Error\",\n  \"optional\": \"Opcional\",\n  \"search_property\": \"Buscar inmuebles\",\n  \"reset_search\": \"Restablecer búsqueda\",\n  \"no_items_to_show\": \"No hay artículos que mostrar\",\n  \"showing_range_of_total_items\": \"Mostrando {{range}} de {{total}} artículos\",\n  \"rows_per_page\": \"Filas por página\",\n  \"page_of_pages\": \"Página {{page}} de {{pages}}\",\n  \"go_to_first_page\": \"Ir a la primera página\",\n  \"go_to_previous_page\": \"Ir a la página anterior\",\n  \"go_to_next_page\": \"Ir a la página siguiente\",\n  \"go_to_last_page\": \"Ir a la última página\",\n  \"sort_in_asc\": \"Ordenación ascendente\",\n  \"sort_in_desc\": \"Orden descendente\",\n  \"clear_sorting\": \"Clasificación clara\",\n  \"sort_a_z\": \"Ordenar A → Z\",\n  \"sort_z_a\": \"Ordenar Z → A\",\n  \"reach_us_at_email\": \"Contáctanos por email support@chekin.com\",\n  \"please_wait\": \"Espere, por favor\",\n  \"feature_coming_soon\": \"Próximamente\",\n  \"feature_coming_soon_description\": \"Esta funcionalidad está actualmente en desarrollo y estará disponible pronto. Manténgase atento para actualizaciones!\",\n  \"beta\": \"Beta\",\n  \"download_all\": \"Descargar todo\",\n  \"entry_forms\": \"Formularios de inscripción\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Vídeo de prueba de vida\",\n  \"reviews\": \"Reseñas\",\n  \"learn_more\": \"Más información\",\n  \"this_cannot_be_reverted\": \"This cannot be reverted\",\n  \"delete\": \"Delete\",\n  \"cancel\": \"Cancel\",\n  \"you_have_made_changes\": \"You have made changes\",\n  \"would_you_like_to_save_them\": \"Would you like to save them?\",\n  \"save\": \"Save\",\n  \"dont_save\": \"Don't save\",\n  \"copied_exclamation\": \"¡Copiado!\",\n  \"search_placeholder\": \"Busca...\",\n  \"type_to_search\": \"Escriba para buscar...\",\n  \"loading_more\": \"Cargando...\",\n  \"no_options\": \"Sin opciones\",\n  \"select_option\": \"Seleccionar opción\",\n  \"clear_all\": \"Borrar todo\",\n  \"remove_item\": \"Eliminar {{label}}\",\n  \"upload_file\": \"Cargar archivo\",\n  \"download_attachment\": \"Descargar archivo adjunto\",\n  \"remove_file\": \"Eliminar archivo\",\n  \"open_calendar\": \"Calendario abierto\",\n  \"clear_dates\": \"Borrar fechas\",\n  \"select_dates\": \"Seleccione las fechas\",\n  \"pick_date_range\": \"Elija un intervalo de fechas\",\n  \"from\": \"En\",\n  \"to\": \"A\",\n  \"pick_month\": \"Elige un mes\",\n  \"pick_date\": \"Elige una fecha\",\n  \"month\": \"Mes\",\n  \"day\": \"Día\",\n  \"year\": \"Año\",\n  \"done\": \"Hecho\",\n  \"wrong_period_of_dates\": \"El periodo seleccionado no es válido\",\n  \"date_range_max_days_error_one\": \"El intervalo no puede ser superior a {{count}} día\",\n  \"date_range_max_days_error_other\": \"El intervalo no puede superar los {{count}} días\",\n  \"date_range_min_days_error_one\": \"El intervalo debe ser de al menos {{count}} día\",\n  \"date_range_min_days_error_other\": \"El intervalo debe ser de al menos {{count}} días\",\n  \"past_dates\": \"La fecha no puede ser anterior a {{minDate}}.\",\n  \"future_dates\": \"La fecha no puede ser posterior a {{maxDate}}.\",\n  \"signature_placeholder_text\": \"Firma dentro de esta caja.<br/>Usa tu dedo.<br/>Toca para empezar.\",\n  \"open_devices_camera\": \"Abrir la cámara del dispositivo\",\n  \"place_document_inside_frame\": \"Coloque el documento dentro del marco\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Cierra otras aplicaciones que puedan estar utilizando tu cámara\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Si utilizas una cámara externa, desconéctala y vuelve a conectarla\",\n  \"close_the_browser_re_open_it\": \"Cierre el navegador y vuelva a abrirlo\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"¿Tienes problemas con la cámara?\",\n    \"chekin_cant_use_your_camera\": \"Chekin no puede usar tu cámara\",\n    \"please_try_a_different_browser\": \"Tu cámara no funciona en este navegador. Por favor, intente abrir el enlace en otro navegador.\",\n    \"permissions_denied\": \"Permiso denegado\",\n    \"camera_permissions_denied\": \"¿La cámara no se abre? Asegúrate de dar permiso al navegador para usar la cámara.\",\n    \"no_camera_device_found\": \"No se ha encontrado ningún dispositivo de cámara. Por favor, conecte una cámara.\",\n    \"constraints_camera_error\": \"Los dispositivos disponibles no pueden satisfacer las restricciones.\",\n    \"safari_camera_error\": \"Safari no pudo satisfacer los requisitos de la cámara\",\n    \"try_chrome_or_firefox\": \"Pruebe Chrome o Firefox\"\n  },\n  \"clear\": \"Claro\",\n  \"show_less\": \"Mostrar menos\",\n  \"show_more\": \"Ver más\",\n  \"tap_here_to_sign\": \"Pulse aquí para firmar\",\n  \"click_here_to_sign\": \"Pulse aquí para firmar\",\n  \"prefix\": \"Prefijo\",\n  \"prefix_required\": \"Prefijo obligatorio\",\n  \"reset\": \"Restablecer\",\n  \"show_password\": \"Mostrar contraseña\",\n  \"hide_password\": \"Ocultar contraseña\",\n  \"increment\": \"Incremento\",\n  \"decrement\": \"Disminución\",\n  \"create_option\": \"Crear \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"El año debe estar comprendido entre {{min}} y {{max}}.\",\n  \"clear_date\": \"Fecha clara\",\n  \"select_date\": \"Seleccione la fecha\",\n  \"draw_signature_here\": \"Firma aquí\",\n  \"signature_hint\": \"Usa el ratón o el dedo\",\n  \"clear_signature\": \"Firma clara\",\n  \"draw_signature_here_mobile\": \"Escribe tu firma\",\n  \"signature_hint_mobile\": \"Usa el dedo\",\n  \"camera_access_needed\": \"Se necesita acceso a la cámara\",\n  \"camera_access_needed_text\": \"Permite el acceso a la cámara para hacer la foto. Si está bloqueado, habilita la cámara en la configuración de tu navegador y vuelve a intentarlo.\",\n  \"dialog\": \"Diálogo\"\n}\n","{\n  \"verified\": \"Kinnitatud\",\n  \"iv_status\": {\n    \"verified\": \"Kinnitatud\",\n    \"pending\": \"Pending\",\n    \"attention\": \"Tähelepanu\"\n  },\n  \"zoom_in\": \"Suurendage\",\n  \"zoom_out\": \"Suurendage välja\",\n  \"rotate\": \"Pöörake\",\n  \"close\": \"Sulge\",\n  \"esc_to_close\": \"Vajutage sulgemiseks ESC\",\n  \"play\": \"Mängi\",\n  \"pause\": \"Paus\",\n  \"mute\": \"Mute\",\n  \"unmute\": \"Unmute\",\n  \"enter_full_screen\": \"Sisesta täisekraan\",\n  \"exit_full_screen\": \"Väljumine täisekraanil\",\n  \"video_not_supported\": \"Teie brauser ei toeta video sildi.\",\n  \"skip_forward\": \"Hüppa edasi\",\n  \"skip_backward\": \"Hüppa tagasi\",\n  \"loading\": \"Laadimine\",\n  \"loading_video\": \"Video laadimine...\",\n  \"loading_data_description\": \"Palun oodake, kuni me teie andmeid laadime. See ei võta kaua aega.\",\n  \"no_results\": \"Tulemusi ei ole\",\n  \"nothing_found\": \"Midagi ei leitud\",\n  \"save_changes\": \"Muudatuste salvestamine\",\n  \"saved_exclamation\": \"Päästetud!\",\n  \"saving\": \"Säästmine\",\n  \"validating\": \"Valideerimine\",\n  \"error\": \"Viga\",\n  \"optional\": \"Valikuline\",\n  \"search_property\": \"Otsi kinnisvara\",\n  \"reset_search\": \"Otsingu lähtestamine\",\n  \"no_items_to_show\": \"Näidata ei ole esemeid\",\n  \"showing_range_of_total_items\": \"Näidatakse {{range}} of {{total}} elementide {{range}} kohta\",\n  \"rows_per_page\": \"Rid lehekülje kohta\",\n  \"page_of_pages\": \"Lehekülg {{page}} of {{pages}}\",\n  \"go_to_first_page\": \"Mine esimesele leheküljele\",\n  \"go_to_previous_page\": \"Mine eelmisele leheküljele\",\n  \"go_to_next_page\": \"Mine järgmisele leheküljele\",\n  \"go_to_last_page\": \"Mine viimasele leheküljele\",\n  \"sort_in_asc\": \"Sorteerimine kasvavas järjekorras\",\n  \"sort_in_desc\": \"Sorteerimine kahanevas järjekorras\",\n  \"sort_a_z\": \"Sorte A → Z\",\n  \"sort_z_a\": \"Sorte Z → A\",\n  \"clear_sorting\": \"Selge sorteerimine\",\n  \"reach_us_at_email\": \"Saavutage tugi aadressil support@chekin.com\",\n  \"please_wait\": \"Palun oodake\",\n  \"feature_coming_soon\": \"Tulevad varsti\",\n  \"feature_coming_soon_description\": \"See funktsioon on praegu arendamisel ja on peagi saadaval. Jääge uuenduste osas kursis!\",\n  \"download_all\": \"Lae alla kõik\",\n  \"entry_forms\": \"Registreerimisvormid\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Elavuse video\",\n  \"beta\": \"Beeta\",\n  \"reviews\": \"Arvustused\",\n  \"learn_more\": \"Lisateave\",\n  \"this_cannot_be_reverted\": \"Seda ei saa tagasi pöörata\",\n  \"delete\": \"Kustuta\",\n  \"cancel\": \"Tühista\",\n  \"you_have_made_changes\": \"Te olete teinud muudatusi\",\n  \"would_you_like_to_save_them\": \"Kas soovite neid päästa?\",\n  \"save\": \"Salvesta\",\n  \"dont_save\": \"Ärge salvestage\",\n  \"copied_exclamation\": \"Kopeeritud!\",\n  \"search_placeholder\": \"Otsi...\",\n  \"type_to_search\": \"Kirjutage otsinguks...\",\n  \"loading_more\": \"Laadimine...\",\n  \"no_options\": \"Valikud puuduvad\",\n  \"select_option\": \"Valige valik\",\n  \"clear_all\": \"Tühjenda kõik\",\n  \"remove_item\": \"Eemalda {{label}}\",\n  \"upload_file\": \"Faili üleslaadimine\",\n  \"download_attachment\": \"Manuse allalaadimine\",\n  \"remove_file\": \"Eemalda fail\",\n  \"open_calendar\": \"Avatud kalender\",\n  \"clear_dates\": \"Selged kuupäevad\",\n  \"select_dates\": \"Valige kuupäevad\",\n  \"pick_date_range\": \"Valige kuupäevavahemik\",\n  \"from\": \"Alates\",\n  \"to\": \"aadressile\",\n  \"pick_month\": \"Valige kuu\",\n  \"pick_date\": \"Valige kuupäev\",\n  \"month\": \"Kuu\",\n  \"day\": \"Päev\",\n  \"year\": \"Aasta\",\n  \"done\": \"Valmis\",\n  \"wrong_period_of_dates\": \"Valitud periood on kehtetu\",\n  \"date_range_max_days_error_one\": \"Vahemik ei tohi ületada {{count}} päeva.\",\n  \"date_range_max_days_error_other\": \"Vahemik ei tohi ületada {{count}} päeva.\",\n  \"date_range_min_days_error_one\": \"Vahemik peab olema vähemalt {{count}} päev.\",\n  \"date_range_min_days_error_other\": \"Vahemik peab olema vähemalt {{count}} päeva\",\n  \"past_dates\": \"Kuupäev ei saa olla enne {{minDate}}__.\",\n  \"future_dates\": \"Kuupäev ei saa olla pärast {{maxDate}}__.\",\n  \"signature_placeholder_text\": \"Kirjutage selle kasti sees.<br/> Kasutage oma sõrme.<br/> Koputage alustamiseks.\",\n  \"open_devices_camera\": \"Avage seadme kaamera\",\n  \"place_document_inside_frame\": \"Asetage oma dokument raami sisse\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Sulgege muud rakendused, mis võivad kasutada teie kaamerat\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Kui kasutate välist kaamerat, ühendage see lahti ja ühendage uuesti.\",\n  \"close_the_browser_re_open_it\": \"Sulgege brauser ja avage see uuesti\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Kas teil on probleeme kaameraga?\",\n    \"chekin_cant_use_your_camera\": \"Chekin ei saa oma kaamerat kasutada\",\n    \"please_try_a_different_browser\": \"Teie kaamera ei tööta selles brauseris. Palun proovige avada link teises brauseris.\",\n    \"permissions_denied\": \"Luba keelatud\",\n    \"camera_permissions_denied\": \"Kaamera ei avane? Veenduge, et lubate brauserile kaamera kasutamise loa.\",\n    \"no_camera_device_found\": \"Kaameraseadet ei leitud. Palun ühendage kaamera.\",\n    \"constraints_camera_error\": \"Olemasolevate seadmetega ei ole võimalik piiranguid täita.\",\n    \"safari_camera_error\": \"Safari ei suutnud rahuldada kaamera nõudeid\",\n    \"try_chrome_or_firefox\": \"Palun proovige Chrome'i või Firefoxi\"\n  },\n  \"clear\": \"Selge\",\n  \"show_less\": \"Näita vähem\",\n  \"show_more\": \"Näita rohkem\",\n  \"tap_here_to_sign\": \"Allakirjutamiseks koputage siia\",\n  \"click_here_to_sign\": \"Allakirjutamiseks klõpsake siin\",\n  \"prefix\": \"Eesliide\",\n  \"prefix_required\": \"Vajalik on eesliide\",\n  \"reset\": \"Reset\",\n  \"show_password\": \"Näita parooli\",\n  \"hide_password\": \"Peida parool\",\n  \"increment\": \"Inkrement\",\n  \"decrement\": \"Vähendamine\",\n  \"create_option\": \"Loo \\\"{{input}}\\\".\",\n  \"year_out_of_range\": \"Aasta peab olema {{min}} ja {{max}} vahel.\",\n  \"clear_date\": \"Selge kuupäev\",\n  \"select_date\": \"Valige kuupäev\",\n  \"draw_signature_here\": \"Kirjutage siia oma allkiri\",\n  \"signature_hint\": \"Kasuta hiirt või sõrme\",\n  \"clear_signature\": \"Selge allkiri\",\n  \"draw_signature_here_mobile\": \"Joonista oma allkiri\",\n  \"signature_hint_mobile\": \"Kasuta sõrme\",\n  \"camera_access_needed\": \"Vajalik kaamera juurdepääs\",\n  \"camera_access_needed_text\": \"Luba kaamerale juurdepääs, et saaksid pildi teha. Kui juurdepääs on blokeeritud, luba kaamera kasutamine oma brauseri seadetest ja proovi uuesti.\",\n  \"dialog\": \"Dialoog\"\n}\n","{\n  \"verified\": \"Vérifié\",\n  \"iv_status\": {\n    \"verified\": \"Vérifié\",\n    \"pending\": \"En attente\",\n    \"attention\": \"Attention\"\n  },\n  \"zoom_in\": \"Zoom avant\",\n  \"zoom_out\": \"Zoom arrière\",\n  \"rotate\": \"Rotation\",\n  \"close\": \"Fermer\",\n  \"esc_to_close\": \"Appuyez sur ESC pour fermer\",\n  \"play\": \"Jouer\",\n  \"pause\": \"Pause\",\n  \"mute\": \"Muet\",\n  \"unmute\": \"Unmute\",\n  \"enter_full_screen\": \"Entrer dans le plein écran\",\n  \"exit_full_screen\": \"Quitter le plein écran\",\n  \"video_not_supported\": \"Votre navigateur ne prend pas en charge la balise vidéo.\",\n  \"skip_forward\": \"Sauter en avant\",\n  \"skip_backward\": \"Sauter en arrière\",\n  \"loading\": \"Chargement\",\n  \"loading_video\": \"Chargement de la vidéo...\",\n  \"loading_data_description\": \"Veuillez patienter pendant que nous chargeons vos données. Cela ne sera pas long.\",\n  \"no_results\": \"Pas de résultats\",\n  \"nothing_found\": \"Aucun résultat trouvé\",\n  \"save_changes\": \"Enregistrer les modifications\",\n  \"saved_exclamation\": \"Sauvé !\",\n  \"saving\": \"Économiser\",\n  \"validating\": \"Validation\",\n  \"error\": \"Erreur\",\n  \"optional\": \"En option\",\n  \"search_property\": \"Recherche de biens\",\n  \"reset_search\": \"Réinitialiser la recherche\",\n  \"no_items_to_show\": \"Pas d'articles à montrer\",\n  \"showing_range_of_total_items\": \"Affichage de {{range}} of {{total}} items\",\n  \"rows_per_page\": \"Lignes par page\",\n  \"page_of_pages\": \"Page {{page}} de {{pages}}\",\n  \"go_to_first_page\": \"Aller à la première page\",\n  \"go_to_previous_page\": \"Aller à la page précédente\",\n  \"go_to_next_page\": \"Aller à la page suivante\",\n  \"go_to_last_page\": \"Aller à la dernière page\",\n  \"sort_in_asc\": \"Trier par ordre croissant\",\n  \"sort_in_desc\": \"Trier par ordre décroissant\",\n  \"clear_sorting\": \"Tri clair\",\n  \"sort_a_z\": \"Trier A → Z\",\n  \"sort_z_a\": \"Trier Z → A\",\n  \"reach_us_at_email\": \"Contactez notre service d'assistance à l'adresse support@chekin.com\",\n  \"please_wait\": \"Veuillez patienter\",\n  \"feature_coming_soon\": \"Prochainement\",\n  \"feature_coming_soon_description\": \"Cette fonctionnalité est en cours de développement et sera bientôt disponible. Restez informés des mises à jour!\",\n  \"beta\": \"Bêta\",\n  \"download_all\": \"Télécharger tout\",\n  \"entry_forms\": \"Formulaires d'inscription\",\n  \"tutorial\": \"Tutoriel\",\n  \"liveness_video\": \"Vidéo de preuve de vie\",\n  \"reviews\": \"Commentaires\",\n  \"learn_more\": \"En savoir plus\",\n  \"this_cannot_be_reverted\": \"This cannot be reverted\",\n  \"delete\": \"Delete\",\n  \"cancel\": \"Cancel\",\n  \"you_have_made_changes\": \"You have made changes\",\n  \"would_you_like_to_save_them\": \"Would you like to save them?\",\n  \"save\": \"Save\",\n  \"dont_save\": \"Don't save\",\n  \"copied_exclamation\": \"Copié !\",\n  \"search_placeholder\": \"Recherche...\",\n  \"type_to_search\": \"Tapez pour rechercher...\",\n  \"loading_more\": \"Chargement...\",\n  \"no_options\": \"Pas d'options\",\n  \"select_option\": \"Sélectionner une option\",\n  \"clear_all\": \"Tout effacer\",\n  \"remove_item\": \"Supprimer {{label}}\",\n  \"upload_file\": \"Télécharger le fichier\",\n  \"download_attachment\": \"Télécharger la pièce jointe\",\n  \"remove_file\": \"Supprimer le fichier\",\n  \"open_calendar\": \"Calendrier ouvert\",\n  \"clear_dates\": \"Effacer les dates\",\n  \"select_dates\": \"Sélectionner les dates\",\n  \"pick_date_range\": \"Choisissez une plage de dates\",\n  \"from\": \"De\",\n  \"to\": \"Pour\",\n  \"pick_month\": \"Choisissez un mois\",\n  \"pick_date\": \"Choisissez une date\",\n  \"month\": \"Mois\",\n  \"day\": \"Jour\",\n  \"year\": \"Année\",\n  \"done\": \"Terminé\",\n  \"wrong_period_of_dates\": \"La période sélectionnée n'est pas valide\",\n  \"date_range_max_days_error_one\": \"L'intervalle ne peut excéder {{count}} jour\",\n  \"date_range_max_days_error_other\": \"L'intervalle ne peut excéder {{count}} jours\",\n  \"date_range_min_days_error_one\": \"L'intervalle doit être d'au moins {{count}} jour\",\n  \"date_range_min_days_error_other\": \"L'intervalle doit être d'au moins {{count}} jours\",\n  \"past_dates\": \"La date ne peut être antérieure à {{minDate}}_.\",\n  \"future_dates\": \"La date ne peut être postérieure à {{maxDate}}_.\",\n  \"signature_placeholder_text\": \"Signez à l'intérieur de cette boîte.<br/> Utilisez votre doigt.<br/> Tapez pour commencer.\",\n  \"open_devices_camera\": \"Ouvrir l'appareil photo de l'appareil\",\n  \"place_document_inside_frame\": \"Placez votre document à l'intérieur du cadre\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Fermez les autres applications qui peuvent utiliser votre appareil photo\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Si vous utilisez un appareil photo externe, déconnectez-le et reconnectez-le\",\n  \"close_the_browser_re_open_it\": \"Fermer le navigateur et le rouvrir\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Vous avez des problèmes avec l'appareil photo ?\",\n    \"chekin_cant_use_your_camera\": \"Chekin ne peut pas utiliser votre appareil photo\",\n    \"please_try_a_different_browser\": \"Votre appareil photo ne fonctionne pas dans ce navigateur. Veuillez essayer d'ouvrir le lien dans un autre navigateur.\",\n    \"permissions_denied\": \"Permission refusée\",\n    \"camera_permissions_denied\": \"L'appareil photo ne s'ouvre pas ? Veillez à autoriser le navigateur à utiliser l'appareil photo.\",\n    \"no_camera_device_found\": \"Aucun appareil photo n'a été trouvé. Veuillez connecter un appareil photo.\",\n    \"constraints_camera_error\": \"Les contraintes ne peuvent être satisfaites par les dispositifs disponibles.\",\n    \"safari_camera_error\": \"Safari n'a pas pu satisfaire aux exigences de la caméra\",\n    \"try_chrome_or_firefox\": \"Veuillez essayer Chrome ou Firefox\"\n  },\n  \"clear\": \"Clair\",\n  \"show_less\": \"Montrer moins\",\n  \"show_more\": \"Afficher plus\",\n  \"tap_here_to_sign\": \"Cliquez ici pour signer\",\n  \"click_here_to_sign\": \"Cliquez ici pour signer\",\n  \"prefix\": \"Préfixe\",\n  \"prefix_required\": \"Le préfixe est obligatoire\",\n  \"reset\": \"Remise à zéro\",\n  \"show_password\": \"Afficher le mot de passe\",\n  \"hide_password\": \"Cacher le mot de passe\",\n  \"increment\": \"Incrément\",\n  \"decrement\": \"Décroissance\",\n  \"create_option\": \"Créer \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"L'année doit être comprise entre {{min}} et {{max}}.\",\n  \"clear_date\": \"Date limite\",\n  \"select_date\": \"Sélectionner la date\",\n  \"draw_signature_here\": \"Apposez votre signature ici\",\n  \"signature_hint\": \"Utilisez votre souris ou votre doigt\",\n  \"clear_signature\": \"Signature lisible\",\n  \"draw_signature_here_mobile\": \"Signez de votre main\",\n  \"signature_hint_mobile\": \"Utilisez votre doigt\",\n  \"camera_access_needed\": \"Accès à l'appareil photo requis\",\n  \"camera_access_needed_text\": \"Autorisez l'accès à l'appareil photo pour prendre la photo. Si l'accès est bloqué, activez l'appareil photo dans les paramètres de votre navigateur, puis réessayez.\",\n  \"dialog\": \"Boîte de dialogue\"\n}\n","{\n  \"verified\": \"Ellenőrzött\",\n  \"iv_status\": {\n    \"verified\": \"Ellenőrzött\",\n    \"pending\": \"Pending\",\n    \"attention\": \"Figyelem\"\n  },\n  \"zoom_in\": \"Nagyítás\",\n  \"zoom_out\": \"Kicsinyítés\",\n  \"rotate\": \"Forgassa el a\",\n  \"close\": \"Zárja be a\",\n  \"esc_to_close\": \"Nyomja meg az ESC gombot a bezáráshoz\",\n  \"play\": \"Játsszon\",\n  \"pause\": \"Szünet\",\n  \"mute\": \"Mute\",\n  \"unmute\": \"Unmute\",\n  \"enter_full_screen\": \"Teljes képernyő belépése\",\n  \"exit_full_screen\": \"Kilépés teljes képernyőn\",\n  \"video_not_supported\": \"Az Ön böngészője nem támogatja a videó tag-et.\",\n  \"skip_forward\": \"Ugrás előre\",\n  \"skip_backward\": \"Ugrás visszafelé\",\n  \"loading\": \"Betöltés\",\n  \"loading_video\": \"Videó betöltése...\",\n  \"loading_data_description\": \"Kérjük, várjon, amíg betöltjük az adatokat. Ez nem tart sokáig.\",\n  \"no_results\": \"Nincs eredmény\",\n  \"nothing_found\": \"Semmit sem találtunk\",\n  \"save_changes\": \"Változások mentése\",\n  \"saved_exclamation\": \"Megmentve!\",\n  \"saving\": \"Mentés\",\n  \"validating\": \"A  oldal hitelesítése\",\n  \"error\": \"Hiba\",\n  \"optional\": \"Opcionális\",\n  \"search_property\": \"Keresés ingatlan\",\n  \"reset_search\": \"Keresés visszaállítása\",\n  \"no_items_to_show\": \"Nincsenek megjelenítendő elemek\",\n  \"showing_range_of_total_items\": \"A {{range}} a {{total}} elemek {{range}} elemeit mutatja.\",\n  \"rows_per_page\": \"Sorok oldalanként\",\n  \"page_of_pages\": \"Oldal {{page}} a {{pages}} oldalról\",\n  \"go_to_first_page\": \"Menj az első oldalra\",\n  \"go_to_previous_page\": \"Vissza az előző oldalra\",\n  \"go_to_next_page\": \"Tovább a következő oldalra\",\n  \"go_to_last_page\": \"Menj az utolsó oldalra\",\n  \"sort_in_asc\": \"Rendezés növekvő sorrendben\",\n  \"sort_in_desc\": \"Rendezés csökkenő sorrendben\",\n  \"sort_a_z\": \"A → Z rendezése\",\n  \"sort_z_a\": \"Válogassuk meg Z → A\",\n  \"clear_sorting\": \"Tiszta válogatás\",\n  \"reach_us_at_email\": \"Érjen el támogatást a support@chekin.com címen.\",\n  \"please_wait\": \"Kérjük, várjon\",\n  \"feature_coming_soon\": \"Hamarosan\",\n  \"feature_coming_soon_description\": \"Ez a funkció jelenleg fejlesztés alatt áll, és hamarosan elérhető lesz. Maradjon velünk a frissítésekért!\",\n  \"download_all\": \"Minden letöltése\",\n  \"entry_forms\": \"Nevezési űrlapok\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Liveness videó\",\n  \"beta\": \"Béta\",\n  \"reviews\": \"Vélemények\",\n  \"learn_more\": \"Tudjon meg többet\",\n  \"this_cannot_be_reverted\": \"Ezt nem lehet visszaállítani\",\n  \"delete\": \"Törölje a  címet.\",\n  \"cancel\": \"Törölje\",\n  \"you_have_made_changes\": \"Változtatásokat hajtott végre\",\n  \"would_you_like_to_save_them\": \"Szeretné megmenteni őket?\",\n  \"save\": \"Mentés\",\n  \"dont_save\": \"Ne mentsd el\",\n  \"copied_exclamation\": \"Másolom!\",\n  \"search_placeholder\": \"Keresés...\",\n  \"type_to_search\": \"Kereséshez írja be...\",\n  \"loading_more\": \"Betöltés...\",\n  \"no_options\": \"Nincsenek lehetőségek\",\n  \"select_option\": \"Válassza ki az opciót\",\n  \"clear_all\": \"Mindent törölni\",\n  \"remove_item\": \"A {{label}} eltávolítása\",\n  \"upload_file\": \"Fájl feltöltése\",\n  \"download_attachment\": \"Melléklet letöltése\",\n  \"remove_file\": \"Fájl eltávolítása\",\n  \"open_calendar\": \"Nyílt naptár\",\n  \"clear_dates\": \"Tiszta dátumok\",\n  \"select_dates\": \"Válassza ki a dátumokat\",\n  \"pick_date_range\": \"Válasszon egy dátumtartományt\",\n  \"from\": \"A  címről\",\n  \"to\": \"A  címre.\",\n  \"pick_month\": \"Válasszon egy hónapot\",\n  \"pick_date\": \"Válasszon egy időpontot\",\n  \"month\": \"Hónap\",\n  \"day\": \"Nap\",\n  \"year\": \"Év\",\n  \"done\": \"Kész\",\n  \"wrong_period_of_dates\": \"A kiválasztott időszak érvénytelen\",\n  \"date_range_max_days_error_one\": \"A tartomány nem haladhatja meg a {{count}} napot.\",\n  \"date_range_max_days_error_other\": \"A tartomány nem haladhatja meg a {{count}} napot.\",\n  \"date_range_min_days_error_one\": \"A tartománynak legalább {{count}} napnak kell lennie.\",\n  \"date_range_min_days_error_other\": \"A tartománynak legalább {{count}} napnak kell lennie.\",\n  \"past_dates\": \"A dátum nem lehet a {{minDate}}__ előtt.\",\n  \"future_dates\": \"A dátum nem lehet {{maxDate}}__ után.\",\n  \"signature_placeholder_text\": \"Írja alá a dobozon belül.<br/> Használja az ujját.<br/> Koppintson az indításhoz.\",\n  \"open_devices_camera\": \"Nyissa meg a készülék kameráját\",\n  \"place_document_inside_frame\": \"Helyezze a dokumentumot a keretbe\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Zárjon be más alkalmazásokat, amelyek esetleg a kamerát használják\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Ha külső kamerát használ, válassza ki és csatlakoztassa újra.\",\n  \"close_the_browser_re_open_it\": \"Zárja be a böngészőt, majd nyissa meg újra\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Kameraproblémák?\",\n    \"chekin_cant_use_your_camera\": \"Chekin nem tudja használni a kamerát\",\n    \"please_try_a_different_browser\": \"A kamerája nem működik ebben a böngészőben. Kérjük, próbálja meg megnyitni a linket egy másik böngészőben.\",\n    \"permissions_denied\": \"Engedély megtagadva\",\n    \"camera_permissions_denied\": \"A kamera nem nyílik ki? Győződjön meg róla, hogy engedélyezi a böngésző számára a kamera használatát.\",\n    \"no_camera_device_found\": \"Nem találtunk kameraeszközt. Kérjük, csatlakoztasson egy kamerát.\",\n    \"constraints_camera_error\": \"A rendelkezésre álló eszközök nem tudják teljesíteni a korlátozásokat.\",\n    \"safari_camera_error\": \"A Safari nem tudott megfelelni a kamerakövetelményeknek\",\n    \"try_chrome_or_firefox\": \"Kérjük, próbálja ki a Chrome vagy Firefox programot\"\n  },\n  \"clear\": \"Tiszta\",\n  \"show_less\": \"Kevesebb mutatása\",\n  \"show_more\": \"Többet mutasson\",\n  \"tap_here_to_sign\": \"Koppintson ide az aláíráshoz\",\n  \"click_here_to_sign\": \"Kattintson ide az aláíráshoz\",\n  \"prefix\": \"Előtag\",\n  \"prefix_required\": \"Előtag szükséges\",\n  \"reset\": \"Reset\",\n  \"show_password\": \"Jelszó megjelenítése\",\n  \"hide_password\": \"Jelszó elrejtése\",\n  \"increment\": \"Inkrementálás\",\n  \"decrement\": \"Csökkentés\",\n  \"create_option\": \"Hozzon létre \\\"{{input}}__\\\"\",\n  \"year_out_of_range\": \"Az évnek {{min}} és {{max}} között kell lennie.\",\n  \"clear_date\": \"Tiszta dátum\",\n  \"select_date\": \"Válassza ki a dátumot\",\n  \"draw_signature_here\": \"Írja alá itt\",\n  \"signature_hint\": \"Használd az egeret vagy az ujjadat\",\n  \"clear_signature\": \"Egyértelmű aláírás\",\n  \"draw_signature_here_mobile\": \"Írja alá!\",\n  \"signature_hint_mobile\": \"Használd az ujjadat\",\n  \"camera_access_needed\": \"A kamera hozzáférésére van szükség\",\n  \"camera_access_needed_text\": \"Engedélyezze a kamera használatát a fénykép elkészítéséhez. Ha a kamera használata letiltva van, engedélyezze azt a böngésző beállításaiban, majd próbálja meg újra.\",\n  \"dialog\": \"Párbeszéd\"\n}\n","{\n  \"verified\": \"Verificato\",\n  \"iv_status\": {\n    \"verified\": \"Verificato\",\n    \"pending\": \"In attesa\",\n    \"attention\": \"Attenzione\"\n  },\n  \"zoom_in\": \"Ingrandimento\",\n  \"zoom_out\": \"Zoom out\",\n  \"rotate\": \"Ruotare\",\n  \"close\": \"Chiudi\",\n  \"esc_to_close\": \"Premere ESC per chiudere\",\n  \"play\": \"Gioco\",\n  \"pause\": \"Pausa\",\n  \"mute\": \"Muto\",\n  \"unmute\": \"Disattivare l'audio\",\n  \"enter_full_screen\": \"Entrare a schermo intero\",\n  \"exit_full_screen\": \"Uscita dallo schermo intero\",\n  \"video_not_supported\": \"Il vostro browser non supporta il tag video.\",\n  \"skip_forward\": \"Salto in avanti\",\n  \"skip_backward\": \"Salto all'indietro\",\n  \"loading\": \"Caricamento\",\n  \"loading_video\": \"Caricamento video...\",\n  \"loading_data_description\": \"Si prega di attendere mentre carichiamo i dati. Non ci vorrà molto.\",\n  \"no_results\": \"Nessun risultato\",\n  \"nothing_found\": \"Nessun risultato trovato\",\n  \"save_changes\": \"Salva le modifiche\",\n  \"saved_exclamation\": \"Salvati!\",\n  \"saving\": \"Risparmio\",\n  \"validating\": \"Convalida\",\n  \"error\": \"Errore\",\n  \"optional\": \"Opzionale\",\n  \"search_property\": \"Ricerca proprietà\",\n  \"reset_search\": \"Reimposta ricerca\",\n  \"no_items_to_show\": \"Nessun elemento da mostrare\",\n  \"showing_range_of_total_items\": \"Mostra {{range}} di {{total}} elementi\",\n  \"rows_per_page\": \"Righe per pagina\",\n  \"page_of_pages\": \"Pagina {{page}} di {{pages}}\",\n  \"go_to_first_page\": \"Vai alla prima pagina\",\n  \"go_to_previous_page\": \"Vai alla pagina precedente\",\n  \"go_to_next_page\": \"Vai alla pagina successiva\",\n  \"go_to_last_page\": \"Vai all'ultima pagina\",\n  \"sort_in_asc\": \"Ordinamento in ordine crescente\",\n  \"sort_in_desc\": \"Ordina in ordine decrescente\",\n  \"clear_sorting\": \"Smistamento chiaro\",\n  \"sort_a_z\": \"Ordinamento A → Z\",\n  \"sort_z_a\": \"Ordinamento Z → A\",\n  \"reach_us_at_email\": \"Contatta l'assistenza all'indirizzo support@chekin.com\",\n  \"please_wait\": \"Attendere prego\",\n  \"feature_coming_soon\": \"Prossimo\",\n  \"feature_coming_soon_description\": \"Questa funzione è attualmente in fase di sviluppo e sarà disponibile presto. Manteniti aggiornato per le ultime notizie!\",\n  \"beta\": \"Beta\",\n  \"download_all\": \"Scarica tutto\",\n  \"entry_forms\": \"Moduli di iscrizione\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Video di prova di vita\",\n  \"reviews\": \"Recensioni\",\n  \"learn_more\": \"Per saperne di più\",\n  \"this_cannot_be_reverted\": \"This cannot be reverted\",\n  \"delete\": \"Delete\",\n  \"cancel\": \"Cancel\",\n  \"you_have_made_changes\": \"You have made changes\",\n  \"would_you_like_to_save_them\": \"Would you like to save them?\",\n  \"save\": \"Save\",\n  \"dont_save\": \"Don't save\",\n  \"copied_exclamation\": \"Copiato!\",\n  \"search_placeholder\": \"Ricerca...\",\n  \"type_to_search\": \"Digitare per cercare...\",\n  \"loading_more\": \"Caricamento...\",\n  \"no_options\": \"Nessuna opzione\",\n  \"select_option\": \"Selezionare l'opzione\",\n  \"clear_all\": \"Cancella tutto\",\n  \"remove_item\": \"Rimuovere {{label}}\",\n  \"upload_file\": \"Caricare il file\",\n  \"download_attachment\": \"Scarica l'allegato\",\n  \"remove_file\": \"Rimuovere il file\",\n  \"open_calendar\": \"Calendario aperto\",\n  \"clear_dates\": \"Cancella le date\",\n  \"select_dates\": \"Selezionare le date\",\n  \"pick_date_range\": \"Scegliere un intervallo di date\",\n  \"from\": \"Da\",\n  \"to\": \"A\",\n  \"pick_month\": \"Scegliere un mese\",\n  \"pick_date\": \"Scegliere una data\",\n  \"month\": \"Mese\",\n  \"day\": \"Giorno\",\n  \"year\": \"Anno\",\n  \"done\": \"Fatto\",\n  \"wrong_period_of_dates\": \"Il periodo selezionato non è valido\",\n  \"date_range_max_days_error_one\": \"L'intervallo non può essere superiore a {{count}} giorno\",\n  \"date_range_max_days_error_other\": \"L'intervallo non può superare {{count}} giorni\",\n  \"date_range_min_days_error_one\": \"L'intervallo deve essere di almeno {{count}} giorno\",\n  \"date_range_min_days_error_other\": \"L'intervallo deve essere di almeno {{count}} giorni\",\n  \"past_dates\": \"La data non può essere antecedente a {{minDate}}\",\n  \"future_dates\": \"La data non può essere successiva a {{maxDate}}\",\n  \"signature_placeholder_text\": \"Firma all'interno di questa casella.<br/> Usa il dito.<br/> Tocca per iniziare.\",\n  \"open_devices_camera\": \"Aprire la fotocamera del dispositivo\",\n  \"place_document_inside_frame\": \"Posizionare il documento all'interno della cornice\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Chiudere altre applicazioni che potrebbero utilizzare la fotocamera\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Se si utilizza una telecamera esterna, scollegarla e ricollegarla.\",\n  \"close_the_browser_re_open_it\": \"Chiudere il browser e riaprirlo\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Problemi con la fotocamera?\",\n    \"chekin_cant_use_your_camera\": \"Chekin non può usare la macchina fotografica\",\n    \"please_try_a_different_browser\": \"La fotocamera non funziona con questo browser. Provi ad aprire il link in un altro browser.\",\n    \"permissions_denied\": \"Autorizzazione negata\",\n    \"camera_permissions_denied\": \"La fotocamera non si apre? Assicurarsi di autorizzare il browser a utilizzare la fotocamera.\",\n    \"no_camera_device_found\": \"Non è stato trovato alcun dispositivo di ripresa. Collegare una fotocamera.\",\n    \"constraints_camera_error\": \"I vincoli non possono essere soddisfatti dai dispositivi disponibili.\",\n    \"safari_camera_error\": \"Safari non è riuscito a soddisfare i requisiti della telecamera\",\n    \"try_chrome_or_firefox\": \"Provare con Chrome o Firefox\"\n  },\n  \"clear\": \"Libero\",\n  \"show_less\": \"Mostra meno\",\n  \"show_more\": \"Mostra di più\",\n  \"tap_here_to_sign\": \"Toccare qui per firmare\",\n  \"click_here_to_sign\": \"Clicca qui per firmare\",\n  \"prefix\": \"Prefisso\",\n  \"prefix_required\": \"Il prefisso è richiesto\",\n  \"reset\": \"Reset\",\n  \"show_password\": \"Mostra password\",\n  \"hide_password\": \"Nascondere la password\",\n  \"increment\": \"Incremento\",\n  \"decrement\": \"Decremento\",\n  \"create_option\": \"Creare \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"L'anno deve essere compreso tra {{min}} e {{max}}\",\n  \"clear_date\": \"Data di cancellazione\",\n  \"select_date\": \"Selezionare la data\",\n  \"draw_signature_here\": \"Metti qui la tua firma\",\n  \"signature_hint\": \"Usa il mouse o il dito\",\n  \"clear_signature\": \"Firma chiara\",\n  \"draw_signature_here_mobile\": \"Firma qui\",\n  \"signature_hint_mobile\": \"Usa il dito\",\n  \"camera_access_needed\": \"È necessario l'accesso alla fotocamera\",\n  \"camera_access_needed_text\": \"Consenti l'accesso alla fotocamera per scattare la foto. Se l'accesso è bloccato, abilita la fotocamera nelle impostazioni del browser, quindi riprova.\",\n  \"dialog\": \"Dialogo\"\n}\n","{\n  \"verified\": \"확인됨\",\n  \"iv_status\": {\n    \"verified\": \"확인됨\",\n    \"pending\": \"보류 중\",\n    \"attention\": \"주의\"\n  },\n  \"zoom_in\": \"줌인\",\n  \"zoom_out\": \"줌아웃\",\n  \"rotate\": \"회전\",\n  \"close\": \"닫기\",\n  \"esc_to_close\": \"닫으려면 ESC를 누릅니다.\",\n  \"play\": \"플레이\",\n  \"pause\": \"일시 중지\",\n  \"mute\": \"음소거\",\n  \"unmute\": \"음소거 해제\",\n  \"enter_full_screen\": \"전체 화면으로 들어가기\",\n  \"exit_full_screen\": \"전체 화면 종료\",\n  \"video_not_supported\": \"브라우저가 동영상 태그를 지원하지 않습니다.\",\n  \"skip_forward\": \"앞으로 건너뛰기\",\n  \"skip_backward\": \"뒤로 건너뛰기\",\n  \"loading\": \"로드 중\",\n  \"loading_video\": \"동영상 로드 중...\",\n  \"loading_data_description\": \"데이터를 로드하는 동안 잠시 기다려주세요. 오래 걸리지 않을 것입니다.\",\n  \"no_results\": \"결과 없음\",\n  \"nothing_found\": \"찾을 수 없음\",\n  \"save_changes\": \"변경 사항 저장\",\n  \"saved_exclamation\": \"저장되었습니다!\",\n  \"saving\": \"저장\",\n  \"validating\": \"유효성 검사\",\n  \"error\": \"오류\",\n  \"optional\": \"선택 사항\",\n  \"search_property\": \"부동산 검색\",\n  \"reset_search\": \"검색 초기화\",\n  \"no_items_to_show\": \"표시할 항목이 없습니다.\",\n  \"showing_range_of_total_items\": \"장소 홀더_0__ 항목 중 {{total}} 항목 표시하기\",\n  \"rows_per_page\": \"페이지당 행 수\",\n  \"page_of_pages\": \"플레이스홀더_1__의 {{page}} 페이지\",\n  \"go_to_first_page\": \"첫 페이지로 이동\",\n  \"go_to_previous_page\": \"이전 페이지로 이동\",\n  \"go_to_next_page\": \"다음 페이지로 이동\",\n  \"go_to_last_page\": \"마지막 페이지로 이동\",\n  \"sort_in_asc\": \"오름차순으로 정렬\",\n  \"sort_in_desc\": \"내림차순으로 정렬\",\n  \"sort_a_z\": \"정렬 A → Z\",\n  \"sort_z_a\": \"정렬 Z → A\",\n  \"clear_sorting\": \"정렬 지우기\",\n  \"reach_us_at_email\": \"지원팀에 문의(support@chekin.com)\",\n  \"please_wait\": \"잠시만 기다려주세요.\",\n  \"feature_coming_soon\": \"곧 출시 예정\",\n  \"feature_coming_soon_description\": \"이 기능은 현재 개발 중이며 곧 제공될 예정입니다. 업데이트를 기대해주세요!\",\n  \"download_all\": \"모두 다운로드\",\n  \"entry_forms\": \"참가 양식\",\n  \"tutorial\": \"튜토리얼\",\n  \"liveness_video\": \"생생한 동영상\",\n  \"beta\": \"베타\",\n  \"reviews\": \"리뷰\",\n  \"learn_more\": \"자세히 알아보기\",\n  \"this_cannot_be_reverted\": \"되돌릴 수 없습니다.\",\n  \"delete\": \"삭제\",\n  \"cancel\": \"취소\",\n  \"you_have_made_changes\": \"변경한 사항이 있습니다.\",\n  \"would_you_like_to_save_them\": \"저장하시겠습니까?\",\n  \"save\": \"저장\",\n  \"dont_save\": \"저장하지 않음\",\n  \"copied_exclamation\": \"복사 완료!\",\n  \"search_placeholder\": \"검색...\",\n  \"type_to_search\": \"검색할 내용을 입력하세요...\",\n  \"loading_more\": \"로드 중...\",\n  \"no_options\": \"옵션 없음\",\n  \"select_option\": \"옵션 선택\",\n  \"clear_all\": \"모두 지우기\",\n  \"remove_item\": \"플레이스홀더_0__ 제거하기\",\n  \"upload_file\": \"파일 업로드\",\n  \"download_attachment\": \"첨부 파일 다운로드\",\n  \"remove_file\": \"파일 제거\",\n  \"open_calendar\": \"캘린더 열기\",\n  \"clear_dates\": \"날짜 지우기\",\n  \"select_dates\": \"날짜 선택\",\n  \"pick_date_range\": \"날짜 범위 선택\",\n  \"from\": \"에서\",\n  \"to\": \"To\",\n  \"pick_month\": \"월 선택\",\n  \"pick_date\": \"날짜 선택\",\n  \"month\": \"월\",\n  \"day\": \"일\",\n  \"year\": \"연도\",\n  \"done\": \"완료\",\n  \"wrong_period_of_dates\": \"선택한 기간이 유효하지 않습니다.\",\n  \"date_range_max_days_error_one\": \"범위는 {{count}}일을 초과할 수 없습니다.\",\n  \"date_range_max_days_error_other\": \"범위는 {{count}}일을 초과할 수 없습니다.\",\n  \"date_range_min_days_error_one\": \"범위는 {{count}}일 이상이어야 합니다.\",\n  \"date_range_min_days_error_other\": \"범위는 {{count}}일 이상이어야 합니다.\",\n  \"past_dates\": \"날짜는 {{minDate}} 이전일 수 없습니다.\",\n  \"future_dates\": \"날짜는 {{maxDate}} 이후일 수 없습니다.\",\n  \"signature_placeholder_text\": \"이 상자 안에 서명합니다.<br/> 손가락을 사용합니다.<br/> 시작하려면 탭합니다.\",\n  \"open_devices_camera\": \"기기의 카메라 열기\",\n  \"place_document_inside_frame\": \"프레임 안에 문서 배치\",\n  \"close_other_application_that_may_be_using_your_camera\": \"카메라를 사용할 수 있는 다른 애플리케이션을 닫습니다.\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"외부 카메라를 사용하는 경우 연결을 끊었다가 다시 연결하세요.\",\n  \"close_the_browser_re_open_it\": \"브라우저를 닫았다가 다시 열기\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"카메라 문제가 발생했나요?\",\n    \"chekin_cant_use_your_camera\": \"Chekin이 카메라를 사용할 수 없습니다.\",\n    \"please_try_a_different_browser\": \"이 브라우저에서는 카메라가 작동하지 않습니다. 다른 브라우저에서 링크를 열어 보세요.\",\n    \"permissions_denied\": \"권한 거부됨\",\n    \"camera_permissions_denied\": \"카메라가 열리지 않나요? 브라우저에서 카메라 사용 권한을 허용했는지 확인하세요.\",\n    \"no_camera_device_found\": \"카메라 장치를 찾을 수 없습니다. 카메라를 연결하세요.\",\n    \"constraints_camera_error\": \"사용 가능한 디바이스로는 제약 조건을 충족할 수 없습니다.\",\n    \"safari_camera_error\": \"Safari에서 카메라 요구 사항을 충족할 수 없음\",\n    \"try_chrome_or_firefox\": \"크롬 또는 파이어폭스를 사용해 보세요.\"\n  },\n  \"clear\": \"지우기\",\n  \"show_less\": \"덜 보기\",\n  \"show_more\": \"자세히 보기\",\n  \"tap_here_to_sign\": \"서명하려면 여기를 탭하세요.\",\n  \"click_here_to_sign\": \"서명하려면 여기를 클릭하세요.\",\n  \"prefix\": \"접두사\",\n  \"prefix_required\": \"접두사 필수\",\n  \"reset\": \"초기화\",\n  \"show_password\": \"비밀번호 표시\",\n  \"hide_password\": \"비밀번호 숨기기\",\n  \"increment\": \"증분\",\n  \"decrement\": \"감소\",\n  \"create_option\": \"\\\"{{input}}\\\" 만들기\",\n  \"year_out_of_range\": \"연도는 {{min}}에서 {{max}} 사이여야 합니다.\",\n  \"clear_date\": \"날짜 지우기\",\n  \"select_date\": \"날짜 선택\",\n  \"draw_signature_here\": \"여기에 서명을 해 주세요\",\n  \"signature_hint\": \"마우스나 손가락을 사용하세요\",\n  \"clear_signature\": \"서명 지우기\",\n  \"draw_signature_here_mobile\": \"서명을 그려주세요\",\n  \"signature_hint_mobile\": \"손가락을 사용하세요\",\n  \"camera_access_needed\": \"카메라 접근 권한 필요\",\n  \"camera_access_needed_text\": \"사진을 찍으려면 카메라 사용을 허용해 주세요. 카메라 사용이 차단된 경우, 브라우저 설정에서 카메라 사용을 허용한 후 다시 시도해 주세요.\",\n  \"dialog\": \"대화\"\n}\n","{\n  \"verified\": \"Geverifieerd\",\n  \"iv_status\": {\n    \"verified\": \"Geverifieerd\",\n    \"pending\": \"In afwachting van\",\n    \"attention\": \"Attentie\"\n  },\n  \"zoom_in\": \"Inzoomen\",\n  \"zoom_out\": \"Uitzoomen\",\n  \"rotate\": \"Draaien\",\n  \"close\": \"Sluit\",\n  \"esc_to_close\": \"Druk op ESC om te sluiten\",\n  \"play\": \"Speel\",\n  \"pause\": \"Pauze\",\n  \"mute\": \"Stomme\",\n  \"unmute\": \"Unmute\",\n  \"enter_full_screen\": \"Volledig scherm openen\",\n  \"exit_full_screen\": \"Volledig scherm afsluiten\",\n  \"video_not_supported\": \"Uw browser ondersteunt de videotag niet.\",\n  \"skip_forward\": \"Vooruit springen\",\n  \"skip_backward\": \"Achteruit overslaan\",\n  \"loading\": \"Laden\",\n  \"loading_video\": \"Video aan het laden...\",\n  \"loading_data_description\": \"Wacht even terwijl we je gegevens laden. Dit zal niet lang duren.\",\n  \"no_results\": \"Geen resultaten\",\n  \"nothing_found\": \"Niets gevonden\",\n  \"save_changes\": \"Wijzigingen opslaan\",\n  \"saved_exclamation\": \"Gered!\",\n  \"saving\": \"Besparing\",\n  \"validating\": \"valideren\",\n  \"error\": \"Fout\",\n  \"optional\": \"Optioneel\",\n  \"search_property\": \"Eigendom zoeken\",\n  \"reset_search\": \"Opnieuw zoeken\",\n  \"no_items_to_show\": \"Geen items om te tonen\",\n  \"showing_range_of_total_items\": \"Tonen van {{range}} van {{total}} items\",\n  \"rows_per_page\": \"Rijen per pagina\",\n  \"page_of_pages\": \"Pagina {{page}} van {{pages}}\",\n  \"go_to_first_page\": \"Ga naar de eerste pagina\",\n  \"go_to_previous_page\": \"Ga naar de vorige pagina\",\n  \"go_to_next_page\": \"Ga naar de volgende pagina\",\n  \"go_to_last_page\": \"Ga naar de laatste pagina\",\n  \"sort_in_asc\": \"Sorteren in oplopende volgorde\",\n  \"sort_in_desc\": \"Sorteren in aflopende volgorde\",\n  \"sort_a_z\": \"Sorteer A → Z\",\n  \"sort_z_a\": \"Sorteer Z → A\",\n  \"clear_sorting\": \"Duidelijk sorteren\",\n  \"reach_us_at_email\": \"Bereik ondersteuning op support@chekin.com\",\n  \"please_wait\": \"Even geduld\",\n  \"feature_coming_soon\": \"Binnenkort beschikbaar\",\n  \"feature_coming_soon_description\": \"Deze functie is momenteel in ontwikkeling en zal binnenkort beschikbaar zijn. Blijf op de hoogte voor updates!\",\n  \"download_all\": \"Alles downloaden\",\n  \"entry_forms\": \"Inschrijfformulieren\",\n  \"tutorial\": \"Les\",\n  \"liveness_video\": \"Levendigheid video\",\n  \"beta\": \"Bèta\",\n  \"reviews\": \"Beoordelingen\",\n  \"learn_more\": \"Meer informatie\",\n  \"this_cannot_be_reverted\": \"Dit kan niet worden teruggedraaid\",\n  \"delete\": \"Verwijder\",\n  \"cancel\": \"Annuleren\",\n  \"you_have_made_changes\": \"U hebt wijzigingen aangebracht\",\n  \"would_you_like_to_save_them\": \"Wil je ze redden?\",\n  \"save\": \"Sla\",\n  \"dont_save\": \"Niet opslaan\",\n  \"copied_exclamation\": \"Gekopieerd!\",\n  \"search_placeholder\": \"Zoeken...\",\n  \"type_to_search\": \"Type om te zoeken...\",\n  \"loading_more\": \"Aan het laden...\",\n  \"no_options\": \"Geen opties\",\n  \"select_option\": \"Selecteer optie\",\n  \"clear_all\": \"Alles wissen\",\n  \"remove_item\": \"Verwijder {{label}}\",\n  \"upload_file\": \"Bestand uploaden\",\n  \"download_attachment\": \"Bijlage downloaden\",\n  \"remove_file\": \"Bestand verwijderen\",\n  \"open_calendar\": \"Open kalender\",\n  \"clear_dates\": \"Duidelijke data\",\n  \"select_dates\": \"Kies data\",\n  \"pick_date_range\": \"Kies een datumbereik\",\n  \"from\": \"Van\",\n  \"to\": \"Naar\",\n  \"pick_month\": \"Kies een maand\",\n  \"pick_date\": \"Kies een datum\",\n  \"month\": \"Maand\",\n  \"day\": \"Dag\",\n  \"year\": \"Jaar\",\n  \"done\": \"Gedaan\",\n  \"wrong_period_of_dates\": \"Geselecteerde periode is ongeldig\",\n  \"date_range_max_days_error_one\": \"Het bereik kan niet groter zijn dan {{count}} dag\",\n  \"date_range_max_days_error_other\": \"Het bereik kan niet groter zijn dan {{count}} dagen\",\n  \"date_range_min_days_error_one\": \"Het bereik moet minstens {{count}} dag zijn\",\n  \"date_range_min_days_error_other\": \"Het bereik moet minstens {{count}} dagen zijn\",\n  \"past_dates\": \"Datum kan niet voor {{minDate}} liggen\",\n  \"future_dates\": \"Datum kan niet na {{maxDate}} liggen\",\n  \"signature_placeholder_text\": \"Teken in dit vak.<br/> Gebruik je vinger.<br/> Tik om te beginnen.\",\n  \"open_devices_camera\": \"Open de camera van het apparaat\",\n  \"place_document_inside_frame\": \"Plaats je document in het frame\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Sluit andere toepassingen die mogelijk gebruikmaken van uw camera\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Als u een externe camera gebruikt, koppelt u deze los en sluit u deze weer aan.\",\n  \"close_the_browser_re_open_it\": \"Sluit de browser en open deze opnieuw\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Problemen met de camera?\",\n    \"chekin_cant_use_your_camera\": \"Chekin kan je camera niet gebruiken\",\n    \"please_try_a_different_browser\": \"Je camera werkt niet in deze browser. Probeer de link te openen in een andere browser.\",\n    \"permissions_denied\": \"Toestemming geweigerd\",\n    \"camera_permissions_denied\": \"De camera opent niet? Zorg ervoor dat de browser toestemming geeft om de camera te gebruiken.\",\n    \"no_camera_device_found\": \"Geen camera gevonden. Sluit een camera aan.\",\n    \"constraints_camera_error\": \"Aan beperkingen kan niet worden voldaan door beschikbare apparaten.\",\n    \"safari_camera_error\": \"Safari kon niet voldoen aan de cameravereisten\",\n    \"try_chrome_or_firefox\": \"Probeer Chrome of Firefox\"\n  },\n  \"clear\": \"Duidelijk\",\n  \"show_less\": \"Minder tonen\",\n  \"show_more\": \"Meer tonen\",\n  \"tap_here_to_sign\": \"Tik hier om te ondertekenen\",\n  \"click_here_to_sign\": \"Klik hier om te ondertekenen\",\n  \"prefix\": \"Voorvoegsel\",\n  \"prefix_required\": \"Voorvoegsel is vereist\",\n  \"reset\": \"Reset\",\n  \"show_password\": \"Wachtwoord tonen\",\n  \"hide_password\": \"Wachtwoord verbergen\",\n  \"increment\": \"Verhoging\",\n  \"decrement\": \"Afname\",\n  \"create_option\": \"Maak \\\"{{input}}\\\" aan.\",\n  \"year_out_of_range\": \"Het jaar moet liggen tussen {{min}} en {{max}}\",\n  \"clear_date\": \"Datum wissen\",\n  \"select_date\": \"Selecteer datum\",\n  \"draw_signature_here\": \"Zet hier je handtekening\",\n  \"signature_hint\": \"Gebruik je muis of vinger\",\n  \"clear_signature\": \"Duidelijke handtekening\",\n  \"draw_signature_here_mobile\": \"Zet je handtekening\",\n  \"signature_hint_mobile\": \"Gebruik je vinger\",\n  \"camera_access_needed\": \"Toegang tot de camera vereist\",\n  \"camera_access_needed_text\": \"Geef de camera toestemming om de foto te maken. Als dit wordt geblokkeerd, schakel dan de camera in via de instellingen van je browser en probeer het daarna opnieuw.\",\n  \"dialog\": \"Dialoog\"\n}\n","{\n  \"verified\": \"Zweryfikowano\",\n  \"iv_status\": {\n    \"verified\": \"Zweryfikowano\",\n    \"pending\": \"W toku\",\n    \"attention\": \"Uwaga\"\n  },\n  \"zoom_in\": \"Powiększenie\",\n  \"zoom_out\": \"Zoom Out\",\n  \"rotate\": \"Obrót\",\n  \"close\": \"Zamknij\",\n  \"esc_to_close\": \"Naciśnij ESC, aby zamknąć\",\n  \"play\": \"Grać\",\n  \"pause\": \"Pauza\",\n  \"mute\": \"Wyciszenie\",\n  \"unmute\": \"Wyłącz wyciszenie\",\n  \"enter_full_screen\": \"Wejdź na pełny ekran\",\n  \"exit_full_screen\": \"Wyjście na pełnym ekranie\",\n  \"video_not_supported\": \"Twoja przeglądarka nie obsługuje tagu wideo.\",\n  \"skip_forward\": \"Przejdź do przodu\",\n  \"skip_backward\": \"Pomiń do tyłu\",\n  \"loading\": \"Ładowanie\",\n  \"loading_video\": \"Ładowanie wideo...\",\n  \"loading_data_description\": \"Poczekaj, aż załadujemy Twoje dane. Nie potrwa to długo.\",\n  \"no_results\": \"Brak wyników\",\n  \"nothing_found\": \"Nic nie znaleziono\",\n  \"save_changes\": \"Zapisz zmiany\",\n  \"saved_exclamation\": \"Ocalony!\",\n  \"saving\": \"Oszczędzanie\",\n  \"validating\": \"Sprawdzanie poprawności\",\n  \"error\": \"Błąd\",\n  \"optional\": \"Opcjonalnie\",\n  \"search_property\": \"Wyszukiwanie nieruchomości\",\n  \"reset_search\": \"Zresetuj wyszukiwanie\",\n  \"no_items_to_show\": \"Brak elementów do pokazania\",\n  \"showing_range_of_total_items\": \"Wyświetlanie {{range}} z {{total}} elementów\",\n  \"rows_per_page\": \"Wiersze na stronę\",\n  \"page_of_pages\": \"Strona {{page}} z {{pages}}\",\n  \"go_to_first_page\": \"Przejdź do pierwszej strony\",\n  \"go_to_previous_page\": \"Przejdź do poprzedniej strony\",\n  \"go_to_next_page\": \"Przejdź do następnej strony\",\n  \"go_to_last_page\": \"Przejdź do ostatniej strony\",\n  \"sort_in_asc\": \"Sortuj w porządku rosnącym\",\n  \"sort_in_desc\": \"Sortuj w kolejności malejącej\",\n  \"sort_a_z\": \"Sortuj A → Z\",\n  \"sort_z_a\": \"Sortuj Z → A\",\n  \"clear_sorting\": \"Wyczyść sortowanie\",\n  \"reach_us_at_email\": \"Wsparcie można uzyskać pod adresem support@chekin.com\",\n  \"please_wait\": \"Proszę czekać\",\n  \"feature_coming_soon\": \"Już wkrótce\",\n  \"feature_coming_soon_description\": \"Ta funkcja jest obecnie w fazie rozwoju i będzie dostępna wkrótce. Bądź na bieżąco z aktualizacjami!\",\n  \"download_all\": \"Pobierz wszystko\",\n  \"entry_forms\": \"Formularze zgłoszeniowe\",\n  \"tutorial\": \"Samouczek\",\n  \"liveness_video\": \"Wideo Liveness\",\n  \"beta\": \"Beta\",\n  \"reviews\": \"Recenzje\",\n  \"learn_more\": \"Dowiedz się więcej\",\n  \"this_cannot_be_reverted\": \"Nie można tego cofnąć\",\n  \"delete\": \"Usuń\",\n  \"cancel\": \"Anuluj\",\n  \"you_have_made_changes\": \"Dokonałeś zmian\",\n  \"would_you_like_to_save_them\": \"Czy chciałbyś je uratować?\",\n  \"save\": \"Zapisz\",\n  \"dont_save\": \"Nie oszczędzaj\",\n  \"copied_exclamation\": \"Skopiowane!\",\n  \"search_placeholder\": \"Szukaj...\",\n  \"type_to_search\": \"Wpisz, aby wyszukać...\",\n  \"loading_more\": \"Ładowanie...\",\n  \"no_options\": \"Brak opcji\",\n  \"select_option\": \"Wybierz opcję\",\n  \"clear_all\": \"Wyczyść wszystko\",\n  \"remove_item\": \"Usuń {{label}}\",\n  \"upload_file\": \"Prześlij plik\",\n  \"download_attachment\": \"Załącznik do pobrania\",\n  \"remove_file\": \"Usuń plik\",\n  \"open_calendar\": \"Kalendarz otwarty\",\n  \"clear_dates\": \"Jasne daty\",\n  \"select_dates\": \"Wybierz daty\",\n  \"pick_date_range\": \"Wybierz zakres dat\",\n  \"from\": \"Od\",\n  \"to\": \"Do\",\n  \"pick_month\": \"Wybierz miesiąc\",\n  \"pick_date\": \"Wybierz datę\",\n  \"month\": \"Miesiąc\",\n  \"day\": \"Dzień\",\n  \"year\": \"Rok\",\n  \"done\": \"Gotowe\",\n  \"wrong_period_of_dates\": \"Wybrany okres jest nieprawidłowy\",\n  \"date_range_max_days_error_one\": \"Zakres nie może przekraczać {{count}} dni\",\n  \"date_range_max_days_error_other\": \"Zakres nie może przekraczać {{count}} dni\",\n  \"date_range_min_days_error_one\": \"Zakres musi wynosić co najmniej {{count}} dni\",\n  \"date_range_min_days_error_other\": \"Zakres musi wynosić co najmniej {{count}} dni\",\n  \"past_dates\": \"Data nie może być wcześniejsza niż {{minDate}}\",\n  \"future_dates\": \"Data nie może być późniejsza niż {{maxDate}}.\",\n  \"signature_placeholder_text\": \"Podpisz się w tym polu.<br/> Użyj palca.<br/> Stuknij, aby rozpocząć.\",\n  \"open_devices_camera\": \"Otwórz kamerę urządzenia\",\n  \"place_document_inside_frame\": \"Umieść dokument w ramce\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Zamknij inne aplikacje, które mogą korzystać z kamery\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Jeśli używasz kamery zewnętrznej, odłącz ją i podłącz ponownie\",\n  \"close_the_browser_re_open_it\": \"Zamknij przeglądarkę i otwórz ją ponownie\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Problemy z kamerą?\",\n    \"chekin_cant_use_your_camera\": \"Chekin nie może używać kamery\",\n    \"please_try_a_different_browser\": \"Kamera nie działa w tej przeglądarce. Spróbuj otworzyć łącze w innej przeglądarce.\",\n    \"permissions_denied\": \"Odmowa zezwolenia\",\n    \"camera_permissions_denied\": \"Kamera nie otwiera się? Upewnij się, że zezwolono przeglądarce na korzystanie z kamery.\",\n    \"no_camera_device_found\": \"Nie znaleziono urządzenia kamery. Podłącz kamerę.\",\n    \"constraints_camera_error\": \"Ograniczenia nie mogą być spełnione przez dostępne urządzenia.\",\n    \"safari_camera_error\": \"Safari nie mogła spełnić wymagań kamery\",\n    \"try_chrome_or_firefox\": \"Wypróbuj przeglądarkę Chrome lub Firefox\"\n  },\n  \"clear\": \"Wyczyść\",\n  \"show_less\": \"Pokaż mniej\",\n  \"show_more\": \"Pokaż więcej\",\n  \"tap_here_to_sign\": \"Kliknij tutaj, aby podpisać\",\n  \"click_here_to_sign\": \"Kliknij tutaj, aby podpisać\",\n  \"prefix\": \"Prefiks\",\n  \"prefix_required\": \"Prefiks jest wymagany\",\n  \"reset\": \"Reset\",\n  \"show_password\": \"Pokaż hasło\",\n  \"hide_password\": \"Ukryj hasło\",\n  \"increment\": \"Przyrost\",\n  \"decrement\": \"Spadek\",\n  \"create_option\": \"Utwórz \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"Rok musi zawierać się w przedziale od {{min}} do {{max}}.\",\n  \"clear_date\": \"Jasna data\",\n  \"select_date\": \"Wybierz datę\",\n  \"draw_signature_here\": \"Proszę złożyć tutaj swój podpis\",\n  \"signature_hint\": \"Użyj myszki lub palca\",\n  \"clear_signature\": \"Wyraźny podpis\",\n  \"draw_signature_here_mobile\": \"Narysuj swój podpis\",\n  \"signature_hint_mobile\": \"Użyj palca\",\n  \"camera_access_needed\": \"Wymagany dostęp do aparatu\",\n  \"camera_access_needed_text\": \"Zezwól aplikacji na dostęp do aparatu, aby wykonać zdjęcie. Jeśli dostęp jest zablokowany, włącz obsługę aparatu w ustawieniach przeglądarki, a następnie spróbuj ponownie.\",\n  \"dialog\": \"Okno dialogowe\"\n}\n","{\n  \"verified\": \"Verificado\",\n  \"iv_status\": {\n    \"verified\": \"Verificado\",\n    \"pending\": \"Pendente\",\n    \"attention\": \"Atenção\"\n  },\n  \"zoom_in\": \"Ampliar\",\n  \"zoom_out\": \"Reduzir o zoom\",\n  \"rotate\": \"Rodar\",\n  \"close\": \"Fechar\",\n  \"esc_to_close\": \"Prima ESC para fechar\",\n  \"play\": \"Jogar\",\n  \"pause\": \"Pausa\",\n  \"mute\": \"Sem som\",\n  \"unmute\": \"Desativar o som\",\n  \"enter_full_screen\": \"Entrar no ecrã inteiro\",\n  \"exit_full_screen\": \"Sair do ecrã inteiro\",\n  \"video_not_supported\": \"O seu browser não suporta a etiqueta de vídeo.\",\n  \"skip_forward\": \"Saltar para a frente\",\n  \"skip_backward\": \"Saltar para trás\",\n  \"loading\": \"Carregamento\",\n  \"loading_video\": \"A carregar vídeo...\",\n  \"loading_data_description\": \"Aguarde enquanto carregamos os seus dados. Não vai demorar muito.\",\n  \"no_results\": \"Sem resultados\",\n  \"nothing_found\": \"Nada encontrado\",\n  \"save_changes\": \"Guardar alterações\",\n  \"saved_exclamation\": \"Salvo!\",\n  \"saving\": \"Poupança\",\n  \"validating\": \"A validar\",\n  \"error\": \"Erro\",\n  \"optional\": \"Opcional\",\n  \"search_property\": \"Pesquisar imóveis\",\n  \"reset_search\": \"Repor pesquisa\",\n  \"no_items_to_show\": \"Não há itens para mostrar\",\n  \"showing_range_of_total_items\": \"A mostrar {{range}} de {{total}} itens\",\n  \"rows_per_page\": \"Linhas por página\",\n  \"page_of_pages\": \"Página {{page}} de {{pages}}\",\n  \"go_to_first_page\": \"Ir para a primeira página\",\n  \"go_to_previous_page\": \"Ir para a página anterior\",\n  \"go_to_next_page\": \"Ir para a página seguinte\",\n  \"go_to_last_page\": \"Ir para a última página\",\n  \"sort_in_asc\": \"Ordenar por ordem ascendente\",\n  \"sort_in_desc\": \"Ordenar por ordem descendente\",\n  \"clear_sorting\": \"Triagem clara\",\n  \"sort_a_z\": \"Ordenar A → Z\",\n  \"sort_z_a\": \"Ordenar Z → A\",\n  \"reach_us_at_email\": \"Obter ajudaem support@chekin.com\",\n  \"please_wait\": \"Aguarde\",\n  \"feature_coming_soon\": \"Em breve\",\n  \"feature_coming_soon_description\": \"Esta funcionalidade está atualmente em desenvolvimento e estará disponível em breve. Mantenha-se atualizado para as últimas notícias!\",\n  \"beta\": \"Beta\",\n  \"download_all\": \"Transferir tudo\",\n  \"entry_forms\": \"Formulários de inscrição\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Vídeo de prova de vida\",\n  \"reviews\": \"Comentários\",\n  \"learn_more\": \"Saiba mais\",\n  \"this_cannot_be_reverted\": \"This cannot be reverted\",\n  \"delete\": \"Delete\",\n  \"cancel\": \"Cancel\",\n  \"you_have_made_changes\": \"You have made changes\",\n  \"would_you_like_to_save_them\": \"Would you like to save them?\",\n  \"save\": \"Save\",\n  \"dont_save\": \"Don't save\",\n  \"copied_exclamation\": \"Copiado!\",\n  \"search_placeholder\": \"Procurar...\",\n  \"type_to_search\": \"Digite para pesquisar...\",\n  \"loading_more\": \"Carregando...\",\n  \"no_options\": \"Sem opções\",\n  \"select_option\": \"Selecionar opção\",\n  \"clear_all\": \"Limpar tudo\",\n  \"remove_item\": \"Remover {{label}}\",\n  \"upload_file\": \"Carregar ficheiro\",\n  \"download_attachment\": \"Descarregar anexo\",\n  \"remove_file\": \"Remover ficheiro\",\n  \"open_calendar\": \"Calendário aberto\",\n  \"clear_dates\": \"Limpar datas\",\n  \"select_dates\": \"Selecionar datas\",\n  \"pick_date_range\": \"Selecionar um intervalo de datas\",\n  \"from\": \"De\",\n  \"to\": \"Para\",\n  \"pick_month\": \"Escolher um mês\",\n  \"pick_date\": \"Escolher uma data\",\n  \"month\": \"Mês\",\n  \"day\": \"Dia\",\n  \"year\": \"Ano\",\n  \"done\": \"Feito\",\n  \"wrong_period_of_dates\": \"O período selecionado é inválido\",\n  \"date_range_max_days_error_one\": \"O intervalo não pode exceder {{count}} dia\",\n  \"date_range_max_days_error_other\": \"O intervalo não pode exceder {{count}} dias\",\n  \"date_range_min_days_error_one\": \"O intervalo deve ser de, pelo menos, {{count}} dia\",\n  \"date_range_min_days_error_other\": \"O intervalo deve ser de, pelo menos, {{count}} dias\",\n  \"past_dates\": \"A data não pode ser anterior a {{minDate}}\",\n  \"future_dates\": \"A data não pode ser posterior a {{maxDate}}\",\n  \"signature_placeholder_text\": \"Assina dentro desta caixa.<br/> Utiliza o teu dedo.<br/> Toca para começar.\",\n  \"open_devices_camera\": \"Abrir a câmara do dispositivo\",\n  \"place_document_inside_frame\": \"Coloque o seu documento dentro da moldura\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Fechar outras aplicações que possam estar a utilizar a sua câmara\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Se utilizar uma câmara externa, desligue-a e volte a ligá-la\",\n  \"close_the_browser_re_open_it\": \"Fechar o browser e voltar a abri-lo\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Está a ter problemas com a câmara?\",\n    \"chekin_cant_use_your_camera\": \"Chekin não pode usar a sua câmara\",\n    \"please_try_a_different_browser\": \"A sua câmara não funciona neste browser. Tente abrir a ligação noutro browser.\",\n    \"permissions_denied\": \"Permissão negada\",\n    \"camera_permissions_denied\": \"A câmara não abre? Certifique-se de que dá permissão ao browser para utilizar a câmara.\",\n    \"no_camera_device_found\": \"Não foi encontrado nenhum dispositivo de câmara. Ligue uma câmara.\",\n    \"constraints_camera_error\": \"As restrições não podem ser satisfeitas pelos dispositivos disponíveis.\",\n    \"safari_camera_error\": \"O Safari não conseguiu satisfazer os requisitos da câmara\",\n    \"try_chrome_or_firefox\": \"Experimente o Chrome ou o Firefox\"\n  },\n  \"clear\": \"Limpo\",\n  \"show_less\": \"Mostrar menos\",\n  \"show_more\": \"Mostrar mais\",\n  \"tap_here_to_sign\": \"Toque aqui para assinar\",\n  \"click_here_to_sign\": \"Clique aqui para assinar\",\n  \"prefix\": \"Prefixo\",\n  \"prefix_required\": \"O prefixo é obrigatório\",\n  \"reset\": \"Reiniciar\",\n  \"show_password\": \"Mostrar palavra-passe\",\n  \"hide_password\": \"Ocultar palavra-passe\",\n  \"increment\": \"Incremento\",\n  \"decrement\": \"Diminuição\",\n  \"create_option\": \"Criar \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"O ano deve estar compreendido entre {{min}} e {{max}}\",\n  \"clear_date\": \"Limpar data\",\n  \"select_date\": \"Selecionar data\",\n  \"draw_signature_here\": \"Assine aqui\",\n  \"signature_hint\": \"Use o rato ou o dedo\",\n  \"clear_signature\": \"Assinatura nítida\",\n  \"draw_signature_here_mobile\": \"Assine com a sua assinatura\",\n  \"signature_hint_mobile\": \"Usa o dedo\",\n  \"camera_access_needed\": \"É necessário acesso à câmara\",\n  \"camera_access_needed_text\": \"Permita o acesso à câmara para tirar a fotografia. Se estiver bloqueado, ative a câmara nas definições do seu navegador e, em seguida, tente novamente.\",\n  \"dialog\": \"Diálogo\"\n}\n","{\n  \"verified\": \"Verificat\",\n  \"iv_status\": {\n    \"verified\": \"Verificat\",\n    \"pending\": \"În așteptare\",\n    \"attention\": \"Atenție\"\n  },\n  \"zoom_in\": \"Zoom in\",\n  \"zoom_out\": \"Zoom Out\",\n  \"rotate\": \"Rotiți\",\n  \"close\": \"Închidere\",\n  \"esc_to_close\": \"Apăsați ESC pentru a închide\",\n  \"play\": \"Joc\",\n  \"pause\": \"Pauză\",\n  \"mute\": \"Mută\",\n  \"unmute\": \"Dezactivați\",\n  \"enter_full_screen\": \"Introduceți ecranul complet\",\n  \"exit_full_screen\": \"Ieșire ecran complet\",\n  \"video_not_supported\": \"Browserul dvs. nu acceptă eticheta video.\",\n  \"skip_forward\": \"Salt înainte\",\n  \"skip_backward\": \"Salt înapoi\",\n  \"loading\": \"Încărcare\",\n  \"loading_video\": \"Încărcare video...\",\n  \"loading_data_description\": \"Vă rugăm să așteptați până vă încărcăm datele. Acest lucru nu va dura mult.\",\n  \"no_results\": \"Niciun rezultat\",\n  \"nothing_found\": \"Nu s-a găsit nimic\",\n  \"save_changes\": \"Salvați modificările\",\n  \"saved_exclamation\": \"Salvat!\",\n  \"saving\": \"Economisire\",\n  \"validating\": \"Validarea\",\n  \"error\": \"Eroare\",\n  \"optional\": \"Opțional\",\n  \"search_property\": \"Căutare proprietate\",\n  \"reset_search\": \"Resetați căutarea\",\n  \"no_items_to_show\": \"Nu există articole de prezentat\",\n  \"showing_range_of_total_items\": \"Se afișează {{range}} din {{total}} articole\",\n  \"rows_per_page\": \"Rânduri pe pagină\",\n  \"page_of_pages\": \"Pagina {{page}} din {{pages}}\",\n  \"go_to_first_page\": \"Mergeți la prima pagină\",\n  \"go_to_previous_page\": \"Mergeți la pagina anterioară\",\n  \"go_to_next_page\": \"Mergeți la pagina următoare\",\n  \"go_to_last_page\": \"Mergeți la ultima pagină\",\n  \"sort_in_asc\": \"Sortare în ordine crescătoare\",\n  \"sort_in_desc\": \"Sortare în ordine descrescătoare\",\n  \"sort_a_z\": \"Sortare A → Z\",\n  \"sort_z_a\": \"Sort Z → A\",\n  \"clear_sorting\": \"Sortare clară\",\n  \"reach_us_at_email\": \"Obțineți asistență la support@chekin.com\",\n  \"please_wait\": \"Vă rugăm să așteptați\",\n  \"feature_coming_soon\": \"În curând\",\n  \"feature_coming_soon_description\": \"Această caracteristică este în curs de dezvoltare și va fi disponibilă în curând. Rămâneți pe recepție pentru actualizări!\",\n  \"download_all\": \"Descărcați tot\",\n  \"entry_forms\": \"Formulare de înscriere\",\n  \"tutorial\": \"Tutorial\",\n  \"liveness_video\": \"Liveness video\",\n  \"beta\": \"Beta\",\n  \"reviews\": \"Recenzii\",\n  \"learn_more\": \"Aflați mai multe\",\n  \"this_cannot_be_reverted\": \"Acest lucru nu poate fi anulat\",\n  \"delete\": \"Ștergeți\",\n  \"cancel\": \"Anulează\",\n  \"you_have_made_changes\": \"Ați efectuat modificări\",\n  \"would_you_like_to_save_them\": \"Doriți să le salvați?\",\n  \"save\": \"Salvați\",\n  \"dont_save\": \"Nu salvați\",\n  \"copied_exclamation\": \"Copiat!\",\n  \"search_placeholder\": \"Căutare...\",\n  \"type_to_search\": \"Tastați pentru a căuta...\",\n  \"loading_more\": \"Încărcare...\",\n  \"no_options\": \"Nu există opțiuni\",\n  \"select_option\": \"Selectați opțiunea\",\n  \"clear_all\": \"Ștergeți toate\",\n  \"remove_item\": \"Eliminați {{label}}\",\n  \"upload_file\": \"Încărcați fișierul\",\n  \"download_attachment\": \"Descărcați atașamentul\",\n  \"remove_file\": \"Îndepărtați fișierul\",\n  \"open_calendar\": \"Deschideți calendarul\",\n  \"clear_dates\": \"Date clare\",\n  \"select_dates\": \"Selectați datele\",\n  \"pick_date_range\": \"Alegeți un interval de date\",\n  \"from\": \"De la\",\n  \"to\": \"La\",\n  \"pick_month\": \"Alegeți o lună\",\n  \"pick_date\": \"Alegeți o dată\",\n  \"month\": \"Luna\",\n  \"day\": \"Ziua\",\n  \"year\": \"Anul\",\n  \"done\": \"Efectuat\",\n  \"wrong_period_of_dates\": \"Perioada selectată nu este valabilă\",\n  \"date_range_max_days_error_one\": \"Intervalul nu poate depăși {{count}} zi\",\n  \"date_range_max_days_error_other\": \"Intervalul nu poate depăși {{count}} zile\",\n  \"date_range_min_days_error_one\": \"Intervalul trebuie să fie de cel puțin {{count}} zi\",\n  \"date_range_min_days_error_other\": \"Intervalul trebuie să fie de cel puțin {{count}} zile\",\n  \"past_dates\": \"Data nu poate fi anterioară {{minDate}}\",\n  \"future_dates\": \"Data nu poate fi după {{maxDate}}\",\n  \"signature_placeholder_text\": \"Semnați în interiorul acestei casete.<br/> Folosiți degetul.<br/> Atingeți pentru a începe.\",\n  \"open_devices_camera\": \"Deschideți camera dispozitivului\",\n  \"place_document_inside_frame\": \"Plasați documentul în interiorul ramei\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Închideți alte aplicații care pot utiliza camera dvs.\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Dacă utilizați o cameră externă, deconectați-o și reconectați-o\",\n  \"close_the_browser_re_open_it\": \"Închideți browserul și redeschideți-l\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Aveți probleme cu camera foto?\",\n    \"chekin_cant_use_your_camera\": \"Chekin nu-ți poate folosi camera\",\n    \"please_try_a_different_browser\": \"Camera dvs. nu funcționează în acest browser. Vă rugăm să încercați să deschideți link-ul într-un alt browser.\",\n    \"permissions_denied\": \"Permisiune refuzată\",\n    \"camera_permissions_denied\": \"Camera nu se deschide? Asigurați-vă că acordați browserului permisiunea de a utiliza camera.\",\n    \"no_camera_device_found\": \"Nu a fost găsit niciun dispozitiv de cameră. Vă rugăm să conectați o cameră.\",\n    \"constraints_camera_error\": \"Constrângerile nu pot fi îndeplinite de dispozitivele disponibile.\",\n    \"safari_camera_error\": \"Safari nu a putut satisface cerințele camerei\",\n    \"try_chrome_or_firefox\": \"Vă rugăm să încercați Chrome sau Firefox\"\n  },\n  \"clear\": \"Clar\",\n  \"show_less\": \"Arată mai puțin\",\n  \"show_more\": \"Arată mai multe\",\n  \"tap_here_to_sign\": \"Atingeți aici pentru a semna\",\n  \"click_here_to_sign\": \"Faceți clic aici pentru a semna\",\n  \"prefix\": \"Prefix\",\n  \"prefix_required\": \"Prefixul este necesar\",\n  \"reset\": \"Resetare\",\n  \"show_password\": \"Afișați parola\",\n  \"hide_password\": \"Ascundeți parola\",\n  \"increment\": \"Increment\",\n  \"decrement\": \"Diminuare\",\n  \"create_option\": \"Creați \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"Anul trebuie să fie între {{min}} și {{max}}\",\n  \"clear_date\": \"Data clară\",\n  \"select_date\": \"Selectați data\",\n  \"draw_signature_here\": \"Semnează aici\",\n  \"signature_hint\": \"Folosește mouse-ul sau degetul\",\n  \"clear_signature\": \"Semnătură clară\",\n  \"draw_signature_here_mobile\": \"Desenează-ți semnătura\",\n  \"signature_hint_mobile\": \"Folosește degetul\",\n  \"camera_access_needed\": \"Este necesar accesul la cameră\",\n  \"camera_access_needed_text\": \"Permiteți accesul la cameră pentru a face fotografia. Dacă accesul este blocat, activați camera din setările browserului, apoi încercați din nou.\",\n  \"dialog\": \"Dialog\"\n}\n","{\n  \"verified\": \"Проверено\",\n  \"iv_status\": {\n    \"verified\": \"Проверено\",\n    \"pending\": \"В ожидании\",\n    \"attention\": \"Внимание\"\n  },\n  \"zoom_in\": \"Увеличить\",\n  \"zoom_out\": \"Уменьшить масштаб\",\n  \"rotate\": \"Повернуть\",\n  \"close\": \"Закрыть\",\n  \"esc_to_close\": \"Нажмите ESC, чтобы закрыть\",\n  \"play\": \"Играть\",\n  \"pause\": \"Пауза\",\n  \"mute\": \"Отключить звук\",\n  \"unmute\": \"Отключить\",\n  \"enter_full_screen\": \"Войти в полноэкранный режим\",\n  \"exit_full_screen\": \"Выход в полноэкранном режиме\",\n  \"video_not_supported\": \"Ваш браузер не поддерживает тег видео.\",\n  \"skip_forward\": \"Пропустить вперед\",\n  \"skip_backward\": \"Пропустить назад\",\n  \"loading\": \"Загрузка\",\n  \"loading_video\": \"Загрузка видео...\",\n  \"loading_data_description\": \"Пожалуйста, подождите, пока мы загрузим ваши данные. Это не займет много времени.\",\n  \"no_results\": \"Нет результатов\",\n  \"nothing_found\": \"Ничего не найдено\",\n  \"save_changes\": \"Сохранить изменения\",\n  \"saved_exclamation\": \"Спасен!\",\n  \"saving\": \"Экономия\",\n  \"validating\": \"Проверка\",\n  \"error\": \"Ошибка\",\n  \"optional\": \"Дополнительно\",\n  \"search_property\": \"Поиск недвижимости\",\n  \"reset_search\": \"Сброс поиска\",\n  \"no_items_to_show\": \"Нет предметов для показа\",\n  \"showing_range_of_total_items\": \"Показать {{range}} из {{total}} предметов\",\n  \"rows_per_page\": \"Строки на странице\",\n  \"page_of_pages\": \"Страница {{page}} из {{pages}}\",\n  \"go_to_first_page\": \"Перейти на первую страницу\",\n  \"go_to_previous_page\": \"Перейти на предыдущую страницу\",\n  \"go_to_next_page\": \"Перейти на следующую страницу\",\n  \"go_to_last_page\": \"Перейти на последнюю страницу\",\n  \"sort_in_asc\": \"Сортировка по возрастанию\",\n  \"sort_in_desc\": \"Сортировка по убыванию\",\n  \"sort_a_z\": \"Сортировка A → Z\",\n  \"sort_z_a\": \"Сортировка Z → A\",\n  \"clear_sorting\": \"Четкая сортировка\",\n  \"reach_us_at_email\": \"Обращайтесь за поддержкой по адресу support@chekin.com.\",\n  \"please_wait\": \"Пожалуйста, подождите\",\n  \"feature_coming_soon\": \"Скоро будет\",\n  \"feature_coming_soon_description\": \"Эта функция находится в стадии разработки и скоро будет доступна. Следите за обновлениями!\",\n  \"download_all\": \"Скачать все\",\n  \"entry_forms\": \"Бланки заявок\",\n  \"tutorial\": \"Учебное пособие\",\n  \"liveness_video\": \"Видеоролик Liveness\",\n  \"beta\": \"Бета\",\n  \"reviews\": \"Отзывы\",\n  \"learn_more\": \"Узнать больше\",\n  \"this_cannot_be_reverted\": \"Это нельзя изменить\",\n  \"delete\": \"Удалить\",\n  \"cancel\": \"Отмена\",\n  \"you_have_made_changes\": \"Вы внесли изменения\",\n  \"would_you_like_to_save_them\": \"Хотите спасти их?\",\n  \"save\": \"Сохранить\",\n  \"dont_save\": \"Не экономьте\",\n  \"copied_exclamation\": \"Скопировано!\",\n  \"search_placeholder\": \"Поиск...\",\n  \"type_to_search\": \"Введите для поиска...\",\n  \"loading_more\": \"Загрузка...\",\n  \"no_options\": \"Без вариантов\",\n  \"select_option\": \"Выберите вариант\",\n  \"clear_all\": \"Очистить все\",\n  \"remove_item\": \"Удалите {{label}}\",\n  \"upload_file\": \"Загрузить файл\",\n  \"download_attachment\": \"Загрузить вложение\",\n  \"remove_file\": \"Удалить файл\",\n  \"open_calendar\": \"Открытый календарь\",\n  \"clear_dates\": \"Четкие даты\",\n  \"select_dates\": \"Выберите даты\",\n  \"pick_date_range\": \"Выберите диапазон дат\",\n  \"from\": \"С сайта\",\n  \"to\": \"На\",\n  \"pick_month\": \"Выберите месяц\",\n  \"pick_date\": \"Выберите дату\",\n  \"month\": \"Месяц\",\n  \"day\": \"День\",\n  \"year\": \"Год\",\n  \"done\": \"Готово\",\n  \"wrong_period_of_dates\": \"Выбранный период недействителен\",\n  \"date_range_max_days_error_one\": \"Диапазон не может превышать {{count}} дня\",\n  \"date_range_max_days_error_other\": \"Диапазон не может превышать {{count}} дней\",\n  \"date_range_min_days_error_one\": \"Диапазон должен быть не менее {{count}} дня\",\n  \"date_range_min_days_error_other\": \"Диапазон должен составлять не менее {{count}} дней\",\n  \"past_dates\": \"Дата не может быть раньше {{minDate}}\",\n  \"future_dates\": \"Дата не может быть после {{maxDate}}\",\n  \"signature_placeholder_text\": \"Распишитесь в этом поле.<br/> Используйте палец.<br/> Нажмите, чтобы начать.\",\n  \"open_devices_camera\": \"Откройте камеру устройства\",\n  \"place_document_inside_frame\": \"Поместите документ в рамку\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Закройте другие приложения, которые могут использовать вашу камеру\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Если вы используете внешнюю камеру, отсоедините и снова подсоедините ее\",\n  \"close_the_browser_re_open_it\": \"Закройте браузер и откройте его снова\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Испытываете проблемы с камерой?\",\n    \"chekin_cant_use_your_camera\": \"Чекин не может пользоваться вашей камерой\",\n    \"please_try_a_different_browser\": \"Ваша камера не работает в этом браузере. Пожалуйста, попробуйте открыть ссылку в другом браузере.\",\n    \"permissions_denied\": \"Разрешение отклонено\",\n    \"camera_permissions_denied\": \"Камера не открывается? Убедитесь, что разрешили браузеру использовать камеру.\",\n    \"no_camera_device_found\": \"Устройство камеры не найдено. Пожалуйста, подключите камеру.\",\n    \"constraints_camera_error\": \"Ограничения не могут быть удовлетворены имеющимися устройствами.\",\n    \"safari_camera_error\": \"Safari не смогла удовлетворить требования камеры\",\n    \"try_chrome_or_firefox\": \"Пожалуйста, попробуйте Chrome или Firefox\"\n  },\n  \"clear\": \"Очистить\",\n  \"show_less\": \"Показать меньше\",\n  \"show_more\": \"Показать еще\",\n  \"tap_here_to_sign\": \"Нажмите здесь, чтобы подписать\",\n  \"click_here_to_sign\": \"Нажмите здесь, чтобы подписать\",\n  \"prefix\": \"Префикс\",\n  \"prefix_required\": \"Префикс обязателен\",\n  \"reset\": \"Сброс\",\n  \"show_password\": \"Показать пароль\",\n  \"hide_password\": \"Скрыть пароль\",\n  \"increment\": \"Инкремент\",\n  \"decrement\": \"Уменьшение\",\n  \"create_option\": \"Создайте \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"Год должен быть между {{min}} и {{max}}\",\n  \"clear_date\": \"Четкая дата\",\n  \"select_date\": \"Выберите дату\",\n  \"draw_signature_here\": \"Поставьте здесь свою подпись\",\n  \"signature_hint\": \"Используйте мышь или палец\",\n  \"clear_signature\": \"Четкая подпись\",\n  \"draw_signature_here_mobile\": \"Нарисуйте свою подпись\",\n  \"signature_hint_mobile\": \"Используйте палец\",\n  \"camera_access_needed\": \"Требуется доступ к камере\",\n  \"camera_access_needed_text\": \"Разрешите камере доступ для съемки фотографии. Если доступ заблокирован, включите камеру в настройках браузера, а затем попробуйте ещё раз.\",\n  \"dialog\": \"Диалог\"\n}\n","{\n  \"verified\": \"Перевірено\",\n  \"iv_status\": {\n    \"verified\": \"Перевірено\",\n    \"pending\": \"На розгляді\",\n    \"attention\": \"Увага!\"\n  },\n  \"zoom_in\": \"Збільшити\",\n  \"zoom_out\": \"Зменшити\",\n  \"rotate\": \"Поворот\",\n  \"close\": \"Закрити\",\n  \"esc_to_close\": \"Натисніть ESC, щоб закрити\",\n  \"play\": \"Грай.\",\n  \"pause\": \"Пауза.\",\n  \"mute\": \"Вимкнути звук.\",\n  \"unmute\": \"Увімкнути звук.\",\n  \"enter_full_screen\": \"Увімкнути на весь екран\",\n  \"exit_full_screen\": \"Вийти на весь екран\",\n  \"video_not_supported\": \"Ваш браузер не підтримує тег video.\",\n  \"skip_forward\": \"Перемотати вперед\",\n  \"skip_backward\": \"Пропустити назад\",\n  \"loading\": \"Завантаження\",\n  \"loading_video\": \"Завантаження відео...\",\n  \"loading_data_description\": \"Зачекайте, будь ласка, поки ми завантажимо ваші дані. Це не займе багато часу.\",\n  \"no_results\": \"Немає результатів\",\n  \"nothing_found\": \"Нічого не знайдено.\",\n  \"save_changes\": \"Зберегти зміни\",\n  \"saved_exclamation\": \"Врятовано!\",\n  \"saving\": \"Заощадження\",\n  \"validating\": \"Перевірка\",\n  \"error\": \"Помилка.\",\n  \"optional\": \"Необов'язково\",\n  \"search_property\": \"Пошук нерухомості\",\n  \"reset_search\": \"Скинути пошук\",\n  \"no_items_to_show\": \"Немає товарів для показу\",\n  \"showing_range_of_total_items\": \"Показати {{range}} з {{total}} предметів\",\n  \"rows_per_page\": \"Рядки на сторінці\",\n  \"page_of_pages\": \"Сторінка __ВЛАСНИКА_0__ у __ВЛАСНИКА_1__\",\n  \"go_to_first_page\": \"Перейти на першу сторінку\",\n  \"go_to_previous_page\": \"Перейти на попередню сторінку\",\n  \"go_to_next_page\": \"Перейти на наступну сторінку\",\n  \"go_to_last_page\": \"Перейти на попередню сторінку\",\n  \"sort_in_asc\": \"Сортування за зростанням\",\n  \"sort_in_desc\": \"Сортування за спаданням\",\n  \"sort_a_z\": \"Сортування A → Z\",\n  \"sort_z_a\": \"Сортування Z → A\",\n  \"clear_sorting\": \"Чітке сортування\",\n  \"reach_us_at_email\": \"Зверніться до служби підтримки за адресою support@chekin.com\",\n  \"please_wait\": \"Будь ласка, зачекайте.\",\n  \"feature_coming_soon\": \"Незабаром\",\n  \"feature_coming_soon_description\": \"Ця функція наразі знаходиться в розробці і буде доступна найближчим часом. Слідкуйте за оновленнями!\",\n  \"download_all\": \"Завантажити все\",\n  \"entry_forms\": \"Заявки на участь у конкурсі\",\n  \"tutorial\": \"Навчальний посібник\",\n  \"liveness_video\": \"Відео в прямому ефірі\",\n  \"beta\": \"Бета\",\n  \"reviews\": \"Відгуки\",\n  \"learn_more\": \"Дізнайтеся більше\",\n  \"this_cannot_be_reverted\": \"Це не можна повернути назад\",\n  \"delete\": \"Видалити\",\n  \"cancel\": \"Скасувати\",\n  \"you_have_made_changes\": \"Ви внесли зміни\",\n  \"would_you_like_to_save_them\": \"Хочете їх врятувати?\",\n  \"save\": \"Зберегти\",\n  \"dont_save\": \"Не заощаджуй\",\n  \"copied_exclamation\": \"Зрозумів!\",\n  \"search_placeholder\": \"Обшук...\",\n  \"type_to_search\": \"Введіть для пошуку...\",\n  \"loading_more\": \"Завантаження...\",\n  \"no_options\": \"Без варіантів\",\n  \"select_option\": \"Виберіть варіант\",\n  \"clear_all\": \"Зачистити все.\",\n  \"remove_item\": \"Видалити {{label}}\",\n  \"upload_file\": \"Завантажити файл\",\n  \"download_attachment\": \"Завантажте вкладення\",\n  \"remove_file\": \"Видалити файл\",\n  \"open_calendar\": \"Відкритий календар\",\n  \"clear_dates\": \"Чіткі дати\",\n  \"select_dates\": \"Виберіть дати\",\n  \"pick_date_range\": \"Виберіть діапазон дат\",\n  \"from\": \"Від\",\n  \"to\": \"До\",\n  \"pick_month\": \"Вибери місяць.\",\n  \"pick_date\": \"Виберіть дату.\",\n  \"month\": \"Місяць\",\n  \"day\": \"День\",\n  \"year\": \"Рік\",\n  \"done\": \"Зроблено.\",\n  \"wrong_period_of_dates\": \"Обраний період є недійсним\",\n  \"date_range_max_days_error_one\": \"Термін не може перевищувати {{count}} днів\",\n  \"date_range_max_days_error_other\": \"Діапазон не може перевищувати {{count}} днів\",\n  \"date_range_min_days_error_one\": \"Термін дії повинен бути не менше {{count}} днів\",\n  \"date_range_min_days_error_other\": \"Термін дії повинен бути не менше {{count}} днів\",\n  \"past_dates\": \"Дата не може бути раніше {{minDate}}.\",\n  \"future_dates\": \"Дата не може бути після {{maxDate}}.\",\n  \"signature_placeholder_text\": \"Підпишіться в цьому полі.<br/> Використовуйте палець.<br/> Торкніться, щоб почати.\",\n  \"open_devices_camera\": \"Відкрийте камеру пристрою\",\n  \"place_document_inside_frame\": \"Помістіть документ у фрейм\",\n  \"close_other_application_that_may_be_using_your_camera\": \"Закрийте інші програми, які можуть використовувати камеру\",\n  \"if_you_use_external_camera_disconnect_and_reconnect\": \"Якщо ви використовуєте зовнішню камеру, від'єднайте та знову під'єднайте її\",\n  \"close_the_browser_re_open_it\": \"Закрийте браузер і відкрийте його знову\",\n  \"camera_errors\": {\n    \"experiencing_camera_issues\": \"Виникають проблеми з камерою?\",\n    \"chekin_cant_use_your_camera\": \"Чекін не може користуватися твоєю камерою\",\n    \"please_try_a_different_browser\": \"Ваша камера не працює в цьому браузері. Будь ласка, спробуйте відкрити посилання в іншому браузері.\",\n    \"permissions_denied\": \"У дозволі відмовлено\",\n    \"camera_permissions_denied\": \"Камера не відкривається? Переконайтеся, що браузер має дозвіл на використання камери.\",\n    \"no_camera_device_found\": \"Пристрій не знайдено. Будь ласка, підключіть камеру.\",\n    \"constraints_camera_error\": \"Обмеження не можуть бути задоволені наявними пристроями.\",\n    \"safari_camera_error\": \"Safari не міг задовольнити вимоги до камери\",\n    \"try_chrome_or_firefox\": \"Будь ласка, спробуйте Chrome або Firefox\"\n  },\n  \"clear\": \"Чисто\",\n  \"show_less\": \"Показати менше\",\n  \"show_more\": \"Показати більше\",\n  \"tap_here_to_sign\": \"Натисніть тут, щоб підписати\",\n  \"click_here_to_sign\": \"Натисніть тут, щоб підписати\",\n  \"prefix\": \"Префікс\",\n  \"prefix_required\": \"Префікс обов'язковий\",\n  \"reset\": \"Перезавантаження\",\n  \"show_password\": \"Показати пароль\",\n  \"hide_password\": \"Приховати пароль\",\n  \"increment\": \"Приріст\",\n  \"decrement\": \"Декрет\",\n  \"create_option\": \"Створіть \\\"{{input}}\\\"\",\n  \"year_out_of_range\": \"Рік повинен бути між {{min}} та {{max}}.\",\n  \"clear_date\": \"Очистити дату\",\n  \"select_date\": \"Виберіть дату\",\n  \"draw_signature_here\": \"Поставте тут свій підпис\",\n  \"signature_hint\": \"Користуйтеся мишкою або пальцем\",\n  \"clear_signature\": \"Чіткий підпис\",\n  \"draw_signature_here_mobile\": \"Намалюйте свій підпис\",\n  \"signature_hint_mobile\": \"Використовуйте палець\",\n  \"camera_access_needed\": \"Потрібен доступ до камери\",\n  \"camera_access_needed_text\": \"Надайте камері доступ для зйомки фотографії. Якщо доступ заблоковано, увімкніть камеру в налаштуваннях браузера, а потім спробуйте ще раз.\",\n  \"dialog\": \"Діалог\"\n}\n","import type {i18n as I18nInstance} from 'i18next';\nimport bg from '../locales/bg/translation.json';\nimport ca from '../locales/ca/translation.json';\nimport cs from '../locales/cs/translation.json';\nimport de from '../locales/de/translation.json';\nimport el from '../locales/el/translation.json';\nimport en from '../locales/en/translation.json';\nimport es from '../locales/es/translation.json';\nimport et from '../locales/et/translation.json';\nimport fr from '../locales/fr/translation.json';\nimport hu from '../locales/hu/translation.json';\nimport it from '../locales/it/translation.json';\nimport ko from '../locales/ko/translation.json';\nimport nl from '../locales/nl/translation.json';\nimport pl from '../locales/pl/translation.json';\nimport pt from '../locales/pt/translation.json';\nimport ro from '../locales/ro/translation.json';\nimport ru from '../locales/ru/translation.json';\nimport uk from '../locales/uk/translation.json';\n\nexport const uiKitTranslations = {\n  en,\n  es,\n  it,\n  de,\n  fr,\n  nl,\n  ko,\n  hu,\n  ru,\n  cs,\n  bg,\n  pt,\n  ro,\n  et,\n  pl,\n  ca,\n  el,\n  uk,\n} as const;\n\nexport const uiKitI18nResources = {\n  en: {translation: en},\n  es: {translation: es},\n  it: {translation: it},\n  de: {translation: de},\n  fr: {translation: fr},\n  nl: {translation: nl},\n  ko: {translation: ko},\n  hu: {translation: hu},\n  ru: {translation: ru},\n  cs: {translation: cs},\n  bg: {translation: bg},\n  pt: {translation: pt},\n  ro: {translation: ro},\n  et: {translation: et},\n  pl: {translation: pl},\n  ca: {translation: ca},\n  el: {translation: el},\n  uk: {translation: uk},\n} as const;\n\nexport type UiKitLocale = keyof typeof uiKitTranslations;\n\nexport const UI_KIT_I18N_NAMESPACE = 'translation';\n\nexport const UI_KIT_LANGUAGE_FALLBACKS: Partial<Record<UiKitLocale, UiKitLocale>> = {\n  ca: 'es',\n};\n\nexport interface RegisterUiKitI18nOptions {\n  /**\n   * i18next namespace to register the ui-kit keys under. Defaults to `translation`,\n   * which matches what `useTranslation()` resolves to inside the ui-kit components.\n   */\n  namespace?: string;\n  /**\n   * When true, ui-kit keys overwrite existing consumer keys with the same name.\n   * Defaults to `false` so consumer translations always win on a collision.\n   */\n  overwrite?: boolean;\n}\n\n/**\n * Register ui-kit translations on the consumer's i18next instance. Call once,\n * after `i18n.init(...)`, so components like Button/Pagination/Section can\n * resolve their built-in keys (`please_wait`, `loading`, `error`, ...).\n *\n * Uses deep-merge so consumer keys in the same namespace are preserved.\n */\nexport function registerUiKitI18n(\n  i18n: I18nInstance,\n  options: RegisterUiKitI18nOptions = {},\n): void {\n  const namespace = options.namespace ?? UI_KIT_I18N_NAMESPACE;\n  const overwrite = options.overwrite ?? false;\n\n  for (const [lng, bundle] of Object.entries(uiKitTranslations)) {\n    const fallback = UI_KIT_LANGUAGE_FALLBACKS[lng as UiKitLocale];\n    const effectiveBundle =\n      fallback && Object.keys(bundle).length === 0 ? uiKitTranslations[fallback] : bundle;\n\n    i18n.addResourceBundle(lng, namespace, effectiveBundle, true, overwrite);\n  }\n}\n","import type {ReactNode} from 'react';\nimport {X} from 'lucide-react';\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from '../dialog';\nimport {\n  Drawer,\n  DrawerContent,\n  DrawerDescription,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerTitle,\n} from '../drawer';\nimport {useScreenResize} from '../hooks';\nimport {DEVICE} from '../lib/device';\nimport {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\nimport {isMobileModalModeAvailable} from '../lib/runtimeSettings';\n\nexport type LargeModalProps = {\n  open?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  header?: string | ReactNode;\n  subHeader?: string | ReactNode;\n  children?: ReactNode;\n  footer?: ReactNode;\n  screenReaderText?: string;\n  withCloseButton?: boolean;\n  closeOnDocumentClick?: boolean;\n  closeOnEscape?: boolean;\n  container?: HTMLElement;\n  className?: string;\n  drawerClassName?: string;\n  drawerHeaderClassName?: string;\n  drawerTitleClassName?: string;\n  allowContentOverflow?: boolean;\n  showDrawerHandle?: boolean;\n  disableDrag?: boolean;\n};\n\nexport function LargeModal({\n  open,\n  onOpenChange,\n  children,\n  header,\n  subHeader,\n  screenReaderText,\n  className,\n  drawerClassName,\n  drawerHeaderClassName,\n  drawerTitleClassName,\n  footer,\n  container,\n  withCloseButton = true,\n  closeOnDocumentClick = true,\n  closeOnEscape = true,\n  allowContentOverflow = false,\n  showDrawerHandle = true,\n  disableDrag = false,\n}: LargeModalProps) {\n  const portalContainer = container ?? getCustomContainer();\n  const {isMatch: isMobile} = useScreenResize(DEVICE.tablet);\n  const isMobileMode = isMobile && isMobileModalModeAvailable();\n\n  if (isMobileMode) {\n    return (\n      <Drawer open={open} onOpenChange={onOpenChange}>\n        <DrawerContent\n          onClose={() => onOpenChange?.(false)}\n          showHandle={showDrawerHandle}\n          closeOnOverlayClick={closeOnDocumentClick}\n          disableDrag={disableDrag}\n          container={portalContainer || undefined}\n          lockScroll={!portalContainer}\n          onEscapeKeyDown={event => {\n            if (!closeOnEscape) {\n              event.preventDefault();\n              event.stopPropagation();\n            }\n          }}\n          className={cn('bg-[var(--chekin-color-white)]', className, drawerClassName)}\n        >\n          <DrawerHeader\n            className={cn(\n              'sticky top-0 z-10 flex-shrink-0 flex-row items-center justify-between border-b border-[var(--chekin-border-default)] bg-[var(--chekin-color-white)] px-6 pb-4 text-left',\n              drawerHeaderClassName,\n            )}\n          >\n            <div>\n              <DrawerTitle\n                className={cn(\n                  'text-lg font-semibold text-[var(--chekin-color-brand-navy)]',\n                  drawerTitleClassName,\n                )}\n              >\n                {header}\n              </DrawerTitle>\n              {subHeader && <div>{subHeader}</div>}\n            </div>\n            {!showDrawerHandle && withCloseButton && (\n              <button\n                type=\"button\"\n                onClick={() => onOpenChange?.(false)}\n                className=\"rounded-full p-1 text-[var(--chekin-color-brand-navy)] hover:bg-[var(--chekin-color-surface-input-empty)]\"\n                aria-label=\"Close\"\n              >\n                <X className=\"h-5 w-5\" />\n              </button>\n            )}\n            <DrawerDescription className=\"sr-only\">{screenReaderText}</DrawerDescription>\n          </DrawerHeader>\n          <div className=\"min-h-0 flex-1 space-y-6 overflow-y-auto px-6 py-6\">\n            {children}\n          </div>\n          {footer && <DrawerFooter className=\"p-4\">{footer}</DrawerFooter>}\n        </DrawerContent>\n      </Drawer>\n    );\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange}>\n      <DialogContent\n        showCloseButton={false}\n        className={cn(\n          'flex max-w-[calc(100%-2rem)] flex-col border-none p-0 sm:max-w-[calc(100%-2rem)] lg:max-w-4xl',\n          !allowContentOverflow && 'max-h-[90vh]',\n          className,\n        )}\n        container={portalContainer}\n        lockScroll={!portalContainer}\n        onEscapeKeyDown={event => {\n          if (!closeOnEscape) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        }}\n        onPointerDownOutside={event => {\n          if (!closeOnDocumentClick) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        }}\n      >\n        <DialogHeader className=\"flex-shrink-0 flex-row items-center justify-between rounded-t-2xl border-b border-[var(--chekin-border-default)] bg-[var(--chekin-color-white)] p-6\">\n          <div>\n            <DialogTitle className=\"text-lg font-semibold text-[var(--chekin-color-brand-navy)]\">\n              {header}\n            </DialogTitle>\n            {subHeader && <div>{subHeader}</div>}\n          </div>\n          {withCloseButton && (\n            <button\n              type=\"button\"\n              onClick={() => onOpenChange?.(false)}\n              className=\"rounded-full p-1 text-[var(--chekin-color-brand-navy)] hover:bg-[var(--chekin-color-surface-input-empty)]\"\n              aria-label=\"Close\"\n            >\n              <X className=\"h-5 w-5\" />\n            </button>\n          )}\n          <DialogDescription className=\"sr-only\">{screenReaderText}</DialogDescription>\n        </DialogHeader>\n        <div\n          className={cn(\n            'min-h-0 flex-1 space-y-6 px-6 py-6',\n            allowContentOverflow ? 'overflow-visible' : 'overflow-y-auto',\n          )}\n        >\n          {children}\n        </div>\n        {footer && <DialogFooter className=\"p-4\">{footer}</DialogFooter>}\n      </DialogContent>\n    </Dialog>\n  );\n}\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport Draggable, {type DraggableData, type DraggableEvent} from 'react-draggable';\nimport {getCustomContainer} from '../lib/utils';\nimport {cn} from '../lib/cn';\n\nconst DRAWER_CLOSE_THRESHOLD = 72;\nconst DRAWER_MIN_OVERLAY_OPACITY = 0.1;\n\nfunction Drawer({...props}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({...props}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({...props}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({...props}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nconst DrawerOverlayClasses =\n  'fixed inset-0 z-50 bg-black/50 [animation-timing-function:cubic-bezier(0.32,0.72,0,1)] data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-500 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-500';\n\nconst DrawerOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({className, ...props}, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    data-slot=\"drawer-overlay\"\n    className={cn(DrawerOverlayClasses, className)}\n    {...props}\n  />\n));\nDrawerOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nfunction DrawerOffsetReset({onReset}: {onReset: () => void}) {\n  React.useLayoutEffect(() => {\n    onReset();\n  }, [onReset]);\n  return null;\n}\n\nconst DrawerContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n    container?: HTMLElement;\n    onClose?: () => void;\n    showHandle?: boolean;\n    closeOnOverlayClick?: boolean;\n    lockScroll?: boolean;\n    disableDrag?: boolean;\n  }\n>(\n  (\n    {\n      className,\n      children,\n      container,\n      onClose,\n      showHandle = true,\n      closeOnOverlayClick = true,\n      lockScroll: _lockScroll = true,\n      disableDrag = false,\n      ...props\n    },\n    ref,\n  ) => {\n    const finalContainer = container || getCustomContainer() || undefined;\n    const nodeRef = React.useRef<HTMLDivElement>(null);\n    const [dragOffsetY, setDragOffsetY] = React.useState(0);\n    const [snapBack, setSnapBack] = React.useState(false);\n    const overlayOpacity = Math.max(\n      DRAWER_MIN_OVERLAY_OPACITY,\n      1 - dragOffsetY / (DRAWER_CLOSE_THRESHOLD * 2),\n    );\n\n    const resetOffset = React.useCallback(() => {\n      setSnapBack(false);\n      setDragOffsetY(0);\n    }, []);\n\n    const handleStart = React.useCallback(() => {\n      setSnapBack(false);\n    }, []);\n\n    const handleDrag = React.useCallback(\n      (_event: DraggableEvent, data: DraggableData) => {\n        setDragOffsetY(Math.max(0, data.y));\n      },\n      [],\n    );\n\n    const handleStop = React.useCallback(\n      (_event: DraggableEvent, data: DraggableData) => {\n        if (data.y > DRAWER_CLOSE_THRESHOLD) {\n          setSnapBack(false);\n          onClose?.();\n          return;\n        }\n        setSnapBack(true);\n        setDragOffsetY(0);\n      },\n      [onClose],\n    );\n\n    return (\n      <DrawerPortal container={finalContainer}>\n        <DrawerOverlay\n          className={\n            snapBack\n              ? 'transition-opacity duration-500 [transition-timing-function:cubic-bezier(0.32,0.72,0,1)]'\n              : undefined\n          }\n          style={{opacity: overlayOpacity}}\n          onClick={closeOnOverlayClick ? onClose : undefined}\n        />\n        <DialogPrimitive.Content\n          asChild\n          ref={ref}\n          onPointerDownOutside={event => {\n            if (!closeOnOverlayClick) {\n              event.preventDefault();\n            }\n          }}\n          onInteractOutside={event => {\n            if (!closeOnOverlayClick) {\n              event.preventDefault();\n            }\n          }}\n          {...props}\n        >\n          <div\n            className={cn(\n              'fixed inset-x-0 bottom-0 top-auto z-50 outline-none',\n              '[animation-timing-function:cubic-bezier(0.32,0.72,0,1)]',\n              'data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom data-[state=open]:duration-500',\n              'data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=closed]:duration-500',\n            )}\n          >\n            <DrawerOffsetReset onReset={resetOffset} />\n            <Draggable\n              axis=\"y\"\n              bounds={{top: 0}}\n              handle=\"[data-drawer-handle]\"\n              nodeRef={nodeRef}\n              disabled={disableDrag}\n              onStart={handleStart}\n              onDrag={handleDrag}\n              onStop={handleStop}\n              position={{x: 0, y: dragOffsetY}}\n            >\n              <div\n                ref={nodeRef}\n                className={cn(\n                  'bg-[var(--modal-background)] flex h-[var(--chekin-drawer-height,auto)] max-h-[var(--chekin-drawer-max-height,calc(100vh-1rem))] w-full flex-col rounded-t-[32px] shadow-lg',\n                  snapBack &&\n                    'transition-transform duration-500 [transition-timing-function:cubic-bezier(0.32,0.72,0,1)]',\n                  className,\n                )}\n              >\n                {showHandle && (\n                  <div\n                    data-drawer-handle\n                    className={cn(\n                      'mx-auto flex h-8 w-24 touch-none items-center justify-center',\n                      disableDrag\n                        ? 'cursor-default'\n                        : 'cursor-grab active:cursor-grabbing',\n                    )}\n                  >\n                    <span className=\"block h-1.5 w-12 rounded-full bg-[#D9D7D3]\" />\n                  </div>\n                )}\n                <div className=\"min-h-0 flex-1 overflow-y-auto\">{children}</div>\n              </div>\n            </Draggable>\n          </div>\n        </DialogPrimitive.Content>\n      </DrawerPortal>\n    );\n  },\n);\nDrawerContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DrawerHeader = ({className, ...props}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn('flex flex-col gap-2 px-5 pt-2 text-center', className)}\n    {...props}\n  />\n);\nDrawerHeader.displayName = 'DrawerHeader';\n\nconst DrawerFooter = ({className, ...props}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col gap-2 p-5', className)} {...props} />\n);\nDrawerFooter.displayName = 'DrawerFooter';\n\nconst DrawerTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({className, ...props}, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    data-slot=\"drawer-title\"\n    className={cn('text-lg font-semibold leading-none', className)}\n    {...props}\n  />\n));\nDrawerTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DrawerDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({className, ...props}, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    data-slot=\"drawer-description\"\n    className={cn('text-muted-foreground text-sm', className)}\n    {...props}\n  />\n));\nDrawerDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n  Drawer,\n  DrawerTrigger,\n  DrawerPortal,\n  DrawerClose,\n  DrawerOverlay,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n};\n","export const DEVICE = {\n  mobileS: '320px',\n  mobileM: '375px',\n  mobileL: '425px',\n  mobileXL: '479px',\n  tablet: '768px',\n  laptop: '1025px',\n  laptopM: '1126px',\n  laptopML: '1300px',\n  laptopL: '1440px',\n  laptopXL: '1640px',\n  desktop: '2560px',\n};\n","import {BookOpenIcon} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {Button, type ButtonProps} from '../button';\n\nexport type LearnMoreButtonProps = Omit<ButtonProps, 'children'> & {\n  label?: string;\n};\n\nexport function LearnMoreButton({label, ...props}: LearnMoreButtonProps) {\n  const {t} = useTranslation();\n\n  return (\n    <Button variant=\"link\" {...props}>\n      <BookOpenIcon className=\"size-5 text-[var(--button-link-text)]\" />\n      {label || t('learn_more')}\n    </Button>\n  );\n}\n","import {type AnchorHTMLAttributes, forwardRef, memo} from 'react';\nimport {cn} from '../lib/cn';\n\nexport interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n  disabled?: boolean;\n}\n\nconst LinkInternal = forwardRef<HTMLAnchorElement, LinkProps>(\n  ({disabled = false, className, children, ...props}, ref) => (\n    <a\n      ref={ref}\n      className={cn(\n        'inline cursor-pointer text-[var(--link-text-color)] font-[var(--link-font-weight)] [text-decoration:var(--link-text-decoration)] transition-all duration-75 ease-in-out',\n        !disabled && 'hover:opacity-80 active:opacity-100',\n        disabled && 'cursor-not-allowed text-[var(--link-disabled-text-color)]',\n        '[&_img]:inline [&_img]:align-middle [&_svg]:relative [&_svg]:bottom-[1px] [&_svg]:ml-1 [&_svg]:inline [&_svg]:align-middle',\n        className,\n      )}\n      aria-disabled={disabled}\n      {...props}\n    >\n      {children}\n    </a>\n  ),\n);\n\nLinkInternal.displayName = 'Link';\n\nexport const Link = memo(LinkInternal);\n","import {useState} from 'react';\nimport {RotateCw, X, ZoomIn, ZoomOut} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {Button} from '../button';\nimport {Image} from '../image';\nimport {useClickEscape} from '../hooks';\n\nexport interface ImageFullScreenViewProps {\n  src: string;\n  alt: string;\n  onClose: () => void;\n}\n\nexport function ImageFullScreenView({src, alt, onClose}: ImageFullScreenViewProps) {\n  const {t} = useTranslation();\n  const [scale, setScale] = useState(1);\n  const [rotation, setRotation] = useState(0);\n\n  useClickEscape({onClick: onClose});\n\n  const zoomIn = () => setScale(value => Math.min(value + 0.25, 3));\n  const zoomOut = () => setScale(value => Math.max(value - 0.25, 0.5));\n  const rotate = () => setRotation(value => (value + 90) % 360);\n\n  return (\n    <div className=\"fixed inset-0 z-[300] flex flex-col items-center justify-center bg-black/90\">\n      <div className=\"absolute right-4 top-4 z-[301] flex gap-2\">\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={zoomIn}\n          className=\"rounded-full text-white hover:bg-white/20\"\n          aria-label={t('zoom_in')}\n        >\n          <ZoomIn className=\"h-6 w-6\" />\n        </Button>\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={zoomOut}\n          className=\"rounded-full text-white hover:bg-white/20\"\n          aria-label={t('zoom_out')}\n        >\n          <ZoomOut className=\"h-6 w-6\" />\n        </Button>\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={rotate}\n          className=\"rounded-full text-white hover:bg-white/20\"\n          aria-label={t('rotate')}\n        >\n          <RotateCw className=\"h-6 w-6\" />\n        </Button>\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={onClose}\n          className=\"rounded-full text-white hover:bg-white/20\"\n          aria-label={t('close')}\n        >\n          <X className=\"h-6 w-6\" />\n        </Button>\n      </div>\n\n      <div\n        className=\"flex h-full w-full cursor-move items-center justify-center overflow-hidden\"\n        onClick={event => {\n          if (event.target === event.currentTarget) {\n            onClose();\n          }\n        }}\n      >\n        <div\n          style={{\n            transform: `scale(${scale}) rotate(${rotation}deg)`,\n            transition: 'transform 0.2s ease-in-out',\n          }}\n          className=\"max-h-[90%] max-w-[90%]\"\n        >\n          <Image\n            src={src || ''}\n            alt={alt}\n            className=\"max-h-full max-w-full object-contain\"\n            width={1200}\n            height={800}\n          />\n        </div>\n      </div>\n\n      <div className=\"absolute bottom-4 left-0 right-0 text-center text-sm text-white/70\">\n        <p>{t('esc_to_close')}</p>\n      </div>\n    </div>\n  );\n}\n","import {type ImgHTMLAttributes, type ReactNode, forwardRef, useRef} from 'react';\nimport {X} from 'lucide-react';\nimport {Button, type ButtonProps} from '../button';\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogTitle,\n  DialogVisuallyHidden,\n} from '../dialog';\nimport {cn} from '../lib/cn';\nimport {useScrollFrameIntoView} from '../hooks';\n\ntype Text = {\n  title?: string | ReactNode;\n  text?: string | ReactNode;\n};\n\ntype Icon = {\n  icon?: ReactNode;\n  iconSrc?: string;\n  iconAlt?: string;\n  iconProps?: ImgHTMLAttributes<HTMLImageElement>;\n  iconClassName?: string;\n};\n\ntype Buttons = {\n  buttons?: ReactNode;\n};\n\ntype Close = {\n  withCloseButton?: boolean;\n  closeOnDocumentClick?: boolean;\n  closeOnEscape?: boolean;\n};\n\ntype ModalSize = 'auto' | 'compact';\n\nexport type ModalProps = {\n  open?: boolean;\n  modal?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  onClose?: () => void;\n  children?: ReactNode;\n  className?: string;\n  lockScroll?: boolean;\n  scrollableOverlay?: boolean;\n  container?: HTMLElement;\n  overlayClassName?: string;\n  size?: ModalSize;\n} & Close &\n  Text &\n  Icon &\n  Buttons;\n\nconst preventDefault = (event: Event) => {\n  event.preventDefault();\n};\n\nfunction Modal({\n  open,\n  onOpenChange,\n  onClose,\n  children,\n  withCloseButton = true,\n  closeOnDocumentClick = false,\n  closeOnEscape = false,\n  scrollableOverlay,\n  className,\n  title,\n  text,\n  icon,\n  iconSrc,\n  iconAlt,\n  iconProps = {width: 84},\n  iconClassName,\n  buttons,\n  lockScroll = true,\n  container,\n  modal,\n  overlayClassName,\n  size = 'auto',\n}: ModalProps) {\n  const contentRef = useRef<HTMLDivElement>(null);\n\n  useScrollFrameIntoView(open, {elementRef: contentRef});\n\n  const handleClose = () => {\n    onOpenChange?.(false);\n    onClose?.();\n  };\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange} modal={modal}>\n      <DialogContent\n        ref={contentRef}\n        showCloseButton={false}\n        onPointerDownOutside={closeOnDocumentClick ? handleClose : preventDefault}\n        onEscapeKeyDown={closeOnEscape ? handleClose : preventDefault}\n        container={container}\n        overlayClassName={overlayClassName}\n        className={cn(\n          'modal__content',\n          'flex h-auto min-w-[340px] w-auto flex-col items-center gap-y-6 bg-[var(--chekin-color-white)] text-center text-[var(--chekin-color-brand-navy)]',\n          scrollableOverlay && 'min-h-0',\n          size === 'compact' && 'w-[360px] min-w-0',\n          className,\n        )}\n        lockScroll={lockScroll}\n        {...(!text && {'aria-describedby': undefined})}\n      >\n        {withCloseButton && (\n          <button\n            type=\"button\"\n            onClick={handleClose}\n            className={cn(\n              'modal__close',\n              'absolute right-4 top-4 z-10 rounded-full p-1 text-[var(--chekin-color-brand-blue)] hover:bg-[var(--chekin-neutral-50)]',\n            )}\n            aria-label=\"Close\"\n          >\n            <X className=\"h-5 w-5\" />\n          </button>\n        )}\n\n        {(icon || iconSrc || iconProps?.src) && (\n          <div className={cn('modal__icon mx-auto mt-4 select-none', iconClassName)}>\n            {icon ?? <img src={iconSrc} alt={iconAlt ?? ''} {...iconProps} />}\n          </div>\n        )}\n        {title ? (\n          <DialogTitle className={cn('modal__title', 'px-6 font-bold')}>\n            {title}\n          </DialogTitle>\n        ) : (\n          <DialogVisuallyHidden>\n            <DialogTitle>Dialog</DialogTitle>\n          </DialogVisuallyHidden>\n        )}\n        {text && (\n          <DialogDescription className={cn('modal__text', 'text-base')}>\n            {text}\n          </DialogDescription>\n        )}\n        {children}\n        {buttons && (\n          <div\n            className={cn(\n              'modal__buttons-wrapper',\n              'mb-2 mt-6 flex flex-col items-center justify-center gap-y-4',\n            )}\n          >\n            {buttons}\n          </div>\n        )}\n      </DialogContent>\n    </Dialog>\n  );\n}\n\nconst ModalButton = forwardRef<HTMLButtonElement, ButtonProps>(\n  ({children, size, className, ...props}, ref) => (\n    <Button\n      ref={ref}\n      className={cn('modal__button', 'min-w-[210px]', className)}\n      size={size && 'lg'}\n      {...props}\n    >\n      {children}\n    </Button>\n  ),\n);\n\nModalButton.displayName = 'ModalButton';\nModal.displayName = 'Modal';\n\nexport {Modal, ModalButton, type ModalSize};\n","import {memo} from 'react';\nimport {CircularLoader} from '../circular-loader';\nimport {cn} from '../lib/cn';\n\nexport interface ModalLoaderProps {\n  visible?: boolean;\n  className?: string;\n}\n\nexport const ModalLoader = memo(({visible, className}: ModalLoaderProps) => (\n  <div\n    className={cn(\n      'absolute left-0 top-0 !m-0 h-full w-full items-center justify-center rounded-2xl bg-[var(--chekin-color-white)] opacity-70',\n      visible ? 'flex' : 'hidden',\n      className,\n    )}\n  >\n    <div className=\"mb-[60px]\">\n      <CircularLoader size=\"lg\" className=\"[--circular-loader-color:#475569]\" />\n    </div>\n  </div>\n));\n\nModalLoader.displayName = 'ModalLoader';\n","import React from 'react';\nimport {cn} from '../lib/cn';\nimport type {MainLoaderProps} from './types';\nimport {toCssSize} from '../lib/utils';\n\nconst loaderSizePixels: Record<NonNullable<MainLoaderProps['size']>, number> = {\n  sm: 16,\n  md: 32,\n  lg: 48,\n  xl: 58,\n  '2xl': 72,\n};\n\nconst labelSizeClassName: Record<NonNullable<MainLoaderProps['size']>, string> = {\n  sm: 'text-xs',\n  md: 'text-sm',\n  lg: 'text-base',\n  xl: 'text-base',\n  '2xl': 'text-base',\n};\n\nconst CircularLoader = React.memo(\n  ({\n    visible = true,\n    size = 'md',\n    height,\n    width,\n    position,\n    label,\n    className,\n  }: MainLoaderProps) => {\n    if (!visible) return null;\n\n    return (\n      <div\n        className={cn(\n          'main-loader flex flex-col items-center justify-center gap-2 z-50',\n          position === 'center' && 'h-full',\n          className,\n        )}\n        role=\"progressbar\"\n      >\n        <svg\n          viewBox=\"25 25 50 50\"\n          className=\"main-loader__svg text-[var(--circular-loader-color)]\"\n          style={{\n            width: toCssSize(width ?? loaderSizePixels[size]),\n            height: toCssSize(height ?? width ?? loaderSizePixels[size]),\n          }}\n        >\n          <circle\n            r=\"20\"\n            cy=\"50\"\n            cx=\"50\"\n            className=\"cover fill-none stroke-current opacity-5\"\n            strokeWidth=\"7\"\n          />\n          <circle\n            r=\"20\"\n            cy=\"50\"\n            cx=\"50\"\n            className=\"circle fill-none stroke-current\"\n            strokeDasharray=\"1 200\"\n            strokeDashoffset=\"0\"\n            strokeLinecap=\"round\"\n            strokeWidth=\"7\"\n          >\n            <animateTransform\n              attributeName=\"transform\"\n              dur=\"2.25s\"\n              from=\"0 50 50\"\n              repeatCount=\"indefinite\"\n              to=\"360 50 50\"\n              type=\"rotate\"\n            />\n            <animate\n              attributeName=\"stroke-dasharray\"\n              calcMode=\"spline\"\n              dur=\"1.8s\"\n              keyTimes=\"0;0.5;1\"\n              keySplines=\"0.42 0 0.58 1;0.42 0 0.58 1\"\n              repeatCount=\"indefinite\"\n              values=\"1 200;90 200;90 200\"\n            />\n            <animate\n              attributeName=\"stroke-dashoffset\"\n              calcMode=\"spline\"\n              dur=\"1.8s\"\n              keyTimes=\"0;0.5;1\"\n              keySplines=\"0.42 0 0.58 1;0.42 0 0.58 1\"\n              repeatCount=\"indefinite\"\n              values=\"0;-35;-125\"\n            />\n          </circle>\n        </svg>\n        {label && (\n          <div\n            className={cn(\n              labelSizeClassName[size],\n              'font-medium text-[var(--circular-loader-label-color)]',\n            )}\n          >\n            {label}\n          </div>\n        )}\n      </div>\n    );\n  },\n);\n\nCircularLoader.displayName = 'CircularLoader';\n\nexport {CircularLoader};\n","import {Children, type ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\ntype NumberedListProps = {\n  children?: ReactNode;\n  className?: string;\n  itemClassName?: string;\n};\n\nconst NumberedList = ({children, className, itemClassName}: NumberedListProps) => {\n  const items = Array.isArray(children) ? Children.toArray(children) : [children];\n\n  return (\n    <ol\n      className={cn(\n        'm-0 flex w-full list-none flex-col gap-4 p-0 [counter-reset:item]',\n        className,\n      )}\n      type=\"1\"\n    >\n      {items.map((child, index) => (\n        <li\n          key={index}\n          className={cn(\n            'grid grid-cols-[1.5rem_1fr] items-start gap-2 [counter-increment:item]',\n            `before:relative before:flex before:h-6 before:w-6 before:-translate-y-0.5\n            before:items-center before:justify-center before:rounded-full\n            before:bg-[var(--numbered-list-marker-bg)] before:text-sm before:font-semibold before:leading-6\n            before:text-[var(--numbered-list-marker-text)] before:content-[counter(item)]`,\n            itemClassName,\n          )}\n        >\n          <div>{child}</div>\n        </li>\n      ))}\n    </ol>\n  );\n};\n\nexport {NumberedList};\nexport type {NumberedListProps};\n","import type {ReactNode} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {CircularLoader} from '../circular-loader';\nimport {cn} from '../lib/cn';\n\ntype OverlayLoaderSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface OverlayLoaderProps {\n  isLoading: boolean;\n  children: ReactNode;\n  label?: string;\n  loaderSize?: OverlayLoaderSize;\n  showText?: boolean;\n  className?: string;\n  overlayClassName?: string;\n}\n\nexport function OverlayLoader({\n  isLoading,\n  children,\n  label,\n  loaderSize = 'md',\n  showText = true,\n  className = '',\n  overlayClassName = '',\n}: OverlayLoaderProps) {\n  const {t} = useTranslation();\n  const resolvedLabel = label || t('loading');\n\n  return (\n    <div className={cn('relative', className)}>\n      {children}\n      {isLoading && (\n        <div\n          className={cn(\n            'absolute inset-0 flex items-center justify-center bg-[rgb(255_255_255_/_0.6)]',\n            overlayClassName,\n          )}\n        >\n          <CircularLoader\n            size={loaderSize}\n            label={showText ? resolvedLabel : undefined}\n            className=\"[--circular-loader-color:#4f46e5]\"\n          />\n        </div>\n      )}\n    </div>\n  );\n}\n","import {useTranslation} from 'react-i18next';\nimport {ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\nimport {LegacySelect, LegacySelectItem} from '../legacy-fields/select';\n\nexport type PaginationVariant = 'default' | 'simple';\n\nexport type PaginationProps = {\n  variant?: PaginationVariant;\n  onPageChange: (page: number) => void;\n  onPageSizeChange: (size: number) => void;\n  pages: number;\n  showPageSizeSelector?: boolean;\n  page: number;\n  pageSize?: number;\n  totalItems?: number;\n  className?: string;\n};\n\nconst pageSizeOptions = [10, 20, 25, 30, 40, 50];\n\nexport function Pagination({\n  page,\n  pages,\n  showPageSizeSelector = true,\n  variant = 'default',\n  onPageChange,\n  pageSize = 20,\n  onPageSizeChange,\n  totalItems = 0,\n  className,\n}: PaginationProps) {\n  const {t} = useTranslation();\n  const isSimpleVariant = variant === 'simple';\n\n  const startItem = totalItems === 0 ? 0 : (page - 1) * pageSize + 1;\n  const endItem = Math.min(page * pageSize, totalItems);\n\n  const goToFirstPage = () => onPageChange(1);\n  const goToPreviousPage = () => onPageChange(Math.max(1, page - 1));\n  const goToNextPage = () => onPageChange(Math.min(pages, page + 1));\n  const goToLastPage = () => onPageChange(pages);\n\n  const canGoPrevious = page > 1;\n  const canGoNext = page < pages;\n  const shouldShowPagination = pages > 1;\n\n  const getInfoText = (): string => {\n    if (isSimpleVariant) {\n      return t('page_of_pages', {page, pages});\n    }\n\n    if (totalItems === 0) {\n      return t('no_items_to_show');\n    }\n\n    return t('showing_range_of_total_items', {\n      range: `${startItem}-${endItem}`,\n      total: totalItems,\n    });\n  };\n\n  if (totalItems === 0 || !shouldShowPagination) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        'flex flex-col items-center justify-between gap-x-8 gap-y-1 px-2 sm:flex-row',\n        className,\n      )}\n    >\n      <div className=\"mr-auto flex-1 self-start font-medium text-[var(--chekin-color-gray-1)] sm:self-center\">\n        {getInfoText()}\n      </div>\n      <div className=\"ml-auto flex w-full items-center gap-8 sm:w-fit\">\n        {!isSimpleVariant && showPageSizeSelector && (\n          <div className=\"hidden items-center gap-2 sm:flex\">\n            <p className=\"font-medium text-[var(--chekin-color-gray-1)]\">\n              {t('rows_per_page')}\n            </p>\n            <LegacySelect\n              value={pageSize.toString()}\n              onValueChange={value => onPageSizeChange(parseInt(value, 10))}\n              triggerClassName=\"h-8 w-[67px]\"\n              containerClassName=\"w-[67px] gap-0\"\n            >\n              {pageSizeOptions.map(size => (\n                <LegacySelectItem key={size} value={size.toString()}>\n                  {size}\n                </LegacySelectItem>\n              ))}\n            </LegacySelect>\n          </div>\n        )}\n        {!isSimpleVariant && (\n          <div className=\"flex w-fit items-center justify-center font-medium\">\n            {t('page_of_pages', {page, pages})}\n          </div>\n        )}\n        <div className=\"ml-auto flex items-center gap-2 sm:ml-0\">\n          {!isSimpleVariant && (\n            <Button\n              variant=\"outline\"\n              size=\"icon\"\n              className=\"hidden size-8 lg:flex\"\n              onClick={goToFirstPage}\n              disabled={!canGoPrevious}\n            >\n              <span className=\"sr-only hidden\">{t('go_to_first_page')}</span>\n              <ChevronsLeft />\n            </Button>\n          )}\n          <Button\n            variant={isSimpleVariant ? 'link' : 'outline'}\n            size=\"icon\"\n            className={cn('size-8', {\n              '!text-[var(--chekin-color-gray-1)]': isSimpleVariant,\n            })}\n            onClick={goToPreviousPage}\n            disabled={!canGoPrevious}\n          >\n            <span className=\"sr-only hidden\">{t('go_to_previous_page')}</span>\n            <ChevronLeft />\n          </Button>\n          <Button\n            variant={isSimpleVariant ? 'link' : 'outline'}\n            size=\"icon\"\n            className={cn('size-8', {\n              '!text-[var(--chekin-color-gray-1)]': isSimpleVariant,\n            })}\n            onClick={goToNextPage}\n            disabled={!canGoNext}\n          >\n            <span className=\"sr-only hidden\">{t('go_to_next_page')}</span>\n            <ChevronRight />\n          </Button>\n          {!isSimpleVariant && (\n            <Button\n              variant=\"outline\"\n              size=\"icon\"\n              className=\"hidden size-8 lg:flex\"\n              onClick={goToLastPage}\n              disabled={!canGoNext}\n            >\n              <span className=\"sr-only hidden\">{t('go_to_last_page')}</span>\n              <ChevronsRight />\n            </Button>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n}\n","import {forwardRef, type ReactNode, type Ref, useId, useState} from 'react';\nimport {cn} from '../../lib/cn';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {\n  LegacySelectContent,\n  LegacySelectItem,\n  LegacySelectRoot,\n  LegacySelectTrigger,\n  LegacySelectValue,\n  type LegacySelectSize,\n} from './components';\n\nexport type LegacySelectProps<\n  D = unknown,\n  V extends string | number = string,\n  L extends ReactNode = string,\n> = {\n  placeholder?: string;\n  label?: string | ReactNode;\n  className?: string;\n  size?: LegacySelectSize;\n  options?: SelectOption<D, V, L>[];\n  children?: ReactNode;\n  value?: string;\n  onChange?: (value: V) => void;\n  onValueChange?: (value: string) => void;\n  disabled?: boolean;\n  supportingText?: string;\n  errorText?: string;\n  containerClassName?: string;\n  triggerClassName?: string;\n};\n\nconst LegacySelectInner = <\n  V extends string | number = string,\n  D = unknown,\n  L extends ReactNode = string,\n>(\n  {\n    placeholder,\n    label,\n    className,\n    size = 'sm',\n    options,\n    supportingText,\n    errorText,\n    containerClassName,\n    triggerClassName,\n    children,\n    value,\n    onChange,\n    onValueChange,\n    disabled,\n  }: LegacySelectProps<D, V, L>,\n  ref: Ref<HTMLButtonElement>,\n) => {\n  const id = useId();\n  const [isOpen, setIsOpen] = useState(false);\n  const hasValue = Boolean(value);\n  const showLabel = hasValue || isOpen;\n\n  const handleValueChange = (newValue: string) => {\n    onChange?.(newValue as V);\n    onValueChange?.(newValue);\n  };\n\n  const handleOpenChange = (open: boolean) => {\n    setIsOpen(open);\n  };\n\n  return (\n    <div className={cn('group relative w-[300px]', className, containerClassName)}>\n      {label && showLabel && (\n        <label\n          htmlFor={id}\n          className=\"absolute start-1 top-0 z-10 block -translate-y-1/2 bg-white px-2 text-xs font-medium text-[var(--chekin-color-brand-navy)] group-has-[:disabled]:opacity-50\"\n        >\n          {label}\n        </label>\n      )}\n      <LegacySelectRoot\n        value={value}\n        onValueChange={handleValueChange}\n        onOpenChange={handleOpenChange}\n        disabled={disabled}\n      >\n        <LegacySelectTrigger id={id} ref={ref} size={size} className={triggerClassName}>\n          <LegacySelectValue placeholder={placeholder} />\n        </LegacySelectTrigger>\n        <LegacySelectContent>\n          {children ??\n            options?.map(option => (\n              <LegacySelectItem\n                key={String(option.value)}\n                value={String(option.value)}\n                size={size}\n                disabled={option.isDisabled}\n              >\n                {option.label}\n              </LegacySelectItem>\n            ))}\n        </LegacySelectContent>\n      </LegacySelectRoot>\n      {Boolean(supportingText || errorText) && (\n        <div className=\"flex min-h-[15px] justify-between pt-1\">\n          {supportingText && !errorText && (\n            <span className=\"text-xs italic leading-[15px] text-[var(--chekin-color-gray-1)]\">\n              {supportingText}\n            </span>\n          )}\n          {errorText && (\n            <span className=\"ml-auto text-right text-xs font-medium leading-4 text-[var(--error-message-color)]\">\n              {errorText}\n            </span>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst LegacySelectForward = forwardRef(LegacySelectInner);\nLegacySelectForward.displayName = 'LegacySelect';\n\nexport const LegacySelect = LegacySelectForward as <\n  V extends string | number = string,\n  D = unknown,\n  L extends ReactNode = string,\n>(\n  props: LegacySelectProps<D, V, L> & {\n    ref?: Ref<HTMLButtonElement>;\n  },\n) => ReturnType<typeof LegacySelectInner>;\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport {CheckIcon, ChevronDownIcon, ChevronUpIcon} from 'lucide-react';\nimport {cn} from '../../lib/cn';\n\nconst LegacySelectRoot = SelectPrimitive.Root;\nconst LegacySelectGroup = SelectPrimitive.Group;\nconst LegacySelectValue = SelectPrimitive.Value;\nconst LegacySelectPortal = SelectPrimitive.Portal;\n\ntype LegacySelectSize = 'sm' | 'md';\n\nconst selectSizeClassNames: Record<LegacySelectSize, string> = {\n  sm: 'text-sm',\n  md: 'text-base',\n};\n\nconst LegacySelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {\n    size?: LegacySelectSize;\n  }\n>(({className, children, size = 'sm', ...props}, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      'flex h-full w-full items-center justify-between gap-2 rounded-lg border border-[var(--chekin-gray-200)] bg-white px-3 py-2 text-start text-[var(--chekin-color-brand-navy)] shadow-[0_1px_2px_rgb(0_0_0_/_0.05)] shadow-black/5 outline-none',\n      'focus:border-[var(--chekin-color-brand-blue)] focus:shadow-[var(--chekin-shadow-focus)]',\n      'data-[placeholder]:text-[var(--chekin-color-gray-1)]',\n      'disabled:cursor-not-allowed disabled:opacity-50 [&>span]:min-w-0',\n      selectSizeClassNames[size],\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild>\n      <ChevronDownIcon\n        size={16}\n        strokeWidth={2}\n        className=\"shrink-0 text-[var(--chekin-color-gray-1)]\"\n      />\n    </SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n));\nLegacySelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst LegacySelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({className, ...props}, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn('flex cursor-default items-center justify-center py-1', className)}\n    {...props}\n  >\n    <ChevronUpIcon size={16} strokeWidth={2} />\n  </SelectPrimitive.ScrollUpButton>\n));\nLegacySelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst LegacySelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({className, ...props}, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn('flex cursor-default items-center justify-center py-1', className)}\n    {...props}\n  >\n    <ChevronDownIcon size={16} strokeWidth={2} />\n  </SelectPrimitive.ScrollDownButton>\n));\nLegacySelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst LegacySelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({className, children, position = 'popper', ...props}, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        'relative z-50 max-h-[min(24rem,var(--radix-select-content-available-height))] min-w-[8rem] overflow-hidden rounded-lg border border-[var(--chekin-gray-200)] bg-white text-[var(--chekin-color-brand-navy)] shadow-lg shadow-black/5',\n        'data-[state=open]:animate-in data-[state=closed]:animate-out',\n        'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n        'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n        'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n        'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n        '[&_[role=group]]:py-1',\n        position === 'popper' &&\n          'w-full min-w-[var(--radix-select-trigger-width)] data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n        className,\n      )}\n      position={position}\n      {...props}\n    >\n      <LegacySelectScrollUpButton />\n      <SelectPrimitive.Viewport\n        className={cn(\n          'p-1',\n          position === 'popper' && 'h-[var(--radix-select-trigger-height)]',\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n      <LegacySelectScrollDownButton />\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n));\nLegacySelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst LegacySelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({className, ...props}, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\n      'py-1.5 pe-2 ps-8 text-xs font-medium text-[var(--chekin-color-gray-1)]',\n      className,\n    )}\n    {...props}\n  />\n));\nLegacySelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst LegacySelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & {\n    size?: LegacySelectSize;\n  }\n>(({className, children, size = 'sm', ...props}, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      'relative flex w-full cursor-default select-none items-center rounded-md py-1.5 pe-2 ps-8 outline-none',\n      'focus:bg-[var(--chekin-gray-50)] focus:text-[var(--chekin-color-brand-navy)]',\n      'data-[highlighted]:bg-[var(--chekin-gray-50)] data-[highlighted]:text-[var(--chekin-color-brand-navy)]',\n      'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n      selectSizeClassNames[size],\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute start-2 flex size-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <CheckIcon size={16} strokeWidth={2} />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n));\nLegacySelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst LegacySelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({className, ...props}, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn('-mx-1 my-1 h-px bg-[var(--chekin-gray-100)]', className)}\n    {...props}\n  />\n));\nLegacySelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n  LegacySelectRoot,\n  LegacySelectContent,\n  LegacySelectGroup,\n  LegacySelectItem,\n  LegacySelectLabel,\n  LegacySelectPortal,\n  LegacySelectScrollDownButton,\n  LegacySelectScrollUpButton,\n  LegacySelectSeparator,\n  LegacySelectTrigger,\n  LegacySelectValue,\n};\nexport type {LegacySelectSize};\n","import * as SelectPrimitive from '@radix-ui/react-select';\nimport {CheckIcon} from 'lucide-react';\nimport {forwardRef, type ReactNode, type Ref, useId, useState} from 'react';\nimport {cn} from '../../lib/cn';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {LegacySelectContent, LegacySelectTrigger} from './components';\n\ntype LegacyMultiSelectProps<\n  D,\n  V extends string | number = string,\n  L extends string | number | ReactNode = string,\n> = {\n  label?: string | ReactNode;\n  className?: string;\n  options?: SelectOption<D, V, L>[];\n  children?: ReactNode;\n  value?: (string | number)[];\n  onChange?: (value: (string | number)[]) => void;\n  placeholder?: string;\n  disabled?: boolean;\n};\n\nconst LegacyMultiSelectInner = <\n  V extends string | number = string,\n  D = unknown,\n  L extends string | number | ReactNode = string,\n>(\n  {\n    label,\n    value = [],\n    onChange,\n    className,\n    options,\n    placeholder,\n    disabled,\n  }: LegacyMultiSelectProps<D, V, L>,\n  ref: Ref<HTMLDivElement>,\n) => {\n  const id = useId();\n  const [open, setOpen] = useState(false);\n  const hasValue = value.length > 0;\n  const showLabel = hasValue || open;\n\n  const handleSelect = (selectedValue: string) => {\n    const newValues = value.some(v => String(v) === selectedValue)\n      ? value.filter(v => String(v) !== selectedValue)\n      : [...value, selectedValue];\n    onChange?.(newValues);\n  };\n\n  const handleOpenChange = (newOpen: boolean) => {\n    if (!disabled) {\n      setOpen(newOpen);\n    }\n  };\n\n  const isSelected = (optionValue: string | number) => {\n    return value.some(v => String(v) === String(optionValue));\n  };\n\n  const displayText =\n    value.length > 0 ? `${value.length} selected` : placeholder || 'Select options';\n\n  return (\n    <div ref={ref} className={cn('group relative w-[300px]', className)}>\n      {label && showLabel && (\n        <label\n          htmlFor={id}\n          className=\"absolute start-1 top-0 z-10 block -translate-y-1/2 bg-white px-2 text-xs font-medium text-[var(--chekin-color-brand-navy)] group-has-[:disabled]:opacity-50\"\n        >\n          {label}\n        </label>\n      )}\n      <SelectPrimitive.Root\n        open={open}\n        onOpenChange={handleOpenChange}\n        value=\"\"\n        disabled={disabled}\n      >\n        <LegacySelectTrigger id={id}>\n          <span className=\"text-sm\">{displayText}</span>\n        </LegacySelectTrigger>\n        <LegacySelectContent>\n          {options?.map(({value: optionValue, label: optionLabel}) => {\n            const stringValue = String(optionValue);\n            const selected = isSelected(optionValue);\n\n            return (\n              <div\n                key={stringValue}\n                role=\"option\"\n                aria-selected={selected}\n                onClick={event => {\n                  event.preventDefault();\n                  event.stopPropagation();\n                  handleSelect(stringValue);\n                }}\n                className={cn(\n                  'relative flex w-full cursor-pointer select-none items-center rounded-md py-1.5 pe-2 ps-8 text-sm outline-none hover:bg-[var(--chekin-gray-50)] hover:text-[var(--chekin-color-brand-navy)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n                  selected && 'bg-[var(--chekin-gray-50)]',\n                )}\n              >\n                <span className=\"absolute start-2 flex size-3.5 items-center justify-center\">\n                  {selected && <CheckIcon size={16} strokeWidth={2} />}\n                </span>\n                <span>{optionLabel}</span>\n              </div>\n            );\n          })}\n        </LegacySelectContent>\n      </SelectPrimitive.Root>\n    </div>\n  );\n};\n\nexport const LegacyMultiSelect = forwardRef(LegacyMultiSelectInner) as <\n  V extends string | number = string,\n  D = unknown,\n  L extends string | number | ReactNode = string,\n>(\n  props: LegacyMultiSelectProps<D, V, L> & {ref?: Ref<HTMLDivElement>},\n) => ReturnType<typeof LegacyMultiSelectInner>;\nexport type {LegacyMultiSelectProps};\n","import {useVirtualizer} from '@tanstack/react-virtual';\nimport {type ReactNode, useCallback, useEffect, useId, useRef, useState} from 'react';\nimport {cn} from '../../lib/cn';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {\n  LegacySelectContent,\n  LegacySelectItem,\n  LegacySelectRoot,\n  LegacySelectTrigger,\n  LegacySelectValue,\n} from './components';\n\ntype LegacyInfinitySelectProps = {\n  label: string | ReactNode;\n  className?: string;\n  placeholder?: string;\n  value?: string;\n  onValueChange?: (value: string) => void;\n  options: SelectOption[];\n  hasNextPage: boolean;\n  isFetchingNextPage: boolean;\n  fetchNextPage: () => void;\n  itemHeight?: number;\n  maxHeight?: number;\n};\n\nexport function LegacyInfinitySelect({\n  label,\n  className,\n  placeholder = 'Select option...',\n  value,\n  onValueChange,\n  options,\n  hasNextPage,\n  isFetchingNextPage,\n  fetchNextPage,\n  itemHeight = 35,\n  maxHeight = 300,\n}: LegacyInfinitySelectProps) {\n  const id = useId();\n  const parentRef = useRef<HTMLDivElement>(null);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const virtualizer = useVirtualizer({\n    count: hasNextPage ? options.length + 1 : options.length,\n    getScrollElement: () => parentRef.current,\n    estimateSize: () => itemHeight,\n    overscan: 5,\n  });\n\n  const loadMore = useCallback(() => {\n    if (hasNextPage && !isFetchingNextPage) {\n      fetchNextPage();\n    }\n  }, [fetchNextPage, hasNextPage, isFetchingNextPage]);\n\n  const virtualItems = virtualizer.getVirtualItems();\n\n  useEffect(() => {\n    if (!virtualItems.length) return;\n\n    const lastItem = virtualItems[virtualItems.length - 1];\n\n    if (\n      lastItem &&\n      lastItem.index >= options.length - 5 &&\n      hasNextPage &&\n      !isFetchingNextPage\n    ) {\n      loadMore();\n    }\n  }, [hasNextPage, isFetchingNextPage, loadMore, options.length, virtualItems]);\n\n  const handleItemSelect = (selectedValue: string) => {\n    onValueChange?.(selectedValue);\n    setIsOpen(false);\n  };\n\n  return (\n    <div className={cn('group relative min-w-[300px]', className)}>\n      <label\n        htmlFor={id}\n        className=\"absolute start-1 top-0 z-10 block -translate-y-1/2 bg-white px-2 text-xs font-medium text-[var(--chekin-color-brand-navy)] group-has-[:disabled]:opacity-50\"\n      >\n        {label}\n      </label>\n      <LegacySelectRoot\n        value={value}\n        onValueChange={handleItemSelect}\n        open={isOpen}\n        onOpenChange={setIsOpen}\n      >\n        <LegacySelectTrigger id={id}>\n          <LegacySelectValue placeholder={placeholder} />\n        </LegacySelectTrigger>\n        <LegacySelectContent>\n          <div\n            ref={parentRef}\n            style={{\n              height: `${Math.min(maxHeight, virtualizer.getTotalSize())}px`,\n              overflow: 'auto',\n            }}\n          >\n            <div\n              style={{\n                height: `${virtualizer.getTotalSize()}px`,\n                width: '100%',\n                position: 'relative',\n              }}\n            >\n              {virtualizer.getVirtualItems().map(virtualItem => {\n                const isLoading = virtualItem.index >= options.length;\n                const option = options[virtualItem.index];\n\n                return (\n                  <div\n                    key={virtualItem.key}\n                    style={{\n                      position: 'absolute',\n                      top: 0,\n                      left: 0,\n                      width: '100%',\n                      height: `${virtualItem.size}px`,\n                      transform: `translateY(${virtualItem.start}px)`,\n                    }}\n                  >\n                    {isLoading || !option ? (\n                      <div className=\"flex h-full items-center justify-center\">\n                        <div className=\"flex items-center gap-2 text-sm text-[var(--chekin-color-gray-1)]\">\n                          <div className=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n                          Loading more...\n                        </div>\n                      </div>\n                    ) : (\n                      <LegacySelectItem\n                        value={String(option.value)}\n                        disabled={option.isDisabled || option.readOnly}\n                      >\n                        {option.label}\n                      </LegacySelectItem>\n                    )}\n                  </div>\n                );\n              })}\n            </div>\n          </div>\n        </LegacySelectContent>\n      </LegacySelectRoot>\n    </div>\n  );\n}\nexport type {LegacyInfinitySelectProps};\n","import * as React from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport {cn} from '../lib/cn';\n\nexport const Popover = RadixPopover.Root;\nexport const PopoverTrigger = RadixPopover.Trigger;\nexport const PopoverAnchor = RadixPopover.Anchor;\nexport const PopoverPortal = RadixPopover.Portal;\nexport const PopoverClose = RadixPopover.Close;\n\nexport const PopoverContent = React.forwardRef<\n  React.ElementRef<typeof RadixPopover.Content>,\n  React.ComponentPropsWithoutRef<typeof RadixPopover.Content>\n>(({className, sideOffset = 4, align = 'center', ...props}, ref) => (\n  <RadixPopover.Portal>\n    <RadixPopover.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      align={align}\n      className={cn(\n        'z-50 w-72 rounded-lg border border-[var(--chekin-gray-200)] bg-[var(--chekin-color-white)] p-4 shadow-[0_10px_15px_-3px_rgb(0_0_0_/_0.1),0_4px_6px_-4px_rgb(0_0_0_/_0.1)] outline-none',\n        'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n        'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n        className,\n      )}\n      {...props}\n    />\n  </RadixPopover.Portal>\n));\nPopoverContent.displayName = 'PopoverContent';\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport {cn} from '../lib/cn';\n\ninterface PopoverWithTooltipProps {\n  children: React.ReactNode;\n  popoverContent: React.ReactNode;\n  tooltipContent: React.ReactNode;\n  open?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  popoverContentClassName?: string;\n  tooltipVariant?: 'light' | 'dark';\n}\n\nfunction PopoverWithTooltip({\n  children,\n  popoverContent,\n  tooltipContent,\n  open,\n  onOpenChange,\n  popoverContentClassName,\n  tooltipVariant = 'light',\n}: PopoverWithTooltipProps) {\n  return (\n    <TooltipPrimitive.Provider delayDuration={0}>\n      <TooltipPrimitive.Root open={open ? false : undefined}>\n        <PopoverPrimitive.Root open={open} onOpenChange={onOpenChange}>\n          <TooltipPrimitive.Trigger asChild>\n            <PopoverPrimitive.Trigger asChild>{children}</PopoverPrimitive.Trigger>\n          </TooltipPrimitive.Trigger>\n          <PopoverPrimitive.Portal>\n            <PopoverPrimitive.Content\n              align=\"center\"\n              sideOffset={4}\n              className={cn(\n                'z-50 w-72 rounded-lg border border-[var(--chekin-gray-200)] bg-white p-4 shadow-lg outline-none',\n                'data-[state=open]:animate-in data-[state=closed]:animate-out',\n                'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n                'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n                'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n                'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n                popoverContentClassName,\n              )}\n            >\n              {popoverContent}\n            </PopoverPrimitive.Content>\n          </PopoverPrimitive.Portal>\n        </PopoverPrimitive.Root>\n        <TooltipPrimitive.Portal>\n          <TooltipPrimitive.Content\n            sideOffset={5}\n            className={cn(\n              'z-50 w-fit text-balance rounded-md px-4 py-2 text-sm font-medium',\n              'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out',\n              'data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n              'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n              'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n              {\n                'bg-white text-[var(--chekin-color-brand-navy)] shadow-[0_0_10px_0_rgba(143,143,143,0.30)]':\n                  tooltipVariant === 'light',\n                'bg-[var(--chekin-color-brand-navy)] text-white':\n                  tooltipVariant === 'dark',\n              },\n            )}\n          >\n            {tooltipContent}\n            <TooltipPrimitive.Arrow\n              className={cn(\n                'z-50 size-3 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]',\n                {\n                  'fill-white bg-white': tooltipVariant === 'light',\n                  'fill-[var(--chekin-color-brand-navy)] bg-[var(--chekin-color-brand-navy)]':\n                    tooltipVariant === 'dark',\n                },\n              )}\n            />\n          </TooltipPrimitive.Content>\n        </TooltipPrimitive.Portal>\n      </TooltipPrimitive.Root>\n    </TooltipPrimitive.Provider>\n  );\n}\n\nexport {PopoverWithTooltip};\nexport type {PopoverWithTooltipProps};\n","import {forwardRef} from 'react';\nimport {cn} from '../lib/cn';\nimport {ErrorMessage} from '../error-message';\nimport {RadioGroup, RadioGroupItem} from '../radio-group';\nimport {useRadioOptions} from './useRadioOptions';\nimport {type RadioOption, type RadioProps} from './types';\n\nexport const Radio = forwardRef<HTMLDivElement, RadioProps>(\n  (\n    {\n      options,\n      value,\n      onChange,\n      error,\n      className = '',\n      size,\n      disabled = false,\n      renderOption,\n    },\n    ref,\n  ) => {\n    const {selectedValue, handleValueChange} = useRadioOptions({\n      options,\n      defaultValue: value,\n      onChange,\n    });\n\n    const getIsSelected = (option: RadioOption) => {\n      if (typeof selectedValue === 'object') {\n        return option.value === selectedValue.value;\n      }\n\n      return option.value === selectedValue;\n    };\n\n    return (\n      <>\n        <RadioGroup\n          ref={ref}\n          value={typeof selectedValue === 'string' ? selectedValue : selectedValue?.value}\n          onValueChange={handleValueChange}\n          className={cn(className, 'radio')}\n          disabled={disabled}\n        >\n          {options.map(option => (\n            <label\n              key={option.value}\n              className={cn(\n                'radio__wrapper',\n                'flex cursor-pointer items-center gap-2 transition-all duration-200',\n                (disabled || option.disabled) &&\n                  'cursor-default opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n              )}\n            >\n              {renderOption ? (\n                renderOption({option, isSelected: getIsSelected(option)})\n              ) : (\n                <>\n                  <RadioGroupItem\n                    value={option.value}\n                    id={`option-${option.value}`}\n                    disabled={option.disabled}\n                    size={size}\n                    className=\"radio__indicator\"\n                  />\n                  <p className=\"radio_label\">{option.label}</p>\n                </>\n              )}\n            </label>\n          ))}\n        </RadioGroup>\n        {error && <ErrorMessage>{error}</ErrorMessage>}\n      </>\n    );\n  },\n);\n\nRadio.displayName = 'Radio';\n","import * as React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport {cn} from '../lib/cn';\n\nexport type RadioSize = 'default' | 'm' | 'l';\n\nexport const RadioGroup = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({className, ...props}, ref) => (\n  <RadioGroupPrimitive.Root\n    ref={ref}\n    className={cn('grid gap-2', className)}\n    {...props}\n  />\n));\n\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst radioSizeClasses: Record<RadioSize, string> = {\n  default: 'h-4 w-4',\n  m: 'h-5 w-5',\n  l: 'h-6 w-6',\n};\n\nconst indicatorSizeClasses: Record<RadioSize, string> = {\n  default: 'h-2 w-2',\n  m: 'h-2.5 w-2.5',\n  l: 'h-3 w-3',\n};\n\nexport interface RadioGroupItemProps extends React.ComponentPropsWithoutRef<\n  typeof RadioGroupPrimitive.Item\n> {\n  size?: RadioSize;\n}\n\nexport const RadioGroupItem = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Item>,\n  RadioGroupItemProps\n>(({className, size = 'default', ...props}, ref) => (\n  <RadioGroupPrimitive.Item\n    ref={ref}\n    className={cn(\n      'aspect-square rounded-full border-2 border-[var(--radio-border)] bg-transparent',\n      'flex items-center justify-center',\n      'focus:outline-none focus-visible:shadow-chekin-focus',\n      'disabled:cursor-not-allowed disabled:opacity-50',\n      radioSizeClasses[size],\n      className,\n    )}\n    {...props}\n  >\n    <RadioGroupPrimitive.Indicator\n      className={cn(\n        'rounded-full bg-[var(--radio-indicator)]',\n        indicatorSizeClasses[size],\n      )}\n    />\n  </RadioGroupPrimitive.Item>\n));\n\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n","import {useCallback, useEffect, useState} from 'react';\nimport type {RadioOption} from './types';\n\nexport interface UseRadioOptionsProps {\n  options: RadioOption[];\n  defaultValue?: RadioOption | RadioOption['value'];\n  onChange?: (selectedOption: RadioOption) => void;\n}\n\nfunction getSelectedValue(\n  options: RadioOption[],\n  defaultValue?: RadioOption | RadioOption['value'],\n) {\n  return (\n    (typeof defaultValue === 'string'\n      ? options.find(option => option.value === defaultValue)\n      : defaultValue) || ''\n  );\n}\n\nexport function useRadioOptions({options, defaultValue, onChange}: UseRadioOptionsProps) {\n  const [selectedValue, setSelectedValue] = useState(() =>\n    getSelectedValue(options, defaultValue),\n  );\n\n  useEffect(() => {\n    setSelectedValue(getSelectedValue(options, defaultValue));\n  }, [defaultValue, options]);\n\n  const handleValueChange = useCallback(\n    (value: RadioOption['value']) => {\n      setSelectedValue(value);\n      const selectedOption = options.find(option => option.value === value) || '';\n\n      if (selectedOption && onChange) {\n        onChange(selectedOption);\n      }\n    },\n    [options, onChange],\n  );\n\n  return {\n    selectedValue,\n    handleValueChange,\n  };\n}\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\nimport {RadioGroupItem} from '../radio-group';\nimport {Radio} from './Radio';\nimport type {RadioProps} from './types';\n\ntype RadioWithBorderData = Pick<RadioProps, 'size'> & {\n  subLabel?: string;\n  description?: string;\n  rightContent?: ReactNode;\n};\n\nexport function RadioWithBorder({size, ...props}: RadioProps) {\n  return (\n    <Radio\n      {...props}\n      renderOption={({option, isSelected}) => {\n        const data = option.data as RadioWithBorderData | undefined;\n\n        return (\n          <div\n            className={cn(\n              'flex w-full items-start gap-3 rounded-lg border p-4 transition-all duration-200',\n              isSelected &&\n                'border-[var(--chekin-color-brand-blue)] bg-[var(--chekin-color-surface-autocomplete)]',\n            )}\n          >\n            <RadioGroupItem\n              className=\"mt-1\"\n              value={option.value}\n              id={`option-${option.value}`}\n              disabled={option.disabled}\n              size={size}\n            />\n            <div className=\"flex min-w-0 flex-1 items-start justify-between gap-3\">\n              <div className=\"min-w-0 space-y-1 leading-6\">\n                <p className=\"flex items-center gap-3 font-semibold\">\n                  {option.label}\n                  {data?.subLabel && (\n                    <span className=\"rounded bg-[color-mix(in_srgb,var(--chekin-color-brand-blue)_10%,transparent)] px-2 py-1 text-sm font-semibold leading-4 text-[var(--chekin-color-brand-blue)]\">\n                      {data.subLabel}\n                    </span>\n                  )}\n                </p>\n                {data?.description && (\n                  <p className=\"text-sm font-medium text-[var(--chekin-color-gray-1)]\">\n                    {data.description}\n                  </p>\n                )}\n              </div>\n              {data?.rightContent && <div className=\"shrink-0\">{data.rightContent}</div>}\n            </div>\n          </div>\n        );\n      }}\n    />\n  );\n}\n","import {forwardRef, memo, type ReactNode, useEffect} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectOption} from '../lib/selector-option';\nimport {Radio, type RadioOption} from '../radio';\nimport {RadioGroupItem} from '../radio-group';\n\ntype RadioCardsSelectOption = SelectOption<unknown, string, string>;\n\nexport type RadioCardOption = Pick<RadioCardsSelectOption, 'label' | 'value'> & {\n  description?: ReactNode | string;\n  disabled?: boolean;\n};\n\nconst isValueSelectOption = (\n  value?: RadioCardsSelectOption | string | null,\n): value is RadioCardsSelectOption => {\n  return (value as RadioCardsSelectOption)?.value !== undefined;\n};\n\ntype OptionsCardsProps = {\n  options: RadioCardOption[];\n  onChange: (value: RadioCardsSelectOption) => void;\n  name: string;\n  value?: string | RadioCardsSelectOption | null;\n  defaultValue?: string;\n  multiple?: boolean;\n  disabled?: boolean;\n  readOnly?: boolean;\n  loading?: boolean;\n  error?: string;\n  className?: string;\n  cardClassName?: string;\n};\n\nconst RadioCardsGroup = forwardRef<HTMLDivElement, OptionsCardsProps>(\n  (\n    {\n      options,\n      onChange,\n      value,\n      defaultValue,\n      disabled,\n      readOnly,\n      error,\n      loading,\n      className,\n      cardClassName,\n    },\n    ref,\n  ) => {\n    const handleChange = (option: RadioOption) => {\n      if (!disabled && !readOnly) {\n        onChange({label: option.label, value: option.value});\n      }\n    };\n\n    useEffect(\n      function setDefaultValue() {\n        const option = options.find(opt => opt.value === defaultValue);\n\n        if (defaultValue && option && !value) {\n          onChange(option);\n        }\n      },\n      [defaultValue, onChange, options, value],\n    );\n\n    const currentValue = isValueSelectOption(value) ? value.value : value;\n\n    return (\n      <>\n        <Radio\n          ref={ref}\n          options={options as RadioOption[]}\n          onChange={handleChange}\n          value={currentValue || defaultValue}\n          disabled={disabled}\n          className={cn('flex flex-wrap gap-4', className)}\n          renderOption={({option, isSelected}) => {\n            return (\n              <div\n                className={cn(\n                  'radio-card',\n                  'relative box-border flex min-h-[168px] w-[352px] items-start gap-4 rounded-lg border border-[var(--chekin-border-default)] bg-white p-4 pl-14',\n                  !disabled &&\n                    !loading &&\n                    !readOnly &&\n                    'cursor-pointer hover:border-[var(--brand-color,var(--chekin-color-brand-blue))]',\n                  isSelected &&\n                    'border-2 border-[var(--brand-color,var(--chekin-color-brand-blue))] bg-[var(--chekin-color-surface-autocomplete)]',\n                  disabled && 'cursor-not-allowed opacity-50',\n                  loading && 'cursor-progress opacity-50',\n                  readOnly && 'cursor-default',\n                  error && 'border-[var(--chekin-red-500)]',\n                  cardClassName,\n                )}\n              >\n                <div>\n                  <RadioGroupItem\n                    value={option.value}\n                    id={`radio-${option.value}`}\n                    disabled={disabled || option.disabled}\n                  />\n                </div>\n                <div className=\"w-full cursor-pointer\">\n                  <label\n                    htmlFor={`radio-${option.value}`}\n                    className={cn(\n                      'radio_input flex select-none text-left align-middle text-xl font-bold leading-6 text-[var(--chekin-color-brand-navy)]',\n                      readOnly ? 'cursor-default' : 'cursor-pointer',\n                    )}\n                  >\n                    {option.label}\n                  </label>\n\n                  {(option as RadioCardOption).description && (\n                    <div className=\"radioCardDescription mt-2\">\n                      {(option as RadioCardOption).description}\n                    </div>\n                  )}\n                </div>\n              </div>\n            );\n          }}\n        />\n        {error && (\n          <div className=\"mt-2 text-left text-sm text-[var(--chekin-red-500)]\">\n            {error}\n          </div>\n        )}\n      </>\n    );\n  },\n);\n\nconst MemoizedRadioCardsGroup = memo(RadioCardsGroup);\nexport {MemoizedRadioCardsGroup as RadioCardsGroup};\nexport type {OptionsCardsProps};\n","import {cn} from '../lib/cn';\n\nexport type RatingProgressProps = {\n  label: string;\n  score: number;\n  maxScore?: number;\n  className?: string;\n};\n\nconst getRatingColor = (score: number, maxScore: number): string => {\n  const percentage = (score / maxScore) * 100;\n\n  if (percentage === 0) return 'var(--chekin-rating-0)';\n  if (percentage <= 20) return 'var(--chekin-rating-1)';\n  if (percentage <= 40) return 'var(--chekin-rating-2)';\n  if (percentage <= 50) return 'var(--chekin-rating-3)';\n  if (percentage <= 60) return 'var(--chekin-rating-4)';\n  if (percentage <= 80) return 'var(--chekin-rating-5)';\n  return 'var(--chekin-rating-6)';\n};\n\nexport function RatingProgress({\n  label,\n  score,\n  maxScore = 10,\n  className,\n}: RatingProgressProps) {\n  const percentage = Math.max(0, Math.min(100, (score / maxScore) * 100));\n  const color = getRatingColor(score, maxScore);\n\n  return (\n    <div\n      className={cn(\n        'flex w-full min-w-[160px] flex-col items-start justify-center',\n        className,\n      )}\n    >\n      <div className=\"flex w-full items-start justify-between text-sm font-medium leading-6\">\n        <p className=\"min-w-0 flex-1\">{label}</p>\n        <p className=\"shrink-0 whitespace-pre\">{score.toFixed(1)}</p>\n      </div>\n\n      <div className=\"relative w-full\">\n        <div className=\"h-1.5 w-full rounded-[24px] bg-[var(--chekin-color-gray-3)]\" />\n        <div\n          className=\"absolute left-0 top-0 h-1.5 rounded-[24px] transition-all duration-300 ease-out\"\n          style={{\n            width: `${percentage}%`,\n            backgroundColor: color,\n          }}\n        />\n      </div>\n    </div>\n  );\n}\n","import {createContext, useContext} from 'react';\nimport type {RatingRadioGroupSize} from './types';\n\ntype RatingRadioGroupContextValue = {\n  name: string;\n  value: number;\n  size: RatingRadioGroupSize;\n  hoverValue?: number;\n  onChange?: (value: number) => void;\n  onMouseLeave: () => void;\n  onMouseEnter: (value: number) => void;\n  onTouchStart: (value: number) => void;\n  onTouchEnd: () => void;\n};\n\nconst RatingRadioGroupContext = createContext<RatingRadioGroupContextValue | null>(null);\n\nexport const RatingRadioGroupProvider = RatingRadioGroupContext.Provider;\n\nexport function useRatingRadioGroupContext() {\n  const context = useContext(RatingRadioGroupContext);\n\n  if (!context) {\n    throw new Error(\n      'RatingRadioGroup compound components must be used inside RatingRadioGroup.',\n    );\n  }\n\n  return context;\n}\n","import {Star} from 'lucide-react';\nimport {useRatingRadioGroupContext} from './RatingRadioGroupContext';\nimport type {RatingRadioGroupOption, RatingRadioGroupSize} from './types';\n\nconst ratingRadioGroupStarSizes: Record<RatingRadioGroupSize, number> = {\n  default: 24,\n  lg: 32,\n};\n\nconst getStarColor = (optionValue: number) => (value: number, hoverValue?: number) => {\n  const currentValue = hoverValue ?? value;\n  if (currentValue >= optionValue) {\n    return 'var(--rating-radio-group-star-selected-color)';\n  }\n\n  return 'var(--rating-radio-group-star-unselected-color)';\n};\n\nexport type RatingRadioGroupItemProps = {\n  option: RatingRadioGroupOption;\n  size?: RatingRadioGroupSize;\n};\n\nexport function RatingRadioGroupItem({option, size}: RatingRadioGroupItemProps) {\n  const {\n    name,\n    value,\n    size: contextSize,\n    hoverValue,\n    onChange,\n    onMouseEnter,\n    onTouchStart,\n    onTouchEnd,\n  } = useRatingRadioGroupContext();\n  const starColor = getStarColor(option.value)(value, hoverValue);\n  const starSize = ratingRadioGroupStarSizes[size ?? contextSize];\n\n  return (\n    <label\n      onMouseEnter={() => onMouseEnter(option.value)}\n      onTouchStart={() => onTouchStart(option.value)}\n      onTouchEnd={onTouchEnd}\n    >\n      <input\n        className=\"peer absolute h-0 w-0 opacity-0\"\n        type=\"radio\"\n        name={name}\n        checked={value === option.value}\n        value={option.value}\n        onChange={() => onChange?.(option.value)}\n      />\n      <Star\n        className=\"cursor-pointer rounded peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-[var(--rating-radio-group-star-focus-color)]\"\n        size={starSize}\n        aria-label={option.label}\n        color={starColor}\n        fill={starColor}\n      />\n    </label>\n  );\n}\n","import type {ReactNode} from 'react';\n\nexport type RatingRadioGroupLegendProps = {\n  children?: ReactNode;\n};\n\nexport function RatingRadioGroupLegend({children}: RatingRadioGroupLegendProps) {\n  if (!children) return null;\n\n  return <legend className=\"mb-2 text-base\">{children}</legend>;\n}\n","import type {ReactNode} from 'react';\nimport {useRatingRadioGroupContext} from './RatingRadioGroupContext';\n\nexport type RatingRadioGroupListProps = {\n  children: ReactNode;\n};\n\nexport function RatingRadioGroupList({children}: RatingRadioGroupListProps) {\n  const {onMouseLeave} = useRatingRadioGroupContext();\n\n  return (\n    <div className=\"RatingRadioGroup__list flex gap-2\" onMouseLeave={onMouseLeave}>\n      {children}\n    </div>\n  );\n}\n","import {useRef, useState} from 'react';\n\nconst TOUCH_END_DELAY = 100;\n\nexport function useRatingPreview() {\n  const [hoverValue, setHoverValue] = useState<number | undefined>(undefined);\n  const isTouchDevice = useRef(false);\n\n  const handleContainerMouseLeave = () => {\n    setHoverValue(undefined);\n  };\n\n  const handleStarMouseEnter = (optionValue: number) => {\n    if (!isTouchDevice.current) {\n      setHoverValue(optionValue);\n    }\n  };\n\n  const handleTouchStart = (optionValue: number) => {\n    isTouchDevice.current = true;\n    setHoverValue(optionValue);\n  };\n\n  const handleTouchEnd = () => {\n    setTimeout(() => {\n      setHoverValue(undefined);\n    }, TOUCH_END_DELAY);\n  };\n\n  return {\n    hoverValue,\n    handleContainerMouseLeave,\n    handleStarMouseEnter,\n    handleTouchStart,\n    handleTouchEnd,\n  };\n}\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\nimport {RatingRadioGroupProvider} from './RatingRadioGroupContext';\nimport {RatingRadioGroupItem} from './RatingRadioGroupItem';\nimport {RatingRadioGroupLegend} from './RatingRadioGroupLegend';\nimport {RatingRadioGroupList} from './RatingRadioGroupList';\nimport type {RatingRadioGroupOption, RatingRadioGroupSize} from './types';\nimport {useRatingPreview} from './useRatingPreview';\n\nexport type RatingRadioGroupProps = {\n  value?: number;\n  onChange?: (value: number) => void;\n  label?: ReactNode;\n  disabled?: boolean;\n  name?: string;\n  className?: string;\n  options?: RatingRadioGroupOption[];\n  size?: RatingRadioGroupSize;\n  children?: ReactNode;\n};\n\nfunction RatingRadioGroupRoot({\n  value,\n  onChange,\n  label,\n  name = 'rating',\n  className,\n  options,\n  size = 'default',\n  children,\n}: RatingRadioGroupProps) {\n  const {\n    hoverValue,\n    handleContainerMouseLeave,\n    handleStarMouseEnter,\n    handleTouchStart,\n    handleTouchEnd,\n  } = useRatingPreview();\n\n  return (\n    <RatingRadioGroupProvider\n      value={{\n        name,\n        value: value || 0,\n        size,\n        hoverValue,\n        onChange,\n        onMouseLeave: handleContainerMouseLeave,\n        onMouseEnter: handleStarMouseEnter,\n        onTouchStart: handleTouchStart,\n        onTouchEnd: handleTouchEnd,\n      }}\n    >\n      <fieldset className={cn('relative [all:unset]', className)}>\n        {children ?? (\n          <>\n            <RatingRadioGroup.Legend>{label}</RatingRadioGroup.Legend>\n            <RatingRadioGroup.List>\n              {options?.map(option => (\n                <RatingRadioGroup.Item key={option.value} option={option} />\n              ))}\n            </RatingRadioGroup.List>\n          </>\n        )}\n      </fieldset>\n    </RatingRadioGroupProvider>\n  );\n}\n\nexport const RatingRadioGroup = Object.assign(RatingRadioGroupRoot, {\n  Legend: RatingRadioGroupLegend,\n  List: RatingRadioGroupList,\n  Item: RatingRadioGroupItem,\n});\n","import * as React from 'react';\nimport {Star} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\n\nexport type RatingStarsProps = {\n  rating: number;\n  maxRating?: number;\n  size?: number;\n  showText?: boolean;\n  reviewCount?: number;\n  reviewsLabel?: string;\n  description?: string;\n  className?: string;\n  starClassName?: string;\n  filledColor?: string;\n  emptyColor?: string;\n};\n\nexport function RatingStars({\n  rating,\n  maxRating = 5,\n  size = 20,\n  showText = false,\n  reviewCount,\n  reviewsLabel,\n  description,\n  className,\n  starClassName,\n  filledColor = 'var(--chekin-amber-500)',\n  emptyColor = 'var(--chekin-color-gray-3)',\n}: RatingStarsProps) {\n  const {t} = useTranslation();\n  const normalizedRating = Math.max(0, Math.min(maxRating, rating));\n  const stars = Array.from({length: maxRating}, (_, index) => index + 1);\n\n  const componentId = React.useId();\n  const decimal = normalizedRating - Math.floor(normalizedRating);\n  const partialStarIndex = decimal > 0 ? Math.ceil(normalizedRating) : -1;\n  const gradientId = `star-gradient-${componentId.replace(/:/g, '')}`;\n\n  const getStarFill = (starIndex: number): string => {\n    if (starIndex <= Math.floor(normalizedRating)) {\n      return filledColor;\n    }\n\n    if (starIndex === partialStarIndex && decimal > 0) {\n      return `url(#${gradientId})`;\n    }\n\n    return emptyColor;\n  };\n\n  return (\n    <div className={cn('flex flex-col items-start gap-2', className)}>\n      {showText && (\n        <p className=\"text-4xl font-medium\">\n          {normalizedRating}/{maxRating}\n        </p>\n      )}\n\n      <div className=\"flex items-center gap-1\">\n        <svg width=\"0\" height=\"0\" style={{position: 'absolute'}}>\n          <defs>\n            <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n              <stop offset={`${decimal * 100}%`} stopColor={filledColor} />\n              <stop offset={`${decimal * 100}%`} stopColor={emptyColor} />\n            </linearGradient>\n          </defs>\n        </svg>\n\n        {stars.map(star => (\n          <Star\n            key={star}\n            size={size}\n            className={cn('shrink-0', starClassName)}\n            fill={getStarFill(star)}\n            stroke=\"none\"\n            aria-hidden=\"true\"\n          />\n        ))}\n      </div>\n\n      {(reviewCount !== undefined || description) && (\n        <div className=\"flex flex-col font-medium text-[var(--chekin-color-gray-1)]\">\n          {reviewCount !== undefined && (\n            <p className=\"text-xs leading-4\">\n              {reviewCount} {reviewsLabel || t('reviews')}\n            </p>\n          )}\n          {description && <p className=\"text-sm leading-6\">{description}</p>}\n        </div>\n      )}\n    </div>\n  );\n}\n","import {ChevronDown} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\ntype RotateArrowProps = {\n  shouldRotate?: boolean;\n  className?: string;\n};\n\nfunction RotateArrow({shouldRotate, className}: RotateArrowProps) {\n  return (\n    <ChevronDown\n      size={16}\n      className={cn(\n        `rotate-arrow pointer-events-none relative cursor-pointer select-none rounded\n         transition-transform`,\n        shouldRotate && 'rotate-180',\n        className,\n      )}\n    />\n  );\n}\n\nexport {RotateArrow};\nexport type {RotateArrowProps};\n","import type {ReactNode} from 'react';\nimport {Search} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport type SearchButtonProps = {\n  onClick?: () => void;\n  className?: string;\n  icon?: ReactNode;\n  ariaLabel?: string;\n};\n\nexport function SearchButton({onClick, className, icon, ariaLabel}: SearchButtonProps) {\n  return (\n    <button\n      onClick={onClick}\n      className={cn(\n        'p-1.5 text-[var(--chekin-neutral-500)] hover:text-[var(--chekin-color-brand-blue)]',\n        className,\n      )}\n      data-testid=\"search-button\"\n      aria-label={ariaLabel}\n      type=\"button\"\n    >\n      {icon || <Search size={12} strokeWidth={4} />}\n    </button>\n  );\n}\n","import type {ComponentProps, ReactNode} from 'react';\nimport {Loader2, Search, X} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {Button} from '../button';\nimport {HelpTooltip} from '../help-tooltip';\nimport {LegacyInput} from '../legacy-fields/input';\nimport {cn} from '../lib/cn';\n\nexport type SearchInputProps = ComponentProps<'input'> & {\n  className?: string;\n  invalid?: boolean;\n  label?: string;\n  loading?: boolean;\n  onReset?: () => void;\n  optional?: boolean | string;\n  tooltip?: ReactNode;\n  wrapperClassName?: string;\n};\n\nexport function SearchInput({\n  disabled,\n  invalid,\n  label,\n  loading,\n  onReset,\n  optional,\n  placeholder,\n  tooltip,\n  wrapperClassName,\n  className,\n  ...props\n}: SearchInputProps) {\n  const {t} = useTranslation();\n  const placeholderText = placeholder || `${t('search_property')}...`;\n  const isBlocked = Boolean(disabled) || Boolean(loading);\n  const optionalLabel = optional\n    ? typeof optional === 'string'\n      ? optional\n      : t('optional')\n    : undefined;\n  const hasLabelMeta = Boolean(optionalLabel) || Boolean(tooltip);\n\n  return (\n    <div className={cn('input-wrapper', wrapperClassName)}>\n      {(label || hasLabelMeta) && (\n        <div className=\"mb-2 inline-flex max-w-full items-center gap-1.5 text-sm font-medium text-[var(--chekin-color-brand-navy)]\">\n          {label && <span className=\"min-w-0 truncate\">{label}</span>}\n          {optionalLabel && (\n            <span className=\"shrink-0 text-xs font-normal text-[var(--chekin-color-gray-2)]\">\n              {optionalLabel}\n            </span>\n          )}\n          {tooltip && <HelpTooltip content={tooltip} side=\"top\" size={16} />}\n        </div>\n      )}\n      <div className=\"relative\">\n        <Search className=\"absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 text-[var(--chekin-color-gray-2)]\" />\n        <LegacyInput\n          {...props}\n          type=\"text\"\n          disabled={isBlocked}\n          placeholder={placeholderText}\n          aria-busy={loading}\n          aria-invalid={invalid}\n          className={cn(\n            'w-full py-3 pl-12 pr-10 text-base text-[var(--chekin-color-brand-navy)] focus:border-[var(--chekin-color-gray-3)]',\n            (loading || onReset) && 'pr-20',\n            invalid &&\n              'border-[var(--error-message-color)] text-[var(--error-message-color)] placeholder:text-[var(--error-message-color)]',\n            loading && 'cursor-progress',\n            className,\n          )}\n        />\n        {(loading || onReset) && (\n          <div className=\"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-1\">\n            {loading && (\n              <Loader2\n                aria-hidden=\"true\"\n                className=\"h-5 w-5 animate-spin text-[var(--chekin-color-gray-2)]\"\n              />\n            )}\n            {onReset && (\n              <Button\n                variant=\"ghost\"\n                onClick={onReset}\n                disabled={isBlocked}\n                className=\"h-7 w-7 p-0 text-[var(--chekin-color-gray-2)]\"\n                aria-label={t('reset_search')}\n              >\n                <X className=\"h-5 w-5\" />\n              </Button>\n            )}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../../lib/cn';\n\nexport type LegacyInputProps = React.ComponentProps<'input'>;\n\nexport const LegacyInput = React.forwardRef<HTMLInputElement, LegacyInputProps>(\n  ({className, type, readOnly, ...props}, ref) => (\n    <input\n      ref={ref}\n      type={type}\n      readOnly={readOnly}\n      className={cn(\n        'flex h-10 w-[293px] rounded-[var(--chekin-radius-input)] border border-[var(--chekin-color-gray-3)] bg-[var(--chekin-color-white)] px-3 py-2 text-base text-[var(--chekin-color-brand-navy)]',\n        'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n        'placeholder:text-base placeholder:font-medium placeholder:text-[var(--chekin-color-gray-2)]',\n        'disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n        !readOnly && 'placeholder-shown:bg-[var(--chekin-color-surface-input-empty)]',\n        !readOnly &&\n          'focus-visible:outline-none focus-visible:shadow-[var(--chekin-shadow-focus)]',\n        readOnly && 'cursor-default outline-none',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\n\nLegacyInput.displayName = 'LegacyInput';\n","import {type ChangeEvent, useState} from 'react';\nimport {useDebounce} from '../hooks';\nimport {SearchInput} from './SearchInput';\n\nexport type DebouncedSearchInputProps = {\n  onChange: (value: string) => void;\n  placeholder?: string;\n  className?: string;\n  wrapperClassName?: string;\n};\n\nexport function DebouncedSearchInput({\n  onChange,\n  placeholder,\n  className,\n  wrapperClassName,\n}: DebouncedSearchInputProps) {\n  const [searchValue, setSearchValue] = useState('');\n\n  const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n    setSearchValue(event.target.value);\n  };\n\n  useDebounce(searchValue, 500, value => {\n    if (value.length > 2 || value.length === 0) {\n      onChange(value);\n    }\n  });\n\n  return (\n    <SearchInput\n      onChange={handleInputChange}\n      placeholder={placeholder}\n      className={className}\n      wrapperClassName={wrapperClassName}\n    />\n  );\n}\n","import {cva} from 'class-variance-authority';\n\nexport const sectionTagVariants = cva(\n  'relative -mt-1 ml-5 inline-flex items-center justify-center px-4 py-1 text-sm font-semibold text-white',\n  {\n    variants: {\n      color: {\n        green: 'bg-[var(--chekin-green-800)]',\n        blue: 'bg-[var(--chekin-color-brand-blue)]',\n      },\n    },\n    defaultVariants: {\n      color: 'green',\n    },\n  },\n);\n","import type {ReactNode} from 'react';\nimport type {VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {sectionTagVariants} from './sectionTagVariants';\n\nexport interface SectionTagProps extends VariantProps<typeof sectionTagVariants> {\n  children?: ReactNode;\n  className?: string;\n}\n\nexport function SectionTag({children, color = 'green', className}: SectionTagProps) {\n  return <div className={cn(sectionTagVariants({color}), className)}>{children}</div>;\n}\n","export enum SectionTagColors {\n  GREEN = 'green',\n  BLUE = 'blue',\n}\n","import {forwardRef, type MouseEvent, type ReactNode} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {CircularLoader} from '../circular-loader';\nimport {HelpTooltip} from '../help-tooltip';\nimport {cn} from '../lib/cn';\nimport {SubSectionSize} from './constants';\n\ntype ReactEntity = ReactNode;\n\nexport type SectionProps = {\n  children?: ReactEntity;\n  title?: ReactEntity;\n  titleTooltip?: ReactEntity | string;\n  subtitle?: ReactEntity;\n  subtitleTooltip?: ReactEntity;\n  className?: string;\n  titleClassName?: string;\n  loading?: boolean;\n  showLoader?: boolean;\n  disabled?: boolean;\n  hidden?: boolean;\n  linkContent?: ReactEntity;\n  size?: SubSectionSize;\n};\n\nfunction TooltipInfo({content, className}: {content: ReactNode; className?: string}) {\n  return (\n    <HelpTooltip\n      side=\"right\"\n      content={content}\n      contentClassName=\"max-w-64\"\n      className={cn('text-[var(--section-tooltip-color)]', className)}\n      onClick={(event: MouseEvent) => event.stopPropagation()}\n      label={typeof content === 'string' ? content : 'More information'}\n    />\n  );\n}\n\nconst Section = forwardRef<HTMLDivElement, SectionProps>(\n  (\n    {\n      children,\n      title,\n      subtitle,\n      subtitleTooltip,\n      className,\n      titleClassName,\n      titleTooltip,\n      loading,\n      disabled,\n      showLoader,\n      linkContent,\n      hidden,\n      size,\n    },\n    ref,\n  ) => {\n    const {t} = useTranslation();\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'mb-6 box-border flex w-full cursor-default flex-col gap-6 rounded-lg border border-solid border-[var(--chekin-color-gray-3)] bg-white px-6 py-10',\n          loading && 'cursor-progress',\n          disabled && 'pointer-events-none opacity-50',\n          {'!hidden': hidden},\n          className,\n        )}\n      >\n        {(title || subtitle) && (\n          <div className=\"flex flex-col gap-2\">\n            {title && (\n              <div\n                className={cn(\n                  'flex max-w-[85%] items-center text-lg font-semibold text-[var(--section-title-color)] md:max-w-full',\n                  size !== SubSectionSize.L && 'subsection-title',\n                  titleClassName,\n                )}\n              >\n                {title}\n                {titleTooltip && (\n                  <div className=\"ml-2.5\">\n                    <TooltipInfo content={titleTooltip} />\n                  </div>\n                )}\n                {linkContent && (\n                  <div className=\"ml-6 text-sm font-semibold text-[var(--section-link-color)] no-underline hover:opacity-70 active:opacity-100\">\n                    {linkContent}\n                  </div>\n                )}\n              </div>\n            )}\n            {subtitle && (\n              <div className=\"w-full max-w-[720px] md:max-w-full\">\n                <div className=\"inline text-base font-normal text-[var(--section-subtitle-color)]\">\n                  {subtitle}\n                </div>\n                {subtitleTooltip && (\n                  <div className=\"ml-1.5 inline-block align-text-top\">\n                    <TooltipInfo content={subtitleTooltip} />\n                  </div>\n                )}\n              </div>\n            )}\n          </div>\n        )}\n\n        {loading && showLoader ? (\n          <CircularLoader\n            size=\"md\"\n            label={t('loading')}\n            className=\"mx-auto mb-3 mt-2.5\"\n          />\n        ) : (\n          children\n        )}\n      </div>\n    );\n  },\n);\nSection.displayName = 'Section';\n\nconst SubSection = forwardRef<HTMLDivElement, SectionProps>(\n  ({className, ...props}, ref) => (\n    <Section\n      ref={ref}\n      className={cn(\n        'm-0 box-border rounded-none border-none bg-transparent p-0 [&_.subsection-title]:text-base [&_.subsection-title]:font-semibold',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nSubSection.displayName = 'SubSection';\n\nconst DividingSubsection = forwardRef<HTMLDivElement, SectionProps>(\n  ({className, ...props}, ref) => (\n    <SubSection\n      ref={ref}\n      className={cn('border-0 border-t border-solid border-t-[#f1f1f1] pt-6', className)}\n      {...props}\n    />\n  ),\n);\nDividingSubsection.displayName = 'DividingSubsection';\n\nexport {DividingSubsection, Section, SubSection, SubSectionSize};\n","export enum SubSectionSize {\n  L,\n  M,\n}\n","import * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport {cn} from '../lib/cn';\n\nexport type SeparatorProps = React.ComponentProps<typeof SeparatorPrimitive.Root>;\n\nexport function Separator({\n  className,\n  orientation = 'horizontal',\n  decorative = true,\n  ...props\n}: SeparatorProps) {\n  return (\n    <SeparatorPrimitive.Root\n      data-slot=\"separator\"\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        'shrink-0 bg-[var(--chekin-color-gray-separator)] data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\ntype SectionGroupItemProps = {\n  className?: string;\n  contentClassName?: string;\n  title?: ReactNode;\n  subtitle?: ReactNode;\n  children?: ReactNode;\n  divider?: boolean;\n};\n\nconst SectionGroupItem = ({\n  className,\n  contentClassName,\n  title,\n  subtitle,\n  children,\n  divider = true,\n}: SectionGroupItemProps) => {\n  return (\n    <section className={cn('flex flex-col gap-5', className)}>\n      {divider && (\n        <div className={cn('h-px w-full bg-[var(--section-group-divider-bg)]')} />\n      )}\n      {(title || subtitle) && (\n        <div className=\"flex flex-col gap-1 px-8\">\n          {title && (\n            <h3 className=\"text-base font-semibold leading-6 text-[var(--section-group-muted-text)]\">\n              {title}\n            </h3>\n          )}\n          {subtitle && (\n            <p className=\"text-sm font-medium leading-6 text-[var(--section-group-muted-text)]\">\n              {subtitle}\n            </p>\n          )}\n        </div>\n      )}\n      <div className={cn('flex flex-col gap-4 px-8', contentClassName)}>{children}</div>\n    </section>\n  );\n};\n\ntype SectionGroupProps = {\n  className?: string;\n  title?: ReactNode;\n  actions?: ReactNode;\n  children?: ReactNode;\n};\n\nconst SectionGroupRoot = ({className, title, actions, children}: SectionGroupProps) => {\n  return (\n    <div\n      className={cn(\n        `flex flex-col gap-6 rounded-2xl border border-[var(--section-group-border)]\n        bg-[var(--section-group-bg)] py-6`,\n        className,\n      )}\n    >\n      {(title || actions) && (\n        <div className=\"flex items-center gap-6 px-8\">\n          {title && (\n            <h2 className=\"flex-1 text-lg font-bold leading-6 text-[var(--section-group-title-color)] opacity-90\">\n              {title}\n            </h2>\n          )}\n          {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n        </div>\n      )}\n      {children}\n    </div>\n  );\n};\n\ntype SectionGroupLabelProps = {\n  id?: string;\n  title: ReactNode;\n  description?: ReactNode;\n};\n\nconst SectionGroupLabel = ({id, title, description}: SectionGroupLabelProps) => (\n  <div id={id}>\n    <div className=\"font-semibold leading-6\">{title}</div>\n    {description && (\n      <div className=\"text-sm font-medium leading-6 text-[var(--section-group-muted-text)]\">\n        {description}\n      </div>\n    )}\n  </div>\n);\n\nconst SectionGroup = Object.assign(SectionGroupRoot, {\n  Item: SectionGroupItem,\n  Label: SectionGroupLabel,\n});\n\nexport {SectionGroup};\nexport type {SectionGroupItemProps, SectionGroupLabelProps, SectionGroupProps};\n","import * as React from 'react';\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport {XIcon} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nfunction Sheet({...props}: React.ComponentProps<typeof SheetPrimitive.Root>) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({...props}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({...props}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({...props}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n  return (\n    <SheetPrimitive.Overlay\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        'fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = 'right',\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        className={cn(\n          'fixed z-50 flex flex-col gap-4 bg-white text-[var(--chekin-color-brand-navy)] shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:duration-500 data-[state=closed]:duration-300',\n          side === 'right' &&\n            'inset-y-0 right-0 h-full w-3/4 border-l border-[var(--chekin-color-gray-3)] data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right sm:max-w-sm',\n          side === 'left' &&\n            'inset-y-0 left-0 h-full w-3/4 border-r border-[var(--chekin-color-gray-3)] data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left sm:max-w-sm',\n          side === 'top' &&\n            'inset-x-0 top-0 h-auto border-b border-[var(--chekin-color-gray-3)] data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top',\n          side === 'bottom' &&\n            'inset-x-0 bottom-0 h-auto border-t border-[var(--chekin-color-gray-3)] data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom',\n          className,\n        )}\n        {...props}\n      >\n        {children}\n        <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-[var(--chekin-radius-small)] opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:shadow-[var(--chekin-shadow-focus)] disabled:pointer-events-none\">\n          <XIcon className=\"size-4\" />\n          <span className=\"sr-only\">Close</span>\n        </SheetPrimitive.Close>\n      </SheetPrimitive.Content>\n    </SheetPortal>\n  );\n}\n\nfunction SheetHeader({className, ...props}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn('flex flex-col gap-1.5 p-4', className)}\n      {...props}\n    />\n  );\n}\n\nfunction SheetFooter({className, ...props}: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n      {...props}\n    />\n  );\n}\n\nfunction SheetTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn('font-semibold text-[var(--chekin-color-brand-navy)]', className)}\n      {...props}\n    />\n  );\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn('text-sm text-[var(--chekin-color-gray-1)]', className)}\n      {...props}\n    />\n  );\n}\n\nexport {\n  Sheet,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n};\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {ArrowLeftFromLineIcon, ArrowRightFromLineIcon} from 'lucide-react';\nimport {Button} from '../button';\nimport {LegacyInput} from '../legacy-fields/input';\nimport {cn} from '../lib/cn';\nimport {useIsMobile} from '../hooks';\nimport {Separator} from '../separator';\nimport {Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle} from '../sheet';\nimport {Skeleton} from '../skeleton';\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from '../tooltip';\nimport {SidebarContext, type SidebarContextProps} from './SidebarContext';\nimport {SidebarIcon} from './SidebarIcon';\nimport {SidebarMenuButtonContext} from './SidebarMenuButtonContext';\nimport {useSidebar} from './useSidebar';\n\nconst SIDEBAR_COOKIE_NAME_DEFAULT = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\nconst SidebarProvider = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<'div'> & {\n    defaultOpen?: boolean;\n    stateName?: string;\n    open?: boolean;\n    onOpenChange?: (open: boolean) => void;\n  }\n>(\n  (\n    {\n      defaultOpen = true,\n      open: openProp,\n      onOpenChange: setOpenProp,\n      className,\n      style,\n      children,\n      stateName = SIDEBAR_COOKIE_NAME_DEFAULT,\n      ...props\n    },\n    ref,\n  ) => {\n    const isMobile = useIsMobile({breakpoint: 641});\n    const [openMobile, setOpenMobile] = React.useState(false);\n    const [_open, _setOpen] = React.useState(defaultOpen);\n    const open = openProp ?? _open;\n    const setOpen = React.useCallback(\n      (value: boolean | ((value: boolean) => boolean)) => {\n        const openState = typeof value === 'function' ? value(open) : value;\n\n        if (setOpenProp) {\n          setOpenProp(openState);\n        } else {\n          _setOpen(openState);\n        }\n\n        document.cookie = `${stateName}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n      },\n      [setOpenProp, open, stateName],\n    );\n\n    const toggleSidebar = React.useCallback(() => {\n      return isMobile ? setOpenMobile(value => !value) : setOpen(value => !value);\n    }, [isMobile, setOpen]);\n\n    React.useEffect(() => {\n      const handleKeyDown = (event: KeyboardEvent) => {\n        if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n          event.preventDefault();\n          toggleSidebar();\n        }\n      };\n\n      window.addEventListener('keydown', handleKeyDown);\n      return () => window.removeEventListener('keydown', handleKeyDown);\n    }, [toggleSidebar]);\n\n    const state = open ? 'expanded' : 'collapsed';\n\n    const contextValue = React.useMemo<SidebarContextProps>(\n      () => ({\n        state,\n        open,\n        setOpen,\n        isMobile,\n        openMobile,\n        setOpenMobile,\n        toggleSidebar,\n      }),\n      [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n    );\n\n    return (\n      <SidebarContext.Provider value={contextValue}>\n        <TooltipProvider delayDuration={0}>\n          <div\n            style={style}\n            className={cn(\n              'group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-[var(--chekin-color-surface-input-empty)]',\n              className,\n            )}\n            ref={ref}\n            {...props}\n          >\n            {children}\n          </div>\n        </TooltipProvider>\n      </SidebarContext.Provider>\n    );\n  },\n);\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<'div'> & {\n    side?: 'left' | 'right';\n    variant?: 'sidebar' | 'floating' | 'inset';\n    collapsible?: 'offcanvas' | 'icon' | 'none';\n  }\n>(\n  (\n    {\n      side = 'left',\n      variant = 'sidebar',\n      collapsible = 'offcanvas',\n      className,\n      children,\n      ...props\n    },\n    ref,\n  ) => {\n    const {isMobile, state, openMobile, setOpenMobile} = useSidebar();\n\n    if (collapsible === 'none') {\n      return (\n        <div\n          className={cn(\n            'flex h-full w-[--sidebar-width] flex-col bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-brand-navy)]',\n            className,\n          )}\n          ref={ref}\n          {...props}\n        >\n          {children}\n        </div>\n      );\n    }\n\n    if (isMobile) {\n      return (\n        <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n          <SheetContent\n            data-sidebar=\"sidebar\"\n            data-mobile=\"true\"\n            className={cn(\n              'w-[--sidebar-width] bg-[var(--chekin-color-surface-input-empty)] p-0 text-[var(--chekin-color-brand-navy)] [&>button]:hidden',\n              className,\n            )}\n            style={{'--sidebar-width': SIDEBAR_WIDTH_MOBILE} as React.CSSProperties}\n            side={side}\n          >\n            <SheetHeader className=\"sr-only\">\n              <SheetTitle>Sidebar</SheetTitle>\n              <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n            </SheetHeader>\n            <div className=\"flex h-full w-full flex-col\">{children}</div>\n          </SheetContent>\n        </Sheet>\n      );\n    }\n\n    return (\n      <div\n        ref={ref}\n        data-testid=\"sidebar\"\n        className=\"group peer text-[var(--chekin-color-brand-navy)]\"\n        data-state={state}\n        data-collapsible={state === 'collapsed' ? collapsible : ''}\n        data-variant={variant}\n        data-side={side}\n      >\n        <div\n          className={cn(\n            'relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear',\n            'group-data-[collapsible=offcanvas]:w-0',\n            'group-data-[side=right]:rotate-180',\n            variant === 'floating' || variant === 'inset'\n              ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n              : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]',\n          )}\n        />\n        <div\n          className={cn(\n            'fixed inset-y-0 z-10 h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear',\n            side === 'left'\n              ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n              : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n            variant === 'floating' || variant === 'inset'\n              ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'\n              : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l',\n            className,\n          )}\n          {...props}\n        >\n          <div\n            data-sidebar=\"sidebar\"\n            className=\"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\n          >\n            {children}\n          </div>\n        </div>\n      </div>\n    );\n  },\n);\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<\n  React.ElementRef<typeof Button>,\n  React.ComponentProps<typeof Button> & {\n    icon?: ReactNode;\n  }\n>(({className, onClick, icon, ...props}, ref) => {\n  const {toggleSidebar, open, isMobile, openMobile} = useSidebar();\n\n  return (\n    <Button\n      ref={ref}\n      data-sidebar=\"trigger\"\n      variant=\"ghost\"\n      size=\"icon\"\n      className={cn(\n        'h-7 min-h-7 w-7',\n        {'self-center': !open, 'self-end': open},\n        className,\n      )}\n      onClick={event => {\n        onClick?.(event);\n        toggleSidebar();\n      }}\n      {...props}\n    >\n      {icon || (isMobile ? openMobile : open) ? (\n        icon || <ArrowLeftFromLineIcon />\n      ) : (\n        <ArrowRightFromLineIcon />\n      )}\n      <span className=\"sr-only\">Toggle Sidebar</span>\n    </Button>\n  );\n});\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n  ({className, ...props}, ref) => {\n    const {toggleSidebar} = useSidebar();\n\n    return (\n      <button\n        ref={ref}\n        data-sidebar=\"rail\"\n        aria-label=\"Toggle Sidebar\"\n        tabIndex={-1}\n        onClick={toggleSidebar}\n        title=\"Toggle Sidebar\"\n        className={cn(\n          'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-[var(--chekin-color-gray-3)] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n          '[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize',\n          '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n          'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-[var(--chekin-color-surface-input-empty)]',\n          '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n          className,\n        )}\n        {...props}\n      />\n    );\n  },\n);\nSidebarRail.displayName = 'SidebarRail';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(\n  ({className, ...props}, ref) => (\n    <main\n      ref={ref}\n      className={cn(\n        'relative flex w-full min-w-0 flex-col px-6 has-[.page.no-padding]:px-0',\n        'sm:peer-data-[variant=inset]:m-2 sm:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 sm:peer-data-[variant=inset]:ml-0 sm:peer-data-[variant=inset]:rounded-xl sm:peer-data-[variant=inset]:shadow',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarInput = React.forwardRef<\n  React.ElementRef<typeof LegacyInput>,\n  React.ComponentProps<typeof LegacyInput>\n>(({className, ...props}, ref) => (\n  <LegacyInput\n    ref={ref}\n    data-sidebar=\"input\"\n    className={cn('h-8 w-full bg-white shadow-none focus-visible:ring-2', className)}\n    {...props}\n  />\n));\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-sidebar=\"header\"\n      className={cn('flex flex-col gap-2 p-2', className)}\n      {...props}\n    />\n  ),\n);\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-sidebar=\"footer\"\n      className={cn('flex flex-col gap-2', className)}\n      {...props}\n    />\n  ),\n);\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = React.forwardRef<\n  React.ElementRef<typeof Separator>,\n  React.ComponentProps<typeof Separator>\n>(({className, ...props}, ref) => (\n  <Separator\n    ref={ref}\n    data-sidebar=\"separator\"\n    className={cn('w-auto', className)}\n    {...props}\n  />\n));\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-sidebar=\"content\"\n      className={cn(\n        'flex min-h-0 flex-1 flex-col gap-2 overflow-visible px-2 py-4',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-sidebar=\"group\"\n      className={cn('relative flex w-full min-w-0 flex-col', className)}\n      {...props}\n    />\n  ),\n);\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<'div'> & {asChild?: boolean}\n>(({className, asChild = false, ...props}, ref) => {\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      ref={ref}\n      data-sidebar=\"group-label\"\n      className={cn(\n        'flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-[var(--chekin-color-gray-1)] outline-none transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n        'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n        className,\n      )}\n      {...props}\n    />\n  );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupAction = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<'button'> & {asChild?: boolean}\n>(({className, asChild = false, ...props}, ref) => {\n  const Comp = asChild ? Slot : 'button';\n\n  return (\n    <Comp\n      ref={ref}\n      data-sidebar=\"group-action\"\n      className={cn(\n        'absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-[var(--chekin-color-brand-navy)] outline-none transition-transform hover:bg-[var(--chekin-color-gray-3)] focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0 after:absolute after:-inset-2 after:sm:hidden group-data-[collapsible=icon]:hidden',\n        className,\n      )}\n      {...props}\n    />\n  );\n});\nSidebarGroupAction.displayName = 'SidebarGroupAction';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n  ({className, ...props}, ref) => (\n    <div\n      ref={ref}\n      data-sidebar=\"group-content\"\n      className={cn('w-full text-sm', className)}\n      {...props}\n    />\n  ),\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n  ({className, ...props}, ref) => (\n    <ul\n      ref={ref}\n      data-sidebar=\"menu\"\n      className={cn('flex w-full min-w-0 flex-col', className)}\n      {...props}\n    />\n  ),\n);\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n  ({className, ...props}, ref) => (\n    <li\n      ref={ref}\n      data-sidebar=\"menu-item\"\n      className={cn('group/menu-item relative', className)}\n      {...props}\n    />\n  ),\n);\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n  'peer/menu-button group/menu-button relative flex min-h-[40px] w-full items-center gap-2 rounded-lg px-2 text-left text-md font-medium capitalize outline-none transition-[width,height,padding,color,background-color] focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 group-data-[collapsible=icon]:!size-10 group-data-[collapsible=icon]:!p-2 [&>*:not(:first-child)]:truncate [&>*:nth-child(2)]:grow [&>svg]:size-4 [&>svg]:shrink-0 data-[active=false]:data-[highlighted=false]:bg-transparent data-[active=false]:data-[highlighted=false]:text-[var(--chekin-color-gray-1)] data-[active=false]:data-[highlighted=false]:hover:bg-[var(--chekin-color-surface-input-empty)] data-[active=false]:data-[highlighted=true]:bg-transparent data-[active=false]:data-[highlighted=true]:hover:bg-[var(--chekin-color-surface-input-empty)] data-[active=true]:data-[highlighted=false]:bg-[var(--chekin-color-surface-pressed)] data-[active=true]:data-[highlighted=false]:font-semibold data-[active=true]:data-[highlighted=false]:text-[var(--chekin-color-gray-1)] data-[active=true]:data-[highlighted=true]:bg-[var(--chekin-color-surface-pressed)] data-[active=true]:data-[highlighted=true]:font-semibold data-[active=true]:data-[highlighted=true]:text-[var(--chekin-color-brand-blue)]',\n  {\n    variants: {\n      variant: {\n        default: '',\n        outline:\n          'bg-white shadow-[0_0_0_1px_rgba(22,22,67,0.12)] hover:bg-[var(--chekin-color-surface-input-empty)]',\n      },\n      size: {\n        default: 'h-8 text-md',\n        sm: 'h-7 text-xs',\n        lg: 'h-12 text-sm group-data-[collapsible=icon]:!p-0',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n    },\n  },\n);\n\nconst SidebarMenuButton = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<'button'> & {\n    asChild?: boolean;\n    isActive?: boolean;\n    highlighted?: boolean;\n    tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n  } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n  (\n    {\n      asChild = false,\n      isActive = false,\n      highlighted = false,\n      variant = 'default',\n      size = 'default',\n      tooltip,\n      className,\n      ...props\n    },\n    ref,\n  ) => {\n    const Comp = asChild ? Slot : 'button';\n    const {isMobile, state} = useSidebar();\n\n    const button = (\n      <Comp\n        ref={ref}\n        data-sidebar=\"menu-button\"\n        data-size={size}\n        data-active={isActive}\n        data-highlighted={highlighted}\n        className={cn(sidebarMenuButtonVariants({variant, size}), className)}\n        {...props}\n      />\n    );\n\n    if (!tooltip) {\n      return (\n        <SidebarMenuButtonContext.Provider value={{isActive, highlighted}}>\n          {button}\n        </SidebarMenuButtonContext.Provider>\n      );\n    }\n\n    const tooltipProps = typeof tooltip === 'string' ? {children: tooltip} : tooltip;\n\n    return (\n      <SidebarMenuButtonContext.Provider value={{isActive, highlighted}}>\n        <Tooltip>\n          <TooltipTrigger asChild>{button}</TooltipTrigger>\n          <TooltipContent\n            side=\"right\"\n            align=\"center\"\n            hidden={state !== 'collapsed' || isMobile}\n            className=\"capitalize\"\n            variant=\"dark\"\n            {...tooltipProps}\n          />\n        </Tooltip>\n      </SidebarMenuButtonContext.Provider>\n    );\n  },\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<'button'> & {\n    asChild?: boolean;\n    showOnHover?: boolean;\n  }\n>(({className, asChild = false, showOnHover = false, ...props}, ref) => {\n  const Comp = asChild ? Slot : 'button';\n\n  return (\n    <Comp\n      ref={ref}\n      data-sidebar=\"menu-action\"\n      className={cn(\n        'absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-[var(--chekin-color-brand-navy)] outline-none transition-transform hover:bg-[var(--chekin-color-gray-3)] focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0 after:absolute after:-inset-2 after:sm:hidden peer-data-[size=sm]/menu-button:top-1 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 group-data-[collapsible=icon]:hidden',\n        showOnHover &&\n          'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 sm:opacity-0',\n        className,\n      )}\n      {...props}\n    />\n  );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n  ({className, ...props}, ref) => {\n    const {open, isMobile, openMobile} = useSidebar();\n    const isOpen = isMobile ? openMobile : open;\n\n    return (\n      <div\n        ref={ref}\n        data-sidebar=\"menu-badge\"\n        className={cn(\n          isOpen\n            ? 'left-auto right-1 h-5 min-w-5'\n            : 'absolute bottom-1/2 left-1/2 top-auto h-4 min-w-4',\n          'pointer-events-none flex select-none items-center justify-center rounded-md px-1 text-xs font-medium leading-tight text-[var(--chekin-color-gray-1)] tabular-nums peer-data-[size=sm]/menu-button:top-1 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5',\n          className,\n        )}\n        {...props}\n      />\n    );\n  },\n);\nSidebarMenuBadge.displayName = 'SidebarMenuBadge';\n\nconst SidebarMenuSkeleton = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<'div'> & {\n    showIcon?: boolean;\n  }\n>(({className, showIcon = false, ...props}, ref) => {\n  const width = React.useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);\n\n  return (\n    <div\n      ref={ref}\n      data-sidebar=\"menu-skeleton\"\n      className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n      {...props}\n    >\n      {showIcon && (\n        <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />\n      )}\n      <Skeleton\n        className=\"h-4 max-w-[--skeleton-width] flex-1\"\n        data-sidebar=\"menu-skeleton-text\"\n        style={{'--skeleton-width': width} as React.CSSProperties}\n      />\n    </div>\n  );\n});\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton';\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n  ({className, ...props}, ref) => (\n    <ul\n      ref={ref}\n      data-sidebar=\"menu-sub\"\n      className={cn(\n        'ml-6 mr-2 flex min-w-0 flex-col gap-0.5 border-l border-[var(--chekin-color-gray-3)] py-1 pl-4 group-data-[collapsible=icon]:hidden',\n        className,\n      )}\n      {...props}\n    />\n  ),\n);\nSidebarMenuSub.displayName = 'SidebarMenuSub';\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n  ({...props}, ref) => <li ref={ref} {...props} />,\n);\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem';\n\nconst sidebarMenuSubButtonVariants = cva(\n  'flex min-w-0 items-center gap-2 overflow-hidden rounded-md px-2 text-left text-[var(--chekin-color-gray-1)] outline-none transition-colors duration-200 hover:bg-[var(--chekin-color-surface-input-empty)] hover:text-[var(--chekin-color-brand-navy)] focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-[var(--chekin-color-surface-pressed)] data-[active=true]:font-medium data-[active=true]:text-[var(--chekin-color-brand-navy)] group-data-[collapsible=icon]:hidden [&>span:nth-child(2)]:truncate [&>svg]:shrink-0',\n  {\n    variants: {\n      variant: {\n        default: '',\n        outline:\n          'bg-white shadow-[0_0_0_1px_rgba(22,22,67,0.12)] hover:bg-[var(--chekin-color-surface-input-empty)]',\n      },\n      size: {\n        sm: 'h-6 px-1.5 py-0.5 text-xs [&>svg]:size-3',\n        default: 'h-7 px-2 py-1 text-[15px] [&>svg]:size-3.5',\n        lg: 'h-8 px-2.5 py-1.5 text-sm [&>svg]:size-4',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n    },\n  },\n);\n\nconst SidebarMenuSubButton = React.forwardRef<\n  HTMLAnchorElement,\n  React.ComponentProps<'a'> & {\n    asChild?: boolean;\n    isActive?: boolean;\n  } & VariantProps<typeof sidebarMenuSubButtonVariants>\n>(\n  (\n    {\n      asChild = false,\n      isActive,\n      variant = 'default',\n      size = 'default',\n      className,\n      ...props\n    },\n    ref,\n  ) => {\n    const Comp = asChild ? Slot : 'a';\n\n    return (\n      <Comp\n        ref={ref}\n        data-sidebar=\"menu-sub-button\"\n        data-size={size}\n        data-active={isActive}\n        className={cn(sidebarMenuSubButtonVariants({variant, size}), className)}\n        {...props}\n      />\n    );\n  },\n);\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton';\n\nexport {\n  Sidebar,\n  SidebarContent,\n  SidebarFooter,\n  SidebarGroup,\n  SidebarGroupAction,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarHeader,\n  SidebarIcon,\n  SidebarInput,\n  SidebarInset,\n  SidebarMenu,\n  SidebarMenuAction,\n  SidebarMenuBadge,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSkeleton,\n  SidebarMenuSub,\n  SidebarMenuSubButton,\n  SidebarMenuSubItem,\n  SidebarProvider,\n  SidebarRail,\n  SidebarSeparator,\n  SidebarTrigger,\n};\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type SkeletonProps = ComponentProps<'div'>;\n\nexport function Skeleton({className, ...props}: SkeletonProps) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn(\n        'animate-pulse rounded-md bg-[var(--chekin-color-gray-3)]',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n","import {createContext} from 'react';\n\nexport type SidebarContextProps = {\n  state: 'expanded' | 'collapsed';\n  open: boolean;\n  setOpen: (open: boolean | ((open: boolean) => boolean)) => void;\n  openMobile: boolean;\n  setOpenMobile: (open: boolean | ((open: boolean) => boolean)) => void;\n  isMobile: boolean;\n  toggleSidebar: () => void;\n};\n\nexport const SidebarContext = createContext<SidebarContextProps | null>(null);\n","import {useContext} from 'react';\nimport {SidebarMenuButtonContext} from './SidebarMenuButtonContext';\n\nexport function useSidebarMenuButton() {\n  return useContext(SidebarMenuButtonContext);\n}\n","import {createContext} from 'react';\n\nexport type SidebarMenuButtonContextProps = {\n  isActive: boolean;\n  highlighted: boolean;\n};\n\nexport const SidebarMenuButtonContext =\n  createContext<SidebarMenuButtonContextProps | null>(null);\n","import type {FC, PropsWithChildren} from 'react';\nimport {cn} from '../lib/cn';\nimport {useSidebarMenuButton} from './useSidebarMenuButton';\n\nexport interface SidebarIconProps extends PropsWithChildren {\n  isActive?: boolean;\n  highlighted?: boolean;\n  size?: 'M' | 'L';\n  className?: string;\n}\n\nexport const SidebarIcon: FC<SidebarIconProps> = ({\n  children,\n  isActive: isActiveProp,\n  highlighted: highlightedProp,\n  size = 'M',\n  className,\n}) => {\n  const context = useSidebarMenuButton();\n  const isActive = context?.isActive ?? isActiveProp ?? false;\n  const highlighted = context?.highlighted ?? highlightedProp ?? false;\n\n  const backgroundClassName = (() => {\n    if (isActive) {\n      return highlighted\n        ? 'bg-[var(--chekin-color-surface-autocomplete)]'\n        : 'bg-[var(--chekin-color-gray-3)]';\n    }\n\n    return highlighted\n      ? 'bg-[var(--chekin-color-surface-pressed)]'\n      : 'bg-[var(--chekin-color-surface-input-empty)]';\n  })();\n\n  return (\n    <div\n      className={cn(\n        'sidebar-icon flex items-center justify-center rounded-[50%] transition-colors ease-in-out',\n        backgroundClassName,\n        highlighted\n          ? 'text-[var(--chekin-color-brand-blue)]'\n          : 'text-[var(--chekin-color-gray-1)]',\n        !isActive &&\n          (highlighted\n            ? 'group-hover/menu-button:bg-[var(--chekin-color-surface-autocomplete)]'\n            : 'group-hover/menu-button:bg-[var(--chekin-color-gray-3)]'),\n        {\n          'h-6 w-6 [&>svg]:h-4 [&>svg]:w-4': size === 'M',\n          'h-8 w-8 [&>svg]:h-5 [&>svg]:w-5': size === 'L',\n        },\n        className,\n      )}\n    >\n      {children}\n    </div>\n  );\n};\n","import {useContext} from 'react';\nimport {SidebarContext} from './SidebarContext';\n\nexport function useSidebar() {\n  const context = useContext(SidebarContext);\n\n  if (!context) {\n    throw new Error('useSidebar must be used within a SidebarProvider.');\n  }\n\n  return context;\n}\n\nexport function useSidebarSafe() {\n  return useContext(SidebarContext);\n}\n","const VALUE_PART = 1;\n\nexport const getSidebarState = (stateName: string) =>\n  document.cookie\n    .split('; ')\n    .find(row => row.startsWith(`${stateName}=`))\n    ?.split('=')[VALUE_PART] === 'true';\n","import {\n  forwardRef,\n  useEffect,\n  useRef,\n  useState,\n  useCallback,\n  useImperativeHandle,\n  useLayoutEffect,\n} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {useIsMobile} from '../hooks/use-is-mobile';\nimport ReactSignatureCanvas from 'react-signature-canvas';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\n\nconst SIGNATURE_PROPS = {\n  minWidth: 1.5,\n  maxWidth: 2,\n  dotSize: 2,\n  velocityFilterWeight: 0.7,\n  throttle: 16,\n};\n\nconst PEN_COLOR_VAR = '--chekin-blue-900';\nconst PEN_COLOR_FALLBACK = '#161643';\n\nconst TARGET_WIDTH = 520;\nconst TARGET_HEIGHT = 300;\nconst ASPECT_RATIO = TARGET_WIDTH / TARGET_HEIGHT;\nconst MIN_HEIGHT = 250;\nconst RESERVED_BELOW = 200;\n\ntype SignatureCanvasProps = {\n  onClear?: () => void;\n  onEnable?: () => void;\n  onEnd?: () => void;\n  className?: string;\n  enabled?: boolean;\n};\n\nexport type SignatureCanvasRef = Pick<\n  ReactSignatureCanvas,\n  'clear' | 'isEmpty' | 'toDataURL'\n> & {\n  fromDataURL: (\n    ...args: Parameters<ReactSignatureCanvas['fromDataURL']>\n  ) => ReturnType<ReactSignatureCanvas['fromDataURL']> | undefined;\n  getCanvas: () => ReturnType<ReactSignatureCanvas['getCanvas']> | undefined;\n  toTrimmedDataURL: (type?: string, encoderOptions?: number, padding?: number) => string;\n};\n\nfunction getCanvasPixelPadding(canvas: HTMLCanvasElement, padding: number) {\n  if (!Number.isFinite(padding) || padding <= 0) return 0;\n\n  const cssWidth = canvas.getBoundingClientRect().width;\n  const scale = cssWidth > 0 ? canvas.width / cssWidth : 1;\n\n  return Math.round(padding * scale);\n}\n\nfunction getTrimmedCanvas(\n  canvas: HTMLCanvasElement,\n  padding = 10,\n): HTMLCanvasElement | null {\n  const ctx = canvas.getContext('2d');\n  if (!ctx) return null;\n\n  const {width, height} = canvas;\n  const imageData = ctx.getImageData(0, 0, width, height);\n  const {data} = imageData;\n\n  let minX = width;\n  let minY = height;\n  let maxX = 0;\n  let maxY = 0;\n  let hasContent = false;\n\n  // Find bounding box of non-transparent pixels\n  for (let y = 0; y < height; y++) {\n    for (let x = 0; x < width; x++) {\n      const alpha = data[(y * width + x) * 4 + 3];\n      if (alpha > 0) {\n        hasContent = true;\n        if (x < minX) minX = x;\n        if (y < minY) minY = y;\n        if (x > maxX) maxX = x;\n        if (y > maxY) maxY = y;\n      }\n    }\n  }\n\n  if (!hasContent) return null;\n\n  // Add padding\n  const pixelPadding = getCanvasPixelPadding(canvas, padding);\n  minX = Math.max(0, minX - pixelPadding);\n  minY = Math.max(0, minY - pixelPadding);\n  maxX = Math.min(width - 1, maxX + pixelPadding);\n  maxY = Math.min(height - 1, maxY + pixelPadding);\n\n  const trimmedWidth = maxX - minX + 1;\n  const trimmedHeight = maxY - minY + 1;\n\n  // Create trimmed canvas\n  const trimmedCanvas = document.createElement('canvas');\n  trimmedCanvas.width = trimmedWidth;\n  trimmedCanvas.height = trimmedHeight;\n\n  const trimmedCtx = trimmedCanvas.getContext('2d');\n  if (!trimmedCtx) return null;\n\n  trimmedCtx.drawImage(\n    canvas,\n    minX,\n    minY,\n    trimmedWidth,\n    trimmedHeight,\n    0,\n    0,\n    trimmedWidth,\n    trimmedHeight,\n  );\n\n  return trimmedCanvas;\n}\n\nconst SignatureCanvas = forwardRef<SignatureCanvasRef, SignatureCanvasProps>(\n  ({onClear, onEnd, onEnable, className, enabled}, ref) => {\n    const {t} = useTranslation();\n    const isMobile = useIsMobile();\n    const canvasRef = useRef<ReactSignatureCanvas | null>(null);\n    const containerRef = useRef<HTMLDivElement | null>(null);\n    const [size, setSize] = useState({width: TARGET_WIDTH, height: TARGET_HEIGHT});\n    const [hasSignature, setHasSignature] = useState(false);\n    const [penColor, setPenColor] = useState(PEN_COLOR_FALLBACK);\n\n    const recalculateSize = useCallback(() => {\n      const container = containerRef.current;\n      if (!container) return;\n\n      const ownerWindow = container.ownerDocument.defaultView ?? window;\n\n      const width = Math.min(container.clientWidth, TARGET_WIDTH);\n      const aspectHeight = Math.round(width / ASPECT_RATIO);\n\n      const availableHeight =\n        ownerWindow.innerHeight - container.getBoundingClientRect().top - RESERVED_BELOW;\n\n      // Keep the aspect-ratio height, but never below MIN_HEIGHT (e.g. narrow\n      // mobile widths) and never taller than the space the viewport can give the\n      // dialog.\n      const height = Math.max(\n        MIN_HEIGHT,\n        Math.min(aspectHeight, Math.floor(availableHeight)),\n      );\n\n      setSize(prev => {\n        if (prev.width === width && prev.height === height) {\n          return prev;\n        }\n        return {width, height};\n      });\n    }, []);\n\n    useLayoutEffect(() => {\n      const container = containerRef.current;\n      if (!container) return;\n\n      const resolved = getComputedStyle(container).getPropertyValue(PEN_COLOR_VAR).trim();\n      if (resolved) setPenColor(resolved);\n    }, []);\n\n    useEffect(() => {\n      const canvas = canvasRef.current?.getCanvas();\n      if (!canvas) return;\n\n      const ownerDocument = canvas.ownerDocument;\n      if (typeof document === 'undefined' || ownerDocument === document) return;\n\n      const forwardRelease = () => {\n        document.dispatchEvent(\n          new MouseEvent('mouseup', {bubbles: true, button: 0, which: 1}),\n        );\n      };\n\n      ownerDocument.addEventListener('mouseup', forwardRelease);\n      return () => ownerDocument.removeEventListener('mouseup', forwardRelease);\n    }, []);\n\n    useEffect(() => {\n      const container = containerRef.current;\n      if (!container) return;\n\n      recalculateSize();\n\n      const ownerWindow = container.ownerDocument.defaultView ?? window;\n      const observer = new ResizeObserver(() => recalculateSize());\n      observer.observe(container);\n      ownerWindow.addEventListener('resize', recalculateSize);\n\n      return () => {\n        observer.disconnect();\n        ownerWindow.removeEventListener('resize', recalculateSize);\n      };\n    }, [recalculateSize]);\n\n    // Scale canvas for HiDPI/Retina displays\n    useLayoutEffect(() => {\n      const canvas = canvasRef.current?.getCanvas();\n      if (!canvas) return;\n\n      const ratio = window.devicePixelRatio || 1;\n      const ctx = canvas.getContext('2d');\n      if (!ctx) return;\n\n      // Set actual canvas size in memory (scaled up)\n      canvas.width = size.width * ratio;\n      canvas.height = size.height * ratio;\n\n      // Scale the context to match\n      ctx.scale(ratio, ratio);\n\n      // Set display size via CSS\n      canvas.style.width = `${size.width}px`;\n      canvas.style.height = `${size.height}px`;\n    }, [size, enabled]);\n\n    const handleEnd = useCallback(() => {\n      const isEmpty = canvasRef.current?.isEmpty() ?? true;\n      setHasSignature(!isEmpty);\n      onEnd?.();\n    }, [onEnd]);\n\n    const handleClear = useCallback(() => {\n      canvasRef.current?.clear();\n      setHasSignature(false);\n      onClear?.();\n    }, [onClear]);\n\n    useImperativeHandle(ref, () => ({\n      clear: () => {\n        canvasRef.current?.clear();\n        setHasSignature(false);\n      },\n      isEmpty: () => canvasRef.current?.isEmpty() ?? true,\n      fromDataURL: (...args) => canvasRef.current?.fromDataURL(...args),\n      toDataURL: (type?: string, encoderOptions?: number) =>\n        canvasRef.current?.toDataURL(type, encoderOptions) ?? '',\n      toTrimmedDataURL: (type = 'image/png', encoderOptions?: number, padding = 10) => {\n        const canvas = canvasRef.current?.getCanvas();\n        if (!canvas) return '';\n\n        const trimmed = getTrimmedCanvas(canvas, padding);\n        if (!trimmed) return '';\n\n        return trimmed.toDataURL(type, encoderOptions);\n      },\n      getCanvas: (...args) => canvasRef.current?.getCanvas(...args),\n    }));\n\n    return (\n      <div\n        ref={containerRef}\n        className={cn('relative flex w-full flex-col items-center', className)}\n      >\n        <div\n          className={cn(\n            'relative overflow-hidden rounded-xl border-2',\n            'border-[var(--signature-canvas-border)] bg-[var(--signature-canvas-bg)]',\n          )}\n          style={{width: size.width, height: size.height}}\n        >\n          <ReactSignatureCanvas\n            ref={canvasRef}\n            data-testid=\"canvas\"\n            canvasProps={{\n              width: size.width,\n              height: size.height,\n              style: {width: size.width, height: size.height},\n            }}\n            onEnd={handleEnd}\n            penColor={penColor}\n            {...SIGNATURE_PROPS}\n          />\n          {!enabled && (\n            <button\n              type=\"button\"\n              className={cn(\n                'absolute inset-0 flex cursor-pointer items-center justify-center',\n                'bg-transparent',\n              )}\n              onClick={onEnable}\n              data-testid=\"signature-placeholder\"\n            >\n              <span\n                className={cn(\n                  'max-w-[200px] break-words text-center text-lg font-medium',\n                  'text-[var(--signature-canvas-placeholder-text)] opacity-60',\n                )}\n              >\n                {isMobile ? t('tap_here_to_sign') : t('click_here_to_sign')}\n              </span>\n            </button>\n          )}\n        </div>\n        <div\n          className={cn('text-right', {\n            invisible: !enabled || !hasSignature,\n          })}\n          style={{width: size.width}}\n        >\n          <Button\n            variant=\"link\"\n            className={cn(\n              'ml-auto mt-2 h-[30px] min-w-[70px] select-none rounded-sm px-2 py-0.5 text-right',\n              'text-xs uppercase hover:opacity-[0.88] active:opacity-100',\n            )}\n            onClick={handleClear}\n          >\n            {t('clear')}\n          </Button>\n        </div>\n      </div>\n    );\n  },\n);\n\nSignatureCanvas.displayName = 'SignatureCanvas';\n\nexport {SignatureCanvas};\n","import * as React from 'react';\nimport {CarouselNext, CarouselPrevious} from './CarouselControls';\nimport {CarouselRoot, type CarouselRootProps} from './CarouselRoot';\nimport {CarouselSlide} from './CarouselSlide';\nimport {CarouselTrack} from './CarouselTrack';\nimport {CarouselViewport} from './CarouselViewport';\n\nexport type CarouselProps = CarouselRootProps & {\n  children: React.ReactNode;\n};\n\nexport function Carousel({children, slideCount, ...props}: CarouselProps) {\n  return (\n    <CarouselRoot slideCount={slideCount ?? React.Children.count(children)} {...props}>\n      <CarouselViewport>\n        <CarouselTrack>\n          {React.Children.map(children, slide => (\n            <CarouselSlide>{slide}</CarouselSlide>\n          ))}\n        </CarouselTrack>\n      </CarouselViewport>\n      <CarouselPrevious />\n      <CarouselNext />\n    </CarouselRoot>\n  );\n}\n","import * as React from 'react';\nimport {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {useCarouselContext} from './CarouselContext';\n\ntype CarouselControlProps = Omit<React.ComponentPropsWithoutRef<'button'>, 'children'> & {\n  children?: React.ReactNode;\n};\n\nexport const CarouselPrevious = React.forwardRef<HTMLButtonElement, CarouselControlProps>(\n  ({className, children, onClick, ...props}, ref) => {\n    const {canGoPrevious, goToPrevious} = useCarouselContext('CarouselPrevious');\n\n    if (!canGoPrevious) {\n      return null;\n    }\n\n    return (\n      <button\n        ref={ref}\n        type=\"button\"\n        data-slot=\"carousel-previous\"\n        aria-label=\"Previous slide\"\n        className={cn(\n          `absolute left-0 top-1/2 flex size-8 -translate-y-1/2 translate-x-2 items-center\n          justify-center rounded-full border-0 bg-[var(--carousel-control-bg)]\n          text-[var(--carousel-control-color)]`,\n          className,\n        )}\n        onClick={event => {\n          onClick?.(event);\n          goToPrevious();\n        }}\n        {...props}\n      >\n        {children ?? <ChevronLeft className=\"size-4\" />}\n      </button>\n    );\n  },\n);\n\nCarouselPrevious.displayName = 'CarouselPrevious';\n\nexport const CarouselNext = React.forwardRef<HTMLButtonElement, CarouselControlProps>(\n  ({className, children, onClick, ...props}, ref) => {\n    const {canGoNext, goToNext} = useCarouselContext('CarouselNext');\n\n    if (!canGoNext) {\n      return null;\n    }\n\n    return (\n      <button\n        ref={ref}\n        type=\"button\"\n        data-slot=\"carousel-next\"\n        aria-label=\"Next slide\"\n        className={cn(\n          `absolute right-0 top-1/2 flex size-8 -translate-y-1/2 -translate-x-2 items-center\n          justify-center rounded-full border-0 bg-[var(--carousel-control-bg)]\n          text-[var(--carousel-control-color)]`,\n          className,\n        )}\n        onClick={event => {\n          onClick?.(event);\n          goToNext();\n        }}\n        {...props}\n      >\n        {children ?? <ChevronRight className=\"size-4\" />}\n      </button>\n    );\n  },\n);\n\nCarouselNext.displayName = 'CarouselNext';\n","import * as React from 'react';\n\ntype CarouselContextValue = {\n  index: number;\n  slideCount: number;\n  canGoPrevious: boolean;\n  canGoNext: boolean;\n  loop: boolean;\n  setIndex: (index: number) => void;\n  goToPrevious: () => void;\n  goToNext: () => void;\n  registerSlide: () => () => void;\n};\n\nexport const CarouselContext = React.createContext<CarouselContextValue | null>(null);\n\nexport function useCarouselContext(componentName: string) {\n  const context = React.useContext(CarouselContext);\n\n  if (!context) {\n    throw new Error(`${componentName} must be used within CarouselRoot`);\n  }\n\n  return context;\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {CarouselContext} from './CarouselContext';\n\nexport type CarouselRootProps = React.ComponentPropsWithoutRef<'div'> & {\n  index?: number;\n  defaultIndex?: number;\n  slideCount?: number;\n  loop?: boolean;\n  onIndexChange?: (index: number) => void;\n};\n\nexport const CarouselRoot = React.forwardRef<HTMLDivElement, CarouselRootProps>(\n  (\n    {\n      className,\n      index: controlledIndex,\n      defaultIndex = 0,\n      slideCount: controlledSlideCount,\n      loop = false,\n      onIndexChange,\n      children,\n      ...props\n    },\n    ref,\n  ) => {\n    const [uncontrolledIndex, setUncontrolledIndex] = React.useState(defaultIndex);\n    const [registeredSlideCount, setRegisteredSlideCount] = React.useState(0);\n\n    const slideCount = controlledSlideCount ?? registeredSlideCount;\n    const isControlled = controlledIndex !== undefined;\n    const index = isControlled ? controlledIndex : uncontrolledIndex;\n    const maxIndex = Math.max(0, slideCount - 1);\n    const normalizedIndex = Math.min(Math.max(index, 0), maxIndex);\n    const canGoPrevious = loop ? slideCount > 1 : normalizedIndex > 0;\n    const canGoNext = loop ? slideCount > 1 : normalizedIndex < maxIndex;\n\n    const setIndex = React.useCallback(\n      (nextIndex: number) => {\n        const clampedIndex = Math.min(Math.max(nextIndex, 0), maxIndex);\n\n        if (!isControlled) {\n          setUncontrolledIndex(clampedIndex);\n        }\n\n        onIndexChange?.(clampedIndex);\n      },\n      [isControlled, maxIndex, onIndexChange],\n    );\n\n    const goToPrevious = React.useCallback(() => {\n      if (!canGoPrevious) {\n        return;\n      }\n\n      setIndex(normalizedIndex === 0 ? maxIndex : normalizedIndex - 1);\n    }, [canGoPrevious, maxIndex, normalizedIndex, setIndex]);\n\n    const goToNext = React.useCallback(() => {\n      if (!canGoNext) {\n        return;\n      }\n\n      setIndex(normalizedIndex === maxIndex ? 0 : normalizedIndex + 1);\n    }, [canGoNext, maxIndex, normalizedIndex, setIndex]);\n\n    const registerSlide = React.useCallback(() => {\n      setRegisteredSlideCount(count => count + 1);\n\n      return () => setRegisteredSlideCount(count => Math.max(0, count - 1));\n    }, []);\n\n    const contextValue = React.useMemo(\n      () => ({\n        index: normalizedIndex,\n        slideCount,\n        canGoPrevious,\n        canGoNext,\n        loop,\n        setIndex,\n        goToPrevious,\n        goToNext,\n        registerSlide,\n      }),\n      [\n        normalizedIndex,\n        slideCount,\n        canGoPrevious,\n        canGoNext,\n        loop,\n        setIndex,\n        goToPrevious,\n        goToNext,\n        registerSlide,\n      ],\n    );\n\n    return (\n      <CarouselContext.Provider value={contextValue}>\n        <div\n          ref={ref}\n          data-slot=\"carousel\"\n          className={cn('relative h-full w-full', className)}\n          {...props}\n        >\n          {children}\n        </div>\n      </CarouselContext.Provider>\n    );\n  },\n);\n\nCarouselRoot.displayName = 'CarouselRoot';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {useCarouselContext} from './CarouselContext';\n\nexport const CarouselSlide = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<'div'>\n>(({className, ...props}, ref) => {\n  const {registerSlide} = useCarouselContext('CarouselSlide');\n\n  React.useEffect(() => registerSlide(), [registerSlide]);\n\n  return (\n    <div\n      ref={ref}\n      data-slot=\"carousel-slide\"\n      className={cn('flex h-full w-full shrink-0 items-center justify-center', className)}\n      {...props}\n    />\n  );\n});\n\nCarouselSlide.displayName = 'CarouselSlide';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {useCarouselContext} from './CarouselContext';\n\nexport const CarouselTrack = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<'div'>\n>(({className, style, ...props}, ref) => {\n  const {index} = useCarouselContext('CarouselTrack');\n\n  return (\n    <div\n      ref={ref}\n      data-slot=\"carousel-track\"\n      className={cn(\n        'flex h-full w-full transition-transform duration-300 ease-in-out',\n        className,\n      )}\n      style={{transform: `translateX(-${index * 100}%)`, ...style}}\n      {...props}\n    />\n  );\n});\n\nCarouselTrack.displayName = 'CarouselTrack';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport const CarouselViewport = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentPropsWithoutRef<'div'>\n>(({className, ...props}, ref) => (\n  <div\n    ref={ref}\n    data-slot=\"carousel-viewport\"\n    className={cn('relative h-full w-full overflow-hidden', className)}\n    {...props}\n  />\n));\n\nCarouselViewport.displayName = 'CarouselViewport';\n","import * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport {cn} from '../lib/cn';\n\nconst Slider = React.forwardRef<\n  React.ElementRef<typeof SliderPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({className, ...props}, ref) => (\n  <SliderPrimitive.Root\n    ref={ref}\n    className={cn('relative flex w-full touch-none select-none items-center', className)}\n    {...props}\n  >\n    <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-[var(--slider-track-bg)]\">\n      <SliderPrimitive.Range className=\"absolute h-full bg-[var(--slider-range-bg)]\" />\n    </SliderPrimitive.Track>\n    <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border cursor-pointer border-[var(--slider-thumb-border)] bg-[var(--slider-thumb-bg)] shadow transition-all hover:brightness-110 hover:scale-105 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--slider-focus-ring)] disabled:pointer-events-none disabled:opacity-50\" />\n  </SliderPrimitive.Root>\n));\n\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport {Slider};\n","import {type MouseEvent, memo} from 'react';\nimport {Pencil, Trash2} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\nimport {Switch} from '../switch';\n\nexport type SmallGridSingleItemProps = {\n  title?: string;\n  subtitle?: string;\n  active?: boolean;\n  onActiveSwitch?: (active: boolean) => void;\n  onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n  onDelete?: (event: MouseEvent<HTMLButtonElement>) => void;\n  onEdit?: (event: MouseEvent<HTMLButtonElement>) => void;\n  disabled?: boolean;\n  readOnly?: boolean;\n  error?: string;\n  className?: string;\n};\n\nexport const SmallGridSingleItem = memo(\n  ({\n    title,\n    subtitle,\n    active = false,\n    onActiveSwitch,\n    onDelete,\n    onEdit,\n    onClick,\n    disabled,\n    readOnly,\n    error,\n    className,\n  }: SmallGridSingleItemProps) => {\n    const {t} = useTranslation();\n\n    const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n      if (!disabled && onClick) onClick(event);\n    };\n\n    const hasActions = !readOnly && (onDelete || onEdit);\n    const hasSwitch = onActiveSwitch && !readOnly;\n\n    return (\n      <div\n        onClick={handleClick}\n        className={cn(\n          'relative flex h-full w-full shrink-0 flex-col gap-3',\n          'box-border rounded-md px-5 py-4 text-left text-base font-semibold text-[var(--chekin-color-brand-navy)]',\n          'shadow-[0_0_10px_rgba(111,194,255,0.2)]',\n          disabled && 'cursor-not-allowed',\n          !disabled && onClick && 'cursor-pointer',\n          !disabled && !onClick && 'cursor-default',\n          className,\n        )}\n      >\n        <div className=\"flex w-full items-start justify-between gap-4\">\n          <div className=\"flex-1\">\n            <div className=\"line-clamp-2 overflow-hidden text-ellipsis break-all\">\n              {title}\n            </div>\n            {subtitle && (\n              <div className=\"line-clamp-2 overflow-hidden text-ellipsis text-[15px] font-medium leading-6 text-[var(--chekin-color-gray-2)]\">\n                {subtitle}\n              </div>\n            )}\n          </div>\n          {hasActions && (\n            <div className=\"flex items-center justify-end gap-2\">\n              {onDelete && (\n                <Button\n                  disabled={disabled}\n                  onClick={onDelete}\n                  className=\"size-8\"\n                  size=\"icon\"\n                  variant=\"outline\"\n                >\n                  <Trash2 className=\"h-5 w-5 text-[var(--chekin-color-brand-red)]\" />\n                </Button>\n              )}\n              {onEdit && (\n                <Button\n                  className=\"size-8\"\n                  size=\"icon\"\n                  disabled={disabled}\n                  onClick={onEdit}\n                  variant=\"outline\"\n                >\n                  <Pencil className=\"h-5 w-5 text-[var(--chekin-color-brand-blue)]\" />\n                </Button>\n              )}\n            </div>\n          )}\n        </div>\n\n        {hasSwitch && (\n          <div className={cn('flex items-center', !active && 'opacity-60')}>\n            <Switch\n              onChange={onActiveSwitch}\n              disabled={disabled}\n              value={active}\n              label={t('active')}\n              onClick={event => event.stopPropagation()}\n            />\n          </div>\n        )}\n\n        {error && (\n          <div className=\"absolute bottom-1 right-2 text-xs text-[var(--chekin-color-brand-red)]\">\n            {error}\n          </div>\n        )}\n      </div>\n    );\n  },\n);\n\nSmallGridSingleItem.displayName = 'SmallGridSingleItem';\n","import {useTranslation} from 'react-i18next';\nimport {ArrowDown, ArrowDownUpIcon, ArrowUp, Minus} from 'lucide-react';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from '../dropdown-menu';\nimport {cn} from '../lib/cn';\nimport type {SortingByVariant} from './types';\n\nexport type SortingActionValue = 'asc' | 'desc' | null;\n\nexport type SortingActionProps = {\n  value?: SortingActionValue;\n  onSortChange?: (value: SortingActionValue) => void;\n  className?: string;\n  open?: boolean;\n  variant?: SortingByVariant;\n  onOpenChange?: (isOpen: boolean) => void;\n};\n\nexport function SortingAction({\n  value,\n  onSortChange,\n  className,\n  open,\n  variant = 'by_other',\n  onOpenChange,\n}: SortingActionProps) {\n  const {t} = useTranslation();\n\n  return (\n    <DropdownMenu open={open} onOpenChange={onOpenChange}>\n      <DropdownMenuTrigger asChild>\n        <button\n          type=\"button\"\n          className={cn(\n            'group/trigger cursor-pointer rounded-sm p-0.5 hover:bg-[var(--chekin-color-surface-input-empty)]',\n            className,\n          )}\n          aria-label=\"Open sorting menu\"\n        >\n          <ArrowDownUpIcon className=\"h-4 w-4 text-[var(--chekin-color-gray-1)] group-hover/trigger:text-[var(--chekin-color-brand-navy)]\" />\n        </button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-full max-w-[256px]\" align=\"start\">\n        <DropdownMenuItem\n          active={value === 'asc'}\n          className={cn(value === 'asc' && 'text-[var(--chekin-color-brand-blue)]')}\n          onClick={() => onSortChange?.('asc')}\n        >\n          <ArrowUp className=\"h-4 w-4\" />\n          {variant === 'by_text' ? t('sort_a_z') : t('sort_in_asc')}\n        </DropdownMenuItem>\n        <DropdownMenuItem\n          active={value === 'desc'}\n          className={cn(value === 'desc' && 'text-[var(--chekin-color-brand-blue)]')}\n          onClick={() => onSortChange?.('desc')}\n        >\n          <ArrowDown className=\"h-4 w-4\" />\n          {variant === 'by_text' ? t('sort_z_a') : t('sort_in_desc')}\n        </DropdownMenuItem>\n        {value && (\n          <DropdownMenuItem onClick={() => onSortChange?.(null)}>\n            <Minus className=\"h-4 w-4\" />\n            {t('clear_sorting')}\n          </DropdownMenuItem>\n        )}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n","import {type ButtonHTMLAttributes, type ReactNode, useMemo} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {AlertCircle, CheckCircle, Loader2} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\n\nexport type ButtonStatuses =\n  | 'pending'\n  | 'error'\n  | 'success'\n  | 'idle'\n  | 'validating'\n  | 'loading';\n\nexport interface StatusButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n  hidden?: boolean;\n  status: ButtonStatuses;\n  floating?: boolean;\n  idleText?: string;\n  loadingText?: string;\n  floatingToHeader?: boolean;\n  successText?: string;\n  icon?: ReactNode;\n  variant?: 'default' | 'destructive' | 'secondary' | 'ghost' | 'link';\n}\n\nexport function StatusButton({\n  hidden,\n  status,\n  className,\n  floating,\n  idleText,\n  loadingText,\n  floatingToHeader,\n  successText,\n  icon,\n  variant = 'default',\n  ...props\n}: StatusButtonProps) {\n  const {t} = useTranslation();\n  const configMap = useMemo(() => {\n    const defaultLoadingConfig = {\n      text: loadingText ?? `${t('saving')}...`,\n      icon: <Loader2 className=\"h-4 w-4 animate-spin\" />,\n      variant,\n      isLoading: true,\n    };\n\n    return {\n      pending: {...defaultLoadingConfig},\n      loading: {...defaultLoadingConfig},\n      validating: {...defaultLoadingConfig, text: t('validating')},\n      error: {\n        text: t('error'),\n        icon: <AlertCircle className=\"h-4 w-4\" />,\n        variant: 'destructive',\n        isLoading: false,\n      },\n      success: {\n        text: successText ?? t('saved_exclamation'),\n        icon: <CheckCircle className=\"h-4 w-4\" />,\n        variant,\n        isLoading: false,\n      },\n      idle: {\n        text: idleText ?? t('save_changes'),\n        icon,\n        variant,\n        isLoading: false,\n      },\n    };\n  }, [t, idleText, loadingText, successText, icon, variant]);\n\n  const config = configMap[status] || configMap.idle;\n\n  if (hidden) {\n    return null;\n  }\n\n  return (\n    <Button\n      className={cn(\n        'min-w-[140px]',\n        {\n          'fixed bottom-10 left-1/2 z-[5] -translate-x-1/2 transition-all duration-100 ease-out':\n            floating,\n          'absolute left-auto right-[32px] top-[22px] transform-none max-md:hidden md:flex':\n            floatingToHeader,\n        },\n        className,\n      )}\n      variant={config.variant as 'default' | 'destructive'}\n      readOnly={config.isLoading || status === 'success' || status === 'error'}\n      {...props}\n    >\n      {config.icon}\n      <span>{config.text}</span>\n    </Button>\n  );\n}\n","import {AlertTriangleIcon, CheckIcon, XIcon} from 'lucide-react';\n\nexport type StatusBoxProps = {\n  title: string;\n  text: string;\n  status?: 'success' | 'failed';\n};\n\nexport function StatusBox({status, title, text}: StatusBoxProps) {\n  if (status === 'success') {\n    return (\n      <div className=\"flex items-center gap-3 rounded-lg border border-green-100 bg-green-50 p-4\">\n        <div className=\"rounded-full bg-green-100 p-1\">\n          <CheckIcon className=\"h-5 w-5 text-green-600\" />\n        </div>\n        <div>\n          <p className=\"font-semibold text-green-800\">{title}</p>\n          <p className=\"text-sm text-green-700\">{text}</p>\n        </div>\n      </div>\n    );\n  }\n\n  if (status === 'failed') {\n    return (\n      <div className=\"flex items-center gap-3 rounded-lg border border-red-100 bg-red-50 p-4\">\n        <div className=\"rounded-full bg-red-100 p-1\">\n          <XIcon className=\"h-5 w-5 text-red-600\" />\n        </div>\n        <div>\n          <p className=\"font-semibold text-red-800\">{title}</p>\n          <p className=\"text-sm text-red-700\">{text}</p>\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"flex items-center gap-3 rounded-lg border border-amber-100 bg-amber-50 p-4\">\n      <div className=\"rounded-full bg-amber-100 p-1\">\n        <AlertTriangleIcon className=\"h-5 w-5 text-amber-600\" />\n      </div>\n      <div>\n        <p className=\"font-semibold text-amber-800\">{title}</p>\n        <p className=\"text-sm text-amber-700\">{text}</p>\n      </div>\n    </div>\n  );\n}\n","import {cn} from '../lib/cn';\n\nexport type StepperProps = {\n  totalSteps: number;\n  activeStep: number;\n  className?: string;\n  cumulative?: boolean;\n};\n\nexport function Stepper({\n  totalSteps,\n  activeStep,\n  className,\n  cumulative = false,\n}: StepperProps) {\n  if (totalSteps <= 0) return null;\n\n  const clampedActiveStep = Math.max(1, Math.min(totalSteps, activeStep));\n\n  return (\n    <div\n      className={cn('flex w-full items-center gap-2', className)}\n      role=\"progressbar\"\n      aria-valuemin={1}\n      aria-valuemax={totalSteps}\n      aria-valuenow={clampedActiveStep}\n    >\n      {new Array(totalSteps).fill(null).map((_, stepIndex) => {\n        const stepNumber = stepIndex + 1;\n        const isActive = cumulative\n          ? stepNumber <= clampedActiveStep\n          : stepNumber === clampedActiveStep;\n\n        return (\n          <span\n            key={stepNumber}\n            className={cn(\n              'h-1.5 min-h-px min-w-px flex-1 rounded-[1000px] bg-[var(--chekin-color-gray-3)]',\n              isActive && 'bg-[var(--chekin-color-brand-blue)]',\n            )}\n          />\n        );\n      })}\n    </div>\n  );\n}\n","import {forwardRef, memo} from 'react';\nimport {BoxOptionSelector} from '../box-option-selector';\nimport {cn} from '../lib/cn';\n\nexport interface SwitchBlocksOption {\n  id: string;\n  title: string;\n  description: string;\n  value: string;\n  switch?: {\n    value: string;\n  };\n}\n\nexport interface SwitchBlocksProps {\n  options: SwitchBlocksOption[];\n  value: string;\n  onChange: (value: string) => void;\n  disabled?: boolean;\n  className?: string;\n}\n\nconst SwitchBlocksInternal = forwardRef<HTMLDivElement, SwitchBlocksProps>(\n  ({options, value, onChange, disabled, className}, ref) => (\n    <div\n      ref={ref}\n      className={cn('flex flex-wrap items-center justify-start gap-4', className)}\n    >\n      {options.map(option => (\n        <BoxOptionSelector\n          key={option.id}\n          id={option.id}\n          title={option.title}\n          description={option.description}\n          value={option.value}\n          switch={option.switch}\n          onChange={onChange}\n          disabled={disabled}\n          selectedValue={value}\n        />\n      ))}\n    </div>\n  ),\n);\n\nSwitchBlocksInternal.displayName = 'SwitchBlocks';\n\nexport const SwitchBlocks = memo(SwitchBlocksInternal);\n","import * as React from 'react';\nimport {ErrorMessage} from '../error-message';\nimport {Label} from '../label';\nimport {cn} from '../lib/cn';\nimport {Switch} from '../switch';\nimport type {SwitchOption} from './types';\n\nexport interface SwitchGroupProps {\n  options: SwitchOption[];\n  value?: string[];\n  onChange?: (selectedValues: string[]) => void;\n  disabled?: boolean;\n  className?: string;\n  showSelectAll?: boolean;\n  selectAllLabel?: string;\n  error?: string;\n}\n\nexport const SwitchGroup = React.forwardRef<HTMLDivElement, SwitchGroupProps>(\n  (\n    {options, value = [], onChange, disabled = false, className, error, ...props},\n    ref,\n  ) => {\n    const handleOptionChange = (optionValue: string, checked: boolean) => {\n      if (!onChange) return;\n\n      if (checked) {\n        onChange([...value, optionValue]);\n        return;\n      }\n\n      onChange(value.filter(selectedValue => selectedValue !== optionValue));\n    };\n\n    return (\n      <div ref={ref} className={cn('w-full space-y-4', className)} {...props}>\n        {options.map(option => (\n          <div key={option.value} className=\"flex items-center justify-between gap-4\">\n            <div className=\"flex flex-col\">\n              <Label\n                className={cn(\n                  'text-md cursor-pointer font-medium text-[var(--chekin-color-brand-navy)]',\n                  (disabled || option.disabled) && 'opacity-50',\n                )}\n              >\n                {option.label}\n                {option.description && (\n                  <span\n                    className={cn(\n                      'mt-1 block text-sm font-normal text-[var(--chekin-color-gray-1)]',\n                      (disabled || option.disabled) && 'opacity-50',\n                    )}\n                  >\n                    ({option.description})\n                  </span>\n                )}\n              </Label>\n            </div>\n            <Switch\n              value={value.includes(option.value)}\n              onChange={checked => handleOptionChange(option.value, checked)}\n              disabled={disabled || option.disabled}\n              size=\"lg\"\n            />\n          </div>\n        ))}\n        {error && <ErrorMessage disabled={disabled}>{error}</ErrorMessage>}\n      </div>\n    );\n  },\n);\n\nSwitchGroup.displayName = 'SwitchGroup';\n","import {\n  type ComponentPropsWithoutRef,\n  type ElementRef,\n  type ElementType,\n  type MouseEvent,\n  forwardRef,\n} from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\ntype PathType = string | {pathname: string; search?: string; hash?: string};\n\nconst Tabs = TabsPrimitive.Root;\n\nexport const tabsListVariants = cva('inline-flex items-center', {\n  variants: {\n    variant: {\n      button:\n        'tab-list h-[42px] justify-center gap-[7px] rounded-md border border-[var(--tabs-list-border)] bg-[var(--tabs-list-bg)] p-[3px] [&>*:not(:last-child)]:after:content-[\"\"] [&>*:not(:last-child)]:after:absolute [&>*:not(:last-child)]:after:right-[-4px] [&>*:not(:last-child)]:after:h-6 [&>*:not(:last-child)]:after:w-px [&>*:not(:last-child)]:after:bg-[var(--tabs-list-separator)]',\n      underlined:\n        'tab-list mb-8 flex-wrap gap-x-6 gap-y-3 border-b border-[var(--tabs-list-border)]',\n    },\n  },\n  defaultVariants: {\n    variant: 'button',\n  },\n});\n\nexport type TabsListProps = ComponentPropsWithoutRef<typeof TabsPrimitive.List> &\n  VariantProps<typeof tabsListVariants>;\n\nconst TabsList = forwardRef<ElementRef<typeof TabsPrimitive.List>, TabsListProps>(\n  ({className, variant, ...props}, ref) => (\n    <TabsPrimitive.List\n      ref={ref}\n      className={cn(tabsListVariants({variant}), className)}\n      {...props}\n    />\n  ),\n);\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const tabsTriggerVariants = cva(\n  'inline-flex items-center justify-center whitespace-nowrap transition-all focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 cursor-pointer select-none',\n  {\n    variants: {\n      variant: {\n        button:\n          'h-full flex-1 rounded-md px-4 text-center text-[15px] font-medium relative text-[var(--tabs-trigger-text)] hover:bg-[var(--tabs-trigger-hover-bg)] hover:text-[var(--tabs-trigger-hover-text)] data-[state=active]:bg-[var(--tabs-trigger-active-bg)] data-[state=active]:font-bold data-[state=active]:text-[var(--tabs-trigger-active-text)] data-[state=active]:shadow-sm [&.active]:bg-[var(--tabs-trigger-active-bg)] [&.active]:font-bold [&.active]:text-[var(--tabs-trigger-active-text)] [&.active]:shadow-sm',\n        underlined:\n          'h-full grow relative top-px pb-[15px] text-base font-medium leading-5 text-[var(--tabs-trigger-text)] border-b-2 border-transparent -mb-px data-[state=active]:text-[var(--tabs-trigger-active-border)] data-[state=active]:border-[var(--tabs-trigger-active-border)] hover:border-[color-mix(in_srgb,var(--tabs-trigger-active-border)_30%,transparent)] [&.active]:text-[var(--tabs-trigger-active-border)] [&.active]:border-[var(--tabs-trigger-active-border)] px-3',\n      },\n    },\n    defaultVariants: {\n      variant: 'button',\n    },\n  },\n);\n\ntype BaseTabsTriggerProps = Omit<\n  ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n  'value' | 'onClick'\n> &\n  VariantProps<typeof tabsTriggerVariants> & {\n    value: string;\n    hidden?: boolean;\n    end?: boolean;\n  };\n\ntype LinkTabsTriggerProps = Omit<BaseTabsTriggerProps, 'value'> & {\n  value: PathType;\n  end?: boolean;\n  asLink: ElementType;\n  onClick?: (event: MouseEvent<HTMLElement>, pathName?: PathType) => void;\n};\n\ntype ButtonTabsTriggerProps = BaseTabsTriggerProps & {\n  asLink?: undefined;\n  onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n};\n\nexport type TabsTriggerProps = ButtonTabsTriggerProps | LinkTabsTriggerProps;\n\nconst TabsTrigger = forwardRef<\n  ElementRef<typeof TabsPrimitive.Trigger>,\n  TabsTriggerProps\n>(({className, variant = 'button', hidden, ...props}, ref) => {\n  if (hidden) {\n    return null;\n  }\n\n  if (props.asLink) {\n    const {asLink: Link, value, end, onClick, children, ...linkProps} = props;\n\n    return (\n      <Link\n        relative=\"route\"\n        end={end}\n        to={value}\n        onClick={(event: MouseEvent<HTMLElement>) => onClick?.(event, value)}\n        className={cn(\n          tabsTriggerVariants({variant}),\n          variant === 'button'\n            ? 'tabs__btn-item tabs__btn-item_link'\n            : 'tabs__item tabs__item_link',\n          className,\n        )}\n        {...linkProps}\n      >\n        {children}\n      </Link>\n    );\n  }\n\n  const {children, onClick, end: _end, ...triggerProps} = props;\n\n  return (\n    <TabsPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        tabsTriggerVariants({variant}),\n        variant === 'button' ? 'tabs__btn-item' : 'tabs__item',\n        className,\n      )}\n      onClick={onClick}\n      {...triggerProps}\n    >\n      {children}\n    </TabsPrimitive.Trigger>\n  );\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = forwardRef<\n  ElementRef<typeof TabsPrimitive.Content>,\n  ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({className, ...props}, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn('tabs__header-item', className)}\n    tabIndex={-1}\n    {...props}\n  />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport {Tabs, TabsList, TabsTrigger, TabsContent};\n","import type {PropsWithChildren, ReactNode} from 'react';\nimport {BookmarkTabsList} from '../bookmark-tabs';\nimport {cn} from '../lib/cn';\nimport {Tabs} from '../tabs';\n\nexport interface TabbedSectionProps extends PropsWithChildren {\n  className?: string;\n  triggers: ReactNode;\n  value?: string;\n  defaultTab?: string;\n  onTabChange?: (value: string) => void;\n  variant?: 'default' | 'material';\n}\n\nexport function TabbedSection({\n  triggers,\n  value,\n  defaultTab,\n  onTabChange,\n  children,\n  className,\n  variant = 'default',\n}: TabbedSectionProps) {\n  const activeTab = value || defaultTab;\n\n  const contentContainerClassName =\n    variant === 'material'\n      ? cn(\n          'border-0 bg-transparent p-0 pt-6 shadow-none',\n          '[&>div:first-child]:flex [&>div:first-child]:flex-col',\n          '[&>div:first-child]:gap-[var(--section-gap,0.75rem)]',\n          className,\n        )\n      : cn(\n          'rounded-b-md border border-t-0 border-[var(--chekin-color-gray-3)] bg-[var(--chekin-color-white)] p-6 shadow-none',\n          '[&>div:first-child]:flex [&>div:first-child]:flex-col',\n          '[&>div:first-child]:gap-[var(--section-gap,0.75rem)]',\n          className,\n        );\n\n  return (\n    <Tabs value={activeTab} onValueChange={onTabChange} className=\"w-full\">\n      <BookmarkTabsList\n        variant={variant}\n        className={cn('w-full justify-start bg-transparent p-0')}\n      >\n        {triggers}\n      </BookmarkTabsList>\n\n      <div className={contentContainerClassName}>{children}</div>\n    </Tabs>\n  );\n}\n","import type {MouseEventHandler, ReactNode} from 'react';\nimport {SquareX} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\ntype TableFilterProps = {\n  onRemove?: MouseEventHandler<SVGSVGElement>;\n  children: ReactNode;\n  onClick?: () => void;\n  className?: string;\n};\n\nfunction TableFilter({onRemove, onClick, children, className}: TableFilterProps) {\n  return (\n    <div\n      onClick={onClick}\n      className={cn(\n        `relative box-border h-[30px] w-[82px] overflow-hidden text-ellipsis whitespace-nowrap\n        rounded-[3px] bg-[var(--table-filter-bg)] py-0 pl-2.5 pr-5 text-[15px] font-medium leading-[30px]\n        text-[var(--table-filter-text)]`,\n        className,\n      )}\n    >\n      {children}\n      <SquareX\n        onClick={onRemove}\n        size={15}\n        fill=\"var(--table-filter-remove-bg)\"\n        color=\"var(--table-filter-remove-color)\"\n        strokeWidth={1.8}\n        className=\"absolute bottom-0 right-1 top-0 my-auto h-[15px] w-[15px] cursor-pointer rounded-[3px]\n          hover:shadow-[var(--table-filter-remove-hover-shadow)] hover:transition-shadow hover:duration-150\n          hover:ease-in-out active:opacity-95\"\n      />\n    </div>\n  );\n}\n\nexport {TableFilter};\nexport type {TableFilterProps};\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport {TableFilter} from './TableFilter';\n\nfunction DateTableFilter({className, ...props}: ComponentProps<typeof TableFilter>) {\n  return (\n    <TableFilter\n      className={cn(\n        `w-auto min-w-[82px] pr-6 text-[13px] max-[850px]:h-auto max-[850px]:max-w-[110px]\n        max-[850px]:whitespace-break-spaces max-[850px]:leading-5`,\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport {DateTableFilter};\n","import {forwardRef, type PropsWithChildren} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {CircularLoader} from '../circular-loader';\nimport {cn} from '../lib/cn';\n\ntype TableLoaderProps = {\n  label?: string;\n  className?: string;\n  hideBorder?: boolean;\n  variant?: 'primary' | 'secondary';\n};\n\ntype TableLoaderRootProps = PropsWithChildren & {\n  columns: number;\n};\n\nconst LoaderComponent = forwardRef<HTMLDivElement, Readonly<TableLoaderProps>>(\n  ({label, className, hideBorder, variant = 'primary'}, ref) => {\n    const {t} = useTranslation();\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'flex flex-1 cursor-default items-center justify-center pb-12 pt-8',\n          !hideBorder && 'border-t border-[var(--table-loader-border)]',\n          className,\n        )}\n      >\n        <CircularLoader\n          size={variant === 'primary' ? 'lg' : 'md'}\n          label={label || t('loading')}\n          className={cn(\n            'flex-row gap-3 space-y-0 [--circular-loader-color:var(--table-loader-color)]',\n            '[&_div]:text-sm [&_div]:font-bold [&_div]:uppercase [&_div]:text-[var(--table-loader-label-color)] [&_div]:opacity-50',\n          )}\n        />\n      </div>\n    );\n  },\n);\n\nLoaderComponent.displayName = 'TableLoader.Loader';\n\nfunction Root({children, columns}: TableLoaderRootProps) {\n  return (\n    <tr className=\"cursor-pointer hover:!bg-[var(--table-loader-row-hover-bg)]\">\n      <td colSpan={columns} className=\"cursor-default pl-0\">\n        {children}\n      </td>\n    </tr>\n  );\n}\n\nconst TableLoader = {\n  Loader: LoaderComponent,\n  Root,\n};\n\nexport {TableLoader};\nexport type {TableLoaderProps, TableLoaderRootProps};\n","import type {ReactNode} from 'react';\n\nexport type TablePlaceholderProps = {\n  text?: ReactNode;\n  title?: ReactNode;\n  iconSlot?: ReactNode;\n  visible?: boolean;\n  insideTable?: boolean;\n  className?: string;\n  children?: ReactNode | JSX.Element;\n};\n\nexport function TablePlaceholder({\n  children,\n  text,\n  title,\n  className,\n  visible,\n  iconSlot,\n  insideTable,\n}: TablePlaceholderProps) {\n  if (!visible) {\n    return null;\n  }\n\n  const content = (\n    <div className=\"flex flex-col items-center justify-center px-4 py-14 text-center\">\n      {iconSlot && <div className=\"mb-6\">{iconSlot}</div>}\n      {title && <h3 className=\"mb-2 text-lg font-semibold\">{title}</h3>}\n      {text && <p className=\"text-md max-w-sm font-medium\">{text}</p>}\n      {children && <div className=\"mt-6\">{children}</div>}\n    </div>\n  );\n\n  if (insideTable) {\n    return (\n      <tr>\n        <td colSpan={100} className={className}>\n          {content}\n        </td>\n      </tr>\n    );\n  }\n\n  return <div className={className}>{content}</div>;\n}\n","import * as React from 'react';\nimport {Slot} from '@radix-ui/react-slot';\nimport {cn} from '../lib/cn';\nimport {TimelineContext, useTimeline} from './TimelineContext';\n\nexport interface TimelineProps extends React.ComponentPropsWithoutRef<'ol'> {\n  orientation?: 'horizontal' | 'vertical';\n}\n\nfunction Timeline({className, orientation = 'vertical', ...props}: TimelineProps) {\n  return (\n    <TimelineContext.Provider value={{orientation}}>\n      <ol\n        data-slot=\"timeline\"\n        role=\"list\"\n        data-orientation={orientation}\n        className={cn('flex', orientation === 'vertical' && 'flex-col', className)}\n        {...props}\n      />\n    </TimelineContext.Provider>\n  );\n}\n\nexport interface TimelineItemProps extends React.ComponentPropsWithoutRef<'li'> {\n  asChild?: boolean;\n}\n\nfunction TimelineItem({className, asChild, ...props}: TimelineItemProps) {\n  const {orientation} = useTimeline();\n  const Comp = asChild ? Slot : 'li';\n\n  return (\n    <Comp\n      data-slot=\"timeline-item\"\n      data-orientation={orientation}\n      className={cn('flex gap-4', orientation === 'horizontal' && 'flex-col', className)}\n      {...props}\n    />\n  );\n}\n\nexport interface TimelineSeparatorProps extends React.ComponentPropsWithoutRef<'div'> {\n  asChild?: boolean;\n}\n\nfunction TimelineSeparator({className, asChild, ...props}: TimelineSeparatorProps) {\n  const {orientation} = useTimeline();\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      data-slot=\"timeline-separator\"\n      data-orientation={orientation}\n      className={cn(\n        'flex items-center',\n        orientation === 'vertical' && 'flex-col',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport interface TimelineDotProps extends React.ComponentPropsWithoutRef<'div'> {\n  variant?: 'default' | 'outline';\n  asChild?: boolean;\n}\n\nfunction TimelineDot({\n  variant = 'default',\n  className,\n  asChild,\n  ...props\n}: TimelineDotProps) {\n  const {orientation} = useTimeline();\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      data-slot=\"timeline-dot\"\n      data-orientation={orientation}\n      className={cn(\n        `flex size-4 items-center justify-center empty:after:block empty:after:rounded-full\n        empty:after:outline-current [&_svg:not([class*='size-'])]:size-4`,\n        orientation === 'vertical' && 'mt-[1px]',\n        variant === 'default' && 'empty:after:size-2.5 empty:after:bg-current',\n        variant === 'outline' && 'empty:after:size-2 empty:after:outline',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport interface TimelineConnectorProps extends React.ComponentPropsWithoutRef<'div'> {\n  asChild?: boolean;\n}\n\nfunction TimelineConnector({className, asChild, ...props}: TimelineConnectorProps) {\n  const {orientation} = useTimeline();\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      data-slot=\"timeline-connector\"\n      data-orientation={orientation}\n      className={cn(\n        'flex-1 bg-[var(--timeline-connector-bg)]',\n        orientation === 'vertical' && 'w-0.5',\n        orientation === 'horizontal' && 'h-0.5',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport interface TimelineContentProps extends React.ComponentPropsWithoutRef<'div'> {\n  asChild?: boolean;\n}\n\nfunction TimelineContent({className, asChild, ...props}: TimelineContentProps) {\n  const {orientation} = useTimeline();\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      data-slot=\"timeline-content\"\n      data-orientation={orientation}\n      className={cn(\n        'flex-1',\n        orientation === 'vertical' && 'pb-7 first:text-right last:text-left',\n        orientation === 'horizontal' && 'pr-7',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport interface TimelineTitleProps extends React.ComponentPropsWithoutRef<'div'> {\n  asChild?: boolean;\n}\n\nfunction TimelineTitle({className, asChild, ...props}: TimelineTitleProps) {\n  const {orientation} = useTimeline();\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      data-slot=\"timeline-title\"\n      data-orientation={orientation}\n      className={className}\n      {...props}\n    />\n  );\n}\n\nexport interface TimelineDescriptionProps extends React.ComponentPropsWithoutRef<'div'> {\n  asChild?: boolean;\n}\n\nfunction TimelineDescription({className, asChild, ...props}: TimelineDescriptionProps) {\n  const {orientation} = useTimeline();\n  const Comp = asChild ? Slot : 'div';\n\n  return (\n    <Comp\n      data-slot=\"timeline-description\"\n      data-orientation={orientation}\n      className={cn('text-[0.8em] text-[var(--timeline-description-color)]', className)}\n      {...props}\n    />\n  );\n}\n\nexport {\n  Timeline,\n  TimelineItem,\n  TimelineSeparator,\n  TimelineDot,\n  TimelineConnector,\n  TimelineContent,\n  TimelineTitle,\n  TimelineDescription,\n};\n","import * as React from 'react';\n\nexport type TimelineContextProps = {\n  orientation: 'horizontal' | 'vertical';\n};\n\nexport const TimelineContext = React.createContext<TimelineContextProps | null>(null);\n\nexport function useTimeline() {\n  const context = React.useContext(TimelineContext);\n\n  if (!context) {\n    throw new Error('useTimeline must be used within a <Timeline />.');\n  }\n\n  return context;\n}\n","export {Toaster, toast, useSonner} from 'sonner';\nexport {useUpdateToast} from './useUpdateToast';\n","import {useCallback, useRef, type ReactElement} from 'react';\nimport {toast, type ToastT} from 'sonner';\n\ntype UseUpdateToastProps = {\n  id: string;\n};\n\ntype ToastOptions = Omit<ToastT, 'id'>;\n\nexport function useUpdateToast({id}: UseUpdateToastProps) {\n  const toastIdRef = useRef<string>('');\n  const getToastOptions = useCallback(\n    (options?: ToastOptions) => ({\n      id: toastIdRef.current,\n      dismissible: false,\n      closeButton: false,\n      duration: Infinity,\n      ...options,\n    }),\n    [],\n  );\n\n  const closeToast = () => {\n    if (toastIdRef.current) {\n      toast.dismiss(toastIdRef.current);\n      toastIdRef.current = '';\n    }\n  };\n\n  const createToast = (component: ReactElement, options?: ToastOptions) => {\n    toastIdRef.current = id + Date.now();\n    toast.custom(() => component, getToastOptions(options));\n  };\n\n  const updateToast = (component: ReactElement, options?: ToastOptions) => {\n    toast.custom(() => component, getToastOptions(options));\n  };\n\n  return {\n    toastIdRef,\n    closeToast,\n    createToast,\n    updateToast,\n  };\n}\n","import * as React from 'react';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport {type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {toggleVariants} from './style';\n\nconst ToggleGroupContext = React.createContext<VariantProps<typeof toggleVariants>>({\n  size: 'default',\n  variant: 'default',\n  theme: 'default',\n});\n\nconst ToggleGroup = React.forwardRef<\n  React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n    VariantProps<typeof toggleVariants>\n>(({className, variant, size, theme, children, ...props}, ref) => {\n  const isTabVariant = variant === 'tab';\n\n  return (\n    <ToggleGroupPrimitive.Root\n      ref={ref}\n      className={cn(\n        'flex items-center justify-center',\n        isTabVariant\n          ? 'h-auto max-h-none w-fit flex-wrap gap-[2px] rounded-md border border-[var(--toggle-group-border)] bg-[var(--toggle-group-bg)] p-[2px]'\n          : 'w-full flex-wrap gap-[10px]',\n        className,\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider value={{variant, size, theme}}>\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive.Root>\n  );\n});\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n  React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n    VariantProps<typeof toggleVariants>\n>(({className, children, variant, size, theme, ...props}, ref) => {\n  const context = React.useContext(ToggleGroupContext);\n  const resolvedVariant = context.variant || variant;\n  const isTabVariant = resolvedVariant === 'tab';\n\n  return (\n    <ToggleGroupPrimitive.Item\n      ref={ref}\n      className={cn(\n        toggleVariants({\n          variant: resolvedVariant,\n          size: context.size || size,\n          theme: context.theme || theme,\n        }),\n        className,\n      )}\n      {...props}\n    >\n      {isTabVariant ? (\n        <span className=\"inline-grid\">\n          <span className=\"invisible col-start-1 row-start-1 font-semibold\">\n            {children}\n          </span>\n          <span className=\"col-start-1 row-start-1\">{children}</span>\n        </span>\n      ) : (\n        children\n      )}\n    </ToggleGroupPrimitive.Item>\n  );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport {ToggleGroup, ToggleGroupItem};\n","import {cva} from 'class-variance-authority';\n\nexport const toggleVariants = cva(\n  'inline-flex select-none items-center justify-center rounded-md text-sm font-medium transition-all duration-200 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--toggle-focus-ring)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n  {\n    variants: {\n      variant: {\n        default:\n          'border border-[var(--toggle-border)] bg-[var(--toggle-bg)] font-semibold text-[var(--toggle-text)] hover:border-[var(--toggle-hover-border)] data-[state=on]:border-[var(--toggle-active-border)] data-[state=on]:bg-[var(--toggle-active-bg)] data-[state=on]:text-[var(--toggle-active-text)]',\n        tab: 'border border-transparent bg-transparent font-medium text-[var(--toggle-text)] hover:bg-[var(--toggle-hover-bg)] hover:text-[var(--toggle-hover-text)] hover:opacity-35 data-[state=on]:cursor-default data-[state=on]:border-[var(--toggle-active-border)] data-[state=on]:bg-[var(--toggle-tab-active-bg)] data-[state=on]:font-semibold data-[state=on]:text-[var(--toggle-tab-active-text)] data-[state=on]:shadow-[0px_3px_4px_0px_rgba(1,2,3,0.10)] data-[state=on]:hover:opacity-100',\n      },\n      size: {\n        default: 'h-12 min-w-[117px] px-4 text-[15px]',\n        sm: 'h-9 min-w-[80px] px-3 text-sm',\n        lg: 'h-14 min-w-[140px] px-6 text-base',\n        tab: 'h-9 min-w-0 px-[21px] text-[15px]',\n      },\n      theme: {\n        default: '',\n        'sky-blue':\n          'data-[state=on]:bg-[var(--toggle-sky-blue-active-bg)] data-[state=off]:hover:border-transparent data-[state=off]:hover:bg-[var(--toggle-sky-blue-hover-bg)]',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n      theme: 'default',\n    },\n  },\n);\n","import {\n  cloneElement,\n  forwardRef,\n  isValidElement,\n  type ForwardedRef,\n  type MouseEvent,\n  type ReactNode,\n  useEffect,\n} from 'react';\nimport type {SelectorOption} from '../lib/selector-option';\nimport {ToggleGroup, ToggleGroupItem} from './ToggleGroup';\n\nconst getValueArray = <T extends string | number | boolean>(value?: T | T[]): T[] => {\n  if (value !== undefined && value !== null) {\n    return Array.isArray(value) ? value : [value];\n  }\n\n  return [];\n};\n\nfunction getToggleContent(\n  label: string | ReactNode,\n  disabled?: boolean,\n  readOnly?: boolean,\n  active?: boolean,\n) {\n  if (isValidElement(label)) {\n    return cloneElement(label, {\n      disabled,\n      readOnly,\n      active,\n    });\n  }\n\n  return label;\n}\n\nexport type TogglesProps<\n  T extends string | number | boolean,\n  M extends boolean | undefined = undefined,\n> = {\n  options: SelectorOption<T>[];\n  onClick?: (\n    event: MouseEvent<HTMLButtonElement>,\n    value: SelectorOption<T>,\n  ) => void | {shouldPrevent: boolean};\n  className?: string;\n  groupClassName?: string;\n  onAnySelectorActive?: (isActive: boolean) => void;\n  variant?: 'default' | 'tab';\n  size?: 'default' | 'sm' | 'lg' | 'tab';\n  theme?: 'default' | 'sky-blue';\n  minSelected?: number;\n  loading?: boolean;\n  disabled?: boolean;\n  disabledItems?: SelectorOption<T>['value'][];\n  readonlyItems?: SelectorOption<T>['value'][];\n  readOnly?: boolean;\n  label?: string;\n  multiple?: M;\n} & (M extends true\n  ? {\n      value?: T[];\n      onChange?: (value: T[], event: MouseEvent<HTMLButtonElement>) => void;\n    }\n  : {\n      value?: T;\n      onChange?: (value: T, event: MouseEvent<HTMLButtonElement>) => void;\n    });\n\nfunction TogglesInternal<\n  T extends string | number | boolean,\n  M extends boolean | undefined = undefined,\n>(\n  {\n    className,\n    groupClassName,\n    loading,\n    disabled,\n    value,\n    options,\n    variant = 'default',\n    size,\n    theme = 'default',\n    onAnySelectorActive,\n    onClick,\n    onChange,\n    readOnly,\n    minSelected = 0,\n    disabledItems,\n    readonlyItems,\n    label,\n    multiple = true,\n  }: TogglesProps<T, M>,\n  ref: ForwardedRef<HTMLDivElement>,\n) {\n  const handleValueChange = (newValue: string | string[]) => {\n    if (!onChange) return;\n\n    if (multiple) {\n      const newValueArray = Array.isArray(newValue) ? newValue : [newValue];\n      const typedValues = newValueArray.map(item => {\n        const option = options.find(opt => String(opt.value) === item);\n        return option ? option.value : (item as T);\n      });\n\n      (onChange as (value: T[], event: MouseEvent<HTMLButtonElement>) => void)?.(\n        typedValues,\n        {} as MouseEvent<HTMLButtonElement>,\n      );\n      return;\n    }\n\n    const singleValue = Array.isArray(newValue) ? newValue[0] : newValue;\n    const option = options.find(opt => String(opt.value) === singleValue);\n    const typedValue = option ? option.value : (singleValue as T);\n    (onChange as (value: T, event: MouseEvent<HTMLButtonElement>) => void)?.(\n      typedValue,\n      {} as MouseEvent<HTMLButtonElement>,\n    );\n  };\n\n  const handleItemClick =\n    (option: SelectorOption<T>) => (event: MouseEvent<HTMLButtonElement>) => {\n      if (disabled || disabledItems?.includes(option.value) || option.disabled) {\n        event.preventDefault();\n        return;\n      }\n\n      const result = onClick?.(event, option);\n\n      if (result?.shouldPrevent) {\n        event.preventDefault();\n        return;\n      }\n\n      const valueArray = getValueArray(value);\n\n      if (multiple) {\n        const hasBeenSelected = valueArray.includes(option.value);\n        const newSelected = hasBeenSelected\n          ? valueArray.filter(selectedValue => selectedValue !== option.value)\n          : [...valueArray, option.value];\n\n        (onChange as (value: T[], event: MouseEvent<HTMLButtonElement>) => void)?.(\n          newSelected,\n          event,\n        );\n      } else {\n        (onChange as (value: T, event: MouseEvent<HTMLButtonElement>) => void)?.(\n          option.value,\n          event,\n        );\n      }\n    };\n\n  const isAnyActive = getValueArray(value).length > 0;\n  useEffect(() => {\n    onAnySelectorActive?.(isAnyActive);\n  }, [isAnyActive, onAnySelectorActive]);\n\n  const currentValue = getValueArray(value).map(item => String(item));\n\n  const toggleGroupProps = {\n    variant,\n    size: size ?? (variant === 'tab' ? 'tab' : 'default'),\n    theme,\n    onValueChange: handleValueChange,\n    ...(multiple\n      ? {type: 'multiple' as const, value: currentValue}\n      : {type: 'single' as const, value: currentValue[0] ?? ''}),\n  };\n\n  return (\n    <div ref={ref} className={className}>\n      {label && (\n        <div className=\"mb-2\">\n          <div className=\"select-none text-base font-normal text-[var(--toggles-label-text)]\">\n            {label}\n          </div>\n        </div>\n      )}\n      <ToggleGroup className={groupClassName} {...toggleGroupProps}>\n        {options.map((option, index) => {\n          const isSelected = Boolean(\n            getValueArray(value).find(selectedValue => selectedValue === option.value),\n          );\n          const isDisabled =\n            disabled || disabledItems?.includes(option.value) || option.disabled;\n          const isMinSelected = getValueArray(value).length <= minSelected;\n          const isItemReadOnly =\n            readOnly ||\n            (isMinSelected && isSelected) ||\n            readonlyItems?.includes(option.value);\n\n          return (\n            <ToggleGroupItem\n              key={index}\n              value={String(option.value)}\n              disabled={isDisabled || isItemReadOnly || loading}\n              onClick={handleItemClick(option)}\n            >\n              {getToggleContent(option.label, isDisabled, isItemReadOnly, isSelected)}\n            </ToggleGroupItem>\n          );\n        })}\n      </ToggleGroup>\n    </div>\n  );\n}\n\nexport type TogglesForwardType = <\n  T extends string | number | boolean,\n  M extends boolean | undefined = true,\n>(\n  props: TogglesProps<T, M> & {\n    ref?: ForwardedRef<HTMLDivElement>;\n  },\n) => ReturnType<typeof TogglesInternal>;\n\nexport const Toggles = forwardRef(TogglesInternal) as TogglesForwardType;\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type ThreeDotsLoaderProps = {\n  height?: number;\n  width?: number;\n  color?: string;\n  label?: string | ReactNode;\n  className?: string;\n  labelPlacement?: 'right' | 'left';\n};\n\nfunction Dots({\n  height,\n  width,\n  color,\n}: Required<Pick<ThreeDotsLoaderProps, 'height' | 'width' | 'color'>>) {\n  return (\n    <span\n      className=\"inline-flex items-center justify-center gap-[15%]\"\n      style={{height, width}}\n      aria-hidden=\"true\"\n    >\n      <span\n        className=\"h-[22%] w-[22%] animate-chekin-three-dots rounded-full [animation-delay:-0.32s]\"\n        style={{backgroundColor: color}}\n      />\n      <span\n        className=\"h-[22%] w-[22%] animate-chekin-three-dots rounded-full [animation-delay:-0.16s]\"\n        style={{backgroundColor: color}}\n      />\n      <span\n        className=\"h-[22%] w-[22%] animate-chekin-three-dots rounded-full\"\n        style={{backgroundColor: color}}\n      />\n    </span>\n  );\n}\n\nexport function ThreeDotsLoader({\n  height = 30,\n  width = 30,\n  color = '#E3E3E3FF',\n  label = '',\n  className,\n  labelPlacement = 'right',\n}: ThreeDotsLoaderProps) {\n  const dots = <Dots color={color} height={height} width={width} />;\n\n  if (label) {\n    return (\n      <div\n        className={cn(\n          'flex items-center justify-center gap-x-[13px] [&>div]:text-sm [&>div]:font-bold [&>div]:uppercase [&>div]:text-[var(--chekin-neutral-500)] [&>div]:opacity-50',\n          className,\n        )}\n        role=\"progressbar\"\n      >\n        {labelPlacement === 'right' ? (\n          <>\n            {dots}\n            <div>{label}</div>\n          </>\n        ) : (\n          <>\n            <div>{label}</div>\n            {dots}\n          </>\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <div role=\"progressbar\" className={className}>\n      {dots}\n    </div>\n  );\n}\n","import {X} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport interface UploadedFilesListProps {\n  files: File[];\n  onRemoveFile: (fileName: string) => void;\n  className?: string;\n}\n\nexport function UploadedFilesList({\n  files,\n  onRemoveFile,\n  className,\n}: UploadedFilesListProps) {\n  if (!files.length) {\n    return null;\n  }\n\n  return (\n    <div className={cn('flex flex-wrap gap-2.5', className)}>\n      {files.map((file, index) => (\n        <div\n          key={`${file.name}-${index}`}\n          className=\"flex cursor-default items-center gap-2 rounded border border-[var(--chekin-neutral-400)] bg-[var(--chekin-neutral-75)] py-1.5 pl-3 pr-1.5\"\n        >\n          <span className=\"text-nowrap text-sm font-medium leading-5 text-[var(--chekin-blue-900)]\">\n            {file.name}\n          </span>\n          <button\n            type=\"button\"\n            onClick={() => onRemoveFile(file.name)}\n            className=\"flex h-[18px] w-[18px] shrink-0 cursor-pointer items-center justify-center rounded bg-[var(--chekin-neutral-600)] transition-all hover:shadow-md active:opacity-95\"\n            aria-label={`Remove ${file.name}`}\n          >\n            <X className=\"h-3.5 w-3.5 text-white\" strokeWidth={3} />\n          </button>\n        </div>\n      ))}\n    </div>\n  );\n}\n","import {useState, type ReactNode} from 'react';\nimport {cn} from '../lib/cn';\nimport {Carousel} from '../carousel';\n\nexport type VerticalTabsStep = {\n  title: ReactNode;\n  text: ReactNode;\n  images?: string[];\n};\n\nexport type VerticalTabsProps = {\n  steps: VerticalTabsStep[];\n  stepKey?: string;\n  getStepLabel?: (index: number) => ReactNode;\n  className?: string;\n};\n\nfunction getKey(index: number, key?: string) {\n  return `${key || 'step'}_${index}`;\n}\n\nexport function VerticalTabs({\n  steps,\n  stepKey = '',\n  getStepLabel = index => `Step ${index + 1}`,\n  className,\n}: VerticalTabsProps) {\n  const defaultValue = getKey(0, stepKey);\n  const [value, setValue] = useState(defaultValue);\n  const hasImages = steps.every(step => step.images?.length);\n\n  return (\n    <div\n      className={cn(\n        'grid w-full items-stretch',\n        hasImages ? 'grid-cols-[369px_1fr]' : 'grid-cols-1',\n        className,\n      )}\n    >\n      <div className=\"flex w-full flex-grow-0 flex-col flex-nowrap gap-0\">\n        {steps.map(({title, text}, index) => {\n          const stepValue = getKey(index, stepKey);\n          const active = value === stepValue;\n\n          return (\n            <button\n              key={stepValue}\n              type=\"button\"\n              onClick={() => setValue(stepValue)}\n              className={cn(\n                'box-border flex w-full flex-none flex-col items-start gap-1 border-b bg-[var(--vertical-tabs-step-bg)] p-6 pb-8 text-left transition-[height] duration-300',\n                'border-b-[var(--vertical-tabs-step-border)] border-l-2 border-l-transparent',\n                index === steps.length - 1 && 'border-b-transparent',\n                active &&\n                  'border-b-[var(--vertical-tabs-step-border)] border-l-[var(--vertical-tabs-active-border)] pb-6',\n              )}\n            >\n              <span className=\"text-sm font-bold leading-4 text-[var(--vertical-tabs-step-label)]\">\n                {getStepLabel(index)}\n              </span>\n              <span\n                className={cn(\n                  'text-lg font-medium leading-[22px] text-[var(--vertical-tabs-title)] transition-[font-weight,line-height] duration-300',\n                  active && 'font-bold leading-6',\n                )}\n              >\n                {title}\n              </span>\n              <span\n                className={cn(\n                  'grid grid-rows-[0fr] overflow-hidden transition-[grid-template-rows] duration-300',\n                  active && 'grid-rows-[1fr]',\n                )}\n              >\n                <span\n                  className={cn(\n                    'min-h-0 text-sm font-medium leading-4 text-[var(--vertical-tabs-text)] opacity-0 transition duration-500',\n                    'translate-y-2.5',\n                    active && 'translate-y-0 opacity-100',\n                  )}\n                >\n                  {text}\n                </span>\n              </span>\n            </button>\n          );\n        })}\n      </div>\n\n      {hasImages &&\n        steps.map(({images}, index) => {\n          const stepValue = getKey(index, stepKey);\n\n          if (value !== stepValue) {\n            return null;\n          }\n\n          return (\n            <div key={`${stepValue}_content`} className=\"h-full w-full\">\n              <Carousel>\n                {images?.map(image => (\n                  <img\n                    key={image}\n                    src={image}\n                    className=\"h-full w-full object-contain\"\n                    alt=\"\"\n                  />\n                ))}\n              </Carousel>\n            </div>\n          );\n        })}\n    </div>\n  );\n}\n","import {X} from 'lucide-react';\nimport * as React from 'react';\nimport {cn} from '../lib/cn';\n\ntype VideoModalProps = {\n  videoId: string;\n  isOpen: boolean;\n  onClose: () => void;\n  width?: number | string;\n  height?: number | string;\n};\n\nfunction VideoModal({\n  videoId,\n  isOpen,\n  onClose,\n  width = '100%',\n  height = '100%',\n}: VideoModalProps) {\n  const iframeRef = React.useRef<HTMLIFrameElement>(null);\n\n  React.useEffect(() => {\n    const handleEsc = (event: KeyboardEvent) => {\n      if (event.key === 'Escape') {\n        onClose();\n      }\n    };\n\n    if (isOpen) {\n      window.addEventListener('keydown', handleEsc);\n    }\n\n    return () => {\n      window.removeEventListener('keydown', handleEsc);\n    };\n  }, [isOpen, onClose]);\n\n  React.useEffect(() => {\n    if (!isOpen && iframeRef.current) {\n      iframeRef.current.contentWindow?.postMessage(\n        '{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}',\n        '*',\n      );\n    }\n  }, [isOpen]);\n\n  if (!isOpen) {\n    return null;\n  }\n\n  return (\n    <div\n      className=\"fixed inset-0 z-[9999] flex items-center justify-center bg-[var(--video-modal-overlay-bg)] px-4\"\n      role=\"dialog\"\n      aria-modal=\"true\"\n      aria-label=\"Video\"\n    >\n      <div className=\"relative w-full max-w-[1075px]\">\n        <button\n          type=\"button\"\n          onClick={onClose}\n          className={cn(\n            'absolute -right-10 top-0 z-[9999] flex h-8 w-8 items-center justify-center rounded-full',\n            'bg-[var(--video-modal-close-bg)] text-[var(--video-modal-close-color)] shadow-sm transition-shadow hover:shadow-md',\n            'max-sm:right-2 max-sm:top-2',\n          )}\n          aria-label=\"Close\"\n        >\n          <X className=\"h-5 w-5\" aria-hidden />\n        </button>\n        <div className=\"relative w-full overflow-hidden\">\n          <iframe\n            ref={iframeRef}\n            src={`https://www.youtube.com/embed/${videoId}?autoplay=0&rel=0&showinfo=0`}\n            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n            allowFullScreen\n            width={width}\n            height={height}\n            title=\"Video\"\n            className=\"border-0\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport {VideoModal};\nexport type {VideoModalProps};\n","import {useEffect, useRef, useState, type ChangeEvent, type MouseEvent} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {\n  Loader2,\n  Maximize,\n  Minimize,\n  Pause,\n  Play,\n  SkipBack,\n  SkipForward,\n  Volume2,\n  VolumeX,\n  X,\n} from 'lucide-react';\nimport {Button} from '../button';\nimport {useClickEscape} from '../hooks';\n\ntype VideoSource = 'file' | 'youtube' | 'vimeo';\n\nexport interface VideoPlayerProps {\n  src: string;\n  poster?: string;\n  title?: string;\n  onClose?: () => void;\n  isFullScreen?: boolean;\n  autoPlay?: boolean;\n}\n\nexport function VideoPlayer({\n  src,\n  poster,\n  title,\n  onClose,\n  isFullScreen = false,\n  autoPlay = false,\n}: VideoPlayerProps) {\n  const {t} = useTranslation();\n  const videoRef = useRef<HTMLVideoElement>(null);\n  const iframeRef = useRef<HTMLIFrameElement>(null);\n  const containerRef = useRef<HTMLDivElement>(null);\n  const [isPlaying, setIsPlaying] = useState(false);\n  const [isMuted, setIsMuted] = useState(false);\n  const [currentTime, setCurrentTime] = useState(0);\n  const [duration, setDuration] = useState(0);\n  const [isFullScreenMode, setIsFullScreenMode] = useState(isFullScreen);\n  const [isLoading, setIsLoading] = useState(true);\n  const [videoSource, setVideoSource] = useState<VideoSource>('file');\n  const [youtubeEmbedUrl, setYoutubeEmbedUrl] = useState('');\n  const [vimeoEmbedUrl, setVimeoEmbedUrl] = useState('');\n\n  useClickEscape({enabled: isFullScreenMode, onClick: onClose});\n\n  useEffect(() => {\n    const youtubeRegex =\n      /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([a-zA-Z0-9_-]{11})/;\n    const vimeoRegex = /(?:vimeo\\.com\\/|vimeo\\.com\\/video\\/)(\\d+)/;\n\n    const youtubeMatch = src.match(youtubeRegex);\n    const vimeoMatch = src.match(vimeoRegex);\n\n    if (youtubeMatch) {\n      const videoId = youtubeMatch[1];\n      setVideoSource('youtube');\n      setYoutubeEmbedUrl(\n        `https://www.youtube.com/embed/${videoId}?enablejsapi=1&rel=0&modestbranding=1${autoPlay ? '&autoplay=1' : ''}`,\n      );\n      setVimeoEmbedUrl('');\n      setIsLoading(false);\n      return;\n    }\n\n    if (vimeoMatch) {\n      const videoId = vimeoMatch[1];\n      setVideoSource('vimeo');\n      setVimeoEmbedUrl(\n        `https://player.vimeo.com/video/${videoId}?h=0&title=0&byline=0&portrait=0${autoPlay ? '&autoplay=1' : ''}`,\n      );\n      setYoutubeEmbedUrl('');\n      setIsLoading(false);\n      return;\n    }\n\n    setVideoSource('file');\n    setYoutubeEmbedUrl('');\n    setVimeoEmbedUrl('');\n  }, [src, autoPlay]);\n\n  useEffect(() => {\n    if (videoSource !== 'file') return;\n\n    const video = videoRef.current;\n    if (!video) return;\n\n    const updateDuration = () => {\n      setDuration(video.duration);\n      setIsLoading(false);\n    };\n    const updateTime = () => setCurrentTime(video.currentTime);\n    const handleVideoEnd = () => {\n      setIsPlaying(false);\n      video.currentTime = 0;\n    };\n    const handleLoadStart = () => setIsLoading(true);\n    const handleCanPlay = () => setIsLoading(false);\n\n    video.addEventListener('loadedmetadata', updateDuration);\n    video.addEventListener('timeupdate', updateTime);\n    video.addEventListener('ended', handleVideoEnd);\n    video.addEventListener('loadstart', handleLoadStart);\n    video.addEventListener('canplay', handleCanPlay);\n\n    return () => {\n      video.removeEventListener('loadedmetadata', updateDuration);\n      video.removeEventListener('timeupdate', updateTime);\n      video.removeEventListener('ended', handleVideoEnd);\n      video.removeEventListener('loadstart', handleLoadStart);\n      video.removeEventListener('canplay', handleCanPlay);\n    };\n  }, [videoSource]);\n\n  useEffect(() => {\n    if (isFullScreenMode && videoRef.current && videoSource === 'file') {\n      void videoRef.current.play();\n      setIsPlaying(true);\n    }\n  }, [isFullScreenMode, videoSource]);\n\n  const togglePlay = () => {\n    if (videoSource !== 'file') return;\n\n    const video = videoRef.current;\n    if (!video) return;\n\n    if (isPlaying) {\n      video.pause();\n    } else {\n      void video.play();\n    }\n\n    setIsPlaying(!isPlaying);\n  };\n\n  const toggleMute = () => {\n    if (videoSource !== 'file') return;\n\n    const video = videoRef.current;\n    if (!video) return;\n\n    video.muted = !isMuted;\n    setIsMuted(!isMuted);\n  };\n\n  const handleSeek = (event: ChangeEvent<HTMLInputElement>) => {\n    if (videoSource !== 'file') return;\n\n    const video = videoRef.current;\n    if (!video) return;\n\n    const newTime = Number.parseFloat(event.target.value);\n    video.currentTime = newTime;\n    setCurrentTime(newTime);\n  };\n\n  const toggleFullScreen = () => {\n    if (!isFullScreen && !isFullScreenMode) {\n      setIsFullScreenMode(true);\n      return;\n    }\n\n    setIsFullScreenMode(false);\n    onClose?.();\n  };\n\n  const formatTime = (timeInSeconds: number) => {\n    const minutes = Math.floor(timeInSeconds / 60);\n    const seconds = Math.floor(timeInSeconds % 60);\n    return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n  };\n\n  const skipBackward = () => {\n    if (videoSource !== 'file') return;\n\n    const video = videoRef.current;\n    if (!video) return;\n\n    video.currentTime = Math.max(0, video.currentTime - 5);\n  };\n\n  const skipForward = () => {\n    if (videoSource !== 'file') return;\n\n    const video = videoRef.current;\n    if (!video) return;\n\n    video.currentTime = Math.min(video.duration, video.currentTime + 5);\n  };\n\n  const containerClasses = isFullScreenMode\n    ? 'fixed inset-0 z-[300] flex cursor-pointer items-center justify-center bg-gradient-to-br from-black/95 via-black/90 to-black/95 backdrop-blur-sm animate-in fade-in-0 duration-500'\n    : 'relative h-full w-full';\n\n  const videoContainerClasses = isFullScreenMode\n    ? 'w-full max-w-5xl cursor-default animate-in zoom-in-95 fade-in-0 duration-700 ease-out'\n    : 'h-full w-full';\n\n  const handleBackgroundClick = (event: MouseEvent<HTMLDivElement>) => {\n    if (event.target === event.currentTarget) {\n      onClose?.();\n    }\n  };\n\n  return (\n    <div\n      ref={containerRef}\n      className={containerClasses}\n      onClick={isFullScreenMode ? handleBackgroundClick : undefined}\n    >\n      {isFullScreenMode && (\n        <div className=\"pointer-events-none absolute inset-0 overflow-hidden\">\n          <div className=\"absolute left-1/4 top-1/4 h-2 w-2 animate-pulse rounded-full bg-white/20 duration-1000\" />\n          <div className=\"absolute left-1/3 top-3/4 h-1 w-1 animate-pulse rounded-full bg-white/30 delay-500 duration-1000\" />\n          <div className=\"absolute right-1/4 top-1/2 h-1.5 w-1.5 animate-pulse rounded-full bg-white/20 delay-1000 duration-1000\" />\n          <div className=\"absolute bottom-1/4 right-1/3 h-1 w-1 animate-pulse rounded-full bg-white/25 delay-1500 duration-1000\" />\n          <div className=\"absolute right-1/6 top-1/6 h-2 w-2 animate-pulse rounded-full bg-white/15 delay-2000 duration-1000\" />\n        </div>\n      )}\n\n      {isFullScreenMode && onClose && (\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={onClose}\n          className=\"absolute right-4 top-4 z-10 rounded-full text-white transition-all duration-300 hover:scale-110 hover:bg-white/20 active:scale-95\"\n          aria-label={t('close')}\n        >\n          <X className=\"h-6 w-6\" />\n        </Button>\n      )}\n\n      {title && isFullScreenMode && (\n        <div className=\"absolute left-4 top-4 z-10 animate-in slide-in-from-left-4 text-white delay-200 duration-500\">\n          <h3 className=\"text-lg font-medium drop-shadow-lg\">{title}</h3>\n        </div>\n      )}\n\n      {isLoading && (\n        <div className=\"absolute inset-0 z-20 flex items-center justify-center bg-black/50\">\n          <div className=\"flex items-center gap-3 text-white\">\n            <Loader2 className=\"h-8 w-8 animate-spin\" />\n            <span className=\"text-lg font-medium\">{t('loading_video')}</span>\n          </div>\n        </div>\n      )}\n\n      <div className={videoContainerClasses} onClick={event => event.stopPropagation()}>\n        {videoSource === 'youtube' ? (\n          <iframe\n            ref={iframeRef}\n            src={youtubeEmbedUrl}\n            className={`w-full ${isFullScreenMode ? 'h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n            allowFullScreen\n            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n            onLoad={() => setIsLoading(false)}\n            title={title || 'YouTube video player'}\n          />\n        ) : videoSource === 'vimeo' ? (\n          <iframe\n            ref={iframeRef}\n            src={vimeoEmbedUrl}\n            className={`w-full ${isFullScreenMode ? 'h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n            allowFullScreen\n            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n            onLoad={() => setIsLoading(false)}\n            title={title || 'Vimeo video player'}\n          />\n        ) : (\n          <>\n            <video\n              ref={videoRef}\n              className={`w-full ${isFullScreenMode ? 'max-h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n              poster={poster}\n              onClick={togglePlay}\n              playsInline\n              autoPlay={autoPlay}\n            >\n              <source src={src} type=\"video/mp4\" />\n              {t('video_not_supported')}\n            </video>\n\n            <div\n              className={`absolute bottom-0 left-0 right-0 rounded-b-lg bg-gradient-to-t from-black/80 via-black/60 to-transparent p-3 transition-all duration-300 hover:from-black/90 hover:via-black/70 ${isFullScreenMode ? 'pb-6' : ''}`}\n            >\n              <div className=\"mb-3 flex items-center gap-2\">\n                <input\n                  type=\"range\"\n                  min=\"0\"\n                  max={duration || 100}\n                  value={currentTime}\n                  onChange={handleSeek}\n                  className=\"h-2 w-full cursor-pointer appearance-none rounded-full bg-white/30 transition-all duration-200 hover:bg-white/40 [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:shadow-lg [&::-webkit-slider-thumb]:transition-all [&::-webkit-slider-thumb]:duration-200 [&::-webkit-slider-thumb]:hover:scale-125\"\n                />\n              </div>\n\n              <div className=\"flex items-center justify-between\">\n                <div className=\"flex items-center gap-2\">\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    onClick={togglePlay}\n                    className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n                    aria-label={isPlaying ? t('pause') : t('play')}\n                  >\n                    {isPlaying ? (\n                      <Pause className=\"h-5 w-5\" />\n                    ) : (\n                      <Play className=\"h-5 w-5\" />\n                    )}\n                  </Button>\n\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    onClick={skipBackward}\n                    className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n                    aria-label={t('skip_backward')}\n                  >\n                    <SkipBack className=\"h-5 w-5\" />\n                  </Button>\n\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    onClick={skipForward}\n                    className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n                    aria-label={t('skip_forward')}\n                  >\n                    <SkipForward className=\"h-5 w-5\" />\n                  </Button>\n\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    onClick={toggleMute}\n                    className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n                    aria-label={isMuted ? t('unmute') : t('mute')}\n                  >\n                    {isMuted ? (\n                      <VolumeX className=\"h-5 w-5\" />\n                    ) : (\n                      <Volume2 className=\"h-5 w-5\" />\n                    )}\n                  </Button>\n\n                  <span className=\"text-sm font-medium text-white/90\">\n                    {formatTime(currentTime)} / {formatTime(duration || 0)}\n                  </span>\n                </div>\n\n                <Button\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  onClick={toggleFullScreen}\n                  className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n                  aria-label={\n                    isFullScreenMode ? t('exit_full_screen') : t('enter_full_screen')\n                  }\n                >\n                  {isFullScreenMode ? (\n                    <Minimize className=\"h-5 w-5\" />\n                  ) : (\n                    <Maximize className=\"h-5 w-5\" />\n                  )}\n                </Button>\n              </div>\n            </div>\n          </>\n        )}\n      </div>\n    </div>\n  );\n}\n","import {\n  forwardRef,\n  memo,\n  type CSSProperties,\n  type ReactNode,\n  useCallback,\n  useImperativeHandle,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport {isFirefox, isMobile} from 'react-device-detect';\nimport ReactWebcam from 'react-webcam';\nimport {cn} from '../lib/cn';\nimport {compressFile} from '../lib/compression';\nimport type {VideoConstraints, WebcamRefTypes} from './types';\nimport {useErrorHandler, type WebcamErrorDetails} from './useErrorHandler';\nimport {\n  getMobileOrDesktopVideoConstraints,\n  getPhotoCanvas,\n  getReducedVideoConstraints,\n  isMobileOrTablet,\n} from './utils';\nimport {getCanvasBlob, getFileSizeMB, toBase64} from '../lib/utils';\n\nconst SCREENSHOT_FORMAT = 'image/jpeg';\nconst mirroredTransformStyle: CSSProperties = {transform: 'rotateY(180deg)'};\n\nexport type WebcamProps = Partial<ReactWebcam> & {\n  onDisabled?: (value: boolean) => void;\n  onUserMedia?: () => void;\n  imageSmoothing?: boolean;\n  mirrored?: boolean;\n  videoConstraints?: VideoConstraints;\n  additionalConstraints?: VideoConstraints;\n  hideScanArea?: boolean;\n  compression?: boolean;\n  roundedScanArea?: boolean;\n  cropToScanArea?: boolean;\n  isLoading?: boolean;\n  placeholderImage?: ReactNode;\n  children?: ReactNode;\n  className?: string;\n  minScreenshotH?: number;\n  minScreenshotW?: number;\n  width?: number;\n  height?: number;\n  screenshotQuality?: number;\n  screenshotMaxSize?: number;\n  videoSourceDeviceId?: string;\n  onError: (errorDetails: WebcamErrorDetails) => void;\n};\n\nconst Webcam = memo(\n  forwardRef<WebcamRefTypes, WebcamProps>(\n    (\n      {\n        onUserMedia,\n        onDisabled,\n        imageSmoothing,\n        videoConstraints,\n        additionalConstraints,\n        hideScanArea,\n        roundedScanArea,\n        cropToScanArea,\n        className,\n        mirrored,\n        children,\n        isLoading,\n        placeholderImage,\n        screenshotMaxSize,\n        minScreenshotH,\n        minScreenshotW,\n        videoSourceDeviceId,\n        screenshotQuality = 1,\n        compression,\n        onError,\n        ...props\n      },\n      ref,\n    ) => {\n      const [minScreenshotHeight, setMinScreenshotHeight] = useState<number>();\n      const [minScreenshotWidth, setMinScreenshotWidth] = useState<number>();\n      const [useReducedConstraints, setUseReducedConstraints] = useState(false);\n      const [numberOfCameras, setNumberOfCameras] = useState(0);\n\n      const constraints = useMemo(() => {\n        if (videoConstraints) {\n          return videoConstraints;\n        }\n\n        if (useReducedConstraints) {\n          return getReducedVideoConstraints({\n            deviceId: videoSourceDeviceId,\n            additional: additionalConstraints,\n          });\n        }\n\n        return getMobileOrDesktopVideoConstraints({\n          deviceId: videoSourceDeviceId,\n          additional: additionalConstraints,\n        });\n      }, [\n        additionalConstraints,\n        useReducedConstraints,\n        videoConstraints,\n        videoSourceDeviceId,\n      ]);\n\n      const isMirroredInCSS = mirrored === undefined && !isMobileOrTablet();\n      const webcamRef = useRef<ReactWebcam>(null);\n      const scanAreaRef = useRef<HTMLDivElement>(null);\n      const canvasRef = useRef<HTMLCanvasElement>(null);\n      const containerRef = useRef<HTMLDivElement>(null);\n\n      const {handleUserMediaError} = useErrorHandler({\n        onError: errorDetails => {\n          onDisabled?.(true);\n          onError(errorDetails);\n        },\n      });\n\n      const handleUserMediaErrorWithFallback = useCallback(\n        (error: string | DOMException | Error) => {\n          if (\n            error instanceof DOMException &&\n            error.name === 'OverconstrainedError' &&\n            !useReducedConstraints &&\n            !videoConstraints\n          ) {\n            console.warn('Camera constraints failed, trying reduced constraints:', error);\n            setUseReducedConstraints(true);\n            return;\n          }\n\n          handleUserMediaError(error);\n        },\n        [handleUserMediaError, useReducedConstraints, videoConstraints],\n      );\n\n      const compressImage = async (canvas?: HTMLCanvasElement) => {\n        if (!canvas) return;\n\n        const blobImage = await getCanvasBlob(canvas);\n        if (!blobImage) return;\n\n        const compressedFile = await compressFile(blobImage, {\n          convertSize: screenshotMaxSize,\n        });\n\n        // eslint-disable-next-line no-console\n        console.log(\n          'Before: ',\n          getFileSizeMB(blobImage)?.toFixed(2),\n          'MB',\n          'After: ',\n          getFileSizeMB(compressedFile)?.toFixed(2),\n          'MB',\n        );\n\n        return toBase64(compressedFile);\n      };\n\n      const handleTakePhoto = () => {\n        const takenPhotoCanvas = getPhotoCanvas({\n          player: webcamRef.current?.video,\n          container: containerRef.current,\n          canvas: canvasRef.current,\n          scanArea: scanAreaRef.current,\n          cropToScanArea,\n        });\n\n        if (!takenPhotoCanvas) return;\n        if (compression) return compressImage(takenPhotoCanvas);\n\n        return Promise.resolve(\n          takenPhotoCanvas.toDataURL(SCREENSHOT_FORMAT, screenshotQuality),\n        );\n      };\n\n      useImperativeHandle(\n        ref,\n        () =>\n          ({\n            takePhoto: handleTakePhoto,\n            numberOfCameras,\n            ...webcamRef.current,\n          }) as WebcamRefTypes,\n      );\n\n      const handleUserMediaSuccess = useCallback(\n        (stream: MediaStream) => {\n          if (!isMobile) {\n            const track = stream.getVideoTracks()[0];\n            const capabilities = !isFirefox && track?.getCapabilities();\n\n            if (capabilities) {\n              setMinScreenshotHeight(capabilities.height?.max);\n              setMinScreenshotWidth(capabilities.width?.max);\n            }\n          } else {\n            setMinScreenshotWidth(minScreenshotW);\n            setMinScreenshotHeight(minScreenshotH);\n          }\n\n          navigator.mediaDevices\n            .enumerateDevices()\n            .then(devices => {\n              setNumberOfCameras(\n                devices.filter(device => device.kind === 'videoinput').length,\n              );\n            })\n            .catch(error => {\n              console.warn('Failed to enumerate devices:', error);\n              setNumberOfCameras(1);\n            });\n\n          onUserMedia?.();\n        },\n        [minScreenshotH, minScreenshotW, onUserMedia],\n      );\n\n      return (\n        <div\n          ref={containerRef}\n          className={cn(\n            'webcam relative z-[1] mx-auto flex h-[222px] w-[332px] items-center justify-center overflow-hidden rounded-[6px] text-center',\n            'kiosko:h-[620px] kiosko:max-h-[620px] kiosko:w-[890px] kiosko:max-w-[890px]',\n            className,\n          )}\n          style={isMirroredInCSS ? mirroredTransformStyle : undefined}\n        >\n          {!hideScanArea && (\n            <div\n              ref={scanAreaRef}\n              className={cn(\n                'webcam__scan-area absolute inset-0 z-[2] m-auto flex w-[calc(100%-32px)] items-center justify-center shadow-[0_0_0_9999em_rgb(0_0_0_/_60%)]',\n                'h-[200px] rounded-[15px] min-[479px]:h-[calc(100%-32px)]',\n                roundedScanArea &&\n                  'h-[197px] w-[165px] rounded-[45%] border-[3px] border-white shadow-[0_0_8px_#fff,inset_0_0_0_#fff,0_0_0_9999em_rgb(0_0_0_/_60%)]',\n                'kiosko:h-[calc(100%-170px)] kiosko:w-[345px]',\n              )}\n              style={isMirroredInCSS ? mirroredTransformStyle : undefined}\n            >\n              {!roundedScanArea && (\n                <>\n                  <div className=\"absolute left-[-2px] top-[-2px] h-[45px] w-[45px] rounded-tl-[15px] border-[4px] border-b-0 border-r-0 border-white\" />\n                  <div className=\"absolute right-[-2px] top-[-2px] h-[45px] w-[45px] rounded-tr-[15px] border-[4px] border-b-0 border-l-0 border-white\" />\n                  <div className=\"absolute bottom-[-2px] right-[-2px] h-[45px] w-[45px] rounded-br-[15px] border-[4px] border-l-0 border-t-0 border-white\" />\n                  <div className=\"absolute bottom-[-2px] left-[-2px] h-[45px] w-[45px] rounded-bl-[15px] border-[4px] border-r-0 border-t-0 border-white\" />\n                </>\n              )}\n              {placeholderImage}\n            </div>\n          )}\n          <canvas ref={canvasRef} className=\"hidden\" />\n          {isLoading ? (\n            <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-black/50\">\n              <div className=\"h-10 w-10 animate-spin rounded-full border-4 border-white/30 border-t-white\" />\n            </div>\n          ) : (\n            <ReactWebcam\n              ref={webcamRef}\n              mirrored={!!mirrored}\n              width={props.width}\n              height={props.height}\n              videoConstraints={constraints}\n              imageSmoothing={!!imageSmoothing}\n              screenshotFormat={SCREENSHOT_FORMAT}\n              onUserMedia={handleUserMediaSuccess}\n              screenshotQuality={screenshotQuality}\n              onUserMediaError={handleUserMediaErrorWithFallback}\n              minScreenshotWidth={minScreenshotWidth}\n              minScreenshotHeight={minScreenshotHeight}\n              className=\"webcam__video z-[1] h-full w-full bg-[#e2e2e2] object-cover\"\n              audio={false}\n              disablePictureInPicture={false}\n              forceScreenshotSourceSize={false}\n            />\n          )}\n          {children}\n        </div>\n      );\n    },\n  ),\n);\n\nWebcam.displayName = 'Webcam';\n\nexport {Webcam};\n","import {getFileSizeMB, toBase64} from './utils';\n\ntype CompressFileOptions = {convertSize?: number};\n\nconst IDENTITY_VERIFICATION_PHOTOS_MAX_SIZE_MB = 6;\nconst IDENTITY_VERIFICATION_PHOTOS_QUALITY = 0.8;\n\nasync function compressFile(file: Blob, {convertSize}: CompressFileOptions) {\n  const {default: Compressor} = await import('compressorjs');\n\n  return new Promise<Blob>((resolve, reject) => {\n    new Compressor(file, {\n      convertSize: convertSize ? convertSize * 1000000 : undefined,\n      quality: 1,\n      success: result => resolve(result),\n      error: reject,\n    });\n  });\n}\n\nasync function compressImage(image: File) {\n  const {default: Compressor} = await import('compressorjs');\n  const parsedImage = new File([image], image.name, {type: image.type});\n\n  return new Promise<string>((resolve, reject) => {\n    new Compressor(parsedImage, {\n      convertSize: IDENTITY_VERIFICATION_PHOTOS_MAX_SIZE_MB * 1000000,\n      quality: IDENTITY_VERIFICATION_PHOTOS_QUALITY,\n      success: compressedResult => {\n        toBase64(compressedResult).then(result => {\n          // eslint-disable-next-line no-console\n          console.log(\n            'Before: ',\n            getFileSizeMB(image)?.toFixed(2),\n            'MB',\n            'After: ',\n            getFileSizeMB(compressedResult)?.toFixed(2),\n            'MB',\n          );\n          resolve(result);\n        }, reject);\n      },\n      error: error => {\n        if (error.message.includes('Failed to load the image')) {\n          reject(\n            new Error(\n              'Unable to process the selected image. Please try a different image.',\n            ),\n          );\n          return;\n        }\n\n        reject(error);\n      },\n    });\n  });\n}\n\nexport {compressFile, compressImage};\n","import {useCallback} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {isSafari} from 'react-device-detect';\nimport {useEvent} from '../hooks';\nimport {toast} from '../toaster';\nimport {isDOMException} from './utils';\n\nconst GET_USER_MEDIA_ERROR = 'getUserMedia is not implemented in this browser';\n\ntype WebcamErrorDetails = {title: string; message: string};\n\ntype UseErrorHandlerProps = {\n  onError: (errorDetails: WebcamErrorDetails) => void;\n};\n\nfunction useErrorHandler({onError}: UseErrorHandlerProps) {\n  const {t} = useTranslation();\n  const handleError = useEvent(onError);\n\n  const handleUserMediaError = useCallback(\n    (error: string | DOMException | Error) => {\n      console.error(error);\n      let errorText: string;\n\n      if ((error as Error)?.message === GET_USER_MEDIA_ERROR) {\n        errorText = t('camera_errors.chekin_cant_use_your_camera');\n        handleError({\n          title: errorText,\n          message: t('camera_errors.please_try_a_different_browser'),\n        });\n      } else if (isDOMException(error)) {\n        switch (error.name) {\n          case 'PermissionDeniedError':\n          case 'NotAllowedError':\n            errorText = `${t('camera_errors.permissions_denied')}. ${t(\n              'camera_errors.camera_permissions_denied',\n            )}`;\n            toast.error(errorText);\n            break;\n          case 'NotFoundError':\n            errorText = t('camera_errors.no_camera_device_found');\n            toast.error(errorText);\n            break;\n          case 'NotReadableError':\n          case 'AbortError':\n            errorText = t('camera_errors.chekin_cant_use_your_camera');\n            handleError({\n              title: errorText,\n              message: `${t('close_other_application_that_may_be_using_your_camera')}.\n                ${t('if_you_use_external_camera_disconnect_and_reconnect')}.\n                ${t('close_the_browser_re_open_it')}.`,\n            });\n            break;\n          case 'OverconstrainedError':\n            errorText = t('camera_errors.constraints_camera_error');\n\n            if (isSafari) {\n              handleError({\n                title: errorText,\n                message: `${t('camera_errors.safari_camera_error')}. ${t(\n                  'camera_errors.try_chrome_or_firefox',\n                )}.`,\n              });\n            } else {\n              toast.error(errorText);\n            }\n            break;\n          default:\n            errorText = t('camera_errors.chekin_cant_use_your_camera');\n            handleError({\n              title: errorText,\n              message: `${t('camera_errors.please_try_a_different_browser')} ${error}`,\n            });\n        }\n      } else {\n        errorText = t('camera_errors.chekin_cant_use_your_camera');\n        handleError({\n          title: errorText,\n          message: `${t('camera_errors.please_try_a_different_browser')} ${error}`,\n        });\n      }\n    },\n    [handleError, t],\n  );\n\n  return {handleUserMediaError};\n}\n\nexport {useErrorHandler};\nexport type {WebcamErrorDetails};\n","import {isMobile, isSafari, isTablet} from 'react-device-detect';\nimport type {VideoConstraints} from './types';\n\nconst isMobileOrTablet = () => isMobile || isTablet;\n\ntype GetMobileOrDesktopVideoConstraintsProps = {\n  deviceId?: string;\n  facingMode?: string;\n  additional?: VideoConstraints;\n  optimizedForLiveness?: boolean;\n};\n\nconst getLivenessOptimizedConstraints = (\n  deviceId?: string,\n  additional?: VideoConstraints,\n) => {\n  const additionalConstraints =\n    typeof additional === 'object' && additional !== null ? additional : {};\n\n  const baseConstraints = {\n    deviceId: deviceId ? {exact: deviceId} : undefined,\n    facingMode: {ideal: 'user'},\n    width: {min: 320, ideal: 800},\n    height: {min: 240, ideal: 600},\n    frameRate: {ideal: 24},\n    resizeMode: 'crop-and-scale' as const,\n    aspectRatio: {ideal: 1.333},\n    ...additionalConstraints,\n  };\n\n  if (isMobileOrTablet()) {\n    return {\n      ...baseConstraints,\n      width: {min: 320, ideal: 640},\n      height: {min: 240, ideal: 480},\n      aspectRatio: {ideal: 1},\n      facingMode: {ideal: 'environment'},\n      ...additionalConstraints,\n    };\n  }\n\n  return baseConstraints;\n};\n\nfunction getReducedVideoConstraints({\n  deviceId,\n  facingMode,\n  additional,\n}: GetMobileOrDesktopVideoConstraintsProps) {\n  const additionalConstraints = typeof additional === 'object' ? additional : {};\n\n  return {\n    deviceId: deviceId ? {exact: deviceId} : undefined,\n    facingMode: {ideal: facingMode || 'user'},\n    width: {min: 320, ideal: 640},\n    height: {min: 240, ideal: 480},\n    ...additionalConstraints,\n  };\n}\n\nfunction getMobileOrDesktopVideoConstraints({\n  deviceId,\n  facingMode,\n  additional,\n  optimizedForLiveness = false,\n}: GetMobileOrDesktopVideoConstraintsProps) {\n  const additionalConstraints = typeof additional === 'object' ? additional : {};\n\n  if (optimizedForLiveness) {\n    return getLivenessOptimizedConstraints(deviceId, additionalConstraints);\n  }\n\n  const initialConstraints = {\n    deviceId: deviceId ? {exact: deviceId} : undefined,\n    facingMode: {ideal: facingMode || 'user'},\n    width: isSafari ? {min: 320, ideal: 1920} : {min: 320, ideal: 4096, max: 4096},\n    height: isSafari ? {min: 240, ideal: 1080} : {min: 240, ideal: 2160, max: 2160},\n    frameRate: {ideal: 30},\n    resizeMode: 'none',\n    aspectRatio: {ideal: 1.777},\n    ...additionalConstraints,\n  };\n\n  if (isMobileOrTablet()) {\n    return {\n      ...initialConstraints,\n      aspectRatio: {ideal: 1},\n      facingMode: {ideal: 'environment'},\n      ...additionalConstraints,\n    };\n  }\n\n  if (isSafari && !isMobile) {\n    return {\n      deviceId: deviceId ? {ideal: deviceId} : undefined,\n      width: {min: 320, ideal: 1920},\n      height: {min: 240, ideal: 1080},\n      ...additionalConstraints,\n    };\n  }\n\n  return initialConstraints;\n}\n\nfunction isDOMException(error: string | DOMException | Error): error is DOMException {\n  return error instanceof DOMException && Boolean(error?.name);\n}\n\ntype GetPhotoCanvasProps = {\n  player?: HTMLVideoElement | null;\n  container?: HTMLDivElement | null;\n  canvas?: HTMLCanvasElement | null;\n  scanArea?: HTMLDivElement | null;\n  cropToScanArea?: boolean;\n};\n\nfunction getPhotoCanvas({\n  player,\n  container,\n  scanArea,\n  canvas,\n  cropToScanArea,\n}: GetPhotoCanvasProps) {\n  if (!canvas) return;\n\n  const playerWidth = player?.videoWidth ?? 1280;\n  const playerHeight = player?.videoHeight ?? 720;\n  const playerAR = playerWidth / playerHeight;\n  const canvasWidth = container?.offsetWidth ?? 1280;\n  const canvasHeight = container?.offsetHeight ?? 1280;\n  const canvasAR = canvasWidth / canvasHeight;\n\n  let sourceX: number;\n  let sourceY: number;\n  let sourceWidth: number;\n  let sourceHeight: number;\n\n  if (playerAR > canvasAR) {\n    sourceHeight = playerHeight;\n    sourceWidth = playerHeight * canvasAR;\n    sourceX = (playerWidth - sourceWidth) / 2;\n    sourceY = 0;\n  } else {\n    sourceWidth = playerWidth;\n    sourceHeight = playerWidth / canvasAR;\n    sourceX = 0;\n    sourceY = (playerHeight - sourceHeight) / 2;\n  }\n\n  if (cropToScanArea && scanArea && player) {\n    const scanAreaRect = scanArea.getBoundingClientRect();\n    const scaleY = playerHeight / player.clientHeight;\n    const offsetX = (playerWidth - player.clientWidth * scaleY) / 2;\n    const offsetY = (playerHeight - player.clientHeight * scaleY) / 2;\n    const cropX = offsetX + ((player.clientWidth - scanAreaRect.width) / 2) * scaleY;\n    const cropY = offsetY + ((player.clientHeight - scanAreaRect.height) / 2) * scaleY;\n    const cropWidth = scanAreaRect.width * scaleY;\n    const cropHeight = scanAreaRect.height * scaleY;\n\n    canvas.width = cropWidth;\n    canvas.height = cropHeight;\n\n    const context = canvas.getContext('2d');\n    if (context) {\n      context.drawImage(\n        player,\n        cropX,\n        cropY,\n        cropWidth,\n        cropHeight,\n        0,\n        0,\n        cropWidth,\n        cropHeight,\n      );\n    }\n\n    return canvas;\n  }\n\n  canvas.width = sourceWidth;\n  canvas.height = sourceHeight;\n\n  const context = canvas.getContext('2d');\n  if (context && player) {\n    context.drawImage(\n      player,\n      sourceX,\n      sourceY,\n      sourceWidth,\n      sourceHeight,\n      0,\n      0,\n      sourceWidth,\n      sourceHeight,\n    );\n  }\n\n  return canvas;\n}\n\nexport {\n  getMobileOrDesktopVideoConstraints,\n  getPhotoCanvas,\n  getReducedVideoConstraints,\n  isDOMException,\n  isMobileOrTablet,\n};\n","import {Camera, ChevronLeft} from 'lucide-react';\nimport {forwardRef, type ReactNode, useCallback} from 'react';\nimport {createPortal} from 'react-dom';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\nimport {getDocument} from '../lib/utils';\nimport {Webcam, type WebcamProps} from '../webcam';\nimport type {VideoConstraints, WebcamRefTypes} from '../webcam';\nimport {DeviceCamera} from './DeviceCamera';\n\nconst webcamClasses = 'fixed left-0 top-0 z-[6] h-full w-full rounded-none';\n\nconst scanAreaClasses = String.raw`[&_.webcam\\_\\_scan-area]:h-full [&_.webcam\\_\\_scan-area]:max-h-[209px] landscape:[&_.webcam\\_\\_scan-area]:h-[80%] landscape:[&_.webcam\\_\\_scan-area]:max-h-full md:[&_.webcam\\_\\_scan-area]:h-auto md:[&_.webcam\\_\\_scan-area]:max-h-none md:[&_.webcam\\_\\_scan-area]:aspect-[2/1]`;\n\nconst roundedWebcamClasses = String.raw`[&_.webcam\\_\\_scan-area]:top-[-60px] [&_.webcam\\_\\_scan-area]:h-full [&_.webcam\\_\\_scan-area]:w-full [&_.webcam\\_\\_scan-area]:max-h-[55%] [&_.webcam\\_\\_scan-area]:max-w-[80%] max-[375px]:[&_.webcam\\_\\_scan-area]:max-h-[369px] max-[375px]:[&_.webcam\\_\\_scan-area]:max-w-[261px] max-[320px]:[&_.webcam\\_\\_scan-area]:max-h-[318px] max-[320px]:[&_.webcam\\_\\_scan-area]:max-w-[220px] landscape:[&_.webcam\\_\\_scan-area]:h-full landscape:[&_.webcam\\_\\_scan-area]:w-full landscape:[&_.webcam\\_\\_scan-area]:max-h-[90%] landscape:[&_.webcam\\_\\_scan-area]:max-w-[261px] md:[&_.webcam\\_\\_scan-area]:aspect-square`;\n\nfunction getAndMapFacingMode(constraints: VideoConstraints) {\n  if (typeof constraints === 'boolean' || !constraints) return;\n  if (constraints.facingMode === 'user') return 'user';\n  if (constraints.facingMode === 'environment') return 'environment';\n}\n\nexport type MobileScreenshotPayload =\n  | {\n      isNative: true;\n      photo?: Promise<string>;\n    }\n  | {isNative: false};\n\nexport type MobileCameraProps = WebcamProps & {\n  onScreenshot: (payload: MobileScreenshotPayload) => void;\n  onBack: () => void;\n  disabled: boolean;\n  text?: ReactNode | string;\n  title?: ReactNode | string;\n};\n\nconst MobileWebcam = forwardRef<WebcamRefTypes, MobileCameraProps>(\n  ({onScreenshot, onBack, title, text, disabled, className, ...props}, ref) => {\n    const rootElement = getDocument()?.body;\n    const {t} = useTranslation();\n\n    const handleNativeScreenshot = useCallback(\n      (photo?: Promise<string>) => onScreenshot({isNative: true, photo}),\n      [onScreenshot],\n    );\n\n    return createPortal(\n      <div className=\"mobile-camera flex justify-center\">\n        <button\n          type=\"button\"\n          onClick={onBack}\n          className=\"mobile-camera__back-btn fixed left-7 top-9 z-[7] flex border-0 bg-transparent p-0 landscape:left-[50px] landscape:top-[70px]\"\n        >\n          <ChevronLeft size={32} strokeWidth={3} className=\"text-white\" />\n        </button>\n        {title && (\n          <div className=\"mobile-camera__title fixed left-1/2 top-8 z-[7] -translate-x-1/2 whitespace-nowrap text-[18px] font-bold text-white landscape:top-[5px]\">\n            {title}\n          </div>\n        )}\n        {text ? (\n          <p className=\"mobile-camera__subtitle fixed top-[76px] z-[7] mx-auto my-0 px-6 text-center text-white landscape:hidden [@media(min-height:838px)]:top-28\">\n            {text}\n          </p>\n        ) : (\n          <p className=\"mobile-camera__helper fixed top-[88px] z-[7] mx-auto my-0 px-6 text-center text-xs text-white landscape:hidden [@media(min-height:700px)]:[font-size:inherit]\">\n            {t('place_document_inside_frame')}\n          </p>\n        )}\n        <Webcam\n          ref={ref}\n          {...props}\n          className={cn(\n            className,\n            webcamClasses,\n            props.roundedScanArea ? roundedWebcamClasses : scanAreaClasses,\n          )}\n        />\n        <div className=\"fixed bottom-5 z-[7] flex w-[calc(100%-32px)] flex-col justify-between gap-5 self-center landscape:inset-y-0 landscape:right-10 landscape:my-auto landscape:h-auto landscape:w-auto landscape:justify-normal landscape:[&_.mobile-webcam-device-camera]:hidden\">\n          <button\n            type=\"button\"\n            disabled={disabled}\n            onClick={() => onScreenshot({isNative: false})}\n            className=\"mobile-camera__take-btn relative flex h-[75px] w-[75px] items-center justify-center self-center rounded-full border-0 bg-white p-[10px] shadow-[0_0_10px_#ffffff] hover:opacity-80 disabled:cursor-default disabled:opacity-60 disabled:hover:opacity-60\"\n          >\n            <Camera size={26} className=\"text-[var(--primary)]\" />\n          </button>\n          <DeviceCamera\n            onChange={handleNativeScreenshot}\n            facingMode={getAndMapFacingMode(props.additionalConstraints)}\n          />\n        </div>\n      </div>,\n      rootElement,\n    );\n  },\n);\n\nMobileWebcam.displayName = 'MobileWebcam';\n\nexport {MobileWebcam};\n","import {type ChangeEvent, type InputHTMLAttributes, useCallback} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {compressImage} from '../../lib/compression';\n\ntype DeviceCameraProps = {\n  onChange: (photo?: Promise<string>) => void;\n  facingMode?: InputHTMLAttributes<unknown>['capture'];\n  className?: string;\n};\n\nfunction DeviceCamera({onChange, facingMode, className}: DeviceCameraProps) {\n  const {t} = useTranslation();\n\n  const handleNativeScreenshot = useCallback(\n    (event: ChangeEvent<HTMLInputElement>) => {\n      const file = event.target.files?.[0];\n      onChange(file ? compressImage(file) : undefined);\n    },\n    [onChange],\n  );\n\n  return (\n    <div\n      className={cn(\n        'mobile-webcam-device-camera flex flex-col items-center gap-3 rounded-xl bg-[#1c1b1f] p-4 text-sm text-white',\n        className,\n      )}\n    >\n      <div>{t('camera_errors.experiencing_camera_issues')}</div>\n      <label className=\"text-[16px] font-semibold uppercase leading-6\">\n        {t('open_devices_camera')}\n        <input\n          className=\"sr-only\"\n          type=\"file\"\n          accept=\"image/*\"\n          capture={facingMode || 'environment'}\n          onChange={handleNativeScreenshot}\n        />\n      </label>\n    </div>\n  );\n}\n\nexport {DeviceCamera};\n","import {forwardRef} from 'react';\nimport {Button, type ButtonProps} from '../button';\nimport {cn} from '../lib/cn';\n\nexport type WideButtonProps = Omit<ButtonProps, 'size'>;\n\nexport const WideButton = forwardRef<HTMLButtonElement, WideButtonProps>(\n  ({className, disabled, ...props}, ref) => (\n    <Button\n      ref={ref}\n      variant=\"ghost\"\n      className={cn(\n        'min-h-[84px] w-full max-w-[712px] flex-row justify-center rounded-md bg-[color-mix(in_srgb,var(--button-primary-bg)_6%,white)] text-[var(--button-primary-bg)] shadow-none',\n        'transition-all duration-[70ms] ease-in-out hover:opacity-70',\n        disabled && 'opacity-10',\n        className,\n      )}\n      disabled={disabled}\n      {...props}\n    />\n  ),\n);\n\nWideButton.displayName = 'WideButton';\n","import type {ReactNode} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {VisuallyHidden} from '@radix-ui/react-visually-hidden';\nimport {Dialog, DialogContent, DialogDescription, DialogTitle} from '../dialog';\nimport {Drawer, DrawerContent, DrawerDescription} from '../drawer';\nimport {useScreenResize} from '../hooks';\nimport {DEVICE} from '../lib/device';\nimport {cn} from '../lib/cn';\nimport {isMobileModalModeAvailable} from '../lib/runtimeSettings';\n\ntype ResponsiveSheetProps = {\n  open: boolean;\n  onClose: () => void;\n  title?: ReactNode;\n  description?: ReactNode;\n  children: ReactNode;\n  className?: string;\n  contentClassName?: string;\n  dialogClassName?: string;\n  drawerClassName?: string;\n  titleClassName?: string;\n  descriptionClassName?: string;\n  showCloseButton?: boolean;\n  showDrawerHandle?: boolean;\n  closeOnOverlayClick?: boolean;\n  closeOnEscape?: boolean;\n  disableDrag?: boolean;\n  onOpenAutoFocus?: (event: Event) => void;\n  onCloseAutoFocus?: (event: Event) => void;\n};\n\nfunction ResponsiveSheet({\n  open,\n  onClose,\n  title,\n  description,\n  children,\n  className,\n  contentClassName,\n  dialogClassName,\n  drawerClassName,\n  titleClassName,\n  descriptionClassName,\n  showCloseButton = true,\n  showDrawerHandle = true,\n  closeOnOverlayClick = false,\n  closeOnEscape = true,\n  disableDrag = false,\n  onOpenAutoFocus,\n  onCloseAutoFocus,\n}: Readonly<ResponsiveSheetProps>) {\n  const {t} = useTranslation();\n  const {isMatch: isMobile} = useScreenResize(DEVICE.tablet);\n  const isMobileMode = isMobile && isMobileModalModeAvailable();\n\n  const handleOpenChange = (nextOpen: boolean) => {\n    if (!nextOpen) {\n      onClose();\n    }\n  };\n\n  const handleInteractOutside = (event: Event) => {\n    if (!closeOnOverlayClick) {\n      event.preventDefault();\n    }\n  };\n\n  const handleEscapeKeyDown = (event: KeyboardEvent) => {\n    if (!closeOnEscape) {\n      event.preventDefault();\n    }\n  };\n\n  const content = (\n    <div\n      className={cn(\n        'flex w-full flex-col px-6 pb-6 pt-4 sm:px-8 sm:pb-8 sm:pt-8',\n        contentClassName,\n      )}\n    >\n      {title ? (\n        <DialogTitle className={cn('text-center mb-3', titleClassName)}>\n          {title}\n        </DialogTitle>\n      ) : (\n        <VisuallyHidden asChild>\n          <DialogTitle>{description ?? t('dialog')}</DialogTitle>\n        </VisuallyHidden>\n      )}\n      {description ? (\n        <p\n          aria-hidden=\"true\"\n          className={cn(\n            'text-center text-[16px] leading-6 text-[var(--primary)]/70',\n            descriptionClassName,\n          )}\n        >\n          {description}\n        </p>\n      ) : null}\n      {children}\n    </div>\n  );\n\n  if (isMobileMode) {\n    return (\n      <Drawer open={open} onOpenChange={handleOpenChange}>\n        <DrawerContent\n          onClose={onClose}\n          showHandle={showDrawerHandle}\n          closeOnOverlayClick={closeOnOverlayClick}\n          disableDrag={disableDrag}\n          lockScroll={false}\n          onEscapeKeyDown={handleEscapeKeyDown}\n          onOpenAutoFocus={onOpenAutoFocus}\n          onCloseAutoFocus={onCloseAutoFocus}\n          className={cn(className, drawerClassName)}\n        >\n          {description ? (\n            <DrawerDescription className=\"sr-only\">{description}</DrawerDescription>\n          ) : null}\n          {content}\n        </DrawerContent>\n      </Drawer>\n    );\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={handleOpenChange}>\n      <DialogContent\n        showCloseButton={showCloseButton}\n        onPointerDownOutside={handleInteractOutside}\n        onInteractOutside={handleInteractOutside}\n        onEscapeKeyDown={handleEscapeKeyDown}\n        onOpenAutoFocus={onOpenAutoFocus}\n        onCloseAutoFocus={onCloseAutoFocus}\n        className={cn('max-w-[560px] border-0 p-0 shadow-xl', className, dialogClassName)}\n        lockScroll={false}\n      >\n        {description ? (\n          <DialogDescription className=\"sr-only\">{description}</DialogDescription>\n        ) : null}\n        {content}\n      </DialogContent>\n    </Dialog>\n  );\n}\n\nexport {ResponsiveSheet};\nexport type {ResponsiveSheetProps};\n","import * as React from 'react';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from '../dropdown-menu';\nimport {Drawer, DrawerContent, DrawerTitle} from '../drawer';\nimport {useScreenResize} from '../hooks';\nimport {DEVICE} from '../lib/device';\nimport {cn} from '../lib/cn';\nimport {isMobileModalModeAvailable} from '../lib/runtimeSettings';\n\ntype DropdownSide = 'top' | 'right' | 'bottom' | 'left';\ntype DropdownAlign = 'start' | 'center' | 'end';\n\ntype ResponsiveDropdownOption = {\n  id: string | number;\n  label: React.ReactNode;\n  onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n  hidden?: boolean;\n  disabled?: boolean;\n};\n\ntype ResponsiveDropdownProps = {\n  trigger: React.ReactElement | ((isOpen: boolean) => React.ReactElement);\n  options?: ResponsiveDropdownOption[];\n  children?: React.ReactNode;\n  side?: DropdownSide;\n  align?: DropdownAlign;\n  disabled?: boolean;\n  title?: React.ReactNode;\n  className?: string;\n  dropdownClassName?: string;\n  drawerClassName?: string;\n};\n\nfunction ResponsiveDropdown({\n  trigger,\n  options,\n  children,\n  side,\n  align,\n  disabled,\n  title,\n  className,\n  dropdownClassName,\n  drawerClassName,\n}: Readonly<ResponsiveDropdownProps>) {\n  const {isMatch: isMobile} = useScreenResize(DEVICE.mobileXL);\n  const isMobileMode = isMobile && isMobileModalModeAvailable();\n  const [open, setOpen] = React.useState(false);\n\n  const visibleOptions = options?.filter(option => !option.hidden) ?? [];\n\n  const renderTrigger = (isOpen: boolean) =>\n    typeof trigger === 'function' ? trigger(isOpen) : trigger;\n\n  const handleOpenChange = (nextOpen: boolean) => {\n    if (disabled) {\n      return;\n    }\n    setOpen(nextOpen);\n  };\n\n  const handleOptionClick =\n    (option: ResponsiveDropdownOption) => (event: React.MouseEvent<HTMLDivElement>) => {\n      if (disabled || option.disabled) {\n        return;\n      }\n      option.onClick?.(event);\n      setOpen(false);\n    };\n\n  if (isMobileMode) {\n    return (\n      <>\n        <div\n          className=\"responsive-dropdown__mobile-trigger\"\n          onClick={() => handleOpenChange(true)}\n        >\n          {renderTrigger(open)}\n        </div>\n        <Drawer open={open} onOpenChange={handleOpenChange}>\n          <DrawerContent\n            onClose={() => setOpen(false)}\n            lockScroll={false}\n            className={cn('px-0 pb-2', className, drawerClassName)}\n          >\n            {title ? <DrawerTitle className=\"sr-only\">{title}</DrawerTitle> : null}\n            <div className=\"flex flex-col\">\n              {visibleOptions.map(option => (\n                <div\n                  key={option.id}\n                  role=\"button\"\n                  tabIndex={0}\n                  aria-disabled={option.disabled}\n                  onClick={handleOptionClick(option)}\n                  className={cn(\n                    'cursor-pointer px-5 py-3 text-base font-medium text-[var(--chekin-color-brand-navy)] outline-none hover:bg-gray-50',\n                    option.disabled && 'pointer-events-none opacity-50',\n                  )}\n                >\n                  {option.label}\n                </div>\n              ))}\n              {children}\n            </div>\n          </DrawerContent>\n        </Drawer>\n      </>\n    );\n  }\n\n  return (\n    <DropdownMenu open={open} onOpenChange={handleOpenChange}>\n      <DropdownMenuTrigger asChild disabled={disabled}>\n        {renderTrigger(open)}\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        side={side}\n        align={align}\n        className={cn('min-w-[295px]', className, dropdownClassName)}\n      >\n        {visibleOptions.map(option => (\n          <DropdownMenuItem\n            key={option.id}\n            disabled={option.disabled}\n            onClick={handleOptionClick(option)}\n          >\n            {option.label}\n          </DropdownMenuItem>\n        ))}\n        {children}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n\nexport {ResponsiveDropdown};\nexport type {ResponsiveDropdownProps, ResponsiveDropdownOption};\n","import * as React from 'react';\nimport {Eye, Minus, Plus, X} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {useCombinedRef} from '../../hooks';\nimport {usePrevious} from '../../hooks/use-previous';\nimport {useInputValueState} from './useInputValueState';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {Fieldset} from '../_fieldset';\n\ntype InputProps = React.InputHTMLAttributes<HTMLInputElement> & {\n  label?: string | React.ReactNode;\n  topLabel?: string;\n  tooltip?: React.ReactNode;\n  optional?: boolean | string;\n  error?: unknown;\n  invalid?: boolean;\n  loading?: boolean;\n  empty?: boolean;\n  helperText?: string;\n  footer?: string | React.ReactNode;\n  leftIcon?: React.ReactNode;\n  sign?: string | React.ReactNode;\n  onReset?: () => void;\n  showNumberButtons?: boolean;\n  onIncrement?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n  onDecrement?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n  wrapperClassName?: string;\n  fieldClassName?: string;\n  contentClassName?: string;\n  inputClassName?: string;\n  trailingAdornment?: React.ReactNode;\n  renderErrorMessage?: boolean;\n};\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n  (\n    {\n      value,\n      defaultValue,\n      className,\n      wrapperClassName,\n      fieldClassName,\n      contentClassName,\n      inputClassName,\n      label,\n      topLabel,\n      tooltip,\n      disabled,\n      loading,\n      readOnly,\n      name,\n      id,\n      type,\n      error,\n      optional = false,\n      invalid,\n      empty,\n      showNumberButtons,\n      onIncrement,\n      onDecrement,\n      sign,\n      footer,\n      onReset,\n      onChange,\n      onFocus,\n      onBlur,\n      helperText,\n      placeholder,\n      leftIcon,\n      trailingAdornment,\n      renderErrorMessage = true,\n      ...props\n    },\n    ref,\n  ) => {\n    const generatedId = React.useId();\n    const inputId = id ?? name ?? generatedId;\n    const errorId = `${inputId}-error`;\n    const {t} = useTranslation();\n    const {inputRef, isControlled, isEmpty, setNativeValue, syncValueState} =\n      useInputValueState({\n        empty,\n        value,\n        defaultValue,\n      });\n    const [inputType, setInputType] = React.useState(type);\n    const [isPasswordRevealed, setIsPasswordRevealed] = React.useState(false);\n    const [isFocused, setIsFocused] = React.useState(false);\n    const combinedInputRef = useCombinedRef(inputRef, ref);\n    const prevInputType = usePrevious(inputType);\n    const isPasswordReveal =\n      (prevInputType === 'password' || type === 'password') && !isEmpty;\n    const hasInvalidState = Boolean(invalid) || (Boolean(error) && error !== 'NONE');\n    const errorMessage =\n      typeof error === 'string' && error !== 'NONE' ? error : undefined;\n\n    const togglePasswordReveal = () => {\n      if (isPasswordRevealed) {\n        setInputType('password');\n        setIsPasswordRevealed(false);\n      } else {\n        setInputType('text');\n        setIsPasswordRevealed(true);\n      }\n    };\n\n    React.useEffect(() => {\n      setInputType(type);\n    }, [type]);\n\n    const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n      if (readOnly || disabled) return;\n      if (!isControlled) {\n        setNativeValue(event.currentTarget.value);\n      }\n      onChange?.(event);\n    };\n\n    const handleLabelClick = () => {\n      if (readOnly || disabled || loading) return;\n      inputRef.current?.focus();\n    };\n\n    const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n      if (readOnly || disabled) return;\n      onFocus?.(event);\n      syncValueState();\n      setIsFocused(true);\n    };\n\n    const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n      onBlur?.(event);\n      syncValueState();\n      setIsFocused(false);\n    };\n\n    const showRightPaddingForReset = Boolean(onReset);\n    const showRightPaddingForReveal = isPasswordReveal;\n\n    return (\n      <div\n        className={cn(\n          'input',\n          disabled && 'input--disabled',\n          loading && 'input--loading',\n          readOnly && 'input--readonly',\n          isFocused && 'input--focused',\n          isEmpty && 'input--empty',\n          hasInvalidState && 'input--invalid',\n          'relative block w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)] min-h-[var(--field-min-height,48px)]',\n          disabled && 'cursor-not-allowed opacity-50',\n          loading && 'cursor-progress opacity-50',\n          wrapperClassName,\n          className,\n        )}\n      >\n        {topLabel && (\n          <label\n            htmlFor={inputId}\n            className=\"input__top-label mb-2 block text-[length:var(--field-top-label-font-size)] font-[var(--field-top-label-font-weight)] text-[var(--chekin-color-brand-navy)]\"\n          >\n            {topLabel}\n          </label>\n        )}\n        <div className={cn('input__field', 'relative block w-full', fieldClassName)}>\n          <div\n            className={cn(\n              'input__content relative w-full cursor-text',\n              readOnly && !disabled && !loading && 'cursor-default',\n              contentClassName,\n            )}\n          >\n            <Fieldset\n              isFocused={isFocused && !readOnly}\n              invalid={hasInvalidState}\n              isEmpty={isEmpty}\n              onClick={handleLabelClick}\n              isActivated={!isEmpty || isFocused}\n              readOnly={readOnly}\n              loading={loading}\n              disabled={disabled}\n              htmlFor={inputId}\n              labelId={`${inputId}-label`}\n              legend={typeof label === 'string' ? label : undefined}\n              label={label}\n              tooltip={tooltip}\n              className=\"input__fieldset\"\n              labelClassName={cn({\n                input__label: true,\n                'pl-[28px]': !!leftIcon,\n              })}\n            />\n            {leftIcon && (\n              <span className=\"input__left-icon pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]\">\n                <span className=\"input__left-icon-inner flex h-full w-10 items-center justify-center\">\n                  {leftIcon}\n                </span>\n              </span>\n            )}\n            <input\n              {...props}\n              ref={combinedInputRef}\n              id={inputId}\n              name={name}\n              type={inputType}\n              data-testid=\"input\"\n              value={value}\n              defaultValue={defaultValue}\n              disabled={disabled || loading}\n              readOnly={readOnly}\n              required={!optional}\n              aria-label={typeof label === 'string' ? label : undefined}\n              aria-invalid={hasInvalidState}\n              aria-busy={loading}\n              aria-describedby={errorMessage && renderErrorMessage ? errorId : undefined}\n              placeholder={isFocused || !label ? placeholder : undefined}\n              onChange={handleChange}\n              onFocus={handleFocus}\n              onBlur={handleBlur}\n              className={cn(\n                'input__control',\n                'm-0 box-border h-12 w-full rounded-[6px] border-0 px-4 text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors duration-200 [text-overflow:ellipsis] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none',\n                'placeholder:text-[length:var(--field-placeholder-font-size)] placeholder:font-[var(--field-placeholder-font-weight)] placeholder:text-[var(--chekin-color-gray-1)] placeholder:opacity-100',\n                isEmpty && !isFocused\n                  ? 'bg-[var(--empty-field-background)]'\n                  : 'bg-transparent',\n                isEmpty && 'text-[var(--chekin-color-gray-1)]',\n                inputType === 'password' &&\n                  '[&:not(:placeholder-shown)]:font-bold [&:not(:placeholder-shown)]:tracking-[2px]',\n                disabled && 'cursor-not-allowed',\n                readOnly && !disabled && !loading && 'cursor-default',\n                loading && 'cursor-progress',\n                leftIcon && 'pl-10',\n                (showRightPaddingForReset || showRightPaddingForReveal) && 'pr-10',\n                sign && 'pr-10',\n                inputClassName,\n              )}\n            />\n            {sign && (\n              <span className=\"input__sign pointer-events-none absolute right-[14px] top-0 flex h-full items-center text-[18px] font-medium leading-6 text-[var(--chekin-color-brand-navy)]\">\n                {sign}\n              </span>\n            )}\n            {trailingAdornment && (\n              <span className=\"input__trailing-adornment pointer-events-none absolute right-[14px] top-0 flex h-full items-center\">\n                {trailingAdornment}\n              </span>\n            )}\n            {onReset && !isEmpty && (\n              <button\n                type=\"button\"\n                onClick={onReset}\n                disabled={disabled}\n                className=\"input__reset-button absolute right-0 top-0 flex h-full w-10 items-center justify-center border-0 bg-transparent p-0 text-[var(--chekin-neutral-500)] hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50\"\n                aria-label={t('reset')}\n              >\n                <X size={14} />\n              </button>\n            )}\n            {isPasswordReveal && (\n              <button\n                type=\"button\"\n                onClick={togglePasswordReveal}\n                className=\"input__password-button absolute right-[14px] top-[18px] flex h-[13px] w-[21px] cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:opacity-85\"\n                aria-label={isPasswordRevealed ? t('hide_password') : t('show_password')}\n              >\n                <Eye\n                  size={20}\n                  className={cn(\n                    'input__password-icon',\n                    isPasswordRevealed\n                      ? 'text-[var(--chekin-airbnb-pink)]'\n                      : 'text-[var(--chekin-color-gray-2)]',\n                  )}\n                />\n              </button>\n            )}\n          </div>\n          {type === 'number' && showNumberButtons && (\n            <div className=\"input__number-controls absolute right-[18px] top-[13px] inline-flex items-center text-right\">\n              <button\n                type=\"button\"\n                onClick={onDecrement}\n                className=\"input__decrement-button mr-2 inline-flex h-[23px] w-8 cursor-pointer items-center justify-center rounded-[3px] border-0 bg-[var(--chekin-color-brand-blue)] p-0 text-[20px] font-bold text-white outline-none hover:opacity-90 active:opacity-100\"\n                aria-label={t('decrement')}\n              >\n                <Minus size={16} strokeWidth={3} aria-hidden />\n              </button>\n              <button\n                type=\"button\"\n                onClick={onIncrement}\n                className=\"input__increment-button inline-flex h-[23px] w-8 cursor-pointer items-center justify-center rounded-[3px] border-0 bg-[var(--chekin-color-brand-blue)] p-0 text-[20px] font-bold text-white outline-none hover:opacity-90 active:opacity-100\"\n                aria-label={t('increment')}\n              >\n                <Plus size={16} strokeWidth={3} aria-hidden />\n              </button>\n            </div>\n          )}\n        </div>\n        {!errorMessage && optional && (\n          <span\n            data-testid={`${name}-optional`}\n            className=\"input__optional mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\"\n          >\n            {typeof optional === 'string' ? optional : t('optional')}\n          </span>\n        )}\n        {!errorMessage && helperText && (\n          <span className=\"input__helper-text mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]\">\n            {helperText}\n          </span>\n        )}\n        {errorMessage && renderErrorMessage && (\n          <FieldErrorMessage\n            id={errorId}\n            message={errorMessage}\n            data-testid={name ? `${name}-error` : undefined}\n            className=\"input__error mt-[1px] text-[14px]\"\n          />\n        )}\n        {footer}\n      </div>\n    );\n  },\n);\n\nInput.displayName = 'Input';\n\nexport {Input};\nexport type {InputProps};\n","import * as React from 'react';\nimport {type InputProps} from './Input';\n\nconst isEmptyValue = (value: InputProps['value'] | InputProps['defaultValue']) => {\n  if (value === undefined || value === null) return true;\n  return String(value).length === 0;\n};\n\nconst getInputEmptyState = ({\n  empty,\n  defaultValue,\n  value,\n}: {\n  empty?: boolean;\n  value?: InputProps['value'];\n  defaultValue?: InputProps['defaultValue'];\n}) => {\n  if (typeof empty !== 'undefined') return empty;\n  if (typeof value !== 'undefined') return isEmptyValue(value);\n  return isEmptyValue(defaultValue);\n};\n\nexport function useInputValueState({\n  empty,\n  value,\n  defaultValue,\n}: {\n  empty?: boolean;\n  value?: InputProps['value'];\n  defaultValue?: InputProps['defaultValue'];\n}) {\n  const inputRef = React.useRef<HTMLInputElement>(null);\n  const isControlled = typeof empty !== 'undefined' || typeof value !== 'undefined';\n  const propsAreEmpty = getInputEmptyState({empty, value, defaultValue});\n  const [nativeIsEmpty, setNativeIsEmpty] = React.useState(propsAreEmpty);\n  const isEmpty = isControlled ? propsAreEmpty : nativeIsEmpty;\n\n  const setNativeValue = React.useCallback(\n    (nextValue: string) => {\n      if (isControlled) return;\n\n      const nextIsEmpty = nextValue.length === 0;\n      setNativeIsEmpty(prevIsEmpty =>\n        prevIsEmpty === nextIsEmpty ? prevIsEmpty : nextIsEmpty,\n      );\n    },\n    [isControlled],\n  );\n\n  const syncValueState = React.useCallback(() => {\n    if (!inputRef.current) return;\n    setNativeValue(inputRef.current.value);\n  }, [setNativeValue]);\n\n  // Form libraries can preload uncontrolled values through refs without props.\n  React.useLayoutEffect(() => {\n    syncValueState();\n  });\n\n  React.useEffect(() => {\n    const input = inputRef.current;\n    const form = input?.form;\n\n    if (isControlled || !form) return;\n\n    const handleReset = () => {\n      if (typeof window !== 'undefined' && window.requestAnimationFrame) {\n        window.requestAnimationFrame(syncValueState);\n        return;\n      }\n\n      globalThis.setTimeout(syncValueState, 0);\n    };\n\n    form.addEventListener('reset', handleReset);\n    return () => form.removeEventListener('reset', handleReset);\n  }, [isControlled, syncValueState]);\n\n  return {\n    inputRef,\n    isControlled,\n    isEmpty,\n    setNativeValue,\n    syncValueState,\n  };\n}\n","import * as React from 'react';\nimport {cn} from '../../lib/cn';\nimport {HelpTooltip} from '../../help-tooltip';\n\ntype FieldsetProps = {\n  isActivated: boolean;\n  isFocused: boolean;\n  label?: string | React.ReactNode | null;\n  legend?: string | React.ReactNode;\n  tooltip?: React.ReactNode;\n  isEmpty?: boolean;\n  readOnly?: boolean;\n  invalid?: boolean;\n  loading?: boolean;\n  disabled?: boolean;\n  htmlFor?: string;\n  labelId?: string;\n  onClick?: () => void;\n  pointerCursor?: boolean;\n  className?: string;\n  labelClassName?: string;\n};\n\nfunction Fieldset({\n  isActivated,\n  isFocused,\n  isEmpty,\n  invalid,\n  label,\n  tooltip,\n  legend,\n  onClick,\n  htmlFor,\n  labelId,\n  readOnly,\n  loading,\n  disabled,\n  pointerCursor,\n  className,\n  labelClassName,\n}: FieldsetProps) {\n  const showLegendText = Boolean(legend || typeof label === 'string');\n  const raised = !isEmpty || isFocused;\n\n  return (\n    <>\n      <div\n        onClick={onClick}\n        className={cn(\n          'absolute box-border inline-flex max-w-full items-center pl-[3px] pr-5 transition-all duration-100 ease-in',\n          pointerCursor ? 'cursor-pointer' : 'cursor-text',\n          'left-[13px] text-[var(--chekin-color-gray-1)]',\n          isEmpty && !isFocused\n            ? 'top-[var(--field-label-top)]'\n            : 'top-[var(--field-label-raised-top)] !px-1',\n          isFocused && 'text-[var(--chekin-color-brand-blue)]',\n          raised && invalid && 'text-[var(--error-message-color)]',\n          readOnly && 'cursor-default',\n          disabled && 'pointer-events-none cursor-not-allowed',\n          loading && 'cursor-progress',\n          labelClassName,\n        )}\n      >\n        <label\n          id={labelId}\n          htmlFor={htmlFor}\n          className={cn(\n            'block cursor-[inherit] truncate transition-all duration-100 ease-in',\n            raised\n              ? 'text-[length:var(--field-label-raised-font-size)] font-[var(--field-label-raised-font-weight)]'\n              : 'text-[length:var(--field-label-font-size)] font-[var(--field-label-font-weight)]',\n          )}\n        >\n          {label}\n        </label>\n        {tooltip && (\n          <span className=\"ml-1 inline-flex\">\n            <HelpTooltip\n              content={tooltip}\n              size={16}\n              className={cn(isFocused && 'text-[var(--chekin-color-brand-blue)]')}\n            />\n          </span>\n        )}\n      </div>\n      <fieldset\n        aria-hidden=\"true\"\n        className={cn(\n          'pointer-events-none absolute -top-[5px] bottom-0 left-0 right-0 m-0 min-w-0 rounded-[6px] border px-[13px] text-left transition-colors duration-75',\n          'border-[var(--field-border)]',\n          isActivated && 'border-[var(--field-border-activated)]',\n          isFocused && 'border-[var(--field-border-focused)]',\n          invalid && 'border-[var(--field-border-invalid)]',\n          className,\n        )}\n      >\n        <legend\n          className={cn(\n            'invisible float-none block h-[11px] max-w-[0.01px] whitespace-nowrap p-0 text-[0.75em]',\n            'transition-[max-width] duration-[50ms] ease-out',\n            raised && 'max-w-full !duration-100 !delay-[50ms]',\n            !label && 'w-0',\n          )}\n        >\n          {showLegendText && (\n            <span\n              className={cn(\n                'visible inline-block px-1 text-[length:var(--field-label-raised-font-size)] opacity-0',\n                raised\n                  ? 'font-[var(--field-label-raised-font-weight)]'\n                  : 'font-[var(--field-label-font-weight)]',\n              )}\n            >\n              {legend || label}\n            </span>\n          )}\n          {tooltip && (\n            <span className=\"visible inline-block w-[20px] opacity-0\">\n              <span className=\"inline-block h-4 w-4\" />\n            </span>\n          )}\n        </legend>\n      </fieldset>\n    </>\n  );\n}\n\nexport {Fieldset};\nexport type {FieldsetProps};\n","import * as React from 'react';\nimport {cn} from '../../lib/cn';\nimport {CopyIcon, type CopyIconProps} from '../../copy-icon';\nimport {Input, type InputProps} from '../input';\n\ntype CopyInputProps = Omit<InputProps, 'readOnly' | 'onReset' | 'trailingAdornment'> & {\n  value?: string;\n  copyTooltip?: string;\n  copySize?: CopyIconProps['size'];\n  copyVariant?: CopyIconProps['variant'];\n  onCopy?: CopyIconProps['onClick'];\n};\n\nconst CopyInput = React.forwardRef<HTMLInputElement, CopyInputProps>(\n  ({value = '', copyTooltip, copySize, copyVariant = 'ghost', onCopy, ...props}, ref) => {\n    return (\n      <Input\n        {...props}\n        ref={ref}\n        value={value}\n        readOnly\n        trailingAdornment={\n          <span className=\"pointer-events-auto\">\n            <CopyIcon\n              textToCopy={value}\n              tooltipText={copyTooltip}\n              size={copySize}\n              variant={copyVariant}\n              onClick={onCopy}\n            />\n          </span>\n        }\n        inputClassName={cn('pr-12', props.inputClassName)}\n      />\n    );\n  },\n);\n\nCopyInput.displayName = 'CopyInput';\n\nexport {CopyInput};\nexport type {CopyInputProps};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {countriesFilter} from '../_select-internals';\nimport {Select} from '../select';\nimport {Input} from '../input';\nimport {\n  clearPhoneNumber,\n  formatPhoneCodeOptionLabel,\n  parsePhoneValueWithOptions,\n  toPhoneValue,\n} from './utils';\nimport type {PhoneInputOption, PhoneInputValue} from './types';\n\ntype PhoneInputHandle = {\n  getCodeSearchValue: () => string;\n  setCodeSearchValue: (value: string) => void;\n  getNumberValue: () => string;\n  setNumberValue: (value: string) => void;\n  focus: () => void;\n};\n\ntype PhoneInputSubfield = 'code' | 'number';\n\ntype PhoneInputProps = {\n  options: PhoneInputOption[];\n  value?: string | number | PhoneInputValue | null;\n  onChange?: (value: PhoneInputValue, name?: string) => void;\n  onFocus?: React.FocusEventHandler<HTMLInputElement>;\n  onBlur?: React.FocusEventHandler<HTMLInputElement>;\n  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n  onFieldFocus?: (subfield: PhoneInputSubfield) => void;\n  onFieldBlur?: (subfield: PhoneInputSubfield) => void;\n  name?: string;\n  codeName?: string;\n  numberName?: string;\n  label?: string;\n  topLabel?: string;\n  prefixLabel?: string;\n  placeholder?: string;\n  codePlaceholder?: string;\n  disabled?: boolean;\n  loading?: boolean;\n  readOnly?: boolean;\n  codeReadOnly?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  error?: string;\n  invalid?: boolean;\n  className?: string;\n  autoDetectCode?: boolean;\n  searchable?: boolean;\n  defaultCode?: string;\n  defaultNumber?: string;\n};\n\nconst PhoneInput = React.forwardRef<PhoneInputHandle, PhoneInputProps>(\n  function PhoneInput(\n    {\n      options,\n      value,\n      onChange,\n      onFocus,\n      onBlur,\n      onKeyDown,\n      onFieldFocus,\n      onFieldBlur,\n      name,\n      codeName,\n      numberName,\n      label,\n      topLabel,\n      prefixLabel,\n      placeholder,\n      codePlaceholder = '+00',\n      disabled,\n      loading,\n      readOnly,\n      codeReadOnly,\n      optional,\n      tooltip,\n      error,\n      invalid,\n      className,\n      autoDetectCode = true,\n      searchable = true,\n      defaultCode,\n      defaultNumber,\n    },\n    ref,\n  ) {\n    const {t} = useTranslation();\n    const groupLabelId = React.useId();\n    const errorMsgId = React.useId();\n    const numberInputRef = React.useRef<HTMLInputElement>(null);\n    const [codeSearchValue, setCodeSearchValue] = React.useState('');\n\n    const safeValue: PhoneInputValue = toPhoneValue(value, defaultCode, defaultNumber);\n    const effectiveCode = safeValue.code || defaultCode || '';\n    const resolvedLabel = label ?? '';\n    const hasExternalError = Boolean(error);\n    const isPrefixRequired =\n      autoDetectCode && Boolean(safeValue.number) && !effectiveCode;\n    const hasInvalidState = hasExternalError || Boolean(invalid) || isPrefixRequired;\n    const errorMessage = error ?? (isPrefixRequired ? t('prefix_required') : undefined);\n    const combinedValue =\n      effectiveCode || safeValue.number ? `${effectiveCode}${safeValue.number}` : '';\n\n    const codeOptions = React.useMemo<SelectOption[]>(\n      () =>\n        options.map(option => ({\n          value: option.value,\n          label: formatPhoneCodeOptionLabel(option),\n          data: option.data,\n          isDisabled: option.disabled,\n        })),\n      [options],\n    );\n\n    const selectedCodeOption = React.useMemo(\n      () => codeOptions.find(option => option.value === effectiveCode) ?? null,\n      [codeOptions, effectiveCode],\n    );\n\n    const parsePhoneValue = React.useMemo(\n      () => parsePhoneValueWithOptions(options),\n      [options],\n    );\n\n    const emitChange = (next: PhoneInputValue) => {\n      onChange?.(next, name);\n    };\n\n    const handleCodeChange = (option: SelectOption | null) => {\n      if (!option) return;\n      emitChange({code: option.value, number: safeValue.number});\n      if (!disabled && !readOnly) {\n        setTimeout(() => numberInputRef.current?.focus(), 0);\n      }\n    };\n\n    const handleNumberChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n      if (readOnly || disabled) return;\n      const rawValue = event.target.value;\n\n      if (!autoDetectCode) {\n        emitChange({code: effectiveCode, number: clearPhoneNumber(rawValue)});\n        return;\n      }\n\n      const parsed = parsePhoneValue(rawValue);\n      const cleanedNumber = clearPhoneNumber(parsed.number);\n\n      if (parsed.code) {\n        emitChange({code: parsed.code, number: cleanedNumber});\n        return;\n      }\n\n      emitChange({code: effectiveCode, number: cleanedNumber});\n    };\n\n    const effectiveCodeRef = React.useRef(effectiveCode);\n    const numberValueRef = React.useRef(safeValue.number);\n    const codeSearchValueRef = React.useRef(codeSearchValue);\n    const onChangeRef = React.useRef(onChange);\n    const nameRef = React.useRef(name);\n    effectiveCodeRef.current = effectiveCode;\n    numberValueRef.current = safeValue.number;\n    codeSearchValueRef.current = codeSearchValue;\n    onChangeRef.current = onChange;\n    nameRef.current = name;\n\n    React.useImperativeHandle(\n      ref,\n      () => ({\n        getCodeSearchValue: () => codeSearchValueRef.current,\n        setCodeSearchValue: (next: string) => setCodeSearchValue(next),\n        getNumberValue: () => numberValueRef.current,\n        setNumberValue: (next: string) => {\n          const cleanedNumber = clearPhoneNumber(next);\n          onChangeRef.current?.(\n            {code: effectiveCodeRef.current, number: cleanedNumber},\n            nameRef.current,\n          );\n        },\n        focus: () => numberInputRef.current?.focus(),\n      }),\n      [],\n    );\n\n    return (\n      <div\n        className={cn(\n          'relative w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)]',\n          disabled && 'cursor-not-allowed opacity-50',\n          loading && 'cursor-progress',\n          className,\n        )}\n      >\n        {name && (\n          <input type=\"hidden\" name={name} value={combinedValue} disabled={disabled} />\n        )}\n        {codeName && (\n          <input\n            type=\"hidden\"\n            name={codeName}\n            value={effectiveCode}\n            disabled={disabled}\n          />\n        )}\n        {numberName && (\n          <input\n            type=\"hidden\"\n            name={numberName}\n            value={safeValue.number}\n            disabled={disabled}\n          />\n        )}\n        {topLabel && (\n          <span\n            id={groupLabelId}\n            className=\"mb-2 block text-[length:var(--field-top-label-font-size)] font-[var(--field-top-label-font-weight)] text-[var(--chekin-color-brand-navy)]\"\n          >\n            {topLabel}\n          </span>\n        )}\n        <div\n          role=\"group\"\n          aria-labelledby={topLabel ? groupLabelId : undefined}\n          className=\"grid grid-cols-[96px_minmax(0,1fr)] gap-2\"\n        >\n          <Select\n            options={codeOptions}\n            value={selectedCodeOption}\n            onChange={handleCodeChange}\n            label={prefixLabel}\n            placeholder={codePlaceholder}\n            disabled={disabled}\n            readOnly={Boolean(readOnly) || Boolean(codeReadOnly)}\n            loading={loading}\n            invalid={hasInvalidState}\n            hideErrorMessage\n            searchPosition={searchable ? 'dropdown' : 'trigger'}\n            searchable={searchable}\n            filterOption={countriesFilter}\n            clearable={false}\n            getValueLabel={option => option.value}\n            className=\"max-w-none w-auto\"\n            dropdownClassName=\"right-auto w-[280px]\"\n            inputValue={searchable ? codeSearchValue : undefined}\n            onInputChange={setCodeSearchValue}\n            onFocus={() => onFieldFocus?.('code')}\n            onBlur={() => onFieldBlur?.('code')}\n          />\n          <Input\n            ref={numberInputRef}\n            type=\"tel\"\n            inputMode=\"tel\"\n            autoComplete=\"tel-national\"\n            label={resolvedLabel}\n            value={safeValue.number}\n            placeholder={placeholder}\n            disabled={disabled}\n            readOnly={readOnly}\n            loading={loading}\n            invalid={hasInvalidState}\n            tooltip={tooltip}\n            aria-label={resolvedLabel || name}\n            aria-describedby={errorMessage ? errorMsgId : undefined}\n            onChange={handleNumberChange}\n            onKeyDown={onKeyDown}\n            onFocus={event => {\n              onFocus?.(event);\n              onFieldFocus?.('number');\n            }}\n            onBlur={event => {\n              onBlur?.(event);\n              onFieldBlur?.('number');\n            }}\n            renderErrorMessage={false}\n            wrapperClassName=\"max-w-none w-auto\"\n            contentClassName={readOnly ? '!cursor-default' : undefined}\n            inputClassName={readOnly ? '!cursor-default' : undefined}\n          />\n        </div>\n        {!errorMessage && optional && (\n          <span className=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n            {typeof optional === 'string' ? optional : t('optional')}\n          </span>\n        )}\n        {errorMessage && (\n          <FieldErrorMessage\n            id={errorMsgId}\n            message={errorMessage}\n            data-testid={name ? `${name}-error` : undefined}\n            className=\"mt-[1px] text-[14px]\"\n          />\n        )}\n      </div>\n    );\n  },\n);\n\nPhoneInput.displayName = 'PhoneInput';\n\nexport {PhoneInput};\nexport type {PhoneInputProps, PhoneInputHandle, PhoneInputSubfield};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {FieldErrorMessage} from '../../field-error-message';\n\ntype SelectFieldShellProps = {\n  containerRef?: React.Ref<HTMLDivElement>;\n  className?: string;\n  width?: number | string;\n  disabled?: boolean;\n  loading?: boolean;\n  topLabel?: string;\n  triggerId: string;\n  errorId: string;\n  errorMessage?: string;\n  hideErrorMessage?: boolean;\n  optional?: boolean | string;\n  helperText?: string;\n  name?: string;\n  hiddenValue?: string;\n  onBlur?: React.FocusEventHandler<HTMLDivElement>;\n  onContentClick?: React.MouseEventHandler<HTMLDivElement>;\n  children: React.ReactNode;\n};\n\nconst FOCUSABLE_TRIGGER_SELECTOR =\n  'input:not([type=\"hidden\"]):not([disabled]):not([readonly]), button:not([disabled])';\n\nfunction SelectFieldShell({\n  containerRef,\n  className,\n  width,\n  disabled,\n  loading,\n  topLabel,\n  triggerId,\n  errorId,\n  errorMessage,\n  hideErrorMessage,\n  optional,\n  helperText,\n  name,\n  hiddenValue,\n  onBlur,\n  onContentClick,\n  children,\n}: SelectFieldShellProps) {\n  const {t} = useTranslation();\n  const wrapperWidth = toCssSize(width);\n\n  const handleContainerFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n    if (event.target !== event.currentTarget) return;\n    const focusable = event.currentTarget.querySelector<HTMLElement>(\n      FOCUSABLE_TRIGGER_SELECTOR,\n    );\n    focusable?.focus();\n  };\n\n  return (\n    <div\n      ref={containerRef}\n      tabIndex={-1}\n      onBlur={onBlur}\n      onFocus={handleContainerFocus}\n      className={cn(\n        'relative w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)] outline-none',\n        disabled && !loading && 'cursor-not-allowed opacity-50',\n        loading && 'cursor-progress opacity-50',\n        className,\n      )}\n      style={wrapperWidth ? {width: wrapperWidth} : undefined}\n    >\n      {name && <input type=\"hidden\" name={name} value={hiddenValue ?? ''} />}\n      <div className=\"relative min-h-[var(--field-min-height,48px)] w-full\">\n        {topLabel && (\n          <label\n            htmlFor={triggerId}\n            className=\"mb-2 block text-[length:var(--field-top-label-font-size)] font-[var(--field-top-label-font-weight)] text-[var(--chekin-color-brand-navy)]\"\n          >\n            {topLabel}\n          </label>\n        )}\n        <div className=\"relative w-full\" onClick={onContentClick}>\n          {children}\n        </div>\n        {!errorMessage && optional && (\n          <span className=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n            {typeof optional === 'string' ? optional : t('optional')}\n          </span>\n        )}\n        {!errorMessage && helperText && (\n          <span className=\"mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]\">\n            {helperText}\n          </span>\n        )}\n        {errorMessage && !hideErrorMessage && (\n          <FieldErrorMessage\n            id={errorId}\n            message={errorMessage}\n            className=\"mt-[1px] text-[14px]\"\n            data-testid={name ? `${name}-error` : undefined}\n          />\n        )}\n      </div>\n    </div>\n  );\n}\n\nexport {SelectFieldShell};\nexport type {SelectFieldShellProps};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {Skeleton} from '../../skeleton';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {isOptionGroup, isOptionSelected as isOptionSelectedDefault} from './utils';\nimport {DefaultOption} from './slots/DefaultOption';\nimport type {SelectComponents} from './slots/types';\nimport type {\n  SelectFormatGroupLabel,\n  SelectFormatOptionLabel,\n  SelectGroupedOption,\n  SelectIsOptionDisabled,\n  SelectIsOptionSelected,\n  SelectValue,\n} from './types';\nimport type {ReactNode} from 'react';\n\ntype SelectMenuProps<T, V extends SelectValue, L extends ReactNode> = {\n  id: string;\n  options: SelectOption<T, V, L>[];\n  labelledBy: string;\n  describedBy?: string;\n  selectedValue?: SelectOption<T, V, L> | null;\n  selectedValues?: SelectOption<T, V, L>[];\n  highlightedIndex?: number;\n  onOptionClick: (option: SelectOption<T, V, L>) => void;\n  onOptionHover?: (index: number) => void;\n  onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n  disabled?: boolean;\n  isOptionDisabled?: SelectIsOptionDisabled<T, V, L>;\n  menuLoading?: boolean;\n  menuClassName?: string;\n  listRef?: React.RefObject<HTMLDivElement>;\n  selectedOptionRef?: (index: number, node: HTMLButtonElement | null) => void;\n  getOptionId: (index: number) => string;\n  noOptionsMessage?: () => string | undefined;\n  isMulti?: boolean;\n  emptyContent?: React.ReactNode;\n  footer?: React.ReactNode;\n  components?: SelectComponents<T, V, L>;\n  inputValue?: string;\n  formatOptionLabel?: SelectFormatOptionLabel<T, V, L>;\n  isOptionSelected?: SelectIsOptionSelected<T, V, L>;\n  onMenuScrollToBottom?: (event: React.UIEvent<HTMLDivElement>) => void;\n  groupedOptions?: SelectGroupedOption<T, V, L>[];\n  formatGroupLabel?: SelectFormatGroupLabel<T, V, L>;\n};\n\ntype OptionEntry<T, V extends SelectValue, L extends ReactNode> = {\n  key: string;\n  option: SelectOption<T, V, L>;\n  flatIndex: number;\n};\n\ntype MenuEntry<T, V extends SelectValue, L extends ReactNode> =\n  | ({kind: 'option'} & OptionEntry<T, V, L>)\n  | {\n      kind: 'group';\n      key: string;\n      labelId: string;\n      label: ReactNode;\n      options: OptionEntry<T, V, L>[];\n    };\n\nfunction buildMenuEntries<T, V extends SelectValue, L extends ReactNode>(\n  groupedOptions: SelectGroupedOption<T, V, L>[] | undefined,\n  options: SelectOption<T, V, L>[],\n  formatGroupLabel: SelectFormatGroupLabel<T, V, L> | undefined,\n  listboxId: string,\n): MenuEntry<T, V, L>[] {\n  if (!groupedOptions || !groupedOptions.some(item => isOptionGroup(item))) {\n    return options.map((option, index) => ({\n      kind: 'option',\n      key: `${String(option.value)}-${index}`,\n      option,\n      flatIndex: index,\n    }));\n  }\n\n  const visibleValues = new Set<SelectValue>(options.map(option => option.value));\n  const entries: MenuEntry<T, V, L>[] = [];\n  let flatIndex = 0;\n  let groupCount = 0;\n\n  for (const item of groupedOptions) {\n    if (isOptionGroup(item)) {\n      const visible: OptionEntry<T, V, L>[] = [];\n      for (const option of item.options) {\n        if (!visibleValues.has(option.value)) continue;\n        visible.push({\n          key: `${String(option.value)}-${flatIndex}`,\n          option,\n          flatIndex,\n        });\n        flatIndex += 1;\n      }\n      if (visible.length === 0) continue;\n      entries.push({\n        kind: 'group',\n        key: `__group-${groupCount}`,\n        labelId: `${listboxId}-group-${groupCount}`,\n        label: formatGroupLabel ? formatGroupLabel(item) : item.label,\n        options: visible,\n      });\n      groupCount += 1;\n    } else if (visibleValues.has(item.value)) {\n      entries.push({\n        kind: 'option',\n        key: `${String(item.value)}-${flatIndex}`,\n        option: item,\n        flatIndex,\n      });\n      flatIndex += 1;\n    }\n  }\n  return entries;\n}\n\nfunction SelectMenu<T, V extends SelectValue, L extends ReactNode>({\n  id,\n  options,\n  labelledBy,\n  describedBy,\n  selectedValue,\n  selectedValues,\n  highlightedIndex,\n  onOptionClick,\n  onOptionHover,\n  onKeyDown,\n  disabled,\n  isOptionDisabled,\n  menuLoading,\n  menuClassName,\n  listRef,\n  selectedOptionRef,\n  getOptionId,\n  noOptionsMessage,\n  isMulti,\n  emptyContent,\n  footer,\n  components,\n  inputValue = '',\n  formatOptionLabel,\n  isOptionSelected,\n  onMenuScrollToBottom,\n  groupedOptions,\n  formatGroupLabel,\n}: SelectMenuProps<T, V, L>) {\n  const {t} = useTranslation();\n  const emptyMessage = noOptionsMessage?.() ?? t('no_options');\n  const hasOptions = options.length > 0;\n  const loadingMessage = t('loading');\n  const Option = components?.Option ?? DefaultOption;\n  const lastIndex = options.length - 1;\n  const selectedList = React.useMemo(\n    () => selectedValues ?? (selectedValue ? [selectedValue] : []),\n    [selectedValues, selectedValue],\n  );\n\n  const entries = React.useMemo(\n    () => buildMenuEntries(groupedOptions, options, formatGroupLabel, id),\n    [groupedOptions, options, formatGroupLabel, id],\n  );\n\n  const renderOption = (entry: OptionEntry<T, V, L>) => {\n    const {option, flatIndex, key} = entry;\n    const isAction = typeof option.onAction === 'function';\n    const isSelected = isAction\n      ? false\n      : isOptionSelected\n        ? isOptionSelected(option, selectedList)\n        : isOptionSelectedDefault(option, selectedValue, selectedValues);\n    const isHighlighted = flatIndex === highlightedIndex;\n    const optionDisabled = Boolean(\n      disabled || option.isDisabled || isOptionDisabled?.(option),\n    );\n    return (\n      <Option\n        key={key}\n        id={getOptionId(flatIndex)}\n        option={option}\n        index={flatIndex}\n        isSelected={isSelected}\n        isHighlighted={isHighlighted}\n        isDisabled={optionDisabled}\n        isLast={flatIndex === lastIndex}\n        isMulti={Boolean(isMulti)}\n        onClick={onOptionClick}\n        onHover={onOptionHover ?? (() => undefined)}\n        innerRef={node => selectedOptionRef?.(flatIndex, node)}\n        inputValue={inputValue}\n        selectedOptions={selectedList}\n        formatOptionLabel={formatOptionLabel}\n      />\n    );\n  };\n\n  const wasAtBottomRef = React.useRef(false);\n  const handleScroll = React.useCallback(\n    (event: React.UIEvent<HTMLDivElement>) => {\n      if (!onMenuScrollToBottom) return;\n      const target = event.currentTarget;\n      const atBottom = target.scrollHeight - target.scrollTop - target.clientHeight <= 1;\n      if (atBottom && !wasAtBottomRef.current) {\n        onMenuScrollToBottom(event);\n      }\n      wasAtBottomRef.current = atBottom;\n    },\n    [onMenuScrollToBottom],\n  );\n\n  return (\n    <div\n      id={id}\n      ref={listRef}\n      role=\"listbox\"\n      tabIndex={-1}\n      aria-labelledby={labelledBy}\n      aria-describedby={describedBy}\n      aria-multiselectable={isMulti}\n      aria-busy={menuLoading}\n      aria-activedescendant={\n        highlightedIndex !== undefined && highlightedIndex >= 0\n          ? getOptionId(highlightedIndex)\n          : undefined\n      }\n      onKeyDown={onKeyDown}\n      onScroll={onMenuScrollToBottom ? handleScroll : undefined}\n      className={cn(\n        'max-h-[var(--chekin-select-menu-max-height,300px)] overflow-y-auto overscroll-contain p-1.5 outline-none',\n        '[scrollbar-color:var(--chekin-color-gray-3)_transparent] [scrollbar-width:thin] [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-[var(--chekin-color-gray-3)] [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar]:w-1.5',\n        menuClassName,\n      )}\n    >\n      {menuLoading && (\n        <div role=\"status\" aria-live=\"polite\" className=\"flex flex-col gap-2 px-3 py-3\">\n          <span className=\"sr-only\">{loadingMessage}</span>\n          {Array.from({length: 3}).map((_, index) => (\n            <Skeleton\n              key={index}\n              className=\"h-10 w-full rounded-md\"\n              style={{animationDelay: `${index * 120}ms`, opacity: 1 - index * 0.2}}\n            />\n          ))}\n        </div>\n      )}\n      {!hasOptions &&\n        !menuLoading &&\n        (emptyContent ?? (\n          <div className=\"px-3 py-3 text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n            {emptyMessage}\n          </div>\n        ))}\n      {!menuLoading &&\n        entries.map(entry => {\n          if (entry.kind === 'group') {\n            return (\n              <div key={entry.key} role=\"group\" aria-labelledby={entry.labelId}>\n                <div\n                  id={entry.labelId}\n                  className=\"px-3 pb-1 pt-2 text-[11px] font-semibold uppercase tracking-wide text-[var(--chekin-color-gray-1)]\"\n                >\n                  {entry.label}\n                </div>\n                {entry.options.map(renderOption)}\n              </div>\n            );\n          }\n          return renderOption(entry);\n        })}\n      {!menuLoading && footer}\n    </div>\n  );\n}\n\nexport {SelectMenu};\nexport type {SelectMenuProps};\n","import type {ReactNode} from 'react';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {\n  SelectGroupedOption,\n  SelectIsOptionDisabled,\n  SelectOptionGroup,\n  SelectValue,\n} from './types';\n\nexport function isOptionGroup<T, V extends SelectValue, L extends ReactNode>(\n  item: SelectGroupedOption<T, V, L> | null | undefined,\n): item is SelectOptionGroup<T, V, L> {\n  if (!item || typeof item !== 'object') return false;\n  if ('value' in item) return false;\n  return Array.isArray((item as SelectOptionGroup<T, V, L>).options);\n}\n\nexport function flattenGroupedOptions<T, V extends SelectValue, L extends ReactNode>(\n  items: SelectGroupedOption<T, V, L>[] | undefined | null,\n): SelectOption<T, V, L>[] {\n  if (!items) return [];\n  const result: SelectOption<T, V, L>[] = [];\n  for (const item of items) {\n    if (isOptionGroup(item)) {\n      for (const option of item.options) result.push(option);\n    } else {\n      result.push(item);\n    }\n  }\n  return result;\n}\n\nexport function getOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n  options: SelectOption<T, V, L>[],\n  option?: SelectOption<T, V, L> | null,\n) {\n  if (!option) return -1;\n  return options.findIndex(item => item.value === option.value);\n}\n\nexport function isOptionEnabled<T, V extends SelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L> | undefined,\n  isOptionDisabled?: SelectIsOptionDisabled<T, V, L>,\n) {\n  if (!option) return false;\n  if (option.isDisabled) return false;\n  if (isOptionDisabled?.(option)) return false;\n  return true;\n}\n\nexport function getFirstEnabledOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n  options: SelectOption<T, V, L>[],\n  isOptionDisabled?: SelectIsOptionDisabled<T, V, L>,\n) {\n  return options.findIndex(option => isOptionEnabled(option, isOptionDisabled));\n}\n\nexport function getLastEnabledOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n  options: SelectOption<T, V, L>[],\n  isOptionDisabled?: SelectIsOptionDisabled<T, V, L>,\n) {\n  for (let index = options.length - 1; index >= 0; index -= 1) {\n    if (isOptionEnabled(options[index], isOptionDisabled)) return index;\n  }\n  return -1;\n}\n\nexport function getNextEnabledOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n  options: SelectOption<T, V, L>[],\n  startIndex: number,\n  step: 1 | -1,\n  isOptionDisabled?: SelectIsOptionDisabled<T, V, L>,\n) {\n  let nextIndex = startIndex;\n  while (nextIndex >= 0 && nextIndex < options.length) {\n    if (isOptionEnabled(options[nextIndex], isOptionDisabled)) return nextIndex;\n    nextIndex += step;\n  }\n  return -1;\n}\n\nexport function defaultFilterOption<T, V extends SelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L>,\n  input: string,\n) {\n  if (!input) return true;\n  const text = typeof option.label === 'string' ? option.label : String(option.value);\n  return text.toLowerCase().includes(input.toLowerCase());\n}\n\nexport function isOptionSelected<T, V extends SelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L>,\n  selectedValue?: SelectOption<T, V, L> | null,\n  selectedValues?: SelectOption<T, V, L>[],\n) {\n  if (selectedValues?.length) {\n    return selectedValues.some(item => item.value === option.value);\n  }\n  return selectedValue?.value === option.value;\n}\n\nexport function defaultIsOptionSelected<T, V extends SelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L>,\n  selectValue: SelectOption<T, V, L>[],\n) {\n  return selectValue.some(item => item.value === option.value);\n}\n\nconst COUNTRY_ALIASES: Array<[string, string[]]> = [['Türkiye', ['Turkey', 'Turkiye']]];\n\nfunction normalizeSearchText(value: string) {\n  return value.normalize('NFD').replace(/[̀-ͯ]/g, '').toLowerCase();\n}\n\nconst ALIAS_LOOKUP = COUNTRY_ALIASES.reduce(\n  (acc, [officialName, aliases]) => {\n    const officialLower = normalizeSearchText(officialName);\n    aliases.forEach(alias => {\n      acc[normalizeSearchText(alias)] = officialLower;\n    });\n    return acc;\n  },\n  {} as Record<string, string>,\n);\n\nfunction getOptionSearchText<T, V extends SelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L>,\n) {\n  if (typeof option.label === 'string' || typeof option.label === 'number') {\n    return String(option.label);\n  }\n\n  return String(option.value);\n}\n\nexport function countriesFilter<T, V extends SelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L>,\n  inputValue: string,\n): boolean {\n  const input = normalizeSearchText(inputValue.trim());\n\n  if (!input) {\n    return true;\n  }\n\n  const label = normalizeSearchText(getOptionSearchText(option));\n\n  if (label.includes(input)) {\n    return true;\n  }\n\n  const officialName = ALIAS_LOOKUP[input];\n\n  if (officialName && label.includes(officialName)) {\n    return true;\n  }\n\n  for (const [alias, official] of Object.entries(ALIAS_LOOKUP)) {\n    if (alias.includes(input) && label.includes(official)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {Check} from 'lucide-react';\nimport {cn} from '../../../lib/cn';\nimport type {OptionProps} from './types';\nimport type {SelectValue} from '../types';\n\nfunction DefaultOption<T, V extends SelectValue, L extends ReactNode>(\n  props: OptionProps<T, V, L>,\n) {\n  const {\n    option,\n    index,\n    isSelected,\n    isHighlighted,\n    isDisabled,\n    isMulti,\n    id,\n    onClick,\n    onHover,\n    innerRef,\n    inputValue = '',\n    selectedOptions = [],\n    formatOptionLabel,\n  } = props;\n\n  const labelContent = formatOptionLabel\n    ? formatOptionLabel(option, {\n        context: 'menu',\n        inputValue,\n        selectValue: selectedOptions,\n      })\n    : (option.label as ReactNode);\n\n  return (\n    <button\n      id={id}\n      ref={innerRef}\n      type=\"button\"\n      role=\"option\"\n      aria-selected={isSelected}\n      aria-disabled={isDisabled}\n      tabIndex={-1}\n      disabled={isDisabled}\n      onClick={() => onClick(option)}\n      onMouseMove={() => onHover(index)}\n      className={cn(\n        'group relative flex w-full items-start justify-between gap-2 rounded-md border-0 bg-transparent px-3 py-2.5 text-left text-[15px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors duration-100',\n        !isDisabled && 'cursor-pointer hover:bg-[var(--chekin-color-surface-pressed)]',\n        isHighlighted && !isDisabled && 'bg-[var(--chekin-color-surface-pressed)]',\n        isSelected &&\n          'bg-[var(--chekin-color-surface-autocomplete)] font-semibold text-[var(--chekin-color-brand-blue)]',\n        isDisabled && 'cursor-not-allowed text-[var(--chekin-color-gray-2)]',\n      )}\n    >\n      <span className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n        <span className=\"break-words inline-flex\">{labelContent}</span>\n        {option.description && (\n          <span className=\"break-words text-[12px] font-medium italic leading-4 text-[var(--chekin-color-gray-1)]\">\n            {option.description}\n          </span>\n        )}\n      </span>\n      {isSelected && (\n        <Check\n          aria-hidden=\"true\"\n          className={cn(\n            'shrink-0 text-[var(--chekin-color-brand-blue)]',\n            isMulti ? 'ml-1 mt-0.5 h-3.5 w-3.5' : 'ml-2 mt-0.5 h-4 w-4',\n          )}\n          strokeWidth={2.5}\n        />\n      )}\n    </button>\n  );\n}\n\nexport {DefaultOption};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../drawer';\nimport {cn} from '../../lib/cn';\n\ntype SelectMenuPanelProps = {\n  isOpen: boolean;\n  isMobile: boolean;\n  onClose: () => void;\n  title?: React.ReactNode;\n  description?: React.ReactNode;\n  className?: string;\n  drawerClassName?: string;\n  drawerContentClassName?: string;\n  searchVisible?: boolean;\n  children: React.ReactNode;\n};\n\nfunction SelectMenuPanel({\n  isOpen,\n  isMobile,\n  onClose,\n  title,\n  description,\n  className,\n  drawerClassName,\n  drawerContentClassName,\n  searchVisible = false,\n  children,\n}: SelectMenuPanelProps) {\n  const {t} = useTranslation();\n\n  if (!isOpen) return null;\n\n  if (isMobile) {\n    const fallbackTitle = t('select_option');\n    const titleText =\n      typeof title === 'string' || typeof title === 'number'\n        ? String(title)\n        : fallbackTitle;\n    const descriptionText =\n      typeof description === 'string' || typeof description === 'number'\n        ? String(description)\n        : titleText;\n\n    const drawerVars = searchVisible\n      ? ({'--chekin-drawer-height': 'calc(100dvh - 1rem)'} as React.CSSProperties)\n      : undefined;\n    const contentVars = searchVisible\n      ? ({\n          '--chekin-select-menu-max-height': 'calc(100dvh - 9rem)',\n        } as React.CSSProperties)\n      : undefined;\n\n    return (\n      <Drawer\n        open={isOpen}\n        onOpenChange={next => {\n          if (!next) onClose();\n        }}\n      >\n        <DrawerContent\n          data-select-menu=\"\"\n          onClose={onClose}\n          lockScroll={false}\n          className={drawerClassName}\n          style={drawerVars}\n        >\n          <DrawerTitle className=\"sr-only\">{titleText}</DrawerTitle>\n          <DrawerDescription className=\"sr-only\">{descriptionText}</DrawerDescription>\n          <div\n            className={cn(\n              'flex min-h-0 flex-1 flex-col px-1 pb-4 pt-1',\n              drawerContentClassName,\n            )}\n            style={contentVars}\n          >\n            {children}\n          </div>\n        </DrawerContent>\n      </Drawer>\n    );\n  }\n\n  return (\n    <div\n      data-select-menu=\"\"\n      className={cn(\n        'absolute left-0 right-0 top-full z-50 mt-1.5 overflow-hidden rounded-lg border border-[var(--chekin-color-gray-3)] bg-white shadow-[0_4px_8px_-2px_rgba(22,22,67,0.06),0_16px_32px_-12px_rgba(33,72,255,0.18)] ring-1 ring-black/[0.02] animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150',\n        className,\n      )}\n    >\n      {children}\n    </div>\n  );\n}\n\nexport {SelectMenuPanel};\nexport type {SelectMenuPanelProps};\n","import * as React from 'react';\nimport {Search} from 'lucide-react';\n\ntype SelectSearchInputProps = {\n  inputRef?: React.Ref<HTMLInputElement>;\n  value: string;\n  placeholder: string;\n  listboxId: string;\n  activeOptionId?: string;\n  onChange: React.ChangeEventHandler<HTMLInputElement>;\n  onKeyDown: React.KeyboardEventHandler<HTMLInputElement>;\n};\n\nfunction SelectSearchInput({\n  inputRef,\n  value,\n  placeholder,\n  listboxId,\n  activeOptionId,\n  onChange,\n  onKeyDown,\n}: SelectSearchInputProps) {\n  return (\n    <div className=\"border-b border-[var(--chekin-color-gray-3)] bg-white p-2\">\n      <div className=\"relative\">\n        <Search\n          aria-hidden=\"true\"\n          className=\"pointer-events-none absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--chekin-color-gray-2)]\"\n        />\n        <input\n          ref={inputRef}\n          type=\"text\"\n          value={value}\n          placeholder={placeholder}\n          onChange={onChange}\n          onKeyDown={onKeyDown}\n          autoComplete=\"off\"\n          aria-controls={listboxId}\n          aria-activedescendant={activeOptionId}\n          className=\"m-0 box-border h-9 w-full rounded-md border border-[var(--chekin-color-gray-3)] bg-white pl-8 pr-3 text-[14px] font-medium text-[var(--chekin-color-brand-navy)] outline-none transition-colors placeholder:text-[var(--chekin-color-gray-2)] hover:border-[var(--chekin-color-gray-2)] focus:border-[var(--chekin-color-brand-blue)] focus:ring-2 focus:ring-[var(--chekin-color-brand-blue)]/15\"\n        />\n      </div>\n    </div>\n  );\n}\n\nexport {SelectSearchInput};\nexport type {SelectSearchInputProps};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {cn} from '../../lib/cn';\n\ntype SelectTriggerProps = {\n  triggerRef?: React.Ref<HTMLButtonElement>;\n  triggerId: string;\n  listboxId: string;\n  labelId: string;\n  valueId: string;\n  describedErrorId?: string;\n  accessibleLabel?: string;\n  hasValue: boolean;\n  isOpen: boolean;\n  isBlocked: boolean;\n  disabled?: boolean;\n  readOnly?: boolean;\n  loading?: boolean;\n  invalid: boolean;\n  placeholder?: string;\n  showPlaceholderWhenIdle?: boolean;\n  valueLabel?: string;\n  leftIcon?: React.ReactNode;\n  hideIndicator?: boolean;\n  onClick: () => void;\n  onKeyDown: React.KeyboardEventHandler<HTMLButtonElement>;\n  onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n  onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n};\n\nfunction SelectTrigger({\n  triggerRef,\n  triggerId,\n  listboxId,\n  labelId,\n  valueId,\n  describedErrorId,\n  accessibleLabel,\n  hasValue,\n  isOpen,\n  isBlocked,\n  disabled,\n  readOnly,\n  loading,\n  invalid,\n  placeholder,\n  showPlaceholderWhenIdle,\n  valueLabel,\n  leftIcon,\n  hideIndicator,\n  onClick,\n  onKeyDown,\n  onBlur,\n  onFocus,\n}: SelectTriggerProps) {\n  const isEmpty = !hasValue;\n  return (\n    <button\n      id={triggerId}\n      ref={triggerRef}\n      type=\"button\"\n      aria-haspopup=\"listbox\"\n      aria-expanded={isOpen}\n      aria-controls={listboxId}\n      aria-label={accessibleLabel}\n      aria-labelledby={\n        accessibleLabel\n          ? undefined\n          : hasValue && valueId\n            ? `${labelId} ${valueId}`\n            : labelId\n      }\n      aria-describedby={describedErrorId}\n      aria-invalid={invalid}\n      aria-busy={loading}\n      disabled={isBlocked}\n      onClick={onClick}\n      onKeyDown={onKeyDown}\n      onBlur={onBlur}\n      onFocus={onFocus}\n      className={cn(\n        'relative m-0 box-border flex h-12 w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] border-0 pr-4 text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200',\n        leftIcon ? 'pl-10' : 'pl-4',\n        isEmpty\n          ? 'bg-[var(--empty-field-background)] text-[var(--chekin-color-gray-1)]'\n          : 'bg-transparent text-[var(--chekin-color-brand-navy)]',\n        readOnly && !disabled && !loading && 'cursor-default',\n        disabled && !loading && 'cursor-not-allowed opacity-50',\n        loading && '!cursor-progress',\n      )}\n    >\n      {leftIcon && (\n        <span className=\"pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]\">\n          <span className=\"flex h-full w-10 items-center justify-center\">{leftIcon}</span>\n        </span>\n      )}\n      <span id={valueId} className=\"block min-w-0 flex-1 truncate text-left\">\n        {hasValue ? valueLabel : showPlaceholderWhenIdle || isOpen ? placeholder : null}\n      </span>\n      <span className=\"flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n        {!hideIndicator && (\n          <ChevronDown\n            size={16}\n            className={cn(\n              'pointer-events-none transition-transform duration-200',\n              isOpen && 'rotate-180 text-[var(--chekin-color-brand-blue)]',\n            )}\n          />\n        )}\n      </span>\n    </button>\n  );\n}\n\nexport {SelectTrigger};\nexport type {SelectTriggerProps};\n","import * as React from 'react';\nimport {Search, SquareX} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {RotateArrow} from '../../rotate-arrow';\n\ntype ComboboxTriggerProps = {\n  triggerId: string;\n  listboxId: string;\n  labelId: string;\n  valueId: string;\n  describedErrorId?: string;\n  accessibleLabel?: string;\n  isOpen: boolean;\n  isFocused: boolean;\n  isBlocked: boolean;\n  hasValue: boolean;\n  isEmpty: boolean;\n  disabled?: boolean;\n  readOnly?: boolean;\n  loading?: boolean;\n  invalid?: boolean;\n  isMulti?: boolean;\n  inputRef: React.Ref<HTMLInputElement>;\n  inputValue: string;\n  placeholder?: string;\n  showPlaceholderWhenIdle?: boolean;\n  highlightedIndex?: number;\n  getOptionId?: (index: number) => string;\n  onInputChange: React.ChangeEventHandler<HTMLInputElement>;\n  onInputFocus: React.FocusEventHandler<HTMLInputElement>;\n  onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement>;\n  onContainerClick: () => void;\n  showClear?: boolean;\n  onClear?: (event: React.MouseEvent) => void;\n  clearLabel?: string;\n  leadingContent?: React.ReactNode;\n  leftIcon?: React.ReactNode;\n  containerClassName?: string;\n  inputClassName?: string;\n  hideIndicator?: boolean;\n  autoFocus?: boolean;\n  searchable?: boolean;\n};\n\nfunction ComboboxTrigger({\n  triggerId,\n  listboxId,\n  labelId,\n  valueId,\n  describedErrorId,\n  accessibleLabel,\n  isOpen,\n  isFocused,\n  isBlocked,\n  hasValue,\n  isEmpty,\n  disabled,\n  readOnly,\n  loading,\n  invalid,\n  isMulti,\n  inputRef,\n  inputValue,\n  placeholder,\n  showPlaceholderWhenIdle,\n  highlightedIndex,\n  getOptionId,\n  onInputChange,\n  onInputFocus,\n  onInputKeyDown,\n  onContainerClick,\n  showClear,\n  onClear,\n  clearLabel,\n  leadingContent,\n  leftIcon,\n  containerClassName,\n  inputClassName,\n  hideIndicator,\n  autoFocus,\n  searchable = true,\n}: ComboboxTriggerProps) {\n  const {t} = useTranslation();\n  const resolvedPlaceholder = placeholder ?? t('type_to_search');\n  const visiblePlaceholder =\n    searchable && (showPlaceholderWhenIdle || isFocused || isOpen)\n      ? resolvedPlaceholder\n      : '';\n  const inputMeasureValue = inputValue || visiblePlaceholder || ' ';\n  const activeOptionId =\n    isOpen && highlightedIndex !== undefined && highlightedIndex >= 0 && getOptionId\n      ? getOptionId(highlightedIndex)\n      : undefined;\n\n  return (\n    <div\n      role=\"combobox\"\n      aria-haspopup=\"listbox\"\n      aria-expanded={isOpen}\n      aria-controls={listboxId}\n      aria-label={accessibleLabel}\n      aria-labelledby={\n        accessibleLabel\n          ? undefined\n          : hasValue && valueId\n            ? `${labelId} ${valueId}`\n            : labelId\n      }\n      aria-describedby={describedErrorId}\n      aria-invalid={invalid}\n      aria-busy={loading}\n      aria-disabled={isBlocked}\n      onClick={onContainerClick}\n      className={cn(\n        'relative box-border flex w-full rounded-[6px] border-0 text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200',\n        searchable ? 'cursor-text' : 'cursor-pointer',\n        'min-h-12',\n        isEmpty && !isFocused ? 'bg-[var(--empty-field-background)]' : 'bg-transparent',\n        readOnly && !disabled && !loading && 'cursor-default',\n        disabled && !loading && 'cursor-not-allowed',\n        loading && '!cursor-progress',\n        containerClassName,\n      )}\n    >\n      {leftIcon && (\n        <span className=\"pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]\">\n          <span className=\"flex h-full w-10 items-center justify-center\">{leftIcon}</span>\n        </span>\n      )}\n      {!leftIcon && !isMulti && searchable && (isFocused || isOpen) && (\n        <span className=\"pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]\">\n          <span className=\"flex h-full w-10 items-center justify-center\">\n            <Search size={16} aria-hidden=\"true\" />\n          </span>\n        </span>\n      )}\n      <div\n        className={cn(\n          'flex min-w-0 flex-1 items-center gap-2 py-[10px]',\n          leftIcon || (searchable && !isMulti && (isFocused || isOpen)) ? 'pl-9' : 'pl-4',\n          isMulti && 'flex-wrap',\n        )}\n      >\n        {leadingContent}\n        <span\n          className={cn(\n            'grid min-w-0 max-w-full',\n            isMulti ? 'w-min flex-none min-w-[40px]' : 'w-full overflow-hidden',\n            !searchable && 'sr-only',\n          )}\n        >\n          <span\n            aria-hidden=\"true\"\n            className=\"invisible col-start-1 row-start-1 whitespace-pre text-[16px] font-medium leading-5\"\n          >\n            {inputMeasureValue}\n          </span>\n          <input\n            ref={inputRef}\n            id={triggerId}\n            type=\"text\"\n            value={inputValue}\n            onChange={onInputChange}\n            onFocus={onInputFocus}\n            onKeyDown={onInputKeyDown}\n            disabled={isBlocked}\n            readOnly={readOnly || !searchable}\n            placeholder={visiblePlaceholder}\n            autoComplete=\"off\"\n            autoFocus={autoFocus}\n            aria-autocomplete=\"list\"\n            aria-controls={listboxId}\n            aria-activedescendant={activeOptionId}\n            className={cn(\n              'col-start-1 row-start-1 m-0 box-border w-full min-w-0 border-0 bg-transparent p-0 text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[length:var(--field-placeholder-font-size)] placeholder:font-[var(--field-placeholder-font-weight)] placeholder:text-[var(--chekin-color-gray-1)]',\n              isMulti ? 'min-w-[40px]' : 'text-ellipsis',\n              readOnly && !disabled && !loading && 'cursor-default',\n              disabled && !loading && 'cursor-not-allowed',\n              loading && '!cursor-progress',\n              inputClassName,\n            )}\n          />\n        </span>\n      </div>\n      <span className=\"flex h-12 shrink-0 items-center gap-2 self-start pl-2 pr-4 text-[var(--chekin-color-gray-2)]\">\n        {showClear && (\n          <button\n            type=\"button\"\n            onClick={onClear}\n            className=\"flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[var(--chekin-neutral-500)] hover:shadow-[0_3px_3px_#0f477734]\"\n            aria-label={clearLabel}\n          >\n            <SquareX\n              size={15}\n              fill=\"var(--chekin-neutral-500)\"\n              color=\"#f8f8f8\"\n              strokeWidth={1.8}\n            />\n          </button>\n        )}\n        {!hideIndicator && (\n          <RotateArrow\n            shouldRotate={isOpen}\n            className={cn(\n              isFocused || isOpen\n                ? 'text-[var(--chekin-color-brand-blue)]'\n                : 'text-[var(--chekin-color-gray-2)]',\n            )}\n          />\n        )}\n      </span>\n    </div>\n  );\n}\n\nexport {ComboboxTrigger};\nexport type {ComboboxTriggerProps};\n","import * as React from 'react';\n\ntype UseSelectIdsParams = {\n  name?: string;\n  hasValue: boolean;\n  error?: string;\n  hideErrorMessage?: boolean;\n};\n\nexport function useSelectIds({\n  name,\n  hasValue,\n  error,\n  hideErrorMessage,\n}: UseSelectIdsParams) {\n  const reactId = React.useId().replace(/:/g, '');\n  const baseId = name ? `dash-select-${name}` : `dash-select-${reactId}`;\n  const triggerId = `${baseId}-trigger`;\n  const labelId = `${baseId}-label`;\n  const valueId = `${baseId}-value`;\n  const helperTextId = `${baseId}-helper`;\n  const errorId = `${baseId}-error`;\n  const listboxId = `${baseId}-listbox`;\n  const describedErrorId = error && !hideErrorMessage ? errorId : undefined;\n  const describedBy =\n    [!hasValue ? helperTextId : null, describedErrorId].filter(Boolean).join(' ') ||\n    undefined;\n  const getOptionId = React.useCallback(\n    (index: number) => `${baseId}-option-${index}`,\n    [baseId],\n  );\n\n  return {\n    triggerId,\n    labelId,\n    valueId,\n    helperTextId,\n    errorId,\n    describedErrorId,\n    listboxId,\n    describedBy,\n    getOptionId,\n  };\n}\n","import * as React from 'react';\nimport {useOutsideClick} from '../../hooks';\n\ntype UseSelectMenuStateParams = {\n  isBlocked: boolean;\n  shouldForceClose: boolean;\n  isMobile: boolean;\n  onOutsideClick?: () => void;\n  controlledIsOpen?: boolean;\n  onMenuOpenChange?: (open: boolean) => void;\n};\n\nexport function useSelectMenuState({\n  isBlocked,\n  shouldForceClose,\n  isMobile,\n  onOutsideClick,\n  controlledIsOpen,\n  onMenuOpenChange,\n}: UseSelectMenuStateParams) {\n  const containerRef = React.useRef<HTMLDivElement>(null);\n  const [internalIsOpen, setInternalIsOpen] = React.useState(false);\n  const [hasClosedControlledOpen, setHasClosedControlledOpen] = React.useState(false);\n  const isOpen =\n    controlledIsOpen === false\n      ? false\n      : controlledIsOpen === true\n        ? !hasClosedControlledOpen\n        : internalIsOpen;\n\n  React.useEffect(() => {\n    if (controlledIsOpen !== true) setHasClosedControlledOpen(false);\n  }, [controlledIsOpen]);\n\n  const setIsOpen = React.useCallback(\n    (next: boolean | ((prev: boolean) => boolean)) => {\n      const value = typeof next === 'function' ? next(isOpen) : next;\n      if (controlledIsOpen === true) setHasClosedControlledOpen(!value);\n      if (controlledIsOpen !== false) setInternalIsOpen(value);\n      onMenuOpenChange?.(value);\n    },\n    [isOpen, controlledIsOpen, onMenuOpenChange],\n  );\n\n  const openMenu = React.useCallback(() => {\n    setIsOpen(true);\n  }, [setIsOpen]);\n\n  const closeMenu = React.useCallback(() => {\n    setIsOpen(false);\n  }, [setIsOpen]);\n\n  const toggleMenu = React.useCallback(() => {\n    if (isBlocked) return;\n    setIsOpen(prev => !prev);\n  }, [isBlocked, setIsOpen]);\n\n  useOutsideClick({\n    elementRef: containerRef,\n    onOutsideClick: () => {\n      setIsOpen(false);\n      onOutsideClick?.();\n    },\n    isDisabled: !isOpen || isMobile,\n  });\n\n  React.useEffect(() => {\n    if (shouldForceClose) setIsOpen(false);\n  }, [shouldForceClose, setIsOpen]);\n\n  return {containerRef, isOpen, openMenu, closeMenu, toggleMenu, setIsOpen};\n}\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {useIsMobile} from '../../hooks';\nimport {isMobileModalModeAvailable} from '../../lib/runtimeSettings';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {useSelectIds} from './useSelectIds';\nimport {useSelectMenuState} from './useSelectMenuState';\nimport type {\n  SelectChangeMeta,\n  SelectFilterOption,\n  SelectIsOptionDisabled,\n  SelectIsOptionSelected,\n  SelectValue,\n} from './types';\nimport {\n  defaultFilterOption,\n  defaultIsOptionSelected,\n  getFirstEnabledOptionIndex,\n  getNextEnabledOptionIndex,\n  isOptionEnabled,\n} from './utils';\n\ntype UseSelectStateParams<T, V extends SelectValue, L extends ReactNode> = {\n  isMulti: boolean;\n  options: SelectOption<T, V, L>[];\n  selectedOptions: SelectOption<T, V, L>[];\n  onSelectionChange: (next: SelectOption<T, V, L>[], meta: SelectChangeMeta) => void;\n  filterOption?: SelectFilterOption<T, V, L>;\n  isOptionDisabled?: SelectIsOptionDisabled<T, V, L>;\n  isOptionSelected?: SelectIsOptionSelected<T, V, L>;\n  isCreatable?: boolean;\n  onCreateOption?: (input: string) => SelectOption<T, V, L>;\n  isValidNewOption?: (\n    input: string,\n    selectedOptions: SelectOption<T, V, L>[],\n    options: SelectOption<T, V, L>[],\n  ) => boolean;\n  getValueLabel?: (option: SelectOption<T, V, L>) => string;\n  menuIsOpen?: boolean;\n  onMenuOpenChange?: (open: boolean) => void;\n  name?: string;\n  error?: string;\n  hideErrorMessage?: boolean;\n  disabled?: boolean;\n  loading?: boolean;\n  readOnly?: boolean;\n  closeMenuOnSelect?: boolean;\n  openMenuOnFocus?: boolean;\n  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n  onFocus?: React.FocusEventHandler<HTMLInputElement>;\n  onBlur?: React.FocusEventHandler<HTMLDivElement>;\n  inputValue?: string;\n  onInputChange?: (value: string) => void;\n  isSearchInDropdown?: boolean;\n  searchable?: boolean;\n};\n\nfunction resolveValueLabel<T, V extends SelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L> | undefined,\n  getValueLabel?: (option: SelectOption<T, V, L>) => string,\n) {\n  if (!option) return '';\n  return getValueLabel?.(option) ?? String(option.label);\n}\n\nexport function useSelectState<T, V extends SelectValue, L extends ReactNode>(\n  params: UseSelectStateParams<T, V, L>,\n) {\n  const {\n    isMulti,\n    options,\n    selectedOptions,\n    onSelectionChange,\n    filterOption = defaultFilterOption,\n    isOptionDisabled,\n    isOptionSelected = defaultIsOptionSelected,\n    isCreatable = false,\n    onCreateOption,\n    isValidNewOption,\n    getValueLabel,\n    menuIsOpen,\n    onMenuOpenChange,\n    name,\n    error,\n    hideErrorMessage,\n    disabled,\n    loading,\n    readOnly,\n    closeMenuOnSelect,\n    openMenuOnFocus = false,\n    onKeyDown,\n    onFocus,\n    onBlur,\n    inputValue: controlledInputValue,\n    onInputChange,\n    isSearchInDropdown,\n    searchable = true,\n  } = params;\n\n  const inputRef = React.useRef<HTMLInputElement>(null);\n  const mobileSearchInputRef = React.useRef<HTMLInputElement>(null);\n  const listRef = React.useRef<HTMLDivElement>(null);\n  const optionRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n  const isMobile = useIsMobile() && isMobileModalModeAvailable();\n\n  const [isFocused, setIsFocused] = React.useState(false);\n  const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n  const wasOpenRef = React.useRef(false);\n\n  const singleSelected = isMulti ? undefined : selectedOptions[0];\n  const valueLabel = React.useMemo(\n    () => resolveValueLabel(singleSelected, getValueLabel),\n    [singleSelected, getValueLabel],\n  );\n\n  const isSearchOnlyInput = searchable && (isMulti || Boolean(isSearchInDropdown));\n  const isInputControlled = controlledInputValue !== undefined;\n  const [internalInputValue, setInternalInputValue] = React.useState(\n    searchable && !isSearchOnlyInput ? valueLabel : '',\n  );\n  const inputValue = isInputControlled\n    ? (controlledInputValue ?? '')\n    : internalInputValue;\n  const setInputValue = React.useCallback(\n    (next: string, notify = false) => {\n      if (!isInputControlled) setInternalInputValue(next);\n      if (notify) onInputChange?.(next);\n    },\n    [isInputControlled, onInputChange],\n  );\n  const resetInputTarget = isSearchOnlyInput ? '' : valueLabel;\n  const resetInputValue = React.useCallback(\n    (notify = false) => {\n      setInputValue(resetInputTarget, notify);\n    },\n    [resetInputTarget, setInputValue],\n  );\n\n  const hasValue = selectedOptions.length > 0;\n  const isBlocked = Boolean(disabled) || Boolean(loading) || Boolean(readOnly);\n  const shouldForceClose = Boolean(disabled) || Boolean(readOnly);\n  const hasInvalidState = Boolean(error);\n  const errorMessage = typeof error === 'string' ? error : undefined;\n\n  const {containerRef, isOpen, closeMenu, setIsOpen} = useSelectMenuState({\n    isBlocked,\n    shouldForceClose,\n    isMobile,\n    onOutsideClick: () => setIsFocused(false),\n    controlledIsOpen: menuIsOpen,\n    onMenuOpenChange,\n  });\n\n  const ids = useSelectIds({name, hasValue, error, hideErrorMessage});\n\n  React.useEffect(() => {\n    if (!searchable) return;\n    if (isSearchOnlyInput) return;\n    if (!isFocused) setInputValue(valueLabel);\n  }, [valueLabel, isFocused, isSearchOnlyInput, searchable, setInputValue]);\n\n  React.useEffect(() => {\n    if (!searchable) return;\n    const wasOpen = wasOpenRef.current;\n    wasOpenRef.current = isOpen;\n\n    if (isOpen || !wasOpen) {\n      return;\n    }\n\n    resetInputValue(inputValue !== resetInputTarget);\n    setHighlightedIndex(-1);\n  }, [inputValue, isOpen, resetInputTarget, resetInputValue, searchable]);\n\n  const trimmedInput = inputValue.trim();\n  const isFiltering =\n    searchable &&\n    (isSearchOnlyInput\n      ? trimmedInput.length > 0\n      : trimmedInput.length > 0 &&\n        trimmedInput.toLowerCase() !== valueLabel.toLowerCase());\n\n  const filteredOptions = React.useMemo(() => {\n    if (!isFiltering) return options;\n    return options.filter(\n      option => Boolean(option.onAction) || filterOption(option, trimmedInput),\n    );\n  }, [options, isFiltering, trimmedInput, filterOption]);\n\n  const canCreateNewOption = React.useMemo(() => {\n    if (!isCreatable || !trimmedInput) return false;\n    if (isValidNewOption) {\n      return isValidNewOption(trimmedInput, selectedOptions, options);\n    }\n    const lower = trimmedInput.toLowerCase();\n    const existsInOptions = options.some(\n      option => typeof option.label === 'string' && option.label.toLowerCase() === lower,\n    );\n    const existsInSelected = selectedOptions.some(\n      option => typeof option.label === 'string' && option.label.toLowerCase() === lower,\n    );\n    return !existsInOptions && !existsInSelected;\n  }, [isCreatable, trimmedInput, isValidNewOption, options, selectedOptions]);\n\n  React.useEffect(() => {\n    if (!isOpen || filteredOptions.length === 0) {\n      setHighlightedIndex(-1);\n      return;\n    }\n    setHighlightedIndex(current => {\n      if (current >= 0 && current < filteredOptions.length) return current;\n      return getFirstEnabledOptionIndex(filteredOptions, isOptionDisabled);\n    });\n  }, [isOpen, filteredOptions, isOptionDisabled]);\n\n  React.useEffect(() => {\n    if (!isOpen || highlightedIndex < 0) return;\n    optionRefs.current[highlightedIndex]?.scrollIntoView?.({block: 'nearest'});\n  }, [highlightedIndex, isOpen]);\n\n  const inMenuSearchVisible = searchable && (isMobile || Boolean(isSearchInDropdown));\n  React.useEffect(() => {\n    if (!isOpen || !inMenuSearchVisible) return;\n    const frame = window.requestAnimationFrame(() =>\n      mobileSearchInputRef.current?.focus(),\n    );\n    return () => window.cancelAnimationFrame(frame);\n  }, [isOpen, inMenuSearchVisible]);\n\n  const isValueSelected = React.useCallback(\n    (option: SelectOption<T, V, L>) => isOptionSelected(option, selectedOptions),\n    [isOptionSelected, selectedOptions],\n  );\n\n  const selectOption = React.useCallback(\n    (option: SelectOption<T, V, L>) => {\n      if (!isOptionEnabled(option, isOptionDisabled)) return;\n      if (option.onAction) {\n        setIsOpen(false);\n        setIsFocused(false);\n        inputRef.current?.blur();\n        option.onAction();\n        return;\n      }\n      if (isMulti) {\n        const exists = isValueSelected(option);\n        const next = exists\n          ? selectedOptions.filter(item => item.value !== option.value)\n          : [...selectedOptions, option];\n        onSelectionChange(next, {action: exists ? 'deselect' : 'select'});\n        setInputValue('', true);\n        if (closeMenuOnSelect) {\n          setIsOpen(false);\n        } else {\n          inputRef.current?.focus();\n        }\n        return;\n      }\n      onSelectionChange([option], {action: 'select'});\n      setInputValue(\n        searchable && !isSearchInDropdown ? resolveValueLabel(option, getValueLabel) : '',\n        true,\n      );\n      setIsOpen(false);\n      setIsFocused(false);\n      inputRef.current?.blur();\n    },\n    [\n      isOptionDisabled,\n      isMulti,\n      onSelectionChange,\n      setInputValue,\n      searchable,\n      isSearchInDropdown,\n      getValueLabel,\n      setIsOpen,\n      isValueSelected,\n      selectedOptions,\n      closeMenuOnSelect,\n    ],\n  );\n\n  const removeOption = React.useCallback(\n    (option: SelectOption<T, V, L>) => {\n      if (isBlocked) return;\n      onSelectionChange(\n        selectedOptions.filter(item => item.value !== option.value),\n        {action: 'deselect'},\n      );\n      setInputValue('', true);\n      inputRef.current?.focus();\n    },\n    [isBlocked, onSelectionChange, selectedOptions, setInputValue],\n  );\n\n  const clearSelection = React.useCallback(\n    (event?: React.MouseEvent) => {\n      event?.stopPropagation();\n      if (isBlocked) return;\n      onSelectionChange([], {action: 'clear'});\n      setInputValue('', true);\n      inputRef.current?.focus();\n    },\n    [isBlocked, onSelectionChange, setInputValue],\n  );\n\n  const createOption = React.useCallback(() => {\n    if (!canCreateNewOption) return;\n    const newOption =\n      onCreateOption?.(trimmedInput) ??\n      ({value: trimmedInput as V, label: trimmedInput as L} as SelectOption<T, V, L>);\n    if (isMulti) {\n      onSelectionChange([...selectedOptions, newOption], {action: 'create'});\n      setInputValue('', true);\n      inputRef.current?.focus();\n      if (closeMenuOnSelect) setIsOpen(false);\n      return;\n    }\n    onSelectionChange([newOption], {action: 'create'});\n    setInputValue(\n      searchable && !isSearchInDropdown\n        ? resolveValueLabel(newOption, getValueLabel)\n        : '',\n      true,\n    );\n    setIsOpen(false);\n    setIsFocused(false);\n    inputRef.current?.blur();\n  }, [\n    canCreateNewOption,\n    onCreateOption,\n    trimmedInput,\n    isMulti,\n    onSelectionChange,\n    selectedOptions,\n    closeMenuOnSelect,\n    setIsOpen,\n    getValueLabel,\n    isSearchInDropdown,\n    searchable,\n    setInputValue,\n  ]);\n\n  const handleInputChange = React.useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n    event => {\n      if (!searchable) return;\n      const nextValue = event.target.value;\n      setInputValue(nextValue, true);\n      if (!isOpen) setIsOpen(true);\n    },\n    [isOpen, searchable, setIsOpen, setInputValue],\n  );\n\n  const handleInputFocus = React.useCallback<React.FocusEventHandler<HTMLInputElement>>(\n    event => {\n      if (isBlocked) return;\n      onFocus?.(event);\n      setIsFocused(true);\n      if (openMenuOnFocus) setIsOpen(true);\n      if (searchable && !isMulti) {\n        requestAnimationFrame(() => inputRef.current?.select());\n      }\n    },\n    [isBlocked, onFocus, openMenuOnFocus, setIsOpen, searchable, isMulti],\n  );\n\n  const handleTriggerFocus = React.useCallback<\n    React.FocusEventHandler<HTMLElement>\n  >(() => {\n    if (isBlocked) return;\n    setIsFocused(true);\n    if (openMenuOnFocus) setIsOpen(true);\n  }, [isBlocked, openMenuOnFocus, setIsOpen]);\n\n  const handleContainerClick = React.useCallback(() => {\n    if (isBlocked) return;\n    inputRef.current?.focus();\n    setIsOpen(true);\n  }, [isBlocked, setIsOpen]);\n\n  const handleBlur = React.useCallback(\n    (event: React.FocusEvent<HTMLDivElement>) => {\n      if (containerRef.current?.contains(event.relatedTarget as Node)) return;\n      setIsFocused(false);\n      if (isMobile) {\n        onBlur?.(event);\n        return;\n      }\n      setIsOpen(false);\n      onBlur?.(event);\n    },\n    [containerRef, isMobile, setIsOpen, onBlur],\n  );\n\n  const handleInputKeyDown = React.useCallback<\n    React.KeyboardEventHandler<HTMLInputElement>\n  >(\n    event => {\n      onKeyDown?.(event);\n      if (event.defaultPrevented) return;\n\n      if (\n        isMulti &&\n        event.key === 'Backspace' &&\n        !inputValue &&\n        selectedOptions.length > 0\n      ) {\n        event.preventDefault();\n        onSelectionChange(selectedOptions.slice(0, -1), {action: 'deselect'});\n        return;\n      }\n\n      if (event.key === 'ArrowDown') {\n        event.preventDefault();\n        if (!isOpen) {\n          setIsOpen(true);\n          return;\n        }\n        const next = getNextEnabledOptionIndex(\n          filteredOptions,\n          highlightedIndex + 1,\n          1,\n          isOptionDisabled,\n        );\n        if (next >= 0) setHighlightedIndex(next);\n        return;\n      }\n\n      if (event.key === 'ArrowUp') {\n        event.preventDefault();\n        if (!isOpen) {\n          setIsOpen(true);\n          return;\n        }\n        const next = getNextEnabledOptionIndex(\n          filteredOptions,\n          highlightedIndex - 1,\n          -1,\n          isOptionDisabled,\n        );\n        if (next >= 0) setHighlightedIndex(next);\n        return;\n      }\n\n      if (event.key === 'Enter') {\n        if (!isOpen) return;\n        event.preventDefault();\n        const option = filteredOptions[highlightedIndex];\n        if (option && isOptionEnabled(option, isOptionDisabled)) {\n          selectOption(option);\n        } else if (canCreateNewOption) {\n          createOption();\n        }\n        return;\n      }\n\n      if (event.key === 'Escape') {\n        event.preventDefault();\n        if (searchable) resetInputValue(true);\n        setIsOpen(false);\n        inputRef.current?.blur();\n      }\n    },\n    [\n      onKeyDown,\n      isMulti,\n      inputValue,\n      selectedOptions,\n      onSelectionChange,\n      isOpen,\n      setIsOpen,\n      filteredOptions,\n      highlightedIndex,\n      isOptionDisabled,\n      selectOption,\n      canCreateNewOption,\n      createOption,\n      searchable,\n      resetInputValue,\n    ],\n  );\n\n  const isEmpty = !hasValue && !inputValue;\n\n  React.useDebugValue({isOpen, isMulti, highlightedIndex, selectedOptions});\n\n  return {\n    ids,\n    containerRef,\n    inputRef,\n    mobileSearchInputRef,\n    listRef,\n    registerOptionRef: (index: number, node: HTMLButtonElement | null) => {\n      optionRefs.current[index] = node;\n    },\n    isOpen,\n    closeMenu,\n    inputValue,\n    trimmedInput,\n    valueLabel,\n    filteredOptions,\n    highlightedIndex,\n    setHighlightedIndex,\n    isFocused,\n    setIsFocused,\n    isBlocked,\n    hasValue,\n    isEmpty,\n    hasInvalidState,\n    errorMessage,\n    isMobile,\n    inMenuSearchVisible,\n    canCreateNewOption,\n    selectOption,\n    removeOption,\n    clearSelection,\n    createOption,\n    handleInputChange,\n    handleInputFocus,\n    handleTriggerFocus,\n    handleInputKeyDown,\n    handleContainerClick,\n    handleBlur,\n  };\n}\n\nexport type {UseSelectStateParams};\n","import * as React from 'react';\nimport {X} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport type {ReactNode} from 'react';\nimport type {MultiValueChipProps} from './types';\nimport type {SelectValue} from '../types';\n\nfunction DefaultMultiValueChip<T, V extends SelectValue, L extends ReactNode>({\n  option,\n  readOnly,\n  onRemove,\n}: MultiValueChipProps<T, V, L>) {\n  const {t} = useTranslation();\n  const labelText =\n    typeof option.label === 'string' ? option.label : String(option.value);\n\n  return (\n    <span className=\"inline-flex items-center gap-1 rounded-md border border-[var(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-pressed)] py-0.5 pl-2 pr-1 text-[13px] font-medium text-[var(--chekin-color-brand-navy)] transition-colors\">\n      <span className=\"whitespace-nowrap leading-5\">{option.label as ReactNode}</span>\n      {!readOnly && (\n        <button\n          type=\"button\"\n          onClick={event => {\n            event.stopPropagation();\n            onRemove();\n          }}\n          className=\"flex h-4 w-4 items-center justify-center rounded-sm border-0 bg-transparent p-0 text-[var(--chekin-color-gray-1)] outline-none transition-colors hover:bg-white/70 hover:text-[var(--chekin-color-brand-navy)] focus-visible:ring-2 focus-visible:ring-[var(--chekin-color-brand-blue)]/30\"\n          aria-label={t('remove_item', {label: labelText})}\n        >\n          <X size={12} strokeWidth={2.5} />\n        </button>\n      )}\n    </span>\n  );\n}\n\nexport {DefaultMultiValueChip};\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {ComboboxTrigger} from '../ComboboxTrigger';\nimport {DefaultMultiValueChip} from './DefaultMultiValueChip';\nimport type {ControlProps} from './types';\nimport type {SelectValue} from '../types';\n\nfunction DefaultControl<T, V extends SelectValue, L extends ReactNode>(\n  props: ControlProps<T, V, L>,\n) {\n  const {\n    triggerId,\n    listboxId,\n    labelId,\n    valueId,\n    describedErrorId,\n    accessibleLabel,\n    getOptionId,\n    inputRef,\n    inputValue,\n    placeholder,\n    showPlaceholderWhenIdle,\n    isMulti,\n    isOpen,\n    isFocused,\n    isBlocked,\n    hasValue,\n    isEmpty,\n    invalid,\n    loading,\n    disabled,\n    readOnly,\n    highlightedIndex,\n    selectedOptions,\n    onInputChange,\n    onInputFocus,\n    onInputKeyDown,\n    onContainerClick,\n    onClear,\n    onRemoveOption,\n    clearable,\n    clearLabel,\n    hideIndicator,\n    autoFocus,\n    leftIcon,\n    searchable,\n    components,\n  } = props;\n\n  const Chip = components.MultiValueChip ?? DefaultMultiValueChip;\n  const showClear = Boolean(clearable) && hasValue && !readOnly && !disabled;\n\n  const placeholderText = isMulti ? (!hasValue ? placeholder : '') : placeholder;\n\n  return (\n    <ComboboxTrigger\n      triggerId={triggerId}\n      listboxId={listboxId}\n      labelId={labelId}\n      valueId={valueId}\n      describedErrorId={describedErrorId}\n      accessibleLabel={accessibleLabel}\n      isOpen={isOpen}\n      isFocused={isFocused}\n      isBlocked={isBlocked}\n      hasValue={hasValue}\n      isEmpty={isEmpty}\n      disabled={disabled}\n      readOnly={readOnly}\n      loading={loading}\n      invalid={invalid}\n      isMulti={isMulti}\n      inputRef={inputRef}\n      inputValue={inputValue}\n      placeholder={placeholderText}\n      showPlaceholderWhenIdle={showPlaceholderWhenIdle}\n      highlightedIndex={highlightedIndex}\n      getOptionId={getOptionId}\n      onInputChange={onInputChange}\n      onInputFocus={onInputFocus}\n      onInputKeyDown={onInputKeyDown}\n      onContainerClick={onContainerClick}\n      showClear={showClear}\n      onClear={onClear}\n      clearLabel={clearLabel}\n      hideIndicator={hideIndicator}\n      autoFocus={autoFocus}\n      leftIcon={leftIcon}\n      searchable={searchable}\n      leadingContent={\n        isMulti\n          ? selectedOptions.map(option => (\n              <Chip\n                key={String(option.value)}\n                option={option}\n                readOnly={readOnly}\n                onRemove={() => onRemoveOption(option)}\n              />\n            ))\n          : undefined\n      }\n    />\n  );\n}\n\nexport {DefaultControl};\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {SquareX} from 'lucide-react';\nimport {SelectTrigger} from '../SelectTrigger';\nimport type {ControlProps} from './types';\nimport type {SelectValue} from '../types';\n\n/**\n * Static (read-only) trigger button used when `searchPosition === 'dropdown'`,\n * which keeps the search input inside the menu instead of the trigger. Ignores\n * the input/keyboard props from ControlProps — those are routed through the\n * in-menu search input.\n */\nfunction StaticControl<T, V extends SelectValue, L extends ReactNode>(\n  props: ControlProps<T, V, L>,\n) {\n  const {\n    triggerId,\n    listboxId,\n    labelId,\n    valueId,\n    describedErrorId,\n    accessibleLabel,\n    isOpen,\n    isBlocked,\n    hasValue,\n    invalid,\n    loading,\n    disabled,\n    valueLabel,\n    placeholder,\n    showPlaceholderWhenIdle,\n    onContainerClick,\n    onTriggerFocus,\n    onClear,\n    clearable,\n    clearLabel,\n    hideIndicator,\n    readOnly,\n    leftIcon,\n  } = props;\n  const showClear = Boolean(clearable) && hasValue && !readOnly && !disabled;\n\n  return (\n    <div className=\"relative\">\n      <SelectTrigger\n        triggerId={triggerId}\n        listboxId={listboxId}\n        labelId={labelId}\n        valueId={valueId}\n        describedErrorId={describedErrorId}\n        accessibleLabel={accessibleLabel}\n        hasValue={hasValue}\n        isOpen={isOpen}\n        isBlocked={isBlocked}\n        disabled={disabled}\n        readOnly={readOnly}\n        loading={loading}\n        invalid={invalid}\n        placeholder={placeholder}\n        showPlaceholderWhenIdle={showPlaceholderWhenIdle}\n        valueLabel={valueLabel}\n        leftIcon={leftIcon}\n        hideIndicator={hideIndicator}\n        onClick={onContainerClick}\n        onKeyDown={() => undefined}\n        onFocus={onTriggerFocus}\n      />\n      {showClear && (\n        <button\n          type=\"button\"\n          onClick={onClear}\n          className=\"absolute right-9 top-1/2 flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[var(--chekin-neutral-500)] hover:shadow-[0_3px_3px_#0f477734]\"\n          aria-label={clearLabel}\n        >\n          <SquareX\n            size={15}\n            fill=\"var(--chekin-neutral-500)\"\n            color=\"#f8f8f8\"\n            strokeWidth={1.8}\n          />\n        </button>\n      )}\n    </div>\n  );\n}\n\nexport {StaticControl};\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {SelectMenu} from '../SelectMenu';\nimport type {MenuListProps} from './types';\nimport type {SelectValue} from '../types';\n\nfunction DefaultMenuList<T, V extends SelectValue, L extends ReactNode>(\n  props: MenuListProps<T, V, L>,\n) {\n  const {\n    id,\n    labelledBy,\n    describedBy,\n    getOptionId,\n    options,\n    selectedOptions,\n    isMulti,\n    highlightedIndex,\n    onOptionHover,\n    onOptionClick,\n    disabled,\n    isOptionDisabled,\n    menuLoading,\n    listRef,\n    registerOptionRef,\n    menuClassName,\n    noOptionsMessage,\n    emptyContent,\n    footer,\n    components,\n    inputValue,\n    formatOptionLabel,\n    isOptionSelected,\n    onMenuScrollToBottom,\n    groupedOptions,\n    formatGroupLabel,\n  } = props;\n\n  return (\n    <SelectMenu\n      id={id}\n      options={options}\n      labelledBy={labelledBy}\n      describedBy={describedBy}\n      selectedValue={!isMulti ? (selectedOptions[0] ?? null) : undefined}\n      selectedValues={isMulti ? selectedOptions : undefined}\n      highlightedIndex={highlightedIndex}\n      onOptionClick={onOptionClick}\n      onOptionHover={onOptionHover}\n      disabled={disabled}\n      isOptionDisabled={isOptionDisabled}\n      menuLoading={menuLoading}\n      menuClassName={menuClassName}\n      listRef={listRef}\n      selectedOptionRef={registerOptionRef}\n      getOptionId={getOptionId}\n      noOptionsMessage={noOptionsMessage}\n      isMulti={isMulti}\n      emptyContent={emptyContent}\n      footer={footer}\n      components={components}\n      inputValue={inputValue}\n      formatOptionLabel={formatOptionLabel}\n      isOptionSelected={isOptionSelected}\n      onMenuScrollToBottom={onMenuScrollToBottom}\n      groupedOptions={groupedOptions}\n      formatGroupLabel={formatGroupLabel}\n    />\n  );\n}\n\nexport {DefaultMenuList};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport type {CreateOptionProps} from './types';\n\nfunction DefaultCreateOption({\n  inputValue,\n  onCreate,\n  formatCreateLabel,\n}: CreateOptionProps) {\n  const {t} = useTranslation();\n  return (\n    <button\n      type=\"button\"\n      onClick={onCreate}\n      className=\"flex w-full items-center justify-start border-0 border-t border-[#f2f4f8] bg-white px-4 py-[16px] text-left text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-blue)] outline-none hover:bg-[var(--chekin-color-surface-pressed)]\"\n    >\n      {formatCreateLabel\n        ? formatCreateLabel(inputValue)\n        : t('create_option', {input: inputValue})}\n    </button>\n  );\n}\n\nexport {DefaultCreateOption};\n","import type {ReactNode} from 'react';\nimport {DefaultControl} from './DefaultControl';\nimport {DefaultMenuList} from './DefaultMenuList';\nimport {DefaultOption} from './DefaultOption';\nimport {DefaultMultiValueChip} from './DefaultMultiValueChip';\nimport {DefaultCreateOption} from './DefaultCreateOption';\nimport type {SelectComponents} from './types';\nimport type {SelectValue} from '../types';\n\nfunction defaultComponents<T, V extends SelectValue, L extends ReactNode>(): Required<\n  SelectComponents<T, V, L>\n> {\n  return {\n    Control: DefaultControl,\n    MenuList: DefaultMenuList,\n    Option: DefaultOption,\n    MultiValueChip: DefaultMultiValueChip,\n    CreateOption: DefaultCreateOption,\n  } as Required<SelectComponents<T, V, L>>;\n}\n\nfunction mergeComponents<T, V extends SelectValue, L extends ReactNode>(\n  overrides?: SelectComponents<T, V, L>,\n): Required<SelectComponents<T, V, L>> {\n  const defaults = defaultComponents<T, V, L>();\n  if (!overrides) return defaults;\n  return {\n    Control: overrides.Control ?? defaults.Control,\n    MenuList: overrides.MenuList ?? defaults.MenuList,\n    Option: overrides.Option ?? defaults.Option,\n    MultiValueChip: overrides.MultiValueChip ?? defaults.MultiValueChip,\n    CreateOption: overrides.CreateOption ?? defaults.CreateOption,\n  };\n}\n\nexport {defaultComponents, mergeComponents};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Fieldset} from '../_fieldset';\nimport {\n  SelectFieldShell,\n  SelectMenuPanel,\n  SelectSearchInput,\n  StaticControl,\n  flattenGroupedOptions,\n  mergeComponents,\n  useSelectState,\n  type SelectChangeMeta,\n  type SelectComponents,\n  type SelectFilterOption,\n  type SelectFormatGroupLabel,\n  type SelectFormatOptionLabel,\n  type SelectGroupedOption,\n  type SelectIsOptionDisabled,\n  type SelectIsOptionSelected,\n  type SelectValue,\n} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\nimport {useSetCorrectOptionIfThereIsOnlyValue} from './useSetCorrectOptionIfThereIsOnlyValue';\n\ntype BaseSelectProps<T, V extends SelectValue, L extends ReactNode> = {\n  options?: SelectGroupedOption<T, V, L>[];\n  onBlur?: React.FocusEventHandler<HTMLDivElement>;\n  onFocus?: React.FocusEventHandler<HTMLInputElement>;\n  label?: string;\n  topLabel?: string;\n  placeholder?: string;\n  getValueLabel?: (option: SelectOption<T, V, L>) => string;\n  disabled?: boolean;\n  readOnly?: boolean;\n  loading?: boolean;\n  menuLoading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  error?: string;\n  invalid?: boolean;\n  hideErrorMessage?: boolean;\n  className?: string;\n  menuClassName?: string;\n  dropdownClassName?: string;\n  drawerClassName?: string;\n  fieldsetClassName?: string;\n  name?: string;\n  width?: number | string;\n  noOptionsMessage?: () => string | undefined;\n  filterOption?: SelectFilterOption<T, V, L>;\n  isOptionDisabled?: SelectIsOptionDisabled<T, V, L>;\n  isOptionSelected?: SelectIsOptionSelected<T, V, L>;\n  formatOptionLabel?: SelectFormatOptionLabel<T, V, L>;\n  helperText?: string;\n  isCreatable?: boolean;\n  onCreateOption?: (input: string) => SelectOption<T, V, L>;\n  formatCreateLabel?: (input: string) => React.ReactNode;\n  isValidNewOption?: (\n    input: string,\n    selectedOptions: SelectOption<T, V, L>[],\n    options: SelectOption<T, V, L>[],\n  ) => boolean;\n  menuIsOpen?: boolean;\n  onMenuOpenChange?: (open: boolean) => void;\n  autoFocus?: boolean;\n  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n  hideIndicator?: boolean;\n  openMenuOnFocus?: boolean;\n  components?: SelectComponents<T, V, L>;\n  inputValue?: string;\n  onInputChange?: (value: string) => void;\n  searchable?: boolean;\n  searchPosition?: 'trigger' | 'dropdown';\n  menuHeader?: React.ReactNode;\n  onMenuScrollToBottom?: (event: React.UIEvent<HTMLDivElement>) => void;\n  leftIcon?: React.ReactNode;\n  formatGroupLabel?: SelectFormatGroupLabel<T, V, L>;\n  onReset?: () => void;\n};\n\ntype SingleSelectProps<T, V extends SelectValue, L extends ReactNode> = BaseSelectProps<\n  T,\n  V,\n  L\n> & {\n  isMulti?: false;\n  value?: SelectOption<T, V, L> | null;\n  defaultValue?: SelectOption<T, V, L> | null;\n  onChange?: (option: SelectOption<T, V, L> | null, meta?: SelectChangeMeta) => void;\n  clearable?: boolean;\n};\n\ntype MultiSelectModeProps<\n  T,\n  V extends SelectValue,\n  L extends ReactNode,\n> = BaseSelectProps<T, V, L> & {\n  isMulti: true;\n  value?: SelectOption<T, V, L>[] | null;\n  defaultValue?: SelectOption<T, V, L>[] | null;\n  onChange?: (value: SelectOption<T, V, L>[], meta?: SelectChangeMeta) => void;\n  closeMenuOnSelect?: boolean;\n};\n\ntype SelectProps<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n> = SingleSelectProps<T, V, L> | MultiSelectModeProps<T, V, L>;\n\nfunction SelectInternal<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(props: SelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n  const {\n    options = [],\n    onBlur,\n    onFocus,\n    label,\n    topLabel,\n    placeholder,\n    getValueLabel,\n    disabled,\n    readOnly,\n    loading,\n    menuLoading,\n    optional,\n    tooltip,\n    error,\n    invalid,\n    hideErrorMessage,\n    className,\n    menuClassName,\n    dropdownClassName,\n    drawerClassName,\n    fieldsetClassName,\n    name,\n    width,\n    noOptionsMessage,\n    filterOption,\n    isOptionDisabled,\n    isOptionSelected,\n    formatOptionLabel,\n    helperText,\n    isCreatable = false,\n    onCreateOption,\n    formatCreateLabel,\n    isValidNewOption,\n    menuIsOpen,\n    onMenuOpenChange,\n    autoFocus,\n    onKeyDown,\n    hideIndicator,\n    openMenuOnFocus,\n    components: userComponents,\n    inputValue,\n    onInputChange,\n    searchable = true,\n    searchPosition = 'trigger',\n    menuHeader,\n    onMenuScrollToBottom,\n    leftIcon,\n    formatGroupLabel,\n    onReset,\n  } = props;\n  const isMulti = props.isMulti === true;\n  const isSearchInDropdown = searchable && searchPosition === 'dropdown';\n  const clearable = isMulti || props.clearable;\n  const closeMenuOnSelect = isMulti ? (props.closeMenuOnSelect ?? false) : undefined;\n\n  const {t} = useTranslation();\n\n  const isControlled = props.value !== undefined;\n  const [internalValue, setInternalValue] = React.useState<\n    SelectOption<T, V, L> | SelectOption<T, V, L>[] | null\n  >(() => {\n    if (isMulti) return (props.defaultValue as SelectOption<T, V, L>[] | null) ?? [];\n    return (props.defaultValue as SelectOption<T, V, L> | null) ?? null;\n  });\n\n  const currentValue = isControlled ? props.value : internalValue;\n\n  useSetCorrectOptionIfThereIsOnlyValue<T, V, L>({\n    enabled: !isMulti,\n    value: !isMulti\n      ? (props.value as SelectOption<T, V, L> | null | undefined)\n      : undefined,\n    options,\n    onChange: !isMulti\n      ? (props.onChange as SingleSelectProps<T, V, L>['onChange'])\n      : undefined,\n  });\n\n  const selectedOptions = React.useMemo(() => {\n    if (isMulti) return (currentValue as SelectOption<T, V, L>[] | null) ?? [];\n    return currentValue ? [currentValue as SelectOption<T, V, L>] : [];\n  }, [isMulti, currentValue]);\n\n  const onSelectionChange = React.useCallback(\n    (next: SelectOption<T, V, L>[], meta: SelectChangeMeta) => {\n      if (isMulti) {\n        if (!isControlled) setInternalValue(next);\n        (props.onChange as MultiSelectModeProps<T, V, L>['onChange'])?.(next, meta);\n      } else {\n        const nextValue = next[0] ?? null;\n        if (!isControlled) setInternalValue(nextValue);\n        (props.onChange as SingleSelectProps<T, V, L>['onChange'])?.(nextValue, meta);\n      }\n    },\n    [isMulti, isControlled, props.onChange],\n  );\n\n  const flatOptions = React.useMemo(() => flattenGroupedOptions(options), [options]);\n\n  const state = useSelectState<T, V, L>({\n    isMulti,\n    options: flatOptions,\n    selectedOptions,\n    onSelectionChange,\n    filterOption,\n    isOptionDisabled,\n    isOptionSelected,\n    isCreatable,\n    onCreateOption,\n    isValidNewOption,\n    getValueLabel,\n    menuIsOpen,\n    onMenuOpenChange,\n    name,\n    error,\n    hideErrorMessage,\n    disabled,\n    loading,\n    readOnly,\n    closeMenuOnSelect,\n    openMenuOnFocus,\n    onKeyDown,\n    onFocus,\n    onBlur,\n    inputValue,\n    onInputChange,\n    isSearchInDropdown,\n    searchable,\n  });\n\n  const components = React.useMemo(() => {\n    const merged = mergeComponents<T, V, L>(userComponents);\n    if ((isSearchInDropdown || (!searchable && !isMulti)) && !userComponents?.Control) {\n      return {...merged, Control: StaticControl as typeof merged.Control};\n    }\n    return merged;\n  }, [userComponents, isSearchInDropdown, searchable, isMulti]);\n\n  React.useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n    ref as React.Ref<HTMLDivElement | null>,\n    () => state.containerRef.current,\n  );\n\n  const hasLabel = Boolean(label);\n  const resolvedTitle = label ?? placeholder;\n  const accessibleLabel =\n    !hasLabel && typeof placeholder === 'string' ? placeholder : undefined;\n  const hasInvalidState = state.hasInvalidState || Boolean(invalid);\n  const hasLeadingIcon = Boolean(leftIcon);\n  const hiddenValue = isMulti\n    ? selectedOptions.map(item => String(item.value)).join(',')\n    : selectedOptions[0]\n      ? String(selectedOptions[0].value)\n      : '';\n\n  const handleClear = (event: React.MouseEvent) => {\n    state.clearSelection(event);\n    onReset?.();\n  };\n\n  const handleFieldClick = (event: React.MouseEvent<HTMLDivElement>) => {\n    if ((event.target as Element).closest('[data-select-menu]')) return;\n    state.handleContainerClick();\n  };\n\n  const {Control, MenuList, CreateOption} = components;\n\n  return (\n    <SelectFieldShell\n      containerRef={state.containerRef}\n      className={className}\n      width={width}\n      disabled={disabled}\n      loading={loading}\n      topLabel={topLabel}\n      triggerId={state.ids.triggerId}\n      errorId={state.ids.errorId}\n      errorMessage={state.errorMessage}\n      hideErrorMessage={hideErrorMessage}\n      optional={optional}\n      helperText={helperText}\n      name={name}\n      hiddenValue={hiddenValue}\n      onBlur={state.handleBlur}\n      onContentClick={handleFieldClick}\n    >\n      <Control\n        triggerId={state.ids.triggerId}\n        listboxId={state.ids.listboxId}\n        labelId={state.ids.labelId}\n        valueId={state.ids.valueId}\n        describedErrorId={state.ids.describedErrorId}\n        accessibleLabel={accessibleLabel}\n        getOptionId={state.ids.getOptionId}\n        inputRef={state.inputRef}\n        inputValue={state.inputValue}\n        placeholder={placeholder}\n        showPlaceholderWhenIdle={!hasLabel}\n        isMulti={isMulti}\n        isOpen={state.isOpen}\n        isFocused={state.isFocused}\n        isBlocked={state.isBlocked}\n        hasValue={state.hasValue}\n        isEmpty={state.isEmpty}\n        invalid={hasInvalidState}\n        loading={loading}\n        disabled={disabled}\n        readOnly={readOnly}\n        highlightedIndex={state.highlightedIndex}\n        selectedOptions={selectedOptions}\n        valueLabel={state.valueLabel}\n        onInputChange={state.handleInputChange}\n        onInputFocus={state.handleInputFocus}\n        onInputKeyDown={state.handleInputKeyDown}\n        onTriggerFocus={state.handleTriggerFocus}\n        onContainerClick={state.handleContainerClick}\n        onClear={handleClear}\n        onRemoveOption={state.removeOption}\n        clearable={clearable}\n        clearLabel={isMulti ? t('clear_all') : t('clear')}\n        hideIndicator={hideIndicator}\n        autoFocus={autoFocus}\n        leftIcon={leftIcon}\n        searchable={searchable}\n        components={components}\n      />\n      <Fieldset\n        isFocused={state.isFocused || state.isOpen}\n        invalid={hasInvalidState}\n        isEmpty={state.isEmpty}\n        isActivated={!state.isEmpty || state.isFocused || state.isOpen}\n        disabled={disabled}\n        loading={loading}\n        readOnly={readOnly}\n        htmlFor={state.ids.triggerId}\n        labelId={state.ids.labelId}\n        legend={label}\n        label={label}\n        tooltip={tooltip}\n        pointerCursor={!searchable || isSearchInDropdown}\n        onClick={state.handleContainerClick}\n        labelClassName={cn(!hideIndicator && 'pr-10', hasLeadingIcon && 'pl-[28px]')}\n        className={fieldsetClassName}\n      />\n      <SelectMenuPanel\n        isOpen={state.isOpen}\n        isMobile={state.isMobile}\n        onClose={() => {\n          state.closeMenu();\n          state.setIsFocused(false);\n        }}\n        title={resolvedTitle}\n        className={dropdownClassName}\n        drawerClassName={drawerClassName}\n        searchVisible={state.inMenuSearchVisible}\n      >\n        {state.inMenuSearchVisible && (\n          <SelectSearchInput\n            inputRef={state.mobileSearchInputRef}\n            value={state.inputValue}\n            placeholder={t('search_placeholder')}\n            listboxId={state.ids.listboxId}\n            activeOptionId={\n              state.highlightedIndex >= 0\n                ? state.ids.getOptionId(state.highlightedIndex)\n                : undefined\n            }\n            onChange={state.handleInputChange}\n            onKeyDown={state.handleInputKeyDown}\n          />\n        )}\n        {menuHeader}\n        <MenuList\n          id={state.ids.listboxId}\n          labelledBy={state.ids.labelId}\n          describedBy={state.ids.describedErrorId}\n          getOptionId={state.ids.getOptionId}\n          options={state.filteredOptions}\n          selectedOptions={selectedOptions}\n          isMulti={isMulti}\n          highlightedIndex={state.highlightedIndex}\n          onOptionHover={state.setHighlightedIndex}\n          onOptionClick={state.selectOption}\n          disabled={state.isBlocked}\n          menuLoading={menuLoading}\n          isOptionDisabled={isOptionDisabled}\n          listRef={state.listRef}\n          registerOptionRef={state.registerOptionRef}\n          menuClassName={menuClassName}\n          noOptionsMessage={noOptionsMessage}\n          components={components}\n          inputValue={state.inputValue}\n          formatOptionLabel={formatOptionLabel}\n          isOptionSelected={isOptionSelected}\n          onMenuScrollToBottom={onMenuScrollToBottom}\n          groupedOptions={options}\n          formatGroupLabel={formatGroupLabel}\n        />\n        {state.canCreateNewOption && (\n          <CreateOption\n            inputValue={state.trimmedInput}\n            onCreate={state.createOption}\n            formatCreateLabel={formatCreateLabel}\n          />\n        )}\n      </SelectMenuPanel>\n    </SelectFieldShell>\n  );\n}\n\ntype SelectComponent = <\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(\n  props: SelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nconst Select = React.forwardRef(SelectInternal) as unknown as SelectComponent;\n\nexport {Select};\nexport type {\n  SelectProps,\n  SingleSelectProps,\n  MultiSelectModeProps as SelectMultiProps,\n  BaseSelectProps,\n};\n","import {useEffect} from 'react';\nimport type {ReactNode} from 'react';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {flattenGroupedOptions} from '../_select-internals/utils';\nimport type {\n  SelectChangeMeta,\n  SelectGroupedOption,\n  SelectValue,\n} from '../_select-internals';\n\ntype Params<T, V extends SelectValue, L extends ReactNode> = {\n  value: SelectOption<T, V, L> | null | undefined;\n  options: SelectGroupedOption<T, V, L>[] | undefined;\n  onChange?: (option: SelectOption<T, V, L> | null, meta?: SelectChangeMeta) => void;\n  enabled?: boolean;\n};\n\nexport function useSetCorrectOptionIfThereIsOnlyValue<\n  T,\n  V extends SelectValue,\n  L extends ReactNode,\n>({value, options, onChange, enabled = true}: Params<T, V, L>) {\n  useEffect(() => {\n    if (!enabled || !value || !onChange || !options?.length) return;\n    if (value.value === undefined || value.value === null) return;\n    if (value.label !== 'NONE' && value.label !== '') return;\n\n    const validOption = flattenGroupedOptions(options).find(\n      option => option.value === value.value,\n    );\n    if (!validOption) return;\n\n    onChange({...validOption, isPrefilled: true}, {action: 'select'});\n  }, [enabled, onChange, options, value]);\n}\n","import type {PhoneInputOption, PhoneInputValue} from './types';\n\nconst PREFIX_REGEX = /^\\+/;\n\ntype PhoneInputValueInput = Partial<\n  Record<keyof PhoneInputValue, string | number | null | undefined>\n>;\n\nfunction isPhoneInputValue(\n  value: string | number | PhoneInputValueInput | null | undefined,\n): value is PhoneInputValueInput {\n  if (typeof value === 'string' || typeof value === 'number') {\n    return false;\n  }\n\n  return Boolean(value && ('code' in value || 'number' in value));\n}\n\nfunction getPhoneValuePart(value: unknown): string | undefined {\n  if (typeof value === 'string' || typeof value === 'number') {\n    return String(value);\n  }\n  return undefined;\n}\n\nexport function toPhoneValue(\n  value: string | number | PhoneInputValue | null | undefined,\n  fallbackCode?: string,\n  fallbackNumber?: string,\n): PhoneInputValue {\n  if (value === null || value === undefined) {\n    return {code: fallbackCode ?? '', number: fallbackNumber ?? ''};\n  }\n\n  if (isPhoneInputValue(value)) {\n    return {\n      code: getPhoneValuePart(value.code) ?? fallbackCode ?? '',\n      number: getPhoneValuePart(value.number) ?? fallbackNumber ?? '',\n    };\n  }\n\n  return {code: fallbackCode ?? '', number: fallbackNumber ?? String(value)};\n}\n\nexport function clearPhoneNumber(value: string): string {\n  return value.replace(/[^0-9]/g, '');\n}\n\nexport function findPhoneCode(value: string, codeSet: Set<string>): string | undefined {\n  const hasPrefix = PREFIX_REGEX.test(value);\n  const maxLength = hasPrefix ? 4 : 3;\n  const minLength = hasPrefix ? 2 : 1;\n\n  for (let length = minLength; length <= maxLength; length += 1) {\n    const candidate = value.slice(0, length);\n    const normalized = hasPrefix ? candidate : `+${candidate}`;\n    if (codeSet.has(normalized)) {\n      return normalized;\n    }\n  }\n\n  return undefined;\n}\n\nexport function parsePhoneValueWithOptions(options: PhoneInputOption[]) {\n  const codeSet = new Set(options.map(option => option.value));\n\n  return (value: string): PhoneInputValue => {\n    if (!PREFIX_REGEX.test(value)) {\n      return {code: '', number: value};\n    }\n\n    const code = findPhoneCode(value, codeSet);\n    if (!code) {\n      return {code: '', number: value};\n    }\n\n    return {\n      code,\n      number: value.slice(code.length),\n    };\n  };\n}\n\nexport function findPhoneCodeOption(options: PhoneInputOption[], code: string) {\n  return options.find(option => option.value === code);\n}\n\nexport function formatPhoneCodeOptionLabel(option: PhoneInputOption): string {\n  const label = String(option.label);\n  const value = String(option.value);\n  return label.includes(value) ? label : `${label} ${value}`;\n}\n","import * as React from 'react';\nimport {Select, type SingleSelectProps} from '../select';\nimport type {SelectValue} from '../_select-internals';\nimport type {ReactNode} from 'react';\n\ntype CreatableSelectProps<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n> = Omit<SingleSelectProps<T, V, L>, 'isCreatable' | 'isMulti'>;\n\nconst CreatableSelect = React.forwardRef(function CreatableSelect<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(props: CreatableSelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n  return <Select ref={ref} {...(props as SingleSelectProps<T, V, L>)} isCreatable />;\n}) as <T = unknown, V extends SelectValue = string, L extends ReactNode = string>(\n  props: CreatableSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nexport {CreatableSelect};\nexport type {CreatableSelectProps};\n","import * as React from 'react';\nimport {Select, type SelectMultiProps} from '../select';\nimport type {SelectValue} from '../_select-internals';\nimport type {ReactNode} from 'react';\n\ntype MultiSelectProps<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n> = Omit<SelectMultiProps<T, V, L>, 'isMulti'>;\n\nconst MultiSelect = React.forwardRef(function MultiSelect<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(props: MultiSelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n  return <Select ref={ref} {...(props as SelectMultiProps<T, V, L>)} isMulti />;\n}) as <T = unknown, V extends SelectValue = string, L extends ReactNode = string>(\n  props: MultiSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nexport {MultiSelect};\nexport type {MultiSelectProps};\n","import * as React from 'react';\nimport {Select, type SelectMultiProps} from '../select';\nimport type {SelectValue} from '../_select-internals';\nimport type {ReactNode} from 'react';\n\ntype CreatableMultiSelectProps<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n> = Omit<SelectMultiProps<T, V, L>, 'isCreatable' | 'isMulti'>;\n\nconst CreatableMultiSelect = React.forwardRef(function CreatableMultiSelect<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(props: CreatableMultiSelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n  return (\n    <Select ref={ref} {...(props as SelectMultiProps<T, V, L>)} isMulti isCreatable />\n  );\n}) as <T = unknown, V extends SelectValue = string, L extends ReactNode = string>(\n  props: CreatableMultiSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nexport {CreatableMultiSelect};\nexport type {CreatableMultiSelectProps};\n","import * as React from 'react';\nimport {Select, type SelectMultiProps, type SingleSelectProps} from '../select';\nimport {defaultFilterOption, type SelectValue} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\nimport {VirtualMenuList} from './VirtualMenuList';\nimport {\n  InfiniteScrollContext,\n  type InfiniteScrollContextValue,\n} from './InfiniteScrollContext';\n\ntype InfiniteScrollExtras = {\n  canLoadMore?: boolean;\n  isLoadingMore?: boolean;\n  loadMoreItems?: () => void;\n  loadingMoreText?: string;\n  onSearchChange?: (input: string) => void;\n  itemHeight?: number;\n  listHeight?: number;\n  overscan?: number;\n  loadMoreThreshold?: number;\n};\n\ntype InfiniteScrollSingleProps<T, V extends SelectValue, L extends ReactNode> = Omit<\n  SingleSelectProps<T, V, L>,\n  'options'\n> &\n  InfiniteScrollExtras & {\n    options?: SelectOption<T, V, L>[];\n    getFullSearchOption?: (query: string) => SelectOption<T, V, L> | null | undefined;\n  };\n\ntype InfiniteScrollMultiSelectProps<T, V extends SelectValue, L extends ReactNode> = Omit<\n  SelectMultiProps<T, V, L>,\n  'options'\n> &\n  InfiniteScrollExtras & {\n    options?: SelectOption<T, V, L>[];\n  };\n\ntype InfiniteScrollSelectProps<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n> = InfiniteScrollSingleProps<T, V, L> | InfiniteScrollMultiSelectProps<T, V, L>;\n\nconst DEFAULT_ITEM_HEIGHT = 60;\nconst DEFAULT_LIST_HEIGHT = 322;\nconst DEFAULT_OVERSCAN = 5;\nconst DEFAULT_LOAD_MORE_THRESHOLD = 5;\n\nconst passthroughFilter = () => true;\n\nfunction InfiniteScrollSelectInternal<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(props: InfiniteScrollSelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n  const {\n    options: rawOptions = [],\n    canLoadMore,\n    isLoadingMore,\n    loadMoreItems,\n    loadingMoreText,\n    onSearchChange,\n    itemHeight = DEFAULT_ITEM_HEIGHT,\n    listHeight = DEFAULT_LIST_HEIGHT,\n    overscan = DEFAULT_OVERSCAN,\n    loadMoreThreshold = DEFAULT_LOAD_MORE_THRESHOLD,\n    getFullSearchOption: getFullSearchOptionProp,\n    filterOption: userFilterOption,\n    components: userComponents,\n    onInputChange: userOnInputChange,\n    isMulti = false,\n    ...rest\n  } = props as InfiniteScrollSingleProps<T, V, L>;\n\n  const getFullSearchOption = isMulti ? undefined : getFullSearchOptionProp;\n\n  const isPaginated =\n    canLoadMore !== undefined ||\n    isLoadingMore !== undefined ||\n    loadMoreItems !== undefined ||\n    onSearchChange !== undefined ||\n    getFullSearchOption !== undefined;\n\n  const filterOption =\n    userFilterOption ?? (isPaginated ? passthroughFilter : defaultFilterOption);\n\n  const [inputValue, setInputValue] = React.useState('');\n  const selectedResetLabelRef = React.useRef('');\n  const valueLabel = React.useMemo(() => {\n    if (isMulti) return '';\n    const single = (rest as InfiniteScrollSingleProps<T, V, L>).value;\n    if (!single) return '';\n    return rest.getValueLabel?.(single) ?? String(single.label);\n  }, [isMulti, rest]);\n\n  const filteredOptions = React.useMemo(() => {\n    const trimmed = inputValue.trim();\n    const isFiltering =\n      trimmed.length > 0 && trimmed.toLowerCase() !== valueLabel.toLowerCase();\n    let list = rawOptions;\n    if (isFiltering) {\n      list = list.filter(option => filterOption(option, trimmed));\n    }\n    if (getFullSearchOption && trimmed) {\n      const synthetic = getFullSearchOption(trimmed);\n      if (synthetic) list = [synthetic, ...list];\n    }\n    return list;\n  }, [rawOptions, inputValue, filterOption, getFullSearchOption, valueLabel]);\n\n  const contextValue = React.useMemo<InfiniteScrollContextValue>(\n    () => ({\n      canLoadMore,\n      isLoadingMore,\n      loadMoreItems,\n      loadingMoreText,\n      itemHeight,\n      listHeight,\n      overscan,\n      loadMoreThreshold,\n    }),\n    [\n      canLoadMore,\n      isLoadingMore,\n      loadMoreItems,\n      loadingMoreText,\n      itemHeight,\n      listHeight,\n      overscan,\n      loadMoreThreshold,\n    ],\n  );\n\n  const components = React.useMemo(\n    () => ({...userComponents, MenuList: VirtualMenuList}),\n    [userComponents],\n  );\n\n  const handleInputChange = React.useCallback(\n    (value: string) => {\n      const selectedResetLabel = selectedResetLabelRef.current;\n      const isSelectedLabelReset =\n        !isMulti &&\n        value.trim().toLowerCase() === (selectedResetLabel || valueLabel).toLowerCase();\n      const searchValue = isSelectedLabelReset ? '' : value;\n\n      setInputValue(value);\n      onSearchChange?.(searchValue);\n      userOnInputChange?.(value);\n      if (!isSelectedLabelReset) selectedResetLabelRef.current = '';\n    },\n    [isMulti, onSearchChange, userOnInputChange, valueLabel],\n  );\n\n  const selectExtras = {\n    options: filteredOptions,\n    filterOption: passthroughFilter,\n    components,\n    onInputChange: handleInputChange,\n  };\n\n  return (\n    <InfiniteScrollContext.Provider value={contextValue}>\n      {isMulti ? (\n        <Select\n          ref={ref}\n          {...(rest as unknown as SelectMultiProps<T, V, L>)}\n          {...selectExtras}\n          onChange={(next, meta) => {\n            selectedResetLabelRef.current = '';\n            onSearchChange?.('');\n            (rest as unknown as SelectMultiProps<T, V, L>).onChange?.(next, meta);\n          }}\n          isMulti\n        />\n      ) : (\n        <Select\n          ref={ref}\n          {...(rest as unknown as SingleSelectProps<T, V, L>)}\n          {...selectExtras}\n          onChange={(next, meta) => {\n            selectedResetLabelRef.current = next\n              ? ((rest as InfiniteScrollSingleProps<T, V, L>).getValueLabel?.(next) ??\n                String(next.label))\n              : '';\n            onSearchChange?.('');\n            (rest as unknown as SingleSelectProps<T, V, L>).onChange?.(next, meta);\n          }}\n          isMulti={false}\n        />\n      )}\n    </InfiniteScrollContext.Provider>\n  );\n}\n\ntype InfiniteScrollSelectComponent = <\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(\n  props: InfiniteScrollSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nconst InfiniteScrollSelect = React.forwardRef(\n  InfiniteScrollSelectInternal,\n) as unknown as InfiniteScrollSelectComponent;\n\nexport {InfiniteScrollSelect};\nexport type {InfiniteScrollSelectProps};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {useVirtualizer} from '@tanstack/react-virtual';\nimport {Skeleton} from '../../skeleton';\nimport {ThreeDotsLoader} from '../../three-dots-loader';\nimport {cn} from '../../lib/cn';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {DefaultOption, type MenuListProps} from '../_select-internals';\nimport type {SelectValue} from '../_select-internals';\nimport type {ReactNode} from 'react';\nimport {useInfiniteScrollContext} from './InfiniteScrollContext';\n\nfunction VirtualMenuList<T, V extends SelectValue, L extends ReactNode>(\n  props: MenuListProps<T, V, L>,\n) {\n  const {\n    id,\n    labelledBy,\n    describedBy,\n    getOptionId,\n    options,\n    selectedOptions,\n    isMulti,\n    highlightedIndex,\n    onOptionHover,\n    onOptionClick,\n    disabled,\n    isOptionDisabled,\n    menuLoading,\n    menuClassName,\n    noOptionsMessage,\n    components,\n    inputValue = '',\n    formatOptionLabel,\n    isOptionSelected: isOptionSelectedProp,\n    onMenuScrollToBottom,\n  } = props;\n  const {\n    canLoadMore,\n    isLoadingMore,\n    loadMoreItems,\n    loadingMoreText,\n    itemHeight,\n    listHeight,\n    overscan,\n    loadMoreThreshold,\n  } = useInfiniteScrollContext();\n  const Option = components?.Option ?? DefaultOption;\n  const {t} = useTranslation();\n  const scrollRef = React.useRef<HTMLDivElement>(null);\n  const lastLoadMoreOptionsLengthRef = React.useRef<number | null>(null);\n  const previousHighlightedIndexRef = React.useRef(-1);\n  const showLoaderRow = Boolean(canLoadMore || isLoadingMore);\n  const showMenuLoader = Boolean(menuLoading);\n  const itemCount = showMenuLoader ? 0 : options.length + (showLoaderRow ? 1 : 0);\n\n  const virtualizer = useVirtualizer({\n    count: itemCount,\n    getScrollElement: () => scrollRef.current,\n    estimateSize: () => itemHeight,\n    overscan,\n  });\n\n  const virtualItems = virtualizer.getVirtualItems();\n  const totalSize = virtualizer.getTotalSize();\n  const measuredListHeight = Math.min(listHeight, Math.max(totalSize, itemHeight));\n  const resolvedLoadingMoreText = loadingMoreText ?? t('loading_more');\n\n  React.useEffect(() => {\n    if (!canLoadMore || isLoadingMore || !loadMoreItems) return;\n    if (virtualItems.length === 0) return;\n    const lastItem = virtualItems[virtualItems.length - 1];\n    if (!lastItem || lastItem.index < options.length - loadMoreThreshold) return;\n    if (lastLoadMoreOptionsLengthRef.current === options.length) return;\n    lastLoadMoreOptionsLengthRef.current = options.length;\n    loadMoreItems();\n  }, [\n    virtualItems,\n    options.length,\n    canLoadMore,\n    isLoadingMore,\n    loadMoreItems,\n    loadMoreThreshold,\n  ]);\n\n  React.useEffect(() => {\n    const changed = previousHighlightedIndexRef.current !== highlightedIndex;\n    previousHighlightedIndexRef.current = highlightedIndex;\n    if (highlightedIndex < 0 || !changed) return;\n    virtualizer.scrollToIndex(highlightedIndex, {align: 'auto'});\n  }, [highlightedIndex, virtualizer]);\n\n  const activeOptionId =\n    highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined;\n  const lastOptionIndex = options.length - 1;\n  const emptyMessage = noOptionsMessage?.() ?? t('no_options');\n  const isOptionSelected = (option: SelectOption<T, V, L>) =>\n    isOptionSelectedProp\n      ? isOptionSelectedProp(option, selectedOptions)\n      : selectedOptions.some(s => s.value === option.value);\n\n  const wasAtBottomRef = React.useRef(false);\n  const handleScroll = React.useCallback(\n    (event: React.UIEvent<HTMLDivElement>) => {\n      if (!onMenuScrollToBottom) return;\n      const target = event.currentTarget;\n      const atBottom = target.scrollHeight - target.scrollTop - target.clientHeight <= 1;\n      if (atBottom && !wasAtBottomRef.current) {\n        onMenuScrollToBottom(event);\n      }\n      wasAtBottomRef.current = atBottom;\n    },\n    [onMenuScrollToBottom],\n  );\n\n  if (options.length === 0 || showMenuLoader) {\n    return (\n      <div className=\"min-h-[75px] px-4 pb-[19px] pt-[17px]\">\n        {isLoadingMore || showMenuLoader ? (\n          <div\n            role=\"status\"\n            aria-busy=\"true\"\n            aria-live=\"polite\"\n            className=\"flex flex-col gap-2\"\n          >\n            <span className=\"sr-only\">\n              {showMenuLoader ? t('loading') : resolvedLoadingMoreText}\n            </span>\n            {Array.from({length: 3}).map((_, index) => (\n              <Skeleton\n                key={index}\n                className=\"h-10 w-full rounded-md\"\n                style={{animationDelay: `${index * 120}ms`, opacity: 1 - index * 0.2}}\n              />\n            ))}\n          </div>\n        ) : (\n          <div className=\"flex min-h-[40px] items-center text-[16px] font-medium text-[var(--chekin-color-brand-navy)]\">\n            {emptyMessage}\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"min-h-[75px] px-4 pb-[19px] pt-[17px]\">\n      <div\n        ref={scrollRef}\n        className={cn('overflow-y-auto', menuClassName)}\n        style={{height: `${measuredListHeight}px`}}\n        onScroll={onMenuScrollToBottom ? handleScroll : undefined}\n      >\n        <div\n          id={id}\n          role=\"listbox\"\n          tabIndex={-1}\n          aria-labelledby={labelledBy}\n          aria-describedby={describedBy}\n          aria-activedescendant={activeOptionId}\n          className=\"relative w-full\"\n          style={{height: `${totalSize}px`}}\n        >\n          {virtualItems.map(virtualItem => {\n            const isLoaderRow = virtualItem.index >= options.length;\n            const option = options[virtualItem.index] as\n              | SelectOption<T, V, L>\n              | undefined;\n            const isSelected = !isLoaderRow && option ? isOptionSelected(option) : false;\n            const isHighlighted = virtualItem.index === highlightedIndex;\n            const optionDisabledFlag = Boolean(\n              disabled || option?.isDisabled || (option && isOptionDisabled?.(option)),\n            );\n            const isLastOption =\n              !isLoaderRow && virtualItem.index === lastOptionIndex && !canLoadMore;\n\n            return (\n              <div\n                key={virtualItem.key}\n                data-index={virtualItem.index}\n                className=\"absolute left-0 top-0 w-full h-full\"\n                style={{\n                  height: `${virtualItem.size}px`,\n                  transform: `translateY(${virtualItem.start}px)`,\n                }}\n              >\n                {isLoaderRow ? (\n                  <div\n                    role=\"status\"\n                    aria-busy=\"true\"\n                    aria-live=\"polite\"\n                    className=\"flex h-full items-center justify-center\"\n                  >\n                    <span className=\"sr-only\">\n                      {showMenuLoader && !isLoadingMore\n                        ? t('loading')\n                        : resolvedLoadingMoreText}\n                    </span>\n                    <ThreeDotsLoader\n                      height={24}\n                      width={24}\n                      color=\"var(--chekin-color-brand-blue)\"\n                    />\n                  </div>\n                ) : option ? (\n                  <Option\n                    id={getOptionId(virtualItem.index)}\n                    option={option}\n                    index={virtualItem.index}\n                    isSelected={isSelected}\n                    isHighlighted={isHighlighted}\n                    isDisabled={optionDisabledFlag}\n                    isLast={isLastOption}\n                    isMulti={Boolean(isMulti)}\n                    onClick={onOptionClick}\n                    onHover={onOptionHover}\n                    innerRef={() => undefined}\n                    inputValue={inputValue}\n                    selectedOptions={selectedOptions}\n                    formatOptionLabel={formatOptionLabel}\n                  />\n                ) : null}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport {VirtualMenuList};\n","import * as React from 'react';\n\ntype InfiniteScrollContextValue = {\n  canLoadMore?: boolean;\n  isLoadingMore?: boolean;\n  loadMoreItems?: () => void;\n  loadingMoreText?: string;\n  itemHeight: number;\n  listHeight: number;\n  overscan: number;\n  loadMoreThreshold: number;\n};\n\nconst InfiniteScrollContext = React.createContext<InfiniteScrollContextValue | null>(\n  null,\n);\n\nfunction useInfiniteScrollContext(): InfiniteScrollContextValue {\n  const ctx = React.useContext(InfiniteScrollContext);\n  if (!ctx) {\n    throw new Error(\n      'useInfiniteScrollContext must be used within an InfiniteScrollContext.Provider',\n    );\n  }\n  return ctx;\n}\n\nexport {InfiniteScrollContext, useInfiniteScrollContext};\nexport type {InfiniteScrollContextValue};\n","import * as React from 'react';\nimport {\n  InfiniteScrollSelect,\n  type InfiniteScrollSelectProps,\n} from '../infinite-scroll-select';\nimport type {SelectValue} from '../_select-internals';\nimport type {ReactNode} from 'react';\n\ntype InfiniteScrollMultiSelectProps<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n> = Omit<Extract<InfiniteScrollSelectProps<T, V, L>, {isMulti: true}>, 'isMulti'>;\n\nconst InfiniteScrollMultiSelect = React.forwardRef(function InfiniteScrollMultiSelect<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(props: InfiniteScrollMultiSelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n  const Forwarded = InfiniteScrollSelect as unknown as (\n    props: InfiniteScrollMultiSelectProps<T, V, L> & {\n      ref?: React.Ref<HTMLDivElement>;\n      isMulti?: true;\n    },\n  ) => React.ReactElement;\n  return <Forwarded {...props} ref={ref} isMulti />;\n}) as <T = unknown, V extends SelectValue = string, L extends ReactNode = string>(\n  props: InfiniteScrollMultiSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nexport {InfiniteScrollMultiSelect};\nexport type {InfiniteScrollMultiSelectProps};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Select, type SelectMultiProps} from '../select';\nimport {\n  InfiniteScrollSelect,\n  type InfiniteScrollSelectProps,\n} from '../infinite-scroll-select';\nimport {\n  defaultFilterOption,\n  flattenGroupedOptions,\n  isOptionGroup,\n  type ControlProps,\n  type SelectComponents,\n  type SelectGroupedOption,\n  type SelectValue,\n} from '../_select-internals';\nimport {SelectCheckboxOption} from './SelectCheckboxOption';\nimport {createCountTrigger} from './CountTrigger';\nimport {SelectAllRow} from './SelectAllRow';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype SelectCheckboxesTriggerRenderer = (\n  isOpen: boolean,\n  toggle: () => void,\n) => React.ReactNode;\n\ntype SelectCheckboxesPaginationProps = {\n  canLoadMore?: boolean;\n  isLoadingMore?: boolean;\n  loadMoreItems?: () => void;\n  loadingMoreText?: string;\n  onSearchChange?: (input: string) => void;\n  itemHeight?: number;\n  listHeight?: number;\n  overscan?: number;\n  loadMoreThreshold?: number;\n};\n\ntype SelectCheckboxesProps<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n> = Omit<\n  SelectMultiProps<T, V, L>,\n  'isMulti' | 'components' | 'searchPosition' | 'menuHeader' | 'options'\n> & {\n  options?: SelectGroupedOption<T, V, L>[];\n  trigger?: SelectCheckboxesTriggerRenderer;\n  components?: SelectComponents<T, V, L>;\n  valueText?: string | ((selectedCount: number, total: number) => string);\n  allowSelectAll?: boolean;\n  selectAllLabel?: string;\n  searchable?: boolean;\n} & SelectCheckboxesPaginationProps;\n\nfunction hasPaginationProps(props: SelectCheckboxesPaginationProps) {\n  return (\n    props.canLoadMore !== undefined ||\n    props.isLoadingMore !== undefined ||\n    props.loadMoreItems !== undefined ||\n    props.onSearchChange !== undefined\n  );\n}\n\nfunction makeTriggerSlot<T, V extends SelectValue, L extends ReactNode>(\n  render: SelectCheckboxesTriggerRenderer,\n) {\n  function CustomTrigger(props: ControlProps<T, V, L>) {\n    return <>{render(props.isOpen, props.onContainerClick)}</>;\n  }\n  return CustomTrigger;\n}\n\nconst passthroughFilter = () => true;\n\nfunction SelectCheckboxesInternal<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(props: SelectCheckboxesProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n  const {\n    options: rawOptions = [],\n    value,\n    defaultValue,\n    onChange,\n    trigger,\n    components: userComponents,\n    valueText,\n    allowSelectAll = false,\n    selectAllLabel,\n    searchable = true,\n    filterOption = defaultFilterOption,\n    closeMenuOnSelect = false,\n    onSearchChange,\n    ...paginationAndRest\n  } = props;\n  const {t} = useTranslation();\n  const isPaginated = hasPaginationProps(\n    paginationAndRest as SelectCheckboxesPaginationProps,\n  );\n\n  const [inputValue, setInputValue] = React.useState('');\n  const isControlled = value !== undefined;\n  const [internalValue, setInternalValue] = React.useState<SelectOption<T, V, L>[]>(\n    () => defaultValue ?? [],\n  );\n  const currentValue = isControlled ? value : internalValue;\n  const selected = React.useMemo(() => currentValue ?? [], [currentValue]);\n\n  const handleChange = React.useCallback<NonNullable<typeof onChange>>(\n    (next, meta) => {\n      if (!isControlled) setInternalValue(next);\n      onChange?.(next, meta);\n    },\n    [isControlled, onChange],\n  );\n\n  const flatRawOptions = React.useMemo(\n    () => flattenGroupedOptions(rawOptions),\n    [rawOptions],\n  );\n\n  const filteredGrouped = React.useMemo<SelectGroupedOption<T, V, L>[]>(() => {\n    const trimmed = inputValue.trim();\n    if (!trimmed) return rawOptions;\n    return rawOptions\n      .map(item => {\n        if (isOptionGroup(item)) {\n          const opts = item.options.filter(o => filterOption(o, trimmed));\n          return opts.length > 0 ? {...item, options: opts} : null;\n        }\n        return filterOption(item, trimmed) ? item : null;\n      })\n      .filter((item): item is SelectGroupedOption<T, V, L> => item !== null);\n  }, [rawOptions, inputValue, filterOption]);\n\n  const filteredFlat = React.useMemo(\n    () => flattenGroupedOptions(filteredGrouped),\n    [filteredGrouped],\n  );\n\n  const visibleSelectedCount = filteredFlat.reduce((acc, option) => {\n    return acc + (selected.some(s => s.value === option.value) ? 1 : 0);\n  }, 0);\n  const allVisibleSelected =\n    filteredFlat.length > 0 && visibleSelectedCount === filteredFlat.length;\n\n  const handleToggleAll = React.useCallback(() => {\n    if (allVisibleSelected) {\n      const visibleValues = new Set(filteredFlat.map(option => option.value));\n      handleChange(\n        selected.filter(s => !visibleValues.has(s.value)),\n        {action: 'deselect'},\n      );\n      return;\n    }\n    const merged = [...selected];\n    for (const option of filteredFlat) {\n      if (!merged.some(s => s.value === option.value)) merged.push(option);\n    }\n    handleChange(merged, {action: 'select'});\n  }, [allVisibleSelected, filteredFlat, handleChange, selected]);\n\n  const valueTextRef = React.useRef(valueText);\n  const totalCountRef = React.useRef(flatRawOptions.length);\n  valueTextRef.current = valueText;\n  totalCountRef.current = flatRawOptions.length;\n\n  const Control = React.useMemo(() => {\n    if (trigger) return makeTriggerSlot<T, V, L>(trigger);\n    return createCountTrigger({\n      getValueText: () => valueTextRef.current,\n      getTotalCount: () => totalCountRef.current,\n    });\n  }, [trigger]);\n\n  const components = React.useMemo(\n    () =>\n      ({\n        ...userComponents,\n        Control,\n        Option: userComponents?.Option ?? SelectCheckboxOption,\n      }) as SelectComponents<T, V, L>,\n    [userComponents, Control],\n  );\n\n  const menuHeader = allowSelectAll ? (\n    <SelectAllRow\n      label={selectAllLabel ?? t('select_all', {defaultValue: 'Select All'})}\n      checked={allVisibleSelected}\n      onToggle={handleToggleAll}\n    />\n  ) : undefined;\n\n  const handleInputChange = React.useCallback(\n    (next: string) => {\n      setInputValue(next);\n      onSearchChange?.(next);\n    },\n    [onSearchChange],\n  );\n\n  const baseSharedProps = {\n    ...paginationAndRest,\n    value: currentValue,\n    onChange: handleChange,\n    filterOption: passthroughFilter,\n    components,\n    closeMenuOnSelect,\n    searchPosition: (searchable ? 'dropdown' : 'trigger') as 'dropdown' | 'trigger',\n    searchable,\n    menuHeader,\n    onInputChange: handleInputChange,\n    isMulti: true as const,\n  };\n\n  if (isPaginated) {\n    return (\n      <InfiniteScrollSelect\n        ref={ref}\n        {...({\n          ...baseSharedProps,\n          options: filteredFlat,\n        } as unknown as InfiniteScrollSelectProps<T, V, L> & {isMulti: true})}\n      />\n    );\n  }\n\n  return (\n    <Select\n      ref={ref}\n      {...({\n        ...baseSharedProps,\n        options: filteredGrouped,\n      } as unknown as SelectMultiProps<T, V, L> & {isMulti: true})}\n    />\n  );\n}\n\ntype SelectCheckboxesComponent = <\n  T = unknown,\n  V extends SelectValue = string,\n  L extends ReactNode = string,\n>(\n  props: SelectCheckboxesProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nconst SelectCheckboxes = React.forwardRef(\n  SelectCheckboxesInternal,\n) as unknown as SelectCheckboxesComponent;\n\nexport {SelectCheckboxes};\nexport type {SelectCheckboxesProps, SelectCheckboxesTriggerRenderer};\n","import * as React from 'react';\nimport {Check} from 'lucide-react';\nimport {cn} from '../../lib/cn';\n\ntype VisualCheckboxProps = {\n  checked: boolean;\n  disabled?: boolean;\n  className?: string;\n};\n\nfunction VisualCheckbox({checked, disabled, className}: VisualCheckboxProps) {\n  return (\n    <span\n      aria-hidden=\"true\"\n      data-state={checked ? 'checked' : 'unchecked'}\n      className={cn(\n        'checkbox__control pointer-events-none flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-solid',\n        checked\n          ? 'border-[var(--checkbox-checked-border)] bg-[var(--checkbox-checked-bg)] text-[var(--checkbox-check-color)]'\n          : 'border-[var(--checkbox-border)] bg-[var(--checkbox-bg)]',\n        disabled && 'opacity-50',\n        className,\n      )}\n    >\n      {checked && <Check className=\"checkbox__icon h-3 w-3\" />}\n    </span>\n  );\n}\n\nexport {VisualCheckbox};\nexport type {VisualCheckboxProps};\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {cn} from '../../lib/cn';\nimport type {OptionProps} from '../_select-internals';\nimport type {SelectValue} from '../_select-internals';\nimport {VisualCheckbox} from './VisualCheckbox';\n\nfunction SelectCheckboxOption<T, V extends SelectValue, L extends ReactNode>(\n  props: OptionProps<T, V, L>,\n) {\n  const {\n    option,\n    index,\n    isSelected,\n    isHighlighted,\n    isDisabled,\n    id,\n    onClick,\n    onHover,\n    innerRef,\n  } = props;\n\n  return (\n    <button\n      id={id}\n      ref={innerRef}\n      type=\"button\"\n      role=\"option\"\n      aria-selected={isSelected}\n      aria-disabled={isDisabled}\n      tabIndex={-1}\n      disabled={isDisabled}\n      onClick={() => onClick(option)}\n      onMouseMove={() => onHover(index)}\n      className={cn(\n        'flex w-full items-center gap-3 rounded-md border-0 bg-transparent px-3 py-2 text-left text-[15px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors duration-100',\n        !isDisabled && 'cursor-pointer hover:bg-[var(--chekin-color-surface-pressed)]',\n        isHighlighted && !isDisabled && 'bg-[var(--chekin-color-surface-pressed)]',\n        isSelected &&\n          'bg-[var(--chekin-color-surface-autocomplete)] font-semibold text-[var(--chekin-color-brand-blue)]',\n        isDisabled && 'cursor-not-allowed text-[var(--chekin-color-gray-2)]',\n      )}\n    >\n      <VisualCheckbox checked={isSelected} disabled={isDisabled} />\n      <span className=\"flex min-w-0 flex-1 items-center justify-between gap-2\">\n        <span className=\"block break-words\">{option.label as ReactNode}</span>\n        {option.description && (\n          <span className=\"shrink-0 text-[12px] font-medium italic text-[var(--chekin-color-gray-1)]\">\n            {option.description}\n          </span>\n        )}\n      </span>\n    </button>\n  );\n}\n\nexport {SelectCheckboxOption};\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport type {ControlProps} from '../_select-internals';\nimport type {SelectValue} from '../_select-internals';\n\ntype CountTriggerValueText =\n  | string\n  | ((selectedCount: number, total: number) => string)\n  | undefined;\n\ntype CountTriggerOptions = {\n  getValueText: () => CountTriggerValueText;\n  getTotalCount: () => number | undefined;\n};\n\nfunction createCountTrigger(opts: CountTriggerOptions) {\n  const {getValueText, getTotalCount} = opts;\n\n  function CountTrigger<T, V extends SelectValue, L extends ReactNode>(\n    props: ControlProps<T, V, L>,\n  ) {\n    const {t} = useTranslation();\n    const {\n      triggerId,\n      listboxId,\n      labelId,\n      valueId,\n      describedErrorId,\n      isOpen,\n      isBlocked,\n      hasValue,\n      invalid,\n      loading,\n      disabled,\n      placeholder,\n      selectedOptions,\n      onContainerClick,\n      onTriggerFocus,\n      leftIcon,\n    } = props;\n    const valueText = getValueText();\n    const totalCount = getTotalCount();\n    const count = selectedOptions.length;\n    const total = totalCount ?? count;\n    const computedText =\n      typeof valueText === 'function'\n        ? valueText(count, total)\n        : (valueText ??\n          (count > 0 ? t('n_selected', {count, defaultValue: `${count} selected`}) : ''));\n\n    const display = hasValue ? computedText : isOpen ? (placeholder ?? null) : null;\n    const isEmpty = !hasValue;\n\n    return (\n      <button\n        id={triggerId}\n        type=\"button\"\n        aria-haspopup=\"listbox\"\n        aria-expanded={isOpen}\n        aria-controls={listboxId}\n        aria-labelledby={hasValue && valueId ? `${labelId} ${valueId}` : labelId}\n        aria-describedby={describedErrorId}\n        aria-invalid={invalid}\n        aria-busy={loading}\n        disabled={isBlocked}\n        onClick={onContainerClick}\n        onFocus={onTriggerFocus}\n        className={cn(\n          'relative m-0 box-border flex h-12 w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] border-0 pr-4 text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200',\n          leftIcon ? 'pl-10' : 'pl-4',\n          isEmpty\n            ? 'bg-[var(--empty-field-background)] text-[var(--chekin-color-gray-1)]'\n            : 'bg-transparent text-[var(--chekin-color-brand-navy)]',\n          disabled && !loading && 'cursor-not-allowed opacity-50',\n          loading && '!cursor-progress',\n        )}\n      >\n        {leftIcon && (\n          <span className=\"pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]\">\n            <span className=\"flex h-full w-10 items-center justify-center\">\n              {leftIcon}\n            </span>\n          </span>\n        )}\n        <span id={valueId} className=\"block min-w-0 flex-1 truncate text-left\">\n          {display}\n        </span>\n        <span className=\"pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n          <ChevronDown\n            size={16}\n            className={cn(\n              'transition-transform duration-200',\n              isOpen && 'rotate-180 text-[var(--chekin-color-brand-blue)]',\n            )}\n          />\n        </span>\n      </button>\n    );\n  }\n\n  return CountTrigger;\n}\n\nexport {createCountTrigger};\nexport type {CountTriggerOptions};\n","import * as React from 'react';\nimport {cn} from '../../lib/cn';\nimport {VisualCheckbox} from './VisualCheckbox';\n\ntype SelectAllRowProps = {\n  label: string;\n  checked: boolean;\n  disabled?: boolean;\n  onToggle: () => void;\n};\n\nfunction SelectAllRow({label, checked, disabled, onToggle}: SelectAllRowProps) {\n  return (\n    <button\n      type=\"button\"\n      onClick={onToggle}\n      disabled={disabled}\n      className={cn(\n        'flex w-full items-center gap-3 border-0 border-b border-[#f2f4f8] bg-white px-4 py-[14px] text-left text-[16px] font-bold leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors hover:bg-[var(--chekin-color-surface-pressed)]',\n        disabled && 'cursor-default opacity-40',\n      )}\n    >\n      <VisualCheckbox checked={checked} disabled={disabled} />\n      <span className=\"flex-1\">{label}</span>\n    </button>\n  );\n}\n\nexport {SelectAllRow};\nexport type {SelectAllRowProps};\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {useCombinedRef} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {HelpTooltip} from '../../help-tooltip';\nimport {useTextareaValueState} from './useTextareaValueState';\n\ntype TextareaProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'name'> & {\n  label?: React.ReactNode;\n  invalid?: boolean;\n  error?: string;\n  empty?: boolean;\n  optional?: boolean | string;\n  loading?: boolean;\n  tooltip?: React.ReactNode;\n  helperText?: string;\n  name?: string;\n  className?: string;\n  textareaClassName?: string;\n  minRows?: number;\n  maxRows?: number;\n  autosize?: boolean;\n};\n\nconst LINE_HEIGHT = 20;\nconst VERTICAL_PADDING = 32;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n  {\n    className,\n    textareaClassName,\n    label,\n    invalid,\n    error,\n    empty,\n    optional,\n    disabled,\n    readOnly,\n    loading,\n    tooltip,\n    name,\n    id,\n    helperText,\n    minRows = 3,\n    maxRows,\n    autosize = true,\n    value,\n    defaultValue,\n    onInput,\n    onChange,\n    onFocus,\n    onBlur,\n    ...textareaProps\n  },\n  ref,\n) {\n  const {textareaRef, isControlled, isEmpty, setNativeValue, syncValueState} =\n    useTextareaValueState({empty, value, defaultValue});\n  const combinedRef = useCombinedRef(ref, textareaRef);\n  const reactId = React.useId();\n  const textareaId = id ?? name ?? `dash-textarea-${reactId}`;\n  const {t} = useTranslation();\n\n  const isInvalid = Boolean(invalid || error);\n  const isBlocked = Boolean(disabled);\n\n  const resize = React.useCallback(() => {\n    const el = textareaRef.current;\n    if (!el || !autosize) return;\n    el.style.height = 'auto';\n    const minHeight = minRows * LINE_HEIGHT + VERTICAL_PADDING;\n    const maxHeight = maxRows ? maxRows * LINE_HEIGHT + VERTICAL_PADDING : Infinity;\n    const nextHeight = Math.min(Math.max(el.scrollHeight, minHeight), maxHeight);\n    el.style.height = `${nextHeight}px`;\n    el.style.overflowY = el.scrollHeight > nextHeight ? 'auto' : 'hidden';\n  }, [autosize, maxRows, minRows, textareaRef]);\n\n  React.useLayoutEffect(() => {\n    resize();\n  }, [resize, value]);\n\n  const handleInput = (event: React.FormEvent<HTMLTextAreaElement>) => {\n    resize();\n    onInput?.(event);\n  };\n\n  const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n    if (readOnly || disabled) return;\n    if (!isControlled) {\n      setNativeValue(event.currentTarget.value);\n    }\n    onChange?.(event);\n  };\n\n  const handleFocus = (event: React.FocusEvent<HTMLTextAreaElement>) => {\n    if (readOnly || disabled) return;\n    onFocus?.(event);\n    syncValueState();\n  };\n\n  const handleBlur = (event: React.FocusEvent<HTMLTextAreaElement>) => {\n    onBlur?.(event);\n    syncValueState();\n  };\n\n  return (\n    <div\n      className={cn(\n        'relative block min-h-[88px] w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)]',\n        isBlocked && 'cursor-not-allowed opacity-50',\n        loading && 'cursor-progress opacity-50',\n        className,\n      )}\n    >\n      {label && (\n        <label\n          htmlFor={textareaId}\n          className=\"mb-2 flex select-none items-center text-[length:var(--field-label-font-size)] font-[var(--field-label-font-weight)] text-[var(--chekin-color-brand-navy)]\"\n        >\n          {label}\n          {tooltip && (\n            <span className=\"ml-1 inline-flex\">\n              <HelpTooltip content={tooltip} size={16} />\n            </span>\n          )}\n        </label>\n      )}\n      <textarea\n        ref={combinedRef}\n        id={textareaId}\n        name={name}\n        value={value}\n        defaultValue={defaultValue}\n        rows={minRows}\n        disabled={isBlocked || loading}\n        readOnly={isBlocked || readOnly}\n        aria-invalid={isInvalid}\n        aria-busy={loading}\n        onInput={handleInput}\n        onChange={handleChange}\n        onFocus={handleFocus}\n        onBlur={handleBlur}\n        className={cn(\n          'm-0 box-border block w-full resize-none rounded-[6px] border bg-white px-4 py-4 text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors duration-100 ease-in-out',\n          'border-[var(--field-border)] placeholder:text-[length:var(--field-placeholder-font-size)] placeholder:font-[var(--field-placeholder-font-weight)] placeholder:text-[var(--chekin-color-gray-1)]',\n          !isBlocked && 'focus:border-[var(--field-border-focused)]',\n          isEmpty &&\n            'border-[var(--field-border)] bg-[var(--empty-field-background)] text-[var(--chekin-color-gray-1)]',\n          isInvalid &&\n            'border-[var(--field-border-invalid)] focus:border-[var(--field-border-invalid)]',\n          (readOnly || isBlocked) && 'cursor-default',\n          isBlocked && 'cursor-not-allowed',\n          loading && 'cursor-progress',\n          textareaClassName,\n        )}\n        style={\n          autosize ? {minHeight: minRows * LINE_HEIGHT + VERTICAL_PADDING} : undefined\n        }\n        {...textareaProps}\n      />\n      {error && (\n        <FieldErrorMessage\n          id={`${textareaId}-error`}\n          message={error}\n          className=\"mt-[1px] text-[14px]\"\n        />\n      )}\n      {!error && optional && (\n        <span className=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n          {typeof optional === 'string' ? optional : t('optional')}\n        </span>\n      )}\n      {!error && helperText && (\n        <span className=\"mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]\">\n          {helperText}\n        </span>\n      )}\n    </div>\n  );\n});\n\nexport {Textarea};\nexport type {TextareaProps};\n","import * as React from 'react';\n\ntype TextareaValue = React.TextareaHTMLAttributes<HTMLTextAreaElement>['value'];\ntype TextareaDefaultValue =\n  React.TextareaHTMLAttributes<HTMLTextAreaElement>['defaultValue'];\n\nconst isEmptyValue = (value: TextareaValue | TextareaDefaultValue) => {\n  if (value === undefined || value === null) return true;\n  return String(value).length === 0;\n};\n\nconst getTextareaEmptyState = ({\n  empty,\n  defaultValue,\n  value,\n}: {\n  empty?: boolean;\n  value?: TextareaValue;\n  defaultValue?: TextareaDefaultValue;\n}) => {\n  if (typeof empty !== 'undefined') return empty;\n  if (typeof value !== 'undefined') return isEmptyValue(value);\n  return isEmptyValue(defaultValue);\n};\n\nexport function useTextareaValueState({\n  empty,\n  value,\n  defaultValue,\n}: {\n  empty?: boolean;\n  value?: TextareaValue;\n  defaultValue?: TextareaDefaultValue;\n}) {\n  const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n  const isControlled = typeof empty !== 'undefined' || typeof value !== 'undefined';\n  const propsAreEmpty = getTextareaEmptyState({empty, value, defaultValue});\n  const [nativeIsEmpty, setNativeIsEmpty] = React.useState(propsAreEmpty);\n  const isEmpty = isControlled ? propsAreEmpty : nativeIsEmpty;\n\n  const setNativeValue = React.useCallback(\n    (nextValue: string) => {\n      if (isControlled) return;\n\n      const nextIsEmpty = nextValue.length === 0;\n      setNativeIsEmpty(prevIsEmpty =>\n        prevIsEmpty === nextIsEmpty ? prevIsEmpty : nextIsEmpty,\n      );\n    },\n    [isControlled],\n  );\n\n  const syncValueState = React.useCallback(() => {\n    if (!textareaRef.current) return;\n    setNativeValue(textareaRef.current.value);\n  }, [setNativeValue]);\n\n  // Form libraries can preload uncontrolled values through refs without props.\n  React.useLayoutEffect(() => {\n    syncValueState();\n  });\n\n  React.useEffect(() => {\n    const textarea = textareaRef.current;\n    const form = textarea?.form;\n\n    if (isControlled || !form) return;\n\n    const handleReset = () => {\n      if (typeof window !== 'undefined' && window.requestAnimationFrame) {\n        window.requestAnimationFrame(syncValueState);\n        return;\n      }\n\n      globalThis.setTimeout(syncValueState, 0);\n    };\n\n    form.addEventListener('reset', handleReset);\n    return () => form.removeEventListener('reset', handleReset);\n  }, [isControlled, syncValueState]);\n\n  return {\n    textareaRef,\n    isControlled,\n    isEmpty,\n    setNativeValue,\n    syncValueState,\n  };\n}\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {isMobileModalModeAvailable} from '../../lib/runtimeSettings';\nimport {useIsMobile, useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {Fieldset} from '../_fieldset';\nimport {AirbnbDatePickerContent} from '../../airbnb-fields/datepicker/DatePickerContent';\nimport {useDatePickerWheel} from '../../airbnb-fields/datepicker/useDatePickerWheel';\nimport {normalizeDateValue} from '../../airbnb-fields/datepicker/datePicker.utils';\nimport {useMonthCombobox} from './useMonthCombobox';\n\nconst MONTHS_IN_YEAR = 12;\n\nfunction getMonthLabels(locale: string) {\n  const formatter = new Intl.DateTimeFormat(locale, {month: 'long'});\n  return Array.from({length: MONTHS_IN_YEAR}, (_, monthIndex) =>\n    formatter.format(new Date(2024, monthIndex, 1)),\n  );\n}\n\nconst DAY_PATTERN = /^(0?[1-9]|[12]\\d|3[01])$/;\n// Allows empty, a single leading digit, or a complete 01–31 day — rejects out-of-range\n// partials like \"00\", \"32\" or \"44\" as they are typed.\nconst PARTIAL_DAY_PATTERN = /^([0-9]|0[1-9]|[12]\\d|3[01])?$/;\nconst PARTIAL_YEAR_PATTERN = /^[0-9]{0,4}$/;\nconst COMPLETE_YEAR_PATTERN = /^\\d{4}$/;\n\n// Accepted year window, expressed as offsets from the current year so the bounds\n// shift over time and never need a manual update (e.g. in 2026 → 1906–2076).\nconst MIN_YEAR_OFFSET = 120;\nconst MAX_YEAR_OFFSET = 50;\n\nfunction getYearBounds() {\n  const currentYear = new Date().getFullYear();\n  return {\n    minYear: currentYear - MIN_YEAR_OFFSET,\n    maxYear: currentYear + MAX_YEAR_OFFSET,\n  };\n}\n\ntype DatepickerDate = Date | null;\n\ntype DatepickerSubfield = 'day' | 'month' | 'year';\n\ntype DatepickerHandle = {\n  getDayValue: () => string;\n  getYearValue: () => string;\n  setDayValue: (value: string) => void;\n  setYearValue: (value: string) => void;\n  focus: () => void;\n};\n\ntype DatepickerProps = {\n  label?: string;\n  value?: DatepickerDate;\n  defaultValue?: DatepickerDate;\n  onChange?: (value: DatepickerDate, name?: string) => void;\n  onFocus?: React.FocusEventHandler<HTMLInputElement | HTMLButtonElement>;\n  onFieldFocus?: (subfield: DatepickerSubfield) => void;\n  onFieldBlur?: (subfield: DatepickerSubfield) => void;\n  name?: string;\n  invalid?: boolean;\n  error?: string;\n  disabled?: boolean;\n  readOnly?: boolean;\n  loading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  className?: string;\n  monthLabels?: string[];\n  dayPlaceholder?: string;\n  yearPlaceholder?: string;\n  monthPlaceholder?: string;\n  mobilePlaceholder?: string;\n  mobileTitle?: string;\n  doneLabel?: string;\n  hideErrorMessage?: boolean;\n  helperText?: string;\n  width?: number | string;\n  locale?: string;\n  minDate?: Date;\n  maxDate?: Date;\n  formatValue?: (date: Date) => string;\n};\n\nfunction isValidCalendarDate(year: number, monthIndex: number, day: number) {\n  const date = new Date(year, monthIndex, day);\n  return (\n    date.getFullYear() === year &&\n    date.getMonth() === monthIndex &&\n    date.getDate() === day\n  );\n}\n\nfunction getDaysInMonth(monthIndex: number, year: string): number {\n  const yearNum = COMPLETE_YEAR_PATTERN.test(year) ? parseInt(year, 10) : 2024;\n  return new Date(yearNum, monthIndex + 1, 0).getDate();\n}\n\nfunction clampDayToMonth(day: string, monthIndex: number | null, year: string): string {\n  if (!day || monthIndex === null) return day;\n  const dayNum = parseInt(day, 10);\n  if (Number.isNaN(dayNum)) return day;\n  const max = getDaysInMonth(monthIndex, year);\n  return dayNum > max ? String(max) : day;\n}\n\nfunction partsFromDate(date: DatepickerDate) {\n  if (!date) return {day: '', monthIndex: null as number | null, year: ''};\n  return {\n    day: String(date.getDate()),\n    monthIndex: date.getMonth(),\n    year: String(date.getFullYear()),\n  };\n}\n\nfunction datepickerDatesEqual(a: DatepickerDate, b: DatepickerDate): boolean {\n  if (!(a instanceof Date) || !(b instanceof Date)) return a === b;\n  return a.getTime() === b.getTime();\n}\n\nfunction isYearInRange(yearNum: number, minYear: number, maxYear: number): boolean {\n  return yearNum >= minYear && yearNum <= maxYear;\n}\n\nfunction dateFromParts(\n  day: string,\n  monthIndex: number | null,\n  year: string,\n  minYear: number,\n  maxYear: number,\n): Date | null {\n  if (!day || monthIndex === null || !year) return null;\n  if (!DAY_PATTERN.test(day) || !COMPLETE_YEAR_PATTERN.test(year)) return null;\n  const dayNum = parseInt(day, 10);\n  const yearNum = parseInt(year, 10);\n  if (!isYearInRange(yearNum, minYear, maxYear)) return null;\n  if (!isValidCalendarDate(yearNum, monthIndex, dayNum)) return null;\n  return new Date(yearNum, monthIndex, dayNum);\n}\n\nconst Datepicker = React.forwardRef<DatepickerHandle, DatepickerProps>(\n  function Datepicker(\n    {\n      label,\n      value,\n      defaultValue,\n      onChange,\n      onFocus,\n      onFieldFocus,\n      onFieldBlur,\n      name,\n      invalid,\n      error,\n      disabled,\n      readOnly,\n      loading,\n      optional,\n      tooltip,\n      className,\n      monthLabels,\n      dayPlaceholder = 'DD',\n      yearPlaceholder = 'YYYY',\n      monthPlaceholder,\n      mobilePlaceholder,\n      mobileTitle,\n      doneLabel,\n      hideErrorMessage,\n      helperText,\n      width,\n      locale,\n      minDate,\n      maxDate,\n      formatValue,\n    },\n    ref,\n  ) {\n    const containerRef = React.useRef<HTMLDivElement>(null);\n    const dayInputRef = React.useRef<HTMLInputElement>(null);\n    const monthInputRef = React.useRef<HTMLInputElement>(null);\n    const yearInputRef = React.useRef<HTMLInputElement>(null);\n    const mobileTriggerRef = React.useRef<HTMLButtonElement>(null);\n    const reactId = React.useId();\n    const baseId = name ?? `dash-datepicker-${reactId}`;\n    const dayId = `${baseId}-day`;\n    const monthId = `${baseId}-month`;\n    const yearId = `${baseId}-year`;\n    const labelId = `${baseId}-label`;\n    const errorId = `${baseId}-error`;\n    const wheelBaseId = `${baseId}-wheel`;\n\n    const {t, i18n} = useTranslation();\n    const resolvedLocale = locale ?? i18n.resolvedLanguage ?? i18n.language ?? 'en-US';\n    const resolvedMonthLabels = React.useMemo(\n      () => monthLabels ?? getMonthLabels(resolvedLocale),\n      [resolvedLocale, monthLabels],\n    );\n    const resolvedMonthPlaceholder = monthPlaceholder ?? t('month');\n    const resolvedDoneLabel = doneLabel ?? t('done');\n\n    const isControlled = value !== undefined;\n    const initialParts = React.useMemo(\n      () => partsFromDate(normalizeDateValue(value) ?? normalizeDateValue(defaultValue)),\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      [],\n    );\n\n    const [day, setDay] = React.useState<string>(initialParts.day);\n    const [monthIndex, setMonthIndex] = React.useState<number | null>(\n      initialParts.monthIndex,\n    );\n    const [year, setYear] = React.useState<string>(initialParts.year);\n    const [isWheelOpen, setIsWheelOpen] = React.useState(false);\n    const [focusedField, setFocusedField] = React.useState<\n      'day' | 'month' | 'year' | null\n    >(null);\n    const isMobile = useIsMobile() && isMobileModalModeAvailable();\n\n    const emitChangeRef = React.useRef<\n      (nextDay: string, nextMonth: number | null, nextYear: string) => void\n    >(() => {});\n    // The last date we emitted upstream. Lets the controlled-value sync ignore our\n    // own emissions so typing a partial date (e.g. mid-edit year) is not wiped out\n    // when the parent reflects the in-progress `null` back as `value`.\n    const lastEmittedRef = React.useRef<DatepickerDate>(normalizeDateValue(value));\n    const dayStateRef = React.useRef(day);\n    const yearStateRef = React.useRef(year);\n    const monthIndexRef = React.useRef(monthIndex);\n    dayStateRef.current = day;\n    yearStateRef.current = year;\n    monthIndexRef.current = monthIndex;\n\n    React.useImperativeHandle(\n      ref,\n      () => ({\n        focus: () => {\n          const focusable =\n            mobileTriggerRef.current ??\n            dayInputRef.current ??\n            monthInputRef.current ??\n            yearInputRef.current;\n          if (focusable) {\n            focusable.focus();\n          } else {\n            containerRef.current?.scrollIntoView({block: 'center'});\n          }\n        },\n        getDayValue: () => dayStateRef.current,\n        getYearValue: () => yearStateRef.current,\n        setDayValue: (next: string) => {\n          if (!PARTIAL_DAY_PATTERN.test(next)) return;\n          const month = monthIndexRef.current;\n          if (\n            month !== null &&\n            next &&\n            parseInt(next, 10) > getDaysInMonth(month, yearStateRef.current)\n          ) {\n            return;\n          }\n          setDay(next);\n          emitChangeRef.current(next, month, yearStateRef.current);\n        },\n        setYearValue: (next: string) => {\n          if (!PARTIAL_YEAR_PATTERN.test(next)) return;\n          const clampedDay = clampDayToMonth(\n            dayStateRef.current,\n            monthIndexRef.current,\n            next,\n          );\n          if (clampedDay !== dayStateRef.current) setDay(clampedDay);\n          setYear(next);\n          emitChangeRef.current(clampedDay, monthIndexRef.current, next);\n        },\n      }),\n      [],\n    );\n\n    React.useEffect(() => {\n      if (!isControlled) return;\n      const incoming = normalizeDateValue(value);\n      // Skip when the parent is merely echoing back the value we just emitted —\n      // otherwise an in-progress (incomplete → null) edit clears the whole field.\n      if (datepickerDatesEqual(incoming, lastEmittedRef.current)) return;\n      lastEmittedRef.current = incoming;\n      const next = partsFromDate(incoming);\n      setDay(next.day);\n      setMonthIndex(next.monthIndex);\n      setYear(next.year);\n    }, [isControlled, value]);\n\n    const {minYear, maxYear} = React.useMemo(() => getYearBounds(), []);\n\n    const yearError = React.useMemo(() => {\n      if (year.length < 4) return null;\n      const yearNum = parseInt(year, 10);\n      if (!isYearInRange(yearNum, minYear, maxYear)) {\n        return t('year_out_of_range', {min: minYear, max: maxYear});\n      }\n      return null;\n    }, [year, minYear, maxYear, t]);\n\n    const resolvedError = error || yearError || undefined;\n\n    const isEmpty = !day && monthIndex === null && !year;\n    const isBlocked = Boolean(disabled) || Boolean(loading);\n    const isInvalid = Boolean(invalid || resolvedError);\n    const wrapperWidth = toCssSize(width);\n    const errorDescribedBy = resolvedError && !hideErrorMessage ? errorId : undefined;\n\n    const currentDate = React.useMemo(\n      () => dateFromParts(day, monthIndex, year, minYear, maxYear),\n      [day, monthIndex, year, minYear, maxYear],\n    );\n\n    const emitChange = React.useCallback(\n      (nextDay: string, nextMonth: number | null, nextYear: string) => {\n        const date = dateFromParts(nextDay, nextMonth, nextYear, minYear, maxYear);\n        lastEmittedRef.current = date;\n        onChange?.(date, name);\n      },\n      [name, onChange, minYear, maxYear],\n    );\n    emitChangeRef.current = emitChange;\n\n    const commitMonth = React.useCallback(\n      (index: number | null) => {\n        const clampedDay = clampDayToMonth(day, index, year);\n        if (clampedDay !== day) setDay(clampedDay);\n        setMonthIndex(index);\n        emitChange(clampedDay, index, year);\n      },\n      [day, emitChange, year],\n    );\n\n    const handleMonthSelect = React.useCallback(\n      (index: number) => {\n        commitMonth(index);\n        yearInputRef.current?.focus();\n      },\n      [commitMonth],\n    );\n\n    const handleMonthClear = React.useCallback(() => commitMonth(null), [commitMonth]);\n\n    const monthCombobox = useMonthCombobox({\n      monthLabels: resolvedMonthLabels,\n      monthIndex,\n      isFieldFocused: focusedField === 'month',\n      disabled: isBlocked,\n      onSelect: handleMonthSelect,\n      onCommit: commitMonth,\n      onClear: handleMonthClear,\n    });\n\n    const isFocused = focusedField !== null || monthCombobox.isOpen || isWheelOpen;\n\n    useOutsideClick({\n      elementRef: containerRef,\n      onOutsideClick: () => monthCombobox.setIsOpen(false),\n      isDisabled: !monthCombobox.isOpen || isMobile,\n    });\n\n    const handleDayChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n      const next = event.target.value;\n      if (!PARTIAL_DAY_PATTERN.test(next)) return;\n      if (\n        monthIndex !== null &&\n        next &&\n        parseInt(next, 10) > getDaysInMonth(monthIndex, year)\n      ) {\n        return;\n      }\n      setDay(next);\n      emitChange(next, monthIndex, year);\n      if (next.length === 2 && DAY_PATTERN.test(next)) {\n        monthInputRef.current?.focus();\n      }\n    };\n\n    const handleYearChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n      const next = event.target.value;\n      if (!PARTIAL_YEAR_PATTERN.test(next)) return;\n      const clampedDay = clampDayToMonth(day, monthIndex, next);\n      if (clampedDay !== day) setDay(clampedDay);\n      setYear(next);\n      emitChange(clampedDay, monthIndex, next);\n    };\n\n    const focusDayInput = React.useCallback(() => {\n      if (isBlocked || readOnly) return;\n      dayInputRef.current?.focus();\n    }, [isBlocked, readOnly]);\n\n    const openWheel = React.useCallback(() => {\n      if (isBlocked || readOnly) return;\n      setIsWheelOpen(true);\n    }, [isBlocked, readOnly]);\n\n    const closeWheel = React.useCallback(() => {\n      setIsWheelOpen(false);\n      mobileTriggerRef.current?.focus();\n    }, []);\n\n    const showCoverage = isEmpty && !isFocused && !isMobile;\n\n    const resolvedMinDate = React.useMemo(\n      () => normalizeDateValue(minDate) ?? undefined,\n      [minDate],\n    );\n    const resolvedMaxDate = React.useMemo(\n      () => normalizeDateValue(maxDate) ?? undefined,\n      [maxDate],\n    );\n\n    const wheel = useDatePickerWheel({\n      isOpen: isWheelOpen,\n      value: currentDate,\n      defaultValue: null,\n      minDate: resolvedMinDate,\n      maxDate: resolvedMaxDate,\n    });\n\n    const handleWheelDone = React.useCallback(() => {\n      const next = wheel.draftDate;\n      setDay(String(next.getDate()));\n      setMonthIndex(next.getMonth());\n      setYear(String(next.getFullYear()));\n      lastEmittedRef.current = next;\n      onChange?.(next, name);\n      setIsWheelOpen(false);\n      mobileTriggerRef.current?.focus();\n    }, [name, onChange, wheel.draftDate]);\n\n    const defaultFormatValue = React.useCallback(\n      (date: Date) =>\n        `${date.getDate()} ${resolvedMonthLabels[date.getMonth()]} ${date.getFullYear()}`,\n      [resolvedMonthLabels],\n    );\n\n    const triggerText = currentDate\n      ? (formatValue ?? defaultFormatValue)(currentDate)\n      : undefined;\n\n    const monthListboxId = `${monthId}-listbox`;\n    const getMonthOptionId = (index: number) => `${monthId}-option-${index}`;\n\n    const monthPanelContent =\n      monthCombobox.filteredMonths.length === 0 ? (\n        <div className=\"px-4 py-3 text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n          {t('no_options')}\n        </div>\n      ) : (\n        <ul\n          id={monthListboxId}\n          role=\"listbox\"\n          aria-labelledby={labelId}\n          className=\"m-0 max-h-[260px] list-none overflow-y-auto p-1\"\n        >\n          {monthCombobox.filteredMonths.map((option, position) => {\n            const isSelected = option.index === monthIndex;\n            const isHighlighted = position === monthCombobox.highlightIndex;\n            return (\n              <li key={option.index} role=\"presentation\">\n                <button\n                  id={getMonthOptionId(option.index)}\n                  type=\"button\"\n                  role=\"option\"\n                  aria-selected={isSelected}\n                  tabIndex={-1}\n                  onMouseDown={event => event.preventDefault()}\n                  onMouseMove={() => monthCombobox.setHighlightIndex(position)}\n                  onClick={() => monthCombobox.selectMonth(option.index)}\n                  className={cn(\n                    'flex w-full items-center justify-start rounded-md border-0 bg-transparent px-3 py-[10px] text-left text-[16px] font-medium text-[var(--chekin-color-brand-navy)] outline-none transition-colors',\n                    isHighlighted &&\n                      'bg-[var(--chekin-color-surface-pressed)] text-[var(--chekin-color-brand-blue)]',\n                    isSelected && 'font-bold',\n                  )}\n                >\n                  {option.label}\n                </button>\n              </li>\n            );\n          })}\n        </ul>\n      );\n\n    const subInputClass = cn(\n      'm-0 box-border h-full w-full min-w-0 border-0 bg-transparent text-center text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[length:var(--field-placeholder-font-size)] placeholder:font-[var(--field-placeholder-font-weight)] placeholder:text-[var(--chekin-color-gray-1)]',\n      isBlocked && 'cursor-not-allowed',\n      loading && 'cursor-progress',\n    );\n\n    return (\n      <div\n        ref={containerRef}\n        className={cn(\n          'relative w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)]',\n          disabled && 'cursor-not-allowed opacity-50',\n          loading && 'cursor-progress opacity-50',\n          className,\n        )}\n        style={wrapperWidth ? {width: wrapperWidth} : undefined}\n      >\n        <div className=\"relative min-h-[var(--field-min-height,48px)] w-full\">\n          <div className=\"relative w-full\">\n            {isMobile ? (\n              <button\n                ref={mobileTriggerRef}\n                id={dayId}\n                type=\"button\"\n                aria-haspopup=\"dialog\"\n                aria-expanded={isWheelOpen}\n                aria-labelledby={labelId}\n                aria-invalid={isInvalid}\n                aria-describedby={errorDescribedBy}\n                aria-busy={loading}\n                disabled={isBlocked || readOnly}\n                onClick={openWheel}\n                onFocus={onFocus}\n                className={cn(\n                  'relative m-0 box-border flex h-12 w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] border-0 px-4 text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200',\n                  triggerText\n                    ? 'bg-transparent text-[var(--chekin-color-brand-navy)]'\n                    : 'bg-[var(--empty-field-background)] text-[var(--chekin-color-gray-1)]',\n                  (isBlocked || readOnly) && 'cursor-not-allowed',\n                )}\n              >\n                <span className=\"block min-w-0 flex-1 truncate text-left\">\n                  {triggerText ?? (isWheelOpen ? mobilePlaceholder : null)}\n                </span>\n                <span className=\"pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n                  <ChevronDown\n                    size={16}\n                    className={cn(\n                      'transition-transform duration-200',\n                      isWheelOpen && 'rotate-180 text-[var(--chekin-color-brand-blue)]',\n                    )}\n                  />\n                </span>\n              </button>\n            ) : (\n              <div\n                className={cn(\n                  'relative box-border grid h-12 w-full grid-cols-[minmax(0,1fr)_minmax(96px,140px)_minmax(0,1fr)] items-center rounded-[6px] text-[16px] font-medium text-[var(--chekin-color-brand-navy)]',\n                )}\n              >\n                <div className=\"flex h-full min-w-0 items-center px-2\">\n                  <input\n                    ref={dayInputRef}\n                    id={dayId}\n                    type=\"text\"\n                    inputMode=\"numeric\"\n                    autoComplete=\"off\"\n                    name={name ? `${name}-day` : undefined}\n                    value={day}\n                    placeholder={dayPlaceholder}\n                    disabled={isBlocked}\n                    readOnly={readOnly}\n                    aria-invalid={isInvalid}\n                    aria-describedby={errorDescribedBy}\n                    aria-labelledby={labelId}\n                    onChange={handleDayChange}\n                    onFocus={event => {\n                      onFocus?.(event);\n                      onFieldFocus?.('day');\n                      setFocusedField('day');\n                    }}\n                    onBlur={() => {\n                      onFieldBlur?.('day');\n                      setFocusedField(null);\n                    }}\n                    maxLength={2}\n                    className={subInputClass}\n                  />\n                </div>\n                <div className=\"relative flex h-full min-w-0 items-center gap-1 px-2 before:absolute before:inset-y-3 before:left-0 before:w-px before:bg-[var(--chekin-color-gray-3)] before:content-[''] after:absolute after:inset-y-3 after:right-0 after:w-px after:bg-[var(--chekin-color-gray-3)] after:content-[''] sm:px-3\">\n                  <input\n                    ref={monthInputRef}\n                    id={monthId}\n                    type=\"text\"\n                    role=\"combobox\"\n                    autoComplete=\"off\"\n                    aria-haspopup=\"listbox\"\n                    aria-expanded={monthCombobox.isOpen}\n                    aria-controls={monthListboxId}\n                    aria-autocomplete=\"list\"\n                    aria-activedescendant={\n                      monthCombobox.highlightIndex >= 0 &&\n                      monthCombobox.filteredMonths[monthCombobox.highlightIndex]\n                        ? getMonthOptionId(\n                            monthCombobox.filteredMonths[monthCombobox.highlightIndex]\n                              .index,\n                          )\n                        : undefined\n                    }\n                    aria-labelledby={labelId}\n                    aria-invalid={isInvalid}\n                    aria-describedby={errorDescribedBy}\n                    name={name ? `${name}-month` : undefined}\n                    value={monthCombobox.inputValue}\n                    placeholder={resolvedMonthPlaceholder}\n                    disabled={isBlocked}\n                    readOnly={readOnly}\n                    onChange={monthCombobox.handleInputChange}\n                    onFocus={event => {\n                      onFocus?.(event);\n                      onFieldFocus?.('month');\n                      setFocusedField('month');\n                      if (!isBlocked && !readOnly) {\n                        monthCombobox.setIsOpen(true);\n                        monthInputRef.current?.select();\n                      }\n                    }}\n                    onBlur={() => {\n                      onFieldBlur?.('month');\n                      setFocusedField(null);\n                      monthCombobox.commitInput();\n                    }}\n                    onClick={() => {\n                      if (!isBlocked && !readOnly) monthCombobox.setIsOpen(true);\n                    }}\n                    onKeyDown={monthCombobox.handleInputKeyDown}\n                    className={cn(\n                      'm-0 box-border h-full w-full min-w-0 border-0 bg-transparent text-center text-[16px] font-medium leading-5 outline-none placeholder:text-[length:var(--field-placeholder-font-size)] placeholder:font-[var(--field-placeholder-font-weight)] placeholder:text-[var(--chekin-color-gray-1)]',\n                      monthIndex !== null\n                        ? 'text-[var(--chekin-color-brand-navy)]'\n                        : 'text-[var(--chekin-color-gray-1)]',\n                      (isBlocked || readOnly) && 'cursor-not-allowed',\n                    )}\n                  />\n                  <ChevronDown\n                    size={14}\n                    onMouseDown={event => {\n                      event.preventDefault();\n                      if (isBlocked || readOnly) return;\n                      monthCombobox.setIsOpen(prev => !prev);\n                      monthInputRef.current?.focus();\n                    }}\n                    className={cn(\n                      'shrink-0 cursor-pointer text-[var(--chekin-color-gray-2)] transition-transform duration-200',\n                      monthCombobox.isOpen &&\n                        'rotate-180 text-[var(--chekin-color-brand-blue)]',\n                    )}\n                  />\n                </div>\n                <div className=\"flex h-full min-w-0 items-center px-2\">\n                  <input\n                    ref={yearInputRef}\n                    id={yearId}\n                    type=\"text\"\n                    inputMode=\"numeric\"\n                    autoComplete=\"off\"\n                    name={name ? `${name}-year` : undefined}\n                    value={year}\n                    placeholder={yearPlaceholder}\n                    disabled={isBlocked}\n                    readOnly={readOnly}\n                    aria-invalid={isInvalid}\n                    aria-describedby={errorDescribedBy}\n                    aria-labelledby={labelId}\n                    onChange={handleYearChange}\n                    onFocus={event => {\n                      onFocus?.(event);\n                      onFieldFocus?.('year');\n                      setFocusedField('year');\n                    }}\n                    onBlur={() => {\n                      onFieldBlur?.('year');\n                      setFocusedField(null);\n                    }}\n                    maxLength={4}\n                    className={subInputClass}\n                  />\n                </div>\n              </div>\n            )}\n            {showCoverage && (\n              <div\n                className=\"absolute inset-0 cursor-text rounded-[6px] bg-[var(--empty-field-background)]\"\n                onClick={focusDayInput}\n                aria-hidden=\"true\"\n              />\n            )}\n            <Fieldset\n              isFocused={isFocused}\n              invalid={isInvalid}\n              isEmpty={isEmpty}\n              isActivated={!isEmpty || isFocused}\n              disabled={disabled}\n              loading={loading}\n              readOnly={readOnly}\n              htmlFor={dayId}\n              labelId={labelId}\n              legend={label}\n              label={label}\n              tooltip={tooltip}\n              onClick={isMobile ? openWheel : showCoverage ? focusDayInput : undefined}\n            />\n            {monthCombobox.isOpen && !isMobile && (\n              <div className=\"absolute left-0 right-0 top-full z-30 mx-auto mt-1 w-full max-w-[260px] overflow-hidden rounded-md bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)] sm:left-1/2 sm:right-auto sm:-translate-x-1/2\">\n                {monthPanelContent}\n              </div>\n            )}\n          </div>\n          {isMobile && (\n            <AirbnbDatePickerContent\n              baseId={wheelBaseId}\n              open={isWheelOpen}\n              isMobile\n              label={label ?? t('pick_date')}\n              title={mobileTitle ?? label ?? t('pick_date')}\n              doneLabel={resolvedDoneLabel}\n              monthLabels={wheel.months.map(m => resolvedMonthLabels[m] ?? '')}\n              days={wheel.days}\n              years={wheel.years}\n              monthIndex={wheel.monthIndex}\n              dayIndex={wheel.dayIndex}\n              yearIndex={wheel.yearIndex}\n              monthScrollTop={wheel.monthScrollTop}\n              dayScrollTop={wheel.dayScrollTop}\n              yearScrollTop={wheel.yearScrollTop}\n              monthListRef={wheel.monthListRef}\n              dayListRef={wheel.dayListRef}\n              yearListRef={wheel.yearListRef}\n              onOpenChange={next => (next ? openWheel() : closeWheel())}\n              onDone={handleWheelDone}\n              onColumnScroll={wheel.handleColumnScroll}\n              onColumnKeyDown={wheel.handleColumnKeyDown}\n              onOptionSelect={wheel.handleOptionSelect}\n            />\n          )}\n          {!resolvedError && optional && (\n            <span className=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n              {typeof optional === 'string' ? optional : t('optional')}\n            </span>\n          )}\n          {!resolvedError && helperText && (\n            <span className=\"mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]\">\n              {helperText}\n            </span>\n          )}\n          {resolvedError && !hideErrorMessage && (\n            <FieldErrorMessage\n              id={errorId}\n              message={resolvedError}\n              className=\"mt-[1px] text-[14px]\"\n            />\n          )}\n        </div>\n      </div>\n    );\n  },\n);\n\nexport {Datepicker};\nexport type {DatepickerProps, DatepickerDate, DatepickerSubfield, DatepickerHandle};\n","import * as React from 'react';\nimport {\n  buildDateFromParts,\n  getDaysInMonth,\n  getYearRange,\n  resolveInitialDate,\n  stripTime,\n} from './datePicker.utils';\n\nconst DATE_PICKER_OPTION_HEIGHT = 32;\nconst DATE_PICKER_VISIBLE_OPTIONS = 7;\nconst DATE_PICKER_PICKER_HEIGHT = DATE_PICKER_OPTION_HEIGHT * DATE_PICKER_VISIBLE_OPTIONS;\nconst DATE_PICKER_WHEEL_BUFFER_OPTIONS = 3;\nconst DATE_PICKER_SCROLL_SETTLE_DELAY = 140;\n\ntype DatePickerColumn = 'month' | 'day' | 'year';\n\ntype UseDatePickerWheelParams = {\n  isOpen: boolean;\n  value?: Date | null;\n  defaultValue?: Date | null;\n  minDate?: Date;\n  maxDate?: Date;\n};\n\nfunction getAllowedMonths(year: number, minDate?: Date, maxDate?: Date) {\n  const minMonth = minDate && minDate.getFullYear() === year ? minDate.getMonth() : 0;\n  const maxMonth = maxDate && maxDate.getFullYear() === year ? maxDate.getMonth() : 11;\n\n  return Array.from({length: maxMonth - minMonth + 1}, (_, index) => minMonth + index);\n}\n\nfunction getAllowedDays(year: number, month: number, minDate?: Date, maxDate?: Date) {\n  const minDay =\n    minDate && minDate.getFullYear() === year && minDate.getMonth() === month\n      ? minDate.getDate()\n      : 1;\n  const maxDay =\n    maxDate && maxDate.getFullYear() === year && maxDate.getMonth() === month\n      ? maxDate.getDate()\n      : getDaysInMonth(year, month);\n\n  return Array.from({length: maxDay - minDay + 1}, (_, index) => minDay + index);\n}\n\nfunction resolveBoundedDateParts(\n  year: number,\n  month: number,\n  day: number,\n  minDate?: Date,\n  maxDate?: Date,\n) {\n  const allowedMonths = getAllowedMonths(year, minDate, maxDate);\n  const boundedMonth = Math.min(\n    Math.max(month, allowedMonths[0] ?? month),\n    allowedMonths[allowedMonths.length - 1] ?? month,\n  );\n  const allowedDays = getAllowedDays(year, boundedMonth, minDate, maxDate);\n  const boundedDay = Math.min(\n    Math.max(day, allowedDays[0] ?? day),\n    allowedDays[allowedDays.length - 1] ?? day,\n  );\n\n  return buildDateFromParts(year, boundedMonth, boundedDay);\n}\n\nfunction getOptionScrollTop(index: number) {\n  return index * DATE_PICKER_OPTION_HEIGHT;\n}\n\nfunction setListScrollTop(\n  list: HTMLDivElement | null,\n  top: number,\n  behavior: ScrollBehavior,\n) {\n  if (!list) return;\n\n  if (behavior === 'smooth') {\n    list.scrollTo({top, behavior});\n    return;\n  }\n\n  list.scrollTop = top;\n}\n\nfunction useDatePickerWheel({\n  isOpen,\n  value,\n  defaultValue,\n  minDate,\n  maxDate,\n}: UseDatePickerWheelParams) {\n  const years = React.useMemo(() => getYearRange(minDate, maxDate), [maxDate, minDate]);\n  const [draftDate, setDraftDate] = React.useState(() =>\n    resolveInitialDate({value, defaultValue, minDate, maxDate}),\n  );\n  const draftYear = draftDate.getFullYear();\n  const draftMonth = draftDate.getMonth();\n  const [monthScrollTop, setMonthScrollTop] = React.useState(0);\n  const [dayScrollTop, setDayScrollTop] = React.useState(0);\n  const [yearScrollTop, setYearScrollTop] = React.useState(0);\n  const monthListRef = React.useRef<HTMLDivElement>(null);\n  const dayListRef = React.useRef<HTMLDivElement>(null);\n  const yearListRef = React.useRef<HTMLDivElement>(null);\n  const settleTimeoutsRef = React.useRef<Partial<Record<DatePickerColumn, number>>>({});\n  const animationFramesRef = React.useRef<Partial<Record<DatePickerColumn, number>>>({});\n  const columnRefs = React.useMemo(\n    () => ({\n      month: monthListRef,\n      day: dayListRef,\n      year: yearListRef,\n    }),\n    [],\n  );\n\n  const setColumnScrollTop = React.useCallback(\n    (column: DatePickerColumn, nextScrollTop: number) => {\n      if (column === 'month') {\n        setMonthScrollTop(nextScrollTop);\n        return;\n      }\n\n      if (column === 'day') {\n        setDayScrollTop(nextScrollTop);\n        return;\n      }\n\n      setYearScrollTop(nextScrollTop);\n    },\n    [],\n  );\n\n  const clearSettleTimeout = React.useCallback((column: DatePickerColumn) => {\n    const timeoutId = settleTimeoutsRef.current[column];\n    if (timeoutId === undefined) return;\n\n    window.clearTimeout(timeoutId);\n    delete settleTimeoutsRef.current[column];\n  }, []);\n\n  const clearAnimationFrame = React.useCallback((column: DatePickerColumn) => {\n    const frameId = animationFramesRef.current[column];\n    if (frameId === undefined) return;\n\n    window.cancelAnimationFrame(frameId);\n    delete animationFramesRef.current[column];\n  }, []);\n\n  React.useEffect(\n    () => () => {\n      (['month', 'day', 'year'] as const).forEach(column => {\n        clearSettleTimeout(column);\n        clearAnimationFrame(column);\n      });\n    },\n    [clearAnimationFrame, clearSettleTimeout],\n  );\n\n  React.useEffect(() => {\n    if (isOpen) return;\n\n    setDraftDate(resolveInitialDate({value, defaultValue, minDate, maxDate}));\n  }, [defaultValue, isOpen, maxDate, minDate, value]);\n\n  const months = React.useMemo(\n    () => getAllowedMonths(draftYear, minDate, maxDate),\n    [draftYear, maxDate, minDate],\n  );\n  const days = React.useMemo(\n    () => getAllowedDays(draftYear, draftMonth, minDate, maxDate),\n    [draftMonth, draftYear, maxDate, minDate],\n  );\n\n  const monthIndex = months.findIndex(month => month === draftMonth);\n  const dayIndex = days.findIndex(day => day === draftDate.getDate());\n  const yearIndex = years.findIndex(year => year === draftYear);\n\n  const syncScrollPositions = React.useCallback(\n    (nextDate: Date, behavior: ScrollBehavior = 'auto') => {\n      const nextMonths = getAllowedMonths(nextDate.getFullYear(), minDate, maxDate);\n      const nextMonthIndex = nextMonths.findIndex(month => month === nextDate.getMonth());\n      const nextDays = getAllowedDays(\n        nextDate.getFullYear(),\n        nextDate.getMonth(),\n        minDate,\n        maxDate,\n      );\n      const nextDayIndex = nextDays.findIndex(day => day === nextDate.getDate());\n      const nextMonthTop = getOptionScrollTop(Math.max(nextMonthIndex, 0));\n      const nextDayTop = getOptionScrollTop(Math.max(nextDayIndex, 0));\n      const nextYearIndex = years.findIndex(year => year === nextDate.getFullYear());\n      const nextYearTop = getOptionScrollTop(Math.max(nextYearIndex, 0));\n\n      setMonthScrollTop(nextMonthTop);\n      setDayScrollTop(nextDayTop);\n      setYearScrollTop(nextYearTop);\n\n      setListScrollTop(monthListRef.current, nextMonthTop, behavior);\n      setListScrollTop(dayListRef.current, nextDayTop, behavior);\n      setListScrollTop(yearListRef.current, nextYearTop, behavior);\n    },\n    [maxDate, minDate, years],\n  );\n\n  React.useLayoutEffect(() => {\n    if (!isOpen) return;\n\n    const nextDate = resolveInitialDate({value, defaultValue, minDate, maxDate});\n    setDraftDate(nextDate);\n\n    const frameId = window.requestAnimationFrame(() => {\n      syncScrollPositions(nextDate);\n    });\n\n    return () => {\n      window.cancelAnimationFrame(frameId);\n    };\n  }, [defaultValue, isOpen, maxDate, minDate, syncScrollPositions, value]);\n\n  const updateDraftDate = React.useCallback(\n    (\n      column: DatePickerColumn,\n      targetIndex: number,\n      behavior: ScrollBehavior = 'smooth',\n    ) => {\n      const currentDate = stripTime(draftDate);\n      const currentYear = currentDate.getFullYear();\n      const currentMonth = currentDate.getMonth();\n      const currentDay = currentDate.getDate();\n\n      let nextDate = currentDate;\n\n      if (column === 'month') {\n        const nextMonth = months[targetIndex];\n\n        if (nextMonth === undefined) {\n          return;\n        }\n\n        nextDate = resolveBoundedDateParts(\n          currentYear,\n          nextMonth,\n          currentDay,\n          minDate,\n          maxDate,\n        );\n      }\n\n      if (column === 'day') {\n        const nextDay = days[targetIndex];\n\n        if (nextDay === undefined) {\n          return;\n        }\n\n        nextDate = buildDateFromParts(currentYear, currentMonth, nextDay);\n      }\n\n      if (column === 'year') {\n        const nextYear = years[targetIndex];\n\n        if (nextYear === undefined) {\n          return;\n        }\n\n        nextDate = resolveBoundedDateParts(\n          nextYear,\n          currentMonth,\n          currentDay,\n          minDate,\n          maxDate,\n        );\n      }\n\n      setDraftDate(nextDate);\n      syncScrollPositions(nextDate, behavior);\n    },\n    [days, draftDate, maxDate, minDate, months, syncScrollPositions, years],\n  );\n\n  const settleColumnScroll = React.useCallback(\n    (column: DatePickerColumn) => {\n      const list = columnRefs[column].current;\n      if (!list) return;\n\n      const maxIndex =\n        column === 'month'\n          ? months.length - 1\n          : column === 'day'\n            ? days.length - 1\n            : years.length - 1;\n      const nextIndex = Math.max(\n        0,\n        Math.min(maxIndex, Math.round(list.scrollTop / DATE_PICKER_OPTION_HEIGHT)),\n      );\n\n      updateDraftDate(column, nextIndex, 'auto');\n    },\n    [columnRefs, days.length, months.length, updateDraftDate, years.length],\n  );\n\n  const scheduleScrollSettle = React.useCallback(\n    (column: DatePickerColumn) => {\n      clearSettleTimeout(column);\n      settleTimeoutsRef.current[column] = window.setTimeout(() => {\n        settleColumnScroll(column);\n      }, DATE_PICKER_SCROLL_SETTLE_DELAY);\n    },\n    [clearSettleTimeout, settleColumnScroll],\n  );\n\n  const handleColumnScroll = React.useCallback(\n    (column: DatePickerColumn) => {\n      const list = columnRefs[column].current;\n      if (!list) return;\n\n      const nextScrollTop = list.scrollTop;\n      clearAnimationFrame(column);\n\n      animationFramesRef.current[column] = window.requestAnimationFrame(() => {\n        setColumnScrollTop(column, nextScrollTop);\n        delete animationFramesRef.current[column];\n      });\n\n      scheduleScrollSettle(column);\n    },\n    [clearAnimationFrame, columnRefs, scheduleScrollSettle, setColumnScrollTop],\n  );\n\n  const handleOptionSelect = React.useCallback(\n    (column: DatePickerColumn, targetIndex: number) => {\n      updateDraftDate(column, targetIndex, 'smooth');\n    },\n    [updateDraftDate],\n  );\n\n  const focusAdjacentColumn = React.useCallback(\n    (column: DatePickerColumn, direction: -1 | 1) => {\n      const order: DatePickerColumn[] = ['month', 'day', 'year'];\n      const currentIndex = order.indexOf(column);\n      const targetColumn = order[currentIndex + direction];\n\n      if (!targetColumn) return;\n\n      columnRefs[targetColumn].current?.focus();\n    },\n    [columnRefs],\n  );\n\n  const handleColumnKeyDown = React.useCallback(\n    (column: DatePickerColumn, event: React.KeyboardEvent<HTMLDivElement>) => {\n      const currentIndex =\n        column === 'month' ? monthIndex : column === 'day' ? dayIndex : yearIndex;\n      const maxIndex =\n        column === 'month'\n          ? months.length - 1\n          : column === 'day'\n            ? days.length - 1\n            : years.length - 1;\n\n      if (event.key === 'ArrowDown') {\n        event.preventDefault();\n        updateDraftDate(column, Math.min(currentIndex + 1, maxIndex), 'smooth');\n        return;\n      }\n\n      if (event.key === 'ArrowUp') {\n        event.preventDefault();\n        updateDraftDate(column, Math.max(currentIndex - 1, 0), 'smooth');\n        return;\n      }\n\n      if (event.key === 'Home') {\n        event.preventDefault();\n        updateDraftDate(column, 0, 'smooth');\n        return;\n      }\n\n      if (event.key === 'End') {\n        event.preventDefault();\n        updateDraftDate(column, maxIndex, 'smooth');\n        return;\n      }\n\n      if (event.key === 'ArrowLeft') {\n        event.preventDefault();\n        focusAdjacentColumn(column, -1);\n        return;\n      }\n\n      if (event.key === 'ArrowRight') {\n        event.preventDefault();\n        focusAdjacentColumn(column, 1);\n      }\n    },\n    [\n      dayIndex,\n      days.length,\n      focusAdjacentColumn,\n      monthIndex,\n      months.length,\n      updateDraftDate,\n      yearIndex,\n      years.length,\n    ],\n  );\n\n  return {\n    dayIndex,\n    dayListRef,\n    dayScrollTop,\n    days,\n    draftDate,\n    handleColumnKeyDown,\n    handleColumnScroll,\n    handleOptionSelect,\n    monthIndex,\n    monthListRef,\n    months,\n    monthScrollTop,\n    yearIndex,\n    yearListRef,\n    yearScrollTop,\n    years,\n  };\n}\n\nexport {\n  DATE_PICKER_OPTION_HEIGHT,\n  DATE_PICKER_PICKER_HEIGHT,\n  DATE_PICKER_VISIBLE_OPTIONS,\n  DATE_PICKER_WHEEL_BUFFER_OPTIONS,\n  useDatePickerWheel,\n};\nexport type {DatePickerColumn};\n","const DISPLAY_PAD_LENGTH = 2;\nconst MONTHS_IN_YEAR = 12;\n\nfunction stripTime(date: Date) {\n  return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction isValidDate(value: Date | null | undefined): value is Date {\n  return value instanceof Date && !Number.isNaN(value.getTime());\n}\n\nfunction normalizeDateValue(value: unknown): Date | null {\n  if (value === null || value === undefined) {\n    return null;\n  }\n\n  if (value instanceof Date) {\n    return isValidDate(value) ? value : null;\n  }\n\n  if (typeof value === 'number') {\n    if (!Number.isFinite(value)) {\n      return null;\n    }\n\n    const date = new Date(value);\n\n    return isValidDate(date) ? date : null;\n  }\n\n  if (typeof value === 'string') {\n    const trimmed = value.trim();\n\n    if (trimmed === '') {\n      return null;\n    }\n\n    const date = new Date(trimmed);\n\n    return isValidDate(date) ? date : null;\n  }\n\n  return null;\n}\n\nfunction clampDate(date: Date, minDate?: Date, maxDate?: Date) {\n  const normalizedDate = stripTime(date);\n  const normalizedMinDate = isValidDate(minDate) ? stripTime(minDate) : null;\n  const normalizedMaxDate = isValidDate(maxDate) ? stripTime(maxDate) : null;\n\n  if (normalizedMinDate && normalizedDate < normalizedMinDate) {\n    return normalizedMinDate;\n  }\n\n  if (normalizedMaxDate && normalizedDate > normalizedMaxDate) {\n    return normalizedMaxDate;\n  }\n\n  return normalizedDate;\n}\n\nfunction resolveInitialDate(params: {\n  value?: Date | null;\n  defaultValue?: Date | null;\n  minDate?: Date;\n  maxDate?: Date;\n}) {\n  const {value, defaultValue, minDate, maxDate} = params;\n  const fallbackDate = [value, defaultValue].find(isValidDate) ?? new Date();\n\n  return clampDate(fallbackDate, minDate, maxDate);\n}\n\nfunction getMonthLabels(locale = 'en-US') {\n  const formatter = new Intl.DateTimeFormat(locale, {month: 'long'});\n\n  return Array.from({length: MONTHS_IN_YEAR}, (_, monthIndex) =>\n    formatter.format(new Date(2024, monthIndex, 1)),\n  );\n}\n\nfunction getDaysInMonth(year: number, monthIndex: number) {\n  return new Date(year, monthIndex + 1, 0).getDate();\n}\n\nfunction getYearRange(minDate?: Date, maxDate?: Date) {\n  const normalizedMin = isValidDate(minDate) ? stripTime(minDate) : null;\n  const normalizedMax = isValidDate(maxDate) ? stripTime(maxDate) : null;\n  const today = new Date();\n  const startYear = normalizedMin?.getFullYear() ?? 1900;\n  const endYear = normalizedMax?.getFullYear() ?? today.getFullYear() + 20;\n  const fromYear = Math.min(startYear, endYear);\n  const toYear = Math.max(startYear, endYear);\n\n  return Array.from({length: toYear - fromYear + 1}, (_, index) => fromYear + index);\n}\n\nfunction buildDateFromParts(year: number, monthIndex: number, day: number) {\n  const normalizedDay = Math.min(day, getDaysInMonth(year, monthIndex));\n\n  return new Date(year, monthIndex, normalizedDay);\n}\n\nfunction formatDateValue(date: Date) {\n  const day = String(date.getDate()).padStart(DISPLAY_PAD_LENGTH, '0');\n  const month = String(date.getMonth() + 1).padStart(DISPLAY_PAD_LENGTH, '0');\n  const year = String(date.getFullYear());\n\n  return `${day}/${month}/${year}`;\n}\n\nfunction formatDateInputValue(date: Date) {\n  const day = String(date.getDate()).padStart(DISPLAY_PAD_LENGTH, '0');\n  const month = String(date.getMonth() + 1).padStart(DISPLAY_PAD_LENGTH, '0');\n  const year = String(date.getFullYear());\n\n  return `${year}-${month}-${day}`;\n}\n\nfunction getWheelOptionStyles(index: number, scrollTop: number, optionHeight: number) {\n  const virtualCenterIndex = scrollTop / optionHeight;\n  const offsetFromCenter = index - virtualCenterIndex;\n  const distance = Math.abs(offsetFromCenter);\n  const normalizedDistance = Math.min(distance / 3.5, 1);\n  const centerInfluence = 1 - normalizedDistance;\n  const easedInfluence = 1 - normalizedDistance ** 1.65;\n  const rotation = Math.max(-42, Math.min(42, offsetFromCenter * 11));\n  const scale = 0.875 + easedInfluence * 0.125;\n  const scaleY = 0.66 + easedInfluence * 0.34;\n  const translateY = offsetFromCenter * 0.9;\n  const translateZ = Math.max(0, 14 - distance * 4.5);\n  const blur = (1 - easedInfluence) * 1.2;\n  const opacity = 0.12 + easedInfluence * 0.88;\n  const fontSize = 16 + easedInfluence * 6;\n  const isSelected = distance < 0.5;\n  const textShade = isSelected\n    ? Math.round(164 - centerInfluence * 117)\n    : Math.round(180 - easedInfluence * 60);\n\n  return {\n    distance,\n    style: {\n      height: `${optionHeight}px`,\n      lineHeight: `${optionHeight}px`,\n      fontSize: `${fontSize}px`,\n      color: `rgb(${textShade}, ${textShade}, ${textShade})`,\n      opacity,\n      transform: `perspective(1400px) translate3d(0, ${translateY}px, ${translateZ}px) rotateX(${rotation}deg) scale(${scale}, ${scaleY})`,\n      transformOrigin: 'center center',\n      filter: `blur(${blur}px)`,\n      willChange: 'transform, opacity, filter',\n    },\n  };\n}\n\nexport {\n  buildDateFromParts,\n  clampDate,\n  formatDateInputValue,\n  formatDateValue,\n  getDaysInMonth,\n  getMonthLabels,\n  getWheelOptionStyles,\n  getYearRange,\n  isValidDate,\n  normalizeDateValue,\n  resolveInitialDate,\n  stripTime,\n};\n","import * as React from 'react';\nimport {\n  DATE_PICKER_OPTION_HEIGHT,\n  DATE_PICKER_PICKER_HEIGHT,\n  DATE_PICKER_WHEEL_BUFFER_OPTIONS,\n  type DatePickerColumn,\n} from './useDatePickerWheel';\nimport {getWheelOptionStyles} from './datePicker.utils';\n\ntype AirbnbDatePickerWheelColumnProps = {\n  id: string;\n  label: string;\n  items: string[];\n  activeIndex: number;\n  scrollTop: number;\n  listRef: React.RefObject<HTMLDivElement>;\n  onScroll: (column: DatePickerColumn) => void;\n  onKeyDown: (\n    column: DatePickerColumn,\n    event: React.KeyboardEvent<HTMLDivElement>,\n  ) => void;\n  onOptionSelect: (column: DatePickerColumn, targetIndex: number) => void;\n  column: DatePickerColumn;\n};\n\nconst spacerHeight = DATE_PICKER_OPTION_HEIGHT * DATE_PICKER_WHEEL_BUFFER_OPTIONS;\n\nfunction AirbnbDatePickerWheelColumn({\n  id,\n  label,\n  items,\n  activeIndex,\n  scrollTop,\n  listRef,\n  onScroll,\n  onKeyDown,\n  onOptionSelect,\n  column,\n}: AirbnbDatePickerWheelColumnProps) {\n  return (\n    <div className=\"relative z-10 min-w-0\">\n      <div\n        id={id}\n        ref={listRef}\n        role=\"listbox\"\n        tabIndex={0}\n        aria-label={label}\n        aria-activedescendant={`${id}-option-${activeIndex}`}\n        onScroll={() => onScroll(column)}\n        onKeyDown={event => onKeyDown(column, event)}\n        className=\"snap-y snap-mandatory overflow-y-auto text-center outline-none [-ms-overflow-style:none] [mask-image:linear-gradient(to_bottom,transparent_0%,black_18%,black_82%,transparent_100%)] [scrollbar-width:none]\"\n        style={{\n          height: `${DATE_PICKER_PICKER_HEIGHT}px`,\n          WebkitOverflowScrolling: 'touch',\n        }}\n      >\n        <div style={{height: `${spacerHeight}px`}} />\n        {items.map((item, index) => {\n          const {style} = getWheelOptionStyles(\n            index,\n            scrollTop,\n            DATE_PICKER_OPTION_HEIGHT,\n          );\n\n          return (\n            <button\n              id={`${id}-option-${index}`}\n              key={`${column}-${item}-${index}`}\n              type=\"button\"\n              role=\"option\"\n              aria-selected={index === activeIndex}\n              tabIndex={-1}\n              onClick={() => onOptionSelect(column, index)}\n              className=\"block w-full snap-center px-2 text-center font-normal touch-manipulation\"\n              style={style}\n            >\n              {item}\n            </button>\n          );\n        })}\n        <div style={{height: `${spacerHeight}px`}} />\n      </div>\n    </div>\n  );\n}\n\nexport {AirbnbDatePickerWheelColumn};\n","import * as React from 'react';\nimport {Button} from '../../button';\nimport {Dialog, DialogContent, DialogDescription, DialogTitle} from '../../dialog';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../drawer';\nimport {AirbnbDatePickerWheelColumn} from './DatePickerWheelColumn';\nimport {type DatePickerColumn} from './useDatePickerWheel';\n\ntype AirbnbDatePickerContentProps = {\n  baseId: string;\n  open: boolean;\n  isMobile: boolean;\n  label: string;\n  title: string;\n  doneLabel: string;\n  monthLabels: string[];\n  days: number[];\n  years: number[];\n  monthIndex: number;\n  dayIndex: number;\n  yearIndex: number;\n  monthScrollTop: number;\n  dayScrollTop: number;\n  yearScrollTop: number;\n  monthListRef: React.RefObject<HTMLDivElement>;\n  dayListRef: React.RefObject<HTMLDivElement>;\n  yearListRef: React.RefObject<HTMLDivElement>;\n  onOpenChange: (nextOpen: boolean) => void;\n  onDone: () => void;\n  onColumnScroll: (column: DatePickerColumn) => void;\n  onColumnKeyDown: (\n    column: DatePickerColumn,\n    event: React.KeyboardEvent<HTMLDivElement>,\n  ) => void;\n  onOptionSelect: (column: DatePickerColumn, targetIndex: number) => void;\n};\n\nfunction AirbnbDatePickerBody({\n  baseId,\n  label,\n  doneLabel,\n  monthLabels,\n  days,\n  years,\n  monthIndex,\n  dayIndex,\n  yearIndex,\n  monthScrollTop,\n  dayScrollTop,\n  yearScrollTop,\n  monthListRef,\n  dayListRef,\n  yearListRef,\n  onColumnScroll,\n  onColumnKeyDown,\n  onOptionSelect,\n  onDone,\n}: Omit<AirbnbDatePickerContentProps, 'open' | 'isMobile' | 'title' | 'onOpenChange'>) {\n  return (\n    <div className=\"px-6 pb-4 pt-1 bg-white\">\n      <div className=\"relative overflow-hidden rounded-[24px]\">\n        <div className=\"pointer-events-none absolute inset-x-0 top-0 z-20 h-16 bg-gradient-to-b from-white via-white/80 to-transparent\" />\n        <div className=\"pointer-events-none absolute inset-x-0 bottom-0 z-20 h-16 bg-gradient-to-t from-white via-white/80 to-transparent\" />\n        <div\n          aria-hidden\n          className=\"pointer-events-none absolute inset-x-0 top-1/2 z-0 h-8 -translate-y-1/2 rounded-[12px] bg-black/[0.04]\"\n        />\n        <div className=\"relative grid grid-cols-[1.35fr_0.7fr_1fr] gap-1\">\n          <AirbnbDatePickerWheelColumn\n            id={`${baseId}-month`}\n            column=\"month\"\n            label={`${label} month`}\n            items={monthLabels}\n            activeIndex={monthIndex}\n            scrollTop={monthScrollTop}\n            listRef={monthListRef}\n            onScroll={onColumnScroll}\n            onKeyDown={onColumnKeyDown}\n            onOptionSelect={onOptionSelect}\n          />\n          <AirbnbDatePickerWheelColumn\n            id={`${baseId}-day`}\n            column=\"day\"\n            label={`${label} day`}\n            items={days.map(day => String(day))}\n            activeIndex={dayIndex}\n            scrollTop={dayScrollTop}\n            listRef={dayListRef}\n            onScroll={onColumnScroll}\n            onKeyDown={onColumnKeyDown}\n            onOptionSelect={onOptionSelect}\n          />\n          <AirbnbDatePickerWheelColumn\n            id={`${baseId}-year`}\n            column=\"year\"\n            label={`${label} year`}\n            items={years.map(year => String(year))}\n            activeIndex={yearIndex}\n            scrollTop={yearScrollTop}\n            listRef={yearListRef}\n            onScroll={onColumnScroll}\n            onKeyDown={onColumnKeyDown}\n            onOptionSelect={onOptionSelect}\n          />\n        </div>\n      </div>\n      <Button type=\"button\" onClick={onDone} className=\"mt-4 h-12 mb-8 w-full\">\n        {doneLabel}\n      </Button>\n    </div>\n  );\n}\n\nfunction AirbnbDatePickerContent({\n  baseId,\n  open,\n  isMobile,\n  label,\n  title,\n  doneLabel,\n  monthLabels,\n  days,\n  years,\n  monthIndex,\n  dayIndex,\n  yearIndex,\n  monthScrollTop,\n  dayScrollTop,\n  yearScrollTop,\n  monthListRef,\n  dayListRef,\n  yearListRef,\n  onOpenChange,\n  onDone,\n  onColumnScroll,\n  onColumnKeyDown,\n  onOptionSelect,\n}: AirbnbDatePickerContentProps) {\n  const body = (\n    <AirbnbDatePickerBody\n      baseId={baseId}\n      label={label}\n      doneLabel={doneLabel}\n      monthLabels={monthLabels}\n      days={days}\n      years={years}\n      monthIndex={monthIndex}\n      dayIndex={dayIndex}\n      yearIndex={yearIndex}\n      monthScrollTop={monthScrollTop}\n      dayScrollTop={dayScrollTop}\n      yearScrollTop={yearScrollTop}\n      monthListRef={monthListRef}\n      dayListRef={dayListRef}\n      yearListRef={yearListRef}\n      onColumnScroll={onColumnScroll}\n      onColumnKeyDown={onColumnKeyDown}\n      onOptionSelect={onOptionSelect}\n      onDone={onDone}\n    />\n  );\n\n  if (isMobile) {\n    return (\n      <Drawer open={open} onOpenChange={onOpenChange}>\n        <DrawerContent\n          onClose={() => onOpenChange(false)}\n          className=\"rounded-none rounded-t-[32px] border-0 p-0\"\n        >\n          <DrawerTitle className=\"sr-only\">{title}</DrawerTitle>\n          <DrawerDescription className=\"sr-only\">{label}</DrawerDescription>\n          {body}\n        </DrawerContent>\n      </Drawer>\n    );\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange}>\n      <DialogContent\n        className=\"max-w-[520px] rounded-[28px] border-0 p-0 shadow-xl\"\n        showCloseButton={false}\n      >\n        <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n        <DialogDescription className=\"sr-only\">{label}</DialogDescription>\n        {body}\n      </DialogContent>\n    </Dialog>\n  );\n}\n\nexport {AirbnbDatePickerContent};\n","import * as React from 'react';\n\ntype MonthOption = {label: string; index: number};\n\ntype UseMonthComboboxParams = {\n  monthLabels: string[];\n  monthIndex: number | null;\n  isFieldFocused: boolean;\n  disabled: boolean;\n  onSelect: (index: number) => void;\n  onCommit: (index: number) => void;\n  onClear: () => void;\n};\n\nfunction useMonthCombobox({\n  monthLabels,\n  monthIndex,\n  isFieldFocused,\n  disabled,\n  onSelect,\n  onCommit,\n  onClear,\n}: UseMonthComboboxParams) {\n  const [isOpen, setIsOpen] = React.useState(false);\n  const [inputValue, setInputValue] = React.useState('');\n  const [highlightIndex, setHighlightIndex] = React.useState(-1);\n\n  const labelFor = React.useCallback(\n    (index: number | null) => (index !== null ? (monthLabels[index] ?? '') : ''),\n    [monthLabels],\n  );\n\n  React.useEffect(() => {\n    if (isFieldFocused) return;\n    setInputValue(labelFor(monthIndex));\n  }, [monthIndex, labelFor, isFieldFocused]);\n\n  const filteredMonths = React.useMemo<MonthOption[]>(() => {\n    const all = monthLabels.map((label, index) => ({label, index}));\n    const query = inputValue.trim().toLowerCase();\n    if (!query || inputValue === labelFor(monthIndex)) return all;\n    return all.filter(option => option.label.toLowerCase().includes(query));\n  }, [inputValue, monthIndex, monthLabels, labelFor]);\n\n  React.useEffect(() => {\n    if (!isOpen) {\n      setHighlightIndex(-1);\n      return;\n    }\n    if (monthIndex !== null) {\n      const index = filteredMonths.findIndex(option => option.index === monthIndex);\n      if (index >= 0) {\n        setHighlightIndex(index);\n        return;\n      }\n    }\n    setHighlightIndex(filteredMonths.length > 0 ? 0 : -1);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen, filteredMonths.length]);\n\n  const selectMonth = React.useCallback(\n    (index: number) => {\n      setInputValue(labelFor(index));\n      setIsOpen(false);\n      onSelect(index);\n    },\n    [labelFor, onSelect],\n  );\n\n  const commitInput = React.useCallback(() => {\n    const query = inputValue.trim().toLowerCase();\n    if (!query) {\n      if (monthIndex !== null) onClear();\n      setInputValue('');\n      return;\n    }\n    const exactMatch = monthLabels.findIndex(label => label.toLowerCase() === query);\n    if (exactMatch >= 0) {\n      if (exactMatch !== monthIndex) onCommit(exactMatch);\n      setInputValue(labelFor(exactMatch));\n      return;\n    }\n    setInputValue(labelFor(monthIndex));\n  }, [inputValue, monthIndex, monthLabels, labelFor, onClear, onCommit]);\n\n  const handleInputChange = React.useCallback(\n    (event: React.ChangeEvent<HTMLInputElement>) => {\n      setInputValue(event.target.value);\n      setIsOpen(true);\n      setHighlightIndex(0);\n    },\n    [],\n  );\n\n  const handleInputKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLInputElement>) => {\n      if (disabled) return;\n      if (event.key === 'ArrowDown') {\n        event.preventDefault();\n        setIsOpen(true);\n        setHighlightIndex(prev =>\n          filteredMonths.length === 0\n            ? -1\n            : Math.min(prev + 1, filteredMonths.length - 1),\n        );\n        return;\n      }\n      if (event.key === 'ArrowUp') {\n        event.preventDefault();\n        setIsOpen(true);\n        setHighlightIndex(prev => Math.max(prev - 1, 0));\n        return;\n      }\n      if (event.key === 'Enter') {\n        if (!isOpen) return;\n        event.preventDefault();\n        const target = filteredMonths[highlightIndex];\n        if (target) {\n          selectMonth(target.index);\n        } else {\n          commitInput();\n        }\n        return;\n      }\n      if (event.key === 'Escape') {\n        event.preventDefault();\n        setIsOpen(false);\n        setInputValue(labelFor(monthIndex));\n        return;\n      }\n      if (event.key === 'Tab') {\n        setIsOpen(false);\n      }\n    },\n    [\n      commitInput,\n      disabled,\n      filteredMonths,\n      highlightIndex,\n      isOpen,\n      labelFor,\n      monthIndex,\n      selectMonth,\n    ],\n  );\n\n  return {\n    isOpen,\n    setIsOpen,\n    inputValue,\n    highlightIndex,\n    setHighlightIndex,\n    filteredMonths,\n    selectMonth,\n    commitInput,\n    handleInputChange,\n    handleInputKeyDown,\n  };\n}\n\nexport {useMonthCombobox};\nexport type {MonthOption};\n","import * as React from 'react';\nimport {\n  type DateRange,\n  type Matcher,\n  type PropsBase,\n  type PropsRange,\n} from 'react-day-picker';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {isMobileModalModeAvailable} from '../../lib/runtimeSettings';\nimport {useIsMobile, useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {Fieldset} from '../_fieldset';\nimport {createDisabledMatchers} from './createDisabledMatchers';\nimport {DEFAULT_DISPLAY_FORMAT, formatDate, parseDate, toDate} from './dateUtils';\nimport type {DateInput} from './dateUtils';\nimport {useRangeValue} from './hooks/useRangeValue';\nimport {useRangeTextInputs} from './hooks/useRangeTextInputs';\nimport {useRangeMonthSync} from './hooks/useRangeMonthSync';\nimport {resolveRangeSelection} from './utils/rangeSelection';\nimport {DateRangeInputs} from './components/DateRangeInputs';\nimport {DateRangeCalendar} from './components/DateRangeCalendar';\nimport {DateRangePopover} from './components/DateRangePopover';\n\ntype OpenDirection = 'up' | 'down';\n\ntype FocusedInput = 'from' | 'to' | null;\n\ntype DateRangePickerProps = Omit<Partial<PropsRange>, 'mode' | 'selected'> &\n  Omit<PropsBase, 'mode' | 'selected' | 'disabled'> & {\n    label?: string;\n    value?: DateRange;\n    defaultValue?: DateRange;\n    onChange?: (value: DateRange | undefined, name?: string) => void;\n    onFocus?: React.FocusEventHandler<HTMLInputElement>;\n    onBlur?: (value: DateRange | undefined) => void;\n    name?: string;\n    invalid?: boolean;\n    error?: string;\n    disabled?: boolean;\n    readOnly?: boolean;\n    loading?: boolean;\n    optional?: boolean | string;\n    tooltip?: React.ReactNode;\n    className?: string;\n    displayFormat?: string;\n    placeholder?: string;\n    fromPlaceholder?: string;\n    toPlaceholder?: string;\n    minDate?: DateInput;\n    maxDate?: DateInput;\n    minDays?: number;\n    maxDays?: number;\n    disabledDays?: Matcher | Matcher[];\n    hideClearDates?: boolean;\n    hideCalendarIcon?: boolean;\n    hideErrorMessage?: boolean;\n    helperText?: string;\n    width?: number | string;\n    numberOfMonths?: number;\n    openDirection?: OpenDirection;\n    autoFocusOnOpen?: boolean;\n  };\n\nexport type DateRangePickerImperativeProps = {\n  setDateRange: (dateRange?: DateRange) => void;\n  focus: () => void;\n  open: () => void;\n  close: () => void;\n};\n\nconst DateRangePicker = React.forwardRef<\n  DateRangePickerImperativeProps,\n  DateRangePickerProps\n>(function DateRangePicker(\n  {\n    label,\n    value: externalValue,\n    defaultValue,\n    onChange,\n    onFocus,\n    onBlur,\n    name,\n    invalid,\n    error,\n    disabled,\n    readOnly,\n    loading,\n    optional,\n    tooltip,\n    className,\n    displayFormat = DEFAULT_DISPLAY_FORMAT,\n    fromPlaceholder,\n    toPlaceholder,\n    minDate,\n    maxDate,\n    minDays,\n    maxDays,\n    disabledDays,\n    hideClearDates,\n    hideCalendarIcon,\n    hideErrorMessage,\n    helperText,\n    width,\n    numberOfMonths,\n    openDirection = 'down',\n    autoFocusOnOpen = true,\n    components: customComponents,\n    ...dayPickerProps\n  },\n  ref,\n) {\n  const containerRef = React.useRef<HTMLDivElement>(null);\n  const fromInputRef = React.useRef<HTMLInputElement>(null);\n  const toInputRef = React.useRef<HTMLInputElement>(null);\n  const reactId = React.useId();\n  const baseId = name ?? `dash-daterange-${reactId}`;\n  const fromId = `${baseId}-from`;\n  const toId = `${baseId}-to`;\n  const labelId = `${baseId}-label`;\n  const errorId = `${baseId}-error`;\n\n  const normalizedValue = React.useMemo<DateRange | undefined>(() => {\n    if (externalValue === undefined) return undefined;\n    return {from: toDate(externalValue?.from), to: toDate(externalValue?.to)};\n  }, [externalValue]);\n  const normalizedDefaultValue = React.useMemo<DateRange | undefined>(() => {\n    if (defaultValue === undefined) return undefined;\n    return {from: toDate(defaultValue?.from), to: toDate(defaultValue?.to)};\n  }, [defaultValue]);\n\n  const {value, commit} = useRangeValue({\n    value: normalizedValue,\n    defaultValue: normalizedDefaultValue,\n    onChange,\n    name,\n  });\n\n  const normalizedMinDate = React.useMemo(() => toDate(minDate), [minDate]);\n  const normalizedMaxDate = React.useMemo(() => toDate(maxDate), [maxDate]);\n\n  const formatter = React.useMemo(() => formatDate(displayFormat), [displayFormat]);\n  const parser = React.useMemo(() => parseDate(displayFormat), [displayFormat]);\n\n  const closeCalendarRef = React.useRef<() => void>(() => {});\n\n  const handleFromComplete = React.useCallback(() => {\n    toInputRef.current?.focus();\n  }, []);\n\n  const handleToComplete = React.useCallback(() => {\n    toInputRef.current?.blur();\n    closeCalendarRef.current();\n  }, []);\n\n  const {\n    fromText,\n    toText,\n    setFromText,\n    setToText,\n    handleFromChange,\n    handleToChange,\n    handleFromBlur,\n    handleToBlur,\n  } = useRangeTextInputs({\n    value,\n    format: formatter,\n    parse: parser,\n    displayFormat,\n    onCommit: commit,\n    onBlur,\n    onFromComplete: handleFromComplete,\n    onToComplete: handleToComplete,\n  });\n\n  const {month, setMonth, syncMonthToValue} = useRangeMonthSync(value);\n\n  const [isOpen, setIsOpen] = React.useState(false);\n  const [focusedInput, setFocusedInput] = React.useState<FocusedInput>(null);\n  const [autoFocus, setAutoFocus] = React.useState(false);\n  const isMobile = useIsMobile() && isMobileModalModeAvailable();\n  const {t} = useTranslation();\n\n  const drawerTitle = label ?? t('select_dates');\n  const drawerDescription = label ?? t('pick_date_range');\n  const isEmpty = !value?.from && !value?.to;\n  const isBlocked = Boolean(disabled) || Boolean(loading);\n  const isInvalid = Boolean(invalid || error);\n  const isFocused = focusedInput !== null || isOpen;\n  const wrapperWidth = toCssSize(width);\n  const monthsToShow = numberOfMonths ?? (isMobile ? 1 : 2);\n\n  const closeCalendar = React.useCallback(() => {\n    setIsOpen(false);\n    setFocusedInput(null);\n    setAutoFocus(false);\n    if (value?.from) setMonth(value.from);\n  }, [setMonth, value?.from]);\n  closeCalendarRef.current = closeCalendar;\n\n  const openCalendar = React.useCallback(() => {\n    if (isBlocked || readOnly) return;\n    setIsOpen(true);\n  }, [isBlocked, readOnly]);\n\n  useOutsideClick({\n    elementRef: containerRef,\n    onOutsideClick: closeCalendar,\n    isDisabled: !isOpen || isMobile,\n  });\n\n  const handlePickerChange: NonNullable<PropsRange['onSelect']> = React.useCallback(\n    (range, pickedDate) => {\n      const {next, shouldClose} = resolveRangeSelection({\n        previous: value,\n        range,\n        pickedDate,\n      });\n      syncMonthToValue(next);\n      commit(next);\n      if (shouldClose) closeCalendar();\n    },\n    [closeCalendar, commit, syncMonthToValue, value],\n  );\n\n  const handleReset = (event: React.MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    commit(undefined);\n    setFromText('');\n    setToText('');\n    setMonth(new Date());\n  };\n\n  const disabledMatchers = React.useMemo(\n    () =>\n      createDisabledMatchers({\n        minDate: normalizedMinDate,\n        maxDate: normalizedMaxDate,\n        maxDays,\n        minDays,\n        datesRange: value,\n        disabledDays,\n      }),\n    [disabledDays, maxDays, minDays, normalizedMaxDate, normalizedMinDate, value],\n  );\n\n  const toggleCalendar = () => {\n    if (isOpen) {\n      closeCalendar();\n      return;\n    }\n    openCalendar();\n    if (autoFocusOnOpen) setAutoFocus(true);\n  };\n\n  React.useImperativeHandle(\n    ref,\n    () => ({\n      setDateRange: range => {\n        syncMonthToValue(range);\n        commit(range);\n        setFromText(range?.from ? formatter(range.from) : '');\n        setToText(range?.to ? formatter(range.to) : '');\n      },\n      focus: () => fromInputRef.current?.focus(),\n      open: openCalendar,\n      close: closeCalendar,\n    }),\n    [\n      closeCalendar,\n      commit,\n      formatter,\n      openCalendar,\n      setFromText,\n      setToText,\n      syncMonthToValue,\n    ],\n  );\n\n  return (\n    <div\n      ref={containerRef}\n      className={cn(\n        'relative w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)]',\n        disabled && 'cursor-not-allowed opacity-50',\n        loading && 'cursor-progress opacity-50',\n        className,\n      )}\n      style={wrapperWidth ? {width: wrapperWidth} : undefined}\n    >\n      <div className=\"relative min-h-[var(--field-min-height,48px)] w-full\">\n        <div className=\"relative w-full\">\n          <DateRangeInputs\n            fromId={fromId}\n            toId={toId}\n            name={name}\n            labelId={labelId}\n            fromText={fromText}\n            toText={toText}\n            fromPlaceholder={fromPlaceholder}\n            toPlaceholder={toPlaceholder}\n            fromInputRef={fromInputRef}\n            toInputRef={toInputRef}\n            isEmpty={isEmpty}\n            isFocused={isFocused}\n            isBlocked={isBlocked}\n            isInvalid={isInvalid}\n            loading={loading}\n            readOnly={readOnly}\n            hideClearDates={hideClearDates}\n            hideCalendarIcon={hideCalendarIcon}\n            isOpen={isOpen}\n            focusedInput={focusedInput}\n            clearLabel={t('clear_dates')}\n            openCalendarLabel={t('open_calendar')}\n            onFromTextChange={handleFromChange}\n            onToTextChange={handleToChange}\n            onFromFocus={event => {\n              onFocus?.(event);\n              setFocusedInput('from');\n              if (!readOnly && !isBlocked) setIsOpen(true);\n            }}\n            onToFocus={event => {\n              onFocus?.(event);\n              setFocusedInput('to');\n              if (!readOnly && !isBlocked) setIsOpen(true);\n            }}\n            onFromBlur={() => {\n              setFocusedInput(prev => (prev === 'from' ? null : prev));\n              handleFromBlur();\n            }}\n            onToBlur={() => {\n              setFocusedInput(prev => (prev === 'to' ? null : prev));\n              handleToBlur();\n            }}\n            onRowClick={() => {\n              if (isBlocked || readOnly) return;\n              if (!focusedInput) fromInputRef.current?.focus();\n            }}\n            onReset={handleReset}\n            onToggleCalendar={toggleCalendar}\n          />\n          <Fieldset\n            isFocused={isFocused}\n            invalid={isInvalid}\n            isEmpty={isEmpty}\n            isActivated={!isEmpty || isFocused}\n            disabled={disabled}\n            loading={loading}\n            readOnly={readOnly}\n            htmlFor={fromId}\n            labelId={labelId}\n            legend={label}\n            label={label}\n            tooltip={tooltip}\n          />\n          <DateRangePopover\n            isOpen={isOpen && !isMobile}\n            isMobile={false}\n            openDirection={openDirection}\n            drawerTitle={drawerTitle}\n            drawerDescription={drawerDescription}\n            onClose={closeCalendar}\n          >\n            <DateRangeCalendar\n              value={value}\n              month={month}\n              onMonthChange={setMonth}\n              onSelect={handlePickerChange}\n              numberOfMonths={monthsToShow}\n              minDate={normalizedMinDate}\n              maxDate={normalizedMaxDate}\n              maxDays={maxDays}\n              minDays={minDays}\n              autoFocus={autoFocus}\n              disabledMatchers={disabledMatchers}\n              components={customComponents}\n              {...dayPickerProps}\n            />\n          </DateRangePopover>\n        </div>\n        <DateRangePopover\n          isOpen={isOpen && isMobile}\n          isMobile={true}\n          openDirection={openDirection}\n          drawerTitle={drawerTitle}\n          drawerDescription={drawerDescription}\n          onClose={closeCalendar}\n        >\n          <DateRangeCalendar\n            value={value}\n            month={month}\n            onMonthChange={setMonth}\n            onSelect={handlePickerChange}\n            numberOfMonths={monthsToShow}\n            minDate={normalizedMinDate}\n            maxDate={normalizedMaxDate}\n            maxDays={maxDays}\n            minDays={minDays}\n            autoFocus={autoFocus}\n            disabledMatchers={disabledMatchers}\n            components={customComponents}\n            {...dayPickerProps}\n          />\n        </DateRangePopover>\n        {!error && optional && (\n          <span className=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n            {typeof optional === 'string' ? optional : t('optional')}\n          </span>\n        )}\n        {!error && helperText && (\n          <span className=\"mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]\">\n            {helperText}\n          </span>\n        )}\n        {error && !hideErrorMessage && (\n          <FieldErrorMessage\n            id={errorId}\n            message={error}\n            className=\"mt-[1px] text-[14px]\"\n          />\n        )}\n      </div>\n    </div>\n  );\n});\n\nexport {DateRangePicker};\nexport type {DateRangePickerProps, OpenDirection};\n","import {differenceInDays, isAfter, isBefore, isSameDay} from 'date-fns';\nimport type {DateRange} from 'react-day-picker';\nimport {resetTime, toDate, type DateInput} from './dateUtils';\n\ntype IsDayBlockedProps = {\n  maxDays?: number;\n  minDays?: number;\n  minDate?: DateInput;\n  maxDate?: DateInput;\n  datesRange?: DateRange;\n};\n\nexport const isDayBlocked =\n  ({minDate, maxDate, maxDays, minDays, datesRange}: IsDayBlockedProps) =>\n  (date: Date) => {\n    const startDate = datesRange?.from ? resetTime(datesRange.from) : null;\n    const endDate = datesRange?.to ? resetTime(datesRange.to) : null;\n    const min = toDate(minDate);\n    const max = toDate(maxDate);\n\n    if (maxDays) {\n      if (startDate && Math.abs(differenceInDays(date, startDate)) + 1 > maxDays) {\n        return true;\n      }\n      if (endDate && Math.abs(differenceInDays(date, endDate)) + 1 > maxDays) {\n        return true;\n      }\n    }\n\n    if (minDays) {\n      if (\n        startDate &&\n        !isSameDay(date, startDate) &&\n        Math.abs(differenceInDays(date, startDate)) < minDays\n      ) {\n        return true;\n      }\n      if (\n        endDate &&\n        !isSameDay(date, endDate) &&\n        Math.abs(differenceInDays(date, endDate)) < minDays\n      ) {\n        return true;\n      }\n    }\n\n    if (min && isBefore(date, resetTime(min))) return true;\n    if (max && isAfter(date, resetTime(max))) return true;\n\n    return false;\n  };\n","import {format as formatDateFns, isValid, parse} from 'date-fns';\n\nexport const DEFAULT_DISPLAY_FORMAT = 'dd-MM-yyyy';\n\nconst SUPPORTED_FORMATS = ['dd-MM-yyyy', 'dd.MM.yyyy', 'dd/MM/yyyy'];\n\nexport const formatDate =\n  (format: string = DEFAULT_DISPLAY_FORMAT) =>\n  (date: Date) =>\n    formatDateFns(date, format);\n\nexport const parseDate = (displayFormat?: string) => (dateStr: string) => {\n  if (!dateStr) return undefined;\n\n  const formats = displayFormat\n    ? Array.from(new Set([...SUPPORTED_FORMATS, displayFormat]))\n    : SUPPORTED_FORMATS;\n\n  for (const format of formats) {\n    const parsed = parse(dateStr, format, new Date());\n    if (isValid(parsed) && formatDateFns(parsed, format) === dateStr) {\n      return parsed;\n    }\n  }\n  return undefined;\n};\n\nexport type DateInput = Date | string | number;\n\nexport function toDate(input: DateInput | null | undefined): Date | undefined {\n  if (input === undefined || input === null || input === '') return undefined;\n  if (input instanceof Date) return Number.isNaN(input.getTime()) ? undefined : input;\n  const next = new Date(input);\n  return Number.isNaN(next.getTime()) ? undefined : next;\n}\n\nexport function resetTime(date: DateInput) {\n  const next = toDate(date) ?? new Date();\n  next.setHours(0, 0, 0, 0);\n  return next;\n}\n","import type {DateRange, Matcher} from 'react-day-picker';\nimport {isDayBlocked} from './isDayBlocked';\nimport type {DateInput} from './dateUtils';\n\ntype CreateDisabledMatchersProps = {\n  disabledDays?: Matcher | Matcher[];\n  minDate?: DateInput;\n  maxDate?: DateInput;\n  maxDays?: number;\n  minDays?: number;\n  datesRange?: DateRange;\n};\n\nexport const createDisabledMatchers = ({\n  disabledDays,\n  minDate,\n  maxDate,\n  maxDays,\n  minDays,\n  datesRange,\n}: CreateDisabledMatchersProps): Matcher[] => {\n  const result: Matcher[] = [\n    isDayBlocked({minDate, maxDate, maxDays, minDays, datesRange}),\n  ];\n\n  if (Array.isArray(disabledDays)) result.push(...disabledDays);\n  else if (disabledDays) result.push(disabledDays);\n\n  return result;\n};\n","import * as React from 'react';\nimport type {DateRange} from 'react-day-picker';\n\ntype UseRangeValueParams = {\n  value?: DateRange;\n  defaultValue?: DateRange;\n  onChange?: (value: DateRange | undefined, name?: string) => void;\n  name?: string;\n};\n\nconst getRangeKey = (range: DateRange | undefined) =>\n  `${range?.from?.getTime() ?? ''}-${range?.to?.getTime() ?? ''}`;\n\nexport function useRangeValue({\n  value: externalValue,\n  defaultValue,\n  onChange,\n  name,\n}: UseRangeValueParams) {\n  const isControlled = externalValue !== undefined;\n  const [draft, setDraft] = React.useState<DateRange | undefined>(\n    isControlled ? externalValue : defaultValue,\n  );\n  const lastExternalKeyRef = React.useRef(getRangeKey(externalValue));\n\n  if (isControlled) {\n    const externalKey = getRangeKey(externalValue);\n    if (externalKey !== lastExternalKeyRef.current) {\n      lastExternalKeyRef.current = externalKey;\n      setDraft(externalValue);\n    }\n  }\n\n  const commit = React.useCallback(\n    (next: DateRange | undefined) => {\n      setDraft(next);\n      if (next === undefined) {\n        onChange?.(undefined, name);\n        return;\n      }\n      if (next.from && next.to) onChange?.(next, name);\n    },\n    [name, onChange],\n  );\n\n  return {value: draft, commit};\n}\n","import * as React from 'react';\nimport type {DateRange} from 'react-day-picker';\nimport {\n  autoFormatDateInput,\n  getMaxDigits,\n  parseDateInputFormat,\n} from '../utils/inputFormat';\n\ntype UseRangeTextInputsParams = {\n  value: DateRange | undefined;\n  format: (date: Date) => string;\n  parse: (text: string) => Date | undefined;\n  displayFormat: string;\n  onCommit: (next: DateRange | undefined) => void;\n  onBlur?: (value: DateRange | undefined) => void;\n  onFromComplete?: () => void;\n  onToComplete?: () => void;\n};\n\nconst countDigits = (text: string) => text.replace(/\\D/g, '').length;\n\nexport function useRangeTextInputs({\n  value,\n  format,\n  parse,\n  displayFormat,\n  onCommit,\n  onBlur,\n  onFromComplete,\n  onToComplete,\n}: UseRangeTextInputsParams) {\n  const tokens = React.useMemo(\n    () => parseDateInputFormat(displayFormat),\n    [displayFormat],\n  );\n  const maxDigits = React.useMemo(() => getMaxDigits(tokens), [tokens]);\n\n  const [fromText, setFromText] = React.useState(value?.from ? format(value.from) : '');\n  const [toText, setToText] = React.useState(value?.to ? format(value.to) : '');\n\n  React.useEffect(() => {\n    setFromText(value?.from ? format(value.from) : '');\n    setToText(value?.to ? format(value.to) : '');\n  }, [format, value?.from, value?.to]);\n\n  const handleFromChange = React.useCallback(\n    (raw: string) => {\n      const formatted = autoFormatDateInput(raw, tokens);\n      const wasComplete = countDigits(fromText) === maxDigits;\n      const isComplete = countDigits(formatted) === maxDigits;\n      setFromText(formatted);\n      if (!wasComplete && isComplete && parse(formatted)) {\n        // Defer so the state update is committed before focus shifts —\n        // otherwise the blur handler reads the previous (stale) fromText.\n        setTimeout(() => onFromComplete?.(), 0);\n      }\n    },\n    [fromText, maxDigits, onFromComplete, parse, tokens],\n  );\n\n  const handleToChange = React.useCallback(\n    (raw: string) => {\n      const formatted = autoFormatDateInput(raw, tokens);\n      const wasComplete = countDigits(toText) === maxDigits;\n      const isComplete = countDigits(formatted) === maxDigits;\n      setToText(formatted);\n      if (!wasComplete && isComplete && parse(formatted)) {\n        setTimeout(() => onToComplete?.(), 0);\n      }\n    },\n    [maxDigits, onToComplete, parse, toText, tokens],\n  );\n\n  const handleFromBlur = React.useCallback(() => {\n    if (!fromText) {\n      const next = {from: undefined, to: value?.to};\n      onCommit(next);\n      onBlur?.(next);\n      return undefined;\n    }\n    const parsed = parse(fromText);\n    if (parsed) {\n      const next = {from: parsed, to: value?.to};\n      onCommit(next);\n      onBlur?.(next);\n      return parsed;\n    }\n    setFromText(value?.from ? format(value.from) : '');\n    return undefined;\n  }, [format, fromText, onBlur, onCommit, parse, value]);\n\n  const handleToBlur = React.useCallback(() => {\n    if (!toText) {\n      const next = {from: value?.from, to: undefined};\n      onCommit(next);\n      onBlur?.(next);\n      return;\n    }\n    const parsed = parse(toText);\n    if (parsed) {\n      const next = {from: value?.from, to: parsed};\n      onCommit(next);\n      onBlur?.(next);\n      return;\n    }\n    setToText(value?.to ? format(value.to) : '');\n  }, [format, onBlur, onCommit, parse, toText, value]);\n\n  return {\n    fromText,\n    toText,\n    setFromText,\n    setToText,\n    handleFromChange,\n    handleToChange,\n    handleFromBlur,\n    handleToBlur,\n  };\n}\n","export type DateFormatToken =\n  | {type: 'digits'; length: number}\n  | {type: 'separator'; char: string};\n\nexport function parseDateInputFormat(format: string): DateFormatToken[] {\n  const tokens: DateFormatToken[] = [];\n  let i = 0;\n  while (i < format.length) {\n    const ch = format[i];\n    if (/[a-zA-Z]/.test(ch)) {\n      let len = 1;\n      while (i + len < format.length && format[i + len] === ch) len++;\n      tokens.push({type: 'digits', length: len});\n      i += len;\n    } else {\n      tokens.push({type: 'separator', char: ch});\n      i += 1;\n    }\n  }\n  return tokens;\n}\n\nexport function getMaxDigits(tokens: DateFormatToken[]): number {\n  return tokens.reduce(\n    (sum, token) => (token.type === 'digits' ? sum + token.length : sum),\n    0,\n  );\n}\n\nexport function autoFormatDateInput(raw: string, tokens: DateFormatToken[]): string {\n  const digitTokens = tokens.filter(\n    (token): token is {type: 'digits'; length: number} => token.type === 'digits',\n  );\n  const sepToken = tokens.find(\n    (token): token is {type: 'separator'; char: string} => token.type === 'separator',\n  );\n  const sepChar = sepToken?.char ?? '-';\n\n  const segments: string[] = [];\n  let segIdx = 0;\n  let current = '';\n  let endedWithSeparator = false;\n\n  for (let i = 0; i < raw.length; i++) {\n    if (segIdx >= digitTokens.length) break;\n    const ch = raw[i];\n    const segLen = digitTokens[segIdx].length;\n\n    if (/\\d/.test(ch)) {\n      if (current.length >= segLen) {\n        segments.push(current);\n        segIdx++;\n        if (segIdx >= digitTokens.length) {\n          current = '';\n          endedWithSeparator = false;\n          break;\n        }\n        current = ch;\n      } else {\n        current += ch;\n      }\n      endedWithSeparator = false;\n    } else if (current.length > 0) {\n      // Non-digit acts as a \"move on\" marker. Pad short day/month segments\n      // with a leading zero (e.g. `1-` → `01-`); skip the marker for\n      // multi-digit segments like the year to avoid weird padding.\n      if (current.length < segLen) {\n        if (segLen > 2) continue;\n        current = current.padStart(segLen, '0');\n      }\n      segments.push(current);\n      current = '';\n      segIdx++;\n      endedWithSeparator = true;\n    }\n  }\n\n  if (current.length > 0) {\n    segments.push(current);\n    endedWithSeparator = false;\n  }\n\n  let result = segments.join(sepChar);\n  if (endedWithSeparator && segments.length < digitTokens.length) {\n    result += sepChar;\n  }\n  return result;\n}\n","import * as React from 'react';\nimport type {DateRange} from 'react-day-picker';\n\nexport function useRangeMonthSync(value: DateRange | undefined) {\n  const isPreloadedRef = React.useRef(false);\n  const [month, setMonth] = React.useState<Date>(value?.from ?? new Date());\n\n  React.useEffect(() => {\n    if (value?.from && !isPreloadedRef.current) {\n      setMonth(value.from);\n      isPreloadedRef.current = true;\n    }\n  }, [value?.from]);\n\n  const syncMonthToValue = React.useCallback((next: DateRange | undefined) => {\n    isPreloadedRef.current = true;\n    if (next?.from) setMonth(next.from);\n  }, []);\n\n  const resetPreload = React.useCallback(() => {\n    isPreloadedRef.current = false;\n  }, []);\n\n  return {month, setMonth, syncMonthToValue, resetPreload};\n}\n","import {isBefore} from 'date-fns';\nimport type {DateRange} from 'react-day-picker';\n\ntype ResolveRangeSelectionParams = {\n  previous: DateRange | undefined;\n  range: DateRange | undefined;\n  pickedDate: Date | undefined;\n};\n\ntype ResolveRangeSelectionResult = {\n  next: DateRange | undefined;\n  shouldClose: boolean;\n};\n\nexport function resolveRangeSelection({\n  previous,\n  range,\n  pickedDate,\n}: ResolveRangeSelectionParams): ResolveRangeSelectionResult {\n  const startingNewRange =\n    !previous?.from ||\n    (previous.from && previous.to) ||\n    (range?.to && pickedDate && isBefore(pickedDate, range.to));\n\n  if (startingNewRange) {\n    return {next: {from: pickedDate, to: undefined}, shouldClose: false};\n  }\n\n  const next = range;\n  const shouldClose = Boolean(\n    (next?.from && next?.to) ||\n    (pickedDate && range?.from && isBefore(range.from, pickedDate)),\n  );\n  return {next, shouldClose};\n}\n","import * as React from 'react';\nimport {CalendarDays, SquareX} from 'lucide-react';\nimport {cn} from '../../../lib/cn';\n\nconst DEFAULT_PLACEHOLDER = '00-00-0000';\n\ntype DateRangeInputsProps = {\n  fromId: string;\n  toId: string;\n  name?: string;\n  labelId: string;\n  fromText: string;\n  toText: string;\n  fromPlaceholder?: string;\n  toPlaceholder?: string;\n  fromInputRef: React.RefObject<HTMLInputElement>;\n  toInputRef: React.RefObject<HTMLInputElement>;\n  isEmpty: boolean;\n  isFocused: boolean;\n  isBlocked: boolean;\n  isInvalid: boolean;\n  loading?: boolean;\n  readOnly?: boolean;\n  hideClearDates?: boolean;\n  hideCalendarIcon?: boolean;\n  isOpen: boolean;\n  focusedInput: 'from' | 'to' | null;\n  clearLabel: string;\n  openCalendarLabel: string;\n  onFromTextChange: (text: string) => void;\n  onToTextChange: (text: string) => void;\n  onFromFocus: React.FocusEventHandler<HTMLInputElement>;\n  onToFocus: React.FocusEventHandler<HTMLInputElement>;\n  onFromBlur: () => void;\n  onToBlur: () => void;\n  onRowClick: () => void;\n  onReset: (event: React.MouseEvent) => void;\n  onToggleCalendar: () => void;\n};\n\nconst inputBaseClass =\n  'm-0 box-border h-full w-full min-w-0 border-0 bg-transparent text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[length:var(--field-placeholder-font-size)] placeholder:font-[var(--field-placeholder-font-weight)] placeholder:text-[var(--chekin-color-gray-1)]';\n\nconst iconButtonClass =\n  'flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[var(--chekin-neutral-500)] outline-none hover:shadow-[0_3px_3px_#0f477734] disabled:cursor-not-allowed';\n\nexport function DateRangeInputs({\n  fromId,\n  toId,\n  name,\n  labelId,\n  fromText,\n  toText,\n  fromPlaceholder = DEFAULT_PLACEHOLDER,\n  toPlaceholder = DEFAULT_PLACEHOLDER,\n  fromInputRef,\n  toInputRef,\n  isEmpty,\n  isFocused,\n  isBlocked,\n  isInvalid,\n  loading,\n  readOnly,\n  hideClearDates,\n  hideCalendarIcon,\n  isOpen,\n  focusedInput,\n  clearLabel,\n  openCalendarLabel,\n  onFromTextChange,\n  onToTextChange,\n  onFromFocus,\n  onToFocus,\n  onFromBlur,\n  onToBlur,\n  onRowClick,\n  onReset,\n  onToggleCalendar,\n}: DateRangeInputsProps) {\n  const inputClass = cn(\n    inputBaseClass,\n    isBlocked && 'cursor-not-allowed',\n    loading && 'cursor-progress',\n  );\n\n  return (\n    <div\n      className={cn(\n        'relative box-border flex h-12 w-full items-center rounded-[6px] pr-2 text-[16px] font-medium text-[var(--chekin-color-brand-navy)] transition-colors duration-200',\n        isEmpty && !isFocused && 'bg-[var(--empty-field-background)]',\n      )}\n      onClick={onRowClick}\n    >\n      <input\n        ref={fromInputRef}\n        id={fromId}\n        name={name ? `${name}-from` : undefined}\n        type=\"text\"\n        inputMode=\"numeric\"\n        autoComplete=\"off\"\n        placeholder={fromPlaceholder}\n        value={fromText}\n        disabled={isBlocked}\n        readOnly={readOnly}\n        aria-invalid={isInvalid}\n        aria-labelledby={labelId}\n        onChange={event => onFromTextChange(event.target.value)}\n        onFocus={onFromFocus}\n        onBlur={onFromBlur}\n        className={cn(\n          inputClass,\n          'max-w-[110px] pl-[14px] pr-0',\n          isEmpty && !isFocused && 'placeholder:invisible',\n        )}\n      />\n      <span\n        aria-hidden=\"true\"\n        className={cn(\n          'shrink-0 px-2 text-[18px] leading-none text-[var(--chekin-color-gray-2)]',\n          isEmpty && !isFocused && 'invisible',\n        )}\n      >\n        →\n      </span>\n      <input\n        ref={toInputRef}\n        id={toId}\n        name={name ? `${name}-to` : undefined}\n        type=\"text\"\n        inputMode=\"numeric\"\n        autoComplete=\"off\"\n        placeholder={toPlaceholder}\n        value={toText}\n        disabled={isBlocked}\n        readOnly={readOnly}\n        aria-invalid={isInvalid}\n        aria-labelledby={labelId}\n        onChange={event => onToTextChange(event.target.value)}\n        onFocus={onToFocus}\n        onBlur={onToBlur}\n        className={cn(\n          inputClass,\n          'px-0',\n          isEmpty && !isFocused && 'placeholder:invisible',\n        )}\n      />\n      <span className=\"ml-auto flex shrink-0 items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]\">\n        {!readOnly && !hideClearDates && !isEmpty && (\n          <button\n            type=\"button\"\n            disabled={isBlocked}\n            onClick={onReset}\n            className={iconButtonClass}\n            aria-label={clearLabel}\n          >\n            <SquareX\n              size={16}\n              fill=\"var(--chekin-neutral-500)\"\n              color=\"#f8f8f8\"\n              strokeWidth={1.8}\n            />\n          </button>\n        )}\n        {!readOnly && !hideCalendarIcon && (\n          <button\n            type=\"button\"\n            disabled={isBlocked}\n            onClick={onToggleCalendar}\n            aria-pressed={isOpen}\n            className={cn(\n              'flex h-6 w-6 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 outline-none disabled:cursor-not-allowed',\n              focusedInput !== null || isOpen\n                ? 'text-[var(--chekin-color-brand-blue)]'\n                : 'text-[var(--chekin-color-gray-2)]',\n            )}\n            aria-label={openCalendarLabel}\n          >\n            <CalendarDays size={18} />\n          </button>\n        )}\n      </span>\n    </div>\n  );\n}\n","import * as React from 'react';\nimport {\n  type DateRange,\n  type Matcher,\n  type PropsBase,\n  type PropsRange,\n} from 'react-day-picker';\nimport {Calendar} from '../../../calendar';\n\ntype DateRangeCalendarProps = Omit<\n  Partial<PropsRange>,\n  'mode' | 'selected' | 'onSelect'\n> &\n  Omit<PropsBase, 'mode' | 'selected' | 'disabled'> & {\n    value: DateRange | undefined;\n    month: Date;\n    onMonthChange: (month: Date) => void;\n    onSelect: NonNullable<PropsRange['onSelect']>;\n    numberOfMonths: number;\n    minDate?: Date;\n    maxDate?: Date;\n    maxDays?: number;\n    minDays?: number;\n    autoFocus?: boolean;\n    disabledMatchers: Matcher[];\n    components?: PropsBase['components'];\n  };\n\nexport function DateRangeCalendar({\n  value,\n  month,\n  onMonthChange,\n  onSelect,\n  numberOfMonths,\n  minDate,\n  maxDate,\n  maxDays,\n  minDays,\n  autoFocus,\n  disabledMatchers,\n  components,\n  ...dayPickerProps\n}: DateRangeCalendarProps) {\n  return (\n    <Calendar\n      mode=\"range\"\n      selected={value}\n      month={month}\n      onMonthChange={onMonthChange}\n      onSelect={onSelect}\n      numberOfMonths={numberOfMonths}\n      startMonth={minDate}\n      endMonth={maxDate}\n      max={maxDays}\n      min={minDays}\n      autoFocus={autoFocus}\n      disabled={disabledMatchers}\n      components={components}\n      className=\"p-5\"\n      {...dayPickerProps}\n    />\n  );\n}\n","import * as React from 'react';\nimport {cn} from '../../../lib/cn';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../../drawer';\n\ntype DateRangePopoverProps = {\n  isOpen: boolean;\n  isMobile: boolean;\n  openDirection: 'up' | 'down';\n  drawerTitle: string;\n  drawerDescription: string;\n  onClose: () => void;\n  children: React.ReactNode;\n};\n\nexport function DateRangePopover({\n  isOpen,\n  isMobile,\n  openDirection,\n  drawerTitle,\n  drawerDescription,\n  onClose,\n  children,\n}: DateRangePopoverProps) {\n  if (!isOpen) return null;\n\n  if (isMobile) {\n    return (\n      <Drawer\n        open={isOpen}\n        onOpenChange={next => {\n          if (!next) onClose();\n        }}\n      >\n        <DrawerContent\n          onClose={onClose}\n          lockScroll={false}\n          className=\"max-h-[calc(100vh-1rem)]\"\n        >\n          <DrawerTitle className=\"sr-only\">{drawerTitle}</DrawerTitle>\n          <DrawerDescription className=\"sr-only\">{drawerDescription}</DrawerDescription>\n          <div className=\"flex items-start justify-center overflow-x-auto px-2 pb-4 pt-1\">\n            {children}\n          </div>\n        </DrawerContent>\n      </Drawer>\n    );\n  }\n\n  return (\n    <div\n      className={cn(\n        'absolute left-0 z-30 w-max overflow-hidden rounded-[3px] border border-[var(--chekin-color-brand-blue)] bg-white shadow-[0_5px_5px_0_rgba(33,72,255,0.1)]',\n        openDirection === 'up' ? 'bottom-full mb-2' : 'top-full mt-1',\n      )}\n    >\n      {children}\n    </div>\n  );\n}\n","import * as React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {differenceInDays, isAfter, isBefore} from 'date-fns';\nimport {\n  type DateRange,\n  type Matcher,\n  dateMatchModifiers,\n  dateLib,\n} from 'react-day-picker';\nimport {useEvent} from '../../hooks';\nimport {formatDate, resetTime, toDate, DEFAULT_DISPLAY_FORMAT} from './dateUtils';\nimport type {DateInput} from './dateUtils';\n\ntype UseValidateDatesProps = {\n  minDays?: number;\n  maxDays?: number;\n  minDate?: DateInput;\n  maxDate?: DateInput;\n  disabledDays?: Matcher | Matcher[];\n  onError?: (error: string) => void;\n  onSuccess?: () => void;\n  displayFormat?: string;\n};\n\nfunction isAfterMax(date: Date, maxDate: Date) {\n  return isAfter(resetTime(date), resetTime(maxDate));\n}\n\nfunction isBeforeMin(date: Date, minDate: Date) {\n  return isBefore(resetTime(date), resetTime(minDate));\n}\n\nexport function useValidateDates({\n  minDays,\n  maxDays,\n  minDate,\n  maxDate,\n  disabledDays,\n  onError,\n  onSuccess,\n  displayFormat,\n}: UseValidateDatesProps) {\n  const {t} = useTranslation();\n  const handleError = useEvent(onError);\n  const handleSuccess = useEvent(onSuccess);\n  const errorFormatter = React.useMemo(\n    () => formatDate(displayFormat ?? DEFAULT_DISPLAY_FORMAT),\n    [displayFormat],\n  );\n\n  const validateDates = React.useCallback(\n    (dates?: DateRange) => {\n      const startDate = dates?.from;\n      const endDate = dates?.to;\n      if (!startDate || !endDate) return true;\n\n      if (\n        disabledDays &&\n        (dateMatchModifiers(startDate, disabledDays, dateLib) ||\n          dateMatchModifiers(endDate, disabledDays, dateLib))\n      ) {\n        handleError(t('wrong_period_of_dates'));\n        return false;\n      }\n\n      if (isAfter(startDate, endDate)) {\n        handleError(t('wrong_period_of_dates'));\n        return false;\n      }\n\n      if (maxDays && differenceInDays(endDate, startDate) + 1 > maxDays) {\n        handleError(t('date_range_max_days_error', {count: maxDays}));\n        return false;\n      }\n\n      if (minDays && differenceInDays(endDate, startDate) < minDays) {\n        handleError(t('date_range_min_days_error', {count: minDays}));\n        return false;\n      }\n\n      const min = toDate(minDate);\n      const max = toDate(maxDate);\n\n      if (min && isBeforeMin(startDate, min)) {\n        handleError(t('past_dates', {minDate: errorFormatter(resetTime(min))}));\n        return false;\n      }\n\n      if (max && (isAfterMax(startDate, max) || isAfterMax(endDate, max))) {\n        handleError(t('future_dates', {maxDate: errorFormatter(resetTime(max))}));\n        return false;\n      }\n\n      handleSuccess();\n      return true;\n    },\n    [\n      disabledDays,\n      errorFormatter,\n      handleError,\n      handleSuccess,\n      maxDate,\n      maxDays,\n      minDate,\n      minDays,\n      t,\n    ],\n  );\n\n  return {validateDates};\n}\n","import * as React from 'react';\nimport {type Matcher, type PropsBase, type PropsSingle} from 'react-day-picker';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {isMobileModalModeAvailable} from '../../lib/runtimeSettings';\nimport {useIsMobile, useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {Fieldset} from '../_fieldset';\nimport {isDayBlocked} from '../date-range-picker/isDayBlocked';\nimport {\n  DEFAULT_DISPLAY_FORMAT,\n  formatDate,\n  parseDate,\n  toDate,\n} from '../date-range-picker/dateUtils';\nimport type {DateInput} from '../date-range-picker/dateUtils';\nimport {DateRangePopover} from '../date-range-picker/components/DateRangePopover';\nimport {useSingleDateValue} from './hooks/useSingleDateValue';\nimport {useSingleDateText} from './hooks/useSingleDateText';\nimport {SingleDateInput} from './components/SingleDateInput';\nimport {SingleDateCalendar} from './components/SingleDateCalendar';\n\ntype OpenDirection = 'up' | 'down';\n\ntype SingleDatePickerProps = Omit<Partial<PropsSingle>, 'mode' | 'selected'> &\n  Omit<PropsBase, 'mode' | 'selected' | 'disabled'> & {\n    label?: string;\n    value?: DateInput | null;\n    defaultValue?: DateInput | null;\n    onChange?: (value: Date | undefined, name?: string) => void;\n    onFocus?: React.FocusEventHandler<HTMLInputElement>;\n    onBlur?: (value: Date | undefined) => void;\n    name?: string;\n    invalid?: boolean;\n    error?: string;\n    disabled?: boolean;\n    readOnly?: boolean;\n    loading?: boolean;\n    optional?: boolean | string;\n    tooltip?: React.ReactNode;\n    className?: string;\n    displayFormat?: string;\n    placeholder?: string;\n    minDate?: DateInput;\n    maxDate?: DateInput;\n    disabledDays?: Matcher | Matcher[];\n    hideClearDate?: boolean;\n    hideCalendarIcon?: boolean;\n    hideErrorMessage?: boolean;\n    helperText?: string;\n    width?: number | string;\n    numberOfMonths?: number;\n    openDirection?: OpenDirection;\n    autoFocusOnOpen?: boolean;\n  };\n\nexport type SingleDatePickerImperativeProps = {\n  setDate: (date?: DateInput) => void;\n  focus: () => void;\n  open: () => void;\n  close: () => void;\n};\n\nconst SingleDatePicker = React.forwardRef<\n  SingleDatePickerImperativeProps,\n  SingleDatePickerProps\n>(function SingleDatePicker(\n  {\n    label,\n    value: externalValue,\n    defaultValue,\n    onChange,\n    onFocus,\n    onBlur,\n    name,\n    invalid,\n    error,\n    disabled,\n    readOnly,\n    loading,\n    optional,\n    tooltip,\n    className,\n    displayFormat = DEFAULT_DISPLAY_FORMAT,\n    placeholder,\n    minDate,\n    maxDate,\n    disabledDays,\n    hideClearDate,\n    hideCalendarIcon,\n    hideErrorMessage,\n    helperText,\n    width,\n    numberOfMonths = 1,\n    openDirection = 'down',\n    autoFocusOnOpen = true,\n    components: customComponents,\n    ...dayPickerProps\n  },\n  ref,\n) {\n  const containerRef = React.useRef<HTMLDivElement>(null);\n  const inputRef = React.useRef<HTMLInputElement>(null);\n  const reactId = React.useId();\n  const baseId = name ?? `dash-singledate-${reactId}`;\n  const inputId = baseId;\n  const labelId = `${baseId}-label`;\n  const errorId = `${baseId}-error`;\n\n  const normalizedValue = React.useMemo<Date | undefined>(\n    () => (externalValue === undefined ? undefined : toDate(externalValue)),\n    [externalValue],\n  );\n  const normalizedDefaultValue = React.useMemo<Date | undefined>(\n    () => (defaultValue === undefined ? undefined : toDate(defaultValue)),\n    [defaultValue],\n  );\n\n  const {value, commit} = useSingleDateValue({\n    value: normalizedValue,\n    defaultValue: normalizedDefaultValue,\n    onChange,\n    name,\n  });\n\n  const normalizedMinDate = React.useMemo(() => toDate(minDate), [minDate]);\n  const normalizedMaxDate = React.useMemo(() => toDate(maxDate), [maxDate]);\n\n  const formatter = React.useMemo(() => formatDate(displayFormat), [displayFormat]);\n  const parser = React.useMemo(() => parseDate(displayFormat), [displayFormat]);\n\n  const [month, setMonth] = React.useState<Date>(value ?? new Date());\n  const isPreloadedRef = React.useRef(false);\n  React.useEffect(() => {\n    if (value && !isPreloadedRef.current) {\n      setMonth(value);\n      isPreloadedRef.current = true;\n    }\n  }, [value]);\n\n  const closeCalendarRef = React.useRef<() => void>(() => {});\n\n  const handleComplete = React.useCallback(() => {\n    inputRef.current?.blur();\n    closeCalendarRef.current();\n  }, []);\n\n  const {text, setText, handleChange, handleBlur} = useSingleDateText({\n    value,\n    format: formatter,\n    parse: parser,\n    displayFormat,\n    onCommit: commit,\n    onBlur,\n    onComplete: handleComplete,\n  });\n\n  const [isOpen, setIsOpen] = React.useState(false);\n  const [isFocused, setIsFocused] = React.useState(false);\n  const [autoFocus, setAutoFocus] = React.useState(false);\n  const isMobile = useIsMobile() && isMobileModalModeAvailable();\n  const {t} = useTranslation();\n\n  const drawerTitle = label ?? t('select_date');\n  const drawerDescription = label ?? t('pick_date');\n  const isEmpty = !value;\n  const isBlocked = Boolean(disabled) || Boolean(loading);\n  const isInvalid = Boolean(invalid || error);\n  const isActive = isFocused || isOpen;\n  const wrapperWidth = toCssSize(width);\n\n  const closeCalendar = React.useCallback(() => {\n    setIsOpen(false);\n    setIsFocused(false);\n    setAutoFocus(false);\n    if (value) setMonth(value);\n  }, [value]);\n  closeCalendarRef.current = closeCalendar;\n\n  const openCalendar = React.useCallback(() => {\n    if (isBlocked || readOnly) return;\n    setIsOpen(true);\n  }, [isBlocked, readOnly]);\n\n  useOutsideClick({\n    elementRef: containerRef,\n    onOutsideClick: closeCalendar,\n    isDisabled: !isOpen || isMobile,\n  });\n\n  const handlePickerSelect: NonNullable<PropsSingle['onSelect']> = React.useCallback(\n    selected => {\n      commit(selected);\n      if (selected) setMonth(selected);\n      closeCalendar();\n    },\n    [closeCalendar, commit],\n  );\n\n  const handleReset = (event: React.MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    commit(undefined);\n    setText('');\n    setMonth(new Date());\n  };\n\n  const disabledMatchers = React.useMemo<Matcher[]>(() => {\n    const result: Matcher[] = [\n      isDayBlocked({minDate: normalizedMinDate, maxDate: normalizedMaxDate}),\n    ];\n    if (Array.isArray(disabledDays)) result.push(...disabledDays);\n    else if (disabledDays) result.push(disabledDays);\n    return result;\n  }, [disabledDays, normalizedMaxDate, normalizedMinDate]);\n\n  const toggleCalendar = () => {\n    if (isOpen) {\n      closeCalendar();\n      return;\n    }\n    openCalendar();\n    if (autoFocusOnOpen) setAutoFocus(true);\n  };\n\n  React.useImperativeHandle(\n    ref,\n    () => ({\n      setDate: date => {\n        const next = toDate(date);\n        if (next) setMonth(next);\n        commit(next);\n        setText(next ? formatter(next) : '');\n      },\n      focus: () => inputRef.current?.focus(),\n      open: openCalendar,\n      close: closeCalendar,\n    }),\n    [closeCalendar, commit, formatter, openCalendar, setText],\n  );\n\n  return (\n    <div\n      ref={containerRef}\n      className={cn(\n        'relative w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)]',\n        disabled && 'cursor-not-allowed opacity-50',\n        loading && 'cursor-progress opacity-50',\n        className,\n      )}\n      style={wrapperWidth ? {width: wrapperWidth} : undefined}\n    >\n      <div className=\"relative min-h-[var(--field-min-height,48px)] w-full\">\n        <div className=\"relative w-full\">\n          <SingleDateInput\n            id={inputId}\n            name={name}\n            labelId={labelId}\n            text={text}\n            placeholder={placeholder}\n            inputRef={inputRef}\n            isEmpty={isEmpty}\n            isFocused={isActive}\n            isBlocked={isBlocked}\n            isInvalid={isInvalid}\n            loading={loading}\n            readOnly={readOnly}\n            hideClearDate={hideClearDate}\n            hideCalendarIcon={hideCalendarIcon}\n            isOpen={isOpen}\n            clearLabel={t('clear_date')}\n            openCalendarLabel={t('open_calendar')}\n            onTextChange={handleChange}\n            onFocus={event => {\n              onFocus?.(event);\n              setIsFocused(true);\n              if (!readOnly && !isBlocked) setIsOpen(true);\n            }}\n            onBlur={() => {\n              setIsFocused(false);\n              handleBlur();\n            }}\n            onRowClick={() => {\n              if (isBlocked || readOnly) return;\n              if (!isFocused) inputRef.current?.focus();\n            }}\n            onReset={handleReset}\n            onToggleCalendar={toggleCalendar}\n          />\n          <Fieldset\n            isFocused={isActive}\n            invalid={isInvalid}\n            isEmpty={isEmpty}\n            isActivated={!isEmpty || isActive}\n            disabled={disabled}\n            loading={loading}\n            readOnly={readOnly}\n            htmlFor={inputId}\n            labelId={labelId}\n            legend={label}\n            label={label}\n            tooltip={tooltip}\n          />\n          <DateRangePopover\n            isOpen={isOpen && !isMobile}\n            isMobile={false}\n            openDirection={openDirection}\n            drawerTitle={drawerTitle}\n            drawerDescription={drawerDescription}\n            onClose={closeCalendar}\n          >\n            <SingleDateCalendar\n              value={value}\n              month={month}\n              onMonthChange={setMonth}\n              onSelect={handlePickerSelect}\n              numberOfMonths={numberOfMonths}\n              minDate={normalizedMinDate}\n              maxDate={normalizedMaxDate}\n              autoFocus={autoFocus}\n              disabledMatchers={disabledMatchers}\n              components={customComponents}\n              {...dayPickerProps}\n            />\n          </DateRangePopover>\n        </div>\n        <DateRangePopover\n          isOpen={isOpen && isMobile}\n          isMobile={true}\n          openDirection={openDirection}\n          drawerTitle={drawerTitle}\n          drawerDescription={drawerDescription}\n          onClose={closeCalendar}\n        >\n          <SingleDateCalendar\n            value={value}\n            month={month}\n            onMonthChange={setMonth}\n            onSelect={handlePickerSelect}\n            numberOfMonths={numberOfMonths}\n            minDate={normalizedMinDate}\n            maxDate={normalizedMaxDate}\n            autoFocus={autoFocus}\n            disabledMatchers={disabledMatchers}\n            components={customComponents}\n            {...dayPickerProps}\n          />\n        </DateRangePopover>\n        {!error && optional && (\n          <span className=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n            {typeof optional === 'string' ? optional : t('optional')}\n          </span>\n        )}\n        {!error && helperText && (\n          <span className=\"mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]\">\n            {helperText}\n          </span>\n        )}\n        {error && !hideErrorMessage && (\n          <FieldErrorMessage\n            id={errorId}\n            message={error}\n            className=\"mt-[1px] text-[14px]\"\n          />\n        )}\n      </div>\n    </div>\n  );\n});\n\nexport {SingleDatePicker};\nexport type {SingleDatePickerProps, OpenDirection};\n","import * as React from 'react';\n\ntype UseSingleDateValueParams = {\n  value?: Date;\n  defaultValue?: Date;\n  onChange?: (value: Date | undefined, name?: string) => void;\n  name?: string;\n};\n\nconst getDateKey = (date: Date | undefined) => date?.getTime() ?? '';\n\nexport function useSingleDateValue({\n  value: externalValue,\n  defaultValue,\n  onChange,\n  name,\n}: UseSingleDateValueParams) {\n  const isControlled = externalValue !== undefined;\n  const [draft, setDraft] = React.useState<Date | undefined>(\n    isControlled ? externalValue : defaultValue,\n  );\n  const lastExternalKeyRef = React.useRef(getDateKey(externalValue));\n\n  if (isControlled) {\n    const externalKey = getDateKey(externalValue);\n    if (externalKey !== lastExternalKeyRef.current) {\n      lastExternalKeyRef.current = externalKey;\n      setDraft(externalValue);\n    }\n  }\n\n  const commit = React.useCallback(\n    (next: Date | undefined) => {\n      setDraft(next);\n      onChange?.(next, name);\n    },\n    [name, onChange],\n  );\n\n  return {value: draft, commit};\n}\n","import * as React from 'react';\nimport {\n  autoFormatDateInput,\n  getMaxDigits,\n  parseDateInputFormat,\n} from '../../date-range-picker/utils/inputFormat';\n\ntype UseSingleDateTextParams = {\n  value: Date | undefined;\n  format: (date: Date) => string;\n  parse: (text: string) => Date | undefined;\n  displayFormat: string;\n  onCommit: (next: Date | undefined) => void;\n  onBlur?: (value: Date | undefined) => void;\n  onComplete?: () => void;\n};\n\nconst countDigits = (text: string) => text.replace(/\\D/g, '').length;\n\nexport function useSingleDateText({\n  value,\n  format,\n  parse,\n  displayFormat,\n  onCommit,\n  onBlur,\n  onComplete,\n}: UseSingleDateTextParams) {\n  const tokens = React.useMemo(\n    () => parseDateInputFormat(displayFormat),\n    [displayFormat],\n  );\n  const maxDigits = React.useMemo(() => getMaxDigits(tokens), [tokens]);\n\n  const [text, setText] = React.useState(value ? format(value) : '');\n\n  React.useEffect(() => {\n    setText(value ? format(value) : '');\n  }, [format, value]);\n\n  const handleChange = React.useCallback(\n    (raw: string) => {\n      const formatted = autoFormatDateInput(raw, tokens);\n      const wasComplete = countDigits(text) === maxDigits;\n      const isComplete = countDigits(formatted) === maxDigits;\n      setText(formatted);\n      if (!wasComplete && isComplete) {\n        const parsed = parse(formatted);\n        if (parsed) {\n          onCommit(parsed);\n          // Defer so the state update is committed before focus shifts —\n          // otherwise the blur handler reads the previous (stale) text.\n          setTimeout(() => onComplete?.(), 0);\n        }\n      }\n    },\n    [maxDigits, onCommit, onComplete, parse, text, tokens],\n  );\n\n  const handleBlur = React.useCallback(() => {\n    if (!text) {\n      onCommit(undefined);\n      onBlur?.(undefined);\n      return;\n    }\n    const parsed = parse(text);\n    if (parsed) {\n      onCommit(parsed);\n      onBlur?.(parsed);\n      return;\n    }\n    // Revert to the last valid value when the typed text can't be parsed.\n    setText(value ? format(value) : '');\n  }, [format, onBlur, onCommit, parse, text, value]);\n\n  return {text, setText, handleChange, handleBlur};\n}\n","import * as React from 'react';\nimport {CalendarDays, SquareX} from 'lucide-react';\nimport {cn} from '../../../lib/cn';\n\nconst DEFAULT_PLACEHOLDER = '00-00-0000';\n\ntype SingleDateInputProps = {\n  id: string;\n  name?: string;\n  labelId: string;\n  text: string;\n  placeholder?: string;\n  inputRef: React.RefObject<HTMLInputElement>;\n  isEmpty: boolean;\n  isFocused: boolean;\n  isBlocked: boolean;\n  isInvalid: boolean;\n  loading?: boolean;\n  readOnly?: boolean;\n  hideClearDate?: boolean;\n  hideCalendarIcon?: boolean;\n  isOpen: boolean;\n  clearLabel: string;\n  openCalendarLabel: string;\n  onTextChange: (text: string) => void;\n  onFocus: React.FocusEventHandler<HTMLInputElement>;\n  onBlur: () => void;\n  onRowClick: () => void;\n  onReset: (event: React.MouseEvent) => void;\n  onToggleCalendar: () => void;\n};\n\nconst inputBaseClass =\n  'm-0 box-border h-full w-full min-w-0 border-0 bg-transparent text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[length:var(--field-placeholder-font-size)] placeholder:font-[var(--field-placeholder-font-weight)] placeholder:text-[var(--chekin-color-gray-1)]';\n\nconst iconButtonClass =\n  'flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[var(--chekin-neutral-500)] outline-none hover:shadow-[0_3px_3px_#0f477734] disabled:cursor-not-allowed';\n\nexport function SingleDateInput({\n  id,\n  name,\n  labelId,\n  text,\n  placeholder = DEFAULT_PLACEHOLDER,\n  inputRef,\n  isEmpty,\n  isFocused,\n  isBlocked,\n  isInvalid,\n  loading,\n  readOnly,\n  hideClearDate,\n  hideCalendarIcon,\n  isOpen,\n  clearLabel,\n  openCalendarLabel,\n  onTextChange,\n  onFocus,\n  onBlur,\n  onRowClick,\n  onReset,\n  onToggleCalendar,\n}: SingleDateInputProps) {\n  const inputClass = cn(\n    inputBaseClass,\n    isBlocked && 'cursor-not-allowed',\n    loading && 'cursor-progress',\n  );\n\n  return (\n    <div\n      className={cn(\n        'relative box-border flex h-12 w-full items-center rounded-[6px] pr-2 text-[16px] font-medium text-[var(--chekin-color-brand-navy)] transition-colors duration-200',\n        isEmpty && !isFocused && 'bg-[var(--empty-field-background)]',\n      )}\n      onClick={onRowClick}\n    >\n      <input\n        ref={inputRef}\n        id={id}\n        name={name}\n        type=\"text\"\n        inputMode=\"numeric\"\n        autoComplete=\"off\"\n        placeholder={placeholder}\n        value={text}\n        disabled={isBlocked}\n        readOnly={readOnly}\n        aria-invalid={isInvalid}\n        aria-labelledby={labelId}\n        onChange={event => onTextChange(event.target.value)}\n        onFocus={onFocus}\n        onBlur={onBlur}\n        className={cn(\n          inputClass,\n          'pl-[14px] pr-0',\n          isEmpty && !isFocused && 'placeholder:invisible',\n        )}\n      />\n      <span className=\"ml-auto flex shrink-0 items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]\">\n        {!readOnly && !hideClearDate && !isEmpty && (\n          <button\n            type=\"button\"\n            disabled={isBlocked}\n            onClick={onReset}\n            className={iconButtonClass}\n            aria-label={clearLabel}\n          >\n            <SquareX\n              size={16}\n              fill=\"var(--chekin-neutral-500)\"\n              color=\"#f8f8f8\"\n              strokeWidth={1.8}\n            />\n          </button>\n        )}\n        {!readOnly && !hideCalendarIcon && (\n          <button\n            type=\"button\"\n            disabled={isBlocked}\n            onClick={onToggleCalendar}\n            aria-pressed={isOpen}\n            className={cn(\n              'flex h-6 w-6 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 outline-none disabled:cursor-not-allowed',\n              isFocused || isOpen\n                ? 'text-[var(--chekin-color-brand-blue)]'\n                : 'text-[var(--chekin-color-gray-2)]',\n            )}\n            aria-label={openCalendarLabel}\n          >\n            <CalendarDays size={18} />\n          </button>\n        )}\n      </span>\n    </div>\n  );\n}\n","import * as React from 'react';\nimport {type Matcher, type PropsBase, type PropsSingle} from 'react-day-picker';\nimport {Calendar} from '../../../calendar';\n\ntype SingleDateCalendarProps = Omit<\n  Partial<PropsSingle>,\n  'mode' | 'selected' | 'onSelect'\n> &\n  Omit<PropsBase, 'mode' | 'selected' | 'disabled'> & {\n    value: Date | undefined;\n    month: Date;\n    onMonthChange: (month: Date) => void;\n    onSelect: NonNullable<PropsSingle['onSelect']>;\n    numberOfMonths: number;\n    minDate?: Date;\n    maxDate?: Date;\n    autoFocus?: boolean;\n    disabledMatchers: Matcher[];\n    components?: PropsBase['components'];\n  };\n\nexport function SingleDateCalendar({\n  value,\n  month,\n  onMonthChange,\n  onSelect,\n  numberOfMonths,\n  minDate,\n  maxDate,\n  autoFocus,\n  disabledMatchers,\n  components,\n  ...dayPickerProps\n}: SingleDateCalendarProps) {\n  return (\n    <Calendar\n      mode=\"single\"\n      selected={value}\n      month={month}\n      onMonthChange={onMonthChange}\n      onSelect={onSelect}\n      numberOfMonths={numberOfMonths}\n      startMonth={minDate}\n      endMonth={maxDate}\n      autoFocus={autoFocus}\n      disabled={disabledMatchers}\n      components={components}\n      className=\"p-5\"\n      {...dayPickerProps}\n    />\n  );\n}\n","import * as React from 'react';\nimport {addDays, addHours, addMinutes, format, parse} from 'date-fns';\nimport {Select, type SingleSelectProps} from '../select';\n\ntype TimePickerFormat = 'time' | 'timeEach15Minutes' | 'timeEach30Minutes' | 'hours';\n\ntype TimeSettings = {\n  interval_unit?: 'M' | 'H';\n  interval?: number;\n  min_time?: string;\n  max_time?: string;\n  addNextDay?: boolean;\n};\n\ntype TimePickerProps = Omit<SingleSelectProps<unknown, string, string>, 'options'> & {\n  format?: TimePickerFormat;\n  timeSettings?: TimeSettings;\n  options?: SingleSelectProps<unknown, string, string>['options'];\n};\n\nconst SHORT_TIME_FORMAT = 'HH:mm';\n\nfunction parseTime(value: string) {\n  return parse(value, SHORT_TIME_FORMAT, new Date());\n}\n\nfunction getRange(\n  settings: Required<Omit<TimeSettings, 'addNextDay'>> & {\n    addNextDay: boolean;\n  },\n) {\n  const min = parseTime(settings.min_time);\n  const max =\n    settings.max_time === '00:00' && settings.addNextDay\n      ? addDays(parseTime(settings.max_time), 1)\n      : parseTime(settings.max_time);\n  return {min, max};\n}\n\nfunction buildOptions(settings: TimeSettings) {\n  const interval_unit = settings.interval_unit ?? 'M';\n  const interval = settings.interval ?? (interval_unit === 'H' ? 1 : 60);\n  const min_time = settings.min_time ?? '00:00';\n  const max_time = settings.max_time ?? (interval_unit === 'H' ? '23:00' : '23:00');\n  const addNextDay = settings.addNextDay !== false;\n  const {min, max} = getRange({interval_unit, interval, min_time, max_time, addNextDay});\n\n  const options: {value: string; label: string}[] = [];\n  let current = new Date(min.getTime());\n  while (current.getTime() <= max.getTime()) {\n    const text = format(current, SHORT_TIME_FORMAT);\n    options.push({value: text, label: text});\n    current =\n      interval_unit === 'H' ? addHours(current, interval) : addMinutes(current, interval);\n  }\n  return options;\n}\n\nconst FORMAT_SETTINGS: Record<TimePickerFormat, TimeSettings> = {\n  time: {interval_unit: 'M', interval: 30, min_time: '00:00', max_time: '23:30'},\n  timeEach15Minutes: {\n    interval_unit: 'M',\n    interval: 15,\n    min_time: '00:00',\n    max_time: '23:45',\n  },\n  timeEach30Minutes: {\n    interval_unit: 'M',\n    interval: 30,\n    min_time: '00:00',\n    max_time: '23:30',\n  },\n  hours: {interval_unit: 'H', interval: 1, min_time: '00:00', max_time: '23:00'},\n};\n\nconst TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(function TimePicker(\n  {format: formatName = 'time', timeSettings, options, ...selectProps},\n  ref,\n) {\n  const resolvedOptions = React.useMemo(() => {\n    if (options) return options;\n    const settings = timeSettings ?? FORMAT_SETTINGS[formatName];\n    return buildOptions(settings);\n  }, [formatName, options, timeSettings]);\n\n  return <Select ref={ref} {...selectProps} options={resolvedOptions} />;\n});\n\nexport {TimePicker};\nexport type {TimePickerProps, TimePickerFormat, TimeSettings};\n","import * as React from 'react';\nimport {Download, Paperclip, SquareX} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {useCombinedRef} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {Fieldset} from '../_fieldset';\n\ntype FileInputValue = File | string | null;\n\ntype FileInputProps = {\n  label?: string;\n  value?: FileInputValue;\n  onChange?: (value: File | null, event?: React.ChangeEvent<HTMLInputElement>) => void;\n  onFocus?: React.FocusEventHandler<HTMLInputElement>;\n  onDownload?: (url: string) => void;\n  name?: string;\n  placeholder?: string;\n  accept?: string;\n  multiple?: boolean;\n  disabled?: boolean;\n  readOnly?: boolean;\n  loading?: boolean;\n  invalid?: boolean;\n  error?: string;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  helperText?: string;\n  hideErrorMessage?: boolean;\n  className?: string;\n  width?: number | string;\n  downloadLabel?: string;\n  fileNameFromUrl?: (url: string) => string;\n};\n\nfunction defaultDownload(url: string) {\n  window.open(url, '_blank', 'noopener,noreferrer');\n}\n\nconst FileInput = React.forwardRef<HTMLInputElement, FileInputProps>(function FileInput(\n  {\n    label,\n    value,\n    onChange,\n    onFocus,\n    onDownload = defaultDownload,\n    name = 'file',\n    placeholder,\n    accept,\n    multiple,\n    disabled,\n    readOnly,\n    loading,\n    invalid,\n    error,\n    optional,\n    tooltip,\n    helperText,\n    hideErrorMessage,\n    className,\n    width,\n    downloadLabel,\n  },\n  ref,\n) {\n  const internalRef = React.useRef<HTMLInputElement>(null);\n  const inputRef = useCombinedRef(ref, internalRef);\n  const {t} = useTranslation();\n  const resolvedLabel = label ?? t('upload_file');\n  const resolvedDownloadLabel = downloadLabel ?? t('download_attachment');\n  const reactId = React.useId();\n  const inputId = `${name || 'dash-file'}-${reactId}`;\n  const labelId = `${inputId}-label`;\n  const errorId = `${inputId}-error`;\n\n  const isBlocked = Boolean(disabled) || Boolean(loading);\n  const isInvalid = Boolean(invalid || error);\n  const isEmpty = !value;\n  const wrapperWidth = toCssSize(width);\n  const isUrl = typeof value === 'string' && value.length > 0;\n  const isFile = typeof File !== 'undefined' && value instanceof File;\n  const hasFileChip = isUrl || isFile;\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const file = event.target.files?.[0] ?? null;\n    onChange?.(file, event);\n  };\n\n  const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n    if (internalRef.current) internalRef.current.value = '';\n    onChange?.(null);\n  };\n\n  const handleDownload = (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n    if (isUrl) onDownload(value as string);\n  };\n\n  return (\n    <label\n      htmlFor={inputId}\n      className={cn(\n        'relative block w-[var(--field-width,100%)] max-w-[var(--field-max-width,296px)] cursor-pointer text-left',\n        (disabled || readOnly) && 'cursor-not-allowed',\n        loading && 'cursor-progress opacity-50',\n        disabled && 'opacity-50',\n        className,\n      )}\n      style={wrapperWidth ? {width: wrapperWidth} : undefined}\n    >\n      <input\n        ref={inputRef}\n        id={inputId}\n        name={name}\n        type=\"file\"\n        accept={accept}\n        multiple={multiple}\n        disabled={isBlocked || readOnly}\n        onChange={handleFileChange}\n        onFocus={onFocus}\n        className=\"absolute h-[0.1px] w-[0.1px] opacity-0\"\n        aria-labelledby={labelId}\n        aria-invalid={isInvalid}\n      />\n      <div className=\"relative w-full\">\n        <div className=\"relative w-full\">\n          <div\n            className={cn(\n              'relative box-border flex h-12 w-full items-center justify-between gap-2 rounded-[6px] px-4 text-[16px] font-medium text-[var(--chekin-color-brand-navy)]',\n              isEmpty && 'bg-[var(--empty-field-background)]',\n            )}\n          >\n            {hasFileChip ? (\n              <div\n                className=\"inline-flex h-6 max-w-[85%] items-center rounded-[4px] border border-[var(--chekin-neutral-400)] bg-[var(--chekin-neutral-75)] pl-[10px] pr-1\"\n                onClick={event => event.preventDefault()}\n              >\n                {isUrl ? (\n                  <button\n                    type=\"button\"\n                    onClick={handleDownload}\n                    className=\"inline-flex items-center gap-[7px] truncate border-0 bg-transparent p-0 text-[14px] font-medium text-[var(--chekin-color-brand-navy)] outline-none\"\n                  >\n                    <span className=\"truncate\">{resolvedDownloadLabel}</span>\n                    <Download size={15} />\n                  </button>\n                ) : (\n                  <span className=\"truncate text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\">\n                    {(value as File).name}\n                  </span>\n                )}\n                <button\n                  type=\"button\"\n                  disabled={isBlocked || readOnly}\n                  onClick={handleClear}\n                  className=\"ml-2 flex h-[15px] w-[15px] items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[var(--chekin-neutral-500)] outline-none hover:shadow-[0_3px_3px_#0f477734]\"\n                  aria-label={t('remove_file')}\n                >\n                  <SquareX\n                    size={15}\n                    fill=\"var(--chekin-neutral-500)\"\n                    color=\"#f8f8f8\"\n                    strokeWidth={1.8}\n                  />\n                </button>\n              </div>\n            ) : (\n              <span className=\"block min-w-0 flex-1 truncate text-left text-[var(--chekin-color-gray-1)]\">\n                {placeholder ?? ''}\n              </span>\n            )}\n            <span className=\"ml-auto flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n              <Paperclip size={20} />\n            </span>\n          </div>\n          <Fieldset\n            isFocused={false}\n            invalid={isInvalid}\n            isEmpty={isEmpty}\n            isActivated={!isEmpty}\n            disabled={disabled}\n            loading={loading}\n            readOnly={readOnly}\n            htmlFor={inputId}\n            labelId={labelId}\n            legend={resolvedLabel}\n            label={resolvedLabel}\n            tooltip={tooltip}\n          />\n        </div>\n        {!error && optional && (\n          <span className=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n            {typeof optional === 'string' ? optional : t('optional')}\n          </span>\n        )}\n        {!error && helperText && (\n          <span className=\"mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]\">\n            {helperText}\n          </span>\n        )}\n        {error && !hideErrorMessage && (\n          <FieldErrorMessage\n            id={errorId}\n            message={error}\n            className=\"mt-[1px] text-[14px]\"\n          />\n        )}\n      </div>\n    </label>\n  );\n});\n\nexport {FileInput};\nexport type {FileInputProps, FileInputValue};\n","import * as React from 'react';\nimport {cn} from '../../lib/cn';\nimport {useCombinedRef, useOutsideClick} from '../../hooks';\n\ntype SelectIconsBoxProps = {\n  children: React.ReactNode;\n  icons: string[];\n  renderIcon: (iconName: string, color: string) => React.ReactNode;\n  onSelect: (iconName: string) => void;\n  columns?: number;\n  iconsColor?: string;\n  isOpen?: boolean;\n  defaultOpen?: boolean;\n  onOpenChange?: (isOpen: boolean) => void;\n  onFocus?: React.FocusEventHandler<HTMLDivElement>;\n  position?: 'left' | 'right' | 'center';\n  className?: string;\n  boxClassName?: string;\n};\n\nconst FOCUSABLE_TRIGGER_SELECTOR =\n  'input:not([type=\"hidden\"]):not([disabled]):not([readonly]), button:not([disabled])';\n\nconst SelectIconsBox = React.forwardRef<HTMLDivElement, SelectIconsBoxProps>(\n  function SelectIconsBox(\n    {\n      children,\n      icons,\n      renderIcon,\n      onSelect,\n      columns = 4,\n      iconsColor = 'var(--chekin-neutral-600)',\n      isOpen: controlledOpen,\n      defaultOpen = false,\n      onOpenChange,\n      onFocus,\n      position = 'left',\n      className,\n      boxClassName,\n    },\n    ref,\n  ) {\n    const containerRef = React.useRef<HTMLDivElement>(null);\n    const combinedContainerRef = useCombinedRef(containerRef, ref);\n    const isControlled = controlledOpen !== undefined;\n    const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n    const isOpen = isControlled ? controlledOpen : internalOpen;\n\n    const setOpen = (next: boolean) => {\n      if (!isControlled) setInternalOpen(next);\n      onOpenChange?.(next);\n    };\n\n    const handleToggle = (event: React.MouseEvent<HTMLDivElement>) => {\n      if ((event.target as HTMLElement).closest('[data-icon-box-item]')) return;\n      setOpen(!isOpen);\n    };\n\n    useOutsideClick({\n      elementRef: containerRef,\n      onOutsideClick: () => setOpen(false),\n      isDisabled: !isOpen,\n    });\n\n    const handlePick = (iconName: string) => {\n      onSelect(iconName);\n      setOpen(false);\n    };\n\n    const handleContainerFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n      onFocus?.(event);\n      if (event.target !== event.currentTarget) return;\n      const focusable = event.currentTarget.querySelector<HTMLElement>(\n        FOCUSABLE_TRIGGER_SELECTOR,\n      );\n      focusable?.focus();\n    };\n\n    return (\n      <div\n        ref={combinedContainerRef}\n        tabIndex={-1}\n        onFocus={handleContainerFocus}\n        onClick={handleToggle}\n        className={cn('relative inline-block outline-none', className)}\n      >\n        {children}\n        {isOpen && (\n          <div\n            className={cn(\n              'absolute top-full z-30 mt-1 grid max-h-[192px] overflow-y-auto rounded-[6px] bg-white p-6 shadow-[0_15px_15px_0_rgba(33,72,255,0.2)]',\n              position === 'left' && 'left-0',\n              position === 'right' && 'right-0',\n              position === 'center' && 'left-1/2 -translate-x-1/2',\n              boxClassName,\n            )}\n            style={{gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`}}\n          >\n            {icons.map(iconName => (\n              <button\n                key={iconName}\n                type=\"button\"\n                data-icon-box-item\n                onClick={() => handlePick(iconName)}\n                className=\"relative flex h-10 w-10 cursor-pointer items-center justify-center rounded-full border-0 bg-transparent p-0 outline-none hover:bg-[var(--chekin-neutral-50)]\"\n                aria-label={iconName}\n              >\n                {renderIcon(iconName, iconsColor)}\n              </button>\n            ))}\n          </div>\n        )}\n      </div>\n    );\n  },\n);\n\nSelectIconsBox.displayName = 'SelectIconsBox';\n\nexport {SelectIconsBox};\nexport type {SelectIconsBoxProps};\n","export const DEVICE_BREAKPOINTS = {\n  mobileS: '320px',\n  mobileM: '375px',\n  mobileL: '425px',\n  mobileXL: '479px',\n  tabletS: '640px',\n  tablet: '768px',\n  tabletL: '970px',\n  laptop: '1025px',\n  yFullHD: '1080px',\n  laptopM: '1280px',\n  laptopL: '1440px',\n  laptopXL: '1640px',\n  desktop: '2560px',\n\n  // laptopM: '1126px',\n  // laptopML: '1300px',\n};\n","import {toast} from 'sonner';\nimport {getErrorMessage} from './getErrorMessage';\nimport i18next from 'i18next';\n\nexport function addSupportEmailToMessage(message?: string, prefixText?: string) {\n  if (typeof message !== 'string') {\n    return message;\n  }\n\n  const builtMessage = `${prefixText ? `${prefixText} ` : ''}${message}`;\n\n  return (\n    <div>\n      <div>{builtMessage}</div>\n      {i18next.t('reach_us_at_email')}\n    </div>\n  );\n}\n\ntype CustomToastOptions = {\n  autoClose?: number;\n  prefixText?: string;\n};\n\nfunction toastResponseError(error: unknown, options: CustomToastOptions = {}) {\n  const message =\n    typeof error === 'string'\n      ? error\n      : addSupportEmailToMessage(getErrorMessage(error), options?.prefixText);\n\n  const toastId =\n    (error as Error)?.message || (typeof error === 'string' && error) || 'toastId';\n\n  toast.error(message, {\n    id: toastId,\n    duration: options?.autoClose || Infinity,\n    ...options,\n  });\n}\n\nexport {toastResponseError};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\ntype FieldError = {\n  field?: string;\n  message?: string;\n};\n\nexport function getErrorMessage(error?: any) {\n  let message = '';\n\n  if (!error) {\n    return message;\n  }\n\n  if (typeof error === 'string') {\n    return error;\n  }\n\n  if (error?.details) {\n    return error?.details;\n  }\n\n  if (error?.errors?.length) {\n    const nonFieldErrors = 'non_field_errors';\n    Object.values(error.errors).forEach(err => {\n      const error = err as FieldError;\n      message += ` ${error.field && error.field !== nonFieldErrors ? `${error.field}: ` : ''} ${\n        error.message\n      }\\n`;\n    });\n  } else if (error?.message) {\n    message = error.message;\n  } else {\n    if (typeof error === 'object') {\n      Object.values(error).forEach(err => {\n        message += ` ${err}\\n`;\n      });\n    }\n  }\n\n  if (typeof message === 'object') {\n    return '';\n  }\n\n  if (message?.startsWith('Unexpected JSON')) {\n    return 'Server error.';\n  }\n\n  return message;\n}\n","import {type TextareaHTMLAttributes, forwardRef, useId} from 'react';\nimport {cn} from '../../lib/cn';\n\nexport type LegacyTextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & {\n  label?: string;\n  invalid?: boolean;\n  maxLength?: number;\n  textareaClassName?: string;\n};\n\n/**\n * @deprecated\n */\nexport const LegacyTextarea = forwardRef<HTMLTextAreaElement, LegacyTextareaProps>(\n  (\n    {className, textareaClassName, label, disabled, name, invalid, ...textareaProps},\n    ref,\n  ) => {\n    const inputId = useId();\n\n    return (\n      <div className={cn('relative', className)}>\n        <textarea\n          ref={ref}\n          id={inputId}\n          name={name}\n          disabled={disabled}\n          className={cn(\n            'peer box-border min-h-[120px] w-full resize-none rounded-lg border border-[var(--chekin-neutral-300)] bg-[var(--chekin-neutral-50)] px-4 py-3 text-[var(--chekin-blue-900)] outline-none [scrollbar-color:#777e91_transparent] [scrollbar-gutter:stable] placeholder:text-[var(--chekin-neutral-600)] placeholder:opacity-100 focus:border-[var(--chekin-blue-500)] focus:bg-white focus:transition-colors focus:duration-100 focus:ease-in-out [&:not(:placeholder-shown)]:bg-white',\n            invalid &&\n              'border-[var(--chekin-red-500)] focus:border-[var(--chekin-red-500)]',\n            disabled &&\n              'cursor-not-allowed resize-none border-[var(--chekin-neutral-500)] bg-[var(--chekin-neutral-50)] text-[var(--chekin-neutral-500)] placeholder:text-[var(--chekin-neutral-500)]',\n            textareaClassName,\n          )}\n          {...textareaProps}\n        />\n        {label && (\n          <label\n            htmlFor={inputId}\n            className={cn(\n              'pointer-events-none absolute left-3 top-4 px-1 text-[var(--chekin-neutral-600)] transition-all duration-100 ease-in-out peer-focus:left-2 peer-focus:top-[-0.6rem] peer-focus:bg-white peer-focus:text-sm peer-focus:font-medium peer-focus:text-[var(--chekin-blue-500)] peer-[:not(:placeholder-shown)]:left-2 peer-[:not(:placeholder-shown)]:top-[-0.6rem] peer-[:not(:placeholder-shown)]:bg-white peer-[:not(:placeholder-shown)]:text-sm peer-[:not(:placeholder-shown)]:font-medium',\n              invalid &&\n                'text-[var(--chekin-red-500)] peer-focus:text-[var(--chekin-red-500)]',\n              disabled && 'text-[var(--chekin-neutral-500)]',\n            )}\n          >\n            {label}\n          </label>\n        )}\n      </div>\n    );\n  },\n);\n\nLegacyTextarea.displayName = 'LegacyTextarea';\n","import * as React from 'react';\nimport {Calendar} from 'lucide-react';\nimport {AirbnbDatePickerContent} from './DatePickerContent';\nimport {\n  clampDate,\n  formatDateInputValue,\n  formatDateValue,\n  getMonthLabels,\n  normalizeDateValue,\n} from './datePicker.utils';\nimport {useDatePickerWheel} from './useDatePickerWheel';\nimport {useScreenResize, useCombinedRef} from '../../hooks';\nimport {DEVICE} from '../../lib/device';\nimport {cn} from '../../lib/cn';\nimport {AirbnbFieldTrigger} from '../field-trigger';\n\ntype AirbnbDatePickerValue = Date | number | null | undefined | '';\n\ntype AirbnbDatePickerProps = {\n  label: string;\n  topLabel?: string;\n  value?: AirbnbDatePickerValue;\n  defaultValue?: AirbnbDatePickerValue;\n  onChange: (value: Date | null) => void;\n  onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n  placeholder?: string;\n  disabled?: boolean;\n  error?: string;\n  invalid?: boolean;\n  loading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  helper?: React.ReactNode;\n  className?: string;\n  name?: string;\n  minDate?: Date;\n  maxDate?: Date;\n  locale?: string;\n  mobileTitle?: string;\n  doneLabel?: string;\n  formatValue?: (date: Date) => string;\n};\n\nconst DEFAULT_MIN_DATE = new Date(1920, 0, 1);\n\nconst AirbnbDatePicker = React.forwardRef<HTMLButtonElement, AirbnbDatePickerProps>(\n  (\n    {\n      label,\n      topLabel,\n      value,\n      defaultValue,\n      onChange,\n      onBlur,\n      placeholder = 'Select a date',\n      disabled,\n      error,\n      invalid,\n      loading,\n      optional,\n      tooltip,\n      helper,\n      className,\n      name,\n      minDate,\n      maxDate,\n      locale = 'en-US',\n      mobileTitle,\n      doneLabel = 'Done',\n      formatValue = formatDateValue,\n    },\n    ref,\n  ) => {\n    const {isMatch: isMobile} = useScreenResize(DEVICE.mobileXL);\n    const [isOpen, setIsOpen] = React.useState(false);\n    const triggerId = React.useId();\n    const pickerId = React.useId();\n    const labelId = React.useId();\n    const valueId = React.useId();\n    const helperTextId = React.useId();\n    const errorId = React.useId();\n    const internalRef = React.useRef<HTMLButtonElement>(null);\n    const combinedRef = useCombinedRef(ref, internalRef);\n    const monthLabels = React.useMemo(() => getMonthLabels(locale), [locale]);\n    const resolvedMinDate = React.useMemo(\n      () => normalizeDateValue(minDate) ?? DEFAULT_MIN_DATE,\n      [minDate],\n    );\n    const resolvedMaxDate = React.useMemo(\n      () => normalizeDateValue(maxDate) ?? new Date(),\n      [maxDate],\n    );\n    const normalizedValue = React.useMemo(() => normalizeDateValue(value), [value]);\n    const normalizedDefaultValue = React.useMemo(\n      () => normalizeDateValue(defaultValue),\n      [defaultValue],\n    );\n    const resolvedValue = React.useMemo(\n      () =>\n        normalizedValue\n          ? clampDate(normalizedValue, resolvedMinDate, resolvedMaxDate)\n          : null,\n      [normalizedValue, resolvedMaxDate, resolvedMinDate],\n    );\n    const hasValue = Boolean(resolvedValue);\n    const isBlocked = Boolean(disabled) || Boolean(loading);\n    const triggerError = error ?? invalid;\n    const {\n      dayIndex,\n      dayListRef,\n      dayScrollTop,\n      days,\n      draftDate,\n      handleColumnKeyDown,\n      handleColumnScroll,\n      handleOptionSelect,\n      monthIndex,\n      monthListRef,\n      months,\n      monthScrollTop,\n      yearIndex,\n      yearListRef,\n      yearScrollTop,\n      years,\n    } = useDatePickerWheel({\n      isOpen,\n      value: resolvedValue,\n      defaultValue: normalizedDefaultValue,\n      minDate: resolvedMinDate,\n      maxDate: resolvedMaxDate,\n    });\n\n    const handleOpenChange = React.useCallback(\n      (nextOpen: boolean) => {\n        if (isBlocked && nextOpen) return;\n\n        setIsOpen(nextOpen);\n\n        if (!nextOpen) {\n          internalRef.current?.focus();\n        }\n      },\n      [isBlocked],\n    );\n\n    const handleDone = React.useCallback(() => {\n      if (isBlocked) return;\n\n      onChange(clampDate(draftDate, resolvedMinDate, resolvedMaxDate));\n      handleOpenChange(false);\n    }, [\n      draftDate,\n      handleOpenChange,\n      isBlocked,\n      onChange,\n      resolvedMaxDate,\n      resolvedMinDate,\n    ]);\n\n    const handleTriggerClick = React.useCallback(() => {\n      if (isBlocked) return;\n\n      setIsOpen(true);\n    }, [isBlocked]);\n\n    const handleTriggerKeyDown = React.useCallback(\n      (event: React.KeyboardEvent<HTMLButtonElement>) => {\n        if (isBlocked) return;\n\n        if (\n          event.key === 'ArrowDown' ||\n          event.key === 'ArrowUp' ||\n          event.key === 'Enter' ||\n          event.key === ' '\n        ) {\n          event.preventDefault();\n          setIsOpen(true);\n        }\n      },\n      [isBlocked],\n    );\n\n    React.useEffect(() => {\n      if (isBlocked) {\n        setIsOpen(false);\n      }\n    }, [isBlocked]);\n\n    return (\n      <div className={cn('relative w-full max-w-[var(--max-field-width)]', className)}>\n        {name && (\n          <input\n            type=\"hidden\"\n            name={name}\n            value={resolvedValue ? formatDateInputValue(resolvedValue) : ''}\n          />\n        )}\n        <AirbnbFieldTrigger\n          id={triggerId}\n          ref={combinedRef}\n          label={label}\n          topLabel={topLabel}\n          labelId={labelId}\n          valueId={hasValue ? valueId : undefined}\n          helperTextId={!hasValue ? helperTextId : undefined}\n          errorId={error ? errorId : undefined}\n          describedBy={error ? errorId : undefined}\n          labelText={topLabel ? placeholder : undefined}\n          valueText={resolvedValue ? formatValue(resolvedValue) : undefined}\n          placeholder={placeholder}\n          disabled={disabled}\n          error={triggerError}\n          loading={loading}\n          optional={optional}\n          tooltip={tooltip}\n          helper={helper}\n          forceLabelText={Boolean(optional) || Boolean(tooltip)}\n          aria-haspopup=\"dialog\"\n          aria-expanded={isOpen}\n          onClick={handleTriggerClick}\n          onKeyDown={handleTriggerKeyDown}\n          onBlur={onBlur}\n          trailingAdornment={\n            <Calendar\n              className=\"h-5 w-5 text-[var(--chekin-airbnb-ink)]\"\n              strokeWidth={2}\n            />\n          }\n        />\n        <AirbnbDatePickerContent\n          baseId={pickerId}\n          open={isOpen}\n          isMobile={isMobile}\n          label={label}\n          title={mobileTitle ?? label}\n          doneLabel={doneLabel}\n          monthLabels={months.map(month => monthLabels[month] ?? '')}\n          days={days}\n          years={years}\n          monthIndex={monthIndex}\n          dayIndex={dayIndex}\n          yearIndex={yearIndex}\n          monthScrollTop={monthScrollTop}\n          dayScrollTop={dayScrollTop}\n          yearScrollTop={yearScrollTop}\n          monthListRef={monthListRef}\n          dayListRef={dayListRef}\n          yearListRef={yearListRef}\n          onOpenChange={handleOpenChange}\n          onDone={handleDone}\n          onColumnScroll={handleColumnScroll}\n          onColumnKeyDown={handleColumnKeyDown}\n          onOptionSelect={handleOptionSelect}\n        />\n      </div>\n    );\n  },\n);\nAirbnbDatePicker.displayName = 'AirbnbDatePicker';\n\nexport {AirbnbDatePicker};\nexport type {AirbnbDatePickerProps, AirbnbDatePickerValue};\n","import * as React from 'react';\nimport {Loader2} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {HelpTooltip} from '../../help-tooltip';\nimport {cn} from '../../lib/cn';\nimport {AirbnbFieldHelperText} from '../field-helper-text';\n\ntype AirbnbFieldTriggerProps = {\n  as?: 'button' | 'div';\n  id: string;\n  label: string;\n  topLabel?: string;\n  labelId: string;\n  valueId?: string;\n  helperTextId?: string;\n  errorId?: string;\n  labelText?: React.ReactNode;\n  valueText?: string;\n  placeholder?: string;\n  helper?: React.ReactNode;\n  disabled?: boolean;\n  error?: boolean | string;\n  loading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  describedBy?: string;\n  className?: string;\n  contentClassName?: string;\n  trailingAdornment?: React.ReactNode;\n  forceFloatingLabel?: boolean;\n  forceLabelText?: boolean;\n  hideErrorMessage?: boolean;\n  children?: React.ReactNode;\n  onClick?: () => void;\n  onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement | HTMLDivElement>;\n} & Omit<\n  React.HTMLAttributes<HTMLButtonElement | HTMLDivElement>,\n  'children' | 'className' | 'disabled' | 'id' | 'onClick' | 'onKeyDown'\n>;\n\nconst AirbnbFieldTrigger = React.forwardRef<\n  HTMLButtonElement | HTMLDivElement,\n  AirbnbFieldTriggerProps\n>(\n  (\n    {\n      as = 'button',\n      id,\n      label,\n      topLabel,\n      labelId,\n      valueId,\n      helperTextId,\n      errorId,\n      labelText,\n      valueText,\n      placeholder,\n      helper,\n      disabled,\n      error,\n      loading,\n      optional,\n      tooltip,\n      describedBy,\n      className,\n      contentClassName,\n      trailingAdornment,\n      forceFloatingLabel = false,\n      forceLabelText = false,\n      hideErrorMessage = false,\n      children,\n      onClick,\n      onKeyDown,\n      ...props\n    },\n    ref,\n  ) => {\n    const {t} = useTranslation();\n    const generatedHelperId = React.useId();\n    const hasValue = Boolean(valueText);\n    const isRaised = hasValue || forceFloatingLabel;\n    const optionalLabel = optional\n      ? typeof optional === 'string'\n        ? optional\n        : t('optional')\n      : undefined;\n    const visibleLabelText = labelText ?? label;\n    const hasLabelMeta = Boolean(optionalLabel) || Boolean(tooltip);\n    const resolvedLabelText =\n      visibleLabelText && hasLabelMeta ? (\n        <span className=\"inline-flex max-w-full items-center gap-1.5 align-middle\">\n          <span className=\"min-w-0 truncate\">{visibleLabelText}</span>\n          {optionalLabel && (\n            <span className=\"text-current opacity-70 lowercase\">({optionalLabel})</span>\n          )}\n          {tooltip && (\n            <HelpTooltip\n              content={tooltip}\n              side=\"top\"\n              size={16}\n              triggerAs={as === 'button' ? 'span' : 'button'}\n              className=\"pointer-events-auto text-current opacity-70 hover:text-current hover:opacity-100\"\n            />\n          )}\n        </span>\n      ) : (\n        visibleLabelText\n      );\n    const animatedLabel = forceLabelText\n      ? (resolvedLabelText ?? placeholder)\n      : isRaised\n        ? resolvedLabelText\n        : (label ?? placeholder);\n    const hasInvalidState = Boolean(error);\n    const errorMessage = typeof error === 'string' ? error : undefined;\n    const showErrorMessage = Boolean(errorMessage) && !hideErrorMessage;\n    const showHelper = Boolean(helper) && !showErrorMessage;\n    const helperId = helper ? generatedHelperId : undefined;\n    const describedByValue =\n      [describedBy, showHelper ? helperId : undefined].filter(Boolean).join(' ') ||\n      undefined;\n    const isBlocked = Boolean(disabled) || Boolean(loading);\n    const resolvedTrailingAdornment =\n      loading || trailingAdornment ? (\n        <span className=\"flex items-center gap-2\">\n          {trailingAdornment}\n          {loading && (\n            <Loader2\n              aria-hidden=\"true\"\n              className=\"h-5 w-5 animate-spin text-[var(--chekin-color-gray-1)]\"\n            />\n          )}\n        </span>\n      ) : undefined;\n    const sharedClasses = cn(\n      'relative flex w-full items-center border bg-transparent text-left transition-colors focus-visible:outline-none',\n      'rounded-[12px] border-[var(--chekin-airbnb-gray-muted)] pl-4 pr-4 focus-visible:ring-2 focus-visible:ring-[var(--chekin-airbnb-ink-strong)] focus-visible:ring-offset-2',\n      isRaised ? 'min-h-[60px]' : 'h-[60px]',\n      hasInvalidState\n        ? 'border-[var(--error-message-color)] bg-[var(--chekin-airbnb-pink-surface-soft)]'\n        : 'border-[var(--chekin-airbnb-gray-muted)]',\n      disabled\n        ? 'cursor-not-allowed opacity-50'\n        : loading\n          ? 'cursor-progress'\n          : 'cursor-pointer',\n      className,\n    );\n    const sharedContent = (\n      <>\n        <span\n          className={cn(\n            'relative min-w-0 flex-1 pr-2',\n            isRaised ? 'h-[42px]' : 'h-[28px]',\n            contentClassName,\n          )}\n        >\n          <span\n            id={labelId}\n            className={cn(\n              'absolute left-0 origin-left transition-all duration-200 ease-out',\n              hasLabelMeta ? 'max-w-full' : 'pointer-events-none truncate',\n              isRaised\n                ? 'top-[-1px] translate-y-0 text-xs leading-5'\n                : 'top-1/2 -translate-y-1/2 text-[16px] leading-7',\n              hasInvalidState\n                ? 'text-[var(--error-message-color)]'\n                : 'text-[var(--chekin-airbnb-gray-text)]',\n            )}\n          >\n            {animatedLabel}\n          </span>\n          {children ? (\n            children\n          ) : hasValue ? (\n            <span\n              id={valueId}\n              className={cn(\n                'absolute left-0 block truncate transition-all duration-200 ease-out',\n                'bottom-0 translate-y-0 text-[16px] leading-6 opacity-100',\n                hasInvalidState\n                  ? 'text-[var(--error-message-color)]'\n                  : 'text-[var(--chekin-airbnb-ink-strong)]',\n              )}\n            >\n              {valueText}\n            </span>\n          ) : (\n            <span id={helperTextId} className=\"sr-only\">\n              {placeholder ?? label}\n            </span>\n          )}\n        </span>\n        {resolvedTrailingAdornment && (\n          <span\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute right-5 top-1/2 -translate-y-1/2\"\n          >\n            {resolvedTrailingAdornment}\n          </span>\n        )}\n      </>\n    );\n\n    return (\n      <div className=\"w-full\">\n        {topLabel && (\n          <p className=\"mb-3 text-[16px] font-semibold leading-5 text-[var(--chekin-airbnb-ink-strong)]\">\n            {topLabel}\n          </p>\n        )}\n        {as === 'button' ? (\n          <button\n            id={id}\n            ref={ref as React.ForwardedRef<HTMLButtonElement>}\n            type=\"button\"\n            aria-labelledby={hasValue && valueId ? `${labelId} ${valueId}` : labelId}\n            aria-describedby={describedByValue}\n            aria-invalid={hasInvalidState}\n            aria-busy={loading}\n            disabled={isBlocked}\n            onClick={isBlocked ? undefined : onClick}\n            onKeyDown={\n              isBlocked\n                ? undefined\n                : (onKeyDown as React.KeyboardEventHandler<HTMLButtonElement>)\n            }\n            className={sharedClasses}\n            {...(props as Omit<\n              React.ButtonHTMLAttributes<HTMLButtonElement>,\n              | 'children'\n              | 'className'\n              | 'disabled'\n              | 'id'\n              | 'onClick'\n              | 'onKeyDown'\n              | 'type'\n            >)}\n          >\n            {sharedContent}\n          </button>\n        ) : (\n          <div\n            id={id}\n            ref={ref as React.ForwardedRef<HTMLDivElement>}\n            aria-labelledby={hasValue && valueId ? `${labelId} ${valueId}` : labelId}\n            aria-describedby={describedByValue}\n            aria-invalid={hasInvalidState}\n            aria-busy={loading}\n            aria-disabled={isBlocked}\n            onClick={isBlocked ? undefined : onClick}\n            onKeyDown={\n              isBlocked\n                ? undefined\n                : (onKeyDown as React.KeyboardEventHandler<HTMLDivElement>)\n            }\n            className={sharedClasses}\n            {...(props as Omit<\n              React.HTMLAttributes<HTMLDivElement>,\n              'children' | 'className' | 'id' | 'onClick' | 'onKeyDown'\n            >)}\n          >\n            {sharedContent}\n          </div>\n        )}\n        {showErrorMessage && <FieldErrorMessage id={errorId} message={errorMessage} />}\n        {showHelper && (\n          <AirbnbFieldHelperText id={helperId} helper={helper} disabled={disabled} />\n        )}\n      </div>\n    );\n  },\n);\n\nAirbnbFieldTrigger.displayName = 'AirbnbFieldTrigger';\n\nexport {AirbnbFieldTrigger};\nexport type {AirbnbFieldTriggerProps};\n","import * as React from 'react';\nimport {cn} from '../../lib/cn';\n\ntype AirbnbFieldHelperTextProps = {\n  id?: string;\n  helper?: React.ReactNode;\n  disabled?: boolean;\n  className?: string;\n};\n\nfunction AirbnbFieldHelperText({\n  id,\n  helper,\n  disabled,\n  className,\n}: AirbnbFieldHelperTextProps) {\n  if (!helper) return null;\n\n  return (\n    <p\n      id={id}\n      className={cn(\n        'mt-2 text-[12px] leading-5 text-[var(--chekin-airbnb-gray-text)]',\n        disabled && 'opacity-50',\n        className,\n      )}\n    >\n      {helper}\n    </p>\n  );\n}\n\nexport {AirbnbFieldHelperText};\nexport type {AirbnbFieldHelperTextProps};\n","import * as React from 'react';\nimport {Calendar} from 'lucide-react';\nimport {type DateRange, type Matcher, type PropsRange} from 'react-day-picker';\nimport {useTranslation} from 'react-i18next';\nimport {useScreenResize, useOutsideClick} from '../../hooks';\nimport {cn} from '../../lib/cn';\nimport {DEVICE} from '../../lib/device';\nimport {isMobileModalModeAvailable} from '../../lib/runtimeSettings';\nimport {AirbnbFieldTrigger} from '../field-trigger';\nimport {\n  DEFAULT_DISPLAY_FORMAT,\n  formatDate,\n  toDate,\n  type DateInput,\n} from '../../fields/date-range-picker/dateUtils';\nimport {createDisabledMatchers} from '../../fields/date-range-picker/createDisabledMatchers';\nimport {useRangeValue} from '../../fields/date-range-picker/hooks/useRangeValue';\nimport {useRangeMonthSync} from '../../fields/date-range-picker/hooks/useRangeMonthSync';\nimport {resolveRangeSelection} from '../../fields/date-range-picker/utils/rangeSelection';\nimport {DateRangeCalendar} from '../../fields/date-range-picker/components/DateRangeCalendar';\nimport {AirbnbDateRangePopover} from './DateRangePopover';\n\ntype OpenDirection = 'up' | 'down';\n\ntype AirbnbDateRangePickerProps = {\n  label: string;\n  topLabel?: string;\n  value?: DateRange;\n  defaultValue?: DateRange;\n  onChange?: (value: DateRange | undefined, name?: string) => void;\n  onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n  name?: string;\n  invalid?: boolean;\n  error?: string;\n  disabled?: boolean;\n  loading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  helper?: React.ReactNode;\n  className?: string;\n  placeholder?: string;\n  displayFormat?: string;\n  minDate?: DateInput;\n  maxDate?: DateInput;\n  minDays?: number;\n  maxDays?: number;\n  disabledDays?: Matcher | Matcher[];\n  numberOfMonths?: number;\n  openDirection?: OpenDirection;\n  mobileTitle?: string;\n};\n\nconst AirbnbDateRangePicker = React.forwardRef<\n  HTMLButtonElement,\n  AirbnbDateRangePickerProps\n>(function AirbnbDateRangePicker(\n  {\n    label,\n    topLabel,\n    value: externalValue,\n    defaultValue,\n    onChange,\n    onBlur,\n    name,\n    invalid,\n    error,\n    disabled,\n    loading,\n    optional,\n    tooltip,\n    helper,\n    className,\n    placeholder,\n    displayFormat = DEFAULT_DISPLAY_FORMAT,\n    minDate,\n    maxDate,\n    minDays,\n    maxDays,\n    disabledDays,\n    numberOfMonths,\n    openDirection = 'down',\n    mobileTitle,\n  },\n  ref,\n) {\n  const containerRef = React.useRef<HTMLDivElement>(null);\n  const triggerId = React.useId();\n  const labelId = React.useId();\n  const valueId = React.useId();\n  const errorId = React.useId();\n  const {t} = useTranslation();\n\n  const normalizedValue = React.useMemo<DateRange | undefined>(() => {\n    if (externalValue === undefined) return undefined;\n    return {from: toDate(externalValue?.from), to: toDate(externalValue?.to)};\n  }, [externalValue]);\n  const normalizedDefaultValue = React.useMemo<DateRange | undefined>(() => {\n    if (defaultValue === undefined) return undefined;\n    return {from: toDate(defaultValue?.from), to: toDate(defaultValue?.to)};\n  }, [defaultValue]);\n\n  const {value, commit} = useRangeValue({\n    value: normalizedValue,\n    defaultValue: normalizedDefaultValue,\n    onChange,\n    name,\n  });\n\n  const normalizedMinDate = React.useMemo(() => toDate(minDate), [minDate]);\n  const normalizedMaxDate = React.useMemo(() => toDate(maxDate), [maxDate]);\n  const formatter = React.useMemo(() => formatDate(displayFormat), [displayFormat]);\n\n  const {month, setMonth, syncMonthToValue} = useRangeMonthSync(value);\n\n  const [isOpen, setIsOpen] = React.useState(false);\n  const isMobile =\n    useScreenResize(DEVICE.mobileXL).isMatch && isMobileModalModeAvailable();\n\n  const isBlocked = Boolean(disabled) || Boolean(loading);\n  const isInvalid = Boolean(invalid || error);\n  const monthsToShow = numberOfMonths ?? (isMobile ? 1 : 2);\n\n  const closeCalendar = React.useCallback(() => {\n    setIsOpen(false);\n    if (value?.from) setMonth(value.from);\n  }, [setMonth, value?.from]);\n\n  const openCalendar = React.useCallback(() => {\n    if (isBlocked) return;\n    setIsOpen(true);\n  }, [isBlocked]);\n\n  useOutsideClick({\n    elementRef: containerRef,\n    onOutsideClick: closeCalendar,\n    isDisabled: !isOpen || isMobile,\n  });\n\n  React.useEffect(() => {\n    if (isBlocked) setIsOpen(false);\n  }, [isBlocked]);\n\n  const handlePickerChange: NonNullable<PropsRange['onSelect']> = React.useCallback(\n    (range, pickedDate) => {\n      const {next, shouldClose} = resolveRangeSelection({\n        previous: value,\n        range,\n        pickedDate,\n      });\n      syncMonthToValue(next);\n      commit(next);\n      if (shouldClose) closeCalendar();\n    },\n    [closeCalendar, commit, syncMonthToValue, value],\n  );\n\n  const disabledMatchers = React.useMemo(\n    () =>\n      createDisabledMatchers({\n        minDate: normalizedMinDate,\n        maxDate: normalizedMaxDate,\n        maxDays,\n        minDays,\n        datesRange: value,\n        disabledDays,\n      }),\n    [disabledDays, maxDays, minDays, normalizedMaxDate, normalizedMinDate, value],\n  );\n\n  const placeholderMask = React.useMemo(\n    () => displayFormat.replace(/[a-zA-Z]/g, '0'),\n    [displayFormat],\n  );\n  const hasFrom = Boolean(value?.from);\n  const showValue = hasFrom || isOpen;\n  const fromText = value?.from ? formatter(value.from) : placeholderMask;\n  const toText = value?.to ? formatter(value.to) : placeholderMask;\n  const slotClass = (filled: boolean) =>\n    filled\n      ? 'text-[var(--chekin-airbnb-ink-strong)]'\n      : 'text-[var(--chekin-airbnb-gray-cool)]';\n\n  const valueContent = showValue ? (\n    <span\n      id={valueId}\n      className=\"absolute bottom-0 left-0 flex items-center gap-2 text-[16px] leading-6\"\n    >\n      <span className={slotClass(Boolean(value?.from))}>{fromText}</span>\n      <span className=\"text-[var(--chekin-airbnb-gray-text)]\">→</span>\n      <span className={slotClass(Boolean(value?.to))}>{toText}</span>\n    </span>\n  ) : undefined;\n\n  const toggleCalendar = () => {\n    if (isOpen) {\n      closeCalendar();\n      return;\n    }\n    openCalendar();\n  };\n\n  const handleTriggerKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n    if (isBlocked) return;\n    if (\n      event.key === 'ArrowDown' ||\n      event.key === 'ArrowUp' ||\n      event.key === 'Enter' ||\n      event.key === ' '\n    ) {\n      event.preventDefault();\n      openCalendar();\n    }\n  };\n\n  const drawerTitle = mobileTitle ?? label;\n  const drawerDescription = label ?? t('pick_date_range');\n\n  return (\n    <div ref={containerRef} className={cn('relative w-full', className)}>\n      <AirbnbFieldTrigger\n        id={triggerId}\n        ref={ref}\n        label={label}\n        topLabel={topLabel}\n        labelId={labelId}\n        errorId={error ? errorId : undefined}\n        describedBy={error ? errorId : undefined}\n        placeholder={placeholder ?? label}\n        disabled={disabled}\n        error={error ?? invalid}\n        loading={loading}\n        optional={optional}\n        tooltip={tooltip}\n        helper={helper}\n        forceFloatingLabel={showValue}\n        forceLabelText={Boolean(optional) || Boolean(tooltip)}\n        aria-haspopup=\"dialog\"\n        aria-expanded={isOpen}\n        aria-invalid={isInvalid}\n        onClick={toggleCalendar}\n        onKeyDown={handleTriggerKeyDown}\n        onBlur={onBlur}\n        trailingAdornment={\n          <Calendar className=\"h-5 w-5 text-[var(--chekin-airbnb-ink)]\" strokeWidth={2} />\n        }\n      >\n        {valueContent}\n      </AirbnbFieldTrigger>\n      <AirbnbDateRangePopover\n        isOpen={isOpen}\n        isMobile={isMobile}\n        openDirection={openDirection}\n        drawerTitle={drawerTitle}\n        drawerDescription={drawerDescription}\n        onClose={closeCalendar}\n      >\n        <DateRangeCalendar\n          value={value}\n          month={month}\n          onMonthChange={setMonth}\n          onSelect={handlePickerChange}\n          numberOfMonths={monthsToShow}\n          minDate={normalizedMinDate}\n          maxDate={normalizedMaxDate}\n          maxDays={maxDays}\n          minDays={minDays}\n          autoFocus={isOpen}\n          disabledMatchers={disabledMatchers}\n        />\n      </AirbnbDateRangePopover>\n    </div>\n  );\n});\n\nexport {AirbnbDateRangePicker};\nexport type {AirbnbDateRangePickerProps};\n","import * as React from 'react';\nimport {cn} from '../../lib/cn';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../drawer';\n\ntype AirbnbDateRangePopoverProps = {\n  isOpen: boolean;\n  isMobile: boolean;\n  openDirection: 'up' | 'down';\n  drawerTitle: string;\n  drawerDescription: string;\n  onClose: () => void;\n  children: React.ReactNode;\n};\n\nfunction AirbnbDateRangePopover({\n  isOpen,\n  isMobile,\n  openDirection,\n  drawerTitle,\n  drawerDescription,\n  onClose,\n  children,\n}: AirbnbDateRangePopoverProps) {\n  if (!isOpen) return null;\n\n  if (isMobile) {\n    return (\n      <Drawer\n        open={isOpen}\n        onOpenChange={next => {\n          if (!next) onClose();\n        }}\n      >\n        <DrawerContent\n          onClose={onClose}\n          lockScroll={false}\n          className=\"max-h-[calc(100vh-1rem)]\"\n        >\n          <DrawerTitle className=\"sr-only\">{drawerTitle}</DrawerTitle>\n          <DrawerDescription className=\"sr-only\">{drawerDescription}</DrawerDescription>\n          <div className=\"flex items-start justify-center overflow-x-auto px-2 pb-4 pt-1\">\n            {children}\n          </div>\n        </DrawerContent>\n      </Drawer>\n    );\n  }\n\n  return (\n    <div\n      className={cn(\n        'absolute left-0 z-30 w-max overflow-hidden border shadow-[0_8px_28px_0_rgba(0,0,0,0.12)]',\n        'rounded-[var(--calendar-popover-radius,24px)] border-[var(--calendar-popover-border,var(--chekin-airbnb-border-soft))] bg-[var(--calendar-popover-bg,#fff)]',\n        openDirection === 'up' ? 'bottom-full mb-2' : 'top-full mt-2',\n      )}\n    >\n      {children}\n    </div>\n  );\n}\n\nexport {AirbnbDateRangePopover};\nexport type {AirbnbDateRangePopoverProps};\n","import * as React from 'react';\nimport {Eye} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {AirbnbFieldTrigger} from '../field-trigger';\nimport {cn} from '../../lib/cn';\n\ntype AirbnbInputProps = React.InputHTMLAttributes<HTMLInputElement> & {\n  label?: string;\n  topLabel?: string;\n  helperText?: string;\n  helper?: React.ReactNode;\n  error?: string;\n  invalid?: boolean;\n  loading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  wrapperClassName?: string;\n  fieldClassName?: string;\n  contentClassName?: string;\n  inputClassName?: string;\n  trailingAdornment?: React.ReactNode;\n  renderErrorMessage?: boolean;\n};\n\nconst getInputValue = (\n  value: AirbnbInputProps['value'] | AirbnbInputProps['defaultValue'],\n) => (value != null ? String(value) : '');\n\nconst AirbnbInput = React.forwardRef<HTMLInputElement, AirbnbInputProps>(\n  (\n    {\n      label,\n      topLabel,\n      helperText,\n      helper,\n      error,\n      invalid,\n      loading,\n      optional,\n      tooltip,\n      wrapperClassName,\n      fieldClassName,\n      contentClassName,\n      inputClassName,\n      trailingAdornment,\n      renderErrorMessage = true,\n      className,\n      type,\n      id,\n      value,\n      defaultValue,\n      disabled,\n      onChange,\n      onFocus,\n      onBlur,\n      placeholder,\n      ...props\n    },\n    ref,\n  ) => {\n    const {t} = useTranslation();\n    const generatedId = React.useId();\n    const inputRef = React.useRef<HTMLInputElement | null>(null);\n    const inputId = id ?? generatedId;\n    const fieldId = `${inputId}-field`;\n    const labelId = `${inputId}-label`;\n    const errorId = `${inputId}-error`;\n    const accessibleLabel = placeholder ?? label;\n    const [isFocused, setIsFocused] = React.useState(false);\n    const [isPasswordRevealed, setIsPasswordRevealed] = React.useState(false);\n    const [currentValue, setCurrentValue] = React.useState(() =>\n      value != null ? getInputValue(value) : getInputValue(defaultValue),\n    );\n    const resolvedValue = value != null ? getInputValue(value) : currentValue;\n    const hasValue = resolvedValue.length > 0;\n    const isPasswordInput = type === 'password';\n    const inputType = isPasswordInput && isPasswordRevealed ? 'text' : type;\n    const shouldShowPasswordReveal = isPasswordInput && hasValue && !loading;\n    const shouldShowLabel = hasValue || isFocused;\n    const hasInvalidState = Boolean(error) || Boolean(invalid);\n    const triggerError = error ?? invalid;\n    const hasLabelMeta = Boolean(optional) || Boolean(tooltip);\n    const isBlocked = Boolean(disabled) || Boolean(loading);\n\n    React.useLayoutEffect(() => {\n      const nextValue =\n        value != null ? getInputValue(value) : getInputValue(inputRef.current?.value);\n\n      setCurrentValue(prevValue => (prevValue === nextValue ? prevValue : nextValue));\n    }, [value]);\n\n    React.useEffect(() => {\n      if (!isPasswordInput) {\n        setIsPasswordRevealed(false);\n      }\n    }, [isPasswordInput]);\n\n    const setRefs = React.useCallback(\n      (node: HTMLInputElement | null) => {\n        inputRef.current = node;\n\n        if (node && value == null) {\n          setCurrentValue(prevValue =>\n            prevValue === node.value ? prevValue : node.value,\n          );\n        }\n\n        if (typeof ref === 'function') {\n          ref(node);\n          return;\n        }\n\n        if (ref) {\n          ref.current = node;\n        }\n      },\n      [ref, value],\n    );\n\n    const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n      setCurrentValue(event.target.value);\n      onChange?.(event);\n    };\n\n    const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n      setIsFocused(true);\n      onFocus?.(event);\n    };\n\n    const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n      setIsFocused(false);\n      onBlur?.(event);\n    };\n\n    const togglePasswordReveal = () => {\n      setIsPasswordRevealed(isRevealed => !isRevealed);\n    };\n\n    const focusInput = () => {\n      if (isBlocked) {\n        return;\n      }\n\n      inputRef.current?.focus();\n    };\n\n    return (\n      <div className={cn('w-full max-w-[var(--max-field-width)]', wrapperClassName)}>\n        <AirbnbFieldTrigger\n          as=\"div\"\n          id={fieldId}\n          label={accessibleLabel ?? ''}\n          topLabel={topLabel}\n          labelId={labelId}\n          helperTextId={!shouldShowLabel ? `${inputId}-helper` : undefined}\n          errorId={error ? errorId : undefined}\n          labelText={helperText ?? label}\n          placeholder={placeholder ?? label}\n          helper={helper}\n          disabled={disabled}\n          error={triggerError}\n          loading={loading}\n          optional={optional}\n          tooltip={tooltip}\n          onClick={focusInput}\n          describedBy={error && renderErrorMessage ? errorId : undefined}\n          className={cn(\n            'px-4 focus-within:ring-2 focus-within:ring-[var(--chekin-airbnb-ink)] focus-within:ring-offset-2',\n            disabled ? 'cursor-not-allowed' : 'cursor-text',\n            fieldClassName,\n          )}\n          contentClassName={cn('h-[42px]', contentClassName)}\n          trailingAdornment={shouldShowPasswordReveal ? undefined : trailingAdornment}\n          forceFloatingLabel={shouldShowLabel}\n          forceLabelText={hasLabelMeta}\n          hideErrorMessage={!renderErrorMessage}\n        >\n          <input\n            {...props}\n            id={inputId}\n            ref={setRefs}\n            type={inputType}\n            disabled={isBlocked}\n            value={value}\n            defaultValue={defaultValue}\n            onChange={handleChange}\n            onFocus={handleFocus}\n            onBlur={handleBlur}\n            placeholder=\"\"\n            aria-invalid={hasInvalidState}\n            aria-busy={loading}\n            aria-describedby={error && renderErrorMessage ? errorId : undefined}\n            aria-label={accessibleLabel && hasLabelMeta ? accessibleLabel : undefined}\n            aria-labelledby={accessibleLabel && !hasLabelMeta ? labelId : undefined}\n            className={cn(\n              'absolute left-0 h-6 w-full border-0 bg-transparent p-0 text-[16px] leading-6 text-[var(--chekin-airbnb-ink)] outline-none placeholder:text-[var(--chekin-airbnb-gray-cool)]',\n              '[&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none [&[type=number]]:[-moz-appearance:textfield]',\n              'bottom-0',\n              hasInvalidState\n                ? 'text-[var(--status-danger)] placeholder:text-[var(--status-danger)]'\n                : '',\n              disabled ? 'cursor-not-allowed' : loading ? 'cursor-progress' : '',\n              shouldShowPasswordReveal ? 'pr-8' : '',\n              inputClassName,\n              className,\n            )}\n          />\n          {shouldShowPasswordReveal && (\n            <button\n              type=\"button\"\n              onClick={togglePasswordReveal}\n              disabled={isBlocked}\n              className=\"absolute bottom-0 right-0 flex h-6 w-6 items-center justify-center border-0 bg-transparent p-0 text-[var(--chekin-airbnb-gray-cool)] hover:text-[var(--chekin-airbnb-ink)] hover:opacity-85 disabled:cursor-not-allowed disabled:opacity-50\"\n              aria-label={isPasswordRevealed ? t('hide_password') : t('show_password')}\n            >\n              <Eye\n                size={18}\n                aria-hidden=\"true\"\n                className={cn(\n                  isPasswordRevealed ? 'text-[var(--chekin-airbnb-pink)]' : '',\n                )}\n              />\n            </button>\n          )}\n        </AirbnbFieldTrigger>\n      </div>\n    );\n  },\n);\n\nAirbnbInput.displayName = 'AirbnbInput';\n\nexport {AirbnbInput};\nexport type {AirbnbInputProps};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {type SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport {AirbnbSelect} from '../select';\nimport {AirbnbInput} from '../input';\nimport {AirbnbFieldHelperText} from '../field-helper-text';\nimport {FieldErrorMessage} from '../../field-error-message';\n\ntype AirbnbPhoneFieldOption = {\n  value: string;\n  label: string;\n  disabled?: boolean;\n};\n\ntype AirbnbPhoneFieldValue = {\n  code: string;\n  number: string;\n};\n\ntype AirbnbPhoneFieldProps = {\n  label: string;\n  topLabel?: string;\n  value?: AirbnbPhoneFieldValue | null;\n  onChange: (value: AirbnbPhoneFieldValue) => void;\n  onBlur?: React.FocusEventHandler<HTMLInputElement>;\n  options: AirbnbPhoneFieldOption[];\n  placeholder?: string;\n  disabled?: boolean;\n  codeReadOnly?: boolean;\n  error?: string;\n  invalid?: boolean;\n  loading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  helper?: React.ReactNode;\n  className?: string;\n  name?: string;\n  codeName?: string;\n  numberName?: string;\n  mobileTitle?: string;\n  codePlaceholder?: string;\n  defaultCode?: string;\n};\n\nfunction formatPhoneCodeOptionLabel(option: AirbnbPhoneFieldOption) {\n  const label = String(option.label);\n  const value = String(option.value);\n\n  return label.includes(value) ? label : `${label} (${value})`;\n}\n\nconst AirbnbPhoneField = React.forwardRef<HTMLButtonElement, AirbnbPhoneFieldProps>(\n  (\n    {\n      label,\n      topLabel,\n      value,\n      onChange,\n      onBlur,\n      options,\n      placeholder = 'Phone number',\n      disabled,\n      codeReadOnly,\n      error,\n      invalid,\n      loading,\n      optional,\n      tooltip,\n      helper,\n      className,\n      name,\n      codeName,\n      numberName,\n      mobileTitle,\n      codePlaceholder = '+00',\n      defaultCode,\n    },\n    ref,\n  ) => {\n    const inputId = React.useId();\n    const effectiveCode = value?.code || defaultCode || '';\n\n    const codeOptions = React.useMemo<SelectOption[]>(\n      () =>\n        options.map(option => ({\n          value: option.value,\n          label: formatPhoneCodeOptionLabel(option),\n          disabled: option.disabled,\n        })),\n      [options],\n    );\n\n    const selectedCodeOption = React.useMemo(\n      () => codeOptions.find(option => option.value === effectiveCode) ?? null,\n      [codeOptions, effectiveCode],\n    );\n\n    const combinedValue =\n      effectiveCode || value?.number ? `${effectiveCode}${value?.number ?? ''}` : '';\n    const hasInvalidState = Boolean(error) || Boolean(invalid);\n    const isBlocked = Boolean(disabled) || Boolean(loading);\n    const isCodeBlocked = isBlocked || Boolean(codeReadOnly);\n\n    return (\n      <div className={cn('w-full max-w-[var(--max-field-width)]', className)}>\n        {name && (\n          <input type=\"hidden\" name={name} value={combinedValue} disabled={disabled} />\n        )}\n        {codeName && (\n          <input\n            type=\"hidden\"\n            name={codeName}\n            value={effectiveCode}\n            disabled={disabled}\n          />\n        )}\n        {numberName && (\n          <input\n            type=\"hidden\"\n            name={numberName}\n            value={value?.number ?? ''}\n            disabled={disabled}\n          />\n        )}\n        {topLabel && (\n          <label\n            htmlFor={inputId}\n            className=\"mb-3 block text-[16px] font-medium leading-5 text-[var(--chekin-airbnb-ink)]\"\n          >\n            {topLabel}\n          </label>\n        )}\n        <div className=\"flex items-stretch\">\n          <AirbnbSelect\n            ref={ref}\n            options={codeOptions}\n            value={selectedCodeOption}\n            onChange={option =>\n              onChange({\n                code: String(option.value),\n                number: value?.number ?? '',\n              })\n            }\n            label={`${label} country code`}\n            placeholder={codePlaceholder}\n            disabled={isCodeBlocked}\n            loading={loading}\n            invalid={invalid}\n            className=\"max-w-none shrink-0 basis-[96px]\"\n            mobileTitle={mobileTitle ?? 'Select country code'}\n            dropdownClassName=\"right-auto w-[280px]\"\n            getValueLabel={option => String(option.value)}\n            renderTrigger={({\n              id,\n              open,\n              disabled: triggerDisabled,\n              loading: triggerLoading,\n              listboxId,\n              triggerRef,\n              onClick,\n              onKeyDown,\n              valueLabel,\n            }) => (\n              <button\n                id={id}\n                ref={triggerRef}\n                type=\"button\"\n                aria-label={`${label} country code`}\n                aria-haspopup=\"listbox\"\n                aria-expanded={open}\n                aria-controls={listboxId}\n                aria-busy={triggerLoading}\n                aria-invalid={hasInvalidState}\n                disabled={triggerDisabled}\n                onClick={onClick}\n                onKeyDown={onKeyDown}\n                className={cn(\n                  'flex h-full min-h-[60px] w-full items-center justify-center gap-2 rounded-l-[16px] rounded-r-none border border-r-0 px-4 text-[16px] font-medium leading-6 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--chekin-airbnb-ink)] focus-visible:ring-offset-2',\n                  hasInvalidState\n                    ? 'border-[var(--status-danger)] bg-[#F2F2F2] text-[var(--status-danger)]'\n                    : 'border-[var(--chekin-airbnb-gray-muted)] bg-[var(--chekin-airbnb-surface-alt)] text-[var(--chekin-airbnb-ink)]',\n                  triggerDisabled\n                    ? 'cursor-not-allowed opacity-50'\n                    : triggerLoading\n                      ? 'cursor-progress'\n                      : 'cursor-pointer',\n                )}\n              >\n                <span>{valueLabel ?? codePlaceholder}</span>\n                <ChevronDown\n                  className={cn('h-5 w-5 transition-transform', open ? 'rotate-180' : '')}\n                  strokeWidth={2}\n                />\n              </button>\n            )}\n          />\n          <AirbnbInput\n            id={inputId}\n            type=\"tel\"\n            inputMode=\"tel\"\n            label={label}\n            helperText={placeholder}\n            value={value?.number ?? ''}\n            placeholder={placeholder}\n            disabled={disabled}\n            error={error}\n            invalid={invalid}\n            loading={loading}\n            optional={optional}\n            tooltip={tooltip}\n            renderErrorMessage={false}\n            wrapperClassName=\"min-w-0 flex-1\"\n            fieldClassName=\"min-h-[60px] rounded-l-none rounded-r-[16px] border-l-0\"\n            contentClassName=\"h-[40px] py-2\"\n            inputClassName=\"text-[16px] leading-7\"\n            onChange={event =>\n              onChange({\n                code: effectiveCode,\n                number: event.target.value,\n              })\n            }\n            onBlur={onBlur}\n          />\n        </div>\n        {error && <FieldErrorMessage message={error} />}\n        {!error && <AirbnbFieldHelperText helper={helper} disabled={disabled} />}\n      </div>\n    );\n  },\n);\nAirbnbPhoneField.displayName = 'AirbnbPhoneField';\n\nexport {AirbnbPhoneField};\nexport type {AirbnbPhoneFieldOption, AirbnbPhoneFieldProps, AirbnbPhoneFieldValue};\n","import * as React from 'react';\nimport {AirbnbSelectDesktopContent} from './SelectDesktopContent';\nimport {AirbnbSelectMobileContent} from './SelectMobileContent';\nimport {AirbnbSelectTrigger} from './SelectTrigger';\nimport {getOptionIndex} from './select.utils';\nimport {type AirbnbSelectProps, type SelectValue} from './types';\nimport {useDesktopSelect} from './useDesktopSelect';\nimport {useMobileSelectWheel} from './useMobileSelectWheel';\nimport {useSelectIds} from './useSelectIds';\nimport {useOutsideClick, useScreenResize, useCombinedRef} from '../../hooks';\nimport {DEVICE} from '../../lib/device';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\n\nconst AirbnbSelect = React.forwardRef(function AirbnbSelect<\n  T = unknown,\n  V extends SelectValue = string,\n  L extends string | number | ReactNode = string,\n>(\n  {\n    options = [],\n    value,\n    onChange,\n    onBlur,\n    label,\n    topLabel,\n    placeholder,\n    getValueLabel,\n    renderTrigger,\n    disabled,\n    loading,\n    optional,\n    tooltip,\n    helper,\n    error,\n    invalid,\n    hideErrorMessage,\n    className,\n    menuClassName,\n    dropdownClassName,\n    doneLabel = 'Done',\n    mobileTitle,\n    name,\n    noOptionsMessage,\n    filterOption,\n  }: AirbnbSelectProps<T, V, L>,\n  ref: React.Ref<HTMLButtonElement>,\n) {\n  const {isMatch: isMobile} = useScreenResize(DEVICE.mobileXL);\n  const [isOpen, setIsOpen] = React.useState(false);\n  const containerRef = React.useRef<HTMLDivElement>(null);\n  const filteredOptions = filterOption ? options.filter(filterOption) : options;\n  const hasValue = Boolean(value);\n  const helperText = placeholder ?? label;\n  const shouldDescribeHelperText = !hasValue && helperText !== label;\n  const isBlocked = Boolean(disabled) || Boolean(loading);\n  const triggerError = error ?? invalid;\n  const {\n    triggerId,\n    labelId,\n    valueId,\n    helperTextId,\n    errorId,\n    describedErrorId,\n    listboxId,\n    describedBy,\n    getOptionId,\n  } = useSelectIds({name, hasValue, error, hideErrorMessage});\n  const triggerHelperTextId = shouldDescribeHelperText ? helperTextId : undefined;\n  const triggerDescribedBy = shouldDescribeHelperText ? describedBy : describedErrorId;\n  const {\n    mobileListRef,\n    mobileScrollTop,\n    pendingValue,\n    syncPendingValue,\n    handleOptionClick,\n    handleScroll,\n    moveByStep,\n    moveToBoundary,\n  } = useMobileSelectWheel({\n    isMobile,\n    isOpen,\n    options: filteredOptions,\n    value,\n    disabled: isBlocked,\n  });\n  const {\n    highlightedIndex,\n    listRef: desktopListRef,\n    setHighlightedIndex,\n    setOptionRef,\n    triggerRef: desktopTriggerRef,\n    focusTrigger,\n    handleSelect: handleDesktopSelect,\n    handleMenuKeyDown,\n    handleTriggerKeyDown,\n  } = useDesktopSelect({\n    isMobile,\n    isOpen,\n    options: filteredOptions,\n    value,\n    disabled: isBlocked,\n    onChange,\n  });\n  const combinedRef = useCombinedRef(ref, desktopTriggerRef);\n  const activeMobileIndex = getOptionIndex(filteredOptions, pendingValue);\n  const valueLabel = value ? (getValueLabel?.(value) ?? String(value.label)) : undefined;\n\n  useOutsideClick({\n    elementRef: containerRef,\n    onOutsideClick: () => setIsOpen(false),\n    isDisabled: !isOpen || isMobile,\n  });\n\n  React.useEffect(() => {\n    if (isBlocked) {\n      setIsOpen(false);\n    }\n  }, [isBlocked]);\n\n  React.useEffect(\n    function setCorrectOptionIfThereIsOnlyValue() {\n      if (value?.value === undefined || value.value === null || value.label !== '') {\n        return;\n      }\n\n      const validOption = filteredOptions.find(option => option.value === value.value);\n\n      if (validOption) {\n        onChange?.(validOption);\n      }\n    },\n    [onChange, filteredOptions, value],\n  );\n\n  const handleMobileOpenChange = React.useCallback(\n    (nextOpen: boolean) => {\n      if (isBlocked && nextOpen) return;\n\n      setIsOpen(nextOpen);\n      syncPendingValue(value ?? null);\n\n      if (!nextOpen) {\n        focusTrigger();\n      }\n    },\n    [focusTrigger, isBlocked, syncPendingValue, value],\n  );\n\n  const handleMobileDone = React.useCallback(() => {\n    if (isBlocked) return;\n\n    const finalOption = pendingValue;\n\n    if (finalOption && finalOption.value !== value?.value) {\n      onChange?.(finalOption);\n    }\n\n    setIsOpen(false);\n    focusTrigger();\n  }, [focusTrigger, isBlocked, onChange, pendingValue, value]);\n\n  const handleTriggerClick = React.useCallback(() => {\n    if (isBlocked) return;\n\n    setIsOpen(prev => {\n      const nextOpen = !prev;\n\n      if (isMobile) {\n        syncPendingValue(value ?? null);\n      }\n\n      return nextOpen;\n    });\n  }, [isBlocked, isMobile, syncPendingValue, value]);\n\n  const handleRootTriggerKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n    if (isMobile) {\n      if (isBlocked) return;\n\n      if (\n        event.key === 'ArrowDown' ||\n        event.key === 'ArrowUp' ||\n        event.key === 'Enter' ||\n        event.key === ' '\n      ) {\n        event.preventDefault();\n        syncPendingValue(value ?? null);\n        setIsOpen(true);\n      }\n\n      return;\n    }\n\n    handleTriggerKeyDown(event, () => setIsOpen(true));\n  };\n\n  const handleMobileWheelKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n    if (event.key === 'ArrowDown') {\n      event.preventDefault();\n      moveByStep(1);\n      return;\n    }\n\n    if (event.key === 'ArrowUp') {\n      event.preventDefault();\n      moveByStep(-1);\n      return;\n    }\n\n    if (event.key === 'Home') {\n      event.preventDefault();\n      moveToBoundary('start');\n      return;\n    }\n\n    if (event.key === 'End') {\n      event.preventDefault();\n      moveToBoundary('end');\n      return;\n    }\n\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      handleMobileDone();\n      return;\n    }\n\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      handleMobileOpenChange(false);\n    }\n  };\n\n  return (\n    <div\n      ref={containerRef}\n      className={cn('relative w-full max-w-[var(--max-field-width)]', className)}\n    >\n      {name && (\n        <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n      )}\n      {renderTrigger ? (\n        renderTrigger({\n          id: triggerId,\n          open: isOpen,\n          label,\n          topLabel,\n          helperText,\n          value,\n          valueLabel,\n          disabled: isBlocked,\n          loading,\n          optional,\n          tooltip,\n          helper,\n          error,\n          invalid,\n          listboxId,\n          describedBy: triggerDescribedBy,\n          triggerRef: combinedRef,\n          onClick: handleTriggerClick,\n          onKeyDown: handleRootTriggerKeyDown,\n          onBlur,\n        })\n      ) : (\n        <AirbnbSelectTrigger\n          id={triggerId}\n          ref={combinedRef}\n          open={isOpen}\n          label={label}\n          topLabel={topLabel}\n          helperText={helperText}\n          valueLabel={valueLabel}\n          disabled={disabled}\n          loading={loading}\n          optional={optional}\n          tooltip={tooltip}\n          helper={helper}\n          error={triggerError}\n          hideErrorMessage={hideErrorMessage}\n          labelId={labelId}\n          valueId={valueId}\n          helperTextId={triggerHelperTextId}\n          errorId={error ? errorId : undefined}\n          listboxId={listboxId}\n          describedBy={triggerDescribedBy}\n          onClick={handleTriggerClick}\n          onKeyDown={handleRootTriggerKeyDown}\n          onBlur={onBlur}\n        />\n      )}\n      {isMobile ? (\n        <AirbnbSelectMobileContent\n          open={isOpen}\n          onOpenChange={handleMobileOpenChange}\n          onClose={() => handleMobileOpenChange(false)}\n          listboxId={listboxId}\n          labelId={labelId}\n          label={label}\n          mobileTitle={mobileTitle}\n          doneLabel={doneLabel}\n          errorId={describedErrorId}\n          options={filteredOptions}\n          disabled={isBlocked}\n          menuClassName={menuClassName}\n          scrollTop={mobileScrollTop}\n          activeIndex={activeMobileIndex}\n          listRef={mobileListRef}\n          onScroll={handleScroll}\n          onOptionClick={handleOptionClick}\n          onKeyDown={handleMobileWheelKeyDown}\n          onDone={handleMobileDone}\n          getOptionId={getOptionId}\n          noOptionsMessage={noOptionsMessage}\n        />\n      ) : (\n        <AirbnbSelectDesktopContent\n          isOpen={isOpen}\n          listboxId={listboxId}\n          labelId={labelId}\n          errorId={describedErrorId}\n          options={filteredOptions}\n          value={value}\n          highlightedIndex={highlightedIndex}\n          onOptionClick={option => {\n            handleDesktopSelect(option);\n            setIsOpen(false);\n            focusTrigger();\n          }}\n          onOptionHover={setHighlightedIndex}\n          onKeyDown={event => {\n            handleMenuKeyDown(event, () => setIsOpen(false));\n          }}\n          disabled={isBlocked}\n          menuClassName={menuClassName}\n          dropdownClassName={dropdownClassName}\n          listRef={desktopListRef}\n          setOptionRef={setOptionRef}\n          getOptionId={getOptionId}\n          noOptionsMessage={noOptionsMessage}\n        />\n      )}\n    </div>\n  );\n}) as <\n  T = unknown,\n  V extends SelectValue = string,\n  L extends string | number | ReactNode = string,\n>(\n  props: AirbnbSelectProps<T, V, L> & {ref?: React.Ref<HTMLButtonElement>},\n) => React.ReactElement;\n\nexport {AirbnbSelect};\nexport type {AirbnbSelectProps};\n","import * as React from 'react';\nimport {type SelectValue} from './types';\nimport {type SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\n\ntype AirbnbSelectDesktopMenuProps<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n> = {\n  id: string;\n  options: SelectOption<T, V, L>[];\n  labelledBy: string;\n  describedBy?: string;\n  selectedValue?: SelectOption<T, V, L> | null;\n  highlightedIndex?: number;\n  onOptionClick: (option: SelectOption<T, V, L>) => void;\n  onOptionHover?: (index: number) => void;\n  onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n  disabled?: boolean;\n  menuClassName?: string;\n  listRef?: React.RefObject<HTMLDivElement>;\n  selectedOptionRef?: (index: number, node: HTMLButtonElement | null) => void;\n  getOptionId: (index: number) => string;\n  noOptionsMessage?: () => string | undefined;\n};\n\nfunction AirbnbSelectDesktopMenu<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n>({\n  id,\n  options,\n  labelledBy,\n  describedBy,\n  selectedValue,\n  highlightedIndex,\n  onOptionClick,\n  onOptionHover,\n  onKeyDown,\n  disabled,\n  menuClassName,\n  listRef,\n  selectedOptionRef,\n  getOptionId,\n  noOptionsMessage,\n}: AirbnbSelectDesktopMenuProps<T, V, L>) {\n  const emptyMessage = noOptionsMessage?.();\n\n  return (\n    <div\n      id={id}\n      ref={listRef}\n      role=\"listbox\"\n      tabIndex={-1}\n      aria-labelledby={labelledBy}\n      aria-describedby={describedBy}\n      aria-activedescendant={\n        highlightedIndex !== undefined && highlightedIndex >= 0\n          ? getOptionId(highlightedIndex)\n          : undefined\n      }\n      onKeyDown={onKeyDown}\n      className={cn('max-h-[280px] overflow-y-auto p-2 outline-none', menuClassName)}\n    >\n      {options.length === 0 && emptyMessage ? (\n        <div className=\"px-4 py-3 text-base leading-6 text-[var(--chekin-airbnb-gray-text)]\">\n          {emptyMessage}\n        </div>\n      ) : null}\n      {options.map((option, index) => {\n        const isSelected = selectedValue?.value === option.value;\n        const isHighlighted = index === highlightedIndex;\n        const optionKey = `${String(option.value)}-${index}`;\n\n        return (\n          <button\n            id={getOptionId(index)}\n            key={optionKey}\n            ref={node => {\n              selectedOptionRef?.(index, node);\n            }}\n            type=\"button\"\n            role=\"option\"\n            aria-selected={isSelected}\n            aria-disabled={disabled || option.isDisabled}\n            tabIndex={-1}\n            disabled={disabled || option.isDisabled}\n            onClick={() => onOptionClick(option)}\n            onMouseMove={() => onOptionHover?.(index)}\n            className={cn(\n              'w-full rounded-2xl px-4 py-3 text-left text-base leading-6 text-[var(--chekin-airbnb-zinc)] transition-colors',\n              isHighlighted && 'bg-[var(--chekin-airbnb-surface)]',\n              isSelected &&\n                'bg-[var(--chekin-airbnb-surface)] font-medium text-[var(--chekin-airbnb-ink-black)]',\n              (disabled || option.isDisabled) && 'cursor-not-allowed opacity-40',\n            )}\n          >\n            {String(option.label)}\n          </button>\n        );\n      })}\n    </div>\n  );\n}\n\nexport {AirbnbSelectDesktopMenu};\n","import * as React from 'react';\nimport {AirbnbSelectDesktopMenu} from './SelectDesktopMenu';\nimport {type SelectValue} from './types';\nimport {type SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\n\ntype AirbnbSelectDesktopContentProps<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n> = {\n  isOpen: boolean;\n  listboxId: string;\n  labelId: string;\n  errorId?: string;\n  options: SelectOption<T, V, L>[];\n  value?: SelectOption<T, V, L> | null;\n  highlightedIndex: number;\n  onOptionClick: (option: SelectOption<T, V, L>) => void;\n  onOptionHover: (index: number) => void;\n  onKeyDown: React.KeyboardEventHandler<HTMLDivElement>;\n  disabled?: boolean;\n  menuClassName?: string;\n  dropdownClassName?: string;\n  listRef: React.RefObject<HTMLDivElement>;\n  setOptionRef: (index: number, node: HTMLButtonElement | null) => void;\n  getOptionId: (index: number) => string;\n  noOptionsMessage?: () => string | undefined;\n};\n\nfunction AirbnbSelectDesktopContent<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n>({\n  isOpen,\n  listboxId,\n  labelId,\n  errorId,\n  options,\n  value,\n  highlightedIndex,\n  onOptionClick,\n  onOptionHover,\n  onKeyDown,\n  disabled,\n  menuClassName,\n  dropdownClassName,\n  listRef,\n  setOptionRef,\n  getOptionId,\n  noOptionsMessage,\n}: AirbnbSelectDesktopContentProps<T, V, L>) {\n  if (!isOpen) return null;\n\n  return (\n    <div\n      className={cn(\n        'absolute left-0 right-0 top-[calc(100%+8px)] z-20 overflow-hidden rounded-[20px] border border-[var(--chekin-airbnb-border)] bg-white shadow-[0_14px_30px_rgba(18,18,18,0.08)]',\n        dropdownClassName,\n      )}\n    >\n      <AirbnbSelectDesktopMenu\n        id={listboxId}\n        options={options}\n        labelledBy={labelId}\n        describedBy={errorId}\n        selectedValue={value}\n        highlightedIndex={highlightedIndex}\n        onOptionClick={onOptionClick}\n        onOptionHover={onOptionHover}\n        onKeyDown={onKeyDown}\n        disabled={disabled}\n        menuClassName={menuClassName}\n        listRef={listRef}\n        selectedOptionRef={setOptionRef}\n        getOptionId={getOptionId}\n        noOptionsMessage={noOptionsMessage}\n      />\n    </div>\n  );\n}\n\nexport {AirbnbSelectDesktopContent};\n","export const MOBILE_OPTION_HEIGHT = 32;\nexport const MOBILE_VISIBLE_OPTIONS = 7;\nexport const MOBILE_PICKER_HEIGHT = MOBILE_OPTION_HEIGHT * MOBILE_VISIBLE_OPTIONS;\nexport const MOBILE_SCROLL_SETTLE_DELAY = 140;\nexport const MOBILE_WHEEL_BUFFER_OPTIONS = 3;\n","import type * as React from 'react';\nimport {MOBILE_OPTION_HEIGHT, MOBILE_WHEEL_BUFFER_OPTIONS} from './constants';\nimport {type SelectValue} from './types';\nimport {type SelectOption} from '../../lib/selector-option';\n\nexport function getOptionIndex<\n  T,\n  V extends SelectValue,\n  L extends string | number | React.ReactNode,\n>(options: SelectOption<T, V, L>[], option?: SelectOption<T, V, L> | null) {\n  if (!option) return -1;\n\n  return options.findIndex(item => item.value === option.value);\n}\n\nexport function getFirstEnabledOptionIndex<\n  T,\n  V extends SelectValue,\n  L extends string | number | React.ReactNode,\n>(options: SelectOption<T, V, L>[]) {\n  return options.findIndex(option => !option.isDisabled);\n}\n\nexport function getLastEnabledOptionIndex<\n  T,\n  V extends SelectValue,\n  L extends string | number | React.ReactNode,\n>(options: SelectOption<T, V, L>[]) {\n  for (let index = options.length - 1; index >= 0; index -= 1) {\n    if (!options[index]?.isDisabled) {\n      return index;\n    }\n  }\n\n  return -1;\n}\n\nexport function getNextEnabledOptionIndex<\n  T,\n  V extends SelectValue,\n  L extends string | number | React.ReactNode,\n>(options: SelectOption<T, V, L>[], startIndex: number, step: 1 | -1) {\n  let nextIndex = startIndex;\n\n  while (nextIndex >= 0 && nextIndex < options.length) {\n    if (!options[nextIndex]?.isDisabled) {\n      return nextIndex;\n    }\n\n    nextIndex += step;\n  }\n\n  return -1;\n}\n\nexport function getOptionScrollTop(index: number) {\n  return index * MOBILE_OPTION_HEIGHT;\n}\n\nexport function getWheelSpacerHeight() {\n  return MOBILE_OPTION_HEIGHT * MOBILE_WHEEL_BUFFER_OPTIONS;\n}\n\nexport function getMobileOptionStyles(index: number, scrollTop: number) {\n  const virtualCenterIndex = scrollTop / MOBILE_OPTION_HEIGHT;\n  const offsetFromCenter = index - virtualCenterIndex;\n  const distance = Math.abs(offsetFromCenter);\n  const normalizedDistance = Math.min(distance / 3.5, 1);\n  const centerInfluence = 1 - normalizedDistance;\n  const easedInfluence = 1 - normalizedDistance ** 1.65;\n  const rotation = Math.max(-42, Math.min(42, offsetFromCenter * 11));\n  const scale = 0.875 + easedInfluence * 0.125;\n  const scaleY = 0.66 + easedInfluence * 0.34;\n  const translateY = offsetFromCenter * 0.9;\n  const translateZ = Math.max(0, 14 - distance * 4.5);\n  const blur = (1 - easedInfluence) * 1.2;\n  const opacity = 0.12 + easedInfluence * 0.88;\n  const fontSize = 16 + easedInfluence * 6;\n  const isSelected = distance < 0.5;\n  const textShade = isSelected\n    ? Math.round(164 - centerInfluence * 117)\n    : Math.round(180 - easedInfluence * 60);\n\n  return {\n    distance,\n    style: {\n      height: `${MOBILE_OPTION_HEIGHT}px`,\n      lineHeight: `${MOBILE_OPTION_HEIGHT}px`,\n      fontSize: `${fontSize}px`,\n      fontWeight: 400,\n      color: `rgb(${textShade}, ${textShade}, ${textShade})`,\n      opacity,\n      transform: `perspective(1400px) translate3d(0, ${translateY}px, ${translateZ}px) rotateX(${rotation}deg) scale(${scale}, ${scaleY})`,\n      transformOrigin: 'center center',\n      filter: `blur(${blur}px)`,\n      willChange: 'transform, opacity, filter',\n    },\n  };\n}\n","import * as React from 'react';\nimport {MOBILE_PICKER_HEIGHT} from './constants';\nimport {getMobileOptionStyles, getWheelSpacerHeight} from './select.utils';\nimport {type SelectValue} from './types';\nimport {type SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\n\ntype AirbnbSelectMobileWheelProps<\n  T,\n  V extends SelectValue,\n  L extends string | number | React.ReactNode,\n> = {\n  id: string;\n  options: SelectOption<T, V, L>[];\n  labelledBy: string;\n  describedBy?: string;\n  disabled?: boolean;\n  menuClassName?: string;\n  scrollTop: number;\n  activeIndex?: number;\n  listRef: React.RefObject<HTMLDivElement>;\n  onScroll: () => void;\n  onOptionClick: (option: SelectOption<T, V, L>) => void;\n  onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n  getOptionId: (index: number) => string;\n  noOptionsMessage?: () => string | undefined;\n};\n\nfunction AirbnbSelectMobileWheel<\n  T,\n  V extends SelectValue,\n  L extends string | number | React.ReactNode,\n>({\n  id,\n  options,\n  labelledBy,\n  describedBy,\n  disabled,\n  menuClassName,\n  scrollTop,\n  activeIndex,\n  listRef,\n  onScroll,\n  onOptionClick,\n  onKeyDown,\n  getOptionId,\n  noOptionsMessage,\n}: AirbnbSelectMobileWheelProps<T, V, L>) {\n  const spacerHeight = getWheelSpacerHeight();\n  const emptyMessage = noOptionsMessage?.();\n\n  return (\n    <div\n      id={id}\n      role=\"listbox\"\n      tabIndex={0}\n      aria-labelledby={labelledBy}\n      aria-describedby={describedBy}\n      aria-activedescendant={\n        activeIndex !== undefined && activeIndex >= 0\n          ? getOptionId(activeIndex)\n          : undefined\n      }\n      onKeyDown={onKeyDown}\n      className={cn('relative overflow-hidden outline-none', menuClassName)}\n    >\n      {options.length === 0 && emptyMessage ? (\n        <div className=\"flex min-h-[160px] items-center justify-center px-4 text-center text-base leading-6 text-[var(--chekin-airbnb-gray-text)]\">\n          {emptyMessage}\n        </div>\n      ) : null}\n      <div className=\"pointer-events-none absolute inset-x-0 top-0 h-16 bg-gradient-to-b from-white via-white/80 to-transparent\" />\n      <div className=\"pointer-events-none absolute inset-x-0 bottom-0 h-16 bg-gradient-to-t from-white via-white/80 to-transparent\" />\n      <div\n        aria-hidden\n        className={cn(\n          'pointer-events-none absolute inset-x-0 top-1/2 z-0 h-8 -translate-y-1/2 rounded-[8px] bg-black/[0.04]',\n          options.length === 0 && emptyMessage && 'hidden',\n        )}\n      />\n      <div\n        ref={listRef}\n        onScroll={onScroll}\n        className={cn(\n          'relative z-10 snap-y snap-mandatory overflow-y-auto text-center [-ms-overflow-style:none] [mask-image:linear-gradient(to_bottom,transparent_0%,black_18%,black_82%,transparent_100%)] [scrollbar-width:none]',\n          options.length === 0 && emptyMessage && 'hidden',\n        )}\n        style={{\n          height: `${MOBILE_PICKER_HEIGHT}px`,\n          scrollBehavior: 'smooth',\n          WebkitOverflowScrolling: 'touch',\n        }}\n      >\n        <div style={{height: `${spacerHeight}px`}} />\n        {options.map((option, index) => {\n          const {distance, style} = getMobileOptionStyles(index, scrollTop);\n          const optionKey = `${String(option.value)}-${index}`;\n\n          return (\n            <button\n              id={getOptionId(index)}\n              key={optionKey}\n              type=\"button\"\n              role=\"option\"\n              aria-selected={distance < 0.5}\n              aria-disabled={disabled || option.isDisabled}\n              tabIndex={-1}\n              disabled={disabled || option.isDisabled}\n              onClick={() => onOptionClick(option)}\n              className={cn(\n                'flex w-full snap-center items-center justify-center overflow-hidden truncate whitespace-nowrap px-4 text-center font-normal touch-manipulation',\n                (disabled || option.isDisabled) && 'cursor-not-allowed opacity-40',\n              )}\n              style={style}\n            >\n              {String(option.label)}\n            </button>\n          );\n        })}\n        <div style={{height: `${spacerHeight}px`}} />\n      </div>\n    </div>\n  );\n}\n\nexport {AirbnbSelectMobileWheel};\n","import * as React from 'react';\nimport {Button} from '../../button';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../drawer';\nimport {AirbnbSelectMobileWheel} from './SelectMobileWheel';\nimport {type SelectValue} from './types';\nimport {type SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype AirbnbSelectMobileContentProps<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n> = {\n  open: boolean;\n  onOpenChange: (nextOpen: boolean) => void;\n  onClose: () => void;\n  listboxId: string;\n  labelId: string;\n  label: string;\n  mobileTitle?: string;\n  doneLabel: string;\n  errorId?: string;\n  options: SelectOption<T, V, L>[];\n  disabled?: boolean;\n  menuClassName?: string;\n  scrollTop: number;\n  activeIndex: number;\n  listRef: React.RefObject<HTMLDivElement>;\n  onScroll: () => void;\n  onOptionClick: (option: SelectOption<T, V, L>) => void;\n  onKeyDown: React.KeyboardEventHandler<HTMLDivElement>;\n  onDone: () => void;\n  getOptionId: (index: number) => string;\n  noOptionsMessage?: () => string | undefined;\n};\n\nfunction AirbnbSelectMobileContent<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n>({\n  open,\n  onOpenChange,\n  onClose,\n  listboxId,\n  labelId,\n  label,\n  mobileTitle,\n  doneLabel,\n  errorId,\n  options,\n  disabled,\n  menuClassName,\n  scrollTop,\n  activeIndex,\n  listRef,\n  onScroll,\n  onOptionClick,\n  onKeyDown,\n  onDone,\n  getOptionId,\n  noOptionsMessage,\n}: AirbnbSelectMobileContentProps<T, V, L>) {\n  return (\n    <Drawer open={open} onOpenChange={onOpenChange}>\n      <DrawerContent onClose={onClose} lockScroll={false}>\n        <DrawerTitle className=\"sr-only\">{mobileTitle ?? label}</DrawerTitle>\n        <DrawerDescription className=\"sr-only\">{label}</DrawerDescription>\n        <div className=\"px-6 pb-4 pt-1\">\n          <AirbnbSelectMobileWheel\n            id={listboxId}\n            options={options}\n            labelledBy={labelId}\n            describedBy={errorId}\n            disabled={disabled}\n            menuClassName={menuClassName}\n            scrollTop={scrollTop}\n            activeIndex={activeIndex}\n            listRef={listRef}\n            onScroll={onScroll}\n            onOptionClick={onOptionClick}\n            onKeyDown={onKeyDown}\n            getOptionId={getOptionId}\n            noOptionsMessage={noOptionsMessage}\n          />\n          <Button type=\"button\" onClick={onDone} className=\"mt-4 h-12 mb-8 w-full\">\n            {doneLabel}\n          </Button>\n        </div>\n      </DrawerContent>\n    </Drawer>\n  );\n}\n\nexport {AirbnbSelectMobileContent};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {AirbnbFieldTrigger} from '../field-trigger';\n\ntype AirbnbSelectTriggerProps = {\n  id: string;\n  open: boolean;\n  label: string;\n  topLabel?: string;\n  helperText: string;\n  valueLabel?: string;\n  disabled?: boolean;\n  loading?: boolean;\n  optional?: boolean | string;\n  tooltip?: React.ReactNode;\n  helper?: React.ReactNode;\n  error?: boolean | string;\n  hideErrorMessage?: boolean;\n  labelId: string;\n  valueId: string;\n  helperTextId?: string;\n  errorId?: string;\n  listboxId: string;\n  describedBy?: string;\n  onClick: () => void;\n  onKeyDown: React.KeyboardEventHandler<HTMLButtonElement>;\n  onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n};\n\nconst AirbnbSelectTrigger = React.forwardRef<HTMLButtonElement, AirbnbSelectTriggerProps>(\n  (\n    {\n      id,\n      open,\n      label,\n      topLabel,\n      helperText,\n      valueLabel,\n      disabled,\n      loading,\n      optional,\n      tooltip,\n      helper,\n      error,\n      hideErrorMessage,\n      labelId,\n      valueId,\n      helperTextId,\n      errorId,\n      listboxId,\n      describedBy,\n      onClick,\n      onKeyDown,\n      onBlur,\n    },\n    ref,\n  ) => {\n    return (\n      <AirbnbFieldTrigger\n        id={id}\n        ref={ref}\n        aria-haspopup=\"listbox\"\n        aria-expanded={open}\n        aria-controls={listboxId}\n        label={label}\n        topLabel={topLabel}\n        labelId={labelId}\n        valueId={valueId}\n        helperTextId={helperTextId}\n        errorId={errorId}\n        labelText={topLabel ? helperText : undefined}\n        valueText={valueLabel}\n        placeholder={helperText}\n        describedBy={describedBy}\n        error={error}\n        loading={loading}\n        optional={optional}\n        tooltip={tooltip}\n        helper={helper}\n        forceLabelText={Boolean(optional) || Boolean(tooltip)}\n        hideErrorMessage={hideErrorMessage}\n        disabled={disabled}\n        onClick={onClick}\n        onKeyDown={onKeyDown}\n        onBlur={onBlur}\n        trailingAdornment={\n          <ChevronDown\n            strokeWidth=\"1.5\"\n            className={\n              open\n                ? 'h-6 w-6 rotate-180 text-[var(--chekin-airbnb-ink)] transition-transform'\n                : 'h-6 w-6 text-[var(--chekin-airbnb-ink)] transition-transform'\n            }\n          />\n        }\n      />\n    );\n  },\n);\n\nAirbnbSelectTrigger.displayName = 'AirbnbSelectTrigger';\n\nexport {AirbnbSelectTrigger};\n","import * as React from 'react';\nimport {\n  getFirstEnabledOptionIndex,\n  getLastEnabledOptionIndex,\n  getNextEnabledOptionIndex,\n  getOptionIndex,\n} from './select.utils';\nimport {type SelectValue} from './types';\nimport {type SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype UseDesktopSelectParams<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n> = {\n  isMobile: boolean;\n  isOpen: boolean;\n  options: SelectOption<T, V, L>[];\n  value?: SelectOption<T, V, L> | null;\n  disabled?: boolean;\n  onChange?: (option: SelectOption<T, V, L>) => void;\n};\n\nfunction useDesktopSelect<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n>({\n  isMobile,\n  isOpen,\n  options,\n  value,\n  disabled,\n  onChange,\n}: UseDesktopSelectParams<T, V, L>) {\n  const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n  const triggerRef = React.useRef<HTMLButtonElement>(null);\n  const listRef = React.useRef<HTMLDivElement>(null);\n  const optionRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n  const selectedIndex = getOptionIndex(options, value);\n\n  React.useEffect(() => {\n    if (!isOpen || isMobile) return;\n\n    setHighlightedIndex(currentIndex => {\n      if (currentIndex >= 0) {\n        return currentIndex;\n      }\n\n      return selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(options);\n    });\n\n    const frameId = window.requestAnimationFrame(() => {\n      listRef.current?.focus();\n    });\n\n    return () => {\n      window.cancelAnimationFrame(frameId);\n    };\n  }, [isMobile, isOpen, options, selectedIndex]);\n\n  React.useEffect(() => {\n    if (!isOpen || isMobile || highlightedIndex < 0) return;\n\n    optionRefs.current[highlightedIndex]?.scrollIntoView({\n      block: 'nearest',\n    });\n  }, [highlightedIndex, isMobile, isOpen]);\n\n  React.useEffect(() => {\n    if (isOpen) return;\n\n    setHighlightedIndex(-1);\n  }, [isOpen]);\n\n  const focusTrigger = React.useCallback(() => {\n    triggerRef.current?.focus();\n  }, []);\n\n  const handleSelect = React.useCallback(\n    (option: SelectOption<T, V, L>) => {\n      if (option.isDisabled || disabled) return;\n\n      onChange?.(option);\n    },\n    [disabled, onChange],\n  );\n\n  const openMenu = React.useCallback(\n    (targetIndex?: number) => {\n      const fallbackIndex =\n        selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(options);\n      setHighlightedIndex(targetIndex ?? fallbackIndex);\n    },\n    [options, selectedIndex],\n  );\n\n  const handleTriggerKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLButtonElement>, onOpen: () => void) => {\n      if (disabled) return;\n\n      if (event.key === 'ArrowDown') {\n        event.preventDefault();\n        const startIndex =\n          selectedIndex >= 0 ? selectedIndex + 1 : getFirstEnabledOptionIndex(options);\n        openMenu(getNextEnabledOptionIndex(options, startIndex, 1));\n        onOpen();\n        return;\n      }\n\n      if (event.key === 'ArrowUp') {\n        event.preventDefault();\n        const startIndex =\n          selectedIndex >= 0 ? selectedIndex - 1 : getLastEnabledOptionIndex(options);\n        openMenu(getNextEnabledOptionIndex(options, startIndex, -1));\n        onOpen();\n        return;\n      }\n\n      if (event.key === 'Enter' || event.key === ' ') {\n        event.preventDefault();\n        openMenu();\n        onOpen();\n      }\n    },\n    [disabled, openMenu, options, selectedIndex],\n  );\n\n  const handleMenuKeyDown = React.useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>, onClose: () => void) => {\n      if (event.key === 'Escape') {\n        event.preventDefault();\n        onClose();\n        focusTrigger();\n        return;\n      }\n\n      if (event.key === 'Tab') {\n        onClose();\n        return;\n      }\n\n      if (event.key === 'ArrowDown') {\n        event.preventDefault();\n        const nextIndex = getNextEnabledOptionIndex(options, highlightedIndex + 1, 1);\n        if (nextIndex >= 0) {\n          setHighlightedIndex(nextIndex);\n        }\n        return;\n      }\n\n      if (event.key === 'ArrowUp') {\n        event.preventDefault();\n        const nextIndex = getNextEnabledOptionIndex(options, highlightedIndex - 1, -1);\n        if (nextIndex >= 0) {\n          setHighlightedIndex(nextIndex);\n        }\n        return;\n      }\n\n      if (event.key === 'Home') {\n        event.preventDefault();\n        setHighlightedIndex(getFirstEnabledOptionIndex(options));\n        return;\n      }\n\n      if (event.key === 'End') {\n        event.preventDefault();\n        setHighlightedIndex(getLastEnabledOptionIndex(options));\n        return;\n      }\n\n      if (event.key === 'Enter' || event.key === ' ') {\n        event.preventDefault();\n        const option = options[highlightedIndex];\n\n        if (option && !option.isDisabled) {\n          onChange?.(option);\n          onClose();\n          focusTrigger();\n        }\n      }\n    },\n    [focusTrigger, highlightedIndex, onChange, options],\n  );\n\n  const setOptionRef = React.useCallback(\n    (index: number, node: HTMLButtonElement | null) => {\n      optionRefs.current[index] = node;\n    },\n    [],\n  );\n\n  return {\n    highlightedIndex,\n    listRef,\n    setHighlightedIndex,\n    setOptionRef,\n    triggerRef,\n    focusTrigger,\n    handleSelect,\n    handleMenuKeyDown,\n    handleTriggerKeyDown,\n  };\n}\n\nexport {useDesktopSelect};\n","import * as React from 'react';\nimport type {ReactNode} from 'react';\nimport {MOBILE_OPTION_HEIGHT, MOBILE_SCROLL_SETTLE_DELAY} from './constants';\nimport {type SelectValue} from './types';\nimport {\n  getFirstEnabledOptionIndex,\n  getLastEnabledOptionIndex,\n  getNextEnabledOptionIndex,\n  getOptionIndex,\n  getOptionScrollTop,\n} from './select.utils';\nimport {type SelectOption} from '../../lib/selector-option';\n\ntype UseMobileSelectWheelParams<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n> = {\n  isMobile: boolean;\n  isOpen: boolean;\n  options: SelectOption<T, V, L>[];\n  value?: SelectOption<T, V, L> | null;\n  disabled?: boolean;\n};\n\nfunction useMobileSelectWheel<\n  T,\n  V extends SelectValue,\n  L extends string | number | ReactNode,\n>({isMobile, isOpen, options, value, disabled}: UseMobileSelectWheelParams<T, V, L>) {\n  const [pendingValue, setPendingValue] = React.useState<SelectOption<T, V, L> | null>(\n    value ?? null,\n  );\n  const [mobileScrollTop, setMobileScrollTop] = React.useState(0);\n  const mobileListRef = React.useRef<HTMLDivElement>(null);\n  const scrollSettleTimeoutRef = React.useRef<number | null>(null);\n  const scrollAnimationFrameRef = React.useRef<number | null>(null);\n\n  const getTargetIndex = React.useCallback(\n    (targetValue?: SelectOption<T, V, L> | null) => {\n      const selectedIndex = getOptionIndex(options, targetValue);\n\n      return selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(options);\n    },\n    [options],\n  );\n\n  const syncScrollPosition = React.useCallback(\n    (\n      targetValue?: SelectOption<T, V, L> | null,\n      behavior: ScrollBehavior = 'instant',\n    ) => {\n      const targetIndex = getTargetIndex(targetValue);\n      if (targetIndex < 0) return;\n\n      const nextScrollTop = getOptionScrollTop(targetIndex);\n      setMobileScrollTop(nextScrollTop);\n\n      if (mobileListRef.current) {\n        mobileListRef.current.scrollTo({\n          top: nextScrollTop,\n          behavior,\n        });\n      }\n\n      const targetOption = options[targetIndex];\n      if (targetOption && !targetOption.isDisabled) {\n        setPendingValue(targetOption);\n      }\n    },\n    [getTargetIndex, options],\n  );\n\n  const clearScrollSettleTimeout = React.useCallback(() => {\n    if (scrollSettleTimeoutRef.current === null) return;\n\n    window.clearTimeout(scrollSettleTimeoutRef.current);\n    scrollSettleTimeoutRef.current = null;\n  }, []);\n\n  const clearScrollAnimationFrame = React.useCallback(() => {\n    if (scrollAnimationFrameRef.current === null) return;\n\n    window.cancelAnimationFrame(scrollAnimationFrameRef.current);\n    scrollAnimationFrameRef.current = null;\n  }, []);\n\n  React.useEffect(\n    () => () => {\n      clearScrollSettleTimeout();\n      clearScrollAnimationFrame();\n    },\n    [clearScrollAnimationFrame, clearScrollSettleTimeout],\n  );\n\n  React.useEffect(() => {\n    setPendingValue(value ?? null);\n  }, [value]);\n\n  React.useLayoutEffect(() => {\n    if (!isMobile || !isOpen) return;\n\n    const frameId = window.requestAnimationFrame(() => {\n      syncScrollPosition(value ?? null, 'instant');\n    });\n\n    return () => {\n      window.cancelAnimationFrame(frameId);\n    };\n  }, [isMobile, isOpen, syncScrollPosition, value]);\n\n  const settleScroll = React.useCallback(() => {\n    if (!mobileListRef.current) return;\n\n    const nextIndex = Math.round(mobileListRef.current.scrollTop / MOBILE_OPTION_HEIGHT);\n    const nextOption = options[nextIndex];\n    const nextScrollTop = getOptionScrollTop(nextIndex);\n\n    mobileListRef.current.scrollTop = nextScrollTop;\n    setMobileScrollTop(nextScrollTop);\n\n    if (\n      !nextOption ||\n      nextOption.isDisabled ||\n      nextOption.value === pendingValue?.value\n    ) {\n      return;\n    }\n\n    setPendingValue(nextOption);\n  }, [options, pendingValue]);\n\n  const scheduleScrollSettle = React.useCallback(() => {\n    clearScrollSettleTimeout();\n    scrollSettleTimeoutRef.current = window.setTimeout(() => {\n      settleScroll();\n    }, MOBILE_SCROLL_SETTLE_DELAY);\n  }, [clearScrollSettleTimeout, settleScroll]);\n\n  const handleScroll = React.useCallback(() => {\n    if (!mobileListRef.current) return;\n\n    const nextScrollTop = mobileListRef.current.scrollTop;\n    clearScrollAnimationFrame();\n\n    scrollAnimationFrameRef.current = window.requestAnimationFrame(() => {\n      setMobileScrollTop(nextScrollTop);\n      scrollAnimationFrameRef.current = null;\n    });\n\n    scheduleScrollSettle();\n  }, [clearScrollAnimationFrame, scheduleScrollSettle]);\n\n  const focusOptionByIndex = React.useCallback(\n    (\n      index: number,\n      behavior: ScrollBehavior = 'instant',\n      updatePendingImmediately = behavior === 'instant',\n    ) => {\n      if (!mobileListRef.current || index < 0 || index >= options.length) return;\n\n      const option = options[index];\n      if (!option || option.isDisabled) return;\n\n      const nextScrollTop = getOptionScrollTop(index);\n      mobileListRef.current.scrollTo({top: nextScrollTop, behavior});\n\n      if (updatePendingImmediately) {\n        setPendingValue(option);\n      }\n\n      if (behavior === 'instant') {\n        setMobileScrollTop(nextScrollTop);\n        return;\n      }\n\n      scheduleScrollSettle();\n    },\n    [options, scheduleScrollSettle],\n  );\n\n  const handleOptionClick = React.useCallback(\n    (option: SelectOption<T, V, L>) => {\n      if (!mobileListRef.current || disabled || option.isDisabled) return;\n\n      const optionIndex = getOptionIndex(options, option);\n      if (optionIndex < 0) return;\n\n      focusOptionByIndex(optionIndex, 'smooth', true);\n    },\n    [disabled, focusOptionByIndex, options],\n  );\n\n  const moveByStep = React.useCallback(\n    (step: 1 | -1) => {\n      const currentIndex = getOptionIndex(options, pendingValue);\n      const fallbackIndex =\n        step === 1\n          ? getFirstEnabledOptionIndex(options)\n          : getLastEnabledOptionIndex(options);\n      const startIndex = currentIndex < 0 ? fallbackIndex : currentIndex + step;\n      const nextIndex = getNextEnabledOptionIndex(options, startIndex, step);\n\n      if (nextIndex >= 0) {\n        focusOptionByIndex(nextIndex, 'smooth', true);\n      }\n    },\n    [focusOptionByIndex, options, pendingValue],\n  );\n\n  const moveToBoundary = React.useCallback(\n    (boundary: 'start' | 'end') => {\n      const targetIndex =\n        boundary === 'start'\n          ? getFirstEnabledOptionIndex(options)\n          : getLastEnabledOptionIndex(options);\n\n      if (targetIndex >= 0) {\n        focusOptionByIndex(targetIndex, 'smooth', true);\n      }\n    },\n    [focusOptionByIndex, options],\n  );\n\n  const syncPendingValue = React.useCallback(\n    (nextValue?: SelectOption<T, V, L> | null) => {\n      const normalizedValue = nextValue ?? null;\n      const matchedIndex = getOptionIndex(options, normalizedValue);\n      const nextIndex =\n        matchedIndex >= 0 ? matchedIndex : getFirstEnabledOptionIndex(options);\n\n      setPendingValue(normalizedValue);\n\n      if (nextIndex < 0) return;\n\n      const nextScrollTop = getOptionScrollTop(nextIndex);\n      setMobileScrollTop(nextScrollTop);\n\n      if (mobileListRef.current) {\n        mobileListRef.current.scrollTop = nextScrollTop;\n      }\n    },\n    [options],\n  );\n\n  return {\n    mobileListRef,\n    mobileScrollTop,\n    pendingValue,\n    syncPendingValue,\n    handleOptionClick,\n    handleScroll,\n    moveByStep,\n    moveToBoundary,\n  };\n}\n\nexport {useMobileSelectWheel};\n","import * as React from 'react';\n\ntype UseSelectIdsParams = {\n  name?: string;\n  hasValue: boolean;\n  error?: string;\n  hideErrorMessage?: boolean;\n};\n\nfunction useSelectIds({name, hasValue, error, hideErrorMessage}: UseSelectIdsParams) {\n  const reactId = React.useId().replace(/:/g, '');\n  const baseId = name ? `select-${name}` : `select-${reactId}`;\n  const triggerId = `${baseId}-trigger`;\n  const labelId = `${baseId}-label`;\n  const valueId = `${baseId}-value`;\n  const helperTextId = `${baseId}-helper`;\n  const errorId = `${baseId}-error`;\n  const listboxId = `${baseId}-listbox`;\n  const describedErrorId = error && !hideErrorMessage ? errorId : undefined;\n  const describedBy =\n    [!hasValue ? helperTextId : null, describedErrorId].filter(Boolean).join(' ') ||\n    undefined;\n\n  const getOptionId = React.useCallback(\n    (index: number) => `${baseId}-option-${index}`,\n    [baseId],\n  );\n\n  return {\n    triggerId,\n    labelId,\n    valueId,\n    helperTextId,\n    errorId,\n    describedErrorId,\n    listboxId,\n    describedBy,\n    getOptionId,\n  };\n}\n\nexport {useSelectIds};\n","import * as React from 'react';\nimport {ChevronDown, Search} from 'lucide-react';\nimport {useVirtualizer} from '@tanstack/react-virtual';\nimport {type ReactNode, useCallback} from 'react';\nimport type {AirbnbSearchableSelectProps, AirbnbSearchableSelectValue} from './types';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../drawer';\nimport {AirbnbFieldTrigger} from '../field-trigger';\nimport {useOutsideClick, useScreenResize, useEvent} from '../../hooks';\nimport {DEVICE} from '../../lib/device';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\n\nconst ROW_HEIGHT = 48;\nconst DESKTOP_LIST_HEIGHT = 280;\nconst MOBILE_LIST_HEIGHT = 420;\nconst LOAD_MORE_THRESHOLD = 6;\n\nfunction defaultFilter<T, V extends AirbnbSearchableSelectValue, L extends ReactNode>(\n  option: SelectOption<T, V, L>,\n  searchValue: string,\n) {\n  return String(option.label).toLowerCase().includes(searchValue.trim().toLowerCase());\n}\n\nconst AirbnbSearchableSelectInternal = <\n  T = unknown,\n  V extends AirbnbSearchableSelectValue = string,\n  L extends ReactNode = string,\n>(\n  {\n    options,\n    value,\n    onChange,\n    onBlur,\n    onOpenChange,\n    searchValue,\n    onSearchChange,\n    filterOption = defaultFilter,\n    loading,\n    hasNextPage,\n    onLoadMore,\n    label,\n    topLabel,\n    placeholder,\n    searchPlaceholder = 'Search...',\n    mobileTitle,\n    getValueLabel,\n    disabled,\n    error,\n    invalid,\n    optional,\n    tooltip,\n    helper,\n    hideErrorMessage,\n    name,\n    className,\n    dropdownClassName,\n    menuClassName,\n    noOptionsMessage,\n    loadingMessage,\n  }: AirbnbSearchableSelectProps<T, V, L>,\n  ref: React.ForwardedRef<HTMLButtonElement>,\n) => {\n  const {isMatch: isMobile} = useScreenResize(DEVICE.mobileXL);\n  const reactId = React.useId();\n  const [open, setOpen] = React.useState(false);\n  const [internalSearchValue, setInternalSearchValue] = React.useState('');\n  const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n  const containerRef = React.useRef<HTMLDivElement>(null);\n  const triggerRef = React.useRef<HTMLButtonElement>(null);\n  const inputRef = React.useRef<HTMLInputElement>(null);\n  const listboxId = `${reactId}-listbox`;\n  const labelId = `${reactId}-label`;\n  const valueId = `${reactId}-value`;\n  const helperTextId = `${reactId}-helper`;\n  const errorId = `${reactId}-error`;\n  const searchInputId = `${reactId}-search`;\n  const effectiveSearchValue = searchValue ?? internalSearchValue;\n  const shouldFilterLocally = !onSearchChange && filterOption !== null;\n  const visibleOptions = React.useMemo(() => {\n    if (!shouldFilterLocally || !effectiveSearchValue) {\n      return options;\n    }\n\n    return options.filter(option => filterOption(option, effectiveSearchValue));\n  }, [effectiveSearchValue, filterOption, options, shouldFilterLocally]);\n  const selectedIndex = React.useMemo(\n    () => visibleOptions.findIndex(option => option.value === value?.value),\n    [value?.value, visibleOptions],\n  );\n  const helperText = placeholder ?? label;\n  const valueLabel = value ? (getValueLabel?.(value) ?? String(value.label)) : undefined;\n  const isBlocked = Boolean(disabled) || Boolean(loading);\n  const triggerError = error ?? invalid;\n  const describedBy = error && !hideErrorMessage ? errorId : undefined;\n  const activeOptionId =\n    highlightedIndex >= 0 ? getOptionId(reactId, highlightedIndex) : undefined;\n\n  useOutsideClick({\n    elementRef: containerRef,\n    onOutsideClick: () => closeSelect(),\n    isDisabled: !open || isMobile,\n  });\n\n  const handleOnOpenChange = useEvent(onOpenChange);\n  const setSelectOpen = useCallback(\n    (nextOpen: boolean, options?: {restoreFocus?: boolean}) => {\n      setOpen(nextOpen);\n      handleOnOpenChange?.(nextOpen);\n\n      if (!nextOpen && options?.restoreFocus) {\n        triggerRef.current?.focus();\n      }\n    },\n    [handleOnOpenChange],\n  );\n\n  React.useEffect(() => {\n    if (isBlocked) {\n      setSelectOpen(false);\n      return;\n    }\n\n    if (!open) return;\n\n    const frameId = window.requestAnimationFrame(() => {\n      inputRef.current?.focus();\n    });\n\n    return () => {\n      window.cancelAnimationFrame(frameId);\n    };\n  }, [isBlocked, open, setSelectOpen]);\n\n  React.useEffect(() => {\n    if (!open) {\n      setHighlightedIndex(-1);\n      return;\n    }\n\n    setHighlightedIndex(currentIndex => {\n      if (\n        currentIndex >= 0 &&\n        currentIndex < visibleOptions.length &&\n        !visibleOptions[currentIndex]?.isDisabled\n      ) {\n        return currentIndex;\n      }\n\n      return selectedIndex >= 0 ? selectedIndex : getFirstEnabledIndex(visibleOptions);\n    });\n  }, [open, selectedIndex, visibleOptions]);\n\n  function openSelect() {\n    if (isBlocked) return;\n\n    setSelectOpen(true);\n  }\n\n  function closeSelect() {\n    setSelectOpen(false, {restoreFocus: true});\n  }\n\n  function handleSearchChange(nextValue: string) {\n    if (!onSearchChange) {\n      setInternalSearchValue(nextValue);\n    }\n\n    onSearchChange?.(nextValue);\n  }\n\n  function handleSelect(option: SelectOption<T, V, L>) {\n    if (isBlocked || option.isDisabled) return;\n\n    onChange(option);\n    setSelectOpen(false, {restoreFocus: true});\n  }\n\n  function moveHighlight(step: 1 | -1) {\n    const startIndex =\n      highlightedIndex >= 0\n        ? highlightedIndex + step\n        : step === 1\n          ? 0\n          : visibleOptions.length - 1;\n    const nextIndex = getNextEnabledIndex(visibleOptions, startIndex, step);\n\n    if (nextIndex >= 0) {\n      setHighlightedIndex(nextIndex);\n    }\n  }\n\n  function handleTriggerKeyDown(event: React.KeyboardEvent<HTMLButtonElement>) {\n    if (isBlocked) return;\n\n    if (\n      event.key === 'Enter' ||\n      event.key === ' ' ||\n      event.key === 'ArrowDown' ||\n      event.key === 'ArrowUp'\n    ) {\n      event.preventDefault();\n      openSelect();\n    }\n  }\n\n  function handleSearchKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      closeSelect();\n      return;\n    }\n\n    if (event.key === 'ArrowDown') {\n      event.preventDefault();\n      moveHighlight(1);\n      return;\n    }\n\n    if (event.key === 'ArrowUp') {\n      event.preventDefault();\n      moveHighlight(-1);\n      return;\n    }\n\n    if (event.key === 'Enter') {\n      event.preventDefault();\n      const option = visibleOptions[highlightedIndex];\n\n      if (option) {\n        handleSelect(option);\n      }\n    }\n  }\n\n  const content = (\n    <AirbnbSearchableSelectContent\n      inputId={searchInputId}\n      listboxId={listboxId}\n      labelId={labelId}\n      activeOptionId={activeOptionId}\n      inputRef={inputRef}\n      options={visibleOptions}\n      value={value}\n      searchValue={effectiveSearchValue}\n      searchPlaceholder={searchPlaceholder}\n      highlightedIndex={highlightedIndex}\n      loading={loading}\n      hasNextPage={hasNextPage}\n      onLoadMore={onLoadMore}\n      menuClassName={menuClassName}\n      noOptionsMessage={noOptionsMessage}\n      loadingMessage={loadingMessage}\n      height={isMobile ? MOBILE_LIST_HEIGHT : DESKTOP_LIST_HEIGHT}\n      idPrefix={reactId}\n      onSearchChange={handleSearchChange}\n      onSearchKeyDown={handleSearchKeyDown}\n      onOptionClick={handleSelect}\n      onOptionHover={setHighlightedIndex}\n    />\n  );\n\n  React.useImperativeHandle(ref, () => triggerRef.current as HTMLButtonElement, []);\n\n  return (\n    <div\n      ref={containerRef}\n      className={cn('relative w-full max-w-[var(--max-field-width)]', className)}\n    >\n      {name && (\n        <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n      )}\n      <AirbnbFieldTrigger\n        id={`${reactId}-trigger`}\n        ref={triggerRef}\n        aria-haspopup=\"listbox\"\n        aria-expanded={open}\n        aria-controls={listboxId}\n        label={label}\n        topLabel={topLabel}\n        labelId={labelId}\n        valueId={valueId}\n        helperTextId={helperTextId}\n        errorId={error ? errorId : undefined}\n        labelText={topLabel ? helperText : undefined}\n        valueText={valueLabel}\n        placeholder={helperText}\n        describedBy={describedBy}\n        error={triggerError}\n        loading={loading}\n        optional={optional}\n        tooltip={tooltip}\n        helper={helper}\n        forceLabelText={Boolean(optional) || Boolean(tooltip)}\n        hideErrorMessage={hideErrorMessage}\n        disabled={disabled}\n        onClick={() => {\n          if (open) {\n            closeSelect();\n            return;\n          }\n\n          openSelect();\n        }}\n        onKeyDown={handleTriggerKeyDown}\n        onBlur={onBlur}\n        trailingAdornment={\n          <ChevronDown\n            className={cn(\n              'h-6 w-6 text-[var(--chekin-airbnb-ink)] transition-transform',\n              open && 'rotate-180',\n            )}\n          />\n        }\n      />\n      {isMobile ? (\n        <Drawer\n          open={open}\n          onOpenChange={nextOpen => {\n            if (isBlocked && nextOpen) return;\n\n            if (nextOpen) {\n              setSelectOpen(true);\n              return;\n            }\n\n            closeSelect();\n          }}\n        >\n          <DrawerContent onClose={closeSelect} lockScroll={false}>\n            <DrawerTitle className=\"sr-only\">{mobileTitle ?? label}</DrawerTitle>\n            <DrawerDescription className=\"sr-only\">{label}</DrawerDescription>\n            <div className=\"px-5 pb-5 pt-1\">{content}</div>\n          </DrawerContent>\n        </Drawer>\n      ) : open ? (\n        <div\n          className={cn(\n            'absolute left-0 right-0 top-[calc(100%+8px)] z-20 overflow-hidden rounded-[20px] border border-[var(--chekin-airbnb-border)] bg-white shadow-[0_14px_30px_rgba(18,18,18,0.08)]',\n            dropdownClassName,\n          )}\n        >\n          {content}\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\ntype AirbnbSearchableSelectComponent = <\n  T = unknown,\n  V extends AirbnbSearchableSelectValue = string,\n  L extends ReactNode = string,\n>(\n  props: AirbnbSearchableSelectProps<T, V, L> & React.RefAttributes<HTMLButtonElement>,\n) => React.ReactElement | null;\n\nconst AirbnbSearchableSelect = React.forwardRef(\n  AirbnbSearchableSelectInternal,\n) as AirbnbSearchableSelectComponent;\n\ntype AirbnbSearchableSelectContentProps<\n  T,\n  V extends AirbnbSearchableSelectValue,\n  L extends ReactNode,\n> = {\n  inputId: string;\n  listboxId: string;\n  labelId: string;\n  activeOptionId?: string;\n  inputRef: React.RefObject<HTMLInputElement>;\n  options: SelectOption<T, V, L>[];\n  value?: SelectOption<T, V, L> | null;\n  searchValue: string;\n  searchPlaceholder: string;\n  highlightedIndex: number;\n  loading?: boolean;\n  hasNextPage?: boolean;\n  onLoadMore?: () => void;\n  menuClassName?: string;\n  noOptionsMessage?: () => string | undefined;\n  loadingMessage?: () => string | undefined;\n  height: number;\n  idPrefix: string;\n  onSearchChange: (value: string) => void;\n  onSearchKeyDown: React.KeyboardEventHandler<HTMLInputElement>;\n  onOptionClick: (option: SelectOption<T, V, L>) => void;\n  onOptionHover: (index: number) => void;\n};\n\nfunction AirbnbSearchableSelectContent<\n  T,\n  V extends AirbnbSearchableSelectValue,\n  L extends ReactNode,\n>({\n  inputId,\n  listboxId,\n  labelId,\n  activeOptionId,\n  inputRef,\n  options,\n  value,\n  searchValue,\n  searchPlaceholder,\n  highlightedIndex,\n  loading,\n  hasNextPage,\n  onLoadMore,\n  menuClassName,\n  noOptionsMessage,\n  loadingMessage,\n  height,\n  idPrefix,\n  onSearchChange,\n  onSearchKeyDown,\n  onOptionClick,\n  onOptionHover,\n}: AirbnbSearchableSelectContentProps<T, V, L>) {\n  const listRef = React.useRef<HTMLDivElement>(null);\n  const lastLoadMoreOptionsLengthRef = React.useRef<number | null>(null);\n  const previousHighlightedIndexRef = React.useRef(highlightedIndex);\n  const rowCount = options.length + (loading && options.length > 0 ? 1 : 0);\n  const virtualizer = useVirtualizer({\n    count: rowCount,\n    getScrollElement: () => listRef.current,\n    estimateSize: () => ROW_HEIGHT,\n    overscan: 6,\n  });\n  const virtualItems = virtualizer.getVirtualItems();\n  const emptyMessage = noOptionsMessage?.() ?? 'No matches found';\n  const loadingText = loadingMessage?.() ?? 'Loading...';\n\n  React.useEffect(() => {\n    const lastItem = virtualItems[virtualItems.length - 1];\n    const shouldLoadMore =\n      !!lastItem &&\n      hasNextPage &&\n      !loading &&\n      lastItem.index >= options.length - LOAD_MORE_THRESHOLD;\n\n    if (shouldLoadMore && lastLoadMoreOptionsLengthRef.current !== options.length) {\n      lastLoadMoreOptionsLengthRef.current = options.length;\n      onLoadMore?.();\n    }\n  }, [hasNextPage, loading, onLoadMore, options.length, virtualItems]);\n\n  React.useEffect(() => {\n    const hasHighlightedIndexChanged =\n      previousHighlightedIndexRef.current !== highlightedIndex;\n\n    previousHighlightedIndexRef.current = highlightedIndex;\n\n    if (highlightedIndex >= 0 && hasHighlightedIndexChanged) {\n      virtualizer.scrollToIndex(highlightedIndex, {align: 'auto'});\n    }\n  }, [highlightedIndex, virtualizer]);\n\n  return (\n    <div className=\"p-2\">\n      <div className=\"relative mb-2\">\n        <Search\n          aria-hidden=\"true\"\n          className=\"absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 text-[var(--chekin-neutral-500)]\"\n        />\n        <input\n          id={inputId}\n          ref={inputRef}\n          role=\"combobox\"\n          aria-expanded=\"true\"\n          aria-controls={listboxId}\n          aria-activedescendant={activeOptionId}\n          aria-autocomplete=\"list\"\n          aria-labelledby={labelId}\n          value={searchValue}\n          placeholder={searchPlaceholder}\n          onChange={event => onSearchChange(event.target.value)}\n          onKeyDown={onSearchKeyDown}\n          className=\"h-11 w-full rounded-xl border border-[var(--chekin-airbnb-border)] bg-white pl-12 pr-4 text-base text-[var(--chekin-airbnb-ink)] outline-none placeholder:text-[var(--chekin-neutral-500)] focus:border-[var(--chekin-airbnb-ink)]\"\n        />\n      </div>\n      {loading && options.length === 0 ? (\n        <div className=\"px-4 py-5 text-center text-base leading-6 text-[var(--chekin-airbnb-gray-text)]\">\n          {loadingText}\n        </div>\n      ) : options.length === 0 ? (\n        <div className=\"px-4 py-5 text-center text-base leading-6 text-[var(--chekin-airbnb-gray-text)]\">\n          {emptyMessage}\n        </div>\n      ) : (\n        <div\n          id={listboxId}\n          ref={listRef}\n          role=\"listbox\"\n          aria-labelledby={labelId}\n          className={cn('overflow-y-auto outline-none', menuClassName)}\n          style={{height: Math.min(height, rowCount * ROW_HEIGHT)}}\n        >\n          <div\n            className=\"relative w-full\"\n            style={{height: `${virtualizer.getTotalSize()}px`}}\n          >\n            {virtualItems.map(virtualItem => {\n              const option = options[virtualItem.index];\n\n              if (!option) {\n                return (\n                  <div\n                    key={virtualItem.key}\n                    className=\"absolute left-0 top-0 flex w-full items-center px-4 text-base leading-6 text-[var(--chekin-airbnb-gray-text)]\"\n                    style={{\n                      height: `${virtualItem.size}px`,\n                      transform: `translateY(${virtualItem.start}px)`,\n                    }}\n                  >\n                    {loadingText}\n                  </div>\n                );\n              }\n\n              const isSelected = value?.value === option.value;\n              const isHighlighted = virtualItem.index === highlightedIndex;\n\n              return (\n                <button\n                  id={getOptionId(idPrefix, virtualItem.index)}\n                  key={`${String(option.value)}-${virtualItem.index}`}\n                  type=\"button\"\n                  role=\"option\"\n                  aria-selected={isSelected}\n                  aria-disabled={option.isDisabled}\n                  tabIndex={-1}\n                  disabled={option.isDisabled}\n                  onClick={() => onOptionClick(option)}\n                  onMouseMove={() => onOptionHover(virtualItem.index)}\n                  className={cn(\n                    'absolute left-0 top-0 flex w-full items-center justify-center rounded-2xl px-4 text-center text-base leading-6 text-[var(--chekin-airbnb-zinc)] transition-colors',\n                    isHighlighted && 'bg-[var(--chekin-airbnb-surface)]',\n                    isSelected &&\n                      'bg-[var(--chekin-airbnb-surface)] font-medium text-[var(--chekin-airbnb-ink-black)]',\n                    option.isDisabled && 'cursor-not-allowed opacity-40',\n                  )}\n                  style={{\n                    height: `${virtualItem.size}px`,\n                    transform: `translateY(${virtualItem.start}px)`,\n                  }}\n                >\n                  <span className=\"truncate text-center\">{String(option.label)}</span>\n                </button>\n              );\n            })}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n}\n\nfunction getOptionId(idPrefix: string, index: number) {\n  return `${idPrefix}-option-${index}`;\n}\n\nfunction getFirstEnabledIndex<\n  T,\n  V extends AirbnbSearchableSelectValue,\n  L extends ReactNode,\n>(options: SelectOption<T, V, L>[]) {\n  return options.findIndex(option => !option.isDisabled);\n}\n\nfunction getNextEnabledIndex<\n  T,\n  V extends AirbnbSearchableSelectValue,\n  L extends ReactNode,\n>(options: SelectOption<T, V, L>[], startIndex: number, step: 1 | -1) {\n  let nextIndex = startIndex;\n\n  while (nextIndex >= 0 && nextIndex < options.length) {\n    if (!options[nextIndex]?.isDisabled) {\n      return nextIndex;\n    }\n\n    nextIndex += step;\n  }\n\n  return -1;\n}\n\nexport {AirbnbSearchableSelect};\n","import * as React from 'react';\nimport {type ComponentProps} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Search, X} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {Button} from '../../button';\nimport {AirbnbFieldHelperText} from '../field-helper-text';\n\ntype AirbnbSearchInputProps = ComponentProps<'input'> & {\n  onReset?: () => void;\n  helper?: React.ReactNode;\n  wrapperClassName?: string;\n};\n\nexport const AirbnbSearchInput = React.forwardRef<\n  HTMLInputElement,\n  AirbnbSearchInputProps\n>(({onReset, placeholder, helper, wrapperClassName, ...props}, ref) => {\n  const {t} = useTranslation();\n  const generatedId = React.useId();\n  const helperId = helper ? `${props.id ?? generatedId}-helper` : undefined;\n\n  const placeholderText = placeholder || t('search_property') + '...';\n\n  const field = (\n    <div className={cn('input-wrapper relative', wrapperClassName)}>\n      <Search className=\"absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[var(--chekin-neutral-500)]\" />\n      <input\n        {...props}\n        ref={ref}\n        type=\"text\"\n        disabled={props.disabled}\n        value={props.value}\n        defaultValue={props.defaultValue}\n        onChange={props.onChange}\n        onFocus={props.onFocus}\n        onBlur={props.onBlur}\n        placeholder={placeholderText}\n        aria-describedby={helperId ?? props['aria-describedby']}\n        className={cn(\n          'placeholder-shown:bg-accent flex h-10 w-full rounded-md border border-input bg-background py-3 pl-12 pr-4 text-base text-[#2d3748] ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-base placeholder:font-medium placeholder:text-[var(--chekin-neutral-500)] focus:border-gray-300 focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n          props.className,\n        )}\n      />\n      {onReset && (\n        <Button\n          variant=\"ghost\"\n          onClick={onReset}\n          className=\"absolute right-0 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[var(--chekin-neutral-500)]\"\n        >\n          <X className=\"h-5 w-5\" />\n        </Button>\n      )}\n    </div>\n  );\n\n  if (!helper) {\n    return field;\n  }\n\n  return (\n    <div className=\"w-full\">\n      {field}\n      <AirbnbFieldHelperText id={helperId} helper={helper} disabled={props.disabled} />\n    </div>\n  );\n});\n\nAirbnbSearchInput.displayName = 'AirbnbSearchInput';\n","import * as React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport {Check} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {Label} from '../../label';\nimport {ErrorMessage} from '../../error-message';\nimport {AirbnbFieldHelperText} from '../field-helper-text';\n\nexport interface AirbnbSwitchProps extends Omit<\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>,\n  'onChange' | 'value'\n> {\n  value?: boolean;\n  onChange?: React.ComponentPropsWithoutRef<\n    typeof SwitchPrimitives.Root\n  >['onCheckedChange'];\n  loading?: boolean;\n  readOnly?: boolean;\n  label?: React.ReactNode;\n  error?: string;\n  helper?: React.ReactNode;\n  wrapperClassName?: string;\n}\n\nexport const AirbnbSwitch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitives.Root>,\n  AirbnbSwitchProps\n>(\n  (\n    {\n      className,\n      value,\n      onChange,\n      disabled,\n      loading,\n      readOnly,\n      id,\n      label,\n      error,\n      helper,\n      wrapperClassName,\n      ...props\n    },\n    ref,\n  ) => {\n    const generatedId = React.useId();\n    const fieldId = id || generatedId;\n    const helperId = `${fieldId}-helper`;\n\n    const switchElement = (\n      <SwitchPrimitives.Root\n        ref={ref}\n        aria-describedby={helper ? helperId : undefined}\n        className={cn(\n          'group inline-flex h-[24px] w-[36px] shrink-0 cursor-pointer items-center rounded-full border border-solid border-transparent p-[2px] transition-colors duration-200',\n          'focus-visible:outline-none focus-visible:shadow-[var(--chekin-shadow-focus)]',\n          'disabled:cursor-not-allowed disabled:opacity-50 aria-busy:cursor-wait aria-busy:opacity-50',\n          'aria-readonly:cursor-default aria-readonly:opacity-100',\n          'data-[state=checked]:bg-[var(--chekin-airbnb-ink-strong)] data-[state=unchecked]:bg-[var(--chekin-airbnb-border-soft)]',\n          className,\n        )}\n        id={fieldId}\n        disabled={disabled}\n        checked={value}\n        value={String(value)}\n        onCheckedChange={!disabled && !readOnly ? onChange : undefined}\n        aria-busy={loading}\n        aria-readonly={readOnly}\n        {...props}\n      >\n        <SwitchPrimitives.Thumb\n          className={cn(\n            'flex h-[20px] w-[20px] items-center justify-center rounded-full bg-white shadow-[0_1px_3px_rgba(0,0,0,0.22)] transition-transform duration-200',\n            'data-[state=checked]:translate-x-[12px] data-[state=unchecked]:translate-x-0',\n          )}\n        >\n          <Check\n            aria-hidden=\"true\"\n            className=\"h-3 w-3 text-[var(--chekin-airbnb-ink-strong)] opacity-0 transition-opacity duration-150 group-data-[state=checked]:opacity-100\"\n            strokeWidth={3}\n          />\n        </SwitchPrimitives.Thumb>\n      </SwitchPrimitives.Root>\n    );\n\n    if (!label && !error && !helper) {\n      return switchElement;\n    }\n\n    return (\n      <>\n        <div className={cn('flex items-center gap-x-3 gap-y-1.5', wrapperClassName)}>\n          {switchElement}\n          {label && (\n            <Label\n              htmlFor={fieldId}\n              className={cn(\n                'text-base font-medium',\n                readOnly ? 'cursor-default' : 'cursor-pointer',\n              )}\n            >\n              {label}\n            </Label>\n          )}\n        </div>\n        {error && <ErrorMessage disabled={disabled}>{error}</ErrorMessage>}\n        {!error && (\n          <AirbnbFieldHelperText id={helperId} helper={helper} disabled={disabled} />\n        )}\n      </>\n    );\n  },\n);\n\nAirbnbSwitch.displayName = 'AirbnbSwitch';\n","import * as React from 'react';\nimport {addDays, addHours, addMinutes, format, parse} from 'date-fns';\nimport {AirbnbSelect, type AirbnbSelectProps} from '../select';\nimport {type SelectOption} from '../../lib/selector-option';\nimport type {TimePickerFormat, TimeSettings} from '../../fields/time-picker';\n\ntype AirbnbTimePickerProps = Omit<\n  AirbnbSelectProps<unknown, string, string>,\n  'options'\n> & {\n  format?: TimePickerFormat;\n  timeSettings?: TimeSettings;\n  options?: AirbnbSelectProps<unknown, string, string>['options'];\n};\n\nconst SHORT_TIME_FORMAT = 'HH:mm';\n\nfunction parseTime(value: string) {\n  return parse(value, SHORT_TIME_FORMAT, new Date());\n}\n\nfunction getRange(\n  settings: Required<Omit<TimeSettings, 'addNextDay'>> & {\n    addNextDay: boolean;\n  },\n) {\n  const min = parseTime(settings.min_time);\n  const max =\n    settings.max_time === '00:00' && settings.addNextDay\n      ? addDays(parseTime(settings.max_time), 1)\n      : parseTime(settings.max_time);\n  return {min, max};\n}\n\nfunction buildOptions(settings: TimeSettings): SelectOption<unknown, string, string>[] {\n  const interval_unit = settings.interval_unit ?? 'M';\n  const interval = settings.interval ?? (interval_unit === 'H' ? 1 : 60);\n  const min_time = settings.min_time ?? '00:00';\n  const max_time = settings.max_time ?? (interval_unit === 'H' ? '23:00' : '23:00');\n  const addNextDay = settings.addNextDay !== false;\n  const {min, max} = getRange({interval_unit, interval, min_time, max_time, addNextDay});\n\n  const options: SelectOption<unknown, string, string>[] = [];\n  let current = new Date(min.getTime());\n  while (current.getTime() <= max.getTime()) {\n    const text = format(current, SHORT_TIME_FORMAT);\n    options.push({value: text, label: text});\n    current =\n      interval_unit === 'H' ? addHours(current, interval) : addMinutes(current, interval);\n  }\n  return options;\n}\n\nconst FORMAT_SETTINGS: Record<TimePickerFormat, TimeSettings> = {\n  time: {interval_unit: 'M', interval: 30, min_time: '00:00', max_time: '23:30'},\n  timeEach15Minutes: {\n    interval_unit: 'M',\n    interval: 15,\n    min_time: '00:00',\n    max_time: '23:45',\n  },\n  timeEach30Minutes: {\n    interval_unit: 'M',\n    interval: 30,\n    min_time: '00:00',\n    max_time: '23:30',\n  },\n  hours: {interval_unit: 'H', interval: 1, min_time: '00:00', max_time: '23:00'},\n};\n\nconst AirbnbTimePicker = React.forwardRef<HTMLButtonElement, AirbnbTimePickerProps>(\n  function AirbnbTimePicker(\n    {format: formatName = 'time', timeSettings, options, ...selectProps},\n    ref,\n  ) {\n    const resolvedOptions = React.useMemo(() => {\n      if (options) return options;\n      const settings = timeSettings ?? FORMAT_SETTINGS[formatName];\n      return buildOptions(settings);\n    }, [formatName, options, timeSettings]);\n\n    return <AirbnbSelect ref={ref} {...selectProps} options={resolvedOptions} />;\n  },\n);\n\nexport {AirbnbTimePicker};\nexport type {AirbnbTimePickerProps};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAAA;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mB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","names":["CollapsibleContent","CollapsibleTrigger","Content","Header","Root","Image","RadioGroup","Separator","React","import_jsx_runtime","import_lucide_react","import_jsx_runtime","AlertType","AlertSize","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","sizeClasses","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","import_react","import_react_i18next","React","import_class_variance_authority","React","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","React","import_react_slot","import_react_i18next","import_class_variance_authority","import_jsx_runtime","import_react_slot","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_class_variance_authority","import_jsx_runtime","defaultComponents","React","import_jsx_runtime","import_react","import_lucide_react","import_class_variance_authority","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react_i18next","React","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_lucide_react","React","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_react","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_jsx_runtime","CounterSize","sizeClasses","import_react_i18next","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_react","import_react","React","abortController","import_react","import_react","import_react","import_react","import_react","isMobile","import_react","import_react","import_react","import_react","import_react","import_react","import_react","React","import_react","import_react","import_react","import_react","import_react","import_react","import_react","storage","import_react","import_react","import_react","import_react","import_react","import_react","import_react","React","import_react","import_react","import_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_lucide_react","import_react_i18next","import_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react","import_react_i18next","CollapsibleTrigger","CollapsibleContent","import_jsx_runtime","CollapsibleContent","CollapsibleTrigger","import_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","Content","import_jsx_runtime","Header","import_jsx_runtime","Root","import_jsx_runtime","Root","Header","Content","React","import_class_variance_authority","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","Image","React","import_react","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","translation_default","import_lucide_react","React","DialogPrimitive","import_jsx_runtime","Draggable","import_jsx_runtime","isMobile","import_lucide_react","import_react_i18next","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_lucide_react","import_react_i18next","import_jsx_runtime","Image","import_react","import_lucide_react","import_jsx_runtime","import_react","import_react","import_jsx_runtime","React","import_jsx_runtime","import_react","import_jsx_runtime","import_react_i18next","import_jsx_runtime","import_react_i18next","import_lucide_react","import_react","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","SelectPrimitive","import_lucide_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","TooltipPrimitive","import_jsx_runtime","import_react","React","import_jsx_runtime","RadioGroup","import_react","import_jsx_runtime","RadioGroup","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_lucide_react","import_react_i18next","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_lucide_react","import_react_i18next","React","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","SectionTagColors","import_react","import_react_i18next","SubSectionSize","import_jsx_runtime","import_jsx_runtime","Separator","import_jsx_runtime","import_lucide_react","import_jsx_runtime","React","import_react_slot","import_class_variance_authority","import_lucide_react","import_jsx_runtime","import_react","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","isMobile","Separator","import_react","import_react_i18next","import_jsx_runtime","isMobile","ReactSignatureCanvas","React","React","import_lucide_react","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react","import_lucide_react","import_react_i18next","import_jsx_runtime","import_react_i18next","import_lucide_react","import_jsx_runtime","import_react","import_react_i18next","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","import_react","TabsPrimitive","import_class_variance_authority","import_jsx_runtime","Link","onClick","children","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_react_i18next","import_jsx_runtime","Root","import_jsx_runtime","import_react_slot","React","import_jsx_runtime","import_sonner","import_react","React","import_class_variance_authority","import_jsx_runtime","import_react","import_jsx_runtime","option","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","import_lucide_react","React","import_jsx_runtime","import_react","import_react_i18next","import_lucide_react","import_jsx_runtime","formatTime","import_react","import_react_device_detect","import_react","import_react_i18next","import_react_device_detect","context","import_jsx_runtime","compressImage","ReactWebcam","import_lucide_react","import_react","import_react_i18next","import_react","import_react_i18next","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react_i18next","import_react_visually_hidden","import_jsx_runtime","isMobile","React","import_jsx_runtime","isMobile","React","import_lucide_react","import_react_i18next","React","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","React","import_react_i18next","import_react_i18next","import_jsx_runtime","React","import_react_i18next","import_lucide_react","import_jsx_runtime","import_jsx_runtime","getOptionId","isOptionSelected","import_react_i18next","import_jsx_runtime","isMobile","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_lucide_react","import_react_i18next","import_jsx_runtime","getOptionId","React","getOptionId","React","isMobile","React","isOptionSelected","isMobile","import_lucide_react","import_react_i18next","import_jsx_runtime","import_jsx_runtime","getOptionId","import_lucide_react","import_jsx_runtime","import_jsx_runtime","getOptionId","isOptionSelected","import_react_i18next","import_jsx_runtime","React","import_react_i18next","import_react","import_jsx_runtime","isOptionSelected","import_jsx_runtime","PhoneInput","React","import_jsx_runtime","CreatableSelect","React","import_jsx_runtime","MultiSelect","React","import_jsx_runtime","CreatableMultiSelect","React","React","import_react_i18next","import_react_virtual","React","import_jsx_runtime","getOptionId","isOptionSelected","import_jsx_runtime","React","import_jsx_runtime","InfiniteScrollMultiSelect","React","import_react_i18next","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_react_i18next","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","passthroughFilter","React","import_react_i18next","React","isEmptyValue","import_jsx_runtime","Textarea","React","import_lucide_react","import_react_i18next","React","import_jsx_runtime","import_jsx_runtime","isMobile","React","import_jsx_runtime","MONTHS_IN_YEAR","getMonthLabels","getDaysInMonth","Datepicker","isMobile","React","import_react_i18next","import_date_fns","format","formatDateFns","React","React","format","format","parse","React","import_date_fns","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","isMobile","import_jsx_runtime","DateRangePicker","isMobile","React","import_react_i18next","import_date_fns","import_react_day_picker","React","import_react_i18next","React","React","countDigits","format","parse","import_lucide_react","import_jsx_runtime","DEFAULT_PLACEHOLDER","inputBaseClass","iconButtonClass","import_jsx_runtime","import_jsx_runtime","SingleDatePicker","isMobile","React","import_date_fns","import_jsx_runtime","TimePicker","React","import_lucide_react","import_react_i18next","import_jsx_runtime","FileInput","React","import_jsx_runtime","FOCUSABLE_TRIGGER_SELECTOR","SelectIconsBox","import_sonner","error","import_jsx_runtime","i18next","import_react","import_jsx_runtime","React","import_lucide_react","React","import_lucide_react","import_react_i18next","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","isMobile","React","import_lucide_react","import_react_i18next","import_jsx_runtime","isMobile","import_jsx_runtime","AirbnbDateRangePicker","isMobile","React","import_lucide_react","import_react_i18next","import_jsx_runtime","React","import_lucide_react","React","import_jsx_runtime","getOptionId","import_jsx_runtime","getOptionId","getOptionIndex","getFirstEnabledOptionIndex","getLastEnabledOptionIndex","getNextEnabledOptionIndex","getOptionScrollTop","import_jsx_runtime","getOptionId","spacerHeight","import_jsx_runtime","getOptionId","React","import_lucide_react","import_jsx_runtime","React","isMobile","getOptionIndex","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","getLastEnabledOptionIndex","React","isMobile","getOptionIndex","getFirstEnabledOptionIndex","getOptionScrollTop","getLastEnabledOptionIndex","getNextEnabledOptionIndex","React","useSelectIds","getOptionId","import_jsx_runtime","AirbnbSelect","isMobile","getOptionId","useSelectIds","getOptionIndex","import_jsx_runtime","formatPhoneCodeOptionLabel","React","import_lucide_react","import_react_virtual","import_react","import_jsx_runtime","isMobile","options","React","import_react_i18next","import_lucide_react","import_jsx_runtime","React","SwitchPrimitives","import_lucide_react","import_jsx_runtime","React","import_date_fns","import_jsx_runtime","SHORT_TIME_FORMAT","parseTime","getRange","buildOptions","FORMAT_SETTINGS","AirbnbTimePicker"]}