@chekinapp/ui 0.0.68 → 0.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/accordion/Accordion.tsx","../src/lib/cn.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/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/text-field/FieldError.tsx","../src/text-field/SupportingText.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/status-badge/StatusBadge.tsx","../src/copy-icon/CopyIcon.tsx","../src/input/Input.tsx","../src/copy-input/CopyInput.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/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-outside-click.ts","../src/hooks/use-screen-resize.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/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-timer.ts","../src/hooks/use-timeout.ts","../src/hooks/use-timeout-ref.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/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/free-text-field/FreeTextField.tsx","../src/framed-icon/FramedIcon.tsx","../src/help-tooltip/HelpTooltip.tsx","../src/svg-icon/SvgIcon.tsx","../src/icon-button/IconButton.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/de/translation.json","../src/locales/en/translation.json","../src/locales/es/translation.json","../src/locales/fr/translation.json","../src/locales/it/translation.json","../src/locales/pt/translation.json","../src/i18n/resources.ts","../src/large-modal/LargeModal.tsx","../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/select/Select.tsx","../src/select/components.tsx","../src/select/MultiSelect.tsx","../src/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/RatingRadioGroup.tsx","../src/rating-stars/RatingStars.tsx","../src/rotate-arrow/RotateArrow.tsx","../src/search-button/SearchButton.tsx","../src/search-input/SearchInput.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/assets/icons/sign-finger.svg","../src/slider/Slider.tsx","../src/slider/SliderControls.tsx","../src/slider/SliderContext.tsx","../src/slider/SliderRoot.tsx","../src/slider/SliderSlide.tsx","../src/slider/SliderTrack.tsx","../src/slider/SliderViewport.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/text-field/TextField.tsx","../src/text-field/EndIcon.tsx","../src/textarea/Textarea.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/webcam/utils.ts","../src/wide-button/WideButton.tsx","../src/datepicker/DatePicker.tsx","../src/drawer/Drawer.tsx","../src/datepicker/useDatePickerWheel.ts","../src/datepicker/datePicker.utils.ts","../src/datepicker/DatePickerWheelColumn.tsx","../src/datepicker/DatePickerContent.tsx","../src/lib/device.ts","../src/field-trigger/FieldTrigger.tsx","../src/field-error-message/FieldErrorMessage.tsx","../src/responsive-sheet/ResponsiveSheet.tsx","../src/airbnb/input/Input.tsx","../src/airbnb/phone-field/PhoneField.tsx","../src/airbnb/select/Select.tsx","../src/airbnb/select/SelectDesktopMenu.tsx","../src/airbnb/select/SelectDesktopContent.tsx","../src/airbnb/select/constants.ts","../src/airbnb/select/select.utils.ts","../src/airbnb/select/SelectMobileWheel.tsx","../src/airbnb/select/SelectMobileContent.tsx","../src/airbnb/select/SelectTrigger.tsx","../src/airbnb/select/useDesktopSelect.ts","../src/airbnb/select/useMobileSelectWheel.ts","../src/airbnb/select/useSelectIds.ts","../src/airbnb/search-input/SearchInput.tsx","../src/dashboard/input/Input.tsx","../src/dashboard/_fieldset/Fieldset.tsx","../src/dashboard/select/Select.tsx","../src/dashboard/_select-internals/utils.ts","../src/dashboard/_select-internals/SelectMenu.tsx","../src/dashboard/_select-internals/useSelectIds.ts","../src/dashboard/multi-select/MultiSelect.tsx","../src/dashboard/creatable-multi-select/CreatableMultiSelect.tsx","../src/dashboard/infinite-scroll-select/InfiniteScrollSelect.tsx","../src/searchable-select/SearchableSelect.tsx","../src/lib/breakpoints.ts","../src/lib/toastResponseError.tsx","../src/lib/getErrorMessage.ts"],"sourcesContent":["export * from './accordion';\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-input';\nexport * from './copy-link-button';\nexport * from './copy-string';\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 './file-input-button';\nexport * from './form-box';\nexport * from './free-text-field';\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';\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 './select';\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 './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 './text-field';\nexport * from './textarea';\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 './wide-button';\nexport * from './datepicker';\nexport * from './drawer';\nexport * from './button';\nexport * from './field-error-message';\nexport * from './responsive-sheet';\nexport * from './field-trigger';\nexport * from './airbnb/input';\nexport * from './airbnb/phone-field';\nexport * from './airbnb/select';\nexport * from './airbnb/select';\nexport * from './airbnb/search-input';\nexport * from './dashboard';\nexport * from './searchable-select';\nexport * from './circular-loader';\nexport * from './lib/selector-option';\nexport * from './lib/copy-to-clipboard';\nexport {toCssSize, isNumeric, scrollToTop} 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","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)] 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)] data-[state=closed]:block',\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 {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 ({\n [AlertType.INFO]: <AlertCircle className=\"relative\" />,\n [AlertType.WARNING]: <TriangleAlert className=\"relative\" />,\n [AlertType.ERROR]: <XCircle className=\"relative\" />,\n [AlertType.LIGHT]: null,\n [AlertType.SUCCESS]: <Check className=\"relative\" />,\n })[type];\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 'bg-[var(--alert-box-info-bg)] [&_svg]:text-[var(--alert-box-info-icon)]',\n [AlertType.WARNING]:\n 'bg-[var(--alert-box-warning-bg)] [&_svg]:text-[var(--alert-box-warning-icon)]',\n [AlertType.ERROR]:\n 'bg-[var(--alert-box-error-bg)] [&_svg]:text-[var(--alert-box-error-icon)]',\n [AlertType.SUCCESS]:\n 'bg-[var(--alert-box-success-bg)] text-[var(--alert-box-success-text)] [&_svg]:text-[var(--alert-box-success-icon)]',\n [AlertType.LIGHT]: '',\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)] [&_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-[#e5e6ee]',\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-[#e5e6ee]',\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-[#e5e6ee]',\n 'bg-[var(--chekin-color-surface-input-empty)] px-4 py-2 text-sm 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(--chekin-color-brand-blue)] data-[state=unchecked]:bg-[var(--chekin-color-gray-2)]',\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-white 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}\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(\n (\n {className, size, readOnly, loading, onChange, value, id, label, error, ...props},\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 <div>\n <div className=\"flex items-center gap-3\">\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 </div>\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 {cn} from '../lib/cn';\nimport {buttonVariants} from '../button/buttonVariants';\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(\n buttonVariants({variant: 'ghost'}),\n 'size-9 p-0 text-chekin-gray-1 hover:text-chekin-navy',\n ),\n button_next: cn(\n buttonVariants({variant: 'ghost'}),\n 'size-9 p-0 text-chekin-gray-1 hover:text-chekin-navy',\n ),\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-chekin-navy 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-chekin-surface-input-empty',\n 'group-data-[selected]:bg-chekin-blue group-data-[selected]:text-white',\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-white',\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-chekin-surface-pressed group-data-[selected]:group-[.range-middle]:text-chekin-navy',\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-chekin-blue *:after:transition-colors',\n '[&[data-selected]:not(.range-middle)>*]:after:bg-white',\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('flex items-center justify-center text-current')}\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 {FieldError} from '../text-field/FieldError';\nimport {SupportingText} from '../text-field/SupportingText';\nimport {BaseCheckbox, type CheckboxSize} from './BaseCheckbox';\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('flex w-full flex-col', className)}>\n <div\n className={cn('flex items-center', rowSizeClasses[size], rowClassName)}\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 '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 <SupportingText id={descriptionId} className={supportingTextClassName}>\n {supportingText}\n </SupportingText>\n )}\n {error && (\n <FieldError id={errorId} className={errorClassName}>\n {error}\n </FieldError>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type FieldErrorProps = {\n children: ReactNode;\n id?: string;\n className?: string;\n};\n\nexport const FieldError = ({id, className, children}: FieldErrorProps) => (\n <p\n id={id}\n className={cn(\n 'mt-1 text-right text-xs font-medium text-[var(--chekin-color-brand-red)]',\n className,\n )}\n role=\"alert\"\n >\n {children}\n </p>\n);\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type SupportingTextProps = {\n children: ReactNode;\n id?: string;\n className?: string;\n};\n\nexport const SupportingText = ({id, className, children}: SupportingTextProps) => (\n <p\n id={id}\n className={cn('mt-1 text-xs italic text-[var(--chekin-color-gray-2)]', className)}\n >\n {children}\n </p>\n);\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=\"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('space-y-2', className)} {...props}>\n {showSelectAll && (\n <>\n <div className=\"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=\"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=\"border-t border-chekin-gray-3\" />\n </>\n )}\n <ScrollAreaWrapper scrollable={scrollable} scrollHeight={scrollHeight}>\n <div className=\"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 && <ErrorMessage disabled={disabled}>{error}</ErrorMessage>}\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';\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}\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 ...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 <TooltipPrimitive.Root\n data-slot=\"tooltip\"\n open={disabled ? false : undefined}\n {...props}\n >\n <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" asChild={asChild}>\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 </TooltipPrimitive.Root>\n </TooltipProvider>\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: 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","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 {Button} from '../button';\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from '../tooltip';\nimport {cn} from '../lib/cn';\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: 'sm',\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 <Button\n variant={variant}\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 readOnly={copied}\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 </Button>\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 {cn} from '../lib/cn';\n\nexport type InputProps = React.ComponentProps<'input'>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\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\nInput.displayName = 'Input';\n","import {type ComponentProps} from 'react';\nimport {CopyIcon} from '../copy-icon';\nimport {Input} from '../input';\nimport {cn} from '../lib/cn';\n\ntype CopyInputProps = Omit<ComponentProps<typeof Input>, 'value'> & {\n value?: string | number;\n};\n\nfunction CopyInput({value, className, ...props}: CopyInputProps) {\n const textToCopy = value?.toString() ?? '';\n\n return (\n <div className={cn('relative w-fit', className)}>\n <Input\n readOnly\n value={value ?? ''}\n className=\"min-h-0 basis-[368px] pr-12\"\n {...props}\n />\n {textToCopy && (\n <CopyIcon\n textToCopy={textToCopy}\n className=\"absolute right-1 top-1\"\n variant=\"ghost\"\n />\n )}\n </div>\n );\n}\n\nexport {CopyInput};\nexport type {CopyInputProps};\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-1.5', 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 {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-lg 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 {useCombinedRef, useIframeFocusTrapFallback} from '../hooks';\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\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 >\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 =\n container ||\n (typeof window !== 'undefined' ? window.chekinCustomDocument?.body : undefined);\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('flex flex-col-reverse gap-4 sm:flex-row sm:justify-end', className)}\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('text-lg font-semibold leading-none', className)}\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 {MutableRefObject, Ref, 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 mediaQuery.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < breakpoint);\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 {useEffect, useRef} from 'react';\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 loadMoreRef = useRef<T>(null);\n\n useEffect(() => {\n const element = loadMoreRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n entries => {\n if (entries[0].isIntersecting && hasNextPage && !loading && !disabled) {\n onLoadMore();\n }\n },\n {threshold, rootMargin},\n );\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [hasNextPage, loading, disabled, onLoadMore, threshold, rootMargin]);\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 {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 mediaQuery = getMediaQuery(maxWidth, matchString);\n setIsInitialized(true);\n\n if (!mediaQuery) {\n setIsMatch(false);\n return;\n }\n\n const media = getWindow().matchMedia(mediaQuery);\n setIsMatch(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 {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, useCallback, 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 const updateState = useCallback(() => {\n const element = ref.current;\n if (!element) return;\n\n const newState = getScrollableAreaState(element);\n setState(prev =>\n prev.canScrollUp !== newState.canScrollUp ||\n prev.canScrollDown !== newState.canScrollDown\n ? newState\n : prev,\n );\n }, [ref]);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\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, updateState]);\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","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 {jsonParse} from './utils';\n\nclass SessionStorage extends AbstractStorage {\n static get<T>(key: string): T | null {\n const data = sessionStorage.getItem(key);\n return jsonParse(data);\n }\n\n static set<T>(key: string, value: T): void {\n if (value) {\n sessionStorage.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 sessionStorage.removeItem(key);\n }\n\n static clear(): void {\n sessionStorage.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';\n\ntype Props = {\n seconds: number;\n};\n\nexport const useTimer = ({seconds}: Props) => {\n const [timeLeft, setTimeLeft] = useState(seconds);\n const [isTimerRunning, setIsTimerRunning] = useState(true);\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 const resetTimer = () => {\n setTimeLeft(seconds);\n setIsTimerRunning(true);\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, 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 {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: 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\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 {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-[#acacd5]\">\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 {CheckboxOption} from '../checkbox';\nimport {DropdownMenuCheckboxItem} from './DropdownMenu';\nimport {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 {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, CheckboxOption} from '../checkbox';\nimport {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')}\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-[#e8fcf7]',\n color: 'text-[#2bc29f]',\n },\n [HALO_ICON_STATUS.danger]: {\n background: 'bg-[#ffe2ed]',\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 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(--chekin-color-brand-navy)]',\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-[10px] border border-[var(--chekin-color-gray-separator)] 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(--chekin-color-gray-separator)] px-0 py-2 text-base font-semibold leading-normal text-[var(--chekin-color-brand-navy)]',\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 {\n type ChangeEvent,\n type ComponentProps,\n type FocusEvent,\n type ReactNode,\n forwardRef,\n useId,\n useState,\n} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\n\nexport type FreeTextFieldProps = Omit<ComponentProps<'input'>, 'size'> & {\n label?: string;\n error?: string;\n supportingText?: string;\n optional?: boolean;\n optionalLabel?: string;\n tooltip?: ReactNode;\n icon?: ReactNode;\n fieldStyle?: 'current' | 'new';\n autocompleted?: boolean;\n};\n\nexport const FreeTextField = forwardRef<HTMLInputElement, FreeTextFieldProps>(\n (\n {\n label,\n error,\n supportingText,\n optional,\n optionalLabel,\n tooltip,\n icon,\n fieldStyle = 'current',\n autocompleted,\n className,\n placeholder,\n onChange,\n value,\n defaultValue,\n onFocus,\n onBlur,\n disabled,\n ...inputProps\n },\n ref,\n ) => {\n const {t} = useTranslation();\n const inputId = useId();\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const [isFocused, setIsFocused] = useState(false);\n\n const currentValue = value !== undefined ? value : internalValue;\n const isEmpty = !currentValue || String(currentValue).length === 0;\n const hasError = Boolean(error);\n const isErrorWrong = hasError && !isEmpty;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(event.target.value);\n }\n\n onChange?.(event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(event);\n };\n\n const fieldBoxClassName = cn(\n 'relative flex h-11 items-center gap-2.5 rounded-lg border px-3.5 py-2.5 transition-colors duration-150 ease-in-out',\n autocompleted &&\n 'border-[var(--chekin-color-brand-navy)] bg-[var(--chekin-color-surface-autocomplete)]',\n isErrorWrong && !autocompleted && 'border-[var(--error-message-color)] bg-white',\n !autocompleted &&\n !isErrorWrong &&\n !isEmpty &&\n 'border-[var(--chekin-color-brand-navy)] bg-white',\n !autocompleted &&\n !isErrorWrong &&\n isEmpty &&\n 'border-[rgba(22,22,67,0.2)] bg-[var(--chekin-color-surface-input-empty)]',\n isFocused && !hasError && 'border-[var(--chekin-color-brand-blue)]',\n );\n\n const inputPlaceholder = fieldStyle === 'new' ? label : placeholder;\n const showFloatingLabel = fieldStyle === 'new' && !isEmpty && Boolean(label);\n\n return (\n <div\n className={cn(\n 'relative flex w-[300px] flex-col gap-1 [font-family:var(--chekin-font-family-primary)]',\n className,\n )}\n >\n {fieldStyle === 'current' && label && (\n <div className=\"flex items-center gap-1\">\n <label\n htmlFor={inputId}\n className=\"text-base font-medium leading-4 text-[var(--chekin-color-brand-navy)]\"\n >\n {label}\n </label>\n {optional && (\n <span className=\"text-base leading-4 text-[var(--chekin-color-brand-navy)] [&_em]:text-[var(--chekin-color-gray-2)]\">\n {'- '}\n <em>{optionalLabel || t('optional')}</em>\n </span>\n )}\n {tooltip && <div className=\"h-4 w-4 shrink-0\">{tooltip}</div>}\n </div>\n )}\n\n <div className={fieldBoxClassName}>\n <input\n ref={ref}\n id={inputId}\n className=\"min-h-px min-w-0 flex-1 basis-0 border-0 bg-transparent p-0 text-base font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:font-medium placeholder:text-[var(--chekin-color-gray-1)]\"\n placeholder={inputPlaceholder}\n value={value}\n defaultValue={value === undefined ? defaultValue : undefined}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n {...inputProps}\n />\n {icon && (\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center\">\n {icon}\n </div>\n )}\n\n {showFloatingLabel && (\n <div\n className={cn(\n 'pointer-events-none absolute left-[13px] top-[-8px] flex h-4 items-center bg-gradient-to-b from-transparent from-50% to-white to-50% px-[3px]',\n autocompleted && 'to-[var(--chekin-color-surface-autocomplete)]',\n )}\n >\n <span\n className={cn(\n 'whitespace-nowrap text-sm font-medium leading-6 text-[var(--chekin-color-gray-1)]',\n isErrorWrong && 'text-[var(--error-message-color)]',\n )}\n >\n {label}\n </span>\n </div>\n )}\n </div>\n\n {supportingText && (\n <p className=\"m-0 text-xs italic leading-normal text-[var(--chekin-color-gray-2)]\">\n {supportingText}\n </p>\n )}\n {error && (\n <p className=\"m-0 text-right text-xs font-medium leading-4 text-[var(--error-message-color)]\">\n {error}\n </p>\n )}\n </div>\n );\n },\n);\n\nFreeTextField.displayName = 'FreeTextField';\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-[#E8FCF7] text-[#0F9F80]',\n warn: 'bg-[#FFF4E5] text-[#B86A00]',\n error: 'bg-[#FFE8EF] 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 {ComponentType, forwardRef, 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 * as React from 'react';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {Tooltip, TooltipContent, TooltipTrigger} from '../tooltip';\n\nconst 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-[#FFE8EF]',\n },\n },\n defaultVariants: {size: 'm', shape: 'rounded', variant: 'secondary'},\n },\n);\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-[#e5e6ee] 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 {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\": \"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}\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 \"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}\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}\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}\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}\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}\n","import type {i18n as I18nInstance} from 'i18next';\nimport de from '../locales/de/translation.json';\nimport en from '../locales/en/translation.json';\nimport es from '../locales/es/translation.json';\nimport fr from '../locales/fr/translation.json';\nimport it from '../locales/it/translation.json';\nimport pt from '../locales/pt/translation.json';\n\nexport const uiKitTranslations = {\n en,\n es,\n fr,\n de,\n it,\n pt,\n} as const;\n\nexport const uiKitI18nResources = {\n en: {translation: en},\n es: {translation: es},\n fr: {translation: fr},\n de: {translation: de},\n it: {translation: it},\n pt: {translation: pt},\n} as const;\n\nexport type UiKitLocale = keyof typeof uiKitTranslations;\n\nexport const UI_KIT_I18N_NAMESPACE = 'translation';\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 i18n.addResourceBundle(lng, namespace, bundle, 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 {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\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 allowContentOverflow?: boolean;\n};\n\nexport function LargeModal({\n open,\n onOpenChange,\n children,\n header,\n subHeader,\n screenReaderText,\n className,\n footer,\n container,\n withCloseButton = true,\n closeOnDocumentClick = true,\n closeOnEscape = true,\n allowContentOverflow = false,\n}: LargeModalProps) {\n const portalContainer = container ?? getCustomContainer();\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-[#e5e6ee] 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 {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(--button-link-text)] no-underline transition-all duration-75 ease-in-out',\n !disabled && 'hover:opacity-80 active:opacity-100',\n disabled && 'cursor-not-allowed text-[#ACACD5]',\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};\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 = true,\n closeOnEscape = true,\n scrollableOverlay,\n className,\n title,\n text,\n icon,\n iconSrc,\n iconAlt,\n iconProps = {width: 84},\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 rounded-md 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-[#f4f6f8]',\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=\"modal__icon mx-auto mt-4 select-none\">\n {icon ?? <img src={iconSrc} alt={iconAlt ?? ''} {...iconProps} />}\n </div>\n )}\n {title ? (\n <DialogTitle className={cn('modal__title', 'px-6 text-lg 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};\n\nconst labelSizeClassName: Record<NonNullable<MainLoaderProps['size']>, string> = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: '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',\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 className={cn(labelSizeClassName[size], 'font-medium text-chekin-gray-1')}>\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';\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 {Select, SelectItem} from '../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 <Select\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 <SelectItem key={size} value={size.toString()}>\n {size}\n </SelectItem>\n ))}\n </Select>\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, ReactNode, Ref, useId, useState} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectOption} from '../lib/selector-option';\nimport {\n SelectContent,\n SelectItem,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n type SelectSize,\n} from './components';\n\nexport type SelectProps<\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?: SelectSize;\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 SelectInner = <\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 }: SelectProps<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 <SelectRoot\n value={value}\n onValueChange={handleValueChange}\n onOpenChange={handleOpenChange}\n disabled={disabled}\n >\n <SelectTrigger id={id} ref={ref} size={size} className={triggerClassName}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {children ??\n options?.map(option => (\n <SelectItem\n key={String(option.value)}\n value={String(option.value)}\n size={size}\n disabled={option.isDisabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\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 SelectForward = forwardRef(SelectInner);\nSelectForward.displayName = 'Select';\n\nexport const Select = SelectForward as <\n V extends string | number = string,\n D = unknown,\n L extends ReactNode = string,\n>(\n props: SelectProps<D, V, L> & {\n ref?: Ref<HTMLButtonElement>;\n },\n) => ReturnType<typeof SelectInner>;\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 SelectRoot = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\nconst SelectPortal = SelectPrimitive.Portal;\n\ntype SelectSize = 'sm' | 'md';\n\nconst selectSizeClassNames: Record<SelectSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n};\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {\n size?: SelectSize;\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-[#e5e7eb] 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));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = 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));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = 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));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = 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-[#e5e7eb] 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 <SelectScrollUpButton />\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 <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = 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));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & {\n size?: SelectSize;\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-[#f9fafb] focus:text-[var(--chekin-color-brand-navy)]',\n 'data-[highlighted]:bg-[#f9fafb] 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));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = 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-[#f3f4f6]', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n SelectRoot,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\nexport type {SelectSize};\n","import * as SelectPrimitive from '@radix-ui/react-select';\nimport {CheckIcon} from 'lucide-react';\nimport {forwardRef, ReactNode, Ref, useId, useState} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectOption} from '../lib/selector-option';\nimport {SelectContent, SelectTrigger} from './components';\n\ntype MultiSelectProps<\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 MultiSelectInner = <\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 }: MultiSelectProps<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 <SelectTrigger id={id}>\n <span className=\"text-sm\">{displayText}</span>\n </SelectTrigger>\n <SelectContent>\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-[#f9fafb] hover:text-[var(--chekin-color-brand-navy)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n selected && 'bg-[#f9fafb]',\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 </SelectContent>\n </SelectPrimitive.Root>\n </div>\n );\n};\n\nexport const MultiSelect = forwardRef(MultiSelectInner) as <\n V extends string | number = string,\n D = unknown,\n L extends string | number | ReactNode = string,\n>(\n props: MultiSelectProps<D, V, L> & {ref?: Ref<HTMLDivElement>},\n) => ReturnType<typeof MultiSelectInner>;\nexport type {MultiSelectProps};\n","import {useVirtualizer} from '@tanstack/react-virtual';\nimport {ReactNode, useCallback, useEffect, useId, useRef, useState} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectOption} from '../lib/selector-option';\nimport {\n SelectContent,\n SelectItem,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n} from './components';\n\ntype InfinitySelectProps = {\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 InfinitySelect({\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}: InfinitySelectProps) {\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 <SelectRoot\n value={value}\n onValueChange={handleItemSelect}\n open={isOpen}\n onOpenChange={setIsOpen}\n >\n <SelectTrigger id={id}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\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 <SelectItem\n value={String(option.value)}\n disabled={option.isDisabled || option.readOnly}\n >\n {option.label}\n </SelectItem>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </SelectContent>\n </SelectRoot>\n </div>\n );\n}\nexport type {InfinitySelectProps};\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-[#e5e7eb] 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-[#e5e7eb] 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 {options, value, onChange, error, className = '', disabled = false, renderOption},\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',\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 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 {Circle} from 'lucide-react';\nimport {cn} from '../lib/cn';\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\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({className, ...props}, ref) => (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-[var(--chekin-color-brand-blue)] text-[var(--chekin-color-brand-blue)]',\n 'focus:outline-none focus-visible:shadow-[var(--chekin-shadow-focus)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n));\n\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n","import {useCallback, 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\nexport function useRadioOptions({options, defaultValue, onChange}: UseRadioOptionsProps) {\n const initialValue =\n (typeof defaultValue === 'string'\n ? options.find(option => option.value === defaultValue)\n : defaultValue) || '';\n const [selectedValue, setSelectedValue] = useState(initialValue);\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 {cn} from '../lib/cn';\nimport {RadioGroupItem} from '../radio-group';\nimport {Radio} from './Radio';\nimport type {RadioProps} from './types';\n\ntype RadioWithBorderData = {\n subLabel?: string;\n description?: string;\n};\n\nexport function RadioWithBorder({...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',\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 />\n <div className=\"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 </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-[#e5e6ee] 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-[#ff2467]',\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 && <div className=\"mt-2 text-left text-sm text-[#ff2467]\">{error}</div>}\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 '#ff2765';\n if (percentage <= 20) return '#ff673c';\n if (percentage <= 40) return '#ffa514';\n if (percentage <= 50) return '#ffc400';\n if (percentage <= 60) return '#cdc326';\n if (percentage <= 80) return '#78c366';\n return '#2cc29e';\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 type {ReactNode} from 'react';\nimport {Star} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\ntype Option = {\n label: string;\n value: number;\n};\n\nconst getStarColor = (optionValue: number) => (value: number) => {\n if (value >= optionValue) return '#facc15';\n return 'var(--chekin-color-gray-1)';\n};\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: Option[];\n};\n\nexport function RatingRadioGroup({\n value,\n onChange,\n label,\n name = 'rating',\n className,\n options,\n}: RatingRadioGroupProps) {\n return (\n <fieldset className={cn('relative [all:unset]', className)}>\n {label && <legend className=\"mb-2\">{label}</legend>}\n <div className=\"RatingRadioGroup__list flex gap-2\">\n {options.map(option => (\n <label key={option.value}>\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-[#385bf8]\"\n size={24}\n aria-label={option.label}\n color={getStarColor(option.value)(value || 0)}\n fill={getStarColor(option.value)(value || 0)}\n />\n </label>\n ))}\n </div>\n </fieldset>\n );\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 = '#ffb700',\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-[#9696b9] 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 {Input} from '../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 <Input\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 {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-[#059669]',\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 {CircleHelp} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {CircularLoader} from '../circular-loader';\nimport {cn} from '../lib/cn';\nimport {Tooltip} from '../tooltip';\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 <Tooltip side=\"right\" content={content} contentClassName=\"max-w-64\">\n <button\n type=\"button\"\n className={cn('inline-flex text-[var(--chekin-color-gray-1)]', className)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n aria-label={typeof content === 'string' ? content : 'More information'}\n >\n <CircleHelp className=\"h-4 w-4\" />\n </button>\n </Tooltip>\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-bold text-[var(--chekin-color-brand-navy)] 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(--chekin-color-brand-blue)] 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(--chekin-color-gray-1)]\">\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-sm 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 {Input} from '../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 Input>,\n React.ComponentProps<typeof Input>\n>(({className, ...props}, ref) => (\n <Input\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 {forwardRef, Fragment, useEffect, useRef} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport ReactSignatureCanvas from 'react-signature-pad-wrapper';\nimport {Button} from '../button';\nimport {useCombinedRef} from '../hooks';\nimport {cn} from '../lib/cn';\nimport {SvgIcon} from '../svg-icon';\nimport SignFingerIcon from '../assets/icons/sign-finger.svg';\n\nconst CANVAS_PROPS = {\n width: '250px',\n height: '174px',\n};\n\nconst SIGNATURE_PROPS = {\n penColor: '#161643',\n minWidth: 1.5,\n maxWidth: 1.5,\n dotSize: 1,\n};\n\ntype SignatureCanvasProps = {\n onClear?: () => void;\n onEnable?: () => void;\n hasSignature?: boolean;\n onEnd?: () => void;\n className?: string;\n enabled?: boolean;\n};\n\nfunction breakIntoLines(text = '') {\n return text.split('\\n').map((line, index) => (\n <Fragment key={index}>\n {line}\n <br />\n </Fragment>\n ));\n}\n\nconst SignatureCanvas = forwardRef<ReactSignatureCanvas, SignatureCanvasProps>(\n ({onClear, hasSignature, onEnd, onEnable, className, enabled}, ref) => {\n const {t} = useTranslation();\n const internalRef = useRef<ReactSignatureCanvas | null>(null);\n const combinedRef = useCombinedRef(ref, internalRef);\n\n useEffect(() => {\n if (!onEnd) return;\n\n const signPad = internalRef.current?.instance;\n\n signPad?.addEventListener('endStroke', onEnd);\n\n return () => {\n signPad?.removeEventListener('endStroke', onEnd);\n };\n }, [onEnd]);\n\n return (\n <div className={cn('relative inline-flex flex-col', className)}>\n {!enabled && (\n <button\n type=\"button\"\n className={cn(\n 'absolute left-0 top-0 z-10 flex h-[174px] w-[250px] flex-col items-center',\n 'justify-between rounded border-0 bg-[var(--signature-canvas-placeholder-bg)] px-0 pb-11 pt-10',\n 'cursor-pointer select-none',\n )}\n onClick={onEnable}\n data-testid=\"signature-placeholder\"\n >\n <SvgIcon as={SignFingerIcon} size={41} className=\"w-[37px] opacity-[0.55]\" />\n <span\n className={cn(\n 'mx-auto max-w-[154px] break-words text-center text-sm font-medium uppercase',\n 'text-[var(--signature-canvas-placeholder-text)] opacity-[0.55]',\n )}\n >\n {breakIntoLines(t('signature_placeholder_text'))}\n </span>\n </button>\n )}\n <div\n className={cn(\n 'inline-flex h-[174px] w-[250px] cursor-pointer justify-center rounded border',\n 'border-[var(--signature-canvas-border)] shadow-[var(--signature-canvas-shadow)]',\n 'box-border max-[320px]:overflow-hidden',\n )}\n >\n <ReactSignatureCanvas\n ref={combinedRef}\n data-testid=\"canvas\"\n {...SIGNATURE_PROPS}\n canvasProps={CANVAS_PROPS}\n />\n </div>\n <div\n className={cn('text-right', {\n invisible: !enabled || !hasSignature,\n })}\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={onClear}\n >\n {t('clear')}\n </Button>\n </div>\n </div>\n );\n },\n);\n\nSignatureCanvas.displayName = 'SignatureCanvas';\n\nexport {SignatureCanvas};\nexport type {ReactSignatureCanvas as SignatureCanvasType};\n","import * as React from \"react\";\nconst SvgSignFinger = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={37.198} height={40.76} viewBox=\"0 0 37.198 40.76\" {...props}><defs><style>{\".a{fill:#385cf8;}\"}</style></defs><g transform=\"translate(-84.883 29)\"><g transform=\"translate(0.883 4)\"><path className=\"a\" d=\"M277.71,362.455a1.332,1.332,0,0,1-.878-.329,1.3,1.3,0,0,1-.38-1.387,3.537,3.537,0,0,0,.169-.893,5.514,5.514,0,0,1-3.179,2.525,3.567,3.567,0,0,1-3.507-1.314c-2.184-2.386-.695-5.062.393-7.017,1.283-2.3,1.246-2.67.553-3.119a2.672,2.672,0,0,0-2.116.117c-4.225,1.539-9.992,7.866-10.476,9.508a1.326,1.326,0,0,1-1.641.89,1.306,1.306,0,0,1-.9-1.623c.788-2.673,7.317-9.487,12.1-11.23a4.9,4.9,0,0,1,4.483.151,3.3,3.3,0,0,1,1.619,3.488,10.132,10.132,0,0,1-1.306,3.081c-1.5,2.7-1.374,3.317-.749,4,.554.605.873.536.977.514.8-.173,2.068-1.774,2.823-4.156a1.329,1.329,0,0,1,2.4-.282c.106.174,1.819,6.2.176,6.955A1.334,1.334,0,0,1,277.71,362.455Z\" transform=\"translate(-171.695 -381.124)\" /><g transform=\"translate(95.422 -22.82)\"><g transform=\"translate(0)\"><path className=\"a\" d=\"M67.007,14.641l-5.781-3.81a3.935,3.935,0,0,0-4.257,0l-.127.084V2.548a2.578,2.578,0,0,0-5.155,0V19.6a.626.626,0,0,1-.306.542.642.642,0,0,1-.627.028l-4.138-2.046a2.768,2.768,0,0,0-1.221-.285,2.718,2.718,0,0,0-2.73,2.7v.486a.634.634,0,0,0,.205.466l7.438,6.862a8.4,8.4,0,0,0,5.715,2.228H62a6.415,6.415,0,0,0,6.444-6.371V17.291A3.169,3.169,0,0,0,67.007,14.641Z\" transform=\"translate(-42.666)\" /></g></g></g></g></svg>;\nexport default SvgSignFinger;","import * as React from 'react';\nimport {SliderNext, SliderPrevious} from './SliderControls';\nimport {SliderRoot, type SliderRootProps} from './SliderRoot';\nimport {SliderSlide} from './SliderSlide';\nimport {SliderTrack} from './SliderTrack';\nimport {SliderViewport} from './SliderViewport';\n\nexport type SliderProps = SliderRootProps & {\n children: React.ReactNode;\n};\n\nexport function Slider({children, slideCount, ...props}: SliderProps) {\n return (\n <SliderRoot slideCount={slideCount ?? React.Children.count(children)} {...props}>\n <SliderViewport>\n <SliderTrack>\n {React.Children.map(children, slide => (\n <SliderSlide>{slide}</SliderSlide>\n ))}\n </SliderTrack>\n </SliderViewport>\n <SliderPrevious />\n <SliderNext />\n </SliderRoot>\n );\n}\n","import * as React from 'react';\nimport {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {useSliderContext} from './SliderContext';\n\ntype SliderControlProps = Omit<React.ComponentPropsWithoutRef<'button'>, 'children'> & {\n children?: React.ReactNode;\n};\n\nexport const SliderPrevious = React.forwardRef<HTMLButtonElement, SliderControlProps>(\n ({className, children, onClick, ...props}, ref) => {\n const {canGoPrevious, goToPrevious} = useSliderContext('SliderPrevious');\n\n if (!canGoPrevious) {\n return null;\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"slider-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(--slider-control-bg)]\n text-[var(--slider-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\nSliderPrevious.displayName = 'SliderPrevious';\n\nexport const SliderNext = React.forwardRef<HTMLButtonElement, SliderControlProps>(\n ({className, children, onClick, ...props}, ref) => {\n const {canGoNext, goToNext} = useSliderContext('SliderNext');\n\n if (!canGoNext) {\n return null;\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"slider-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(--slider-control-bg)]\n text-[var(--slider-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\nSliderNext.displayName = 'SliderNext';\n","import * as React from 'react';\n\ntype SliderContextValue = {\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 SliderContext = React.createContext<SliderContextValue | null>(null);\n\nexport function useSliderContext(componentName: string) {\n const context = React.useContext(SliderContext);\n\n if (!context) {\n throw new Error(`${componentName} must be used within SliderRoot`);\n }\n\n return context;\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {SliderContext} from './SliderContext';\n\nexport type SliderRootProps = React.ComponentPropsWithoutRef<'div'> & {\n index?: number;\n defaultIndex?: number;\n slideCount?: number;\n loop?: boolean;\n onIndexChange?: (index: number) => void;\n};\n\nexport const SliderRoot = React.forwardRef<HTMLDivElement, SliderRootProps>(\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 <SliderContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"slider\"\n className={cn('relative h-full w-full', className)}\n {...props}\n >\n {children}\n </div>\n </SliderContext.Provider>\n );\n },\n);\n\nSliderRoot.displayName = 'SliderRoot';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {useSliderContext} from './SliderContext';\n\nexport const SliderSlide = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({className, ...props}, ref) => {\n const {registerSlide} = useSliderContext('SliderSlide');\n\n React.useEffect(() => registerSlide(), [registerSlide]);\n\n return (\n <div\n ref={ref}\n data-slot=\"slider-slide\"\n className={cn('flex h-full w-full shrink-0 items-center justify-center', className)}\n {...props}\n />\n );\n});\n\nSliderSlide.displayName = 'SliderSlide';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {useSliderContext} from './SliderContext';\n\nexport const SliderTrack = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({className, style, ...props}, ref) => {\n const {index} = useSliderContext('SliderTrack');\n\n return (\n <div\n ref={ref}\n data-slot=\"slider-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\nSliderTrack.displayName = 'SliderTrack';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport const SliderViewport = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({className, ...props}, ref) => (\n <div\n ref={ref}\n data-slot=\"slider-viewport\"\n className={cn('relative h-full w-full overflow-hidden', className)}\n {...props}\n />\n));\n\nSliderViewport.displayName = 'SliderViewport';\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(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-input-empty)] 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(--chekin-color-gray-3)]',\n underlined:\n 'tab-list mb-8 flex-wrap gap-x-6 gap-y-3 border-b border-[var(--chekin-color-gray-3)]',\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(--chekin-color-gray-1)] hover:bg-[var(--chekin-color-brand-blue)] hover:text-white data-[state=active]:bg-[var(--chekin-color-brand-blue)] data-[state=active]:font-bold data-[state=active]:text-white data-[state=active]:shadow-sm [&.active]:bg-[var(--chekin-color-brand-blue)] [&.active]:font-bold [&.active]:text-white [&.active]:shadow-sm',\n underlined:\n 'h-full relative top-px pb-[15px] text-base font-medium leading-5 text-[var(--chekin-color-gray-1)] border-b-2 border-transparent -mb-px data-[state=active]:text-[var(--chekin-color-brand-blue)] data-[state=active]:border-[var(--chekin-color-brand-blue)] hover:border-[var(--chekin-color-brand-blue)]/30 [&.active]:border-[var(--chekin-color-brand-blue)]',\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?: string;\n title?: string;\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} 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(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-input-empty)] 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-75 ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--chekin-color-brand-blue)] 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(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-input-empty)] font-semibold text-[var(--chekin-color-gray-1)] hover:border-[var(--chekin-color-brand-blue)] data-[state=on]:border-[var(--chekin-color-brand-blue)] data-[state=on]:bg-[var(--chekin-color-white)] data-[state=on]:text-[var(--chekin-color-brand-blue)]',\n tab: 'border border-transparent bg-transparent font-medium text-[var(--chekin-color-gray-1)] hover:bg-[var(--chekin-color-brand-blue)] hover:text-[var(--chekin-color-white)] hover:opacity-35 data-[state=on]:cursor-default data-[state=on]:border-[var(--chekin-color-brand-blue)] data-[state=on]:bg-[var(--chekin-color-brand-blue)] data-[state=on]:font-semibold data-[state=on]:text-[var(--chekin-color-white)] 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(--chekin-color-surface-autocomplete)] data-[state=off]:hover:border-transparent data-[state=off]:hover:bg-[var(--chekin-color-surface-input-empty)]',\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\nconst convertStringToValue = <T extends string | number | boolean>(\n stringValue: string,\n option?: SelectorOption<T>,\n): T => {\n if (option) {\n return option.value;\n }\n\n // If no option found, try to convert back to original type\n if (stringValue === 'true') return true as T;\n if (stringValue === 'false') return false as T;\n\n // Try to convert to number if it's a valid number\n const numValue = Number(stringValue);\n if (!isNaN(numValue) && stringValue !== '') {\n return numValue as T;\n }\n\n return stringValue as T;\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 convertStringToValue(item, option);\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 = convertStringToValue(singleValue, option);\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(--chekin-color-brand-navy)]\">\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 * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\nimport {EndIcon} from './EndIcon';\nimport {FieldError} from './FieldError';\nimport {SupportingText} from './SupportingText';\n\nconst textFieldRootClasses = [\n '[--text-field-height:2.75rem]',\n '[--text-field-radius:8px]',\n '[--text-field-padding-x:0.875rem]',\n '[--text-field-padding-y:0.625rem]',\n '[--text-field-bg-empty:#f4f6f8]',\n '[--text-field-bg-filled:#ffffff]',\n '[--text-field-border-empty:rgba(22,22,67,0.2)]',\n '[--text-field-border-filled:#161643]',\n '[--text-field-border-error:#ff2467]',\n '[--text-field-text:#161643]',\n '[--text-field-placeholder:#6b6b95]',\n '[--text-field-label:#161643]',\n '[--text-field-supporting:#9696b9]',\n '[--text-field-error:#ff2467]',\n '[--text-field-focus-ring:rgba(56,91,248,0.2)]',\n];\n\nconst inputVariants = cva(\n [\n 'flex w-full border text-base font-medium leading-5 outline-none transition-colors',\n 'h-[var(--text-field-height)] rounded-[var(--text-field-radius)]',\n 'px-[var(--text-field-padding-x)] py-[var(--text-field-padding-y)]',\n 'text-[var(--text-field-text)]',\n 'placeholder:font-medium placeholder:text-[var(--text-field-placeholder)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n variant: {\n standard: '',\n floating: 'peer',\n },\n error: {\n true: 'border-[var(--text-field-border-error)] bg-[var(--text-field-bg-filled)]',\n false: '',\n },\n readOnly: {\n true: 'cursor-default border-[var(--text-field-border-empty)] bg-[var(--text-field-bg-filled)]',\n false: '',\n },\n },\n compoundVariants: [\n {\n error: false,\n readOnly: false,\n className: [\n 'placeholder-shown:border-[var(--text-field-border-empty)] placeholder-shown:bg-[var(--text-field-bg-empty)]',\n '[&:not(:placeholder-shown)]:border-[var(--text-field-border-filled)] [&:not(:placeholder-shown)]:bg-[var(--text-field-bg-filled)]',\n 'focus:border-[var(--text-field-border-filled)] focus:bg-[var(--text-field-bg-filled)]',\n 'focus-visible:ring-2 focus-visible:ring-[var(--text-field-focus-ring)] focus-visible:ring-offset-0',\n ].join(' '),\n },\n ],\n defaultVariants: {\n variant: 'standard',\n error: false,\n readOnly: false,\n },\n },\n);\n\nconst floatingLabelClasses = [\n 'pointer-events-none absolute left-[var(--text-field-padding-x)] top-1/2 -translate-y-1/2',\n 'text-base font-medium text-[var(--text-field-placeholder)]',\n 'origin-top-left transition-all duration-200 ease-out',\n 'peer-[:not(:placeholder-shown)]:pointer-events-auto',\n 'peer-[:not(:placeholder-shown)]:left-[13px]',\n 'peer-[:not(:placeholder-shown)]:top-0',\n 'peer-[:not(:placeholder-shown)]:-translate-y-1/2',\n 'peer-[:not(:placeholder-shown)]:px-[3px]',\n 'peer-[:not(:placeholder-shown)]:text-sm',\n 'peer-[:not(:placeholder-shown)]:leading-4',\n 'peer-[:not(:placeholder-shown)]:bg-gradient-to-b',\n 'peer-[:not(:placeholder-shown)]:from-transparent',\n 'peer-[:not(:placeholder-shown)]:from-50%',\n 'peer-[:not(:placeholder-shown)]:to-[var(--text-field-bg-filled)]',\n 'peer-[:not(:placeholder-shown)]:to-50%',\n 'peer-focus:pointer-events-auto',\n 'peer-focus:left-[13px]',\n 'peer-focus:top-0',\n 'peer-focus:-translate-y-1/2',\n 'peer-focus:px-[3px]',\n 'peer-focus:text-sm',\n 'peer-focus:leading-4',\n 'peer-focus:bg-gradient-to-b',\n 'peer-focus:from-transparent',\n 'peer-focus:from-50%',\n 'peer-focus:to-[var(--text-field-bg-filled)]',\n 'peer-focus:to-50%',\n];\n\ntype TextFieldVariantProps = VariantProps<typeof inputVariants>;\n\nexport interface TextFieldProps\n extends\n Omit<React.ComponentProps<'input'>, 'readOnly'>,\n Pick<TextFieldVariantProps, 'variant'> {\n label?: string;\n error?: string;\n optional?: boolean;\n optionalLabel?: string;\n supportingText?: string;\n tooltip?: React.ReactNode;\n endIcon?: React.ReactNode;\n readOnly?: boolean;\n wrapperClassName?: string;\n}\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n className,\n wrapperClassName,\n label,\n error,\n optional,\n optionalLabel,\n supportingText,\n tooltip,\n endIcon,\n variant = 'standard',\n placeholder,\n type,\n readOnly,\n ...props\n },\n ref,\n ) => {\n const {t} = useTranslation();\n const hasError = Boolean(error);\n const autoId = React.useId();\n const inputId = props.id || autoId;\n const inputClasses = cn(\n inputVariants({variant, error: hasError, readOnly: Boolean(readOnly)}),\n endIcon && 'pr-12',\n className,\n );\n const effectivePlaceholder = variant === 'floating' ? ' ' : placeholder || '\\u00A0';\n const descriptionId = supportingText ? `${inputId}-desc` : undefined;\n const errorId = error ? `${inputId}-error` : undefined;\n const ariaDescribedBy = errorId || descriptionId || undefined;\n\n if (variant === 'floating') {\n return (\n <div\n className={cn(\n 'relative flex w-full flex-col',\n textFieldRootClasses,\n wrapperClassName,\n )}\n >\n <div className=\"relative\">\n <input\n id={inputId}\n ref={ref}\n type={type}\n readOnly={readOnly}\n placeholder={effectivePlaceholder}\n className={inputClasses}\n aria-invalid={hasError || undefined}\n aria-describedby={ariaDescribedBy}\n {...props}\n />\n {label && (\n <LabelPrimitive.Root\n htmlFor={inputId}\n className={cn(\n floatingLabelClasses,\n hasError && [\n 'peer-[:not(:placeholder-shown)]:text-[var(--text-field-error)]',\n 'peer-focus:text-[var(--text-field-error)]',\n ],\n )}\n >\n {label}\n </LabelPrimitive.Root>\n )}\n {endIcon && <EndIcon>{endIcon}</EndIcon>}\n </div>\n {supportingText && !hasError && (\n <SupportingText id={descriptionId}>{supportingText}</SupportingText>\n )}\n {hasError && <FieldError id={errorId}>{error}</FieldError>}\n </div>\n );\n }\n\n return (\n <div className={cn('flex w-full flex-col', textFieldRootClasses, wrapperClassName)}>\n {label && (\n <div className=\"mb-1 flex items-center gap-1\">\n <LabelPrimitive.Root\n htmlFor={inputId}\n className=\"text-base font-medium leading-4 text-[var(--text-field-label)]\"\n >\n {label}\n </LabelPrimitive.Root>\n {optional && (\n <span className=\"text-base leading-4\">\n <span className=\"text-[var(--chekin-color-brand-navy)]\">{'- '}</span>\n <span className=\"italic text-[var(--chekin-color-gray-2)]\">\n {optionalLabel || t('optional')}\n </span>\n </span>\n )}\n {tooltip}\n </div>\n )}\n <div className=\"relative\">\n <input\n id={inputId}\n ref={ref}\n type={type}\n readOnly={readOnly}\n placeholder={effectivePlaceholder}\n className={inputClasses}\n aria-invalid={hasError || undefined}\n aria-describedby={ariaDescribedBy}\n {...props}\n />\n {endIcon && <EndIcon>{endIcon}</EndIcon>}\n </div>\n {supportingText && !hasError && (\n <SupportingText id={descriptionId}>{supportingText}</SupportingText>\n )}\n {hasError && <FieldError id={errorId}>{error}</FieldError>}\n </div>\n );\n },\n);\n\nTextField.displayName = 'TextField';\n\nexport {inputVariants};\n","import type {ReactNode} from 'react';\n\nexport type EndIconProps = {\n children: ReactNode;\n};\n\nexport const EndIcon = ({children}: EndIconProps) => (\n <div className=\"pointer-events-none absolute right-3.5 top-1/2 -translate-y-1/2 [&>*]:pointer-events-auto\">\n {children}\n </div>\n);\n","import {type TextareaHTMLAttributes, forwardRef, useId} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type TextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & {\n label?: string;\n invalid?: boolean;\n maxLength?: number;\n textareaClassName?: string;\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\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-[#cecede] bg-[#f4f6f8] px-4 py-3 text-[#161643] outline-none [scrollbar-color:#777e91_transparent] [scrollbar-gutter:stable] placeholder:text-[#6b6b95] placeholder:opacity-100 focus:border-[#385bf8] focus:bg-white focus:transition-colors focus:duration-100 focus:ease-in-out [&:not(:placeholder-shown)]:bg-white',\n invalid && 'border-[#ff2467] focus:border-[#ff2467]',\n disabled &&\n 'cursor-not-allowed resize-none border-[#9696b9] bg-[#f4f6f8] text-[#9696b9] placeholder:text-[#9696b9]',\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-[#6b6b95] 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-[#385bf8] 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 && 'text-[#ff2467] peer-focus:text-[#ff2467]',\n disabled && 'text-[#9696b9]',\n )}\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\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-[#9696b9] [&>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-color-gray-2)] bg-[var(--chekin-color-surface-pressed)] py-1.5 pl-3 pr-1.5\"\n >\n <span className=\"text-nowrap text-sm font-medium leading-5 text-[var(--chekin-color-brand-navy)]\">\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-color-gray-1)] 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 {Slider} from '../slider';\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 <Slider>\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 </Slider>\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 {forwardRef, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {isMobile, isTablet} from 'react-device-detect';\nimport ReactWebcam from 'react-webcam';\nimport {useIsMounted} from '../hooks';\nimport {cn} from '../lib/cn';\nimport {isDOMException} from './utils';\nimport type {WebcamProps, WebcamRefTypes} from './types';\n\nconst SCREENSHOT_FORMAT = 'image/jpeg';\nconst MEDIA_CONSTRAINTS = {\n audio: false,\n video: {\n width: {ideal: 4096},\n height: {ideal: 2160},\n },\n};\n\nconst isMobileOrTablet = () => isMobile || isTablet;\n\nfunction getMobileOrDesktopVideoConstraints() {\n if (isMobileOrTablet()) {\n return {\n width: {min: 576, ideal: 1080, max: 2160},\n height: {min: 1024, ideal: 1920, max: 4096},\n facingMode: {\n exact: 'environment',\n },\n };\n }\n\n return {\n facingMode: 'user',\n };\n}\n\nconst Webcam = forwardRef<WebcamRefTypes, WebcamProps>(\n (\n {\n onUserMedia,\n onUserMediaError,\n onException,\n audio = false,\n imageSmoothing = false,\n screenshotQuality = 1,\n videoConstraints,\n className,\n mirrored,\n },\n ref,\n ) => {\n const {t} = useTranslation();\n const isMounted = useIsMounted();\n const [minScreenshotHeight, setMinScreenshotHeight] = useState<undefined | number>(\n undefined,\n );\n const [minScreenshotWidth, setMinScreenshotWidth] = useState<undefined | number>(\n undefined,\n );\n const [isCameraPermissionsDenied, setIsCameraPermissionsDenied] = useState(false);\n const constraints = videoConstraints || getMobileOrDesktopVideoConstraints();\n\n const isDisplayingMirrored = useMemo(() => {\n if (mirrored !== undefined) {\n return mirrored;\n }\n\n if (isCameraPermissionsDenied) {\n return false;\n }\n\n const facingMode: unknown =\n typeof constraints === 'object' && constraints !== null\n ? (constraints as {facingMode?: unknown}).facingMode\n : undefined;\n\n if (typeof facingMode === 'string') {\n return facingMode === 'user';\n }\n\n if (\n typeof facingMode === 'object' &&\n facingMode !== null &&\n ('exact' in (facingMode as Record<string, unknown>) ||\n 'ideal' in (facingMode as Record<string, unknown>))\n ) {\n const {exact, ideal} = facingMode as {exact?: string; ideal?: string};\n return (exact ?? ideal) === 'user';\n }\n\n return !isMobileOrTablet();\n }, [mirrored, isCameraPermissionsDenied, constraints]);\n\n useEffect(() => {\n if (!isMobile) {\n try {\n window.navigator?.mediaDevices\n ?.getUserMedia(MEDIA_CONSTRAINTS)\n ?.then(stream => {\n const track = stream.getVideoTracks()[0];\n const capabilities = track.getCapabilities();\n\n if (capabilities && isMounted.current) {\n setMinScreenshotHeight(capabilities?.height?.max);\n setMinScreenshotWidth(capabilities?.width?.max);\n }\n\n track.stop();\n });\n } catch (err) {\n onException?.(err instanceof Error ? err : String(err));\n }\n }\n }, [constraints, isMounted, onException]);\n\n const handleUserMediaError = useCallback(\n (error: string | DOMException) => {\n if (\n isDOMException(error) &&\n ['PermissionDeniedError', 'NotAllowedError'].includes(error.name)\n ) {\n setIsCameraPermissionsDenied(true);\n } else {\n onException?.(error);\n }\n\n onUserMediaError?.();\n },\n [onUserMediaError, onException],\n );\n\n return (\n <>\n <div\n className={cn(\n 'relative z-[1] mx-auto flex h-[191px] w-[283px] justify-center overflow-hidden rounded-md text-center',\n isDisplayingMirrored && '[&_video]:scale-x-[-1]',\n className,\n )}\n >\n <ReactWebcam\n ref={ref}\n className=\"z-[1] h-[260px] flex-1 self-center bg-[var(--webcam-bg)] max-md:min-h-[200%]\"\n onUserMedia={onUserMedia}\n onUserMediaError={handleUserMediaError}\n audio={audio}\n imageSmoothing={imageSmoothing}\n mirrored={mirrored}\n screenshotQuality={screenshotQuality}\n videoConstraints={constraints}\n screenshotFormat={SCREENSHOT_FORMAT}\n minScreenshotHeight={minScreenshotHeight}\n minScreenshotWidth={minScreenshotWidth}\n />\n </div>\n <div className=\"mx-auto box-border w-[306px] p-4 text-center text-base text-[var(--webcam-permission-text)]\">\n {t('camera_permissions_denied')}\n </div>\n </>\n );\n },\n);\n\nWebcam.displayName = 'Webcam';\n\nexport {Webcam};\n","function isDOMException(error: string | DOMException): error is DOMException {\n return error instanceof DOMException && Boolean(error?.name);\n}\n\nexport {isDOMException};\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 * as React from 'react';\nimport {Calendar} from 'lucide-react';\nimport {DatePickerContent} 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 {FieldTrigger} from '../field-trigger';\n\ntype DatePickerValue = Date | number | null | undefined | '';\n\ntype DatePickerProps = {\n variant?: 'default' | 'airbnb';\n label: string;\n topLabel?: string;\n value?: DatePickerValue;\n defaultValue?: DatePickerValue;\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 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 DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\n (\n {\n variant = 'default',\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 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(() => minDate ?? DEFAULT_MIN_DATE, [minDate]);\n const resolvedMaxDate = React.useMemo(() => maxDate ?? new Date(), [maxDate]);\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 <FieldTrigger\n id={triggerId}\n ref={combinedRef}\n variant={variant}\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 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 className=\"h-5 w-5 text-[#1F1F1B]\" strokeWidth={2} />\n }\n />\n <DatePickerContent\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);\nDatePicker.displayName = 'DatePicker';\n\nexport {DatePicker};\nexport type {DatePickerProps, DatePickerValue};\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 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(\n 'fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n className,\n )}\n {...props}\n />\n));\nDrawerOverlay.displayName = DialogPrimitive.Overlay.displayName;\nconst DrawerOverlayClasses =\n 'fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0';\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 }\n>(\n (\n {\n className,\n children,\n container,\n onClose,\n showHandle = true,\n closeOnOverlayClick = true,\n lockScroll = true,\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 overlayOpacity = Math.max(\n DRAWER_MIN_OVERLAY_OPACITY,\n 1 - dragOffsetY / (DRAWER_CLOSE_THRESHOLD * 2),\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 setDragOffsetY(0);\n onClose?.();\n return;\n }\n\n setDragOffsetY(0);\n },\n [onClose],\n );\n\n return (\n <DrawerPortal container={finalContainer}>\n {lockScroll ? (\n <DrawerOverlay\n style={{opacity: overlayOpacity}}\n onClick={closeOnOverlayClick ? onClose : undefined}\n />\n ) : (\n <div\n className={cn(DrawerOverlayClasses)}\n style={{opacity: overlayOpacity}}\n onClick={closeOnOverlayClick ? onClose : undefined}\n />\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 className=\"fixed inset-x-0 bottom-0 top-auto z-50 outline-none\">\n <Draggable\n axis=\"y\"\n bounds={{top: 0}}\n handle=\"[data-drawer-handle]\"\n nodeRef={nodeRef}\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 max-h-[calc(100vh-1rem)] w-full flex-col rounded-t-[32px] shadow-lg',\n className,\n )}\n >\n {showHandle && (\n <div\n data-drawer-handle\n className=\"mx-auto flex h-8 w-24 cursor-grab touch-none items-center justify-center active:cursor-grabbing\"\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","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: Date | number | null | undefined | '') {\n if (value === '' || value === null || value === undefined) {\n return null;\n }\n\n const date = value instanceof Date ? value : new Date(value);\n\n return isValidDate(date) ? date : 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 DatePickerWheelColumnProps = {\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 DatePickerWheelColumn({\n id,\n label,\n items,\n activeIndex,\n scrollTop,\n listRef,\n onScroll,\n onKeyDown,\n onOptionSelect,\n column,\n}: DatePickerWheelColumnProps) {\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 {DatePickerWheelColumn};\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 {DatePickerWheelColumn} from './DatePickerWheelColumn';\nimport {DatePickerColumn} from './useDatePickerWheel';\n\ntype DatePickerContentProps = {\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 DatePickerBody({\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<DatePickerContentProps, '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 <DatePickerWheelColumn\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 <DatePickerWheelColumn\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 <DatePickerWheelColumn\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 DatePickerContent({\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}: DatePickerContentProps) {\n const body = (\n <DatePickerBody\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 {DatePickerContent};\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 * 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';\n\ntype FieldTriggerProps = {\n as?: 'button' | 'div';\n variant?: 'airbnb' | 'default';\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 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 FieldTrigger = React.forwardRef<\n HTMLButtonElement | HTMLDivElement,\n FieldTriggerProps\n>(\n (\n {\n as = 'button',\n variant = 'airbnb',\n id,\n label,\n topLabel,\n labelId,\n valueId,\n helperTextId,\n errorId,\n labelText,\n valueText,\n placeholder,\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 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=\"shrink-0 text-[12px] relative top-[1px] font-normal leading-4 text-current opacity-70\">\n ({optionalLabel})\n </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 isAirbnbVariant = variant === 'airbnb';\n const hasInvalidState = Boolean(error);\n const errorMessage = typeof error === 'string' ? error : 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-white text-left transition-colors focus-visible:outline-none',\n isAirbnbVariant\n ? 'rounded-[12px] border-[#8c8c8c] pl-4 pr-4 focus-visible:ring-2 focus-visible:ring-[#222222] focus-visible:ring-offset-2'\n : 'rounded-[10px] px-3.5 focus-visible:border-[var(--chekin-color-brand-blue)]',\n isAirbnbVariant ? (isRaised ? 'min-h-[60px]' : 'h-[60px]') : 'min-h-[48px]',\n hasInvalidState\n ? isAirbnbVariant\n ? 'border-[var(--error-message-color)] bg-[#FFF5F3]'\n : 'border-[var(--error-message-color)] bg-white'\n : isAirbnbVariant\n ? 'border-[#8c8c8c]'\n : 'border-[#A8A8A4] bg-white',\n disabled\n ? 'cursor-not-allowed opacity-50'\n : loading\n ? 'cursor-progress'\n : isAirbnbVariant\n ? 'cursor-pointer'\n : 'cursor-text',\n className,\n );\n const sharedContent = (\n <>\n <span\n className={cn(\n 'relative min-w-0 flex-1 pr-2',\n isAirbnbVariant ? (isRaised ? 'h-[42px]' : 'h-[28px]') : 'h-[48px]',\n contentClassName,\n )}\n >\n <span\n id={labelId}\n className={cn(\n 'absolute left-0 origin-left truncate transition-all duration-200 ease-out',\n hasLabelMeta ? '' : 'pointer-events-none',\n isAirbnbVariant\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 : isRaised\n ? '-top-2 translate-y-0 bg-white px-1 text-[12px] font-medium leading-4'\n : 'top-1/2 -translate-y-1/2 text-[16px] leading-6',\n hasInvalidState\n ? 'text-[var(--error-message-color)]'\n : isAirbnbVariant\n ? 'text-[#6c6c6c]'\n : 'text-[#7A8399]',\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 isAirbnbVariant\n ? 'bottom-0 translate-y-0 text-[16px] leading-6 opacity-100'\n : 'bottom-[11px] text-[16px] leading-6',\n hasInvalidState ? 'text-[var(--error-message-color)]' : 'text-[#222222]',\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={cn(\n 'pointer-events-none absolute top-1/2 -translate-y-1/2',\n isAirbnbVariant ? 'right-5' : 'right-4',\n )}\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-[#222222]\">\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={describedBy}\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={describedBy}\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 {errorMessage && !hideErrorMessage && (\n <FieldErrorMessage id={errorId} message={errorMessage} />\n )}\n </div>\n );\n },\n);\n\nFieldTrigger.displayName = 'FieldTrigger';\n\nexport {FieldTrigger};\nexport type {FieldTriggerProps};\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 type {ReactNode} from 'react';\nimport {Dialog, DialogContent, DialogDescription, DialogTitle} from '../dialog';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} 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};\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 = true,\n closeOnEscape = true,\n}: Readonly<ResponsiveSheetProps>) {\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 <div\n aria-hidden=\"true\"\n className={cn(\n 'text-center mb-3 text-[26px] font-semibold leading-7',\n titleClassName,\n )}\n >\n {title}\n </div>\n ) : null}\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 lockScroll={false}\n onEscapeKeyDown={handleEscapeKeyDown}\n className={cn(className, drawerClassName)}\n >\n {title ? <DrawerTitle className=\"sr-only\">{title}</DrawerTitle> : null}\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 className={cn('max-w-[560px] border-0 p-0 shadow-xl', className, dialogClassName)}\n lockScroll={false}\n >\n {title ? <DialogTitle className=\"sr-only\">{title}</DialogTitle> : null}\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 {FieldTrigger} from '../../field-trigger';\nimport {cn} from '../../lib/cn';\n\ntype AirbnbInputProps = React.InputHTMLAttributes<HTMLInputElement> & {\n variant?: 'airbnb' | 'default';\n label?: string;\n topLabel?: string;\n helperText?: string;\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 variant = 'default',\n label,\n topLabel,\n helperText,\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 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 [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 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 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 return (\n <div className={cn('w-full max-w-[var(--max-field-width)]', wrapperClassName)}>\n <FieldTrigger\n as=\"div\"\n variant={variant}\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 disabled={disabled}\n error={triggerError}\n loading={loading}\n optional={optional}\n tooltip={tooltip}\n describedBy={error && renderErrorMessage ? errorId : undefined}\n className={cn(\n variant === 'airbnb'\n ? 'px-4 focus-within:ring-2 focus-within:ring-[#1F1F1B] focus-within:ring-offset-2'\n : 'px-3.5 focus-within:border-[#315EFB]',\n disabled ? 'cursor-not-allowed' : 'cursor-text',\n fieldClassName,\n )}\n contentClassName={cn(\n variant === 'airbnb' ? 'h-[42px]' : 'h-[48px]',\n contentClassName,\n )}\n trailingAdornment={trailingAdornment}\n forceFloatingLabel={shouldShowLabel}\n forceLabelText={hasLabelMeta}\n hideErrorMessage={!renderErrorMessage}\n >\n <input\n {...props}\n id={inputId}\n ref={setRefs}\n type={type}\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-[#1F1F1B] outline-none placeholder:text-[#7A8399]',\n variant === 'airbnb' ? 'bottom-0' : 'bottom-[12px]',\n hasInvalidState\n ? 'text-[var(--status-danger)] placeholder:text-[var(--status-danger)]'\n : '',\n disabled ? 'cursor-not-allowed' : loading ? 'cursor-progress' : '',\n inputClassName,\n className,\n )}\n />\n </FieldTrigger>\n </div>\n );\n },\n);\n\nAirbnbInput.displayName = 'Input';\n\nexport {AirbnbInput};\nexport type {AirbnbInputProps};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport {AirbnbSelect} from '../select';\nimport {AirbnbInput} from '../input';\nimport {FieldErrorMessage} from '../../field-error-message';\n\ntype PhoneFieldOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype PhoneFieldValue = {\n code: string;\n number: string;\n};\n\ntype PhoneFieldProps = {\n variant?: 'default' | 'airbnb';\n label: string;\n topLabel?: string;\n value?: PhoneFieldValue | null;\n onChange: (value: PhoneFieldValue) => void;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n options: PhoneFieldOption[];\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 className?: string;\n name?: string;\n codeName?: string;\n numberName?: string;\n mobileTitle?: string;\n codePlaceholder?: string;\n};\n\nfunction formatPhoneCodeOptionLabel(option: PhoneFieldOption) {\n const label = String(option.label);\n const value = String(option.value);\n\n return label.includes(value) ? label : `${label} (${value})`;\n}\n\nconst PhoneField = React.forwardRef<HTMLButtonElement, PhoneFieldProps>(\n (\n {\n variant = 'default',\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 className,\n name,\n codeName,\n numberName,\n mobileTitle,\n codePlaceholder = '+00',\n },\n ref,\n ) => {\n const inputId = React.useId();\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 === value?.code) ?? null,\n [codeOptions, value?.code],\n );\n\n const combinedValue =\n value?.code || value?.number ? `${value?.code ?? ''}${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={value?.code ?? ''}\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-[#1F1F1B]\"\n >\n {topLabel}\n </label>\n )}\n <div className=\"flex items-stretch\">\n <AirbnbSelect\n ref={ref}\n variant={variant}\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 variant: selectVariant,\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 w-full items-center justify-center gap-2 border border-r-0 text-[16px] font-medium leading-6 transition-colors focus-visible:outline-none',\n selectVariant === 'airbnb'\n ? 'h-full min-h-[60px] rounded-l-[16px] rounded-r-none px-4 focus-visible:ring-2 focus-visible:ring-[#1F1F1B] focus-visible:ring-offset-2'\n : 'min-h-[48px] rounded-l-[10px] rounded-r-none px-3.5 focus-visible:border-[#315EFB]',\n hasInvalidState\n ? 'border-[var(--status-danger)] bg-[#F2F2F2] text-[var(--status-danger)]'\n : selectVariant === 'airbnb'\n ? 'border-[#8C8C8C] bg-[#F4F4F2] text-[#1F1F1B]'\n : 'border-[#A8A8A4] bg-white text-[#1F1F1B]',\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 variant={variant}\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={cn(\n variant === 'airbnb'\n ? 'min-h-[60px] rounded-l-none rounded-r-[16px] border-l-0'\n : 'rounded-l-none rounded-r-[10px] border-l-0',\n )}\n contentClassName={cn(variant === 'airbnb' ? 'h-[40px] py-2' : 'h-[48px]')}\n inputClassName=\"text-[16px] leading-7\"\n onChange={event =>\n onChange({\n code: value?.code ?? '',\n number: event.target.value,\n })\n }\n onBlur={onBlur}\n />\n </div>\n {error && <FieldErrorMessage message={error} />}\n </div>\n );\n },\n);\nPhoneField.displayName = 'PhoneField';\n\nexport {PhoneField};\nexport type {PhoneFieldOption, PhoneFieldProps, PhoneFieldValue};\n","import * as React from 'react';\nimport {SelectDesktopContent} from './SelectDesktopContent';\nimport {SelectMobileContent} from './SelectMobileContent';\nimport {SelectTrigger} from './SelectTrigger';\nimport {getOptionIndex} from './select.utils';\nimport {AirbnbSelectProps, 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 = undefined,\n V extends SelectValue = string,\n L extends string | number | ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n variant = 'default',\n label,\n topLabel,\n placeholder,\n getValueLabel,\n renderTrigger,\n disabled,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n doneLabel = 'Done',\n mobileTitle,\n name,\n noOptionsMessage,\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 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,\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,\n value,\n disabled: isBlocked,\n onChange,\n });\n const combinedRef = useCombinedRef(ref, desktopTriggerRef);\n const activeMobileIndex = getOptionIndex(options, 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 = options.find(option => option.value === value.value);\n\n if (validOption) {\n onChange(validOption);\n }\n },\n [onChange, options, 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 variant,\n label,\n topLabel,\n helperText,\n value,\n valueLabel,\n disabled: isBlocked,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n listboxId,\n describedBy: triggerDescribedBy,\n triggerRef: combinedRef,\n onClick: handleTriggerClick,\n onKeyDown: handleRootTriggerKeyDown,\n onBlur,\n })\n ) : (\n <SelectTrigger\n id={triggerId}\n ref={combinedRef}\n open={isOpen}\n variant={variant}\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 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 <SelectMobileContent\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={options}\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 <SelectDesktopContent\n isOpen={isOpen}\n listboxId={listboxId}\n labelId={labelId}\n errorId={describedErrorId}\n options={options}\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 = undefined,\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 {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\n\ntype SelectDesktopMenuProps<\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 SelectDesktopMenu<\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}: SelectDesktopMenuProps<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-[#6C6C6C]\">{emptyMessage}</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-[#3F3F46] transition-colors',\n isHighlighted && 'bg-[#F7F6F4]',\n isSelected && 'bg-[#F7F6F4] font-medium text-[#171717]',\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 {SelectDesktopMenu};\n","import * as React from 'react';\nimport {SelectDesktopMenu} from './SelectDesktopMenu';\nimport {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\n\ntype SelectDesktopContentProps<\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 SelectDesktopContent<\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}: SelectDesktopContentProps<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-[#DEDAD2] bg-white shadow-[0_14px_30px_rgba(18,18,18,0.08)]',\n dropdownClassName,\n )}\n >\n <SelectDesktopMenu\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 {SelectDesktopContent};\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 * as React from 'react';\nimport {MOBILE_OPTION_HEIGHT, MOBILE_WHEEL_BUFFER_OPTIONS} from './constants';\nimport {SelectValue} from './types';\nimport {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 {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\n\ntype SelectMobileWheelProps<\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 SelectMobileWheel<\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}: SelectMobileWheelProps<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-[#6C6C6C]\">\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 {SelectMobileWheel};\n","import * as React from 'react';\nimport {Button} from '../../button';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../drawer';\nimport {SelectMobileWheel} from './SelectMobileWheel';\nimport {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype SelectMobileContentProps<\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 SelectMobileContent<\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}: SelectMobileContentProps<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 <SelectMobileWheel\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 {SelectMobileContent};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {FieldTrigger} from '../../field-trigger';\n\ntype SelectTriggerProps = {\n id: string;\n open: boolean;\n variant: 'default' | 'airbnb';\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 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 SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n id,\n open,\n variant,\n label,\n topLabel,\n helperText,\n valueLabel,\n disabled,\n loading,\n optional,\n tooltip,\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 <FieldTrigger\n id={id}\n ref={ref}\n variant={variant}\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 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 className={\n open\n ? 'h-6 w-6 rotate-180 text-[#1F1F1B] transition-transform'\n : 'h-6 w-6 text-[#1F1F1B] transition-transform'\n }\n />\n }\n />\n );\n },\n);\n\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport {SelectTrigger};\n","import * as React from 'react';\nimport {\n getFirstEnabledOptionIndex,\n getLastEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n} from './select.utils';\nimport {SelectValue} from './types';\nimport {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 {MOBILE_OPTION_HEIGHT, MOBILE_SCROLL_SETTLE_DELAY} from './constants';\nimport {SelectValue} from './types';\nimport {\n getFirstEnabledOptionIndex,\n getLastEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n getOptionScrollTop,\n} from './select.utils';\nimport {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\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 {ComponentProps} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Search, X} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {Button} from '../../button';\n\ntype AirbnbSearchInputProps = ComponentProps<'input'> & {\n onReset?: () => void;\n wrapperClassName?: string;\n};\n\nexport const AirbnbSearchInput = React.forwardRef<\n HTMLInputElement,\n AirbnbSearchInputProps\n>(({onReset, placeholder, wrapperClassName, ...props}, ref) => {\n const {t} = useTranslation();\n\n const placeholderText = placeholder || t('search_property') + '...';\n\n return (\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-[#9696B9]\" />\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 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-[#9696B9] 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-[#9696B9]\"\n >\n <X className=\"h-5 w-5\" />\n </Button>\n )}\n </div>\n );\n});\n\nAirbnbSearchInput.displayName = 'SearchInput';\n","import * as React from 'react';\nimport {Eye, Minus, Plus, X} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {usePrevious} from '../../hooks/use-previous';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {Fieldset} from '../_fieldset';\n\ntype DashboardInputProps = 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 width?: number | string;\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 checkIfEmpty = ({\n empty,\n defaultValue,\n value,\n}: {\n empty?: boolean;\n value?: DashboardInputProps['value'];\n defaultValue?: DashboardInputProps['defaultValue'];\n}) => {\n if (typeof empty !== 'undefined') return empty;\n if (value === 0 || defaultValue === 0) return false;\n return !value && !defaultValue;\n};\n\nconst DashboardInput = React.forwardRef<HTMLInputElement, DashboardInputProps>(\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 width,\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 isEmpty = checkIfEmpty({empty, value, defaultValue});\n const [inputType, setInputType] = React.useState(type);\n const [isPasswordRevealed, setIsPasswordRevealed] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\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 const wrapperWidth = toCssSize(width);\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 || !onChange) return;\n onChange(event);\n };\n\n const handleLabelClick = () => {\n if (readOnly || disabled) return;\n setIsFocused(true);\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (readOnly || disabled) return;\n onFocus?.(event);\n setIsFocused(true);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n setIsFocused(false);\n };\n\n const showRightPaddingForReset = Boolean(onReset);\n const showRightPaddingForReveal = isPasswordReveal;\n\n return (\n <div\n className={cn(\n 'relative block min-h-[68px]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n wrapperClassName,\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {topLabel && (\n <label\n htmlFor={inputId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n <div\n className={cn(\n 'relative block w-full',\n readOnly && 'bg-[var(--chekin-color-surface-input-empty)]',\n fieldClassName,\n )}\n >\n <div className={cn('relative w-full cursor-text', contentClassName)}>\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 />\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 <input\n {...props}\n ref={ref}\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 '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:font-medium placeholder:text-[var(--chekin-color-gray-1)] placeholder:opacity-100',\n isEmpty && !isFocused\n ? 'bg-[var(--chekin-color-surface-input-empty)]'\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 || readOnly) && 'cursor-not-allowed',\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=\"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=\"pointer-events-none absolute right-[14px] top-0 flex h-full items-center\">\n {trailingAdornment}\n </span>\n )}\n {onReset && (\n <button\n type=\"button\"\n onClick={onReset}\n disabled={disabled}\n className=\"absolute right-0 top-0 flex h-full w-10 items-center justify-center border-0 bg-transparent p-0 text-[#9696b9] hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Reset\"\n >\n <X size={14} />\n </button>\n )}\n {isPasswordReveal && (\n <button\n type=\"button\"\n onClick={togglePasswordReveal}\n className=\"absolute right-[14px] top-[13px] flex h-[13px] w-[21px] cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:opacity-85\"\n aria-label={isPasswordRevealed ? 'Hide password' : 'Show password'}\n >\n <Eye\n className={cn(\n 'h-[13px] w-[21px]',\n isPasswordRevealed\n ? 'text-[#fc98dd]'\n : 'text-[var(--chekin-color-gray-2)]',\n )}\n />\n </button>\n )}\n </div>\n {type === 'number' && showNumberButtons && (\n <div className=\"absolute right-[18px] top-[10px] inline-flex items-center text-right\">\n <button\n type=\"button\"\n onClick={onDecrement}\n className=\"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=\"Decrement\"\n >\n <Minus size={16} strokeWidth={3} aria-hidden />\n </button>\n <button\n type=\"button\"\n onClick={onIncrement}\n className=\"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=\"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=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\"\n >\n {typeof optional === 'string' ? optional : '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 && renderErrorMessage && (\n <FieldErrorMessage\n id={errorId}\n message={errorMessage}\n data-testid={name ? `${name}-error` : undefined}\n className=\"mt-[1px] text-[14px]\"\n />\n )}\n {footer}\n </div>\n );\n },\n);\n\nDashboardInput.displayName = 'DashboardInput';\n\nexport {DashboardInput};\nexport type {DashboardInputProps};\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 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 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 cursor-text items-center pl-[3px] pr-5 transition-all duration-100 ease-in',\n 'left-[13px] text-[var(--chekin-color-gray-1)]',\n isEmpty && !isFocused ? 'top-[14px]' : 'top-[-8px] !pl-1 !pr-[22px]',\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 font-medium transition-all duration-100 ease-in',\n raised ? 'text-[14px]' : 'text-[16px]',\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] transition-colors duration-75',\n 'border-[var(--chekin-color-gray-3)]',\n isActivated && 'border-[var(--chekin-color-gray-2)]',\n isFocused && 'border-[var(--chekin-color-brand-blue)]',\n invalid && 'border-[var(--error-message-color)]',\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 className=\"visible inline-block pr-[6px] text-[14px] font-medium opacity-0\">\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 {ChevronDown} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {ThreeDotsLoader} from '../../three-dots-loader';\nimport {Fieldset} from '../_fieldset';\nimport {\n SelectMenu,\n defaultFilterOption,\n getFirstEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n useSelectIds,\n type DashboardSelectFilterOption,\n type SelectValue,\n} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype DashboardSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = {\n options?: SelectOption<T, V, L>[];\n value?: SelectOption<T, V, L> | null;\n onChange: (option: SelectOption<T, V, L>) => void;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n label: string;\n topLabel?: string;\n placeholder?: string;\n getValueLabel?: (option: SelectOption<T, V, L>) => string;\n disabled?: boolean;\n loading?: 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 name?: string;\n width?: number | string;\n noOptionsMessage?: () => string | undefined;\n searchable?: boolean;\n searchPlaceholder?: string;\n filterOption?: DashboardSelectFilterOption<T, V, L>;\n helperText?: string;\n};\n\nfunction DashboardSelectInternal<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n label,\n topLabel,\n placeholder,\n getValueLabel,\n disabled,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n name,\n width,\n noOptionsMessage,\n searchable = true,\n searchPlaceholder,\n filterOption = defaultFilterOption,\n helperText,\n }: DashboardSelectProps<T, V, L>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n const optionRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n\n const hasValue = Boolean(value);\n const isEmpty = !hasValue;\n const isBlocked = Boolean(disabled) || Boolean(loading);\n const triggerError = (error ?? invalid) as string | boolean | undefined;\n const hasInvalidState = Boolean(triggerError);\n const errorMessage = typeof error === 'string' ? error : undefined;\n const wrapperWidth = toCssSize(width);\n const valueLabel = value ? (getValueLabel?.(value) ?? String(value.label)) : undefined;\n\n const {triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId} =\n useSelectIds({name, hasValue, error, hideErrorMessage});\n\n const filteredOptions = React.useMemo(() => {\n if (!searchable || !searchValue) return options;\n return options.filter(option => filterOption(option, searchValue));\n }, [options, searchable, searchValue, filterOption]);\n\n React.useImperativeHandle(ref, () => triggerRef.current as HTMLButtonElement, []);\n\n useOutsideClick({\n elementRef: containerRef,\n onOutsideClick: () => setIsOpen(false),\n isDisabled: !isOpen,\n });\n\n React.useEffect(() => {\n if (isBlocked) setIsOpen(false);\n }, [isBlocked]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchValue('');\n setHighlightedIndex(-1);\n return;\n }\n const selectedIndex = getOptionIndex(filteredOptions, value);\n setHighlightedIndex(\n selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(filteredOptions),\n );\n if (searchable) {\n const frame = window.requestAnimationFrame(() => searchInputRef.current?.focus());\n return () => window.cancelAnimationFrame(frame);\n }\n }, [isOpen, filteredOptions, searchable, value]);\n\n React.useEffect(() => {\n if (!isOpen || highlightedIndex < 0) return;\n optionRefs.current[highlightedIndex]?.scrollIntoView({block: 'nearest'});\n }, [highlightedIndex, isOpen]);\n\n React.useEffect(\n function setCorrectOptionIfThereIsOnlyValue() {\n if (value?.value === undefined || value.value === null || value.label !== '')\n return;\n const validOption = options.find(option => option.value === value.value);\n if (validOption) onChange(validOption);\n },\n [onChange, options, value],\n );\n\n const toggleMenu = () => {\n if (isBlocked) return;\n setIsOpen(prev => !prev);\n };\n\n const handleSelect = (option: SelectOption<T, V, L>) => {\n if (option.isDisabled) return;\n onChange(option);\n setIsOpen(false);\n triggerRef.current?.focus();\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 setIsOpen(true);\n }\n };\n\n const handleSearchKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex + 1, 1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex - 1, -1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n const option = filteredOptions[highlightedIndex];\n if (option && !option.isDisabled) handleSelect(option);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n if (event.key === 'Tab') {\n setIsOpen(false);\n }\n };\n\n return (\n <div\n ref={containerRef}\n className={cn(\n 'relative w-full max-w-[var(--max-field-width)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {name && (\n <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n )}\n <div className=\"relative w-full min-h-[68px]\">\n {topLabel && (\n <label\n htmlFor={triggerId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n <div className=\"relative w-full\">\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-labelledby={hasValue && valueId ? `${labelId} ${valueId}` : labelId}\n aria-describedby={describedErrorId}\n aria-invalid={hasInvalidState}\n aria-busy={loading}\n disabled={isBlocked}\n onClick={toggleMenu}\n onKeyDown={handleTriggerKeyDown}\n onBlur={onBlur}\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 isEmpty\n ? 'bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-gray-1)]'\n : 'bg-transparent text-[var(--chekin-color-brand-navy)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n )}\n >\n <span id={valueId} className=\"block min-w-0 flex-1 truncate text-left\">\n {valueLabel ?? placeholder ?? label}\n </span>\n <span className=\"pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n {loading && <ThreeDotsLoader height={18} width={18} />}\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 <Fieldset\n isFocused={isOpen}\n invalid={hasInvalidState}\n isEmpty={isEmpty}\n isActivated={!isEmpty || isOpen}\n disabled={disabled}\n loading={loading}\n htmlFor={triggerId}\n labelId={labelId}\n legend={typeof label === 'string' ? label : undefined}\n label={label}\n tooltip={tooltip}\n onClick={!isBlocked ? toggleMenu : undefined}\n />\n {isOpen && (\n <div\n className={cn(\n 'absolute left-0 right-0 top-full z-20 overflow-hidden rounded-b-lg bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)]',\n dropdownClassName,\n )}\n >\n {searchable && (\n <div className=\"border-b border-[#f2f4f8] px-4 pb-2 pt-3\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n placeholder={searchPlaceholder}\n onChange={event => setSearchValue(event.target.value)}\n onKeyDown={handleSearchKeyDown}\n autoComplete=\"off\"\n aria-controls={listboxId}\n aria-activedescendant={\n highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n className=\"m-0 box-border h-9 w-full rounded-md border border-[var(--chekin-color-gray-3)] bg-white px-3 text-[16px] font-medium text-[var(--chekin-color-brand-navy)] outline-none transition-colors placeholder:text-[var(--chekin-color-gray-1)] focus:border-[var(--chekin-color-brand-blue)]\"\n />\n </div>\n )}\n <SelectMenu\n id={listboxId}\n options={filteredOptions}\n labelledBy={labelId}\n describedBy={describedErrorId}\n selectedValue={value}\n highlightedIndex={highlightedIndex}\n onOptionClick={handleSelect}\n onOptionHover={setHighlightedIndex}\n disabled={isBlocked}\n menuClassName={menuClassName}\n listRef={listRef}\n selectedOptionRef={(index, node) => {\n optionRefs.current[index] = node;\n }}\n getOptionId={getOptionId}\n noOptionsMessage={noOptionsMessage}\n />\n </div>\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 : '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 />\n )}\n </div>\n </div>\n );\n}\n\ntype DashboardSelectComponent = <\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n props: DashboardSelectProps<T, V, L> & {ref?: React.Ref<HTMLButtonElement>},\n) => React.ReactElement;\n\nconst DashboardSelect = React.forwardRef(\n DashboardSelectInternal,\n) as unknown as DashboardSelectComponent;\n\nexport {DashboardSelect};\nexport type {DashboardSelectProps};\n","import type {ReactNode} from 'react';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {SelectValue} from './types';\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 getFirstEnabledOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n) {\n return options.findIndex(option => !option.isDisabled);\n}\n\nexport function getLastEnabledOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n) {\n for (let index = options.length - 1; index >= 0; index -= 1) {\n if (!options[index]?.isDisabled) 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) {\n let nextIndex = startIndex;\n while (nextIndex >= 0 && nextIndex < options.length) {\n if (!options[nextIndex]?.isDisabled) 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","import * as React from 'react';\nimport {cn} from '../../lib/cn';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {isOptionSelected} from './utils';\nimport type {SelectValue} 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 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};\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 menuClassName,\n listRef,\n selectedOptionRef,\n getOptionId,\n noOptionsMessage,\n isMulti,\n emptyContent,\n footer,\n}: SelectMenuProps<T, V, L>) {\n const emptyMessage = noOptionsMessage?.();\n const hasOptions = options.length > 0;\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-activedescendant={\n highlightedIndex !== undefined && highlightedIndex >= 0\n ? getOptionId(highlightedIndex)\n : undefined\n }\n onKeyDown={onKeyDown}\n className={cn(\n 'h-auto max-h-[322px] min-h-[75px] overflow-y-auto px-4 pb-[19px] pt-[17px] outline-none',\n menuClassName,\n )}\n >\n {!hasOptions && emptyMessage && (\n <div className=\"mt-[10px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]\">\n {emptyMessage}\n </div>\n )}\n {!hasOptions && !emptyMessage && emptyContent}\n {options.map((option, index) => {\n const isSelected = isOptionSelected(option, selectedValue, selectedValues);\n const isHighlighted = index === highlightedIndex;\n const optionKey = `${String(option.value)}-${index}`;\n const isOptionDisabled = Boolean(disabled || option.isDisabled);\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={isOptionDisabled}\n tabIndex={-1}\n disabled={isOptionDisabled}\n onClick={() => onOptionClick(option)}\n onMouseMove={() => onOptionHover?.(index)}\n className={cn(\n 'flex w-full items-start justify-between border-0 border-b border-[#f2f4f8] bg-white px-4 py-[20px] text-left text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors',\n 'last:border-b-transparent',\n isHighlighted &&\n !isSelected &&\n 'cursor-pointer text-[var(--chekin-color-brand-blue)]',\n isSelected &&\n 'cursor-default font-bold text-[var(--chekin-color-brand-navy)]',\n isOptionDisabled && 'cursor-default opacity-30',\n )}\n >\n <span className=\"block break-words\">{option.label as ReactNode}</span>\n {option.description && (\n <span className=\"ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]\">\n {option.description}\n </span>\n )}\n </button>\n );\n })}\n {footer}\n </div>\n );\n}\n\nexport {SelectMenu};\nexport type {SelectMenuProps};\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 {SquareX} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {ThreeDotsLoader} from '../../three-dots-loader';\nimport {RotateArrow} from '../../rotate-arrow';\nimport {Fieldset} from '../_fieldset';\nimport {\n SelectMenu,\n defaultFilterOption,\n getFirstEnabledOptionIndex,\n getNextEnabledOptionIndex,\n useSelectIds,\n type DashboardSelectFilterOption,\n type SelectValue,\n} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype DashboardMultiSelectChipRenderer<T, V extends SelectValue, L extends ReactNode> = (\n option: SelectOption<T, V, L>,\n onRemove: () => void,\n) => React.ReactNode;\n\ntype DashboardMultiSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = {\n options?: SelectOption<T, V, L>[];\n value?: SelectOption<T, V, L>[] | null;\n onChange: (value: SelectOption<T, V, L>[]) => void;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n label: string;\n topLabel?: string;\n placeholder?: string;\n disabled?: boolean;\n readOnly?: boolean;\n loading?: 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 name?: string;\n width?: number | string;\n noOptionsMessage?: () => string | undefined;\n filterOption?: DashboardSelectFilterOption<T, V, L>;\n closeMenuOnSelect?: boolean;\n renderChip?: DashboardMultiSelectChipRenderer<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 selected: SelectOption<T, V, L>[],\n options: SelectOption<T, V, L>[],\n ) => boolean;\n};\n\nconst isValueSelected = <T, V extends SelectValue, L extends ReactNode>(\n selected: SelectOption<T, V, L>[],\n option: SelectOption<T, V, L>,\n) => selected.some(item => item.value === option.value);\n\nfunction DashboardMultiSelectInternal<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n label,\n topLabel,\n placeholder,\n disabled,\n readOnly,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n name,\n width,\n noOptionsMessage,\n filterOption = defaultFilterOption,\n closeMenuOnSelect = false,\n renderChip,\n helperText,\n isCreatable = false,\n onCreateOption,\n formatCreateLabel = (input: string) => `Create \"${input}\"`,\n isValidNewOption,\n }: DashboardMultiSelectProps<T, V, L>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n const optionRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n const [isFocused, setIsFocused] = React.useState(false);\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n const selectedValues = React.useMemo(() => value ?? [], [value]);\n const hasValue = selectedValues.length > 0;\n const isEmpty = !hasValue;\n const isBlocked = Boolean(disabled) || Boolean(loading) || Boolean(readOnly);\n const triggerError = (error ?? invalid) as string | boolean | undefined;\n const hasInvalidState = Boolean(triggerError);\n const errorMessage = typeof error === 'string' ? error : undefined;\n const wrapperWidth = toCssSize(width);\n\n const {triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId} =\n useSelectIds({name, hasValue, error, hideErrorMessage});\n\n const filteredOptions = React.useMemo(\n () => options.filter(option => filterOption(option, searchValue)),\n [options, searchValue, filterOption],\n );\n\n const trimmedSearch = searchValue.trim();\n const canCreateNewOption = React.useMemo(() => {\n if (!isCreatable || !trimmedSearch) return false;\n if (isValidNewOption) return isValidNewOption(trimmedSearch, selectedValues, options);\n const lower = trimmedSearch.toLowerCase();\n const existsInOptions = options.some(\n option => typeof option.label === 'string' && option.label.toLowerCase() === lower,\n );\n const existsInSelected = selectedValues.some(\n option => typeof option.label === 'string' && option.label.toLowerCase() === lower,\n );\n return !existsInOptions && !existsInSelected;\n }, [isCreatable, trimmedSearch, isValidNewOption, options, selectedValues]);\n\n React.useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n ref as React.Ref<HTMLDivElement | null>,\n () => containerRef.current,\n );\n\n useOutsideClick({\n elementRef: containerRef,\n onOutsideClick: () => {\n setIsOpen(false);\n setIsFocused(false);\n },\n isDisabled: !isOpen,\n });\n\n React.useEffect(() => {\n if (isBlocked) setIsOpen(false);\n }, [isBlocked]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchValue('');\n setHighlightedIndex(-1);\n }\n }, [isOpen]);\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);\n });\n }, [isOpen, filteredOptions]);\n\n const openMenu = () => {\n if (isBlocked) return;\n setIsOpen(true);\n setIsFocused(true);\n };\n\n const toggleOption = (option: SelectOption<T, V, L>) => {\n if (option.isDisabled) return;\n const exists = isValueSelected(selectedValues, option);\n const next = exists\n ? selectedValues.filter(item => item.value !== option.value)\n : [...selectedValues, option];\n onChange(next);\n setSearchValue('');\n if (closeMenuOnSelect) {\n setIsOpen(false);\n } else {\n inputRef.current?.focus();\n }\n };\n\n const removeOption = (option: SelectOption<T, V, L>) => {\n if (isBlocked) return;\n onChange(selectedValues.filter(item => item.value !== option.value));\n inputRef.current?.focus();\n };\n\n const clearAll = () => {\n if (isBlocked) return;\n onChange([]);\n inputRef.current?.focus();\n };\n\n const createOption = React.useCallback(() => {\n if (!canCreateNewOption) return;\n const newOption =\n onCreateOption?.(trimmedSearch) ??\n ({value: trimmedSearch as V, label: trimmedSearch as L} as SelectOption<T, V, L>);\n onChange([...selectedValues, newOption]);\n setSearchValue('');\n inputRef.current?.focus();\n if (closeMenuOnSelect) setIsOpen(false);\n }, [\n canCreateNewOption,\n closeMenuOnSelect,\n onChange,\n onCreateOption,\n selectedValues,\n trimmedSearch,\n ]);\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Backspace' && !searchValue && selectedValues.length > 0) {\n event.preventDefault();\n onChange(selectedValues.slice(0, -1));\n return;\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!isOpen) {\n openMenu();\n return;\n }\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex + 1, 1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isOpen) {\n openMenu();\n return;\n }\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex - 1, -1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'Enter') {\n if (!isOpen) return;\n event.preventDefault();\n const option = filteredOptions[highlightedIndex];\n if (option && !option.isDisabled) {\n toggleOption(option);\n } else if (canCreateNewOption) {\n createOption();\n }\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n }\n };\n\n const handleContainerClick = () => {\n if (isBlocked) return;\n inputRef.current?.focus();\n setIsOpen(true);\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (containerRef.current?.contains(event.relatedTarget as Node)) return;\n setIsFocused(false);\n onBlur?.(event);\n };\n\n return (\n <div\n ref={containerRef}\n onBlur={handleInputBlur}\n className={cn(\n 'relative min-h-[68px] w-full max-w-[var(--max-field-width)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {topLabel && (\n <label\n htmlFor={triggerId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={selectedValues.map(item => String(item.value)).join(',')}\n />\n )}\n <div className=\"relative w-full\">\n <div\n id={triggerId}\n role=\"combobox\"\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={hasInvalidState}\n aria-busy={loading}\n aria-disabled={isBlocked}\n onClick={handleContainerClick}\n className={cn(\n 'relative box-border flex w-full cursor-text flex-wrap items-center gap-2 rounded-[6px] border-0 px-4 py-[10px] text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200',\n 'min-h-12',\n isEmpty && !isFocused\n ? 'bg-[var(--chekin-color-surface-input-empty)]'\n : 'bg-transparent',\n disabled && 'cursor-not-allowed',\n loading && 'cursor-progress',\n )}\n >\n {selectedValues.map(option =>\n renderChip ? (\n <React.Fragment key={String(option.value)}>\n {renderChip(option, () => removeOption(option))}\n </React.Fragment>\n ) : (\n <span\n key={String(option.value)}\n className=\"inline-flex items-center gap-2 rounded-[4px] border border-[#acacd5] bg-[#f0f0f8] py-[2px] pl-[10px] pr-1 text-[12px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n <span className=\"whitespace-nowrap\">{option.label as ReactNode}</span>\n {!readOnly && (\n <button\n type=\"button\"\n onClick={event => {\n event.stopPropagation();\n removeOption(option);\n }}\n className=\"flex h-[15px] w-[15px] items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]\"\n aria-label={`Remove ${typeof option.label === 'string' ? option.label : String(option.value)}`}\n >\n <SquareX size={15} fill=\"#9696b9\" color=\"#f8f8f8\" strokeWidth={1.8} />\n </button>\n )}\n </span>\n ),\n )}\n <input\n ref={inputRef}\n type=\"text\"\n id={`${triggerId}-input`}\n value={searchValue}\n onChange={event => {\n setSearchValue(event.target.value);\n if (!isOpen) setIsOpen(true);\n }}\n onFocus={() => {\n setIsFocused(true);\n if (!isBlocked) setIsOpen(true);\n }}\n onKeyDown={handleInputKeyDown}\n disabled={isBlocked}\n readOnly={readOnly}\n placeholder={hasValue ? '' : (placeholder ?? '')}\n autoComplete=\"off\"\n className={cn(\n 'm-0 box-border min-w-[40px] flex-1 border-0 bg-transparent p-0 text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[var(--chekin-color-gray-1)]',\n isBlocked && 'cursor-not-allowed',\n )}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-activedescendant={\n isOpen && highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n />\n <span className=\"ml-auto flex items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]\">\n {loading && <ThreeDotsLoader height={18} width={18} />}\n {hasValue && !readOnly && (\n <button\n type=\"button\"\n onClick={event => {\n event.stopPropagation();\n clearAll();\n }}\n className=\"flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]\"\n aria-label=\"Clear all\"\n >\n <SquareX size={15} fill=\"#9696b9\" color=\"#f8f8f8\" strokeWidth={1.8} />\n </button>\n )}\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 </span>\n </div>\n <Fieldset\n isFocused={isFocused || isOpen}\n invalid={hasInvalidState}\n isEmpty={isEmpty && !searchValue}\n isActivated={!isEmpty || isFocused || isOpen || Boolean(searchValue)}\n disabled={disabled}\n loading={loading}\n readOnly={readOnly}\n htmlFor={`${triggerId}-input`}\n labelId={labelId}\n legend={typeof label === 'string' ? label : undefined}\n label={label}\n tooltip={tooltip}\n onClick={handleContainerClick}\n />\n {isOpen && (\n <div\n className={cn(\n 'absolute left-0 right-0 top-full z-20 overflow-hidden rounded-b-lg bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)]',\n dropdownClassName,\n )}\n >\n <SelectMenu\n id={listboxId}\n options={filteredOptions}\n labelledBy={labelId}\n describedBy={describedErrorId}\n selectedValues={selectedValues}\n highlightedIndex={highlightedIndex}\n onOptionClick={toggleOption}\n onOptionHover={setHighlightedIndex}\n disabled={isBlocked}\n menuClassName={menuClassName}\n listRef={listRef}\n selectedOptionRef={(index, node) => {\n optionRefs.current[index] = node;\n }}\n getOptionId={getOptionId}\n noOptionsMessage={noOptionsMessage}\n isMulti\n />\n {canCreateNewOption && (\n <button\n type=\"button\"\n onClick={createOption}\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(trimmedSearch)}\n </button>\n )}\n </div>\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 : '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 />\n )}\n </div>\n );\n}\n\ntype DashboardMultiSelectComponent = <\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n props: DashboardMultiSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nconst DashboardMultiSelect = React.forwardRef(\n DashboardMultiSelectInternal,\n) as unknown as DashboardMultiSelectComponent;\n\nexport {DashboardMultiSelect};\nexport type {DashboardMultiSelectProps, DashboardMultiSelectChipRenderer};\n","import * as React from 'react';\nimport {DashboardMultiSelect, type DashboardMultiSelectProps} from '../multi-select';\nimport type {SelectValue} from '../_select-internals';\nimport type {ReactNode} from 'react';\n\ntype DashboardCreatableMultiSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = Omit<DashboardMultiSelectProps<T, V, L>, 'isCreatable'>;\n\nconst DashboardCreatableMultiSelect = React.forwardRef(\n function DashboardCreatableMultiSelect<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n >(props: DashboardCreatableMultiSelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n return <DashboardMultiSelect ref={ref} {...props} isCreatable />;\n },\n) as <T = undefined, V extends SelectValue = string, L extends ReactNode = string>(\n props: DashboardCreatableMultiSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nexport {DashboardCreatableMultiSelect};\nexport type {DashboardCreatableMultiSelectProps};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {useVirtualizer} from '@tanstack/react-virtual';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {ThreeDotsLoader} from '../../three-dots-loader';\nimport {Fieldset} from '../_fieldset';\nimport {\n defaultFilterOption,\n getFirstEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n useSelectIds,\n type DashboardSelectFilterOption,\n type SelectValue,\n} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype DashboardInfiniteScrollSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = {\n options?: SelectOption<T, V, L>[];\n value?: SelectOption<T, V, L> | null;\n onChange: (option: SelectOption<T, V, L>) => void;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n label: string;\n topLabel?: string;\n placeholder?: string;\n getValueLabel?: (option: SelectOption<T, V, L>) => string;\n disabled?: boolean;\n loading?: 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 name?: string;\n width?: number | string;\n noOptionsMessage?: () => string | undefined;\n searchable?: boolean;\n searchPlaceholder?: string;\n filterOption?: DashboardSelectFilterOption<T, V, L>;\n helperText?: string;\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\nconst DEFAULT_ITEM_HEIGHT = 60;\nconst DEFAULT_LIST_HEIGHT = 322;\nconst DEFAULT_OVERSCAN = 5;\nconst DEFAULT_LOAD_MORE_THRESHOLD = 5;\n\nfunction DashboardInfiniteScrollSelectInternal<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n label,\n topLabel,\n placeholder,\n getValueLabel,\n disabled,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n name,\n width,\n noOptionsMessage,\n searchable = true,\n searchPlaceholder,\n filterOption = defaultFilterOption,\n helperText,\n canLoadMore,\n isLoadingMore,\n loadMoreItems,\n loadingMoreText = 'Loading…',\n onSearchChange,\n itemHeight = DEFAULT_ITEM_HEIGHT,\n listHeight = DEFAULT_LIST_HEIGHT,\n overscan = DEFAULT_OVERSCAN,\n loadMoreThreshold = DEFAULT_LOAD_MORE_THRESHOLD,\n }: DashboardInfiniteScrollSelectProps<T, V, L>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n\n const hasValue = Boolean(value);\n const isEmpty = !hasValue;\n const isBlocked = Boolean(disabled) || Boolean(loading);\n const triggerError = (error ?? invalid) as string | boolean | undefined;\n const hasInvalidState = Boolean(triggerError);\n const errorMessage = typeof error === 'string' ? error : undefined;\n const wrapperWidth = toCssSize(width);\n const valueLabel = value ? (getValueLabel?.(value) ?? String(value.label)) : undefined;\n\n const {triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId} =\n useSelectIds({name, hasValue, error, hideErrorMessage});\n\n const filteredOptions = React.useMemo(() => {\n if (!searchable || !searchValue) return options;\n return options.filter(option => filterOption(option, searchValue));\n }, [options, searchable, searchValue, filterOption]);\n\n const itemCount = filteredOptions.length + (canLoadMore || isLoadingMore ? 1 : 0);\n\n const virtualizer = useVirtualizer({\n count: itemCount,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => itemHeight,\n overscan,\n });\n\n React.useImperativeHandle(ref, () => triggerRef.current as HTMLButtonElement, []);\n\n useOutsideClick({\n elementRef: containerRef,\n onOutsideClick: () => setIsOpen(false),\n isDisabled: !isOpen,\n });\n\n React.useEffect(() => {\n if (isBlocked) setIsOpen(false);\n }, [isBlocked]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchValue('');\n setHighlightedIndex(-1);\n return;\n }\n const selectedIndex = getOptionIndex(filteredOptions, value);\n setHighlightedIndex(\n selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(filteredOptions),\n );\n if (searchable) {\n const frame = window.requestAnimationFrame(() => searchInputRef.current?.focus());\n return () => window.cancelAnimationFrame(frame);\n }\n }, [isOpen, filteredOptions, searchable, value]);\n\n const virtualItems = virtualizer.getVirtualItems();\n\n React.useEffect(() => {\n if (!isOpen || !canLoadMore || isLoadingMore || !loadMoreItems) return;\n if (virtualItems.length === 0) return;\n const lastItem = virtualItems[virtualItems.length - 1];\n if (lastItem && lastItem.index >= filteredOptions.length - loadMoreThreshold) {\n loadMoreItems();\n }\n }, [\n canLoadMore,\n filteredOptions.length,\n isLoadingMore,\n isOpen,\n loadMoreItems,\n loadMoreThreshold,\n virtualItems,\n ]);\n\n React.useEffect(() => {\n if (!isOpen || highlightedIndex < 0) return;\n virtualizer.scrollToIndex(highlightedIndex, {align: 'auto'});\n }, [highlightedIndex, isOpen, virtualizer]);\n\n const toggleMenu = () => {\n if (isBlocked) return;\n setIsOpen(prev => !prev);\n };\n\n const handleSelect = (option: SelectOption<T, V, L>) => {\n if (option.isDisabled) return;\n onChange(option);\n setIsOpen(false);\n triggerRef.current?.focus();\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 setIsOpen(true);\n }\n };\n\n const handleSearchKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex + 1, 1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex - 1, -1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n const option = filteredOptions[highlightedIndex];\n if (option && !option.isDisabled) handleSelect(option);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n if (event.key === 'Tab') {\n setIsOpen(false);\n }\n };\n\n const handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.value;\n setSearchValue(next);\n onSearchChange?.(next);\n };\n\n const emptyMessage = noOptionsMessage?.();\n const totalSize = virtualizer.getTotalSize();\n const measuredListHeight = Math.min(listHeight, Math.max(totalSize, itemHeight));\n\n return (\n <div\n ref={containerRef}\n className={cn(\n 'relative w-full max-w-[var(--max-field-width)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {name && (\n <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n )}\n <div className=\"relative min-h-[68px] w-full\">\n {topLabel && (\n <label\n htmlFor={triggerId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n <div className=\"relative w-full\">\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-labelledby={hasValue && valueId ? `${labelId} ${valueId}` : labelId}\n aria-describedby={describedErrorId}\n aria-invalid={hasInvalidState}\n aria-busy={loading}\n disabled={isBlocked}\n onClick={toggleMenu}\n onKeyDown={handleTriggerKeyDown}\n onBlur={onBlur}\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 isEmpty\n ? 'bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-gray-1)]'\n : 'bg-transparent text-[var(--chekin-color-brand-navy)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n )}\n >\n <span id={valueId} className=\"block min-w-0 flex-1 truncate text-left\">\n {valueLabel ?? placeholder ?? label}\n </span>\n <span className=\"pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n {loading && <ThreeDotsLoader height={18} width={18} />}\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 <Fieldset\n isFocused={isOpen}\n invalid={hasInvalidState}\n isEmpty={isEmpty}\n isActivated={!isEmpty || isOpen}\n disabled={disabled}\n loading={loading}\n htmlFor={triggerId}\n labelId={labelId}\n legend={typeof label === 'string' ? label : undefined}\n label={label}\n tooltip={tooltip}\n onClick={!isBlocked ? toggleMenu : undefined}\n />\n {isOpen && (\n <div\n className={cn(\n 'absolute left-0 right-0 top-full z-20 overflow-hidden rounded-b-lg bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)]',\n dropdownClassName,\n )}\n >\n {searchable && (\n <div className=\"border-b border-[#f2f4f8] px-4 pb-2 pt-3\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n placeholder={searchPlaceholder}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeyDown}\n autoComplete=\"off\"\n aria-controls={listboxId}\n aria-activedescendant={\n highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n className=\"m-0 box-border h-9 w-full rounded-md border border-[var(--chekin-color-gray-3)] bg-white px-3 text-[16px] font-medium text-[var(--chekin-color-brand-navy)] outline-none transition-colors placeholder:text-[var(--chekin-color-gray-1)] focus:border-[var(--chekin-color-brand-blue)]\"\n />\n </div>\n )}\n {itemCount === 0 ? (\n <div className=\"px-4 py-[20px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]\">\n {emptyMessage ?? 'No options'}\n </div>\n ) : (\n <div\n ref={scrollRef}\n className={cn('overflow-y-auto', menuClassName)}\n style={{height: `${measuredListHeight}px`}}\n >\n <div\n id={listboxId}\n role=\"listbox\"\n tabIndex={-1}\n aria-labelledby={labelId}\n aria-describedby={describedErrorId}\n aria-activedescendant={\n highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n className=\"relative w-full\"\n style={{height: `${totalSize}px`}}\n >\n {virtualItems.map(virtualItem => {\n const isLoaderRow = virtualItem.index >= filteredOptions.length;\n const option = filteredOptions[virtualItem.index];\n const isSelected =\n !isLoaderRow && option ? option.value === value?.value : false;\n const isHighlighted = virtualItem.index === highlightedIndex;\n const isOptionDisabled = Boolean(isBlocked || option?.isDisabled);\n\n return (\n <div\n key={virtualItem.key}\n data-index={virtualItem.index}\n className=\"absolute left-0 top-0 w-full\"\n style={{\n height: `${virtualItem.size}px`,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n >\n {isLoaderRow ? (\n <div className=\"flex h-full items-center justify-center gap-2 px-4 text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n <ThreeDotsLoader height={18} width={18} />\n <span>{loadingMoreText}</span>\n </div>\n ) : (\n <button\n id={getOptionId(virtualItem.index)}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isOptionDisabled}\n tabIndex={-1}\n disabled={isOptionDisabled}\n onClick={() => option && handleSelect(option)}\n onMouseMove={() => setHighlightedIndex(virtualItem.index)}\n className={cn(\n 'flex h-full w-full items-start justify-between border-0 border-b border-[#f2f4f8] bg-white px-4 text-left text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors',\n isHighlighted &&\n !isSelected &&\n 'cursor-pointer text-[var(--chekin-color-brand-blue)]',\n isSelected &&\n 'cursor-default font-bold text-[var(--chekin-color-brand-navy)]',\n isOptionDisabled && 'cursor-default opacity-30',\n )}\n >\n <span className=\"block break-words\">\n {option?.label as ReactNode}\n </span>\n {option?.description && (\n <span className=\"ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]\">\n {option.description}\n </span>\n )}\n </button>\n )}\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\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 : '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 />\n )}\n </div>\n </div>\n );\n}\n\ntype DashboardInfiniteScrollSelectComponent = <\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n props: DashboardInfiniteScrollSelectProps<T, V, L> & {\n ref?: React.Ref<HTMLButtonElement>;\n },\n) => React.ReactElement;\n\nconst DashboardInfiniteScrollSelect = React.forwardRef(\n DashboardInfiniteScrollSelectInternal,\n) as unknown as DashboardInfiniteScrollSelectComponent;\n\nexport {DashboardInfiniteScrollSelect};\nexport type {DashboardInfiniteScrollSelectProps};\n","import * as React from 'react';\nimport {ChevronDown, Search} from 'lucide-react';\nimport {useVirtualizer} from '@tanstack/react-virtual';\nimport {ReactNode, useCallback} from 'react';\nimport type {SearchableSelectProps, SearchableSelectValue} from './types';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../drawer';\nimport {FieldTrigger} from '../field-trigger';\nimport {useOutsideClick, useScreenResize} from '../hooks';\nimport {DEVICE} from '../lib/device';\nimport type {SelectOption} from '../lib/selector-option';\nimport {cn} from '../lib/cn';\nimport {useEvent} from '../hooks';\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 SearchableSelectValue, 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 SearchableSelectInternal = <\n T = undefined,\n V extends SearchableSelectValue = 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 variant = 'default',\n label,\n topLabel,\n placeholder,\n searchPlaceholder = 'Search...',\n mobileTitle,\n getValueLabel,\n disabled,\n error,\n invalid,\n optional,\n tooltip,\n hideErrorMessage,\n name,\n className,\n dropdownClassName,\n menuClassName,\n noOptionsMessage,\n loadingMessage,\n }: SearchableSelectProps<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 <SearchableSelectContent\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 ref={containerRef} className={cn('relative w-full max-w-[425px]', className)}>\n {name && (\n <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n )}\n <FieldTrigger\n id={`${reactId}-trigger`}\n ref={triggerRef}\n variant={variant}\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 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-[#1F1F1B] 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-[#DEDAD2] 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 SearchableSelectComponent = <\n T = undefined,\n V extends SearchableSelectValue = string,\n L extends ReactNode = string,\n>(\n props: SearchableSelectProps<T, V, L> & React.RefAttributes<HTMLButtonElement>,\n) => React.ReactElement | null;\n\nconst SearchableSelect = React.forwardRef(\n SearchableSelectInternal,\n) as SearchableSelectComponent;\n\ntype SearchableSelectContentProps<\n T,\n V extends SearchableSelectValue,\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 SearchableSelectContent<\n T,\n V extends SearchableSelectValue,\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}: SearchableSelectContentProps<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-[#9696B9]\"\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-[#DEDAD2] bg-white pl-12 pr-4 text-base text-[#1F1F1B] outline-none placeholder:text-[#9696B9] focus:border-[#1F1F1B]\"\n />\n </div>\n {loading && options.length === 0 ? (\n <div className=\"px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]\">\n {loadingText}\n </div>\n ) : options.length === 0 ? (\n <div className=\"px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]\">\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-[#6C6C6C]\"\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-[#3F3F46] transition-colors',\n isHighlighted && 'bg-[#F7F6F4]',\n isSelected && 'bg-[#F7F6F4] font-medium text-[#171717]',\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<T, V extends SearchableSelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n) {\n return options.findIndex(option => !option.isDisabled);\n}\n\nfunction getNextEnabledIndex<T, V extends SearchableSelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n startIndex: number,\n step: 1 | -1,\n) {\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 {SearchableSelect};\n","export const DEVICE_BREAKPOINTS = {\n mobileS: '320px',\n mobileM: '375px',\n mobileL: '425px',\n tabletS: '640px',\n tablet: '768px',\n tabletL: '970px',\n laptop: '1024px',\n yFullHD: '1080px',\n laptopM: '1280px',\n laptopL: '1400px',\n desktop: '2560px',\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"],"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;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,wBAAAA;AAAA,EAAA,qBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA;AAAA;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,oBAAAC;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,mBAAAC;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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","names":["Content","Header","Root","Image","RadioGroup","Separator","import_lucide_react","import_jsx_runtime","AlertType","AlertSize","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","sizeClasses","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_jsx_runtime","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_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_react","import_jsx_runtime","import_jsx_runtime","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","React","import_react","import_react","import_react","import_react","import_react","import_react","import_react","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_lucide_react","import_jsx_runtime","import_jsx_runtime","Content","import_jsx_runtime","Header","import_jsx_runtime","Root","import_jsx_runtime","Root","Header","Content","import_react","import_react_i18next","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_class_variance_authority","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","import_lucide_react","import_jsx_runtime","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_lucide_react","import_jsx_runtime","RadioGroup","import_react","import_jsx_runtime","RadioGroup","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_lucide_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","import_jsx_runtime","import_react","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","SectionTagColors","import_react","import_lucide_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","React","import_jsx_runtime","import_jsx_runtime","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","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","React","LabelPrimitive","import_class_variance_authority","import_react_i18next","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","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_i18next","import_jsx_runtime","ReactWebcam","import_react","import_jsx_runtime","React","import_lucide_react","React","DialogPrimitive","import_jsx_runtime","Draggable","React","import_jsx_runtime","import_jsx_runtime","isMobile","React","import_lucide_react","import_react_i18next","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","isMobile","import_jsx_runtime","isMobile","React","import_jsx_runtime","React","import_lucide_react","React","import_jsx_runtime","getOptionId","import_jsx_runtime","getOptionId","getOptionScrollTop","import_jsx_runtime","getOptionId","spacerHeight","import_jsx_runtime","getOptionId","React","import_lucide_react","import_jsx_runtime","SelectTrigger","React","isMobile","React","isMobile","getOptionScrollTop","React","getOptionId","import_jsx_runtime","AirbnbSelect","isMobile","getOptionId","SelectTrigger","import_jsx_runtime","React","import_react_i18next","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","getOptionIndex","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","import_jsx_runtime","getOptionId","React","useSelectIds","getOptionId","import_jsx_runtime","getOptionId","useSelectIds","getOptionIndex","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","React","import_lucide_react","import_jsx_runtime","getOptionId","useSelectIds","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","React","import_jsx_runtime","DashboardCreatableMultiSelect","React","import_lucide_react","import_react_virtual","import_jsx_runtime","getOptionId","useSelectIds","getOptionIndex","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","React","import_lucide_react","import_react_virtual","import_react","import_jsx_runtime","isMobile","options","import_sonner","error","import_jsx_runtime","i18next"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/accordion/Accordion.tsx","../src/lib/cn.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/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/text-field/FieldError.tsx","../src/text-field/SupportingText.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/status-badge/StatusBadge.tsx","../src/copy-icon/CopyIcon.tsx","../src/input/Input.tsx","../src/copy-input/CopyInput.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/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-outside-click.ts","../src/hooks/use-screen-resize.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/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-timer.ts","../src/hooks/use-timeout.ts","../src/hooks/use-timeout-ref.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/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/free-text-field/FreeTextField.tsx","../src/framed-icon/FramedIcon.tsx","../src/help-tooltip/HelpTooltip.tsx","../src/svg-icon/SvgIcon.tsx","../src/icon-button/IconButton.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/de/translation.json","../src/locales/en/translation.json","../src/locales/es/translation.json","../src/locales/fr/translation.json","../src/locales/it/translation.json","../src/locales/pt/translation.json","../src/i18n/resources.ts","../src/large-modal/LargeModal.tsx","../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/select/Select.tsx","../src/select/components.tsx","../src/select/MultiSelect.tsx","../src/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/RatingRadioGroup.tsx","../src/rating-stars/RatingStars.tsx","../src/rotate-arrow/RotateArrow.tsx","../src/search-button/SearchButton.tsx","../src/search-input/SearchInput.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/assets/icons/sign-finger.svg","../src/slider/Slider.tsx","../src/slider/SliderControls.tsx","../src/slider/SliderContext.tsx","../src/slider/SliderRoot.tsx","../src/slider/SliderSlide.tsx","../src/slider/SliderTrack.tsx","../src/slider/SliderViewport.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/text-field/TextField.tsx","../src/text-field/EndIcon.tsx","../src/textarea/Textarea.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/webcam/utils.ts","../src/wide-button/WideButton.tsx","../src/datepicker/DatePicker.tsx","../src/drawer/Drawer.tsx","../src/datepicker/useDatePickerWheel.ts","../src/datepicker/datePicker.utils.ts","../src/datepicker/DatePickerWheelColumn.tsx","../src/datepicker/DatePickerContent.tsx","../src/lib/device.ts","../src/field-trigger/FieldTrigger.tsx","../src/field-error-message/FieldErrorMessage.tsx","../src/responsive-sheet/ResponsiveSheet.tsx","../src/airbnb/input/Input.tsx","../src/airbnb/phone-field/PhoneField.tsx","../src/airbnb/select/Select.tsx","../src/airbnb/select/SelectDesktopMenu.tsx","../src/airbnb/select/SelectDesktopContent.tsx","../src/airbnb/select/constants.ts","../src/airbnb/select/select.utils.ts","../src/airbnb/select/SelectMobileWheel.tsx","../src/airbnb/select/SelectMobileContent.tsx","../src/airbnb/select/SelectTrigger.tsx","../src/airbnb/select/useDesktopSelect.ts","../src/airbnb/select/useMobileSelectWheel.ts","../src/airbnb/select/useSelectIds.ts","../src/airbnb/search-input/SearchInput.tsx","../src/dashboard/input/Input.tsx","../src/dashboard/_fieldset/Fieldset.tsx","../src/dashboard/select/Select.tsx","../src/dashboard/_select-internals/utils.ts","../src/dashboard/_select-internals/SelectMenu.tsx","../src/dashboard/_select-internals/useSelectIds.ts","../src/dashboard/multi-select/MultiSelect.tsx","../src/dashboard/creatable-multi-select/CreatableMultiSelect.tsx","../src/dashboard/infinite-scroll-select/InfiniteScrollSelect.tsx","../src/searchable-select/SearchableSelect.tsx","../src/lib/breakpoints.ts","../src/lib/toastResponseError.tsx","../src/lib/getErrorMessage.ts"],"sourcesContent":["export * from './accordion';\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-input';\nexport * from './copy-link-button';\nexport * from './copy-string';\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 './file-input-button';\nexport * from './form-box';\nexport * from './free-text-field';\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';\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 './select';\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 './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 './text-field';\nexport * from './textarea';\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 './wide-button';\nexport * from './datepicker';\nexport * from './drawer';\nexport * from './button';\nexport * from './field-error-message';\nexport * from './responsive-sheet';\nexport * from './field-trigger';\nexport * from './airbnb/input';\nexport * from './airbnb/phone-field';\nexport * from './airbnb/select';\nexport * from './airbnb/select';\nexport * from './airbnb/search-input';\nexport * from './dashboard';\nexport * from './searchable-select';\nexport * from './circular-loader';\nexport * from './lib/selector-option';\nexport * from './lib/copy-to-clipboard';\nexport {toCssSize, isNumeric, scrollToTop} 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","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)] 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)] data-[state=closed]:block',\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 {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 ({\n [AlertType.INFO]: <AlertCircle className=\"relative\" />,\n [AlertType.WARNING]: <TriangleAlert className=\"relative\" />,\n [AlertType.ERROR]: <XCircle className=\"relative\" />,\n [AlertType.LIGHT]: null,\n [AlertType.SUCCESS]: <Check className=\"relative\" />,\n })[type];\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 'bg-[var(--alert-box-info-bg)] [&_svg]:text-[var(--alert-box-info-icon)]',\n [AlertType.WARNING]:\n 'bg-[var(--alert-box-warning-bg)] [&_svg]:text-[var(--alert-box-warning-icon)]',\n [AlertType.ERROR]:\n 'bg-[var(--alert-box-error-bg)] [&_svg]:text-[var(--alert-box-error-icon)]',\n [AlertType.SUCCESS]:\n 'bg-[var(--alert-box-success-bg)] text-[var(--alert-box-success-text)] [&_svg]:text-[var(--alert-box-success-icon)]',\n [AlertType.LIGHT]: '',\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)] [&_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-[#e5e6ee]',\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-[#e5e6ee]',\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-[#e5e6ee]',\n 'bg-[var(--chekin-color-surface-input-empty)] px-4 py-2 text-sm 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(--chekin-color-brand-blue)] data-[state=unchecked]:bg-[var(--chekin-color-gray-2)]',\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-white 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}\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(\n (\n {className, size, readOnly, loading, onChange, value, id, label, error, ...props},\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 <div>\n <div className=\"flex items-center gap-3\">\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 </div>\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 {cn} from '../lib/cn';\nimport {buttonVariants} from '../button/buttonVariants';\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(\n buttonVariants({variant: 'ghost'}),\n 'size-9 p-0 text-chekin-gray-1 hover:text-chekin-navy',\n ),\n button_next: cn(\n buttonVariants({variant: 'ghost'}),\n 'size-9 p-0 text-chekin-gray-1 hover:text-chekin-navy',\n ),\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-chekin-navy 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-chekin-surface-input-empty',\n 'group-data-[selected]:bg-chekin-blue group-data-[selected]:text-white',\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-white',\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-chekin-surface-pressed group-data-[selected]:group-[.range-middle]:text-chekin-navy',\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-chekin-blue *:after:transition-colors',\n '[&[data-selected]:not(.range-middle)>*]:after:bg-white',\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('flex items-center justify-center text-current')}\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 {FieldError} from '../text-field/FieldError';\nimport {SupportingText} from '../text-field/SupportingText';\nimport {BaseCheckbox, type CheckboxSize} from './BaseCheckbox';\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('flex w-full flex-col', className)}>\n <div\n className={cn('flex items-center', rowSizeClasses[size], rowClassName)}\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 '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 <SupportingText id={descriptionId} className={supportingTextClassName}>\n {supportingText}\n </SupportingText>\n )}\n {error && (\n <FieldError id={errorId} className={errorClassName}>\n {error}\n </FieldError>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type FieldErrorProps = {\n children: ReactNode;\n id?: string;\n className?: string;\n};\n\nexport const FieldError = ({id, className, children}: FieldErrorProps) => (\n <p\n id={id}\n className={cn(\n 'mt-1 text-right text-xs font-medium text-[var(--chekin-color-brand-red)]',\n className,\n )}\n role=\"alert\"\n >\n {children}\n </p>\n);\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type SupportingTextProps = {\n children: ReactNode;\n id?: string;\n className?: string;\n};\n\nexport const SupportingText = ({id, className, children}: SupportingTextProps) => (\n <p\n id={id}\n className={cn('mt-1 text-xs italic text-[var(--chekin-color-gray-2)]', className)}\n >\n {children}\n </p>\n);\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=\"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('space-y-2', className)} {...props}>\n {showSelectAll && (\n <>\n <div className=\"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=\"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=\"border-t border-chekin-gray-3\" />\n </>\n )}\n <ScrollAreaWrapper scrollable={scrollable} scrollHeight={scrollHeight}>\n <div className=\"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 && <ErrorMessage disabled={disabled}>{error}</ErrorMessage>}\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';\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}\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 ...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 <TooltipPrimitive.Root\n data-slot=\"tooltip\"\n open={disabled ? false : undefined}\n {...props}\n >\n <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" asChild={asChild}>\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 </TooltipPrimitive.Root>\n </TooltipProvider>\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: 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","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 {Button} from '../button';\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from '../tooltip';\nimport {cn} from '../lib/cn';\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: 'sm',\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 <Button\n variant={variant}\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 readOnly={copied}\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 </Button>\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 {cn} from '../lib/cn';\n\nexport type InputProps = React.ComponentProps<'input'>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\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\nInput.displayName = 'Input';\n","import {type ComponentProps} from 'react';\nimport {CopyIcon} from '../copy-icon';\nimport {Input} from '../input';\nimport {cn} from '../lib/cn';\n\ntype CopyInputProps = Omit<ComponentProps<typeof Input>, 'value'> & {\n value?: string | number;\n};\n\nfunction CopyInput({value, className, ...props}: CopyInputProps) {\n const textToCopy = value?.toString() ?? '';\n\n return (\n <div className={cn('relative w-fit', className)}>\n <Input\n readOnly\n value={value ?? ''}\n className=\"min-h-0 basis-[368px] pr-12\"\n {...props}\n />\n {textToCopy && (\n <CopyIcon\n textToCopy={textToCopy}\n className=\"absolute right-1 top-1\"\n variant=\"ghost\"\n />\n )}\n </div>\n );\n}\n\nexport {CopyInput};\nexport type {CopyInputProps};\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-1.5', 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 {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-lg 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 {useCombinedRef, useIframeFocusTrapFallback} from '../hooks';\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\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 >\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 =\n container ||\n (typeof window !== 'undefined' ? window.chekinCustomDocument?.body : undefined);\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('flex flex-col-reverse gap-4 sm:flex-row sm:justify-end', className)}\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('text-lg font-semibold leading-none', className)}\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 {MutableRefObject, Ref, 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 mediaQuery.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < breakpoint);\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 {useEffect, useRef} from 'react';\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 loadMoreRef = useRef<T>(null);\n\n useEffect(() => {\n const element = loadMoreRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n entries => {\n if (entries[0].isIntersecting && hasNextPage && !loading && !disabled) {\n onLoadMore();\n }\n },\n {threshold, rootMargin},\n );\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [hasNextPage, loading, disabled, onLoadMore, threshold, rootMargin]);\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 {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 mediaQuery = getMediaQuery(maxWidth, matchString);\n setIsInitialized(true);\n\n if (!mediaQuery) {\n setIsMatch(false);\n return;\n }\n\n const media = getWindow().matchMedia(mediaQuery);\n setIsMatch(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 {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, useCallback, 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 const updateState = useCallback(() => {\n const element = ref.current;\n if (!element) return;\n\n const newState = getScrollableAreaState(element);\n setState(prev =>\n prev.canScrollUp !== newState.canScrollUp ||\n prev.canScrollDown !== newState.canScrollDown\n ? newState\n : prev,\n );\n }, [ref]);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\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, updateState]);\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","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 {jsonParse} from './utils';\n\nclass SessionStorage extends AbstractStorage {\n static get<T>(key: string): T | null {\n const data = sessionStorage.getItem(key);\n return jsonParse(data);\n }\n\n static set<T>(key: string, value: T): void {\n if (value) {\n sessionStorage.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 sessionStorage.removeItem(key);\n }\n\n static clear(): void {\n sessionStorage.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';\n\ntype Props = {\n seconds: number;\n};\n\nexport const useTimer = ({seconds}: Props) => {\n const [timeLeft, setTimeLeft] = useState(seconds);\n const [isTimerRunning, setIsTimerRunning] = useState(true);\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 const resetTimer = () => {\n setTimeLeft(seconds);\n setIsTimerRunning(true);\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, 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 {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: 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\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 {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-[#acacd5]\">\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 {CheckboxOption} from '../checkbox';\nimport {DropdownMenuCheckboxItem} from './DropdownMenu';\nimport {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 {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, CheckboxOption} from '../checkbox';\nimport {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')}\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-[#e8fcf7]',\n color: 'text-[#2bc29f]',\n },\n [HALO_ICON_STATUS.danger]: {\n background: 'bg-[#ffe2ed]',\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 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(--chekin-color-brand-navy)]',\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-[10px] border border-[var(--chekin-color-gray-separator)] 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(--chekin-color-gray-separator)] px-0 py-2 text-base font-semibold leading-normal text-[var(--chekin-color-brand-navy)]',\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 {\n type ChangeEvent,\n type ComponentProps,\n type FocusEvent,\n type ReactNode,\n forwardRef,\n useId,\n useState,\n} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\n\nexport type FreeTextFieldProps = Omit<ComponentProps<'input'>, 'size'> & {\n label?: string;\n error?: string;\n supportingText?: string;\n optional?: boolean;\n optionalLabel?: string;\n tooltip?: ReactNode;\n icon?: ReactNode;\n fieldStyle?: 'current' | 'new';\n autocompleted?: boolean;\n};\n\nexport const FreeTextField = forwardRef<HTMLInputElement, FreeTextFieldProps>(\n (\n {\n label,\n error,\n supportingText,\n optional,\n optionalLabel,\n tooltip,\n icon,\n fieldStyle = 'current',\n autocompleted,\n className,\n placeholder,\n onChange,\n value,\n defaultValue,\n onFocus,\n onBlur,\n disabled,\n ...inputProps\n },\n ref,\n ) => {\n const {t} = useTranslation();\n const inputId = useId();\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const [isFocused, setIsFocused] = useState(false);\n\n const currentValue = value !== undefined ? value : internalValue;\n const isEmpty = !currentValue || String(currentValue).length === 0;\n const hasError = Boolean(error);\n const isErrorWrong = hasError && !isEmpty;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(event.target.value);\n }\n\n onChange?.(event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(event);\n };\n\n const fieldBoxClassName = cn(\n 'relative flex h-11 items-center gap-2.5 rounded-lg border px-3.5 py-2.5 transition-colors duration-150 ease-in-out',\n autocompleted &&\n 'border-[var(--chekin-color-brand-navy)] bg-[var(--chekin-color-surface-autocomplete)]',\n isErrorWrong && !autocompleted && 'border-[var(--error-message-color)] bg-white',\n !autocompleted &&\n !isErrorWrong &&\n !isEmpty &&\n 'border-[var(--chekin-color-brand-navy)] bg-white',\n !autocompleted &&\n !isErrorWrong &&\n isEmpty &&\n 'border-[rgba(22,22,67,0.2)] bg-[var(--chekin-color-surface-input-empty)]',\n isFocused && !hasError && 'border-[var(--chekin-color-brand-blue)]',\n );\n\n const inputPlaceholder = fieldStyle === 'new' ? label : placeholder;\n const showFloatingLabel = fieldStyle === 'new' && !isEmpty && Boolean(label);\n\n return (\n <div\n className={cn(\n 'relative flex w-[300px] flex-col gap-1 [font-family:var(--chekin-font-family-primary)]',\n className,\n )}\n >\n {fieldStyle === 'current' && label && (\n <div className=\"flex items-center gap-1\">\n <label\n htmlFor={inputId}\n className=\"text-base font-medium leading-4 text-[var(--chekin-color-brand-navy)]\"\n >\n {label}\n </label>\n {optional && (\n <span className=\"text-base leading-4 text-[var(--chekin-color-brand-navy)] [&_em]:text-[var(--chekin-color-gray-2)]\">\n {'- '}\n <em>{optionalLabel || t('optional')}</em>\n </span>\n )}\n {tooltip && <div className=\"h-4 w-4 shrink-0\">{tooltip}</div>}\n </div>\n )}\n\n <div className={fieldBoxClassName}>\n <input\n ref={ref}\n id={inputId}\n className=\"min-h-px min-w-0 flex-1 basis-0 border-0 bg-transparent p-0 text-base font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:font-medium placeholder:text-[var(--chekin-color-gray-1)]\"\n placeholder={inputPlaceholder}\n value={value}\n defaultValue={value === undefined ? defaultValue : undefined}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n {...inputProps}\n />\n {icon && (\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center\">\n {icon}\n </div>\n )}\n\n {showFloatingLabel && (\n <div\n className={cn(\n 'pointer-events-none absolute left-[13px] top-[-8px] flex h-4 items-center bg-gradient-to-b from-transparent from-50% to-white to-50% px-[3px]',\n autocompleted && 'to-[var(--chekin-color-surface-autocomplete)]',\n )}\n >\n <span\n className={cn(\n 'whitespace-nowrap text-sm font-medium leading-6 text-[var(--chekin-color-gray-1)]',\n isErrorWrong && 'text-[var(--error-message-color)]',\n )}\n >\n {label}\n </span>\n </div>\n )}\n </div>\n\n {supportingText && (\n <p className=\"m-0 text-xs italic leading-normal text-[var(--chekin-color-gray-2)]\">\n {supportingText}\n </p>\n )}\n {error && (\n <p className=\"m-0 text-right text-xs font-medium leading-4 text-[var(--error-message-color)]\">\n {error}\n </p>\n )}\n </div>\n );\n },\n);\n\nFreeTextField.displayName = 'FreeTextField';\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-[#E8FCF7] text-[#0F9F80]',\n warn: 'bg-[#FFF4E5] text-[#B86A00]',\n error: 'bg-[#FFE8EF] 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 {ComponentType, forwardRef, 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 * as React from 'react';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {Tooltip, TooltipContent, TooltipTrigger} from '../tooltip';\n\nconst 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-[#FFE8EF]',\n },\n },\n defaultVariants: {size: 'm', shape: 'rounded', variant: 'secondary'},\n },\n);\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-[#e5e6ee] 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 {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\": \"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}\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 \"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}\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}\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}\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}\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}\n","import type {i18n as I18nInstance} from 'i18next';\nimport de from '../locales/de/translation.json';\nimport en from '../locales/en/translation.json';\nimport es from '../locales/es/translation.json';\nimport fr from '../locales/fr/translation.json';\nimport it from '../locales/it/translation.json';\nimport pt from '../locales/pt/translation.json';\n\nexport const uiKitTranslations = {\n en,\n es,\n fr,\n de,\n it,\n pt,\n} as const;\n\nexport const uiKitI18nResources = {\n en: {translation: en},\n es: {translation: es},\n fr: {translation: fr},\n de: {translation: de},\n it: {translation: it},\n pt: {translation: pt},\n} as const;\n\nexport type UiKitLocale = keyof typeof uiKitTranslations;\n\nexport const UI_KIT_I18N_NAMESPACE = 'translation';\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 i18n.addResourceBundle(lng, namespace, bundle, 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 {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\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 allowContentOverflow?: boolean;\n};\n\nexport function LargeModal({\n open,\n onOpenChange,\n children,\n header,\n subHeader,\n screenReaderText,\n className,\n footer,\n container,\n withCloseButton = true,\n closeOnDocumentClick = true,\n closeOnEscape = true,\n allowContentOverflow = false,\n}: LargeModalProps) {\n const portalContainer = container ?? getCustomContainer();\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-[#e5e6ee] 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 {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(--button-link-text)] no-underline transition-all duration-75 ease-in-out',\n !disabled && 'hover:opacity-80 active:opacity-100',\n disabled && 'cursor-not-allowed text-[#ACACD5]',\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};\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 = true,\n closeOnEscape = true,\n scrollableOverlay,\n className,\n title,\n text,\n icon,\n iconSrc,\n iconAlt,\n iconProps = {width: 84},\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 rounded-md 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-[#f4f6f8]',\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=\"modal__icon mx-auto mt-4 select-none\">\n {icon ?? <img src={iconSrc} alt={iconAlt ?? ''} {...iconProps} />}\n </div>\n )}\n {title ? (\n <DialogTitle className={cn('modal__title', 'px-6 text-lg 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};\n\nconst labelSizeClassName: Record<NonNullable<MainLoaderProps['size']>, string> = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: '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',\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 className={cn(labelSizeClassName[size], 'font-medium text-chekin-gray-1')}>\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';\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 {Select, SelectItem} from '../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 <Select\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 <SelectItem key={size} value={size.toString()}>\n {size}\n </SelectItem>\n ))}\n </Select>\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, ReactNode, Ref, useId, useState} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectOption} from '../lib/selector-option';\nimport {\n SelectContent,\n SelectItem,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n type SelectSize,\n} from './components';\n\nexport type SelectProps<\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?: SelectSize;\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 SelectInner = <\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 }: SelectProps<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 <SelectRoot\n value={value}\n onValueChange={handleValueChange}\n onOpenChange={handleOpenChange}\n disabled={disabled}\n >\n <SelectTrigger id={id} ref={ref} size={size} className={triggerClassName}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {children ??\n options?.map(option => (\n <SelectItem\n key={String(option.value)}\n value={String(option.value)}\n size={size}\n disabled={option.isDisabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\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 SelectForward = forwardRef(SelectInner);\nSelectForward.displayName = 'Select';\n\nexport const Select = SelectForward as <\n V extends string | number = string,\n D = unknown,\n L extends ReactNode = string,\n>(\n props: SelectProps<D, V, L> & {\n ref?: Ref<HTMLButtonElement>;\n },\n) => ReturnType<typeof SelectInner>;\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 SelectRoot = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\nconst SelectPortal = SelectPrimitive.Portal;\n\ntype SelectSize = 'sm' | 'md';\n\nconst selectSizeClassNames: Record<SelectSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n};\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {\n size?: SelectSize;\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-[#e5e7eb] 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));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = 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));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = 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));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = 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-[#e5e7eb] 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 <SelectScrollUpButton />\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 <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = 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));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & {\n size?: SelectSize;\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-[#f9fafb] focus:text-[var(--chekin-color-brand-navy)]',\n 'data-[highlighted]:bg-[#f9fafb] 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));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = 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-[#f3f4f6]', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n SelectRoot,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\nexport type {SelectSize};\n","import * as SelectPrimitive from '@radix-ui/react-select';\nimport {CheckIcon} from 'lucide-react';\nimport {forwardRef, ReactNode, Ref, useId, useState} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectOption} from '../lib/selector-option';\nimport {SelectContent, SelectTrigger} from './components';\n\ntype MultiSelectProps<\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 MultiSelectInner = <\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 }: MultiSelectProps<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 <SelectTrigger id={id}>\n <span className=\"text-sm\">{displayText}</span>\n </SelectTrigger>\n <SelectContent>\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-[#f9fafb] hover:text-[var(--chekin-color-brand-navy)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n selected && 'bg-[#f9fafb]',\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 </SelectContent>\n </SelectPrimitive.Root>\n </div>\n );\n};\n\nexport const MultiSelect = forwardRef(MultiSelectInner) as <\n V extends string | number = string,\n D = unknown,\n L extends string | number | ReactNode = string,\n>(\n props: MultiSelectProps<D, V, L> & {ref?: Ref<HTMLDivElement>},\n) => ReturnType<typeof MultiSelectInner>;\nexport type {MultiSelectProps};\n","import {useVirtualizer} from '@tanstack/react-virtual';\nimport {ReactNode, useCallback, useEffect, useId, useRef, useState} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectOption} from '../lib/selector-option';\nimport {\n SelectContent,\n SelectItem,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n} from './components';\n\ntype InfinitySelectProps = {\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 InfinitySelect({\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}: InfinitySelectProps) {\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 <SelectRoot\n value={value}\n onValueChange={handleItemSelect}\n open={isOpen}\n onOpenChange={setIsOpen}\n >\n <SelectTrigger id={id}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\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 <SelectItem\n value={String(option.value)}\n disabled={option.isDisabled || option.readOnly}\n >\n {option.label}\n </SelectItem>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </SelectContent>\n </SelectRoot>\n </div>\n );\n}\nexport type {InfinitySelectProps};\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-[#e5e7eb] 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-[#e5e7eb] 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 {options, value, onChange, error, className = '', disabled = false, renderOption},\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',\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 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 {Circle} from 'lucide-react';\nimport {cn} from '../lib/cn';\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\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({className, ...props}, ref) => (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-[var(--chekin-color-brand-blue)] text-[var(--chekin-color-brand-blue)]',\n 'focus:outline-none focus-visible:shadow-[var(--chekin-shadow-focus)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n));\n\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n","import {useCallback, 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\nexport function useRadioOptions({options, defaultValue, onChange}: UseRadioOptionsProps) {\n const initialValue =\n (typeof defaultValue === 'string'\n ? options.find(option => option.value === defaultValue)\n : defaultValue) || '';\n const [selectedValue, setSelectedValue] = useState(initialValue);\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 {cn} from '../lib/cn';\nimport {RadioGroupItem} from '../radio-group';\nimport {Radio} from './Radio';\nimport type {RadioProps} from './types';\n\ntype RadioWithBorderData = {\n subLabel?: string;\n description?: string;\n};\n\nexport function RadioWithBorder({...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',\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 />\n <div className=\"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 </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-[#e5e6ee] 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-[#ff2467]',\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 && <div className=\"mt-2 text-left text-sm text-[#ff2467]\">{error}</div>}\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 '#ff2765';\n if (percentage <= 20) return '#ff673c';\n if (percentage <= 40) return '#ffa514';\n if (percentage <= 50) return '#ffc400';\n if (percentage <= 60) return '#cdc326';\n if (percentage <= 80) return '#78c366';\n return '#2cc29e';\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 type {ReactNode} from 'react';\nimport {Star} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\ntype Option = {\n label: string;\n value: number;\n};\n\nconst getStarColor = (optionValue: number) => (value: number) => {\n if (value >= optionValue) return '#facc15';\n return 'var(--chekin-color-gray-1)';\n};\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: Option[];\n};\n\nexport function RatingRadioGroup({\n value,\n onChange,\n label,\n name = 'rating',\n className,\n options,\n}: RatingRadioGroupProps) {\n return (\n <fieldset className={cn('relative [all:unset]', className)}>\n {label && <legend className=\"mb-2\">{label}</legend>}\n <div className=\"RatingRadioGroup__list flex gap-2\">\n {options.map(option => (\n <label key={option.value}>\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-[#385bf8]\"\n size={24}\n aria-label={option.label}\n color={getStarColor(option.value)(value || 0)}\n fill={getStarColor(option.value)(value || 0)}\n />\n </label>\n ))}\n </div>\n </fieldset>\n );\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 = '#ffb700',\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-[#9696b9] 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 {Input} from '../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 <Input\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 {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-[#059669]',\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 {CircleHelp} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {CircularLoader} from '../circular-loader';\nimport {cn} from '../lib/cn';\nimport {Tooltip} from '../tooltip';\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 <Tooltip side=\"right\" content={content} contentClassName=\"max-w-64\">\n <button\n type=\"button\"\n className={cn('inline-flex text-[var(--chekin-color-gray-1)]', className)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n aria-label={typeof content === 'string' ? content : 'More information'}\n >\n <CircleHelp className=\"h-4 w-4\" />\n </button>\n </Tooltip>\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-bold text-[var(--chekin-color-brand-navy)] 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(--chekin-color-brand-blue)] 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(--chekin-color-gray-1)]\">\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 {Input} from '../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 Input>,\n React.ComponentProps<typeof Input>\n>(({className, ...props}, ref) => (\n <Input\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 {forwardRef, Fragment, useEffect, useRef} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport ReactSignatureCanvas from 'react-signature-pad-wrapper';\nimport {Button} from '../button';\nimport {useCombinedRef} from '../hooks';\nimport {cn} from '../lib/cn';\nimport {SvgIcon} from '../svg-icon';\nimport SignFingerIcon from '../assets/icons/sign-finger.svg';\n\nconst CANVAS_PROPS = {\n width: '250px',\n height: '174px',\n};\n\nconst SIGNATURE_PROPS = {\n penColor: '#161643',\n minWidth: 1.5,\n maxWidth: 1.5,\n dotSize: 1,\n};\n\ntype SignatureCanvasProps = {\n onClear?: () => void;\n onEnable?: () => void;\n hasSignature?: boolean;\n onEnd?: () => void;\n className?: string;\n enabled?: boolean;\n};\n\nfunction breakIntoLines(text = '') {\n return text.split('\\n').map((line, index) => (\n <Fragment key={index}>\n {line}\n <br />\n </Fragment>\n ));\n}\n\nconst SignatureCanvas = forwardRef<ReactSignatureCanvas, SignatureCanvasProps>(\n ({onClear, hasSignature, onEnd, onEnable, className, enabled}, ref) => {\n const {t} = useTranslation();\n const internalRef = useRef<ReactSignatureCanvas | null>(null);\n const combinedRef = useCombinedRef(ref, internalRef);\n\n useEffect(() => {\n if (!onEnd) return;\n\n const signPad = internalRef.current?.instance;\n\n signPad?.addEventListener('endStroke', onEnd);\n\n return () => {\n signPad?.removeEventListener('endStroke', onEnd);\n };\n }, [onEnd]);\n\n return (\n <div className={cn('relative inline-flex flex-col', className)}>\n {!enabled && (\n <button\n type=\"button\"\n className={cn(\n 'absolute left-0 top-0 z-10 flex h-[174px] w-[250px] flex-col items-center',\n 'justify-between rounded border-0 bg-[var(--signature-canvas-placeholder-bg)] px-0 pb-11 pt-10',\n 'cursor-pointer select-none',\n )}\n onClick={onEnable}\n data-testid=\"signature-placeholder\"\n >\n <SvgIcon as={SignFingerIcon} size={41} className=\"w-[37px] opacity-[0.55]\" />\n <span\n className={cn(\n 'mx-auto max-w-[154px] break-words text-center text-sm font-medium uppercase',\n 'text-[var(--signature-canvas-placeholder-text)] opacity-[0.55]',\n )}\n >\n {breakIntoLines(t('signature_placeholder_text'))}\n </span>\n </button>\n )}\n <div\n className={cn(\n 'inline-flex h-[174px] w-[250px] cursor-pointer justify-center rounded border',\n 'border-[var(--signature-canvas-border)] shadow-[var(--signature-canvas-shadow)]',\n 'box-border max-[320px]:overflow-hidden',\n )}\n >\n <ReactSignatureCanvas\n ref={combinedRef}\n data-testid=\"canvas\"\n {...SIGNATURE_PROPS}\n canvasProps={CANVAS_PROPS}\n />\n </div>\n <div\n className={cn('text-right', {\n invisible: !enabled || !hasSignature,\n })}\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={onClear}\n >\n {t('clear')}\n </Button>\n </div>\n </div>\n );\n },\n);\n\nSignatureCanvas.displayName = 'SignatureCanvas';\n\nexport {SignatureCanvas};\nexport type {ReactSignatureCanvas as SignatureCanvasType};\n","import * as React from \"react\";\nconst SvgSignFinger = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={37.198} height={40.76} viewBox=\"0 0 37.198 40.76\" {...props}><defs><style>{\".a{fill:#385cf8;}\"}</style></defs><g transform=\"translate(-84.883 29)\"><g transform=\"translate(0.883 4)\"><path className=\"a\" d=\"M277.71,362.455a1.332,1.332,0,0,1-.878-.329,1.3,1.3,0,0,1-.38-1.387,3.537,3.537,0,0,0,.169-.893,5.514,5.514,0,0,1-3.179,2.525,3.567,3.567,0,0,1-3.507-1.314c-2.184-2.386-.695-5.062.393-7.017,1.283-2.3,1.246-2.67.553-3.119a2.672,2.672,0,0,0-2.116.117c-4.225,1.539-9.992,7.866-10.476,9.508a1.326,1.326,0,0,1-1.641.89,1.306,1.306,0,0,1-.9-1.623c.788-2.673,7.317-9.487,12.1-11.23a4.9,4.9,0,0,1,4.483.151,3.3,3.3,0,0,1,1.619,3.488,10.132,10.132,0,0,1-1.306,3.081c-1.5,2.7-1.374,3.317-.749,4,.554.605.873.536.977.514.8-.173,2.068-1.774,2.823-4.156a1.329,1.329,0,0,1,2.4-.282c.106.174,1.819,6.2.176,6.955A1.334,1.334,0,0,1,277.71,362.455Z\" transform=\"translate(-171.695 -381.124)\" /><g transform=\"translate(95.422 -22.82)\"><g transform=\"translate(0)\"><path className=\"a\" d=\"M67.007,14.641l-5.781-3.81a3.935,3.935,0,0,0-4.257,0l-.127.084V2.548a2.578,2.578,0,0,0-5.155,0V19.6a.626.626,0,0,1-.306.542.642.642,0,0,1-.627.028l-4.138-2.046a2.768,2.768,0,0,0-1.221-.285,2.718,2.718,0,0,0-2.73,2.7v.486a.634.634,0,0,0,.205.466l7.438,6.862a8.4,8.4,0,0,0,5.715,2.228H62a6.415,6.415,0,0,0,6.444-6.371V17.291A3.169,3.169,0,0,0,67.007,14.641Z\" transform=\"translate(-42.666)\" /></g></g></g></g></svg>;\nexport default SvgSignFinger;","import * as React from 'react';\nimport {SliderNext, SliderPrevious} from './SliderControls';\nimport {SliderRoot, type SliderRootProps} from './SliderRoot';\nimport {SliderSlide} from './SliderSlide';\nimport {SliderTrack} from './SliderTrack';\nimport {SliderViewport} from './SliderViewport';\n\nexport type SliderProps = SliderRootProps & {\n children: React.ReactNode;\n};\n\nexport function Slider({children, slideCount, ...props}: SliderProps) {\n return (\n <SliderRoot slideCount={slideCount ?? React.Children.count(children)} {...props}>\n <SliderViewport>\n <SliderTrack>\n {React.Children.map(children, slide => (\n <SliderSlide>{slide}</SliderSlide>\n ))}\n </SliderTrack>\n </SliderViewport>\n <SliderPrevious />\n <SliderNext />\n </SliderRoot>\n );\n}\n","import * as React from 'react';\nimport {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {useSliderContext} from './SliderContext';\n\ntype SliderControlProps = Omit<React.ComponentPropsWithoutRef<'button'>, 'children'> & {\n children?: React.ReactNode;\n};\n\nexport const SliderPrevious = React.forwardRef<HTMLButtonElement, SliderControlProps>(\n ({className, children, onClick, ...props}, ref) => {\n const {canGoPrevious, goToPrevious} = useSliderContext('SliderPrevious');\n\n if (!canGoPrevious) {\n return null;\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"slider-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(--slider-control-bg)]\n text-[var(--slider-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\nSliderPrevious.displayName = 'SliderPrevious';\n\nexport const SliderNext = React.forwardRef<HTMLButtonElement, SliderControlProps>(\n ({className, children, onClick, ...props}, ref) => {\n const {canGoNext, goToNext} = useSliderContext('SliderNext');\n\n if (!canGoNext) {\n return null;\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"slider-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(--slider-control-bg)]\n text-[var(--slider-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\nSliderNext.displayName = 'SliderNext';\n","import * as React from 'react';\n\ntype SliderContextValue = {\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 SliderContext = React.createContext<SliderContextValue | null>(null);\n\nexport function useSliderContext(componentName: string) {\n const context = React.useContext(SliderContext);\n\n if (!context) {\n throw new Error(`${componentName} must be used within SliderRoot`);\n }\n\n return context;\n}\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {SliderContext} from './SliderContext';\n\nexport type SliderRootProps = React.ComponentPropsWithoutRef<'div'> & {\n index?: number;\n defaultIndex?: number;\n slideCount?: number;\n loop?: boolean;\n onIndexChange?: (index: number) => void;\n};\n\nexport const SliderRoot = React.forwardRef<HTMLDivElement, SliderRootProps>(\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 <SliderContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"slider\"\n className={cn('relative h-full w-full', className)}\n {...props}\n >\n {children}\n </div>\n </SliderContext.Provider>\n );\n },\n);\n\nSliderRoot.displayName = 'SliderRoot';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {useSliderContext} from './SliderContext';\n\nexport const SliderSlide = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({className, ...props}, ref) => {\n const {registerSlide} = useSliderContext('SliderSlide');\n\n React.useEffect(() => registerSlide(), [registerSlide]);\n\n return (\n <div\n ref={ref}\n data-slot=\"slider-slide\"\n className={cn('flex h-full w-full shrink-0 items-center justify-center', className)}\n {...props}\n />\n );\n});\n\nSliderSlide.displayName = 'SliderSlide';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {useSliderContext} from './SliderContext';\n\nexport const SliderTrack = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({className, style, ...props}, ref) => {\n const {index} = useSliderContext('SliderTrack');\n\n return (\n <div\n ref={ref}\n data-slot=\"slider-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\nSliderTrack.displayName = 'SliderTrack';\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\n\nexport const SliderViewport = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({className, ...props}, ref) => (\n <div\n ref={ref}\n data-slot=\"slider-viewport\"\n className={cn('relative h-full w-full overflow-hidden', className)}\n {...props}\n />\n));\n\nSliderViewport.displayName = 'SliderViewport';\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(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-input-empty)] 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(--chekin-color-gray-3)]',\n underlined:\n 'tab-list mb-8 flex-wrap gap-x-6 gap-y-3 border-b border-[var(--chekin-color-gray-3)]',\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(--chekin-color-gray-1)] hover:bg-[var(--chekin-color-brand-blue)] hover:text-white data-[state=active]:bg-[var(--chekin-color-brand-blue)] data-[state=active]:font-bold data-[state=active]:text-white data-[state=active]:shadow-sm [&.active]:bg-[var(--chekin-color-brand-blue)] [&.active]:font-bold [&.active]:text-white [&.active]:shadow-sm',\n underlined:\n 'h-full relative top-px pb-[15px] text-base font-medium leading-5 text-[var(--chekin-color-gray-1)] border-b-2 border-transparent -mb-px data-[state=active]:text-[var(--chekin-color-brand-blue)] data-[state=active]:border-[var(--chekin-color-brand-blue)] hover:border-[var(--chekin-color-brand-blue)]/30 [&.active]:border-[var(--chekin-color-brand-blue)]',\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?: string;\n title?: string;\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} 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(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-input-empty)] 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-75 ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--chekin-color-brand-blue)] 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(--chekin-color-gray-3)] bg-[var(--chekin-color-surface-input-empty)] font-semibold text-[var(--chekin-color-gray-1)] hover:border-[var(--chekin-color-brand-blue)] data-[state=on]:border-[var(--chekin-color-brand-blue)] data-[state=on]:bg-[var(--chekin-color-white)] data-[state=on]:text-[var(--chekin-color-brand-blue)]',\n tab: 'border border-transparent bg-transparent font-medium text-[var(--chekin-color-gray-1)] hover:bg-[var(--chekin-color-brand-blue)] hover:text-[var(--chekin-color-white)] hover:opacity-35 data-[state=on]:cursor-default data-[state=on]:border-[var(--chekin-color-brand-blue)] data-[state=on]:bg-[var(--chekin-color-brand-blue)] data-[state=on]:font-semibold data-[state=on]:text-[var(--chekin-color-white)] 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(--chekin-color-surface-autocomplete)] data-[state=off]:hover:border-transparent data-[state=off]:hover:bg-[var(--chekin-color-surface-input-empty)]',\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\nconst convertStringToValue = <T extends string | number | boolean>(\n stringValue: string,\n option?: SelectorOption<T>,\n): T => {\n console.log(stringValue, option);\n if (option) {\n return option.value;\n }\n\n // If no option found, try to convert back to original type\n if (stringValue === 'true') return true as T;\n if (stringValue === 'false') return false as T;\n\n // Try to convert to number if it's a valid number\n const numValue = Number(stringValue);\n if (!isNaN(numValue) && stringValue !== '') {\n return numValue as T;\n }\n\n return stringValue as T;\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 convertStringToValue(item, option);\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 = convertStringToValue(singleValue, option);\n {\n console.log('typedValues', typedValue);\n }\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(--chekin-color-brand-navy)]\">\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 * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\nimport {EndIcon} from './EndIcon';\nimport {FieldError} from './FieldError';\nimport {SupportingText} from './SupportingText';\n\nconst textFieldRootClasses = [\n '[--text-field-height:2.75rem]',\n '[--text-field-radius:8px]',\n '[--text-field-padding-x:0.875rem]',\n '[--text-field-padding-y:0.625rem]',\n '[--text-field-bg-empty:#f4f6f8]',\n '[--text-field-bg-filled:#ffffff]',\n '[--text-field-border-empty:rgba(22,22,67,0.2)]',\n '[--text-field-border-filled:#161643]',\n '[--text-field-border-error:#ff2467]',\n '[--text-field-text:#161643]',\n '[--text-field-placeholder:#6b6b95]',\n '[--text-field-label:#161643]',\n '[--text-field-supporting:#9696b9]',\n '[--text-field-error:#ff2467]',\n '[--text-field-focus-ring:rgba(56,91,248,0.2)]',\n];\n\nconst inputVariants = cva(\n [\n 'flex w-full border text-base font-medium leading-5 outline-none transition-colors',\n 'h-[var(--text-field-height)] rounded-[var(--text-field-radius)]',\n 'px-[var(--text-field-padding-x)] py-[var(--text-field-padding-y)]',\n 'text-[var(--text-field-text)]',\n 'placeholder:font-medium placeholder:text-[var(--text-field-placeholder)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n variant: {\n standard: '',\n floating: 'peer',\n },\n error: {\n true: 'border-[var(--text-field-border-error)] bg-[var(--text-field-bg-filled)]',\n false: '',\n },\n readOnly: {\n true: 'cursor-default border-[var(--text-field-border-empty)] bg-[var(--text-field-bg-filled)]',\n false: '',\n },\n },\n compoundVariants: [\n {\n error: false,\n readOnly: false,\n className: [\n 'placeholder-shown:border-[var(--text-field-border-empty)] placeholder-shown:bg-[var(--text-field-bg-empty)]',\n '[&:not(:placeholder-shown)]:border-[var(--text-field-border-filled)] [&:not(:placeholder-shown)]:bg-[var(--text-field-bg-filled)]',\n 'focus:border-[var(--text-field-border-filled)] focus:bg-[var(--text-field-bg-filled)]',\n 'focus-visible:ring-2 focus-visible:ring-[var(--text-field-focus-ring)] focus-visible:ring-offset-0',\n ].join(' '),\n },\n ],\n defaultVariants: {\n variant: 'standard',\n error: false,\n readOnly: false,\n },\n },\n);\n\nconst floatingLabelClasses = [\n 'pointer-events-none absolute left-[var(--text-field-padding-x)] top-1/2 -translate-y-1/2',\n 'text-base font-medium text-[var(--text-field-placeholder)]',\n 'origin-top-left transition-all duration-200 ease-out',\n 'peer-[:not(:placeholder-shown)]:pointer-events-auto',\n 'peer-[:not(:placeholder-shown)]:left-[13px]',\n 'peer-[:not(:placeholder-shown)]:top-0',\n 'peer-[:not(:placeholder-shown)]:-translate-y-1/2',\n 'peer-[:not(:placeholder-shown)]:px-[3px]',\n 'peer-[:not(:placeholder-shown)]:text-sm',\n 'peer-[:not(:placeholder-shown)]:leading-4',\n 'peer-[:not(:placeholder-shown)]:bg-gradient-to-b',\n 'peer-[:not(:placeholder-shown)]:from-transparent',\n 'peer-[:not(:placeholder-shown)]:from-50%',\n 'peer-[:not(:placeholder-shown)]:to-[var(--text-field-bg-filled)]',\n 'peer-[:not(:placeholder-shown)]:to-50%',\n 'peer-focus:pointer-events-auto',\n 'peer-focus:left-[13px]',\n 'peer-focus:top-0',\n 'peer-focus:-translate-y-1/2',\n 'peer-focus:px-[3px]',\n 'peer-focus:text-sm',\n 'peer-focus:leading-4',\n 'peer-focus:bg-gradient-to-b',\n 'peer-focus:from-transparent',\n 'peer-focus:from-50%',\n 'peer-focus:to-[var(--text-field-bg-filled)]',\n 'peer-focus:to-50%',\n];\n\ntype TextFieldVariantProps = VariantProps<typeof inputVariants>;\n\nexport interface TextFieldProps\n extends\n Omit<React.ComponentProps<'input'>, 'readOnly'>,\n Pick<TextFieldVariantProps, 'variant'> {\n label?: string;\n error?: string;\n optional?: boolean;\n optionalLabel?: string;\n supportingText?: string;\n tooltip?: React.ReactNode;\n endIcon?: React.ReactNode;\n readOnly?: boolean;\n wrapperClassName?: string;\n}\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n className,\n wrapperClassName,\n label,\n error,\n optional,\n optionalLabel,\n supportingText,\n tooltip,\n endIcon,\n variant = 'standard',\n placeholder,\n type,\n readOnly,\n ...props\n },\n ref,\n ) => {\n const {t} = useTranslation();\n const hasError = Boolean(error);\n const autoId = React.useId();\n const inputId = props.id || autoId;\n const inputClasses = cn(\n inputVariants({variant, error: hasError, readOnly: Boolean(readOnly)}),\n endIcon && 'pr-12',\n className,\n );\n const effectivePlaceholder = variant === 'floating' ? ' ' : placeholder || '\\u00A0';\n const descriptionId = supportingText ? `${inputId}-desc` : undefined;\n const errorId = error ? `${inputId}-error` : undefined;\n const ariaDescribedBy = errorId || descriptionId || undefined;\n\n if (variant === 'floating') {\n return (\n <div\n className={cn(\n 'relative flex w-full flex-col',\n textFieldRootClasses,\n wrapperClassName,\n )}\n >\n <div className=\"relative\">\n <input\n id={inputId}\n ref={ref}\n type={type}\n readOnly={readOnly}\n placeholder={effectivePlaceholder}\n className={inputClasses}\n aria-invalid={hasError || undefined}\n aria-describedby={ariaDescribedBy}\n {...props}\n />\n {label && (\n <LabelPrimitive.Root\n htmlFor={inputId}\n className={cn(\n floatingLabelClasses,\n hasError && [\n 'peer-[:not(:placeholder-shown)]:text-[var(--text-field-error)]',\n 'peer-focus:text-[var(--text-field-error)]',\n ],\n )}\n >\n {label}\n </LabelPrimitive.Root>\n )}\n {endIcon && <EndIcon>{endIcon}</EndIcon>}\n </div>\n {supportingText && !hasError && (\n <SupportingText id={descriptionId}>{supportingText}</SupportingText>\n )}\n {hasError && <FieldError id={errorId}>{error}</FieldError>}\n </div>\n );\n }\n\n return (\n <div className={cn('flex w-full flex-col', textFieldRootClasses, wrapperClassName)}>\n {label && (\n <div className=\"mb-1 flex items-center gap-1\">\n <LabelPrimitive.Root\n htmlFor={inputId}\n className=\"text-base font-medium leading-4 text-[var(--text-field-label)]\"\n >\n {label}\n </LabelPrimitive.Root>\n {optional && (\n <span className=\"text-base leading-4\">\n <span className=\"text-[var(--chekin-color-brand-navy)]\">{'- '}</span>\n <span className=\"italic text-[var(--chekin-color-gray-2)]\">\n {optionalLabel || t('optional')}\n </span>\n </span>\n )}\n {tooltip}\n </div>\n )}\n <div className=\"relative\">\n <input\n id={inputId}\n ref={ref}\n type={type}\n readOnly={readOnly}\n placeholder={effectivePlaceholder}\n className={inputClasses}\n aria-invalid={hasError || undefined}\n aria-describedby={ariaDescribedBy}\n {...props}\n />\n {endIcon && <EndIcon>{endIcon}</EndIcon>}\n </div>\n {supportingText && !hasError && (\n <SupportingText id={descriptionId}>{supportingText}</SupportingText>\n )}\n {hasError && <FieldError id={errorId}>{error}</FieldError>}\n </div>\n );\n },\n);\n\nTextField.displayName = 'TextField';\n\nexport {inputVariants};\n","import type {ReactNode} from 'react';\n\nexport type EndIconProps = {\n children: ReactNode;\n};\n\nexport const EndIcon = ({children}: EndIconProps) => (\n <div className=\"pointer-events-none absolute right-3.5 top-1/2 -translate-y-1/2 [&>*]:pointer-events-auto\">\n {children}\n </div>\n);\n","import {type TextareaHTMLAttributes, forwardRef, useId} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type TextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & {\n label?: string;\n invalid?: boolean;\n maxLength?: number;\n textareaClassName?: string;\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\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-[#cecede] bg-[#f4f6f8] px-4 py-3 text-[#161643] outline-none [scrollbar-color:#777e91_transparent] [scrollbar-gutter:stable] placeholder:text-[#6b6b95] placeholder:opacity-100 focus:border-[#385bf8] focus:bg-white focus:transition-colors focus:duration-100 focus:ease-in-out [&:not(:placeholder-shown)]:bg-white',\n invalid && 'border-[#ff2467] focus:border-[#ff2467]',\n disabled &&\n 'cursor-not-allowed resize-none border-[#9696b9] bg-[#f4f6f8] text-[#9696b9] placeholder:text-[#9696b9]',\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-[#6b6b95] 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-[#385bf8] 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 && 'text-[#ff2467] peer-focus:text-[#ff2467]',\n disabled && 'text-[#9696b9]',\n )}\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\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-[#9696b9] [&>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-color-gray-2)] bg-[var(--chekin-color-surface-pressed)] py-1.5 pl-3 pr-1.5\"\n >\n <span className=\"text-nowrap text-sm font-medium leading-5 text-[var(--chekin-color-brand-navy)]\">\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-color-gray-1)] 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 {Slider} from '../slider';\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 <Slider>\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 </Slider>\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 {forwardRef, useCallback, useEffect, useMemo, useState} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {isMobile, isTablet} from 'react-device-detect';\nimport ReactWebcam from 'react-webcam';\nimport {useIsMounted} from '../hooks';\nimport {cn} from '../lib/cn';\nimport {isDOMException} from './utils';\nimport type {WebcamProps, WebcamRefTypes} from './types';\n\nconst SCREENSHOT_FORMAT = 'image/jpeg';\nconst MEDIA_CONSTRAINTS = {\n audio: false,\n video: {\n width: {ideal: 4096},\n height: {ideal: 2160},\n },\n};\n\nconst isMobileOrTablet = () => isMobile || isTablet;\n\nfunction getMobileOrDesktopVideoConstraints() {\n if (isMobileOrTablet()) {\n return {\n width: {min: 576, ideal: 1080, max: 2160},\n height: {min: 1024, ideal: 1920, max: 4096},\n facingMode: {\n exact: 'environment',\n },\n };\n }\n\n return {\n facingMode: 'user',\n };\n}\n\nconst Webcam = forwardRef<WebcamRefTypes, WebcamProps>(\n (\n {\n onUserMedia,\n onUserMediaError,\n onException,\n audio = false,\n imageSmoothing = false,\n screenshotQuality = 1,\n videoConstraints,\n className,\n mirrored,\n },\n ref,\n ) => {\n const {t} = useTranslation();\n const isMounted = useIsMounted();\n const [minScreenshotHeight, setMinScreenshotHeight] = useState<undefined | number>(\n undefined,\n );\n const [minScreenshotWidth, setMinScreenshotWidth] = useState<undefined | number>(\n undefined,\n );\n const [isCameraPermissionsDenied, setIsCameraPermissionsDenied] = useState(false);\n const constraints = videoConstraints || getMobileOrDesktopVideoConstraints();\n\n const isDisplayingMirrored = useMemo(() => {\n if (mirrored !== undefined) {\n return mirrored;\n }\n\n if (isCameraPermissionsDenied) {\n return false;\n }\n\n const facingMode: unknown =\n typeof constraints === 'object' && constraints !== null\n ? (constraints as {facingMode?: unknown}).facingMode\n : undefined;\n\n if (typeof facingMode === 'string') {\n return facingMode === 'user';\n }\n\n if (\n typeof facingMode === 'object' &&\n facingMode !== null &&\n ('exact' in (facingMode as Record<string, unknown>) ||\n 'ideal' in (facingMode as Record<string, unknown>))\n ) {\n const {exact, ideal} = facingMode as {exact?: string; ideal?: string};\n return (exact ?? ideal) === 'user';\n }\n\n return !isMobileOrTablet();\n }, [mirrored, isCameraPermissionsDenied, constraints]);\n\n useEffect(() => {\n if (!isMobile) {\n try {\n window.navigator?.mediaDevices\n ?.getUserMedia(MEDIA_CONSTRAINTS)\n ?.then(stream => {\n const track = stream.getVideoTracks()[0];\n const capabilities = track.getCapabilities();\n\n if (capabilities && isMounted.current) {\n setMinScreenshotHeight(capabilities?.height?.max);\n setMinScreenshotWidth(capabilities?.width?.max);\n }\n\n track.stop();\n });\n } catch (err) {\n onException?.(err instanceof Error ? err : String(err));\n }\n }\n }, [constraints, isMounted, onException]);\n\n const handleUserMediaError = useCallback(\n (error: string | DOMException) => {\n if (\n isDOMException(error) &&\n ['PermissionDeniedError', 'NotAllowedError'].includes(error.name)\n ) {\n setIsCameraPermissionsDenied(true);\n } else {\n onException?.(error);\n }\n\n onUserMediaError?.();\n },\n [onUserMediaError, onException],\n );\n\n return (\n <>\n <div\n className={cn(\n 'relative z-[1] mx-auto flex h-[191px] w-[283px] justify-center overflow-hidden rounded-md text-center',\n isDisplayingMirrored && '[&_video]:scale-x-[-1]',\n className,\n )}\n >\n <ReactWebcam\n ref={ref}\n className=\"z-[1] h-[260px] flex-1 self-center bg-[var(--webcam-bg)] max-md:min-h-[200%]\"\n onUserMedia={onUserMedia}\n onUserMediaError={handleUserMediaError}\n audio={audio}\n imageSmoothing={imageSmoothing}\n mirrored={mirrored}\n screenshotQuality={screenshotQuality}\n videoConstraints={constraints}\n screenshotFormat={SCREENSHOT_FORMAT}\n minScreenshotHeight={minScreenshotHeight}\n minScreenshotWidth={minScreenshotWidth}\n />\n </div>\n <div className=\"mx-auto box-border w-[306px] p-4 text-center text-base text-[var(--webcam-permission-text)]\">\n {t('camera_permissions_denied')}\n </div>\n </>\n );\n },\n);\n\nWebcam.displayName = 'Webcam';\n\nexport {Webcam};\n","function isDOMException(error: string | DOMException): error is DOMException {\n return error instanceof DOMException && Boolean(error?.name);\n}\n\nexport {isDOMException};\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 * as React from 'react';\nimport {Calendar} from 'lucide-react';\nimport {DatePickerContent} 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 {FieldTrigger} from '../field-trigger';\n\ntype DatePickerValue = Date | number | null | undefined | '';\n\ntype DatePickerProps = {\n variant?: 'default' | 'airbnb';\n label: string;\n topLabel?: string;\n value?: DatePickerValue;\n defaultValue?: DatePickerValue;\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 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 DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\n (\n {\n variant = 'default',\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 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(() => minDate ?? DEFAULT_MIN_DATE, [minDate]);\n const resolvedMaxDate = React.useMemo(() => maxDate ?? new Date(), [maxDate]);\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 <FieldTrigger\n id={triggerId}\n ref={combinedRef}\n variant={variant}\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 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 className=\"h-5 w-5 text-[#1F1F1B]\" strokeWidth={2} />\n }\n />\n <DatePickerContent\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);\nDatePicker.displayName = 'DatePicker';\n\nexport {DatePicker};\nexport type {DatePickerProps, DatePickerValue};\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 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(\n 'fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n className,\n )}\n {...props}\n />\n));\nDrawerOverlay.displayName = DialogPrimitive.Overlay.displayName;\nconst DrawerOverlayClasses =\n 'fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0';\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 }\n>(\n (\n {\n className,\n children,\n container,\n onClose,\n showHandle = true,\n closeOnOverlayClick = true,\n lockScroll = true,\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 overlayOpacity = Math.max(\n DRAWER_MIN_OVERLAY_OPACITY,\n 1 - dragOffsetY / (DRAWER_CLOSE_THRESHOLD * 2),\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 setDragOffsetY(0);\n onClose?.();\n return;\n }\n\n setDragOffsetY(0);\n },\n [onClose],\n );\n\n return (\n <DrawerPortal container={finalContainer}>\n {lockScroll ? (\n <DrawerOverlay\n style={{opacity: overlayOpacity}}\n onClick={closeOnOverlayClick ? onClose : undefined}\n />\n ) : (\n <div\n className={cn(DrawerOverlayClasses)}\n style={{opacity: overlayOpacity}}\n onClick={closeOnOverlayClick ? onClose : undefined}\n />\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 className=\"fixed inset-x-0 bottom-0 top-auto z-50 outline-none\">\n <Draggable\n axis=\"y\"\n bounds={{top: 0}}\n handle=\"[data-drawer-handle]\"\n nodeRef={nodeRef}\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 max-h-[calc(100vh-1rem)] w-full flex-col rounded-t-[32px] shadow-lg',\n className,\n )}\n >\n {showHandle && (\n <div\n data-drawer-handle\n className=\"mx-auto flex h-8 w-24 cursor-grab touch-none items-center justify-center active:cursor-grabbing\"\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","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: Date | number | null | undefined | '') {\n if (value === '' || value === null || value === undefined) {\n return null;\n }\n\n const date = value instanceof Date ? value : new Date(value);\n\n return isValidDate(date) ? date : 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 DatePickerWheelColumnProps = {\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 DatePickerWheelColumn({\n id,\n label,\n items,\n activeIndex,\n scrollTop,\n listRef,\n onScroll,\n onKeyDown,\n onOptionSelect,\n column,\n}: DatePickerWheelColumnProps) {\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 {DatePickerWheelColumn};\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 {DatePickerWheelColumn} from './DatePickerWheelColumn';\nimport {DatePickerColumn} from './useDatePickerWheel';\n\ntype DatePickerContentProps = {\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 DatePickerBody({\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<DatePickerContentProps, '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 <DatePickerWheelColumn\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 <DatePickerWheelColumn\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 <DatePickerWheelColumn\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 DatePickerContent({\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}: DatePickerContentProps) {\n const body = (\n <DatePickerBody\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 {DatePickerContent};\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 * 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';\n\ntype FieldTriggerProps = {\n as?: 'button' | 'div';\n variant?: 'airbnb' | 'default';\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 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 FieldTrigger = React.forwardRef<\n HTMLButtonElement | HTMLDivElement,\n FieldTriggerProps\n>(\n (\n {\n as = 'button',\n variant = 'airbnb',\n id,\n label,\n topLabel,\n labelId,\n valueId,\n helperTextId,\n errorId,\n labelText,\n valueText,\n placeholder,\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 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=\"shrink-0 text-[12px] relative top-[1px] font-normal leading-4 text-current opacity-70\">\n ({optionalLabel})\n </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 isAirbnbVariant = variant === 'airbnb';\n const hasInvalidState = Boolean(error);\n const errorMessage = typeof error === 'string' ? error : 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-white text-left transition-colors focus-visible:outline-none',\n isAirbnbVariant\n ? 'rounded-[12px] border-[#8c8c8c] pl-4 pr-4 focus-visible:ring-2 focus-visible:ring-[#222222] focus-visible:ring-offset-2'\n : 'rounded-[10px] px-3.5 focus-visible:border-[var(--chekin-color-brand-blue)]',\n isAirbnbVariant ? (isRaised ? 'min-h-[60px]' : 'h-[60px]') : 'min-h-[48px]',\n hasInvalidState\n ? isAirbnbVariant\n ? 'border-[var(--error-message-color)] bg-[#FFF5F3]'\n : 'border-[var(--error-message-color)] bg-white'\n : isAirbnbVariant\n ? 'border-[#8c8c8c]'\n : 'border-[#A8A8A4] bg-white',\n disabled\n ? 'cursor-not-allowed opacity-50'\n : loading\n ? 'cursor-progress'\n : isAirbnbVariant\n ? 'cursor-pointer'\n : 'cursor-text',\n className,\n );\n const sharedContent = (\n <>\n <span\n className={cn(\n 'relative min-w-0 flex-1 pr-2',\n isAirbnbVariant ? (isRaised ? 'h-[42px]' : 'h-[28px]') : 'h-[48px]',\n contentClassName,\n )}\n >\n <span\n id={labelId}\n className={cn(\n 'absolute left-0 origin-left truncate transition-all duration-200 ease-out',\n hasLabelMeta ? '' : 'pointer-events-none',\n isAirbnbVariant\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 : isRaised\n ? '-top-2 translate-y-0 bg-white px-1 text-[12px] font-medium leading-4'\n : 'top-1/2 -translate-y-1/2 text-[16px] leading-6',\n hasInvalidState\n ? 'text-[var(--error-message-color)]'\n : isAirbnbVariant\n ? 'text-[#6c6c6c]'\n : 'text-[#7A8399]',\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 isAirbnbVariant\n ? 'bottom-0 translate-y-0 text-[16px] leading-6 opacity-100'\n : 'bottom-[11px] text-[16px] leading-6',\n hasInvalidState ? 'text-[var(--error-message-color)]' : 'text-[#222222]',\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={cn(\n 'pointer-events-none absolute top-1/2 -translate-y-1/2',\n isAirbnbVariant ? 'right-5' : 'right-4',\n )}\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-[#222222]\">\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={describedBy}\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={describedBy}\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 {errorMessage && !hideErrorMessage && (\n <FieldErrorMessage id={errorId} message={errorMessage} />\n )}\n </div>\n );\n },\n);\n\nFieldTrigger.displayName = 'FieldTrigger';\n\nexport {FieldTrigger};\nexport type {FieldTriggerProps};\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 type {ReactNode} from 'react';\nimport {Dialog, DialogContent, DialogDescription, DialogTitle} from '../dialog';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} 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};\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 = true,\n closeOnEscape = true,\n}: Readonly<ResponsiveSheetProps>) {\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 <div\n aria-hidden=\"true\"\n className={cn(\n 'text-center mb-3 text-[26px] font-semibold leading-7',\n titleClassName,\n )}\n >\n {title}\n </div>\n ) : null}\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 lockScroll={false}\n onEscapeKeyDown={handleEscapeKeyDown}\n className={cn(className, drawerClassName)}\n >\n {title ? <DrawerTitle className=\"sr-only\">{title}</DrawerTitle> : null}\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 className={cn('max-w-[560px] border-0 p-0 shadow-xl', className, dialogClassName)}\n lockScroll={false}\n >\n {title ? <DialogTitle className=\"sr-only\">{title}</DialogTitle> : null}\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 {FieldTrigger} from '../../field-trigger';\nimport {cn} from '../../lib/cn';\n\ntype AirbnbInputProps = React.InputHTMLAttributes<HTMLInputElement> & {\n variant?: 'airbnb' | 'default';\n label?: string;\n topLabel?: string;\n helperText?: string;\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 variant = 'default',\n label,\n topLabel,\n helperText,\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 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 [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 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 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 return (\n <div className={cn('w-full max-w-[var(--max-field-width)]', wrapperClassName)}>\n <FieldTrigger\n as=\"div\"\n variant={variant}\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 disabled={disabled}\n error={triggerError}\n loading={loading}\n optional={optional}\n tooltip={tooltip}\n describedBy={error && renderErrorMessage ? errorId : undefined}\n className={cn(\n variant === 'airbnb'\n ? 'px-4 focus-within:ring-2 focus-within:ring-[#1F1F1B] focus-within:ring-offset-2'\n : 'px-3.5 focus-within:border-[#315EFB]',\n disabled ? 'cursor-not-allowed' : 'cursor-text',\n fieldClassName,\n )}\n contentClassName={cn(\n variant === 'airbnb' ? 'h-[42px]' : 'h-[48px]',\n contentClassName,\n )}\n trailingAdornment={trailingAdornment}\n forceFloatingLabel={shouldShowLabel}\n forceLabelText={hasLabelMeta}\n hideErrorMessage={!renderErrorMessage}\n >\n <input\n {...props}\n id={inputId}\n ref={setRefs}\n type={type}\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-[#1F1F1B] outline-none placeholder:text-[#7A8399]',\n variant === 'airbnb' ? 'bottom-0' : 'bottom-[12px]',\n hasInvalidState\n ? 'text-[var(--status-danger)] placeholder:text-[var(--status-danger)]'\n : '',\n disabled ? 'cursor-not-allowed' : loading ? 'cursor-progress' : '',\n inputClassName,\n className,\n )}\n />\n </FieldTrigger>\n </div>\n );\n },\n);\n\nAirbnbInput.displayName = 'Input';\n\nexport {AirbnbInput};\nexport type {AirbnbInputProps};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport {AirbnbSelect} from '../select';\nimport {AirbnbInput} from '../input';\nimport {FieldErrorMessage} from '../../field-error-message';\n\ntype PhoneFieldOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype PhoneFieldValue = {\n code: string;\n number: string;\n};\n\ntype PhoneFieldProps = {\n variant?: 'default' | 'airbnb';\n label: string;\n topLabel?: string;\n value?: PhoneFieldValue | null;\n onChange: (value: PhoneFieldValue) => void;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n options: PhoneFieldOption[];\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 className?: string;\n name?: string;\n codeName?: string;\n numberName?: string;\n mobileTitle?: string;\n codePlaceholder?: string;\n};\n\nfunction formatPhoneCodeOptionLabel(option: PhoneFieldOption) {\n const label = String(option.label);\n const value = String(option.value);\n\n return label.includes(value) ? label : `${label} (${value})`;\n}\n\nconst PhoneField = React.forwardRef<HTMLButtonElement, PhoneFieldProps>(\n (\n {\n variant = 'default',\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 className,\n name,\n codeName,\n numberName,\n mobileTitle,\n codePlaceholder = '+00',\n },\n ref,\n ) => {\n const inputId = React.useId();\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 === value?.code) ?? null,\n [codeOptions, value?.code],\n );\n\n const combinedValue =\n value?.code || value?.number ? `${value?.code ?? ''}${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={value?.code ?? ''}\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-[#1F1F1B]\"\n >\n {topLabel}\n </label>\n )}\n <div className=\"flex items-stretch\">\n <AirbnbSelect\n ref={ref}\n variant={variant}\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 variant: selectVariant,\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 w-full items-center justify-center gap-2 border border-r-0 text-[16px] font-medium leading-6 transition-colors focus-visible:outline-none',\n selectVariant === 'airbnb'\n ? 'h-full min-h-[60px] rounded-l-[16px] rounded-r-none px-4 focus-visible:ring-2 focus-visible:ring-[#1F1F1B] focus-visible:ring-offset-2'\n : 'min-h-[48px] rounded-l-[10px] rounded-r-none px-3.5 focus-visible:border-[#315EFB]',\n hasInvalidState\n ? 'border-[var(--status-danger)] bg-[#F2F2F2] text-[var(--status-danger)]'\n : selectVariant === 'airbnb'\n ? 'border-[#8C8C8C] bg-[#F4F4F2] text-[#1F1F1B]'\n : 'border-[#A8A8A4] bg-white text-[#1F1F1B]',\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 variant={variant}\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={cn(\n variant === 'airbnb'\n ? 'min-h-[60px] rounded-l-none rounded-r-[16px] border-l-0'\n : 'rounded-l-none rounded-r-[10px] border-l-0',\n )}\n contentClassName={cn(variant === 'airbnb' ? 'h-[40px] py-2' : 'h-[48px]')}\n inputClassName=\"text-[16px] leading-7\"\n onChange={event =>\n onChange({\n code: value?.code ?? '',\n number: event.target.value,\n })\n }\n onBlur={onBlur}\n />\n </div>\n {error && <FieldErrorMessage message={error} />}\n </div>\n );\n },\n);\nPhoneField.displayName = 'PhoneField';\n\nexport {PhoneField};\nexport type {PhoneFieldOption, PhoneFieldProps, PhoneFieldValue};\n","import * as React from 'react';\nimport {SelectDesktopContent} from './SelectDesktopContent';\nimport {SelectMobileContent} from './SelectMobileContent';\nimport {SelectTrigger} from './SelectTrigger';\nimport {getOptionIndex} from './select.utils';\nimport {AirbnbSelectProps, 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 = undefined,\n V extends SelectValue = string,\n L extends string | number | ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n variant = 'default',\n label,\n topLabel,\n placeholder,\n getValueLabel,\n renderTrigger,\n disabled,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n doneLabel = 'Done',\n mobileTitle,\n name,\n noOptionsMessage,\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 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,\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,\n value,\n disabled: isBlocked,\n onChange,\n });\n const combinedRef = useCombinedRef(ref, desktopTriggerRef);\n const activeMobileIndex = getOptionIndex(options, 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 = options.find(option => option.value === value.value);\n\n if (validOption) {\n onChange(validOption);\n }\n },\n [onChange, options, 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 variant,\n label,\n topLabel,\n helperText,\n value,\n valueLabel,\n disabled: isBlocked,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n listboxId,\n describedBy: triggerDescribedBy,\n triggerRef: combinedRef,\n onClick: handleTriggerClick,\n onKeyDown: handleRootTriggerKeyDown,\n onBlur,\n })\n ) : (\n <SelectTrigger\n id={triggerId}\n ref={combinedRef}\n open={isOpen}\n variant={variant}\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 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 <SelectMobileContent\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={options}\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 <SelectDesktopContent\n isOpen={isOpen}\n listboxId={listboxId}\n labelId={labelId}\n errorId={describedErrorId}\n options={options}\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 = undefined,\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 {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\n\ntype SelectDesktopMenuProps<\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 SelectDesktopMenu<\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}: SelectDesktopMenuProps<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-[#6C6C6C]\">{emptyMessage}</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-[#3F3F46] transition-colors',\n isHighlighted && 'bg-[#F7F6F4]',\n isSelected && 'bg-[#F7F6F4] font-medium text-[#171717]',\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 {SelectDesktopMenu};\n","import * as React from 'react';\nimport {SelectDesktopMenu} from './SelectDesktopMenu';\nimport {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\nimport type {ReactNode} from 'react';\n\ntype SelectDesktopContentProps<\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 SelectDesktopContent<\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}: SelectDesktopContentProps<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-[#DEDAD2] bg-white shadow-[0_14px_30px_rgba(18,18,18,0.08)]',\n dropdownClassName,\n )}\n >\n <SelectDesktopMenu\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 {SelectDesktopContent};\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 * as React from 'react';\nimport {MOBILE_OPTION_HEIGHT, MOBILE_WHEEL_BUFFER_OPTIONS} from './constants';\nimport {SelectValue} from './types';\nimport {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 {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport {cn} from '../../lib/cn';\n\ntype SelectMobileWheelProps<\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 SelectMobileWheel<\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}: SelectMobileWheelProps<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-[#6C6C6C]\">\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 {SelectMobileWheel};\n","import * as React from 'react';\nimport {Button} from '../../button';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../../drawer';\nimport {SelectMobileWheel} from './SelectMobileWheel';\nimport {SelectValue} from './types';\nimport {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype SelectMobileContentProps<\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 SelectMobileContent<\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}: SelectMobileContentProps<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 <SelectMobileWheel\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 {SelectMobileContent};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {FieldTrigger} from '../../field-trigger';\n\ntype SelectTriggerProps = {\n id: string;\n open: boolean;\n variant: 'default' | 'airbnb';\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 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 SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n id,\n open,\n variant,\n label,\n topLabel,\n helperText,\n valueLabel,\n disabled,\n loading,\n optional,\n tooltip,\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 <FieldTrigger\n id={id}\n ref={ref}\n variant={variant}\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 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 className={\n open\n ? 'h-6 w-6 rotate-180 text-[#1F1F1B] transition-transform'\n : 'h-6 w-6 text-[#1F1F1B] transition-transform'\n }\n />\n }\n />\n );\n },\n);\n\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport {SelectTrigger};\n","import * as React from 'react';\nimport {\n getFirstEnabledOptionIndex,\n getLastEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n} from './select.utils';\nimport {SelectValue} from './types';\nimport {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 {MOBILE_OPTION_HEIGHT, MOBILE_SCROLL_SETTLE_DELAY} from './constants';\nimport {SelectValue} from './types';\nimport {\n getFirstEnabledOptionIndex,\n getLastEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n getOptionScrollTop,\n} from './select.utils';\nimport {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\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 {ComponentProps} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Search, X} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {Button} from '../../button';\n\ntype AirbnbSearchInputProps = ComponentProps<'input'> & {\n onReset?: () => void;\n wrapperClassName?: string;\n};\n\nexport const AirbnbSearchInput = React.forwardRef<\n HTMLInputElement,\n AirbnbSearchInputProps\n>(({onReset, placeholder, wrapperClassName, ...props}, ref) => {\n const {t} = useTranslation();\n\n const placeholderText = placeholder || t('search_property') + '...';\n\n return (\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-[#9696B9]\" />\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 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-[#9696B9] 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-[#9696B9]\"\n >\n <X className=\"h-5 w-5\" />\n </Button>\n )}\n </div>\n );\n});\n\nAirbnbSearchInput.displayName = 'SearchInput';\n","import * as React from 'react';\nimport {Eye, Minus, Plus, X} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {usePrevious} from '../../hooks/use-previous';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {Fieldset} from '../_fieldset';\n\ntype DashboardInputProps = 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 width?: number | string;\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 checkIfEmpty = ({\n empty,\n defaultValue,\n value,\n}: {\n empty?: boolean;\n value?: DashboardInputProps['value'];\n defaultValue?: DashboardInputProps['defaultValue'];\n}) => {\n if (typeof empty !== 'undefined') return empty;\n if (value === 0 || defaultValue === 0) return false;\n return !value && !defaultValue;\n};\n\nconst DashboardInput = React.forwardRef<HTMLInputElement, DashboardInputProps>(\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 width,\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 isEmpty = checkIfEmpty({empty, value, defaultValue});\n const [inputType, setInputType] = React.useState(type);\n const [isPasswordRevealed, setIsPasswordRevealed] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\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 const wrapperWidth = toCssSize(width);\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 || !onChange) return;\n onChange(event);\n };\n\n const handleLabelClick = () => {\n if (readOnly || disabled) return;\n setIsFocused(true);\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (readOnly || disabled) return;\n onFocus?.(event);\n setIsFocused(true);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n setIsFocused(false);\n };\n\n const showRightPaddingForReset = Boolean(onReset);\n const showRightPaddingForReveal = isPasswordReveal;\n\n return (\n <div\n className={cn(\n 'relative block min-h-[68px]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress opacity-50',\n wrapperClassName,\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {topLabel && (\n <label\n htmlFor={inputId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n <div\n className={cn(\n 'relative block w-full',\n readOnly && 'bg-[var(--chekin-color-surface-input-empty)]',\n fieldClassName,\n )}\n >\n <div className={cn('relative w-full cursor-text', contentClassName)}>\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 labelClassName={cn({\n 'pl-[28px]': !!leftIcon,\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 <input\n {...props}\n ref={ref}\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 '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:font-medium placeholder:text-[var(--chekin-color-gray-1)] placeholder:opacity-100',\n isEmpty && !isFocused\n ? 'bg-[var(--chekin-color-surface-input-empty)]'\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 || readOnly) && 'cursor-not-allowed',\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=\"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=\"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=\"absolute right-0 top-0 flex h-full w-10 items-center justify-center border-0 bg-transparent p-0 text-[#9696b9] hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Reset\"\n >\n <X size={14} />\n </button>\n )}\n {isPasswordReveal && (\n <button\n type=\"button\"\n onClick={togglePasswordReveal}\n className=\"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 ? 'Hide password' : 'Show password'}\n >\n <Eye\n size={20}\n className={cn(\n isPasswordRevealed\n ? 'text-[#fc98dd]'\n : 'text-[var(--chekin-color-gray-2)]',\n )}\n />\n </button>\n )}\n </div>\n {type === 'number' && showNumberButtons && (\n <div className=\"absolute right-[18px] top-[13px] inline-flex items-center text-right\">\n <button\n type=\"button\"\n onClick={onDecrement}\n className=\"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=\"Decrement\"\n >\n <Minus size={16} strokeWidth={3} aria-hidden />\n </button>\n <button\n type=\"button\"\n onClick={onIncrement}\n className=\"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=\"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=\"mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]\"\n >\n {typeof optional === 'string' ? optional : '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 && renderErrorMessage && (\n <FieldErrorMessage\n id={errorId}\n message={errorMessage}\n data-testid={name ? `${name}-error` : undefined}\n className=\"mt-[1px] text-[14px]\"\n />\n )}\n {footer}\n </div>\n );\n },\n);\n\nDashboardInput.displayName = 'DashboardInput';\n\nexport {DashboardInput};\nexport type {DashboardInputProps};\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 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 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 cursor-text items-center pl-[3px] pr-5 transition-all duration-100 ease-in',\n 'left-[13px] text-[var(--chekin-color-gray-1)]',\n isEmpty && !isFocused ? 'top-[14px]' : 'top-[-10px] !pl-1 !pr-[22px]',\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 font-medium transition-all duration-100 ease-in',\n raised ? 'text-[14px]' : 'text-[16px]',\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] transition-colors duration-75',\n 'border-[var(--chekin-color-gray-3)]',\n isActivated && 'border-[var(--chekin-color-gray-2)]',\n isFocused && 'border-[var(--chekin-color-brand-blue)]',\n invalid && 'border-[var(--error-message-color)]',\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 className=\"visible inline-block pr-[6px] text-[14px] font-medium opacity-0\">\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 {ChevronDown} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {ThreeDotsLoader} from '../../three-dots-loader';\nimport {Fieldset} from '../_fieldset';\nimport {\n SelectMenu,\n defaultFilterOption,\n getFirstEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n useSelectIds,\n type DashboardSelectFilterOption,\n type SelectValue,\n} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype DashboardSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = {\n options?: SelectOption<T, V, L>[];\n value?: SelectOption<T, V, L> | null;\n onChange: (option: SelectOption<T, V, L>) => void;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n label: string;\n topLabel?: string;\n placeholder?: string;\n getValueLabel?: (option: SelectOption<T, V, L>) => string;\n disabled?: boolean;\n loading?: 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 name?: string;\n width?: number | string;\n noOptionsMessage?: () => string | undefined;\n searchable?: boolean;\n searchPlaceholder?: string;\n filterOption?: DashboardSelectFilterOption<T, V, L>;\n helperText?: string;\n};\n\nfunction DashboardSelectInternal<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n label,\n topLabel,\n placeholder,\n getValueLabel,\n disabled,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n name,\n width,\n noOptionsMessage,\n searchable = true,\n searchPlaceholder,\n filterOption = defaultFilterOption,\n helperText,\n }: DashboardSelectProps<T, V, L>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n const optionRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n\n const hasValue = Boolean(value);\n const isEmpty = !hasValue;\n const isBlocked = Boolean(disabled) || Boolean(loading);\n const triggerError = (error ?? invalid) as string | boolean | undefined;\n const hasInvalidState = Boolean(triggerError);\n const errorMessage = typeof error === 'string' ? error : undefined;\n const wrapperWidth = toCssSize(width);\n const valueLabel = value ? (getValueLabel?.(value) ?? String(value.label)) : undefined;\n\n const {triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId} =\n useSelectIds({name, hasValue, error, hideErrorMessage});\n\n const filteredOptions = React.useMemo(() => {\n if (!searchable || !searchValue) return options;\n return options.filter(option => filterOption(option, searchValue));\n }, [options, searchable, searchValue, filterOption]);\n\n React.useImperativeHandle(ref, () => triggerRef.current as HTMLButtonElement, []);\n\n useOutsideClick({\n elementRef: containerRef,\n onOutsideClick: () => setIsOpen(false),\n isDisabled: !isOpen,\n });\n\n React.useEffect(() => {\n if (isBlocked) setIsOpen(false);\n }, [isBlocked]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchValue('');\n setHighlightedIndex(-1);\n return;\n }\n const selectedIndex = getOptionIndex(filteredOptions, value);\n setHighlightedIndex(\n selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(filteredOptions),\n );\n if (searchable) {\n const frame = window.requestAnimationFrame(() => searchInputRef.current?.focus());\n return () => window.cancelAnimationFrame(frame);\n }\n }, [isOpen, filteredOptions, searchable, value]);\n\n React.useEffect(() => {\n if (!isOpen || highlightedIndex < 0) return;\n optionRefs.current[highlightedIndex]?.scrollIntoView({block: 'nearest'});\n }, [highlightedIndex, isOpen]);\n\n React.useEffect(\n function setCorrectOptionIfThereIsOnlyValue() {\n if (value?.value === undefined || value.value === null || value.label !== '')\n return;\n const validOption = options.find(option => option.value === value.value);\n if (validOption) onChange(validOption);\n },\n [onChange, options, value],\n );\n\n const toggleMenu = () => {\n if (isBlocked) return;\n setIsOpen(prev => !prev);\n };\n\n const handleSelect = (option: SelectOption<T, V, L>) => {\n if (option.isDisabled) return;\n onChange(option);\n setIsOpen(false);\n triggerRef.current?.focus();\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 setIsOpen(true);\n }\n };\n\n const handleSearchKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex + 1, 1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex - 1, -1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n const option = filteredOptions[highlightedIndex];\n if (option && !option.isDisabled) handleSelect(option);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n if (event.key === 'Tab') {\n setIsOpen(false);\n }\n };\n\n return (\n <div\n ref={containerRef}\n className={cn(\n 'relative w-full max-w-[var(--max-field-width)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {name && (\n <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n )}\n <div className=\"relative w-full min-h-[68px]\">\n {topLabel && (\n <label\n htmlFor={triggerId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n <div className=\"relative w-full\">\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-labelledby={hasValue && valueId ? `${labelId} ${valueId}` : labelId}\n aria-describedby={describedErrorId}\n aria-invalid={hasInvalidState}\n aria-busy={loading}\n disabled={isBlocked}\n onClick={toggleMenu}\n onKeyDown={handleTriggerKeyDown}\n onBlur={onBlur}\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 isEmpty\n ? 'bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-gray-1)]'\n : 'bg-transparent text-[var(--chekin-color-brand-navy)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n )}\n >\n <span id={valueId} className=\"block min-w-0 flex-1 truncate text-left\">\n {valueLabel ?? placeholder ?? label}\n </span>\n <span className=\"pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n {loading && <ThreeDotsLoader height={18} width={18} />}\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 <Fieldset\n isFocused={isOpen}\n invalid={hasInvalidState}\n isEmpty={isEmpty}\n isActivated={!isEmpty || isOpen}\n disabled={disabled}\n loading={loading}\n htmlFor={triggerId}\n labelId={labelId}\n legend={typeof label === 'string' ? label : undefined}\n label={label}\n tooltip={tooltip}\n onClick={!isBlocked ? toggleMenu : undefined}\n />\n {isOpen && (\n <div\n className={cn(\n 'absolute left-0 right-0 top-full z-20 overflow-hidden rounded-b-lg bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)]',\n dropdownClassName,\n )}\n >\n {searchable && (\n <div className=\"border-b border-[#f2f4f8] px-4 pb-2 pt-3\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n placeholder={searchPlaceholder}\n onChange={event => setSearchValue(event.target.value)}\n onKeyDown={handleSearchKeyDown}\n autoComplete=\"off\"\n aria-controls={listboxId}\n aria-activedescendant={\n highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n className=\"m-0 box-border h-9 w-full rounded-md border border-[var(--chekin-color-gray-3)] bg-white px-3 text-[16px] font-medium text-[var(--chekin-color-brand-navy)] outline-none transition-colors placeholder:text-[var(--chekin-color-gray-1)] focus:border-[var(--chekin-color-brand-blue)]\"\n />\n </div>\n )}\n <SelectMenu\n id={listboxId}\n options={filteredOptions}\n labelledBy={labelId}\n describedBy={describedErrorId}\n selectedValue={value}\n highlightedIndex={highlightedIndex}\n onOptionClick={handleSelect}\n onOptionHover={setHighlightedIndex}\n disabled={isBlocked}\n menuClassName={menuClassName}\n listRef={listRef}\n selectedOptionRef={(index, node) => {\n optionRefs.current[index] = node;\n }}\n getOptionId={getOptionId}\n noOptionsMessage={noOptionsMessage}\n />\n </div>\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 : '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 />\n )}\n </div>\n </div>\n );\n}\n\ntype DashboardSelectComponent = <\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n props: DashboardSelectProps<T, V, L> & {ref?: React.Ref<HTMLButtonElement>},\n) => React.ReactElement;\n\nconst DashboardSelect = React.forwardRef(\n DashboardSelectInternal,\n) as unknown as DashboardSelectComponent;\n\nexport {DashboardSelect};\nexport type {DashboardSelectProps};\n","import type {ReactNode} from 'react';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {SelectValue} from './types';\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 getFirstEnabledOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n) {\n return options.findIndex(option => !option.isDisabled);\n}\n\nexport function getLastEnabledOptionIndex<T, V extends SelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n) {\n for (let index = options.length - 1; index >= 0; index -= 1) {\n if (!options[index]?.isDisabled) 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) {\n let nextIndex = startIndex;\n while (nextIndex >= 0 && nextIndex < options.length) {\n if (!options[nextIndex]?.isDisabled) 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","import * as React from 'react';\nimport {cn} from '../../lib/cn';\nimport type {SelectOption} from '../../lib/selector-option';\nimport {isOptionSelected} from './utils';\nimport type {SelectValue} 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 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};\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 menuClassName,\n listRef,\n selectedOptionRef,\n getOptionId,\n noOptionsMessage,\n isMulti,\n emptyContent,\n footer,\n}: SelectMenuProps<T, V, L>) {\n const emptyMessage = noOptionsMessage?.();\n const hasOptions = options.length > 0;\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-activedescendant={\n highlightedIndex !== undefined && highlightedIndex >= 0\n ? getOptionId(highlightedIndex)\n : undefined\n }\n onKeyDown={onKeyDown}\n className={cn(\n 'h-auto max-h-[322px] min-h-[75px] overflow-y-auto px-4 pb-[19px] pt-[17px] outline-none',\n menuClassName,\n )}\n >\n {!hasOptions && emptyMessage && (\n <div className=\"mt-[10px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]\">\n {emptyMessage}\n </div>\n )}\n {!hasOptions && !emptyMessage && emptyContent}\n {options.map((option, index) => {\n const isSelected = isOptionSelected(option, selectedValue, selectedValues);\n const isHighlighted = index === highlightedIndex;\n const optionKey = `${String(option.value)}-${index}`;\n const isOptionDisabled = Boolean(disabled || option.isDisabled);\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={isOptionDisabled}\n tabIndex={-1}\n disabled={isOptionDisabled}\n onClick={() => onOptionClick(option)}\n onMouseMove={() => onOptionHover?.(index)}\n className={cn(\n 'flex w-full items-start justify-between border-0 border-b border-[#f2f4f8] bg-white px-4 py-[20px] text-left text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors',\n 'last:border-b-transparent',\n isHighlighted &&\n !isSelected &&\n 'cursor-pointer text-[var(--chekin-color-brand-blue)]',\n isSelected &&\n 'cursor-default font-bold text-[var(--chekin-color-brand-navy)]',\n isOptionDisabled && 'cursor-default opacity-30',\n )}\n >\n <span className=\"block break-words\">{option.label as ReactNode}</span>\n {option.description && (\n <span className=\"ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]\">\n {option.description}\n </span>\n )}\n </button>\n );\n })}\n {footer}\n </div>\n );\n}\n\nexport {SelectMenu};\nexport type {SelectMenuProps};\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 {SquareX} from 'lucide-react';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {ThreeDotsLoader} from '../../three-dots-loader';\nimport {RotateArrow} from '../../rotate-arrow';\nimport {Fieldset} from '../_fieldset';\nimport {\n SelectMenu,\n defaultFilterOption,\n getFirstEnabledOptionIndex,\n getNextEnabledOptionIndex,\n useSelectIds,\n type DashboardSelectFilterOption,\n type SelectValue,\n} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype DashboardMultiSelectChipRenderer<T, V extends SelectValue, L extends ReactNode> = (\n option: SelectOption<T, V, L>,\n onRemove: () => void,\n) => React.ReactNode;\n\ntype DashboardMultiSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = {\n options?: SelectOption<T, V, L>[];\n value?: SelectOption<T, V, L>[] | null;\n onChange: (value: SelectOption<T, V, L>[]) => void;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n label: string;\n topLabel?: string;\n placeholder?: string;\n disabled?: boolean;\n readOnly?: boolean;\n loading?: 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 name?: string;\n width?: number | string;\n noOptionsMessage?: () => string | undefined;\n filterOption?: DashboardSelectFilterOption<T, V, L>;\n closeMenuOnSelect?: boolean;\n renderChip?: DashboardMultiSelectChipRenderer<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 selected: SelectOption<T, V, L>[],\n options: SelectOption<T, V, L>[],\n ) => boolean;\n};\n\nconst isValueSelected = <T, V extends SelectValue, L extends ReactNode>(\n selected: SelectOption<T, V, L>[],\n option: SelectOption<T, V, L>,\n) => selected.some(item => item.value === option.value);\n\nfunction DashboardMultiSelectInternal<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n label,\n topLabel,\n placeholder,\n disabled,\n readOnly,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n name,\n width,\n noOptionsMessage,\n filterOption = defaultFilterOption,\n closeMenuOnSelect = false,\n renderChip,\n helperText,\n isCreatable = false,\n onCreateOption,\n formatCreateLabel = (input: string) => `Create \"${input}\"`,\n isValidNewOption,\n }: DashboardMultiSelectProps<T, V, L>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n const optionRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n const [isFocused, setIsFocused] = React.useState(false);\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n const selectedValues = React.useMemo(() => value ?? [], [value]);\n const hasValue = selectedValues.length > 0;\n const isEmpty = !hasValue;\n const isBlocked = Boolean(disabled) || Boolean(loading) || Boolean(readOnly);\n const triggerError = (error ?? invalid) as string | boolean | undefined;\n const hasInvalidState = Boolean(triggerError);\n const errorMessage = typeof error === 'string' ? error : undefined;\n const wrapperWidth = toCssSize(width);\n\n const {triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId} =\n useSelectIds({name, hasValue, error, hideErrorMessage});\n\n const filteredOptions = React.useMemo(\n () => options.filter(option => filterOption(option, searchValue)),\n [options, searchValue, filterOption],\n );\n\n const trimmedSearch = searchValue.trim();\n const canCreateNewOption = React.useMemo(() => {\n if (!isCreatable || !trimmedSearch) return false;\n if (isValidNewOption) return isValidNewOption(trimmedSearch, selectedValues, options);\n const lower = trimmedSearch.toLowerCase();\n const existsInOptions = options.some(\n option => typeof option.label === 'string' && option.label.toLowerCase() === lower,\n );\n const existsInSelected = selectedValues.some(\n option => typeof option.label === 'string' && option.label.toLowerCase() === lower,\n );\n return !existsInOptions && !existsInSelected;\n }, [isCreatable, trimmedSearch, isValidNewOption, options, selectedValues]);\n\n React.useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n ref as React.Ref<HTMLDivElement | null>,\n () => containerRef.current,\n );\n\n useOutsideClick({\n elementRef: containerRef,\n onOutsideClick: () => {\n setIsOpen(false);\n setIsFocused(false);\n },\n isDisabled: !isOpen,\n });\n\n React.useEffect(() => {\n if (isBlocked) setIsOpen(false);\n }, [isBlocked]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchValue('');\n setHighlightedIndex(-1);\n }\n }, [isOpen]);\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);\n });\n }, [isOpen, filteredOptions]);\n\n const openMenu = () => {\n if (isBlocked) return;\n setIsOpen(true);\n setIsFocused(true);\n };\n\n const toggleOption = (option: SelectOption<T, V, L>) => {\n if (option.isDisabled) return;\n const exists = isValueSelected(selectedValues, option);\n const next = exists\n ? selectedValues.filter(item => item.value !== option.value)\n : [...selectedValues, option];\n onChange(next);\n setSearchValue('');\n if (closeMenuOnSelect) {\n setIsOpen(false);\n } else {\n inputRef.current?.focus();\n }\n };\n\n const removeOption = (option: SelectOption<T, V, L>) => {\n if (isBlocked) return;\n onChange(selectedValues.filter(item => item.value !== option.value));\n inputRef.current?.focus();\n };\n\n const clearAll = () => {\n if (isBlocked) return;\n onChange([]);\n inputRef.current?.focus();\n };\n\n const createOption = React.useCallback(() => {\n if (!canCreateNewOption) return;\n const newOption =\n onCreateOption?.(trimmedSearch) ??\n ({value: trimmedSearch as V, label: trimmedSearch as L} as SelectOption<T, V, L>);\n onChange([...selectedValues, newOption]);\n setSearchValue('');\n inputRef.current?.focus();\n if (closeMenuOnSelect) setIsOpen(false);\n }, [\n canCreateNewOption,\n closeMenuOnSelect,\n onChange,\n onCreateOption,\n selectedValues,\n trimmedSearch,\n ]);\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Backspace' && !searchValue && selectedValues.length > 0) {\n event.preventDefault();\n onChange(selectedValues.slice(0, -1));\n return;\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!isOpen) {\n openMenu();\n return;\n }\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex + 1, 1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isOpen) {\n openMenu();\n return;\n }\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex - 1, -1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'Enter') {\n if (!isOpen) return;\n event.preventDefault();\n const option = filteredOptions[highlightedIndex];\n if (option && !option.isDisabled) {\n toggleOption(option);\n } else if (canCreateNewOption) {\n createOption();\n }\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n }\n };\n\n const handleContainerClick = () => {\n if (isBlocked) return;\n inputRef.current?.focus();\n setIsOpen(true);\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (containerRef.current?.contains(event.relatedTarget as Node)) return;\n setIsFocused(false);\n onBlur?.(event);\n };\n\n return (\n <div\n ref={containerRef}\n onBlur={handleInputBlur}\n className={cn(\n 'relative min-h-[68px] w-full max-w-[var(--max-field-width)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {topLabel && (\n <label\n htmlFor={triggerId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={selectedValues.map(item => String(item.value)).join(',')}\n />\n )}\n <div className=\"relative w-full\">\n <div\n id={triggerId}\n role=\"combobox\"\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={hasInvalidState}\n aria-busy={loading}\n aria-disabled={isBlocked}\n onClick={handleContainerClick}\n className={cn(\n 'relative box-border flex w-full cursor-text flex-wrap items-center gap-2 rounded-[6px] border-0 px-4 py-[10px] text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200',\n 'min-h-12',\n isEmpty && !isFocused\n ? 'bg-[var(--chekin-color-surface-input-empty)]'\n : 'bg-transparent',\n disabled && 'cursor-not-allowed',\n loading && 'cursor-progress',\n )}\n >\n {selectedValues.map(option =>\n renderChip ? (\n <React.Fragment key={String(option.value)}>\n {renderChip(option, () => removeOption(option))}\n </React.Fragment>\n ) : (\n <span\n key={String(option.value)}\n className=\"inline-flex items-center gap-2 rounded-[4px] border border-[#acacd5] bg-[#f0f0f8] py-[2px] pl-[10px] pr-1 text-[12px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n <span className=\"whitespace-nowrap\">{option.label as ReactNode}</span>\n {!readOnly && (\n <button\n type=\"button\"\n onClick={event => {\n event.stopPropagation();\n removeOption(option);\n }}\n className=\"flex h-[15px] w-[15px] items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]\"\n aria-label={`Remove ${typeof option.label === 'string' ? option.label : String(option.value)}`}\n >\n <SquareX size={15} fill=\"#9696b9\" color=\"#f8f8f8\" strokeWidth={1.8} />\n </button>\n )}\n </span>\n ),\n )}\n <input\n ref={inputRef}\n type=\"text\"\n id={`${triggerId}-input`}\n value={searchValue}\n onChange={event => {\n setSearchValue(event.target.value);\n if (!isOpen) setIsOpen(true);\n }}\n onFocus={() => {\n setIsFocused(true);\n if (!isBlocked) setIsOpen(true);\n }}\n onKeyDown={handleInputKeyDown}\n disabled={isBlocked}\n readOnly={readOnly}\n placeholder={hasValue ? '' : (placeholder ?? '')}\n autoComplete=\"off\"\n className={cn(\n 'm-0 box-border min-w-[40px] flex-1 border-0 bg-transparent p-0 text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[var(--chekin-color-gray-1)]',\n isBlocked && 'cursor-not-allowed',\n )}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-activedescendant={\n isOpen && highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n />\n <span className=\"ml-auto flex items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]\">\n {loading && <ThreeDotsLoader height={18} width={18} />}\n {hasValue && !readOnly && (\n <button\n type=\"button\"\n onClick={event => {\n event.stopPropagation();\n clearAll();\n }}\n className=\"flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]\"\n aria-label=\"Clear all\"\n >\n <SquareX size={15} fill=\"#9696b9\" color=\"#f8f8f8\" strokeWidth={1.8} />\n </button>\n )}\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 </span>\n </div>\n <Fieldset\n isFocused={isFocused || isOpen}\n invalid={hasInvalidState}\n isEmpty={isEmpty && !searchValue}\n isActivated={!isEmpty || isFocused || isOpen || Boolean(searchValue)}\n disabled={disabled}\n loading={loading}\n readOnly={readOnly}\n htmlFor={`${triggerId}-input`}\n labelId={labelId}\n legend={typeof label === 'string' ? label : undefined}\n label={label}\n tooltip={tooltip}\n onClick={handleContainerClick}\n />\n {isOpen && (\n <div\n className={cn(\n 'absolute left-0 right-0 top-full z-20 overflow-hidden rounded-b-lg bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)]',\n dropdownClassName,\n )}\n >\n <SelectMenu\n id={listboxId}\n options={filteredOptions}\n labelledBy={labelId}\n describedBy={describedErrorId}\n selectedValues={selectedValues}\n highlightedIndex={highlightedIndex}\n onOptionClick={toggleOption}\n onOptionHover={setHighlightedIndex}\n disabled={isBlocked}\n menuClassName={menuClassName}\n listRef={listRef}\n selectedOptionRef={(index, node) => {\n optionRefs.current[index] = node;\n }}\n getOptionId={getOptionId}\n noOptionsMessage={noOptionsMessage}\n isMulti\n />\n {canCreateNewOption && (\n <button\n type=\"button\"\n onClick={createOption}\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(trimmedSearch)}\n </button>\n )}\n </div>\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 : '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 />\n )}\n </div>\n );\n}\n\ntype DashboardMultiSelectComponent = <\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n props: DashboardMultiSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nconst DashboardMultiSelect = React.forwardRef(\n DashboardMultiSelectInternal,\n) as unknown as DashboardMultiSelectComponent;\n\nexport {DashboardMultiSelect};\nexport type {DashboardMultiSelectProps, DashboardMultiSelectChipRenderer};\n","import * as React from 'react';\nimport {DashboardMultiSelect, type DashboardMultiSelectProps} from '../multi-select';\nimport type {SelectValue} from '../_select-internals';\nimport type {ReactNode} from 'react';\n\ntype DashboardCreatableMultiSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = Omit<DashboardMultiSelectProps<T, V, L>, 'isCreatable'>;\n\nconst DashboardCreatableMultiSelect = React.forwardRef(\n function DashboardCreatableMultiSelect<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n >(props: DashboardCreatableMultiSelectProps<T, V, L>, ref: React.Ref<HTMLDivElement>) {\n return <DashboardMultiSelect ref={ref} {...props} isCreatable />;\n },\n) as <T = undefined, V extends SelectValue = string, L extends ReactNode = string>(\n props: DashboardCreatableMultiSelectProps<T, V, L> & {ref?: React.Ref<HTMLDivElement>},\n) => React.ReactElement;\n\nexport {DashboardCreatableMultiSelect};\nexport type {DashboardCreatableMultiSelectProps};\n","import * as React from 'react';\nimport {ChevronDown} from 'lucide-react';\nimport {useVirtualizer} from '@tanstack/react-virtual';\nimport {cn} from '../../lib/cn';\nimport {toCssSize} from '../../lib/utils';\nimport {useOutsideClick} from '../../hooks';\nimport {FieldErrorMessage} from '../../field-error-message';\nimport {ThreeDotsLoader} from '../../three-dots-loader';\nimport {Fieldset} from '../_fieldset';\nimport {\n defaultFilterOption,\n getFirstEnabledOptionIndex,\n getNextEnabledOptionIndex,\n getOptionIndex,\n useSelectIds,\n type DashboardSelectFilterOption,\n type SelectValue,\n} from '../_select-internals';\nimport type {SelectOption} from '../../lib/selector-option';\nimport type {ReactNode} from 'react';\n\ntype DashboardInfiniteScrollSelectProps<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n> = {\n options?: SelectOption<T, V, L>[];\n value?: SelectOption<T, V, L> | null;\n onChange: (option: SelectOption<T, V, L>) => void;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n label: string;\n topLabel?: string;\n placeholder?: string;\n getValueLabel?: (option: SelectOption<T, V, L>) => string;\n disabled?: boolean;\n loading?: 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 name?: string;\n width?: number | string;\n noOptionsMessage?: () => string | undefined;\n searchable?: boolean;\n searchPlaceholder?: string;\n filterOption?: DashboardSelectFilterOption<T, V, L>;\n helperText?: string;\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\nconst DEFAULT_ITEM_HEIGHT = 60;\nconst DEFAULT_LIST_HEIGHT = 322;\nconst DEFAULT_OVERSCAN = 5;\nconst DEFAULT_LOAD_MORE_THRESHOLD = 5;\n\nfunction DashboardInfiniteScrollSelectInternal<\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n {\n options = [],\n value,\n onChange,\n onBlur,\n label,\n topLabel,\n placeholder,\n getValueLabel,\n disabled,\n loading,\n optional,\n tooltip,\n error,\n invalid,\n hideErrorMessage,\n className,\n menuClassName,\n dropdownClassName,\n name,\n width,\n noOptionsMessage,\n searchable = true,\n searchPlaceholder,\n filterOption = defaultFilterOption,\n helperText,\n canLoadMore,\n isLoadingMore,\n loadMoreItems,\n loadingMoreText = 'Loading…',\n onSearchChange,\n itemHeight = DEFAULT_ITEM_HEIGHT,\n listHeight = DEFAULT_LIST_HEIGHT,\n overscan = DEFAULT_OVERSCAN,\n loadMoreThreshold = DEFAULT_LOAD_MORE_THRESHOLD,\n }: DashboardInfiniteScrollSelectProps<T, V, L>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState('');\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1);\n\n const hasValue = Boolean(value);\n const isEmpty = !hasValue;\n const isBlocked = Boolean(disabled) || Boolean(loading);\n const triggerError = (error ?? invalid) as string | boolean | undefined;\n const hasInvalidState = Boolean(triggerError);\n const errorMessage = typeof error === 'string' ? error : undefined;\n const wrapperWidth = toCssSize(width);\n const valueLabel = value ? (getValueLabel?.(value) ?? String(value.label)) : undefined;\n\n const {triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId} =\n useSelectIds({name, hasValue, error, hideErrorMessage});\n\n const filteredOptions = React.useMemo(() => {\n if (!searchable || !searchValue) return options;\n return options.filter(option => filterOption(option, searchValue));\n }, [options, searchable, searchValue, filterOption]);\n\n const itemCount = filteredOptions.length + (canLoadMore || isLoadingMore ? 1 : 0);\n\n const virtualizer = useVirtualizer({\n count: itemCount,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => itemHeight,\n overscan,\n });\n\n React.useImperativeHandle(ref, () => triggerRef.current as HTMLButtonElement, []);\n\n useOutsideClick({\n elementRef: containerRef,\n onOutsideClick: () => setIsOpen(false),\n isDisabled: !isOpen,\n });\n\n React.useEffect(() => {\n if (isBlocked) setIsOpen(false);\n }, [isBlocked]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchValue('');\n setHighlightedIndex(-1);\n return;\n }\n const selectedIndex = getOptionIndex(filteredOptions, value);\n setHighlightedIndex(\n selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(filteredOptions),\n );\n if (searchable) {\n const frame = window.requestAnimationFrame(() => searchInputRef.current?.focus());\n return () => window.cancelAnimationFrame(frame);\n }\n }, [isOpen, filteredOptions, searchable, value]);\n\n const virtualItems = virtualizer.getVirtualItems();\n\n React.useEffect(() => {\n if (!isOpen || !canLoadMore || isLoadingMore || !loadMoreItems) return;\n if (virtualItems.length === 0) return;\n const lastItem = virtualItems[virtualItems.length - 1];\n if (lastItem && lastItem.index >= filteredOptions.length - loadMoreThreshold) {\n loadMoreItems();\n }\n }, [\n canLoadMore,\n filteredOptions.length,\n isLoadingMore,\n isOpen,\n loadMoreItems,\n loadMoreThreshold,\n virtualItems,\n ]);\n\n React.useEffect(() => {\n if (!isOpen || highlightedIndex < 0) return;\n virtualizer.scrollToIndex(highlightedIndex, {align: 'auto'});\n }, [highlightedIndex, isOpen, virtualizer]);\n\n const toggleMenu = () => {\n if (isBlocked) return;\n setIsOpen(prev => !prev);\n };\n\n const handleSelect = (option: SelectOption<T, V, L>) => {\n if (option.isDisabled) return;\n onChange(option);\n setIsOpen(false);\n triggerRef.current?.focus();\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 setIsOpen(true);\n }\n };\n\n const handleSearchKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex + 1, 1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n const next = getNextEnabledOptionIndex(filteredOptions, highlightedIndex - 1, -1);\n if (next >= 0) setHighlightedIndex(next);\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n const option = filteredOptions[highlightedIndex];\n if (option && !option.isDisabled) handleSelect(option);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n if (event.key === 'Tab') {\n setIsOpen(false);\n }\n };\n\n const handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.value;\n setSearchValue(next);\n onSearchChange?.(next);\n };\n\n const emptyMessage = noOptionsMessage?.();\n const totalSize = virtualizer.getTotalSize();\n const measuredListHeight = Math.min(listHeight, Math.max(totalSize, itemHeight));\n\n return (\n <div\n ref={containerRef}\n className={cn(\n 'relative w-full max-w-[var(--max-field-width)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n className,\n )}\n style={wrapperWidth ? {width: wrapperWidth} : undefined}\n >\n {name && (\n <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n )}\n <div className=\"relative min-h-[68px] w-full\">\n {topLabel && (\n <label\n htmlFor={triggerId}\n className=\"mb-2 block text-[14px] font-medium text-[var(--chekin-color-brand-navy)]\"\n >\n {topLabel}\n </label>\n )}\n <div className=\"relative w-full\">\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-labelledby={hasValue && valueId ? `${labelId} ${valueId}` : labelId}\n aria-describedby={describedErrorId}\n aria-invalid={hasInvalidState}\n aria-busy={loading}\n disabled={isBlocked}\n onClick={toggleMenu}\n onKeyDown={handleTriggerKeyDown}\n onBlur={onBlur}\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 isEmpty\n ? 'bg-[var(--chekin-color-surface-input-empty)] text-[var(--chekin-color-gray-1)]'\n : 'bg-transparent text-[var(--chekin-color-brand-navy)]',\n disabled && 'cursor-not-allowed opacity-50',\n loading && 'cursor-progress',\n )}\n >\n <span id={valueId} className=\"block min-w-0 flex-1 truncate text-left\">\n {valueLabel ?? placeholder ?? label}\n </span>\n <span className=\"pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]\">\n {loading && <ThreeDotsLoader height={18} width={18} />}\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 <Fieldset\n isFocused={isOpen}\n invalid={hasInvalidState}\n isEmpty={isEmpty}\n isActivated={!isEmpty || isOpen}\n disabled={disabled}\n loading={loading}\n htmlFor={triggerId}\n labelId={labelId}\n legend={typeof label === 'string' ? label : undefined}\n label={label}\n tooltip={tooltip}\n onClick={!isBlocked ? toggleMenu : undefined}\n />\n {isOpen && (\n <div\n className={cn(\n 'absolute left-0 right-0 top-full z-20 overflow-hidden rounded-b-lg bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)]',\n dropdownClassName,\n )}\n >\n {searchable && (\n <div className=\"border-b border-[#f2f4f8] px-4 pb-2 pt-3\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n placeholder={searchPlaceholder}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeyDown}\n autoComplete=\"off\"\n aria-controls={listboxId}\n aria-activedescendant={\n highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n className=\"m-0 box-border h-9 w-full rounded-md border border-[var(--chekin-color-gray-3)] bg-white px-3 text-[16px] font-medium text-[var(--chekin-color-brand-navy)] outline-none transition-colors placeholder:text-[var(--chekin-color-gray-1)] focus:border-[var(--chekin-color-brand-blue)]\"\n />\n </div>\n )}\n {itemCount === 0 ? (\n <div className=\"px-4 py-[20px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]\">\n {emptyMessage ?? 'No options'}\n </div>\n ) : (\n <div\n ref={scrollRef}\n className={cn('overflow-y-auto', menuClassName)}\n style={{height: `${measuredListHeight}px`}}\n >\n <div\n id={listboxId}\n role=\"listbox\"\n tabIndex={-1}\n aria-labelledby={labelId}\n aria-describedby={describedErrorId}\n aria-activedescendant={\n highlightedIndex >= 0 ? getOptionId(highlightedIndex) : undefined\n }\n className=\"relative w-full\"\n style={{height: `${totalSize}px`}}\n >\n {virtualItems.map(virtualItem => {\n const isLoaderRow = virtualItem.index >= filteredOptions.length;\n const option = filteredOptions[virtualItem.index];\n const isSelected =\n !isLoaderRow && option ? option.value === value?.value : false;\n const isHighlighted = virtualItem.index === highlightedIndex;\n const isOptionDisabled = Boolean(isBlocked || option?.isDisabled);\n\n return (\n <div\n key={virtualItem.key}\n data-index={virtualItem.index}\n className=\"absolute left-0 top-0 w-full\"\n style={{\n height: `${virtualItem.size}px`,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n >\n {isLoaderRow ? (\n <div className=\"flex h-full items-center justify-center gap-2 px-4 text-[14px] font-medium text-[var(--chekin-color-gray-1)]\">\n <ThreeDotsLoader height={18} width={18} />\n <span>{loadingMoreText}</span>\n </div>\n ) : (\n <button\n id={getOptionId(virtualItem.index)}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isOptionDisabled}\n tabIndex={-1}\n disabled={isOptionDisabled}\n onClick={() => option && handleSelect(option)}\n onMouseMove={() => setHighlightedIndex(virtualItem.index)}\n className={cn(\n 'flex h-full w-full items-start justify-between border-0 border-b border-[#f2f4f8] bg-white px-4 text-left text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none transition-colors',\n isHighlighted &&\n !isSelected &&\n 'cursor-pointer text-[var(--chekin-color-brand-blue)]',\n isSelected &&\n 'cursor-default font-bold text-[var(--chekin-color-brand-navy)]',\n isOptionDisabled && 'cursor-default opacity-30',\n )}\n >\n <span className=\"block break-words\">\n {option?.label as ReactNode}\n </span>\n {option?.description && (\n <span className=\"ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]\">\n {option.description}\n </span>\n )}\n </button>\n )}\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\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 : '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 />\n )}\n </div>\n </div>\n );\n}\n\ntype DashboardInfiniteScrollSelectComponent = <\n T = undefined,\n V extends SelectValue = string,\n L extends ReactNode = string,\n>(\n props: DashboardInfiniteScrollSelectProps<T, V, L> & {\n ref?: React.Ref<HTMLButtonElement>;\n },\n) => React.ReactElement;\n\nconst DashboardInfiniteScrollSelect = React.forwardRef(\n DashboardInfiniteScrollSelectInternal,\n) as unknown as DashboardInfiniteScrollSelectComponent;\n\nexport {DashboardInfiniteScrollSelect};\nexport type {DashboardInfiniteScrollSelectProps};\n","import * as React from 'react';\nimport {ChevronDown, Search} from 'lucide-react';\nimport {useVirtualizer} from '@tanstack/react-virtual';\nimport {ReactNode, useCallback} from 'react';\nimport type {SearchableSelectProps, SearchableSelectValue} from './types';\nimport {Drawer, DrawerContent, DrawerDescription, DrawerTitle} from '../drawer';\nimport {FieldTrigger} from '../field-trigger';\nimport {useOutsideClick, useScreenResize} from '../hooks';\nimport {DEVICE} from '../lib/device';\nimport type {SelectOption} from '../lib/selector-option';\nimport {cn} from '../lib/cn';\nimport {useEvent} from '../hooks';\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 SearchableSelectValue, 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 SearchableSelectInternal = <\n T = undefined,\n V extends SearchableSelectValue = 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 variant = 'default',\n label,\n topLabel,\n placeholder,\n searchPlaceholder = 'Search...',\n mobileTitle,\n getValueLabel,\n disabled,\n error,\n invalid,\n optional,\n tooltip,\n hideErrorMessage,\n name,\n className,\n dropdownClassName,\n menuClassName,\n noOptionsMessage,\n loadingMessage,\n }: SearchableSelectProps<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 <SearchableSelectContent\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 ref={containerRef} className={cn('relative w-full max-w-[425px]', className)}>\n {name && (\n <input type=\"hidden\" name={name} value={value ? String(value.value) : ''} />\n )}\n <FieldTrigger\n id={`${reactId}-trigger`}\n ref={triggerRef}\n variant={variant}\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 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-[#1F1F1B] 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-[#DEDAD2] 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 SearchableSelectComponent = <\n T = undefined,\n V extends SearchableSelectValue = string,\n L extends ReactNode = string,\n>(\n props: SearchableSelectProps<T, V, L> & React.RefAttributes<HTMLButtonElement>,\n) => React.ReactElement | null;\n\nconst SearchableSelect = React.forwardRef(\n SearchableSelectInternal,\n) as SearchableSelectComponent;\n\ntype SearchableSelectContentProps<\n T,\n V extends SearchableSelectValue,\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 SearchableSelectContent<\n T,\n V extends SearchableSelectValue,\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}: SearchableSelectContentProps<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-[#9696B9]\"\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-[#DEDAD2] bg-white pl-12 pr-4 text-base text-[#1F1F1B] outline-none placeholder:text-[#9696B9] focus:border-[#1F1F1B]\"\n />\n </div>\n {loading && options.length === 0 ? (\n <div className=\"px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]\">\n {loadingText}\n </div>\n ) : options.length === 0 ? (\n <div className=\"px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]\">\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-[#6C6C6C]\"\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-[#3F3F46] transition-colors',\n isHighlighted && 'bg-[#F7F6F4]',\n isSelected && 'bg-[#F7F6F4] font-medium text-[#171717]',\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<T, V extends SearchableSelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n) {\n return options.findIndex(option => !option.isDisabled);\n}\n\nfunction getNextEnabledIndex<T, V extends SearchableSelectValue, L extends ReactNode>(\n options: SelectOption<T, V, L>[],\n startIndex: number,\n step: 1 | -1,\n) {\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 {SearchableSelect};\n","export const DEVICE_BREAKPOINTS = {\n mobileS: '320px',\n mobileM: '375px',\n mobileL: '425px',\n tabletS: '640px',\n tablet: '768px',\n tabletL: '970px',\n laptop: '1024px',\n yFullHD: '1080px',\n laptopM: '1280px',\n laptopL: '1400px',\n desktop: '2560px',\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"],"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;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,wBAAAA;AAAA,EAAA,qBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA;AAAA;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,oBAAAC;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,mBAAAC;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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","names":["Content","Header","Root","Image","RadioGroup","Separator","import_lucide_react","import_jsx_runtime","AlertType","AlertSize","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","sizeClasses","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_jsx_runtime","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_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_react","import_jsx_runtime","import_jsx_runtime","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","React","import_react","import_react","import_react","import_react","import_react","import_react","import_react","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_lucide_react","import_jsx_runtime","import_jsx_runtime","Content","import_jsx_runtime","Header","import_jsx_runtime","Root","import_jsx_runtime","Root","Header","Content","import_react","import_react_i18next","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","React","import_class_variance_authority","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","import_lucide_react","import_jsx_runtime","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_lucide_react","import_jsx_runtime","RadioGroup","import_react","import_jsx_runtime","RadioGroup","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_lucide_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","import_jsx_runtime","import_react","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","SectionTagColors","import_react","import_lucide_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","React","import_jsx_runtime","import_jsx_runtime","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","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","React","LabelPrimitive","import_class_variance_authority","import_react_i18next","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","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_i18next","import_jsx_runtime","ReactWebcam","import_react","import_jsx_runtime","React","import_lucide_react","React","DialogPrimitive","import_jsx_runtime","Draggable","React","import_jsx_runtime","import_jsx_runtime","isMobile","React","import_lucide_react","import_react_i18next","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","isMobile","import_jsx_runtime","isMobile","React","import_jsx_runtime","React","import_lucide_react","React","import_jsx_runtime","getOptionId","import_jsx_runtime","getOptionId","getOptionScrollTop","import_jsx_runtime","getOptionId","spacerHeight","import_jsx_runtime","getOptionId","React","import_lucide_react","import_jsx_runtime","SelectTrigger","React","isMobile","React","isMobile","getOptionScrollTop","React","getOptionId","import_jsx_runtime","AirbnbSelect","isMobile","getOptionId","SelectTrigger","import_jsx_runtime","React","import_react_i18next","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","getOptionIndex","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","import_jsx_runtime","getOptionId","React","useSelectIds","getOptionId","import_jsx_runtime","getOptionId","useSelectIds","getOptionIndex","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","React","import_lucide_react","import_jsx_runtime","getOptionId","useSelectIds","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","React","import_jsx_runtime","DashboardCreatableMultiSelect","React","import_lucide_react","import_react_virtual","import_jsx_runtime","getOptionId","useSelectIds","getOptionIndex","getFirstEnabledOptionIndex","getNextEnabledOptionIndex","React","import_lucide_react","import_react_virtual","import_react","import_jsx_runtime","isMobile","options","import_sonner","error","import_jsx_runtime","i18next"]}