@chekinapp/ui 0.0.26 → 0.0.29
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.
- package/dist/index.cjs +256 -135
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +45 -7
- package/dist/index.d.ts +45 -7
- package/dist/index.js +188 -71
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/accordion/Accordion.tsx","../src/lib/cn.ts","../src/accordion/Accordion.module.css","../src/alert-box/AlertBox.tsx","../src/alert-box/AlertBox.module.css","../src/audio-player/AudioPlayer.tsx","../src/audio-player/AudioPlayer.module.css","../src/avatar/Avatar.tsx","../src/avatar/Avatar.module.css","../src/badge/Badge.tsx","../src/beta-badge/BetaBadge.tsx","../src/beta-badge/BetaBadge.module.css","../src/bookmark-tabs/BookmarkTabs.tsx","../src/box-option-selector/BoxOptionSelector.tsx","../src/box-option-selector/BoxOptionSelector.module.css","../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/channel-selector/ChannelSelector.tsx","../src/tooltip/Tooltip.tsx","../src/lib/utils.ts","../src/checkbox/BaseCheckbox.tsx","../src/checkbox/Checkbox.tsx","../src/label/Label.tsx","../src/checkbox/CheckboxGroup.tsx","../src/scroll-area/ScrollArea.tsx","../src/error-message/styles.module.css","../src/error-message/ErrorMessage.tsx","../src/comming-soon-badge/CommingSoonBadge.tsx","../src/status-badge/StatusBadge.tsx","../src/copy-icon/CopyIcon.tsx","../src/copy-link-button/CopyLinkButton.tsx","../src/data-table/DataTable.tsx","../src/table/Table.tsx","../src/loading-bar/styles.module.css","../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-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-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-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-copy-to-clipboard.ts","../src/lib/copy-to-clipboard.ts","../src/hooks/use-timer.ts","../src/hooks/use-timeout.ts","../src/hooks/use-hover.ts","../src/hooks/use-promised-modal-controls.ts","../src/dialog/ConfirmationDialog.tsx","../src/default-select-trigger/DefaultSelectTrigger.tsx","../src/download-entry-forms-button/DownloadEntryFormsButton.tsx","../src/dropdown-button/DropdownButton.tsx","../src/dropdown-menu/DropdownMenu.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/feature-card/FeatureCard.tsx","../src/switch/Switch.tsx","../src/video-player/VideoPlayer.tsx","../src/file-input-button/FileInputButton.tsx","../src/form-box/FormBox.module.css","../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/free-text-field/styles.module.css","../src/framed-icon/FramedIcon.tsx","../src/grid-items/GridItems.tsx","../src/help-tooltip/HelpTooltip.tsx","../src/icon/Icon.tsx","../src/icon-button/IconButton.tsx","../src/info-box/InfoBox.tsx","../src/image/Image.tsx","../src/input/Input.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/iv-status-badge/IVStatusBadge.tsx","../src/large-modal/LargeModal.tsx","../src/learn-more-button/LearnMoreButton.tsx","../src/link/Link.tsx","../src/image-full-screen-view/ImageFullScreenView.tsx","../src/loader/Loader.tsx","../src/metric-card/MetricCard.tsx","../src/metric-card/MetricCard.module.css","../src/metric-card/types.ts","../src/modal/Modal.tsx","../src/modal/styles.module.css","../src/modal-loader/ModalLoader.tsx","../src/overlay-loader/OverlayLoader.tsx","../src/page-loader/PageLoader.tsx","../src/pagination/Pagination.tsx","../src/select/Select.tsx","../src/popover/Popover.tsx","../src/radio/Radio.tsx","../src/radio-group/RadioGroup.tsx","../src/radio/useRadioOptions.ts","../src/radio/styles.module.css","../src/radio/RadioWithBorder.tsx","../src/rating-progress/RatingProgress.tsx","../src/rating-radio-group/RatingRadioGroup.tsx","../src/rating-radio-group/styles.module.css","../src/rating-stars/RatingStars.tsx","../src/rotate-icon/RotateIcon.tsx","../src/search-button/SearchButton.tsx","../src/search-input/SearchInput.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/section/Section.module.css","../src/selectors/Selectors.tsx","../src/selector-button/styles.module.css","../src/selector-button/SelectorButton.tsx","../src/selectors/styles.module.css","../src/separator/Separator.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/circular-loader/CircularLoader.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-placeholder/TablePlaceholder.tsx","../src/task-card/TaskCard.tsx","../src/task-card/TaskCard.module.css","../src/task-card/types.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/text-field/FieldError.tsx","../src/text-field/SupportingText.tsx","../src/text-field/textField.module.css","../src/textarea/Textarea.tsx","../src/textarea/styles.module.css","../src/three-dots-loader/constants.ts","../src/three-dots-loader/styles.module.css","../src/three-dots-loader/ThreeDotsLoader.tsx","../src/uploaded-files-list/UploadedFilesList.tsx","../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/searchable-select/SearchableSelect.tsx"],"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 './channel-selector';\nexport * from './checkbox';\nexport * from './comming-soon-badge';\nexport * from './copy-icon';\nexport * from './copy-link-button';\nexport * from './data-table';\nexport * from './dialog';\nexport * from './default-select-trigger';\nexport * from './download-entry-forms-button';\nexport * from './dropdown-button';\nexport * from './dropdown-menu';\nexport * from './empty';\nexport * from './empty-section-placeholder';\nexport * from './external-link';\nexport * from './feature-card';\nexport * from './file-input-button';\nexport * from './form-box';\nexport * from './free-text-field';\nexport * from './framed-icon';\nexport * from './grid-items';\nexport * from './halo-icon';\nexport * from './tooltip';\nexport * from './help-tooltip';\nexport * from './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 './iv-status-badge';\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 './loader';\nexport * from './metric-card';\nexport * from './modal';\nexport * from './modal-loader';\nexport * from './overlay-loader';\nexport * from './page-loader';\nexport * from './pagination';\nexport * from './popover';\nexport * from './radio';\nexport * from './radio-group';\nexport * from './rating-progress';\nexport * from './rating-radio-group';\nexport * from './rating-stars';\nexport * from './rotate-icon';\nexport * from './scroll-area';\nexport * from './search-button';\nexport * from './search-input';\nexport * from './section-tag';\nexport * from './section';\nexport * from './select';\nexport * from './selectors';\nexport * from './selector-button';\nexport * from './separator';\nexport * from './sheet';\nexport * from './sidebar';\nexport * from './skeleton';\nexport * from './circular-loader';\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-placeholder';\nexport * from './tabs';\nexport * from './task-card';\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 './video-player';\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 './searchable-select';\nexport * from './lib/selector-option';\nexport * from './lib/copy-to-clipboard';\nexport * from './hooks';\nexport {cn} from './lib/cn';\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';\nimport styles from './Accordion.module.css';\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('accordion__item', styles.accordion__item, className)}\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 styles.accordion__trigger,\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 styles.accordion__icon,\n 'shrink-0 rounded-full p-0.5',\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 styles.accordion__content,\n // TODO Uncomment the next line when dropdown position is fixed\n // 'overflow-hidden',\n className,\n )}\n {...props}\n >\n <div\n className={cn(\n 'accordion__contentItem',\n styles.accordion__contentItem,\n contentClassName,\n )}\n >\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",".accordion__item {\n @apply transition-colors duration-200 ease-in-out;\n background: var(--accordion-item-bg);\n border-color: var(--accordion-item-border);\n border-radius: var(--accordion-item-radius);\n border-style: solid;\n border-width: 1px;\n border-top-color: var(--accordion-item-divider);\n box-shadow: 0 0 10px 0 rgba(143, 143, 143, 0.2);\n}\n\n:root[data-surface='guest'] .accordion__item {\n border-width: 0;\n border-top-width: 1px;\n box-shadow: none;\n}\n\n:root[data-surface='guest'] .accordion__item:first-child {\n border-top-width: 0;\n}\n\n.accordion__item[data-state='open'] {\n background: var(--accordion-item-open-bg);\n}\n\n.accordion__item[data-state='closed'] {\n background: var(--accordion-item-bg);\n}\n\n.accordion__item[data-state='closed']:hover {\n background: var(--accordion-item-hover-bg);\n}\n\n.accordion__trigger {\n @apply flex h-auto w-full flex-1 items-center justify-between text-left outline-none transition-colors duration-200;\n @apply hover:no-underline disabled:pointer-events-none;\n color: var(--accordion-trigger-color);\n font-family: var(--accordion-trigger-font-family);\n font-size: 18px;\n font-weight: var(--accordion-trigger-font-weight);\n gap: var(--accordion-trigger-gap);\n line-height: 28px;\n padding: 24px;\n}\n\n:root[data-surface='guest'] .accordion__trigger {\n font-size: 14px;\n line-height: 20px;\n padding: 16px 0;\n}\n\n@media (min-width: 479px) {\n :root[data-surface='guest'] .accordion__trigger {\n padding-bottom: 24px;\n padding-top: 24px;\n }\n}\n\n.accordion__trigger:focus-visible {\n box-shadow: var(--accordion-trigger-focus-shadow);\n}\n\n.accordion__trigger:disabled {\n opacity: var(--accordion-trigger-disabled-opacity);\n}\n\n.accordion__icon {\n color: var(--accordion-icon-color-closed);\n height: var(--accordion-icon-size);\n margin-left: auto;\n min-width: initial;\n width: 16px;\n}\n\n.accordion__trigger[data-state='open'] .accordion__icon {\n color: var(--accordion-icon-color-open);\n}\n\n:root[data-surface='guest'] .accordion__icon {\n width: 12px;\n}\n\n.accordion__icon svg {\n height: var(--accordion-icon-size);\n transition: transform 0.2s;\n width: var(--accordion-icon-size);\n}\n\n:root[data-surface='guest'] .accordion__icon svg {\n transform: rotate(270deg);\n}\n\n:root[data-surface='guest'] .accordion__trigger[data-state='open'] .accordion__icon svg {\n transform: rotate(90deg);\n}\n\n.accordion__content {\n @apply transition-all;\n @apply data-[state=closed]:animate-accordion-up;\n @apply data-[state=open]:animate-accordion-down;\n color: var(--accordion-content-color);\n font-size: var(--accordion-content-font-size);\n line-height: var(--accordion-content-line-height);\n}\n\n.accordion__content[data-state='closed'] {\n display: block;\n}\n\n:root[data-surface='guest'] .accordion__content[data-state='closed'] {\n display: none;\n}\n\n.accordion__contentItem {\n padding: 8px 24px 24px;\n}\n\n:root[data-surface='guest'] .accordion__contentItem {\n padding: 0;\n}\n","import * as React from 'react';\nimport {AlertCircle, Check, TriangleAlert, XCircle} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport styles from './AlertBox.module.css';\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]: styles['alertBox--info'],\n [AlertType.WARNING]: styles['alertBox--warning'],\n [AlertType.ERROR]: styles['alertBox--error'],\n [AlertType.SUCCESS]: styles['alertBox--success'],\n [AlertType.LIGHT]: '',\n};\n\nexport interface AlertBoxProps {\n text: string | React.ReactNode;\n type?: AlertType;\n size?: AlertSize;\n withIcon?: boolean;\n className?: string;\n customIcon?: React.ReactNode;\n}\n\nexport function AlertBox({\n text,\n className = '',\n withIcon = true,\n size = AlertSize.L,\n type = AlertType.INFO,\n customIcon,\n}: AlertBoxProps) {\n const isIconVisible = Boolean(withIcon || customIcon);\n\n return (\n <div\n data-slot=\"alert-box\"\n className={cn(\n styles.alertBox,\n 'flex gap-3 [&_svg]:h-5 [&_svg]:w-5 [&_svg]:shrink-0',\n sizeClasses[size],\n typeStyles[type],\n className,\n )}\n >\n {isIconVisible && (customIcon || getIcon(type))}\n <div className=\"max-w-4xl text-left font-medium lg:max-w-full\">{text}</div>\n </div>\n );\n}\n\nAlertBox.displayName = 'AlertBox';\n\nexport const AlertTypes = AlertType;\nexport const AlertSizes = AlertSize;\n",".alertBox {\n border-radius: var(--alert-box-radius);\n}\n\n.alertBox--info {\n background: var(--alert-box-info-bg);\n}\n\n.alertBox--info svg {\n color: var(--alert-box-info-icon);\n}\n\n.alertBox--warning {\n background: var(--alert-box-warning-bg);\n}\n\n.alertBox--warning svg {\n color: var(--alert-box-warning-icon);\n}\n\n.alertBox--success {\n background: var(--alert-box-success-bg);\n color: var(--alert-box-success-text);\n}\n\n.alertBox--success svg {\n color: var(--alert-box-success-icon);\n}\n\n.alertBox--error {\n background: var(--alert-box-error-bg);\n}\n\n.alertBox--error svg {\n color: var(--alert-box-error-icon);\n}\n","import * as React from 'react';\nimport {useCallback, useEffect, useRef, useState} from 'react';\nimport {Pause, Play} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport styles from './AudioPlayer.module.css';\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 styles.playButton,\n 'inline-flex items-center justify-center',\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={cn(\n styles.track,\n 'h-1 flex-1 cursor-pointer overflow-hidden rounded-full',\n )}\n onClick={handleSeek}\n >\n <div\n className={cn(\n styles.progress,\n 'h-full transition-all duration-100 ease-linear',\n )}\n style={{width: `${progress}%`}}\n />\n </div>\n <span className={cn(styles.time, 'min-w-10 text-xs font-medium')}>\n {isPlaying || currentTime > 0\n ? formatTime(currentTime)\n : formatTime(duration)}\n </span>\n </>\n )}\n </div>\n );\n}\n\nAudioPlayer.displayName = 'AudioPlayer';\n",".playButton {\n background: var(--audio-player-button-bg);\n border-radius: var(--audio-player-button-radius);\n}\n\n.playButton:hover {\n background: var(--audio-player-button-hover-bg);\n}\n\n.playButton svg {\n color: var(--audio-player-icon-color);\n}\n\n.track {\n background: var(--audio-player-track-bg);\n}\n\n.progress {\n background: var(--audio-player-progress-bg);\n}\n\n.time {\n color: var(--audio-player-time-color);\n}\n","import * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport {cn} from '../lib/cn';\nimport styles from './Avatar.module.css';\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',\n !fallbackClassName && styles.fallback,\n fallbackClassName,\n )}\n >\n {fallback}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n));\n\nAvatar.displayName = 'Avatar';\n",".fallback {\n background: var(--avatar-fallback-bg);\n color: var(--avatar-fallback-text);\n}\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-chekin-blue focus-visible:ring-[3px] focus-visible:ring-chekin-blue/20',\n 'aria-invalid:border-chekin-red aria-invalid:ring-chekin-red/20',\n ],\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-chekin-blue text-white [a&]:hover:bg-chekin-blue-hover',\n secondary:\n 'border-transparent bg-chekin-gray-3 text-chekin-navy [a&]:hover:bg-chekin-gray-3/80',\n destructive:\n 'border-transparent bg-chekin-red text-white [a&]:hover:bg-chekin-red/90',\n outline:\n 'border-chekin-gray-3 text-chekin-navy [a&]:hover:bg-chekin-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';\nimport styles from './BetaBadge.module.css';\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 styles.betaBadge,\n 'rounded-sm px-2 py-1 text-sm/4 font-semibold uppercase',\n readOnly && styles['betaBadge--readonly'],\n className,\n )}\n {...props}\n >\n {text || t('beta')}\n {children}\n </div>\n );\n}\n\nBetaBadge.displayName = 'BetaBadge';\n",".betaBadge {\n background: var(--beta-badge-bg);\n color: var(--beta-badge-text);\n}\n\n.betaBadge--readonly {\n background: var(--beta-badge-readonly-bg);\n color: var(--beta-badge-readonly-text);\n}\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-chekin-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-chekin-gray-3',\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-chekin-gray-3',\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-chekin-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-chekin-gray-3',\n 'bg-chekin-surface-input-empty px-4 py-2 text-sm font-semibold text-chekin-gray-1',\n 'data-[state=active]:z-10 data-[state=active]:cursor-default data-[state=active]:bg-white',\n 'data-[state=active]:text-chekin-navy data-[state=active]:shadow-none',\n 'hover:text-chekin-navy',\n ],\n material: [\n 'rounded-none border-0 bg-transparent px-4 py-2 text-base font-medium text-chekin-gray-1',\n 'hover:text-chekin-blue',\n 'data-[state=active]:border-b-[3px] data-[state=active]:border-chekin-blue',\n 'data-[state=active]:bg-transparent data-[state=active]:font-semibold data-[state=active]:text-chekin-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 * as React from 'react';\nimport {forwardRef, useEffect, useState} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\nimport styles from './BoxOptionSelector.module.css';\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 switchComponent?: React.ComponentType<{\n id: string;\n value: boolean;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n onChange: (checked: boolean) => void;\n }>;\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 switchComponent: SwitchComponent,\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 styles.boxOption,\n 'flex min-h-[116px] w-full max-w-[400px] cursor-pointer flex-col gap-4 rounded-lg border p-4 transition-all duration-200',\n isSelected && styles['boxOption--selected'],\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 && SwitchComponent && (\n <div\n onClick={event => event.stopPropagation()}\n className=\"flex items-center gap-2\"\n >\n <SwitchComponent\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-chekin-surface-pressed text-chekin-blue'\n : 'bg-chekin-surface-input-empty text-chekin-gray-1',\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-chekin-gray-1\">\n {description}\n </p>\n </div>\n );\n },\n);\n\nBoxOptionSelector.displayName = 'BoxOptionSelector';\n",".boxOption {\n border-color: var(--box-option-border);\n background: var(--box-option-bg);\n}\n\n.boxOption:hover {\n background: var(--box-option-hover-bg);\n}\n\n.boxOption--selected {\n border-color: var(--box-option-selected-border);\n background: var(--box-option-selected-bg);\n}\n\n.boxOption--selected:hover {\n background: var(--box-option-selected-bg);\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 <span className=\"inline-flex items-center gap-1.5\">\n <Spinner />\n {showLoadingLabel ? <span>{loadingText || t('please_wait')}</span> : null}\n </span>\n ) : (\n <span className=\"inline-flex items-center gap-2\">{children}</span>\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 fill=\"currentColor\"\n d=\"M4 12a8 8 0 0 1 8-8v4a4 4 0 0 0-4 4H4z\"\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: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(--button-group-text-border)] bg-[var(--button-group-text-bg)] px-2.5 text-sm font-medium text-[var(--button-group-text-color)]',\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(--buttons-group-label-color)]\">\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-chekin-card border border-chekin-gray-3 bg-white text-chekin-navy shadow-chekin-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-chekin-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 type {ReactNode} from 'react';\nimport {Check} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from '../tooltip';\n\nexport type ChannelOption = {\n icon: ReactNode;\n label: string;\n value: string;\n};\n\nexport type ChannelSelectorProps = {\n options: ChannelOption[];\n selectedValues: string[];\n readOnlyValues?: string[];\n onChange: (values: string[]) => void;\n};\n\nexport function ChannelSelector({\n options,\n selectedValues,\n readOnlyValues = [],\n onChange,\n}: ChannelSelectorProps) {\n const handleToggle = (value: string) => {\n if (readOnlyValues.includes(value)) return;\n\n const newValues = selectedValues.includes(value)\n ? selectedValues.filter(selectedValue => selectedValue !== value)\n : [...selectedValues, value];\n\n onChange(newValues);\n };\n\n return (\n <div className=\"flex gap-chekin-2\">\n <TooltipProvider>\n {options.map(option => {\n const isSelected = selectedValues.includes(option.value);\n const isReadOnly = readOnlyValues.includes(option.value);\n\n return (\n <Tooltip key={option.value}>\n <TooltipTrigger asChild>\n <Button\n variant=\"secondary\"\n size=\"icon\"\n type=\"button\"\n onClick={() => handleToggle(option.value)}\n disabled={isReadOnly}\n className={cn(\n 'relative h-10 w-10 rounded-lg border-2 bg-white p-0 transition-all',\n isSelected\n ? 'border-chekin-blue bg-chekin-blue/10'\n : 'border-chekin-gray-3 hover:border-chekin-blue/30',\n isReadOnly ? 'cursor-default opacity-100' : 'cursor-pointer',\n )}\n >\n <span className=\"text-chekin-navy\">{option.icon}</span>\n {isSelected && (\n <span className=\"absolute -right-1 -top-1 flex h-4 w-4 items-center justify-center rounded-full bg-chekin-blue\">\n <Check className=\"h-2.5 w-2.5 text-white\" strokeWidth={3} />\n </span>\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{option.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n })}\n </TooltipProvider>\n </div>\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-white text-chekin-navy shadow-[0_0_10px_0_rgba(143,143,143,0.30)]':\n variant === 'light',\n 'bg-chekin-navy text-white': 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-white fill-white': variant === 'light',\n 'bg-chekin-navy fill-chekin-navy': 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 * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport {Check} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport interface BaseCheckboxProps extends React.ComponentPropsWithoutRef<\n typeof CheckboxPrimitive.Root\n> {\n loading?: boolean;\n readOnly?: boolean;\n}\n\nexport const BaseCheckbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n BaseCheckboxProps\n>(({className, loading, onCheckedChange, disabled, readOnly, ...props}, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-5 w-5 shrink-0 rounded-sm border border-solid border-chekin-blue',\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]:bg-chekin-blue data-[state=checked]:text-white',\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=\"h-5 w-5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\n\nBaseCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {Label} from '../label';\nimport {BaseCheckbox} from './BaseCheckbox';\n\nexport interface CheckboxProps {\n id?: string;\n label?: string;\n value?: boolean;\n onChange?: (checked: boolean) => void;\n onWrapperClick?: (checked: boolean) => void;\n disabled?: boolean;\n readOnly?: boolean;\n loading?: boolean;\n className?: string;\n labelClassName?: string;\n checkboxClassName?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n id,\n label,\n value = false,\n onChange,\n onWrapperClick,\n className,\n labelClassName,\n checkboxClassName,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n\n return (\n <div\n className={cn('flex items-center gap-2', className)}\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={checked => onChange?.(checked === true)}\n className={checkboxClassName}\n {...props}\n />\n {label && (\n <Label\n htmlFor={checkboxId}\n className={cn(\n 'cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n labelClassName,\n )}\n >\n {label}\n </Label>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\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-chekin-small font-medium leading-none text-chekin-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 * 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 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 focus-visible:shadow-chekin-focus\"\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 '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-chekin-gray-separator\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n",".ErrorMessage {\n @apply mt-0.5 text-left text-sm font-medium text-chekin-red;\n}\n\n.ErrorMessage__disabled {\n opacity: 0.3;\n}\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './styles.module.css';\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 styles.ErrorMessage,\n disabled && styles.ErrorMessage__disabled,\n className,\n )}\n >\n {children}\n </div>\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 {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 <Clock {...iconProps} className={cn('text-chekin-blue', className)} />;\n case 'tick-blue':\n return <Check {...iconProps} className={cn('text-chekin-blue', className)} />;\n case 'tick-green':\n return <Check {...iconProps} className={cn('text-emerald-600', className)} />;\n case 'x-red':\n return <X {...iconProps} className={cn('text-chekin-red', className)} />;\n case 'clock-grey':\n default:\n return <Clock {...iconProps} className={cn('text-chekin-gray-2', className)} />;\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-chekin-surface-input-empty',\n text: 'text-chekin-gray-2',\n icon: 'clock-grey',\n },\n 'progress-blue': {\n container: 'bg-chekin-surface-autocomplete',\n text: 'text-chekin-blue',\n icon: 'clock-blue',\n },\n 'progress-blue-light': {\n container: 'bg-chekin-surface-pressed',\n text: 'text-chekin-blue',\n icon: 'clock-blue',\n },\n 'progress-grey': {\n container: 'bg-chekin-surface-input-empty',\n text: 'text-chekin-gray-2',\n icon: 'clock-grey',\n },\n 'success-blue': {\n container: 'bg-chekin-surface-autocomplete',\n text: 'text-chekin-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-chekin-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' | 'secondary' | '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 = 'secondary',\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-emerald-500\"\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 {type ReactNode, useEffect, useRef, useState} from 'react';\nimport {Button, type ButtonProps} from '../button';\n\nconst copiedTimeoutSeconds = 1.5;\n\nfunction copyToClipboard(value: string | number) {\n if (navigator.clipboard?.writeText) {\n void navigator.clipboard.writeText(String(value));\n return;\n }\n\n const textarea = document.createElement('textarea');\n textarea.value = String(value);\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n textarea.remove();\n}\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 = 'secondary',\n size = 'sm',\n}: CopyLinkButtonProps) {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n useEffect(\n () => () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n },\n [],\n );\n\n const copy = () => {\n if (!link) return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n copyToClipboard(link);\n setIsCopied(true);\n timeoutRef.current = setTimeout(\n () => setIsCopied(false),\n copiedTimeoutSeconds * 1000,\n );\n onCopiedLink?.();\n };\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 ? copiedExclamationText || labelText : labelText}\n </Button>\n );\n}\n","import {useTranslation} from 'react-i18next';\nimport {\n type ColumnDef,\n flexRender,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport {Table, TableBody, TableCell, TableHead, TableHeader, TableRow} from '../table';\n\nexport interface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n}\n\nexport function DataTable<TData, TValue>({columns, data}: DataTableProps<TData, TValue>) {\n const {t} = useTranslation();\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n });\n\n return (\n <div className=\"rounded-md border border-chekin-gray-3\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map(header => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\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-chekin-gray-3\">\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-chekin-surface-input-empty font-medium text-chekin-gray-1',\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-white 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-chekin-surface-input-empty 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-chekin-surface-input-empty',\n clickable && 'cursor-pointer hover:bg-chekin-surface-input-empty',\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-chekin-gray-1', 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",".bar {\n animation: loading-bar 0.9s linear infinite;\n}\n\n@keyframes loading-bar {\n 0% {\n left: -43%;\n width: 43%;\n }\n\n 70% {\n left: 42%;\n width: 58%;\n }\n\n 100% {\n left: 100%;\n width: 58%;\n }\n}\n","import {cn} from '../lib/cn';\nimport styles from './styles.module.css';\n\nexport type LoadingBarProps = {\n className?: string;\n};\n\nexport function LoadingBar({className}: LoadingBarProps) {\n return (\n <div className={cn('w-full p-0', className)}>\n <div className=\"relative h-1 w-full overflow-hidden rounded-full bg-white\">\n <div\n className={cn('absolute top-0 h-full rounded-full bg-chekin-blue', styles.bar)}\n />\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} 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 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 }\n>(\n (\n {className, showCloseButton = true, children, container, lockScroll = true, ...props},\n ref,\n ) => {\n const contentElement = (\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(dialogContentClasses, className)}\n {...props}\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 className={cn(dialogOverlayClasses, scrollableOverlayClasses)}>\n {contentElement}\n </DialogOverlay>\n ) : (\n <div className={cn(dialogOverlayClasses, scrollableOverlayClasses)}>\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-2 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 {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 {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\nexport function useOutsideClick<T extends Element>(\n elementRef: RefObject<T> | null,\n onOutsideClick: ((event: Event) => void) | null,\n nested?: string[] | string,\n) {\n const handleOutsideClick = useRef(onOutsideClick);\n handleOutsideClick.current = onOutsideClick;\n\n const checkNestedElements = useCallback(\n (event: Event) => {\n const checkIsElementClickedBySelector = (selector: string) => {\n const nestedElement = getDocument().querySelector(selector);\n return nestedElement?.contains(event.target as Node);\n };\n\n const checkDataAttribute = () => {\n const target = event.target;\n\n if (!target || !(target instanceof HTMLElement)) {\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 function handleClickOutside(event: Event) {\n const isNestedElement = checkNestedElements(event);\n\n if (\n elementRef?.current &&\n !elementRef.current.contains(event.target as Node) &&\n !isNestedElement\n ) {\n handleOutsideClick.current?.(event);\n }\n }\n\n getDocument().addEventListener('mousedown', handleClickOutside, true);\n getDocument().addEventListener('touchstart', handleClickOutside, true);\n return () => {\n getDocument().removeEventListener('mousedown', handleClickOutside, true);\n getDocument().removeEventListener('touchstart', handleClickOutside, true);\n };\n }, [checkNestedElements, elementRef]);\n}\n","import {useCallback, useLayoutEffect, useState} from 'react';\nimport {getWindow} from '../lib/utils';\n\nconst eventName = 'resize';\nexport function useScreenResize(maxWidth: string) {\n const [isInitialized, setIsInitialized] = useState(false);\n const [isMatch, setIsMatch] = useState(false);\n\n const handleResizeEvent = useCallback(() => {\n const adjustedMaxWidth = `${parseInt(maxWidth, 10) - 1}px`;\n const media = getWindow().matchMedia(`(max-width: ${adjustedMaxWidth})`);\n\n setIsInitialized(true);\n setIsMatch(media?.matches);\n }, [maxWidth]);\n\n useLayoutEffect(() => {\n handleResizeEvent();\n getWindow().addEventListener(eventName, handleResizeEvent);\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 {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 {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 {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 {useCallback, useEffect, useRef} from 'react';\n\nexport function useTimeout() {\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const clearTimeoutRef = useCallback(() => {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }, []);\n\n const scheduleTimeout = useCallback(\n (callback: () => void, delay: number) => {\n clearTimeoutRef();\n timeoutRef.current = setTimeout(callback, delay);\n },\n [clearTimeoutRef],\n );\n\n useEffect(() => clearTimeoutRef, [clearTimeoutRef]);\n\n return {scheduleTimeout, clearTimeoutRef};\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 {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 {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=\"secondary\" 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 <div\n ref={ref}\n className={cn(\n 'relative box-border flex min-h-10 items-center justify-between rounded-chekin-input bg-white px-[14px] font-medium shadow-none',\n 'pointer-events-auto transition-colors duration-500',\n disabled && 'cursor-progress opacity-50',\n loading && 'cursor-progress',\n (empty || readOnly) &&\n 'border-0 bg-chekin-surface-input-empty text-chekin-gray-1 hover:border-0',\n !disabled && !loading && 'cursor-pointer',\n className,\n )}\n style={{width: width ? `${width}px` : undefined}}\n {...props}\n >\n {children}\n </div>\n ),\n);\n\nDefaultSelectTrigger.displayName = 'SelectTrigger';\n","import {useTranslation} from 'react-i18next';\nimport {Download} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\nimport {Tooltip, TooltipContent, TooltipTrigger} from '../tooltip';\nimport {getCustomContainer} from '../lib/utils';\n\nexport type DownloadEntryFormsButtonProps = {\n disabled: boolean;\n onClick: () => void;\n label?: string;\n isLoading?: boolean;\n className?: string;\n};\n\nexport function DownloadEntryFormsButton({\n disabled,\n isLoading,\n className,\n onClick,\n label,\n}: DownloadEntryFormsButtonProps) {\n const {t} = useTranslation();\n\n return (\n <div className={cn('flex', className)}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n loading={isLoading}\n disabled={disabled}\n onClick={onClick}\n variant=\"secondary\"\n className=\"min-w-[95px]\"\n >\n <Download width={17} height={17} />\n {label || t('download_all')}\n </Button>\n </TooltipTrigger>\n <TooltipContent container={getCustomContainer()} variant=\"dark\" side=\"bottom\">\n {t('entry_forms')}\n </TooltipContent>\n </Tooltip>\n </div>\n );\n}\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';\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 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 RadixMenu from '@radix-ui/react-dropdown-menu';\nimport {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\n\nexport const DropdownMenu = RadixMenu.Root;\nexport const DropdownMenuTrigger = RadixMenu.Trigger;\nexport const DropdownMenuPortal = RadixMenu.Portal;\nexport const DropdownMenuGroup = RadixMenu.Group;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Content>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Content> & {\n container?: HTMLElement;\n }\n>(({className, sideOffset = 6, container, ...props}, ref) => (\n <RadixMenu.Portal container={container || getCustomContainer()}>\n <RadixMenu.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-[180px] rounded-chekin-standard p-[4px]',\n 'border border-chekin-gray-3 bg-white shadow-chekin-dropdown',\n '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 </RadixMenu.Portal>\n));\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nexport type DropdownMenuContentSide = React.ComponentPropsWithoutRef<\n typeof RadixMenu.Content\n>['side'];\n\nconst itemClasses = [\n 'relative flex h-8 cursor-pointer select-none items-center gap-chekin-1 rounded-chekin-input px-[10px]',\n 'font-sans text-[14px] leading-5 text-chekin-navy outline-none',\n 'data-[highlighted]:bg-chekin-surface-pressed data-[highlighted]:text-chekin-blue',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-30',\n];\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Item>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Item>\n>(({className, ...props}, ref) => (\n <RadixMenu.Item ref={ref} className={cn(itemClasses, className)} {...props} />\n));\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Label>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Label>\n>(({className, ...props}, ref) => (\n <RadixMenu.Label\n ref={ref}\n className={cn(\n 'px-[10px] py-[6px] font-sans text-[11px] uppercase leading-4 tracking-wide text-chekin-gray-2',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Separator>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Separator>\n>(({className, ...props}, ref) => (\n <RadixMenu.Separator\n ref={ref}\n className={cn('my-[4px] h-px bg-chekin-gray-3', className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\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('text-lg font-medium tracking-tight text-chekin-navy', className)}\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-chekin-gray-1 [&>a:hover]:text-chekin-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-chekin-surface-autocomplete text-chekin-blue [&_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 text-center\">\n <div className=\"font-medium leading-6\">{title || t('nothing_found')}</div>\n {subtitle && (\n <div className=\"text-sm leading-6 text-chekin-gray-1\">{subtitle}</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-chekin-surface-input-empty',\n color: 'text-chekin-gray-2',\n },\n [HALO_ICON_STATUS.active]: {\n background: 'bg-chekin-surface-autocomplete',\n color: 'text-chekin-blue',\n },\n [HALO_ICON_STATUS.success]: {\n background: 'bg-emerald-50',\n color: 'text-emerald-600',\n },\n [HALO_ICON_STATUS.danger]: {\n background: 'bg-red-50',\n color: 'text-chekin-red',\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-chekin-blue hover:text-chekin-blue-hover',\n 'outline-none focus-visible:shadow-chekin-focus rounded-[4px]',\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 type {ReactNode} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Play} from 'lucide-react';\nimport {Button} from '../button';\nimport {CommingSoonBadge} from '../comming-soon-badge';\nimport {HaloIcon} from '../halo-icon';\nimport {useModalControls} from '../hooks';\nimport {Switch} from '../switch';\nimport {VideoPlayer} from '../video-player';\n\nexport interface FeatureCardProps {\n icon?: ReactNode;\n title: ReactNode;\n description: string;\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n tutorialVideoLink?: string;\n disabled?: boolean;\n comingSoon?: boolean;\n}\n\nexport function FeatureCard({\n icon,\n title,\n description,\n checked,\n onCheckedChange,\n tutorialVideoLink,\n disabled = false,\n comingSoon = false,\n}: FeatureCardProps) {\n const {t} = useTranslation();\n const {\n isOpen: isVideoTutorialOpen,\n openModal: openVideoTutorial,\n closeModal: closeVideoTutorial,\n } = useModalControls();\n\n return (\n <div className=\"flex max-w-[816px] items-center justify-between rounded-lg border border-chekin-gray-3 p-4 opacity-100\">\n <div className=\"flex items-start gap-4\">\n {icon && (\n <HaloIcon status=\"ACTIVE\" size=\"XL\">\n {icon}\n </HaloIcon>\n )}\n <div>\n <div className=\"mb-1 flex items-center gap-2\">\n <h3 className=\"text-base font-semibold\">{title}</h3>\n {comingSoon && <CommingSoonBadge />}\n {tutorialVideoLink && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-3 gap-1 rounded-md bg-blue-50 px-2 py-1 text-blue-600 hover:bg-blue-100 hover:text-blue-700\"\n onClick={openVideoTutorial}\n >\n <Play className=\"h-4 w-4\" />\n {t('tutorial')}\n </Button>\n )}\n </div>\n <p className=\"text-sm font-medium text-chekin-gray-1\">{description}</p>\n </div>\n </div>\n <Switch disabled={disabled} value={checked} onChange={onCheckedChange} size=\"sm\" />\n {isVideoTutorialOpen && tutorialVideoLink && (\n <VideoPlayer\n src={tutorialVideoLink}\n title={t('liveness_video')}\n onClose={closeVideoTutorial}\n isFullScreen\n />\n )}\n </div>\n );\n}\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-chekin-focus',\n 'disabled:cursor-not-allowed disabled:opacity-50 aria-busy:cursor-wait aria-busy:opacity-50',\n 'data-[state=checked]:bg-chekin-blue data-[state=unchecked]:bg-chekin-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}\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 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 {useEffect, useRef, useState, type ChangeEvent, type MouseEvent} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {\n Loader2,\n Maximize,\n Minimize,\n Pause,\n Play,\n SkipBack,\n SkipForward,\n Volume2,\n VolumeX,\n X,\n} from 'lucide-react';\nimport {Button} from '../button';\nimport {useClickEscape} from '../hooks';\n\ntype VideoSource = 'file' | 'youtube' | 'vimeo';\n\nexport interface VideoPlayerProps {\n src: string;\n poster?: string;\n title?: string;\n onClose?: () => void;\n isFullScreen?: boolean;\n autoPlay?: boolean;\n}\n\nexport function VideoPlayer({\n src,\n poster,\n title,\n onClose,\n isFullScreen = false,\n autoPlay = false,\n}: VideoPlayerProps) {\n const {t} = useTranslation();\n const videoRef = useRef<HTMLVideoElement>(null);\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(false);\n const [isMuted, setIsMuted] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [isFullScreenMode, setIsFullScreenMode] = useState(isFullScreen);\n const [isLoading, setIsLoading] = useState(true);\n const [videoSource, setVideoSource] = useState<VideoSource>('file');\n const [youtubeEmbedUrl, setYoutubeEmbedUrl] = useState('');\n const [vimeoEmbedUrl, setVimeoEmbedUrl] = useState('');\n\n useClickEscape({enabled: isFullScreenMode, onClick: onClose});\n\n useEffect(() => {\n const youtubeRegex =\n /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([a-zA-Z0-9_-]{11})/;\n const vimeoRegex = /(?:vimeo\\.com\\/|vimeo\\.com\\/video\\/)(\\d+)/;\n\n const youtubeMatch = src.match(youtubeRegex);\n const vimeoMatch = src.match(vimeoRegex);\n\n if (youtubeMatch) {\n const videoId = youtubeMatch[1];\n setVideoSource('youtube');\n setYoutubeEmbedUrl(\n `https://www.youtube.com/embed/${videoId}?enablejsapi=1&rel=0&modestbranding=1${autoPlay ? '&autoplay=1' : ''}`,\n );\n setVimeoEmbedUrl('');\n setIsLoading(false);\n return;\n }\n\n if (vimeoMatch) {\n const videoId = vimeoMatch[1];\n setVideoSource('vimeo');\n setVimeoEmbedUrl(\n `https://player.vimeo.com/video/${videoId}?h=0&title=0&byline=0&portrait=0${autoPlay ? '&autoplay=1' : ''}`,\n );\n setYoutubeEmbedUrl('');\n setIsLoading(false);\n return;\n }\n\n setVideoSource('file');\n setYoutubeEmbedUrl('');\n setVimeoEmbedUrl('');\n }, [src, autoPlay]);\n\n useEffect(() => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n const updateDuration = () => {\n setDuration(video.duration);\n setIsLoading(false);\n };\n const updateTime = () => setCurrentTime(video.currentTime);\n const handleVideoEnd = () => {\n setIsPlaying(false);\n video.currentTime = 0;\n };\n const handleLoadStart = () => setIsLoading(true);\n const handleCanPlay = () => setIsLoading(false);\n\n video.addEventListener('loadedmetadata', updateDuration);\n video.addEventListener('timeupdate', updateTime);\n video.addEventListener('ended', handleVideoEnd);\n video.addEventListener('loadstart', handleLoadStart);\n video.addEventListener('canplay', handleCanPlay);\n\n return () => {\n video.removeEventListener('loadedmetadata', updateDuration);\n video.removeEventListener('timeupdate', updateTime);\n video.removeEventListener('ended', handleVideoEnd);\n video.removeEventListener('loadstart', handleLoadStart);\n video.removeEventListener('canplay', handleCanPlay);\n };\n }, [videoSource]);\n\n useEffect(() => {\n if (isFullScreenMode && videoRef.current && videoSource === 'file') {\n void videoRef.current.play();\n setIsPlaying(true);\n }\n }, [isFullScreenMode, videoSource]);\n\n const togglePlay = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n if (isPlaying) {\n video.pause();\n } else {\n void video.play();\n }\n\n setIsPlaying(!isPlaying);\n };\n\n const toggleMute = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n video.muted = !isMuted;\n setIsMuted(!isMuted);\n };\n\n const handleSeek = (event: ChangeEvent<HTMLInputElement>) => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n const newTime = Number.parseFloat(event.target.value);\n video.currentTime = newTime;\n setCurrentTime(newTime);\n };\n\n const toggleFullScreen = () => {\n if (!isFullScreen && !isFullScreenMode) {\n setIsFullScreenMode(true);\n return;\n }\n\n setIsFullScreenMode(false);\n onClose?.();\n };\n\n const formatTime = (timeInSeconds: number) => {\n const minutes = Math.floor(timeInSeconds / 60);\n const seconds = Math.floor(timeInSeconds % 60);\n return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n };\n\n const skipBackward = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n video.currentTime = Math.max(0, video.currentTime - 5);\n };\n\n const skipForward = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n video.currentTime = Math.min(video.duration, video.currentTime + 5);\n };\n\n const containerClasses = isFullScreenMode\n ? 'fixed inset-0 z-[300] flex cursor-pointer items-center justify-center bg-gradient-to-br from-black/95 via-black/90 to-black/95 backdrop-blur-sm animate-in fade-in-0 duration-500'\n : 'relative h-full w-full';\n\n const videoContainerClasses = isFullScreenMode\n ? 'w-full max-w-5xl cursor-default animate-in zoom-in-95 fade-in-0 duration-700 ease-out'\n : 'h-full w-full';\n\n const handleBackgroundClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget) {\n onClose?.();\n }\n };\n\n return (\n <div\n ref={containerRef}\n className={containerClasses}\n onClick={isFullScreenMode ? handleBackgroundClick : undefined}\n >\n {isFullScreenMode && (\n <div className=\"pointer-events-none absolute inset-0 overflow-hidden\">\n <div className=\"absolute left-1/4 top-1/4 h-2 w-2 animate-pulse rounded-full bg-white/20 duration-1000\" />\n <div className=\"absolute left-1/3 top-3/4 h-1 w-1 animate-pulse rounded-full bg-white/30 delay-500 duration-1000\" />\n <div className=\"absolute right-1/4 top-1/2 h-1.5 w-1.5 animate-pulse rounded-full bg-white/20 delay-1000 duration-1000\" />\n <div className=\"absolute bottom-1/4 right-1/3 h-1 w-1 animate-pulse rounded-full bg-white/25 delay-1500 duration-1000\" />\n <div className=\"absolute right-1/6 top-1/6 h-2 w-2 animate-pulse rounded-full bg-white/15 delay-2000 duration-1000\" />\n </div>\n )}\n\n {isFullScreenMode && onClose && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={onClose}\n className=\"absolute right-4 top-4 z-10 rounded-full text-white transition-all duration-300 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={t('close')}\n >\n <X className=\"h-6 w-6\" />\n </Button>\n )}\n\n {title && isFullScreenMode && (\n <div className=\"absolute left-4 top-4 z-10 animate-in slide-in-from-left-4 text-white delay-200 duration-500\">\n <h3 className=\"text-lg font-medium drop-shadow-lg\">{title}</h3>\n </div>\n )}\n\n {isLoading && (\n <div className=\"absolute inset-0 z-20 flex items-center justify-center bg-black/50\">\n <div className=\"flex items-center gap-3 text-white\">\n <Loader2 className=\"h-8 w-8 animate-spin\" />\n <span className=\"text-lg font-medium\">{t('loading_video')}</span>\n </div>\n </div>\n )}\n\n <div className={videoContainerClasses} onClick={event => event.stopPropagation()}>\n {videoSource === 'youtube' ? (\n <iframe\n ref={iframeRef}\n src={youtubeEmbedUrl}\n className={`w-full ${isFullScreenMode ? 'h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n allowFullScreen\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n onLoad={() => setIsLoading(false)}\n title={title || 'YouTube video player'}\n />\n ) : videoSource === 'vimeo' ? (\n <iframe\n ref={iframeRef}\n src={vimeoEmbedUrl}\n className={`w-full ${isFullScreenMode ? 'h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n allowFullScreen\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n onLoad={() => setIsLoading(false)}\n title={title || 'Vimeo video player'}\n />\n ) : (\n <>\n <video\n ref={videoRef}\n className={`w-full ${isFullScreenMode ? 'max-h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n poster={poster}\n onClick={togglePlay}\n playsInline\n autoPlay={autoPlay}\n >\n <source src={src} type=\"video/mp4\" />\n {t('video_not_supported')}\n </video>\n\n <div\n className={`absolute bottom-0 left-0 right-0 rounded-b-lg bg-gradient-to-t from-black/80 via-black/60 to-transparent p-3 transition-all duration-300 hover:from-black/90 hover:via-black/70 ${isFullScreenMode ? 'pb-6' : ''}`}\n >\n <div className=\"mb-3 flex items-center gap-2\">\n <input\n type=\"range\"\n min=\"0\"\n max={duration || 100}\n value={currentTime}\n onChange={handleSeek}\n className=\"h-2 w-full cursor-pointer appearance-none rounded-full bg-white/30 transition-all duration-200 hover:bg-white/40 [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:shadow-lg [&::-webkit-slider-thumb]:transition-all [&::-webkit-slider-thumb]:duration-200 [&::-webkit-slider-thumb]:hover:scale-125\"\n />\n </div>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={togglePlay}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={isPlaying ? t('pause') : t('play')}\n >\n {isPlaying ? (\n <Pause className=\"h-5 w-5\" />\n ) : (\n <Play className=\"h-5 w-5\" />\n )}\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={skipBackward}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={t('skip_backward')}\n >\n <SkipBack className=\"h-5 w-5\" />\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={skipForward}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={t('skip_forward')}\n >\n <SkipForward className=\"h-5 w-5\" />\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggleMute}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={isMuted ? t('unmute') : t('mute')}\n >\n {isMuted ? (\n <VolumeX className=\"h-5 w-5\" />\n ) : (\n <Volume2 className=\"h-5 w-5\" />\n )}\n </Button>\n\n <span className=\"text-sm font-medium text-white/90\">\n {formatTime(currentTime)} / {formatTime(duration || 0)}\n </span>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggleFullScreen}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={\n isFullScreenMode ? t('exit_full_screen') : t('enter_full_screen')\n }\n >\n {isFullScreenMode ? (\n <Minimize className=\"h-5 w-5\" />\n ) : (\n <Maximize className=\"h-5 w-5\" />\n )}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n","import {\n 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 = 'secondary',\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 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",".wrapper {\n display: flex;\n max-width: 1400px;\n padding: 24px;\n flex-direction: column;\n align-items: flex-start;\n gap: 24px;\n align-self: stretch;\n border: 1px solid #cecede;\n border-radius: 10px;\n container-type: inline-size;\n}\n\n.wrapperNested {\n border: initial;\n padding: 0;\n}\n\n.header {\n display: flex;\n margin: 0;\n padding: 0;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n color: #161643;\n font-size: 24px;\n font-style: normal;\n font-weight: 600;\n line-height: normal;\n}\n\n.subHeader {\n display: flex;\n margin: 0;\n padding: 8px 0;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n border-bottom: 1px solid #cecede;\n color: #161643;\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: normal;\n}\n\n.content {\n display: flex;\n align-items: flex-start;\n align-content: flex-start;\n gap: 16px;\n align-self: stretch;\n flex-wrap: wrap;\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\n\nexport type FormBoxContentProps = ComponentProps<'div'>;\n\nexport function Content({children, className, ...props}: FormBoxContentProps) {\n return (\n <div className={cn(styles.content, className)} {...props}>\n {children}\n </div>\n );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\n\nexport type FormBoxHeaderProps = ComponentProps<'h2'>;\n\nexport function Header({children, className, ...props}: FormBoxHeaderProps) {\n return (\n <h2 className={cn(styles.header, className)} {...props}>\n {children}\n </h2>\n );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\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(styles.wrapper, nested && styles.wrapperNested, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\n\nexport type FormBoxSubHeaderProps = ComponentProps<'h4'>;\n\nexport function SubHeader({children, className, ...props}: FormBoxSubHeaderProps) {\n return (\n <h4 className={cn(styles.subHeader, className)} {...props}>\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';\nimport styles from './styles.module.css';\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 styles.fieldBox,\n autocompleted && styles.fieldBoxAutocompleted,\n isErrorWrong && !autocompleted && styles.fieldBoxErrorWrong,\n !autocompleted && !isErrorWrong && !isEmpty && styles.fieldBoxFilled,\n !autocompleted && !isErrorWrong && isEmpty && styles.fieldBoxEmpty,\n isFocused && !hasError && styles.fieldBoxFocused,\n );\n\n const inputPlaceholder = fieldStyle === 'new' ? label : placeholder;\n const showFloatingLabel = fieldStyle === 'new' && !isEmpty && Boolean(label);\n\n return (\n <div className={cn(styles.container, className)}>\n {fieldStyle === 'current' && label && (\n <div className={styles.labelRow}>\n <label htmlFor={inputId} className={styles.labelText}>\n {label}\n </label>\n {optional && (\n <span className={styles.optionalText}>\n {'- '}\n <em>{optionalLabel || t('optional')}</em>\n </span>\n )}\n {tooltip && <div className={styles.tooltip}>{tooltip}</div>}\n </div>\n )}\n\n <div className={fieldBoxClassName}>\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\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 && <div className={styles.icon}>{icon}</div>}\n\n {showFloatingLabel && (\n <div\n className={cn(\n styles.floatingLabel,\n autocompleted && styles.floatingLabelAutocompleted,\n )}\n >\n <span\n className={cn(\n styles.floatingLabelText,\n isErrorWrong && styles.floatingLabelTextError,\n )}\n >\n {label}\n </span>\n </div>\n )}\n </div>\n\n {supportingText && <p className={styles.supportingText}>{supportingText}</p>}\n {error && <p className={styles.errorText}>{error}</p>}\n </div>\n );\n },\n);\n\nFreeTextField.displayName = 'FreeTextField';\n",".container {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 4px;\n width: 300px;\n}\n\n.labelRow {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.labelText,\n.optionalText {\n font-size: 16px;\n line-height: 16px;\n color: #161643;\n}\n\n.labelText {\n font-weight: 500;\n}\n\n.optionalText em {\n color: #9696b9;\n}\n\n.tooltip {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n\n.fieldBox {\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n height: 44px;\n padding: 10px 14px;\n border: 1px solid;\n border-radius: 8px;\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n}\n\n.fieldBoxEmpty {\n background-color: #f4f6f8;\n border-color: rgba(22, 22, 67, 0.2);\n}\n\n.fieldBoxFilled {\n background-color: white;\n border-color: #161643;\n}\n\n.fieldBoxErrorWrong {\n background-color: white;\n border-color: #ff2467;\n}\n\n.fieldBoxAutocompleted {\n background-color: #eff6ff;\n border-color: #161643;\n}\n\n.fieldBoxFocused {\n border-color: #385bf8;\n}\n\n.input {\n flex: 1 0 0;\n min-width: 0;\n min-height: 1px;\n padding: 0;\n border: none;\n background: transparent;\n color: #161643;\n font: inherit;\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n outline: none;\n}\n\n.input::placeholder {\n color: #6b6b95;\n font-weight: 500;\n}\n\n.icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n\n.supportingText {\n margin: 0;\n color: #9696b9;\n font-size: 12px;\n font-style: italic;\n line-height: normal;\n}\n\n.errorText {\n margin: 0;\n color: #ff2467;\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n text-align: right;\n}\n\n.floatingLabel {\n position: absolute;\n top: -8px;\n left: 13px;\n display: flex;\n align-items: center;\n height: 16px;\n padding: 0 3px;\n background: linear-gradient(to bottom, transparent 50%, white 50%);\n pointer-events: none;\n}\n\n.floatingLabelAutocompleted {\n background: linear-gradient(to bottom, rgb(239 246 255 / 0%) 50%, #eff6ff 50%);\n}\n\n.floatingLabelText {\n color: #6b6b95;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n white-space: nowrap;\n}\n\n.floatingLabelTextError {\n color: #ff2467;\n}\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-chekin-input',\n circle: 'rounded-full',\n },\n tone: {\n neutral: 'bg-chekin-surface-input-empty text-chekin-gray-1',\n info: 'bg-chekin-surface-pressed text-chekin-blue',\n success: 'bg-[#E8FCF7] text-[#0F9F80]',\n warn: 'bg-[#FFF4E5] text-[#B86A00]',\n error: 'bg-[#FFE8EF] text-chekin-red',\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 ReactNode, forwardRef} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type GridItemsProps = {\n title?: string;\n children?: ReactNode;\n placeholder?: ReactNode;\n className?: string;\n};\n\nexport const GridItems = forwardRef<HTMLDivElement, GridItemsProps>(\n ({children, title, placeholder, className}, ref) => (\n <div\n ref={ref}\n className={cn('box-border -ml-[7px] max-w-[2125px] overflow-y-visible', className)}\n >\n {title && (\n <div className=\"mb-[25px] text-base font-semibold text-chekin-navy\">{title}</div>\n )}\n <div\n className={cn(\n 'grid-items__grid grid auto-rows-[85px] grid-cols-[repeat(auto-fill,386px)]',\n 'gap-x-[45px] gap-y-3 pl-[7px] pt-[7px]',\n '[&>div]:h-[77px]',\n )}\n >\n {children}\n <div className=\"flex h-[77px] items-center justify-center rounded-md bg-chekin-surface-input-empty\">\n {placeholder}\n </div>\n </div>\n </div>\n ),\n);\n\nGridItems.displayName = 'GridItems';\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-chekin-gray-2 outline-none transition-colors hover:text-chekin-blue',\n triggerAs === 'button' && 'focus-visible:shadow-chekin-focus',\n className,\n );\n const triggerStyle = {width: size, height: size};\n const triggerContent = (\n <>\n <CircleQuestionMark aria-hidden=\"true\" style={{width: size, height: size}} />\n <span className=\"absolute -left-0.5 -top-0.5 h-5 w-5\" />\n </>\n );\n\n return (\n <TooltipProvider>\n <TooltipRoot>\n <TooltipTrigger asChild onClick={onClick}>\n {triggerAs === 'button' ? (\n <button\n type=\"button\"\n aria-label={label}\n className={triggerClassName}\n style={triggerStyle}\n >\n {triggerContent}\n </button>\n ) : (\n <span aria-label={label} className={triggerClassName} style={triggerStyle}>\n {triggerContent}\n </span>\n )}\n </TooltipTrigger>\n <TooltipContent\n variant={variant}\n side={side}\n className={cn('max-w-64', contentClassName)}\n >\n {content}\n </TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n );\n}\n","import {type FC, type ReactNode, type SVGProps, forwardRef, memo} from 'react';\nimport type {IconNames} from './iconNames';\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'ref'> {\n name: IconNames;\n size?: number | string;\n color?: string;\n className?: string;\n fallback?: ReactNode;\n}\n\nconst MissingIcon = forwardRef<SVGSVGElement, Omit<IconProps, 'name'>>(\n ({size = 24, className = '', fallback = null, color, ...props}, ref) => {\n if (fallback) {\n return <>{fallback}</>;\n }\n\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color || 'currentColor'}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 9 6 6\" />\n <path d=\"m15 9-6 6\" />\n </svg>\n );\n },\n);\nMissingIcon.displayName = 'MissingIcon';\n\nconst Icon = memo(\n forwardRef<SVGSVGElement, IconProps>(\n ({name: _name, size = 24, className = '', fallback = null, ...props}, ref) => (\n <MissingIcon\n ref={ref}\n size={size}\n className={className}\n fallback={fallback}\n {...props}\n />\n ),\n ),\n);\n\nIcon.displayName = 'Icon';\n\nclass IconRegistry {\n private static cache = new Map<string, Promise<FC<SVGProps<SVGSVGElement>>>>();\n\n static async load(name: string): Promise<FC<SVGProps<SVGSVGElement>>> {\n if (!this.cache.has(name)) {\n this.cache.set(\n name,\n Promise.reject(new Error(`Icon \"${name}\" asset loading is not configured`)),\n );\n }\n\n return this.cache.get(name)!;\n }\n\n static preload(names: string[]): Promise<void[]> {\n return Promise.all(\n names.map(name =>\n this.load(name)\n .then(() => undefined)\n .catch(() => undefined),\n ),\n );\n }\n}\n\nconst RegistryIcon = Icon;\n\nexport {Icon, RegistryIcon, IconRegistry};\n","import * as React from 'react';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\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-chekin-focus',\n ],\n {\n variants: {\n size: {\n s: 'w-8 h-8',\n m: 'w-10 h-10',\n l: 'w-[43px] h-[43px]',\n },\n shape: {\n rounded: 'rounded-chekin-input',\n circle: 'rounded-full',\n },\n variant: {\n primary: 'bg-chekin-blue text-white hover:brightness-95',\n secondary:\n 'bg-white text-chekin-navy border border-chekin-gray-3 hover:bg-chekin-surface-input-empty',\n ghost: 'bg-transparent text-chekin-gray-1 hover:bg-chekin-surface-input-empty',\n danger: 'bg-white text-chekin-red border border-chekin-gray-3 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}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {className, size, shape, variant, label, children, type = 'button', ...props},\n ref,\n ) => (\n <button\n ref={ref}\n type={type}\n aria-label={label}\n className={cn(iconButtonVariants({size, shape, variant}), className)}\n {...props}\n >\n {children}\n </button>\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';\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-chekin-input border border-chekin-gray-3 bg-white px-3 py-2 text-base text-chekin-navy',\n 'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n 'placeholder:text-base placeholder:font-medium placeholder:text-chekin-gray-2',\n 'disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n !readOnly && 'placeholder-shown:bg-chekin-surface-input-empty',\n !readOnly && 'focus-visible:outline-none focus-visible:shadow-chekin-focus',\n readOnly && 'cursor-default outline-none',\n className,\n )}\n {...props}\n />\n ),\n);\n\nInput.displayName = 'Input';\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-chekin-gray-3 text-base font-medium transition-all first:rounded-l-md first:border-l last:rounded-r-md',\n isActive && 'z-10 shadow-chekin-focus',\n error && 'border-chekin-red',\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-chekin-dropdown\"\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-blue)'\n : 'var(--chekin-text-gray-dark)';\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-chekin-surface-input-empty',\n isSelected && 'bg-chekin-blue/10',\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}\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}\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}\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}\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}\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}\n","import 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","import {useTranslation} from 'react-i18next';\nimport {AlertCircleIcon, CheckIcon, ClockIcon} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport const IV_BADGE_STATUS = {\n completed: 'completed',\n pending: 'pending',\n failed: 'failed',\n} as const;\n\nexport type GuestVerificationStatus =\n (typeof IV_BADGE_STATUS)[keyof typeof IV_BADGE_STATUS];\n\nexport interface IVStatusBadgeProps {\n status: GuestVerificationStatus;\n size?: 'sm' | 'md';\n className?: string;\n}\n\nexport function IVStatusBadge({status, size = 'md', className = ''}: IVStatusBadgeProps) {\n const {t} = useTranslation();\n const iconSize = size === 'sm' ? 'h-3 w-3' : 'h-3.5 w-3.5';\n const textSize = size === 'sm' ? 'text-xs' : 'text-sm';\n const baseClassName =\n 'inline-flex items-center gap-1 rounded-full border px-3 py-1 shadow-sm';\n\n if (status === IV_BADGE_STATUS.completed) {\n return (\n <div\n className={cn(\n baseClassName,\n 'border-green-200/50 bg-green-100 text-green-700',\n className,\n )}\n >\n <CheckIcon className={iconSize} />\n <span className={cn('font-medium', textSize)}>{t('iv_status.verified')}</span>\n </div>\n );\n }\n\n if (status === IV_BADGE_STATUS.pending) {\n return (\n <div\n className={cn(\n baseClassName,\n 'border-amber-200/50 bg-amber-100 text-amber-700',\n className,\n )}\n >\n <ClockIcon className={iconSize} />\n <span className={cn('font-medium', textSize)}>{t('iv_status.pending')}</span>\n </div>\n );\n }\n\n if (status === IV_BADGE_STATUS.failed) {\n return (\n <div\n className={cn(\n baseClassName,\n 'border-red-200/50 bg-red-100 text-red-700',\n className,\n )}\n >\n <AlertCircleIcon className={iconSize} />\n <span className={cn('font-medium', textSize)}>{t('iv_status.attention')}</span>\n </div>\n );\n }\n\n return null;\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-h-[90vh] max-w-[calc(100%-2rem)] flex-col border-none p-0 sm:max-w-[calc(100%-2rem)] lg:max-w-4xl',\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-chekin-gray-3 bg-white p-6\">\n <div>\n <DialogTitle className=\"text-lg font-semibold text-chekin-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-chekin-navy hover:bg-chekin-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-chekin-blue\" />\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-chekin-blue no-underline transition-all duration-75 ease-in-out',\n !disabled && 'hover:opacity-80 active:opacity-100',\n disabled && 'cursor-not-allowed text-chekin-gray-2',\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 {Loader2} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\n\nexport interface LoaderProps {\n size?: 'sm' | 'md' | 'lg';\n text?: string;\n className?: string;\n showText?: boolean;\n variant?: 'primary' | 'secondary' | 'ghost';\n}\n\nexport function Loader({\n size = 'md',\n text,\n className = '',\n showText = true,\n variant = 'primary',\n}: LoaderProps) {\n const {t} = useTranslation();\n const sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-8 w-8',\n lg: 'h-12 w-12',\n };\n\n const textSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n };\n\n const variantClasses = {\n primary: 'text-chekin-blue',\n secondary: 'text-chekin-gray-1',\n ghost: 'text-chekin-gray-2',\n };\n\n return (\n <div className={cn('flex flex-col items-center justify-center gap-2', className)}>\n <div className={cn('animate-spin', sizeClasses[size], variantClasses[variant])}>\n <Loader2 className=\"h-full w-full\" />\n </div>\n {showText && (\n <p className={cn(textSizeClasses[size], 'font-medium text-chekin-gray-1')}>\n {text || t('loading')}\n </p>\n )}\n </div>\n );\n}\n","import type {ReactNode} from 'react';\nimport {CircleQuestionMark, TrendingDown, TrendingUp} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {Tooltip} from '../tooltip';\nimport {METRIC_CARD_VARIANTS} from './types';\nimport styles from './MetricCard.module.css';\n\nexport type MetricCardProps = {\n title: string;\n value: string | number;\n icon: ReactNode;\n variant: METRIC_CARD_VARIANTS;\n tooltip?: string;\n percentage?: number;\n loading?: boolean;\n className?: string;\n};\n\nexport function MetricCard({\n title,\n value,\n icon,\n variant,\n tooltip,\n percentage,\n loading = false,\n className,\n}: MetricCardProps) {\n return (\n <div\n className={cn(\n styles.MetricCard,\n styles[`MetricCard--${variant}`],\n loading && styles['MetricCard--loading'],\n className,\n )}\n >\n <div className={styles.MetricCard__iconContainer}>{icon}</div>\n\n <div className={styles.MetricCard__content}>\n <div className={styles.MetricCard__header}>\n <h4 className={styles.MetricCard__title}>{title}</h4>\n {tooltip && (\n <Tooltip side=\"right\" content={tooltip} contentClassName=\"max-w-64\">\n <button\n type=\"button\"\n className={cn(\n 'inline-flex text-chekin-gray-1',\n styles.MetricCard__tooltip,\n )}\n aria-label={tooltip}\n >\n <CircleQuestionMark className=\"h-4 w-4\" />\n </button>\n </Tooltip>\n )}\n </div>\n\n <div className={styles.MetricCard__footer}>\n <div className={styles.MetricCard__value}>{value}</div>\n {!!percentage && (\n <div\n className={cn(\n styles.MetricCard__percentage,\n percentage < 0 ? styles['--negative'] : '',\n )}\n >\n {percentage < 0 ? <TrendingDown /> : <TrendingUp />}\n {percentage}%\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n",".MetricCard {\n @apply flex w-full min-w-52 gap-2 rounded-lg border border-chekin-gray-3 p-4;\n}\n\n.MetricCard--loading {\n @apply cursor-progress opacity-60;\n}\n\n.MetricCard__iconContainer {\n @apply flex h-6 w-6 shrink-0 items-center justify-center rounded-full mix-blend-multiply;\n}\n\n.MetricCard__content {\n @apply flex flex-1 flex-col gap-4;\n}\n\n.MetricCard__header {\n @apply flex items-center gap-1;\n}\n\n.MetricCard__title {\n @apply whitespace-nowrap text-base font-medium leading-6 text-chekin-navy;\n}\n\n.MetricCard__tooltip {\n @apply text-chekin-gray-1;\n}\n\n.MetricCard__footer {\n @apply flex items-center justify-between gap-2;\n}\n\n.MetricCard__value {\n @apply text-2xl font-bold leading-6;\n}\n\n.MetricCard--blue {\n color: #385cf8;\n background: linear-gradient(122deg, #e6f0ff 36.37%, #f6f9ff 86.4%);\n}\n\n.MetricCard--blue .MetricCard__iconContainer {\n background: #dbeafe;\n}\n\n.MetricCard--green {\n color: #2bc29f;\n background: linear-gradient(122deg, #ddfbf4 36.37%, #f5fefc 86.4%);\n}\n\n.MetricCard--green .MetricCard__iconContainer {\n background: #cff9ef;\n}\n\n.MetricCard--orange {\n color: #f5721a;\n background: linear-gradient(122deg, #ffeddc 36.37%, #fffaf5 86.4%);\n}\n\n.MetricCard--orange .MetricCard__iconContainer {\n background: #ffe5cd;\n}\n\n.MetricCard--purple {\n color: #9a51ff;\n background: linear-gradient(122deg, #f5edff 36.37%, #fcfaff 86.4%);\n}\n\n.MetricCard--purple .MetricCard__iconContainer {\n background: #f0e5ff;\n}\n\n.MetricCard--yellow {\n color: #ce8b0b;\n background: linear-gradient(122deg, #fff8e5 36.37%, #fffbef 86.4%);\n}\n\n.MetricCard--yellow .MetricCard__iconContainer {\n background: #ffeeb2;\n}\n\n.MetricCard__percentage {\n @apply inline-flex items-center gap-x-1 text-base font-semibold leading-6 text-emerald-600;\n}\n\n.MetricCard__percentage.--negative {\n @apply text-chekin-red;\n}\n","import {ValueOf} from '../lib/types';\n\nexport const METRIC_CARD_VARIANTS = {\n blue: 'blue',\n green: 'green',\n orange: 'orange',\n purple: 'purple',\n yellow: 'yellow',\n} as const;\n\nexport type METRIC_CARD_VARIANTS = ValueOf<typeof METRIC_CARD_VARIANTS>;\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';\nimport styles from './styles.module.css';\n\ntype Text = {\n title?: string | ReactNode;\n text?: string | ReactNode;\n};\n\ntype Icon = {\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\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} & 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 iconSrc,\n iconAlt,\n iconProps = {width: 84},\n buttons,\n lockScroll = true,\n container,\n modal,\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 className={cn(\n 'modal__content',\n styles.modal__content,\n scrollableOverlay && 'min-h-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('modal__close', styles.modal__close)}\n aria-label=\"Close\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n )}\n\n {(iconSrc || iconProps?.src) && (\n <div className={cn('modal__icon', styles.modal__icon)}>\n <img src={iconSrc} alt={iconAlt ?? ''} {...iconProps} />\n </div>\n )}\n {title ? (\n <DialogTitle className={cn('modal__title', styles.modal__title)}>\n {title}\n </DialogTitle>\n ) : (\n <DialogVisuallyHidden>\n <DialogTitle>Dialog</DialogTitle>\n </DialogVisuallyHidden>\n )}\n {text && (\n <DialogDescription className={cn('modal__text', styles.modal__text)}>\n {text}\n </DialogDescription>\n )}\n {children}\n {buttons && (\n <div className={cn('modal__buttons-wrapper', styles.modal__buttonsWrapper)}>\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', styles.modal__button, 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};\n",".modal__content {\n @apply flex h-auto min-w-[340px] flex-col items-center gap-y-6 rounded-md bg-white text-center;\n color: var(--chekin-navy);\n}\n\n.modal__close {\n @apply absolute right-4 top-4 z-10 rounded-full p-1 hover:bg-[#f4f6f8];\n color: var(--chekin-blue);\n}\n\n.modal__icon {\n @apply mx-auto mt-4;\n user-select: none;\n}\n\n.modal__title {\n @apply px-6 text-lg font-bold;\n}\n\n.modal__text {\n @apply text-base;\n}\n\n.modal__buttonsWrapper {\n @apply mb-2 mt-6 flex flex-col items-center justify-center gap-y-4;\n}\n\n.modal__button {\n @apply min-w-[210px];\n}\n","import {memo} from 'react';\nimport {Loader} from '../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-white opacity-70',\n visible ? 'flex' : 'hidden',\n className,\n )}\n >\n <div className=\"mb-[60px]\">\n <Loader size=\"lg\" showText={false} variant=\"secondary\" />\n </div>\n </div>\n));\n\nModalLoader.displayName = 'ModalLoader';\n","import type {ReactNode} from 'react';\nimport {Loader, type LoaderProps} from '../loader';\nimport {cn} from '../lib/cn';\n\nexport interface OverlayLoaderProps {\n isLoading: boolean;\n children: ReactNode;\n loaderSize?: LoaderProps['size'];\n loaderText?: string;\n showText?: boolean;\n loaderVariant?: LoaderProps['variant'];\n className?: string;\n overlayClassName?: string;\n}\n\nexport function OverlayLoader({\n isLoading,\n children,\n loaderSize = 'md',\n loaderText,\n showText = true,\n loaderVariant = 'primary',\n className = '',\n overlayClassName = '',\n}: OverlayLoaderProps) {\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-white/60',\n overlayClassName,\n )}\n >\n <Loader\n size={loaderSize}\n text={loaderText}\n showText={showText}\n variant={loaderVariant}\n />\n </div>\n )}\n </div>\n );\n}\n","import {useTranslation} from 'react-i18next';\nimport {Loader, type LoaderProps} from '../loader';\nimport {cn} from '../lib/cn';\n\nexport type PageLoaderProps = LoaderProps & {\n className?: string;\n description?: string;\n};\n\nexport function PageLoader({className, description, ...props}: PageLoaderProps) {\n const {t} = useTranslation();\n\n return (\n <div\n className={cn('flex min-h-[300px] flex-col items-center justify-center', className)}\n >\n <div className=\"flex flex-col items-center rounded-lg border border-chekin-gray-3 bg-white/80 p-8 shadow-sm backdrop-blur-sm\">\n <Loader size=\"lg\" {...props} variant=\"primary\" />\n <p className=\"mt-4 max-w-xs text-center text-sm text-chekin-gray-1\">\n {description || t('loading_data_description')}\n </p>\n </div>\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-chekin-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-chekin-gray-1\">{t('rows_per_page')}</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=\"secondary\"\n size=\"icon\"\n className=\"hidden size-8 lg:flex\"\n onClick={goToFirstPage}\n disabled={!canGoPrevious}\n >\n <span className=\"sr-only\">{t('go_to_first_page')}</span>\n <ChevronsLeft />\n </Button>\n )}\n <Button\n variant={isSimpleVariant ? 'link' : 'secondary'}\n size=\"icon\"\n className={cn('size-8', {\n '!text-chekin-gray-1': isSimpleVariant,\n })}\n onClick={goToPreviousPage}\n disabled={!canGoPrevious}\n >\n <span className=\"sr-only\">{t('go_to_previous_page')}</span>\n <ChevronLeft />\n </Button>\n <Button\n variant={isSimpleVariant ? 'link' : 'secondary'}\n size=\"icon\"\n className={cn('size-8', {\n '!text-chekin-gray-1': isSimpleVariant,\n })}\n onClick={goToNextPage}\n disabled={!canGoNext}\n >\n <span className=\"sr-only\">{t('go_to_next_page')}</span>\n <ChevronRight />\n </Button>\n {!isSimpleVariant && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className=\"hidden size-8 lg:flex\"\n onClick={goToLastPage}\n disabled={!canGoNext}\n >\n <span className=\"sr-only\">{t('go_to_last_page')}</span>\n <ChevronsRight />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\nimport * as RadixSelect from '@radix-ui/react-select';\nimport {cn} from '../lib/cn';\nimport {useCombinedRef} from '../hooks';\n\nexport const SelectRoot = RadixSelect.Root;\nexport const SelectValue = RadixSelect.Value;\nexport const SelectGroup = RadixSelect.Group;\nexport const SelectPortal = RadixSelect.Portal;\n\nexport const SelectTrigger = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Trigger>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Trigger>\n>(({className, children, ...props}, ref) => (\n <RadixSelect.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-between gap-chekin-1',\n 'h-10 px-[14px] w-full',\n 'rounded-chekin-standard bg-chekin-surface-input-empty',\n 'border border-[rgba(22,22,67,0.2)]',\n 'font-sans font-medium text-[14px] leading-5 text-chekin-navy',\n 'placeholder:text-chekin-gray-1',\n 'outline-none transition-colors',\n 'focus:border-chekin-navy focus:shadow-chekin-focus',\n 'data-[state=open]:border-chekin-navy',\n 'data-[placeholder]:text-chekin-gray-1',\n 'disabled:opacity-30 disabled:pointer-events-none',\n className,\n )}\n {...props}\n >\n {children}\n <RadixSelect.Icon asChild>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-chekin-gray-1\"\n aria-hidden=\"true\"\n >\n <path d=\"M3 5.5 L7 9.5 L11 5.5\" />\n </svg>\n </RadixSelect.Icon>\n </RadixSelect.Trigger>\n));\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport const SelectContent = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Content>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Content>\n>(({className, children, position = 'popper', ...props}, ref) => (\n <RadixSelect.Portal>\n <RadixSelect.Content\n ref={ref}\n position={position}\n sideOffset={6}\n className={cn(\n 'z-50 min-w-[var(--radix-select-trigger-width)] overflow-hidden',\n 'rounded-chekin-standard bg-white border border-chekin-gray-3',\n 'shadow-chekin-dropdown',\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 className,\n )}\n {...props}\n >\n <RadixSelect.Viewport className=\"p-[4px]\">{children}</RadixSelect.Viewport>\n </RadixSelect.Content>\n </RadixSelect.Portal>\n));\nSelectContent.displayName = 'SelectContent';\n\nexport const SelectItem = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Item>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Item>\n>(({className, children, ...props}, ref) => (\n <RadixSelect.Item\n ref={ref}\n className={cn(\n 'relative flex items-center gap-chekin-1',\n 'h-8 pl-[28px] pr-[10px] rounded-chekin-input cursor-pointer select-none',\n 'font-sans font-medium text-[14px] leading-5 text-chekin-navy',\n 'outline-none',\n 'data-[highlighted]:bg-chekin-surface-pressed data-[highlighted]:text-chekin-blue',\n 'data-[state=checked]:text-chekin-blue',\n 'data-[disabled]:opacity-30 data-[disabled]:pointer-events-none',\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-[8px] inline-flex items-center justify-center w-[14px] h-[14px]\">\n <RadixSelect.ItemIndicator>\n <svg\n viewBox=\"0 0 10 8\"\n className=\"w-[10px] h-[8px]\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M1 4.5 L3.8 7 L9 1\" />\n </svg>\n </RadixSelect.ItemIndicator>\n </span>\n <RadixSelect.ItemText>{children}</RadixSelect.ItemText>\n </RadixSelect.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport const SelectSeparator = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Separator>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Separator>\n>(({className, ...props}, ref) => (\n <RadixSelect.Separator\n ref={ref}\n className={cn('mx-[6px] my-[4px] h-px bg-chekin-gray-3', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = 'SelectSeparator';\n\nexport const SelectLabel = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Label>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Label>\n>(({className, ...props}, ref) => (\n <RadixSelect.Label\n ref={ref}\n className={cn(\n 'px-[10px] py-[6px] font-sans text-[12px] leading-4 text-chekin-gray-2 uppercase tracking-wide',\n className,\n )}\n {...props}\n />\n));\nSelectLabel.displayName = 'SelectLabel';\n\nexport interface SelectProps extends React.ComponentPropsWithoutRef<\n typeof RadixSelect.Root\n> {\n placeholder?: string;\n label?: string;\n supportingText?: string;\n errorText?: string;\n containerClassName?: string;\n triggerClassName?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convenience wrapper that renders a full labelled Select with trigger + content.\n * For advanced compositions, use the exported primitives directly.\n */\nexport const Select = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Trigger>,\n SelectProps\n>(\n (\n {\n placeholder,\n label,\n supportingText,\n errorText,\n containerClassName,\n triggerClassName,\n children,\n ...props\n },\n ref,\n ) => {\n const reactId = React.useId();\n const triggerId = props.name ?? reactId;\n const internalRef = React.useRef<React.ElementRef<typeof RadixSelect.Trigger>>(null);\n const combinedRef = useCombinedRef(ref, internalRef);\n\n return (\n <div className={cn('flex flex-col gap-chekin-1 w-[300px]', containerClassName)}>\n {label && (\n <label\n htmlFor={triggerId}\n className=\"text-chekin-navy font-sans font-medium text-[14px] leading-5\"\n >\n {label}\n </label>\n )}\n <SelectRoot {...props}>\n <SelectTrigger ref={combinedRef} id={triggerId} className={triggerClassName}>\n <RadixSelect.Value placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>{children}</SelectContent>\n </SelectRoot>\n <div className=\"flex justify-between min-h-[15px]\">\n {supportingText && !errorText && (\n <span className=\"text-chekin-gray-2 font-sans italic text-[12px] leading-[15px]\">\n {supportingText}\n </span>\n )}\n {errorText && (\n <span className=\"ml-auto text-chekin-red font-sans font-medium text-[12px] leading-4 text-right\">\n {errorText}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\nSelect.displayName = 'Select';\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 = 8, align = 'start', ...props}, ref) => (\n <RadixPopover.Portal>\n <RadixPopover.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(\n 'z-50 rounded-chekin-standard bg-white border border-chekin-gray-3 shadow-chekin-dropdown',\n '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 </RadixPopover.Portal>\n));\nPopoverContent.displayName = 'PopoverContent';\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';\nimport styles from './styles.module.css';\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 styles.radio__wrapper,\n (disabled || option.disabled) && styles.radio__wrapper_disabled,\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={cn(styles.radio__label, '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-chekin-blue text-chekin-blue',\n 'focus:outline-none focus-visible:shadow-chekin-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",".radio__wrapper {\n @apply flex cursor-pointer items-center gap-2;\n}\n\n.radio__wrapper_disabled {\n @apply cursor-default opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-70;\n}\n","import {cn} from '../lib/cn';\nimport {RadioGroupItem} from '../radio-group';\nimport {Radio} from './Radio';\nimport type {RadioProps} from './types';\n\nexport function RadioWithBorder({...props}: RadioProps) {\n return (\n <Radio\n {...props}\n renderOption={({option, isSelected}) => (\n <div\n className={cn(\n 'flex w-full items-start gap-3 rounded-lg border p-4',\n isSelected && 'border-chekin-blue bg-chekin-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=\"font-semibold\">{option.label}</p>\n {(option.data as {description?: string})?.description && (\n <p className=\"text-sm font-medium text-chekin-gray-1\">\n {(option.data as {description?: string}).description}\n </p>\n )}\n </div>\n </div>\n )}\n />\n );\n}\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-chekin-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';\nimport styles from './styles.module.css';\n\ntype Option = {\n label: string;\n value: number;\n};\n\nconst getStarColor = (optionValue: number) => (value: number) => {\n if (value >= optionValue) return 'var(--rating-star-color, #facc15)';\n return 'var(--text-grey-text, #777e91)';\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(className, styles.RatingRadioGroup)}>\n {label && <legend className={styles.RatingRadioGroup__legend}>{label}</legend>}\n <div className={cn(styles.RatingRadioGroup__list, 'RatingRadioGroup__list')}>\n {options.map(option => (\n <label key={option.value} className={styles.RatingRadioGroup__label}>\n <input\n className={styles.RatingRadioGroup__input}\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={styles.RatingRadioGroup__star}\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",".RatingRadioGroup__input {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n}\n\n.RatingRadioGroup__star {\n cursor: pointer;\n}\n\n.RatingRadioGroup .RatingRadioGroup__legend {\n margin-bottom: 8px;\n}\n\n.RatingRadioGroup {\n all: unset;\n position: relative;\n}\n\n.RatingRadioGroup__list {\n display: flex;\n gap: 8px;\n}\n\n.RatingRadioGroup__label input[type='radio']:focus-visible + .RatingRadioGroup__star {\n outline: 2px solid #385bf8;\n outline-offset: 2px;\n border-radius: 4px;\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 = '#DEDEEB',\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-chekin-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 {ChevronUp} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport type RotateIconProps = {\n active: boolean;\n className?: string;\n};\n\nexport function RotateIcon({active, className}: RotateIconProps) {\n return (\n <ChevronUp\n className={cn(\n 'h-4 w-4 transition-transform',\n !active ? 'rotate-180' : '',\n className,\n )}\n />\n );\n}\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(className, 'p-2')}\n data-testid=\"search-button\"\n aria-label={ariaLabel}\n type=\"button\"\n >\n {icon || <Search size={12} strokeWidth={4} className=\"text-chekin-gray-1\" />}\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-chekin-navy\">\n {label && <span className=\"min-w-0 truncate\">{label}</span>}\n {optionalLabel && (\n <span className=\"shrink-0 text-xs font-normal text-chekin-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-chekin-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-chekin-navy focus:border-chekin-gray-3',\n (loading || onReset) && 'pr-20',\n invalid &&\n 'border-[var(--status-danger)] text-[var(--status-danger)] placeholder:text-[var(--status-danger)]',\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-chekin-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-chekin-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 {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-emerald-600',\n blue: 'bg-chekin-blue',\n },\n },\n defaultVariants: {\n color: 'green',\n },\n },\n);\n","import type {VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {sectionTagVariants} from './sectionTagVariants';\n\nexport interface SectionTagProps extends VariantProps<typeof sectionTagVariants> {\n label: string;\n className?: string;\n}\n\nexport function SectionTag({label, color = 'green', className}: SectionTagProps) {\n return <div className={cn(sectionTagVariants({color}), className)}>{label}</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 {cn} from '../lib/cn';\nimport {Loader} from '../loader';\nimport {Tooltip} from '../tooltip';\nimport {SubSectionSize} from './constants';\nimport styles from './Section.module.css';\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 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-chekin-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 titleTooltip,\n loading,\n disabled,\n showLoader,\n linkContent,\n hidden,\n size,\n },\n ref,\n ) => (\n <div\n ref={ref}\n className={cn(\n styles.section,\n loading && styles.section_loading,\n disabled && styles.section_disabled,\n {'!hidden': hidden},\n className,\n )}\n >\n {(title || subtitle) && (\n <div className={styles.section__header}>\n {title && (\n <div\n className={cn(\n styles.section__title,\n size === SubSectionSize.L && styles.section__titleLarge,\n )}\n >\n {title}\n {titleTooltip && (\n <div className={styles.section__titleTooltip}>\n <TooltipInfo content={titleTooltip} />\n </div>\n )}\n {linkContent && (\n <div className={styles.section__titleLink}>{linkContent}</div>\n )}\n </div>\n )}\n {subtitle && (\n <div className={styles.section__subtitleWrapper}>\n <div className={styles.section__subtitle}>{subtitle}</div>\n {subtitleTooltip && (\n <div className={styles.section__subtitleTooltip}>\n <TooltipInfo content={subtitleTooltip} />\n </div>\n )}\n </div>\n )}\n </div>\n )}\n\n {loading && showLoader ? <Loader className={styles.section__loader} /> : children}\n </div>\n ),\n);\nSection.displayName = 'Section';\n\nconst SubSection = forwardRef<HTMLDivElement, SectionProps>(\n ({className, ...props}, ref) => (\n <Section ref={ref} className={cn(styles.section_sub, className)} {...props} />\n ),\n);\nSubSection.displayName = 'SubSection';\n\nconst DividingSubsection = forwardRef<HTMLDivElement, SectionProps>(\n ({className, ...props}, ref) => (\n <SubSection ref={ref} className={cn(styles.section_dividing, className)} {...props} />\n ),\n);\nDividingSubsection.displayName = 'DividingSubsection';\n\nexport {DividingSubsection, Section, SubSection, SubSectionSize};\n","export enum SubSectionSize {\n L,\n M,\n}\n",".section {\n @apply mb-6 box-border flex w-full cursor-default flex-col gap-6 rounded-lg border border-solid border-chekin-gray-3 bg-white px-6 py-10;\n}\n\n.section_loading {\n @apply cursor-progress;\n}\n\n.section_disabled {\n @apply pointer-events-none opacity-50;\n}\n\n.section__header {\n @apply flex flex-col gap-2;\n}\n\n.section__title {\n @apply flex max-w-[85%] items-center text-lg font-bold text-chekin-navy md:max-w-full;\n}\n\n.section__titleTooltip {\n @apply ml-2.5;\n}\n\n.section__titleLink {\n @apply ml-6 text-sm font-semibold text-chekin-blue no-underline hover:opacity-70 active:opacity-100;\n}\n\n.section__subtitleWrapper {\n @apply w-full max-w-[720px] md:max-w-full;\n}\n\n.section__subtitle {\n @apply inline text-base font-normal text-chekin-gray-1;\n}\n\n.section__subtitleTooltip {\n @apply ml-1.5 inline-block align-text-top;\n}\n\n.section__loader {\n @apply mx-auto mb-3 mt-2.5;\n}\n\n.section_sub {\n @apply m-0 box-border rounded-none border-none bg-transparent p-0;\n}\n\n.section_sub .section__title {\n @apply text-base font-semibold;\n}\n\n.section_sub .section__titleLarge {\n @apply text-lg font-bold;\n}\n\n.section_dividing {\n border: none;\n border-top: 1px solid var(--hr-line-color, #f1f1f1);\n padding-top: var(--section-gap, 24px);\n}\n","import {\n cloneElement,\n forwardRef,\n isValidElement,\n type ForwardedRef,\n type MouseEvent,\n type ReactNode,\n useEffect,\n} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectorOption} from '../lib/selector-option';\nimport {SelectorButton} from '../selector-button';\nimport styles from './styles.module.css';\n\nconst getValueArray = <T extends string | number>(value?: T | T[]): T[] => {\n if (value) {\n return Array.isArray(value) ? value : [value];\n }\n\n return [];\n};\n\nfunction getSelectorContent(\n label: 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 } as Record<string, unknown>);\n }\n\n return label;\n}\n\nexport type SelectorsProps<\n T extends string | number,\n M extends boolean | undefined = undefined,\n> = {\n options: SelectorOption<T>[];\n onClick?: (\n event: MouseEvent<HTMLInputElement>,\n value: SelectorOption<T>,\n ) => void | {shouldPrevent: boolean};\n className?: string;\n onAnySelectorActive?: (isActive: boolean) => void;\n variant?: 'TAB' | 'DEFAULT';\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 size?: string;\n} & (M extends true\n ? {\n value?: T[];\n onChange?: (value: T[], event: MouseEvent<HTMLInputElement>) => void;\n }\n : {\n value?: T;\n onChange?: (value: T, event: MouseEvent<HTMLInputElement>) => void;\n });\n\nfunction SelectorsInternal<\n T extends string | number,\n M extends boolean | undefined = undefined,\n>(\n {\n className,\n loading,\n disabled,\n value,\n options = [],\n variant = 'DEFAULT',\n onAnySelectorActive,\n onClick,\n onChange,\n readOnly,\n minSelected = 0,\n disabledItems,\n readonlyItems,\n label,\n multiple = true,\n size = 'md',\n }: SelectorsProps<T, M>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const handleChange =\n (option: SelectorOption<T>) => (event: MouseEvent<HTMLInputElement>) => {\n event.preventDefault();\n const valueArray = getValueArray(value);\n if (disabled || disabledItems?.includes(option.value)) return;\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<HTMLInputElement>) => void)?.(\n newSelected,\n event,\n );\n } else {\n (onChange as (value: T, event: MouseEvent<HTMLInputElement>) => 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 return (\n <>\n {label && (\n <div className={styles.labelWrapper}>\n <div className={cn(styles.name, 'label')}>{label}</div>\n </div>\n )}\n <div\n ref={ref}\n className={cn(className, {\n [styles.selectorsWrapperTab]: variant === 'TAB',\n [styles.selectorsWrapperDefault]: variant !== 'TAB',\n })}\n >\n {options.map((option, index) => {\n const isSelected = getValueArray(value).includes(option.value);\n const isDisabled =\n disabled || disabledItems?.includes(option.value) || option.disabled;\n const isMinSelected = getValueArray(value).length <= minSelected;\n const isReadOnly =\n readOnly ||\n (isMinSelected && isSelected) ||\n readonlyItems?.includes(option.value);\n\n return (\n <SelectorButton\n key={`${option.value}-${index}`}\n loading={loading}\n readOnly={isReadOnly}\n type={multiple ? 'checkbox' : 'radio'}\n value={option.value}\n active={isSelected}\n disabled={isDisabled}\n onClick={event => onClick?.(event, option)}\n onChange={handleChange(option)}\n className={\n variant === 'TAB'\n ? cn(styles.selectorButton, {\n [styles.active]: isSelected,\n [styles.readOnly]: isReadOnly,\n [styles.sizeSm]: size === 'sm',\n })\n : 'selector-button'\n }\n >\n {getSelectorContent(option.label, isDisabled, isReadOnly, isSelected)}\n </SelectorButton>\n );\n })}\n </div>\n </>\n );\n}\n\nexport type SelectForwardType = <\n T extends string | number,\n M extends boolean | undefined = true,\n>(\n props: SelectorsProps<T, M> & {\n ref?: ForwardedRef<HTMLDivElement>;\n },\n) => ReturnType<typeof SelectorsInternal>;\n\n/**\n * @deprecated\n */\nexport const Selectors = forwardRef(SelectorsInternal) as SelectForwardType;\n",".styledButton {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-width: 117px;\n height: 48px;\n padding: 0 16px;\n border: 1px solid #cecede;\n border-radius: 6px;\n background-color: #f2f2fa;\n color: #9696b9;\n cursor: pointer;\n font-size: 15px;\n font-weight: 600;\n outline: none;\n text-align: left;\n user-select: none;\n transition: all 75ms ease-in-out;\n}\n\n.styledButton input {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n cursor: pointer;\n}\n\n.styledButton.disabled {\n cursor: not-allowed;\n opacity: 0.3;\n}\n\n.styledButton.loading {\n cursor: progress;\n}\n\n.styledButton:not(.disabled):hover {\n border-color: #385bf8;\n}\n\n.styledButton:not(.disabled):active {\n opacity: 1;\n}\n\n.styledButton.readOnly {\n cursor: default;\n}\n\n.styledButton.readOnly:not(.active):hover {\n border-color: transparent;\n}\n\n.styledButton.active {\n border-color: #385bf8;\n background: white;\n color: #385bf8;\n}\n\n.content {\n display: flex;\n align-items: center;\n height: 100%;\n}\n","import {type MouseEvent, type MouseEventHandler, type PropsWithChildren} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './styles.module.css';\n\ntype SelectorInputType = 'radio' | 'checkbox';\n\nexport type SelectorButtonProps = PropsWithChildren & {\n onChange: (event: MouseEvent<HTMLInputElement>) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void | {shouldPrevent: boolean};\n active?: boolean;\n className?: string;\n type?: SelectorInputType;\n disabled?: boolean;\n loading?: boolean;\n value?: string | number;\n readOnly?: boolean;\n};\n\nexport function SelectorButton({\n active,\n onClick,\n onChange,\n className,\n type = 'checkbox',\n loading,\n disabled,\n value,\n readOnly,\n children,\n ...props\n}: SelectorButtonProps) {\n const handleChange: MouseEventHandler<HTMLInputElement> = event => {\n if (disabled || readOnly || loading) {\n return;\n }\n\n const result = onClick?.(event);\n\n if (!result?.shouldPrevent) {\n void onChange(event);\n } else {\n event.preventDefault();\n }\n };\n\n return (\n <label\n className={cn(styles.styledButton, 'selector-button', className, {\n [styles.active]: active,\n [styles.disabled]: disabled,\n [styles.loading]: loading,\n [styles.readOnly]: readOnly,\n })}\n {...props}\n >\n <input\n onClick={handleChange}\n type={type}\n checked={active}\n value={value}\n disabled={readOnly || disabled}\n readOnly={readOnly}\n />\n <div className={styles.content}>{children}</div>\n </label>\n );\n}\n\nSelectorButton.displayName = 'SelectorButton';\n",".selectorsWrapperTab {\n @apply box-border flex h-auto max-h-none w-fit flex-wrap items-center rounded-md border border-chekin-gray-3;\n background: var(--field-empty-bq-color, #f4f6f8) 0 0 no-repeat padding-box;\n}\n\n.selectorsWrapperDefault {\n @apply flex w-full flex-wrap;\n margin-bottom: -10px;\n}\n\n.selectorsWrapperDefault .selectorButton {\n @apply mb-[10px] mr-[10px];\n}\n\n.selectorButton {\n @apply box-border whitespace-nowrap border border-transparent bg-transparent text-[15px] font-medium;\n color: var(--text-dark-grey, #6b6b95);\n min-width: auto;\n box-shadow: none;\n padding: 8px 21px;\n margin: 2px;\n min-height: 36px;\n transition-duration: 0s;\n flex: 1;\n}\n\n.selectorButton > div {\n @apply mx-auto my-0;\n}\n\n.selectorButton:not(.active):hover {\n @apply border-transparent text-white;\n background: var(--chekin-blue);\n opacity: 0.35;\n}\n\n.selectorButton.active {\n @apply cursor-default font-semibold text-white;\n background: var(--chekin-blue);\n box-shadow: 0 3px 4px var(--box-shadow-color, #00020334);\n border-color: var(--chekin-blue);\n}\n\n.selectorButton.active:hover {\n @apply opacity-100;\n box-shadow: 0 3px 4px var(--box-shadow-color, #00020334);\n}\n\n.selectorButton.readOnly:not(.active) {\n @apply cursor-default;\n color: var(--text-dark-grey, #6b6b95);\n}\n\n.selectorButton.readOnly:not(.active):hover {\n background: initial;\n color: var(--text-dark-grey, #6b6b95);\n}\n\n.selectorButton.sizeSm {\n @apply py-[7px] text-[14px] font-medium leading-6;\n}\n\n.selectorButton.active.sizeSm {\n @apply py-[7px] text-[14px] font-bold leading-6;\n}\n\n.labelWrapper {\n @apply flex;\n}\n\n.labelWrapper span {\n @apply ml-[5px];\n}\n\n.name {\n @apply box-border select-none overflow-x-hidden whitespace-nowrap text-left font-normal text-chekin-navy;\n font-size: 16px;\n min-height: 20px;\n margin-bottom: 6px;\n text-overflow: ellipsis;\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-chekin-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 * 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-chekin-navy shadow-lg transition ease-in-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-chekin-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-chekin-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-chekin-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-chekin-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-chekin-small opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:shadow-chekin-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-chekin-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-chekin-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('group/sidebar-wrapper flex min-h-svh w-full', className)}\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-chekin-surface-input-empty text-chekin-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-chekin-surface-input-empty p-0 text-chekin-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-chekin-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 bg-chekin-surface-input-empty 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-chekin-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-chekin-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-chekin-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-chekin-navy outline-none transition-transform hover:bg-chekin-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-chekin-gray-1 data-[active=false]:data-[highlighted=false]:hover:bg-chekin-surface-input-empty data-[active=false]:data-[highlighted=true]:bg-transparent data-[active=false]:data-[highlighted=true]:hover:bg-chekin-surface-input-empty data-[active=true]:data-[highlighted=false]:bg-chekin-surface-pressed data-[active=true]:data-[highlighted=false]:font-semibold data-[active=true]:data-[highlighted=false]:text-chekin-gray-1 data-[active=true]:data-[highlighted=true]:bg-chekin-surface-pressed data-[active=true]:data-[highlighted=true]:font-semibold data-[active=true]:data-[highlighted=true]:text-chekin-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-chekin-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-chekin-navy outline-none transition-transform hover:bg-chekin-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-chekin-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-chekin-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-chekin-gray-1 outline-none transition-colors duration-200 hover:bg-chekin-surface-input-empty hover:text-chekin-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-chekin-surface-pressed data-[active=true]:font-medium data-[active=true]:text-chekin-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-chekin-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 ? 'bg-chekin-surface-autocomplete' : 'bg-chekin-gray-3';\n }\n\n return highlighted ? 'bg-chekin-surface-pressed' : 'bg-chekin-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 ? 'text-chekin-blue' : 'text-chekin-gray-1',\n !isActive &&\n (highlighted\n ? 'group-hover/menu-button:bg-chekin-surface-autocomplete'\n : 'group-hover/menu-button:bg-chekin-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 React from 'react';\nimport {cn} from '../lib/cn';\nimport type {MainLoaderProps} from './types';\nimport {toCssSize} from '../lib/utils';\n\nconst CircularLoader = React.memo(\n ({visible = true, height, width, position, label, className}: 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 >\n <svg\n viewBox=\"25 25 50 50\"\n className=\"main-loader__svg text-[var(--circular-loader-color)]\"\n style={{\n width: toCssSize(width),\n height: toCssSize(height),\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 && <div className=\"text-sm font-medium text-chekin-gray-1\">{label}</div>}\n </div>\n );\n },\n);\n\nCircularLoader.displayName = 'CircularLoader';\n\nexport {CircularLoader};\n","import {type MouseEvent, memo} from 'react';\nimport {Pencil, Trash2} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\n\nexport type SmallGridSingleItemProps = {\n title?: string;\n subtitle?: string;\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 onDelete,\n onEdit,\n onClick,\n disabled,\n readOnly,\n error,\n className,\n }: SmallGridSingleItemProps) => {\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!disabled && onClick) onClick(event);\n };\n\n return (\n <div\n onClick={handleClick}\n className={cn(\n 'relative flex h-full w-full shrink-0 items-center justify-between gap-4',\n 'box-border rounded-md px-5 py-4 text-left text-base font-semibold text-chekin-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>\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-chekin-gray-2\">\n {subtitle}\n </div>\n )}\n </div>\n {!readOnly && (\n <div className=\"flex h-full items-center justify-end gap-2\">\n {onDelete && (\n <Button\n disabled={disabled}\n onClick={onDelete}\n size=\"icon\"\n variant=\"secondary\"\n >\n <Trash2 className=\"h-5 w-5 text-chekin-red\" />\n </Button>\n )}\n {onEdit && (\n <Button\n disabled={disabled}\n onClick={onEdit}\n size=\"icon\"\n variant=\"secondary\"\n >\n <Pencil className=\"h-5 w-5 text-chekin-blue\" />\n </Button>\n )}\n </div>\n )}\n {error && (\n <div className=\"absolute bottom-1 right-2 text-xs text-chekin-red\">{error}</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-chekin-surface-input-empty',\n className,\n )}\n aria-label=\"Open sorting menu\"\n >\n <ArrowDownUpIcon className=\"h-4 w-4 text-chekin-gray-1 group-hover/trigger:text-chekin-navy\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-full max-w-[256px]\" align=\"start\">\n <DropdownMenuItem\n className={cn(value === 'asc' && 'bg-chekin-surface-pressed text-chekin-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 className={cn(value === 'desc' && 'bg-chekin-surface-pressed text-chekin-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-50 -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-chekin-gray-3',\n isActive && 'bg-chekin-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-chekin-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-chekin-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 {type ComponentPropsWithoutRef, type ElementRef, forwardRef} from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nconst Tabs = TabsPrimitive.Root;\n\nexport const tabsListVariants = cva('inline-flex items-center', {\n variants: {\n variant: {\n default:\n 'h-10 justify-center rounded-md bg-chekin-surface-input-empty p-1 text-chekin-gray-1',\n underlined: 'gap-6 border-b border-chekin-gray-3',\n },\n },\n defaultVariants: {\n variant: 'default',\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',\n {\n variants: {\n variant: {\n default:\n 'rounded-sm px-3 py-1.5 text-sm font-medium focus-visible:shadow-chekin-focus data-[state=active]:bg-white data-[state=active]:text-chekin-navy data-[state=active]:shadow-sm',\n underlined:\n '-mb-px border-b-[3px] border-transparent py-2 text-base font-medium text-chekin-gray-1 data-[state=active]:border-chekin-blue data-[state=active]:font-semibold data-[state=active]:text-chekin-blue',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport type TabsTriggerProps = ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> &\n VariantProps<typeof tabsTriggerVariants>;\n\nconst TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({className, variant, ...props}, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(tabsTriggerVariants({variant}), className)}\n {...props}\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 ref={ref} className={className} tabIndex={-1} {...props} />\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-chekin-3',\n className,\n )\n : cn(\n 'rounded-b-md border border-t-0 border-chekin-gray-3 bg-white p-6 shadow-none',\n '[&>div:first-child]:flex [&>div:first-child]:flex-col',\n '[&>div:first-child]:gap-chekin-3',\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 {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 {ArrowRight} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {TASK_VARIANTS} from './types';\nimport styles from './TaskCard.module.css';\n\nexport type TaskCardProps = {\n title: string;\n description: string;\n count?: number;\n eventType?: TASK_VARIANTS;\n onClick?: () => void;\n className?: string;\n};\n\nexport function TaskCard({\n title,\n description,\n count,\n eventType = 'error',\n onClick,\n className,\n}: TaskCardProps) {\n const shouldShowCount = count !== undefined && count > 1;\n const shouldShowActions = shouldShowCount || onClick;\n\n return (\n <div\n className={cn(\n styles.TaskCard,\n styles[`TaskCard--${eventType}`],\n onClick && styles['TaskCard--clickable'],\n className,\n )}\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={styles.TaskCard__indicator} />\n\n <div className={styles.TaskCard__content}>\n <h4 className={styles.TaskCard__title}>{title}</h4>\n <p className={styles.TaskCard__date}>{description}</p>\n </div>\n\n {shouldShowActions && (\n <div className={styles.TaskCard__actions}>\n {shouldShowCount && (\n <div\n className={cn(\n styles.TaskCard__count,\n styles[`TaskCard__count--${eventType}`],\n )}\n >\n {count}\n </div>\n )}\n {onClick && (\n <button\n className={styles.TaskCard__arrowButton}\n onClick={event => {\n event.stopPropagation();\n onClick?.();\n }}\n aria-label=\"View details\"\n type=\"button\"\n >\n <ArrowRight className=\"h-5 w-5\" />\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n",".TaskCard {\n @apply relative box-border flex min-h-[48px] min-w-[360px] items-center gap-4 overflow-hidden rounded-lg p-2 transition-colors duration-200;\n}\n\n.TaskCard--error {\n @apply bg-red-50;\n}\n\n.TaskCard--warning {\n @apply bg-amber-50;\n}\n\n.TaskCard--clickable {\n @apply cursor-pointer;\n}\n\n.TaskCard--clickable:hover::before {\n @apply pointer-events-none absolute inset-0 rounded-lg content-[''];\n}\n\n.TaskCard--error.TaskCard--clickable:hover::before {\n @apply bg-red-100 mix-blend-multiply;\n}\n\n.TaskCard--warning.TaskCard--clickable:hover::before {\n @apply bg-amber-100 mix-blend-multiply;\n}\n\n.TaskCard__indicator {\n @apply relative w-1 flex-shrink-0 self-stretch rounded-sm;\n}\n\n.TaskCard--error .TaskCard__indicator {\n @apply bg-chekin-red;\n}\n\n.TaskCard--warning .TaskCard__indicator {\n @apply bg-amber-500;\n}\n\n.TaskCard__content {\n @apply flex min-w-0 flex-1 flex-col items-start;\n}\n\n.TaskCard__title {\n @apply m-0 w-full break-words text-base font-semibold leading-6 text-chekin-navy;\n}\n\n.TaskCard__date {\n @apply m-0 w-full text-sm font-medium leading-6 text-chekin-gray-1;\n}\n\n.TaskCard__actions {\n @apply flex flex-shrink-0 items-center gap-1;\n}\n\n.TaskCard__count {\n @apply relative flex h-6 w-6 items-center justify-center rounded-full text-center text-sm font-semibold leading-6;\n}\n\n.TaskCard__count::before {\n @apply absolute inset-0 rounded-full mix-blend-multiply content-[''];\n}\n\n.TaskCard__count--error {\n @apply text-chekin-red;\n}\n\n.TaskCard__count--error::before {\n @apply bg-red-100;\n}\n\n.TaskCard__count--warning {\n @apply text-amber-700;\n}\n\n.TaskCard__count--warning::before {\n @apply bg-amber-100;\n}\n\n.TaskCard__arrowButton {\n @apply flex h-8 w-0 min-w-0 cursor-pointer items-center justify-center overflow-hidden rounded-md border-0 bg-transparent p-0 text-chekin-gray-1 opacity-0;\n transition:\n width 0.3s ease-in-out,\n opacity 0.3s ease-in-out,\n min-width 0.3s ease-in-out;\n}\n\n.TaskCard--clickable:hover .TaskCard__arrowButton {\n @apply w-8 min-w-8 opacity-100;\n}\n\n.TaskCard__arrowButton:hover {\n @apply bg-black/5;\n}\n\n.TaskCard__arrowButton:focus-visible {\n @apply w-8 min-w-8 opacity-100 outline outline-2 outline-offset-2 outline-chekin-blue;\n}\n","import {ValueOf} from '../lib/types';\n\nexport const TASK_VARIANTS = {\n error: 'error',\n warning: 'warning',\n} as const;\n\nexport type TASK_VARIANTS = ValueOf<typeof TASK_VARIANTS>;\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-chekin-gray-3 bg-chekin-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-chekin-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-chekin-gray-3 bg-chekin-surface-input-empty font-semibold text-chekin-gray-1 hover:border-chekin-blue data-[state=on]:border-chekin-blue data-[state=on]:bg-white data-[state=on]:text-chekin-blue',\n tab: 'border border-transparent bg-transparent font-medium text-chekin-gray-1 hover:bg-chekin-blue hover:text-white hover:opacity-35 data-[state=on]:cursor-default data-[state=on]:border-chekin-blue data-[state=on]:bg-chekin-blue data-[state=on]:font-semibold data-[state=on]:text-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-chekin-surface-autocomplete data-[state=off]:hover:border-transparent data-[state=off]:hover:bg-chekin-surface-input-empty',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n theme: 'default',\n },\n },\n);\n","import {forwardRef, type ForwardedRef, type MouseEvent, useEffect} from 'react';\nimport type {SelectorOption} from '../lib/selector-option';\nimport {ToggleGroup, ToggleGroupItem} from './ToggleGroup';\n\nconst getValueArray = <T extends string | number>(value?: T | T[]): T[] => {\n if (value) {\n return Array.isArray(value) ? value : [value];\n }\n\n return [];\n};\n\nexport type TogglesProps<\n T extends string | number,\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 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,\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 label,\n multiple = true,\n }: TogglesProps<T, M>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const handleValueChange = (newValue: string | string[]) => {\n if (!onChange) return;\n\n if (multiple) {\n const newValueArray = Array.isArray(newValue) ? newValue : [newValue];\n const typedValues = newValueArray.map(item => {\n const option = options.find(opt => String(opt.value) === item);\n return option ? option.value : (item as T);\n });\n (onChange as (value: T[], event: MouseEvent<HTMLButtonElement>) => void)?.(\n typedValues,\n {} as MouseEvent<HTMLButtonElement>,\n );\n return;\n }\n\n const singleValue = Array.isArray(newValue) ? newValue[0] : newValue;\n const option = options.find(opt => String(opt.value) === singleValue);\n const typedValue = option ? option.value : (singleValue as T);\n (onChange as (value: T, event: MouseEvent<HTMLButtonElement>) => void)?.(\n typedValue,\n {} as MouseEvent<HTMLButtonElement>,\n );\n };\n\n const handleItemClick =\n (option: SelectorOption<T>) => (event: MouseEvent<HTMLButtonElement>) => {\n if (disabled || disabledItems?.includes(option.value) || option.disabled) {\n event.preventDefault();\n return;\n }\n\n const result = onClick?.(event, option);\n\n if (result?.shouldPrevent) {\n event.preventDefault();\n return;\n }\n\n const valueArray = getValueArray(value);\n\n if (multiple) {\n const hasBeenSelected = valueArray.includes(option.value);\n const newSelected = hasBeenSelected\n ? valueArray.filter(selectedValue => selectedValue !== option.value)\n : [...valueArray, option.value];\n\n (onChange as (value: T[], event: MouseEvent<HTMLButtonElement>) => void)?.(\n newSelected,\n event,\n );\n } else {\n (onChange as (value: T, event: MouseEvent<HTMLButtonElement>) => void)?.(\n option.value,\n event,\n );\n }\n };\n\n const isAnyActive = getValueArray(value).length > 0;\n useEffect(() => {\n onAnySelectorActive?.(isAnyActive);\n }, [isAnyActive, onAnySelectorActive]);\n\n const currentValue = getValueArray(value).map(item => String(item));\n\n const toggleGroupProps = {\n variant,\n size: size ?? (variant === 'tab' ? 'tab' : 'default'),\n theme,\n onValueChange: handleValueChange,\n ...(multiple\n ? {type: 'multiple' as const, value: currentValue}\n : {type: 'single' as const, value: currentValue[0] ?? ''}),\n };\n\n return (\n <div ref={ref} className={className}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"select-none text-base font-normal text-chekin-navy\">\n {label}\n </div>\n </div>\n )}\n <ToggleGroup className={groupClassName} {...toggleGroupProps}>\n {options.map((option, index) => {\n const isSelected = getValueArray(value).includes(option.value);\n const isDisabled =\n disabled || disabledItems?.includes(option.value) || option.disabled;\n const isMinSelected = getValueArray(value).length <= minSelected;\n const isItemReadOnly = readOnly || (isMinSelected && isSelected);\n\n return (\n <ToggleGroupItem\n key={`${option.value}-${index}`}\n value={String(option.value)}\n disabled={isDisabled || isItemReadOnly || loading}\n onClick={handleItemClick(option)}\n >\n {option.label}\n </ToggleGroupItem>\n );\n })}\n </ToggleGroup>\n </div>\n );\n}\n\nexport type TogglesForwardType = <\n T extends string | number,\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';\nimport styles from './textField.module.css';\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('relative flex w-full flex-col', styles.root, wrapperClassName)}\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', styles.root, 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-chekin-navy\">{'- '}</span>\n <span className=\"italic text-chekin-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 {ReactNode} from 'react';\n\nexport type FieldErrorProps = {\n id?: string;\n children: ReactNode;\n};\n\nexport const FieldError = ({id, children}: FieldErrorProps) => (\n <p id={id} className=\"mt-1 text-right text-xs font-medium text-chekin-red\" role=\"alert\">\n {children}\n </p>\n);\n","import type {ReactNode} from 'react';\n\nexport type SupportingTextProps = {\n id?: string;\n children: ReactNode;\n};\n\nexport const SupportingText = ({id, children}: SupportingTextProps) => (\n <p id={id} className=\"mt-1 text-xs italic text-chekin-gray-2\">\n {children}\n </p>\n);\n",".root {\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","import {type TextareaHTMLAttributes, forwardRef, useId} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './styles.module.css';\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(styles.container, className)}>\n <textarea\n ref={ref}\n id={inputId}\n name={name}\n disabled={disabled}\n className={cn(styles.textarea, textareaClassName, {\n [styles.textareaError]: invalid,\n [styles.textareaDisabled]: disabled,\n })}\n {...textareaProps}\n />\n {label && (\n <label\n htmlFor={inputId}\n className={cn(styles.label, {\n [styles.labelError]: invalid,\n [styles.labelDisabled]: disabled,\n })}\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\n",".container {\n position: relative;\n}\n\n.label {\n pointer-events: none;\n position: absolute;\n left: 0.75rem;\n top: 1rem;\n padding: 0 0.25rem;\n color: #6b6b95;\n transition: all 0.1s ease;\n}\n\n.container textarea:focus + .label,\n.container textarea:not(:placeholder-shown) + .label {\n top: -0.6rem;\n left: 0.5rem;\n background-color: white;\n font-size: 14px;\n font-weight: 500;\n}\n\n.container textarea:focus + .label {\n color: #385bf8;\n}\n\n.labelError {\n color: #ff2467;\n}\n\n.labelDisabled {\n color: #9696b9;\n}\n\n.textarea {\n box-sizing: border-box;\n min-height: 120px;\n width: 100%;\n resize: none;\n border: 1px solid #cecede;\n border-radius: 8px;\n background: #f4f6f8;\n padding: 12px 16px;\n color: #161643;\n font: inherit;\n outline: none;\n scrollbar-color: #777e91 transparent;\n scrollbar-gutter: stable;\n}\n\n.textarea:focus,\n.textarea:not(:placeholder-shown) {\n background-color: white;\n}\n\n.textarea::placeholder {\n color: #6b6b95;\n opacity: 1;\n}\n\n.textarea:focus {\n border-color: #385bf8;\n transition: background-color 0.1s ease-in-out;\n}\n\n.textareaError,\n.textareaError:focus {\n border-color: #ff2467;\n}\n\n.textareaDisabled {\n cursor: not-allowed;\n resize: none;\n border-color: #9696b9;\n background-color: #f4f6f8;\n color: #9696b9;\n}\n\n.textareaDisabled::placeholder {\n color: #9696b9;\n}\n","export enum LABEL_PLACEMENT {\n right,\n left,\n}\n",".Loader {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 13px;\n}\n\n.Loader > div {\n color: #9696b9;\n font-size: 14px;\n font-weight: 700;\n opacity: 0.5;\n text-transform: uppercase;\n}\n\n.dots {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 15%;\n}\n\n.dot {\n width: 22%;\n height: 22%;\n border-radius: 9999px;\n animation: three-dots 1.1s infinite ease-in-out both;\n}\n\n.dot:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.dot:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n@keyframes three-dots {\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n }\n\n 40% {\n transform: scale(1);\n }\n}\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\nimport {LABEL_PLACEMENT} from './constants';\nimport styles from './styles.module.css';\n\nexport type ThreeDotsLoaderProps = {\n height?: number;\n width?: number;\n color?: string;\n label?: string | ReactNode;\n className?: string;\n labelPlacement?: LABEL_PLACEMENT;\n};\n\nfunction Dots({\n height,\n width,\n color,\n}: Required<Pick<ThreeDotsLoaderProps, 'height' | 'width' | 'color'>>) {\n return (\n <span className={styles.dots} style={{height, width}} aria-hidden=\"true\">\n <span className={styles.dot} style={{backgroundColor: color}} />\n <span className={styles.dot} style={{backgroundColor: color}} />\n <span className={styles.dot} style={{backgroundColor: color}} />\n </span>\n );\n}\n\nexport function ThreeDotsLoader({\n height = 30,\n width = 30,\n color = '#E3E3E3FF',\n label = '',\n className,\n labelPlacement = LABEL_PLACEMENT.right,\n}: ThreeDotsLoaderProps) {\n const dots = <Dots color={color} height={height} width={width} />;\n\n if (label) {\n return (\n <div className={cn(styles.Loader, className)}>\n {labelPlacement === LABEL_PLACEMENT.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 <div className={className}>{dots}</div>;\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-chekin-gray-2 bg-chekin-surface-pressed py-1.5 pl-3 pr-1.5\"\n >\n <span className=\"text-nowrap text-sm font-medium leading-5 text-chekin-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-chekin-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 {Button, type ButtonProps} from '../button';\nimport {cn} from '../lib/cn';\n\nexport type WideButtonProps = Omit<ButtonProps, 'size'>;\n\nexport function WideButton({className, disabled, ...props}: WideButtonProps) {\n return (\n <Button\n variant=\"ghost\"\n className={cn(\n 'min-h-[84px] w-full max-w-[712px] flex-row justify-center bg-chekin-surface-pressed 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","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 aria-hidden=\"true\" className=\"h-5 w-5 animate-spin text-[#7A8399]\" />\n )}\n </span>\n ) : undefined;\n const sharedClasses = cn(\n 'relative flex border w-full items-center bg-[var(--form-background-color,#fff)] text-left transition-colors focus-visible:outline-none',\n isAirbnbVariant\n ? 'rounded-[var(--form-input-border-radius,12px)] border-[var(--form-border-color,#8c8c8c)] pl-4 pr-4 focus-visible:ring-2 focus-visible:ring-[var(--form-title-color,#222222)] focus-visible:ring-offset-2'\n : 'rounded-[10px] px-3.5 focus-visible:border-[#315EFB]',\n isAirbnbVariant ? (isRaised ? 'min-h-[60px]' : 'h-[60px]') : 'min-h-[48px]',\n hasInvalidState\n ? isAirbnbVariant\n ? 'border-[var(--status-danger)] bg-[var(--form-error-background,#FFF5F3)]'\n : 'border-[var(--status-danger)] bg-white'\n : isAirbnbVariant\n ? 'border-[var(--form-border-color,#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-0 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-[var(--form-background-color,#fff)] 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(--status-danger)]'\n : isAirbnbVariant\n ? 'text-[var(--form-placeholder-color,#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\n ? 'text-[var(--status-danger)]'\n : 'text-[var(--form-field-text-color,#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-[var(--form-label-input-gap,12px)] text-[16px] font-semibold leading-5 text-[var(--form-section-title-color,#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(--status-danger)]',\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(--status-danger)\"\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 className={cn(\n 'text-center mb-4 text-[20px] font-semibold leading-7',\n titleClassName,\n )}\n >\n {title}\n </div>\n ) : null}\n {description ? (\n <p\n className={cn(\n 'mt-3 text-center text-[14px] 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\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: `${option.label} (${option.value})`,\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 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 {\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(containerRef, isOpen && !isMobile ? () => setIsOpen(false) : null);\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,\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={helperTextId}\n errorId={error ? errorId : undefined}\n listboxId={listboxId}\n describedBy={describedBy}\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 {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(containerRef, open && !isMobile ? () => closeSelect() : null);\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\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 <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"],"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,wBAAAA;AAAA,EAAA,qBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["Content","Header","Root","Image","Separator","copyToClipboard","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","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_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","React","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react_i18next","import_react","styles_default","import_jsx_runtime","styles_default","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","import_react","import_react","import_react","import_react","import_react","import_react","import_react","import_react","import_react","copyToClipboard","copyToClipboard","import_react","import_react","import_react","import_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react_i18next","import_lucide_react","import_jsx_runtime","import_react","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_i18next","import_lucide_react","React","import_class_variance_authority","import_jsx_runtime","import_react","import_react_i18next","import_lucide_react","import_jsx_runtime","formatTime","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","styles_default","import_jsx_runtime","styles_default","React","import_class_variance_authority","import_jsx_runtime","import_react","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_jsx_runtime","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_react_i18next","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_react","import_lucide_react","import_react_i18next","import_jsx_runtime","Image","import_lucide_react","import_react_i18next","import_jsx_runtime","sizeClasses","import_lucide_react","import_jsx_runtime","import_react","import_lucide_react","styles_default","import_jsx_runtime","styles_default","import_react","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_jsx_runtime","import_react_i18next","import_lucide_react","React","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react","React","import_lucide_react","import_jsx_runtime","import_react","styles_default","import_jsx_runtime","styles_default","import_jsx_runtime","import_jsx_runtime","import_lucide_react","styles_default","import_jsx_runtime","styles_default","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_class_variance_authority","import_jsx_runtime","SectionTagColors","import_react","import_lucide_react","SubSectionSize","import_jsx_runtime","import_react","styles_default","import_jsx_runtime","styles_default","styles_default","import_jsx_runtime","styles_default","import_jsx_runtime","Separator","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","Separator","import_react","import_jsx_runtime","React","import_react","import_lucide_react","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","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_sonner","import_react","React","import_class_variance_authority","import_jsx_runtime","import_react","import_jsx_runtime","getValueArray","option","React","LabelPrimitive","import_class_variance_authority","import_react_i18next","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","styles_default","import_jsx_runtime","styles_default","LABEL_PLACEMENT","styles_default","import_jsx_runtime","styles_default","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","React","DialogPrimitive","import_jsx_runtime","Draggable","React","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_react_i18next","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","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","React","getOptionScrollTop","React","getOptionId","import_jsx_runtime","AirbnbSelect","getOptionId","SelectTrigger","import_jsx_runtime","React","import_react_i18next","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_react","import_jsx_runtime","options"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/accordion/Accordion.tsx","../src/lib/cn.ts","../src/accordion/Accordion.module.css","../src/alert-box/AlertBox.tsx","../src/alert-box/AlertBox.module.css","../src/audio-player/AudioPlayer.tsx","../src/audio-player/AudioPlayer.module.css","../src/avatar/Avatar.tsx","../src/avatar/Avatar.module.css","../src/badge/Badge.tsx","../src/beta-badge/BetaBadge.tsx","../src/beta-badge/BetaBadge.module.css","../src/bookmark-tabs/BookmarkTabs.tsx","../src/box-option-selector/BoxOptionSelector.tsx","../src/box-option-selector/BoxOptionSelector.module.css","../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/channel-selector/ChannelSelector.tsx","../src/tooltip/Tooltip.tsx","../src/lib/utils.ts","../src/checkbox/BaseCheckbox.tsx","../src/checkbox/Checkbox.tsx","../src/label/Label.tsx","../src/checkbox/CheckboxGroup.tsx","../src/scroll-area/ScrollArea.tsx","../src/error-message/styles.module.css","../src/error-message/ErrorMessage.tsx","../src/comming-soon-badge/CommingSoonBadge.tsx","../src/status-badge/StatusBadge.tsx","../src/copy-icon/CopyIcon.tsx","../src/copy-link-button/CopyLinkButton.tsx","../src/data-table/DataTable.tsx","../src/table/Table.tsx","../src/loading-bar/styles.module.css","../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-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-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-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-copy-to-clipboard.ts","../src/lib/copy-to-clipboard.ts","../src/hooks/use-timer.ts","../src/hooks/use-timeout.ts","../src/hooks/use-hover.ts","../src/hooks/use-key-down.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/download-entry-forms-button/DownloadEntryFormsButton.tsx","../src/dropdown-button/DropdownButton.tsx","../src/dropdown-menu/DropdownMenu.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/feature-card/FeatureCard.tsx","../src/switch/Switch.tsx","../src/video-player/VideoPlayer.tsx","../src/file-input-button/FileInputButton.tsx","../src/form-box/FormBox.module.css","../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/free-text-field/styles.module.css","../src/framed-icon/FramedIcon.tsx","../src/grid-items/GridItems.tsx","../src/help-tooltip/HelpTooltip.tsx","../src/icon/Icon.tsx","../src/icon-button/IconButton.tsx","../src/info-box/InfoBox.tsx","../src/image/Image.tsx","../src/input/Input.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/iv-status-badge/IVStatusBadge.tsx","../src/large-modal/LargeModal.tsx","../src/learn-more-button/LearnMoreButton.tsx","../src/link/Link.tsx","../src/image-full-screen-view/ImageFullScreenView.tsx","../src/loader/Loader.tsx","../src/metric-card/MetricCard.tsx","../src/metric-card/MetricCard.module.css","../src/metric-card/types.ts","../src/modal/Modal.tsx","../src/modal/styles.module.css","../src/modal-loader/ModalLoader.tsx","../src/overlay-loader/OverlayLoader.tsx","../src/page-loader/PageLoader.tsx","../src/pagination/Pagination.tsx","../src/select/Select.tsx","../src/popover/Popover.tsx","../src/radio/Radio.tsx","../src/radio-group/RadioGroup.tsx","../src/radio/useRadioOptions.ts","../src/radio/styles.module.css","../src/radio/RadioWithBorder.tsx","../src/rating-progress/RatingProgress.tsx","../src/rating-radio-group/RatingRadioGroup.tsx","../src/rating-radio-group/styles.module.css","../src/rating-stars/RatingStars.tsx","../src/rotate-icon/RotateIcon.tsx","../src/search-button/SearchButton.tsx","../src/search-input/SearchInput.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/section/Section.module.css","../src/selectors/Selectors.tsx","../src/selector-button/styles.module.css","../src/selector-button/SelectorButton.tsx","../src/selectors/styles.module.css","../src/separator/Separator.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/circular-loader/CircularLoader.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-placeholder/TablePlaceholder.tsx","../src/task-card/TaskCard.tsx","../src/task-card/TaskCard.module.css","../src/task-card/types.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/text-field/FieldError.tsx","../src/text-field/SupportingText.tsx","../src/text-field/textField.module.css","../src/textarea/Textarea.tsx","../src/textarea/styles.module.css","../src/three-dots-loader/constants.ts","../src/three-dots-loader/styles.module.css","../src/three-dots-loader/ThreeDotsLoader.tsx","../src/uploaded-files-list/UploadedFilesList.tsx","../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/searchable-select/SearchableSelect.tsx"],"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 './channel-selector';\nexport * from './checkbox';\nexport * from './comming-soon-badge';\nexport * from './copy-icon';\nexport * from './copy-link-button';\nexport * from './data-table';\nexport * from './dialog';\nexport * from './default-select-trigger';\nexport * from './download-entry-forms-button';\nexport * from './dropdown-button';\nexport * from './dropdown-menu';\nexport * from './empty';\nexport * from './empty-section-placeholder';\nexport * from './external-link';\nexport * from './feature-card';\nexport * from './file-input-button';\nexport * from './form-box';\nexport * from './free-text-field';\nexport * from './framed-icon';\nexport * from './grid-items';\nexport * from './halo-icon';\nexport * from './tooltip';\nexport * from './help-tooltip';\nexport * from './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 './iv-status-badge';\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 './loader';\nexport * from './metric-card';\nexport * from './modal';\nexport * from './modal-loader';\nexport * from './overlay-loader';\nexport * from './page-loader';\nexport * from './pagination';\nexport * from './popover';\nexport * from './radio';\nexport * from './radio-group';\nexport * from './rating-progress';\nexport * from './rating-radio-group';\nexport * from './rating-stars';\nexport * from './rotate-icon';\nexport * from './scroll-area';\nexport * from './search-button';\nexport * from './search-input';\nexport * from './section-tag';\nexport * from './section';\nexport * from './select';\nexport * from './selectors';\nexport * from './selector-button';\nexport * from './separator';\nexport * from './sheet';\nexport * from './sidebar';\nexport * from './skeleton';\nexport * from './circular-loader';\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-placeholder';\nexport * from './tabs';\nexport * from './task-card';\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 './video-player';\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 './searchable-select';\nexport * from './lib/selector-option';\nexport * from './lib/copy-to-clipboard';\nexport {toCssSize} from './lib/utils';\nexport * from './hooks';\nexport {cn} from './lib/cn';\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';\nimport styles from './Accordion.module.css';\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('accordion__item', styles.accordion__item, className)}\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 styles.accordion__trigger,\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 styles.accordion__icon,\n 'shrink-0 rounded-full p-0.5',\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 styles.accordion__content,\n // TODO Uncomment the next line when dropdown position is fixed\n // 'overflow-hidden',\n className,\n )}\n {...props}\n >\n <div\n className={cn(\n 'accordion__contentItem',\n styles.accordion__contentItem,\n contentClassName,\n )}\n >\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",".accordion__item {\n @apply transition-colors duration-200 ease-in-out;\n background: var(--accordion-item-bg);\n border-color: var(--accordion-item-border);\n border-radius: var(--accordion-item-radius);\n border-style: solid;\n border-width: 1px;\n border-top-color: var(--accordion-item-divider);\n box-shadow: 0 0 10px 0 rgba(143, 143, 143, 0.2);\n}\n\n:root[data-surface='guest'] .accordion__item {\n border-width: 0;\n border-top-width: 1px;\n box-shadow: none;\n}\n\n:root[data-surface='guest'] .accordion__item:first-child {\n border-top-width: 0;\n}\n\n.accordion__item[data-state='open'] {\n background: var(--accordion-item-open-bg);\n}\n\n.accordion__item[data-state='closed'] {\n background: var(--accordion-item-bg);\n}\n\n.accordion__item[data-state='closed']:hover {\n background: var(--accordion-item-hover-bg);\n}\n\n.accordion__trigger {\n @apply flex h-auto w-full flex-1 items-center justify-between text-left outline-none transition-colors duration-200;\n @apply hover:no-underline disabled:pointer-events-none;\n color: var(--accordion-trigger-color);\n font-family: var(--accordion-trigger-font-family);\n font-size: 18px;\n font-weight: var(--accordion-trigger-font-weight);\n gap: var(--accordion-trigger-gap);\n line-height: 28px;\n padding: 24px;\n}\n\n:root[data-surface='guest'] .accordion__trigger {\n font-size: 14px;\n line-height: 20px;\n padding: 16px 0;\n}\n\n@media (min-width: 479px) {\n :root[data-surface='guest'] .accordion__trigger {\n padding-bottom: 24px;\n padding-top: 24px;\n }\n}\n\n.accordion__trigger:focus-visible {\n box-shadow: var(--accordion-trigger-focus-shadow);\n}\n\n.accordion__trigger:disabled {\n opacity: var(--accordion-trigger-disabled-opacity);\n}\n\n.accordion__icon {\n color: var(--accordion-icon-color-closed);\n height: var(--accordion-icon-size);\n margin-left: auto;\n min-width: initial;\n width: 16px;\n}\n\n.accordion__trigger[data-state='open'] .accordion__icon {\n color: var(--accordion-icon-color-open);\n}\n\n:root[data-surface='guest'] .accordion__icon {\n width: 12px;\n}\n\n.accordion__icon svg {\n height: var(--accordion-icon-size);\n transition: transform 0.2s;\n width: var(--accordion-icon-size);\n}\n\n:root[data-surface='guest'] .accordion__icon svg {\n transform: rotate(270deg);\n}\n\n:root[data-surface='guest'] .accordion__trigger[data-state='open'] .accordion__icon svg {\n transform: rotate(90deg);\n}\n\n.accordion__content {\n @apply transition-all;\n @apply data-[state=closed]:animate-accordion-up;\n @apply data-[state=open]:animate-accordion-down;\n color: var(--accordion-content-color);\n font-size: var(--accordion-content-font-size);\n line-height: var(--accordion-content-line-height);\n}\n\n.accordion__content[data-state='closed'] {\n display: block;\n}\n\n:root[data-surface='guest'] .accordion__content[data-state='closed'] {\n display: none;\n}\n\n.accordion__contentItem {\n padding: 8px 24px 24px;\n}\n\n:root[data-surface='guest'] .accordion__contentItem {\n padding: 0;\n}\n","import * as React from 'react';\nimport {AlertCircle, Check, TriangleAlert, XCircle} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport styles from './AlertBox.module.css';\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]: styles['alertBox--info'],\n [AlertType.WARNING]: styles['alertBox--warning'],\n [AlertType.ERROR]: styles['alertBox--error'],\n [AlertType.SUCCESS]: styles['alertBox--success'],\n [AlertType.LIGHT]: '',\n};\n\nexport interface AlertBoxProps {\n text: string | React.ReactNode;\n type?: AlertType;\n size?: AlertSize;\n withIcon?: boolean;\n className?: string;\n customIcon?: React.ReactNode;\n}\n\nexport function AlertBox({\n text,\n className = '',\n withIcon = true,\n size = AlertSize.L,\n type = AlertType.INFO,\n customIcon,\n}: AlertBoxProps) {\n const isIconVisible = Boolean(withIcon || customIcon);\n\n return (\n <div\n data-slot=\"alert-box\"\n className={cn(\n styles.alertBox,\n 'flex gap-3 [&_svg]:h-5 [&_svg]:w-5 [&_svg]:shrink-0',\n sizeClasses[size],\n typeStyles[type],\n className,\n )}\n >\n {isIconVisible && (customIcon || getIcon(type))}\n <div className=\"max-w-4xl text-left font-medium lg:max-w-full\">{text}</div>\n </div>\n );\n}\n\nAlertBox.displayName = 'AlertBox';\n\nexport const AlertTypes = AlertType;\nexport const AlertSizes = AlertSize;\n",".alertBox {\n border-radius: var(--alert-box-radius);\n}\n\n.alertBox--info {\n background: var(--alert-box-info-bg);\n}\n\n.alertBox--info svg {\n color: var(--alert-box-info-icon);\n}\n\n.alertBox--warning {\n background: var(--alert-box-warning-bg);\n}\n\n.alertBox--warning svg {\n color: var(--alert-box-warning-icon);\n}\n\n.alertBox--success {\n background: var(--alert-box-success-bg);\n color: var(--alert-box-success-text);\n}\n\n.alertBox--success svg {\n color: var(--alert-box-success-icon);\n}\n\n.alertBox--error {\n background: var(--alert-box-error-bg);\n}\n\n.alertBox--error svg {\n color: var(--alert-box-error-icon);\n}\n","import * as React from 'react';\nimport {useCallback, useEffect, useRef, useState} from 'react';\nimport {Pause, Play} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport styles from './AudioPlayer.module.css';\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 styles.playButton,\n 'inline-flex items-center justify-center',\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={cn(\n styles.track,\n 'h-1 flex-1 cursor-pointer overflow-hidden rounded-full',\n )}\n onClick={handleSeek}\n >\n <div\n className={cn(\n styles.progress,\n 'h-full transition-all duration-100 ease-linear',\n )}\n style={{width: `${progress}%`}}\n />\n </div>\n <span className={cn(styles.time, 'min-w-10 text-xs font-medium')}>\n {isPlaying || currentTime > 0\n ? formatTime(currentTime)\n : formatTime(duration)}\n </span>\n </>\n )}\n </div>\n );\n}\n\nAudioPlayer.displayName = 'AudioPlayer';\n",".playButton {\n background: var(--audio-player-button-bg);\n border-radius: var(--audio-player-button-radius);\n}\n\n.playButton:hover {\n background: var(--audio-player-button-hover-bg);\n}\n\n.playButton svg {\n color: var(--audio-player-icon-color);\n}\n\n.track {\n background: var(--audio-player-track-bg);\n}\n\n.progress {\n background: var(--audio-player-progress-bg);\n}\n\n.time {\n color: var(--audio-player-time-color);\n}\n","import * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport {cn} from '../lib/cn';\nimport styles from './Avatar.module.css';\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',\n !fallbackClassName && styles.fallback,\n fallbackClassName,\n )}\n >\n {fallback}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n));\n\nAvatar.displayName = 'Avatar';\n",".fallback {\n background: var(--avatar-fallback-bg);\n color: var(--avatar-fallback-text);\n}\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-chekin-blue focus-visible:ring-[3px] focus-visible:ring-chekin-blue/20',\n 'aria-invalid:border-chekin-red aria-invalid:ring-chekin-red/20',\n ],\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-chekin-blue text-white [a&]:hover:bg-chekin-blue-hover',\n secondary:\n 'border-transparent bg-chekin-gray-3 text-chekin-navy [a&]:hover:bg-chekin-gray-3/80',\n destructive:\n 'border-transparent bg-chekin-red text-white [a&]:hover:bg-chekin-red/90',\n outline:\n 'border-chekin-gray-3 text-chekin-navy [a&]:hover:bg-chekin-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';\nimport styles from './BetaBadge.module.css';\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 styles.betaBadge,\n 'rounded-sm px-2 py-1 text-sm/4 font-semibold uppercase',\n readOnly && styles['betaBadge--readonly'],\n className,\n )}\n {...props}\n >\n {text || t('beta')}\n {children}\n </div>\n );\n}\n\nBetaBadge.displayName = 'BetaBadge';\n",".betaBadge {\n background: var(--beta-badge-bg);\n color: var(--beta-badge-text);\n}\n\n.betaBadge--readonly {\n background: var(--beta-badge-readonly-bg);\n color: var(--beta-badge-readonly-text);\n}\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-chekin-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-chekin-gray-3',\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-chekin-gray-3',\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-chekin-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-chekin-gray-3',\n 'bg-chekin-surface-input-empty px-4 py-2 text-sm font-semibold text-chekin-gray-1',\n 'data-[state=active]:z-10 data-[state=active]:cursor-default data-[state=active]:bg-white',\n 'data-[state=active]:text-chekin-navy data-[state=active]:shadow-none',\n 'hover:text-chekin-navy',\n ],\n material: [\n 'rounded-none border-0 bg-transparent px-4 py-2 text-base font-medium text-chekin-gray-1',\n 'hover:text-chekin-blue',\n 'data-[state=active]:border-b-[3px] data-[state=active]:border-chekin-blue',\n 'data-[state=active]:bg-transparent data-[state=active]:font-semibold data-[state=active]:text-chekin-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 * as React from 'react';\nimport {forwardRef, useEffect, useState} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\nimport styles from './BoxOptionSelector.module.css';\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 switchComponent?: React.ComponentType<{\n id: string;\n value: boolean;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n onChange: (checked: boolean) => void;\n }>;\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 switchComponent: SwitchComponent,\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 styles.boxOption,\n 'flex min-h-[116px] w-full max-w-[400px] cursor-pointer flex-col gap-4 rounded-lg border p-4 transition-all duration-200',\n isSelected && styles['boxOption--selected'],\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 && SwitchComponent && (\n <div\n onClick={event => event.stopPropagation()}\n className=\"flex items-center gap-2\"\n >\n <SwitchComponent\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-chekin-surface-pressed text-chekin-blue'\n : 'bg-chekin-surface-input-empty text-chekin-gray-1',\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-chekin-gray-1\">\n {description}\n </p>\n </div>\n );\n },\n);\n\nBoxOptionSelector.displayName = 'BoxOptionSelector';\n",".boxOption {\n border-color: var(--box-option-border);\n background: var(--box-option-bg);\n}\n\n.boxOption:hover {\n background: var(--box-option-hover-bg);\n}\n\n.boxOption--selected {\n border-color: var(--box-option-selected-border);\n background: var(--box-option-selected-bg);\n}\n\n.boxOption--selected:hover {\n background: var(--box-option-selected-bg);\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 <span className=\"inline-flex items-center gap-1.5\">\n <Spinner />\n {showLoadingLabel ? <span>{loadingText || t('please_wait')}</span> : null}\n </span>\n ) : (\n <span className=\"inline-flex items-center gap-2\">{children}</span>\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 fill=\"currentColor\"\n d=\"M4 12a8 8 0 0 1 8-8v4a4 4 0 0 0-4 4H4z\"\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: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(--button-group-text-border)] bg-[var(--button-group-text-bg)] px-2.5 text-sm font-medium text-[var(--button-group-text-color)]',\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(--buttons-group-label-color)]\">\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-chekin-card border border-chekin-gray-3 bg-white text-chekin-navy shadow-chekin-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-chekin-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 type {ReactNode} from 'react';\nimport {Check} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from '../tooltip';\n\nexport type ChannelOption = {\n icon: ReactNode;\n label: string;\n value: string;\n};\n\nexport type ChannelSelectorProps = {\n options: ChannelOption[];\n selectedValues: string[];\n readOnlyValues?: string[];\n onChange: (values: string[]) => void;\n};\n\nexport function ChannelSelector({\n options,\n selectedValues,\n readOnlyValues = [],\n onChange,\n}: ChannelSelectorProps) {\n const handleToggle = (value: string) => {\n if (readOnlyValues.includes(value)) return;\n\n const newValues = selectedValues.includes(value)\n ? selectedValues.filter(selectedValue => selectedValue !== value)\n : [...selectedValues, value];\n\n onChange(newValues);\n };\n\n return (\n <div className=\"flex gap-chekin-2\">\n <TooltipProvider>\n {options.map(option => {\n const isSelected = selectedValues.includes(option.value);\n const isReadOnly = readOnlyValues.includes(option.value);\n\n return (\n <Tooltip key={option.value}>\n <TooltipTrigger asChild>\n <Button\n variant=\"secondary\"\n size=\"icon\"\n type=\"button\"\n onClick={() => handleToggle(option.value)}\n disabled={isReadOnly}\n className={cn(\n 'relative h-10 w-10 rounded-lg border-2 bg-white p-0 transition-all',\n isSelected\n ? 'border-chekin-blue bg-chekin-blue/10'\n : 'border-chekin-gray-3 hover:border-chekin-blue/30',\n isReadOnly ? 'cursor-default opacity-100' : 'cursor-pointer',\n )}\n >\n <span className=\"text-chekin-navy\">{option.icon}</span>\n {isSelected && (\n <span className=\"absolute -right-1 -top-1 flex h-4 w-4 items-center justify-center rounded-full bg-chekin-blue\">\n <Check className=\"h-2.5 w-2.5 text-white\" strokeWidth={3} />\n </span>\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{option.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n })}\n </TooltipProvider>\n </div>\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-white text-chekin-navy shadow-[0_0_10px_0_rgba(143,143,143,0.30)]':\n variant === 'light',\n 'bg-chekin-navy text-white': 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-white fill-white': variant === 'light',\n 'bg-chekin-navy fill-chekin-navy': 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 * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport {Check} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport interface BaseCheckboxProps extends React.ComponentPropsWithoutRef<\n typeof CheckboxPrimitive.Root\n> {\n loading?: boolean;\n readOnly?: boolean;\n}\n\nexport const BaseCheckbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n BaseCheckboxProps\n>(({className, loading, onCheckedChange, disabled, readOnly, ...props}, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-5 w-5 shrink-0 rounded-sm border border-solid border-chekin-blue',\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]:bg-chekin-blue data-[state=checked]:text-white',\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=\"h-5 w-5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\n\nBaseCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n","import * as React from 'react';\nimport {cn} from '../lib/cn';\nimport {Label} from '../label';\nimport {BaseCheckbox} from './BaseCheckbox';\n\nexport interface CheckboxProps {\n id?: string;\n label?: string;\n value?: boolean;\n onChange?: (checked: boolean) => void;\n onWrapperClick?: (checked: boolean) => void;\n disabled?: boolean;\n readOnly?: boolean;\n loading?: boolean;\n className?: string;\n labelClassName?: string;\n checkboxClassName?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n id,\n label,\n value = false,\n onChange,\n onWrapperClick,\n className,\n labelClassName,\n checkboxClassName,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n\n return (\n <div\n className={cn('flex items-center gap-2', className)}\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={checked => onChange?.(checked === true)}\n className={checkboxClassName}\n {...props}\n />\n {label && (\n <Label\n htmlFor={checkboxId}\n className={cn(\n 'cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n labelClassName,\n )}\n >\n {label}\n </Label>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\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-chekin-small font-medium leading-none text-chekin-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 * 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 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 focus-visible:shadow-chekin-focus\"\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 '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-chekin-gray-separator\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n",".ErrorMessage {\n @apply mt-0.5 text-left text-sm font-medium text-chekin-red;\n}\n\n.ErrorMessage__disabled {\n opacity: 0.3;\n}\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './styles.module.css';\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 styles.ErrorMessage,\n disabled && styles.ErrorMessage__disabled,\n className,\n )}\n >\n {children}\n </div>\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 {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 <Clock {...iconProps} className={cn('text-chekin-blue', className)} />;\n case 'tick-blue':\n return <Check {...iconProps} className={cn('text-chekin-blue', className)} />;\n case 'tick-green':\n return <Check {...iconProps} className={cn('text-emerald-600', className)} />;\n case 'x-red':\n return <X {...iconProps} className={cn('text-chekin-red', className)} />;\n case 'clock-grey':\n default:\n return <Clock {...iconProps} className={cn('text-chekin-gray-2', className)} />;\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-chekin-surface-input-empty',\n text: 'text-chekin-gray-2',\n icon: 'clock-grey',\n },\n 'progress-blue': {\n container: 'bg-chekin-surface-autocomplete',\n text: 'text-chekin-blue',\n icon: 'clock-blue',\n },\n 'progress-blue-light': {\n container: 'bg-chekin-surface-pressed',\n text: 'text-chekin-blue',\n icon: 'clock-blue',\n },\n 'progress-grey': {\n container: 'bg-chekin-surface-input-empty',\n text: 'text-chekin-gray-2',\n icon: 'clock-grey',\n },\n 'success-blue': {\n container: 'bg-chekin-surface-autocomplete',\n text: 'text-chekin-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-chekin-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' | 'secondary' | '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 = 'secondary',\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-emerald-500\"\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 {type ReactNode, useEffect, useRef, useState} from 'react';\nimport {Button, type ButtonProps} from '../button';\n\nconst copiedTimeoutSeconds = 1.5;\n\nfunction copyToClipboard(value: string | number) {\n if (navigator.clipboard?.writeText) {\n void navigator.clipboard.writeText(String(value));\n return;\n }\n\n const textarea = document.createElement('textarea');\n textarea.value = String(value);\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n textarea.remove();\n}\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 = 'secondary',\n size = 'sm',\n}: CopyLinkButtonProps) {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n useEffect(\n () => () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n },\n [],\n );\n\n const copy = () => {\n if (!link) return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n copyToClipboard(link);\n setIsCopied(true);\n timeoutRef.current = setTimeout(\n () => setIsCopied(false),\n copiedTimeoutSeconds * 1000,\n );\n onCopiedLink?.();\n };\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 ? copiedExclamationText || labelText : labelText}\n </Button>\n );\n}\n","import {useTranslation} from 'react-i18next';\nimport {\n type ColumnDef,\n flexRender,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport {Table, TableBody, TableCell, TableHead, TableHeader, TableRow} from '../table';\n\nexport interface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n}\n\nexport function DataTable<TData, TValue>({columns, data}: DataTableProps<TData, TValue>) {\n const {t} = useTranslation();\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n });\n\n return (\n <div className=\"rounded-md border border-chekin-gray-3\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map(header => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\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-chekin-gray-3\">\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-chekin-surface-input-empty font-medium text-chekin-gray-1',\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-white 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-chekin-surface-input-empty 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-chekin-surface-input-empty',\n clickable && 'cursor-pointer hover:bg-chekin-surface-input-empty',\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-chekin-gray-1', 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",".bar {\n animation: loading-bar 0.9s linear infinite;\n}\n\n@keyframes loading-bar {\n 0% {\n left: -43%;\n width: 43%;\n }\n\n 70% {\n left: 42%;\n width: 58%;\n }\n\n 100% {\n left: 100%;\n width: 58%;\n }\n}\n","import {cn} from '../lib/cn';\nimport styles from './styles.module.css';\n\nexport type LoadingBarProps = {\n className?: string;\n};\n\nexport function LoadingBar({className}: LoadingBarProps) {\n return (\n <div className={cn('w-full p-0', className)}>\n <div className=\"relative h-1 w-full overflow-hidden rounded-full bg-white\">\n <div\n className={cn('absolute top-0 h-full rounded-full bg-chekin-blue', styles.bar)}\n />\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} 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 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 }\n>(\n (\n {className, showCloseButton = true, children, container, lockScroll = true, ...props},\n ref,\n ) => {\n const contentElement = (\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(dialogContentClasses, className)}\n {...props}\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 className={cn(dialogOverlayClasses, scrollableOverlayClasses)}>\n {contentElement}\n </DialogOverlay>\n ) : (\n <div className={cn(dialogOverlayClasses, scrollableOverlayClasses)}>\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-2 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 {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 {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\nexport function useOutsideClick<T extends Element>(\n elementRef: RefObject<T> | null,\n onOutsideClick: ((event: Event) => void) | null,\n nested?: string[] | string,\n) {\n const handleOutsideClick = useRef(onOutsideClick);\n handleOutsideClick.current = onOutsideClick;\n\n const checkNestedElements = useCallback(\n (event: Event) => {\n const checkIsElementClickedBySelector = (selector: string) => {\n const nestedElement = getDocument().querySelector(selector);\n return nestedElement?.contains(event.target as Node);\n };\n\n const checkDataAttribute = () => {\n const target = event.target;\n\n if (!target || !(target instanceof HTMLElement)) {\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 function handleClickOutside(event: Event) {\n const isNestedElement = checkNestedElements(event);\n\n if (\n elementRef?.current &&\n !elementRef.current.contains(event.target as Node) &&\n !isNestedElement\n ) {\n handleOutsideClick.current?.(event);\n }\n }\n\n getDocument().addEventListener('mousedown', handleClickOutside, true);\n getDocument().addEventListener('touchstart', handleClickOutside, true);\n return () => {\n getDocument().removeEventListener('mousedown', handleClickOutside, true);\n getDocument().removeEventListener('touchstart', handleClickOutside, true);\n };\n }, [checkNestedElements, elementRef]);\n}\n","import {useCallback, useLayoutEffect, useState} from 'react';\nimport {getWindow} from '../lib/utils';\n\nconst eventName = 'resize';\nexport function useScreenResize(maxWidth: string) {\n const [isInitialized, setIsInitialized] = useState(false);\n const [isMatch, setIsMatch] = useState(false);\n\n const handleResizeEvent = useCallback(() => {\n const adjustedMaxWidth = `${parseInt(maxWidth, 10) - 1}px`;\n const media = getWindow().matchMedia(`(max-width: ${adjustedMaxWidth})`);\n\n setIsInitialized(true);\n setIsMatch(media?.matches);\n }, [maxWidth]);\n\n useLayoutEffect(() => {\n handleResizeEvent();\n getWindow().addEventListener(eventName, handleResizeEvent);\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 {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 {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 {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, 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 {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=\"secondary\" 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 <div\n ref={ref}\n className={cn(\n 'relative box-border flex min-h-10 items-center justify-between rounded-chekin-input bg-white px-[14px] font-medium shadow-none',\n 'pointer-events-auto transition-colors duration-500',\n disabled && 'cursor-progress opacity-50',\n loading && 'cursor-progress',\n (empty || readOnly) &&\n 'border-0 bg-chekin-surface-input-empty text-chekin-gray-1 hover:border-0',\n !disabled && !loading && 'cursor-pointer',\n className,\n )}\n style={{width: width ? `${width}px` : undefined}}\n {...props}\n >\n {children}\n </div>\n ),\n);\n\nDefaultSelectTrigger.displayName = 'SelectTrigger';\n","import {useTranslation} from 'react-i18next';\nimport {Download} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\nimport {Tooltip, TooltipContent, TooltipTrigger} from '../tooltip';\nimport {getCustomContainer} from '../lib/utils';\n\nexport type DownloadEntryFormsButtonProps = {\n disabled: boolean;\n onClick: () => void;\n label?: string;\n isLoading?: boolean;\n className?: string;\n};\n\nexport function DownloadEntryFormsButton({\n disabled,\n isLoading,\n className,\n onClick,\n label,\n}: DownloadEntryFormsButtonProps) {\n const {t} = useTranslation();\n\n return (\n <div className={cn('flex', className)}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n loading={isLoading}\n disabled={disabled}\n onClick={onClick}\n variant=\"secondary\"\n className=\"min-w-[95px]\"\n >\n <Download width={17} height={17} />\n {label || t('download_all')}\n </Button>\n </TooltipTrigger>\n <TooltipContent container={getCustomContainer()} variant=\"dark\" side=\"bottom\">\n {t('entry_forms')}\n </TooltipContent>\n </Tooltip>\n </div>\n );\n}\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';\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 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 RadixMenu from '@radix-ui/react-dropdown-menu';\nimport {cn} from '../lib/cn';\nimport {getCustomContainer} from '../lib/utils';\n\nexport const DropdownMenu = RadixMenu.Root;\nexport const DropdownMenuTrigger = RadixMenu.Trigger;\nexport const DropdownMenuPortal = RadixMenu.Portal;\nexport const DropdownMenuGroup = RadixMenu.Group;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Content>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Content> & {\n container?: HTMLElement;\n }\n>(({className, sideOffset = 6, container, ...props}, ref) => (\n <RadixMenu.Portal container={container || getCustomContainer()}>\n <RadixMenu.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-[180px] rounded-chekin-standard p-[4px]',\n 'border border-chekin-gray-3 bg-white shadow-chekin-dropdown',\n '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 </RadixMenu.Portal>\n));\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nexport type DropdownMenuContentSide = React.ComponentPropsWithoutRef<\n typeof RadixMenu.Content\n>['side'];\n\nconst itemClasses = [\n 'relative flex h-8 cursor-pointer select-none items-center gap-chekin-1 rounded-chekin-input px-[10px]',\n 'font-sans text-[14px] leading-5 text-chekin-navy outline-none',\n 'data-[highlighted]:bg-chekin-surface-pressed data-[highlighted]:text-chekin-blue',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-30',\n];\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Item>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Item>\n>(({className, ...props}, ref) => (\n <RadixMenu.Item ref={ref} className={cn(itemClasses, className)} {...props} />\n));\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Label>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Label>\n>(({className, ...props}, ref) => (\n <RadixMenu.Label\n ref={ref}\n className={cn(\n 'px-[10px] py-[6px] font-sans text-[11px] uppercase leading-4 tracking-wide text-chekin-gray-2',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof RadixMenu.Separator>,\n React.ComponentPropsWithoutRef<typeof RadixMenu.Separator>\n>(({className, ...props}, ref) => (\n <RadixMenu.Separator\n ref={ref}\n className={cn('my-[4px] h-px bg-chekin-gray-3', className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\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('text-lg font-medium tracking-tight text-chekin-navy', className)}\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-chekin-gray-1 [&>a:hover]:text-chekin-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-chekin-surface-autocomplete text-chekin-blue [&_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 text-center\">\n <div className=\"font-medium leading-6\">{title || t('nothing_found')}</div>\n {subtitle && (\n <div className=\"text-sm leading-6 text-chekin-gray-1\">{subtitle}</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-chekin-surface-input-empty',\n color: 'text-chekin-gray-2',\n },\n [HALO_ICON_STATUS.active]: {\n background: 'bg-chekin-surface-autocomplete',\n color: 'text-chekin-blue',\n },\n [HALO_ICON_STATUS.success]: {\n background: 'bg-emerald-50',\n color: 'text-emerald-600',\n },\n [HALO_ICON_STATUS.danger]: {\n background: 'bg-red-50',\n color: 'text-chekin-red',\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-chekin-blue hover:text-chekin-blue-hover',\n 'outline-none focus-visible:shadow-chekin-focus rounded-[4px]',\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 type {ReactNode} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {Play} from 'lucide-react';\nimport {Button} from '../button';\nimport {CommingSoonBadge} from '../comming-soon-badge';\nimport {HaloIcon} from '../halo-icon';\nimport {useModalControls} from '../hooks';\nimport {Switch} from '../switch';\nimport {VideoPlayer} from '../video-player';\n\nexport interface FeatureCardProps {\n icon?: ReactNode;\n title: ReactNode;\n description: string;\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n tutorialVideoLink?: string;\n disabled?: boolean;\n comingSoon?: boolean;\n}\n\nexport function FeatureCard({\n icon,\n title,\n description,\n checked,\n onCheckedChange,\n tutorialVideoLink,\n disabled = false,\n comingSoon = false,\n}: FeatureCardProps) {\n const {t} = useTranslation();\n const {\n isOpen: isVideoTutorialOpen,\n openModal: openVideoTutorial,\n closeModal: closeVideoTutorial,\n } = useModalControls();\n\n return (\n <div className=\"flex max-w-[816px] items-center justify-between rounded-lg border border-chekin-gray-3 p-4 opacity-100\">\n <div className=\"flex items-start gap-4\">\n {icon && (\n <HaloIcon status=\"ACTIVE\" size=\"XL\">\n {icon}\n </HaloIcon>\n )}\n <div>\n <div className=\"mb-1 flex items-center gap-2\">\n <h3 className=\"text-base font-semibold\">{title}</h3>\n {comingSoon && <CommingSoonBadge />}\n {tutorialVideoLink && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-3 gap-1 rounded-md bg-blue-50 px-2 py-1 text-blue-600 hover:bg-blue-100 hover:text-blue-700\"\n onClick={openVideoTutorial}\n >\n <Play className=\"h-4 w-4\" />\n {t('tutorial')}\n </Button>\n )}\n </div>\n <p className=\"text-sm font-medium text-chekin-gray-1\">{description}</p>\n </div>\n </div>\n <Switch disabled={disabled} value={checked} onChange={onCheckedChange} size=\"sm\" />\n {isVideoTutorialOpen && tutorialVideoLink && (\n <VideoPlayer\n src={tutorialVideoLink}\n title={t('liveness_video')}\n onClose={closeVideoTutorial}\n isFullScreen\n />\n )}\n </div>\n );\n}\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-chekin-focus',\n 'disabled:cursor-not-allowed disabled:opacity-50 aria-busy:cursor-wait aria-busy:opacity-50',\n 'data-[state=checked]:bg-chekin-blue data-[state=unchecked]:bg-chekin-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}\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 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 {useEffect, useRef, useState, type ChangeEvent, type MouseEvent} from 'react';\nimport {useTranslation} from 'react-i18next';\nimport {\n Loader2,\n Maximize,\n Minimize,\n Pause,\n Play,\n SkipBack,\n SkipForward,\n Volume2,\n VolumeX,\n X,\n} from 'lucide-react';\nimport {Button} from '../button';\nimport {useClickEscape} from '../hooks';\n\ntype VideoSource = 'file' | 'youtube' | 'vimeo';\n\nexport interface VideoPlayerProps {\n src: string;\n poster?: string;\n title?: string;\n onClose?: () => void;\n isFullScreen?: boolean;\n autoPlay?: boolean;\n}\n\nexport function VideoPlayer({\n src,\n poster,\n title,\n onClose,\n isFullScreen = false,\n autoPlay = false,\n}: VideoPlayerProps) {\n const {t} = useTranslation();\n const videoRef = useRef<HTMLVideoElement>(null);\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(false);\n const [isMuted, setIsMuted] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [isFullScreenMode, setIsFullScreenMode] = useState(isFullScreen);\n const [isLoading, setIsLoading] = useState(true);\n const [videoSource, setVideoSource] = useState<VideoSource>('file');\n const [youtubeEmbedUrl, setYoutubeEmbedUrl] = useState('');\n const [vimeoEmbedUrl, setVimeoEmbedUrl] = useState('');\n\n useClickEscape({enabled: isFullScreenMode, onClick: onClose});\n\n useEffect(() => {\n const youtubeRegex =\n /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([a-zA-Z0-9_-]{11})/;\n const vimeoRegex = /(?:vimeo\\.com\\/|vimeo\\.com\\/video\\/)(\\d+)/;\n\n const youtubeMatch = src.match(youtubeRegex);\n const vimeoMatch = src.match(vimeoRegex);\n\n if (youtubeMatch) {\n const videoId = youtubeMatch[1];\n setVideoSource('youtube');\n setYoutubeEmbedUrl(\n `https://www.youtube.com/embed/${videoId}?enablejsapi=1&rel=0&modestbranding=1${autoPlay ? '&autoplay=1' : ''}`,\n );\n setVimeoEmbedUrl('');\n setIsLoading(false);\n return;\n }\n\n if (vimeoMatch) {\n const videoId = vimeoMatch[1];\n setVideoSource('vimeo');\n setVimeoEmbedUrl(\n `https://player.vimeo.com/video/${videoId}?h=0&title=0&byline=0&portrait=0${autoPlay ? '&autoplay=1' : ''}`,\n );\n setYoutubeEmbedUrl('');\n setIsLoading(false);\n return;\n }\n\n setVideoSource('file');\n setYoutubeEmbedUrl('');\n setVimeoEmbedUrl('');\n }, [src, autoPlay]);\n\n useEffect(() => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n const updateDuration = () => {\n setDuration(video.duration);\n setIsLoading(false);\n };\n const updateTime = () => setCurrentTime(video.currentTime);\n const handleVideoEnd = () => {\n setIsPlaying(false);\n video.currentTime = 0;\n };\n const handleLoadStart = () => setIsLoading(true);\n const handleCanPlay = () => setIsLoading(false);\n\n video.addEventListener('loadedmetadata', updateDuration);\n video.addEventListener('timeupdate', updateTime);\n video.addEventListener('ended', handleVideoEnd);\n video.addEventListener('loadstart', handleLoadStart);\n video.addEventListener('canplay', handleCanPlay);\n\n return () => {\n video.removeEventListener('loadedmetadata', updateDuration);\n video.removeEventListener('timeupdate', updateTime);\n video.removeEventListener('ended', handleVideoEnd);\n video.removeEventListener('loadstart', handleLoadStart);\n video.removeEventListener('canplay', handleCanPlay);\n };\n }, [videoSource]);\n\n useEffect(() => {\n if (isFullScreenMode && videoRef.current && videoSource === 'file') {\n void videoRef.current.play();\n setIsPlaying(true);\n }\n }, [isFullScreenMode, videoSource]);\n\n const togglePlay = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n if (isPlaying) {\n video.pause();\n } else {\n void video.play();\n }\n\n setIsPlaying(!isPlaying);\n };\n\n const toggleMute = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n video.muted = !isMuted;\n setIsMuted(!isMuted);\n };\n\n const handleSeek = (event: ChangeEvent<HTMLInputElement>) => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n const newTime = Number.parseFloat(event.target.value);\n video.currentTime = newTime;\n setCurrentTime(newTime);\n };\n\n const toggleFullScreen = () => {\n if (!isFullScreen && !isFullScreenMode) {\n setIsFullScreenMode(true);\n return;\n }\n\n setIsFullScreenMode(false);\n onClose?.();\n };\n\n const formatTime = (timeInSeconds: number) => {\n const minutes = Math.floor(timeInSeconds / 60);\n const seconds = Math.floor(timeInSeconds % 60);\n return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n };\n\n const skipBackward = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n video.currentTime = Math.max(0, video.currentTime - 5);\n };\n\n const skipForward = () => {\n if (videoSource !== 'file') return;\n\n const video = videoRef.current;\n if (!video) return;\n\n video.currentTime = Math.min(video.duration, video.currentTime + 5);\n };\n\n const containerClasses = isFullScreenMode\n ? 'fixed inset-0 z-[300] flex cursor-pointer items-center justify-center bg-gradient-to-br from-black/95 via-black/90 to-black/95 backdrop-blur-sm animate-in fade-in-0 duration-500'\n : 'relative h-full w-full';\n\n const videoContainerClasses = isFullScreenMode\n ? 'w-full max-w-5xl cursor-default animate-in zoom-in-95 fade-in-0 duration-700 ease-out'\n : 'h-full w-full';\n\n const handleBackgroundClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget) {\n onClose?.();\n }\n };\n\n return (\n <div\n ref={containerRef}\n className={containerClasses}\n onClick={isFullScreenMode ? handleBackgroundClick : undefined}\n >\n {isFullScreenMode && (\n <div className=\"pointer-events-none absolute inset-0 overflow-hidden\">\n <div className=\"absolute left-1/4 top-1/4 h-2 w-2 animate-pulse rounded-full bg-white/20 duration-1000\" />\n <div className=\"absolute left-1/3 top-3/4 h-1 w-1 animate-pulse rounded-full bg-white/30 delay-500 duration-1000\" />\n <div className=\"absolute right-1/4 top-1/2 h-1.5 w-1.5 animate-pulse rounded-full bg-white/20 delay-1000 duration-1000\" />\n <div className=\"absolute bottom-1/4 right-1/3 h-1 w-1 animate-pulse rounded-full bg-white/25 delay-1500 duration-1000\" />\n <div className=\"absolute right-1/6 top-1/6 h-2 w-2 animate-pulse rounded-full bg-white/15 delay-2000 duration-1000\" />\n </div>\n )}\n\n {isFullScreenMode && onClose && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={onClose}\n className=\"absolute right-4 top-4 z-10 rounded-full text-white transition-all duration-300 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={t('close')}\n >\n <X className=\"h-6 w-6\" />\n </Button>\n )}\n\n {title && isFullScreenMode && (\n <div className=\"absolute left-4 top-4 z-10 animate-in slide-in-from-left-4 text-white delay-200 duration-500\">\n <h3 className=\"text-lg font-medium drop-shadow-lg\">{title}</h3>\n </div>\n )}\n\n {isLoading && (\n <div className=\"absolute inset-0 z-20 flex items-center justify-center bg-black/50\">\n <div className=\"flex items-center gap-3 text-white\">\n <Loader2 className=\"h-8 w-8 animate-spin\" />\n <span className=\"text-lg font-medium\">{t('loading_video')}</span>\n </div>\n </div>\n )}\n\n <div className={videoContainerClasses} onClick={event => event.stopPropagation()}>\n {videoSource === 'youtube' ? (\n <iframe\n ref={iframeRef}\n src={youtubeEmbedUrl}\n className={`w-full ${isFullScreenMode ? 'h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n allowFullScreen\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n onLoad={() => setIsLoading(false)}\n title={title || 'YouTube video player'}\n />\n ) : videoSource === 'vimeo' ? (\n <iframe\n ref={iframeRef}\n src={vimeoEmbedUrl}\n className={`w-full ${isFullScreenMode ? 'h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n allowFullScreen\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n onLoad={() => setIsLoading(false)}\n title={title || 'Vimeo video player'}\n />\n ) : (\n <>\n <video\n ref={videoRef}\n className={`w-full ${isFullScreenMode ? 'max-h-[70vh]' : 'h-full'} rounded-lg bg-black shadow-2xl`}\n poster={poster}\n onClick={togglePlay}\n playsInline\n autoPlay={autoPlay}\n >\n <source src={src} type=\"video/mp4\" />\n {t('video_not_supported')}\n </video>\n\n <div\n className={`absolute bottom-0 left-0 right-0 rounded-b-lg bg-gradient-to-t from-black/80 via-black/60 to-transparent p-3 transition-all duration-300 hover:from-black/90 hover:via-black/70 ${isFullScreenMode ? 'pb-6' : ''}`}\n >\n <div className=\"mb-3 flex items-center gap-2\">\n <input\n type=\"range\"\n min=\"0\"\n max={duration || 100}\n value={currentTime}\n onChange={handleSeek}\n className=\"h-2 w-full cursor-pointer appearance-none rounded-full bg-white/30 transition-all duration-200 hover:bg-white/40 [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:shadow-lg [&::-webkit-slider-thumb]:transition-all [&::-webkit-slider-thumb]:duration-200 [&::-webkit-slider-thumb]:hover:scale-125\"\n />\n </div>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={togglePlay}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={isPlaying ? t('pause') : t('play')}\n >\n {isPlaying ? (\n <Pause className=\"h-5 w-5\" />\n ) : (\n <Play className=\"h-5 w-5\" />\n )}\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={skipBackward}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={t('skip_backward')}\n >\n <SkipBack className=\"h-5 w-5\" />\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={skipForward}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={t('skip_forward')}\n >\n <SkipForward className=\"h-5 w-5\" />\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggleMute}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={isMuted ? t('unmute') : t('mute')}\n >\n {isMuted ? (\n <VolumeX className=\"h-5 w-5\" />\n ) : (\n <Volume2 className=\"h-5 w-5\" />\n )}\n </Button>\n\n <span className=\"text-sm font-medium text-white/90\">\n {formatTime(currentTime)} / {formatTime(duration || 0)}\n </span>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggleFullScreen}\n className=\"h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95\"\n aria-label={\n isFullScreenMode ? t('exit_full_screen') : t('enter_full_screen')\n }\n >\n {isFullScreenMode ? (\n <Minimize className=\"h-5 w-5\" />\n ) : (\n <Maximize className=\"h-5 w-5\" />\n )}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n","import {\n 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 = 'secondary',\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 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",".wrapper {\n display: flex;\n max-width: 1400px;\n padding: 24px;\n flex-direction: column;\n align-items: flex-start;\n gap: 24px;\n align-self: stretch;\n border: 1px solid #cecede;\n border-radius: 10px;\n container-type: inline-size;\n}\n\n.wrapperNested {\n border: initial;\n padding: 0;\n}\n\n.header {\n display: flex;\n margin: 0;\n padding: 0;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n color: #161643;\n font-size: 24px;\n font-style: normal;\n font-weight: 600;\n line-height: normal;\n}\n\n.subHeader {\n display: flex;\n margin: 0;\n padding: 8px 0;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n border-bottom: 1px solid #cecede;\n color: #161643;\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: normal;\n}\n\n.content {\n display: flex;\n align-items: flex-start;\n align-content: flex-start;\n gap: 16px;\n align-self: stretch;\n flex-wrap: wrap;\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\n\nexport type FormBoxContentProps = ComponentProps<'div'>;\n\nexport function Content({children, className, ...props}: FormBoxContentProps) {\n return (\n <div className={cn(styles.content, className)} {...props}>\n {children}\n </div>\n );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\n\nexport type FormBoxHeaderProps = ComponentProps<'h2'>;\n\nexport function Header({children, className, ...props}: FormBoxHeaderProps) {\n return (\n <h2 className={cn(styles.header, className)} {...props}>\n {children}\n </h2>\n );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\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(styles.wrapper, nested && styles.wrapperNested, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type {ComponentProps} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './FormBox.module.css';\n\nexport type FormBoxSubHeaderProps = ComponentProps<'h4'>;\n\nexport function SubHeader({children, className, ...props}: FormBoxSubHeaderProps) {\n return (\n <h4 className={cn(styles.subHeader, className)} {...props}>\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';\nimport styles from './styles.module.css';\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 styles.fieldBox,\n autocompleted && styles.fieldBoxAutocompleted,\n isErrorWrong && !autocompleted && styles.fieldBoxErrorWrong,\n !autocompleted && !isErrorWrong && !isEmpty && styles.fieldBoxFilled,\n !autocompleted && !isErrorWrong && isEmpty && styles.fieldBoxEmpty,\n isFocused && !hasError && styles.fieldBoxFocused,\n );\n\n const inputPlaceholder = fieldStyle === 'new' ? label : placeholder;\n const showFloatingLabel = fieldStyle === 'new' && !isEmpty && Boolean(label);\n\n return (\n <div className={cn(styles.container, className)}>\n {fieldStyle === 'current' && label && (\n <div className={styles.labelRow}>\n <label htmlFor={inputId} className={styles.labelText}>\n {label}\n </label>\n {optional && (\n <span className={styles.optionalText}>\n {'- '}\n <em>{optionalLabel || t('optional')}</em>\n </span>\n )}\n {tooltip && <div className={styles.tooltip}>{tooltip}</div>}\n </div>\n )}\n\n <div className={fieldBoxClassName}>\n <input\n ref={ref}\n id={inputId}\n className={styles.input}\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 && <div className={styles.icon}>{icon}</div>}\n\n {showFloatingLabel && (\n <div\n className={cn(\n styles.floatingLabel,\n autocompleted && styles.floatingLabelAutocompleted,\n )}\n >\n <span\n className={cn(\n styles.floatingLabelText,\n isErrorWrong && styles.floatingLabelTextError,\n )}\n >\n {label}\n </span>\n </div>\n )}\n </div>\n\n {supportingText && <p className={styles.supportingText}>{supportingText}</p>}\n {error && <p className={styles.errorText}>{error}</p>}\n </div>\n );\n },\n);\n\nFreeTextField.displayName = 'FreeTextField';\n",".container {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 4px;\n width: 300px;\n}\n\n.labelRow {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.labelText,\n.optionalText {\n font-size: 16px;\n line-height: 16px;\n color: #161643;\n}\n\n.labelText {\n font-weight: 500;\n}\n\n.optionalText em {\n color: #9696b9;\n}\n\n.tooltip {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n\n.fieldBox {\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n height: 44px;\n padding: 10px 14px;\n border: 1px solid;\n border-radius: 8px;\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n}\n\n.fieldBoxEmpty {\n background-color: #f4f6f8;\n border-color: rgba(22, 22, 67, 0.2);\n}\n\n.fieldBoxFilled {\n background-color: white;\n border-color: #161643;\n}\n\n.fieldBoxErrorWrong {\n background-color: white;\n border-color: #ff2467;\n}\n\n.fieldBoxAutocompleted {\n background-color: #eff6ff;\n border-color: #161643;\n}\n\n.fieldBoxFocused {\n border-color: #385bf8;\n}\n\n.input {\n flex: 1 0 0;\n min-width: 0;\n min-height: 1px;\n padding: 0;\n border: none;\n background: transparent;\n color: #161643;\n font: inherit;\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n outline: none;\n}\n\n.input::placeholder {\n color: #6b6b95;\n font-weight: 500;\n}\n\n.icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n\n.supportingText {\n margin: 0;\n color: #9696b9;\n font-size: 12px;\n font-style: italic;\n line-height: normal;\n}\n\n.errorText {\n margin: 0;\n color: #ff2467;\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n text-align: right;\n}\n\n.floatingLabel {\n position: absolute;\n top: -8px;\n left: 13px;\n display: flex;\n align-items: center;\n height: 16px;\n padding: 0 3px;\n background: linear-gradient(to bottom, transparent 50%, white 50%);\n pointer-events: none;\n}\n\n.floatingLabelAutocompleted {\n background: linear-gradient(to bottom, rgb(239 246 255 / 0%) 50%, #eff6ff 50%);\n}\n\n.floatingLabelText {\n color: #6b6b95;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n white-space: nowrap;\n}\n\n.floatingLabelTextError {\n color: #ff2467;\n}\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-chekin-input',\n circle: 'rounded-full',\n },\n tone: {\n neutral: 'bg-chekin-surface-input-empty text-chekin-gray-1',\n info: 'bg-chekin-surface-pressed text-chekin-blue',\n success: 'bg-[#E8FCF7] text-[#0F9F80]',\n warn: 'bg-[#FFF4E5] text-[#B86A00]',\n error: 'bg-[#FFE8EF] text-chekin-red',\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 ReactNode, forwardRef} from 'react';\nimport {cn} from '../lib/cn';\n\nexport type GridItemsProps = {\n title?: string;\n children?: ReactNode;\n placeholder?: ReactNode;\n className?: string;\n};\n\nexport const GridItems = forwardRef<HTMLDivElement, GridItemsProps>(\n ({children, title, placeholder, className}, ref) => (\n <div\n ref={ref}\n className={cn('box-border -ml-[7px] max-w-[2125px] overflow-y-visible', className)}\n >\n {title && (\n <div className=\"mb-[25px] text-base font-semibold text-chekin-navy\">{title}</div>\n )}\n <div\n className={cn(\n 'grid-items__grid grid auto-rows-[85px] grid-cols-[repeat(auto-fill,386px)]',\n 'gap-x-[45px] gap-y-3 pl-[7px] pt-[7px]',\n '[&>div]:h-[77px]',\n )}\n >\n {children}\n <div className=\"flex h-[77px] items-center justify-center rounded-md bg-chekin-surface-input-empty\">\n {placeholder}\n </div>\n </div>\n </div>\n ),\n);\n\nGridItems.displayName = 'GridItems';\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-chekin-gray-2 outline-none transition-colors hover:text-chekin-blue',\n triggerAs === 'button' && 'focus-visible:shadow-chekin-focus',\n className,\n );\n const triggerStyle = {width: size, height: size};\n const triggerContent = (\n <>\n <CircleQuestionMark aria-hidden=\"true\" style={{width: size, height: size}} />\n <span className=\"absolute -left-0.5 -top-0.5 h-5 w-5\" />\n </>\n );\n\n return (\n <TooltipProvider>\n <TooltipRoot>\n <TooltipTrigger asChild onClick={onClick}>\n {triggerAs === 'button' ? (\n <button\n type=\"button\"\n aria-label={label}\n className={triggerClassName}\n style={triggerStyle}\n >\n {triggerContent}\n </button>\n ) : (\n <span aria-label={label} className={triggerClassName} style={triggerStyle}>\n {triggerContent}\n </span>\n )}\n </TooltipTrigger>\n <TooltipContent\n variant={variant}\n side={side}\n className={cn('max-w-64', contentClassName)}\n >\n {content}\n </TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n );\n}\n","import {type FC, type ReactNode, type SVGProps, forwardRef, memo} from 'react';\nimport type {IconNames} from './iconNames';\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'ref'> {\n name: IconNames;\n size?: number | string;\n color?: string;\n className?: string;\n fallback?: ReactNode;\n}\n\nconst MissingIcon = forwardRef<SVGSVGElement, Omit<IconProps, 'name'>>(\n ({size = 24, className = '', fallback = null, color, ...props}, ref) => {\n if (fallback) {\n return <>{fallback}</>;\n }\n\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color || 'currentColor'}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 9 6 6\" />\n <path d=\"m15 9-6 6\" />\n </svg>\n );\n },\n);\nMissingIcon.displayName = 'MissingIcon';\n\nconst Icon = memo(\n forwardRef<SVGSVGElement, IconProps>(\n ({name: _name, size = 24, className = '', fallback = null, ...props}, ref) => (\n <MissingIcon\n ref={ref}\n size={size}\n className={className}\n fallback={fallback}\n {...props}\n />\n ),\n ),\n);\n\nIcon.displayName = 'Icon';\n\nclass IconRegistry {\n private static cache = new Map<string, Promise<FC<SVGProps<SVGSVGElement>>>>();\n\n static async load(name: string): Promise<FC<SVGProps<SVGSVGElement>>> {\n if (!this.cache.has(name)) {\n this.cache.set(\n name,\n Promise.reject(new Error(`Icon \"${name}\" asset loading is not configured`)),\n );\n }\n\n return this.cache.get(name)!;\n }\n\n static preload(names: string[]): Promise<void[]> {\n return Promise.all(\n names.map(name =>\n this.load(name)\n .then(() => undefined)\n .catch(() => undefined),\n ),\n );\n }\n}\n\nconst RegistryIcon = Icon;\n\nexport {Icon, RegistryIcon, IconRegistry};\n","import * as React from 'react';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\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-chekin-focus',\n ],\n {\n variants: {\n size: {\n s: 'w-8 h-8',\n m: 'w-10 h-10',\n l: 'w-[43px] h-[43px]',\n },\n shape: {\n rounded: 'rounded-chekin-input',\n circle: 'rounded-full',\n },\n variant: {\n primary: 'bg-chekin-blue text-white hover:brightness-95',\n secondary:\n 'bg-white text-chekin-navy border border-chekin-gray-3 hover:bg-chekin-surface-input-empty',\n ghost: 'bg-transparent text-chekin-gray-1 hover:bg-chekin-surface-input-empty',\n danger: 'bg-white text-chekin-red border border-chekin-gray-3 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}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {className, size, shape, variant, label, children, type = 'button', ...props},\n ref,\n ) => (\n <button\n ref={ref}\n type={type}\n aria-label={label}\n className={cn(iconButtonVariants({size, shape, variant}), className)}\n {...props}\n >\n {children}\n </button>\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';\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-chekin-input border border-chekin-gray-3 bg-white px-3 py-2 text-base text-chekin-navy',\n 'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n 'placeholder:text-base placeholder:font-medium placeholder:text-chekin-gray-2',\n 'disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n !readOnly && 'placeholder-shown:bg-chekin-surface-input-empty',\n !readOnly && 'focus-visible:outline-none focus-visible:shadow-chekin-focus',\n readOnly && 'cursor-default outline-none',\n className,\n )}\n {...props}\n />\n ),\n);\n\nInput.displayName = 'Input';\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-chekin-gray-3 text-base font-medium transition-all first:rounded-l-md first:border-l last:rounded-r-md',\n isActive && 'z-10 shadow-chekin-focus',\n error && 'border-chekin-red',\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-chekin-dropdown\"\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-blue)'\n : 'var(--chekin-text-gray-dark)';\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-chekin-surface-input-empty',\n isSelected && 'bg-chekin-blue/10',\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}\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}\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}\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}\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}\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}\n","import 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","import {useTranslation} from 'react-i18next';\nimport {AlertCircleIcon, CheckIcon, ClockIcon} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport const IV_BADGE_STATUS = {\n completed: 'completed',\n pending: 'pending',\n failed: 'failed',\n} as const;\n\nexport type GuestVerificationStatus =\n (typeof IV_BADGE_STATUS)[keyof typeof IV_BADGE_STATUS];\n\nexport interface IVStatusBadgeProps {\n status: GuestVerificationStatus;\n size?: 'sm' | 'md';\n className?: string;\n}\n\nexport function IVStatusBadge({status, size = 'md', className = ''}: IVStatusBadgeProps) {\n const {t} = useTranslation();\n const iconSize = size === 'sm' ? 'h-3 w-3' : 'h-3.5 w-3.5';\n const textSize = size === 'sm' ? 'text-xs' : 'text-sm';\n const baseClassName =\n 'inline-flex items-center gap-1 rounded-full border px-3 py-1 shadow-sm';\n\n if (status === IV_BADGE_STATUS.completed) {\n return (\n <div\n className={cn(\n baseClassName,\n 'border-green-200/50 bg-green-100 text-green-700',\n className,\n )}\n >\n <CheckIcon className={iconSize} />\n <span className={cn('font-medium', textSize)}>{t('iv_status.verified')}</span>\n </div>\n );\n }\n\n if (status === IV_BADGE_STATUS.pending) {\n return (\n <div\n className={cn(\n baseClassName,\n 'border-amber-200/50 bg-amber-100 text-amber-700',\n className,\n )}\n >\n <ClockIcon className={iconSize} />\n <span className={cn('font-medium', textSize)}>{t('iv_status.pending')}</span>\n </div>\n );\n }\n\n if (status === IV_BADGE_STATUS.failed) {\n return (\n <div\n className={cn(\n baseClassName,\n 'border-red-200/50 bg-red-100 text-red-700',\n className,\n )}\n >\n <AlertCircleIcon className={iconSize} />\n <span className={cn('font-medium', textSize)}>{t('iv_status.attention')}</span>\n </div>\n );\n }\n\n return null;\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-h-[90vh] max-w-[calc(100%-2rem)] flex-col border-none p-0 sm:max-w-[calc(100%-2rem)] lg:max-w-4xl',\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-chekin-gray-3 bg-white p-6\">\n <div>\n <DialogTitle className=\"text-lg font-semibold text-chekin-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-chekin-navy hover:bg-chekin-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-chekin-blue\" />\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-chekin-blue no-underline transition-all duration-75 ease-in-out',\n !disabled && 'hover:opacity-80 active:opacity-100',\n disabled && 'cursor-not-allowed text-chekin-gray-2',\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 {Loader2} from 'lucide-react';\nimport {useTranslation} from 'react-i18next';\nimport {cn} from '../lib/cn';\n\nexport interface LoaderProps {\n size?: 'sm' | 'md' | 'lg';\n text?: string;\n className?: string;\n showText?: boolean;\n variant?: 'primary' | 'secondary' | 'ghost';\n}\n\nexport function Loader({\n size = 'md',\n text,\n className = '',\n showText = true,\n variant = 'primary',\n}: LoaderProps) {\n const {t} = useTranslation();\n const sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-8 w-8',\n lg: 'h-12 w-12',\n };\n\n const textSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n };\n\n const variantClasses = {\n primary: 'text-chekin-blue',\n secondary: 'text-chekin-gray-1',\n ghost: 'text-chekin-gray-2',\n };\n\n return (\n <div className={cn('flex flex-col items-center justify-center gap-2', className)}>\n <div className={cn('animate-spin', sizeClasses[size], variantClasses[variant])}>\n <Loader2 className=\"h-full w-full\" />\n </div>\n {showText && (\n <p className={cn(textSizeClasses[size], 'font-medium text-chekin-gray-1')}>\n {text || t('loading')}\n </p>\n )}\n </div>\n );\n}\n","import type {ReactNode} from 'react';\nimport {CircleQuestionMark, TrendingDown, TrendingUp} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {Tooltip} from '../tooltip';\nimport {METRIC_CARD_VARIANTS} from './types';\nimport styles from './MetricCard.module.css';\n\nexport type MetricCardProps = {\n title: string;\n value: string | number;\n icon: ReactNode;\n variant: METRIC_CARD_VARIANTS;\n tooltip?: string;\n percentage?: number;\n loading?: boolean;\n className?: string;\n};\n\nexport function MetricCard({\n title,\n value,\n icon,\n variant,\n tooltip,\n percentage,\n loading = false,\n className,\n}: MetricCardProps) {\n return (\n <div\n className={cn(\n styles.MetricCard,\n styles[`MetricCard--${variant}`],\n loading && styles['MetricCard--loading'],\n className,\n )}\n >\n <div className={styles.MetricCard__iconContainer}>{icon}</div>\n\n <div className={styles.MetricCard__content}>\n <div className={styles.MetricCard__header}>\n <h4 className={styles.MetricCard__title}>{title}</h4>\n {tooltip && (\n <Tooltip side=\"right\" content={tooltip} contentClassName=\"max-w-64\">\n <button\n type=\"button\"\n className={cn(\n 'inline-flex text-chekin-gray-1',\n styles.MetricCard__tooltip,\n )}\n aria-label={tooltip}\n >\n <CircleQuestionMark className=\"h-4 w-4\" />\n </button>\n </Tooltip>\n )}\n </div>\n\n <div className={styles.MetricCard__footer}>\n <div className={styles.MetricCard__value}>{value}</div>\n {!!percentage && (\n <div\n className={cn(\n styles.MetricCard__percentage,\n percentage < 0 ? styles['--negative'] : '',\n )}\n >\n {percentage < 0 ? <TrendingDown /> : <TrendingUp />}\n {percentage}%\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n",".MetricCard {\n @apply flex w-full min-w-52 gap-2 rounded-lg border border-chekin-gray-3 p-4;\n}\n\n.MetricCard--loading {\n @apply cursor-progress opacity-60;\n}\n\n.MetricCard__iconContainer {\n @apply flex h-6 w-6 shrink-0 items-center justify-center rounded-full mix-blend-multiply;\n}\n\n.MetricCard__content {\n @apply flex flex-1 flex-col gap-4;\n}\n\n.MetricCard__header {\n @apply flex items-center gap-1;\n}\n\n.MetricCard__title {\n @apply whitespace-nowrap text-base font-medium leading-6 text-chekin-navy;\n}\n\n.MetricCard__tooltip {\n @apply text-chekin-gray-1;\n}\n\n.MetricCard__footer {\n @apply flex items-center justify-between gap-2;\n}\n\n.MetricCard__value {\n @apply text-2xl font-bold leading-6;\n}\n\n.MetricCard--blue {\n color: #385cf8;\n background: linear-gradient(122deg, #e6f0ff 36.37%, #f6f9ff 86.4%);\n}\n\n.MetricCard--blue .MetricCard__iconContainer {\n background: #dbeafe;\n}\n\n.MetricCard--green {\n color: #2bc29f;\n background: linear-gradient(122deg, #ddfbf4 36.37%, #f5fefc 86.4%);\n}\n\n.MetricCard--green .MetricCard__iconContainer {\n background: #cff9ef;\n}\n\n.MetricCard--orange {\n color: #f5721a;\n background: linear-gradient(122deg, #ffeddc 36.37%, #fffaf5 86.4%);\n}\n\n.MetricCard--orange .MetricCard__iconContainer {\n background: #ffe5cd;\n}\n\n.MetricCard--purple {\n color: #9a51ff;\n background: linear-gradient(122deg, #f5edff 36.37%, #fcfaff 86.4%);\n}\n\n.MetricCard--purple .MetricCard__iconContainer {\n background: #f0e5ff;\n}\n\n.MetricCard--yellow {\n color: #ce8b0b;\n background: linear-gradient(122deg, #fff8e5 36.37%, #fffbef 86.4%);\n}\n\n.MetricCard--yellow .MetricCard__iconContainer {\n background: #ffeeb2;\n}\n\n.MetricCard__percentage {\n @apply inline-flex items-center gap-x-1 text-base font-semibold leading-6 text-emerald-600;\n}\n\n.MetricCard__percentage.--negative {\n @apply text-chekin-red;\n}\n","import {ValueOf} from '../lib/types';\n\nexport const METRIC_CARD_VARIANTS = {\n blue: 'blue',\n green: 'green',\n orange: 'orange',\n purple: 'purple',\n yellow: 'yellow',\n} as const;\n\nexport type METRIC_CARD_VARIANTS = ValueOf<typeof METRIC_CARD_VARIANTS>;\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';\nimport styles from './styles.module.css';\n\ntype Text = {\n title?: string | ReactNode;\n text?: string | ReactNode;\n};\n\ntype Icon = {\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\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} & 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 iconSrc,\n iconAlt,\n iconProps = {width: 84},\n buttons,\n lockScroll = true,\n container,\n modal,\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 className={cn(\n 'modal__content',\n styles.modal__content,\n scrollableOverlay && 'min-h-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('modal__close', styles.modal__close)}\n aria-label=\"Close\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n )}\n\n {(iconSrc || iconProps?.src) && (\n <div className={cn('modal__icon', styles.modal__icon)}>\n <img src={iconSrc} alt={iconAlt ?? ''} {...iconProps} />\n </div>\n )}\n {title ? (\n <DialogTitle className={cn('modal__title', styles.modal__title)}>\n {title}\n </DialogTitle>\n ) : (\n <DialogVisuallyHidden>\n <DialogTitle>Dialog</DialogTitle>\n </DialogVisuallyHidden>\n )}\n {text && (\n <DialogDescription className={cn('modal__text', styles.modal__text)}>\n {text}\n </DialogDescription>\n )}\n {children}\n {buttons && (\n <div className={cn('modal__buttons-wrapper', styles.modal__buttonsWrapper)}>\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', styles.modal__button, 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};\n",".modal__content {\n @apply flex h-auto min-w-[340px] flex-col items-center gap-y-6 rounded-md bg-white text-center;\n color: var(--chekin-navy);\n}\n\n.modal__close {\n @apply absolute right-4 top-4 z-10 rounded-full p-1 hover:bg-[#f4f6f8];\n color: var(--chekin-blue);\n}\n\n.modal__icon {\n @apply mx-auto mt-4;\n user-select: none;\n}\n\n.modal__title {\n @apply px-6 text-lg font-bold;\n}\n\n.modal__text {\n @apply text-base;\n}\n\n.modal__buttonsWrapper {\n @apply mb-2 mt-6 flex flex-col items-center justify-center gap-y-4;\n}\n\n.modal__button {\n @apply min-w-[210px];\n}\n","import {memo} from 'react';\nimport {Loader} from '../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-white opacity-70',\n visible ? 'flex' : 'hidden',\n className,\n )}\n >\n <div className=\"mb-[60px]\">\n <Loader size=\"lg\" showText={false} variant=\"secondary\" />\n </div>\n </div>\n));\n\nModalLoader.displayName = 'ModalLoader';\n","import type {ReactNode} from 'react';\nimport {Loader, type LoaderProps} from '../loader';\nimport {cn} from '../lib/cn';\n\nexport interface OverlayLoaderProps {\n isLoading: boolean;\n children: ReactNode;\n loaderSize?: LoaderProps['size'];\n loaderText?: string;\n showText?: boolean;\n loaderVariant?: LoaderProps['variant'];\n className?: string;\n overlayClassName?: string;\n}\n\nexport function OverlayLoader({\n isLoading,\n children,\n loaderSize = 'md',\n loaderText,\n showText = true,\n loaderVariant = 'primary',\n className = '',\n overlayClassName = '',\n}: OverlayLoaderProps) {\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-white/60',\n overlayClassName,\n )}\n >\n <Loader\n size={loaderSize}\n text={loaderText}\n showText={showText}\n variant={loaderVariant}\n />\n </div>\n )}\n </div>\n );\n}\n","import {useTranslation} from 'react-i18next';\nimport {Loader, type LoaderProps} from '../loader';\nimport {cn} from '../lib/cn';\n\nexport type PageLoaderProps = LoaderProps & {\n className?: string;\n description?: string;\n};\n\nexport function PageLoader({className, description, ...props}: PageLoaderProps) {\n const {t} = useTranslation();\n\n return (\n <div\n className={cn('flex min-h-[300px] flex-col items-center justify-center', className)}\n >\n <div className=\"flex flex-col items-center rounded-lg border border-chekin-gray-3 bg-white/80 p-8 shadow-sm backdrop-blur-sm\">\n <Loader size=\"lg\" {...props} variant=\"primary\" />\n <p className=\"mt-4 max-w-xs text-center text-sm text-chekin-gray-1\">\n {description || t('loading_data_description')}\n </p>\n </div>\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-chekin-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-chekin-gray-1\">{t('rows_per_page')}</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=\"secondary\"\n size=\"icon\"\n className=\"hidden size-8 lg:flex\"\n onClick={goToFirstPage}\n disabled={!canGoPrevious}\n >\n <span className=\"sr-only\">{t('go_to_first_page')}</span>\n <ChevronsLeft />\n </Button>\n )}\n <Button\n variant={isSimpleVariant ? 'link' : 'secondary'}\n size=\"icon\"\n className={cn('size-8', {\n '!text-chekin-gray-1': isSimpleVariant,\n })}\n onClick={goToPreviousPage}\n disabled={!canGoPrevious}\n >\n <span className=\"sr-only\">{t('go_to_previous_page')}</span>\n <ChevronLeft />\n </Button>\n <Button\n variant={isSimpleVariant ? 'link' : 'secondary'}\n size=\"icon\"\n className={cn('size-8', {\n '!text-chekin-gray-1': isSimpleVariant,\n })}\n onClick={goToNextPage}\n disabled={!canGoNext}\n >\n <span className=\"sr-only\">{t('go_to_next_page')}</span>\n <ChevronRight />\n </Button>\n {!isSimpleVariant && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className=\"hidden size-8 lg:flex\"\n onClick={goToLastPage}\n disabled={!canGoNext}\n >\n <span className=\"sr-only\">{t('go_to_last_page')}</span>\n <ChevronsRight />\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\nimport * as RadixSelect from '@radix-ui/react-select';\nimport {cn} from '../lib/cn';\nimport {useCombinedRef} from '../hooks';\n\nexport const SelectRoot = RadixSelect.Root;\nexport const SelectValue = RadixSelect.Value;\nexport const SelectGroup = RadixSelect.Group;\nexport const SelectPortal = RadixSelect.Portal;\n\nexport const SelectTrigger = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Trigger>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Trigger>\n>(({className, children, ...props}, ref) => (\n <RadixSelect.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-between gap-chekin-1',\n 'h-10 px-[14px] w-full',\n 'rounded-chekin-standard bg-chekin-surface-input-empty',\n 'border border-[rgba(22,22,67,0.2)]',\n 'font-sans font-medium text-[14px] leading-5 text-chekin-navy',\n 'placeholder:text-chekin-gray-1',\n 'outline-none transition-colors',\n 'focus:border-chekin-navy focus:shadow-chekin-focus',\n 'data-[state=open]:border-chekin-navy',\n 'data-[placeholder]:text-chekin-gray-1',\n 'disabled:opacity-30 disabled:pointer-events-none',\n className,\n )}\n {...props}\n >\n {children}\n <RadixSelect.Icon asChild>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-chekin-gray-1\"\n aria-hidden=\"true\"\n >\n <path d=\"M3 5.5 L7 9.5 L11 5.5\" />\n </svg>\n </RadixSelect.Icon>\n </RadixSelect.Trigger>\n));\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport const SelectContent = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Content>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Content>\n>(({className, children, position = 'popper', ...props}, ref) => (\n <RadixSelect.Portal>\n <RadixSelect.Content\n ref={ref}\n position={position}\n sideOffset={6}\n className={cn(\n 'z-50 min-w-[var(--radix-select-trigger-width)] overflow-hidden',\n 'rounded-chekin-standard bg-white border border-chekin-gray-3',\n 'shadow-chekin-dropdown',\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 className,\n )}\n {...props}\n >\n <RadixSelect.Viewport className=\"p-[4px]\">{children}</RadixSelect.Viewport>\n </RadixSelect.Content>\n </RadixSelect.Portal>\n));\nSelectContent.displayName = 'SelectContent';\n\nexport const SelectItem = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Item>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Item>\n>(({className, children, ...props}, ref) => (\n <RadixSelect.Item\n ref={ref}\n className={cn(\n 'relative flex items-center gap-chekin-1',\n 'h-8 pl-[28px] pr-[10px] rounded-chekin-input cursor-pointer select-none',\n 'font-sans font-medium text-[14px] leading-5 text-chekin-navy',\n 'outline-none',\n 'data-[highlighted]:bg-chekin-surface-pressed data-[highlighted]:text-chekin-blue',\n 'data-[state=checked]:text-chekin-blue',\n 'data-[disabled]:opacity-30 data-[disabled]:pointer-events-none',\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-[8px] inline-flex items-center justify-center w-[14px] h-[14px]\">\n <RadixSelect.ItemIndicator>\n <svg\n viewBox=\"0 0 10 8\"\n className=\"w-[10px] h-[8px]\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M1 4.5 L3.8 7 L9 1\" />\n </svg>\n </RadixSelect.ItemIndicator>\n </span>\n <RadixSelect.ItemText>{children}</RadixSelect.ItemText>\n </RadixSelect.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport const SelectSeparator = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Separator>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Separator>\n>(({className, ...props}, ref) => (\n <RadixSelect.Separator\n ref={ref}\n className={cn('mx-[6px] my-[4px] h-px bg-chekin-gray-3', className)}\n {...props}\n />\n));\nSelectSeparator.displayName = 'SelectSeparator';\n\nexport const SelectLabel = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Label>,\n React.ComponentPropsWithoutRef<typeof RadixSelect.Label>\n>(({className, ...props}, ref) => (\n <RadixSelect.Label\n ref={ref}\n className={cn(\n 'px-[10px] py-[6px] font-sans text-[12px] leading-4 text-chekin-gray-2 uppercase tracking-wide',\n className,\n )}\n {...props}\n />\n));\nSelectLabel.displayName = 'SelectLabel';\n\nexport interface SelectProps extends React.ComponentPropsWithoutRef<\n typeof RadixSelect.Root\n> {\n placeholder?: string;\n label?: string;\n supportingText?: string;\n errorText?: string;\n containerClassName?: string;\n triggerClassName?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convenience wrapper that renders a full labelled Select with trigger + content.\n * For advanced compositions, use the exported primitives directly.\n */\nexport const Select = React.forwardRef<\n React.ElementRef<typeof RadixSelect.Trigger>,\n SelectProps\n>(\n (\n {\n placeholder,\n label,\n supportingText,\n errorText,\n containerClassName,\n triggerClassName,\n children,\n ...props\n },\n ref,\n ) => {\n const reactId = React.useId();\n const triggerId = props.name ?? reactId;\n const internalRef = React.useRef<React.ElementRef<typeof RadixSelect.Trigger>>(null);\n const combinedRef = useCombinedRef(ref, internalRef);\n\n return (\n <div className={cn('flex flex-col gap-chekin-1 w-[300px]', containerClassName)}>\n {label && (\n <label\n htmlFor={triggerId}\n className=\"text-chekin-navy font-sans font-medium text-[14px] leading-5\"\n >\n {label}\n </label>\n )}\n <SelectRoot {...props}>\n <SelectTrigger ref={combinedRef} id={triggerId} className={triggerClassName}>\n <RadixSelect.Value placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>{children}</SelectContent>\n </SelectRoot>\n <div className=\"flex justify-between min-h-[15px]\">\n {supportingText && !errorText && (\n <span className=\"text-chekin-gray-2 font-sans italic text-[12px] leading-[15px]\">\n {supportingText}\n </span>\n )}\n {errorText && (\n <span className=\"ml-auto text-chekin-red font-sans font-medium text-[12px] leading-4 text-right\">\n {errorText}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\nSelect.displayName = 'Select';\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 = 8, align = 'start', ...props}, ref) => (\n <RadixPopover.Portal>\n <RadixPopover.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cn(\n 'z-50 rounded-chekin-standard bg-white border border-chekin-gray-3 shadow-chekin-dropdown',\n '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 </RadixPopover.Portal>\n));\nPopoverContent.displayName = 'PopoverContent';\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';\nimport styles from './styles.module.css';\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 styles.radio__wrapper,\n (disabled || option.disabled) && styles.radio__wrapper_disabled,\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={cn(styles.radio__label, '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-chekin-blue text-chekin-blue',\n 'focus:outline-none focus-visible:shadow-chekin-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",".radio__wrapper {\n @apply flex cursor-pointer items-center gap-2;\n}\n\n.radio__wrapper_disabled {\n @apply cursor-default opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-70;\n}\n","import {cn} from '../lib/cn';\nimport {RadioGroupItem} from '../radio-group';\nimport {Radio} from './Radio';\nimport type {RadioProps} from './types';\n\nexport function RadioWithBorder({...props}: RadioProps) {\n return (\n <Radio\n {...props}\n renderOption={({option, isSelected}) => (\n <div\n className={cn(\n 'flex w-full items-start gap-3 rounded-lg border p-4',\n isSelected && 'border-chekin-blue bg-chekin-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=\"font-semibold\">{option.label}</p>\n {(option.data as {description?: string})?.description && (\n <p className=\"text-sm font-medium text-chekin-gray-1\">\n {(option.data as {description?: string}).description}\n </p>\n )}\n </div>\n </div>\n )}\n />\n );\n}\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-chekin-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';\nimport styles from './styles.module.css';\n\ntype Option = {\n label: string;\n value: number;\n};\n\nconst getStarColor = (optionValue: number) => (value: number) => {\n if (value >= optionValue) return 'var(--rating-star-color, #facc15)';\n return 'var(--text-grey-text, #777e91)';\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(className, styles.RatingRadioGroup)}>\n {label && <legend className={styles.RatingRadioGroup__legend}>{label}</legend>}\n <div className={cn(styles.RatingRadioGroup__list, 'RatingRadioGroup__list')}>\n {options.map(option => (\n <label key={option.value} className={styles.RatingRadioGroup__label}>\n <input\n className={styles.RatingRadioGroup__input}\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={styles.RatingRadioGroup__star}\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",".RatingRadioGroup__input {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n}\n\n.RatingRadioGroup__star {\n cursor: pointer;\n}\n\n.RatingRadioGroup .RatingRadioGroup__legend {\n margin-bottom: 8px;\n}\n\n.RatingRadioGroup {\n all: unset;\n position: relative;\n}\n\n.RatingRadioGroup__list {\n display: flex;\n gap: 8px;\n}\n\n.RatingRadioGroup__label input[type='radio']:focus-visible + .RatingRadioGroup__star {\n outline: 2px solid #385bf8;\n outline-offset: 2px;\n border-radius: 4px;\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 = '#DEDEEB',\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-chekin-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 {ChevronUp} from 'lucide-react';\nimport {cn} from '../lib/cn';\n\nexport type RotateIconProps = {\n active: boolean;\n className?: string;\n};\n\nexport function RotateIcon({active, className}: RotateIconProps) {\n return (\n <ChevronUp\n className={cn(\n 'h-4 w-4 transition-transform',\n !active ? 'rotate-180' : '',\n className,\n )}\n />\n );\n}\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(className, 'p-2')}\n data-testid=\"search-button\"\n aria-label={ariaLabel}\n type=\"button\"\n >\n {icon || <Search size={12} strokeWidth={4} className=\"text-chekin-gray-1\" />}\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-chekin-navy\">\n {label && <span className=\"min-w-0 truncate\">{label}</span>}\n {optionalLabel && (\n <span className=\"shrink-0 text-xs font-normal text-chekin-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-chekin-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-chekin-navy focus:border-chekin-gray-3',\n (loading || onReset) && 'pr-20',\n invalid &&\n 'border-[var(--status-danger)] text-[var(--status-danger)] placeholder:text-[var(--status-danger)]',\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-chekin-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-chekin-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 {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-emerald-600',\n blue: 'bg-chekin-blue',\n },\n },\n defaultVariants: {\n color: 'green',\n },\n },\n);\n","import type {VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\nimport {sectionTagVariants} from './sectionTagVariants';\n\nexport interface SectionTagProps extends VariantProps<typeof sectionTagVariants> {\n label: string;\n className?: string;\n}\n\nexport function SectionTag({label, color = 'green', className}: SectionTagProps) {\n return <div className={cn(sectionTagVariants({color}), className)}>{label}</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 {cn} from '../lib/cn';\nimport {Loader} from '../loader';\nimport {Tooltip} from '../tooltip';\nimport {SubSectionSize} from './constants';\nimport styles from './Section.module.css';\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 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-chekin-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 titleTooltip,\n loading,\n disabled,\n showLoader,\n linkContent,\n hidden,\n size,\n },\n ref,\n ) => (\n <div\n ref={ref}\n className={cn(\n styles.section,\n loading && styles.section_loading,\n disabled && styles.section_disabled,\n {'!hidden': hidden},\n className,\n )}\n >\n {(title || subtitle) && (\n <div className={styles.section__header}>\n {title && (\n <div\n className={cn(\n styles.section__title,\n size === SubSectionSize.L && styles.section__titleLarge,\n )}\n >\n {title}\n {titleTooltip && (\n <div className={styles.section__titleTooltip}>\n <TooltipInfo content={titleTooltip} />\n </div>\n )}\n {linkContent && (\n <div className={styles.section__titleLink}>{linkContent}</div>\n )}\n </div>\n )}\n {subtitle && (\n <div className={styles.section__subtitleWrapper}>\n <div className={styles.section__subtitle}>{subtitle}</div>\n {subtitleTooltip && (\n <div className={styles.section__subtitleTooltip}>\n <TooltipInfo content={subtitleTooltip} />\n </div>\n )}\n </div>\n )}\n </div>\n )}\n\n {loading && showLoader ? <Loader className={styles.section__loader} /> : children}\n </div>\n ),\n);\nSection.displayName = 'Section';\n\nconst SubSection = forwardRef<HTMLDivElement, SectionProps>(\n ({className, ...props}, ref) => (\n <Section ref={ref} className={cn(styles.section_sub, className)} {...props} />\n ),\n);\nSubSection.displayName = 'SubSection';\n\nconst DividingSubsection = forwardRef<HTMLDivElement, SectionProps>(\n ({className, ...props}, ref) => (\n <SubSection ref={ref} className={cn(styles.section_dividing, className)} {...props} />\n ),\n);\nDividingSubsection.displayName = 'DividingSubsection';\n\nexport {DividingSubsection, Section, SubSection, SubSectionSize};\n","export enum SubSectionSize {\n L,\n M,\n}\n",".section {\n @apply mb-6 box-border flex w-full cursor-default flex-col gap-6 rounded-lg border border-solid border-chekin-gray-3 bg-white px-6 py-10;\n}\n\n.section_loading {\n @apply cursor-progress;\n}\n\n.section_disabled {\n @apply pointer-events-none opacity-50;\n}\n\n.section__header {\n @apply flex flex-col gap-2;\n}\n\n.section__title {\n @apply flex max-w-[85%] items-center text-lg font-bold text-chekin-navy md:max-w-full;\n}\n\n.section__titleTooltip {\n @apply ml-2.5;\n}\n\n.section__titleLink {\n @apply ml-6 text-sm font-semibold text-chekin-blue no-underline hover:opacity-70 active:opacity-100;\n}\n\n.section__subtitleWrapper {\n @apply w-full max-w-[720px] md:max-w-full;\n}\n\n.section__subtitle {\n @apply inline text-base font-normal text-chekin-gray-1;\n}\n\n.section__subtitleTooltip {\n @apply ml-1.5 inline-block align-text-top;\n}\n\n.section__loader {\n @apply mx-auto mb-3 mt-2.5;\n}\n\n.section_sub {\n @apply m-0 box-border rounded-none border-none bg-transparent p-0;\n}\n\n.section_sub .section__title {\n @apply text-base font-semibold;\n}\n\n.section_sub .section__titleLarge {\n @apply text-lg font-bold;\n}\n\n.section_dividing {\n border: none;\n border-top: 1px solid var(--hr-line-color, #f1f1f1);\n padding-top: var(--section-gap, 24px);\n}\n","import {\n cloneElement,\n forwardRef,\n isValidElement,\n type ForwardedRef,\n type MouseEvent,\n type ReactNode,\n useEffect,\n} from 'react';\nimport {cn} from '../lib/cn';\nimport type {SelectorOption} from '../lib/selector-option';\nimport {SelectorButton} from '../selector-button';\nimport styles from './styles.module.css';\n\nconst getValueArray = <T extends string | number>(value?: T | T[]): T[] => {\n if (value) {\n return Array.isArray(value) ? value : [value];\n }\n\n return [];\n};\n\nfunction getSelectorContent(\n label: 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 } as Record<string, unknown>);\n }\n\n return label;\n}\n\nexport type SelectorsProps<\n T extends string | number,\n M extends boolean | undefined = undefined,\n> = {\n options: SelectorOption<T>[];\n onClick?: (\n event: MouseEvent<HTMLInputElement>,\n value: SelectorOption<T>,\n ) => void | {shouldPrevent: boolean};\n className?: string;\n onAnySelectorActive?: (isActive: boolean) => void;\n variant?: 'TAB' | 'DEFAULT';\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 size?: string;\n} & (M extends true\n ? {\n value?: T[];\n onChange?: (value: T[], event: MouseEvent<HTMLInputElement>) => void;\n }\n : {\n value?: T;\n onChange?: (value: T, event: MouseEvent<HTMLInputElement>) => void;\n });\n\nfunction SelectorsInternal<\n T extends string | number,\n M extends boolean | undefined = undefined,\n>(\n {\n className,\n loading,\n disabled,\n value,\n options = [],\n variant = 'DEFAULT',\n onAnySelectorActive,\n onClick,\n onChange,\n readOnly,\n minSelected = 0,\n disabledItems,\n readonlyItems,\n label,\n multiple = true,\n size = 'md',\n }: SelectorsProps<T, M>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const handleChange =\n (option: SelectorOption<T>) => (event: MouseEvent<HTMLInputElement>) => {\n event.preventDefault();\n const valueArray = getValueArray(value);\n if (disabled || disabledItems?.includes(option.value)) return;\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<HTMLInputElement>) => void)?.(\n newSelected,\n event,\n );\n } else {\n (onChange as (value: T, event: MouseEvent<HTMLInputElement>) => 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 return (\n <>\n {label && (\n <div className={styles.labelWrapper}>\n <div className={cn(styles.name, 'label')}>{label}</div>\n </div>\n )}\n <div\n ref={ref}\n className={cn(className, {\n [styles.selectorsWrapperTab]: variant === 'TAB',\n [styles.selectorsWrapperDefault]: variant !== 'TAB',\n })}\n >\n {options.map((option, index) => {\n const isSelected = getValueArray(value).includes(option.value);\n const isDisabled =\n disabled || disabledItems?.includes(option.value) || option.disabled;\n const isMinSelected = getValueArray(value).length <= minSelected;\n const isReadOnly =\n readOnly ||\n (isMinSelected && isSelected) ||\n readonlyItems?.includes(option.value);\n\n return (\n <SelectorButton\n key={`${option.value}-${index}`}\n loading={loading}\n readOnly={isReadOnly}\n type={multiple ? 'checkbox' : 'radio'}\n value={option.value}\n active={isSelected}\n disabled={isDisabled}\n onClick={event => onClick?.(event, option)}\n onChange={handleChange(option)}\n className={\n variant === 'TAB'\n ? cn(styles.selectorButton, {\n [styles.active]: isSelected,\n [styles.readOnly]: isReadOnly,\n [styles.sizeSm]: size === 'sm',\n })\n : 'selector-button'\n }\n >\n {getSelectorContent(option.label, isDisabled, isReadOnly, isSelected)}\n </SelectorButton>\n );\n })}\n </div>\n </>\n );\n}\n\nexport type SelectForwardType = <\n T extends string | number,\n M extends boolean | undefined = true,\n>(\n props: SelectorsProps<T, M> & {\n ref?: ForwardedRef<HTMLDivElement>;\n },\n) => ReturnType<typeof SelectorsInternal>;\n\n/**\n * @deprecated\n */\nexport const Selectors = forwardRef(SelectorsInternal) as SelectForwardType;\n",".styledButton {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-width: 117px;\n height: 48px;\n padding: 0 16px;\n border: 1px solid #cecede;\n border-radius: 6px;\n background-color: #f2f2fa;\n color: #9696b9;\n cursor: pointer;\n font-size: 15px;\n font-weight: 600;\n outline: none;\n text-align: left;\n user-select: none;\n transition: all 75ms ease-in-out;\n}\n\n.styledButton input {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n cursor: pointer;\n}\n\n.styledButton.disabled {\n cursor: not-allowed;\n opacity: 0.3;\n}\n\n.styledButton.loading {\n cursor: progress;\n}\n\n.styledButton:not(.disabled):hover {\n border-color: #385bf8;\n}\n\n.styledButton:not(.disabled):active {\n opacity: 1;\n}\n\n.styledButton.readOnly {\n cursor: default;\n}\n\n.styledButton.readOnly:not(.active):hover {\n border-color: transparent;\n}\n\n.styledButton.active {\n border-color: #385bf8;\n background: white;\n color: #385bf8;\n}\n\n.content {\n display: flex;\n align-items: center;\n height: 100%;\n}\n","import {type MouseEvent, type MouseEventHandler, type PropsWithChildren} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './styles.module.css';\n\ntype SelectorInputType = 'radio' | 'checkbox';\n\nexport type SelectorButtonProps = PropsWithChildren & {\n onChange: (event: MouseEvent<HTMLInputElement>) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void | {shouldPrevent: boolean};\n active?: boolean;\n className?: string;\n type?: SelectorInputType;\n disabled?: boolean;\n loading?: boolean;\n value?: string | number;\n readOnly?: boolean;\n};\n\nexport function SelectorButton({\n active,\n onClick,\n onChange,\n className,\n type = 'checkbox',\n loading,\n disabled,\n value,\n readOnly,\n children,\n ...props\n}: SelectorButtonProps) {\n const handleChange: MouseEventHandler<HTMLInputElement> = event => {\n if (disabled || readOnly || loading) {\n return;\n }\n\n const result = onClick?.(event);\n\n if (!result?.shouldPrevent) {\n void onChange(event);\n } else {\n event.preventDefault();\n }\n };\n\n return (\n <label\n className={cn(styles.styledButton, 'selector-button', className, {\n [styles.active]: active,\n [styles.disabled]: disabled,\n [styles.loading]: loading,\n [styles.readOnly]: readOnly,\n })}\n {...props}\n >\n <input\n onClick={handleChange}\n type={type}\n checked={active}\n value={value}\n disabled={readOnly || disabled}\n readOnly={readOnly}\n />\n <div className={styles.content}>{children}</div>\n </label>\n );\n}\n\nSelectorButton.displayName = 'SelectorButton';\n",".selectorsWrapperTab {\n @apply box-border flex h-auto max-h-none w-fit flex-wrap items-center rounded-md border border-chekin-gray-3;\n background: var(--field-empty-bq-color, #f4f6f8) 0 0 no-repeat padding-box;\n}\n\n.selectorsWrapperDefault {\n @apply flex w-full flex-wrap;\n margin-bottom: -10px;\n}\n\n.selectorsWrapperDefault .selectorButton {\n @apply mb-[10px] mr-[10px];\n}\n\n.selectorButton {\n @apply box-border whitespace-nowrap border border-transparent bg-transparent text-[15px] font-medium;\n color: var(--text-dark-grey, #6b6b95);\n min-width: auto;\n box-shadow: none;\n padding: 8px 21px;\n margin: 2px;\n min-height: 36px;\n transition-duration: 0s;\n flex: 1;\n}\n\n.selectorButton > div {\n @apply mx-auto my-0;\n}\n\n.selectorButton:not(.active):hover {\n @apply border-transparent text-white;\n background: var(--chekin-blue);\n opacity: 0.35;\n}\n\n.selectorButton.active {\n @apply cursor-default font-semibold text-white;\n background: var(--chekin-blue);\n box-shadow: 0 3px 4px var(--box-shadow-color, #00020334);\n border-color: var(--chekin-blue);\n}\n\n.selectorButton.active:hover {\n @apply opacity-100;\n box-shadow: 0 3px 4px var(--box-shadow-color, #00020334);\n}\n\n.selectorButton.readOnly:not(.active) {\n @apply cursor-default;\n color: var(--text-dark-grey, #6b6b95);\n}\n\n.selectorButton.readOnly:not(.active):hover {\n background: initial;\n color: var(--text-dark-grey, #6b6b95);\n}\n\n.selectorButton.sizeSm {\n @apply py-[7px] text-[14px] font-medium leading-6;\n}\n\n.selectorButton.active.sizeSm {\n @apply py-[7px] text-[14px] font-bold leading-6;\n}\n\n.labelWrapper {\n @apply flex;\n}\n\n.labelWrapper span {\n @apply ml-[5px];\n}\n\n.name {\n @apply box-border select-none overflow-x-hidden whitespace-nowrap text-left font-normal text-chekin-navy;\n font-size: 16px;\n min-height: 20px;\n margin-bottom: 6px;\n text-overflow: ellipsis;\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-chekin-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 * 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-chekin-navy shadow-lg transition ease-in-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-chekin-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-chekin-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-chekin-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-chekin-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-chekin-small opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:shadow-chekin-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-chekin-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-chekin-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('group/sidebar-wrapper flex min-h-svh w-full', className)}\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-chekin-surface-input-empty text-chekin-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-chekin-surface-input-empty p-0 text-chekin-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-chekin-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 bg-chekin-surface-input-empty 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-chekin-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-chekin-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-chekin-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-chekin-navy outline-none transition-transform hover:bg-chekin-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-chekin-gray-1 data-[active=false]:data-[highlighted=false]:hover:bg-chekin-surface-input-empty data-[active=false]:data-[highlighted=true]:bg-transparent data-[active=false]:data-[highlighted=true]:hover:bg-chekin-surface-input-empty data-[active=true]:data-[highlighted=false]:bg-chekin-surface-pressed data-[active=true]:data-[highlighted=false]:font-semibold data-[active=true]:data-[highlighted=false]:text-chekin-gray-1 data-[active=true]:data-[highlighted=true]:bg-chekin-surface-pressed data-[active=true]:data-[highlighted=true]:font-semibold data-[active=true]:data-[highlighted=true]:text-chekin-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-chekin-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-chekin-navy outline-none transition-transform hover:bg-chekin-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-chekin-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-chekin-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-chekin-gray-1 outline-none transition-colors duration-200 hover:bg-chekin-surface-input-empty hover:text-chekin-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-chekin-surface-pressed data-[active=true]:font-medium data-[active=true]:text-chekin-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-chekin-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 ? 'bg-chekin-surface-autocomplete' : 'bg-chekin-gray-3';\n }\n\n return highlighted ? 'bg-chekin-surface-pressed' : 'bg-chekin-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 ? 'text-chekin-blue' : 'text-chekin-gray-1',\n !isActive &&\n (highlighted\n ? 'group-hover/menu-button:bg-chekin-surface-autocomplete'\n : 'group-hover/menu-button:bg-chekin-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 React from 'react';\nimport {cn} from '../lib/cn';\nimport type {MainLoaderProps} from './types';\nimport {toCssSize} from '../lib/utils';\n\nconst CircularLoader = React.memo(\n ({visible = true, height, width, position, label, className}: 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 >\n <svg\n viewBox=\"25 25 50 50\"\n className=\"main-loader__svg text-[var(--circular-loader-color)]\"\n style={{\n width: toCssSize(width),\n height: toCssSize(height),\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 && <div className=\"text-sm font-medium text-chekin-gray-1\">{label}</div>}\n </div>\n );\n },\n);\n\nCircularLoader.displayName = 'CircularLoader';\n\nexport {CircularLoader};\n","import {type MouseEvent, memo} from 'react';\nimport {Pencil, Trash2} from 'lucide-react';\nimport {Button} from '../button';\nimport {cn} from '../lib/cn';\n\nexport type SmallGridSingleItemProps = {\n title?: string;\n subtitle?: string;\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 onDelete,\n onEdit,\n onClick,\n disabled,\n readOnly,\n error,\n className,\n }: SmallGridSingleItemProps) => {\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!disabled && onClick) onClick(event);\n };\n\n return (\n <div\n onClick={handleClick}\n className={cn(\n 'relative flex h-full w-full shrink-0 items-center justify-between gap-4',\n 'box-border rounded-md px-5 py-4 text-left text-base font-semibold text-chekin-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>\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-chekin-gray-2\">\n {subtitle}\n </div>\n )}\n </div>\n {!readOnly && (\n <div className=\"flex h-full items-center justify-end gap-2\">\n {onDelete && (\n <Button\n disabled={disabled}\n onClick={onDelete}\n size=\"icon\"\n variant=\"secondary\"\n >\n <Trash2 className=\"h-5 w-5 text-chekin-red\" />\n </Button>\n )}\n {onEdit && (\n <Button\n disabled={disabled}\n onClick={onEdit}\n size=\"icon\"\n variant=\"secondary\"\n >\n <Pencil className=\"h-5 w-5 text-chekin-blue\" />\n </Button>\n )}\n </div>\n )}\n {error && (\n <div className=\"absolute bottom-1 right-2 text-xs text-chekin-red\">{error}</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-chekin-surface-input-empty',\n className,\n )}\n aria-label=\"Open sorting menu\"\n >\n <ArrowDownUpIcon className=\"h-4 w-4 text-chekin-gray-1 group-hover/trigger:text-chekin-navy\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-full max-w-[256px]\" align=\"start\">\n <DropdownMenuItem\n className={cn(value === 'asc' && 'bg-chekin-surface-pressed text-chekin-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 className={cn(value === 'desc' && 'bg-chekin-surface-pressed text-chekin-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-50 -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-chekin-gray-3',\n isActive && 'bg-chekin-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-chekin-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-chekin-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 {type ComponentPropsWithoutRef, type ElementRef, forwardRef} from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {cn} from '../lib/cn';\n\nconst Tabs = TabsPrimitive.Root;\n\nexport const tabsListVariants = cva('inline-flex items-center', {\n variants: {\n variant: {\n default:\n 'h-10 justify-center rounded-md bg-chekin-surface-input-empty p-1 text-chekin-gray-1',\n underlined: 'gap-6 border-b border-chekin-gray-3',\n },\n },\n defaultVariants: {\n variant: 'default',\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',\n {\n variants: {\n variant: {\n default:\n 'rounded-sm px-3 py-1.5 text-sm font-medium focus-visible:shadow-chekin-focus data-[state=active]:bg-white data-[state=active]:text-chekin-navy data-[state=active]:shadow-sm',\n underlined:\n '-mb-px border-b-[3px] border-transparent py-2 text-base font-medium text-chekin-gray-1 data-[state=active]:border-chekin-blue data-[state=active]:font-semibold data-[state=active]:text-chekin-blue',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport type TabsTriggerProps = ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> &\n VariantProps<typeof tabsTriggerVariants>;\n\nconst TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({className, variant, ...props}, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(tabsTriggerVariants({variant}), className)}\n {...props}\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 ref={ref} className={className} tabIndex={-1} {...props} />\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-chekin-3',\n className,\n )\n : cn(\n 'rounded-b-md border border-t-0 border-chekin-gray-3 bg-white p-6 shadow-none',\n '[&>div:first-child]:flex [&>div:first-child]:flex-col',\n '[&>div:first-child]:gap-chekin-3',\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 {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 {ArrowRight} from 'lucide-react';\nimport {cn} from '../lib/cn';\nimport {TASK_VARIANTS} from './types';\nimport styles from './TaskCard.module.css';\n\nexport type TaskCardProps = {\n title: string;\n description: string;\n count?: number;\n eventType?: TASK_VARIANTS;\n onClick?: () => void;\n className?: string;\n};\n\nexport function TaskCard({\n title,\n description,\n count,\n eventType = 'error',\n onClick,\n className,\n}: TaskCardProps) {\n const shouldShowCount = count !== undefined && count > 1;\n const shouldShowActions = shouldShowCount || onClick;\n\n return (\n <div\n className={cn(\n styles.TaskCard,\n styles[`TaskCard--${eventType}`],\n onClick && styles['TaskCard--clickable'],\n className,\n )}\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={styles.TaskCard__indicator} />\n\n <div className={styles.TaskCard__content}>\n <h4 className={styles.TaskCard__title}>{title}</h4>\n <p className={styles.TaskCard__date}>{description}</p>\n </div>\n\n {shouldShowActions && (\n <div className={styles.TaskCard__actions}>\n {shouldShowCount && (\n <div\n className={cn(\n styles.TaskCard__count,\n styles[`TaskCard__count--${eventType}`],\n )}\n >\n {count}\n </div>\n )}\n {onClick && (\n <button\n className={styles.TaskCard__arrowButton}\n onClick={event => {\n event.stopPropagation();\n onClick?.();\n }}\n aria-label=\"View details\"\n type=\"button\"\n >\n <ArrowRight className=\"h-5 w-5\" />\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n",".TaskCard {\n @apply relative box-border flex min-h-[48px] min-w-[360px] items-center gap-4 overflow-hidden rounded-lg p-2 transition-colors duration-200;\n}\n\n.TaskCard--error {\n @apply bg-red-50;\n}\n\n.TaskCard--warning {\n @apply bg-amber-50;\n}\n\n.TaskCard--clickable {\n @apply cursor-pointer;\n}\n\n.TaskCard--clickable:hover::before {\n @apply pointer-events-none absolute inset-0 rounded-lg content-[''];\n}\n\n.TaskCard--error.TaskCard--clickable:hover::before {\n @apply bg-red-100 mix-blend-multiply;\n}\n\n.TaskCard--warning.TaskCard--clickable:hover::before {\n @apply bg-amber-100 mix-blend-multiply;\n}\n\n.TaskCard__indicator {\n @apply relative w-1 flex-shrink-0 self-stretch rounded-sm;\n}\n\n.TaskCard--error .TaskCard__indicator {\n @apply bg-chekin-red;\n}\n\n.TaskCard--warning .TaskCard__indicator {\n @apply bg-amber-500;\n}\n\n.TaskCard__content {\n @apply flex min-w-0 flex-1 flex-col items-start;\n}\n\n.TaskCard__title {\n @apply m-0 w-full break-words text-base font-semibold leading-6 text-chekin-navy;\n}\n\n.TaskCard__date {\n @apply m-0 w-full text-sm font-medium leading-6 text-chekin-gray-1;\n}\n\n.TaskCard__actions {\n @apply flex flex-shrink-0 items-center gap-1;\n}\n\n.TaskCard__count {\n @apply relative flex h-6 w-6 items-center justify-center rounded-full text-center text-sm font-semibold leading-6;\n}\n\n.TaskCard__count::before {\n @apply absolute inset-0 rounded-full mix-blend-multiply content-[''];\n}\n\n.TaskCard__count--error {\n @apply text-chekin-red;\n}\n\n.TaskCard__count--error::before {\n @apply bg-red-100;\n}\n\n.TaskCard__count--warning {\n @apply text-amber-700;\n}\n\n.TaskCard__count--warning::before {\n @apply bg-amber-100;\n}\n\n.TaskCard__arrowButton {\n @apply flex h-8 w-0 min-w-0 cursor-pointer items-center justify-center overflow-hidden rounded-md border-0 bg-transparent p-0 text-chekin-gray-1 opacity-0;\n transition:\n width 0.3s ease-in-out,\n opacity 0.3s ease-in-out,\n min-width 0.3s ease-in-out;\n}\n\n.TaskCard--clickable:hover .TaskCard__arrowButton {\n @apply w-8 min-w-8 opacity-100;\n}\n\n.TaskCard__arrowButton:hover {\n @apply bg-black/5;\n}\n\n.TaskCard__arrowButton:focus-visible {\n @apply w-8 min-w-8 opacity-100 outline outline-2 outline-offset-2 outline-chekin-blue;\n}\n","import {ValueOf} from '../lib/types';\n\nexport const TASK_VARIANTS = {\n error: 'error',\n warning: 'warning',\n} as const;\n\nexport type TASK_VARIANTS = ValueOf<typeof TASK_VARIANTS>;\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-chekin-gray-3 bg-chekin-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-chekin-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-chekin-gray-3 bg-chekin-surface-input-empty font-semibold text-chekin-gray-1 hover:border-chekin-blue data-[state=on]:border-chekin-blue data-[state=on]:bg-white data-[state=on]:text-chekin-blue',\n tab: 'border border-transparent bg-transparent font-medium text-chekin-gray-1 hover:bg-chekin-blue hover:text-white hover:opacity-35 data-[state=on]:cursor-default data-[state=on]:border-chekin-blue data-[state=on]:bg-chekin-blue data-[state=on]:font-semibold data-[state=on]:text-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-chekin-surface-autocomplete data-[state=off]:hover:border-transparent data-[state=off]:hover:bg-chekin-surface-input-empty',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n theme: 'default',\n },\n },\n);\n","import {forwardRef, type ForwardedRef, type MouseEvent, useEffect} from 'react';\nimport type {SelectorOption} from '../lib/selector-option';\nimport {ToggleGroup, ToggleGroupItem} from './ToggleGroup';\n\nconst getValueArray = <T extends string | number>(value?: T | T[]): T[] => {\n if (value) {\n return Array.isArray(value) ? value : [value];\n }\n\n return [];\n};\n\nexport type TogglesProps<\n T extends string | number,\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 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,\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 label,\n multiple = true,\n }: TogglesProps<T, M>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const handleValueChange = (newValue: string | string[]) => {\n if (!onChange) return;\n\n if (multiple) {\n const newValueArray = Array.isArray(newValue) ? newValue : [newValue];\n const typedValues = newValueArray.map(item => {\n const option = options.find(opt => String(opt.value) === item);\n return option ? option.value : (item as T);\n });\n (onChange as (value: T[], event: MouseEvent<HTMLButtonElement>) => void)?.(\n typedValues,\n {} as MouseEvent<HTMLButtonElement>,\n );\n return;\n }\n\n const singleValue = Array.isArray(newValue) ? newValue[0] : newValue;\n const option = options.find(opt => String(opt.value) === singleValue);\n const typedValue = option ? option.value : (singleValue as T);\n (onChange as (value: T, event: MouseEvent<HTMLButtonElement>) => void)?.(\n typedValue,\n {} as MouseEvent<HTMLButtonElement>,\n );\n };\n\n const handleItemClick =\n (option: SelectorOption<T>) => (event: MouseEvent<HTMLButtonElement>) => {\n if (disabled || disabledItems?.includes(option.value) || option.disabled) {\n event.preventDefault();\n return;\n }\n\n const result = onClick?.(event, option);\n\n if (result?.shouldPrevent) {\n event.preventDefault();\n return;\n }\n\n const valueArray = getValueArray(value);\n\n if (multiple) {\n const hasBeenSelected = valueArray.includes(option.value);\n const newSelected = hasBeenSelected\n ? valueArray.filter(selectedValue => selectedValue !== option.value)\n : [...valueArray, option.value];\n\n (onChange as (value: T[], event: MouseEvent<HTMLButtonElement>) => void)?.(\n newSelected,\n event,\n );\n } else {\n (onChange as (value: T, event: MouseEvent<HTMLButtonElement>) => void)?.(\n option.value,\n event,\n );\n }\n };\n\n const isAnyActive = getValueArray(value).length > 0;\n useEffect(() => {\n onAnySelectorActive?.(isAnyActive);\n }, [isAnyActive, onAnySelectorActive]);\n\n const currentValue = getValueArray(value).map(item => String(item));\n\n const toggleGroupProps = {\n variant,\n size: size ?? (variant === 'tab' ? 'tab' : 'default'),\n theme,\n onValueChange: handleValueChange,\n ...(multiple\n ? {type: 'multiple' as const, value: currentValue}\n : {type: 'single' as const, value: currentValue[0] ?? ''}),\n };\n\n return (\n <div ref={ref} className={className}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"select-none text-base font-normal text-chekin-navy\">\n {label}\n </div>\n </div>\n )}\n <ToggleGroup className={groupClassName} {...toggleGroupProps}>\n {options.map((option, index) => {\n const isSelected = getValueArray(value).includes(option.value);\n const isDisabled =\n disabled || disabledItems?.includes(option.value) || option.disabled;\n const isMinSelected = getValueArray(value).length <= minSelected;\n const isItemReadOnly = readOnly || (isMinSelected && isSelected);\n\n return (\n <ToggleGroupItem\n key={`${option.value}-${index}`}\n value={String(option.value)}\n disabled={isDisabled || isItemReadOnly || loading}\n onClick={handleItemClick(option)}\n >\n {option.label}\n </ToggleGroupItem>\n );\n })}\n </ToggleGroup>\n </div>\n );\n}\n\nexport type TogglesForwardType = <\n T extends string | number,\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';\nimport styles from './textField.module.css';\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('relative flex w-full flex-col', styles.root, wrapperClassName)}\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', styles.root, 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-chekin-navy\">{'- '}</span>\n <span className=\"italic text-chekin-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 {ReactNode} from 'react';\n\nexport type FieldErrorProps = {\n id?: string;\n children: ReactNode;\n};\n\nexport const FieldError = ({id, children}: FieldErrorProps) => (\n <p id={id} className=\"mt-1 text-right text-xs font-medium text-chekin-red\" role=\"alert\">\n {children}\n </p>\n);\n","import type {ReactNode} from 'react';\n\nexport type SupportingTextProps = {\n id?: string;\n children: ReactNode;\n};\n\nexport const SupportingText = ({id, children}: SupportingTextProps) => (\n <p id={id} className=\"mt-1 text-xs italic text-chekin-gray-2\">\n {children}\n </p>\n);\n",".root {\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","import {type TextareaHTMLAttributes, forwardRef, useId} from 'react';\nimport {cn} from '../lib/cn';\nimport styles from './styles.module.css';\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(styles.container, className)}>\n <textarea\n ref={ref}\n id={inputId}\n name={name}\n disabled={disabled}\n className={cn(styles.textarea, textareaClassName, {\n [styles.textareaError]: invalid,\n [styles.textareaDisabled]: disabled,\n })}\n {...textareaProps}\n />\n {label && (\n <label\n htmlFor={inputId}\n className={cn(styles.label, {\n [styles.labelError]: invalid,\n [styles.labelDisabled]: disabled,\n })}\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\n",".container {\n position: relative;\n}\n\n.label {\n pointer-events: none;\n position: absolute;\n left: 0.75rem;\n top: 1rem;\n padding: 0 0.25rem;\n color: #6b6b95;\n transition: all 0.1s ease;\n}\n\n.container textarea:focus + .label,\n.container textarea:not(:placeholder-shown) + .label {\n top: -0.6rem;\n left: 0.5rem;\n background-color: white;\n font-size: 14px;\n font-weight: 500;\n}\n\n.container textarea:focus + .label {\n color: #385bf8;\n}\n\n.labelError {\n color: #ff2467;\n}\n\n.labelDisabled {\n color: #9696b9;\n}\n\n.textarea {\n box-sizing: border-box;\n min-height: 120px;\n width: 100%;\n resize: none;\n border: 1px solid #cecede;\n border-radius: 8px;\n background: #f4f6f8;\n padding: 12px 16px;\n color: #161643;\n font: inherit;\n outline: none;\n scrollbar-color: #777e91 transparent;\n scrollbar-gutter: stable;\n}\n\n.textarea:focus,\n.textarea:not(:placeholder-shown) {\n background-color: white;\n}\n\n.textarea::placeholder {\n color: #6b6b95;\n opacity: 1;\n}\n\n.textarea:focus {\n border-color: #385bf8;\n transition: background-color 0.1s ease-in-out;\n}\n\n.textareaError,\n.textareaError:focus {\n border-color: #ff2467;\n}\n\n.textareaDisabled {\n cursor: not-allowed;\n resize: none;\n border-color: #9696b9;\n background-color: #f4f6f8;\n color: #9696b9;\n}\n\n.textareaDisabled::placeholder {\n color: #9696b9;\n}\n","export enum LABEL_PLACEMENT {\n right,\n left,\n}\n",".Loader {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 13px;\n}\n\n.Loader > div {\n color: #9696b9;\n font-size: 14px;\n font-weight: 700;\n opacity: 0.5;\n text-transform: uppercase;\n}\n\n.dots {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 15%;\n}\n\n.dot {\n width: 22%;\n height: 22%;\n border-radius: 9999px;\n animation: three-dots 1.1s infinite ease-in-out both;\n}\n\n.dot:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.dot:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n@keyframes three-dots {\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n }\n\n 40% {\n transform: scale(1);\n }\n}\n","import type {ReactNode} from 'react';\nimport {cn} from '../lib/cn';\nimport {LABEL_PLACEMENT} from './constants';\nimport styles from './styles.module.css';\n\nexport type ThreeDotsLoaderProps = {\n height?: number;\n width?: number;\n color?: string;\n label?: string | ReactNode;\n className?: string;\n labelPlacement?: LABEL_PLACEMENT;\n};\n\nfunction Dots({\n height,\n width,\n color,\n}: Required<Pick<ThreeDotsLoaderProps, 'height' | 'width' | 'color'>>) {\n return (\n <span className={styles.dots} style={{height, width}} aria-hidden=\"true\">\n <span className={styles.dot} style={{backgroundColor: color}} />\n <span className={styles.dot} style={{backgroundColor: color}} />\n <span className={styles.dot} style={{backgroundColor: color}} />\n </span>\n );\n}\n\nexport function ThreeDotsLoader({\n height = 30,\n width = 30,\n color = '#E3E3E3FF',\n label = '',\n className,\n labelPlacement = LABEL_PLACEMENT.right,\n}: ThreeDotsLoaderProps) {\n const dots = <Dots color={color} height={height} width={width} />;\n\n if (label) {\n return (\n <div className={cn(styles.Loader, className)}>\n {labelPlacement === LABEL_PLACEMENT.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 <div className={className}>{dots}</div>;\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-chekin-gray-2 bg-chekin-surface-pressed py-1.5 pl-3 pr-1.5\"\n >\n <span className=\"text-nowrap text-sm font-medium leading-5 text-chekin-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-chekin-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 {Button, type ButtonProps} from '../button';\nimport {cn} from '../lib/cn';\n\nexport type WideButtonProps = Omit<ButtonProps, 'size'>;\n\nexport function WideButton({className, disabled, ...props}: WideButtonProps) {\n return (\n <Button\n variant=\"ghost\"\n className={cn(\n 'min-h-[84px] w-full max-w-[712px] flex-row justify-center bg-chekin-surface-pressed 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","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 aria-hidden=\"true\" className=\"h-5 w-5 animate-spin text-[#7A8399]\" />\n )}\n </span>\n ) : undefined;\n const sharedClasses = cn(\n 'relative flex border w-full items-center bg-[var(--form-background-color,#fff)] text-left transition-colors focus-visible:outline-none',\n isAirbnbVariant\n ? 'rounded-[var(--form-input-border-radius,12px)] border-[var(--form-border-color,#8c8c8c)] pl-4 pr-4 focus-visible:ring-2 focus-visible:ring-[var(--form-title-color,#222222)] focus-visible:ring-offset-2'\n : 'rounded-[10px] px-3.5 focus-visible:border-[#315EFB]',\n isAirbnbVariant ? (isRaised ? 'min-h-[60px]' : 'h-[60px]') : 'min-h-[48px]',\n hasInvalidState\n ? isAirbnbVariant\n ? 'border-[var(--status-danger)] bg-[var(--form-error-background,#FFF5F3)]'\n : 'border-[var(--status-danger)] bg-white'\n : isAirbnbVariant\n ? 'border-[var(--form-border-color,#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-0 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-[var(--form-background-color,#fff)] 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(--status-danger)]'\n : isAirbnbVariant\n ? 'text-[var(--form-placeholder-color,#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\n ? 'text-[var(--status-danger)]'\n : 'text-[var(--form-field-text-color,#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-[var(--form-label-input-gap,12px)] text-[16px] font-semibold leading-5 text-[var(--form-section-title-color,#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(--status-danger)]',\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(--status-danger)\"\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 className={cn(\n 'text-center mb-4 text-[20px] font-semibold leading-7',\n titleClassName,\n )}\n >\n {title}\n </div>\n ) : null}\n {description ? (\n <p\n className={cn(\n 'mt-3 text-center text-[14px] 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\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: `${option.label} (${option.value})`,\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 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 {\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(containerRef, isOpen && !isMobile ? () => setIsOpen(false) : null);\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,\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={helperTextId}\n errorId={error ? errorId : undefined}\n listboxId={listboxId}\n describedBy={describedBy}\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 {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(containerRef, open && !isMobile ? () => closeSelect() : null);\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\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 <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"],"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,wBAAAA;AAAA,EAAA,qBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;AACvB,0BAA0B;AAC1B,yBAAoC;;;ACFpC,kBAAoC;AACpC,4BAAsB;AAEf,SAAS,MAAM,QAA8B;AAClD,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ACLA;;;AFYE;AANF,IAAM,YAA+B;AAErC,IAAM,gBAAsB,iBAG1B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAoB;AAAA,EAAnB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,mBAAmB,kBAAO,iBAAiB,SAAS;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,cAAc,cAAc;AAS5B,IAAM,mBAAyB,iBAG7B,CAAC,EAAC,WAAW,UAAU,UAAU,YAAY,GAAG,MAAK,GAAG,QAAQ;AAChE,QAAM,qBAAqB,cACzB,4CAAC,4BAAK,eAAY,QAAO,WAAU,WAAU;AAE/C,QAAM,mBAAmB,YAAY,4CAAC,6BAAM,eAAY,QAAO,WAAU,WAAU;AAEnF,SACE,4CAAoB,2BAAnB,EAA0B,WAAU,QACnC;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,kBAAO;AAAA,QACP;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,oDAAC,UAAK,WAAU,oBAAoB,UAAS;AAAA,QAC7C;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,kBAAO;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEA;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,kBACF;AAAA,kBACA,eAAY;AAAA,kBAEX;AAAA;AAAA,cACH;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,kBACF;AAAA,kBACA,eAAY;AAAA,kBAEX;AAAA;AAAA,cACH;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;AACD,iBAAiB,cAAiC,2BAAQ;AAQ1D,IAAM,mBAAyB,iBAG7B,CAAC,EAAC,WAAW,kBAAkB,UAAU,GAAG,MAAK,GAAG,QACpD;AAAA,EAAoB;AAAA,EAAnB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,kBAAO;AAAA;AAAA;AAAA,MAGP;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,kBAAO;AAAA,UACP;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH;AAAA;AACF,CACD;AACD,iBAAiB,cAAiC,2BAAQ;;;AGlH1D,IAAAC,uBAAyD;;;ACDzD;;;ADqBsB,IAAAC,sBAAA;AAhBf,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,WAAQ;AALE,SAAAA;AAAA,GAAA;AAQL,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,OAAI;AACJ,EAAAA,WAAA,OAAI;AACJ,EAAAA,WAAA,OAAI;AAHM,SAAAA;AAAA,GAAA;AAMZ,IAAM,UAAU,CAAC,UACd;AAAA,EACC,CAAC,iBAAc,GAAG,6CAAC,oCAAY,WAAU,YAAW;AAAA,EACpD,CAAC,uBAAiB,GAAG,6CAAC,sCAAc,WAAU,YAAW;AAAA,EACzD,CAAC,mBAAe,GAAG,6CAAC,gCAAQ,WAAU,YAAW;AAAA,EACjD,CAAC,mBAAe,GAAG;AAAA,EACnB,CAAC,uBAAiB,GAAG,6CAAC,8BAAM,WAAU,YAAW;AACnD,GAAG,IAAI;AAET,IAAM,cAAyC;AAAA,EAC7C,CAAC,WAAW,GAAG;AAAA,EACf,CAAC,WAAW,GAAG;AAAA,EACf,CAAC,WAAW,GAAG;AACjB;AAEA,IAAM,aAAwC;AAAA,EAC5C,CAAC,iBAAc,GAAG,iBAAO,gBAAgB;AAAA,EACzC,CAAC,uBAAiB,GAAG,iBAAO,mBAAmB;AAAA,EAC/C,CAAC,mBAAe,GAAG,iBAAO,iBAAiB;AAAA,EAC3C,CAAC,uBAAiB,GAAG,iBAAO,mBAAmB;AAAA,EAC/C,CAAC,mBAAe,GAAG;AACrB;AAWO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP;AACF,GAAkB;AAChB,QAAM,gBAAgB,QAAQ,YAAY,UAAU;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT,iBAAO;AAAA,QACP;AAAA,QACA,YAAY,IAAI;AAAA,QAChB,WAAW,IAAI;AAAA,QACf;AAAA,MACF;AAAA,MAEC;AAAA,0BAAkB,cAAc,QAAQ,IAAI;AAAA,QAC7C,6CAAC,SAAI,WAAU,iDAAiD,gBAAK;AAAA;AAAA;AAAA,EACvE;AAEJ;AAEA,SAAS,cAAc;AAEhB,IAAM,aAAa;AACnB,IAAM,aAAa;;;AEhF1B,mBAAuD;AACvD,IAAAC,uBAA0B;;;ACF1B;;;ADkFM,IAAAC,sBAAA;AA5EN,SAAS,WAAW,SAAyB;AAC3C,QAAM,OAAO,KAAK,MAAM,UAAU,EAAE;AACpC,QAAM,OAAO,KAAK,MAAM,UAAU,EAAE;AACpC,SAAO,GAAG,OAAO,IAAI,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,IAAI,EAAE,SAAS,GAAG,GAAG,CAAC;AAC1E;AAQO,SAAS,YAAY,EAAC,KAAK,SAAS,UAAS,GAAqB;AACvE,QAAM,eAAW,qBAAyB,IAAI;AAC9C,QAAM,kBAAc,qBAAuB,IAAI;AAC/C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAChD,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,CAAC;AAC1C,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,CAAC;AAC1C,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAS,CAAC;AAEhD,8BAAU,MAAM;AACd,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,UAAM,mBAAmB,MAAM,YAAY,MAAM,QAAQ;AAEzD,UAAM,eAAe,MAAM;AACzB,qBAAe,MAAM,WAAW;AAChC,kBAAY,MAAM,WAAY,MAAM,cAAc,MAAM,WAAY,MAAM,CAAC;AAAA,IAC7E;AAEA,UAAM,UAAU,MAAM;AACpB,mBAAa,KAAK;AAClB,kBAAY,CAAC;AACb,qBAAe,CAAC;AAAA,IAClB;AAEA,UAAM,iBAAiB,kBAAkB,gBAAgB;AACzD,UAAM,iBAAiB,cAAc,YAAY;AACjD,UAAM,iBAAiB,SAAS,OAAO;AAEvC,WAAO,MAAM;AACX,YAAM,oBAAoB,kBAAkB,gBAAgB;AAC5D,YAAM,oBAAoB,cAAc,YAAY;AACpD,YAAM,oBAAoB,SAAS,OAAO;AAAA,IAC5C;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,sBAAkB,0BAAY,MAAM;AACxC,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,QAAI,WAAW;AACb,YAAM,MAAM;AAAA,IACd,OAAO;AACL,WAAK,MAAM,KAAK;AAAA,IAClB;AAEA,iBAAa,CAAC,SAAS;AAAA,EACzB,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,iBAAa;AAAA,IACjB,CAAC,UAA4C;AAC3C,YAAM,QAAQ,SAAS;AACvB,YAAM,MAAM,YAAY;AACxB,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAU;AAEjC,YAAM,OAAO,IAAI,sBAAsB;AACvC,YAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,UAAU,KAAK,QAAQ,KAAK,KAAK,CAAC;AAC/E,YAAM,cAAc,QAAQ;AAAA,IAC9B;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,SACE,8CAAC,SAAI,aAAU,gBAAe,WAAW,GAAG,2BAA2B,SAAS,GAC9E;AAAA,iDAAC,WAAM,KAAK,UAAU,KAAU,SAAQ,YAAW;AAAA,IACnD;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,UACT,oBAAO;AAAA,UACP;AAAA,UACA,UAAU,oBAAoB;AAAA,QAChC;AAAA,QACA,SAAS;AAAA,QAER,sBACC,6CAAC,8BAAM,WAAW,GAAG,UAAU,gBAAgB,WAAW,cAAc,GAAG,IAE3E,6CAAC,6BAAK,WAAW,GAAG,UAAU,gBAAgB,WAAW,cAAc,GAAG;AAAA;AAAA,IAE9E;AAAA,IACC,CAAC,WACA,8EACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,WAAW;AAAA,YACT,oBAAO;AAAA,YACP;AAAA,UACF;AAAA,UACA,SAAS;AAAA,UAET;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,oBAAO;AAAA,gBACP;AAAA,cACF;AAAA,cACA,OAAO,EAAC,OAAO,GAAG,QAAQ,IAAG;AAAA;AAAA,UAC/B;AAAA;AAAA,MACF;AAAA,MACA,6CAAC,UAAK,WAAW,GAAG,oBAAO,MAAM,8BAA8B,GAC5D,uBAAa,cAAc,IACxB,WAAW,WAAW,IACtB,WAAW,QAAQ,GACzB;AAAA,OACF;AAAA,KAEJ;AAEJ;AAEA,YAAY,cAAc;;;AE/H1B,IAAAC,SAAuB;AACvB,sBAAiC;;;ACDjC;;;ADyBE,IAAAC,sBAAA;AAVF,IAAMC,eAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,SAAe,kBAG1B,CAAC,EAAC,WAAW,KAAK,KAAK,UAAU,OAAO,MAAM,mBAAmB,GAAG,MAAK,GAAG,QAC5E;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW;AAAA,MACT;AAAA,MACAA,aAAY,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ;AAAA;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC;AAAA,UACA;AAAA,UACA,WAAU;AAAA;AAAA,MACZ;AAAA,MACA;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,CAAC,qBAAqB,eAAO;AAAA,YAC7B;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA;AACF,CACD;AAED,OAAO,cAAc;;;AEnDrB,wBAAmB;AACnB,sCAAqC;AAwCjC,IAAAC,sBAAA;AArCG,IAAM,oBAAgB;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAOO,SAAS,MAAM,EAAC,WAAW,SAAS,UAAU,OAAO,GAAG,MAAK,GAAe;AACjF,QAAM,OAAO,UAAU,yBAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,cAAc,EAAC,QAAO,CAAC,GAAG,SAAS;AAAA,MAChD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,MAAM,cAAc;;;ACjDpB,2BAA6B;;;ACD7B;;;ADoBI,IAAAC,sBAAA;AAVG,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAAmB;AACjB,QAAM,EAAC,EAAC,QAAI,qCAAe;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT,kBAAO;AAAA,QACP;AAAA,QACA,YAAY,kBAAO,qBAAqB;AAAA,QACxC;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,gBAAQ,EAAE,MAAM;AAAA,QAChB;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,UAAU,cAAc;;;AEpCxB,IAAAC,SAAuB;AACvB,oBAA+B;AAC/B,IAAAC,mCAAqC;AA+DnC,IAAAC,sBAAA;AA5DK,IAAM,+BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,UACP;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEO,IAAM,kCAA8B;AAAA,EACzC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAOO,IAAM,mBAAyB,kBAGpC,CAAC,EAAC,WAAW,SAAS,GAAG,MAAK,GAAG,QACjC;AAAA,EAAe;AAAA,EAAd;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,yBAAyB,EAAC,QAAO,CAAC,GAAG,SAAS;AAAA,IAC3D,GAAG;AAAA;AACN,CACD;AACD,iBAAiB,cAAc;AAOxB,IAAM,sBAA4B,kBAGvC,CAAC,EAAC,WAAW,SAAS,GAAG,MAAK,GAAG,QACjC;AAAA,EAAe;AAAA,EAAd;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,4BAA4B,EAAC,QAAO,CAAC,GAAG,SAAS;AAAA,IAC9D,GAAG;AAAA;AACN,CACD;AACD,oBAAoB,cAAc;;;ACzFlC,IAAAC,gBAA8C;AAC9C,IAAAC,wBAA6B;;;ACF7B;;;AD8EU,IAAAC,sBAAA;AAjDH,IAAM,wBAAoB;AAAA,EAC/B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,EACnB,GACA,QACG;AACH,UAAM,EAAC,EAAC,QAAI,sCAAe;AAC3B,UAAM,CAAC,gBAAgB,iBAAiB,QAAI,wBAAS,KAAK;AAE1D,UAAM,aAAa,aAAa,UAAU,iBAAiB,UAAU;AAErE,UAAM,cAAc,MAAM;AACxB,UAAI,SAAU;AACd,eAAS,iBAAkB,aAAa,SAAS,QAAS,KAAK;AAAA,IACjE;AAEA,UAAM,qBAAqB,CAAC,YAAqB;AAC/C,UAAI,SAAU;AACd,wBAAkB,OAAO;AACzB,eAAS,UAAW,aAAa,SAAS,QAAS,KAAK;AAAA,IAC1D;AAEA,iCAAU,MAAM;AACd,wBAAkB,kBAAkB,aAAa,KAAK;AAAA,IACxD,GAAG,CAAC,eAAe,aAAa,KAAK,CAAC;AAEtC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,WAAW;AAAA,UACT,0BAAO;AAAA,UACP;AAAA,UACA,cAAc,0BAAO,qBAAqB;AAAA,UAC1C,YAAY;AAAA,QACd;AAAA,QACA,SAAS;AAAA,QAET;AAAA,wDAAC,SAAI,WAAU,kDACb;AAAA,yDAAC,QAAG,WAAU,uDAAuD,iBAAM;AAAA,YAC1E,eAAe,cAAc,mBAC5B;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,WAAS,MAAM,gBAAgB;AAAA,gBACxC,WAAU;AAAA,gBAEV;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,IAAI,YAAY,EAAE;AAAA,sBAClB,OAAO;AAAA,sBACP;AAAA,sBACA,MAAK;AAAA,sBACL,UAAU;AAAA;AAAA,kBACZ;AAAA,kBACA;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAW;AAAA,wBACT;AAAA,wBACA,iBACI,+CACA;AAAA,sBACN;AAAA,sBAEC,2BAAiB,EAAE,UAAU;AAAA;AAAA,kBAChC;AAAA;AAAA;AAAA,YACF;AAAA,aAEJ;AAAA,UACA,6CAAC,OAAE,WAAU,2DACV,uBACH;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,kBAAkB,cAAc;;;AExExB,IAAAC,sBAAA;AAxBD,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,gBAAgB;AAC1B,GAAoB;AAClB,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,QAAQ,MAAM,CAAC,OAAO;AACrC,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,EACF;AAEA,SACE,6CAAC,QAAG,WAAU,gBACX,mBACC;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc,UAAU,SAAS;AAAA,MACjC,WAAW;AAAA,MACV,GAAI,kBAAkB,MAAM,EAAC,MAAM,GAAE,IAAI,EAAC,IAAI,MAAM,GAAE;AAAA,MAEtD;AAAA,eAAO,6CAAC,UAAK,WAAU,YAAY,gBAAK,IAAU;AAAA,QAClD;AAAA;AAAA;AAAA,EACH,IAEA,8CAAC,SAAI,gBAAc,UAAU,SAAS,QAAW,WAAW,kBACzD;AAAA,WAAO,6CAAC,UAAK,WAAU,YAAY,gBAAK,IAAU;AAAA,IAClD;AAAA,KACH,GAEJ;AAEJ;;;ACxDA,IAAAC,gBAOO;AACP,IAAAC,uBAA2B;AA4Bf,IAAAC,uBAAA;AAnBL,SAAS,YAAY,EAAC,WAAW,SAAQ,GAAqB;AACnE,QAAM,QAAQ,uBAAS,QAAQ,QAAQ,EAAE,OAAO,WAAS;AACvD,QAAI,KAAC,8BAAe,KAAK,GAAG;AAC1B,aAAO;AAAA,IACT;AAEA,WAAO,CAAE,MAAM,MAAyB;AAAA,EAC1C,CAAC;AAED,SACE,8CAAC,SAAI,WAAW,GAAG,eAAe,SAAS,GAAG,cAAW,cACvD,wDAAC,QAAG,WAAU,uDACX,gBAAM,IAAI,CAAC,OAAO,UAAU;AAC3B,UAAM,oBAAoB,MAAM,SAAS,MAAM;AAC/C,UAAM,qBAAiB,8BAAe,KAAK,QACvC,4BAAa,OAAO,EAAC,SAAS,kBAAiB,CAAC,IAChD;AAEJ,WACE,+CAAC,0BACE;AAAA,cAAQ,IACP;AAAA,QAAC;AAAA;AAAA,UACC,eAAY;AAAA,UACZ,WAAU;AAAA,UACV,MAAM;AAAA;AAAA,MACR,IACE;AAAA,MACH;AAAA,SARY,MAAM,OAAO,KAS5B;AAAA,EAEJ,CAAC,GACH,GACF;AAEJ;;;ACnDA,IAAAC,SAAuB;AACvB,IAAAC,qBAAmB;AAEnB,IAAAC,wBAA6B;;;ACH7B,IAAAC,mCAAkB;AAEX,IAAM,qBAAiB;AAAA,EAC5B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,SACE;AAAA,QACF,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,EACF;AACF;;;ADtEQ,IAAAC,uBAAA;AAzBD,IAAM,SAAe;AAAA,EAC1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,EAAC,EAAC,QAAI,sCAAe;AAC3B,UAAM,mBAAmB,SAAS;AAClC,UAAM,aAAa,YAAY,YAAY;AAC3C,UAAM,aAAa,GAAG,eAAe,EAAC,SAAS,MAAM,OAAO,SAAQ,CAAC,GAAG,SAAS;AAEjF,QAAI,SAAS;AACX,aACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,iBAAe,cAAc;AAAA,UAC7B,WAAW;AAAA,UACV,GAAG;AAAA,UAEH;AAAA;AAAA,MACH;AAAA,IAEJ;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAM,QAAQ;AAAA,QACd,UAAU;AAAA,QACV,WAAW;AAAA,QACV,GAAG;AAAA,QAEH,oBACC,+CAAC,UAAK,WAAU,oCACd;AAAA,wDAAC,WAAQ;AAAA,UACR,mBAAmB,8CAAC,UAAM,yBAAe,EAAE,aAAa,GAAE,IAAU;AAAA,WACvE,IAEA,8CAAC,UAAK,WAAU,kCAAkC,UAAS;AAAA;AAAA,IAE/D;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;AAErB,SAAS,UAAU;AACjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAM;AAAA,MACN,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,eAAY;AAAA,MAEZ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAG;AAAA,YACH,IAAG;AAAA,YACH,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA;AAAA,QACd;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,GAAE;AAAA;AAAA,QACJ;AAAA;AAAA;AAAA,EACF;AAEJ;;;AElGA,IAAAC,qBAAmB;;;ACDnB,IAAAC,mCAAkB;AAEX,IAAM,0BAAsB;AAAA,EACjC;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,YAAY;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,aAAa;AAAA,QACb,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,EACF;AACF;;;AD5CI,IAAAC,uBAAA;AAPG,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB,WAAW,GAAG,oBAAoB,EAAC,aAAa,SAAQ,CAAC,GAAG,SAAS;AAAA,MACpE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,YAAY,cAAc;AAMnB,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAyB;AACvB,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,gBAAgB,cAAc;;;AE1C1B,IAAAC,uBAAA;AAFG,SAAS,kBAAkB,EAAC,UAAU,OAAO,UAAS,GAA2B;AACtF,SACE,+CAAC,SAAI,aAAU,uBAAsB,WAAW,GAAG,SAAS,GAC1D;AAAA,kDAAC,SAAI,WAAU,oEACZ,iBACH;AAAA,IACA,8CAAC,SAAK,UAAS;AAAA,KACjB;AAEJ;AAEA,kBAAkB,cAAc;;;AClBhC,8BAAwB;AACxB,IAAAC,uBAAwC;;;ACCjC,IAAM,qBAAqB;AAAA,EAChC,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,eAAe;AAAA,EACf,eAAe;AAAA,EACf,KAAK;AAAA,EACL,iBAAiB;AAAA,IACf,eAAe,EAAC,SAAS,QAAO,CAAC;AAAA,IACjC;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,eAAe,EAAC,SAAS,QAAO,CAAC;AAAA,IACjC;AAAA,EACF;AAAA,EACA,SAAS;AAAA,EACT,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,GAAG;AAAA,EACV,KAAK;AAAA,EACL,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,GAAG;AAAA,EACV,SACE;AAAA,EACF,QAAQ;AAAA,EACR,aAAa;AACf;;;ADPU,IAAAC,uBAAA;AA/BV,SAAS,oBACP,mBACA,gBACoB;AACpB,SAAO,OAAO,KAAK,iBAAiB,EAAE;AAAA,IACpC,CAAC,KAAK,SAAS;AAAA,MACb,GAAG;AAAA,MACH,CAAC,GAAG,GAAG,iBAAiB,GAA6B,IACjD;AAAA,QACE,kBAAkB,GAA6B;AAAA,QAC/C,eAAe,GAA6B;AAAA,MAC9C,IACA,kBAAkB,GAA6B;AAAA,IACrD;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAEO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,GAAG;AACL,GAAkB;AAChB,QAAM,mBAAmB,oBAAoB,oBAAoB,UAAU;AAE3E,QAAM,oBAAoB;AAAA,IACxB,SAAS,CAAC,cAAsE;AAC9E,UAAI,UAAU,gBAAgB,QAAQ;AACpC,eACE,8CAAC,oCAAY,MAAM,IAAI,aAAa,GAAI,GAAG,WAAW,eAAY,QAAO;AAAA,MAE7E;AAEA,aAAO,8CAAC,qCAAa,MAAM,IAAI,aAAa,GAAI,GAAG,WAAW,eAAY,QAAO;AAAA,IACnF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW,GAAG,SAAS,SAAS;AAAA,MAChC,YAAY;AAAA,MACZ,YAAY;AAAA,QACV,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;;;AEjEvB,IAAAC,SAAuB;AAKnB,IAAAC,uBAAA;AAFJ,IAAM,OAAa;AAAA,EACjB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,KAAK,cAAc;AAEnB,IAAM,aAAmB;AAAA,EACvB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,WAAW,cAAc;AAEzB,IAAM,YAAkB;AAAA,EACtB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,UAAU,cAAc;AAExB,IAAM,kBAAwB,kBAG5B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,IACpD,GAAG;AAAA;AACN,CACD;AACD,gBAAgB,cAAc;AAE9B,IAAM,cAAoB,kBAGxB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,YAAY,SAAS;AAAA,IAClC,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAAc;AAE1B,IAAM,aAAmB;AAAA,EACvB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,WAAW,cAAc;;;AC7EzB,IAAAC,uBAAoB;;;ACApB,uBAAkC;;;ACD3B,IAAM,YAAY,MAAM;AAC7B,SAAO,OAAO,sBAAsB;AACtC;AAEO,IAAM,cAAc,MAAM;AAC/B,SAAO,OAAO,wBAAwB;AACxC;AAEO,SAAS,qBAAqB;AACnC,SAAO,YAAY,GAAG;AACxB;AAMO,SAAS,YAAY,QAAQ,GAAG,UAA8B;AACnE,SAAO,SAAS;AAAA,IACd,KAAK;AAAA,IACL;AAAA,EACF,CAAC;AACH;AAEO,SAAS,SAAY,OAAU;AACpC,SAAO,UAAU,QAAQ,OAAO,UAAU;AAC5C;AAEO,IAAM,YAAY,CAAC,MAAuB,MAAM,MAAM,CAAC,MAAM,CAAW;AAExE,SAAS,UAAU,MAAwB;AAChD,MAAI,CAAC,MAAM;AACT;AAAA,EACF,WAAW,SAAS,QAAQ;AAC1B,WAAO;AAAA,EACT,WAAW,OAAO,SAAS,YAAY,UAAU,IAAI,GAAG;AACtD,WAAO,GAAG,IAAI;AAAA,EAChB,WAAW,KAAK,MAAM,EAAE,MAAM,MAAM;AAClC,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;AD/BI,IAAAC,uBAAA;AALG,SAAS,gBAAgB;AAAA,EAC9B,gBAAgB;AAAA,EAChB,GAAG;AACL,GAA2D;AACzD,SACE;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,IAAM,cAA+B;AAQrC,SAAS,mBAAmB,EAAC,WAAW,OAAO,GAAG,MAAK,GAAqB;AACjF,SACE,8CAAC,mBACC;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,MAAM,WAAW,QAAQ;AAAA,MACxB,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEO,SAAS,eACd,OACA;AACA,SAAO,8CAAkB,0BAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AASO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,SACE,8CAAkB,yBAAjB,EAAwB,WAAW,aAAa,mBAAmB,GAClE;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACE,wEACE,YAAY;AAAA,UACd,6BAA6B,YAAY;AAAA,QAC3C;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD;AAAA,UAAkB;AAAA,UAAjB;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,gBACE,uBAAuB,YAAY;AAAA,gBACnC,mCAAmC,YAAY;AAAA,cACjD;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAaO,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,GAAG;AACL,GAAiB;AACf,MAAI,OAAO,YAAY,aAAa;AAClC,WACE,8CAAC,mBAAgB,eACf;AAAA,MAAkB;AAAA,MAAjB;AAAA,QACC,aAAU;AAAA,QACV,MAAM,WAAW,QAAQ;AAAA,QACxB,GAAG;AAAA,QAEH;AAAA;AAAA,IACH,GACF;AAAA,EAEJ;AAEA,SACE,8CAAC,mBAAgB,eACf;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,MAAM,WAAW,QAAQ;AAAA,MACxB,GAAG;AAAA,MAEJ;AAAA,sDAAkB,0BAAjB,EAAyB,aAAU,mBAAkB,SACnD,UACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YAEV;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;AD9GgB,IAAAC,uBAAA;AA1BT,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,iBAAiB,CAAC;AAAA,EAClB;AACF,GAAyB;AACvB,QAAM,eAAe,CAAC,UAAkB;AACtC,QAAI,eAAe,SAAS,KAAK,EAAG;AAEpC,UAAM,YAAY,eAAe,SAAS,KAAK,IAC3C,eAAe,OAAO,mBAAiB,kBAAkB,KAAK,IAC9D,CAAC,GAAG,gBAAgB,KAAK;AAE7B,aAAS,SAAS;AAAA,EACpB;AAEA,SACE,8CAAC,SAAI,WAAU,qBACb,wDAAC,mBACE,kBAAQ,IAAI,YAAU;AACrB,UAAM,aAAa,eAAe,SAAS,OAAO,KAAK;AACvD,UAAM,aAAa,eAAe,SAAS,OAAO,KAAK;AAEvD,WACE,+CAAC,WACC;AAAA,oDAAC,kBAAe,SAAO,MACrB;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,MAAK;AAAA,UACL,SAAS,MAAM,aAAa,OAAO,KAAK;AAAA,UACxC,UAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA,aACI,yCACA;AAAA,YACJ,aAAa,+BAA+B;AAAA,UAC9C;AAAA,UAEA;AAAA,0DAAC,UAAK,WAAU,oBAAoB,iBAAO,MAAK;AAAA,YAC/C,cACC,8CAAC,UAAK,WAAU,iGACd,wDAAC,8BAAM,WAAU,0BAAyB,aAAa,GAAG,GAC5D;AAAA;AAAA;AAAA,MAEJ,GACF;AAAA,MACA,8CAAC,kBACC,wDAAC,OAAG,iBAAO,OAAM,GACnB;AAAA,SA1BY,OAAO,KA2BrB;AAAA,EAEJ,CAAC,GACH,GACF;AAEJ;;;AG5EA,IAAAC,SAAuB;AACvB,wBAAmC;AACnC,IAAAC,uBAAoB;AAiCd,IAAAC,uBAAA;AAvBC,IAAM,eAAqB,kBAGhC,CAAC,EAAC,WAAW,SAAS,iBAAiB,UAAU,UAAU,GAAG,MAAK,GAAG,QACtE;AAAA,EAAmB;AAAA,EAAlB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IACJ,iBAAiB,CAAC,YAAY,CAAC,WAAW,kBAAkB;AAAA,IAC5D;AAAA,IACA,aAAW;AAAA,IACX,iBAAe;AAAA,IAEf;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,WAAW,GAAG,+CAA+C;AAAA,QAE7D,wDAAC,8BAAM,WAAU,WAAU;AAAA;AAAA,IAC7B;AAAA;AACF,CACD;AAED,aAAa,cAAgC,uBAAK;;;ACxClD,IAAAC,SAAuB;;;ACAvB,IAAAC,SAAuB;AACvB,qBAAgC;AAChC,IAAAC,mCAAqC;AAcnC,IAAAC,uBAAA;AAXF,IAAM,oBAAgB;AAAA,EACpB;AACF;AAKO,IAAM,QAAc,kBAGzB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB,8CAAgB,qBAAf,EAAoB,KAAU,WAAW,GAAG,cAAc,GAAG,SAAS,GAAI,GAAG,OAAO,CACtF;AAED,MAAM,cAA6B,oBAAK;;;ADmBlC,IAAAC,uBAAA;AAnBC,IAAM,WAAiB;AAAA,EAC5B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,cAAoB,aAAM;AAChC,UAAM,aAAa,MAAM;AAEzB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,2BAA2B,SAAS;AAAA,QAClD,SAAS,MAAM,iBAAiB,CAAC,KAAK;AAAA,QAEtC;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,IAAI;AAAA,cACJ;AAAA,cACA,SAAS,aAAa,SAAY,QAAQ;AAAA,cAC1C,gBAAgB,aAAa,SAAY,QAAQ;AAAA,cACjD,iBAAiB,aAAW,WAAW,YAAY,IAAI;AAAA,cACvD,WAAW;AAAA,cACV,GAAG;AAAA;AAAA,UACN;AAAA,UACC,SACC;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,cACF;AAAA,cAEC;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;AEnEvB,IAAAC,SAAuB;;;ACCvB,0BAAqC;AAWjC,IAAAC,uBAAA;AAFG,SAAS,WAAW,EAAC,WAAW,UAAU,GAAG,MAAK,GAAoB;AAC3E,SACE;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA,MAEJ;AAAA;AAAA,UAAqB;AAAA,UAApB;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACA,8CAAC,aAAU;AAAA,QACX,8CAAqB,4BAApB,EAA2B;AAAA;AAAA;AAAA,EAC9B;AAEJ;AAEO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAmB;AACjB,SACE;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,cAAc;AAAA,QAC9B,gBAAgB,gBAAgB;AAAA,QAChC;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,QAAqB;AAAA,QAApB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA;AAAA,MACZ;AAAA;AAAA,EACF;AAEJ;;;ACpDA;;;ACYI,IAAAC,uBAAA;AAFG,SAAS,aAAa,EAAC,WAAW,UAAU,SAAQ,GAAsB;AAC/E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,eAAO;AAAA,QACP,YAAY,eAAO;AAAA,QACnB;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;AHFI,IAAAC,uBAAA;AAVJ,IAAM,oBAAoB,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,MAAmF;AACjF,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,eAAe,EAAC,QAAQ,aAAY,IAAI;AAAA,MAE9C;AAAA;AAAA,EACH;AAEJ;AAeO,IAAM,gBAAsB;AAAA,EACjC,CACE;AAAA,IACE;AAAA,IACA,QAAQ,CAAC;AAAA,IACT;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,cAAoB,aAAM;AAEhC,UAAM,qBAAqB,CAAC,aAAqB,YAAqB;AACpE,UAAI,CAAC,SAAU;AAEf,UAAI,SAAS;AACX,iBAAS,CAAC,GAAG,OAAO,WAAW,CAAC;AAChC;AAAA,MACF;AAEA,eAAS,MAAM,OAAO,mBAAiB,kBAAkB,WAAW,CAAC;AAAA,IACvE;AAEA,UAAM,wBAAwB,CAAC,YAAqB;AAClD,UAAI,CAAC,SAAU;AAEf,UAAI,SAAS;AACX,iBAAS,QAAQ,OAAO,YAAU,CAAC,OAAO,QAAQ,EAAE,IAAI,YAAU,OAAO,KAAK,CAAC;AAC/E;AAAA,MACF;AAEA,eAAS,CAAC,CAAC;AAAA,IACb;AAEA,UAAM,mBAAmB,QAAQ,OAAO,YAAU,CAAC,OAAO,QAAQ;AAClE,UAAM,0BAA0B,MAAM;AAAA,MAAO,mBAC3C,iBAAiB,KAAK,YAAU,OAAO,UAAU,aAAa;AAAA,IAChE;AACA,UAAM,gBACJ,wBAAwB,SAAS,KACjC,wBAAwB,WAAW,iBAAiB;AAEtD,WACE,+CAAC,SAAI,KAAU,WAAW,GAAG,aAAa,SAAS,GAAI,GAAG,OACvD;AAAA,uBACC,gFACE;AAAA,uDAAC,SAAI,WAAU,2BACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,IAAI;AAAA,cACJ,SAAS;AAAA,cACT,iBAAiB,aAAW,sBAAsB,YAAY,IAAI;AAAA,cAClE,UAAU,YAAY,iBAAiB,WAAW;AAAA;AAAA,UACpD;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WACF;AAAA,QACA,8CAAC,QAAG,WAAU,iCAAgC;AAAA,SAChD;AAAA,MAEF,8CAAC,qBAAkB,YAAwB,cACzC,wDAAC,SAAI,WAAU,aACZ,kBAAQ,IAAI,YACX;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,OAAO;AAAA,UACd,OAAO,MAAM,SAAS,OAAO,KAAK;AAAA,UAClC,UAAU,aAAW,mBAAmB,OAAO,OAAO,OAAO;AAAA,UAC7D,UAAU,YAAY,OAAO;AAAA;AAAA,QAJxB,OAAO;AAAA,MAKd,CACD,GACH,GACF;AAAA,MACC,SAAS,8CAAC,gBAAa,UAAqB,iBAAM;AAAA,OACrD;AAAA,EAEJ;AACF;AAEA,cAAc,cAAc;;;AInI5B,IAAAC,wBAA6B;;;ACA7B,IAAAC,gBAA+C;AAC/C,IAAAC,uBAA8B;AAkBjB,IAAAC,uBAAA;AARb,SAAS,gBAAgB,EAAC,SAAS,UAAS,GAAyB;AACnE,QAAM,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,WAAW,GAAG,gBAAgB,SAAS;AAAA,EACzC;AAEA,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,8CAAC,8BAAO,GAAG,WAAW,WAAW,GAAG,oBAAoB,SAAS,GAAG;AAAA,IAC7E,KAAK;AACH,aAAO,8CAAC,8BAAO,GAAG,WAAW,WAAW,GAAG,oBAAoB,SAAS,GAAG;AAAA,IAC7E,KAAK;AACH,aAAO,8CAAC,8BAAO,GAAG,WAAW,WAAW,GAAG,oBAAoB,SAAS,GAAG;AAAA,IAC7E,KAAK;AACH,aAAO,8CAAC,0BAAG,GAAG,WAAW,WAAW,GAAG,mBAAmB,SAAS,GAAG;AAAA,IACxE,KAAK;AAAA,IACL;AACE,aAAO,8CAAC,8BAAO,GAAG,WAAW,WAAW,GAAG,sBAAsB,SAAS,GAAG;AAAA,EACjF;AACF;AAqBA,IAAM,gBAOF;AAAA,EACF,SAAS;AAAA,IACP,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,uBAAuB;AAAA,IACrB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,gBAAgB;AAAA,IACd,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,IAAM,0BAAsB;AAAA,EAC1B,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,SAAS,cAAc,OAAO;AACpC,UAAM,UAAU,CAAC,aAAa,YAAY,CAAC;AAC3C,UAAM,UAAU,CAAC,YAAY;AAE7B,UAAM,WAAW,MAAM;AACrB,UAAI,SAAU,QAAO;AACrB,UAAI,SAAU,QAAO;AACrB,UAAI,WAAW,QAAS,QAAO;AAC/B,aAAO;AAAA,IACT,GAAG;AAEH,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,OAAO;AAAA,UACP,OAAO;AAAA,UACP;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,qBACC,8CAAC,mBAAgB,SAAS,OAAO,MAAM,WAAU,wBAAuB;AAAA,UAEzE,WAAW,8CAAC,UAAK,WAAU,qBAAqB,UAAS;AAAA;AAAA;AAAA,IAC5D;AAAA,EAEJ;AACF;AAEA,oBAAoB,cAAc;AAE3B,IAAM,kBAAc,oBAAK,mBAAmB;;;ADpI7C,IAAAC,uBAAA;AALC,SAAS,iBAAiB,EAAC,UAAU,KAAI,GAA0B;AACxE,QAAM,EAAC,EAAC,QAAI,sCAAe;AAE3B,SACE,8CAAC,mBACC,yDAAC,WACC;AAAA,kDAAC,kBAAe,SAAO,MACrB,wDAAC,eAAY,UAAQ,MAAC,SAAQ,gBAC3B,YAAE,qBAAqB,GAC1B,GACF;AAAA,IACC,WACC,8CAAC,kBAAe,SAAQ,QACtB,wDAAC,OAAE,WAAU,0BACV,YAAE,iCAAiC,GACtC,GACF;AAAA,KAEJ,GACF;AAEJ;;;AE7BA,IAAAC,gBAAuB;AACvB,IAAAC,uBAA0B;AAiDhB,IAAAC,uBAAA;AAnCH,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AACF,GAAkB;AAChB,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAS,KAAK;AAE1C,QAAM,WAAW;AAAA,IACf,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,aAAa;AAAA,IACjB,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,aAAa,YAAY;AAC7B,QAAI;AACF,YAAM,OAAO,UAAU,MAAM,QAAQ,IAAI;AACzC,YAAM,UAAU,UAAU,UAAU,IAAI;AACxC,gBAAU,IAAI;AACd,iBAAW,MAAM,UAAU,KAAK,GAAG,IAAI;AAAA,IACzC,SAAS,OAAO;AACd,cAAQ,MAAM,yBAAyB,KAAK;AAAA,IAC9C;AAAA,EACF;AAEA,SACE,8CAAC,mBAAgB,eAAe,GAC9B,yDAAC,WACC;AAAA,kDAAC,kBAAe,SAAO,MACrB;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAM,WAAW,IAAI;AAAA,QACrB,WAAW;AAAA,UACT;AAAA,UACA;AAAA,YACE,eAAe,SAAS;AAAA,YACxB,QAAQ,SAAS;AAAA,YACjB,kBAAkB,YAAY;AAAA,UAChC;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,QACT,cAAY,SAAS,WAAW;AAAA,QAChC,UAAU;AAAA,QAEV;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,SAAS,0BAA0B;AAAA,cACrC;AAAA,cAEA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,MAAM,SAAS,IAAI;AAAA,kBACnB,aAAa;AAAA,kBACb,eAAY;AAAA;AAAA,cACd;AAAA;AAAA,UACF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,SAAS,sBAAsB;AAAA,cACjC;AAAA,cAEA,wDAAC,6BAAK,MAAM,IAAI,aAAa,GAAG,eAAY,QAAO;AAAA;AAAA,UACrD;AAAA;AAAA;AAAA,IACF,GACF;AAAA,IACA,8CAAC,kBAAe,WAAU,qBAAqB,uBAAY;AAAA,KAC7D,GACF;AAEJ;;;AC7FA,IAAAC,gBAA0D;AAyEtD,IAAAC,uBAAA;AAtEJ,IAAM,uBAAuB;AAE7B,SAAS,gBAAgB,OAAwB;AAC/C,MAAI,UAAU,WAAW,WAAW;AAClC,SAAK,UAAU,UAAU,UAAU,OAAO,KAAK,CAAC;AAChD;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,cAAc,UAAU;AAClD,WAAS,QAAQ,OAAO,KAAK;AAC7B,WAAS,MAAM,WAAW;AAC1B,WAAS,MAAM,UAAU;AACzB,WAAS,KAAK,YAAY,QAAQ;AAClC,WAAS,OAAO;AAChB,WAAS,YAAY,MAAM;AAC3B,WAAS,OAAO;AAClB;AAcO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AACT,GAAwB;AACtB,QAAM,CAAC,UAAU,WAAW,QAAI,wBAAS,KAAK;AAC9C,QAAM,iBAAa,sBAAsC;AAEzD;AAAA,IACE,MAAM,MAAM;AACV,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,MAAM;AACjB,QAAI,CAAC,KAAM;AAEX,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAAA,IACjC;AAEA,oBAAgB,IAAI;AACpB,gBAAY,IAAI;AAChB,eAAW,UAAU;AAAA,MACnB,MAAM,YAAY,KAAK;AAAA,MACvB,uBAAuB;AAAA,IACzB;AACA,mBAAe;AAAA,EACjB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SAAS;AAAA,MACT,UAAU,CAAC,QAAQ;AAAA,MACnB;AAAA,MACA;AAAA,MAEC;AAAA;AAAA,QACA,WAAW,yBAAyB,YAAY;AAAA;AAAA;AAAA,EACnD;AAEJ;;;ACpFA,IAAAC,wBAA6B;AAC7B,yBAKO;;;ACNP,IAAAC,gBAKO;;;ACLP,IAAAC,kBAAA;;;ACWQ,IAAAC,uBAAA;AAJD,SAAS,WAAW,EAAC,UAAS,GAAoB;AACvD,SACE,8CAAC,SAAI,WAAW,GAAG,cAAc,SAAS,GACxC,wDAAC,SAAI,WAAU,6DACb;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,qDAAqDC,gBAAO,GAAG;AAAA;AAAA,EAC/E,GACF,GACF;AAEJ;;;AFLM,IAAAC,uBAAA;AAHN,IAAM,YAAQ;AAAA,EACZ,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB,8CAAC,SAAI,WAAU,wEACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AACA,MAAM,cAAc;AAEpB,IAAM,kBAAc,0BAGlB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAAc;AAE1B,IAAM,gBAAY,0BAKhB,CAAC,EAAC,WAAW,UAAU,WAAW,GAAG,MAAK,GAAG,QAC7C;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,8BAA8B,WAAW;AAAA,MACrD,UAAU;AAAA,IACZ,CAAC;AAAA,IACA,GAAG;AAAA,IAEH;AAAA,mBACC,8CAAC,QAAG,WAAU,+EAA8E;AAAA,MAE7F,aACC,8CAAC,QAAG,WAAU,aACZ,wDAAC,QAAG,WAAU,aACZ,wDAAC,cAAW,WAAU,qBAAoB,GAC5C,GACF;AAAA,MAED;AAAA;AAAA;AACH,CACD;AACD,UAAU,cAAc;AAExB,IAAM,kBAAc,0BAGlB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAAc;AAM1B,IAAM,eAAW;AAAA,EACf,CAAC,EAAC,WAAW,WAAW,GAAG,MAAK,GAAG,QACjC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,aAAa;AAAA,QACb;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,SAAS,cAAc;AAEvB,IAAM,gBAAY,0BAGhB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,IAAM,gBAAY,0BAGhB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,IAAM,mBAAe,0BAGnB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,mCAAmC,SAAS;AAAA,IACzD,GAAG;AAAA;AACN,CACD;AACD,aAAa,cAAc;;;ADpHrB,IAAAC,uBAAA;AAVC,SAAS,UAAyB,EAAC,SAAS,KAAI,GAAkC;AACvF,QAAM,EAAC,EAAC,QAAI,sCAAe;AAC3B,QAAM,YAAQ,kCAAc;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,qBAAiB,oCAAgB;AAAA,EACnC,CAAC;AAED,SACE,8CAAC,SAAI,WAAU,0CACb,yDAAC,SACC;AAAA,kDAAC,eACE,gBAAM,gBAAgB,EAAE,IAAI,iBAC3B,8CAAC,YACE,sBAAY,QAAQ,IAAI,YACvB,8CAAC,aACE,iBAAO,gBACJ,WACA,+BAAW,OAAO,OAAO,UAAU,QAAQ,OAAO,WAAW,CAAC,KAHpD,OAAO,EAIvB,CACD,KAPY,YAAY,EAQ3B,CACD,GACH;AAAA,IACA,8CAAC,aACE,gBAAM,YAAY,EAAE,MAAM,SACzB,MAAM,YAAY,EAAE,KAAK,IAAI,SAC3B,8CAAC,YAAsB,cAAY,IAAI,cAAc,KAAK,YACvD,cAAI,gBAAgB,EAAE,IAAI,UACzB,8CAAC,aACE,6CAAW,KAAK,OAAO,UAAU,MAAM,KAAK,WAAW,CAAC,KAD3C,KAAK,EAErB,CACD,KALY,IAAI,EAMnB,CACD,IAED,8CAAC,YACC,wDAAC,aAAU,SAAS,QAAQ,QAAQ,WAAU,oBAC3C,YAAE,YAAY,GACjB,GACF,GAEJ;AAAA,KACF,GACF;AAEJ;;;AI5DA,IAAAC,UAAuB;AACvB,sBAAiC;AACjC,mCAA6B;AAC7B,IAAAC,wBAAoB;;;ACHpB,IAAAC,gBAAwB;AAGjB,SAAS,iBAAiB;AAC/B,+BAAU,MAAM;AACd,gBAAY;AAAA,EACd,GAAG,CAAC,CAAC;AACP;;;ACPA,IAAAC,gBAAkB;AAEX,SAAS,qBAAqB;AACnC,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,cAAAC,QAAM,SAAS,MAAM;AACjE,WAAO,IAAI,gBAAgB;AAAA,EAC7B,CAAC;AAED,QAAM,uBAAuB,cAAAA,QAAM,YAAY,MAAM;AACnD,UAAMC,mBAAkB,IAAI,gBAAgB;AAC5C,uBAAmBA,gBAAe;AAElC,WAAOA,iBAAgB;AAAA,EACzB,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;AClBA,IAAAC,iBAAwB;;;ACAxB,IAAAC,iBAAmD;AAEnD,SAAS,SAAyC,IAAgC;AAChF,QAAM,YAAQ,uBAAO,EAAE;AAEvB,sCAAgB,MAAM;AACpB,UAAM,UAAU;AAAA,EAClB,GAAG,CAAC,EAAE,CAAC;AAEP,QAAM,cAAU;AAAA,IACd,IAAI,SAAe;AACjB,aAAO,MAAM,SAAS,MAAM,MAAM,IAAI;AAAA,IACxC;AAAA,IACA,CAAC,KAAK;AAAA,EACR;AAEA,SAAO;AACT;;;ADTO,SAAS,eAAe,EAAC,UAAU,MAAM,QAAO,GAAwB;AAC7E,QAAM,UAAU,SAAS,OAAO;AAEhC,gCAAU,MAAM;AACd,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UAAI,MAAM,QAAQ,YAAY,SAAS;AACrC,gBAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,iBAAiB,WAAW,aAAa;AAChD,WAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,EAClE,GAAG,CAAC,SAAS,OAAO,CAAC;AACvB;;;AErBA,IAAAC,iBAA8D;AAEvD,SAAS,kBAAqB,MAAiD;AACpF,aAAO;AAAA,IACL,CAAC,SAAY;AACX,WAAK,QAAQ,SAAO;AAClB,YAAI,CAAC,IAAK;AAEV,YAAI,OAAO,QAAQ,YAAY;AAC7B,cAAI,IAAI;AACR;AAAA,QACF;AAEA,QAAC,IAAmC,UAAU;AAAA,MAChD,CAAC;AAAA,IACH;AAAA;AAAA,IAEA;AAAA,EACF;AACF;;;ACnBA,IAAAC,iBAAkC;AAElC,IAAM,oBAAoB;AAMnB,SAAS,YAAY,EAAC,aAAa,kBAAiB,IAAsB,CAAC,GAAG;AACnF,QAAM,CAAC,UAAU,WAAW,QAAI,yBAA8B,MAAS;AAEvE,gCAAU,MAAM;AACd,UAAM,aAAa,OAAO,WAAW,eAAe,aAAa,CAAC,KAAK;AACvE,UAAM,WAAW,MAAM;AACrB,kBAAY,OAAO,aAAa,UAAU;AAAA,IAC5C;AAEA,eAAW,iBAAiB,UAAU,QAAQ;AAC9C,gBAAY,OAAO,aAAa,UAAU;AAE1C,WAAO,MAAM;AACX,iBAAW,oBAAoB,UAAU,QAAQ;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SAAO,CAAC,CAAC;AACX;;;AC1BA,IAAAC,iBAAgC;AAEzB,SAAS,eAAe;AAC7B,QAAM,gBAAY,uBAAO,KAAK;AAE9B,gCAAU,MAAM;AACd,cAAU,UAAU;AAEpB,WAAO,MAAM;AACX,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;ACdA,IAAAC,iBAAoC;AAE7B,SAAS,iBACd,YAAY,OACZ,EAAC,SAAQ,IAA0B,CAAC,GACpC;AACA,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,SAAS;AAE9C,QAAM,gBAAY,4BAAY,MAAM;AAClC,QAAI,SAAU;AACd,cAAU,IAAI;AAAA,EAChB,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,iBAAa,4BAAY,MAAM;AACnC,QAAI,SAAU;AACd,cAAU,KAAK;AAAA,EACjB,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,kBAAc,4BAAY,MAAM;AACpC,QAAI,SAAU;AACd,cAAU,WAAS,CAAC,KAAK;AAAA,EAC3B,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC9BA,IAAAC,iBAAwD;AAGjD,SAAS,gBACd,YACA,gBACA,QACA;AACA,QAAM,yBAAqB,uBAAO,cAAc;AAChD,qBAAmB,UAAU;AAE7B,QAAM,0BAAsB;AAAA,IAC1B,CAAC,UAAiB;AAChB,YAAM,kCAAkC,CAAC,aAAqB;AAC5D,cAAM,gBAAgB,YAAY,EAAE,cAAc,QAAQ;AAC1D,eAAO,eAAe,SAAS,MAAM,MAAc;AAAA,MACrD;AAEA,YAAM,qBAAqB,MAAM;AAC/B,cAAM,SAAS,MAAM;AAErB,YAAI,CAAC,UAAU,EAAE,kBAAkB,cAAc;AAC/C,iBAAO;AAAA,QACT;AAEA,YAAI,UAA8B;AAClC,eAAO,SAAS;AACd,cAAI,QAAQ,aAAa,iCAAiC,GAAG;AAC3D,mBAAO;AAAA,UACT;AACA,oBAAU,QAAQ;AAAA,QACpB;AACA,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AACV,YAAI,OAAO,WAAW,UAAU;AAC9B,cAAI,gCAAgC,MAAM,EAAG,QAAO;AAAA,QACtD,OAAO;AACL,cAAI,OAAO,KAAK,+BAA+B,EAAG,QAAO;AAAA,QAC3D;AAAA,MACF;AAEA,aAAO,mBAAmB;AAAA,IAC5B;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAEA,gCAAU,MAAM;AACd,aAAS,mBAAmB,OAAc;AACxC,YAAM,kBAAkB,oBAAoB,KAAK;AAEjD,UACE,YAAY,WACZ,CAAC,WAAW,QAAQ,SAAS,MAAM,MAAc,KACjD,CAAC,iBACD;AACA,2BAAmB,UAAU,KAAK;AAAA,MACpC;AAAA,IACF;AAEA,gBAAY,EAAE,iBAAiB,aAAa,oBAAoB,IAAI;AACpE,gBAAY,EAAE,iBAAiB,cAAc,oBAAoB,IAAI;AACrE,WAAO,MAAM;AACX,kBAAY,EAAE,oBAAoB,aAAa,oBAAoB,IAAI;AACvE,kBAAY,EAAE,oBAAoB,cAAc,oBAAoB,IAAI;AAAA,IAC1E;AAAA,EACF,GAAG,CAAC,qBAAqB,UAAU,CAAC;AACtC;;;ACpEA,IAAAC,iBAAqD;AAGrD,IAAM,YAAY;AACX,SAAS,gBAAgB,UAAkB;AAChD,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,KAAK;AACxD,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAE5C,QAAM,wBAAoB,4BAAY,MAAM;AAC1C,UAAM,mBAAmB,GAAG,SAAS,UAAU,EAAE,IAAI,CAAC;AACtD,UAAM,QAAQ,UAAU,EAAE,WAAW,eAAe,gBAAgB,GAAG;AAEvE,qBAAiB,IAAI;AACrB,eAAW,OAAO,OAAO;AAAA,EAC3B,GAAG,CAAC,QAAQ,CAAC;AAEb,sCAAgB,MAAM;AACpB,sBAAkB;AAClB,cAAU,EAAE,iBAAiB,WAAW,iBAAiB;AACzD,WAAO,MAAM;AACX,gBAAU,EAAE,oBAAoB,WAAW,iBAAiB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,SAAO,EAAC,SAAS,cAAa;AAChC;;;ACzBA,IAAAC,iBAAwC;;;ACIjC,SAAS,2BAAkD;AAChE,SAAO,OAAO,qBAAqB,OAAO,6BAA6B,CAAC;AAC1E;AAEO,SAAS,6BAA6B;AAC3C,QAAM,WAAW,yBAAyB;AAC1C,SAAO,CAAC,SAAS;AACnB;;;ADHO,SAAS,uBACd,QACA,UAAyC,CAAC,GAC1C;AACA,QAAM,EAAC,WAAW,UAAU,WAAU,IAAI;AAE1C,gCAAU,MAAM;AACd,UAAM,YAAY;AAElB,QAAI,CAAC,UAAU,CAAC,yBAAyB,GAAG,YAAY;AACtD;AAAA,IACF;AAEA,UAAM,QAAQ,UAAU;AAExB,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,UAAM,eAAe,OAAO;AAE5B,UAAM,kBAAkB,MAAM;AAC5B,YAAM,YAAY,MAAM,sBAAsB;AAE9C,UAAI,YAAY,SAAS;AACvB,cAAM,cAAc,WAAW,QAAQ,sBAAsB;AAC7D,cAAM,uBAAuB,YAAY,MAAM,YAAY,SAAS;AACpE,cAAM,wBAAwB,UAAU,MAAM;AAC9C,cAAM,eACJ,aAAa,UAAU,wBAAwB,aAAa,cAAc;AAE5E,qBAAa,SAAS;AAAA,UACpB,KAAK,KAAK,IAAI,GAAG,YAAY;AAAA,UAC7B;AAAA,QACF,CAAC;AACD;AAAA,MACF;AAEA,YAAM,eAAe,EAAC,UAAU,OAAO,QAAO,CAAC;AAAA,IACjD;AAEA,0BAAsB,MAAM;AAC1B,4BAAsB,eAAe;AAAA,IACvC,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,UAAU,UAAU,CAAC;AACnC;;;AErDA,IAAAC,iBAAkC;AAG3B,SAAS,YACd,OACA,UAAU,KACV,cACyC;AACzC,QAAM,WAAW,SAAS,YAAY;AACtC,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,yBAAS,KAAK;AAE1D,gCAAU,MAAM;AACd,UAAM,UAAU,WAAW,MAAM;AAC/B,wBAAkB,KAAK;AAAA,IACzB,GAAG,OAAO;AAEV,WAAO,MAAM;AACX,mBAAa,OAAO;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,OAAO,OAAO,CAAC;AAEnB,gCAAU,MAAM;AACd,eAAW,cAAc;AAAA,EAC3B,GAAG,CAAC,gBAAgB,QAAQ,CAAC;AAE7B,SAAO,CAAC,gBAAgB,iBAAiB;AAC3C;;;AC1BA,IAAAC,iBAAkC;AAG3B,SAAS,qBACd,UACA,OACA;AACA,QAAM,eAAW,uBAAsC;AACvD,QAAM,uBAAmB,uBAAO,KAAK;AACrC,QAAM,aAAa,SAAS,QAAQ;AAEpC,QAAM,gBAAY;AAAA,IAChB,IAAI,SAAe;AACjB,mBAAa,SAAS,OAA4B;AAElD,UAAI,iBAAiB,SAAS;AAC5B,yBAAiB,UAAU;AAC3B,qBAAa,GAAG,IAAI;AAAA,MACtB,OAAO;AACL,iBAAS,UAAU,WAAW,MAAM;AAClC,2BAAiB,UAAU;AAC3B,uBAAa,GAAG,IAAI;AAAA,QACtB,GAAG,KAAK;AAAA,MACV;AAAA,IACF;AAAA,IACA,CAAC,YAAY,KAAK;AAAA,EACpB;AAEA,QAAM,gBAAY,4BAAY,MAAM;AAClC,qBAAiB,UAAU;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,SAAO,EAAC,WAAW,UAAS;AAC9B;;;ACjCA,IAAAC,iBAAgC;AAGzB,SAAS,YAAe,OAAU,cAAkB;AACzD,QAAM,UAAM,uBAAsB,YAAY;AAE9C,gCAAU,MAAM;AACd,QAAI,UAAU,SAAS,KAAK,IAAI,EAAC,GAAG,MAAK,IAAI;AAAA,EAC/C,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,IAAI;AACb;;;ACXA,IAAAC,iBAAwD;;;ACAxD,IAAe,kBAAf,MAA+B;AAAA,EAC7B,OAAO,IAAO,KAAuB;AACnC,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,IAAO,KAAa,OAAgB;AACzC,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAEA,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAAA,EACF;AAAA,EAEA,OAAO,OAAO,KAAmB;AAC/B,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAAA,EACF;AAAA,EAEA,OAAO,QAAc;AAAA,EAAC;AACxB;AAEA,IAAO,0BAAQ;;;AC5BR,SAAS,UAAU,MAAqB;AAC7C,MAAI;AACF,QAAI,MAAM;AACR,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB;AAEA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;ACPA,IAAM,iBAAN,MAAM,wBAAuB,wBAAgB;AAAA,EAC3C,OAAO,IAAO,KAAuB;AACnC,UAAM,OAAO,eAAe,QAAQ,GAAG;AACvC,WAAO,UAAU,IAAI;AAAA,EACvB;AAAA,EAEA,OAAO,IAAO,KAAa,OAAgB;AACzC,QAAI,OAAO;AACT,qBAAe,QAAQ,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,OAAO,OAAU,KAAa,OAAe,OAAgB;AAC3D,UAAM,OAAO,gBAAe,IAAuB,GAAG;AAEtD,QAAI,MAAM;AACR,WAAK,KAAK,IAAI;AACd,sBAAe,IAAI,KAAK,IAAI;AAAA,IAC9B,OAAO;AACL,sBAAe,IAAI,KAAK,EAAC,CAAC,KAAK,GAAG,MAAK,CAAC;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,OAAO,OAAO,KAAmB;AAC/B,mBAAe,WAAW,GAAG;AAAA,EAC/B;AAAA,EAEA,OAAO,QAAc;AACnB,mBAAe,MAAM;AAAA,EACvB;AACF;;;AHIA,IAAM,oBAAoB;AAC1B,IAAM,eAAe;AAEd,SAAS,cAAc,QAA+C;AAC3E,QAAM,EAAC,KAAK,kBAAkB,mBAAmB,cAAc,aAAY,IAAI;AAE/E,QAAM,CAAC,OAAO,QAAQ,QAAI,yBAA0B,MAAM;AACxD,UAAM,SAAS,eAAe,IAA8B,cAAc,GAAG,EAAE;AAE/E,QAAI,QAAQ;AACV,aAAO;AAAA,QACL,MAAM,OAAO,QAAQ;AAAA,QACrB,UAAU,OAAO,YAAY;AAAA,QAC7B,YAAY,OAAO,cAAc;AAAA,MACnC;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AAED,gCAAU,MAAM;AACd,mBAAe,IAAI,cAAc,GAAG,IAAI,KAAK;AAAA,EAC/C,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,QAAM,YAAQ,wBAAQ,MAAM;AAC1B,WAAO,MAAM,aAAa,IAAI,KAAK,KAAK,MAAM,aAAa,MAAM,QAAQ,IAAI;AAAA,EAC/E,GAAG,CAAC,MAAM,YAAY,MAAM,QAAQ,CAAC;AAErC,QAAM,kBAAc,wBAAQ,MAAM,MAAM,OAAO,OAAO,CAAC,MAAM,MAAM,KAAK,CAAC;AACzE,QAAM,sBAAkB,wBAAQ,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC;AAElE,QAAM,gBAAY,wBAAQ,MAAM;AAC9B,WAAO,MAAM,eAAe,IAAI,KAAK,MAAM,OAAO,KAAK,MAAM,WAAW;AAAA,EAC1E,GAAG,CAAC,MAAM,MAAM,MAAM,UAAU,MAAM,UAAU,CAAC;AAEjD,QAAM,cAAU,wBAAQ,MAAM;AAC5B,WAAO,KAAK,IAAI,MAAM,OAAO,MAAM,UAAU,MAAM,UAAU;AAAA,EAC/D,GAAG,CAAC,MAAM,MAAM,MAAM,UAAU,MAAM,UAAU,CAAC;AAEjD,QAAM,cAAU,wBAAQ,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC;AAExE,QAAM,cAAU;AAAA,IACd,CAAC,SAAiB;AAChB,YAAM,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,CAAC;AAC1D,eAAS,WAAS,EAAC,GAAG,MAAM,MAAM,YAAW,EAAE;AAAA,IACjD;AAAA,IACA,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,kBAAc,4BAAY,CAAC,aAAqB;AACpD,UAAM,gBAAgB,KAAK,IAAI,GAAG,QAAQ;AAC1C,aAAS,UAAQ;AACf,YAAM,oBAAoB,KAAK,OAAO,KAAK,KAAK,WAAW;AAC3D,YAAM,UAAU,KAAK,IAAI,GAAG,KAAK,KAAK,mBAAmB,aAAa,CAAC;AAEvE,aAAO;AAAA,QACL,GAAG;AAAA,QACH,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,QAAM,oBAAgB,4BAAY,CAAC,eAAuB;AACxD,UAAM,kBAAkB,KAAK,IAAI,GAAG,UAAU;AAC9C,aAAS,UAAQ;AACf,YAAM,WACJ,kBAAkB,IAAI,KAAK,KAAK,kBAAkB,KAAK,QAAQ,IAAI;AACrE,YAAM,cAAc,KAAK,OAAO,YAAY,WAAW,IAAI,WAAW,KAAK;AAE3E,aAAO;AAAA,QACL,GAAG;AAAA,QACH,YAAY;AAAA,QACZ,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,QAAM,eAAW,4BAAY,MAAM;AACjC,YAAQ,MAAM,OAAO,CAAC;AAAA,EACxB,GAAG,CAAC,SAAS,MAAM,IAAI,CAAC;AAExB,QAAM,mBAAe,4BAAY,MAAM;AACrC,YAAQ,MAAM,OAAO,CAAC;AAAA,EACxB,GAAG,CAAC,SAAS,MAAM,IAAI,CAAC;AAExB,QAAM,oBAAgB,4BAAY,MAAM;AACtC,YAAQ,CAAC;AAAA,EACX,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,mBAAe,4BAAY,MAAM;AACrC,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,QAAM,YAAQ,4BAAY,MAAM;AAC9B,aAAS;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,GAAG,CAAC,aAAa,eAAe,CAAC;AAEjC,SAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,YAAY,MAAM;AAAA,IAClB;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AIpKA,IAAAC,iBAA0C;;;ACE1C,SAAS,wBAAwB,OAAe;AAC9C,QAAM,iBAAiB,YAAY;AACnC,QAAM,aAAa,eAAe;AAElC,MAAI,CAAC,YAAY;AACf;AAAA,EACF;AAEA,QAAM,KAAK,eAAe,cAAc,UAAU;AAClD,KAAG,QAAQ;AACX,KAAG,aAAa,YAAY,EAAE;AAC9B,KAAG,MAAM,WAAW;AACpB,KAAG,MAAM,UAAU;AACnB,KAAG,MAAM,gBAAgB;AACzB,KAAG,MAAM,OAAO;AAChB,aAAW,YAAY,EAAE;AACzB,KAAG,MAAM;AACT,KAAG,OAAO;AACV,iBAAe,YAAY,MAAM;AACjC,aAAW,YAAY,EAAE;AAC3B;AAEO,SAASC,iBAAgB,OAAwB;AACtD,QAAM,OAAO,OAAO,UAAU,WAAW,MAAM,SAAS,IAAI;AAC5D,QAAM,iBAAiB,YAAY;AACnC,QAAM,YACJ,eAAe,aAAa,WAAW,aAAa,WAAW,WAAW;AAE5E,MAAI,CAAC,WAAW,WAAW;AACzB,4BAAwB,IAAI;AAC5B;AAAA,EACF;AAEA,OAAK,UAAU,UAAU,IAAI,EAAE,MAAM,MAAM;AACzC,4BAAwB,IAAI;AAAA,EAC9B,CAAC;AACH;;;ADnCA,IAAM,mBAAmB;AAOzB,SAAS,mBAAmB,EAAC,OAAO,cAAc,QAAO,GAA4B;AACnF,QAAM,CAAC,UAAU,eAAe,QAAI,yBAAS,KAAK;AAClD,QAAM,iBAAa,uBAAsC;AAEzD,gCAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,OAAO,MAAM;AACjB,QAAI,CAAC,MAAO;AAEZ,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAAA,IACjC;AAEA,IAAAC,iBAAgB,KAAK;AACrB,oBAAgB,IAAI;AACpB,eAAW,UAAU,WAAW,MAAM;AACpC,sBAAgB,KAAK;AACrB,gBAAU;AAAA,IACZ,GAAG,mBAAmB,GAAI;AAC1B,mBAAe;AAAA,EACjB;AAEA,SAAO,EAAC,UAAU,KAAI;AACxB;;;AEvCA,IAAAC,iBAAkC;AAM3B,IAAM,WAAW,CAAC,EAAC,QAAO,MAAa;AAC5C,QAAM,CAAC,UAAU,WAAW,QAAI,yBAAS,OAAO;AAChD,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,yBAAS,IAAI;AAEzD,gCAAU,MAAM;AACd,QAAI,CAAC,eAAgB;AAErB,UAAM,QAAQ,YAAY,MAAM;AAC9B,kBAAY,UAAQ;AAClB,YAAI,QAAQ,GAAG;AACb,wBAAc,KAAK;AACnB,4BAAkB,KAAK;AACvB,iBAAO;AAAA,QACT;AAEA,eAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH,GAAG,GAAI;AAEP,WAAO,MAAM,cAAc,KAAK;AAAA,EAClC,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,aAAa,MAAM;AACvB,gBAAY,OAAO;AACnB,sBAAkB,IAAI;AAAA,EACxB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACtCA,IAAAC,iBAAyC;AAKlC,SAAS,WAAW,UAA8B,KAAK,GAAG;AAC/D,QAAM,gBAAY,uBAAsC;AACxD,QAAM,mBAAmB,SAAS,QAAQ;AAE1C,QAAM,cAAU,wBAAQ,MAAM;AAC5B,WAAO;AAAA,MACL,MAAM,YAAqB;AACzB,gBAAQ,KAAK;AACb,kBAAU,UAAU;AAAA,UAClB;AAAA,UACA,eAAe,SAAY,KAAK;AAAA,QAClC;AAAA,MACF;AAAA,MAEA,OAAO;AACL,YAAI,UAAU,SAAS;AACrB,uBAAa,UAAU,OAAO;AAAA,QAChC;AAAA,MACF;AAAA,MAEA,UAAU;AACR,gBAAQ,KAAK;AACb,gBAAQ,MAAM;AAAA,MAChB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,kBAAkB,EAAE,CAAC;AAEzB,gCAAU,MAAM;AACd,WAAO,MAAM;AACX,cAAQ,KAAK;AAAA,IACf;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AACT;;;ACvCA,IAAAC,iBAAoC;AAE7B,SAAS,WAAW;AACzB,QAAM,CAAC,YAAY,aAAa,QAAI,yBAAS,KAAK;AAClD,QAAM,uBAAmB,4BAAY,MAAM;AACzC,kBAAc,IAAI;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,QAAM,uBAAmB,4BAAY,MAAM;AACzC,kBAAc,KAAK;AAAA,EACrB,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACjBA,IAAAC,iBAAqC;AAW9B,SAAS,WACd,KACA,IACA,SACA;AACA,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,IACX,SAAS;AAAA,EACX,IAAI,WAAW,CAAC;AAChB,QAAM,iBAAiB,SAAS,EAAE;AAElC,QAAM,oBAAgB;AAAA,IACpB,CAAC,UAAyB;AACxB,YAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAC5C,YAAM,aAAa,KAAK,SAAS,MAAM,GAAG;AAC1C,YAAM,kBACJ,MAAM,YAAY,WAClB,MAAM,YAAY,WAClB,MAAM,aAAa,YACnB,MAAM,WAAW;AAEnB,UAAI,cAAc,iBAAiB;AACjC,uBAAe,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,KAAK,gBAAgB,SAAS,SAAS,UAAU,MAAM;AAAA,EAC1D;AAEA,gCAAU,MAAM;AACd,QAAI,CAAC,QAAS;AAEd,WAAO,iBAAiB,WAAW,aAAa;AAEhD,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW,aAAa;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,eAAe,OAAO,CAAC;AAC7B;;;ACnDA,IAAAC,iBAAgC;AAGhC,IAAM,uBAAuB;AAOtB,SAAS,2BAA2B,EAAC,QAAQ,MAAK,GAAU;AACjE,QAAM,sBAAkB,uBAAsC;AAC9D,QAAM,cAAc,SAAS,KAAK;AAClC,QAAM,YAAY,CAAC,WAAW,OAAO,EAAE,SAAS,MAAM;AAEtD,gCAAU,MAAM;AACd,QAAI,WAAW;AACb,sBAAgB,UAAU,WAAW,aAAa,oBAAoB;AAEtE,aAAO,MAAM;AACX,qBAAa,gBAAgB,OAAO;AAAA,MACtC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,CAAC;AAE3B,SAAO,EAAC,UAAS;AACnB;;;AC1BA,IAAAC,iBAAqB;AAGd,IAAM,2BAA2B,MAAM;AAC5C,QAAM,EAAC,YAAY,QAAQ,UAAS,IAAI,iBAAiB;AACzD,QAAM,iBAAa,uBAAwD;AAE3E,QAAM,uBAAuB,YAAY;AACvC,cAAU;AACV,WAAO,IAAI,QAAiB,aAAW;AACrC,iBAAW,UAAU;AAAA,IACvB,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,EACF;AACF;;;ACpBA,IAAAC,iBAAuB;AAWhB,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4B;AAC1B,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAG3C,iBAAiB,CAAC,CAAC;AAEtB,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,OAAO,KAAK,eAAe,GAAG;AACjC,aAAO;AAAA,IACT;AAEA,WAAO,OAAO,KAAK,eAAe,EAAE,KAAK,WAAS;AAChD,UAAI,CAAC,cAAc,KAAK,KAAK,MAAM,KAAK,MAAM,QAAW;AACvD,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,KAAK,GAAG,SAAS,gBAAgB,KAAK,GAAG,OAAO;AACxD,YAAI,OAAO;AACT,kBAAQ,IAAI;AAAA,YACV,KAAK,gBAAgB,KAAK,GAAG,UAAU,MAAM,KAAK,GAAG;AAAA,YACrD,CAAC,KAAK,GAAG,EAAC,MAAM,MAAM,KAAK,GAAG,WAAW,gBAAgB,KAAK,EAAC;AAAA,UACjE,CAAC;AAAA,QACH;AAEA,eAAO,gBAAgB,KAAK,GAAG,UAAU,MAAM,KAAK,GAAG;AAAA,MACzD;AAYA,UAAI,MAAM,KAAK,aAAa,SAAS,MAAM,KAAK,aAAa,QAAQ;AACnE,YAAI,OAAO;AACT,kBAAQ,IAAI;AAAA,YACV,KAAK,KAAK,UAAU,gBAAgB,KAAK,CAAC,MAAM,KAAK,UAAU,MAAM,KAAK,CAAC;AAAA,YAC3E,CAAC,KAAK,GAAG,EAAC,MAAM,MAAM,KAAK,GAAG,WAAW,gBAAgB,KAAK,EAAC;AAAA,UACjE,CAAC;AAAA,QACH;AAEA,eAAO,KAAK,UAAU,gBAAgB,KAAK,CAAC,MAAM,KAAK,UAAU,MAAM,KAAK,CAAC;AAAA,MAC/E;AAEA,UAAI,OAAO;AACT,gBAAQ,IAAI;AAAA,UACV,KAAK,gBAAgB,KAAK,MAAM,MAAM,KAAK;AAAA,UAC3C,CAAC,KAAK,GAAG,EAAC,MAAM,MAAM,KAAK,GAAG,WAAW,gBAAgB,KAAK,EAAC;AAAA,QACjE,CAAC;AAAA,MACH;AAEA,aAAO,gBAAgB,KAAK,MAAM,MAAM,KAAK;AAAA,IAC/C,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA,eAAe,iBAAiB;AAAA,EAClC;AACF;;;A5B9CS,IAAAC,uBAAA;AArBT,SAAS,kBAAkB,UAAsD;AAC/E,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,OAAO,sBAAsB;AAChC;AAAA,IACF;AAEA,UAAM,UAAU,SAAS,SAAS;AAClC,QAAI,CAAC,QAAS;AAEd,UAAM,cAAc,SAAS,cAAc,MAAM;AACjD,gBAAY,KAAK;AACjB,gBAAY,MAAM,UAAU;AAC5B,aAAS,KAAK,YAAY,WAAW;AAErC,WAAO,MAAM;AACX,kBAAY,OAAO;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AACf;AAEA,SAAS,OAAO,EAAC,GAAG,MAAK,GAAsD;AAC7E,SAAO,8CAAiB,sBAAhB,EAAqB,aAAU,UAAU,GAAG,OAAO;AAC7D;AAEA,SAAS,cAAc,EAAC,GAAG,MAAK,GAAyD;AACvF,SAAO,8CAAiB,yBAAhB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,aAAa,EAAC,GAAG,MAAK,GAAwD;AACrF,SAAO,8CAAiB,wBAAhB,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,YAAY,EAAC,GAAG,MAAK,GAAuD;AACnF,SAAO,8CAAiB,uBAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,IAAM,uBACJ;AAEF,IAAM,2BACJ;AAEF,IAAM,gBAAsB,mBAG1B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,sBAAsB,SAAS;AAAA,IAC5C,GAAG;AAAA;AACN,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,uBACJ;AAEF,IAAM,2BACJ;AAEF,IAAM,gBAAsB;AAAA,EAQ1B,CACE,EAAC,WAAW,kBAAkB,MAAM,UAAU,WAAW,aAAa,MAAM,GAAG,MAAK,GACpF,QACG;AACH,UAAM,iBACJ;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,WAAW,GAAG,sBAAsB,SAAS;AAAA,QAC5C,GAAG;AAAA,QAEH;AAAA;AAAA,UACA,mBACC;AAAA,YAAiB;AAAA,YAAhB;AAAA,cACC,aAAU;AAAA,cACV,WAAW;AAAA,cAEX;AAAA,8DAAC,+BAAM;AAAA,gBACP,8CAAC,UAAK,WAAU,WAAU,mBAAK;AAAA;AAAA;AAAA,UACjC;AAAA;AAAA;AAAA,IAEJ;AAGF,UAAM,kBACJ,cACC,OAAO,WAAW,cAAc,OAAO,sBAAsB,OAAO;AAEvE,WACE,8CAAC,gBAAa,aAAU,iBAAgB,WAAW,iBAChD,uBACC,8CAAC,iBAAc,WAAW,GAAG,sBAAsB,wBAAwB,GACxE,0BACH,IAEA,8CAAC,SAAI,WAAW,GAAG,sBAAsB,wBAAwB,GAC9D,0BACH,GAEJ;AAAA,EAEJ;AACF;AACA,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,eAAe,CAAC,EAAC,WAAW,GAAG,MAAK,MACxC;AAAA,EAAC;AAAA;AAAA,IACC,aAAU;AAAA,IACV,WAAW,GAAG,gDAAgD,SAAS;AAAA,IACtE,GAAG;AAAA;AACN;AAEF,aAAa,cAAc;AAE3B,IAAM,eAAe,CAAC,EAAC,WAAW,GAAG,MAAK,MACxC;AAAA,EAAC;AAAA;AAAA,IACC,aAAU;AAAA,IACV,WAAW,GAAG,0DAA0D,SAAS;AAAA,IAChF,GAAG;AAAA;AACN;AAEF,aAAa,cAAc;AAE3B,IAAM,cAAoB,mBAGxB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QAAQ;AAChC,QAAM,WAAiB,eAA2B,IAAI;AACtD,QAAM,cAAc,eAAe,UAAU,GAAG;AAEhD,oBAAkB,QAAQ;AAE1B,SACE;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,KAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AACD,YAAY,cAA8B,sBAAM;AAEhD,IAAM,oBAA0B,mBAG9B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,iDAAiD,SAAS;AAAA,IACvE,GAAG;AAAA;AACN,CACD;AACD,kBAAkB,cAA8B,4BAAY;AAE5D,IAAM,uBAAuB,CAAC,EAAC,SAAQ,MACrC,8CAAC,+CAAgB,UAAS;AAE5B,qBAAqB,cAAc;;;A6B7H3B,IAAAC,uBAAA;AAhCD,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AACZ,GAA4B;AAC1B,QAAM,mBAAmB,CAAC,YAAqB;AAC7C,QAAI,CAAC,WAAW,WAAW;AACzB;AAAA,IACF;AAEA,iBAAa,OAAO;AAAA,EACtB;AAEA,QAAM,eAAe,MAAM;AACzB,QAAI,WAAW;AACb;AAAA,IACF;AAEA,eAAW;AACX,iBAAa,KAAK;AAAA,EACpB;AAEA,SACE,8CAAC,UAAO,MAAY,cAAc,kBAChC,yDAAC,iBACC;AAAA,mDAAC,gBACC;AAAA,oDAAC,eAAa,iBAAM;AAAA,MACpB,8CAAC,qBAAmB,uBAAY;AAAA,OAClC;AAAA,IACA,+CAAC,gBAAa,WAAU,QACtB;AAAA,oDAAC,UAAO,SAAQ,aAAY,SAAS,cAAc,UAAU,WAC1D,sBACH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,SAAS;AAAA,UACT,UAAU;AAAA,UACV,SAAS;AAAA,UAER;AAAA;AAAA,MACH;AAAA,OACF;AAAA,KACF,GACF;AAEJ;;;AC3EA,IAAAC,UAAuB;AA8BnB,IAAAC,uBAAA;AAlBG,IAAM,uBAA6B;AAAA,EAIxC,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,GAAG;AAAA,EACL,GACA,QAEA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,SACV,SAAS,aACR;AAAA,QACF,CAAC,YAAY,CAAC,WAAW;AAAA,QACzB;AAAA,MACF;AAAA,MACA,OAAO,EAAC,OAAO,QAAQ,GAAG,KAAK,OAAO,OAAS;AAAA,MAC9C,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,qBAAqB,cAAc;;;AClDnC,IAAAC,wBAA6B;AAC7B,IAAAC,wBAAuB;AA2Bb,IAAAC,uBAAA;AAbH,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkC;AAChC,QAAM,EAAC,EAAC,QAAI,sCAAe;AAE3B,SACE,8CAAC,SAAI,WAAW,GAAG,QAAQ,SAAS,GAClC,yDAAC,WACC;AAAA,kDAAC,kBAAe,SAAO,MACrB;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAQ;AAAA,QACR,WAAU;AAAA,QAEV;AAAA,wDAAC,kCAAS,OAAO,IAAI,QAAQ,IAAI;AAAA,UAChC,SAAS,EAAE,cAAc;AAAA;AAAA;AAAA,IAC5B,GACF;AAAA,IACA,8CAAC,kBAAe,WAAW,mBAAmB,GAAG,SAAQ,QAAO,MAAK,UAClE,YAAE,aAAa,GAClB;AAAA,KACF,GACF;AAEJ;;;AC7CA,IAAAC,iBAAuC;;;ACAvC,IAAAC,UAAuB;AACvB,gBAA2B;AAgBvB,IAAAC,uBAAA;AAZG,IAAM,eAAyB;AAC/B,IAAM,sBAAgC;AACtC,IAAM,qBAA+B;AACrC,IAAM,oBAA8B;AAEpC,IAAM,sBAA4B,mBAKvC,CAAC,EAAC,WAAW,aAAa,GAAG,WAAW,GAAG,MAAK,GAAG,QACnD,8CAAW,kBAAV,EAAiB,WAAW,aAAa,mBAAmB,GAC3D;AAAA,EAAW;AAAA,EAAV;AAAA,IACC;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,GACF,CACD;AACD,oBAAoB,cAAc;AAMlC,IAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,mBAAyB,mBAGpC,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB,8CAAW,gBAAV,EAAe,KAAU,WAAW,GAAG,aAAa,SAAS,GAAI,GAAG,OAAO,CAC7E;AACD,iBAAiB,cAAc;AAExB,IAAM,oBAA0B,mBAGrC,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAW;AAAA,EAAV;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,kBAAkB,cAAc;AAEzB,IAAM,wBAA8B,mBAGzC,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAW;AAAA,EAAV;AAAA,IACC;AAAA,IACA,WAAW,GAAG,kCAAkC,SAAS;AAAA,IACxD,GAAG;AAAA;AACN,CACD;AACD,sBAAsB,cAAc;;;ADjDhC,IAAAC,uBAAA;AAVG,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,KAAK;AAE1C,SACE,+CAAC,gBAAa,cAAc,WAAW,OACrC;AAAA,kDAAC,uBAAoB,SAAO,MACzB,iBAAO,YAAY,aAAa,QAAQ,MAAM,IAAI,SACrD;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,iBAAiB,SAAS;AAAA,QACxC,OAAM;AAAA,QACN;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;;;AEnCI,IAAAC,uBAAA;AAFG,SAAS,MAAM,EAAC,WAAW,GAAG,MAAK,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACTI,IAAAC,uBAAA;AAFG,SAAS,YAAY,EAAC,WAAW,GAAG,MAAK,GAAgC;AAC9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yDAAyD,SAAS;AAAA,MAC/E,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACNI,IAAAC,uBAAA;AAFG,SAAS,WAAW,EAAC,WAAW,GAAG,MAAK,GAAgC;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,uDAAuD,SAAS;AAAA,MAC7E,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACNI,IAAAC,uBAAA;AAFG,SAAS,iBAAiB,EAAC,WAAW,GAAG,MAAK,GAA8B;AACjF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACTI,IAAAC,uBAAA;AAFG,SAAS,aAAa,EAAC,WAAW,GAAG,MAAK,GAAgC;AAC/E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACbA,IAAAC,mCAAqC;AAwBjC,IAAAC,uBAAA;AArBG,IAAM,yBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAA0E;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,mBAAmB,EAAC,SAAS,UAAS,CAAC,CAAC;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC/BA,IAAAC,wBAAkB;AAClB,IAAAC,wBAA6B;;;ACF7B,IAAAC,iBAAiD;;;ACA1C,IAAM,mBAAmB;AAAA,EAC9B,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AACV;;;ADuCM,IAAAC,uBAAA;AAxCN,IAAM,eAAe;AAAA,EACnB,CAAC,iBAAiB,QAAQ,GAAG;AAAA,IAC3B,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,CAAC,iBAAiB,MAAM,GAAG;AAAA,IACzB,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,CAAC,iBAAiB,OAAO,GAAG;AAAA,IAC1B,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,CAAC,iBAAiB,MAAM,GAAG;AAAA,IACzB,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AACF;AASO,IAAM,eAAW;AAAA,EACtB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,SAAS,iBAAiB;AAAA,IAC1B,OAAO;AAAA,IACP;AAAA,EACF,GACA,QACG;AACH,UAAM,SAAS,aAAa,MAAM;AAElC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,OAAO;AAAA,UACP;AAAA,YACE,mCAAmC,SAAS;AAAA,YAC5C,mCAAmC,SAAS;AAAA,YAC5C,qCAAqC,SAAS;AAAA,YAC9C,CAAC,OAAO,UAAU,GAAG,YAAY;AAAA,UACnC;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;ADtCN,IAAAC,uBAAA;AAbV,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiC;AAC/B,QAAM,EAAC,EAAC,QAAI,sCAAe;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,wDAAwD,SAAS;AAAA,MAE/E;AAAA,sDAAC,YAAS,QAAO,UAAS,WAAU,uCACjC,kBAAQ,8CAAC,6BAAI,MAAM,IAAI,GAC1B;AAAA,QACA,+CAAC,SAAI,WAAU,gDACb;AAAA,wDAAC,SAAI,WAAU,yBAAyB,mBAAS,EAAE,eAAe,GAAE;AAAA,UACnE,YACC,8CAAC,SAAI,WAAU,wCAAwC,oBAAS;AAAA,WAEpE;AAAA;AAAA;AAAA,EACF;AAEJ;;;AGpCA,IAAAC,UAAuB;AAuBf,IAAAC,uBAAA;AAhBD,IAAM,eAAqB;AAAA,EAChC,CAAC,EAAC,WAAW,UAAU,WAAW,MAAM,SAAS,UAAU,KAAK,GAAG,MAAK,GAAG,QACzE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,YACC;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA,YACf,eAAY;AAAA,YAEZ;AAAA,4DAAC,UAAK,GAAE,wBAAuB;AAAA,cAC/B,8CAAC,UAAK,GAAE,kBAAiB;AAAA,cACzB,8CAAC,UAAK,GAAE,sBAAqB;AAAA;AAAA;AAAA,QAC/B;AAAA;AAAA;AAAA,EAEJ;AAEJ;AACA,aAAa,cAAc;;;ACzC3B,IAAAC,wBAA6B;AAC7B,IAAAC,wBAAmB;;;ACFnB,IAAAC,UAAuB;AACvB,uBAAkC;AAClC,IAAAC,mCAAqC;AAqF7B,IAAAC,uBAAA;AAhFD,IAAM,qBAAiB;AAAA,EAC5B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,0BAAsB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAmBO,IAAM,SAAe;AAAA,EAI1B,CACE,EAAC,WAAW,MAAM,UAAU,SAAS,UAAU,OAAO,IAAI,OAAO,OAAO,GAAG,MAAK,GAChF,QACG;AACH,UAAM,cAAoB,cAAM;AAChC,UAAM,UAAU,MAAM;AACtB,UAAM,gBACJ;AAAA,MAAkB;AAAA,MAAjB;AAAA,QACC;AAAA,QACA,WAAW,GAAG,eAAe,EAAC,MAAM,SAAQ,CAAC,GAAG,SAAS;AAAA,QACzD,UAAU,MAAM;AAAA,QACf,GAAG;AAAA,QACJ,IAAI;AAAA,QACJ,iBAAiB,WAAW,SAAY;AAAA,QACxC,SAAS;AAAA,QACT,OAAO,OAAO,KAAK;AAAA,QACnB,aAAW;AAAA,QACX,iBAAe;AAAA,QAEf,wDAAkB,wBAAjB,EAAuB,WAAW,GAAG,oBAAoB,EAAC,KAAI,CAAC,CAAC,GAAG;AAAA;AAAA,IACtE;AAGF,QAAI,CAAC,SAAS,CAAC,OAAO;AACpB,aAAO;AAAA,IACT;AAEA,WACE,+CAAC,SACC;AAAA,qDAAC,SAAI,WAAU,2BACZ;AAAA;AAAA,QACA,SACC,8CAAC,SAAM,SAAS,SAAS,WAAU,8BAChC,iBACH;AAAA,SAEJ;AAAA,MACC,SAAS,8CAAC,gBAAa,UAAU,MAAM,UAAW,iBAAM;AAAA,OAC3D;AAAA,EAEJ;AACF;AAEA,OAAO,cAA+B,sBAAK;;;AC/G3C,IAAAC,iBAA6E;AAC7E,IAAAC,wBAA6B;AAC7B,IAAAC,wBAWO;AA6MC,IAAAC,uBAAA;AA9LD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,WAAW;AACb,GAAqB;AACnB,QAAM,EAAC,EAAC,QAAI,sCAAe;AAC3B,QAAM,eAAW,uBAAyB,IAAI;AAC9C,QAAM,gBAAY,uBAA0B,IAAI;AAChD,QAAM,mBAAe,uBAAuB,IAAI;AAChD,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAC5C,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,CAAC;AAChD,QAAM,CAAC,UAAU,WAAW,QAAI,yBAAS,CAAC;AAC1C,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,yBAAS,YAAY;AACrE,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,IAAI;AAC/C,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAsB,MAAM;AAClE,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,EAAE;AACzD,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,EAAE;AAErD,iBAAe,EAAC,SAAS,kBAAkB,SAAS,QAAO,CAAC;AAE5D,gCAAU,MAAM;AACd,UAAM,eACJ;AACF,UAAM,aAAa;AAEnB,UAAM,eAAe,IAAI,MAAM,YAAY;AAC3C,UAAM,aAAa,IAAI,MAAM,UAAU;AAEvC,QAAI,cAAc;AAChB,YAAM,UAAU,aAAa,CAAC;AAC9B,qBAAe,SAAS;AACxB;AAAA,QACE,iCAAiC,OAAO,wCAAwC,WAAW,gBAAgB,EAAE;AAAA,MAC/G;AACA,uBAAiB,EAAE;AACnB,mBAAa,KAAK;AAClB;AAAA,IACF;AAEA,QAAI,YAAY;AACd,YAAM,UAAU,WAAW,CAAC;AAC5B,qBAAe,OAAO;AACtB;AAAA,QACE,kCAAkC,OAAO,mCAAmC,WAAW,gBAAgB,EAAE;AAAA,MAC3G;AACA,yBAAmB,EAAE;AACrB,mBAAa,KAAK;AAClB;AAAA,IACF;AAEA,mBAAe,MAAM;AACrB,uBAAmB,EAAE;AACrB,qBAAiB,EAAE;AAAA,EACrB,GAAG,CAAC,KAAK,QAAQ,CAAC;AAElB,gCAAU,MAAM;AACd,QAAI,gBAAgB,OAAQ;AAE5B,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,UAAM,iBAAiB,MAAM;AAC3B,kBAAY,MAAM,QAAQ;AAC1B,mBAAa,KAAK;AAAA,IACpB;AACA,UAAM,aAAa,MAAM,eAAe,MAAM,WAAW;AACzD,UAAM,iBAAiB,MAAM;AAC3B,mBAAa,KAAK;AAClB,YAAM,cAAc;AAAA,IACtB;AACA,UAAM,kBAAkB,MAAM,aAAa,IAAI;AAC/C,UAAM,gBAAgB,MAAM,aAAa,KAAK;AAE9C,UAAM,iBAAiB,kBAAkB,cAAc;AACvD,UAAM,iBAAiB,cAAc,UAAU;AAC/C,UAAM,iBAAiB,SAAS,cAAc;AAC9C,UAAM,iBAAiB,aAAa,eAAe;AACnD,UAAM,iBAAiB,WAAW,aAAa;AAE/C,WAAO,MAAM;AACX,YAAM,oBAAoB,kBAAkB,cAAc;AAC1D,YAAM,oBAAoB,cAAc,UAAU;AAClD,YAAM,oBAAoB,SAAS,cAAc;AACjD,YAAM,oBAAoB,aAAa,eAAe;AACtD,YAAM,oBAAoB,WAAW,aAAa;AAAA,IACpD;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,gCAAU,MAAM;AACd,QAAI,oBAAoB,SAAS,WAAW,gBAAgB,QAAQ;AAClE,WAAK,SAAS,QAAQ,KAAK;AAC3B,mBAAa,IAAI;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,kBAAkB,WAAW,CAAC;AAElC,QAAM,aAAa,MAAM;AACvB,QAAI,gBAAgB,OAAQ;AAE5B,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,QAAI,WAAW;AACb,YAAM,MAAM;AAAA,IACd,OAAO;AACL,WAAK,MAAM,KAAK;AAAA,IAClB;AAEA,iBAAa,CAAC,SAAS;AAAA,EACzB;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,gBAAgB,OAAQ;AAE5B,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,UAAM,QAAQ,CAAC;AACf,eAAW,CAAC,OAAO;AAAA,EACrB;AAEA,QAAM,aAAa,CAAC,UAAyC;AAC3D,QAAI,gBAAgB,OAAQ;AAE5B,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,UAAM,UAAU,OAAO,WAAW,MAAM,OAAO,KAAK;AACpD,UAAM,cAAc;AACpB,mBAAe,OAAO;AAAA,EACxB;AAEA,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,gBAAgB,CAAC,kBAAkB;AACtC,0BAAoB,IAAI;AACxB;AAAA,IACF;AAEA,wBAAoB,KAAK;AACzB,cAAU;AAAA,EACZ;AAEA,QAAMC,cAAa,CAAC,kBAA0B;AAC5C,UAAM,UAAU,KAAK,MAAM,gBAAgB,EAAE;AAC7C,UAAM,UAAU,KAAK,MAAM,gBAAgB,EAAE;AAC7C,WAAO,GAAG,OAAO,IAAI,UAAU,KAAK,MAAM,EAAE,GAAG,OAAO;AAAA,EACxD;AAEA,QAAM,eAAe,MAAM;AACzB,QAAI,gBAAgB,OAAQ;AAE5B,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,UAAM,cAAc,KAAK,IAAI,GAAG,MAAM,cAAc,CAAC;AAAA,EACvD;AAEA,QAAM,cAAc,MAAM;AACxB,QAAI,gBAAgB,OAAQ;AAE5B,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AAEZ,UAAM,cAAc,KAAK,IAAI,MAAM,UAAU,MAAM,cAAc,CAAC;AAAA,EACpE;AAEA,QAAM,mBAAmB,mBACrB,sLACA;AAEJ,QAAM,wBAAwB,mBAC1B,0FACA;AAEJ,QAAM,wBAAwB,CAAC,UAAsC;AACnE,QAAI,MAAM,WAAW,MAAM,eAAe;AACxC,gBAAU;AAAA,IACZ;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW;AAAA,MACX,SAAS,mBAAmB,wBAAwB;AAAA,MAEnD;AAAA,4BACC,+CAAC,SAAI,WAAU,wDACb;AAAA,wDAAC,SAAI,WAAU,0FAAyF;AAAA,UACxG,8CAAC,SAAI,WAAU,oGAAmG;AAAA,UAClH,8CAAC,SAAI,WAAU,0GAAyG;AAAA,UACxH,8CAAC,SAAI,WAAU,yGAAwG;AAAA,UACvH,8CAAC,SAAI,WAAU,sGAAqG;AAAA,WACtH;AAAA,QAGD,oBAAoB,WACnB;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAU;AAAA,YACV,cAAY,EAAE,OAAO;AAAA,YAErB,wDAAC,2BAAE,WAAU,WAAU;AAAA;AAAA,QACzB;AAAA,QAGD,SAAS,oBACR,8CAAC,SAAI,WAAU,gGACb,wDAAC,QAAG,WAAU,sCAAsC,iBAAM,GAC5D;AAAA,QAGD,aACC,8CAAC,SAAI,WAAU,sEACb,yDAAC,SAAI,WAAU,sCACb;AAAA,wDAAC,iCAAQ,WAAU,wBAAuB;AAAA,UAC1C,8CAAC,UAAK,WAAU,uBAAuB,YAAE,eAAe,GAAE;AAAA,WAC5D,GACF;AAAA,QAGF,8CAAC,SAAI,WAAW,uBAAuB,SAAS,WAAS,MAAM,gBAAgB,GAC5E,0BAAgB,YACf;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAK;AAAA,YACL,WAAW,UAAU,mBAAmB,aAAa,QAAQ;AAAA,YAC7D,iBAAe;AAAA,YACf,OAAM;AAAA,YACN,QAAQ,MAAM,aAAa,KAAK;AAAA,YAChC,OAAO,SAAS;AAAA;AAAA,QAClB,IACE,gBAAgB,UAClB;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAK;AAAA,YACL,WAAW,UAAU,mBAAmB,aAAa,QAAQ;AAAA,YAC7D,iBAAe;AAAA,YACf,OAAM;AAAA,YACN,QAAQ,MAAM,aAAa,KAAK;AAAA,YAChC,OAAO,SAAS;AAAA;AAAA,QAClB,IAEA,gFACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,WAAW,UAAU,mBAAmB,iBAAiB,QAAQ;AAAA,cACjE;AAAA,cACA,SAAS;AAAA,cACT,aAAW;AAAA,cACX;AAAA,cAEA;AAAA,8DAAC,YAAO,KAAU,MAAK,aAAY;AAAA,gBAClC,EAAE,qBAAqB;AAAA;AAAA;AAAA,UAC1B;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,mLAAmL,mBAAmB,SAAS,EAAE;AAAA,cAE5N;AAAA,8DAAC,SAAI,WAAU,gCACb;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,KAAI;AAAA,oBACJ,KAAK,YAAY;AAAA,oBACjB,OAAO;AAAA,oBACP,UAAU;AAAA,oBACV,WAAU;AAAA;AAAA,gBACZ,GACF;AAAA,gBAEA,+CAAC,SAAI,WAAU,qCACb;AAAA,iEAAC,SAAI,WAAU,2BACb;AAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,MAAK;AAAA,wBACL,SAAS;AAAA,wBACT,WAAU;AAAA,wBACV,cAAY,YAAY,EAAE,OAAO,IAAI,EAAE,MAAM;AAAA,wBAE5C,sBACC,8CAAC,+BAAM,WAAU,WAAU,IAE3B,8CAAC,8BAAK,WAAU,WAAU;AAAA;AAAA,oBAE9B;AAAA,oBAEA;AAAA,sBAAC;AAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,MAAK;AAAA,wBACL,SAAS;AAAA,wBACT,WAAU;AAAA,wBACV,cAAY,EAAE,eAAe;AAAA,wBAE7B,wDAAC,kCAAS,WAAU,WAAU;AAAA;AAAA,oBAChC;AAAA,oBAEA;AAAA,sBAAC;AAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,MAAK;AAAA,wBACL,SAAS;AAAA,wBACT,WAAU;AAAA,wBACV,cAAY,EAAE,cAAc;AAAA,wBAE5B,wDAAC,qCAAY,WAAU,WAAU;AAAA;AAAA,oBACnC;AAAA,oBAEA;AAAA,sBAAC;AAAA;AAAA,wBACC,SAAQ;AAAA,wBACR,MAAK;AAAA,wBACL,SAAS;AAAA,wBACT,WAAU;AAAA,wBACV,cAAY,UAAU,EAAE,QAAQ,IAAI,EAAE,MAAM;AAAA,wBAE3C,oBACC,8CAAC,iCAAQ,WAAU,WAAU,IAE7B,8CAAC,iCAAQ,WAAU,WAAU;AAAA;AAAA,oBAEjC;AAAA,oBAEA,+CAAC,UAAK,WAAU,qCACb;AAAA,sBAAAA,YAAW,WAAW;AAAA,sBAAE;AAAA,sBAAIA,YAAW,YAAY,CAAC;AAAA,uBACvD;AAAA,qBACF;AAAA,kBAEA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,MAAK;AAAA,sBACL,SAAS;AAAA,sBACT,WAAU;AAAA,sBACV,cACE,mBAAmB,EAAE,kBAAkB,IAAI,EAAE,mBAAmB;AAAA,sBAGjE,6BACC,8CAAC,kCAAS,WAAU,WAAU,IAE9B,8CAAC,kCAAS,WAAU,WAAU;AAAA;AAAA,kBAElC;AAAA,mBACF;AAAA;AAAA;AAAA,UACF;AAAA,WACF,GAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;;;AFlVU,IAAAC,uBAAA;AArBH,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,aAAa;AACf,GAAqB;AACnB,QAAM,EAAC,EAAC,QAAI,sCAAe;AAC3B,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,EACd,IAAI,iBAAiB;AAErB,SACE,+CAAC,SAAI,WAAU,0GACb;AAAA,mDAAC,SAAI,WAAU,0BACZ;AAAA,cACC,8CAAC,YAAS,QAAO,UAAS,MAAK,MAC5B,gBACH;AAAA,MAEF,+CAAC,SACC;AAAA,uDAAC,SAAI,WAAU,gCACb;AAAA,wDAAC,QAAG,WAAU,2BAA2B,iBAAM;AAAA,UAC9C,cAAc,8CAAC,oBAAiB;AAAA,UAChC,qBACC;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAAS;AAAA,cAET;AAAA,8DAAC,8BAAK,WAAU,WAAU;AAAA,gBACzB,EAAE,UAAU;AAAA;AAAA;AAAA,UACf;AAAA,WAEJ;AAAA,QACA,8CAAC,OAAE,WAAU,0CAA0C,uBAAY;AAAA,SACrE;AAAA,OACF;AAAA,IACA,8CAAC,UAAO,UAAoB,OAAO,SAAS,UAAU,iBAAiB,MAAK,MAAK;AAAA,IAChF,uBAAuB,qBACtB;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO,EAAE,gBAAgB;AAAA,QACzB,SAAS;AAAA,QACT,cAAY;AAAA;AAAA,IACd;AAAA,KAEJ;AAEJ;;;AG5EA,IAAAC,iBAMO;AACP,IAAAC,wBAAqB;AAsC+B,IAAAC,uBAAA;AAvB7C,IAAM,sBAAkB;AAAA,EAC7B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,mBAAe;AAAA,MACnB,CAAC,UAAyC;AACxC,mBAAW,KAAK;AAChB,cAAM,OAAO,QAAQ;AAAA,MACvB;AAAA,MACA,CAAC,QAAQ;AAAA,IACX;AAEA,UAAM,cAAc,SAAS,SAAY,OAAO,8CAAC,gCAAO,WAAU,WAAU;AAE5E,WACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,GAAG,iBAAiB,eAAe;AAAA,QAE9C,yDAAC,WAAM,WAAW,GAAG,kBAAkB,SAAS,GAC9C;AAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA,MAAK;AAAA,cACL,UAAU;AAAA,cACV,WAAU;AAAA,cACT,GAAG;AAAA;AAAA,UACN;AAAA,UACC;AAAA,UACA,SAAS,8CAAC,UAAK,WAAU,UAAU,iBAAM;AAAA,WAC5C;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,gBAAgB,cAAc;;;ACxE9B;;;ACQI,IAAAC,uBAAA;AAFG,SAASC,SAAQ,EAAC,UAAU,WAAW,GAAG,MAAK,GAAwB;AAC5E,SACE,8CAAC,SAAI,WAAW,GAAG,gBAAO,SAAS,SAAS,GAAI,GAAG,OAChD,UACH;AAEJ;;;ACJI,IAAAC,uBAAA;AAFG,SAASC,QAAO,EAAC,UAAU,WAAW,GAAG,MAAK,GAAuB;AAC1E,SACE,8CAAC,QAAG,WAAW,GAAG,gBAAO,QAAQ,SAAS,GAAI,GAAG,OAC9C,UACH;AAEJ;;;ACFI,IAAAC,uBAAA;AAFG,SAASC,OAAK,EAAC,UAAU,QAAQ,WAAW,GAAG,MAAK,GAAqB;AAC9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,gBAAO,SAAS,UAAU,gBAAO,eAAe,SAAS;AAAA,MACtE,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACTI,IAAAC,uBAAA;AAFG,SAAS,UAAU,EAAC,UAAU,WAAW,GAAG,MAAK,GAA0B;AAChF,SACE,8CAAC,QAAG,WAAW,GAAG,gBAAO,WAAW,SAAS,GAAI,GAAG,OACjD,UACH;AAEJ;;;ACPO,IAAM,UAAU;AAAA,EACrB,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA;AAAA,EACA,SAAAC;AACF;;;ACVA,IAAAC,iBAQO;AACP,IAAAC,yBAA6B;;;ACT7B,IAAAC,kBAAA;;;AD6FY,IAAAC,uBAAA;AApEL,IAAM,oBAAgB;AAAA,EAC3B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,UAAM,cAAU,sBAAM;AACtB,UAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,gBAAgB,EAAE;AACrE,UAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,KAAK;AAEhD,UAAM,eAAe,UAAU,SAAY,QAAQ;AACnD,UAAM,UAAU,CAAC,gBAAgB,OAAO,YAAY,EAAE,WAAW;AACjE,UAAM,WAAW,QAAQ,KAAK;AAC9B,UAAM,eAAe,YAAY,CAAC;AAElC,UAAM,eAAe,CAAC,UAAyC;AAC7D,UAAI,UAAU,QAAW;AACvB,yBAAiB,MAAM,OAAO,KAAK;AAAA,MACrC;AAEA,iBAAW,KAAK;AAAA,IAClB;AAEA,UAAM,cAAc,CAAC,UAAwC;AAC3D,mBAAa,IAAI;AACjB,gBAAU,KAAK;AAAA,IACjB;AAEA,UAAM,aAAa,CAAC,UAAwC;AAC1D,mBAAa,KAAK;AAClB,eAAS,KAAK;AAAA,IAChB;AAEA,UAAM,oBAAoB;AAAA,MACxBC,gBAAO;AAAA,MACP,iBAAiBA,gBAAO;AAAA,MACxB,gBAAgB,CAAC,iBAAiBA,gBAAO;AAAA,MACzC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAWA,gBAAO;AAAA,MACtD,CAAC,iBAAiB,CAAC,gBAAgB,WAAWA,gBAAO;AAAA,MACrD,aAAa,CAAC,YAAYA,gBAAO;AAAA,IACnC;AAEA,UAAM,mBAAmB,eAAe,QAAQ,QAAQ;AACxD,UAAM,oBAAoB,eAAe,SAAS,CAAC,WAAW,QAAQ,KAAK;AAE3E,WACE,+CAAC,SAAI,WAAW,GAAGA,gBAAO,WAAW,SAAS,GAC3C;AAAA,qBAAe,aAAa,SAC3B,+CAAC,SAAI,WAAWA,gBAAO,UACrB;AAAA,sDAAC,WAAM,SAAS,SAAS,WAAWA,gBAAO,WACxC,iBACH;AAAA,QACC,YACC,+CAAC,UAAK,WAAWA,gBAAO,cACrB;AAAA;AAAA,UACD,8CAAC,QAAI,2BAAiB,EAAE,UAAU,GAAE;AAAA,WACtC;AAAA,QAED,WAAW,8CAAC,SAAI,WAAWA,gBAAO,SAAU,mBAAQ;AAAA,SACvD;AAAA,MAGF,+CAAC,SAAI,WAAW,mBACd;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,IAAI;AAAA,YACJ,WAAWA,gBAAO;AAAA,YAClB,aAAa;AAAA,YACb;AAAA,YACA,cAAc,UAAU,SAAY,eAAe;AAAA,YACnD,UAAU;AAAA,YACV,SAAS;AAAA,YACT,QAAQ;AAAA,YACR;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,QACC,QAAQ,8CAAC,SAAI,WAAWA,gBAAO,MAAO,gBAAK;AAAA,QAE3C,qBACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACTA,gBAAO;AAAA,cACP,iBAAiBA,gBAAO;AAAA,YAC1B;AAAA,YAEA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACTA,gBAAO;AAAA,kBACP,gBAAgBA,gBAAO;AAAA,gBACzB;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA;AAAA,QACF;AAAA,SAEJ;AAAA,MAEC,kBAAkB,8CAAC,OAAE,WAAWA,gBAAO,gBAAiB,0BAAe;AAAA,MACvE,SAAS,8CAAC,OAAE,WAAWA,gBAAO,WAAY,iBAAM;AAAA,OACnD;AAAA,EAEJ;AACF;AAEA,cAAc,cAAc;;;AEpJ5B,IAAAC,UAAuB;AACvB,IAAAC,mCAAqC;AAkCjC,IAAAC,uBAAA;AA/BJ,IAAM,yBAAqB,sCAAI,oDAAoD;AAAA,EACjF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB,EAAC,MAAM,KAAK,OAAO,WAAW,MAAM,OAAM;AAC7D,CAAC;AASM,IAAM,aAAmB;AAAA,EAC9B,CAAC,EAAC,WAAW,MAAM,OAAO,MAAM,UAAU,GAAG,MAAK,GAAG,QACnD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAY;AAAA,MACZ,WAAW,GAAG,mBAAmB,EAAC,MAAM,OAAO,KAAI,CAAC,GAAG,SAAS;AAAA,MAC/D,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AACA,WAAW,cAAc;;;AC7CzB,IAAAC,iBAAyC;AAiBjC,IAAAC,uBAAA;AAPD,IAAM,gBAAY;AAAA,EACvB,CAAC,EAAC,UAAU,OAAO,aAAa,UAAS,GAAG,QAC1C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,0DAA0D,SAAS;AAAA,MAEhF;AAAA,iBACC,8CAAC,SAAI,WAAU,sDAAsD,iBAAM;AAAA,QAE7E;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEC;AAAA;AAAA,cACD,8CAAC,SAAI,WAAU,sFACZ,uBACH;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,UAAU,cAAc;;;ACjCxB,IAAAC,wBAAiC;AAmC7B,IAAAC,uBAAA;AAnBG,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AACd,GAAqB;AACnB,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,cAAc,YAAY;AAAA,IAC1B;AAAA,EACF;AACA,QAAM,eAAe,EAAC,OAAO,MAAM,QAAQ,KAAI;AAC/C,QAAM,iBACJ,gFACE;AAAA,kDAAC,4CAAmB,eAAY,QAAO,OAAO,EAAC,OAAO,MAAM,QAAQ,KAAI,GAAG;AAAA,IAC3E,8CAAC,UAAK,WAAU,uCAAsC;AAAA,KACxD;AAGF,SACE,8CAAC,mBACC,yDAAC,eACC;AAAA,kDAAC,kBAAe,SAAO,MAAC,SACrB,wBAAc,WACb;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAY;AAAA,QACZ,WAAW;AAAA,QACX,OAAO;AAAA,QAEN;AAAA;AAAA,IACH,IAEA,8CAAC,UAAK,cAAY,OAAO,WAAW,kBAAkB,OAAO,cAC1D,0BACH,GAEJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAW,GAAG,YAAY,gBAAgB;AAAA,QAEzC;AAAA;AAAA,IACH;AAAA,KACF,GACF;AAEJ;;;ACxEA,IAAAC,iBAAuE;AAc1D,IAAAC,uBAAA;AAHb,IAAM,kBAAc;AAAA,EAClB,CAAC,EAAC,OAAO,IAAI,YAAY,IAAI,WAAW,MAAM,OAAO,GAAG,MAAK,GAAG,QAAQ;AACtE,QAAI,UAAU;AACZ,aAAO,+EAAG,oBAAS;AAAA,IACrB;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,QAAQ,SAAS;AAAA,QACjB,aAAY;AAAA,QACZ,eAAc;AAAA,QACd,gBAAe;AAAA,QACf;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,wDAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,UAC/B,8CAAC,UAAK,GAAE,YAAW;AAAA,UACnB,8CAAC,UAAK,GAAE,aAAY;AAAA;AAAA;AAAA,IACtB;AAAA,EAEJ;AACF;AACA,YAAY,cAAc;AAE1B,IAAM,WAAO;AAAA,MACX;AAAA,IACE,CAAC,EAAC,MAAM,OAAO,OAAO,IAAI,YAAY,IAAI,WAAW,MAAM,GAAG,MAAK,GAAG,QACpE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;AAEnB,IAAM,eAAN,MAAmB;AAAA,EACjB,OAAe,QAAQ,oBAAI,IAAkD;AAAA,EAE7E,aAAa,KAAK,MAAoD;AACpE,QAAI,CAAC,KAAK,MAAM,IAAI,IAAI,GAAG;AACzB,WAAK,MAAM;AAAA,QACT;AAAA,QACA,QAAQ,OAAO,IAAI,MAAM,SAAS,IAAI,mCAAmC,CAAC;AAAA,MAC5E;AAAA,IACF;AAEA,WAAO,KAAK,MAAM,IAAI,IAAI;AAAA,EAC5B;AAAA,EAEA,OAAO,QAAQ,OAAkC;AAC/C,WAAO,QAAQ;AAAA,MACb,MAAM;AAAA,QAAI,UACR,KAAK,KAAK,IAAI,EACX,KAAK,MAAM,MAAS,EACpB,MAAM,MAAM,MAAS;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,eAAe;;;ACjFrB,IAAAC,UAAuB;AACvB,IAAAC,mCAAqC;AA8CjC,IAAAC,uBAAA;AA3CJ,IAAM,yBAAqB;AAAA,EACzB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WACE;AAAA,QACF,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,iBAAiB,EAAC,MAAM,KAAK,OAAO,WAAW,SAAS,YAAW;AAAA,EACrE;AACF;AAUO,IAAM,aAAmB;AAAA,EAC9B,CACE,EAAC,WAAW,MAAM,OAAO,SAAS,OAAO,UAAU,OAAO,UAAU,GAAG,MAAK,GAC5E,QAEA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,cAAY;AAAA,MACZ,WAAW,GAAG,mBAAmB,EAAC,MAAM,OAAO,QAAO,CAAC,GAAG,SAAS;AAAA,MAClE,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AACA,WAAW,cAAc;;;AChDrB,IAAAC,uBAAA;AAFG,SAAS,QAAQ,EAAC,WAAW,SAAQ,GAAiB;AAC3D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACnBA,IAAAC,iBAA+C;AAgB3C,IAAAC,uBAAA;AAVG,SAASC,OAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAe;AACb,QAAM,CAAC,OAAO,QAAQ,QAAI,yBAAS,KAAK;AAExC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,QAAQ,cAAc;AAAA,MAC3B,KAAK,OAAO;AAAA,MACZ;AAAA,MACA,SAAS,MAAM,SAAS,IAAI;AAAA,MAC5B,SAAQ;AAAA,MACP,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACzBA,IAAAC,UAAuB;AAOnB,IAAAC,uBAAA;AAFG,IAAM,QAAc;AAAA,EACzB,CAAC,EAAC,WAAW,MAAM,UAAU,GAAG,MAAK,GAAG,QACtC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,YAAY;AAAA,QACb,CAAC,YAAY;AAAA,QACb,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,MAAM,cAAc;;;AC1BpB,IAAAC,UAAuB;;;ACAvB,IAAAC,iBAA+D;AAe/D,IAAM,sBAAkB,8BAA2C,IAAI;AAEvE,SAAS,qBAAqB;AAC5B,QAAM,UAAM,2BAAW,eAAe;AAEtC,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AAEA,SAAO;AACT;AAEA,IAAM,cAAc;AAEpB,SAAS,cAAc,KAAqB;AAC1C,SAAO,IAAI,QAAQ,OAAO,EAAE;AAC9B;;;AC/BA,IAAAC,iBAAiF;AAY1E,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,EAAE;AACjD,QAAM,gBAAY,uBAAoC,CAAC,CAAC;AACxD,QAAM,mBAAe,uBAAuB,IAAI;AAChD,QAAM,qBAAiB,uBAAsC;AAC7D,QAAM,eAAW,uBAAiB,MAAM,KAAK,EAAC,QAAQ,UAAS,GAAG,MAAM,EAAE,CAAC;AAE3E,QAAM,YAAQ,wBAAQ,MAAM;AAC1B,UAAM,YAAY,MAAM,KAAK,EAAC,QAAQ,UAAS,GAAG,MAAM,EAAE;AAE1D,aAAS,QAAQ,GAAG,QAAQ,KAAK,IAAI,MAAM,QAAQ,SAAS,GAAG,SAAS,GAAG;AACzE,YAAM,OAAO,MAAM,KAAK;AAExB,UAAI,QAAQ,YAAY,KAAK,IAAI,GAAG;AAClC,kBAAU,KAAK,IAAI;AAAA,MACrB;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,SAAS,CAAC;AAErB,WAAS,UAAU;AAEnB,QAAM,gBAAY;AAAA,IAChB,CAAC,aAAuB;AACtB,UAAI,kBAAkB;AAEtB,eAAS,QAAQ,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG;AAC5D,YAAI,SAAS,KAAK,GAAG;AACnB,4BAAkB;AAClB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,oBAAoB,IAAI;AAC1B,mBAAW,EAAE;AACb;AAAA,MACF;AAEA,YAAM,SAAS,MAAM;AAAA,QACnB,EAAC,QAAQ,kBAAkB,EAAC;AAAA,QAC5B,CAAC,GAAG,UAAU,SAAS,KAAK,KAAK;AAAA,MACnC,EAAE,KAAK,EAAE;AACT,iBAAW,MAAM;AAAA,IACnB;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,gCAAU,MAAM;AACd,QAAI,aAAa,UAAU,QAAQ,CAAC,GAAG;AACrC,gBAAU,QAAQ,CAAC,EAAE,MAAM;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,6BAAyB,4BAAY,CAAC,UAAsB;AAChE,iBAAa,eAAe,OAAO;AACnC,UAAM,SAAS,MAAM;AACrB,UAAM,YAAY,UAAU,QAAQ,QAAQ,MAAM;AAElD,QAAI,cAAc,IAAI;AACpB,qBAAe,SAAS;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,8BAA0B,4BAAY,MAAM;AAChD,iBAAa,eAAe,OAAO;AACnC,mBAAe,UAAU,WAAW,MAAM;AACxC,UAAI,CAAC,aAAa,SAAS,SAAS,SAAS,aAAa,GAAG;AAC3D,uBAAe,EAAE;AAAA,MACnB;AAAA,IACF,GAAG,CAAC;AAAA,EACN,GAAG,CAAC,CAAC;AAEL,gCAAU,MAAM,MAAM,aAAa,eAAe,OAAO,GAAG,CAAC,CAAC;AAE9D,QAAM,uBAAmB;AAAA,IACvB,CAAC,OAAe,UAAkB;AAChC,UAAI,CAAC,YAAY,KAAK,KAAK,EAAG;AAE9B,YAAM,WAAW,CAAC,GAAG,SAAS,OAAO;AACrC,eAAS,KAAK,IAAI;AAClB,gBAAU,QAAQ;AAElB,YAAM,YAAY,QAAQ;AAE1B,UAAI,YAAY,WAAW;AACzB,uBAAe,SAAS;AACxB,kBAAU,QAAQ,SAAS,GAAG,MAAM;AAAA,MACtC;AAAA,IACF;AAAA,IACA,CAAC,WAAW,SAAS;AAAA,EACvB;AAEA,QAAM,mBAAe;AAAA,IACnB,CAAC,UAAkB;AACjB,YAAM,WAAW,CAAC,GAAG,SAAS,OAAO;AAErC,UAAI,SAAS,KAAK,GAAG;AACnB,iBAAS,KAAK,IAAI;AAClB,kBAAU,QAAQ;AAAA,MACpB,WAAW,QAAQ,GAAG;AACpB,iBAAS,QAAQ,CAAC,IAAI;AACtB,kBAAU,QAAQ;AAClB,uBAAe,QAAQ,CAAC;AACxB,kBAAU,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAAA,MACtC;AAAA,IACF;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,kBAAc;AAAA,IAClB,CAAC,SAAiB;AAChB,YAAM,SAAS,cAAc,IAAI,EAAE,MAAM,GAAG,SAAS;AAErD,UAAI,OAAO,SAAS,GAAG;AACrB,cAAM,WAAW,MAAM;AAAA,UACrB,EAAC,QAAQ,UAAS;AAAA,UAClB,CAAC,GAAG,UAAU,OAAO,KAAK,KAAK;AAAA,QACjC;AACA,kBAAU,QAAQ;AAClB,cAAM,aAAa,KAAK,IAAI,OAAO,QAAQ,YAAY,CAAC;AACxD,uBAAe,UAAU;AACzB,kBAAU,QAAQ,UAAU,GAAG,MAAM;AAAA,MACvC;AAAA,IACF;AAAA,IACA,CAAC,WAAW,SAAS;AAAA,EACvB;AAEA,QAAM,mBAAe;AAAA,IACnB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AClLA,IAAAC,iBAKO;AAGA,SAAS,gBAAgB,OAAe;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,mBAAmB;AAEvB,QAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,QAAM,WAAW,gBAAgB;AAEjC,QAAM,gBAAgB,CAAC,UAA2C;AAChE,YAAQ,MAAM,KAAK;AAAA,MACjB,KAAK;AAAA,MACL,KAAK;AACH,cAAM,eAAe;AACrB,qBAAa,KAAK;AAClB;AAAA,MACF,KAAK;AACH,cAAM,eAAe;AACrB,YAAI,QAAQ,GAAG;AACb,yBAAe,QAAQ,CAAC;AACxB,oBAAU,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAAA,QACtC;AACA;AAAA,MACF,KAAK;AACH,cAAM,eAAe;AACrB,YAAI,QAAQ,YAAY,GAAG;AACzB,yBAAe,QAAQ,CAAC;AACxB,oBAAU,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAAA,QACtC;AACA;AAAA,MACF,KAAK;AACH,cAAM,eAAe;AACrB,uBAAe,CAAC;AAChB,kBAAU,QAAQ,CAAC,GAAG,MAAM;AAC5B;AAAA,MACF,KAAK,OAAO;AACV,cAAM,eAAe;AACrB,cAAM,YAAY,YAAY;AAC9B,uBAAe,SAAS;AACxB,kBAAU,QAAQ,SAAS,GAAG,MAAM;AACpC;AAAA,MACF;AAAA,MACA;AACE,YAAI,YAAY,KAAK,MAAM,GAAG,GAAG;AAC/B,gBAAM,eAAe;AACrB,2BAAiB,OAAO,MAAM,GAAG;AAAA,QACnC,WAAW,MAAM,IAAI,WAAW,KAAK,CAAC,MAAM,WAAW,CAAC,MAAM,SAAS;AACrE,gBAAM,eAAe;AAAA,QACvB;AAAA,IACJ;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,UAAyC;AAClE,UAAM,SAAS,cAAc,MAAM,OAAO,KAAK;AAE/C,QAAI,OAAO,SAAS,GAAG;AACrB,kBAAY,MAAM;AAAA,IACpB,WAAW,OAAO,WAAW,GAAG;AAC9B,uBAAiB,OAAO,MAAM;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,mBAAmB,CAAC,UAA4C;AACpE,UAAM,eAAe;AACrB,gBAAY,MAAM,cAAc,QAAQ,YAAY,CAAC;AAAA,EACvD;AAEA,QAAM,kBAAc;AAAA,IAClB,CAAC,YAAqC;AACpC,gBAAU,QAAQ,KAAK,IAAI;AAAA,IAC7B;AAAA,IACA,CAAC,OAAO,SAAS;AAAA,EACnB;AAEA,QAAM,gBAAY,4BAAY,MAAM;AAClC,cAAU,QAAQ,KAAK,GAAG,MAAM;AAAA,EAClC,GAAG,CAAC,OAAO,SAAS,CAAC;AAErB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AH1EM,IAAAC,uBAAA;AAfN,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAAkB;AAChB,QAAM,EAAC,cAAc,cAAc,wBAAwB,wBAAuB,IAChF,YAAY,EAAC,WAAW,OAAO,UAAU,UAAU,WAAW,MAAK,CAAC;AAEtE,SACE,8CAAC,gBAAgB,UAAhB,EAAyB,OAAO,cAC/B;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,GAAG,2BAA2B,YAAY,cAAc,SAAS;AAAA,MAC5E,MAAK;AAAA,MACL,cAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MAEP;AAAA;AAAA,EACH,GACF;AAEJ;AAIA,IAAM,gBAAsB;AAAA,EAC1B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB,8CAAC,SAAI,KAAU,WAAW,GAAG,qBAAqB,SAAS,GAAI,GAAG,OAAO;AAE7E;AACA,cAAc,cAAc;AAM5B,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAC,OAAO,WAAW,GAAG,MAAK,GAAG,QAAQ;AACrC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,gBAAgB,KAAK;AAEzB,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ,SAAS;AAAA,UACT;AAAA,QACF;AAAA,QACA,SAAS;AAAA,QACR,GAAG;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,MAAK;AAAA,YACL,WAAU;AAAA,YACV,cAAa;AAAA,YACb,SAAQ;AAAA,YACR,WAAW;AAAA,YACX,OAAO;AAAA,YACP;AAAA,YACA,cAAY,SAAS,QAAQ,CAAC,OAAO,SAAS;AAAA,YAC9C,WAAU;AAAA,YACV,WAAW;AAAA,YACX,UAAU;AAAA,YACV,SAAS;AAAA;AAAA,QACX;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;AAI3B,IAAM,oBAA0B;AAAA,EAC9B,CAAC,OAAO,QAAQ,8CAAC,SAAI,KAAU,MAAK,aAAa,GAAG,OAAO;AAC7D;AACA,kBAAkB,cAAc;;;AIhHhC,IAAAC,iBAA2D;AAgDvD,IAAAC,uBAAA;AAlBG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,cAAc;AAChB,GAAuB;AACrB,QAAM,CAAC,MAAM,OAAO,QAAI,yBAAS,eAAe,KAAK;AAErD,WAAS,iBAAiB,OAAgB;AACxC,YAAQ,KAAK;AACb,uBAAmB,KAAK;AAAA,EAC1B;AAEA,SACE,+CAAC,gBAAa,MAAY,cAAc,kBACtC;AAAA,kDAAC,uBAAoB,SAAO,MAAE,UAAS;AAAA,IACvC;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,aAAa,UAAU,QAAQ;AAAA,QACtC,WAAU;AAAA,QAEV;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAC,qBAAqB,UAAU,OAAO,SAAQ;AAAA,YAErD,gBAAM,IAAI,WAAS;AAClB,oBAAM,aAAa,MAAM,SAAS;AAClC,oBAAM,YAAY,aACd,uBACA;AACJ,oBAAM,gBAAgB,MAAM;AAE5B,qBACE;AAAA,gBAAC;AAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,SAAS,MAAM;AACb,6BAAS,MAAM,IAAI;AACnB,qCAAiB,KAAK;AAAA,kBACxB;AAAA,kBACA,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA,cAAc;AAAA,kBAChB;AAAA,kBAEA,wDAAC,iBAAc,MAAM,IAAI,OAAO,WAAW;AAAA;AAAA,gBAZtC,MAAM;AAAA,cAab;AAAA,YAEJ,CAAC;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;ACvFA;AAAA,EACE,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,WAAa;AAAA,EACf;AAAA,EACA,SAAW;AAAA,EACX,UAAY;AAAA,EACZ,QAAU;AAAA,EACV,OAAS;AAAA,EACT,cAAgB;AAAA,EAChB,MAAQ;AAAA,EACR,OAAS;AAAA,EACT,MAAQ;AAAA,EACR,QAAU;AAAA,EACV,mBAAqB;AAAA,EACrB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,SAAW;AAAA,EACX,eAAiB;AAAA,EACjB,0BAA4B;AAAA,EAC5B,YAAc;AAAA,EACd,eAAiB;AAAA,EACjB,cAAgB;AAAA,EAChB,mBAAqB;AAAA,EACrB,QAAU;AAAA,EACV,YAAc;AAAA,EACd,OAAS;AAAA,EACT,UAAY;AAAA,EACZ,iBAAmB;AAAA,EACnB,cAAgB;AAAA,EAChB,kBAAoB;AAAA,EACpB,8BAAgC;AAAA,EAChC,eAAiB;AAAA,EACjB,eAAiB;AAAA,EACjB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,iBAAmB;AAAA,EACnB,iBAAmB;AAAA,EACnB,aAAe;AAAA,EACf,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,mBAAqB;AAAA,EACrB,aAAe;AAAA,EACf,qBAAuB;AAAA,EACvB,iCAAmC;AAAA,EACnC,MAAQ;AAAA,EACR,cAAgB;AAAA,EAChB,aAAe;AAAA,EACf,UAAY;AAAA,EACZ,gBAAkB;AAAA,EAClB,SAAW;AAAA,EACX,YAAc;AAChB;;;AC1DA,IAAAC,uBAAA;AAAA,EACE,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,WAAa;AAAA,EACf;AAAA,EACA,SAAW;AAAA,EACX,UAAY;AAAA,EACZ,QAAU;AAAA,EACV,OAAS;AAAA,EACT,cAAgB;AAAA,EAChB,MAAQ;AAAA,EACR,OAAS;AAAA,EACT,MAAQ;AAAA,EACR,QAAU;AAAA,EACV,mBAAqB;AAAA,EACrB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,SAAW;AAAA,EACX,eAAiB;AAAA,EACjB,0BAA4B;AAAA,EAC5B,YAAc;AAAA,EACd,eAAiB;AAAA,EACjB,cAAgB;AAAA,EAChB,mBAAqB;AAAA,EACrB,QAAU;AAAA,EACV,YAAc;AAAA,EACd,OAAS;AAAA,EACT,UAAY;AAAA,EACZ,iBAAmB;AAAA,EACnB,cAAgB;AAAA,EAChB,kBAAoB;AAAA,EACpB,8BAAgC;AAAA,EAChC,eAAiB;AAAA,EACjB,eAAiB;AAAA,EACjB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,iBAAmB;AAAA,EACnB,iBAAmB;AAAA,EACnB,aAAe;AAAA,EACf,cAAgB;AAAA,EAChB,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,eAAiB;AAAA,EACjB,mBAAqB;AAAA,EACrB,aAAe;AAAA,EACf,qBAAuB;AAAA,EACvB,iCAAmC;AAAA,EACnC,cAAgB;AAAA,EAChB,aAAe;AAAA,EACf,UAAY;AAAA,EACZ,gBAAkB;AAAA,EAClB,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,YAAc;AAChB;;;AC1DA,IAAAC,uBAAA;AAAA,EACE,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,WAAa;AAAA,EACf;AAAA,EACA,SAAW;AAAA,EACX,UAAY;AAAA,EACZ,QAAU;AAAA,EACV,OAAS;AAAA,EACT,cAAgB;AAAA,EAChB,MAAQ;AAAA,EACR,OAAS;AAAA,EACT,MAAQ;AAAA,EACR,QAAU;AAAA,EACV,mBAAqB;AAAA,EACrB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,SAAW;AAAA,EACX,eAAiB;AAAA,EACjB,0BAA4B;AAAA,EAC5B,YAAc;AAAA,EACd,eAAiB;AAAA,EACjB,cAAgB;AAAA,EAChB,mBAAqB;AAAA,EACrB,QAAU;AAAA,EACV,YAAc;AAAA,EACd,OAAS;AAAA,EACT,UAAY;AAAA,EACZ,iBAAmB;AAAA,EACnB,cAAgB;AAAA,EAChB,kBAAoB;AAAA,EACpB,8BAAgC;AAAA,EAChC,eAAiB;AAAA,EACjB,eAAiB;AAAA,EACjB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,iBAAmB;AAAA,EACnB,iBAAmB;AAAA,EACnB,aAAe;AAAA,EACf,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,mBAAqB;AAAA,EACrB,aAAe;AAAA,EACf,qBAAuB;AAAA,EACvB,iCAAmC;AAAA,EACnC,MAAQ;AAAA,EACR,cAAgB;AAAA,EAChB,aAAe;AAAA,EACf,UAAY;AAAA,EACZ,gBAAkB;AAAA,EAClB,SAAW;AAAA,EACX,YAAc;AAChB;;;AC1DA,IAAAC,uBAAA;AAAA,EACE,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,WAAa;AAAA,EACf;AAAA,EACA,SAAW;AAAA,EACX,UAAY;AAAA,EACZ,QAAU;AAAA,EACV,OAAS;AAAA,EACT,cAAgB;AAAA,EAChB,MAAQ;AAAA,EACR,OAAS;AAAA,EACT,MAAQ;AAAA,EACR,QAAU;AAAA,EACV,mBAAqB;AAAA,EACrB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,SAAW;AAAA,EACX,eAAiB;AAAA,EACjB,0BAA4B;AAAA,EAC5B,YAAc;AAAA,EACd,eAAiB;AAAA,EACjB,cAAgB;AAAA,EAChB,mBAAqB;AAAA,EACrB,QAAU;AAAA,EACV,YAAc;AAAA,EACd,OAAS;AAAA,EACT,UAAY;AAAA,EACZ,iBAAmB;AAAA,EACnB,cAAgB;AAAA,EAChB,kBAAoB;AAAA,EACpB,8BAAgC;AAAA,EAChC,eAAiB;AAAA,EACjB,eAAiB;AAAA,EACjB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,iBAAmB;AAAA,EACnB,iBAAmB;AAAA,EACnB,aAAe;AAAA,EACf,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,mBAAqB;AAAA,EACrB,aAAe;AAAA,EACf,qBAAuB;AAAA,EACvB,iCAAmC;AAAA,EACnC,MAAQ;AAAA,EACR,cAAgB;AAAA,EAChB,aAAe;AAAA,EACf,UAAY;AAAA,EACZ,gBAAkB;AAAA,EAClB,SAAW;AAAA,EACX,YAAc;AAChB;;;AC1DA,IAAAC,uBAAA;AAAA,EACE,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,WAAa;AAAA,EACf;AAAA,EACA,SAAW;AAAA,EACX,UAAY;AAAA,EACZ,QAAU;AAAA,EACV,OAAS;AAAA,EACT,cAAgB;AAAA,EAChB,MAAQ;AAAA,EACR,OAAS;AAAA,EACT,MAAQ;AAAA,EACR,QAAU;AAAA,EACV,mBAAqB;AAAA,EACrB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,SAAW;AAAA,EACX,eAAiB;AAAA,EACjB,0BAA4B;AAAA,EAC5B,YAAc;AAAA,EACd,eAAiB;AAAA,EACjB,cAAgB;AAAA,EAChB,mBAAqB;AAAA,EACrB,QAAU;AAAA,EACV,YAAc;AAAA,EACd,OAAS;AAAA,EACT,UAAY;AAAA,EACZ,iBAAmB;AAAA,EACnB,cAAgB;AAAA,EAChB,kBAAoB;AAAA,EACpB,8BAAgC;AAAA,EAChC,eAAiB;AAAA,EACjB,eAAiB;AAAA,EACjB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,iBAAmB;AAAA,EACnB,iBAAmB;AAAA,EACnB,aAAe;AAAA,EACf,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,mBAAqB;AAAA,EACrB,aAAe;AAAA,EACf,qBAAuB;AAAA,EACvB,iCAAmC;AAAA,EACnC,MAAQ;AAAA,EACR,cAAgB;AAAA,EAChB,aAAe;AAAA,EACf,UAAY;AAAA,EACZ,gBAAkB;AAAA,EAClB,SAAW;AAAA,EACX,YAAc;AAChB;;;AC1DA,IAAAC,uBAAA;AAAA,EACE,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,UAAY;AAAA,IACZ,SAAW;AAAA,IACX,WAAa;AAAA,EACf;AAAA,EACA,SAAW;AAAA,EACX,UAAY;AAAA,EACZ,QAAU;AAAA,EACV,OAAS;AAAA,EACT,cAAgB;AAAA,EAChB,MAAQ;AAAA,EACR,OAAS;AAAA,EACT,MAAQ;AAAA,EACR,QAAU;AAAA,EACV,mBAAqB;AAAA,EACrB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,SAAW;AAAA,EACX,eAAiB;AAAA,EACjB,0BAA4B;AAAA,EAC5B,YAAc;AAAA,EACd,eAAiB;AAAA,EACjB,cAAgB;AAAA,EAChB,mBAAqB;AAAA,EACrB,QAAU;AAAA,EACV,YAAc;AAAA,EACd,OAAS;AAAA,EACT,UAAY;AAAA,EACZ,iBAAmB;AAAA,EACnB,cAAgB;AAAA,EAChB,kBAAoB;AAAA,EACpB,8BAAgC;AAAA,EAChC,eAAiB;AAAA,EACjB,eAAiB;AAAA,EACjB,kBAAoB;AAAA,EACpB,qBAAuB;AAAA,EACvB,iBAAmB;AAAA,EACnB,iBAAmB;AAAA,EACnB,aAAe;AAAA,EACf,cAAgB;AAAA,EAChB,eAAiB;AAAA,EACjB,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,mBAAqB;AAAA,EACrB,aAAe;AAAA,EACf,qBAAuB;AAAA,EACvB,iCAAmC;AAAA,EACnC,MAAQ;AAAA,EACR,cAAgB;AAAA,EAChB,aAAe;AAAA,EACf,UAAY;AAAA,EACZ,gBAAkB;AAAA,EAClB,SAAW;AAAA,EACX,YAAc;AAChB;;;ACnDO,IAAM,oBAAoB;AAAA,EAC/B,IAAAC;AAAA,EACA,IAAAA;AAAA,EACA,IAAAA;AAAA,EACA;AAAA,EACA,IAAAA;AAAA,EACA,IAAAA;AACF;AAEO,IAAM,qBAAqB;AAAA,EAChC,IAAI,EAAC,aAAaA,qBAAE;AAAA,EACpB,IAAI,EAAC,aAAaA,qBAAE;AAAA,EACpB,IAAI,EAAC,aAAaA,qBAAE;AAAA,EACpB,IAAI,EAAC,aAAa,oBAAE;AAAA,EACpB,IAAI,EAAC,aAAaA,qBAAE;AAAA,EACpB,IAAI,EAAC,aAAaA,qBAAE;AACtB;;;ACvBA,IAAAC,yBAA6B;AAC7B,IAAAC,wBAAoD;AA2B9C,IAAAC,uBAAA;AAxBC,IAAM,kBAAkB;AAAA,EAC7B,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AACV;AAWO,SAAS,cAAc,EAAC,QAAQ,OAAO,MAAM,YAAY,GAAE,GAAuB;AACvF,QAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,QAAM,WAAW,SAAS,OAAO,YAAY;AAC7C,QAAM,WAAW,SAAS,OAAO,YAAY;AAC7C,QAAM,gBACJ;AAEF,MAAI,WAAW,gBAAgB,WAAW;AACxC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,wDAAC,mCAAU,WAAW,UAAU;AAAA,UAChC,8CAAC,UAAK,WAAW,GAAG,eAAe,QAAQ,GAAI,YAAE,oBAAoB,GAAE;AAAA;AAAA;AAAA,IACzE;AAAA,EAEJ;AAEA,MAAI,WAAW,gBAAgB,SAAS;AACtC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,wDAAC,mCAAU,WAAW,UAAU;AAAA,UAChC,8CAAC,UAAK,WAAW,GAAG,eAAe,QAAQ,GAAI,YAAE,mBAAmB,GAAE;AAAA;AAAA;AAAA,IACxE;AAAA,EAEJ;AAEA,MAAI,WAAW,gBAAgB,QAAQ;AACrC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,wDAAC,yCAAgB,WAAW,UAAU;AAAA,UACtC,8CAAC,UAAK,WAAW,GAAG,eAAe,QAAQ,GAAI,YAAE,qBAAqB,GAAE;AAAA;AAAA;AAAA,IAC1E;AAAA,EAEJ;AAEA,SAAO;AACT;;;ACvEA,IAAAC,wBAAgB;AAqEN,IAAAC,uBAAA;AAzCH,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,uBAAuB;AACzB,GAAoB;AAClB,QAAM,kBAAkB,aAAa,mBAAmB;AAExD,SACE,8CAAC,UAAO,MAAY,cAClB;AAAA,IAAC;AAAA;AAAA,MACC,iBAAiB;AAAA,MACjB,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAW;AAAA,MACX,YAAY,CAAC;AAAA,MACb,iBAAiB,WAAS;AACxB,YAAI,CAAC,eAAe;AAClB,gBAAM,eAAe;AACrB,gBAAM,gBAAgB;AAAA,QACxB;AAAA,MACF;AAAA,MACA,sBAAsB,WAAS;AAC7B,YAAI,CAAC,sBAAsB;AACzB,gBAAM,eAAe;AACrB,gBAAM,gBAAgB;AAAA,QACxB;AAAA,MACF;AAAA,MAEA;AAAA,uDAAC,gBAAa,WAAU,gHACtB;AAAA,yDAAC,SACC;AAAA,0DAAC,eAAY,WAAU,0CACpB,kBACH;AAAA,YACC,aAAa,8CAAC,SAAK,qBAAU;AAAA,aAChC;AAAA,UACC,mBACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,eAAe,KAAK;AAAA,cACnC,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,wDAAC,2BAAE,WAAU,WAAU;AAAA;AAAA,UACzB;AAAA,UAEF,8CAAC,qBAAkB,WAAU,WAAW,4BAAiB;AAAA,WAC3D;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,uBAAuB,qBAAqB;AAAA,YAC9C;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACC,UAAU,8CAAC,gBAAa,WAAU,OAAO,kBAAO;AAAA;AAAA;AAAA,EACnD,GACF;AAEJ;;;ACpGA,IAAAC,wBAA2B;AAC3B,IAAAC,yBAA6B;AAWzB,IAAAC,uBAAA;AAJG,SAAS,gBAAgB,EAAC,OAAO,GAAG,MAAK,GAAyB;AACvE,QAAM,EAAC,EAAC,QAAI,uCAAe;AAE3B,SACE,+CAAC,UAAO,SAAQ,QAAQ,GAAG,OACzB;AAAA,kDAAC,sCAAa,WAAU,2BAA0B;AAAA,IACjD,SAAS,EAAE,YAAY;AAAA,KAC1B;AAEJ;;;ACjBA,IAAAC,iBAA0D;AAStD,IAAAC,uBAAA;AAFJ,IAAM,mBAAe;AAAA,EACnB,CAAC,EAAC,WAAW,OAAO,WAAW,UAAU,GAAG,MAAK,GAAG,QAClD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,CAAC,YAAY;AAAA,QACb,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,iBAAe;AAAA,MACd,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,aAAa,cAAc;AAEpB,IAAM,WAAO,qBAAK,YAAY;;;AC5BrC,IAAAC,iBAAuB;AACvB,IAAAC,wBAA2C;AAC3C,IAAAC,yBAA6B;AAwBvB,IAAAC,uBAAA;AAbC,SAAS,oBAAoB,EAAC,KAAK,KAAK,QAAO,GAA6B;AACjF,QAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,QAAM,CAAC,OAAO,QAAQ,QAAI,yBAAS,CAAC;AACpC,QAAM,CAAC,UAAU,WAAW,QAAI,yBAAS,CAAC;AAE1C,iBAAe,EAAC,SAAS,QAAO,CAAC;AAEjC,QAAM,SAAS,MAAM,SAAS,WAAS,KAAK,IAAI,QAAQ,MAAM,CAAC,CAAC;AAChE,QAAM,UAAU,MAAM,SAAS,WAAS,KAAK,IAAI,QAAQ,MAAM,GAAG,CAAC;AACnE,QAAM,SAAS,MAAM,YAAY,YAAU,QAAQ,MAAM,GAAG;AAE5D,SACE,+CAAC,SAAI,WAAU,+EACb;AAAA,mDAAC,SAAI,WAAU,6CACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,cAAY,EAAE,SAAS;AAAA,UAEvB,wDAAC,gCAAO,WAAU,WAAU;AAAA;AAAA,MAC9B;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,cAAY,EAAE,UAAU;AAAA,UAExB,wDAAC,iCAAQ,WAAU,WAAU;AAAA;AAAA,MAC/B;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,cAAY,EAAE,QAAQ;AAAA,UAEtB,wDAAC,kCAAS,WAAU,WAAU;AAAA;AAAA,MAChC;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,cAAY,EAAE,OAAO;AAAA,UAErB,wDAAC,2BAAE,WAAU,WAAU;AAAA;AAAA,MACzB;AAAA,OACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,WAAS;AAChB,cAAI,MAAM,WAAW,MAAM,eAAe;AACxC,oBAAQ;AAAA,UACV;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,WAAW,SAAS,KAAK,YAAY,QAAQ;AAAA,cAC7C,YAAY;AAAA,YACd;AAAA,YACA,WAAU;AAAA,YAEV;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,KAAK,OAAO;AAAA,gBACZ;AAAA,gBACA,WAAU;AAAA,gBACV,OAAO;AAAA,gBACP,QAAQ;AAAA;AAAA,YACV;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEA,8CAAC,SAAI,WAAU,sEACb,wDAAC,OAAG,YAAE,cAAc,GAAE,GACxB;AAAA,KACF;AAEJ;;;AC/FA,IAAAC,wBAAsB;AACtB,IAAAC,yBAA6B;AAsCzB,IAAAC,uBAAA;AA3BG,SAAS,OAAO;AAAA,EACrB,OAAO;AAAA,EACP;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AACZ,GAAgB;AACd,QAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,QAAMC,eAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,kBAAkB;AAAA,IACtB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAEA,QAAM,iBAAiB;AAAA,IACrB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AAEA,SACE,+CAAC,SAAI,WAAW,GAAG,mDAAmD,SAAS,GAC7E;AAAA,kDAAC,SAAI,WAAW,GAAG,gBAAgBA,aAAY,IAAI,GAAG,eAAe,OAAO,CAAC,GAC3E,wDAAC,iCAAQ,WAAU,iBAAgB,GACrC;AAAA,IACC,YACC,8CAAC,OAAE,WAAW,GAAG,gBAAgB,IAAI,GAAG,gCAAgC,GACrE,kBAAQ,EAAE,SAAS,GACtB;AAAA,KAEJ;AAEJ;;;ACjDA,IAAAC,wBAA2D;;;ACD3D;;;ADqCM,IAAAC,uBAAA;AAnBC,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AACF,GAAoB;AAClB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,mBAAO;AAAA,QACP,mBAAO,eAAe,OAAO,EAAE;AAAA,QAC/B,WAAW,mBAAO,qBAAqB;AAAA,QACvC;AAAA,MACF;AAAA,MAEA;AAAA,sDAAC,SAAI,WAAW,mBAAO,2BAA4B,gBAAK;AAAA,QAExD,+CAAC,SAAI,WAAW,mBAAO,qBACrB;AAAA,yDAAC,SAAI,WAAW,mBAAO,oBACrB;AAAA,0DAAC,QAAG,WAAW,mBAAO,mBAAoB,iBAAM;AAAA,YAC/C,WACC,8CAAC,WAAQ,MAAK,SAAQ,SAAS,SAAS,kBAAiB,YACvD;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAW;AAAA,kBACT;AAAA,kBACA,mBAAO;AAAA,gBACT;AAAA,gBACA,cAAY;AAAA,gBAEZ,wDAAC,4CAAmB,WAAU,WAAU;AAAA;AAAA,YAC1C,GACF;AAAA,aAEJ;AAAA,UAEA,+CAAC,SAAI,WAAW,mBAAO,oBACrB;AAAA,0DAAC,SAAI,WAAW,mBAAO,mBAAoB,iBAAM;AAAA,YAChD,CAAC,CAAC,cACD;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT,mBAAO;AAAA,kBACP,aAAa,IAAI,mBAAO,YAAY,IAAI;AAAA,gBAC1C;AAAA,gBAEC;AAAA,+BAAa,IAAI,8CAAC,sCAAa,IAAK,8CAAC,oCAAW;AAAA,kBAChD;AAAA,kBAAW;AAAA;AAAA;AAAA,YACd;AAAA,aAEJ;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AEzEO,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACV;;;ACRA,IAAAC,iBAAyE;AACzE,IAAAC,wBAAgB;;;ACDhB,IAAAC,kBAAA;;;ADqFM,IAAAC,uBAAA;AAnCN,IAAM,iBAAiB,CAAC,UAAiB;AACvC,QAAM,eAAe;AACvB;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,EAAC,OAAO,GAAE;AAAA,EACtB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AACF,GAAe;AACb,QAAM,iBAAa,uBAAuB,IAAI;AAE9C,yBAAuB,MAAM,EAAC,YAAY,WAAU,CAAC;AAErD,QAAM,cAAc,MAAM;AACxB,mBAAe,KAAK;AACpB,cAAU;AAAA,EACZ;AAEA,SACE,8CAAC,UAAO,MAAY,cAA4B,OAC9C;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,iBAAiB;AAAA,MACjB,sBAAsB,uBAAuB,cAAc;AAAA,MAC3D,iBAAiB,gBAAgB,cAAc;AAAA,MAC/C;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACAC,gBAAO;AAAA,QACP,qBAAqB;AAAA,QACrB;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAI,CAAC,QAAQ,EAAC,oBAAoB,OAAS;AAAA,MAE3C;AAAA,2BACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAW,GAAG,gBAAgBA,gBAAO,YAAY;AAAA,YACjD,cAAW;AAAA,YAEX,wDAAC,2BAAE,WAAU,WAAU;AAAA;AAAA,QACzB;AAAA,SAGA,WAAW,WAAW,QACtB,8CAAC,SAAI,WAAW,GAAG,eAAeA,gBAAO,WAAW,GAClD,wDAAC,SAAI,KAAK,SAAS,KAAK,WAAW,IAAK,GAAG,WAAW,GACxD;AAAA,QAED,QACC,8CAAC,eAAY,WAAW,GAAG,gBAAgBA,gBAAO,YAAY,GAC3D,iBACH,IAEA,8CAAC,wBACC,wDAAC,eAAY,oBAAM,GACrB;AAAA,QAED,QACC,8CAAC,qBAAkB,WAAW,GAAG,eAAeA,gBAAO,WAAW,GAC/D,gBACH;AAAA,QAED;AAAA,QACA,WACC,8CAAC,SAAI,WAAW,GAAG,0BAA0BA,gBAAO,qBAAqB,GACtE,mBACH;AAAA;AAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,IAAM,kBAAc;AAAA,EAClB,CAAC,EAAC,UAAU,MAAM,WAAW,GAAG,MAAK,GAAG,QACtC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iBAAiBA,gBAAO,eAAe,SAAS;AAAA,MAC9D,MAAM,QAAQ;AAAA,MACb,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,YAAY,cAAc;AAC1B,MAAM,cAAc;;;AE3JpB,IAAAC,iBAAmB;AAkBb,IAAAC,uBAAA;AATC,IAAM,kBAAc,qBAAK,CAAC,EAAC,SAAS,UAAS,MAClD;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA,UAAU,SAAS;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,wDAAC,SAAI,WAAU,aACb,wDAAC,UAAO,MAAK,MAAK,UAAU,OAAO,SAAQ,aAAY,GACzD;AAAA;AACF,CACD;AAED,YAAY,cAAc;;;ACGtB,IAAAC,uBAAA;AAXG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,mBAAmB;AACrB,GAAuB;AACrB,SACE,+CAAC,SAAI,WAAW,GAAG,YAAY,SAAS,GACrC;AAAA;AAAA,IACA,aACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,MAAM;AAAA,YACN;AAAA,YACA,SAAS;AAAA;AAAA,QACX;AAAA;AAAA,IACF;AAAA,KAEJ;AAEJ;;;AC7CA,IAAAC,yBAA6B;AAgBvB,IAAAC,uBAAA;AAPC,SAAS,WAAW,EAAC,WAAW,aAAa,GAAG,MAAK,GAAoB;AAC9E,QAAM,EAAC,EAAC,QAAI,uCAAe;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,2DAA2D,SAAS;AAAA,MAElF,yDAAC,SAAI,WAAU,gHACb;AAAA,sDAAC,UAAO,MAAK,MAAM,GAAG,OAAO,SAAQ,WAAU;AAAA,QAC/C,8CAAC,OAAE,WAAU,wDACV,yBAAe,EAAE,0BAA0B,GAC9C;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;;;ACxBA,IAAAC,yBAA6B;AAC7B,IAAAC,wBAAqE;;;ACDrE,IAAAC,UAAuB;AACvB,kBAA6B;AAa3B,IAAAC,uBAAA;AATK,IAAM,aAAyB;AAC/B,IAAM,cAA0B;AAChC,IAAM,cAA0B;AAChC,IAAM,eAA2B;AAEjC,IAAM,gBAAsB,mBAGjC,CAAC,EAAC,WAAW,UAAU,GAAG,MAAK,GAAG,QAClC;AAAA,EAAa;AAAA,EAAZ;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEH;AAAA;AAAA,MACD,8CAAa,kBAAZ,EAAiB,SAAO,MACvB;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,WAAU;AAAA,UACV,eAAY;AAAA,UAEZ,wDAAC,UAAK,GAAE,yBAAwB;AAAA;AAAA,MAClC,GACF;AAAA;AAAA;AACF,CACD;AACD,cAAc,cAAc;AAErB,IAAM,gBAAsB,mBAGjC,CAAC,EAAC,WAAW,UAAU,WAAW,UAAU,GAAG,MAAK,GAAG,QACvD,8CAAa,oBAAZ,EACC;AAAA,EAAa;AAAA,EAAZ;AAAA,IACC;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ,wDAAa,sBAAZ,EAAqB,WAAU,WAAW,UAAS;AAAA;AACtD,GACF,CACD;AACD,cAAc,cAAc;AAErB,IAAM,aAAmB,mBAG9B,CAAC,EAAC,WAAW,UAAU,GAAG,MAAK,GAAG,QAClC;AAAA,EAAa;AAAA,EAAZ;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ;AAAA,oDAAC,UAAK,WAAU,iFACd,wDAAa,2BAAZ,EACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,MAAK;AAAA,UACL,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,eAAY;AAAA,UAEZ,wDAAC,UAAK,GAAE,sBAAqB;AAAA;AAAA,MAC/B,GACF,GACF;AAAA,MACA,8CAAa,sBAAZ,EAAsB,UAAS;AAAA;AAAA;AAClC,CACD;AACD,WAAW,cAAc;AAElB,IAAM,kBAAwB,mBAGnC,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAa;AAAA,EAAZ;AAAA,IACC;AAAA,IACA,WAAW,GAAG,2CAA2C,SAAS;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,gBAAgB,cAAc;AAEvB,IAAM,cAAoB,mBAG/B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAa;AAAA,EAAZ;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAAc;AAkBnB,IAAM,SAAe;AAAA,EAI1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,UAAgB,cAAM;AAC5B,UAAM,YAAY,MAAM,QAAQ;AAChC,UAAM,cAAoB,eAAqD,IAAI;AACnF,UAAM,cAAc,eAAe,KAAK,WAAW;AAEnD,WACE,+CAAC,SAAI,WAAW,GAAG,wCAAwC,kBAAkB,GAC1E;AAAA,eACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,WAAU;AAAA,UAET;AAAA;AAAA,MACH;AAAA,MAEF,+CAAC,cAAY,GAAG,OACd;AAAA,sDAAC,iBAAc,KAAK,aAAa,IAAI,WAAW,WAAW,kBACzD,wDAAa,mBAAZ,EAAkB,aAA0B,GAC/C;AAAA,QACA,8CAAC,iBAAe,UAAS;AAAA,SAC3B;AAAA,MACA,+CAAC,SAAI,WAAU,qCACZ;AAAA,0BAAkB,CAAC,aAClB,8CAAC,UAAK,WAAU,kEACb,0BACH;AAAA,QAED,aACC,8CAAC,UAAK,WAAU,kFACb,qBACH;AAAA,SAEJ;AAAA,OACF;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;;;AD5If,IAAAC,uBAAA;AAtDN,IAAM,kBAAkB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAExC,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,UAAU;AAAA,EACV;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,aAAa;AAAA,EACb;AACF,GAAoB;AAClB,QAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,QAAM,kBAAkB,YAAY;AAEpC,QAAM,YAAY,eAAe,IAAI,KAAK,OAAO,KAAK,WAAW;AACjE,QAAM,UAAU,KAAK,IAAI,OAAO,UAAU,UAAU;AAEpD,QAAM,gBAAgB,MAAM,aAAa,CAAC;AAC1C,QAAM,mBAAmB,MAAM,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC;AACjE,QAAM,eAAe,MAAM,aAAa,KAAK,IAAI,OAAO,OAAO,CAAC,CAAC;AACjE,QAAM,eAAe,MAAM,aAAa,KAAK;AAE7C,QAAM,gBAAgB,OAAO;AAC7B,QAAM,YAAY,OAAO;AACzB,QAAM,uBAAuB,QAAQ;AAErC,QAAM,cAAc,MAAc;AAChC,QAAI,iBAAiB;AACnB,aAAO,EAAE,iBAAiB,EAAC,MAAM,MAAK,CAAC;AAAA,IACzC;AAEA,QAAI,eAAe,GAAG;AACpB,aAAO,EAAE,kBAAkB;AAAA,IAC7B;AAEA,WAAO,EAAE,gCAAgC;AAAA,MACvC,OAAO,GAAG,SAAS,IAAI,OAAO;AAAA,MAC9B,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,MAAI,eAAe,KAAK,CAAC,sBAAsB;AAC7C,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,sDAAC,SAAI,WAAU,2EACZ,sBAAY,GACf;AAAA,QACA,+CAAC,SAAI,WAAU,mDACZ;AAAA,WAAC,mBAAmB,wBACnB,+CAAC,SAAI,WAAU,qCACb;AAAA,0DAAC,OAAE,WAAU,kCAAkC,YAAE,eAAe,GAAE;AAAA,YAClE;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,SAAS,SAAS;AAAA,gBACzB,eAAe,WAAS,iBAAiB,SAAS,OAAO,EAAE,CAAC;AAAA,gBAC5D,kBAAiB;AAAA,gBACjB,oBAAmB;AAAA,gBAElB,0BAAgB,IAAI,UACnB,8CAAC,cAAsB,OAAO,KAAK,SAAS,GACzC,kBADc,IAEjB,CACD;AAAA;AAAA,YACH;AAAA,aACF;AAAA,UAED,CAAC,mBACA,8CAAC,SAAI,WAAU,sDACZ,YAAE,iBAAiB,EAAC,MAAM,MAAK,CAAC,GACnC;AAAA,UAEF,+CAAC,SAAI,WAAU,2CACZ;AAAA,aAAC,mBACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,UAAU,CAAC;AAAA,gBAEX;AAAA,gEAAC,UAAK,WAAU,WAAW,YAAE,kBAAkB,GAAE;AAAA,kBACjD,8CAAC,sCAAa;AAAA;AAAA;AAAA,YAChB;AAAA,YAEF;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,kBAAkB,SAAS;AAAA,gBACpC,MAAK;AAAA,gBACL,WAAW,GAAG,UAAU;AAAA,kBACtB,uBAAuB;AAAA,gBACzB,CAAC;AAAA,gBACD,SAAS;AAAA,gBACT,UAAU,CAAC;AAAA,gBAEX;AAAA,gEAAC,UAAK,WAAU,WAAW,YAAE,qBAAqB,GAAE;AAAA,kBACpD,8CAAC,qCAAY;AAAA;AAAA;AAAA,YACf;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,kBAAkB,SAAS;AAAA,gBACpC,MAAK;AAAA,gBACL,WAAW,GAAG,UAAU;AAAA,kBACtB,uBAAuB;AAAA,gBACzB,CAAC;AAAA,gBACD,SAAS;AAAA,gBACT,UAAU,CAAC;AAAA,gBAEX;AAAA,gEAAC,UAAK,WAAU,WAAW,YAAE,iBAAiB,GAAE;AAAA,kBAChD,8CAAC,sCAAa;AAAA;AAAA;AAAA,YAChB;AAAA,YACC,CAAC,mBACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,UAAU,CAAC;AAAA,gBAEX;AAAA,gEAAC,UAAK,WAAU,WAAW,YAAE,iBAAiB,GAAE;AAAA,kBAChD,8CAAC,uCAAc;AAAA;AAAA;AAAA,YACjB;AAAA,aAEJ;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AEzJA,IAAAC,UAAuB;AACvB,mBAA8B;AAc1B,IAAAC,uBAAA;AAXG,IAAM,UAAuB;AAC7B,IAAM,iBAA8B;AACpC,IAAM,gBAA6B;AACnC,IAAM,gBAA6B;AACnC,IAAM,eAA4B;AAElC,IAAM,iBAAuB,mBAGlC,CAAC,EAAC,WAAW,aAAa,GAAG,QAAQ,SAAS,GAAG,MAAK,GAAG,QACzD,8CAAc,qBAAb,EACC;AAAA,EAAc;AAAA,EAAb;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,GACF,CACD;AACD,eAAe,cAAc;;;AC5B7B,IAAAC,iBAAyB;;;ACAzB,IAAAC,UAAuB;AACvB,0BAAqC;AACrC,IAAAC,wBAAqB;AAOnB,IAAAC,uBAAA;AAJK,IAAM,aAAmB,mBAG9B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAqB;AAAA,EAApB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,cAAc,SAAS;AAAA,IACpC,GAAG;AAAA;AACN,CACD;AAED,WAAW,cAAkC,yBAAK;AAE3C,IAAM,iBAAuB,mBAGlC,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAqB;AAAA,EAApB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ,wDAAqB,+BAApB,EAA8B,WAAU,oCACvC,wDAAC,gCAAO,WAAU,yCAAwC,GAC5D;AAAA;AACF,CACD;AAED,eAAe,cAAkC,yBAAK;;;ACtCtD,IAAAC,iBAAoC;AAS7B,SAAS,gBAAgB,EAAC,SAAS,cAAc,SAAQ,GAAyB;AACvF,QAAM,gBACH,OAAO,iBAAiB,WACrB,QAAQ,KAAK,YAAU,OAAO,UAAU,YAAY,IACpD,iBAAiB;AACvB,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,YAAY;AAE/D,QAAM,wBAAoB;AAAA,IACxB,CAAC,UAAgC;AAC/B,uBAAiB,KAAK;AACtB,YAAM,iBAAiB,QAAQ,KAAK,YAAU,OAAO,UAAU,KAAK,KAAK;AAEzE,UAAI,kBAAkB,UAAU;AAC9B,iBAAS,cAAc;AAAA,MACzB;AAAA,IACF;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EACpB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;AChCA,IAAAC,kBAAA;;;AHgDgB,IAAAC,uBAAA;AAxCT,IAAM,YAAQ;AAAA,EACnB,CACE,EAAC,SAAS,OAAO,UAAU,OAAO,YAAY,IAAI,WAAW,OAAO,aAAY,GAChF,QACG;AACH,UAAM,EAAC,eAAe,kBAAiB,IAAI,gBAAgB;AAAA,MACzD;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACF,CAAC;AAED,UAAM,gBAAgB,CAAC,WAAwB;AAC7C,UAAI,OAAO,kBAAkB,UAAU;AACrC,eAAO,OAAO,UAAU,cAAc;AAAA,MACxC;AAEA,aAAO,OAAO,UAAU;AAAA,IAC1B;AAEA,WACE,gFACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,OAAO,OAAO,kBAAkB,WAAW,gBAAgB,eAAe;AAAA,UAC1E,eAAe;AAAA,UACf,WAAW,GAAG,WAAW,OAAO;AAAA,UAChC;AAAA,UAEC,kBAAQ,IAAI,YACX;AAAA,YAAC;AAAA;AAAA,cAEC,WAAW;AAAA,gBACT;AAAA,gBACAC,gBAAO;AAAA,iBACN,YAAY,OAAO,aAAaA,gBAAO;AAAA,cAC1C;AAAA,cAEC,yBACC,aAAa,EAAC,QAAQ,YAAY,cAAc,MAAM,EAAC,CAAC,IAExD,gFACE;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAO,OAAO;AAAA,oBACd,IAAI,UAAU,OAAO,KAAK;AAAA,oBAC1B,UAAU,OAAO;AAAA,oBACjB,WAAU;AAAA;AAAA,gBACZ;AAAA,gBACA,8CAAC,OAAE,WAAW,GAAGA,gBAAO,cAAc,aAAa,GAAI,iBAAO,OAAM;AAAA,iBACtE;AAAA;AAAA,YAlBG,OAAO;AAAA,UAoBd,CACD;AAAA;AAAA,MACH;AAAA,MACC,SAAS,8CAAC,gBAAc,iBAAM;AAAA,OACjC;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;AInDV,IAAAC,uBAAA;AAXH,SAAS,gBAAgB,EAAC,GAAG,MAAK,GAAe;AACtD,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,cAAc,CAAC,EAAC,QAAQ,WAAU,MAChC;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,cAAc;AAAA,UAChB;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO,OAAO;AAAA,gBACd,IAAI,UAAU,OAAO,KAAK;AAAA,gBAC1B,UAAU,OAAO;AAAA;AAAA,YACnB;AAAA,YACA,+CAAC,SAAI,WAAU,uBACb;AAAA,4DAAC,OAAE,WAAU,iBAAiB,iBAAO,OAAM;AAAA,cACzC,OAAO,MAAiC,eACxC,8CAAC,OAAE,WAAU,0CACT,iBAAO,KAAgC,aAC3C;AAAA,eAEJ;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EAEJ;AAEJ;;;ACGM,IAAAC,uBAAA;AA5BN,IAAM,iBAAiB,CAAC,OAAe,aAA6B;AAClE,QAAM,aAAc,QAAQ,WAAY;AAExC,MAAI,eAAe,EAAG,QAAO;AAC7B,MAAI,cAAc,GAAI,QAAO;AAC7B,MAAI,cAAc,GAAI,QAAO;AAC7B,MAAI,cAAc,GAAI,QAAO;AAC7B,MAAI,cAAc,GAAI,QAAO;AAC7B,MAAI,cAAc,GAAI,QAAO;AAC7B,SAAO;AACT;AAEO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AACF,GAAwB;AACtB,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,KAAM,QAAQ,WAAY,GAAG,CAAC;AACtE,QAAM,QAAQ,eAAe,OAAO,QAAQ;AAE5C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,uDAAC,SAAI,WAAU,yEACb;AAAA,wDAAC,OAAE,WAAU,kBAAkB,iBAAM;AAAA,UACrC,8CAAC,OAAE,WAAU,2BAA2B,gBAAM,QAAQ,CAAC,GAAE;AAAA,WAC3D;AAAA,QAEA,+CAAC,SAAI,WAAU,mBACb;AAAA,wDAAC,SAAI,WAAU,gDAA+C;AAAA,UAC9D;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,OAAO,GAAG,UAAU;AAAA,gBACpB,iBAAiB;AAAA,cACnB;AAAA;AAAA,UACF;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACrDA,IAAAC,wBAAmB;;;ACDnB,IAAAC,kBAAA;;;ADmCgB,IAAAC,uBAAA;AAzBhB,IAAM,eAAe,CAAC,gBAAwB,CAAC,UAAkB;AAC/D,MAAI,SAAS,YAAa,QAAO;AACjC,SAAO;AACT;AAYO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA0B;AACxB,SACE,+CAAC,cAAS,WAAW,GAAG,WAAWC,gBAAO,gBAAgB,GACvD;AAAA,aAAS,8CAAC,YAAO,WAAWA,gBAAO,0BAA2B,iBAAM;AAAA,IACrE,8CAAC,SAAI,WAAW,GAAGA,gBAAO,wBAAwB,wBAAwB,GACvE,kBAAQ,IAAI,YACX,+CAAC,WAAyB,WAAWA,gBAAO,yBAC1C;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAWA,gBAAO;AAAA,UAClB,MAAK;AAAA,UACL;AAAA,UACA,SAAS,UAAU,OAAO;AAAA,UAC1B,OAAO,OAAO;AAAA,UACd,UAAU,MAAM,WAAW,OAAO,KAAK;AAAA;AAAA,MACzC;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAWA,gBAAO;AAAA,UAClB,MAAM;AAAA,UACN,cAAY,OAAO;AAAA,UACnB,OAAO,aAAa,OAAO,KAAK,EAAE,SAAS,CAAC;AAAA,UAC5C,MAAM,aAAa,OAAO,KAAK,EAAE,SAAS,CAAC;AAAA;AAAA,MAC7C;AAAA,SAfU,OAAO,KAgBnB,CACD,GACH;AAAA,KACF;AAEJ;;;AE3DA,IAAAC,UAAuB;AACvB,IAAAC,wBAAmB;AACnB,IAAAC,yBAA6B;AAsDrB,IAAAC,uBAAA;AArCD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AACf,GAAqB;AACnB,QAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,QAAM,mBAAmB,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,MAAM,CAAC;AAChE,QAAM,QAAQ,MAAM,KAAK,EAAC,QAAQ,UAAS,GAAG,CAAC,GAAG,UAAU,QAAQ,CAAC;AAErE,QAAM,cAAoB,cAAM;AAChC,QAAM,UAAU,mBAAmB,KAAK,MAAM,gBAAgB;AAC9D,QAAM,mBAAmB,UAAU,IAAI,KAAK,KAAK,gBAAgB,IAAI;AACrE,QAAM,aAAa,iBAAiB,YAAY,QAAQ,MAAM,EAAE,CAAC;AAEjE,QAAM,cAAc,CAAC,cAA8B;AACjD,QAAI,aAAa,KAAK,MAAM,gBAAgB,GAAG;AAC7C,aAAO;AAAA,IACT;AAEA,QAAI,cAAc,oBAAoB,UAAU,GAAG;AACjD,aAAO,QAAQ,UAAU;AAAA,IAC3B;AAEA,WAAO;AAAA,EACT;AAEA,SACE,+CAAC,SAAI,WAAW,GAAG,mCAAmC,SAAS,GAC5D;AAAA,gBACC,+CAAC,OAAE,WAAU,wBACV;AAAA;AAAA,MAAiB;AAAA,MAAE;AAAA,OACtB;AAAA,IAGF,+CAAC,SAAI,WAAU,2BACb;AAAA,oDAAC,SAAI,OAAM,KAAI,QAAO,KAAI,OAAO,EAAC,UAAU,WAAU,GACpD,wDAAC,UACC,yDAAC,oBAAe,IAAI,YAAY,IAAG,MAAK,IAAG,MAAK,IAAG,QAAO,IAAG,MAC3D;AAAA,sDAAC,UAAK,QAAQ,GAAG,UAAU,GAAG,KAAK,WAAW,aAAa;AAAA,QAC3D,8CAAC,UAAK,QAAQ,GAAG,UAAU,GAAG,KAAK,WAAW,YAAY;AAAA,SAC5D,GACF,GACF;AAAA,MAEC,MAAM,IAAI,UACT;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA,WAAW,GAAG,YAAY,aAAa;AAAA,UACvC,MAAM,YAAY,IAAI;AAAA,UACtB,QAAO;AAAA,UACP,eAAY;AAAA;AAAA,QALP;AAAA,MAMP,CACD;AAAA,OACH;AAAA,KAEE,gBAAgB,UAAa,gBAC7B,+CAAC,SAAI,WAAU,gDACZ;AAAA,sBAAgB,UACf,+CAAC,OAAE,WAAU,qBACV;AAAA;AAAA,QAAY;AAAA,QAAE,gBAAgB,EAAE,SAAS;AAAA,SAC5C;AAAA,MAED,eAAe,8CAAC,OAAE,WAAU,qBAAqB,uBAAY;AAAA,OAChE;AAAA,KAEJ;AAEJ;;;AC/FA,IAAAC,wBAAwB;AAUpB,IAAAC,uBAAA;AAFG,SAAS,WAAW,EAAC,QAAQ,UAAS,GAAoB;AAC/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,CAAC,SAAS,eAAe;AAAA,QACzB;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;ACjBA,IAAAC,wBAAqB;AAmBN,IAAAC,uBAAA;AATR,SAAS,aAAa,EAAC,SAAS,WAAW,MAAM,UAAS,GAAsB;AACrF,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,WAAW,KAAK;AAAA,MAC9B,eAAY;AAAA,MACZ,cAAY;AAAA,MACZ,MAAK;AAAA,MAEJ,kBAAQ,8CAAC,gCAAO,MAAM,IAAI,aAAa,GAAG,WAAU,sBAAqB;AAAA;AAAA,EAC5E;AAEJ;;;ACtBA,IAAAC,wBAAiC;AACjC,IAAAC,yBAA6B;AA2CrB,IAAAC,uBAAA;AA1BD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,QAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,QAAM,kBAAkB,eAAe,GAAG,EAAE,iBAAiB,CAAC;AAC9D,QAAM,YAAY,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACtD,QAAM,gBAAgB,WAClB,OAAO,aAAa,WAClB,WACA,EAAE,UAAU,IACd;AACJ,QAAM,eAAe,QAAQ,aAAa,KAAK,QAAQ,OAAO;AAE9D,SACE,+CAAC,SAAI,WAAW,GAAG,iBAAiB,gBAAgB,GAChD;AAAA,cAAS,iBACT,+CAAC,SAAI,WAAU,yFACZ;AAAA,eAAS,8CAAC,UAAK,WAAU,oBAAoB,iBAAM;AAAA,MACnD,iBACC,8CAAC,UAAK,WAAU,mDACb,yBACH;AAAA,MAED,WAAW,8CAAC,eAAY,SAAS,SAAS,MAAK,OAAM,MAAM,IAAI;AAAA,OAClE;AAAA,IAEF,+CAAC,SAAI,WAAU,YACb;AAAA,oDAAC,gCAAO,WAAU,uEAAsE;AAAA,MACxF;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ,MAAK;AAAA,UACL,UAAU;AAAA,UACV,aAAa;AAAA,UACb,aAAW;AAAA,UACX,gBAAc;AAAA,UACd,WAAW;AAAA,YACT;AAAA,aACC,WAAW,YAAY;AAAA,YACxB,WACE;AAAA,YACF,WAAW;AAAA,YACX;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACE,WAAW,YACX,+CAAC,SAAI,WAAU,qEACZ;AAAA,mBACC;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA;AAAA,QACZ;AAAA,QAED,WACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS;AAAA,YACT,UAAU;AAAA,YACV,WAAU;AAAA,YACV,cAAY,EAAE,cAAc;AAAA,YAE5B,wDAAC,2BAAE,WAAU,WAAU;AAAA;AAAA,QACzB;AAAA,SAEJ;AAAA,OAEJ;AAAA,KACF;AAEJ;;;ACjGA,IAAAC,oCAAkB;AAEX,IAAM,yBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACLS,IAAAC,uBAAA;AADF,SAAS,WAAW,EAAC,OAAO,QAAQ,SAAS,UAAS,GAAoB;AAC/E,SAAO,8CAAC,SAAI,WAAW,GAAG,mBAAmB,EAAC,MAAK,CAAC,GAAG,SAAS,GAAI,iBAAM;AAC5E;;;ACXO,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,UAAO;AAFG,SAAAA;AAAA,GAAA;;;ACAZ,IAAAC,iBAA0D;AAC1D,IAAAC,wBAAyB;;;ACDlB,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gCAAA;AACA,EAAAA,gCAAA;AAFU,SAAAA;AAAA,GAAA;;;ACAZ;;;AFkCQ,IAAAC,uBAAA;AATR,SAAS,YAAY,EAAC,SAAS,UAAS,GAA6C;AACnF,SACE,8CAAC,WAAQ,MAAK,SAAQ,SAAkB,kBAAiB,YACvD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,GAAG,kCAAkC,SAAS;AAAA,MACzD,SAAS,CAAC,UAAsB,MAAM,gBAAgB;AAAA,MACtD,cAAY,OAAO,YAAY,WAAW,UAAU;AAAA,MAEpD,wDAAC,oCAAW,WAAU,WAAU;AAAA;AAAA,EAClC,GACF;AAEJ;AAEA,IAAM,cAAU;AAAA,EACd,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GACA,QAEA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,gBAAO;AAAA,QACP,WAAW,gBAAO;AAAA,QAClB,YAAY,gBAAO;AAAA,QACnB,EAAC,WAAW,OAAM;AAAA,QAClB;AAAA,MACF;AAAA,MAEE;AAAA,kBAAS,aACT,+CAAC,SAAI,WAAW,gBAAO,iBACpB;AAAA,mBACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,gBAAO;AAAA,gBACP,sBAA6B,gBAAO;AAAA,cACtC;AAAA,cAEC;AAAA;AAAA,gBACA,gBACC,8CAAC,SAAI,WAAW,gBAAO,uBACrB,wDAAC,eAAY,SAAS,cAAc,GACtC;AAAA,gBAED,eACC,8CAAC,SAAI,WAAW,gBAAO,oBAAqB,uBAAY;AAAA;AAAA;AAAA,UAE5D;AAAA,UAED,YACC,+CAAC,SAAI,WAAW,gBAAO,0BACrB;AAAA,0DAAC,SAAI,WAAW,gBAAO,mBAAoB,oBAAS;AAAA,YACnD,mBACC,8CAAC,SAAI,WAAW,gBAAO,0BACrB,wDAAC,eAAY,SAAS,iBAAiB,GACzC;AAAA,aAEJ;AAAA,WAEJ;AAAA,QAGD,WAAW,aAAa,8CAAC,UAAO,WAAW,gBAAO,iBAAiB,IAAK;AAAA;AAAA;AAAA,EAC3E;AAEJ;AACA,QAAQ,cAAc;AAEtB,IAAM,iBAAa;AAAA,EACjB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB,8CAAC,WAAQ,KAAU,WAAW,GAAG,gBAAO,aAAa,SAAS,GAAI,GAAG,OAAO;AAEhF;AACA,WAAW,cAAc;AAEzB,IAAM,yBAAqB;AAAA,EACzB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB,8CAAC,cAAW,KAAU,WAAW,GAAG,gBAAO,kBAAkB,SAAS,GAAI,GAAG,OAAO;AAExF;AACA,mBAAmB,cAAc;;;AGvHjC,IAAAC,iBAQO;;;ACRP,IAAAC,kBAAA;;;AC8CI,IAAAC,uBAAA;AA5BG,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,QAAM,eAAoD,WAAS;AACjE,QAAI,YAAY,YAAY,SAAS;AACnC;AAAA,IACF;AAEA,UAAM,SAAS,UAAU,KAAK;AAE9B,QAAI,CAAC,QAAQ,eAAe;AAC1B,WAAK,SAAS,KAAK;AAAA,IACrB,OAAO;AACL,YAAM,eAAe;AAAA,IACvB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAGC,gBAAO,cAAc,mBAAmB,WAAW;AAAA,QAC/D,CAACA,gBAAO,MAAM,GAAG;AAAA,QACjB,CAACA,gBAAO,QAAQ,GAAG;AAAA,QACnB,CAACA,gBAAO,OAAO,GAAG;AAAA,QAClB,CAACA,gBAAO,QAAQ,GAAG;AAAA,MACrB,CAAC;AAAA,MACA,GAAG;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS;AAAA,YACT;AAAA,YACA,SAAS;AAAA,YACT;AAAA,YACA,UAAU,YAAY;AAAA,YACtB;AAAA;AAAA,QACF;AAAA,QACA,8CAAC,SAAI,WAAWA,gBAAO,SAAU,UAAS;AAAA;AAAA;AAAA,EAC5C;AAEJ;AAEA,eAAe,cAAc;;;ACpE7B,IAAAC,kBAAA;;;AH4HI,IAAAC,uBAAA;AA9GJ,IAAM,gBAAgB,CAA4B,UAAyB;AACzE,MAAI,OAAO;AACT,WAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,EAC9C;AAEA,SAAO,CAAC;AACV;AAEA,SAAS,mBACP,OACA,UACA,UACA,QACA;AACA,UAAI,+BAAe,KAAK,GAAG;AACzB,eAAO,6BAAa,OAAO;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAA4B;AAAA,EAC9B;AAEA,SAAO;AACT;AAiCA,SAAS,kBAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,CAAC;AAAA,EACX,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AACT,GACA,KACA;AACA,QAAM,eACJ,CAAC,WAA8B,CAAC,UAAwC;AACtE,UAAM,eAAe;AACrB,UAAM,aAAa,cAAc,KAAK;AACtC,QAAI,YAAY,eAAe,SAAS,OAAO,KAAK,EAAG;AAEvD,QAAI,UAAU;AACZ,YAAM,kBAAkB,WAAW,SAAS,OAAO,KAAK;AACxD,YAAM,cAAc,kBAChB,WAAW,OAAO,mBAAiB,kBAAkB,OAAO,KAAK,IACjE,CAAC,GAAG,YAAY,OAAO,KAAK;AAEhC,MAAC;AAAA,QACC;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,MAAC;AAAA,QACC,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEF,QAAM,cAAc,cAAc,KAAK,EAAE,SAAS;AAClD,gCAAU,MAAM;AACd,0BAAsB,WAAW;AAAA,EACnC,GAAG,CAAC,aAAa,mBAAmB,CAAC;AAErC,SACE,gFACG;AAAA,aACC,8CAAC,SAAI,WAAWC,gBAAO,cACrB,wDAAC,SAAI,WAAW,GAAGA,gBAAO,MAAM,OAAO,GAAI,iBAAM,GACnD;AAAA,IAEF;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,WAAW;AAAA,UACvB,CAACA,gBAAO,mBAAmB,GAAG,YAAY;AAAA,UAC1C,CAACA,gBAAO,uBAAuB,GAAG,YAAY;AAAA,QAChD,CAAC;AAAA,QAEA,kBAAQ,IAAI,CAAC,QAAQ,UAAU;AAC9B,gBAAM,aAAa,cAAc,KAAK,EAAE,SAAS,OAAO,KAAK;AAC7D,gBAAM,aACJ,YAAY,eAAe,SAAS,OAAO,KAAK,KAAK,OAAO;AAC9D,gBAAM,gBAAgB,cAAc,KAAK,EAAE,UAAU;AACrD,gBAAM,aACJ,YACC,iBAAiB,cAClB,eAAe,SAAS,OAAO,KAAK;AAEtC,iBACE;AAAA,YAAC;AAAA;AAAA,cAEC;AAAA,cACA,UAAU;AAAA,cACV,MAAM,WAAW,aAAa;AAAA,cAC9B,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,SAAS,WAAS,UAAU,OAAO,MAAM;AAAA,cACzC,UAAU,aAAa,MAAM;AAAA,cAC7B,WACE,YAAY,QACR,GAAGA,gBAAO,gBAAgB;AAAA,gBACxB,CAACA,gBAAO,MAAM,GAAG;AAAA,gBACjB,CAACA,gBAAO,QAAQ,GAAG;AAAA,gBACnB,CAACA,gBAAO,MAAM,GAAG,SAAS;AAAA,cAC5B,CAAC,IACD;AAAA,cAGL,6BAAmB,OAAO,OAAO,YAAY,YAAY,UAAU;AAAA;AAAA,YAnB/D,GAAG,OAAO,KAAK,IAAI,KAAK;AAAA,UAoB/B;AAAA,QAEJ,CAAC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAcO,IAAM,gBAAY,2BAAW,iBAAiB;;;AI5LrD,yBAAoC;AAYhC,IAAAC,uBAAA;AAPG,SAASC,WAAU;AAAA,EACxB;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AAAA,EACb,GAAG;AACL,GAAmB;AACjB,SACE;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACvBA,qBAAgC;AAChC,IAAAC,wBAAoB;AAIX,IAAAC,uBAAA;AADT,SAAS,MAAM,EAAC,GAAG,MAAK,GAAqD;AAC3E,SAAO,8CAAgB,qBAAf,EAAoB,aAAU,SAAS,GAAG,OAAO;AAC3D;AAEA,SAAS,aAAa,EAAC,GAAG,MAAK,GAAwD;AACrF,SAAO,8CAAgB,wBAAf,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,WAAW,EAAC,GAAG,MAAK,GAAsD;AACjF,SAAO,8CAAgB,sBAAf,EAAqB,aAAU,eAAe,GAAG,OAAO;AAClE;AAEA,SAAS,YAAY,EAAC,GAAG,MAAK,GAAuD;AACnF,SAAO,8CAAgB,uBAAf,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAEG;AACD,SACE,+CAAC,eACC;AAAA,kDAAC,gBAAa;AAAA,IACd;AAAA,MAAgB;AAAA,MAAf;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA,SAAS,WACP;AAAA,UACF,SAAS,UACP;AAAA,UACF,SAAS,SACP;AAAA,UACF,SAAS,YACP;AAAA,UACF;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,UACD,+CAAgB,sBAAf,EAAqB,WAAU,yKAC9B;AAAA,0DAAC,+BAAM,WAAU,UAAS;AAAA,YAC1B,8CAAC,UAAK,WAAU,WAAU,mBAAK;AAAA,aACjC;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,SAAS,YAAY,EAAC,WAAW,GAAG,MAAK,GAAgC;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAC,WAAW,GAAG,MAAK,GAAgC;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mCAAmC,SAAS;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA,GAAG;AACL,GAAsD;AACpD,SACE;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,kCAAkC,SAAS;AAAA,MACxD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACtHA,IAAAC,UAAuB;AAEvB,IAAAC,qBAAmB;AACnB,IAAAC,oCAAqC;AACrC,IAAAC,wBAA4D;;;ACGxD,IAAAC,uBAAA;AAFG,SAAS,SAAS,EAAC,WAAW,GAAG,MAAK,GAAkB;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AChBA,IAAAC,iBAA4B;AAYrB,IAAM,qBAAiB,8BAA0C,IAAI;;;ACZ5E,IAAAC,iBAAyB;;;ACAzB,IAAAC,iBAA4B;AAOrB,IAAM,+BACX,8BAAoD,IAAI;;;ADLnD,SAAS,uBAAuB;AACrC,aAAO,2BAAW,wBAAwB;AAC5C;;;AE0BI,IAAAC,uBAAA;AApBG,IAAM,cAAoC,CAAC;AAAA,EAChD;AAAA,EACA,UAAU;AAAA,EACV,aAAa;AAAA,EACb,OAAO;AAAA,EACP;AACF,MAAM;AACJ,QAAM,UAAU,qBAAqB;AACrC,QAAM,WAAW,SAAS,YAAY,gBAAgB;AACtD,QAAM,cAAc,SAAS,eAAe,mBAAmB;AAE/D,QAAM,uBAAuB,MAAM;AACjC,QAAI,UAAU;AACZ,aAAO,cAAc,mCAAmC;AAAA,IAC1D;AAEA,WAAO,cAAc,8BAA8B;AAAA,EACrD,GAAG;AAEH,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,cAAc,qBAAqB;AAAA,QACnC,CAAC,aACE,cACG,2DACA;AAAA,QACN;AAAA,UACE,mCAAmC,SAAS;AAAA,UAC5C,mCAAmC,SAAS;AAAA,QAC9C;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;AClDA,IAAAC,iBAAyB;AAGlB,SAAS,aAAa;AAC3B,QAAM,cAAU,2BAAW,cAAc;AAEzC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO;AACT;AAEO,SAAS,iBAAiB;AAC/B,aAAO,2BAAW,cAAc;AAClC;;;ANmFU,IAAAC,uBAAA;AAhFV,IAAM,8BAA8B;AACpC,IAAM,yBAAyB,KAAK,KAAK,KAAK;AAC9C,IAAM,uBAAuB;AAC7B,IAAM,4BAA4B;AAElC,IAAM,kBAAwB;AAAA,EAS5B,CACE;AAAA,IACE,cAAc;AAAA,IACd,MAAM;AAAA,IACN,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,WAAW,YAAY,EAAC,YAAY,IAAG,CAAC;AAC9C,UAAM,CAAC,YAAY,aAAa,IAAU,iBAAS,KAAK;AACxD,UAAM,CAAC,OAAO,QAAQ,IAAU,iBAAS,WAAW;AACpD,UAAM,OAAO,YAAY;AACzB,UAAM,UAAgB;AAAA,MACpB,CAAC,UAAmD;AAClD,cAAM,YAAY,OAAO,UAAU,aAAa,MAAM,IAAI,IAAI;AAE9D,YAAI,aAAa;AACf,sBAAY,SAAS;AAAA,QACvB,OAAO;AACL,mBAAS,SAAS;AAAA,QACpB;AAEA,iBAAS,SAAS,GAAG,SAAS,IAAI,SAAS,qBAAqB,sBAAsB;AAAA,MACxF;AAAA,MACA,CAAC,aAAa,MAAM,SAAS;AAAA,IAC/B;AAEA,UAAM,gBAAsB,oBAAY,MAAM;AAC5C,aAAO,WAAW,cAAc,WAAS,CAAC,KAAK,IAAI,QAAQ,WAAS,CAAC,KAAK;AAAA,IAC5E,GAAG,CAAC,UAAU,OAAO,CAAC;AAEtB,IAAM,kBAAU,MAAM;AACpB,YAAM,gBAAgB,CAAC,UAAyB;AAC9C,YAAI,MAAM,QAAQ,8BAA8B,MAAM,WAAW,MAAM,UAAU;AAC/E,gBAAM,eAAe;AACrB,wBAAc;AAAA,QAChB;AAAA,MACF;AAEA,aAAO,iBAAiB,WAAW,aAAa;AAChD,aAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,IAClE,GAAG,CAAC,aAAa,CAAC;AAElB,UAAM,QAAQ,OAAO,aAAa;AAElC,UAAM,eAAqB;AAAA,MACzB,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,CAAC,OAAO,MAAM,SAAS,UAAU,YAAY,eAAe,aAAa;AAAA,IAC3E;AAEA,WACE,8CAAC,eAAe,UAAf,EAAwB,OAAO,cAC9B,wDAAC,mBAAgB,eAAe,GAC9B;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,+CAA+C,SAAS;AAAA,QACtE;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH,GACF,GACF;AAAA,EAEJ;AACF;AACA,gBAAgB,cAAc;AAE9B,IAAM,UAAgB;AAAA,EAQpB,CACE;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,EAAC,UAAU,OAAO,YAAY,cAAa,IAAI,WAAW;AAEhE,QAAI,gBAAgB,QAAQ;AAC1B,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,UACC,GAAG;AAAA,UAEH;AAAA;AAAA,MACH;AAAA,IAEJ;AAEA,QAAI,UAAU;AACZ,aACE,8CAAC,SAAM,MAAM,YAAY,cAAc,eAAgB,GAAG,OACxD;AAAA,QAAC;AAAA;AAAA,UACC,gBAAa;AAAA,UACb,eAAY;AAAA,UACZ,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO,EAAC,mBAAmB,qBAAoB;AAAA,UAC/C;AAAA,UAEA;AAAA,2DAAC,eAAY,WAAU,WACrB;AAAA,4DAAC,cAAW,qBAAO;AAAA,cACnB,8CAAC,oBAAiB,0CAA4B;AAAA,eAChD;AAAA,YACA,8CAAC,SAAI,WAAU,+BAA+B,UAAS;AAAA;AAAA;AAAA,MACzD,GACF;AAAA,IAEJ;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,cAAY;AAAA,QACZ,oBAAkB,UAAU,cAAc,cAAc;AAAA,QACxD,gBAAc;AAAA,QACd,aAAW;AAAA,QAEX;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,YAAY,cAAc,YAAY,UAClC,yFACA;AAAA,cACN;AAAA;AAAA,UACF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,SAAS,SACL,mFACA;AAAA,gBACJ,YAAY,cAAc,YAAY,UAClC,kGACA;AAAA,gBACJ;AAAA,cACF;AAAA,cACC,GAAG;AAAA,cAEJ;AAAA,gBAAC;AAAA;AAAA,kBACC,gBAAa;AAAA,kBACb,WAAU;AAAA,kBAET;AAAA;AAAA,cACH;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,QAAQ,cAAc;AAEtB,IAAM,iBAAuB,mBAK3B,CAAC,EAAC,WAAW,SAAS,MAAM,GAAG,MAAK,GAAG,QAAQ;AAC/C,QAAM,EAAC,eAAe,MAAM,UAAU,WAAU,IAAI,WAAW;AAE/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA,EAAC,eAAe,CAAC,MAAM,YAAY,KAAI;AAAA,QACvC;AAAA,MACF;AAAA,MACA,SAAS,WAAS;AAChB,kBAAU,KAAK;AACf,sBAAc;AAAA,MAChB;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,iBAAS,WAAW,aAAa,QAChC,QAAQ,8CAAC,+CAAsB,IAE/B,8CAAC,gDAAuB;AAAA,QAE1B,8CAAC,UAAK,WAAU,WAAU,4BAAc;AAAA;AAAA;AAAA,EAC1C;AAEJ,CAAC;AACD,eAAe,cAAc;AAE7B,IAAM,cAAoB;AAAA,EACxB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QAAQ;AAC9B,UAAM,EAAC,cAAa,IAAI,WAAW;AAEnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,gBAAa;AAAA,QACb,cAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAM;AAAA,QACN,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,YAAY,cAAc;AAE1B,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,aAAa,cAAc;AAE3B,IAAM,eAAqB,mBAGzB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,gBAAa;AAAA,IACb,WAAW,GAAG,wDAAwD,SAAS;AAAA,IAC9E,GAAG;AAAA;AACN,CACD;AACD,aAAa,cAAc;AAE3B,IAAM,gBAAsB;AAAA,EAC1B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,cAAc,cAAc;AAE5B,IAAM,gBAAsB;AAAA,EAC1B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,cAAc,cAAc;AAE5B,IAAM,mBAAyB,mBAG7B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAACC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,gBAAa;AAAA,IACb,WAAW,GAAG,UAAU,SAAS;AAAA,IAChC,GAAG;AAAA;AACN,CACD;AACD,iBAAiB,cAAc;AAE/B,IAAM,iBAAuB;AAAA,EAC3B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,eAAe,cAAc;AAE7B,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,yCAAyC,SAAS;AAAA,MAC/D,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,aAAa,cAAc;AAE3B,IAAM,oBAA0B,mBAG9B,CAAC,EAAC,WAAW,UAAU,OAAO,GAAG,MAAK,GAAG,QAAQ;AACjD,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AACD,kBAAkB,cAAc;AAEhC,IAAM,qBAA2B,mBAG/B,CAAC,EAAC,WAAW,UAAU,OAAO,GAAG,MAAK,GAAG,QAAQ;AACjD,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AACD,mBAAmB,cAAc;AAEjC,IAAM,sBAA4B;AAAA,EAChC,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,kBAAkB,SAAS;AAAA,MACxC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,oBAAoB,cAAc;AAElC,IAAM,cAAoB;AAAA,EACxB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,gCAAgC,SAAS;AAAA,MACtD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,YAAY,cAAc;AAE1B,IAAM,kBAAwB;AAAA,EAC5B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,gBAAgB,cAAc;AAE9B,IAAM,gCAA4B;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,IAAM,oBAA0B;AAAA,EAS9B,CACE;AAAA,IACE,UAAU;AAAA,IACV,WAAW;AAAA,IACX,cAAc;AAAA,IACd,UAAU;AAAA,IACV,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,OAAO,UAAU,0BAAO;AAC9B,UAAM,EAAC,UAAU,MAAK,IAAI,WAAW;AAErC,UAAM,SACJ;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,gBAAa;AAAA,QACb,aAAW;AAAA,QACX,eAAa;AAAA,QACb,oBAAkB;AAAA,QAClB,WAAW,GAAG,0BAA0B,EAAC,SAAS,KAAI,CAAC,GAAG,SAAS;AAAA,QAClE,GAAG;AAAA;AAAA,IACN;AAGF,QAAI,CAAC,SAAS;AACZ,aACE,8CAAC,yBAAyB,UAAzB,EAAkC,OAAO,EAAC,UAAU,YAAW,GAC7D,kBACH;AAAA,IAEJ;AAEA,UAAM,eAAe,OAAO,YAAY,WAAW,EAAC,UAAU,QAAO,IAAI;AAEzE,WACE,8CAAC,yBAAyB,UAAzB,EAAkC,OAAO,EAAC,UAAU,YAAW,GAC9D,yDAAC,WACC;AAAA,oDAAC,kBAAe,SAAO,MAAE,kBAAO;AAAA,MAChC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAM;AAAA,UACN,QAAQ,UAAU,eAAe;AAAA,UACjC,WAAU;AAAA,UACV,SAAQ;AAAA,UACP,GAAG;AAAA;AAAA,MACN;AAAA,OACF,GACF;AAAA,EAEJ;AACF;AACA,kBAAkB,cAAc;AAEhC,IAAM,oBAA0B,mBAM9B,CAAC,EAAC,WAAW,UAAU,OAAO,cAAc,OAAO,GAAG,MAAK,GAAG,QAAQ;AACtE,QAAM,OAAO,UAAU,0BAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA,eACE;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AACD,kBAAkB,cAAc;AAEhC,IAAM,mBAAyB;AAAA,EAC7B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QAAQ;AAC9B,UAAM,EAAC,MAAM,UAAU,WAAU,IAAI,WAAW;AAChD,UAAM,SAAS,WAAW,aAAa;AAEvC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,gBAAa;AAAA,QACb,WAAW;AAAA,UACT,SACI,kCACA;AAAA,UACJ;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,iBAAiB,cAAc;AAE/B,IAAM,sBAA4B,mBAKhC,CAAC,EAAC,WAAW,WAAW,OAAO,GAAG,MAAK,GAAG,QAAQ;AAClD,QAAM,QAAc,gBAAQ,MAAM,GAAG,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAE/E,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW,GAAG,+CAA+C,SAAS;AAAA,MACrE,GAAG;AAAA,MAEH;AAAA,oBACC,8CAAC,YAAS,WAAU,qBAAoB,gBAAa,sBAAqB;AAAA,QAE5E;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,gBAAa;AAAA,YACb,OAAO,EAAC,oBAAoB,MAAK;AAAA;AAAA,QACnC;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,oBAAoB,cAAc;AAElC,IAAM,iBAAuB;AAAA,EAC3B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACtB;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,eAAe,cAAc;AAE7B,IAAM,qBAA2B;AAAA,EAC/B,CAAC,EAAC,GAAG,MAAK,GAAG,QAAQ,8CAAC,QAAG,KAAW,GAAG,OAAO;AAChD;AACA,mBAAmB,cAAc;AAEjC,IAAM,mCAA+B;AAAA,EACnC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,IAAM,uBAA6B;AAAA,EAOjC,CACE;AAAA,IACE,UAAU;AAAA,IACV;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,OAAO,UAAU,0BAAO;AAE9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,gBAAa;AAAA,QACb,aAAW;AAAA,QACX,eAAa;AAAA,QACb,WAAW,GAAG,6BAA6B,EAAC,SAAS,KAAI,CAAC,GAAG,SAAS;AAAA,QACrE,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,qBAAqB,cAAc;;;AOhrBnC,IAAM,aAAa;AAEZ,IAAM,kBAAkB,CAAC,cAC9B,SAAS,OACN,MAAM,IAAI,EACV,KAAK,SAAO,IAAI,WAAW,GAAG,SAAS,GAAG,CAAC,GAC1C,MAAM,GAAG,EAAE,UAAU,MAAM;;;ACNjC,IAAAC,iBAAkB;AAyBR,IAAAC,uBAAA;AApBV,IAAM,iBAAiB,eAAAC,QAAM;AAAA,EAC3B,CAAC,EAAC,UAAU,MAAM,QAAQ,OAAO,UAAU,OAAO,UAAS,MAAuB;AAChF,QAAI,CAAC,QAAS,QAAO;AAErB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,aAAa,YAAY;AAAA,UACzB;AAAA,QACF;AAAA,QAEA;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,OAAO,UAAU,KAAK;AAAA,gBACtB,QAAQ,UAAU,MAAM;AAAA,cAC1B;AAAA,cAEA;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,GAAE;AAAA,oBACF,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,WAAU;AAAA,oBACV,aAAY;AAAA;AAAA,gBACd;AAAA,gBACA;AAAA,kBAAC;AAAA;AAAA,oBACC,GAAE;AAAA,oBACF,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,WAAU;AAAA,oBACV,iBAAgB;AAAA,oBAChB,kBAAiB;AAAA,oBACjB,eAAc;AAAA,oBACd,aAAY;AAAA,oBAEZ;AAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,eAAc;AAAA,0BACd,KAAI;AAAA,0BACJ,MAAK;AAAA,0BACL,aAAY;AAAA,0BACZ,IAAG;AAAA,0BACH,MAAK;AAAA;AAAA,sBACP;AAAA,sBACA;AAAA,wBAAC;AAAA;AAAA,0BACC,eAAc;AAAA,0BACd,UAAS;AAAA,0BACT,KAAI;AAAA,0BACJ,UAAS;AAAA,0BACT,YAAW;AAAA,0BACX,aAAY;AAAA,0BACZ,QAAO;AAAA;AAAA,sBACT;AAAA,sBACA;AAAA,wBAAC;AAAA;AAAA,0BACC,eAAc;AAAA,0BACd,UAAS;AAAA,0BACT,KAAI;AAAA,0BACJ,UAAS;AAAA,0BACT,YAAW;AAAA,0BACX,aAAY;AAAA,0BACZ,QAAO;AAAA;AAAA,sBACT;AAAA;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA,UACF;AAAA,UACC,SAAS,8CAAC,SAAI,WAAU,0CAA0C,iBAAM;AAAA;AAAA;AAAA,IAC3E;AAAA,EAEJ;AACF;AAEA,eAAe,cAAc;;;AC5E7B,IAAAC,iBAAoC;AACpC,IAAAC,wBAA6B;AA6CrB,IAAAC,uBAAA;AA7BD,IAAM,0BAAsB;AAAA,EACjC,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAAgC;AAC9B,UAAM,cAAc,CAAC,UAAsC;AACzD,UAAI,CAAC,YAAY,QAAS,SAAQ,KAAK;AAAA,IACzC;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ,CAAC,YAAY,WAAW;AAAA,UACxB,CAAC,YAAY,CAAC,WAAW;AAAA,UACzB;AAAA,QACF;AAAA,QAEA;AAAA,yDAAC,SACC;AAAA,0DAAC,SAAI,WAAU,wDACZ,iBACH;AAAA,YACC,YACC,8CAAC,SAAI,WAAU,mGACZ,oBACH;AAAA,aAEJ;AAAA,UACC,CAAC,YACA,+CAAC,SAAI,WAAU,8CACZ;AAAA,wBACC;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,SAAS;AAAA,gBACT,MAAK;AAAA,gBACL,SAAQ;AAAA,gBAER,wDAAC,gCAAO,WAAU,2BAA0B;AAAA;AAAA,YAC9C;AAAA,YAED,UACC;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,SAAS;AAAA,gBACT,MAAK;AAAA,gBACL,SAAQ;AAAA,gBAER,wDAAC,gCAAO,WAAU,4BAA2B;AAAA;AAAA,YAC/C;AAAA,aAEJ;AAAA,UAED,SACC,8CAAC,SAAI,WAAU,qDAAqD,iBAAM;AAAA;AAAA;AAAA,IAE9E;AAAA,EAEJ;AACF;AAEA,oBAAoB,cAAc;;;ACxFlC,IAAAC,yBAA6B;AAC7B,IAAAC,wBAAyD;AA0C/C,IAAAC,uBAAA;AArBH,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AACF,GAAuB;AACrB,QAAM,EAAC,EAAC,QAAI,uCAAe;AAE3B,SACE,+CAAC,gBAAa,MAAY,cACxB;AAAA,kDAAC,uBAAoB,SAAO,MAC1B;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,cAAW;AAAA,QAEX,wDAAC,yCAAgB,WAAU,mEAAkE;AAAA;AAAA,IAC/F,GACF;AAAA,IACA,+CAAC,uBAAoB,WAAU,wBAAuB,OAAM,SAC1D;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,UAAU,SAAS,4CAA4C;AAAA,UAC7E,SAAS,MAAM,eAAe,KAAK;AAAA,UAEnC;AAAA,0DAAC,iCAAQ,WAAU,WAAU;AAAA,YAC5B,YAAY,YAAY,EAAE,UAAU,IAAI,EAAE,aAAa;AAAA;AAAA;AAAA,MAC1D;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,UAAU,UAAU,4CAA4C;AAAA,UAC9E,SAAS,MAAM,eAAe,MAAM;AAAA,UAEpC;AAAA,0DAAC,mCAAU,WAAU,WAAU;AAAA,YAC9B,YAAY,YAAY,EAAE,UAAU,IAAI,EAAE,cAAc;AAAA;AAAA;AAAA,MAC3D;AAAA,MACC,SACC,+CAAC,oBAAiB,SAAS,MAAM,eAAe,IAAI,GAClD;AAAA,sDAAC,+BAAM,WAAU,WAAU;AAAA,QAC1B,EAAE,eAAe;AAAA,SACpB;AAAA,OAEJ;AAAA,KACF;AAEJ;;;ACtEA,IAAAC,iBAAiE;AACjE,IAAAC,yBAA6B;AAC7B,IAAAC,wBAAgD;AAyCpC,IAAAC,wBAAA;AAjBL,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAsB;AACpB,QAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,QAAM,gBAAY,wBAAQ,MAAM;AAC9B,UAAM,uBAAuB;AAAA,MAC3B,MAAM,eAAe,GAAG,EAAE,QAAQ,CAAC;AAAA,MACnC,MAAM,+CAAC,iCAAQ,WAAU,wBAAuB;AAAA,MAChD;AAAA,MACA,WAAW;AAAA,IACb;AAEA,WAAO;AAAA,MACL,SAAS,EAAC,GAAG,qBAAoB;AAAA,MACjC,SAAS,EAAC,GAAG,qBAAoB;AAAA,MACjC,YAAY,EAAC,GAAG,sBAAsB,MAAM,EAAE,YAAY,EAAC;AAAA,MAC3D,OAAO;AAAA,QACL,MAAM,EAAE,OAAO;AAAA,QACf,MAAM,+CAAC,qCAAY,WAAU,WAAU;AAAA,QACvC,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,QACP,MAAM,eAAe,EAAE,mBAAmB;AAAA,QAC1C,MAAM,+CAAC,qCAAY,WAAU,WAAU;AAAA,QACvC;AAAA,QACA,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,MAAM,YAAY,EAAE,cAAc;AAAA,QAClC;AAAA,QACA;AAAA,QACA,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF,GAAG,CAAC,GAAG,UAAU,aAAa,aAAa,MAAM,OAAO,CAAC;AAEzD,QAAM,SAAS,UAAU,MAAM,KAAK,UAAU;AAE9C,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,UACE,uFACE;AAAA,UACF,mFACE;AAAA,QACJ;AAAA,QACA;AAAA,MACF;AAAA,MACA,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO,aAAa,WAAW,aAAa,WAAW;AAAA,MAChE,GAAG;AAAA,MAEH;AAAA,eAAO;AAAA,QACR,+CAAC,UAAM,iBAAO,MAAK;AAAA;AAAA;AAAA,EACrB;AAEJ;;;ACnGA,IAAAC,wBAAkD;AAaxC,IAAAC,wBAAA;AALH,SAAS,UAAU,EAAC,QAAQ,OAAO,KAAI,GAAmB;AAC/D,MAAI,WAAW,WAAW;AACxB,WACE,gDAAC,SAAI,WAAU,8EACb;AAAA,qDAAC,SAAI,WAAU,iCACb,yDAAC,mCAAU,WAAU,0BAAyB,GAChD;AAAA,MACA,gDAAC,SACC;AAAA,uDAAC,OAAE,WAAU,gCAAgC,iBAAM;AAAA,QACnD,+CAAC,OAAE,WAAU,0BAA0B,gBAAK;AAAA,SAC9C;AAAA,OACF;AAAA,EAEJ;AAEA,MAAI,WAAW,UAAU;AACvB,WACE,gDAAC,SAAI,WAAU,0EACb;AAAA,qDAAC,SAAI,WAAU,+BACb,yDAAC,+BAAM,WAAU,wBAAuB,GAC1C;AAAA,MACA,gDAAC,SACC;AAAA,uDAAC,OAAE,WAAU,8BAA8B,iBAAM;AAAA,QACjD,+CAAC,OAAE,WAAU,wBAAwB,gBAAK;AAAA,SAC5C;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,gDAAC,SAAI,WAAU,8EACb;AAAA,mDAAC,SAAI,WAAU,iCACb,yDAAC,2CAAkB,WAAU,0BAAyB,GACxD;AAAA,IACA,gDAAC,SACC;AAAA,qDAAC,OAAE,WAAU,gCAAgC,iBAAM;AAAA,MACnD,+CAAC,OAAE,WAAU,0BAA0B,gBAAK;AAAA,OAC9C;AAAA,KACF;AAEJ;;;ACdU,IAAAC,wBAAA;AAzBH,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AACf,GAAiB;AACf,MAAI,cAAc,EAAG,QAAO;AAE5B,QAAM,oBAAoB,KAAK,IAAI,GAAG,KAAK,IAAI,YAAY,UAAU,CAAC;AAEtE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,kCAAkC,SAAS;AAAA,MACzD,MAAK;AAAA,MACL,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,iBAAe;AAAA,MAEd,cAAI,MAAM,UAAU,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC,GAAG,cAAc;AACtD,cAAM,aAAa,YAAY;AAC/B,cAAM,WAAW,aACb,cAAc,oBACd,eAAe;AAEnB,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW;AAAA,cACT;AAAA,cACA,YAAY;AAAA,YACd;AAAA;AAAA,UAJK;AAAA,QAKP;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH;AAEJ;;;AC7CA,IAAAC,iBAA+B;AA6BvB,IAAAC,wBAAA;AAPR,IAAM,2BAAuB;AAAA,EAC3B,CAAC,EAAC,SAAS,OAAO,UAAU,UAAU,UAAS,GAAG,QAChD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,mDAAmD,SAAS;AAAA,MAEzE,kBAAQ,IAAI,YACX;AAAA,QAAC;AAAA;AAAA,UAEC,IAAI,OAAO;AAAA,UACX,OAAO,OAAO;AAAA,UACd,aAAa,OAAO;AAAA,UACpB,OAAO,OAAO;AAAA,UACd,QAAQ,OAAO;AAAA,UACf;AAAA,UACA;AAAA,UACA,eAAe;AAAA;AAAA,QARV,OAAO;AAAA,MASd,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,qBAAqB,cAAc;AAE5B,IAAM,mBAAe,qBAAK,oBAAoB;;;AC/CrD,IAAAC,UAAuB;AAsCX,IAAAC,wBAAA;AApBL,IAAM,cAAoB;AAAA,EAC/B,CACE,EAAC,SAAS,QAAQ,CAAC,GAAG,UAAU,WAAW,OAAO,WAAW,OAAO,GAAG,MAAK,GAC5E,QACG;AACH,UAAM,qBAAqB,CAAC,aAAqB,YAAqB;AACpE,UAAI,CAAC,SAAU;AAEf,UAAI,SAAS;AACX,iBAAS,CAAC,GAAG,OAAO,WAAW,CAAC;AAChC;AAAA,MACF;AAEA,eAAS,MAAM,OAAO,mBAAiB,kBAAkB,WAAW,CAAC;AAAA,IACvE;AAEA,WACE,gDAAC,SAAI,KAAU,WAAW,GAAG,oBAAoB,SAAS,GAAI,GAAG,OAC9D;AAAA,cAAQ,IAAI,YACX,gDAAC,SAAuB,WAAU,2CAChC;AAAA,uDAAC,SAAI,WAAU,iBACb;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,eACC,YAAY,OAAO,aAAa;AAAA,YACnC;AAAA,YAEC;AAAA,qBAAO;AAAA,cACP,OAAO,eACN;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,qBACC,YAAY,OAAO,aAAa;AAAA,kBACnC;AAAA,kBACD;AAAA;AAAA,oBACG,OAAO;AAAA,oBAAY;AAAA;AAAA;AAAA,cACvB;AAAA;AAAA;AAAA,QAEJ,GACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,MAAM,SAAS,OAAO,KAAK;AAAA,YAClC,UAAU,aAAW,mBAAmB,OAAO,OAAO,OAAO;AAAA,YAC7D,UAAU,YAAY,OAAO;AAAA,YAC7B,MAAK;AAAA;AAAA,QACP;AAAA,WA1BQ,OAAO,KA2BjB,CACD;AAAA,MACA,SAAS,+CAAC,gBAAa,UAAqB,iBAAM;AAAA,OACrD;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;ACxE1B,IAAAC,iBAAyE;AACzE,IAAAC,iBAA+B;AAC/B,IAAAC,oCAAqC;AAuBjC,IAAAC,wBAAA;AApBJ,IAAM,OAAqB;AAEpB,IAAM,uBAAmB,uCAAI,4BAA4B;AAAA,EAC9D,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SACE;AAAA,MACF,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC;AAKD,IAAM,eAAW;AAAA,EACf,CAAC,EAAC,WAAW,SAAS,GAAG,MAAK,GAAG,QAC/B;AAAA,IAAe;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iBAAiB,EAAC,QAAO,CAAC,GAAG,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,SAAS,cAA4B,oBAAK;AAEnC,IAAM,0BAAsB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAKA,IAAM,kBAAc,2BAGlB,CAAC,EAAC,WAAW,SAAS,GAAG,MAAK,GAAG,QACjC;AAAA,EAAe;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAW,GAAG,oBAAoB,EAAC,QAAO,CAAC,GAAG,SAAS;AAAA,IACtD,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAA4B,uBAAQ;AAEhD,IAAM,kBAAc,2BAGlB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB,+CAAe,wBAAd,EAAsB,KAAU,WAAsB,UAAU,IAAK,GAAG,OAAO,CACjF;AACD,YAAY,cAA4B,uBAAQ;;;AC/B5C,IAAAC,wBAAA;AA3BG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAAuB;AACrB,QAAM,YAAY,SAAS;AAE3B,QAAM,4BACJ,YAAY,aACR;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEN,SACE,gDAAC,QAAK,OAAO,WAAW,eAAe,aAAa,WAAU,UAC5D;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,yCAAyC;AAAA,QAEtD;AAAA;AAAA,IACH;AAAA,IAEA,+CAAC,SAAI,WAAW,2BAA4B,UAAS;AAAA,KACvD;AAEJ;;;AC1BI,IAAAC,wBAAA;AAdG,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AACxB,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,UACJ,gDAAC,SAAI,WAAU,oEACZ;AAAA,gBAAY,+CAAC,SAAI,WAAU,QAAQ,oBAAS;AAAA,IAC5C,SAAS,+CAAC,QAAG,WAAU,8BAA8B,iBAAM;AAAA,IAC3D,QAAQ,+CAAC,OAAE,WAAU,gCAAgC,gBAAK;AAAA,IAC1D,YAAY,+CAAC,SAAI,WAAU,QAAQ,UAAS;AAAA,KAC/C;AAGF,MAAI,aAAa;AACf,WACE,+CAAC,QACC,yDAAC,QAAG,SAAS,KAAK,WACf,mBACH,GACF;AAAA,EAEJ;AAEA,SAAO,+CAAC,SAAI,WAAuB,mBAAQ;AAC7C;;;AC7CA,IAAAC,wBAAyB;;;ACAzB;;;ADqCM,IAAAC,wBAAA;AAvBC,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,GAAkB;AAChB,QAAM,kBAAkB,UAAU,UAAa,QAAQ;AACvD,QAAM,oBAAoB,mBAAmB;AAE7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,iBAAO;AAAA,QACP,iBAAO,aAAa,SAAS,EAAE;AAAA,QAC/B,WAAW,iBAAO,qBAAqB;AAAA,QACvC;AAAA,MACF;AAAA,MACA;AAAA,MACA,MAAM,UAAU,WAAW;AAAA,MAC3B,UAAU,UAAU,IAAI;AAAA,MAExB;AAAA,uDAAC,SAAI,WAAW,iBAAO,qBAAqB;AAAA,QAE5C,gDAAC,SAAI,WAAW,iBAAO,mBACrB;AAAA,yDAAC,QAAG,WAAW,iBAAO,iBAAkB,iBAAM;AAAA,UAC9C,+CAAC,OAAE,WAAW,iBAAO,gBAAiB,uBAAY;AAAA,WACpD;AAAA,QAEC,qBACC,gDAAC,SAAI,WAAW,iBAAO,mBACpB;AAAA,6BACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,iBAAO;AAAA,gBACP,iBAAO,oBAAoB,SAAS,EAAE;AAAA,cACxC;AAAA,cAEC;AAAA;AAAA,UACH;AAAA,UAED,WACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,iBAAO;AAAA,cAClB,SAAS,WAAS;AAChB,sBAAM,gBAAgB;AACtB,0BAAU;AAAA,cACZ;AAAA,cACA,cAAW;AAAA,cACX,MAAK;AAAA,cAEL,yDAAC,oCAAW,WAAU,WAAU;AAAA;AAAA,UAClC;AAAA,WAEJ;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AEvEO,IAAM,gBAAgB;AAAA,EAC3B,OAAO;AAAA,EACP,SAAS;AACX;;;ACLA,IAAAC,iBAA6B;;;ACA7B,IAAAC,iBAAqD;AACrD,oBAAiC;AAQ1B,SAAS,eAAe,EAAC,GAAE,GAAwB;AACxD,QAAM,iBAAa,uBAAe,EAAE;AACpC,QAAM,sBAAkB;AAAA,IACtB,CAAC,aAA4B;AAAA,MAC3B,IAAI,WAAW;AAAA,MACf,aAAa;AAAA,MACb,aAAa;AAAA,MACb,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,WAAW,SAAS;AACtB,0BAAM,QAAQ,WAAW,OAAO;AAChC,iBAAW,UAAU;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,cAAc,CAAC,WAAyB,YAA2B;AACvE,eAAW,UAAU,KAAK,KAAK,IAAI;AACnC,wBAAM,OAAO,MAAM,WAAW,gBAAgB,OAAO,CAAC;AAAA,EACxD;AAEA,QAAM,cAAc,CAAC,WAAyB,YAA2B;AACvE,wBAAM,OAAO,MAAM,WAAW,gBAAgB,OAAO,CAAC;AAAA,EACxD;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC5CA,IAAAC,UAAuB;AACvB,2BAAsC;;;ACDtC,IAAAC,oCAAkB;AAEX,IAAM,qBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,KAAK;AAAA,MACP;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,KAAK;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;;;ADEM,IAAAC,wBAAA;AAzBN,IAAM,qBAA2B,sBAAmD;AAAA,EAClF,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AACT,CAAC;AAED,IAAM,cAAoB,mBAIxB,CAAC,EAAC,WAAW,SAAS,MAAM,OAAO,UAAU,GAAG,MAAK,GAAG,QAAQ;AAChE,QAAM,eAAe,YAAY;AAEjC,SACE;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,eACI,6HACA;AAAA,QACJ;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,yDAAC,mBAAmB,UAAnB,EAA4B,OAAO,EAAC,SAAS,MAAM,MAAK,GACtD,UACH;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,YAAY,cAAmC,0BAAK;AAEpD,IAAM,kBAAwB,mBAI5B,CAAC,EAAC,WAAW,UAAU,SAAS,MAAM,OAAO,GAAG,MAAK,GAAG,QAAQ;AAChE,QAAM,UAAgB,mBAAW,kBAAkB;AACnD,QAAM,kBAAkB,QAAQ,WAAW;AAC3C,QAAM,eAAe,oBAAoB;AAEzC,SACE;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,eAAe;AAAA,UACb,SAAS;AAAA,UACT,MAAM,QAAQ,QAAQ;AAAA,UACtB,OAAO,QAAQ,SAAS;AAAA,QAC1B,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,yBACC,gDAAC,UAAK,WAAU,eACd;AAAA,uDAAC,UAAK,WAAU,mDACb,UACH;AAAA,QACA,+CAAC,UAAK,WAAU,2BAA2B,UAAS;AAAA,SACtD,IAEA;AAAA;AAAA,EAEJ;AAEJ,CAAC;AAED,gBAAgB,cAAmC,0BAAK;;;AE5ExD,IAAAC,iBAAwE;AAkJpE,IAAAC,wBAAA;AA9IJ,IAAMC,iBAAgB,CAA4B,UAAyB;AACzE,MAAI,OAAO;AACT,WAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,EAC9C;AAEA,SAAO,CAAC;AACV;AAkCA,SAAS,gBAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,WAAW;AACb,GACA,KACA;AACA,QAAM,oBAAoB,CAAC,aAAgC;AACzD,QAAI,CAAC,SAAU;AAEf,QAAI,UAAU;AACZ,YAAM,gBAAgB,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AACpE,YAAM,cAAc,cAAc,IAAI,UAAQ;AAC5C,cAAMC,UAAS,QAAQ,KAAK,SAAO,OAAO,IAAI,KAAK,MAAM,IAAI;AAC7D,eAAOA,UAASA,QAAO,QAAS;AAAA,MAClC,CAAC;AACD,MAAC;AAAA,QACC;AAAA,QACA,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAEA,UAAM,cAAc,MAAM,QAAQ,QAAQ,IAAI,SAAS,CAAC,IAAI;AAC5D,UAAM,SAAS,QAAQ,KAAK,SAAO,OAAO,IAAI,KAAK,MAAM,WAAW;AACpE,UAAM,aAAa,SAAS,OAAO,QAAS;AAC5C,IAAC;AAAA,MACC;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,kBACJ,CAAC,WAA8B,CAAC,UAAyC;AACvE,QAAI,YAAY,eAAe,SAAS,OAAO,KAAK,KAAK,OAAO,UAAU;AACxE,YAAM,eAAe;AACrB;AAAA,IACF;AAEA,UAAM,SAAS,UAAU,OAAO,MAAM;AAEtC,QAAI,QAAQ,eAAe;AACzB,YAAM,eAAe;AACrB;AAAA,IACF;AAEA,UAAM,aAAaD,eAAc,KAAK;AAEtC,QAAI,UAAU;AACZ,YAAM,kBAAkB,WAAW,SAAS,OAAO,KAAK;AACxD,YAAM,cAAc,kBAChB,WAAW,OAAO,mBAAiB,kBAAkB,OAAO,KAAK,IACjE,CAAC,GAAG,YAAY,OAAO,KAAK;AAEhC,MAAC;AAAA,QACC;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,MAAC;AAAA,QACC,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEF,QAAM,cAAcA,eAAc,KAAK,EAAE,SAAS;AAClD,gCAAU,MAAM;AACd,0BAAsB,WAAW;AAAA,EACnC,GAAG,CAAC,aAAa,mBAAmB,CAAC;AAErC,QAAM,eAAeA,eAAc,KAAK,EAAE,IAAI,UAAQ,OAAO,IAAI,CAAC;AAElE,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA,MAAM,SAAS,YAAY,QAAQ,QAAQ;AAAA,IAC3C;AAAA,IACA,eAAe;AAAA,IACf,GAAI,WACA,EAAC,MAAM,YAAqB,OAAO,aAAY,IAC/C,EAAC,MAAM,UAAmB,OAAO,aAAa,CAAC,KAAK,GAAE;AAAA,EAC5D;AAEA,SACE,gDAAC,SAAI,KAAU,WACZ;AAAA,aACC,+CAAC,SAAI,WAAU,QACb,yDAAC,SAAI,WAAU,sDACZ,iBACH,GACF;AAAA,IAEF,+CAAC,eAAY,WAAW,gBAAiB,GAAG,kBACzC,kBAAQ,IAAI,CAAC,QAAQ,UAAU;AAC9B,YAAM,aAAaA,eAAc,KAAK,EAAE,SAAS,OAAO,KAAK;AAC7D,YAAM,aACJ,YAAY,eAAe,SAAS,OAAO,KAAK,KAAK,OAAO;AAC9D,YAAM,gBAAgBA,eAAc,KAAK,EAAE,UAAU;AACrD,YAAM,iBAAiB,YAAa,iBAAiB;AAErD,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,OAAO,OAAO,KAAK;AAAA,UAC1B,UAAU,cAAc,kBAAkB;AAAA,UAC1C,SAAS,gBAAgB,MAAM;AAAA,UAE9B,iBAAO;AAAA;AAAA,QALH,GAAG,OAAO,KAAK,IAAI,KAAK;AAAA,MAM/B;AAAA,IAEJ,CAAC,GACH;AAAA,KACF;AAEJ;AAWO,IAAM,cAAU,2BAAW,eAAe;;;AC3LjD,IAAAE,UAAuB;AACvB,IAAAC,kBAAgC;AAChC,IAAAC,oCAAqC;AACrC,IAAAC,yBAA6B;;;ACI3B,IAAAC,wBAAA;AADK,IAAM,UAAU,CAAC,EAAC,SAAQ,MAC/B,+CAAC,SAAI,WAAU,6FACZ,UACH;;;ACDA,IAAAC,wBAAA;AADK,IAAM,aAAa,CAAC,EAAC,IAAI,SAAQ,MACtC,+CAAC,OAAE,IAAQ,WAAU,uDAAsD,MAAK,SAC7E,UACH;;;ACFA,IAAAC,wBAAA;AADK,IAAM,iBAAiB,CAAC,EAAC,IAAI,SAAQ,MAC1C,+CAAC,OAAE,IAAQ,WAAU,0CAClB,UACH;;;ACVF;;;AJ4IU,IAAAC,wBAAA;AAlIV,IAAM,oBAAgB;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,EAAE,KAAK,GAAG;AAAA,MACZ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAmBO,IAAM,YAAkB;AAAA,EAC7B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,UAAM,WAAW,QAAQ,KAAK;AAC9B,UAAM,SAAe,cAAM;AAC3B,UAAM,UAAU,MAAM,MAAM;AAC5B,UAAM,eAAe;AAAA,MACnB,cAAc,EAAC,SAAS,OAAO,UAAU,UAAU,QAAQ,QAAQ,EAAC,CAAC;AAAA,MACrE,WAAW;AAAA,MACX;AAAA,IACF;AACA,UAAM,uBAAuB,YAAY,aAAa,MAAM,eAAe;AAC3E,UAAM,gBAAgB,iBAAiB,GAAG,OAAO,UAAU;AAC3D,UAAM,UAAU,QAAQ,GAAG,OAAO,WAAW;AAC7C,UAAM,kBAAkB,WAAW,iBAAiB;AAEpD,QAAI,YAAY,YAAY;AAC1B,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,iCAAiC,kBAAO,MAAM,gBAAgB;AAAA,UAE5E;AAAA,4DAAC,SAAI,WAAU,YACb;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAI;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,aAAa;AAAA,kBACb,WAAW;AAAA,kBACX,gBAAc,YAAY;AAAA,kBAC1B,oBAAkB;AAAA,kBACjB,GAAG;AAAA;AAAA,cACN;AAAA,cACC,SACC;AAAA,gBAAgB;AAAA,gBAAf;AAAA,kBACC,SAAS;AAAA,kBACT,WAAW;AAAA,oBACT;AAAA,oBACA,YAAY;AAAA,sBACV;AAAA,sBACA;AAAA,oBACF;AAAA,kBACF;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA,cAED,WAAW,+CAAC,WAAS,mBAAQ;AAAA,eAChC;AAAA,YACC,kBAAkB,CAAC,YAClB,+CAAC,kBAAe,IAAI,eAAgB,0BAAe;AAAA,YAEpD,YAAY,+CAAC,cAAW,IAAI,SAAU,iBAAM;AAAA;AAAA;AAAA,MAC/C;AAAA,IAEJ;AAEA,WACE,gDAAC,SAAI,WAAW,GAAG,wBAAwB,kBAAO,MAAM,gBAAgB,GACrE;AAAA,eACC,gDAAC,SAAI,WAAU,gCACb;AAAA;AAAA,UAAgB;AAAA,UAAf;AAAA,YACC,SAAS;AAAA,YACT,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACC,YACC,gDAAC,UAAK,WAAU,uBACd;AAAA,yDAAC,UAAK,WAAU,oBAAoB,gBAAK;AAAA,UACzC,+CAAC,UAAK,WAAU,6BACb,2BAAiB,EAAE,UAAU,GAChC;AAAA,WACF;AAAA,QAED;AAAA,SACH;AAAA,MAEF,gDAAC,SAAI,WAAU,YACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa;AAAA,YACb,WAAW;AAAA,YACX,gBAAc,YAAY;AAAA,YAC1B,oBAAkB;AAAA,YACjB,GAAG;AAAA;AAAA,QACN;AAAA,QACC,WAAW,+CAAC,WAAS,mBAAQ;AAAA,SAChC;AAAA,MACC,kBAAkB,CAAC,YAClB,+CAAC,kBAAe,IAAI,eAAgB,0BAAe;AAAA,MAEpD,YAAY,+CAAC,cAAW,IAAI,SAAU,iBAAM;AAAA,OAC/C;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;AK5NxB,IAAAC,iBAA6D;;;ACA7D,IAAAC,kBAAA;;;ADmBM,IAAAC,wBAAA;AARC,IAAM,eAAW;AAAA,EACtB,CACE,EAAC,WAAW,mBAAmB,OAAO,UAAU,MAAM,SAAS,GAAG,cAAa,GAC/E,QACG;AACH,UAAM,cAAU,sBAAM;AAEtB,WACE,gDAAC,SAAI,WAAW,GAAGC,gBAAO,WAAW,SAAS,GAC5C;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,IAAI;AAAA,UACJ;AAAA,UACA;AAAA,UACA,WAAW,GAAGA,gBAAO,UAAU,mBAAmB;AAAA,YAChD,CAACA,gBAAO,aAAa,GAAG;AAAA,YACxB,CAACA,gBAAO,gBAAgB,GAAG;AAAA,UAC7B,CAAC;AAAA,UACA,GAAG;AAAA;AAAA,MACN;AAAA,MACC,SACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,WAAW,GAAGA,gBAAO,OAAO;AAAA,YAC1B,CAACA,gBAAO,UAAU,GAAG;AAAA,YACrB,CAACA,gBAAO,aAAa,GAAG;AAAA,UAC1B,CAAC;AAAA,UAEA;AAAA;AAAA,MACH;AAAA,OAEJ;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;AE/ChB,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,kCAAA;AACA,EAAAA,kCAAA;AAFU,SAAAA;AAAA,GAAA;;;ACAZ,IAAAC,mBAAA;;;ACoBI,IAAAC,wBAAA;AANJ,SAAS,KAAK;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,GAAuE;AACrE,SACE,gDAAC,UAAK,WAAWC,iBAAO,MAAM,OAAO,EAAC,QAAQ,MAAK,GAAG,eAAY,QAChE;AAAA,mDAAC,UAAK,WAAWA,iBAAO,KAAK,OAAO,EAAC,iBAAiB,MAAK,GAAG;AAAA,IAC9D,+CAAC,UAAK,WAAWA,iBAAO,KAAK,OAAO,EAAC,iBAAiB,MAAK,GAAG;AAAA,IAC9D,+CAAC,UAAK,WAAWA,iBAAO,KAAK,OAAO,EAAC,iBAAiB,MAAK,GAAG;AAAA,KAChE;AAEJ;AAEO,SAAS,gBAAgB;AAAA,EAC9B,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,OAAO,+CAAC,QAAK,OAAc,QAAgB,OAAc;AAE/D,MAAI,OAAO;AACT,WACE,+CAAC,SAAI,WAAW,GAAGA,iBAAO,QAAQ,SAAS,GACxC,6CACC,kFACG;AAAA;AAAA,MACD,+CAAC,SAAK,iBAAM;AAAA,OACd,IAEA,kFACE;AAAA,qDAAC,SAAK,iBAAM;AAAA,MACX;AAAA,OACH,GAEJ;AAAA,EAEJ;AAEA,SAAO,+CAAC,SAAI,WAAuB,gBAAK;AAC1C;;;ACzDA,IAAAC,wBAAgB;AAqBR,IAAAC,wBAAA;AAZD,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO;AAAA,EACT;AAEA,SACE,+CAAC,SAAI,WAAW,GAAG,0BAA0B,SAAS,GACnD,gBAAM,IAAI,CAAC,MAAM,UAChB;AAAA,IAAC;AAAA;AAAA,MAEC,WAAU;AAAA,MAEV;AAAA,uDAAC,UAAK,WAAU,8DACb,eAAK,MACR;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,aAAa,KAAK,IAAI;AAAA,YACrC,WAAU;AAAA,YACV,cAAY,UAAU,KAAK,IAAI;AAAA,YAE/B,yDAAC,2BAAE,WAAU,0BAAyB,aAAa,GAAG;AAAA;AAAA,QACxD;AAAA;AAAA;AAAA,IAbK,GAAG,KAAK,IAAI,IAAI,KAAK;AAAA,EAc5B,CACD,GACH;AAEJ;;;ACjCI,IAAAC,wBAAA;AAFG,SAAS,WAAW,EAAC,WAAW,UAAU,GAAG,MAAK,GAAoB;AAC3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACnBA,IAAAC,UAAuB;AACvB,IAAAC,wBAAuB;;;ACDvB,IAAAC,UAAuB;AACvB,IAAAC,mBAAiC;AACjC,6BAAiE;AAQxD,IAAAC,wBAAA;AAJT,IAAM,yBAAyB;AAC/B,IAAM,6BAA6B;AAEnC,SAAS,OAAO,EAAC,GAAG,MAAK,GAAsD;AAC7E,SAAO,+CAAiB,uBAAhB,EAAqB,aAAU,UAAU,GAAG,OAAO;AAC7D;AAEA,SAAS,cAAc,EAAC,GAAG,MAAK,GAAyD;AACvF,SAAO,+CAAiB,0BAAhB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,aAAa,EAAC,GAAG,MAAK,GAAwD;AACrF,SAAO,+CAAiB,yBAAhB,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,YAAY,EAAC,GAAG,MAAK,GAAuD;AACnF,SAAO,+CAAiB,wBAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,IAAM,gBAAsB,mBAG1B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,cAAc,cAA8B,yBAAQ;AACpD,IAAM,uBACJ;AAEF,IAAM,gBAAsB;AAAA,EAU1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,sBAAsB;AAAA,IACtB,aAAa;AAAA,IACb,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,iBAAiB,aAAa,mBAAmB,KAAK;AAC5D,UAAM,UAAgB,eAAuB,IAAI;AACjD,UAAM,CAAC,aAAa,cAAc,IAAU,iBAAS,CAAC;AACtD,UAAM,iBAAiB,KAAK;AAAA,MAC1B;AAAA,MACA,IAAI,eAAe,yBAAyB;AAAA,IAC9C;AAEA,UAAM,aAAmB;AAAA,MACvB,CAAC,QAAwB,SAAwB;AAC/C,uBAAe,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC;AAAA,MACpC;AAAA,MACA,CAAC;AAAA,IACH;AAEA,UAAM,aAAmB;AAAA,MACvB,CAAC,QAAwB,SAAwB;AAC/C,YAAI,KAAK,IAAI,wBAAwB;AACnC,yBAAe,CAAC;AAChB,oBAAU;AACV;AAAA,QACF;AAEA,uBAAe,CAAC;AAAA,MAClB;AAAA,MACA,CAAC,OAAO;AAAA,IACV;AAEA,WACE,gDAAC,gBAAa,WAAW,gBACtB;AAAA,mBACC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAC,SAAS,eAAc;AAAA,UAC/B,SAAS,sBAAsB,UAAU;AAAA;AAAA,MAC3C,IAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,oBAAoB;AAAA,UAClC,OAAO,EAAC,SAAS,eAAc;AAAA,UAC/B,SAAS,sBAAsB,UAAU;AAAA;AAAA,MAC3C;AAAA,MAEF;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC,SAAO;AAAA,UACP;AAAA,UACA,sBAAsB,WAAS;AAC7B,gBAAI,CAAC,qBAAqB;AACxB,oBAAM,eAAe;AAAA,YACvB;AAAA,UACF;AAAA,UACA,mBAAmB,WAAS;AAC1B,gBAAI,CAAC,qBAAqB;AACxB,oBAAM,eAAe;AAAA,YACvB;AAAA,UACF;AAAA,UACC,GAAG;AAAA,UAEJ,yDAAC,SAAI,WAAU,uDACb;AAAA,YAAC,uBAAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAQ,EAAC,KAAK,EAAC;AAAA,cACf,QAAO;AAAA,cACP;AAAA,cACA,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,UAAU,EAAC,GAAG,GAAG,GAAG,YAAW;AAAA,cAE/B;AAAA,gBAAC;AAAA;AAAA,kBACC,KAAK;AAAA,kBACL,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,kBACF;AAAA,kBAEC;AAAA,kCACC;AAAA,sBAAC;AAAA;AAAA,wBACC,sBAAkB;AAAA,wBAClB,WAAU;AAAA,wBAEV,yDAAC,UAAK,WAAU,8CAA6C;AAAA;AAAA,oBAC/D;AAAA,oBAEF,+CAAC,SAAI,WAAU,kCAAkC,UAAS;AAAA;AAAA;AAAA,cAC5D;AAAA;AAAA,UACF,GACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,EAEJ;AACF;AACA,cAAc,cAA8B,yBAAQ;AAEpD,IAAM,eAAe,CAAC,EAAC,WAAW,GAAG,MAAK,MACxC;AAAA,EAAC;AAAA;AAAA,IACC,WAAW,GAAG,6CAA6C,SAAS;AAAA,IACnE,GAAG;AAAA;AACN;AAEF,aAAa,cAAc;AAE3B,IAAM,eAAe,CAAC,EAAC,WAAW,GAAG,MAAK,MACxC,+CAAC,SAAI,WAAW,GAAG,2BAA2B,SAAS,GAAI,GAAG,OAAO;AAEvE,aAAa,cAAc;AAE3B,IAAM,cAAoB,mBAGxB,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,IAC5D,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAA8B,uBAAM;AAEhD,IAAM,oBAA0B,mBAG9B,CAAC,EAAC,WAAW,GAAG,MAAK,GAAG,QACxB;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,aAAU;AAAA,IACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,kBAAkB,cAA8B,6BAAY;;;ACpM5D,IAAAC,UAAuB;;;ACAvB,IAAM,qBAAqB;AAC3B,IAAM,iBAAiB;AAEvB,SAAS,UAAU,MAAY;AAC7B,SAAO,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AACrE;AAEA,SAAS,YAAY,OAA+C;AAClE,SAAO,iBAAiB,QAAQ,CAAC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC/D;AAEA,SAAS,mBAAmB,OAA8C;AACxE,MAAI,UAAU,MAAM,UAAU,QAAQ,UAAU,QAAW;AACzD,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,iBAAiB,OAAO,QAAQ,IAAI,KAAK,KAAK;AAE3D,SAAO,YAAY,IAAI,IAAI,OAAO;AACpC;AAEA,SAAS,UAAU,MAAY,SAAgB,SAAgB;AAC7D,QAAM,iBAAiB,UAAU,IAAI;AACrC,QAAM,oBAAoB,YAAY,OAAO,IAAI,UAAU,OAAO,IAAI;AACtE,QAAM,oBAAoB,YAAY,OAAO,IAAI,UAAU,OAAO,IAAI;AAEtE,MAAI,qBAAqB,iBAAiB,mBAAmB;AAC3D,WAAO;AAAA,EACT;AAEA,MAAI,qBAAqB,iBAAiB,mBAAmB;AAC3D,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,QAKzB;AACD,QAAM,EAAC,OAAO,cAAc,SAAS,QAAO,IAAI;AAChD,QAAM,eAAe,CAAC,OAAO,YAAY,EAAE,KAAK,WAAW,KAAK,oBAAI,KAAK;AAEzE,SAAO,UAAU,cAAc,SAAS,OAAO;AACjD;AAEA,SAAS,eAAe,SAAS,SAAS;AACxC,QAAM,YAAY,IAAI,KAAK,eAAe,QAAQ,EAAC,OAAO,OAAM,CAAC;AAEjE,SAAO,MAAM;AAAA,IAAK,EAAC,QAAQ,eAAc;AAAA,IAAG,CAAC,GAAG,eAC9C,UAAU,OAAO,IAAI,KAAK,MAAM,YAAY,CAAC,CAAC;AAAA,EAChD;AACF;AAEA,SAAS,eAAe,MAAc,YAAoB;AACxD,SAAO,IAAI,KAAK,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ;AACnD;AAEA,SAAS,aAAa,SAAgB,SAAgB;AACpD,QAAM,gBAAgB,YAAY,OAAO,IAAI,UAAU,OAAO,IAAI;AAClE,QAAM,gBAAgB,YAAY,OAAO,IAAI,UAAU,OAAO,IAAI;AAClE,QAAM,QAAQ,oBAAI,KAAK;AACvB,QAAM,YAAY,eAAe,YAAY,KAAK;AAClD,QAAM,UAAU,eAAe,YAAY,KAAK,MAAM,YAAY,IAAI;AACtE,QAAM,WAAW,KAAK,IAAI,WAAW,OAAO;AAC5C,QAAM,SAAS,KAAK,IAAI,WAAW,OAAO;AAE1C,SAAO,MAAM,KAAK,EAAC,QAAQ,SAAS,WAAW,EAAC,GAAG,CAAC,GAAG,UAAU,WAAW,KAAK;AACnF;AAEA,SAAS,mBAAmB,MAAc,YAAoB,KAAa;AACzE,QAAM,gBAAgB,KAAK,IAAI,KAAK,eAAe,MAAM,UAAU,CAAC;AAEpE,SAAO,IAAI,KAAK,MAAM,YAAY,aAAa;AACjD;AAEA,SAAS,gBAAgB,MAAY;AACnC,QAAM,MAAM,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,oBAAoB,GAAG;AACnE,QAAM,QAAQ,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,oBAAoB,GAAG;AAC1E,QAAM,OAAO,OAAO,KAAK,YAAY,CAAC;AAEtC,SAAO,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI;AAChC;AAEA,SAAS,qBAAqB,MAAY;AACxC,QAAM,MAAM,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,oBAAoB,GAAG;AACnE,QAAM,QAAQ,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,oBAAoB,GAAG;AAC1E,QAAM,OAAO,OAAO,KAAK,YAAY,CAAC;AAEtC,SAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG;AAChC;AAEA,SAAS,qBAAqB,OAAe,WAAmB,cAAsB;AACpF,QAAM,qBAAqB,YAAY;AACvC,QAAM,mBAAmB,QAAQ;AACjC,QAAM,WAAW,KAAK,IAAI,gBAAgB;AAC1C,QAAM,qBAAqB,KAAK,IAAI,WAAW,KAAK,CAAC;AACrD,QAAM,kBAAkB,IAAI;AAC5B,QAAM,iBAAiB,IAAI,sBAAsB;AACjD,QAAM,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,mBAAmB,EAAE,CAAC;AAClE,QAAM,QAAQ,QAAQ,iBAAiB;AACvC,QAAM,SAAS,OAAO,iBAAiB;AACvC,QAAM,aAAa,mBAAmB;AACtC,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,WAAW,GAAG;AAClD,QAAM,QAAQ,IAAI,kBAAkB;AACpC,QAAM,UAAU,OAAO,iBAAiB;AACxC,QAAM,WAAW,KAAK,iBAAiB;AACvC,QAAM,aAAa,WAAW;AAC9B,QAAM,YAAY,aACd,KAAK,MAAM,MAAM,kBAAkB,GAAG,IACtC,KAAK,MAAM,MAAM,iBAAiB,EAAE;AAExC,SAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,QAAQ,GAAG,YAAY;AAAA,MACvB,YAAY,GAAG,YAAY;AAAA,MAC3B,UAAU,GAAG,QAAQ;AAAA,MACrB,OAAO,OAAO,SAAS,KAAK,SAAS,KAAK,SAAS;AAAA,MACnD;AAAA,MACA,WAAW,sCAAsC,UAAU,OAAO,UAAU,eAAe,QAAQ,cAAc,KAAK,KAAK,MAAM;AAAA,MACjI,iBAAiB;AAAA,MACjB,QAAQ,QAAQ,IAAI;AAAA,MACpB,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;ADxHA,IAAM,4BAA4B;AAClC,IAAM,8BAA8B;AACpC,IAAM,4BAA4B,4BAA4B;AAC9D,IAAM,mCAAmC;AACzC,IAAM,kCAAkC;AAYxC,SAAS,iBAAiB,MAAc,SAAgB,SAAgB;AACtE,QAAM,WAAW,WAAW,QAAQ,YAAY,MAAM,OAAO,QAAQ,SAAS,IAAI;AAClF,QAAM,WAAW,WAAW,QAAQ,YAAY,MAAM,OAAO,QAAQ,SAAS,IAAI;AAElF,SAAO,MAAM,KAAK,EAAC,QAAQ,WAAW,WAAW,EAAC,GAAG,CAAC,GAAG,UAAU,WAAW,KAAK;AACrF;AAEA,SAAS,eAAe,MAAc,OAAe,SAAgB,SAAgB;AACnF,QAAM,SACJ,WAAW,QAAQ,YAAY,MAAM,QAAQ,QAAQ,SAAS,MAAM,QAChE,QAAQ,QAAQ,IAChB;AACN,QAAM,SACJ,WAAW,QAAQ,YAAY,MAAM,QAAQ,QAAQ,SAAS,MAAM,QAChE,QAAQ,QAAQ,IAChB,eAAe,MAAM,KAAK;AAEhC,SAAO,MAAM,KAAK,EAAC,QAAQ,SAAS,SAAS,EAAC,GAAG,CAAC,GAAG,UAAU,SAAS,KAAK;AAC/E;AAEA,SAAS,wBACP,MACA,OACA,KACA,SACA,SACA;AACA,QAAM,gBAAgB,iBAAiB,MAAM,SAAS,OAAO;AAC7D,QAAM,eAAe,KAAK;AAAA,IACxB,KAAK,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK;AAAA,IACzC,cAAc,cAAc,SAAS,CAAC,KAAK;AAAA,EAC7C;AACA,QAAM,cAAc,eAAe,MAAM,cAAc,SAAS,OAAO;AACvE,QAAM,aAAa,KAAK;AAAA,IACtB,KAAK,IAAI,KAAK,YAAY,CAAC,KAAK,GAAG;AAAA,IACnC,YAAY,YAAY,SAAS,CAAC,KAAK;AAAA,EACzC;AAEA,SAAO,mBAAmB,MAAM,cAAc,UAAU;AAC1D;AAEA,SAAS,mBAAmB,OAAe;AACzC,SAAO,QAAQ;AACjB;AAEA,SAAS,iBACP,MACA,KACA,UACA;AACA,MAAI,CAAC,KAAM;AAEX,MAAI,aAAa,UAAU;AACzB,SAAK,SAAS,EAAC,KAAK,SAAQ,CAAC;AAC7B;AAAA,EACF;AAEA,OAAK,YAAY;AACnB;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAC3B,QAAM,QAAc,gBAAQ,MAAM,aAAa,SAAS,OAAO,GAAG,CAAC,SAAS,OAAO,CAAC;AACpF,QAAM,CAAC,WAAW,YAAY,IAAU;AAAA,IAAS,MAC/C,mBAAmB,EAAC,OAAO,cAAc,SAAS,QAAO,CAAC;AAAA,EAC5D;AACA,QAAM,YAAY,UAAU,YAAY;AACxC,QAAM,aAAa,UAAU,SAAS;AACtC,QAAM,CAAC,gBAAgB,iBAAiB,IAAU,iBAAS,CAAC;AAC5D,QAAM,CAAC,cAAc,eAAe,IAAU,iBAAS,CAAC;AACxD,QAAM,CAAC,eAAe,gBAAgB,IAAU,iBAAS,CAAC;AAC1D,QAAM,eAAqB,eAAuB,IAAI;AACtD,QAAM,aAAmB,eAAuB,IAAI;AACpD,QAAM,cAAoB,eAAuB,IAAI;AACrD,QAAM,oBAA0B,eAAkD,CAAC,CAAC;AACpF,QAAM,qBAA2B,eAAkD,CAAC,CAAC;AACrF,QAAM,aAAmB;AAAA,IACvB,OAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,qBAA2B;AAAA,IAC/B,CAAC,QAA0B,kBAA0B;AACnD,UAAI,WAAW,SAAS;AACtB,0BAAkB,aAAa;AAC/B;AAAA,MACF;AAEA,UAAI,WAAW,OAAO;AACpB,wBAAgB,aAAa;AAC7B;AAAA,MACF;AAEA,uBAAiB,aAAa;AAAA,IAChC;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,qBAA2B,oBAAY,CAAC,WAA6B;AACzE,UAAM,YAAY,kBAAkB,QAAQ,MAAM;AAClD,QAAI,cAAc,OAAW;AAE7B,WAAO,aAAa,SAAS;AAC7B,WAAO,kBAAkB,QAAQ,MAAM;AAAA,EACzC,GAAG,CAAC,CAAC;AAEL,QAAM,sBAA4B,oBAAY,CAAC,WAA6B;AAC1E,UAAM,UAAU,mBAAmB,QAAQ,MAAM;AACjD,QAAI,YAAY,OAAW;AAE3B,WAAO,qBAAqB,OAAO;AACnC,WAAO,mBAAmB,QAAQ,MAAM;AAAA,EAC1C,GAAG,CAAC,CAAC;AAEL,EAAM;AAAA,IACJ,MAAM,MAAM;AACV,MAAC,CAAC,SAAS,OAAO,MAAM,EAAY,QAAQ,YAAU;AACpD,2BAAmB,MAAM;AACzB,4BAAoB,MAAM;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IACA,CAAC,qBAAqB,kBAAkB;AAAA,EAC1C;AAEA,EAAM,kBAAU,MAAM;AACpB,QAAI,OAAQ;AAEZ,iBAAa,mBAAmB,EAAC,OAAO,cAAc,SAAS,QAAO,CAAC,CAAC;AAAA,EAC1E,GAAG,CAAC,cAAc,QAAQ,SAAS,SAAS,KAAK,CAAC;AAElD,QAAM,SAAe;AAAA,IACnB,MAAM,iBAAiB,WAAW,SAAS,OAAO;AAAA,IAClD,CAAC,WAAW,SAAS,OAAO;AAAA,EAC9B;AACA,QAAM,OAAa;AAAA,IACjB,MAAM,eAAe,WAAW,YAAY,SAAS,OAAO;AAAA,IAC5D,CAAC,YAAY,WAAW,SAAS,OAAO;AAAA,EAC1C;AAEA,QAAM,aAAa,OAAO,UAAU,WAAS,UAAU,UAAU;AACjE,QAAM,WAAW,KAAK,UAAU,SAAO,QAAQ,UAAU,QAAQ,CAAC;AAClE,QAAM,YAAY,MAAM,UAAU,UAAQ,SAAS,SAAS;AAE5D,QAAM,sBAA4B;AAAA,IAChC,CAAC,UAAgB,WAA2B,WAAW;AACrD,YAAM,aAAa,iBAAiB,SAAS,YAAY,GAAG,SAAS,OAAO;AAC5E,YAAM,iBAAiB,WAAW,UAAU,WAAS,UAAU,SAAS,SAAS,CAAC;AAClF,YAAM,WAAW;AAAA,QACf,SAAS,YAAY;AAAA,QACrB,SAAS,SAAS;AAAA,QAClB;AAAA,QACA;AAAA,MACF;AACA,YAAM,eAAe,SAAS,UAAU,SAAO,QAAQ,SAAS,QAAQ,CAAC;AACzE,YAAM,eAAe,mBAAmB,KAAK,IAAI,gBAAgB,CAAC,CAAC;AACnE,YAAM,aAAa,mBAAmB,KAAK,IAAI,cAAc,CAAC,CAAC;AAC/D,YAAM,gBAAgB,MAAM,UAAU,UAAQ,SAAS,SAAS,YAAY,CAAC;AAC7E,YAAM,cAAc,mBAAmB,KAAK,IAAI,eAAe,CAAC,CAAC;AAEjE,wBAAkB,YAAY;AAC9B,sBAAgB,UAAU;AAC1B,uBAAiB,WAAW;AAE5B,uBAAiB,aAAa,SAAS,cAAc,QAAQ;AAC7D,uBAAiB,WAAW,SAAS,YAAY,QAAQ;AACzD,uBAAiB,YAAY,SAAS,aAAa,QAAQ;AAAA,IAC7D;AAAA,IACA,CAAC,SAAS,SAAS,KAAK;AAAA,EAC1B;AAEA,EAAM,wBAAgB,MAAM;AAC1B,QAAI,CAAC,OAAQ;AAEb,UAAM,WAAW,mBAAmB,EAAC,OAAO,cAAc,SAAS,QAAO,CAAC;AAC3E,iBAAa,QAAQ;AAErB,UAAM,UAAU,OAAO,sBAAsB,MAAM;AACjD,0BAAoB,QAAQ;AAAA,IAC9B,CAAC;AAED,WAAO,MAAM;AACX,aAAO,qBAAqB,OAAO;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,cAAc,QAAQ,SAAS,SAAS,qBAAqB,KAAK,CAAC;AAEvE,QAAM,kBAAwB;AAAA,IAC5B,CACE,QACA,aACA,WAA2B,aACxB;AACH,YAAM,cAAc,UAAU,SAAS;AACvC,YAAM,cAAc,YAAY,YAAY;AAC5C,YAAM,eAAe,YAAY,SAAS;AAC1C,YAAM,aAAa,YAAY,QAAQ;AAEvC,UAAI,WAAW;AAEf,UAAI,WAAW,SAAS;AACtB,cAAM,YAAY,OAAO,WAAW;AAEpC,YAAI,cAAc,QAAW;AAC3B;AAAA,QACF;AAEA,mBAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,WAAW,OAAO;AACpB,cAAM,UAAU,KAAK,WAAW;AAEhC,YAAI,YAAY,QAAW;AACzB;AAAA,QACF;AAEA,mBAAW,mBAAmB,aAAa,cAAc,OAAO;AAAA,MAClE;AAEA,UAAI,WAAW,QAAQ;AACrB,cAAM,WAAW,MAAM,WAAW;AAElC,YAAI,aAAa,QAAW;AAC1B;AAAA,QACF;AAEA,mBAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,mBAAa,QAAQ;AACrB,0BAAoB,UAAU,QAAQ;AAAA,IACxC;AAAA,IACA,CAAC,MAAM,WAAW,SAAS,SAAS,QAAQ,qBAAqB,KAAK;AAAA,EACxE;AAEA,QAAM,qBAA2B;AAAA,IAC/B,CAAC,WAA6B;AAC5B,YAAM,OAAO,WAAW,MAAM,EAAE;AAChC,UAAI,CAAC,KAAM;AAEX,YAAM,WACJ,WAAW,UACP,OAAO,SAAS,IAChB,WAAW,QACT,KAAK,SAAS,IACd,MAAM,SAAS;AACvB,YAAM,YAAY,KAAK;AAAA,QACrB;AAAA,QACA,KAAK,IAAI,UAAU,KAAK,MAAM,KAAK,YAAY,yBAAyB,CAAC;AAAA,MAC3E;AAEA,sBAAgB,QAAQ,WAAW,MAAM;AAAA,IAC3C;AAAA,IACA,CAAC,YAAY,KAAK,QAAQ,OAAO,QAAQ,iBAAiB,MAAM,MAAM;AAAA,EACxE;AAEA,QAAM,uBAA6B;AAAA,IACjC,CAAC,WAA6B;AAC5B,yBAAmB,MAAM;AACzB,wBAAkB,QAAQ,MAAM,IAAI,OAAO,WAAW,MAAM;AAC1D,2BAAmB,MAAM;AAAA,MAC3B,GAAG,+BAA+B;AAAA,IACpC;AAAA,IACA,CAAC,oBAAoB,kBAAkB;AAAA,EACzC;AAEA,QAAM,qBAA2B;AAAA,IAC/B,CAAC,WAA6B;AAC5B,YAAM,OAAO,WAAW,MAAM,EAAE;AAChC,UAAI,CAAC,KAAM;AAEX,YAAM,gBAAgB,KAAK;AAC3B,0BAAoB,MAAM;AAE1B,yBAAmB,QAAQ,MAAM,IAAI,OAAO,sBAAsB,MAAM;AACtE,2BAAmB,QAAQ,aAAa;AACxC,eAAO,mBAAmB,QAAQ,MAAM;AAAA,MAC1C,CAAC;AAED,2BAAqB,MAAM;AAAA,IAC7B;AAAA,IACA,CAAC,qBAAqB,YAAY,sBAAsB,kBAAkB;AAAA,EAC5E;AAEA,QAAM,qBAA2B;AAAA,IAC/B,CAAC,QAA0B,gBAAwB;AACjD,sBAAgB,QAAQ,aAAa,QAAQ;AAAA,IAC/C;AAAA,IACA,CAAC,eAAe;AAAA,EAClB;AAEA,QAAM,sBAA4B;AAAA,IAChC,CAAC,QAA0B,cAAsB;AAC/C,YAAM,QAA4B,CAAC,SAAS,OAAO,MAAM;AACzD,YAAM,eAAe,MAAM,QAAQ,MAAM;AACzC,YAAM,eAAe,MAAM,eAAe,SAAS;AAEnD,UAAI,CAAC,aAAc;AAEnB,iBAAW,YAAY,EAAE,SAAS,MAAM;AAAA,IAC1C;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,sBAA4B;AAAA,IAChC,CAAC,QAA0B,UAA+C;AACxE,YAAM,eACJ,WAAW,UAAU,aAAa,WAAW,QAAQ,WAAW;AAClE,YAAM,WACJ,WAAW,UACP,OAAO,SAAS,IAChB,WAAW,QACT,KAAK,SAAS,IACd,MAAM,SAAS;AAEvB,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,wBAAgB,QAAQ,KAAK,IAAI,eAAe,GAAG,QAAQ,GAAG,QAAQ;AACtE;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,WAAW;AAC3B,cAAM,eAAe;AACrB,wBAAgB,QAAQ,KAAK,IAAI,eAAe,GAAG,CAAC,GAAG,QAAQ;AAC/D;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,QAAQ;AACxB,cAAM,eAAe;AACrB,wBAAgB,QAAQ,GAAG,QAAQ;AACnC;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,OAAO;AACvB,cAAM,eAAe;AACrB,wBAAgB,QAAQ,UAAU,QAAQ;AAC1C;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,4BAAoB,QAAQ,EAAE;AAC9B;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,cAAc;AAC9B,cAAM,eAAe;AACrB,4BAAoB,QAAQ,CAAC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AEhYM,IAAAC,wBAAA;AAhBN,IAAM,eAAe,4BAA4B;AAEjD,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA+B;AAC7B,SACE,+CAAC,SAAI,WAAU,yBACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,KAAK;AAAA,MACL,MAAK;AAAA,MACL,UAAU;AAAA,MACV,cAAY;AAAA,MACZ,yBAAuB,GAAG,EAAE,WAAW,WAAW;AAAA,MAClD,UAAU,MAAM,SAAS,MAAM;AAAA,MAC/B,WAAW,WAAS,UAAU,QAAQ,KAAK;AAAA,MAC3C,WAAU;AAAA,MACV,OAAO;AAAA,QACL,QAAQ,GAAG,yBAAyB;AAAA,QACpC,yBAAyB;AAAA,MAC3B;AAAA,MAEA;AAAA,uDAAC,SAAI,OAAO,EAAC,QAAQ,GAAG,YAAY,KAAI,GAAG;AAAA,QAC1C,MAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,gBAAM,EAAC,MAAK,IAAI;AAAA,YACd;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA,iBACE;AAAA,YAAC;AAAA;AAAA,cACC,IAAI,GAAG,EAAE,WAAW,KAAK;AAAA,cAEzB,MAAK;AAAA,cACL,MAAK;AAAA,cACL,iBAAe,UAAU;AAAA,cACzB,UAAU;AAAA,cACV,SAAS,MAAM,eAAe,QAAQ,KAAK;AAAA,cAC3C,WAAU;AAAA,cACV;AAAA,cAEC;AAAA;AAAA,YATI,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK;AAAA,UAUjC;AAAA,QAEJ,CAAC;AAAA,QACD,+CAAC,SAAI,OAAO,EAAC,QAAQ,GAAG,YAAY,KAAI,GAAG;AAAA;AAAA;AAAA,EAC7C,GACF;AAEJ;;;ACxBQ,IAAAC,wBAAA;AAxBR,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiF;AAC/E,SACE,gDAAC,SAAI,WAAU,2BACb;AAAA,oDAAC,SAAI,WAAU,2CACb;AAAA,qDAAC,SAAI,WAAU,kHAAiH;AAAA,MAChI,+CAAC,SAAI,WAAU,qHAAoH;AAAA,MACnI;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,UACX,WAAU;AAAA;AAAA,MACZ;AAAA,MACA,gDAAC,SAAI,WAAU,oDACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI,GAAG,MAAM;AAAA,YACb,QAAO;AAAA,YACP,OAAO,GAAG,KAAK;AAAA,YACf,OAAO;AAAA,YACP,aAAa;AAAA,YACb,WAAW;AAAA,YACX,SAAS;AAAA,YACT,UAAU;AAAA,YACV,WAAW;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI,GAAG,MAAM;AAAA,YACb,QAAO;AAAA,YACP,OAAO,GAAG,KAAK;AAAA,YACf,OAAO,KAAK,IAAI,SAAO,OAAO,GAAG,CAAC;AAAA,YAClC,aAAa;AAAA,YACb,WAAW;AAAA,YACX,SAAS;AAAA,YACT,UAAU;AAAA,YACV,WAAW;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI,GAAG,MAAM;AAAA,YACb,QAAO;AAAA,YACP,OAAO,GAAG,KAAK;AAAA,YACf,OAAO,MAAM,IAAI,UAAQ,OAAO,IAAI,CAAC;AAAA,YACrC,aAAa;AAAA,YACb,WAAW;AAAA,YACX,SAAS;AAAA,YACT,UAAU;AAAA,YACV,WAAW;AAAA,YACX;AAAA;AAAA,QACF;AAAA,SACF;AAAA,OACF;AAAA,IACA,+CAAC,UAAO,MAAK,UAAS,SAAS,QAAQ,WAAU,yBAC9C,qBACH;AAAA,KACF;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,OACJ;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAGF,MAAI,UAAU;AACZ,WACE,+CAAC,UAAO,MAAY,cAClB;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,MAAM,aAAa,KAAK;AAAA,QACjC,WAAU;AAAA,QAEV;AAAA,yDAAC,eAAY,WAAU,WAAW,iBAAM;AAAA,UACxC,+CAAC,qBAAkB,WAAU,WAAW,iBAAM;AAAA,UAC7C;AAAA;AAAA;AAAA,IACH,GACF;AAAA,EAEJ;AAEA,SACE,+CAAC,UAAO,MAAY,cAClB;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,iBAAiB;AAAA,MAEjB;AAAA,uDAAC,eAAY,WAAU,WAAW,iBAAM;AAAA,QACxC,+CAAC,qBAAkB,WAAU,WAAW,iBAAM;AAAA,QAC7C;AAAA;AAAA;AAAA,EACH,GACF;AAEJ;;;AC5LO,IAAM,SAAS;AAAA,EACpB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AACX;;;ACZA,IAAAC,UAAuB;AACvB,IAAAC,wBAAsB;AACtB,IAAAC,yBAA6B;;;ACD7B,IAAAC,wBAA0B;AAyBtB,IAAAC,wBAAA;AAbJ,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2B;AACzB,QAAM,UAAU,WAAW;AAE3B,MAAI,CAAC,QAAS,QAAO;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA;AAAA,QACP;AAAA,QACA,+CAAC,UAAM,mBAAQ;AAAA;AAAA;AAAA,EACjB;AAEJ;;;AD+CU,IAAAC,wBAAA;AAlDV,IAAM,eAAqB;AAAA,EAIzB,CACE;AAAA,IACE,KAAK;AAAA,IACL,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,EAAC,EAAC,QAAI,uCAAe;AAC3B,UAAM,WAAW,QAAQ,SAAS;AAClC,UAAM,WAAW,YAAY;AAC7B,UAAM,gBAAgB,WAClB,OAAO,aAAa,WAClB,WACA,EAAE,UAAU,IACd;AACJ,UAAM,mBAAmB,aAAa;AACtC,UAAM,eAAe,QAAQ,aAAa,KAAK,QAAQ,OAAO;AAC9D,UAAM,oBACJ,oBAAoB,eAClB,gDAAC,UAAK,WAAU,4DACd;AAAA,qDAAC,UAAK,WAAU,oBAAoB,4BAAiB;AAAA,MACpD,iBACC,gDAAC,UAAK,WAAU,yFAAwF;AAAA;AAAA,QACpG;AAAA,QAAc;AAAA,SAClB;AAAA,MAED,WACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,MAAK;AAAA,UACL,MAAM;AAAA,UACN,WAAW,OAAO,WAAW,SAAS;AAAA,UACtC,WAAU;AAAA;AAAA,MACZ;AAAA,OAEJ,IAEA;AAEJ,UAAM,gBAAgB,iBACjB,qBAAqB,cACtB,WACE,oBACC,SAAS;AAChB,UAAM,kBAAkB,YAAY;AACpC,UAAM,kBAAkB,QAAQ,KAAK;AACrC,UAAM,eAAe,OAAO,UAAU,WAAW,QAAQ;AACzD,UAAM,YAAY,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACtD,UAAM,4BACJ,WAAW,oBACT,gDAAC,UAAK,WAAU,2BACb;AAAA;AAAA,MACA,WACC,+CAAC,iCAAQ,eAAY,QAAO,WAAU,uCAAsC;AAAA,OAEhF,IACE;AACN,UAAM,gBAAgB;AAAA,MACpB;AAAA,MACA,kBACI,6MACA;AAAA,MACJ,kBAAmB,WAAW,iBAAiB,aAAc;AAAA,MAC7D,kBACI,kBACE,4EACA,2CACF,kBACE,8CACA;AAAA,MACN,WACI,kCACA,UACE,oBACA,kBACE,mBACA;AAAA,MACR;AAAA,IACF;AACA,UAAM,gBACJ,kFACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,kBAAmB,WAAW,aAAa,aAAc;AAAA,YACzD;AAAA,UACF;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,WAAW;AAAA,kBACT;AAAA,kBACA,eAAe,KAAK;AAAA,kBACpB,kBACI,WACE,0CACA,mDACF,WACE,uGACA;AAAA,kBACN,kBACI,gCACA,kBACE,iDACA;AAAA,gBACR;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA,YACC,WACC,WACE,WACF;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,WAAW;AAAA,kBACT;AAAA,kBACA,kBACI,6DACA;AAAA,kBACJ,kBACI,gCACA;AAAA,gBACN;AAAA,gBAEC;AAAA;AAAA,YACH,IAEA,+CAAC,UAAK,IAAI,cAAc,WAAU,WAC/B,yBAAe,OAClB;AAAA;AAAA;AAAA,MAEJ;AAAA,MACC,6BACC;AAAA,QAAC;AAAA;AAAA,UACC,eAAY;AAAA,UACZ,WAAW;AAAA,YACT;AAAA,YACA,kBAAkB,YAAY;AAAA,UAChC;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,OAEJ;AAGF,WACE,gDAAC,SAAI,WAAU,UACZ;AAAA,kBACC,+CAAC,OAAE,WAAU,4HACV,oBACH;AAAA,MAED,OAAO,WACN;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,MAAK;AAAA,UACL,mBAAiB,YAAY,UAAU,GAAG,OAAO,IAAI,OAAO,KAAK;AAAA,UACjE,oBAAkB;AAAA,UAClB,gBAAc;AAAA,UACd,aAAW;AAAA,UACX,UAAU;AAAA,UACV,SAAS,YAAY,SAAY;AAAA,UACjC,WACE,YACI,SACC;AAAA,UAEP,WAAW;AAAA,UACV,GAAI;AAAA,UAWJ;AAAA;AAAA,MACH,IAEA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,mBAAiB,YAAY,UAAU,GAAG,OAAO,IAAI,OAAO,KAAK;AAAA,UACjE,oBAAkB;AAAA,UAClB,gBAAc;AAAA,UACd,aAAW;AAAA,UACX,iBAAe;AAAA,UACf,SAAS,YAAY,SAAY;AAAA,UACjC,WACE,YACI,SACC;AAAA,UAEP,WAAW;AAAA,UACV,GAAI;AAAA,UAKJ;AAAA;AAAA,MACH;AAAA,MAED,gBAAgB,CAAC,oBAChB,+CAAC,qBAAkB,IAAI,SAAS,SAAS,cAAc;AAAA,OAE3D;AAAA,EAEJ;AACF;AAEA,aAAa,cAAc;;;APtGrB,IAAAC,wBAAA;AA5IN,IAAM,mBAAmB,IAAI,KAAK,MAAM,GAAG,CAAC;AAE5C,IAAM,aAAmB;AAAA,EACvB,CACE;AAAA,IACE,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB,GACA,QACG;AACH,UAAM,EAAC,SAAS,SAAQ,IAAI,gBAAgB,OAAO,QAAQ;AAC3D,UAAM,CAAC,QAAQ,SAAS,IAAU,iBAAS,KAAK;AAChD,UAAM,YAAkB,cAAM;AAC9B,UAAM,WAAiB,cAAM;AAC7B,UAAM,UAAgB,cAAM;AAC5B,UAAM,UAAgB,cAAM;AAC5B,UAAM,eAAqB,cAAM;AACjC,UAAM,UAAgB,cAAM;AAC5B,UAAM,cAAoB,eAA0B,IAAI;AACxD,UAAM,cAAc,eAAe,KAAK,WAAW;AACnD,UAAM,cAAoB,gBAAQ,MAAM,eAAe,MAAM,GAAG,CAAC,MAAM,CAAC;AACxE,UAAM,kBAAwB,gBAAQ,MAAM,WAAW,kBAAkB,CAAC,OAAO,CAAC;AAClF,UAAM,kBAAwB,gBAAQ,MAAM,WAAW,oBAAI,KAAK,GAAG,CAAC,OAAO,CAAC;AAC5E,UAAM,kBAAwB,gBAAQ,MAAM,mBAAmB,KAAK,GAAG,CAAC,KAAK,CAAC;AAC9E,UAAM,yBAA+B;AAAA,MACnC,MAAM,mBAAmB,YAAY;AAAA,MACrC,CAAC,YAAY;AAAA,IACf;AACA,UAAM,gBAAsB;AAAA,MAC1B,MACE,kBACI,UAAU,iBAAiB,iBAAiB,eAAe,IAC3D;AAAA,MACN,CAAC,iBAAiB,iBAAiB,eAAe;AAAA,IACpD;AACA,UAAM,WAAW,QAAQ,aAAa;AACtC,UAAM,YAAY,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACtD,UAAM,eAAe,SAAS;AAC9B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,mBAAmB;AAAA,MACrB;AAAA,MACA,OAAO;AAAA,MACP,cAAc;AAAA,MACd,SAAS;AAAA,MACT,SAAS;AAAA,IACX,CAAC;AAED,UAAM,mBAAyB;AAAA,MAC7B,CAAC,aAAsB;AACrB,YAAI,aAAa,SAAU;AAE3B,kBAAU,QAAQ;AAElB,YAAI,CAAC,UAAU;AACb,sBAAY,SAAS,MAAM;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,CAAC,SAAS;AAAA,IACZ;AAEA,UAAM,aAAmB,oBAAY,MAAM;AACzC,UAAI,UAAW;AAEf,eAAS,UAAU,WAAW,iBAAiB,eAAe,CAAC;AAC/D,uBAAiB,KAAK;AAAA,IACxB,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,qBAA2B,oBAAY,MAAM;AACjD,UAAI,UAAW;AAEf,gBAAU,IAAI;AAAA,IAChB,GAAG,CAAC,SAAS,CAAC;AAEd,UAAM,uBAA6B;AAAA,MACjC,CAAC,UAAkD;AACjD,YAAI,UAAW;AAEf,YACE,MAAM,QAAQ,eACd,MAAM,QAAQ,aACd,MAAM,QAAQ,WACd,MAAM,QAAQ,KACd;AACA,gBAAM,eAAe;AACrB,oBAAU,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACA,CAAC,SAAS;AAAA,IACZ;AAEA,IAAM,kBAAU,MAAM;AACpB,UAAI,WAAW;AACb,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF,GAAG,CAAC,SAAS,CAAC;AAEd,WACE,gDAAC,SAAI,WAAW,GAAG,kDAAkD,SAAS,GAC3E;AAAA,cACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA,OAAO,gBAAgB,qBAAqB,aAAa,IAAI;AAAA;AAAA,MAC/D;AAAA,MAEF;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,WAAW,UAAU;AAAA,UAC9B,cAAc,CAAC,WAAW,eAAe;AAAA,UACzC,SAAS,QAAQ,UAAU;AAAA,UAC3B,aAAa,QAAQ,UAAU;AAAA,UAC/B,WAAW,WAAW,cAAc;AAAA,UACpC,WAAW,gBAAgB,YAAY,aAAa,IAAI;AAAA,UACxD;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA,gBAAgB,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AAAA,UACpD,iBAAc;AAAA,UACd,iBAAe;AAAA,UACf,SAAS;AAAA,UACT,WAAW;AAAA,UACX;AAAA,UACA,mBACE,+CAAC,kCAAS,WAAU,0BAAyB,aAAa,GAAG;AAAA;AAAA,MAEjE;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ;AAAA,UACR,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,OAAO,eAAe;AAAA,UACtB;AAAA,UACA,aAAa,OAAO,IAAI,WAAS,YAAY,KAAK,KAAK,EAAE;AAAA,UACzD;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA;AAAA,MAClB;AAAA,OACF;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;;;ASxLrB,IAAAC,wBAAA;AAvCJ,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,gBAAgB;AAClB,GAAmC;AACjC,QAAM,EAAC,SAAS,SAAQ,IAAI,gBAAgB,OAAO,MAAM;AACzD,QAAM,eAAe,YAAY,2BAA2B;AAE5D,QAAM,mBAAmB,CAAC,aAAsB;AAC9C,QAAI,CAAC,UAAU;AACb,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,wBAAwB,CAAC,UAAiB;AAC9C,QAAI,CAAC,qBAAqB;AACxB,YAAM,eAAe;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,sBAAsB,CAAC,UAAyB;AACpD,QAAI,CAAC,eAAe;AAClB,YAAM,eAAe;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,UACJ;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,gBACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YAEC;AAAA;AAAA,QACH,IACE;AAAA,QACH,cACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YAEC;AAAA;AAAA,QACH,IACE;AAAA,QACH;AAAA;AAAA;AAAA,EACH;AAGF,MAAI,cAAc;AAChB,WACE,+CAAC,UAAO,MAAY,cAAc,kBAChC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,QACA,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,WAAW,GAAG,WAAW,eAAe;AAAA,QAEvC;AAAA,kBAAQ,+CAAC,eAAY,WAAU,WAAW,iBAAM,IAAiB;AAAA,UACjE,cACC,+CAAC,qBAAkB,WAAU,WAAW,uBAAY,IAClD;AAAA,UACH;AAAA;AAAA;AAAA,IACH,GACF;AAAA,EAEJ;AAEA,SACE,+CAAC,UAAO,MAAY,cAAc,kBAChC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,sBAAsB;AAAA,MACtB,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB,WAAW,GAAG,wCAAwC,WAAW,eAAe;AAAA,MAChF,YAAY;AAAA,MAEX;AAAA,gBAAQ,+CAAC,eAAY,WAAU,WAAW,iBAAM,IAAiB;AAAA,QACjE,cACC,+CAAC,qBAAkB,WAAU,WAAW,uBAAY,IAClD;AAAA,QACH;AAAA;AAAA;AAAA,EACH,GACF;AAEJ;;;ACtIA,IAAAC,UAAuB;AA4Jb,IAAAC,wBAAA;AAtIV,IAAM,gBAAgB,CACpB,UACI,SAAS,OAAO,OAAO,KAAK,IAAI;AAEtC,IAAM,cAAoB;AAAA,EACxB,CACE;AAAA,IACE,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,qBAAqB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,cAAoB,cAAM;AAChC,UAAM,WAAiB,eAAgC,IAAI;AAC3D,UAAM,UAAU,MAAM;AACtB,UAAM,UAAU,GAAG,OAAO;AAC1B,UAAM,UAAU,GAAG,OAAO;AAC1B,UAAM,UAAU,GAAG,OAAO;AAC1B,UAAM,kBAAkB,eAAe;AACvC,UAAM,CAAC,WAAW,YAAY,IAAU,iBAAS,KAAK;AACtD,UAAM,CAAC,cAAc,eAAe,IAAU;AAAA,MAAS,MACrD,SAAS,OAAO,cAAc,KAAK,IAAI,cAAc,YAAY;AAAA,IACnE;AACA,UAAM,gBAAgB,SAAS,OAAO,cAAc,KAAK,IAAI;AAC7D,UAAM,WAAW,cAAc,SAAS;AACxC,UAAM,kBAAkB,YAAY;AACpC,UAAM,kBAAkB,QAAQ,KAAK,KAAK,QAAQ,OAAO;AACzD,UAAM,eAAe,SAAS;AAC9B,UAAM,eAAe,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACzD,UAAM,YAAY,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AAEtD,IAAM,wBAAgB,MAAM;AAC1B,YAAM,YACJ,SAAS,OAAO,cAAc,KAAK,IAAI,cAAc,SAAS,SAAS,KAAK;AAE9E,sBAAgB,eAAc,cAAc,YAAY,YAAY,SAAU;AAAA,IAChF,GAAG,CAAC,KAAK,CAAC;AAEV,UAAM,UAAgB;AAAA,MACpB,CAAC,SAAkC;AACjC,iBAAS,UAAU;AAEnB,YAAI,QAAQ,SAAS,MAAM;AACzB;AAAA,YAAgB,eACd,cAAc,KAAK,QAAQ,YAAY,KAAK;AAAA,UAC9C;AAAA,QACF;AAEA,YAAI,OAAO,QAAQ,YAAY;AAC7B,cAAI,IAAI;AACR;AAAA,QACF;AAEA,YAAI,KAAK;AACP,cAAI,UAAU;AAAA,QAChB;AAAA,MACF;AAAA,MACA,CAAC,KAAK,KAAK;AAAA,IACb;AAEA,UAAM,eAAe,CAAC,UAA+C;AACnE,sBAAgB,MAAM,OAAO,KAAK;AAClC,iBAAW,KAAK;AAAA,IAClB;AAEA,UAAM,cAAc,CAAC,UAA8C;AACjE,mBAAa,IAAI;AACjB,gBAAU,KAAK;AAAA,IACjB;AAEA,UAAM,aAAa,CAAC,UAA8C;AAChE,mBAAa,KAAK;AAClB,eAAS,KAAK;AAAA,IAChB;AAEA,WACE,+CAAC,SAAI,WAAW,GAAG,yCAAyC,gBAAgB,GAC1E;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH;AAAA,QACA,IAAI;AAAA,QACJ,OAAO,mBAAmB;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,cAAc,CAAC,kBAAkB,GAAG,OAAO,YAAY;AAAA,QACvD,SAAS,QAAQ,UAAU;AAAA,QAC3B,WAAW,cAAc;AAAA,QACzB,aAAa,eAAe;AAAA,QAC5B;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,SAAS,qBAAqB,UAAU;AAAA,QACrD,WAAW;AAAA,UACT,YAAY,WACR,oFACA;AAAA,UACJ,WAAW,uBAAuB;AAAA,UAClC;AAAA,QACF;AAAA,QACA,kBAAkB;AAAA,UAChB,YAAY,WAAW,aAAa;AAAA,UACpC;AAAA,QACF;AAAA,QACA;AAAA,QACA,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,kBAAkB,CAAC;AAAA,QAEnB;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,KAAK;AAAA,YACL;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACV,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,aAAY;AAAA,YACZ,gBAAc;AAAA,YACd,aAAW;AAAA,YACX,oBAAkB,SAAS,qBAAqB,UAAU;AAAA,YAC1D,cAAY,mBAAmB,eAAe,kBAAkB;AAAA,YAChE,mBAAiB,mBAAmB,CAAC,eAAe,UAAU;AAAA,YAC9D,WAAW;AAAA,cACT;AAAA,cACA,YAAY,WAAW,aAAa;AAAA,cACpC,kBACI,wEACA;AAAA,cACJ,WAAW,uBAAuB,UAAU,oBAAoB;AAAA,cAChE;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA,IACF,GACF;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;AC9L1B,IAAAC,UAAuB;AACvB,IAAAC,wBAA0B;;;ACD1B,IAAAC,UAAuB;;;ACoDnB,IAAAC,wBAAA;AAxBJ,SAAS,kBAIP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,EACA;AACF,GAAoC;AAClC,QAAM,eAAe,mBAAmB;AAExC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,KAAK;AAAA,MACL,MAAK;AAAA,MACL,UAAU;AAAA,MACV,mBAAiB;AAAA,MACjB,oBAAkB;AAAA,MAClB,yBACE,qBAAqB,UAAa,oBAAoB,IAClDA,aAAY,gBAAgB,IAC5B;AAAA,MAEN;AAAA,MACA,WAAW,GAAG,kDAAkD,aAAa;AAAA,MAE5E;AAAA,gBAAQ,WAAW,KAAK,eACvB,+CAAC,SAAI,WAAU,gDAAgD,wBAAa,IAC1E;AAAA,QACH,QAAQ,IAAI,CAAC,QAAQ,UAAU;AAC9B,gBAAM,aAAa,eAAe,UAAU,OAAO;AACnD,gBAAM,gBAAgB,UAAU;AAChC,gBAAM,YAAY,GAAG,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK;AAElD,iBACE;AAAA,YAAC;AAAA;AAAA,cACC,IAAIA,aAAY,KAAK;AAAA,cAErB,KAAK,UAAQ;AACX,oCAAoB,OAAO,IAAI;AAAA,cACjC;AAAA,cACA,MAAK;AAAA,cACL,MAAK;AAAA,cACL,iBAAe;AAAA,cACf,iBAAe,YAAY,OAAO;AAAA,cAClC,UAAU;AAAA,cACV,UAAU,YAAY,OAAO;AAAA,cAC7B,SAAS,MAAM,cAAc,MAAM;AAAA,cACnC,aAAa,MAAM,gBAAgB,KAAK;AAAA,cACxC,WAAW;AAAA,gBACT;AAAA,gBACA,iBAAiB;AAAA,gBACjB,cAAc;AAAA,iBACb,YAAY,OAAO,eAAe;AAAA,cACrC;AAAA,cAEC,iBAAO,OAAO,KAAK;AAAA;AAAA,YAnBf;AAAA,UAoBP;AAAA,QAEJ,CAAC;AAAA;AAAA;AAAA,EACH;AAEJ;;;ACxCM,IAAAC,wBAAA;AAhCN,SAAS,qBAIP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,EACA;AACF,GAAuC;AACrC,MAAI,CAAC,OAAQ,QAAO;AAEpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ;AAAA,UACA,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,eAAe;AAAA,UACf;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,mBAAmB;AAAA,UACnB,aAAaA;AAAA,UACb;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;AClFO,IAAM,uBAAuB;AAC7B,IAAM,yBAAyB;AAC/B,IAAM,uBAAuB,uBAAuB;AACpD,IAAM,6BAA6B;AACnC,IAAM,8BAA8B;;;ACCpC,SAAS,eAId,SAAkC,QAAuC;AACzE,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO,QAAQ,UAAU,UAAQ,KAAK,UAAU,OAAO,KAAK;AAC9D;AAEO,SAAS,2BAId,SAAkC;AAClC,SAAO,QAAQ,UAAU,YAAU,CAAC,OAAO,UAAU;AACvD;AAEO,SAAS,0BAId,SAAkC;AAClC,WAAS,QAAQ,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG;AAC3D,QAAI,CAAC,QAAQ,KAAK,GAAG,YAAY;AAC/B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,0BAId,SAAkC,YAAoB,MAAc;AACpE,MAAI,YAAY;AAEhB,SAAO,aAAa,KAAK,YAAY,QAAQ,QAAQ;AACnD,QAAI,CAAC,QAAQ,SAAS,GAAG,YAAY;AACnC,aAAO;AAAA,IACT;AAEA,iBAAa;AAAA,EACf;AAEA,SAAO;AACT;AAEO,SAASC,oBAAmB,OAAe;AAChD,SAAO,QAAQ;AACjB;AAEO,SAAS,uBAAuB;AACrC,SAAO,uBAAuB;AAChC;AAEO,SAAS,sBAAsB,OAAe,WAAmB;AACtE,QAAM,qBAAqB,YAAY;AACvC,QAAM,mBAAmB,QAAQ;AACjC,QAAM,WAAW,KAAK,IAAI,gBAAgB;AAC1C,QAAM,qBAAqB,KAAK,IAAI,WAAW,KAAK,CAAC;AACrD,QAAM,kBAAkB,IAAI;AAC5B,QAAM,iBAAiB,IAAI,sBAAsB;AACjD,QAAM,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,mBAAmB,EAAE,CAAC;AAClE,QAAM,QAAQ,QAAQ,iBAAiB;AACvC,QAAM,SAAS,OAAO,iBAAiB;AACvC,QAAM,aAAa,mBAAmB;AACtC,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,WAAW,GAAG;AAClD,QAAM,QAAQ,IAAI,kBAAkB;AACpC,QAAM,UAAU,OAAO,iBAAiB;AACxC,QAAM,WAAW,KAAK,iBAAiB;AACvC,QAAM,aAAa,WAAW;AAC9B,QAAM,YAAY,aACd,KAAK,MAAM,MAAM,kBAAkB,GAAG,IACtC,KAAK,MAAM,MAAM,iBAAiB,EAAE;AAExC,SAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,QAAQ,GAAG,oBAAoB;AAAA,MAC/B,YAAY,GAAG,oBAAoB;AAAA,MACnC,UAAU,GAAG,QAAQ;AAAA,MACrB,YAAY;AAAA,MACZ,OAAO,OAAO,SAAS,KAAK,SAAS,KAAK,SAAS;AAAA,MACnD;AAAA,MACA,WAAW,sCAAsC,UAAU,OAAO,UAAU,eAAe,QAAQ,cAAc,KAAK,KAAK,MAAM;AAAA,MACjI,iBAAiB;AAAA,MACjB,QAAQ,QAAQ,IAAI;AAAA,MACpB,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;AC/BQ,IAAAC,wBAAA;AAvCR,SAAS,kBAIP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,EACA;AACF,GAAoC;AAClC,QAAMC,gBAAe,qBAAqB;AAC1C,QAAM,eAAe,mBAAmB;AAExC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,UAAU;AAAA,MACV,mBAAiB;AAAA,MACjB,oBAAkB;AAAA,MAClB,yBACE,gBAAgB,UAAa,eAAe,IACxCD,aAAY,WAAW,IACvB;AAAA,MAEN;AAAA,MACA,WAAW,GAAG,yCAAyC,aAAa;AAAA,MAEnE;AAAA,gBAAQ,WAAW,KAAK,eACvB,+CAAC,SAAI,WAAU,sGACZ,wBACH,IACE;AAAA,QACJ,+CAAC,SAAI,WAAU,6GAA4G;AAAA,QAC3H,+CAAC,SAAI,WAAU,gHAA+G;AAAA,QAC9H;AAAA,UAAC;AAAA;AAAA,YACC,eAAW;AAAA,YACX,WAAW;AAAA,cACT;AAAA,cACA,QAAQ,WAAW,KAAK,gBAAgB;AAAA,YAC1C;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL;AAAA,YACA,WAAW;AAAA,cACT;AAAA,cACA,QAAQ,WAAW,KAAK,gBAAgB;AAAA,YAC1C;AAAA,YACA,OAAO;AAAA,cACL,QAAQ,GAAG,oBAAoB;AAAA,cAC/B,gBAAgB;AAAA,cAChB,yBAAyB;AAAA,YAC3B;AAAA,YAEA;AAAA,6DAAC,SAAI,OAAO,EAAC,QAAQ,GAAGC,aAAY,KAAI,GAAG;AAAA,cAC1C,QAAQ,IAAI,CAAC,QAAQ,UAAU;AAC9B,sBAAM,EAAC,UAAU,MAAK,IAAI,sBAAsB,OAAO,SAAS;AAChE,sBAAM,YAAY,GAAG,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK;AAElD,uBACE;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAID,aAAY,KAAK;AAAA,oBAErB,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,iBAAe,WAAW;AAAA,oBAC1B,iBAAe,YAAY,OAAO;AAAA,oBAClC,UAAU;AAAA,oBACV,UAAU,YAAY,OAAO;AAAA,oBAC7B,SAAS,MAAM,cAAc,MAAM;AAAA,oBACnC,WAAW;AAAA,sBACT;AAAA,uBACC,YAAY,OAAO,eAAe;AAAA,oBACrC;AAAA,oBACA;AAAA,oBAEC,iBAAO,OAAO,KAAK;AAAA;AAAA,kBAdf;AAAA,gBAeP;AAAA,cAEJ,CAAC;AAAA,cACD,+CAAC,SAAI,OAAO,EAAC,QAAQ,GAAGC,aAAY,KAAI,GAAG;AAAA;AAAA;AAAA,QAC7C;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACzDQ,IAAAC,wBAAA;AA9BR,SAAS,oBAIP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,EACA;AACF,GAAsC;AACpC,SACE,+CAAC,UAAO,MAAY,cAClB,0DAAC,iBAAc,SAAkB,YAAY,OAC3C;AAAA,mDAAC,eAAY,WAAU,WAAW,yBAAe,OAAM;AAAA,IACvD,+CAAC,qBAAkB,WAAU,WAAW,iBAAM;AAAA,IAC9C,gDAAC,SAAI,WAAU,kBACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ;AAAA,UACA,YAAY;AAAA,UACZ,aAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,aAAaA;AAAA,UACb;AAAA;AAAA,MACF;AAAA,MACA,+CAAC,UAAO,MAAK,UAAS,SAAS,QAAQ,WAAU,yBAC9C,qBACH;AAAA,OACF;AAAA,KACF,GACF;AAEJ;;;AC5FA,IAAAC,UAAuB;AACvB,IAAAC,wBAA0B;AAqFhB,IAAAC,wBAAA;AAzDV,IAAMC,iBAAsB;AAAA,EAC1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GACA,QACG;AACH,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAc;AAAA,QACd,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,WAAW,aAAa;AAAA,QACnC,WAAW;AAAA,QACX,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AAAA,QACpD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,mBACE;AAAA,UAAC;AAAA;AAAA,YACC,WACE,OACI,2DACA;AAAA;AAAA,QAER;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEAA,eAAc,cAAc;;;ACnG5B,IAAAC,UAAuB;AAwBvB,SAAS,iBAIP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoC;AAClC,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,iBAAS,EAAE;AACjE,QAAM,aAAmB,eAA0B,IAAI;AACvD,QAAM,UAAgB,eAAuB,IAAI;AACjD,QAAM,aAAmB,eAAwC,CAAC,CAAC;AACnE,QAAM,gBAAgB,eAAe,SAAS,KAAK;AAEnD,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,UAAU,SAAU;AAEzB,wBAAoB,kBAAgB;AAClC,UAAI,gBAAgB,GAAG;AACrB,eAAO;AAAA,MACT;AAEA,aAAO,iBAAiB,IAAI,gBAAgB,2BAA2B,OAAO;AAAA,IAChF,CAAC;AAED,UAAM,UAAU,OAAO,sBAAsB,MAAM;AACjD,cAAQ,SAAS,MAAM;AAAA,IACzB,CAAC;AAED,WAAO,MAAM;AACX,aAAO,qBAAqB,OAAO;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,UAAU,QAAQ,SAAS,aAAa,CAAC;AAE7C,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,UAAU,YAAY,mBAAmB,EAAG;AAEjD,eAAW,QAAQ,gBAAgB,GAAG,eAAe;AAAA,MACnD,OAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,kBAAkB,UAAU,MAAM,CAAC;AAEvC,EAAM,kBAAU,MAAM;AACpB,QAAI,OAAQ;AAEZ,wBAAoB,EAAE;AAAA,EACxB,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,eAAqB,oBAAY,MAAM;AAC3C,eAAW,SAAS,MAAM;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,QAAM,eAAqB;AAAA,IACzB,CAAC,WAAkC;AACjC,UAAI,OAAO,cAAc,SAAU;AAEnC,eAAS,MAAM;AAAA,IACjB;AAAA,IACA,CAAC,UAAU,QAAQ;AAAA,EACrB;AAEA,QAAM,WAAiB;AAAA,IACrB,CAAC,gBAAyB;AACxB,YAAM,gBACJ,iBAAiB,IAAI,gBAAgB,2BAA2B,OAAO;AACzE,0BAAoB,eAAe,aAAa;AAAA,IAClD;AAAA,IACA,CAAC,SAAS,aAAa;AAAA,EACzB;AAEA,QAAM,uBAA6B;AAAA,IACjC,CAAC,OAA+C,WAAuB;AACrE,UAAI,SAAU;AAEd,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,cAAM,aACJ,iBAAiB,IAAI,gBAAgB,IAAI,2BAA2B,OAAO;AAC7E,iBAAS,0BAA0B,SAAS,YAAY,CAAC,CAAC;AAC1D,eAAO;AACP;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,WAAW;AAC3B,cAAM,eAAe;AACrB,cAAM,aACJ,iBAAiB,IAAI,gBAAgB,IAAI,0BAA0B,OAAO;AAC5E,iBAAS,0BAA0B,SAAS,YAAY,EAAE,CAAC;AAC3D,eAAO;AACP;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;AAC9C,cAAM,eAAe;AACrB,iBAAS;AACT,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,CAAC,UAAU,UAAU,SAAS,aAAa;AAAA,EAC7C;AAEA,QAAM,oBAA0B;AAAA,IAC9B,CAAC,OAA4C,YAAwB;AACnE,UAAI,MAAM,QAAQ,UAAU;AAC1B,cAAM,eAAe;AACrB,gBAAQ;AACR,qBAAa;AACb;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,OAAO;AACvB,gBAAQ;AACR;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,cAAM,YAAY,0BAA0B,SAAS,mBAAmB,GAAG,CAAC;AAC5E,YAAI,aAAa,GAAG;AAClB,8BAAoB,SAAS;AAAA,QAC/B;AACA;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,WAAW;AAC3B,cAAM,eAAe;AACrB,cAAM,YAAY,0BAA0B,SAAS,mBAAmB,GAAG,EAAE;AAC7E,YAAI,aAAa,GAAG;AAClB,8BAAoB,SAAS;AAAA,QAC/B;AACA;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,QAAQ;AACxB,cAAM,eAAe;AACrB,4BAAoB,2BAA2B,OAAO,CAAC;AACvD;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,OAAO;AACvB,cAAM,eAAe;AACrB,4BAAoB,0BAA0B,OAAO,CAAC;AACtD;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;AAC9C,cAAM,eAAe;AACrB,cAAM,SAAS,QAAQ,gBAAgB;AAEvC,YAAI,UAAU,CAAC,OAAO,YAAY;AAChC,mBAAS,MAAM;AACf,kBAAQ;AACR,uBAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,cAAc,kBAAkB,UAAU,OAAO;AAAA,EACpD;AAEA,QAAM,eAAqB;AAAA,IACzB,CAAC,OAAe,SAAmC;AACjD,iBAAW,QAAQ,KAAK,IAAI;AAAA,IAC9B;AAAA,IACA,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC7MA,IAAAC,UAAuB;AAyBvB,SAAS,qBAIP,EAAC,UAAU,QAAQ,SAAS,OAAO,SAAQ,GAAwC;AACnF,QAAM,CAAC,cAAc,eAAe,IAAU;AAAA,IAC5C,SAAS;AAAA,EACX;AACA,QAAM,CAAC,iBAAiB,kBAAkB,IAAU,iBAAS,CAAC;AAC9D,QAAM,gBAAsB,eAAuB,IAAI;AACvD,QAAM,yBAA+B,eAAsB,IAAI;AAC/D,QAAM,0BAAgC,eAAsB,IAAI;AAEhE,QAAM,iBAAuB;AAAA,IAC3B,CAAC,gBAA+C;AAC9C,YAAM,gBAAgB,eAAe,SAAS,WAAW;AAEzD,aAAO,iBAAiB,IAAI,gBAAgB,2BAA2B,OAAO;AAAA,IAChF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,qBAA2B;AAAA,IAC/B,CACE,aACA,WAA2B,cACxB;AACH,YAAM,cAAc,eAAe,WAAW;AAC9C,UAAI,cAAc,EAAG;AAErB,YAAM,gBAAgBC,oBAAmB,WAAW;AACpD,yBAAmB,aAAa;AAEhC,UAAI,cAAc,SAAS;AACzB,sBAAc,QAAQ,SAAS;AAAA,UAC7B,KAAK;AAAA,UACL;AAAA,QACF,CAAC;AAAA,MACH;AAEA,YAAM,eAAe,QAAQ,WAAW;AACxC,UAAI,gBAAgB,CAAC,aAAa,YAAY;AAC5C,wBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,OAAO;AAAA,EAC1B;AAEA,QAAM,2BAAiC,oBAAY,MAAM;AACvD,QAAI,uBAAuB,YAAY,KAAM;AAE7C,WAAO,aAAa,uBAAuB,OAAO;AAClD,2BAAuB,UAAU;AAAA,EACnC,GAAG,CAAC,CAAC;AAEL,QAAM,4BAAkC,oBAAY,MAAM;AACxD,QAAI,wBAAwB,YAAY,KAAM;AAE9C,WAAO,qBAAqB,wBAAwB,OAAO;AAC3D,4BAAwB,UAAU;AAAA,EACpC,GAAG,CAAC,CAAC;AAEL,EAAM;AAAA,IACJ,MAAM,MAAM;AACV,+BAAyB;AACzB,gCAA0B;AAAA,IAC5B;AAAA,IACA,CAAC,2BAA2B,wBAAwB;AAAA,EACtD;AAEA,EAAM,kBAAU,MAAM;AACpB,oBAAgB,SAAS,IAAI;AAAA,EAC/B,GAAG,CAAC,KAAK,CAAC;AAEV,EAAM,wBAAgB,MAAM;AAC1B,QAAI,CAAC,YAAY,CAAC,OAAQ;AAE1B,UAAM,UAAU,OAAO,sBAAsB,MAAM;AACjD,yBAAmB,SAAS,MAAM,SAAS;AAAA,IAC7C,CAAC;AAED,WAAO,MAAM;AACX,aAAO,qBAAqB,OAAO;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,UAAU,QAAQ,oBAAoB,KAAK,CAAC;AAEhD,QAAM,eAAqB,oBAAY,MAAM;AAC3C,QAAI,CAAC,cAAc,QAAS;AAE5B,UAAM,YAAY,KAAK,MAAM,cAAc,QAAQ,YAAY,oBAAoB;AACnF,UAAM,aAAa,QAAQ,SAAS;AACpC,UAAM,gBAAgBA,oBAAmB,SAAS;AAElD,kBAAc,QAAQ,YAAY;AAClC,uBAAmB,aAAa;AAEhC,QACE,CAAC,cACD,WAAW,cACX,WAAW,UAAU,cAAc,OACnC;AACA;AAAA,IACF;AAEA,oBAAgB,UAAU;AAAA,EAC5B,GAAG,CAAC,SAAS,YAAY,CAAC;AAE1B,QAAM,uBAA6B,oBAAY,MAAM;AACnD,6BAAyB;AACzB,2BAAuB,UAAU,OAAO,WAAW,MAAM;AACvD,mBAAa;AAAA,IACf,GAAG,0BAA0B;AAAA,EAC/B,GAAG,CAAC,0BAA0B,YAAY,CAAC;AAE3C,QAAM,eAAqB,oBAAY,MAAM;AAC3C,QAAI,CAAC,cAAc,QAAS;AAE5B,UAAM,gBAAgB,cAAc,QAAQ;AAC5C,8BAA0B;AAE1B,4BAAwB,UAAU,OAAO,sBAAsB,MAAM;AACnE,yBAAmB,aAAa;AAChC,8BAAwB,UAAU;AAAA,IACpC,CAAC;AAED,yBAAqB;AAAA,EACvB,GAAG,CAAC,2BAA2B,oBAAoB,CAAC;AAEpD,QAAM,qBAA2B;AAAA,IAC/B,CACE,OACA,WAA2B,WAC3B,2BAA2B,aAAa,cACrC;AACH,UAAI,CAAC,cAAc,WAAW,QAAQ,KAAK,SAAS,QAAQ,OAAQ;AAEpE,YAAM,SAAS,QAAQ,KAAK;AAC5B,UAAI,CAAC,UAAU,OAAO,WAAY;AAElC,YAAM,gBAAgBA,oBAAmB,KAAK;AAC9C,oBAAc,QAAQ,SAAS,EAAC,KAAK,eAAe,SAAQ,CAAC;AAE7D,UAAI,0BAA0B;AAC5B,wBAAgB,MAAM;AAAA,MACxB;AAEA,UAAI,aAAa,WAAW;AAC1B,2BAAmB,aAAa;AAChC;AAAA,MACF;AAEA,2BAAqB;AAAA,IACvB;AAAA,IACA,CAAC,SAAS,oBAAoB;AAAA,EAChC;AAEA,QAAM,oBAA0B;AAAA,IAC9B,CAAC,WAAkC;AACjC,UAAI,CAAC,cAAc,WAAW,YAAY,OAAO,WAAY;AAE7D,YAAM,cAAc,eAAe,SAAS,MAAM;AAClD,UAAI,cAAc,EAAG;AAErB,yBAAmB,aAAa,UAAU,IAAI;AAAA,IAChD;AAAA,IACA,CAAC,UAAU,oBAAoB,OAAO;AAAA,EACxC;AAEA,QAAM,aAAmB;AAAA,IACvB,CAAC,SAAiB;AAChB,YAAM,eAAe,eAAe,SAAS,YAAY;AACzD,YAAM,gBACJ,SAAS,IACL,2BAA2B,OAAO,IAClC,0BAA0B,OAAO;AACvC,YAAM,aAAa,eAAe,IAAI,gBAAgB,eAAe;AACrE,YAAM,YAAY,0BAA0B,SAAS,YAAY,IAAI;AAErE,UAAI,aAAa,GAAG;AAClB,2BAAmB,WAAW,UAAU,IAAI;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,SAAS,YAAY;AAAA,EAC5C;AAEA,QAAM,iBAAuB;AAAA,IAC3B,CAAC,aAA8B;AAC7B,YAAM,cACJ,aAAa,UACT,2BAA2B,OAAO,IAClC,0BAA0B,OAAO;AAEvC,UAAI,eAAe,GAAG;AACpB,2BAAmB,aAAa,UAAU,IAAI;AAAA,MAChD;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,OAAO;AAAA,EAC9B;AAEA,QAAM,mBAAyB;AAAA,IAC7B,CAAC,cAA6C;AAC5C,YAAM,kBAAkB,aAAa;AACrC,YAAM,eAAe,eAAe,SAAS,eAAe;AAC5D,YAAM,YACJ,gBAAgB,IAAI,eAAe,2BAA2B,OAAO;AAEvE,sBAAgB,eAAe;AAE/B,UAAI,YAAY,EAAG;AAEnB,YAAM,gBAAgBA,oBAAmB,SAAS;AAClD,yBAAmB,aAAa;AAEhC,UAAI,cAAc,SAAS;AACzB,sBAAc,QAAQ,YAAY;AAAA,MACpC;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC/PA,IAAAC,UAAuB;AASvB,SAAS,aAAa,EAAC,MAAM,UAAU,OAAO,iBAAgB,GAAuB;AACnF,QAAM,UAAgB,cAAM,EAAE,QAAQ,MAAM,EAAE;AAC9C,QAAM,SAAS,OAAO,UAAU,IAAI,KAAK,UAAU,OAAO;AAC1D,QAAM,YAAY,GAAG,MAAM;AAC3B,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,eAAe,GAAG,MAAM;AAC9B,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,YAAY,GAAG,MAAM;AAC3B,QAAM,mBAAmB,SAAS,CAAC,mBAAmB,UAAU;AAChE,QAAM,cACJ,CAAC,CAAC,WAAW,eAAe,MAAM,gBAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAC5E;AAEF,QAAMC,eAAoB;AAAA,IACxB,CAAC,UAAkB,GAAG,MAAM,WAAW,KAAK;AAAA,IAC5C,CAAC,MAAM;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAAA;AAAA,EACF;AACF;;;AV2LI,IAAAC,wBAAA;AApNJ,IAAM,eAAqB,mBAAW,SAASC,cAK7C;AAAA,EACE,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,GACA,KACA;AACA,QAAM,EAAC,SAAS,SAAQ,IAAI,gBAAgB,OAAO,QAAQ;AAC3D,QAAM,CAAC,QAAQ,SAAS,IAAU,iBAAS,KAAK;AAChD,QAAM,eAAqB,eAAuB,IAAI;AACtD,QAAM,WAAW,QAAQ,KAAK;AAC9B,QAAM,aAAa,eAAe;AAClC,QAAM,YAAY,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACtD,QAAM,eAAe,SAAS;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAAC;AAAA,EACF,IAAI,aAAa,EAAC,MAAM,UAAU,OAAO,iBAAgB,CAAC;AAC1D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,qBAAqB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AACD,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF,IAAI,iBAAiB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EACF,CAAC;AACD,QAAM,cAAc,eAAe,KAAK,iBAAiB;AACzD,QAAM,oBAAoB,eAAe,SAAS,YAAY;AAC9D,QAAM,aAAa,QAAS,gBAAgB,KAAK,KAAK,OAAO,MAAM,KAAK,IAAK;AAE7E,kBAAgB,cAAc,UAAU,CAAC,WAAW,MAAM,UAAU,KAAK,IAAI,IAAI;AAEjF,EAAM,kBAAU,MAAM;AACpB,QAAI,WAAW;AACb,gBAAU,KAAK;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,EAAM;AAAA,IACJ,SAAS,qCAAqC;AAC5C,UAAI,OAAO,UAAU,UAAa,MAAM,UAAU,QAAQ,MAAM,UAAU,IAAI;AAC5E;AAAA,MACF;AAEA,YAAM,cAAc,QAAQ,KAAK,YAAU,OAAO,UAAU,MAAM,KAAK;AAEvE,UAAI,aAAa;AACf,iBAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,UAAU,SAAS,KAAK;AAAA,EAC3B;AAEA,QAAM,yBAA+B;AAAA,IACnC,CAAC,aAAsB;AACrB,UAAI,aAAa,SAAU;AAE3B,gBAAU,QAAQ;AAClB,uBAAiB,SAAS,IAAI;AAE9B,UAAI,CAAC,UAAU;AACb,qBAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,CAAC,cAAc,WAAW,kBAAkB,KAAK;AAAA,EACnD;AAEA,QAAM,mBAAyB,oBAAY,MAAM;AAC/C,QAAI,UAAW;AAEf,UAAM,cAAc;AAEpB,QAAI,eAAe,YAAY,UAAU,OAAO,OAAO;AACrD,eAAS,WAAW;AAAA,IACtB;AAEA,cAAU,KAAK;AACf,iBAAa;AAAA,EACf,GAAG,CAAC,cAAc,WAAW,UAAU,cAAc,KAAK,CAAC;AAE3D,QAAM,qBAA2B,oBAAY,MAAM;AACjD,QAAI,UAAW;AAEf,cAAU,UAAQ;AAChB,YAAM,WAAW,CAAC;AAElB,UAAI,UAAU;AACZ,yBAAiB,SAAS,IAAI;AAAA,MAChC;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,WAAW,UAAU,kBAAkB,KAAK,CAAC;AAEjD,QAAM,2BAA2B,CAAC,UAAkD;AAClF,QAAI,UAAU;AACZ,UAAI,UAAW;AAEf,UACE,MAAM,QAAQ,eACd,MAAM,QAAQ,aACd,MAAM,QAAQ,WACd,MAAM,QAAQ,KACd;AACA,cAAM,eAAe;AACrB,yBAAiB,SAAS,IAAI;AAC9B,kBAAU,IAAI;AAAA,MAChB;AAEA;AAAA,IACF;AAEA,yBAAqB,OAAO,MAAM,UAAU,IAAI,CAAC;AAAA,EACnD;AAEA,QAAM,2BAA2B,CAAC,UAA+C;AAC/E,QAAI,MAAM,QAAQ,aAAa;AAC7B,YAAM,eAAe;AACrB,iBAAW,CAAC;AACZ;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,WAAW;AAC3B,YAAM,eAAe;AACrB,iBAAW,EAAE;AACb;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,QAAQ;AACxB,YAAM,eAAe;AACrB,qBAAe,OAAO;AACtB;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,OAAO;AACvB,YAAM,eAAe;AACrB,qBAAe,KAAK;AACpB;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,KAAK;AAC9C,YAAM,eAAe;AACrB,uBAAiB;AACjB;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,UAAU;AAC1B,YAAM,eAAe;AACrB,6BAAuB,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,GAAG,kDAAkD,SAAS;AAAA,MAExE;AAAA,gBACC,+CAAC,WAAM,MAAK,UAAS,MAAY,OAAO,QAAQ,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,QAE3E,gBACC,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,UACX;AAAA,QACF,CAAC,IAED;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,KAAK;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS,QAAQ,UAAU;AAAA,YAC3B;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT,WAAW;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QAED,WACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,cAAc;AAAA,YACd,SAAS,MAAM,uBAAuB,KAAK;AAAA,YAC3C;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,WAAW;AAAA,YACX,aAAa;AAAA,YACb,SAAS;AAAA,YACT,UAAU;AAAA,YACV,eAAe;AAAA,YACf,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,aAAaD;AAAA,YACb;AAAA;AAAA,QACF,IAEA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA,eAAe,YAAU;AACvB,kCAAoB,MAAM;AAC1B,wBAAU,KAAK;AACf,2BAAa;AAAA,YACf;AAAA,YACA,eAAe;AAAA,YACf,WAAW,WAAS;AAClB,gCAAkB,OAAO,MAAM,UAAU,KAAK,CAAC;AAAA,YACjD;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT;AAAA,YACA,aAAaA;AAAA,YACb;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ,CAAC;;;ADhPS,IAAAE,wBAAA;AArDV,IAAM,aAAmB;AAAA,EACvB,CACE;AAAA,IACE,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,EACpB,GACA,QACG;AACH,UAAM,UAAgB,cAAM;AAE5B,UAAM,cAAoB;AAAA,MACxB,MACE,QAAQ,IAAI,aAAW;AAAA,QACrB,OAAO,OAAO;AAAA,QACd,OAAO,GAAG,OAAO,KAAK,KAAK,OAAO,KAAK;AAAA,QACvC,UAAU,OAAO;AAAA,MACnB,EAAE;AAAA,MACJ,CAAC,OAAO;AAAA,IACV;AAEA,UAAM,qBAA2B;AAAA,MAC/B,MAAM,YAAY,KAAK,YAAU,OAAO,UAAU,OAAO,IAAI,KAAK;AAAA,MAClE,CAAC,aAAa,OAAO,IAAI;AAAA,IAC3B;AAEA,UAAM,gBACJ,OAAO,QAAQ,OAAO,SAAS,GAAG,OAAO,QAAQ,EAAE,GAAG,OAAO,UAAU,EAAE,KAAK;AAChF,UAAM,kBAAkB,QAAQ,KAAK,KAAK,QAAQ,OAAO;AACzD,UAAM,YAAY,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACtD,UAAM,gBAAgB,aAAa,QAAQ,YAAY;AAEvD,WACE,gDAAC,SAAI,WAAW,GAAG,yCAAyC,SAAS,GAClE;AAAA,cACC,+CAAC,WAAM,MAAK,UAAS,MAAY,OAAO,eAAe,UAAoB;AAAA,MAE5E,YACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAM;AAAA,UACN,OAAO,OAAO,QAAQ;AAAA,UACtB;AAAA;AAAA,MACF;AAAA,MAED,cACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAM;AAAA,UACN,OAAO,OAAO,UAAU;AAAA,UACxB;AAAA;AAAA,MACF;AAAA,MAED,YACC;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,WAAU;AAAA,UAET;AAAA;AAAA,MACH;AAAA,MAEF,gDAAC,SAAI,WAAU,sBACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT,OAAO;AAAA,YACP,UAAU,YACR,SAAS;AAAA,cACP,MAAM,OAAO,OAAO,KAAK;AAAA,cACzB,QAAQ,OAAO,UAAU;AAAA,YAC3B,CAAC;AAAA,YAEH,OAAO,GAAG,KAAK;AAAA,YACf,aAAa;AAAA,YACb,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA,WAAU;AAAA,YACV,aAAa,eAAe;AAAA,YAC5B,mBAAkB;AAAA,YAClB,eAAe,YAAU,OAAO,OAAO,KAAK;AAAA,YAC5C,eAAe,CAAC;AAAA,cACd;AAAA,cACA;AAAA,cACA,SAAS;AAAA,cACT,UAAU;AAAA,cACV,SAAS;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,MACE;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,KAAK;AAAA,gBACL,MAAK;AAAA,gBACL,cAAY,GAAG,KAAK;AAAA,gBACpB,iBAAc;AAAA,gBACd,iBAAe;AAAA,gBACf,iBAAe;AAAA,gBACf,aAAW;AAAA,gBACX,gBAAc;AAAA,gBACd,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA,WAAW;AAAA,kBACT;AAAA,kBACA,kBAAkB,WACd,2IACA;AAAA,kBACJ,kBACI,2EACA,kBAAkB,WAChB,iDACA;AAAA,kBACN,kBACI,kCACA,iBACE,oBACA;AAAA,gBACR;AAAA,gBAEA;AAAA,iEAAC,UAAM,wBAAc,iBAAgB;AAAA,kBACrC;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAW,GAAG,gCAAgC,OAAO,eAAe,EAAE;AAAA,sBACtE,aAAa;AAAA;AAAA,kBACf;AAAA;AAAA;AAAA,YACF;AAAA;AAAA,QAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ;AAAA,YACA,MAAK;AAAA,YACL,WAAU;AAAA,YACV;AAAA,YACA,YAAY;AAAA,YACZ,OAAO,OAAO,UAAU;AAAA,YACxB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,oBAAoB;AAAA,YACpB,kBAAiB;AAAA,YACjB,gBAAgB;AAAA,cACd,YAAY,WACR,4DACA;AAAA,YACN;AAAA,YACA,kBAAkB,GAAG,YAAY,WAAW,kBAAkB,UAAU;AAAA,YACxE,gBAAe;AAAA,YACf,UAAU,WACR,SAAS;AAAA,cACP,MAAM,OAAO,QAAQ;AAAA,cACrB,QAAQ,MAAM,OAAO;AAAA,YACvB,CAAC;AAAA,YAEH;AAAA;AAAA,QACF;AAAA,SACF;AAAA,MACC,SAAS,+CAAC,qBAAkB,SAAS,OAAO;AAAA,OAC/C;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;;;AYvOzB,IAAAC,UAAuB;AAEvB,IAAAC,yBAA6B;AAC7B,IAAAC,wBAAwB;AAkBpB,IAAAC,wBAAA;AATG,IAAM,oBAA0B,mBAGrC,CAAC,EAAC,SAAS,aAAa,kBAAkB,GAAG,MAAK,GAAG,QAAQ;AAC7D,QAAM,EAAC,EAAC,QAAI,uCAAe;AAE3B,QAAM,kBAAkB,eAAe,EAAE,iBAAiB,IAAI;AAE9D,SACE,gDAAC,SAAI,WAAW,GAAG,0BAA0B,gBAAgB,GAC3D;AAAA,mDAAC,gCAAO,WAAU,6EAA4E;AAAA,IAC9F;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA,MAAK;AAAA,QACL,UAAU,MAAM;AAAA,QAChB,OAAO,MAAM;AAAA,QACb,cAAc,MAAM;AAAA,QACpB,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,QACf,QAAQ,MAAM;AAAA,QACd,aAAa;AAAA,QACb,WAAW;AAAA,UACT;AAAA,UACA,MAAM;AAAA,QACR;AAAA;AAAA,IACF;AAAA,IACC,WACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAU;AAAA,QAEV,yDAAC,2BAAE,WAAU,WAAU;AAAA;AAAA,IACzB;AAAA,KAEJ;AAEJ,CAAC;AAED,kBAAkB,cAAc;;;ACpDhC,IAAAC,UAAuB;AACvB,IAAAC,wBAAkC;AAClC,2BAA6B;AAC7B,IAAAC,iBAAqC;AAsOjC,IAAAC,wBAAA;AA5NJ,IAAM,aAAa;AACnB,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAE5B,SAAS,cACP,QACA,aACA;AACA,SAAO,OAAO,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,YAAY,KAAK,EAAE,YAAY,CAAC;AACrF;AAEA,IAAM,2BAA2B,CAK/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACA,QACG;AACH,QAAM,EAAC,SAAS,SAAQ,IAAI,gBAAgB,OAAO,QAAQ;AAC3D,QAAM,UAAgB,cAAM;AAC5B,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,qBAAqB,sBAAsB,IAAU,iBAAS,EAAE;AACvE,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,iBAAS,EAAE;AACjE,QAAM,eAAqB,eAAuB,IAAI;AACtD,QAAM,aAAmB,eAA0B,IAAI;AACvD,QAAM,WAAiB,eAAyB,IAAI;AACpD,QAAM,YAAY,GAAG,OAAO;AAC5B,QAAM,UAAU,GAAG,OAAO;AAC1B,QAAM,UAAU,GAAG,OAAO;AAC1B,QAAM,eAAe,GAAG,OAAO;AAC/B,QAAM,UAAU,GAAG,OAAO;AAC1B,QAAM,gBAAgB,GAAG,OAAO;AAChC,QAAM,uBAAuB,eAAe;AAC5C,QAAM,sBAAsB,CAAC,kBAAkB,iBAAiB;AAChE,QAAM,iBAAuB,gBAAQ,MAAM;AACzC,QAAI,CAAC,uBAAuB,CAAC,sBAAsB;AACjD,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ,OAAO,YAAU,aAAa,QAAQ,oBAAoB,CAAC;AAAA,EAC5E,GAAG,CAAC,sBAAsB,cAAc,SAAS,mBAAmB,CAAC;AACrE,QAAM,gBAAsB;AAAA,IAC1B,MAAM,eAAe,UAAU,YAAU,OAAO,UAAU,OAAO,KAAK;AAAA,IACtE,CAAC,OAAO,OAAO,cAAc;AAAA,EAC/B;AACA,QAAM,aAAa,eAAe;AAClC,QAAM,aAAa,QAAS,gBAAgB,KAAK,KAAK,OAAO,MAAM,KAAK,IAAK;AAC7E,QAAM,YAAY,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AACtD,QAAM,eAAe,SAAS;AAC9B,QAAM,cAAc,SAAS,CAAC,mBAAmB,UAAU;AAC3D,QAAM,iBACJ,oBAAoB,IAAI,YAAY,SAAS,gBAAgB,IAAI;AAEnE,kBAAgB,cAAc,QAAQ,CAAC,WAAW,MAAM,YAAY,IAAI,IAAI;AAE5E,QAAM,qBAAqB,SAAS,YAAY;AAChD,QAAM,oBAAgB;AAAA,IACpB,CAAC,UAAmBC,aAAuC;AACzD,cAAQ,QAAQ;AAChB,2BAAqB,QAAQ;AAE7B,UAAI,CAAC,YAAYA,UAAS,cAAc;AACtC,mBAAW,SAAS,MAAM;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEA,EAAM,kBAAU,MAAM;AACpB,QAAI,WAAW;AACb,oBAAc,KAAK;AACnB;AAAA,IACF;AAEA,QAAI,CAAC,KAAM;AAEX,UAAM,UAAU,OAAO,sBAAsB,MAAM;AACjD,eAAS,SAAS,MAAM;AAAA,IAC1B,CAAC;AAED,WAAO,MAAM;AACX,aAAO,qBAAqB,OAAO;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,WAAW,MAAM,aAAa,CAAC;AAEnC,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,MAAM;AACT,0BAAoB,EAAE;AACtB;AAAA,IACF;AAEA,wBAAoB,kBAAgB;AAClC,UACE,gBAAgB,KAChB,eAAe,eAAe,UAC9B,CAAC,eAAe,YAAY,GAAG,YAC/B;AACA,eAAO;AAAA,MACT;AAEA,aAAO,iBAAiB,IAAI,gBAAgB,qBAAqB,cAAc;AAAA,IACjF,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,eAAe,cAAc,CAAC;AAExC,WAAS,aAAa;AACpB,QAAI,UAAW;AAEf,kBAAc,IAAI;AAAA,EACpB;AAEA,WAAS,cAAc;AACrB,kBAAc,OAAO,EAAC,cAAc,KAAI,CAAC;AAAA,EAC3C;AAEA,WAAS,mBAAmB,WAAmB;AAC7C,QAAI,CAAC,gBAAgB;AACnB,6BAAuB,SAAS;AAAA,IAClC;AAEA,qBAAiB,SAAS;AAAA,EAC5B;AAEA,WAAS,aAAa,QAA+B;AACnD,QAAI,aAAa,OAAO,WAAY;AAEpC,aAAS,MAAM;AACf,kBAAc,OAAO,EAAC,cAAc,KAAI,CAAC;AAAA,EAC3C;AAEA,WAAS,cAAc,MAAc;AACnC,UAAM,aACJ,oBAAoB,IAChB,mBAAmB,OACnB,SAAS,IACP,IACA,eAAe,SAAS;AAChC,UAAM,YAAY,oBAAoB,gBAAgB,YAAY,IAAI;AAEtE,QAAI,aAAa,GAAG;AAClB,0BAAoB,SAAS;AAAA,IAC/B;AAAA,EACF;AAEA,WAAS,qBAAqB,OAA+C;AAC3E,QAAI,UAAW;AAEf,QACE,MAAM,QAAQ,WACd,MAAM,QAAQ,OACd,MAAM,QAAQ,eACd,MAAM,QAAQ,WACd;AACA,YAAM,eAAe;AACrB,iBAAW;AAAA,IACb;AAAA,EACF;AAEA,WAAS,oBAAoB,OAA8C;AACzE,QAAI,MAAM,QAAQ,UAAU;AAC1B,YAAM,eAAe;AACrB,kBAAY;AACZ;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,aAAa;AAC7B,YAAM,eAAe;AACrB,oBAAc,CAAC;AACf;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,WAAW;AAC3B,YAAM,eAAe;AACrB,oBAAc,EAAE;AAChB;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,SAAS;AACzB,YAAM,eAAe;AACrB,YAAM,SAAS,eAAe,gBAAgB;AAE9C,UAAI,QAAQ;AACV,qBAAa,MAAM;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UACJ;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,WAAW,qBAAqB;AAAA,MACxC,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,eAAe;AAAA;AAAA,EACjB;AAGF,EAAM,4BAAoB,KAAK,MAAM,WAAW,SAA8B,CAAC,CAAC;AAEhF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,GAAG,kDAAkD,SAAS;AAAA,MAExE;AAAA,gBACC,+CAAC,WAAM,MAAK,UAAS,MAAY,OAAO,QAAQ,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,QAE5E;AAAA,UAAC;AAAA;AAAA,YACC,IAAI,GAAG,OAAO;AAAA,YACd,KAAK;AAAA,YACL;AAAA,YACA,iBAAc;AAAA,YACd,iBAAe;AAAA,YACf,iBAAe;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS,QAAQ,UAAU;AAAA,YAC3B,WAAW,WAAW,aAAa;AAAA,YACnC,WAAW;AAAA,YACX,aAAa;AAAA,YACb;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA;AAAA,YACA,gBAAgB,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AAAA,YACpD;AAAA,YACA;AAAA,YACA,SAAS,MAAM;AACb,kBAAI,MAAM;AACR,4BAAY;AACZ;AAAA,cACF;AAEA,yBAAW;AAAA,YACb;AAAA,YACA,WAAW;AAAA,YACX;AAAA,YACA,mBACE;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA;AAAA,YACF;AAAA;AAAA,QAEJ;AAAA,QACC,WACC;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,cAAc,cAAY;AACxB,kBAAI,aAAa,SAAU;AAE3B,kBAAI,UAAU;AACZ,8BAAc,IAAI;AAClB;AAAA,cACF;AAEA,0BAAY;AAAA,YACd;AAAA,YAEA,0DAAC,iBAAc,SAAS,aAAa,YAAY,OAC/C;AAAA,6DAAC,eAAY,WAAU,WAAW,yBAAe,OAAM;AAAA,cACvD,+CAAC,qBAAkB,WAAU,WAAW,iBAAM;AAAA,cAC9C,+CAAC,SAAI,WAAU,kBAAkB,mBAAQ;AAAA,eAC3C;AAAA;AAAA,QACF,IACE,OACF;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YAEC;AAAA;AAAA,QACH,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAUA,IAAM,mBAAyB;AAAA,EAC7B;AACF;AA+BA,SAAS,wBAIP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0C;AACxC,QAAM,UAAgB,eAAuB,IAAI;AACjD,QAAM,+BAAqC,eAAsB,IAAI;AACrE,QAAM,8BAAoC,eAAO,gBAAgB;AACjE,QAAM,WAAW,QAAQ,UAAU,WAAW,QAAQ,SAAS,IAAI,IAAI;AACvE,QAAM,kBAAc,qCAAe;AAAA,IACjC,OAAO;AAAA,IACP,kBAAkB,MAAM,QAAQ;AAAA,IAChC,cAAc,MAAM;AAAA,IACpB,UAAU;AAAA,EACZ,CAAC;AACD,QAAM,eAAe,YAAY,gBAAgB;AACjD,QAAM,eAAe,mBAAmB,KAAK;AAC7C,QAAM,cAAc,iBAAiB,KAAK;AAE1C,EAAM,kBAAU,MAAM;AACpB,UAAM,WAAW,aAAa,aAAa,SAAS,CAAC;AACrD,UAAM,iBACJ,CAAC,CAAC,YACF,eACA,CAAC,WACD,SAAS,SAAS,QAAQ,SAAS;AAErC,QAAI,kBAAkB,6BAA6B,YAAY,QAAQ,QAAQ;AAC7E,mCAA6B,UAAU,QAAQ;AAC/C,mBAAa;AAAA,IACf;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,YAAY,QAAQ,QAAQ,YAAY,CAAC;AAEnE,EAAM,kBAAU,MAAM;AACpB,UAAM,6BACJ,4BAA4B,YAAY;AAE1C,gCAA4B,UAAU;AAEtC,QAAI,oBAAoB,KAAK,4BAA4B;AACvD,kBAAY,cAAc,kBAAkB,EAAC,OAAO,OAAM,CAAC;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,kBAAkB,WAAW,CAAC;AAElC,SACE,gDAAC,SAAI,WAAU,OACb;AAAA,oDAAC,SAAI,WAAU,iBACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,eAAY;AAAA,UACZ,WAAU;AAAA;AAAA,MACZ;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,MAAK;AAAA,UACL,iBAAc;AAAA,UACd,iBAAe;AAAA,UACf,yBAAuB;AAAA,UACvB,qBAAkB;AAAA,UAClB,mBAAiB;AAAA,UACjB,OAAO;AAAA,UACP,aAAa;AAAA,UACb,UAAU,WAAS,eAAe,MAAM,OAAO,KAAK;AAAA,UACpD,WAAW;AAAA,UACX,WAAU;AAAA;AAAA,MACZ;AAAA,OACF;AAAA,IACC,WAAW,QAAQ,WAAW,IAC7B,+CAAC,SAAI,WAAU,4DACZ,uBACH,IACE,QAAQ,WAAW,IACrB,+CAAC,SAAI,WAAU,4DACZ,wBACH,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,MAAK;AAAA,QACL,mBAAiB;AAAA,QACjB,WAAW,GAAG,gCAAgC,aAAa;AAAA,QAC3D,OAAO,EAAC,QAAQ,KAAK,IAAI,QAAQ,WAAW,UAAU,EAAC;AAAA,QAEvD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAC,QAAQ,GAAG,YAAY,aAAa,CAAC,KAAI;AAAA,YAEhD,uBAAa,IAAI,iBAAe;AAC/B,oBAAM,SAAS,QAAQ,YAAY,KAAK;AAExC,kBAAI,CAAC,QAAQ;AACX,uBACE;AAAA,kBAAC;AAAA;AAAA,oBAEC,WAAU;AAAA,oBACV,OAAO;AAAA,sBACL,QAAQ,GAAG,YAAY,IAAI;AAAA,sBAC3B,WAAW,cAAc,YAAY,KAAK;AAAA,oBAC5C;AAAA,oBAEC;AAAA;AAAA,kBAPI,YAAY;AAAA,gBAQnB;AAAA,cAEJ;AAEA,oBAAM,aAAa,OAAO,UAAU,OAAO;AAC3C,oBAAM,gBAAgB,YAAY,UAAU;AAE5C,qBACE;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAI,YAAY,UAAU,YAAY,KAAK;AAAA,kBAE3C,MAAK;AAAA,kBACL,MAAK;AAAA,kBACL,iBAAe;AAAA,kBACf,iBAAe,OAAO;AAAA,kBACtB,UAAU;AAAA,kBACV,UAAU,OAAO;AAAA,kBACjB,SAAS,MAAM,cAAc,MAAM;AAAA,kBACnC,aAAa,MAAM,cAAc,YAAY,KAAK;AAAA,kBAClD,WAAW;AAAA,oBACT;AAAA,oBACA,iBAAiB;AAAA,oBACjB,cAAc;AAAA,oBACd,OAAO,cAAc;AAAA,kBACvB;AAAA,kBACA,OAAO;AAAA,oBACL,QAAQ,GAAG,YAAY,IAAI;AAAA,oBAC3B,WAAW,cAAc,YAAY,KAAK;AAAA,kBAC5C;AAAA,kBAEA,yDAAC,UAAK,WAAU,wBAAwB,iBAAO,OAAO,KAAK,GAAE;AAAA;AAAA,gBApBxD,GAAG,OAAO,OAAO,KAAK,CAAC,IAAI,YAAY,KAAK;AAAA,cAqBnD;AAAA,YAEJ,CAAC;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,KAEJ;AAEJ;AAEA,SAAS,YAAY,UAAkB,OAAe;AACpD,SAAO,GAAG,QAAQ,WAAW,KAAK;AACpC;AAEA,SAAS,qBACP,SACA;AACA,SAAO,QAAQ,UAAU,YAAU,CAAC,OAAO,UAAU;AACvD;AAEA,SAAS,oBACP,SACA,YACA,MACA;AACA,MAAI,YAAY;AAEhB,SAAO,aAAa,KAAK,YAAY,QAAQ,QAAQ;AACnD,QAAI,CAAC,QAAQ,SAAS,GAAG,YAAY;AACnC,aAAO;AAAA,IACT;AAEA,iBAAa;AAAA,EACf;AAEA,SAAO;AACT;","names":["Content","Header","Root","Image","Separator","copyToClipboard","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","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_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","React","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_react","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react_i18next","import_react","styles_default","import_jsx_runtime","styles_default","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","import_react","import_react","import_react","import_react","import_react","import_react","import_react","import_react","import_react","copyToClipboard","copyToClipboard","import_react","import_react","import_react","import_react","import_react","import_react","import_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react_i18next","import_lucide_react","import_jsx_runtime","import_react","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_i18next","import_lucide_react","React","import_class_variance_authority","import_jsx_runtime","import_react","import_react_i18next","import_lucide_react","import_jsx_runtime","formatTime","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","styles_default","import_jsx_runtime","styles_default","React","import_class_variance_authority","import_jsx_runtime","import_react","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_jsx_runtime","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_react_i18next","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_react","import_lucide_react","import_react_i18next","import_jsx_runtime","Image","import_lucide_react","import_react_i18next","import_jsx_runtime","sizeClasses","import_lucide_react","import_jsx_runtime","import_react","import_lucide_react","styles_default","import_jsx_runtime","styles_default","import_react","import_jsx_runtime","import_jsx_runtime","import_react_i18next","import_jsx_runtime","import_react_i18next","import_lucide_react","React","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react","React","import_lucide_react","import_jsx_runtime","import_react","styles_default","import_jsx_runtime","styles_default","import_jsx_runtime","import_jsx_runtime","import_lucide_react","styles_default","import_jsx_runtime","styles_default","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_class_variance_authority","import_jsx_runtime","SectionTagColors","import_react","import_lucide_react","SubSectionSize","import_jsx_runtime","import_react","styles_default","import_jsx_runtime","styles_default","styles_default","import_jsx_runtime","styles_default","import_jsx_runtime","Separator","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","Separator","import_react","import_jsx_runtime","React","import_react","import_lucide_react","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","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_sonner","import_react","React","import_class_variance_authority","import_jsx_runtime","import_react","import_jsx_runtime","getValueArray","option","React","LabelPrimitive","import_class_variance_authority","import_react_i18next","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","styles_default","import_jsx_runtime","styles_default","LABEL_PLACEMENT","styles_default","import_jsx_runtime","styles_default","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","React","DialogPrimitive","import_jsx_runtime","Draggable","React","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_react_i18next","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","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","React","getOptionScrollTop","React","getOptionId","import_jsx_runtime","AirbnbSelect","getOptionId","SelectTrigger","import_jsx_runtime","React","import_react_i18next","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_react","import_jsx_runtime","options"]}
|