@codapet/design-system 0.8.8 → 0.8.9
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.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/alert-banner.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/button.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/async-autocomplete.tsx","../src/hooks/use-mobile.ts","../src/components/ui/input.tsx","../src/components/ui/auto-resize-textarea.tsx","../src/components/ui/textarea.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/badge-actionable.tsx","../src/components/ui/badge-informative.tsx","../src/components/ui/badge-number.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/date-input.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-range-input.tsx","../src/components/ui/drawer.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/dropdown-select.tsx","../src/components/ui/faq-accordion.tsx","../src/components/ui/typography.tsx","../src/components/ui/form.tsx","../src/components/ui/label.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/menubar.tsx","../src/components/ui/multi-select-free-text.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/option-card.tsx","../src/components/ui/pagination.tsx","../src/components/ui/progress.tsx","../src/components/ui/progress-bar.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/search-input.tsx","../src/components/ui/searchable-select.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/slider.tsx","../src/components/ui/smart-dialog-drawer.tsx","../src/components/ui/useMediaQuery.ts","../src/components/ui/sonner.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/theme-provider.tsx","../src/components/ui/theme-toggle.tsx","../src/components/ui/time-input.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/hooks/use-theme.ts"],"sourcesContent":["import * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { ChevronDownIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\ntype AccordionVariant = 'default' | 'outlined'\n\n/** Offset between consecutive items when the root has `staggerReveal`. */\nconst ACCORDION_STAGGER_STEP_MS = 80\n\nconst AccordionContext = React.createContext<{\n variant: AccordionVariant\n staggerReveal: boolean\n}>({\n variant: 'default',\n staggerReveal: false\n})\n\nexport type AccordionProps = React.ComponentProps<\n typeof AccordionPrimitive.Root\n> & {\n variant?: AccordionVariant\n /**\n * Fade-and-rise every item in on mount. Give each `AccordionItem` a\n * `revealIndex` so they land 80ms apart; without it they arrive together.\n * Skipped entirely under `prefers-reduced-motion`.\n */\n staggerReveal?: boolean\n}\n\nfunction Accordion({\n variant = 'default',\n staggerReveal = false,\n className,\n ...props\n}: AccordionProps) {\n const context = React.useMemo(\n () => ({ variant, staggerReveal }),\n [variant, staggerReveal]\n )\n return (\n <AccordionContext.Provider value={context}>\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n className={cn(\n variant === 'outlined' && 'flex flex-col gap-3',\n className\n )}\n {...props}\n />\n </AccordionContext.Provider>\n )\n}\n\nexport type AccordionItemProps = React.ComponentProps<\n typeof AccordionPrimitive.Item\n> & {\n /** Position in the list; sets this item's delay when the root has `staggerReveal`. */\n revealIndex?: number\n}\n\nfunction AccordionItem({\n className,\n style,\n revealIndex,\n ...props\n}: AccordionItemProps) {\n const { variant, staggerReveal } = React.useContext(AccordionContext)\n const staggerStyle =\n staggerReveal && revealIndex\n ? { animationDelay: `${revealIndex * ACCORDION_STAGGER_STEP_MS}ms` }\n : undefined\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n variant === 'outlined'\n ? cn(\n 'rounded-xl border border-border-default',\n // Border warms to the brand stroke on pointer hover only — a\n // touch device would otherwise keep the hover colour after a tap.\n 'transition-[border-color] duration-300 ease-out motion-reduce:transition-none',\n '[@media(hover:hover)]:hover:border-primary-stroke-default/60'\n )\n : 'border-b last:border-b-0',\n staggerReveal && 'animate-accordion-item-in',\n className\n )}\n style={staggerStyle ? { ...staggerStyle, ...style } : style}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerIcon = 'chevron' | 'plus-minus'\n\nexport type AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n> & {\n expandedIcon?: React.ReactNode\n collapsedIcon?: React.ReactNode\n /**\n * Built-in indicator, used when no custom icons are given. `chevron`\n * rotates; `plus-minus` morphs a + into a − as the item opens.\n */\n icon?: AccordionTriggerIcon\n /** Merged onto the built-in indicator to resize or recolour it. */\n iconClassName?: string\n}\n\n/** Two bars sharing one grid cell: the upright one rotates flat, so + becomes −. */\nfunction PlusMinusIcon({ className }: { className?: string }) {\n return (\n <span\n aria-hidden\n className={cn(\n 'text-gray-icon-default pointer-events-none relative grid size-6 shrink-0 place-items-center',\n className\n )}\n >\n <span className=\"col-start-1 row-start-1 h-[1.8px] w-3.5 rounded-full bg-current\" />\n <span className=\"col-start-1 row-start-1 h-[1.8px] w-3.5 origin-center rotate-90 rounded-full bg-current transition-[rotate] duration-[280ms] ease-[cubic-bezier(0.33,1,0.68,1)] group-data-[state=open]:rotate-0 motion-reduce:transition-none\" />\n </span>\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n expandedIcon,\n collapsedIcon,\n icon = 'chevron',\n iconClassName,\n ...props\n}: AccordionTriggerProps) {\n const { variant } = React.useContext(AccordionContext)\n const hasCustomIcon =\n expandedIcon !== undefined || collapsedIcon !== undefined\n const animatedIconSwap =\n variant === 'outlined' &&\n collapsedIcon !== undefined &&\n expandedIcon !== undefined\n const usesChevron = !hasCustomIcon && icon === 'chevron'\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50',\n variant === 'outlined' &&\n 'min-h-16 items-center gap-8 px-5 py-4 text-base lg:px-6 lg:text-lg lg:leading-7 hover:no-underline',\n usesChevron && '[&[data-state=open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n {hasCustomIcon ? (\n animatedIconSwap ? (\n <span className=\"pointer-events-none grid shrink-0 text-muted-foreground *:[grid-area:1/1] *:transition-[rotate,opacity] *:duration-300 *:ease-[cubic-bezier(0.33,1,0.68,1)]\">\n <span className=\"group-data-[state=open]:rotate-90 group-data-[state=open]:opacity-0\">\n {collapsedIcon}\n </span>\n <span className=\"-rotate-90 opacity-0 group-data-[state=open]:rotate-0 group-data-[state=open]:opacity-100\">\n {expandedIcon}\n </span>\n </span>\n ) : (\n <>\n {collapsedIcon !== undefined && (\n <span className=\"group-data-[state=open]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {collapsedIcon}\n </span>\n )}\n {expandedIcon !== undefined && (\n <span className=\"group-data-[state=closed]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {expandedIcon}\n </span>\n )}\n </>\n )\n ) : icon === 'plus-minus' ? (\n <PlusMinusIcon className={iconClassName} />\n ) : (\n <ChevronDownIcon\n className={cn(\n 'text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-400',\n iconClassName\n )}\n />\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n const { variant } = React.useContext(AccordionContext)\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className={cn(\n 'overflow-hidden text-sm',\n // Outlined cards fade while they grow; the stripe variant keeps the\n // shadcn height-only motion.\n variant === 'outlined'\n ? 'data-[state=closed]:animate-accordion-up-fade data-[state=open]:animate-accordion-down-fade'\n : 'data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down'\n )}\n {...props}\n >\n <div\n className={cn(\n variant === 'outlined' ? 'px-5 pb-5 lg:px-6 lg:pb-6' : 'pt-0 pb-4',\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst alertBannerVariants = cva(\n 'flex items-start gap-3 w-full rounded-[12px] border px-3 py-4 text-sm leading-5',\n {\n variants: {\n type: {\n informative:\n 'bg-alert-bg-informative border-gray-stroke-light [&_svg]:text-[#52525c] dark:[&_svg]:text-[#a1a1aa]',\n error:\n 'bg-alert-bg-error border-error-stroke-light [&_svg]:text-[#ff6467] dark:[&_svg]:text-[#ff8486]',\n success:\n 'bg-success-surface-subtle border-success-stroke-light [&_svg]:text-[#00a63e] dark:[&_svg]:text-[#34d399]'\n }\n },\n defaultVariants: {\n type: 'informative'\n }\n }\n)\n\nexport interface AlertBannerProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof alertBannerVariants> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n}\n\nfunction AlertBanner({\n className,\n type,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n ...props\n}: AlertBannerProps) {\n return (\n <div\n data-slot=\"alert-banner\"\n role=\"alert\"\n className={cn(alertBannerVariants({ type }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5 text-vibrant-text-heading\">\n {heading}\n </p>\n )}\n <div className=\"font-normal text-sm leading-5 text-vibrant-text-body\">\n {children}\n </div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"flex items-center justify-center shrink-0 size-5 text-vibrant-text-body hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-2.5\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { AlertBanner, alertBannerVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst buttonVariants = cva(\n \"cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-semibold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none relative select-none will-change-auto focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-lg focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive duration-400\",\n {\n variants: {\n variant: {\n primary:\n 'bg-primary text-primary-foreground hover:bg-brand-dark active:bg-active-primary',\n secondary:\n 'bg-brand-subtle text-primary-stroke-default hover:bg-primary-surface-light border border-brand-light active:bg-icon-disabled',\n tertiary:\n 'bg-gray-surface-light text-foreground-secondary hover:bg-gray-surface-default border border-gray-stroke-light hover:border-transparent active:border-transparent active:bg-[#9f9fa9] dark:active:bg-[#71717a]',\n outline:\n 'text-foreground-secondary border border-gray-surface-default bg-background hover:bg-gray-surface-light hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 active:bg-gray-surface-default',\n ghost:\n 'text-primary-stroke-default hover:bg-primary-surface-subtle dark:hover:bg-accent/50 active:bg-primary-surface-light',\n 'ghost-secondary':\n 'text-foreground-secondary hover:bg-gray-surface-light hover:text-accent-foreground dark:hover:bg-accent/50 active:bg-gray-surface-default',\n 'ghost-destructive':\n 'bg-transparent text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n link: 'text-foreground-secondary underline-offset-4 underline hover:bg-none active:bg-none hover:text-brand-vibrant',\n destructive:\n 'bg-error-destructive text-primary-foreground hover:bg-red-800 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-error-surface-dark',\n 'destructive-secondary':\n 'bg-error-surface-light border border-error-stroke-light text-destructive-text hover:border-error-surface-default focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n 'destructive-tertiary':\n 'bg-transparent border border-error-stroke-light text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active'\n },\n size: {\n md: 'h-10 px-4 py-2 has-[>svg]:px-3 text-lg',\n sm: 'h-9 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 text-base',\n lg: 'h-12 rounded-md px-6 has-[>svg]:px-4 text-lg',\n icon: 'size-8'\n }\n },\n defaultVariants: {\n variant: 'primary',\n size: 'lg'\n }\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","import * as DialogPrimitive from '@radix-ui/react-dialog'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ArrowLeft, Loader2, X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { cn } from '@/lib/utils'\nimport { Input } from './input'\n\n/* ─── Scroll dismissal ─────────────────────────────────────── */\n\n/**\n * Chrome's touch slop is 8px and iOS's is ~10px. Small enough that a real\n * drag feels instant, large enough to ignore the 1-3px of jitter a plain tap\n * produces.\n */\nconst TOUCH_SLOP_PX = 8\n\n/**\n * Dismisses an open floating layer when the user *intentionally* scrolls.\n *\n * Deliberately listens for `touchmove`/`wheel` rather than `scroll`: focusing\n * an input on mobile opens the on-screen keyboard, and the browser then\n * scrolls the focused field into view. That fires `scroll` (and, on Android,\n * `resize`), so a `scroll` listener would close the panel on the very\n * interaction that opened it. Gestures only exist because a human moved\n * something, which removes the need for grace periods or delta heuristics.\n *\n * Firing at the *start* of the gesture also makes iOS momentum scrolling a\n * non-problem: we are already closed before `touchend`, so the long tail of\n * post-gesture `scroll` events has nothing left to act on.\n */\nfunction useDismissOnScroll(\n enabled: boolean,\n onDismiss: () => void,\n ignore: React.RefObject<HTMLElement | null>[]\n) {\n // Latest-value ref: callers pass an inline arrow and a fresh array every\n // render, and re-binding document listeners for that would reset the\n // per-gesture state below. No dependency array — gestures happen after\n // paint, so this is always fresh before the user can produce one.\n const latest = React.useRef({ onDismiss, ignore })\n React.useEffect(() => {\n latest.current = { onDismiss, ignore }\n })\n\n React.useEffect(() => {\n if (!enabled) return\n\n let dismissed = false\n let hasOrigin = false\n let originX = 0\n let originY = 0\n let originIgnored = false\n\n const isIgnored = (target: EventTarget | null) =>\n target instanceof Node &&\n latest.current.ignore.some(ref => !!ref.current?.contains(target))\n\n const dismiss = () => {\n // Latch: more touchmoves arrive between here and the re-render that\n // flips `enabled` off. Fire exactly once per open cycle.\n if (dismissed) return\n dismissed = true\n latest.current.onDismiss()\n }\n\n const setOrigin = (target: EventTarget | null, x: number, y: number) => {\n hasOrigin = true\n originX = x\n originY = y\n // A touchmove is always dispatched to the element the touch *started*\n // on, even after the finger leaves it — so \"did this gesture start\n // inside the list?\" only has to be answered once, here.\n originIgnored = isIgnored(target)\n }\n\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.touches[0]\n if (touch) setOrigin(event.target, touch.clientX, touch.clientY)\n }\n\n const handleTouchMove = (event: TouchEvent) => {\n if (dismissed) return\n const touch = event.touches[0]\n if (!touch) return\n // The panel usually opens *during* a touch (tap field -> focus ->\n // open), so these listeners are often bound after touchstart already\n // fired. Without this branch we would measure against a bogus (0,0)\n // origin and dismiss on the first micro-move of the opening tap.\n if (!hasOrigin) {\n setOrigin(event.target, touch.clientX, touch.clientY)\n return\n }\n if (originIgnored) return\n const dx = touch.clientX - originX\n const dy = touch.clientY - originY\n if (dx * dx + dy * dy < TOUCH_SLOP_PX * TOUCH_SLOP_PX) return\n dismiss()\n }\n\n const handleTouchEnd = () => {\n hasOrigin = false\n }\n\n const handleWheel = (event: WheelEvent) => {\n // `wheel` targets the element under the pointer, so unlike touch this\n // genuinely needs a per-event containment check.\n if (dismissed || isIgnored(event.target)) return\n dismiss()\n }\n\n // capture: an ancestor carousel / drawer / map may stopPropagation on\n // touchmove, and capture also runs before React's root listeners.\n // passive: we never preventDefault, and a non-passive document-level\n // touchmove listener forces the compositor off the fast scrolling path.\n const options: AddEventListenerOptions = { passive: true, capture: true }\n document.addEventListener('touchstart', handleTouchStart, options)\n document.addEventListener('touchmove', handleTouchMove, options)\n document.addEventListener('touchend', handleTouchEnd, options)\n document.addEventListener('touchcancel', handleTouchEnd, options)\n document.addEventListener('wheel', handleWheel, options)\n\n return () => {\n // removeEventListener matches on (type, listener, capture) — `passive`\n // is not part of a listener's identity, but `capture` is, so the third\n // argument here is mandatory.\n document.removeEventListener('touchstart', handleTouchStart, true)\n document.removeEventListener('touchmove', handleTouchMove, true)\n document.removeEventListener('touchend', handleTouchEnd, true)\n document.removeEventListener('touchcancel', handleTouchEnd, true)\n document.removeEventListener('wheel', handleWheel, true)\n }\n }, [enabled])\n}\n\n/* ─── Types ────────────────────────────────────────────────── */\n\nexport interface AsyncAutocompleteOption<TData = unknown> {\n /** Stable unique key. Doubles as the DOM id suffix — a `place_id`, slug, … */\n id: string\n /** Primary line. */\n label: string\n /** Secondary line, rendered dimmed after the label. */\n description?: string\n /** Leading icon/avatar for this row. Falls back to `optionIcon`. */\n icon?: React.ReactNode\n /** Rendered dimmed, and skipped by keyboard navigation and clicks. */\n disabled?: boolean\n /**\n * Merged onto this row only, after `classNames.option` — so a single row can\n * be styled differently from its siblings (a \"use my location\" entry, a\n * promoted result).\n */\n className?: string\n /**\n * Arbitrary consumer payload handed straight back by `onSelect` — a raw\n * Google `AutocompletePrediction`, a REST row, a whole domain object. The\n * design system never inspects it.\n */\n data?: TData\n}\n\n/** Row state passed to `renderOption`. */\nexport interface AsyncAutocompleteOptionState {\n /** Position in `options`. Matches the `-suggestion-N` DOM id. */\n index: number\n /** True when keyboard- or hover-highlighted (`aria-activedescendant`). */\n highlighted: boolean\n /** Current input text, for match highlighting. */\n query: string\n}\n\n/**\n * Long-tail `<input>` props forwarded to the text field. The props\n * `AsyncAutocomplete` owns are excluded; `onFocus`, `onKeyDown` and\n * `onPointerDown` are chained after the component's own handlers rather than\n * replacing them.\n */\nexport type AsyncAutocompleteInputProps = Omit<\n React.ComponentPropsWithoutRef<'input'>,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'size'\n | 'disabled'\n | 'placeholder'\n | 'id'\n | 'type'\n | 'role'\n | 'readOnly'\n>\n\n/**\n * Per-slot class overrides. Every entry is merged with `cn`, so\n * tailwind-merge lets a caller class replace a conflicting default rather than\n * fight it — `{ content: 'max-h-[420px]' }` really does replace the built-in\n * max-height.\n *\n * `DateInput`/`TimeInput` expose two or three flat `*ClassName` props;\n * `AsyncAutocomplete` has twenty-odd stylable slots, so they live in one\n * object here instead of twenty top-level props burying `onSearch`/`onSelect`.\n */\nexport interface AsyncAutocompleteClassNames {\n /** Wrapper around the input — also the popover's anchor. */\n field?: string\n /** The visible label element. */\n label?: string\n /** The text input itself. */\n input?: string\n /** Left icon wrapper inside the input. */\n leftIcon?: string\n /** The clear (\"X\") button. */\n clearButton?: string\n /** The popover surface holding the results. */\n content?: string\n /** The `role=\"listbox\"` container, in both popover and sheet. */\n listbox?: string\n /** Every option row. */\n option?: string\n /** Added to the highlighted row, on top of `option`. */\n optionHighlighted?: string\n /** Added to a disabled row, on top of `option`. */\n optionDisabled?: string\n /** Icon wrapper inside a default row. Not applied when `renderOption` is used. */\n optionIcon?: string\n /** Primary text span in a default row. Not applied when `renderOption` is used. */\n optionLabel?: string\n /** Secondary text span in a default row. Not applied when `renderOption` is used. */\n optionDescription?: string\n /** The loading row. */\n loading?: string\n /** The spinner inside the loading row. */\n loadingSpinner?: string\n /** The empty (\"no results\") row. Not applied when `emptyState` is used. */\n empty?: string\n /** The sheet's backdrop. */\n sheetOverlay?: string\n /** The sheet panel. */\n sheetContent?: string\n /** The sheet's pinned header row. */\n sheetHeader?: string\n /** The sheet's close/back button. */\n sheetCloseButton?: string\n /** The sheet's own text input. */\n sheetInput?: string\n /** The sheet's scrollable results area. */\n sheetList?: string\n}\n\nexport interface AsyncAutocompleteProps<TData = unknown> {\n /* ── Data (consumer-owned fetching) ── */\n\n /**\n * Current result set, rendered **verbatim**. `AsyncAutocomplete` never\n * filters, sorts or caches — map your API response to options yourself.\n */\n options: AsyncAutocompleteOption<TData>[]\n /**\n * Fired on every keystroke with the raw input text, plus `''` when the\n * clear button is pressed. **Not debounced** — debounce in your fetch layer\n * (`usePlacesService({ debounce: 300 })`, a `setTimeout` hook, …) so\n * request cancellation and out-of-order responses stay with the code that\n * owns them.\n */\n onSearch: (query: string) => void\n /**\n * Fired when an option is committed by click, tap or Enter. Closes the\n * panel. Deliberately does **not** write the label into the input: call\n * sites resolve their own display text (a `getDetails` lookup, a\n * `formatted_address`) or clear the field. Drive `value` yourself.\n */\n onSelect: (option: AsyncAutocompleteOption<TData>) => void\n /**\n * A request is in flight.\n *\n * The spinner row only replaces the list when there is nothing else to show.\n * If results are already on screen they stay put and the listbox is marked\n * `aria-busy` / `data-busy` instead — so typing another character does not\n * flash the panel back to \"Searching…\".\n */\n loading?: boolean\n\n /* ── Input text (controlled / uncontrolled) ── */\n\n /** Controlled input text. */\n value?: string\n /** Initial input text when uncontrolled. */\n defaultValue?: string\n /** Fired on every input change and on clear. */\n onValueChange?: (value: string) => void\n /**\n * Fired only when the clear (X) button is pressed, after\n * `onValueChange('')` and `onSearch('')`. Use it to drop the selected\n * entity. Focus is returned to the input automatically.\n */\n onClear?: () => void\n\n /* ── Input chrome ── */\n\n placeholder?: string\n /**\n * Visible label, rendered above the field and wired to it with `htmlFor`.\n *\n * A combobox **must** have an accessible name — the ARIA practices are\n * explicit that a placeholder is not one. Provide either this, or an\n * `aria-label`/`aria-labelledby` through `inputProps`. In development the\n * component warns when neither is present.\n */\n label?: string\n /** Appends a red asterisk to `label`. */\n mandatory?: boolean\n /** Decorative leading icon — `<MapPin />`, `<Stethoscope />`, … */\n leftIcon?: React.ReactNode\n /** Fixed height: `sm` 40px · `md` 48px (default) · `lg` 56px. */\n size?: 'sm' | 'md' | 'lg'\n /** Error color scheme on the input. Also sets `aria-invalid`. */\n error?: boolean\n disabled?: boolean\n /** Forwarded to the underlying `<input>` for imperative focus. */\n inputRef?: React.Ref<HTMLInputElement>\n /** Escape hatch for `name`, `enterKeyHint`, `inputMode`, `autoFocus`, … */\n inputProps?: AsyncAutocompleteInputProps\n\n /* ── Presentation ── */\n\n /**\n * `'popover'` (default) always anchors a portaled popover under the field\n * and dismisses it as soon as the user scrolls. `'sheet'` keeps that\n * behavior above 768px but turns the search into a full-screen takeover on\n * phones, where the page behind is scroll-locked.\n */\n mobileVariant?: 'popover' | 'sheet'\n /**\n * Replace a whole row. The default renders `label` plus a dimmed\n * `, description` on one truncated line with a leading icon. Reach for this\n * for stacked two-line rows, avatars, or bold match highlighting — the\n * wrapper, `role=\"option\"`, ids, highlight background and click/keyboard\n * wiring stay with the component.\n *\n * Keep the content non-interactive: it renders inside `role=\"option\"`, and a\n * nested button or link there is both invalid and unreachable by keyboard,\n * since the row is driven by `aria-activedescendant` rather than focus.\n */\n renderOption?: (\n option: AsyncAutocompleteOption<TData>,\n state: AsyncAutocompleteOptionState\n ) => React.ReactNode\n /** Default leading icon for rows without their own `option.icon`. */\n optionIcon?: React.ReactNode\n /** \"No results\" copy. Ignored when `emptyState` is provided. */\n emptyMessage?: string\n /** Full replacement for the empty row — an illustration, a CTA, … */\n emptyState?: React.ReactNode\n /** Copy beside the loading spinner. */\n loadingMessage?: string\n /** Replaces the clear button's `X` glyph. */\n clearIcon?: React.ReactNode\n /** Accessible name for the clear button. */\n clearLabel?: string\n /** Accessible name for the `mobileVariant=\"sheet\"` takeover. */\n sheetTitle?: string\n /** Replaces the sheet's back-arrow glyph. */\n sheetCloseIcon?: React.ReactNode\n /** Accessible name for the sheet's close button. */\n sheetCloseLabel?: string\n\n /* ── Open state ── */\n\n /** Controlled open state. Prefer `defaultOpen` unless you truly need this. */\n open?: boolean\n /** Start open — for fields mounted lazily on focus. */\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n\n /* ── Ids ── */\n\n /**\n * Prefix for stable DOM ids, so analytics autocapture keeps working:\n * `{idPrefix}-input`, `{idPrefix}-clear`, `{idPrefix}-listbox`,\n * `{idPrefix}-suggestion-{index}`, and in sheet mode also\n * `{idPrefix}-sheet-input` and `{idPrefix}-sheet-clear`. Falls back to a\n * `useId()` value, which is fine for ARIA wiring but not usable as a CSS\n * selector.\n */\n idPrefix?: string\n\n /* ── Styling ── */\n\n /** Merged onto the root wrapper. */\n className?: string\n /** Per-slot class overrides. See `AsyncAutocompleteClassNames`. */\n classNames?: AsyncAutocompleteClassNames\n}\n\n/* ─── Component ────────────────────────────────────────────── */\n\nconst rowClassName =\n 'flex items-center gap-[12px] min-h-[48px] px-[8px] rounded-[8px] cursor-pointer select-none transition-colors hover:bg-gray-surface-light'\n\nconst messageClassName =\n 'flex items-center gap-[8px] min-h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details'\n\nfunction AsyncAutocomplete<TData = unknown>({\n options,\n onSearch,\n onSelect,\n loading = false,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n onClear,\n placeholder,\n label,\n mandatory = false,\n leftIcon,\n size = 'md',\n error = false,\n disabled = false,\n inputRef,\n inputProps,\n mobileVariant = 'popover',\n renderOption,\n optionIcon,\n emptyMessage = 'No results found',\n emptyState,\n loadingMessage = 'Searching…',\n clearIcon,\n clearLabel = 'Clear',\n sheetTitle = 'Search',\n sheetCloseIcon,\n sheetCloseLabel = 'Close search',\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n idPrefix,\n className,\n classNames\n}: AsyncAutocompleteProps<TData>) {\n const reactId = React.useId()\n const prefix = idPrefix ?? `async-autocomplete-${reactId}`\n const listboxId = `${prefix}-listbox`\n const optionDomId = (index: number) => `${prefix}-suggestion-${index}`\n\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n // Which presentation this open cycle committed to. A rotated iPhone 14 is\n // 844px wide — no longer \"mobile\" — and letting that swap presentation\n // mid-search would drop focus, the keyboard and the scroll lock.\n const [pinnedSheet, setPinnedSheet] = React.useState<boolean | null>(null)\n\n const fieldRef = React.useRef<HTMLDivElement>(null)\n const contentRef = React.useRef<HTMLDivElement>(null)\n const pageInputRef = React.useRef<HTMLInputElement | null>(null)\n const sheetInputRef = React.useRef<HTMLInputElement | null>(null)\n const optionRefs = React.useRef<(HTMLDivElement | null)[]>([])\n\n const isMobile = useIsMobile()\n\n // A combobox with no accessible name is an accessibility defect, and the\n // failure is silent — so say so at the moment of misuse rather than leaving\n // it to an audit.\n const hasAccessibleName =\n !!label || !!inputProps?.['aria-label'] || !!inputProps?.['aria-labelledby']\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production' || hasAccessibleName) return\n console.warn(\n '[AsyncAutocomplete] No accessible name. Pass `label`, or an ' +\n '`aria-label`/`aria-labelledby` via `inputProps`. A `placeholder` ' +\n 'does not name a combobox.'\n )\n }, [hasAccessibleName])\n\n const isControlledValue = valueProp !== undefined\n const isControlledOpen = openProp !== undefined\n const query = isControlledValue ? valueProp : internalValue\n const isOpen = isControlledOpen ? openProp : internalOpen\n\n const wantsSheet = mobileVariant === 'sheet' && isMobile\n const useSheet = isOpen ? (pinnedSheet ?? wantsSheet) : wantsSheet\n\n const {\n onFocus: inputOnFocus,\n onKeyDown: inputOnKeyDown,\n onPointerDown: inputOnPointerDown,\n ...restInputProps\n } = inputProps ?? {}\n\n const setPageInputNode = React.useCallback(\n (node: HTMLInputElement | null) => {\n pageInputRef.current = node\n if (typeof inputRef === 'function') inputRef(node)\n else if (inputRef) {\n ;(inputRef as React.RefObject<HTMLInputElement | null>).current = node\n }\n },\n [inputRef]\n )\n\n const openPanel = React.useCallback(() => {\n if (disabled || isOpen) return\n setPinnedSheet(wantsSheet)\n if (!isControlledOpen) setInternalOpen(true)\n onOpenChange?.(true)\n }, [disabled, isOpen, wantsSheet, isControlledOpen, onOpenChange])\n\n const closePanel = React.useCallback(() => {\n if (!isOpen) return\n setPinnedSheet(null)\n setHighlightedIndex(-1)\n if (!isControlledOpen) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isOpen, isControlledOpen, onOpenChange])\n\n const updateValue = React.useCallback(\n (next: string) => {\n if (!isControlledValue) setInternalValue(next)\n onValueChange?.(next)\n },\n [isControlledValue, onValueChange]\n )\n\n const handleQueryChange = React.useCallback(\n (next: string) => {\n updateValue(next)\n onSearch(next)\n setHighlightedIndex(-1)\n openPanel()\n },\n [updateValue, onSearch, openPanel]\n )\n\n const handleSelect = React.useCallback(\n (option: AsyncAutocompleteOption<TData>) => {\n if (option.disabled) return\n onSelect(option)\n closePanel()\n },\n [onSelect, closePanel]\n )\n\n // Keyed on the sheet actually being open, not on the variant: clearing from\n // the closed opener must focus the opener, not the unmounted sheet input.\n const sheetIsOpen = isOpen && useSheet\n\n const handleClear = React.useCallback(() => {\n updateValue('')\n onSearch('')\n onClear?.()\n setHighlightedIndex(-1)\n // Inside the sheet the user is still in search mode, so it stays open —\n // there is nothing meaningful to anchor a popover to for an empty query.\n if (!sheetIsOpen) closePanel()\n const node = sheetIsOpen ? sheetInputRef.current : pageInputRef.current\n node?.focus()\n }, [updateValue, onSearch, onClear, sheetIsOpen, closePanel])\n\n // Indexes that keyboard navigation is allowed to land on.\n const enabledIndexes = React.useMemo(\n () =>\n options.reduce<number[]>((acc, option, index) => {\n if (!option.disabled) acc.push(index)\n return acc\n }, []),\n [options]\n )\n\n const moveHighlight = React.useCallback(\n (delta: 1 | -1) => {\n if (enabledIndexes.length === 0) return\n const current = enabledIndexes.indexOf(highlightedIndex)\n const next =\n current === -1\n ? delta === 1\n ? 0\n : enabledIndexes.length - 1\n : (current + delta + enabledIndexes.length) % enabledIndexes.length\n setHighlightedIndex(enabledIndexes[next])\n },\n [enabledIndexes, highlightedIndex]\n )\n\n // Key on the ids, not on `options` itself: consumers map their options\n // inline, so the array identity is new on every parent render and keying on\n // it would reset the highlight constantly — arrow keys would never advance.\n const optionsKey = options.map(option => option.id).join('|')\n React.useEffect(() => {\n setHighlightedIndex(-1)\n }, [optionsKey])\n\n React.useEffect(() => {\n if (highlightedIndex < 0) return\n optionRefs.current[highlightedIndex]?.scrollIntoView({ block: 'nearest' })\n }, [highlightedIndex])\n\n const hasOptions = options.length > 0\n // The spinner only takes over the panel when there is nothing else to show.\n // Once results are visible, a follow-up keystroke must not throw them away —\n // that made the list flash back to \"Searching…\" on every character.\n const showLoadingRow = loading && !hasOptions\n const showEmpty = !loading && !hasOptions && query.trim() !== ''\n // Results on screen while the next request is in flight.\n const isRefreshing = loading && hasOptions\n const hasBody = showLoadingRow || hasOptions || showEmpty\n const popoverOpen = isOpen && !useSheet && hasBody\n\n const dismissIgnoreRefs = React.useMemo(() => [contentRef, fieldRef], [])\n useDismissOnScroll(popoverOpen, closePanel, dismissIgnoreRefs)\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // In sheet mode the in-page field is a read-only opener, so keyboard\n // users need an explicit way in.\n if (\n useSheet &&\n !isOpen &&\n (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')\n ) {\n event.preventDefault()\n openPanel()\n inputOnKeyDown?.(event)\n return\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n if (!isOpen) openPanel()\n else moveHighlight(event.key === 'ArrowDown' ? 1 : -1)\n } else if (event.key === 'Enter') {\n const option =\n highlightedIndex >= 0 ? options[highlightedIndex] : undefined\n if (option) {\n // Also stops an enclosing <form> from submitting.\n event.preventDefault()\n handleSelect(option)\n }\n } else if (event.key === 'Escape') {\n if (isOpen) {\n event.preventDefault()\n closePanel()\n }\n } else if (event.key === 'Tab') {\n closePanel()\n }\n\n inputOnKeyDown?.(event)\n }\n\n // In sheet mode the opener and the sheet's own field are both mounted, so\n // each clear button needs its own id — one shared id would be a duplicate.\n const clearButtonProps = (id: string) =>\n query\n ? {\n // `Button` has no default `type`, so without this the clear button\n // submits any enclosing form. preventDefault on pointer-down keeps\n // the iOS keyboard up and stops focus leaving the field.\n type: 'button' as const,\n id,\n 'aria-label': clearLabel,\n onMouseDown: (event: React.MouseEvent) => event.preventDefault()\n }\n : undefined\n\n const renderRow = (option: AsyncAutocompleteOption<TData>, index: number) => {\n const highlighted = highlightedIndex === index\n const icon = option.icon ?? optionIcon\n\n return (\n <div\n key={option.id}\n id={optionDomId(index)}\n ref={node => {\n optionRefs.current[index] = node\n }}\n role=\"option\"\n aria-selected={highlighted}\n aria-disabled={option.disabled}\n data-slot=\"async-autocomplete-option\"\n data-highlighted={highlighted || undefined}\n data-disabled={option.disabled || undefined}\n // Without this, pointer-down blurs the input, a blur-driven close\n // unmounts the portal, and the click never lands — the row silently\n // does nothing.\n onMouseDown={event => event.preventDefault()}\n onMouseEnter={() => {\n if (!option.disabled) setHighlightedIndex(index)\n }}\n onClick={() => handleSelect(option)}\n // Order is deliberate: base, then state, then the caller's slot\n // classes, then the row's own — most specific wins under tailwind-merge.\n className={cn(\n rowClassName,\n highlighted && 'bg-gray-surface-light',\n option.disabled && 'opacity-50 cursor-not-allowed',\n classNames?.option,\n highlighted && classNames?.optionHighlighted,\n option.disabled && classNames?.optionDisabled,\n option.className\n )}\n >\n {renderOption ? (\n renderOption(option, { index, highlighted, query })\n ) : (\n <>\n {icon && (\n <span\n className={cn(\n 'flex shrink-0 items-center justify-center size-[20px] [&_svg]:size-[20px] text-gray-icon-light',\n classNames?.optionIcon\n )}\n >\n {icon}\n </span>\n )}\n <span\n className={cn(\n 'min-w-0 flex-1 truncate font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading',\n classNames?.optionLabel\n )}\n >\n {option.label}\n {option.description && (\n <span\n className={cn(\n 'text-gray-subtle',\n classNames?.optionDescription\n )}\n >\n {`, ${option.description}`}\n </span>\n )}\n </span>\n </>\n )}\n </div>\n )\n }\n\n const listbox = (\n <div\n role=\"listbox\"\n id={listboxId}\n // `aria-busy` tells assistive tech the list is updating; `data-busy` is\n // only set while stale results are still shown, so callers can style the\n // refresh (e.g. `classNames.listbox=\"data-[busy=true]:opacity-60\"`).\n aria-busy={loading || undefined}\n data-busy={isRefreshing || undefined}\n className={cn('flex flex-col', classNames?.listbox)}\n >\n {showLoadingRow ? (\n // `role=\"listbox\"` may only own `option` and `group` children, so the\n // status rows are disabled options: still announced, never selectable,\n // and skipped by keyboard nav since they are not in `options`.\n <div\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n className={cn(messageClassName, classNames?.loading)}\n >\n <Loader2\n className={cn(\n 'size-[16px] animate-spin text-gray-icon-light',\n classNames?.loadingSpinner\n )}\n />\n {loadingMessage}\n </div>\n ) : showEmpty ? (\n <div\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n className={cn(!emptyState && messageClassName, classNames?.empty)}\n >\n {emptyState ?? emptyMessage}\n </div>\n ) : (\n options.map(renderRow)\n )}\n </div>\n )\n\n const activeDescendant =\n highlightedIndex >= 0 ? optionDomId(highlightedIndex) : undefined\n\n const labelNode = label ? (\n <label\n htmlFor={`${prefix}-input`}\n data-slot=\"async-autocomplete-label\"\n className={cn(\n 'flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details',\n classNames?.label\n )}\n >\n {label}\n {mandatory && (\n // Decorative: the requirement is conveyed by aria-required on the\n // input, so screen readers say \"City, required\" rather than \"City star\".\n <span\n aria-hidden=\"true\"\n className=\"ml-0.5 text-[14px] leading-[20px] text-error-surface-default\"\n >\n *\n </span>\n )}\n </label>\n ) : null\n\n const field = (\n <div ref={fieldRef} className={cn('relative w-full', classNames?.field)}>\n <Input\n {...restInputProps}\n ref={setPageInputNode}\n id={`${prefix}-input`}\n type=\"text\"\n autoComplete=\"off\"\n role=\"combobox\"\n aria-haspopup={useSheet ? 'dialog' : 'listbox'}\n aria-expanded={useSheet ? sheetIsOpen : popoverOpen}\n aria-controls={popoverOpen ? listboxId : undefined}\n aria-autocomplete={useSheet ? undefined : 'list'}\n aria-required={mandatory || undefined}\n aria-activedescendant={popoverOpen ? activeDescendant : undefined}\n size={size}\n error={error}\n disabled={disabled}\n placeholder={placeholder}\n leftIcon={leftIcon}\n leftIconClassName={classNames?.leftIcon}\n rightIcon={query ? (clearIcon ?? <X />) : undefined}\n rightIconOnClick={query ? handleClear : undefined}\n rightIconButtonProps={clearButtonProps(`${prefix}-clear`)}\n rightIconClassName={classNames?.clearButton}\n className={cn(restInputProps.className, classNames?.input)}\n // In sheet mode this field is only an opener; all typing happens in\n // the takeover.\n readOnly={useSheet}\n value={query}\n onChange={event => handleQueryChange(event.target.value)}\n onFocus={event => {\n // Never open the sheet from `focus`: Radix Dialog restores focus to\n // its opener on close, so a focus-driven opener reopens forever.\n if (!useSheet) openPanel()\n inputOnFocus?.(event)\n }}\n onPointerDown={event => {\n // Because scroll-dismissal leaves focus in the field, a second tap\n // fires no `focus` event — without this the input goes dead.\n openPanel()\n inputOnPointerDown?.(event)\n }}\n onKeyDown={handleKeyDown}\n />\n </div>\n )\n\n return (\n <PopoverPrimitive.Root\n open={popoverOpen}\n onOpenChange={next => {\n if (!next) closePanel()\n }}\n >\n <div\n data-slot=\"async-autocomplete\"\n className={cn(\n 'flex w-full flex-col',\n labelNode && 'gap-[8px]',\n className\n )}\n >\n {labelNode}\n <PopoverPrimitive.Anchor asChild>{field}</PopoverPrimitive.Anchor>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={contentRef}\n data-slot=\"async-autocomplete-content\"\n sideOffset={8}\n align=\"start\"\n collisionPadding={8}\n // Visual safety net for scrolls that produce no gesture (a hash\n // jump, a programmatic scrollIntoView). It only hides — never\n // rely on it for dismissal.\n hideWhenDetached\n // Focus must never leave the inline input: the keyboard stays up\n // and typing keeps working while the list is open.\n onOpenAutoFocus={event => event.preventDefault()}\n onCloseAutoFocus={event => event.preventDefault()}\n // `Anchor` is not a `Trigger`, so Radix's own \"target is the\n // trigger\" guard reads a `triggerRef` that is always null here\n // and is dead code. Without this, tapping our own input dismisses.\n onPointerDownOutside={event => {\n if (fieldRef.current?.contains(event.target as Node)) {\n event.preventDefault()\n }\n }}\n // focusin-driven, so it reads the *new* focus owner. A container\n // onBlur + relatedTarget check cannot work here: relatedTarget is\n // falsy across a portal boundary and null on iOS taps.\n onFocusOutside={event => {\n if (fieldRef.current?.contains(event.target as Node)) {\n event.preventDefault()\n }\n }}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n // Clamp to what floating-ui measured from the *visual* viewport\n // so the list cannot extend behind the on-screen keyboard, and\n // contain overscroll so a fling inside the list does not chain\n // to the page and drag the anchor with it.\n 'max-h-[min(300px,var(--radix-popover-content-available-height))] overflow-y-auto overflow-x-hidden overscroll-contain',\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n classNames?.content\n )}\n >\n {listbox}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </div>\n\n {mobileVariant === 'sheet' && (\n <DialogPrimitive.Root\n open={sheetIsOpen}\n onOpenChange={next => {\n if (!next) closePanel()\n }}\n >\n <DialogPrimitive.Portal>\n {/* Opaque, not a scrim — the sheet is full-bleed. The Overlay is\n still rendered because Radix hangs the scroll lock and the\n pointer-events blocking off it. */}\n <DialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-white dark:bg-background',\n classNames?.sheetOverlay\n )}\n />\n <DialogPrimitive.Content\n // No prose to describe; silences Radix's dev warning.\n aria-describedby={undefined}\n className={cn(\n 'fixed inset-0 z-50 flex h-[100dvh] w-full flex-col bg-white outline-none dark:bg-background',\n classNames?.sheetContent\n )}\n onOpenAutoFocus={event => {\n // The trap would otherwise grab the close button. iOS only\n // raises the keyboard when .focus() runs inside the\n // activation window of the gesture that opened the sheet.\n event.preventDefault()\n requestAnimationFrame(() => sheetInputRef.current?.focus())\n }}\n // Do not hand focus back to the read-only opener — that is what\n // would make a focus-driven opener loop.\n onCloseAutoFocus={event => event.preventDefault()}\n >\n <DialogPrimitive.Title className=\"sr-only\">\n {sheetTitle}\n </DialogPrimitive.Title>\n\n {/* Pinned header. The field is at the top for a structural\n reason: iOS does not resize the layout viewport for the\n keyboard, so anything anchored to the bottom of a\n `fixed inset-0` sheet sits behind it. */}\n <div\n className={cn(\n 'flex shrink-0 items-center gap-[8px] p-[12px] pt-[max(12px,env(safe-area-inset-top))]',\n classNames?.sheetHeader\n )}\n >\n <DialogPrimitive.Close\n type=\"button\"\n aria-label={sheetCloseLabel}\n className={cn(\n 'flex size-[40px] shrink-0 cursor-pointer items-center justify-center rounded-[8px] text-gray-icon-light transition-colors hover:bg-gray-surface-light [&_svg]:size-[20px]',\n classNames?.sheetCloseButton\n )}\n >\n {sheetCloseIcon ?? <ArrowLeft />}\n </DialogPrimitive.Close>\n <div className=\"min-w-0 flex-1\">\n <Input\n ref={sheetInputRef}\n id={`${prefix}-sheet-input`}\n type=\"text\"\n autoComplete=\"off\"\n role=\"combobox\"\n aria-expanded\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-label={label ?? sheetTitle}\n size={size}\n placeholder={placeholder}\n leftIcon={leftIcon}\n leftIconClassName={classNames?.leftIcon}\n rightIcon={query ? (clearIcon ?? <X />) : undefined}\n rightIconOnClick={query ? handleClear : undefined}\n rightIconButtonProps={clearButtonProps(\n `${prefix}-sheet-clear`\n )}\n rightIconClassName={classNames?.clearButton}\n className={classNames?.sheetInput}\n value={query}\n onChange={event => handleQueryChange(event.target.value)}\n onKeyDown={handleKeyDown}\n // 16px minimum, or iOS zooms the page on focus.\n style={{ fontSize: 16 }}\n />\n </div>\n </div>\n\n <div\n className={cn(\n 'flex-1 overflow-y-auto overscroll-contain px-[12px] pb-[max(24px,env(safe-area-inset-bottom))]',\n classNames?.sheetList\n )}\n >\n {hasBody && listbox}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )}\n </PopoverPrimitive.Root>\n )\n}\n\nexport { AsyncAutocomplete }\n","import * as React from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from './button'\n\nconst inputVariants = cva(\n [\n // Base styles\n 'file:text-foreground-secondary placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-lg border bg-transparent text-base font-medium transition-all duration-400',\n 'outline-none font-sans',\n // File input styles\n 'file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium',\n // Disabled styles\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60 disabled:text-gray-icon-subtle'\n ],\n {\n variants: {\n size: {\n sm: 'h-10 px-3 py-2 text-base',\n md: 'h-12 px-3 py-2 text-base',\n lg: 'h-14 px-4 py-3 text-base'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nexport interface InputProps\n extends\n Omit<React.ComponentProps<'input'>, 'size'>,\n VariantProps<typeof inputVariants> {\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n leftIconClassName?: string\n rightIconClassName?: string\n rightIconOnClick?: () => void\n rightIconButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>\n error?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n size,\n leftIcon,\n rightIcon,\n leftIconClassName,\n rightIconClassName,\n rightIconOnClick,\n rightIconButtonProps,\n error,\n ...props\n },\n ref\n ) => {\n // Border/bg styles applied conditionally based on error state\n const stateStyles = error\n ? [\n 'border-error-stroke-default bg-background',\n 'hover:border-error-stroke-default',\n 'focus:border-error-stroke-default',\n 'focus-visible:border',\n 'active:border-error-stroke-default'\n ]\n : [\n 'border-gray-stroke-default bg-background',\n 'hover:border-focus-ring',\n 'focus:border-focus-ring',\n 'focus-visible:border',\n 'active:border-focus-ring'\n ]\n\n if (leftIcon || rightIcon) {\n return (\n <div className=\"relative\">\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n inputVariants({ size }),\n stateStyles,\n 'peer',\n leftIcon && 'pl-10',\n rightIcon && 'pr-10',\n className\n )}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n {leftIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'transition-colors stroke-[1.5px]',\n error\n ? 'text-error-stroke-default peer-hover:text-error-stroke-default peer-focus:text-error-stroke-default peer-active:text-error-stroke-default'\n : 'text-muted-foreground peer-hover:text-focus-ring peer-focus:text-focus-ring peer-active:text-focus-ring',\n leftIconClassName\n )}\n >\n {React.isValidElement(leftIcon)\n ? (() => {\n const iconEl = leftIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-5 w-5', iconEl.props.className)\n })\n })()\n : leftIcon}\n </div>\n )}\n {rightIcon && (\n <Button\n onClick={rightIconOnClick}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n 'absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'h-6 w-6 rounded-sm transition-colors',\n error\n ? 'text-error-stroke-default hover:text-error-stroke-default focus:text-error-stroke-default'\n : 'text-muted-foreground hover:text-focus-ring focus:text-focus-ring',\n rightIconClassName\n )}\n aria-label=\"Input action\"\n {...rightIconButtonProps}\n >\n {React.isValidElement(rightIcon)\n ? (() => {\n const iconEl = rightIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-5 w-5', iconEl.props.className)\n })\n })()\n : rightIcon}\n </Button>\n )}\n </div>\n )\n }\n\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size }), stateStyles, className)}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport { Input, inputVariants }\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Textarea } from './textarea'\n\ntype AutoResizeTextareaProps = React.ComponentPropsWithoutRef<typeof Textarea> & {\n /** Stop growing after this many px and allow scroll */\n maxHeight?: number\n /** Minimum height in px */\n minHeight?: number\n}\n\ntype TextareaEl = React.ElementRef<typeof Textarea>\n\nexport const AutoResizeTextarea = React.forwardRef<\n TextareaEl,\n AutoResizeTextareaProps\n>(\n (\n {\n className,\n style,\n onInput,\n onChange,\n maxHeight,\n minHeight = 120,\n value,\n ...props\n },\n forwardedRef\n ) => {\n const innerRef = React.useRef<TextareaEl | null>(null)\n\n const setRefs = React.useCallback(\n (node: TextareaEl | null) => {\n innerRef.current = node\n\n if (typeof forwardedRef === 'function') forwardedRef(node)\n else if (forwardedRef) forwardedRef.current = node\n },\n [forwardedRef]\n )\n\n const resize = React.useCallback(() => {\n const el = innerRef.current\n if (!el) return\n\n el.style.height = 'auto'\n const nextHeight = Math.max(minHeight, el.scrollHeight)\n\n if (maxHeight && nextHeight > maxHeight) {\n el.style.height = `${maxHeight}px`\n el.style.overflowY = 'auto'\n } else {\n el.style.height = `${nextHeight}px`\n el.style.overflowY = 'hidden'\n }\n }, [maxHeight, minHeight])\n\n React.useLayoutEffect(() => {\n resize()\n }, [resize, value])\n\n // Intercept programmatic writes to `el.value` (e.g. RHF reset/setValue,\n // hydration from localStorage) so height updates without a `value` prop.\n React.useLayoutEffect(() => {\n const el = innerRef.current\n if (!el) return\n\n const descriptor = Object.getOwnPropertyDescriptor(\n window.HTMLTextAreaElement.prototype,\n 'value'\n )\n if (!descriptor?.get || !descriptor?.set) return\n\n const { get, set } = descriptor\n Object.defineProperty(el, 'value', {\n configurable: true,\n get() {\n return get.call(this)\n },\n set(v) {\n set.call(this, v)\n resize()\n }\n })\n\n return () => {\n delete (el as Partial<HTMLTextAreaElement>).value\n }\n }, [resize])\n\n return (\n <Textarea\n {...props}\n ref={setRefs}\n value={value}\n onInput={e => {\n resize()\n onInput?.(e)\n }}\n onChange={e => {\n onChange?.(e)\n }}\n className={cn('resize-none', className)}\n style={{\n ...style,\n minHeight: minHeight,\n height: style?.height ?? 'auto',\n overflowY: style?.overflowY ?? 'hidden'\n }}\n />\n )\n }\n)\n\nAutoResizeTextarea.displayName = 'AutoResizeTextarea'\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n// Base styles as a constant to avoid recreation\nconst textareaBaseStyles = [\n // Base styles aligned with Input\n 'placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-lg border bg-transparent text-base font-medium transition-all duration-400',\n 'outline-none font-sans',\n // Disabled\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-40',\n // Default state\n 'border-gray-stroke-default bg-background',\n // Hover/Focus/Active states\n 'hover:border-focus-ring',\n 'focus:border-focus-ring',\n 'focus-visible:border',\n 'active:border-focus-ring',\n // Textarea specific\n 'field-sizing-content min-h-16 resize-y px-3 py-2'\n].join(' ')\n\n// Error styles as a constant to avoid recreation\nconst errorStyles = [\n 'border-error-stroke-default bg-background',\n 'hover:border-error-stroke-default',\n 'focus:border-error-stroke-default',\n 'focus-visible:border',\n 'active:border-error-stroke-default'\n].join(' ')\n\nexport interface TextareaProps extends Omit<\n React.ComponentProps<'textarea'>,\n 'size'\n> {\n error?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(textareaBaseStyles, error && errorStyles, className)}\n aria-invalid={error}\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-primary-foreground [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\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\nexport { Badge, badgeVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeActionableVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-[8px] cursor-pointer select-none transition-all font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0 outline-none focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-xl focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none relative',\n {\n variants: {\n size: {\n M: 'h-10 px-3 py-2 text-base leading-6 [&_svg]:size-5',\n S: 'h-8 px-3 py-2 text-sm leading-5 [&_svg]:size-5'\n }\n },\n defaultVariants: {\n size: 'S'\n }\n }\n)\n\nexport interface BadgeActionableProps\n extends\n Omit<React.ComponentProps<'button'>, 'children'>,\n VariantProps<typeof badgeActionableVariants> {\n icon?: React.ReactNode\n selected?: boolean\n onBackground?: boolean\n children: React.ReactNode\n}\n\nfunction BadgeActionable({\n className,\n size,\n icon,\n selected = false,\n onBackground = false,\n children,\n ...props\n}: BadgeActionableProps) {\n return (\n <button\n data-slot=\"badge-actionable\"\n data-selected={selected || undefined}\n className={cn(\n badgeActionableVariants({ size }),\n selected\n ? 'bg-primary-surface-subtle border border-primary-stroke-default text-primary-stroke-default'\n : onBackground\n ? 'bg-sand-light border border-secondary-stroke-default text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent'\n : 'bg-sand-light border border-secondary-stroke-light text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent',\n 'disabled:pointer-events-none disabled:opacity-50 ',\n className\n )}\n {...props}\n >\n {icon && <span className=\"flex items-center justify-center\">{icon}</span>}\n <span>{children}</span>\n </button>\n )\n}\n\nexport { BadgeActionable, badgeActionableVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeInformativeVariants = cva(\n 'inline-flex items-center justify-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n size: {\n M: 'h-8 px-2 py-1.5 gap-2 rounded-[8px] text-sm leading-5 [&_svg]:size-4',\n S: 'h-6 px-2 py-1.5 gap-1 rounded-[8px] text-xs leading-4 [&_svg]:size-4'\n },\n colorScheme: {\n gray: 'bg-gray-surface-light text-vibrant-text-body',\n blue: 'bg-primary-surface-subtle text-primary-stroke-default',\n yellow:\n 'bg-warning-surface-subtle border border-warning-stroke-default text-warning-stroke-dark'\n }\n },\n defaultVariants: {\n size: 'M',\n colorScheme: 'gray'\n }\n }\n)\n\nexport interface BadgeInformativeProps\n extends\n React.ComponentProps<'div'>,\n VariantProps<typeof badgeInformativeVariants> {\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}\n\nfunction BadgeInformative({\n className,\n size,\n colorScheme,\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: BadgeInformativeProps) {\n return (\n <div\n data-slot=\"badge-informative\"\n className={cn(badgeInformativeVariants({ size, colorScheme }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className={cn(\n 'inline-flex items-center gap-1 font-semibold text-base leading-6 shrink-0',\n colorScheme === 'blue'\n ? 'text-primary-stroke-default'\n : 'text-primary-stroke-default'\n )}\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\n/**\n * Container for multiple BadgeInformative items displayed side-by-side.\n */\nfunction BadgeInformativeGroup({\n className,\n size = 'M',\n colorScheme = 'gray',\n children,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof badgeInformativeVariants>) {\n return (\n <div\n data-slot=\"badge-informative-group\"\n className={cn(\n 'inline-flex items-center gap-3',\n size === 'M'\n ? 'h-8 px-2 py-1.5 rounded-[8px]'\n : 'h-6 px-2 py-1.5 rounded-[8px]',\n colorScheme === 'gray' && 'bg-gray-surface-light',\n colorScheme === 'blue' && 'bg-primary-surface-subtle',\n colorScheme === 'yellow' &&\n 'bg-warning-surface-subtle border border-warning-stroke-default',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * A single item within a BadgeInformativeGroup. Use for multi-content badges.\n */\nfunction BadgeInformativeItem({\n className,\n size = 'M',\n colorScheme = 'gray',\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n size?: 'M' | 'S'\n colorScheme?: 'gray' | 'blue' | 'yellow'\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}) {\n return (\n <div\n data-slot=\"badge-informative-item\"\n className={cn(\n 'inline-flex items-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n size === 'M'\n ? 'gap-1 text-sm leading-5 [&_svg]:size-4'\n : 'gap-1 text-xs leading-4 [&_svg]:size-4',\n colorScheme === 'gray' && 'text-vibrant-text-body',\n colorScheme === 'blue' && 'text-primary-stroke-default',\n colorScheme === 'yellow' && 'text-warning-stroke-dark',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className=\"inline-flex items-center gap-1 font-semibold text-base leading-6 text-primary-stroke-default shrink-0\"\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\nexport {\n BadgeInformative,\n BadgeInformativeGroup,\n BadgeInformativeItem,\n badgeInformativeVariants\n}\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeNumberVariants = cva(\n 'inline-flex items-center justify-center rounded-full font-semibold text-xs leading-[18px] text-center shrink-0 select-none',\n {\n variants: {\n size: {\n M: 'size-6',\n S: 'size-5'\n },\n state: {\n active: 'bg-primary text-primary-foreground',\n disabled: 'bg-gray-surface-light text-gray-subtle',\n resting:\n 'bg-transparent border border-gray-stroke-light text-gray-subtle'\n }\n },\n defaultVariants: {\n size: 'M',\n state: 'active'\n }\n }\n)\n\nexport interface BadgeNumberProps\n extends React.ComponentProps<'span'>,\n VariantProps<typeof badgeNumberVariants> {\n value: number\n}\n\nfunction BadgeNumber({\n className,\n size,\n state,\n value,\n ...props\n}: BadgeNumberProps) {\n return (\n <span\n data-slot=\"badge-number\"\n className={cn(badgeNumberVariants({ size, state }), className)}\n {...props}\n >\n {value}\n </span>\n )\n}\n\nexport { BadgeNumber, badgeNumberVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","'use client'\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon\n} from 'lucide-react'\nimport * as React from 'react'\nimport { DayButton, DayPicker } from 'react-day-picker'\n\nimport { Button, buttonVariants } from '@/components/ui/button'\nimport { cn } from '@/lib/utils'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:--spacing(4)] md:[--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters\n }}\n classNames={{\n root: cn('w-fit ', classNames?.root),\n months: cn(\n 'flex gap-4 flex-col md:flex-row relative',\n classNames?.months\n ),\n month: cn('flex flex-col w-full gap-4 items-center', classNames?.month),\n nav: cn(\n 'flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between',\n classNames?.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_next\n ),\n month_caption: cn(\n 'flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)',\n classNames?.month_caption\n ),\n dropdowns: cn(\n 'w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5',\n classNames?.dropdowns\n ),\n dropdown_root: cn(\n 'relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md',\n classNames?.dropdown_root\n ),\n dropdown: cn(\n 'absolute bg-popover inset-0 opacity-0',\n classNames?.dropdown\n ),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : 'rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5',\n classNames?.caption_label\n ),\n table: cn('w-full border-collapse', classNames?.table),\n weekdays: cn(\n 'flex items-center justify-start w-full gap-2 ',\n classNames?.weekdays\n ),\n weekday: cn(\n 'text-muted-foreground font-medium rounded-full md:flex-1 size-7 md:mx-1 font-normal text-[0.8rem] select-none',\n classNames?.weekday\n ),\n week: cn(\n 'flex w-full md:mt-2 mt-[2px] items-center justify-start gap-2 ',\n classNames?.week\n ),\n week_number_header: cn(\n 'select-none w-(--cell-size) ',\n 'flex items-center justify-center ',\n classNames?.week_number_header\n ),\n week_number: cn(\n 'text-[0.8rem] select-none text-muted-foreground',\n classNames?.week_number\n ),\n day: cn(\n 'relative flex items-center justify-center p-0 text-center group/day aspect-square select-none size-7 md:mx-1 rounded-full',\n classNames?.day\n ),\n range_start: cn(' bg-accent', classNames?.range_start),\n range_middle: cn('rounded-none', classNames?.range_middle),\n range_end: cn(' bg-accent', classNames?.range_end),\n today: cn(\n 'bg-accent text-accent-foreground rounded-full',\n classNames?.today\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n classNames?.outside\n ),\n disabled: cn('text-muted-foreground opacity-50', classNames?.disabled),\n hidden: cn('invisible', classNames?.hidden)\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon className={cn('size-6', className)} {...props} />\n )\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-6', className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn('size-6', className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-range-middle-bg data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none md:font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70 md:p-0 rounded-full md:text-base text-sm font-medium text-foreground data-[range-start=true]:rounded-md data-[range-middle=true]:rounded-md data-[range-end=true]:rounded-md',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'group peer cursor-pointer border-gray-stroke-default dark:bg-input/30 transition-colors duration-400 data-[state=checked]:bg-primary-stroke-default data-[state=checked]:text-white dark:data-[state=checked]:bg-primary-stroke-default data-[state=checked]:border-primary-stroke-default focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-5 shrink-0 rounded-[4px] border-2 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-40 focus-visible:before:absolute focus-visible:before:-inset-[3px] focus:ring-offset-1 focus:ring-offset-brand-text-vibrant',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n forceMount\n className=\"flex items-center justify-center text-current transition-opacity duration-400 opacity-0 group-data-[state=checked]:opacity-100\"\n >\n <Check className=\"size-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","'use client'\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/40',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n overlayClassName,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n overlayClassName?: string\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background border-border-default 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-3xl border p-6 shadow-lg duration-400 sm:max-w-lg',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"border-border-default text-muted-foreground hover:bg-muted absolute top-4 right-4 flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full border [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\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 )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('text-lg leading-none font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport {\n format as dateFnsFormat,\n parse as dateFnsParse,\n isValid\n} from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport { Calendar } from './calendar'\nimport { Input, inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type DateFormat =\n | 'MM/DD/YYYY'\n | 'DD/MM/YYYY'\n | 'YYYY-MM-DD'\n | 'DD-MM-YYYY'\n | 'MM-DD-YYYY'\n | 'DD.MM.YYYY'\n | 'YYYY/MM/DD'\n | 'MMMM D, YYYY'\n | 'D MMMM YYYY'\n | 'MMM D, YYYY'\n | 'MMM DD, YYYY'\n | 'D MMM YYYY'\n | 'DD MMM YYYY'\n | 'ddd, MMM D, YYYY'\n | 'dddd, MMMM D, YYYY'\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'onChange' | 'min' | 'max' | 'size' | 'disabled' | 'onSelect'\n>\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nconst INPUT_PROP_KEYS = new Set([\n 'accept',\n 'alt',\n 'autoComplete',\n 'autoFocus',\n 'capture',\n 'checked',\n 'dirName',\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'height',\n 'list',\n 'maxLength',\n 'minLength',\n 'multiple',\n 'name',\n 'pattern',\n 'readOnly',\n 'required',\n 'size',\n 'src',\n 'step',\n 'type',\n 'width',\n 'id',\n 'inputMode',\n 'lang',\n 'tabIndex',\n 'title',\n 'role',\n 'style',\n 'onFocus',\n 'onFocusCapture',\n 'onBlurCapture',\n 'onInput',\n 'onInvalid',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyPressCapture',\n 'onKeyUp',\n 'onKeyUpCapture',\n 'onPaste',\n 'onPasteCapture',\n 'onPointerDown',\n 'onPointerDownCapture',\n 'onPointerUp',\n 'onPointerUpCapture',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate'\n])\n\nfunction formatDate(date: Date | null, dateFormat: DateFormat = 'MM/DD/YYYY') {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction parseDate(\n value: string,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n): Date | null {\n if (!value) return null\n const parsed = dateFnsParse(value, DATE_FORMAT_TOKENS[dateFormat], new Date())\n return isValid(parsed) ? parsed : null\n}\n\nexport interface DateInputProps\n extends NativeInputProps, FlattenedCalendarProps {\n date: Date | null\n setDate: (date: Date | null) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n mode?: React.ComponentProps<typeof Calendar>['mode']\n selected?: Date\n onSelect?: (selectedDate: Date | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateInput({\n date,\n setDate,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n mode,\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n onBlur,\n ...restProps\n}: DateInputProps) {\n const resolvedPlaceholder = placeholder ?? DATE_FORMAT_PLACEHOLDER[dateFormat]\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(date ?? null)\n const [value, setValue] = React.useState(formatDate(date ?? null, dateFormat))\n const [inputProps, calendarProps] = React.useMemo(() => {\n const nextInputProps: Record<string, unknown> = {}\n const nextCalendarProps: Record<string, unknown> = {}\n\n for (const [key, val] of Object.entries(restProps)) {\n const isInputProp =\n INPUT_PROP_KEYS.has(key) ||\n key.startsWith('aria-') ||\n key.startsWith('data-')\n\n if (isInputProp) {\n nextInputProps[key] = val\n } else {\n nextCalendarProps[key] = val\n }\n }\n\n return [\n nextInputProps as Partial<React.ComponentProps<typeof Input>>,\n nextCalendarProps as Omit<\n React.ComponentProps<typeof Calendar>,\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n >\n ]\n }, [restProps])\n\n // Calculate effective maxDate\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n // Calculate effective minDate\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 15)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 10)\n return d\n }, [effectiveMaxDate, today])\n\n React.useEffect(() => {\n if (date) {\n setValue(formatDate(date, dateFormat))\n setMonthState(date)\n }\n }, [date, dateFormat])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? date ?? undefined\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n const defaultCalendarOnSelect = (selectedDate: Date | undefined) => {\n if (selectedDate) {\n const dateObj = new Date(selectedDate)\n dateObj.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || dateObj >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || dateObj <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(selectedDate)\n setValue(formatDate(selectedDate, dateFormat))\n setOpen(false)\n }\n }\n }\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n\n const isBeforeMin =\n effectiveMinDate !== null && checkDate < effectiveMinDate\n const isAfterMax =\n effectiveMaxDate !== undefined && checkDate > effectiveMaxDate\n\n return isBeforeMin || isAfterMax\n }\n const resolvedCalendarProps = {\n ...calendarProps,\n mode: mode ?? 'single',\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn('w-auto mx-auto h-auto sm:m-2', calendarClassName),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: onSelect ?? defaultCalendarOnSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n setValue(inputValue)\n\n const parsedDate = parseDate(inputValue, dateFormat)\n\n if (parsedDate) {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(parsedDate)\n setMonthState(parsedDate)\n }\n } else if (inputValue === '') {\n setDate(null)\n }\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(e)\n }\n\n if (value === '') {\n if (date !== null) {\n setDate(null)\n }\n return\n }\n\n const parsedDate = parseDate(value, dateFormat)\n if (!parsedDate) {\n setValue(formatDate(date, dateFormat))\n } else {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (!isAfterMin || !isBeforeMax) {\n setValue(formatDate(date, dateFormat))\n }\n }\n }\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <div className=\"w-full relative group\">\n <Input\n id=\"date\"\n value={value}\n placeholder={resolvedPlaceholder}\n className={cn(\n 'bg-background cursor-pointer',\n 'group-data-[state=open]:border-focus-ring group-data-[state=open]:hover:border-focus-ring',\n inputClassName\n )}\n onChange={handleInputChange}\n onBlur={handleBlur}\n disabled={isInputDisabled}\n onKeyDown={e => {\n if (e.key === 'ArrowDown' && !isInputDisabled) {\n e.preventDefault()\n setOpen(true)\n }\n }}\n rightIcon={\n <CalendarDays className=\"h-4 w-4 text-muted-foreground\" />\n }\n rightIconOnClick={\n isInputDisabled ? undefined : () => setOpen(!open)\n }\n rightIconButtonProps={{ disabled: isInputDisabled }}\n {...(inputProps as Partial<React.ComponentProps<typeof Input>>)}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px] ',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md py-2 md:py-0\">\n <Calendar {...resolvedCalendarProps} />\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { format as dateFnsFormat, isValid } from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport type { DateRange } from 'react-day-picker'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport type { DateFormat } from './date-input'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type { DateRange }\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nfunction formatDate(\n date: Date | null | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction formatRange(\n range: DateRange | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!range) return ''\n const from = formatDate(range.from, dateFormat)\n const to = formatDate(range.to, dateFormat)\n if (from && to) return from === to ? from : `${from} \\u2013 ${to}`\n if (from) return from\n return ''\n}\n\nfunction rangePlaceholder(dateFormat: DateFormat) {\n const p = DATE_FORMAT_PLACEHOLDER[dateFormat]\n return `${p} \\u2013 ${p}`\n}\n\nexport interface DateRangeInputProps extends FlattenedCalendarProps {\n dateRange: DateRange | undefined\n setDateRange: (range: DateRange | undefined) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n placeholder?: string\n selected?: DateRange\n onSelect?: (range: DateRange | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateRangeInput({\n dateRange,\n setDateRange,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n size,\n ...restProps\n}: DateRangeInputProps) {\n const resolvedPlaceholder = placeholder ?? rangePlaceholder(dateFormat)\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(\n dateRange?.from ?? null\n )\n\n const displayValue = formatRange(dateRange, dateFormat)\n\n React.useEffect(() => {\n if (dateRange?.from) {\n setMonthState(dateRange.from)\n }\n }, [dateRange])\n\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default wide range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 100)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 100)\n return d\n }, [effectiveMaxDate, today])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? dateRange\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n\n const isWithinBounds = (d: Date) => {\n const isAfterMin = !effectiveMinDate || d >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || d <= effectiveMaxDate\n return isAfterMin && isBeforeMax\n }\n\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n return !isWithinBounds(checkDate)\n }\n\n const handleCalendarSelect = (range: DateRange | undefined) => {\n if (onSelect) {\n onSelect(range)\n return\n }\n setDateRange(range)\n }\n\n const handleClear = () => {\n setDateRange(undefined)\n }\n\n const handleAdd = () => {\n setOpen(false)\n }\n\n const resolvedCalendarProps = {\n ...restProps,\n mode: 'range' as const,\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn('w-auto shrink-0 h-auto mt-2', calendarClassName),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: handleCalendarSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n isInputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={isInputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n <CalendarDays className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px]',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md flex flex-col overflow-y-auto justify-between\">\n <Calendar {...resolvedCalendarProps} />\n <div className=\"flex flex-col gap-2 px-2 pb-1 shrink-0\">\n <Button\n variant=\"ghost-secondary\"\n size=\"sm\"\n onClick={handleClear}\n type=\"button\"\n >\n Clear\n </Button>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={handleAdd}\n type=\"button\"\n >\n Add\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","'use client'\n\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\nimport { Drawer as DrawerPrimitive } from 'vaul'\n\nimport { cn } from '@/lib/utils'\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} repositionInputs={false} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/40',\n className\n )}\n {...props}\n />\n )\n}\n\nconst drawerDirectionClasses = {\n top: 'inset-x-0 top-0 max-h-[80vh] rounded-b-3xl border-b border-border-default',\n bottom:\n 'inset-x-0 bottom-0 max-h-[80vh] rounded-t-3xl border-t border-border-default',\n right:\n 'inset-y-0 right-0 w-3/4 border-l border-border-default sm:max-w-sm',\n left: 'inset-y-0 left-0 w-3/4 border-r border-border-default sm:max-w-sm'\n} as const\n\nfunction DrawerContent({\n className,\n children,\n withCloseButton = true,\n showCloseButton = true,\n direction = 'bottom',\n overlayClassName,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & {\n withCloseButton?: boolean\n showCloseButton?: boolean\n direction?: keyof typeof drawerDirectionClasses\n overlayClassName?: string\n}) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay className={overlayClassName} />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background fixed z-50 flex h-auto flex-col',\n drawerDirectionClasses[direction],\n className\n )}\n {...props}\n >\n {withCloseButton && (\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n )}\n {showCloseButton && (\n <DrawerPrimitive.Close\n data-slot=\"drawer-close-button\"\n className=\"border-border-default text-muted-foreground hover:bg-muted absolute top-4 right-4 z-10 flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full border [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DrawerPrimitive.Close>\n )}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\n 'border-border mt-auto flex shrink-0 flex-col gap-2 border-t px-4 pt-4 pb-[max(1rem,env(safe-area-inset-bottom,0px))]',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Context ──────────────────────────────────────────────── */\n\ninterface DropdownSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n value: string\n onValueChange: (value: string) => void\n disabled: boolean\n error: boolean\n placeholder: string\n icon?: React.ReactNode\n displayLabel: string\n options: { value: string; label: string }[]\n registerOption: (value: string, label: string) => void\n highlightedIndex: number\n setHighlightedIndex: (index: number) => void\n}\n\nconst DropdownSelectContext = React.createContext<DropdownSelectContextValue | null>(null)\n\nfunction useDropdownSelect() {\n const ctx = React.useContext(DropdownSelectContext)\n if (!ctx) throw new Error('DropdownSelect compound components must be used within <DropdownSelect>')\n return ctx\n}\n\n/* ─── Root ─────────────────────────────────────────────────── */\n\nexport interface DropdownSelectProps {\n children: React.ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n error?: boolean\n placeholder?: string\n icon?: React.ReactNode\n}\n\nfunction DropdownSelect({\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n placeholder = 'Select',\n icon,\n}: DropdownSelectProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const [options, setOptions] = React.useState<{ value: string; label: string }[]>([])\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n\n const isControlledValue = valueProp !== undefined\n const isControlledOpen = openProp !== undefined\n const value = isControlledValue ? valueProp : internalValue\n const open = isControlledOpen ? openProp : internalOpen\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlledOpen) setInternalOpen(next)\n onOpenChange?.(next)\n },\n [isControlledOpen, onOpenChange]\n )\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlledValue) setInternalValue(next)\n onValueChange?.(next)\n setOpen(false)\n },\n [isControlledValue, onValueChange, setOpen]\n )\n\n const registerOption = React.useCallback((val: string, label: string) => {\n setOptions(prev => {\n if (prev.some(o => o.value === val)) return prev\n return [...prev, { value: val, label }]\n })\n }, [])\n\n const displayLabel = React.useMemo(() => {\n const match = options.find(o => o.value === value)\n return match?.label ?? ''\n }, [options, value])\n\n const ctx = React.useMemo<DropdownSelectContextValue>(\n () => ({\n open,\n setOpen,\n value,\n onValueChange: handleValueChange,\n disabled,\n error,\n placeholder,\n icon,\n displayLabel,\n options,\n registerOption,\n highlightedIndex,\n setHighlightedIndex,\n }),\n [open, setOpen, value, handleValueChange, disabled, error, placeholder, icon, displayLabel, options, registerOption, highlightedIndex, setHighlightedIndex]\n )\n\n return (\n <DropdownSelectContext.Provider value={ctx}>\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </DropdownSelectContext.Provider>\n )\n}\n\n/* ─── Label ────────────────────────────────────────────────── */\n\nexport interface DropdownSelectLabelProps extends React.ComponentProps<'div'> {\n mandatory?: boolean\n}\n\nfunction DropdownSelectLabel({\n className,\n children,\n mandatory = false,\n ...props\n}: DropdownSelectLabelProps) {\n return (\n <div\n data-slot=\"dropdown-select-label\"\n className={cn(\n 'flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details',\n className\n )}\n {...props}\n >\n {children}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">*</span>\n )}\n </div>\n )\n}\n\n/* ─── Trigger ──────────────────────────────────────────────── */\n\nexport type DropdownSelectTriggerProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Trigger>, 'asChild'>\n\nfunction DropdownSelectTrigger({ className, ...props }: DropdownSelectTriggerProps) {\n const { value, displayLabel, placeholder, icon, disabled, error, open, options, setOpen, onValueChange, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n const len = options.length\n if (len === 0) return\n if (e.key === 'ArrowDown') {\n setHighlightedIndex(highlightedIndex < len - 1 ? highlightedIndex + 1 : 0)\n } else {\n setHighlightedIndex(highlightedIndex > 0 ? highlightedIndex - 1 : len - 1)\n }\n } else if (e.key === 'Enter' && open && highlightedIndex >= 0) {\n e.preventDefault()\n const opt = options[highlightedIndex]\n if (opt) onValueChange(opt.value)\n } else if (e.key === 'Escape' && open) {\n e.preventDefault()\n setOpen(false)\n }\n },\n [disabled, open, setOpen, options, highlightedIndex, setHighlightedIndex, onValueChange]\n )\n\n const hasValue = value !== '' && displayLabel !== ''\n\n return (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n data-slot=\"dropdown-select-trigger\"\n disabled={disabled}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n onKeyDown={handleKeyDown}\n className={cn(\n // Base\n 'flex w-full items-center gap-2 h-[48px] rounded-[8px] px-[12px] py-[8px] font-sans font-medium text-[16px] leading-[24px] outline-none transition-colors cursor-pointer',\n // Default state\n 'border border-gray-stroke-default bg-white dark:bg-background',\n // Placeholder vs selected text\n hasValue\n ? 'text-vibrant-text-heading'\n : 'text-muted-foreground',\n // Hover\n !disabled && !error && 'hover:border-focus-ring',\n // Focus\n !disabled && !error && 'focus-visible:border-focus-ring focus-visible:border-2 focus-visible:px-[11px] focus-visible:py-[7px]',\n // Open/Active\n open && !error && 'border-focus-ring',\n // Error\n error && 'border-error-stroke-light bg-error-surface-light',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n <span className=\"flex-1 text-left truncate\">\n {hasValue ? displayLabel : placeholder}\n </span>\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </button>\n </PopoverPrimitive.Trigger>\n )\n}\n\n/* ─── Content ──────────────────────────────────────────────── */\n\nexport type DropdownSelectContentProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Content>, 'asChild'>\n\nfunction DropdownSelectContent({\n className,\n children,\n ...props\n}: DropdownSelectContentProps) {\n const { setHighlightedIndex } = useDropdownSelect()\n\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"dropdown-select-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={() => setHighlightedIndex(-1)}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n // Custom scrollbar\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n // Animations\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {children}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n )\n}\n\n/* ─── Option ───────────────────────────────────────────────── */\n\nexport interface DropdownSelectOptionProps extends React.ComponentProps<'div'> {\n value: string\n label?: string\n disabled?: boolean\n}\n\nfunction DropdownSelectOption({\n className,\n value: optionValue,\n label,\n disabled: optionDisabled = false,\n children,\n ...props\n}: DropdownSelectOptionProps) {\n const { value, onValueChange, registerOption, options, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const displayText = label ?? (typeof children === 'string' ? children : '')\n\n React.useEffect(() => {\n if (displayText) {\n registerOption(optionValue, displayText)\n }\n }, [optionValue, displayText, registerOption])\n\n const isSelected = value === optionValue\n const index = options.findIndex(o => o.value === optionValue)\n const isHighlighted = highlightedIndex === index\n\n return (\n <div\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={optionDisabled}\n data-slot=\"dropdown-select-option\"\n data-highlighted={isHighlighted || undefined}\n data-selected={isSelected || undefined}\n onClick={() => {\n if (!optionDisabled) onValueChange(optionValue)\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n // Hover/highlighted\n 'hover:bg-gray-surface-light hover:font-semibold',\n isHighlighted && 'bg-gray-surface-light font-semibold',\n // Selected\n isSelected && 'font-semibold',\n // Disabled\n optionDisabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {children ?? displayText}\n </div>\n )\n}\n\n/* ─── Exports ──────────────────────────────────────────────── */\n\nexport {\n DropdownSelect,\n DropdownSelectLabel,\n DropdownSelectTrigger,\n DropdownSelectContent,\n DropdownSelectOption,\n}\n","import * as React from 'react'\n\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger\n} from '@/components/ui/accordion'\nimport { bodyTextVariants } from '@/components/ui/typography'\nimport { cn } from '@/lib/utils'\n\nexport interface FaqItem {\n question: string\n /** A plain string renders as one paragraph; pass a node for rich text. */\n answer: React.ReactNode\n}\n\nexport interface FaqAccordionProps {\n faqs: FaqItem[]\n className?: string\n /** Fade-and-rise the questions in on mount, 80ms apart. */\n staggerReveal?: boolean\n /** Question text to open on mount, and again whenever this value changes. */\n defaultOpenQuestion?: string\n /** Merged onto every question label. */\n questionClassName?: string\n /** Merged onto every answer body. */\n answerClassName?: string\n /** Merged onto every item card. */\n itemClassName?: string\n}\n\n/**\n * Data-driven FAQ list on the outlined Accordion: one question open at a\n * time, a + that morphs into a −, and a fade-while-growing answer. Reach for\n * this over hand-assembling `Accordion*` whenever the content is a plain\n * question/answer array.\n */\nfunction FaqAccordion({\n faqs,\n className,\n staggerReveal = false,\n defaultOpenQuestion,\n questionClassName,\n answerClassName,\n itemClassName\n}: FaqAccordionProps) {\n // Radix wants a unique value per item. Question text is the natural key,\n // suffixed only when a list repeats a question.\n const values = React.useMemo(() => {\n const seen = new Set<string>()\n return faqs.map((faq, i) => {\n const value = seen.has(faq.question)\n ? `${faq.question}__${i}`\n : faq.question\n seen.add(faq.question)\n return value\n })\n }, [faqs])\n\n const valueFor = (question?: string) => {\n if (!question) return ''\n const i = faqs.findIndex(faq => faq.question === question)\n return i >= 0 ? values[i] : ''\n }\n\n const [value, setValue] = React.useState(() => valueFor(defaultOpenQuestion))\n\n // Re-open when the caller points at a different question, without an\n // effect: adjust state during render, the way React docs recommend.\n const [seenDefault, setSeenDefault] = React.useState(defaultOpenQuestion)\n if (defaultOpenQuestion !== seenDefault) {\n setSeenDefault(defaultOpenQuestion)\n setValue(valueFor(defaultOpenQuestion))\n }\n\n return (\n <Accordion\n type=\"single\"\n collapsible\n variant=\"outlined\"\n staggerReveal={staggerReveal}\n value={value}\n onValueChange={setValue}\n className={className}\n >\n {faqs.map((faq, i) => (\n <AccordionItem\n key={values[i]}\n value={values[i]}\n revealIndex={i}\n className={cn('rounded-lg', itemClassName)}\n >\n <AccordionTrigger icon=\"plus-minus\">\n <span className={cn('text-vibrant-text-heading', questionClassName)}>\n {faq.question}\n </span>\n </AccordionTrigger>\n <AccordionContent\n className={cn(\n bodyTextVariants({ size: 'md' }),\n 'font-normal [&_a]:text-primary-stroke-default [&_a]:underline',\n answerClassName\n )}\n >\n {typeof faq.answer === 'string' ? <p>{faq.answer}</p> : faq.answer}\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport { FaqAccordion }\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst displayTextVariants = cva(\n 'tracking-normal font-normal font-serif italic text-vibrant-text-display',\n {\n variants: {\n size: {\n lg: 'text-4xl md:text-[3.25rem] leading-[44px] md:leading-[64px]',\n md: 'text-[1.75rem] md:text-4xl leading-[36px] md:leading-[44px]',\n sm: 'text-lg md:text-xl leading-[26px] md:leading-[28px]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nfunction DisplayHeading({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> &\n VariantProps<typeof displayTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(displayTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nconst bodyTextVariants = cva('font-sans text-vibrant-text-body', {\n variants: {\n size: {\n lg: 'text-lg md:text-xl leading-[26px] md:leading-[28px]',\n md: 'text-base leading-[24px]',\n sm: 'text-sm leading-[20px]',\n xs: 'text-xs leading-[16px]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Body({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'p'> &\n VariantProps<typeof bodyTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'p'\n\n return (\n <Comp\n data-slot=\"p\"\n className={cn(bodyTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nfunction HeadingXL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(\n 'text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h2'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h2'\n\n return (\n <Comp\n data-slot=\"h2\"\n className={cn(\n 'text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingM({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h3'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h3'\n\n return (\n <Comp\n data-slot=\"h3\"\n className={cn(\n 'text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h4'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h4'\n\n return (\n <Comp\n data-slot=\"h4\"\n className={cn(\n 'text-base leading-[24px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h5'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h5'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-sm leading-[20px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h6'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h6'\n\n return (\n <Comp\n data-slot=\"h6\"\n className={cn(\n 'text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\n/* Medium weight heading variants */\n\nfunction HeadingXLMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(\n 'text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingLMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h2'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h2'\n\n return (\n <Comp\n data-slot=\"h2\"\n className={cn(\n 'text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingMMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h3'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h3'\n\n return (\n <Comp\n data-slot=\"h3\"\n className={cn(\n 'text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h4'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h4'\n\n return (\n <Comp\n data-slot=\"h4\"\n className={cn(\n 'text-base leading-[24px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h5'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h5'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-sm leading-[20px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXXSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h6'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h6'\n\n return (\n <Comp\n data-slot=\"h6\"\n className={cn(\n 'text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Body,\n bodyTextVariants,\n DisplayHeading,\n displayTextVariants,\n HeadingL,\n HeadingLMedium,\n HeadingM,\n HeadingMMedium,\n HeadingS,\n HeadingSMedium,\n HeadingXL,\n HeadingXLMedium,\n HeadingXS,\n HeadingXSMedium,\n HeadingXXS,\n HeadingXXSMedium\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","'use client'\n\nimport { cn } from '@/lib/utils'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nconst labelTextVariants = cva('font-sans font-semibold text-vibrant-text-body', {\n variants: {\n size: {\n lg: 'text-base md:text-lg md:leading-[1.625rem] leading-[1.5rem]',\n md: 'md:text-base text-sm md:leading-[1.5rem] leading-[1.25rem] ',\n sm: 'md:text-sm text-xs md:leading-[1.25rem] leading-[1.125rem] ',\n xs: 'text-xs leading-[1.125rem]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Label({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'label'> &\n VariantProps<typeof labelTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'label'\n\n return (\n <Comp\n data-slot=\"label\"\n className={cn(labelTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nexport { Label, labelTextVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst InputOTPErrorContext = React.createContext(false)\n\nfunction InputOTP({\n className,\n containerClassName,\n error,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n error?: boolean\n}) {\n return (\n <InputOTPErrorContext.Provider value={error ?? false}>\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-40\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n </InputOTPErrorContext.Provider>\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n const isHovering = inputOTPContext?.isHovering ?? false\n const error = React.useContext(InputOTPErrorContext)\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n // Base layout & typography\n \"relative flex size-10 items-center justify-center\",\n \"border-y border-r first:border-l text-sm font-medium leading-5\",\n \"transition-all outline-none\",\n \"first:rounded-l-[4px] last:rounded-r-[4px]\",\n \"text-foreground\",\n // Default state (no error)\n !error && \"border-gray-stroke-default bg-background\",\n // Hover: all slots turn blue (non-error, non-active)\n !error && isHovering && !isActive && \"border-focus-ring\",\n // Active slot (non-error): 2px blue border\n !error && isActive && \"z-10 border-2 border-focus-ring\",\n // Error (non-active)\n error && !isActive && \"border-error-stroke-default bg-error-surface-subtle\",\n // Error + active\n error && isActive && \"z-10 border-2 border-error-stroke-default bg-error-surface-subtle\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-focus-ring h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n )\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </MenubarPortal>\n )\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Types ────────────────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextOption {\n value: string\n label: string\n}\n\n/* ─── Tag ──────────────────────────────────────────────────── */\n\ninterface TagProps {\n label: string\n onRemove: () => void\n}\n\nfunction Tag({ label, onRemove }: TagProps) {\n return (\n <span\n data-slot=\"multi-select-tag\"\n className=\"inline-flex items-center gap-[8px] h-[32px] px-[12px] py-[8px] rounded-[8px] bg-primary-surface-subtle font-sans font-medium text-[14px] leading-[20px] text-primary-stroke-default shrink-0\"\n >\n {label}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n className=\"flex items-center justify-center size-[20px] text-primary-stroke-default hover:text-primary-surface-default transition-colors cursor-pointer\"\n aria-label={`Remove ${label}`}\n >\n <X className=\"size-[16px]\" />\n </button>\n </span>\n )\n}\n\n/* ─── Main Component ───────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextProps {\n /** Current tag values */\n values?: string[]\n /** Default tag values (uncontrolled) */\n defaultValues?: string[]\n /** Callback when tags change */\n onValuesChange?: (values: string[]) => void\n /** Suggestion options shown in dropdown */\n options?: MultiSelectFreeTextOption[]\n /** Placeholder when no tags and no input text */\n placeholder?: string\n /** Left icon */\n icon?: React.ReactNode\n /** Label text */\n label?: string\n /** Show mandatory asterisk on label */\n mandatory?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Additional className */\n className?: string\n}\n\nfunction MultiSelectFreeText({\n values: valuesProp,\n defaultValues = [],\n onValuesChange,\n options = [],\n placeholder = 'Placeholder text',\n icon,\n label,\n mandatory = false,\n disabled = false,\n className,\n}: MultiSelectFreeTextProps) {\n const [internalValues, setInternalValues] = React.useState<string[]>(defaultValues)\n const [inputValue, setInputValue] = React.useState('')\n const [open, setOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const triggerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valuesProp !== undefined\n const values = isControlled ? valuesProp : internalValues\n\n const updateValues = React.useCallback(\n (next: string[]) => {\n if (!isControlled) setInternalValues(next)\n onValuesChange?.(next)\n },\n [isControlled, onValuesChange]\n )\n\n const addTag = React.useCallback(\n (tag: string) => {\n const trimmed = tag.trim()\n if (!trimmed || values.includes(trimmed)) return\n updateValues([...values, trimmed])\n setInputValue('')\n setHighlightedIndex(-1)\n },\n [values, updateValues]\n )\n\n const removeTag = React.useCallback(\n (tag: string) => {\n updateValues(values.filter((v) => v !== tag))\n },\n [values, updateValues]\n )\n\n // Filter options based on input text and already-selected values\n const filteredOptions = React.useMemo(() => {\n const lower = inputValue.toLowerCase()\n return options.filter(\n (opt) =>\n !values.includes(opt.value) &&\n (lower === '' || opt.label.toLowerCase().includes(lower))\n )\n }, [options, inputValue, values])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n if (highlightedIndex >= 0 && filteredOptions[highlightedIndex]) {\n addTag(filteredOptions[highlightedIndex].value)\n } else if (inputValue.trim()) {\n addTag(inputValue)\n }\n } else if (e.key === 'Backspace' && inputValue === '' && values.length > 0) {\n removeTag(values[values.length - 1])\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n } else if (e.key === 'Escape') {\n setOpen(false)\n setHighlightedIndex(-1)\n }\n },\n [highlightedIndex, filteredOptions, inputValue, values, addTag, removeTag, open]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n if (!open) setOpen(true)\n setHighlightedIndex(-1)\n },\n [open]\n )\n\n const handleOptionClick = React.useCallback(\n (optValue: string) => {\n addTag(optValue)\n inputRef.current?.focus()\n },\n [addTag]\n )\n\n const handleTriggerClick = React.useCallback(() => {\n if (disabled) return\n inputRef.current?.focus()\n if (!open) setOpen(true)\n }, [disabled, open])\n\n const isFocused = open\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n <div\n data-slot=\"multi-select-free-text\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">\n *\n </span>\n )}\n </div>\n )}\n\n {/* Input field */}\n <PopoverPrimitive.Anchor asChild>\n <div\n ref={triggerRef}\n onClick={handleTriggerClick}\n className={cn(\n 'flex flex-wrap items-center gap-[8px] w-full min-h-[48px] rounded-[8px] px-[12px] py-[8px] border bg-white dark:bg-background transition-colors cursor-text',\n isFocused && !disabled\n ? 'border-focus-ring'\n : 'border-gray-stroke-default',\n !disabled && !isFocused && 'hover:border-focus-ring',\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n\n {/* Tags + inline input */}\n <div className=\"flex flex-wrap items-center gap-[8px] flex-1 min-w-0\">\n {values.map((tag) => (\n <Tag key={tag} label={tag} onRemove={() => removeTag(tag)} />\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => { if (!open && !disabled) setOpen(true) }}\n disabled={disabled}\n placeholder={values.length === 0 ? placeholder : ''}\n className={cn(\n 'flex-1 min-w-[80px] bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n </div>\n\n {/* Chevron */}\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </div>\n </PopoverPrimitive.Anchor>\n\n {/* Dropdown */}\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"multi-select-free-text-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2'\n )}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {/* Show typed text as \"Free text\" option if it doesn't match any option exactly */}\n {inputValue.trim() !== '' &&\n !options.some(\n (o) => o.label.toLowerCase() === inputValue.toLowerCase()\n ) && (\n <div\n role=\"option\"\n aria-selected={false}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => addTag(inputValue.trim())}\n onMouseEnter={() => setHighlightedIndex(-2)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === -2 &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {inputValue.trim()}\n </div>\n )}\n {filteredOptions.map((opt, idx) => (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={values.includes(opt.value)}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => handleOptionClick(opt.value)}\n onMouseEnter={() => setHighlightedIndex(idx)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === idx &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {opt.label}\n </div>\n ))}\n {filteredOptions.length === 0 && inputValue.trim() === '' && (\n <div className=\"flex items-center h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-muted-foreground\">\n No options available\n </div>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </div>\n </PopoverPrimitive.Root>\n )\n}\n\nexport { MultiSelectFreeText }\n","import * as React from 'react'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cva } from 'class-variance-authority'\nimport { ChevronDownIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n 'group flex flex-1 list-none items-center justify-center gap-1',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn('relative', className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1'\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto',\n 'group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-400 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n 'absolute top-full left-0 isolate z-50 flex justify-center'\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle\n}\n","'use client'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Check, Circle } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst optionCardVariants = cva(\n 'group flex items-center gap-2 h-12 p-2 cursor-pointer transition-all duration-200 font-medium text-base leading-6 outline-none select-none',\n {\n variants: {\n hasStroke: {\n true: 'border rounded-lg',\n false: 'rounded-lg'\n },\n selected: {\n true: '',\n false: ''\n },\n weight: {\n hug: 'w-fit',\n resizable: 'w-full'\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: ''\n }\n },\n compoundVariants: [\n // Stroke + not selected\n {\n hasStroke: true,\n selected: false,\n disabled: false,\n className:\n 'border-gray-stroke-default text-vibrant-text-heading hover:border-primary-stroke-default'\n },\n // Stroke + selected\n {\n hasStroke: true,\n selected: true,\n disabled: false,\n className:\n 'border-primary-stroke-default bg-primary-surface-subtle text-primary-stroke-default'\n },\n // Stroke + disabled + not selected\n {\n hasStroke: true,\n selected: false,\n disabled: true,\n className: 'border-gray-stroke-default text-vibrant-text-heading'\n },\n // Stroke + disabled + selected\n {\n hasStroke: true,\n selected: true,\n disabled: true,\n className:\n 'border-gray-stroke-default text-vibrant-text-heading'\n },\n // No stroke + not selected\n {\n hasStroke: false,\n selected: false,\n disabled: false,\n className: 'text-vibrant-text-heading'\n },\n // No stroke + selected\n {\n hasStroke: false,\n selected: true,\n disabled: false,\n className:\n 'bg-primary-surface-subtle text-primary-stroke-default'\n },\n // No stroke + disabled\n {\n hasStroke: false,\n disabled: true,\n className: 'text-vibrant-text-heading'\n }\n ],\n defaultVariants: {\n hasStroke: true,\n selected: false,\n weight: 'hug',\n disabled: false\n }\n }\n)\n\n// Visual-only radio indicator (not a Radix primitive)\nfunction RadioIndicator({ selected }: { selected?: boolean }) {\n return (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-5 rounded-full border-2 transition-colors duration-200',\n selected\n ? 'bg-primary-stroke-default border-primary-stroke-default'\n : 'border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default'\n )}\n >\n {selected && <Circle className=\"size-2 fill-white text-white\" />}\n </span>\n )\n}\n\n// Visual-only checkbox indicator (not a Radix primitive)\nfunction CheckboxIndicator({ selected }: { selected?: boolean }) {\n return (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-5 rounded-[4px] border-2 transition-colors duration-200',\n selected\n ? 'bg-primary-stroke-default border-primary-stroke-default'\n : 'border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default'\n )}\n >\n {selected && <Check className=\"size-4 text-white\" />}\n </span>\n )\n}\n\nexport interface OptionCardProps\n extends Omit<React.ComponentProps<'button'>, 'disabled'>,\n Omit<VariantProps<typeof optionCardVariants>, 'selected' | 'disabled'> {\n /** Whether this option is selected */\n selected?: boolean\n /** Whether this option is disabled */\n disabled?: boolean\n /** Position of the selector control */\n selectorPosition?: 'left' | 'right'\n /** Type of selector: radio (single) or checkbox (multiple) */\n selectionType?: 'single' | 'multiple'\n /** Optional leading icon */\n icon?: React.ReactNode\n}\n\nfunction OptionCard({\n className,\n children,\n selected = false,\n disabled = false,\n hasStroke = true,\n weight = 'hug',\n selectorPosition = 'right',\n selectionType = 'single',\n icon,\n ...props\n}: OptionCardProps) {\n const Indicator =\n selectionType === 'single' ? RadioIndicator : CheckboxIndicator\n\n const indicator = <Indicator selected={selected} />\n\n return (\n <button\n type=\"button\"\n data-slot=\"option-card\"\n data-state={selected ? 'selected' : 'unselected'}\n disabled={disabled}\n className={cn(\n optionCardVariants({\n hasStroke,\n selected,\n weight,\n disabled\n }),\n className\n )}\n {...props}\n >\n {selectorPosition === 'left' && indicator}\n <span className=\"flex items-center gap-2 flex-1 min-w-0\">\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <span className=\"truncate\">{children}</span>\n </span>\n {selectorPosition === 'right' && indicator}\n </button>\n )\n}\n\nexport { OptionCard, optionCardVariants }\n","import * as React from 'react'\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon\n} from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport { Button, buttonVariants } from '@/components/ui/button'\n\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size\n }),\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn('flex size-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis\n}\n","'use client'\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n 'bg-primary/20 relative h-2 w-full overflow-hidden rounded-full',\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all rounded-full\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst progressBarVariants = cva('relative overflow-hidden rounded-[8px]', {\n variants: {\n device: {\n desktop: 'w-[360px] h-[4px]',\n mobile: 'w-[342px] h-[4px]'\n }\n },\n defaultVariants: {\n device: 'desktop'\n }\n})\n\nexport interface ProgressBarProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof progressBarVariants> {\n /** Current step (1-based). Must be between 1 and totalSteps. */\n currentStep?: number\n /** Total number of steps. Defaults to 7. */\n totalSteps?: number\n /** Direct percentage value (0-100). Overrides step-based calculation when provided. */\n value?: number\n}\n\nfunction ProgressBar({\n className,\n device,\n currentStep = 1,\n totalSteps = 7,\n value,\n ...props\n}: ProgressBarProps) {\n const percentage =\n value !== undefined\n ? Math.min(100, Math.max(0, value))\n : Math.min(100, Math.max(0, (currentStep / totalSteps) * 100))\n\n return (\n <div\n data-slot=\"progress-bar\"\n className={cn(progressBarVariants({ device }), className)}\n role=\"progressbar\"\n aria-valuenow={Math.round(percentage)}\n aria-valuemin={0}\n aria-valuemax={100}\n {...props}\n >\n {/* Background track */}\n <div className=\"absolute inset-0 rounded-[8px] bg-primary-surface-light\" />\n {/* Fill */}\n <div\n data-slot=\"progress-bar-fill\"\n className=\"absolute inset-y-0 left-0 rounded-[8px] bg-primary-surface-default transition-[width] duration-300 ease-in-out\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n}\n\nexport { ProgressBar, progressBarVariants }\n","'use client'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { CircleIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'cursor-pointer border-gray-stroke-default text-primary-stroke-default focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-5 shrink-0 rounded-full border-2 transition-all duration-400 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-40 data-[state=checked]:bg-primary-stroke-default data-[state=checked]:border-primary-stroke-default',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-white absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"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=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","'use client'\n\nimport * as React from 'react'\nimport { Search, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Suggestion Item ──────────────────────────────────────── */\n\nexport interface SearchSuggestion {\n icon?: React.ReactNode\n label: string\n}\n\n/* ─── Props ────────────────────────────────────────────────── */\n\nexport interface SearchInputProps {\n /** 'icon' renders a 36×36 search icon button; 'button' renders a \"Search\" text button */\n variant?: 'icon' | 'button'\n /** Controlled value */\n value?: string\n /** Uncontrolled default value */\n defaultValue?: string\n /** Called on every input change */\n onValueChange?: (value: string) => void\n /** Called on Enter key or search button click */\n onSearch?: (value: string) => void\n /** Called when the clear (X) button is clicked */\n onClear?: () => void\n placeholder?: string\n /** Label text above the input */\n label?: string\n /** Helper text below the input */\n helperText?: string\n /** Optional left icon */\n icon?: React.ReactNode\n /** Error state */\n error?: boolean\n /** Error helper text (overrides helperText when error=true) */\n errorMessage?: string\n /** Disabled state */\n disabled?: boolean\n /** Suggestion items shown in dropdown when typing */\n suggestions?: SearchSuggestion[]\n /** Called when a suggestion is clicked */\n onSuggestionClick?: (label: string) => void\n className?: string\n}\n\nfunction SearchInput({\n variant = 'icon',\n value: valueProp,\n defaultValue = '',\n onValueChange,\n onSearch,\n onClear,\n placeholder = 'Placeholder',\n label,\n helperText,\n icon,\n error = false,\n errorMessage,\n disabled = false,\n suggestions = [],\n onSuggestionClick,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [isFocused, setIsFocused] = React.useState(false)\n const [showSuggestions, setShowSuggestions] = React.useState(false)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valueProp !== undefined\n const currentValue = isControlled ? valueProp : internalValue\n const hasValue = currentValue.trim().length > 0\n const isFilledEdit = hasValue && !isFocused && !error\n\n const updateValue = React.useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next)\n onValueChange?.(next)\n },\n [isControlled, onValueChange]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n updateValue(e.target.value)\n if (e.target.value.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n } else {\n setShowSuggestions(false)\n }\n },\n [updateValue, suggestions.length]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n onSearch?.(currentValue)\n setShowSuggestions(false)\n } else if (e.key === 'Escape') {\n setShowSuggestions(false)\n inputRef.current?.blur()\n }\n },\n [currentValue, onSearch]\n )\n\n const handleClear = React.useCallback(() => {\n updateValue('')\n onClear?.()\n inputRef.current?.focus()\n }, [updateValue, onClear])\n\n const handleSearchClick = React.useCallback(() => {\n onSearch?.(currentValue)\n setShowSuggestions(false)\n }, [currentValue, onSearch])\n\n const handleSuggestionClick = React.useCallback(\n (label: string) => {\n updateValue(label)\n onSuggestionClick?.(label)\n setShowSuggestions(false)\n inputRef.current?.focus()\n },\n [updateValue, onSuggestionClick]\n )\n\n const handleFocus = React.useCallback(() => {\n if (disabled) return\n setIsFocused(true)\n if (currentValue.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n }\n }, [disabled, currentValue, suggestions.length])\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent) => {\n // Don't blur if clicking inside the container (e.g., search button, suggestion)\n if (containerRef.current?.contains(e.relatedTarget as Node)) return\n setIsFocused(false)\n setShowSuggestions(false)\n },\n []\n )\n\n const displayHelperText = error && errorMessage ? errorMessage : helperText\n const showClearButton = (isFilledEdit || error) && hasValue\n\n return (\n <div\n ref={containerRef}\n data-slot=\"search-input\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n onBlur={handleBlur}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n </div>\n )}\n\n {/* Input container */}\n <div\n className={cn(\n 'flex items-center w-full h-[48px] rounded-[8px] overflow-hidden transition-colors',\n // Border + background\n error\n ? 'border border-error-stroke-light bg-error-surface-light'\n : isFocused\n ? 'border-2 border-focus-ring bg-white dark:bg-background'\n : 'border border-gray-stroke-default bg-white dark:bg-background',\n // Hover (only when not focused, not error, not disabled)\n !isFocused && !error && !disabled && 'hover:border-focus-ring',\n // Padding - adjust for 2px border on focus to prevent layout shift\n error\n ? 'pl-[12px] pr-[12px] py-[8px]'\n : isFocused\n ? 'pl-[11px] pr-[7px] py-[7px]'\n : 'pl-[12px] pr-[8px] py-[8px]',\n // Gap\n 'gap-[8px]',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px]',\n error ? 'text-error-surface-default' : isFocused ? 'text-focus-ring' : 'text-muted-foreground'\n )}\n >\n {icon}\n </span>\n )}\n\n {/* Text input */}\n <input\n ref={inputRef}\n type=\"text\"\n value={currentValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n disabled={disabled}\n placeholder={placeholder}\n className={cn(\n 'flex-1 min-w-0 bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n\n {/* Right action: Search button, icon, or clear */}\n {showClearButton ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"flex items-center justify-center shrink-0 size-[20px] text-muted-foreground hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <X className=\"size-[16px]\" />\n </button>\n ) : variant === 'button' ? (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 h-[36px] min-w-[100px] px-[16px] py-[8px] rounded-[6px] bg-primary-surface-default font-sans font-semibold text-[16px] leading-[24px] text-white cursor-pointer disabled:cursor-not-allowed transition-colors\"\n tabIndex={-1}\n >\n Search\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 size-[36px] rounded-[6px] bg-primary-surface-default cursor-pointer disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Search\"\n tabIndex={-1}\n >\n <Search className=\"size-[20px] text-white\" />\n </button>\n )}\n </div>\n\n {/* Helper text */}\n {displayHelperText && (\n <p\n className={cn(\n 'font-sans font-normal text-[12px] leading-[16px] w-full',\n error ? 'text-error-surface-default' : 'text-vibrant-text-details'\n )}\n >\n {displayHelperText}\n </p>\n )}\n\n {/* Suggestions dropdown */}\n {showSuggestions && suggestions.length > 0 && (\n <div\n data-slot=\"search-input-suggestions\"\n className=\"w-full rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)] flex flex-col gap-[16px]\"\n >\n {suggestions.map((suggestion, idx) => (\n <button\n key={`${suggestion.label}-${idx}`}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion.label)}\n onMouseDown={(e) => e.preventDefault()}\n className=\"flex items-center gap-[13px] h-[40px] pr-[12px] rounded-[8px] w-full text-left hover:bg-gray-surface-light transition-colors cursor-pointer\"\n >\n {suggestion.icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[40px] rounded-[8px] bg-gray-surface-light [&_svg]:size-[20px] text-muted-foreground\">\n {suggestion.icon}\n </span>\n )}\n <span className=\"flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate\">\n {suggestion.label}\n </span>\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { SearchInput }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronsUpDown, XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\"\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport type SearchableSelectOption = {\n value: string\n label: string\n disabled?: boolean\n group?: string\n}\n\n// ─── Context ─────────────────────────────────────────────────────────\n\ninterface SearchableSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n mode: \"single\" | \"multiple\"\n value: string\n setValue: (value: string) => void\n values: string[]\n setValues: (values: string[]) => void\n searchable: boolean\n searchPlaceholder: string\n placeholder: string\n disabled: boolean\n maxCount: number\n options: SearchableSelectOption[]\n optionMap: Map<string, string>\n}\n\nconst SearchableSelectContext =\n React.createContext<SearchableSelectContextValue | null>(null)\n\nfunction useSearchableSelect() {\n const ctx = React.useContext(SearchableSelectContext)\n if (!ctx) {\n throw new Error(\n \"SearchableSelect compound components must be used within <SearchableSelect>\"\n )\n }\n return ctx\n}\n\n// ─── Root ────────────────────────────────────────────────────────────\n\ninterface SearchableSelectProps {\n mode?: \"single\" | \"multiple\"\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n values?: string[]\n defaultValues?: string[]\n onValuesChange?: (values: string[]) => void\n searchable?: boolean\n searchPlaceholder?: string\n placeholder?: string\n disabled?: boolean\n maxCount?: number\n options?: SearchableSelectOption[]\n open?: boolean\n onOpenChange?: (open: boolean) => void\n children?: React.ReactNode\n}\n\nfunction SearchableSelect({\n mode = \"single\",\n value: controlledValue,\n defaultValue = \"\",\n onValueChange,\n values: controlledValues,\n defaultValues = [],\n onValuesChange,\n searchable = true,\n searchPlaceholder = \"Search...\",\n placeholder = \"Select...\",\n disabled = false,\n maxCount = Infinity,\n options = [],\n open: controlledOpen,\n onOpenChange,\n children,\n}: SearchableSelectProps) {\n const [internalOpen, setInternalOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalValues, setInternalValues] =\n React.useState<string[]>(defaultValues)\n\n const open = controlledOpen ?? internalOpen\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (controlledOpen !== undefined) {\n onOpenChange?.(next)\n } else {\n setInternalOpen(next)\n onOpenChange?.(next)\n }\n },\n [controlledOpen, onOpenChange]\n )\n\n const value = controlledValue ?? internalValue\n const setValue = React.useCallback(\n (next: string) => {\n if (controlledValue === undefined) {\n setInternalValue(next)\n }\n onValueChange?.(next)\n },\n [controlledValue, onValueChange]\n )\n\n const values = controlledValues ?? internalValues\n const setValues = React.useCallback(\n (next: string[]) => {\n if (controlledValues === undefined) {\n setInternalValues(next)\n }\n onValuesChange?.(next)\n },\n [controlledValues, onValuesChange]\n )\n\n const optionMap = React.useMemo(() => {\n const map = new Map<string, string>()\n for (const opt of options) {\n map.set(opt.value, opt.label)\n }\n return map\n }, [options])\n\n const ctx = React.useMemo<SearchableSelectContextValue>(\n () => ({\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n }),\n [\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n ]\n )\n\n return (\n <SearchableSelectContext.Provider value={ctx}>\n <Popover open={open} onOpenChange={setOpen}>\n {children}\n </Popover>\n </SearchableSelectContext.Provider>\n )\n}\n\n// ─── Trigger ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof PopoverTrigger> & {\n size?: \"sm\" | \"default\"\n}) {\n const ctx = useSearchableSelect()\n\n const renderContent = () => {\n if (children) return children\n\n if (ctx.mode === \"single\") {\n const label = ctx.optionMap.get(ctx.value)\n return (\n <span\n data-slot=\"searchable-select-value\"\n className={cn(\n \"truncate\",\n !label && \"text-muted-foreground\"\n )}\n >\n {label || ctx.placeholder}\n </span>\n )\n }\n\n // Multi mode\n if (ctx.values.length === 0) {\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"text-muted-foreground\"\n >\n {ctx.placeholder}\n </span>\n )\n }\n\n const visible = ctx.values.slice(0, ctx.maxCount)\n const remaining = ctx.values.length - visible.length\n\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"flex flex-wrap items-center gap-1\"\n >\n {visible.map((v) => (\n <Badge\n key={v}\n variant=\"secondary\"\n className=\"gap-1 pr-1\"\n >\n <span className=\"truncate max-w-[120px]\">\n {ctx.optionMap.get(v) || v}\n </span>\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label={`Remove ${ctx.optionMap.get(v) || v}`}\n className=\"rounded-sm hover:bg-muted cursor-pointer\"\n onPointerDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation()\n ctx.setValues(ctx.values.filter((val) => val !== v))\n }}\n >\n <XIcon className=\"size-3\" />\n </span>\n </Badge>\n ))}\n {remaining > 0 && (\n <Badge variant=\"outline\" className=\"text-muted-foreground\">\n +{remaining} more\n </Badge>\n )}\n </span>\n )\n }\n\n return (\n <PopoverTrigger\n data-slot=\"searchable-select-trigger\"\n data-size={size}\n disabled={ctx.disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:min-h-9 data-[size=sm]:min-h-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ctx.mode === \"multiple\" && \"h-auto flex-wrap whitespace-normal\",\n className\n )}\n {...props}\n >\n {renderContent()}\n <ChevronsUpDown className=\"size-4 shrink-0 opacity-50\" />\n </PopoverTrigger>\n )\n}\n\n// ─── Content ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectContent({\n className,\n children,\n emptyText = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof PopoverContent> & {\n emptyText?: string\n}) {\n const ctx = useSearchableSelect()\n\n const groupedOptions = React.useMemo(() => {\n if (ctx.options.length === 0) return null\n const groups = new Map<string, SearchableSelectOption[]>()\n for (const opt of ctx.options) {\n const key = opt.group || \"\"\n if (!groups.has(key)) groups.set(key, [])\n groups.get(key)!.push(opt)\n }\n return groups\n }, [ctx.options])\n\n const renderAutoItems = () => {\n if (!groupedOptions) return null\n const entries = Array.from(groupedOptions.entries())\n if (entries.length === 1 && entries[0][0] === \"\") {\n return entries[0][1].map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))\n }\n return entries.map(([group, opts]) => (\n <SearchableSelectGroup key={group} heading={group || undefined}>\n {opts.map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))}\n </SearchableSelectGroup>\n ))\n }\n\n return (\n <PopoverContent\n data-slot=\"searchable-select-content\"\n className={cn(\"w-[var(--radix-popover-trigger-width)] p-0\", className)}\n align=\"start\"\n {...props}\n >\n <Command>\n {ctx.searchable && (\n <CommandInput placeholder={ctx.searchPlaceholder} />\n )}\n <CommandList>\n <CommandEmpty>{emptyText}</CommandEmpty>\n {children || renderAutoItems()}\n </CommandList>\n </Command>\n </PopoverContent>\n )\n}\n\n// ─── Item ────────────────────────────────────────────────────────────\n\nfunction SearchableSelectItem({\n className,\n value,\n children,\n disabled,\n ...props\n}: Omit<React.ComponentProps<typeof CommandItem>, \"onSelect\" | \"value\"> & {\n value: string\n disabled?: boolean\n}) {\n const ctx = useSearchableSelect()\n\n const isSelected =\n ctx.mode === \"single\"\n ? ctx.value === value\n : ctx.values.includes(value)\n\n const handleSelect = () => {\n if (disabled) return\n if (ctx.mode === \"single\") {\n ctx.setValue(value === ctx.value ? \"\" : value)\n ctx.setOpen(false)\n } else {\n ctx.setValues(\n isSelected\n ? ctx.values.filter((v) => v !== value)\n : [...ctx.values, value]\n )\n }\n }\n\n return (\n <CommandItem\n data-slot=\"searchable-select-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none\",\n ctx.mode === \"multiple\" && \"pl-8\",\n className\n )}\n onSelect={handleSelect}\n data-disabled={disabled || undefined}\n {...props}\n >\n {ctx.mode === \"multiple\" && (\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <span\n className={cn(\n \"size-4 rounded-sm border border-primary transition-colors\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"bg-transparent\"\n )}\n >\n {isSelected && <CheckIcon className=\"size-4 p-0.5\" />}\n </span>\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {ctx.mode === \"single\" && isSelected && (\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <CheckIcon className=\"size-4\" />\n </span>\n )}\n </CommandItem>\n )\n}\n\n// ─── Group ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandGroup>) {\n return (\n <CommandGroup\n data-slot=\"searchable-select-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\n// ─── Empty ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectEmpty({\n className,\n children = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof CommandEmpty>) {\n return (\n <CommandEmpty\n data-slot=\"searchable-select-empty\"\n className={cn(className)}\n {...props}\n >\n {children}\n </CommandEmpty>\n )\n}\n\n// ─── Exports ─────────────────────────────────────────────────────────\n\nexport {\n SearchableSelect,\n SearchableSelectTrigger,\n SearchableSelectContent,\n SearchableSelectItem,\n SearchableSelectGroup,\n SearchableSelectEmpty,\n}\n\nexport type { SearchableSelectProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 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\nexport { Separator }\n","'use client'\n\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: 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 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\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('text-foreground font-semibold', 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-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger\n}\n","'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { PanelLeftIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Separator } from '@/components/ui/separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle\n} from '@/components/ui/sheet'\nimport { Skeleton } from '@/components/ui/skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n} from '@/components/ui/tooltip'\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { cn } from '@/lib/utils'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '18rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\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 if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\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 data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className\n )}\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-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE\n } as React.CSSProperties\n }\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 className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\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)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\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 // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--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 data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-9', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-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 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('bg-background h-8 w-full shadow-none', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden 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}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'\n },\n size: {\n default: 'h-8 text-sm',\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\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\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\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\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 useSidebar\n}\n","import { cn } from '@/lib/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn('bg-accent animate-pulse rounded-md', className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","'use client'\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction 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\nconst TooltipCloseContext = React.createContext<(() => void) | null>(null)\n\nfunction Tooltip({\n persistent = false,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root> & {\n /** When true, tooltip stays open until dismissed via close button or click outside. */\n persistent?: boolean\n}) {\n const [open, setOpen] = React.useState(props.defaultOpen ?? false)\n\n if (!persistent) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n }\n\n const close = () => {\n setOpen(false)\n props.onOpenChange?.(false)\n }\n\n return (\n <TooltipProvider>\n <TooltipCloseContext.Provider value={close}>\n <TooltipPrimitive.Root\n data-slot=\"tooltip\"\n open={props.open ?? open}\n onOpenChange={isOpen => {\n if (isOpen) {\n setOpen(true)\n props.onOpenChange?.(true)\n }\n // When persistent, ignore close from hover-out\n }}\n {...props}\n />\n </TooltipCloseContext.Provider>\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nexport interface TooltipContentProps extends React.ComponentProps<\n typeof TooltipPrimitive.Content\n> {\n /** Omit the arrow entirely. Defaults to `false`. */\n hideArrow?: boolean\n /**\n * Classes merged (via `cn`) onto the arrow. Use to recolor it so it matches a\n * custom surface, e.g. `arrowClassName=\"bg-white fill-white\"`.\n */\n arrowClassName?: string\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n hideArrow = false,\n arrowClassName,\n children,\n ...props\n}: TooltipContentProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance ',\n className\n )}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n className={cn(\n 'bg-primary fill-primary z-10 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]',\n arrowClassName\n )}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport type RichTooltipVariant = 'dark' | 'light'\n\n/**\n * Per-variant surface, text, muted-text and arrow classes. Both variants render\n * a consistent look regardless of the app's light/dark theme (the base tokens\n * are theme-invariant), matching how the original dark tooltip always rendered.\n *\n * The `light` variant ships a soft shadow on the surface AND a matching\n * `drop-shadow` on the arrow (a `filter`, so the shadow follows the diamond\n * shape) — otherwise a white arrow is invisible against light backgrounds.\n */\nconst richTooltipVariants: Record<\n RichTooltipVariant,\n { surface: string; text: string; mutedText: string; arrow: string }\n> = {\n dark: {\n surface: 'bg-gray-surface-dark',\n text: 'text-white',\n mutedText: 'text-white/70 hover:text-white',\n arrow: 'fill-gray-surface-dark'\n },\n light: {\n surface: 'bg-white shadow-md',\n text: 'text-gray-surface-dark',\n mutedText: 'text-gray-surface-dark/70 hover:text-gray-surface-dark',\n arrow: 'fill-white drop-shadow-[0_2px_2px_rgba(0,0,0,0.12)]'\n }\n}\n\nexport interface RichTooltipContentProps extends Omit<\n React.ComponentProps<typeof TooltipPrimitive.Content>,\n 'children'\n> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n children: React.ReactNode\n /**\n * Preset surface + text + arrow combo. `\"dark\"` (default) keeps the original\n * dark surface with white text; `\"light\"` renders a white surface with dark\n * text. Both look correct out of the box regardless of the app theme.\n */\n variant?: RichTooltipVariant\n /**\n * Classes merged (via `cn`) onto the inner surface `div`, so the background\n * (and text color) can be overridden, e.g. `surfaceClassName=\"bg-white text-foreground\"`.\n * Wins over the `variant` defaults.\n */\n surfaceClassName?: string\n /**\n * Classes merged (via `cn`) onto the arrow so it matches a custom surface,\n * e.g. `arrowClassName=\"fill-white\"`. Wins over the `variant` defaults.\n */\n arrowClassName?: string\n /** Omit the arrow entirely. Defaults to `false`. */\n hideArrow?: boolean\n}\n\nfunction RichTooltipContent({\n className,\n sideOffset = 4,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n variant = 'dark',\n surfaceClassName,\n arrowClassName,\n hideArrow = false,\n ...props\n}: RichTooltipContentProps) {\n const close = React.useContext(TooltipCloseContext)\n\n const handleDismiss = () => {\n close?.()\n onDismiss?.()\n }\n\n const styles = richTooltipVariants[variant] ?? richTooltipVariants.dark\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"rich-tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 origin-(--radix-tooltip-content-transform-origin)',\n className\n )}\n {...(dismissible && {\n onPointerDownOutside: handleDismiss\n })}\n {...props}\n >\n <div\n className={cn(\n 'flex items-start gap-3 rounded-[12px] px-3 py-4 text-sm leading-5 max-w-sm',\n styles.surface,\n styles.text,\n surfaceClassName\n )}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5\">{heading}</p>\n )}\n <div className=\"font-normal text-sm leading-5\">{children}</div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={handleDismiss}\n className={cn(\n 'flex items-center justify-center shrink-0 size-5 transition-colors cursor-pointer',\n styles.mutedText\n )}\n aria-label=\"Dismiss\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n width={16}\n height={12}\n className={cn(styles.arrow, arrowClassName)}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport {\n RichTooltipContent,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport * as React from 'react'\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger\n} from './dialog'\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger\n} from './drawer'\nimport { useMediaQuery } from './useMediaQuery'\n\ntype SmartDialogProps = React.ComponentProps<typeof Dialog> &\n React.ComponentProps<typeof Drawer>\n\nconst SmartDialog = ({ children, ...props }: SmartDialogProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <Drawer {...props}>{children}</Drawer>\n ) : (\n <Dialog {...props}>{children}</Dialog>\n )\n}\n\ntype SmartDialogContentProps = React.ComponentProps<typeof DialogContent> &\n React.ComponentProps<typeof DrawerContent>\n\nconst SmartDialogContent = ({\n children,\n overlayClassName,\n withCloseButton,\n showCloseButton,\n ...props\n}: SmartDialogContentProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerContent\n {...props}\n overlayClassName={overlayClassName}\n withCloseButton={withCloseButton ?? true}\n showCloseButton={showCloseButton ?? true}\n >\n {children}\n </DrawerContent>\n ) : (\n <DialogContent\n {...props}\n showCloseButton={showCloseButton ?? true}\n overlayClassName={overlayClassName}\n >\n {children}\n </DialogContent>\n )\n}\n\ntype SmartDialogDescriptionProps = React.ComponentProps<\n typeof DialogDescription\n> &\n React.ComponentProps<typeof DrawerDescription>\n\nconst SmartDialogDescription = ({\n children,\n ...props\n}: SmartDialogDescriptionProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerDescription {...props}>{children}</DrawerDescription>\n ) : (\n <DialogDescription {...props}>{children}</DialogDescription>\n )\n}\n\ntype SmartDialogHeaderProps = React.ComponentProps<typeof DialogHeader> &\n React.ComponentProps<typeof DrawerHeader>\n\nconst SmartDialogHeader = ({ children, ...props }: SmartDialogHeaderProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerHeader {...props}>{children}</DrawerHeader>\n ) : (\n <DialogHeader {...props}>{children}</DialogHeader>\n )\n}\n\ntype SmartDialogTitleProps = React.ComponentProps<typeof DialogTitle> &\n React.ComponentProps<typeof DrawerTitle>\n\nconst SmartDialogTitle = ({ children, ...props }: SmartDialogTitleProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTitle {...props}>{children}</DrawerTitle>\n ) : (\n <DialogTitle {...props}>{children}</DialogTitle>\n )\n}\n\ntype SmartDialogTriggerProps = React.ComponentProps<typeof DialogTrigger> &\n React.ComponentProps<typeof DrawerTrigger>\n\nconst SmartDialogTrigger = ({\n children,\n ...props\n}: SmartDialogTriggerProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTrigger {...props}>{children}</DrawerTrigger>\n ) : (\n <DialogTrigger {...props}>{children}</DialogTrigger>\n )\n}\n\ntype SmartDialogFooterProps = React.ComponentProps<typeof DialogFooter> &\n React.ComponentProps<typeof DrawerFooter>\n\nconst SmartDialogFooter = ({ children, ...props }: SmartDialogFooterProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerFooter {...props}>{children}</DrawerFooter>\n ) : (\n <DialogFooter {...props}>{children}</DialogFooter>\n )\n}\n\ntype SmartDialogCloseProps = React.ComponentProps<typeof DialogClose> &\n React.ComponentProps<typeof DrawerClose>\n\nconst SmartDialogClose = ({ children, ...props }: SmartDialogCloseProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <>\n <DrawerClose {...props}>{children}</DrawerClose>\n </>\n ) : (\n <DialogClose {...props}>{children}</DialogClose>\n )\n}\n\nexport {\n SmartDialog,\n SmartDialogClose,\n SmartDialogContent,\n SmartDialogDescription,\n SmartDialogFooter,\n SmartDialogHeader,\n SmartDialogTitle,\n SmartDialogTrigger\n}\n","import * as React from 'react'\n\n/**\n * SSR-safe media query subscription.\n *\n * Built on `useSyncExternalStore` so that **hydration renders the server value**\n * and only then switches to the real match. The previous implementation read\n * `window.matchMedia(query).matches` inside `useState`'s initialiser, which made\n * the first client render disagree with the server HTML. React reports that as a\n * hydration mismatch and explicitly does not patch it up: on a phone,\n * `SmartDialog` shipped server-rendered `data-slot=\"dialog-trigger\"` markup that\n * stayed in the DOM while React believed it had rendered a Drawer.\n *\n * The consequence for consumers: `matches` is `false` for the first client\n * render regardless of viewport, then settles. Anything that must not flash\n * should render neutral markup while it is `false`.\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = React.useCallback(\n (onStoreChange: () => void) => {\n const list = window.matchMedia(query)\n // Safari < 14 exposes only the deprecated listener API.\n if (list.addEventListener) {\n list.addEventListener('change', onStoreChange)\n return () => list.removeEventListener('change', onStoreChange)\n }\n list.addListener(onStoreChange)\n return () => list.removeListener(onStoreChange)\n },\n [query]\n )\n\n const getSnapshot = React.useCallback(\n () => window.matchMedia(query).matches,\n [query]\n )\n\n // Server snapshot is always false — the server has no viewport to measure.\n const getServerSnapshot = React.useCallback(() => false, [])\n\n return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","\"use client\"\n\nimport { CircleCheck, Info, TriangleAlert } from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast, type ToasterProps } from \"sonner\"\n\nconst iconWrapper = (icon: React.ReactNode) => (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n)\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n info: iconWrapper(<Info />),\n error: iconWrapper(<TriangleAlert />),\n success: iconWrapper(<CircleCheck />),\n }}\n toastOptions={{\n unstyled: true,\n classNames: {\n toast:\n \"flex items-start gap-3 w-full rounded-[12px] border px-3 py-4 text-sm leading-5\",\n title: \"font-semibold text-sm leading-5 text-vibrant-text-heading\",\n description: \"font-normal text-sm leading-5 text-vibrant-text-body\",\n info: \"bg-alert-bg-informative border-gray-stroke-light [&_svg]:text-[#52525c] dark:[&_svg]:text-[#a1a1aa]\",\n error:\n \"bg-alert-bg-error border-error-stroke-light [&_svg]:text-[#ff6467] dark:[&_svg]:text-[#ff8486]\",\n success:\n \"bg-success-surface-subtle border-success-stroke-light [&_svg]:text-[#00a63e] dark:[&_svg]:text-[#34d399]\",\n },\n }}\n style={\n {\n \"--width\": \"436px\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster, toast }\n","'use client'\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer cursor-pointer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-brand-text-vibrant dark:data-[state=unchecked]:bg-input/80 inline-flex h-[24px] w-[40px] shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-offset-1 ',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-5 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-3px)] data-[state=unchecked]:translate-x-[1px]'\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client'\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n/* ─── Internal Context ─────────────────────────────────────── */\n\ntype TabsContextValue = {\n orientation: 'horizontal' | 'vertical'\n}\n\nconst TabsContext = React.createContext<TabsContextValue>({\n orientation: 'horizontal'\n})\n\n/* ─── useTabIndicator hook ─────────────────────────────────── */\n\nfunction useTabIndicator(\n listRef: React.RefObject<HTMLElement | null>,\n orientation: 'horizontal' | 'vertical'\n) {\n const [style, setStyle] = React.useState<React.CSSProperties>({\n position: 'absolute',\n opacity: 0\n })\n const isFirstMeasurement = React.useRef(true)\n\n const measure = React.useCallback(() => {\n const list = listRef.current\n if (!list) return\n\n requestAnimationFrame(() => {\n const activeEl = list.querySelector<HTMLElement>(\n '[data-state=\"active\"]'\n )\n if (!activeEl) return\n\n const noTransition = isFirstMeasurement.current\n\n if (orientation === 'horizontal') {\n setStyle({\n position: 'absolute',\n bottom: 0,\n left: 0,\n zIndex: 1,\n height: '2px',\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, width 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n } else {\n setStyle({\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 1,\n width: '2px',\n height: activeEl.offsetHeight,\n transform: `translateY(${activeEl.offsetTop}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, height 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n }\n\n if (noTransition) {\n isFirstMeasurement.current = false\n }\n })\n }, [listRef, orientation])\n\n React.useEffect(() => {\n const list = listRef.current\n if (!list) return\n\n // Initial measurement\n measure()\n\n // Observe data-state changes on triggers\n const mutationObserver = new MutationObserver(() => {\n measure()\n })\n mutationObserver.observe(list, {\n subtree: true,\n attributes: true,\n attributeFilter: ['data-state'],\n childList: true\n })\n\n // Observe resize\n const resizeObserver = new ResizeObserver(() => {\n measure()\n })\n resizeObserver.observe(list)\n\n return () => {\n mutationObserver.disconnect()\n resizeObserver.disconnect()\n }\n }, [listRef, measure])\n\n return { style }\n}\n\n/* ─── Tabs (Root) ──────────────────────────────────────────── */\n\nfunction Tabs({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n const ctx = React.useMemo(\n () => ({ orientation: orientation ?? 'horizontal' }),\n [orientation]\n ) as TabsContextValue\n\n return (\n <TabsContext.Provider value={ctx}>\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={cn(\n orientation === 'vertical' ? 'flex flex-row gap-4' : 'flex flex-col gap-2',\n className\n )}\n {...props}\n />\n </TabsContext.Provider>\n )\n}\n\n/* ─── TabsList ─────────────────────────────────────────────── */\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n const listRef = React.useRef<HTMLDivElement>(null)\n const { orientation } = React.useContext(TabsContext)\n const { style: indicatorStyle } = useTabIndicator(listRef, orientation)\n\n return (\n <TabsPrimitive.List\n ref={listRef}\n data-slot=\"tabs-list\"\n className={cn(\n 'text-muted-foreground relative',\n // The gray track is an inset shadow rather than a border so it lives\n // inside the padding box, letting the active indicator paint over it.\n orientation === 'vertical'\n ? 'flex flex-col shadow-[inset_1px_0_0_0_var(--gray-stroke-default)]'\n : 'flex w-fit items-center overflow-x-auto shadow-[inset_0_-1px_0_0_var(--gray-stroke-default)]',\n className\n )}\n {...props}\n >\n {props.children}\n <span data-slot=\"tabs-indicator\" style={indicatorStyle} />\n </TabsPrimitive.List>\n )\n}\n\n/* ─── TabsTrigger ──────────────────────────────────────────── */\n\nconst tabsTriggerVariants = cva(\n 'cursor-pointer inline-flex shrink-0 items-center justify-center font-sans font-medium whitespace-nowrap transition-[color,box-shadow] text-vibrant-text-details data-[state=active]:font-semibold data-[state=active]:text-vibrant-text-heading disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4',\n {\n variants: {\n size: {\n md: 'text-sm leading-5',\n lg: 'text-base leading-6'\n },\n orientation: {\n horizontal: 'pb-1 px-2',\n vertical: 'py-1.5 px-3 justify-start text-left w-full'\n }\n },\n compoundVariants: [\n { orientation: 'horizontal', size: 'md', class: 'min-w-[72px]' },\n { orientation: 'horizontal', size: 'lg', class: 'min-w-[88px]' }\n ],\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal'\n }\n }\n)\n\nexport interface TabsTriggerProps\n extends React.ComponentProps<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {}\n\nfunction TabsTrigger({\n className,\n size,\n children,\n ...props\n}: TabsTriggerProps) {\n const { orientation } = React.useContext(TabsContext)\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(tabsTriggerVariants({ size, orientation }), className)}\n {...props}\n >\n <span\n className={cn(\n 'inline-flex items-center justify-center gap-1.5 rounded-[6px] hover:bg-gray-surface-light',\n orientation === 'vertical'\n ? 'px-2 py-1.5 w-full'\n : 'px-2 py-1.5'\n )}\n >\n {children}\n </span>\n </TabsPrimitive.Trigger>\n )\n}\n\n/* ─── TabsContent ──────────────────────────────────────────── */\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn('flex-1 outline-none', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsTriggerVariants }\n","'use client'\n\nimport {\n ThemeProvider as NextThemesProvider,\n type ThemeProviderProps\n} from 'next-themes'\n\nfunction ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemesProvider\n attribute=\"class\"\n defaultTheme=\"light\"\n enableSystem\n disableTransitionOnChange\n {...props}\n >\n {children}\n </NextThemesProvider>\n )\n}\n\nexport { ThemeProvider, type ThemeProviderProps }\n","'use client'\n\nimport { Monitor, Moon, Sun } from 'lucide-react'\nimport { useTheme } from 'next-themes'\nimport * as React from 'react'\nimport { Button } from './button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger\n} from './dropdown-menu'\n\nfunction ThemeToggle({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { setTheme } = useTheme()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"icon\" className={className} {...props}>\n <Sun className=\"size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <Moon className=\"absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>\n <Sun className=\"size-4\" />\n Light\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>\n <Moon className=\"size-4\" />\n Dark\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>\n <Monitor className=\"size-4\" />\n System\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ThemeToggle }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { Clock } from 'lucide-react'\nimport * as React from 'react'\nimport { Button } from './button'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type TimeFormat = '12h' | '24h' | 'h:mm a' | 'h:mm A'\n\nexport interface TimeValue {\n hours: number\n minutes: number\n}\n\nconst TIME_FORMAT_PLACEHOLDER: Record<TimeFormat, string> = {\n '12h': 'hh:mm AM/PM',\n '24h': 'HH:mm',\n 'h:mm a': 'h:mm am/pm',\n 'h:mm A': 'h:mm AM/PM'\n}\n\nfunction is24HourFormat(tf: TimeFormat): boolean {\n return tf === '24h'\n}\n\nfunction formatTime(\n time: TimeValue | null,\n timeFormat: TimeFormat = '12h'\n): string {\n if (!time) return ''\n const { hours, minutes } = time\n const h24 = String(hours).padStart(2, '0')\n const m = String(minutes).padStart(2, '0')\n const h12 = hours % 12 || 12\n const h12p = String(h12).padStart(2, '0')\n const period = hours >= 12 ? 'PM' : 'AM'\n\n switch (timeFormat) {\n case '24h':\n return `${h24}:${m}`\n case 'h:mm a':\n return `${h12}:${m} ${period.toLowerCase()}`\n case 'h:mm A':\n return `${h12}:${m} ${period}`\n case '12h':\n default:\n return `${h12p}:${m} ${period}`\n }\n}\n\nfunction getDisplayHour(hours: number, timeFormat: TimeFormat): number {\n if (is24HourFormat(timeFormat)) return hours\n return hours % 12 || 12\n}\n\nfunction getPeriod(hours: number): 'AM' | 'PM' {\n return hours >= 12 ? 'PM' : 'AM'\n}\n\nexport interface TimeInputProps {\n time: TimeValue | null\n setTime: (time: TimeValue | null) => void\n timeFormat?: TimeFormat\n minuteStep?: number\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n placeholder?: string\n icon?: React.ReactNode\n formatDisplay?: (time: TimeValue) => string\n}\n\nexport function TimeInput({\n time,\n setTime,\n timeFormat = '12h',\n minuteStep = 1,\n inputDisabled,\n className,\n inputClassName,\n popoverContentClassName,\n popoverContentProps,\n size,\n placeholder,\n icon,\n formatDisplay\n}: TimeInputProps) {\n const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat]\n\n const displayValue = React.useMemo(() => {\n if (!time) return ''\n if (formatDisplay) return formatDisplay(time)\n return formatTime(time, timeFormat)\n }, [time, formatDisplay, timeFormat])\n\n const [open, setOpen] = React.useState(false)\n\n const hoursRef = React.useRef<HTMLDivElement>(null)\n const minutesRef = React.useRef<HTMLDivElement>(null)\n const periodRef = React.useRef<HTMLDivElement>(null)\n\n const scrollToSelected = React.useCallback(() => {\n requestAnimationFrame(() => {\n for (const ref of [hoursRef, minutesRef, periodRef]) {\n const container = ref.current\n if (!container) continue\n const selected = container.querySelector('[data-selected=\"true\"]')\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' })\n }\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (open) {\n scrollToSelected()\n }\n }, [open, scrollToSelected])\n\n const handleHourSelect = (hour: number) => {\n let h24: number\n if (is24HourFormat(timeFormat)) {\n h24 = hour\n } else {\n const currentPeriod = time ? getPeriod(time.hours) : 'AM'\n if (currentPeriod === 'AM') {\n h24 = hour === 12 ? 0 : hour\n } else {\n h24 = hour === 12 ? 12 : hour + 12\n }\n }\n setTime({ hours: h24, minutes: time?.minutes ?? 0 })\n }\n\n const handleMinuteSelect = (minute: number) => {\n setTime({ hours: time?.hours ?? 0, minutes: minute })\n }\n\n const handlePeriodSelect = (period: 'AM' | 'PM') => {\n const currentHours = time?.hours ?? 0\n const currentH12 = currentHours % 12\n const newHours = period === 'AM' ? currentH12 : currentH12 + 12\n setTime({ hours: newHours, minutes: time?.minutes ?? 0 })\n }\n\n const hoursList = is24HourFormat(timeFormat)\n ? Array.from({ length: 24 }, (_, i) => i)\n : Array.from({ length: 12 }, (_, i) => i + 1)\n\n const minutesList = Array.from(\n { length: Math.ceil(60 / minuteStep) },\n (_, i) => i * minuteStep\n )\n\n const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null\n const selectedMinute = time?.minutes ?? null\n const selectedPeriod = time ? getPeriod(time.hours) : null\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={inputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n inputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={inputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n {icon !== undefined ? (\n icon\n ) : (\n <Clock className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn('w-auto p-0', popoverContentClassName)}\n onOpenAutoFocus={e => e.preventDefault()}\n {...popoverContentProps}\n >\n <div className=\"flex divide-x border border-focus-ring rounded-md\">\n {/* Hours */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div ref={hoursRef} className=\"flex flex-col p-1 \">\n {hoursList.map(h => (\n <Button\n key={h}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedH12 === h}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedH12 === h &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleHourSelect(h)}\n >\n {String(h).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* Minutes */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div\n ref={minutesRef}\n className={cn(\n 'flex flex-col p-1',\n minutesList.length <= 12 && 'h-full justify-center'\n )}\n >\n {minutesList.map(m => (\n <Button\n key={m}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedMinute === m}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedMinute === m &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleMinuteSelect(m)}\n >\n {String(m).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* AM/PM */}\n {!is24HourFormat(timeFormat) && (\n <div className=\"flex flex-col p-1 justify-center gap-1\">\n {(['AM', 'PM'] as const).map(p => (\n <Button\n key={p}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedPeriod === p}\n className={cn(\n 'w-14 justify-center text-sm',\n selectedPeriod === p &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handlePeriodSelect(p)}\n >\n {p}\n </Button>\n ))}\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"cursor-pointer inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","export { useTheme } from 'next-themes'\n"],"mappings":";;;AAAA,YAAY,wBAAwB;AACpC,SAAS,uBAAuB;AAChC,YAAY,WAAW;;;ACFvB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADsCM,SA+HM,UA/HN,KAwEF,YAxEE;AAlCN,IAAM,4BAA4B;AAElC,IAAM,mBAAyB,oBAG5B;AAAA,EACD,SAAS;AAAA,EACT,eAAe;AACjB,CAAC;AAcD,SAAS,UAAU;AAAA,EACjB,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAmB;AACjB,QAAM,UAAgB;AAAA,IACpB,OAAO,EAAE,SAAS,cAAc;AAAA,IAChC,CAAC,SAAS,aAAa;AAAA,EACzB;AACA,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,SAChC;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW;AAAA,QACT,YAAY,cAAc;AAAA,QAC1B;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AASA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAuB;AACrB,QAAM,EAAE,SAAS,cAAc,IAAU,iBAAW,gBAAgB;AACpE,QAAM,eACJ,iBAAiB,cACb,EAAE,gBAAgB,GAAG,cAAc,yBAAyB,KAAK,IACjE;AACN,SACE;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT,YAAY,aACR;AAAA,UACE;AAAA;AAAA;AAAA,UAGA;AAAA,UACA;AAAA,QACF,IACA;AAAA,QACJ,iBAAiB;AAAA,QACjB;AAAA,MACF;AAAA,MACA,OAAO,eAAe,EAAE,GAAG,cAAc,GAAG,MAAM,IAAI;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAmBA,SAAS,cAAc,EAAE,UAAU,GAA2B;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,4BAAC,UAAK,WAAU,mEAAkE;AAAA,QAClF,oBAAC,UAAK,WAAU,kOAAiO;AAAA;AAAA;AAAA,EACnP;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAA0B;AACxB,QAAM,EAAE,QAAQ,IAAU,iBAAW,gBAAgB;AACrD,QAAM,gBACJ,iBAAiB,UAAa,kBAAkB;AAClD,QAAM,mBACJ,YAAY,cACZ,kBAAkB,UAClB,iBAAiB;AACnB,QAAM,cAAc,CAAC,iBAAiB,SAAS;AAC/C,SACE,oBAAoB,2BAAnB,EAA0B,WAAU,QACnC;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,YAAY,cACV;AAAA,QACF,eAAe;AAAA,QACf;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,gBACC,mBACE,qBAAC,UAAK,WAAU,+JACd;AAAA,8BAAC,UAAK,WAAU,uEACb,yBACH;AAAA,UACA,oBAAC,UAAK,WAAU,6FACb,wBACH;AAAA,WACF,IAEA,iCACG;AAAA,4BAAkB,UACjB,oBAAC,UAAK,WAAU,qFACb,yBACH;AAAA,UAED,iBAAiB,UAChB,oBAAC,UAAK,WAAU,uFACb,wBACH;AAAA,WAEJ,IAEA,SAAS,eACX,oBAAC,iBAAc,WAAW,eAAe,IAEzC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,QAAM,EAAE,QAAQ,IAAU,iBAAW,gBAAgB;AACrD,SACE;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA;AAAA;AAAA,QAGA,YAAY,aACR,gGACA;AAAA,MACN;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT,YAAY,aAAa,8BAA8B;AAAA,YACvD;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;AEnOA,OAAuB;AACvB,SAAS,WAA8B;AA0BnC,gBAAAA,YAAA;AAtBJ,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqE;AACnE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC/DA,SAAS,OAAAC,YAA8B;AACvC,SAAS,SAAS;AAClB,OAAuB;AAkDf,gBAAAC,MAIF,QAAAC,aAJE;AA9CR,IAAM,sBAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,aACE;AAAA,QACF,OACE;AAAA,QACF,SACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAWA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW,GAAG,oBAAoB,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA,MACrD,GAAG;AAAA,MAEH;AAAA,gBACC,gBAAAD,KAAC,UAAK,WAAU,mEACb,gBACH;AAAA,QAEF,gBAAAC,MAAC,SAAI,WAAU,sCACZ;AAAA,qBACC,gBAAAD,KAAC,OAAE,WAAU,6DACV,mBACH;AAAA,UAEF,gBAAAA,KAAC,SAAI,WAAU,wDACZ,UACH;AAAA,WACF;AAAA,QACC,eACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAU;AAAA,YACV,cAAW;AAAA,YAEX,0BAAAA,KAAC,KAAE,WAAU,YAAW;AAAA;AAAA,QAC1B;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AC5EA,OAAuB;AACvB,YAAY,0BAA0B;;;ACHtC,SAAS,YAAY;AACrB,SAAS,OAAAG,YAA8B;AACvC,OAAuB;AA0DnB,gBAAAC,YAAA;AAtDJ,IAAM,iBAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,UACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,mBACE;AAAA,QACF,qBACE;AAAA,QACF,MAAM;AAAA,QACN,aACE;AAAA,QACF,yBACE;AAAA,QACF,wBACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGK;AACH,QAAM,OAAO,UAAU,OAAO;AAE9B,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ADvDS,gBAAAE,MAwCL,QAAAC,aAxCK;AAHT,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAA2D;AACzD,SAAO,gBAAAD,KAAsB,2BAArB,EAA0B,aAAU,gBAAgB,GAAG,OAAO;AACxE;AAEA,SAAS,mBAAmB;AAAA,EAC1B,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA,KAAsB,8BAArB,EAA6B,aAAU,wBAAwB,GAAG,OAAO;AAE9E;AAEA,SAAS,kBAAkB;AAAA,EACzB,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA,KAAsB,6BAArB,EAA4B,aAAU,uBAAuB,GAAG,OAAO;AAE5E;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAC,MAAC,qBACC;AAAA,oBAAAD,KAAC,sBAAmB;AAAA,IACpB,gBAAAA;AAAA,MAAsB;AAAA,MAArB;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,KACF;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,gDAAgD,SAAS;AAAA,MACtE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yBAAyB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,WAAW,GAAG,eAAe,GAAG,SAAS;AAAA,MACxC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,WAAW,GAAG,eAAe,EAAE,SAAS,UAAU,CAAC,GAAG,SAAS;AAAA,MAC9D,GAAG;AAAA;AAAA,EACN;AAEJ;;;AE5IA,YAAY,0BAA0B;AAK7B,gBAAAE,YAAA;AAHT,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAA2D;AACzD,SAAO,gBAAAA,KAAsB,2BAArB,EAA0B,aAAU,gBAAgB,GAAG,OAAO;AACxE;;;ACRA,YAAY,qBAAqB;AACjC,YAAY,sBAAsB;AAClC,SAAS,WAAW,SAAS,KAAAC,UAAS;AACtC,YAAYC,YAAW;;;ACHvB,YAAYC,YAAW;AAEvB,IAAM,oBAAoB;AAEnB,SAAS,cAAc;AAC5B,QAAM,CAAC,UAAU,WAAW,IAAU,gBAA8B,MAAS;AAE7E,EAAM,iBAAU,MAAM;AACpB,UAAM,MAAM,OAAO,WAAW,eAAe,oBAAoB,CAAC,KAAK;AACvE,UAAM,WAAW,MAAM;AACrB,kBAAY,OAAO,aAAa,iBAAiB;AAAA,IACnD;AACA,QAAI,iBAAiB,UAAU,QAAQ;AACvC,gBAAY,OAAO,aAAa,iBAAiB;AACjD,WAAO,MAAM,IAAI,oBAAoB,UAAU,QAAQ;AAAA,EACzD,GAAG,CAAC,CAAC;AAEL,SAAO,CAAC,CAAC;AACX;;;AClBA,SAAS,OAAAC,YAA8B;AACvC,YAAYC,YAAW;AA+Ef,SACE,OAAAC,MADF,QAAAC,aAAA;AA1ER,IAAM,gBAAgBC;AAAA,EACpB;AAAA;AAAA,IAEE;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAeA,IAAM,QAAc;AAAA,EAClB,CACE;AAAA,IACE;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;AAEH,UAAM,cAAc,QAChB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEJ,QAAI,YAAY,WAAW;AACzB,aACE,gBAAAD,MAAC,SAAI,WAAU,YACb;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,aAAU;AAAA,YACV,WAAW;AAAA,cACT,cAAc,EAAE,KAAK,CAAC;AAAA,cACtB;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,aAAa;AAAA,cACb;AAAA,YACF;AAAA,YACA;AAAA,YACA,gBAAc;AAAA,YACb,GAAG;AAAA;AAAA,QACN;AAAA,QACC,YACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA,QACI,8IACA;AAAA,cACJ;AAAA,YACF;AAAA,YAEC,UAAM,sBAAe,QAAQ,KACzB,MAAM;AACL,oBAAM,SAAS;AAGf,qBAAa,oBAAa,QAAQ;AAAA,gBAChC,WAAW,GAAG,WAAW,OAAO,MAAM,SAAS;AAAA,cACjD,CAAC;AAAA,YACH,GAAG,IACH;AAAA;AAAA,QACN;AAAA,QAED,aACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS;AAAA,YACT,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA,QACI,8FACA;AAAA,cACJ;AAAA,YACF;AAAA,YACA,cAAW;AAAA,YACV,GAAG;AAAA,YAEH,UAAM,sBAAe,SAAS,KAC1B,MAAM;AACL,oBAAM,SAAS;AAGf,qBAAa,oBAAa,QAAQ;AAAA,gBAChC,WAAW,GAAG,WAAW,OAAO,MAAM,SAAS;AAAA,cACjD,CAAC;AAAA,YACH,GAAG,IACH;AAAA;AAAA,QACN;AAAA,SAEJ;AAAA,IAEJ;AAEA,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,WAAW,GAAG,cAAc,EAAE,KAAK,CAAC,GAAG,aAAa,SAAS;AAAA,QAC7D;AAAA,QACA,gBAAc;AAAA,QACb,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;AF2hBV,qBAAAG,WAEI,OAAAC,MASF,QAAAC,aAXF;AA/qBV,IAAM,gBAAgB;AAgBtB,SAAS,mBACP,SACA,WACA,QACA;AAKA,QAAM,SAAe,cAAO,EAAE,WAAW,OAAO,CAAC;AACjD,EAAM,iBAAU,MAAM;AACpB,WAAO,UAAU,EAAE,WAAW,OAAO;AAAA,EACvC,CAAC;AAED,EAAM,iBAAU,MAAM;AACpB,QAAI,CAAC,QAAS;AAEd,QAAI,YAAY;AAChB,QAAI,YAAY;AAChB,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,gBAAgB;AAEpB,UAAM,YAAY,CAAC,WACjB,kBAAkB,QAClB,OAAO,QAAQ,OAAO,KAAK,SAAO,CAAC,CAAC,IAAI,SAAS,SAAS,MAAM,CAAC;AAEnE,UAAM,UAAU,MAAM;AAGpB,UAAI,UAAW;AACf,kBAAY;AACZ,aAAO,QAAQ,UAAU;AAAA,IAC3B;AAEA,UAAM,YAAY,CAAC,QAA4B,GAAW,MAAc;AACtE,kBAAY;AACZ,gBAAU;AACV,gBAAU;AAIV,sBAAgB,UAAU,MAAM;AAAA,IAClC;AAEA,UAAM,mBAAmB,CAAC,UAAsB;AAC9C,YAAM,QAAQ,MAAM,QAAQ,CAAC;AAC7B,UAAI,MAAO,WAAU,MAAM,QAAQ,MAAM,SAAS,MAAM,OAAO;AAAA,IACjE;AAEA,UAAM,kBAAkB,CAAC,UAAsB;AAC7C,UAAI,UAAW;AACf,YAAM,QAAQ,MAAM,QAAQ,CAAC;AAC7B,UAAI,CAAC,MAAO;AAKZ,UAAI,CAAC,WAAW;AACd,kBAAU,MAAM,QAAQ,MAAM,SAAS,MAAM,OAAO;AACpD;AAAA,MACF;AACA,UAAI,cAAe;AACnB,YAAM,KAAK,MAAM,UAAU;AAC3B,YAAM,KAAK,MAAM,UAAU;AAC3B,UAAI,KAAK,KAAK,KAAK,KAAK,gBAAgB,cAAe;AACvD,cAAQ;AAAA,IACV;AAEA,UAAM,iBAAiB,MAAM;AAC3B,kBAAY;AAAA,IACd;AAEA,UAAM,cAAc,CAAC,UAAsB;AAGzC,UAAI,aAAa,UAAU,MAAM,MAAM,EAAG;AAC1C,cAAQ;AAAA,IACV;AAMA,UAAM,UAAmC,EAAE,SAAS,MAAM,SAAS,KAAK;AACxE,aAAS,iBAAiB,cAAc,kBAAkB,OAAO;AACjE,aAAS,iBAAiB,aAAa,iBAAiB,OAAO;AAC/D,aAAS,iBAAiB,YAAY,gBAAgB,OAAO;AAC7D,aAAS,iBAAiB,eAAe,gBAAgB,OAAO;AAChE,aAAS,iBAAiB,SAAS,aAAa,OAAO;AAEvD,WAAO,MAAM;AAIX,eAAS,oBAAoB,cAAc,kBAAkB,IAAI;AACjE,eAAS,oBAAoB,aAAa,iBAAiB,IAAI;AAC/D,eAAS,oBAAoB,YAAY,gBAAgB,IAAI;AAC7D,eAAS,oBAAoB,eAAe,gBAAgB,IAAI;AAChE,eAAS,oBAAoB,SAAS,aAAa,IAAI;AAAA,IACzD;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AACd;AAuQA,IAAM,eACJ;AAEF,IAAM,mBACJ;AAEF,SAAS,kBAAmC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EACA,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkC;AAChC,QAAM,UAAgB,aAAM;AAC5B,QAAM,SAAS,YAAY,sBAAsB,OAAO;AACxD,QAAM,YAAY,GAAG,MAAM;AAC3B,QAAM,cAAc,CAAC,UAAkB,GAAG,MAAM,eAAe,KAAK;AAEpE,QAAM,CAAC,eAAe,gBAAgB,IAAU,gBAAS,YAAY;AACrE,QAAM,CAAC,cAAc,eAAe,IAAU,gBAAS,WAAW;AAClE,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,gBAAS,EAAE;AAIjE,QAAM,CAAC,aAAa,cAAc,IAAU,gBAAyB,IAAI;AAEzE,QAAM,WAAiB,cAAuB,IAAI;AAClD,QAAM,aAAmB,cAAuB,IAAI;AACpD,QAAM,eAAqB,cAAgC,IAAI;AAC/D,QAAM,gBAAsB,cAAgC,IAAI;AAChE,QAAM,aAAmB,cAAkC,CAAC,CAAC;AAE7D,QAAM,WAAW,YAAY;AAK7B,QAAM,oBACJ,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,YAAY,KAAK,CAAC,CAAC,aAAa,iBAAiB;AAC7E,EAAM,iBAAU,MAAM;AACpB,QAAI,QAAQ,IAAI,aAAa,gBAAgB,kBAAmB;AAChE,YAAQ;AAAA,MACN;AAAA,IAGF;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,QAAM,oBAAoB,cAAc;AACxC,QAAM,mBAAmB,aAAa;AACtC,QAAM,QAAQ,oBAAoB,YAAY;AAC9C,QAAM,SAAS,mBAAmB,WAAW;AAE7C,QAAM,aAAa,kBAAkB,WAAW;AAChD,QAAM,WAAW,SAAU,eAAe,aAAc;AAExD,QAAM;AAAA,IACJ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,eAAe;AAAA,IACf,GAAG;AAAA,EACL,IAAI,cAAc,CAAC;AAEnB,QAAM,mBAAyB;AAAA,IAC7B,CAAC,SAAkC;AACjC,mBAAa,UAAU;AACvB,UAAI,OAAO,aAAa,WAAY,UAAS,IAAI;AAAA,eACxC,UAAU;AACjB;AAAC,QAAC,SAAsD,UAAU;AAAA,MACpE;AAAA,IACF;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,YAAkB,mBAAY,MAAM;AACxC,QAAI,YAAY,OAAQ;AACxB,mBAAe,UAAU;AACzB,QAAI,CAAC,iBAAkB,iBAAgB,IAAI;AAC3C,mBAAe,IAAI;AAAA,EACrB,GAAG,CAAC,UAAU,QAAQ,YAAY,kBAAkB,YAAY,CAAC;AAEjE,QAAM,aAAmB,mBAAY,MAAM;AACzC,QAAI,CAAC,OAAQ;AACb,mBAAe,IAAI;AACnB,wBAAoB,EAAE;AACtB,QAAI,CAAC,iBAAkB,iBAAgB,KAAK;AAC5C,mBAAe,KAAK;AAAA,EACtB,GAAG,CAAC,QAAQ,kBAAkB,YAAY,CAAC;AAE3C,QAAM,cAAoB;AAAA,IACxB,CAAC,SAAiB;AAChB,UAAI,CAAC,kBAAmB,kBAAiB,IAAI;AAC7C,sBAAgB,IAAI;AAAA,IACtB;AAAA,IACA,CAAC,mBAAmB,aAAa;AAAA,EACnC;AAEA,QAAM,oBAA0B;AAAA,IAC9B,CAAC,SAAiB;AAChB,kBAAY,IAAI;AAChB,eAAS,IAAI;AACb,0BAAoB,EAAE;AACtB,gBAAU;AAAA,IACZ;AAAA,IACA,CAAC,aAAa,UAAU,SAAS;AAAA,EACnC;AAEA,QAAM,eAAqB;AAAA,IACzB,CAAC,WAA2C;AAC1C,UAAI,OAAO,SAAU;AACrB,eAAS,MAAM;AACf,iBAAW;AAAA,IACb;AAAA,IACA,CAAC,UAAU,UAAU;AAAA,EACvB;AAIA,QAAM,cAAc,UAAU;AAE9B,QAAM,cAAoB,mBAAY,MAAM;AAC1C,gBAAY,EAAE;AACd,aAAS,EAAE;AACX,cAAU;AACV,wBAAoB,EAAE;AAGtB,QAAI,CAAC,YAAa,YAAW;AAC7B,UAAM,OAAO,cAAc,cAAc,UAAU,aAAa;AAChE,UAAM,MAAM;AAAA,EACd,GAAG,CAAC,aAAa,UAAU,SAAS,aAAa,UAAU,CAAC;AAG5D,QAAM,iBAAuB;AAAA,IAC3B,MACE,QAAQ,OAAiB,CAAC,KAAK,QAAQ,UAAU;AAC/C,UAAI,CAAC,OAAO,SAAU,KAAI,KAAK,KAAK;AACpC,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,IACP,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,gBAAsB;AAAA,IAC1B,CAAC,UAAkB;AACjB,UAAI,eAAe,WAAW,EAAG;AACjC,YAAM,UAAU,eAAe,QAAQ,gBAAgB;AACvD,YAAM,OACJ,YAAY,KACR,UAAU,IACR,IACA,eAAe,SAAS,KACzB,UAAU,QAAQ,eAAe,UAAU,eAAe;AACjE,0BAAoB,eAAe,IAAI,CAAC;AAAA,IAC1C;AAAA,IACA,CAAC,gBAAgB,gBAAgB;AAAA,EACnC;AAKA,QAAM,aAAa,QAAQ,IAAI,YAAU,OAAO,EAAE,EAAE,KAAK,GAAG;AAC5D,EAAM,iBAAU,MAAM;AACpB,wBAAoB,EAAE;AAAA,EACxB,GAAG,CAAC,UAAU,CAAC;AAEf,EAAM,iBAAU,MAAM;AACpB,QAAI,mBAAmB,EAAG;AAC1B,eAAW,QAAQ,gBAAgB,GAAG,eAAe,EAAE,OAAO,UAAU,CAAC;AAAA,EAC3E,GAAG,CAAC,gBAAgB,CAAC;AAErB,QAAM,aAAa,QAAQ,SAAS;AAIpC,QAAM,iBAAiB,WAAW,CAAC;AACnC,QAAM,YAAY,CAAC,WAAW,CAAC,cAAc,MAAM,KAAK,MAAM;AAE9D,QAAM,eAAe,WAAW;AAChC,QAAM,UAAU,kBAAkB,cAAc;AAChD,QAAM,cAAc,UAAU,CAAC,YAAY;AAE3C,QAAM,oBAA0B,eAAQ,MAAM,CAAC,YAAY,QAAQ,GAAG,CAAC,CAAC;AACxE,qBAAmB,aAAa,YAAY,iBAAiB;AAE7D,QAAM,gBAAgB,CAAC,UAAiD;AAGtE,QACE,YACA,CAAC,WACA,MAAM,QAAQ,WAAW,MAAM,QAAQ,OAAO,MAAM,QAAQ,cAC7D;AACA,YAAM,eAAe;AACrB,gBAAU;AACV,uBAAiB,KAAK;AACtB;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,eAAe,MAAM,QAAQ,WAAW;AACxD,YAAM,eAAe;AACrB,UAAI,CAAC,OAAQ,WAAU;AAAA,UAClB,eAAc,MAAM,QAAQ,cAAc,IAAI,EAAE;AAAA,IACvD,WAAW,MAAM,QAAQ,SAAS;AAChC,YAAM,SACJ,oBAAoB,IAAI,QAAQ,gBAAgB,IAAI;AACtD,UAAI,QAAQ;AAEV,cAAM,eAAe;AACrB,qBAAa,MAAM;AAAA,MACrB;AAAA,IACF,WAAW,MAAM,QAAQ,UAAU;AACjC,UAAI,QAAQ;AACV,cAAM,eAAe;AACrB,mBAAW;AAAA,MACb;AAAA,IACF,WAAW,MAAM,QAAQ,OAAO;AAC9B,iBAAW;AAAA,IACb;AAEA,qBAAiB,KAAK;AAAA,EACxB;AAIA,QAAM,mBAAmB,CAAC,OACxB,QACI;AAAA;AAAA;AAAA;AAAA,IAIE,MAAM;AAAA,IACN;AAAA,IACA,cAAc;AAAA,IACd,aAAa,CAAC,UAA4B,MAAM,eAAe;AAAA,EACjE,IACA;AAEN,QAAM,YAAY,CAAC,QAAwC,UAAkB;AAC3E,UAAM,cAAc,qBAAqB;AACzC,UAAM,OAAO,OAAO,QAAQ;AAE5B,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QAEC,IAAI,YAAY,KAAK;AAAA,QACrB,KAAK,UAAQ;AACX,qBAAW,QAAQ,KAAK,IAAI;AAAA,QAC9B;AAAA,QACA,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,iBAAe,OAAO;AAAA,QACtB,aAAU;AAAA,QACV,oBAAkB,eAAe;AAAA,QACjC,iBAAe,OAAO,YAAY;AAAA,QAIlC,aAAa,WAAS,MAAM,eAAe;AAAA,QAC3C,cAAc,MAAM;AAClB,cAAI,CAAC,OAAO,SAAU,qBAAoB,KAAK;AAAA,QACjD;AAAA,QACA,SAAS,MAAM,aAAa,MAAM;AAAA,QAGlC,WAAW;AAAA,UACT;AAAA,UACA,eAAe;AAAA,UACf,OAAO,YAAY;AAAA,UACnB,YAAY;AAAA,UACZ,eAAe,YAAY;AAAA,UAC3B,OAAO,YAAY,YAAY;AAAA,UAC/B,OAAO;AAAA,QACT;AAAA,QAEC,yBACC,aAAa,QAAQ,EAAE,OAAO,aAAa,MAAM,CAAC,IAElD,gBAAAC,MAAAF,WAAA,EACG;AAAA,kBACC,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,YAAY;AAAA,cACd;AAAA,cAEC;AAAA;AAAA,UACH;AAAA,UAEF,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,YAAY;AAAA,cACd;AAAA,cAEC;AAAA,uBAAO;AAAA,gBACP,OAAO,eACN,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,sBACT;AAAA,sBACA,YAAY;AAAA,oBACd;AAAA,oBAEC,eAAK,OAAO,WAAW;AAAA;AAAA,gBAC1B;AAAA;AAAA;AAAA,UAEJ;AAAA,WACF;AAAA;AAAA,MA/DG,OAAO;AAAA,IAiEd;AAAA,EAEJ;AAEA,QAAM,UACJ,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,IAAI;AAAA,MAIJ,aAAW,WAAW;AAAA,MACtB,aAAW,gBAAgB;AAAA,MAC3B,WAAW,GAAG,iBAAiB,YAAY,OAAO;AAAA,MAEjD;AAAA;AAAA;AAAA;AAAA,QAIC,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,iBAAc;AAAA,YACd,iBAAc;AAAA,YACd,WAAW,GAAG,kBAAkB,YAAY,OAAO;AAAA,YAEnD;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA,YAAY;AAAA,kBACd;AAAA;AAAA,cACF;AAAA,cACC;AAAA;AAAA;AAAA,QACH;AAAA,UACE,YACF,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,iBAAc;AAAA,UACd,iBAAc;AAAA,UACd,WAAW,GAAG,CAAC,cAAc,kBAAkB,YAAY,KAAK;AAAA,UAE/D,wBAAc;AAAA;AAAA,MACjB,IAEA,QAAQ,IAAI,SAAS;AAAA;AAAA,EAEzB;AAGF,QAAM,mBACJ,oBAAoB,IAAI,YAAY,gBAAgB,IAAI;AAE1D,QAAM,YAAY,QAChB,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,GAAG,MAAM;AAAA,MAClB,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,YAAY;AAAA,MACd;AAAA,MAEC;AAAA;AAAA,QACA;AAAA;AAAA,QAGC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YACX;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EAEJ,IACE;AAEJ,QAAM,QACJ,gBAAAA,KAAC,SAAI,KAAK,UAAU,WAAW,GAAG,mBAAmB,YAAY,KAAK,GACpE,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,KAAK;AAAA,MACL,IAAI,GAAG,MAAM;AAAA,MACb,MAAK;AAAA,MACL,cAAa;AAAA,MACb,MAAK;AAAA,MACL,iBAAe,WAAW,WAAW;AAAA,MACrC,iBAAe,WAAW,cAAc;AAAA,MACxC,iBAAe,cAAc,YAAY;AAAA,MACzC,qBAAmB,WAAW,SAAY;AAAA,MAC1C,iBAAe,aAAa;AAAA,MAC5B,yBAAuB,cAAc,mBAAmB;AAAA,MACxD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,YAAY;AAAA,MAC/B,WAAW,QAAS,aAAa,gBAAAA,KAACE,IAAA,EAAE,IAAM;AAAA,MAC1C,kBAAkB,QAAQ,cAAc;AAAA,MACxC,sBAAsB,iBAAiB,GAAG,MAAM,QAAQ;AAAA,MACxD,oBAAoB,YAAY;AAAA,MAChC,WAAW,GAAG,eAAe,WAAW,YAAY,KAAK;AAAA,MAGzD,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU,WAAS,kBAAkB,MAAM,OAAO,KAAK;AAAA,MACvD,SAAS,WAAS;AAGhB,YAAI,CAAC,SAAU,WAAU;AACzB,uBAAe,KAAK;AAAA,MACtB;AAAA,MACA,eAAe,WAAS;AAGtB,kBAAU;AACV,6BAAqB,KAAK;AAAA,MAC5B;AAAA,MACA,WAAW;AAAA;AAAA,EACb,GACF;AAGF,SACE,gBAAAD;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,MAAM;AAAA,MACN,cAAc,UAAQ;AACpB,YAAI,CAAC,KAAM,YAAW;AAAA,MACxB;AAAA,MAEA;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA,aAAa;AAAA,cACb;AAAA,YACF;AAAA,YAEC;AAAA;AAAA,cACD,gBAAAD,KAAkB,yBAAjB,EAAwB,SAAO,MAAE,iBAAM;AAAA,cAExC,gBAAAA,KAAkB,yBAAjB,EACC,0BAAAA;AAAA,gBAAkB;AAAA,gBAAjB;AAAA,kBACC,KAAK;AAAA,kBACL,aAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,OAAM;AAAA,kBACN,kBAAkB;AAAA,kBAIlB,kBAAgB;AAAA,kBAGhB,iBAAiB,WAAS,MAAM,eAAe;AAAA,kBAC/C,kBAAkB,WAAS,MAAM,eAAe;AAAA,kBAIhD,sBAAsB,WAAS;AAC7B,wBAAI,SAAS,SAAS,SAAS,MAAM,MAAc,GAAG;AACpD,4BAAM,eAAe;AAAA,oBACvB;AAAA,kBACF;AAAA,kBAIA,gBAAgB,WAAS;AACvB,wBAAI,SAAS,SAAS,SAAS,MAAM,MAAc,GAAG;AACpD,4BAAM,eAAe;AAAA,oBACvB;AAAA,kBACF;AAAA,kBACA,WAAW;AAAA,oBACT;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA,YAAY;AAAA,kBACd;AAAA,kBAEC;AAAA;AAAA,cACH,GACF;AAAA;AAAA;AAAA,QACF;AAAA,QAEC,kBAAkB,WACjB,gBAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,MAAM;AAAA,YACN,cAAc,UAAQ;AACpB,kBAAI,CAAC,KAAM,YAAW;AAAA,YACxB;AAAA,YAEA,0BAAAC,MAAiB,wBAAhB,EAIC;AAAA,8BAAAD;AAAA,gBAAiB;AAAA,gBAAhB;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA,YAAY;AAAA,kBACd;AAAA;AAAA,cACF;AAAA,cACA,gBAAAC;AAAA,gBAAiB;AAAA,gBAAhB;AAAA,kBAEC,oBAAkB;AAAA,kBAClB,WAAW;AAAA,oBACT;AAAA,oBACA,YAAY;AAAA,kBACd;AAAA,kBACA,iBAAiB,WAAS;AAIxB,0BAAM,eAAe;AACrB,0CAAsB,MAAM,cAAc,SAAS,MAAM,CAAC;AAAA,kBAC5D;AAAA,kBAGA,kBAAkB,WAAS,MAAM,eAAe;AAAA,kBAEhD;AAAA,oCAAAD,KAAiB,uBAAhB,EAAsB,WAAU,WAC9B,sBACH;AAAA,oBAMA,gBAAAC;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAW;AAAA,0BACT;AAAA,0BACA,YAAY;AAAA,wBACd;AAAA,wBAEA;AAAA,0CAAAD;AAAA,4BAAiB;AAAA,4BAAhB;AAAA,8BACC,MAAK;AAAA,8BACL,cAAY;AAAA,8BACZ,WAAW;AAAA,gCACT;AAAA,gCACA,YAAY;AAAA,8BACd;AAAA,8BAEC,4BAAkB,gBAAAA,KAAC,aAAU;AAAA;AAAA,0BAChC;AAAA,0BACA,gBAAAA,KAAC,SAAI,WAAU,kBACb,0BAAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,KAAK;AAAA,8BACL,IAAI,GAAG,MAAM;AAAA,8BACb,MAAK;AAAA,8BACL,cAAa;AAAA,8BACb,MAAK;AAAA,8BACL,iBAAa;AAAA,8BACb,iBAAe;AAAA,8BACf,qBAAkB;AAAA,8BAClB,yBAAuB;AAAA,8BACvB,cAAY,SAAS;AAAA,8BACrB;AAAA,8BACA;AAAA,8BACA;AAAA,8BACA,mBAAmB,YAAY;AAAA,8BAC/B,WAAW,QAAS,aAAa,gBAAAA,KAACE,IAAA,EAAE,IAAM;AAAA,8BAC1C,kBAAkB,QAAQ,cAAc;AAAA,8BACxC,sBAAsB;AAAA,gCACpB,GAAG,MAAM;AAAA,8BACX;AAAA,8BACA,oBAAoB,YAAY;AAAA,8BAChC,WAAW,YAAY;AAAA,8BACvB,OAAO;AAAA,8BACP,UAAU,WAAS,kBAAkB,MAAM,OAAO,KAAK;AAAA,8BACvD,WAAW;AAAA,8BAEX,OAAO,EAAE,UAAU,GAAG;AAAA;AAAA,0BACxB,GACF;AAAA;AAAA;AAAA,oBACF;AAAA,oBAEA,gBAAAF;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAW;AAAA,0BACT;AAAA,0BACA,YAAY;AAAA,wBACd;AAAA,wBAEC,qBAAW;AAAA;AAAA,oBACd;AAAA;AAAA;AAAA,cACF;AAAA,eACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AGngCA,YAAYG,aAAW;;;ACAvB,YAAYC,YAAW;AA0CjB,gBAAAC,YAAA;AArCN,IAAM,qBAAqB;AAAA;AAAA,EAEzB;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AACF,EAAE,KAAK,GAAG;AAGV,IAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AASV,IAAM,WAAiB;AAAA,EACrB,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AACvC,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,WAAW,GAAG,oBAAoB,SAAS,aAAa,SAAS;AAAA,QACjE,gBAAc;AAAA,QACd;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;ADwCjB,gBAAAC,aAAA;AA/EC,IAAM,qBAA2B;AAAA,EAItC,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACL,GACA,iBACG;AACH,UAAM,WAAiB,eAA0B,IAAI;AAErD,UAAM,UAAgB;AAAA,MACpB,CAAC,SAA4B;AAC3B,iBAAS,UAAU;AAEnB,YAAI,OAAO,iBAAiB,WAAY,cAAa,IAAI;AAAA,iBAChD,aAAc,cAAa,UAAU;AAAA,MAChD;AAAA,MACA,CAAC,YAAY;AAAA,IACf;AAEA,UAAM,SAAe,oBAAY,MAAM;AACrC,YAAM,KAAK,SAAS;AACpB,UAAI,CAAC,GAAI;AAET,SAAG,MAAM,SAAS;AAClB,YAAM,aAAa,KAAK,IAAI,WAAW,GAAG,YAAY;AAEtD,UAAI,aAAa,aAAa,WAAW;AACvC,WAAG,MAAM,SAAS,GAAG,SAAS;AAC9B,WAAG,MAAM,YAAY;AAAA,MACvB,OAAO;AACL,WAAG,MAAM,SAAS,GAAG,UAAU;AAC/B,WAAG,MAAM,YAAY;AAAA,MACvB;AAAA,IACF,GAAG,CAAC,WAAW,SAAS,CAAC;AAEzB,IAAM,wBAAgB,MAAM;AAC1B,aAAO;AAAA,IACT,GAAG,CAAC,QAAQ,KAAK,CAAC;AAIlB,IAAM,wBAAgB,MAAM;AAC1B,YAAM,KAAK,SAAS;AACpB,UAAI,CAAC,GAAI;AAET,YAAM,aAAa,OAAO;AAAA,QACxB,OAAO,oBAAoB;AAAA,QAC3B;AAAA,MACF;AACA,UAAI,CAAC,YAAY,OAAO,CAAC,YAAY,IAAK;AAE1C,YAAM,EAAE,KAAK,IAAI,IAAI;AACrB,aAAO,eAAe,IAAI,SAAS;AAAA,QACjC,cAAc;AAAA,QACd,MAAM;AACJ,iBAAO,IAAI,KAAK,IAAI;AAAA,QACtB;AAAA,QACA,IAAI,GAAG;AACL,cAAI,KAAK,MAAM,CAAC;AAChB,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,aAAO,MAAM;AACX,eAAQ,GAAoC;AAAA,MAC9C;AAAA,IACF,GAAG,CAAC,MAAM,CAAC;AAEX,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,KAAK;AAAA,QACL;AAAA,QACA,SAAS,OAAK;AACZ,iBAAO;AACP,oBAAU,CAAC;AAAA,QACb;AAAA,QACA,UAAU,OAAK;AACb,qBAAW,CAAC;AAAA,QACd;AAAA,QACA,WAAW,GAAG,eAAe,SAAS;AAAA,QACtC,OAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,QAAQ,OAAO,UAAU;AAAA,UACzB,WAAW,OAAO,aAAa;AAAA,QACjC;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,mBAAmB,cAAc;;;AElHjC,OAAuB;AACvB,YAAY,qBAAqB;AAS7B,gBAAAC,aAAA;AALJ,SAAS,OAAO;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAAsD;AACpD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AClDA,OAAuB;AACvB,SAAS,QAAAC,aAAY;AACrB,SAAS,OAAAC,YAA8B;AAmCnC,gBAAAC,aAAA;AA/BJ,IAAM,gBAAgBC;AAAA,EACpB;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;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAC8D;AAC5D,QAAM,OAAO,UAAUC,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC3CA,SAAS,OAAAG,YAA8B;AACvC,OAAuB;AAuCnB,SAeW,OAAAC,OAfX,QAAAC,aAAA;AAnCJ,IAAM,0BAA0BC;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAYA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,GAAyB;AACvB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,iBAAe,YAAY;AAAA,MAC3B,WAAW;AAAA,QACT,wBAAwB,EAAE,KAAK,CAAC;AAAA,QAChC,WACI,+FACA,eACE,8IACA;AAAA,QACN;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,gBAAQ,gBAAAD,MAAC,UAAK,WAAU,oCAAoC,gBAAK;AAAA,QAClE,gBAAAA,MAAC,UAAM,UAAS;AAAA;AAAA;AAAA,EAClB;AAEJ;;;AC3DA,SAAS,OAAAG,YAA8B;AACvC,OAAuB;AAoDf,gBAAAC,OAMA,QAAAC,aANA;AAhDR,IAAM,2BAA2BC;AAAA,EAC/B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,aAAa;AAAA,QACX,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAWA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA0B;AACxB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yBAAyB,EAAE,MAAM,YAAY,CAAC,GAAG,SAAS;AAAA,MACvE,GAAG;AAAA,MAEH;AAAA,gBACC,gBAAAD,MAAC,UAAK,WAAU,6CACb,gBACH;AAAA,QAEF,gBAAAA,MAAC,UAAM,UAAS;AAAA,QACf,YACC,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,YAAY;AAAA,YAClB,WAAW;AAAA,cACT;AAAA,cACA,gBAAgB,SACZ,gCACA;AAAA,YACN;AAAA,YAEC;AAAA;AAAA,cACD,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,OAAM;AAAA,kBAEN,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,GAAE;AAAA,sBACF,QAAO;AAAA,sBACP,aAAY;AAAA,sBACZ,eAAc;AAAA,sBACd,gBAAe;AAAA;AAAA,kBACjB;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAKA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA,EACP,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GACiD;AAC/C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,SAAS,MACL,kCACA;AAAA,QACJ,gBAAgB,UAAU;AAAA,QAC1B,gBAAgB,UAAU;AAAA,QAC1B,gBAAgB,YACd;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAKA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,OAAO;AAAA,EACP,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAMG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,SAAS,MACL,2CACA;AAAA,QACJ,gBAAgB,UAAU;AAAA,QAC1B,gBAAgB,UAAU;AAAA,QAC1B,gBAAgB,YAAY;AAAA,QAC5B;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,gBACC,gBAAAD,MAAC,UAAK,WAAU,6CACb,gBACH;AAAA,QAEF,gBAAAA,MAAC,UAAM,UAAS;AAAA,QACf,YACC,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,YAAY;AAAA,YAClB,WAAU;AAAA,YAET;AAAA;AAAA,cACD,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,OAAM;AAAA,kBAEN,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,GAAE;AAAA,sBACF,QAAO;AAAA,sBACP,aAAY;AAAA,sBACZ,eAAc;AAAA,sBACd,gBAAe;AAAA;AAAA,kBACjB;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACzLA,OAAuB;AACvB,SAAS,OAAAG,YAA8B;AAwCnC,gBAAAC,aAAA;AApCJ,IAAM,sBAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAQA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oBAAoB,EAAE,MAAM,MAAM,CAAC,GAAG,SAAS;AAAA,MAC5D,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACjDA,OAAuB;AACvB,SAAS,QAAAE,aAAY;AACrB,SAAS,cAAc,sBAAsB;AAKpC,gBAAAC,OAgFL,QAAAC,aAhFK;AADT,SAAS,WAAW,EAAE,GAAG,MAAM,GAAgC;AAC7D,SAAO,gBAAAD,MAAC,SAAI,cAAW,cAAa,aAAU,cAAc,GAAG,OAAO;AACxE;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC7E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,iBAAc;AAAA,MACd,gBAAa;AAAA,MACb,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,oBAAoB,SAAS;AAAA,MAC1C,GAAG;AAAA,MAEH,sBAAY,gBAAAA,MAAC,gBAAa;AAAA;AAAA,EAC7B;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,kBAAe,WAAU,UAAS;AAAA,QACnC,gBAAAA,MAAC,UAAK,WAAU,WAAU,kBAAI;AAAA;AAAA;AAAA,EAChC;AAEJ;;;AChGA;AAAA,EACE,mBAAAG;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,YAAYC,aAAW;AACvB,SAAoB,iBAAiB;AAuHzB,gBAAAC,aAAA;AAlHZ,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,MACA,YAAY;AAAA,QACV,qBAAqB,UACnB,KAAK,eAAe,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,QACnD,GAAG;AAAA,MACL;AAAA,MACA,YAAY;AAAA,QACV,MAAM,GAAG,UAAU,YAAY,IAAI;AAAA,QACnC,QAAQ;AAAA,UACN;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,OAAO,GAAG,2CAA2C,YAAY,KAAK;AAAA,QACtE,KAAK;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,iBAAiB;AAAA,UACf,eAAe,EAAE,SAAS,cAAc,CAAC;AAAA,UACzC;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,aAAa;AAAA,UACX,eAAe,EAAE,SAAS,cAAc,CAAC;AAAA,UACzC;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA,kBAAkB,UACd,YACA;AAAA,UACJ,YAAY;AAAA,QACd;AAAA,QACA,OAAO,GAAG,0BAA0B,YAAY,KAAK;AAAA,QACrD,UAAU;AAAA,UACR;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,MAAM;AAAA,UACJ;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,oBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,KAAK;AAAA,UACH;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,aAAa,GAAG,cAAc,YAAY,WAAW;AAAA,QACrD,cAAc,GAAG,gBAAgB,YAAY,YAAY;AAAA,QACzD,WAAW,GAAG,cAAc,YAAY,SAAS;AAAA,QACjD,OAAO;AAAA,UACL;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QACA,UAAU,GAAG,oCAAoC,YAAY,QAAQ;AAAA,QACrE,QAAQ,GAAG,aAAa,YAAY,MAAM;AAAA,MAC5C;AAAA,MACA,YAAY;AAAA,QACV,MAAM,CAAC,EAAE,WAAAC,YAAW,SAAS,GAAGC,OAAM,MAAM;AAC1C,iBACE,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,KAAK;AAAA,cACL,WAAW,GAAGC,UAAS;AAAA,cACtB,GAAGC;AAAA;AAAA,UACN;AAAA,QAEJ;AAAA,QACA,SAAS,CAAC,EAAE,WAAAD,YAAW,aAAa,GAAGC,OAAM,MAAM;AACjD,cAAI,gBAAgB,QAAQ;AAC1B,mBACE,gBAAAF,MAAC,mBAAgB,WAAW,GAAG,UAAUC,UAAS,GAAI,GAAGC,QAAO;AAAA,UAEpE;AAEA,cAAI,gBAAgB,SAAS;AAC3B,mBACE,gBAAAF;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW,GAAG,UAAUC,UAAS;AAAA,gBAChC,GAAGC;AAAA;AAAA,YACN;AAAA,UAEJ;AAEA,iBACE,gBAAAF,MAACG,kBAAA,EAAgB,WAAW,GAAG,UAAUF,UAAS,GAAI,GAAGC,QAAO;AAAA,QAEpE;AAAA,QACA,WAAW;AAAA,QACX,YAAY,CAAC,EAAE,UAAU,GAAGA,OAAM,MAAM;AACtC,iBACE,gBAAAF,MAAC,QAAI,GAAGE,QACN,0BAAAF,MAAC,SAAI,WAAU,mEACZ,UACH,GACF;AAAA,QAEJ;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,QAAM,MAAY,eAA0B,IAAI;AAChD,EAAM,kBAAU,MAAM;AACpB,QAAI,UAAU,QAAS,KAAI,SAAS,MAAM;AAAA,EAC5C,GAAG,CAAC,UAAU,OAAO,CAAC;AAEtB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,YAAU,IAAI,KAAK,mBAAmB;AAAA,MACtC,wBACE,UAAU,YACV,CAAC,UAAU,eACX,CAAC,UAAU,aACX,CAAC,UAAU;AAAA,MAEb,oBAAkB,UAAU;AAAA,MAC5B,kBAAgB,UAAU;AAAA,MAC1B,qBAAmB,UAAU;AAAA,MAC7B,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC7MA,OAAuB;AAMnB,gBAAAI,aAAA;AAFJ,SAAS,KAAK,EAAE,WAAW,GAAG,MAAM,GAAgC;AAClE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC9B,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC/EA,YAAYC,aAAW;AACvB,OAAO,sBAEA;AACP,SAAS,aAAAC,YAAW,kBAAkB;AAkHhC,gBAAAC,OA8DF,QAAAC,aA9DE;AAxFN,IAAM,kBAAwB,sBAA2C,IAAI;AAE7E,SAAS,cAAc;AACrB,QAAM,UAAgB,mBAAW,eAAe;AAEhD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,SAAO;AACT;AAEA,SAAS,SAAS;AAAA,EAChB,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgD;AAC9C,QAAM,CAAC,aAAa,GAAG,IAAI;AAAA,IACzB;AAAA,MACE,GAAG;AAAA,MACH,MAAM,gBAAgB,eAAe,MAAM;AAAA,IAC7C;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,eAAe,gBAAgB,IAAU,iBAAS,KAAK;AAC9D,QAAM,CAAC,eAAe,gBAAgB,IAAU,iBAAS,KAAK;AAE9D,QAAM,WAAiB,oBAAY,CAACC,SAAqB;AACvD,QAAI,CAACA,KAAK;AACV,qBAAiBA,KAAI,cAAc,CAAC;AACpC,qBAAiBA,KAAI,cAAc,CAAC;AAAA,EACtC,GAAG,CAAC,CAAC;AAEL,QAAM,aAAmB,oBAAY,MAAM;AACzC,SAAK,WAAW;AAAA,EAClB,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,aAAmB,oBAAY,MAAM;AACzC,SAAK,WAAW;AAAA,EAClB,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,gBAAsB;AAAA,IAC1B,CAAC,UAA+C;AAC9C,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,mBAAW;AAAA,MACb,WAAW,MAAM,QAAQ,cAAc;AACrC,cAAM,eAAe;AACrB,mBAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,CAAC,YAAY,UAAU;AAAA,EACzB;AAEA,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,OAAO,CAAC,OAAQ;AACrB,WAAO,GAAG;AAAA,EACZ,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhB,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,IAAK;AACV,aAAS,GAAG;AACZ,QAAI,GAAG,UAAU,QAAQ;AACzB,QAAI,GAAG,UAAU,QAAQ;AAEzB,WAAO,MAAM;AACX,WAAK,IAAI,UAAU,QAAQ;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,KAAK,QAAQ,CAAC;AAElB,SACE,gBAAAF;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,aACE,gBAAgB,MAAM,SAAS,MAAM,aAAa;AAAA,QACpD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,kBAAkB;AAAA,UAClB,WAAW,GAAG,YAAY,SAAS;AAAA,UACnC,MAAK;AAAA,UACL,wBAAqB;AAAA,UACrB,aAAU;AAAA,UACT,GAAG;AAAA,UAEH;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,QAAM,EAAE,aAAa,YAAY,IAAI,YAAY;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAU;AAAA,MACV,aAAU;AAAA,MAEV,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,gBAAgB,eAAe,UAAU;AAAA,YACzC;AAAA,UACF;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,QAAM,EAAE,YAAY,IAAI,YAAY;AAEpC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,wBAAqB;AAAA,MACrB,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eAAe,SAAS;AAAA,QACxC;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,aAAa,YAAY,cAAc,IAAI,YAAY;AAE/D,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eACZ,sCACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAACG,YAAA,EAAU;AAAA,QACX,gBAAAH,MAAC,UAAK,WAAU,WAAU,4BAAc;AAAA;AAAA;AAAA,EAC1C;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,aAAa,YAAY,cAAc,IAAI,YAAY;AAE/D,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eACZ,uCACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,cAAW;AAAA,QACZ,gBAAAA,MAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AAAA,EACtC;AAEJ;;;ACrOA,YAAYI,aAAW;AACvB,YAAY,uBAAuB;AAkD7B,SAgJU,YAAAC,WAvIR,OAAAC,OATF,QAAAC,cAAA;AA7CN,IAAM,SAAS,EAAE,OAAO,IAAI,MAAM,QAAQ;AAgB1C,IAAM,eAAqB,sBAAwC,IAAI;AAEvE,SAAS,WAAW;AAClB,QAAM,UAAgB,mBAAW,YAAY;AAE7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO;AACT;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAKG;AACD,QAAM,WAAiB,cAAM;AAC7B,QAAM,UAAU,SAAS,MAAM,SAAS,QAAQ,MAAM,EAAE,CAAC;AAEzD,SACE,gBAAAD,MAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,OAAO,GACrC,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,cAAW,IAAI,SAAS,QAAgB;AAAA,QACzC,gBAAAA,MAAmB,uCAAlB,EACE,UACH;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAM,aAAa,CAAC,EAAE,IAAI,OAAO,MAA2C;AAC1E,QAAM,cAAc,OAAO,QAAQ,MAAM,EAAE;AAAA,IACzC,CAAC,CAAC,EAAEE,OAAM,MAAMA,QAAO,SAASA,QAAO;AAAA,EACzC;AAEA,MAAI,CAAC,YAAY,QAAQ;AACvB,WAAO;AAAA,EACT;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,yBAAyB;AAAA,QACvB,QAAQ,OAAO,QAAQ,MAAM,EAC1B;AAAA,UACC,CAAC,CAAC,OAAO,MAAM,MAAM;AAAA,EAC/B,MAAM,gBAAgB,EAAE;AAAA,EACxB,YACC,IAAI,CAAC,CAAC,KAAK,UAAU,MAAM;AAC1B,kBAAM,QACJ,WAAW,QAAQ,KAAsC,KACzD,WAAW;AACb,mBAAO,QAAQ,aAAa,GAAG,KAAK,KAAK,MAAM;AAAA,UACjD,CAAC,EACA,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,QAGH,EACC,KAAK,IAAI;AAAA,MACd;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,eAAiC;AAEvC,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOK;AACH,QAAM,EAAE,OAAO,IAAI,SAAS;AAE5B,QAAM,eAAqB,gBAAQ,MAAM;AACvC,QAAI,aAAa,CAAC,SAAS,QAAQ;AACjC,aAAO;AAAA,IACT;AAEA,UAAM,CAAC,IAAI,IAAI;AACf,UAAM,MAAM,GAAG,YAAY,MAAM,WAAW,MAAM,QAAQ,OAAO;AACjE,UAAM,aAAa,4BAA4B,QAAQ,MAAM,GAAG;AAChE,UAAM,QACJ,CAAC,YAAY,OAAO,UAAU,WAC1B,OAAO,KAA4B,GAAG,SAAS,QAC/C,YAAY;AAElB,QAAI,gBAAgB;AAClB,aACE,gBAAAA,MAAC,SAAI,WAAW,GAAG,eAAe,cAAc,GAC7C,yBAAe,OAAO,OAAO,GAChC;AAAA,IAEJ;AAEA,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,WAAO,gBAAAA,MAAC,SAAI,WAAW,GAAG,eAAe,cAAc,GAAI,iBAAM;AAAA,EACnE,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,CAAC,UAAU,CAAC,SAAS,QAAQ;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,QAAQ,WAAW,KAAK,cAAc;AAExD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,SAAC,YAAY,eAAe;AAAA,QAC7B,gBAAAD,MAAC,SAAI,WAAU,gBACZ,kBAAQ,IAAI,CAAC,MAAM,UAAU;AAC5B,gBAAM,MAAM,GAAG,WAAW,KAAK,QAAQ,KAAK,WAAW,OAAO;AAC9D,gBAAM,aAAa,4BAA4B,QAAQ,MAAM,GAAG;AAChE,gBAAM,iBAAiB,SAAS,KAAK,QAAQ,QAAQ,KAAK;AAE1D,iBACE,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,WAAW;AAAA,gBACT;AAAA,gBACA,cAAc,SAAS;AAAA,cACzB;AAAA,cAEC,uBAAa,MAAM,UAAU,UAAa,KAAK,OAC9C,UAAU,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,OAAO,IAE1D,gBAAAC,OAAAF,WAAA,EACG;AAAA,4BAAY,OACX,gBAAAC,MAAC,WAAW,MAAX,EAAgB,IAEjB,CAAC,iBACC,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,sBACT;AAAA,sBACA;AAAA,wBACE,eAAe,cAAc;AAAA,wBAC7B,OAAO,cAAc;AAAA,wBACrB,mDACE,cAAc;AAAA,wBAChB,UAAU,aAAa,cAAc;AAAA,sBACvC;AAAA,oBACF;AAAA,oBACA,OACE;AAAA,sBACE,cAAc;AAAA,sBACd,kBAAkB;AAAA,oBACpB;AAAA;AAAA,gBAEJ;AAAA,gBAGJ,gBAAAC;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,sBACT;AAAA,sBACA,YAAY,cAAc;AAAA,oBAC5B;AAAA,oBAEA;AAAA,sCAAAA,OAAC,SAAI,WAAU,gBACZ;AAAA,oCAAY,eAAe;AAAA,wBAC5B,gBAAAD,MAAC,UAAK,WAAU,yBACb,sBAAY,SAAS,KAAK,MAC7B;AAAA,yBACF;AAAA,sBACC,KAAK,SACJ,gBAAAA,MAAC,UAAK,WAAU,sDACb,eAAK,MAAM,eAAe,GAC7B;AAAA;AAAA;AAAA,gBAEJ;AAAA,iBACF;AAAA;AAAA,YApDG,KAAK;AAAA,UAsDZ;AAAA,QAEJ,CAAC,GACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,cAAgC;AAEtC,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,gBAAgB;AAAA,EAChB;AACF,GAIK;AACH,QAAM,EAAE,OAAO,IAAI,SAAS;AAE5B,MAAI,CAAC,SAAS,QAAQ;AACpB,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,kBAAkB,QAAQ,SAAS;AAAA,QACnC;AAAA,MACF;AAAA,MAEC,kBAAQ,IAAI,CAAC,SAAS;AACrB,cAAM,MAAM,GAAG,WAAW,KAAK,WAAW,OAAO;AACjD,cAAM,aAAa,4BAA4B,QAAQ,MAAM,GAAG;AAEhE,eACE,gBAAAC;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW;AAAA,cACT;AAAA,YACF;AAAA,YAEC;AAAA,0BAAY,QAAQ,CAAC,WACpB,gBAAAD,MAAC,WAAW,MAAX,EAAgB,IAEjB,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,iBAAiB,KAAK;AAAA,kBACxB;AAAA;AAAA,cACF;AAAA,cAED,YAAY;AAAA;AAAA;AAAA,UAfR,KAAK;AAAA,QAgBZ;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH;AAEJ;AAGA,SAAS,4BACP,QACA,SACA,KACA;AACA,MAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AACnD,WAAO;AAAA,EACT;AAEA,QAAM,iBACJ,aAAa,WACb,OAAO,QAAQ,YAAY,YAC3B,QAAQ,YAAY,OAChB,QAAQ,UACR;AAEN,MAAI,iBAAyB;AAE7B,MACE,OAAO,WACP,OAAO,QAAQ,GAA2B,MAAM,UAChD;AACA,qBAAiB,QAAQ,GAA2B;AAAA,EACtD,WACE,kBACA,OAAO,kBACP,OAAO,eAAe,GAAkC,MAAM,UAC9D;AACA,qBAAiB,eACf,GACF;AAAA,EACF;AAEA,SAAO,kBAAkB,SACrB,OAAO,cAAc,IACrB,OAAO,GAA0B;AACvC;;;ACrVA,YAAY,uBAAuB;AACnC,SAAS,aAAa;AACtB,OAAuB;AAsBf,gBAAAG,aAAA;AAlBR,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAmB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAmB;AAAA,QAAlB;AAAA,UACC,aAAU;AAAA,UACV,YAAU;AAAA,UACV,WAAU;AAAA,UAEV,0BAAAA,MAAC,SAAM,WAAU,UAAS;AAAA;AAAA,MAC5B;AAAA;AAAA,EACF;AAEJ;;;AC5BA,YAAY,0BAA0B;AAK7B,gBAAAC,aAAA;AAHT,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAA2D;AACzD,SAAO,gBAAAA,MAAsB,2BAArB,EAA0B,aAAU,eAAe,GAAG,OAAO;AACvE;AAEA,SAASC,oBAAmB;AAAA,EAC1B,GAAG;AACL,GAAyE;AACvE,SACE,gBAAAD;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAASE,oBAAmB;AAAA,EAC1B,GAAG;AACL,GAAyE;AACvE,SACE,gBAAAF;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC5BA,OAAuB;AACvB,SAAS,WAAW,wBAAwB;AAC5C,SAAS,kBAAkB;;;ACF3B,YAAYG,sBAAqB;AACjC,SAAS,aAAa;AACtB,OAAuB;AAOd,gBAAAC,OA4DC,QAAAC,cA5DD;AAHT,SAAS,OAAO;AAAA,EACd,GAAG;AACL,GAAsD;AACpD,SAAO,gBAAAD,MAAiB,uBAAhB,EAAqB,aAAU,UAAU,GAAG,OAAO;AAC7D;AAEA,SAAS,cAAc;AAAA,EACrB,GAAG;AACL,GAAyD;AACvD,SAAO,gBAAAA,MAAiB,0BAAhB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAAwD;AACtD,SAAO,gBAAAA,MAAiB,yBAAhB,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAiB,wBAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,GAAG;AACL,GAGG;AACD,SACE,gBAAAC,OAAC,gBAAa,aAAU,iBACtB;AAAA,oBAAAD,MAAC,iBAAc,WAAW,kBAAkB;AAAA,IAC5C,gBAAAC;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,UACA,mBACC,gBAAAA;AAAA,YAAiB;AAAA,YAAhB;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA,cAEV;AAAA,gCAAAD,MAAC,SAAM;AAAA,gBACP,gBAAAA,MAAC,UAAK,WAAU,WAAU,mBAAK;AAAA;AAAA;AAAA,UACjC;AAAA;AAAA;AAAA,IAEJ;AAAA,KACF;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,gDAAgD,SAAS;AAAA,MACtE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;;;AD/GI,gBAAAE,OA0BE,QAAAC,cA1BF;AALJ,SAAS,QAAQ;AAAA,EACf;AAAA,EACA,GAAG;AACL,GAAkD;AAChD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,GAAG;AACL,GAKG;AACD,SACE,gBAAAC,OAAC,UAAQ,GAAG,OACV;AAAA,oBAAAA,OAAC,gBAAa,WAAU,WACtB;AAAA,sBAAAD,MAAC,eAAa,iBAAM;AAAA,MACpB,gBAAAA,MAAC,qBAAmB,uBAAY;AAAA,OAClC;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,uBAAuB,SAAS;AAAA,QAC9C;AAAA,QAEA,0BAAAA,MAAC,WAAQ,WAAU,yZAChB,UACH;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MAEV;AAAA,wBAAAD,MAAC,cAAW,WAAU,8BAA6B;AAAA,QACnD,gBAAAA;AAAA,UAAC,iBAAiB;AAAA,UAAjB;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,wBAAwB,SAAS;AAAA,MAC9C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AEzKA,OAAuB;AACvB,YAAY,0BAA0B;AACtC,SAAS,WAAW,oBAAAE,mBAAkB,kBAAkB;AAO/C,gBAAAC,OAqDL,QAAAC,cArDK;AAHT,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAA2D;AACzD,SAAO,gBAAAD,MAAsB,2BAArB,EAA0B,aAAU,gBAAgB,GAAG,OAAO;AACxE;AAEA,SAAS,mBAAmB;AAAA,EAC1B,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA,MAAsB,8BAArB,EAA6B,aAAU,wBAAwB,GAAG,OAAO;AAE9E;AAEA,SAAS,iBAAiB;AAAA,EACxB,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA,MAAsB,4BAArB,EAA2B,aAAU,sBAAsB,GAAG,OAAO;AAE1E;AAEA,SAAS,kBAAkB;AAAA,EACzB,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA,MAAsB,6BAArB,EAA4B,aAAU,uBAAuB,GAAG,OAAO;AAE5E;AAEA,SAAS,eAAe;AAAA,EACtB,GAAG;AACL,GAA0D;AACxD,SAAO,gBAAAA,MAAsB,0BAArB,EAAyB,aAAU,oBAAoB,GAAG,OAAO;AAC3E;AAEA,SAAS,sBAAsB;AAAA,EAC7B,GAAG;AACL,GAAiE;AAC/D,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAD,MAACE,mBAAA,EAAiB,WAAU,WAAU;AAAA;AAAA;AAAA,EACxC;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE,gBAAAF;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA,MAAsB,6BAArB,EACC,0BAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGG;AACD,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,wBAAwB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmE;AACjE,SACE,gBAAAC;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,iFACd,0BAAAA,MAAsB,oCAArB,EACC,0BAAAA,MAAC,aAAU,WAAU,UAAS,GAChC,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgE;AAC9D,SACE,gBAAAC;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,iFACd,0BAAAA,MAAsB,oCAArB,EACC,0BAAAA,MAAC,cAAW,WAAU,uBAAsB,GAC9C,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,GAAG;AACL,GAAgE;AAC9D,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACxOA,OAAkC;AAClC;AAAA,EACE,UAAU;AAAA,EACV,SAAS;AAAA,EACT;AAAA,OACK;AACP,SAAS,oBAAoB;AAC7B,YAAYG,aAAW;;;ACNvB,OAAuB;AACvB,YAAYC,uBAAsB;AAOzB,gBAAAC,aAAA;AAHT,SAAS,QAAQ;AAAA,EACf,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAkB,wBAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO;AAC/D;AAEA,SAAS,eAAe;AAAA,EACtB,GAAG;AACL,GAA0D;AACxD,SAAO,gBAAAA,MAAkB,2BAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA,MAAkB,0BAAjB,EACC,0BAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB,GAAG;AACL,GAAyD;AACvD,SAAO,gBAAAA,MAAkB,0BAAjB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;;;ADwXM,SAsBU,OAAAC,OAtBV,QAAAC,cAAA;AAvYN,IAAM,qBAAiD;AAAA,EACrD,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,sBAAsB;AACxB;AAEA,IAAM,0BAAsD;AAAA,EAC1D,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,sBAAsB;AACxB;AAyBA,IAAM,kBAAkB,oBAAI,IAAI;AAAA,EAC9B;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;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;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,WAAW,MAAmB,aAAyB,cAAc;AAC5E,MAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG;AAC3B,WAAO;AAAA,EACT;AACA,SAAO,cAAc,MAAM,mBAAmB,UAAU,CAAC;AAC3D;AAEA,SAAS,UACP,OACA,aAAyB,cACZ;AACb,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAS,aAAa,OAAO,mBAAmB,UAAU,GAAG,oBAAI,KAAK,CAAC;AAC7E,SAAO,QAAQ,MAAM,IAAI,SAAS;AACpC;AAiCO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmB;AACjB,QAAM,sBAAsB,eAAe,wBAAwB,UAAU;AAC7E,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,YAAY,aAAa,IAAU,iBAAsB,QAAQ,IAAI;AAC5E,QAAM,CAAC,OAAO,QAAQ,IAAU,iBAAS,WAAW,QAAQ,MAAM,UAAU,CAAC;AAC7E,QAAM,CAAC,YAAY,aAAa,IAAU,gBAAQ,MAAM;AACtD,UAAM,iBAA0C,CAAC;AACjD,UAAM,oBAA6C,CAAC;AAEpD,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,SAAS,GAAG;AAClD,YAAM,cACJ,gBAAgB,IAAI,GAAG,KACvB,IAAI,WAAW,OAAO,KACtB,IAAI,WAAW,OAAO;AAExB,UAAI,aAAa;AACf,uBAAe,GAAG,IAAI;AAAA,MACxB,OAAO;AACL,0BAAkB,GAAG,IAAI;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IAYF;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAGd,QAAM,QAAc,gBAAQ,MAAM;AAChC,UAAM,IAAI,oBAAI,KAAK;AACnB,MAAE,SAAS,GAAG,GAAG,GAAG,CAAC;AACrB,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,mBAAyB,gBAAQ,MAAM;AAC3C,QAAI,eAAe;AACjB,UAAI,SAAS;AACX,cAAM,MAAM,IAAI,KAAK,OAAO;AAC5B,YAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,eAAO,MAAM,QAAQ,MAAM;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACX,YAAM,MAAM,IAAI,KAAK,OAAO;AAC5B,UAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,SAAS,eAAe,KAAK,CAAC;AAGlC,QAAM,mBAAyB,gBAAQ,MAAM;AAC3C,QAAI,SAAS;AACX,YAAM,MAAM,IAAI,KAAK,OAAO;AAC5B,UAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,CAAC;AAGZ,QAAM,qBAA2B,gBAAQ,MAAM;AAC7C,QAAI,iBAAkB,QAAO;AAC7B,UAAM,IAAI,IAAI,KAAK,KAAK;AACxB,MAAE,YAAY,EAAE,YAAY,IAAI,EAAE;AAClC,WAAO;AAAA,EACT,GAAG,CAAC,kBAAkB,KAAK,CAAC;AAE5B,QAAM,mBAAyB,gBAAQ,MAAM;AAC3C,QAAI,iBAAkB,QAAO;AAC7B,UAAM,IAAI,IAAI,KAAK,KAAK;AACxB,MAAE,YAAY,EAAE,YAAY,IAAI,EAAE;AAClC,WAAO;AAAA,EACT,GAAG,CAAC,kBAAkB,KAAK,CAAC;AAE5B,EAAM,kBAAU,MAAM;AACpB,QAAI,MAAM;AACR,eAAS,WAAW,MAAM,UAAU,CAAC;AACrC,oBAAc,IAAI;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,CAAC;AAErB,QAAM,iBAAiB,SAAS,cAAc;AAC9C,QAAM,oBAAoB,YAAY,QAAQ;AAC9C,QAAM,kBACJ,kBACC,OAAO,qBAAqB,YAAY,mBAAmB;AAC9D,QAAM,0BAA0B,CAAC,iBAAmC;AAClE,QAAI,cAAc;AAChB,YAAM,UAAU,IAAI,KAAK,YAAY;AACrC,cAAQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAE3B,YAAM,aAAa,CAAC,oBAAoB,WAAW;AACnD,YAAM,cAAc,CAAC,oBAAoB,WAAW;AAEpD,UAAI,cAAc,aAAa;AAC7B,gBAAQ,YAAY;AACpB,iBAAS,WAAW,cAAc,UAAU,CAAC;AAC7C,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACA,QAAM,0BAA0B,CAACC,UAAe;AAC9C,UAAM,YAAY,IAAI,KAAKA,KAAI;AAC/B,cAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAE7B,UAAM,cACJ,qBAAqB,QAAQ,YAAY;AAC3C,UAAM,aACJ,qBAAqB,UAAa,YAAY;AAEhD,WAAO,eAAe;AAAA,EACxB;AACA,QAAM,wBAAwB;AAAA,IAC5B,GAAG;AAAA,IACH,MAAM,QAAQ;AAAA,IACd,UAAU;AAAA,IACV;AAAA,IACA,OAAO;AAAA,IACP,eAAe,iBAAiB;AAAA,IAChC;AAAA,IACA,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW,GAAG,gCAAgC,iBAAiB;AAAA,IAC/D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,YAAY;AAAA,IACtB,UAAU,oBAAoB;AAAA,EAChC;AAEA,QAAM,oBAAoB,CAAC,MAA2C;AACpE,UAAM,aAAa,EAAE,OAAO;AAC5B,aAAS,UAAU;AAEnB,UAAM,aAAa,UAAU,YAAY,UAAU;AAEnD,QAAI,YAAY;AACd,YAAM,eAAe,IAAI,KAAK,UAAU;AACxC,mBAAa,SAAS,GAAG,GAAG,GAAG,CAAC;AAEhC,YAAM,aAAa,CAAC,oBAAoB,gBAAgB;AACxD,YAAM,cAAc,CAAC,oBAAoB,gBAAgB;AAEzD,UAAI,cAAc,aAAa;AAC7B,gBAAQ,UAAU;AAClB,sBAAc,UAAU;AAAA,MAC1B;AAAA,IACF,WAAW,eAAe,IAAI;AAC5B,cAAQ,IAAI;AAAA,IACd;AAAA,EACF;AAEA,QAAM,aAAa,CAAC,MAA0C;AAC5D,QAAI,QAAQ;AACV,aAAO,CAAC;AAAA,IACV;AAEA,QAAI,UAAU,IAAI;AAChB,UAAI,SAAS,MAAM;AACjB,gBAAQ,IAAI;AAAA,MACd;AACA;AAAA,IACF;AAEA,UAAM,aAAa,UAAU,OAAO,UAAU;AAC9C,QAAI,CAAC,YAAY;AACf,eAAS,WAAW,MAAM,UAAU,CAAC;AAAA,IACvC,OAAO;AACL,YAAM,eAAe,IAAI,KAAK,UAAU;AACxC,mBAAa,SAAS,GAAG,GAAG,GAAG,CAAC;AAEhC,YAAM,aAAa,CAAC,oBAAoB,gBAAgB;AACxD,YAAM,cAAc,CAAC,oBAAoB,gBAAgB;AAEzD,UAAI,CAAC,cAAc,CAAC,aAAa;AAC/B,iBAAS,WAAW,MAAM,UAAU,CAAC;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAF,MAAC,SAAI,WAAW,GAAG,uBAAuB,SAAS,GACjD,0BAAAC,OAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MAAC,UAAU,iBAChC,0BAAAA,MAAC,SAAI,WAAU,yBACb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH;AAAA,QACA,aAAa;AAAA,QACb,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,WAAW,OAAK;AACd,cAAI,EAAE,QAAQ,eAAe,CAAC,iBAAiB;AAC7C,cAAE,eAAe;AACjB,oBAAQ,IAAI;AAAA,UACd;AAAA,QACF;AAAA,QACA,WACE,gBAAAA,MAAC,gBAAa,WAAU,iCAAgC;AAAA,QAE1D,kBACE,kBAAkB,SAAY,MAAM,QAAQ,CAAC,IAAI;AAAA,QAEnD,sBAAsB,EAAE,UAAU,gBAAgB;AAAA,QACjD,GAAI;AAAA;AAAA,IACP,GACF,GACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ,0BAAAA,MAAC,SAAI,WAAU,kEACb,0BAAAA,MAAC,YAAU,GAAG,uBAAuB,GACvC;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;;;AEldA,OAAkC;AAClC,SAAS,UAAUG,gBAAe,WAAAC,gBAAe;AACjD,SAAS,gBAAAC,qBAAoB;AAC7B,YAAYC,aAAW;AA4Qb,SAcE,OAAAC,OAdF,QAAAC,cAAA;AAlQV,IAAMC,sBAAiD;AAAA,EACrD,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,sBAAsB;AACxB;AAEA,IAAMC,2BAAsD;AAAA,EAC1D,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,sBAAsB;AACxB;AAoBA,SAASC,YACP,MACA,aAAyB,cACzB;AACA,MAAI,CAAC,QAAQ,CAACC,SAAQ,IAAI,GAAG;AAC3B,WAAO;AAAA,EACT;AACA,SAAOC,eAAc,MAAMJ,oBAAmB,UAAU,CAAC;AAC3D;AAEA,SAAS,YACP,OACA,aAAyB,cACzB;AACA,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,OAAOE,YAAW,MAAM,MAAM,UAAU;AAC9C,QAAM,KAAKA,YAAW,MAAM,IAAI,UAAU;AAC1C,MAAI,QAAQ,GAAI,QAAO,SAAS,KAAK,OAAO,GAAG,IAAI,WAAW,EAAE;AAChE,MAAI,KAAM,QAAO;AACjB,SAAO;AACT;AAEA,SAAS,iBAAiB,YAAwB;AAChD,QAAM,IAAID,yBAAwB,UAAU;AAC5C,SAAO,GAAG,CAAC,WAAW,CAAC;AACzB;AAiCO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,QAAM,sBAAsB,eAAe,iBAAiB,UAAU;AACtE,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,YAAY,aAAa,IAAU;AAAA,IACxC,WAAW,QAAQ;AAAA,EACrB;AAEA,QAAM,eAAe,YAAY,WAAW,UAAU;AAEtD,EAAM,kBAAU,MAAM;AACpB,QAAI,WAAW,MAAM;AACnB,oBAAc,UAAU,IAAI;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,QAAc,gBAAQ,MAAM;AAChC,UAAM,IAAI,oBAAI,KAAK;AACnB,MAAE,SAAS,GAAG,GAAG,GAAG,CAAC;AACrB,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,mBAAyB,gBAAQ,MAAM;AAC3C,QAAI,eAAe;AACjB,UAAI,SAAS;AACX,cAAM,MAAM,IAAI,KAAK,OAAO;AAC5B,YAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,eAAO,MAAM,QAAQ,MAAM;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACX,YAAM,MAAM,IAAI,KAAK,OAAO;AAC5B,UAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,SAAS,eAAe,KAAK,CAAC;AAElC,QAAM,mBAAyB,gBAAQ,MAAM;AAC3C,QAAI,SAAS;AACX,YAAM,MAAM,IAAI,KAAK,OAAO;AAC5B,UAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,CAAC;AAGZ,QAAM,qBAA2B,gBAAQ,MAAM;AAC7C,QAAI,iBAAkB,QAAO;AAC7B,UAAM,IAAI,IAAI,KAAK,KAAK;AACxB,MAAE,YAAY,EAAE,YAAY,IAAI,GAAG;AACnC,WAAO;AAAA,EACT,GAAG,CAAC,kBAAkB,KAAK,CAAC;AAE5B,QAAM,mBAAyB,gBAAQ,MAAM;AAC3C,QAAI,iBAAkB,QAAO;AAC7B,UAAM,IAAI,IAAI,KAAK,KAAK;AACxB,MAAE,YAAY,EAAE,YAAY,IAAI,GAAG;AACnC,WAAO;AAAA,EACT,GAAG,CAAC,kBAAkB,KAAK,CAAC;AAE5B,QAAM,iBAAiB,SAAS,cAAc;AAC9C,QAAM,oBAAoB,YAAY;AACtC,QAAM,kBACJ,kBACC,OAAO,qBAAqB,YAAY,mBAAmB;AAE9D,QAAM,iBAAiB,CAAC,MAAY;AAClC,UAAM,aAAa,CAAC,oBAAoB,KAAK;AAC7C,UAAM,cAAc,CAAC,oBAAoB,KAAK;AAC9C,WAAO,cAAc;AAAA,EACvB;AAEA,QAAM,0BAA0B,CAAC,SAAe;AAC9C,UAAM,YAAY,IAAI,KAAK,IAAI;AAC/B,cAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7B,WAAO,CAAC,eAAe,SAAS;AAAA,EAClC;AAEA,QAAM,uBAAuB,CAAC,UAAiC;AAC7D,QAAI,UAAU;AACZ,eAAS,KAAK;AACd;AAAA,IACF;AACA,iBAAa,KAAK;AAAA,EACpB;AAEA,QAAM,cAAc,MAAM;AACxB,iBAAa,MAAS;AAAA,EACxB;AAEA,QAAM,YAAY,MAAM;AACtB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,wBAAwB;AAAA,IAC5B,GAAG;AAAA,IACH,MAAM;AAAA,IACN,UAAU;AAAA,IACV;AAAA,IACA,OAAO;AAAA,IACP,eAAe,iBAAiB;AAAA,IAChC;AAAA,IACA,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW,GAAG,gCAAgC,iBAAiB;AAAA,IAC/D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,UAAU,oBAAoB;AAAA,EAChC;AAEA,SACE,gBAAAH,MAAC,SAAI,WAAW,GAAG,uBAAuB,SAAS,GACjD,0BAAAC,OAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MAAC,UAAU,iBAChC,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAW;AAAA,UACT,cAAc,EAAE,KAAK,CAAC;AAAA,UACtB;AAAA,UACA;AAAA,UACA,mBACE;AAAA,UACF;AAAA,QACF;AAAA,QACA,UAAU;AAAA,QAET;AAAA,0BAAgB;AAAA,UACjB,gBAAAD,MAACO,eAAA,EAAa,WAAU,0CAAyC;AAAA;AAAA;AAAA,IACnE,GACF;AAAA,IACA,gBAAAP;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ,0BAAAC,OAAC,SAAI,WAAU,mGACb;AAAA,0BAAAD,MAAC,YAAU,GAAG,uBAAuB;AAAA,UACrC,gBAAAC,OAAC,SAAI,WAAU,0CACb;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,MAAK;AAAA,gBACN;AAAA;AAAA,YAED;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,MAAK;AAAA,gBACN;AAAA;AAAA,YAED;AAAA,aACF;AAAA,WACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;;;AC/TA,SAAS,SAAAQ,cAAa;AACtB,OAAuB;AACvB,SAAS,UAAU,uBAAuB;AAOjC,gBAAAC,OA4EC,QAAAC,cA5ED;AAHT,SAAS,OAAO;AAAA,EACd,GAAG;AACL,GAAsD;AACpD,SAAO,gBAAAD,MAAC,gBAAgB,MAAhB,EAAqB,aAAU,UAAU,GAAG,OAAO,kBAAkB,OAAO;AACtF;AAEA,SAAS,cAAc;AAAA,EACrB,GAAG;AACL,GAAyD;AACvD,SAAO,gBAAAA,MAAC,gBAAgB,SAAhB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAAwD;AACtD,SAAO,gBAAAA,MAAC,gBAAgB,QAAhB,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAC,gBAAgB,OAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,yBAAyB;AAAA,EAC7B,KAAK;AAAA,EACL,QACE;AAAA,EACF,OACE;AAAA,EACF,MAAM;AACR;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,GAKG;AACD,SACE,gBAAAC,OAAC,gBAAa,aAAU,iBACtB;AAAA,oBAAAD,MAAC,iBAAc,WAAW,kBAAkB;AAAA,IAC5C,gBAAAC;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA,uBAAuB,SAAS;AAAA,UAChC;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,6BACC,gBAAAD,MAAC,SAAI,WAAU,mIAAkI;AAAA,UAElJ,mBACC,gBAAAC;AAAA,YAAC,gBAAgB;AAAA,YAAhB;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA,cAEV;AAAA,gCAAAD,MAACE,QAAA,EAAM;AAAA,gBACP,gBAAAF,MAAC,UAAK,WAAU,WAAU,mBAAK;AAAA;AAAA;AAAA,UACjC;AAAA,UAED;AAAA;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACrJA,OAAuB;AACvB,YAAY,2BAA2B;AACvC,SAAS,aAAAG,YAAW,oBAAAC,mBAAkB,cAAAC,mBAAkB;AAO/C,gBAAAC,OAgFL,QAAAC,cAhFK;AAHT,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAA4D;AAC1D,SAAO,gBAAAD,MAAuB,4BAAtB,EAA2B,aAAU,iBAAiB,GAAG,OAAO;AAC1E;AAEA,SAAS,mBAAmB;AAAA,EAC1B,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA,MAAuB,8BAAtB,EAA6B,aAAU,wBAAwB,GAAG,OAAO;AAE9E;AAEA,SAAS,oBAAoB;AAAA,EAC3B,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAA,MAAuB,8BAAtB,EACC,0BAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA,MAAuB,6BAAtB,EAA4B,aAAU,uBAAuB,GAAG,OAAO;AAE5E;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGG;AACD,SACE,gBAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,yBAAyB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoE;AAClE,SACE,gBAAAC;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,iFACd,0BAAAA,MAAuB,qCAAtB,EACC,0BAAAA,MAACE,YAAA,EAAU,WAAU,UAAS,GAChC,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B,GAAG;AACL,GAAkE;AAChE,SACE,gBAAAF;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE,gBAAAC;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,iFACd,0BAAAA,MAAuB,qCAAtB,EACC,0BAAAA,MAACG,aAAA,EAAW,WAAU,uBAAsB,GAC9C,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAH;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE,gBAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB,GAAG;AACL,GAA2D;AACzD,SAAO,gBAAAA,MAAuB,2BAAtB,EAA0B,aAAU,qBAAqB,GAAG,OAAO;AAC7E;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAD,MAACI,mBAAA,EAAiB,WAAU,kBAAiB;AAAA;AAAA;AAAA,EAC/C;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,gBAAAJ;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC5OA,YAAYK,aAAW;AACvB,YAAYC,uBAAsB;AAClC,SAAS,mBAAmB;AAsHtB,gBAAAC,OAoBF,QAAAC,cApBE;AAjGN,IAAM,wBAA8B,sBAAiD,IAAI;AAEzF,SAAS,oBAAoB;AAC3B,QAAM,MAAY,mBAAW,qBAAqB;AAClD,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yEAAyE;AACnG,SAAO;AACT;AAkBA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,cAAc;AAAA,EACd;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AACF,GAAwB;AACtB,QAAM,CAAC,eAAe,gBAAgB,IAAU,iBAAS,YAAY;AACrE,QAAM,CAAC,cAAc,eAAe,IAAU,iBAAS,WAAW;AAClE,QAAM,CAAC,SAAS,UAAU,IAAU,iBAA6C,CAAC,CAAC;AACnF,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,iBAAS,EAAE;AAEjE,QAAM,oBAAoB,cAAc;AACxC,QAAM,mBAAmB,aAAa;AACtC,QAAM,QAAQ,oBAAoB,YAAY;AAC9C,QAAM,OAAO,mBAAmB,WAAW;AAE3C,QAAM,UAAgB;AAAA,IACpB,CAAC,SAAkB;AACjB,UAAI,CAAC,iBAAkB,iBAAgB,IAAI;AAC3C,qBAAe,IAAI;AAAA,IACrB;AAAA,IACA,CAAC,kBAAkB,YAAY;AAAA,EACjC;AAEA,QAAM,oBAA0B;AAAA,IAC9B,CAAC,SAAiB;AAChB,UAAI,CAAC,kBAAmB,kBAAiB,IAAI;AAC7C,sBAAgB,IAAI;AACpB,cAAQ,KAAK;AAAA,IACf;AAAA,IACA,CAAC,mBAAmB,eAAe,OAAO;AAAA,EAC5C;AAEA,QAAM,iBAAuB,oBAAY,CAAC,KAAa,UAAkB;AACvE,eAAW,UAAQ;AACjB,UAAI,KAAK,KAAK,OAAK,EAAE,UAAU,GAAG,EAAG,QAAO;AAC5C,aAAO,CAAC,GAAG,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;AAAA,IACxC,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,QAAM,eAAqB,gBAAQ,MAAM;AACvC,UAAM,QAAQ,QAAQ,KAAK,OAAK,EAAE,UAAU,KAAK;AACjD,WAAO,OAAO,SAAS;AAAA,EACzB,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,QAAM,MAAY;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,MAAM,SAAS,OAAO,mBAAmB,UAAU,OAAO,aAAa,MAAM,cAAc,SAAS,gBAAgB,kBAAkB,mBAAmB;AAAA,EAC5J;AAEA,SACE,gBAAAD,MAAC,sBAAsB,UAAtB,EAA+B,OAAO,KACrC,0BAAAA,MAAkB,wBAAjB,EAAsB,MAAY,cAAc,WAAW,SAAY,SACrE,UACH,GACF;AAEJ;AAQA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,GAA6B;AAC3B,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACC,gBAAAD,MAAC,UAAK,WAAU,gEAA+D,eAAC;AAAA;AAAA;AAAA,EAEpF;AAEJ;AAOA,SAAS,sBAAsB,EAAE,WAAW,GAAG,MAAM,GAA+B;AAClF,QAAM,EAAE,OAAO,cAAc,aAAa,MAAM,UAAU,OAAO,MAAM,SAAS,SAAS,eAAe,kBAAkB,oBAAoB,IAAI,kBAAkB;AAEpK,QAAM,gBAAsB;AAAA,IAC1B,CAAC,MAA2B;AAC1B,UAAI,SAAU;AACd,UAAI,EAAE,QAAQ,eAAe,EAAE,QAAQ,WAAW;AAChD,UAAE,eAAe;AACjB,YAAI,CAAC,MAAM;AACT,kBAAQ,IAAI;AACZ;AAAA,QACF;AACA,cAAM,MAAM,QAAQ;AACpB,YAAI,QAAQ,EAAG;AACf,YAAI,EAAE,QAAQ,aAAa;AACzB,8BAAoB,mBAAmB,MAAM,IAAI,mBAAmB,IAAI,CAAC;AAAA,QAC3E,OAAO;AACL,8BAAoB,mBAAmB,IAAI,mBAAmB,IAAI,MAAM,CAAC;AAAA,QAC3E;AAAA,MACF,WAAW,EAAE,QAAQ,WAAW,QAAQ,oBAAoB,GAAG;AAC7D,UAAE,eAAe;AACjB,cAAM,MAAM,QAAQ,gBAAgB;AACpC,YAAI,IAAK,eAAc,IAAI,KAAK;AAAA,MAClC,WAAW,EAAE,QAAQ,YAAY,MAAM;AACrC,UAAE,eAAe;AACjB,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAAA,IACA,CAAC,UAAU,MAAM,SAAS,SAAS,kBAAkB,qBAAqB,aAAa;AAAA,EACzF;AAEA,QAAM,WAAW,UAAU,MAAM,iBAAiB;AAElD,SACE,gBAAAA,MAAkB,2BAAjB,EAAyB,SAAO,MAC/B,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV;AAAA,MACA,iBAAe;AAAA,MACf,iBAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAW;AAAA;AAAA,QAET;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA,WACI,8BACA;AAAA;AAAA,QAEJ,CAAC,YAAY,CAAC,SAAS;AAAA;AAAA,QAEvB,CAAC,YAAY,CAAC,SAAS;AAAA;AAAA,QAEvB,QAAQ,CAAC,SAAS;AAAA;AAAA,QAElB,SAAS;AAAA;AAAA,QAET,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,gBACC,gBAAAD,MAAC,UAAK,WAAU,mGACb,gBACH;AAAA,QAEF,gBAAAA,MAAC,UAAK,WAAU,6BACb,qBAAW,eAAe,aAC7B;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,QAAQ;AAAA,YACV;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAOA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAElD,SACE,gBAAAA,MAAkB,0BAAjB,EACC,0BAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,YAAY;AAAA,MACZ,OAAM;AAAA,MACN,iBAAiB,CAAC,MAAM,EAAE,eAAe;AAAA,MACzC,kBAAkB,CAAC,MAAM,EAAE,eAAe;AAAA,MAC1C,sBAAsB,MAAM,oBAAoB,EAAE;AAAA,MAClD,WAAW;AAAA,QACT;AAAA,QACA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,SAAI,MAAK,WAAU,WAAU,iBAC3B,UACH;AAAA;AAAA,EACF,GACF;AAEJ;AAUA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,UAAU,iBAAiB;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,GAA8B;AAC5B,QAAM,EAAE,OAAO,eAAe,gBAAgB,SAAS,kBAAkB,oBAAoB,IAAI,kBAAkB;AAEnH,QAAM,cAAc,UAAU,OAAO,aAAa,WAAW,WAAW;AAExE,EAAM,kBAAU,MAAM;AACpB,QAAI,aAAa;AACf,qBAAe,aAAa,WAAW;AAAA,IACzC;AAAA,EACF,GAAG,CAAC,aAAa,aAAa,cAAc,CAAC;AAE7C,QAAM,aAAa,UAAU;AAC7B,QAAM,QAAQ,QAAQ,UAAU,OAAK,EAAE,UAAU,WAAW;AAC5D,QAAM,gBAAgB,qBAAqB;AAE3C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,aAAU;AAAA,MACV,oBAAkB,iBAAiB;AAAA,MACnC,iBAAe,cAAc;AAAA,MAC7B,SAAS,MAAM;AACb,YAAI,CAAC,eAAgB,eAAc,WAAW;AAAA,MAChD;AAAA,MACA,cAAc,MAAM,oBAAoB,KAAK;AAAA,MAC7C,cAAc,MAAM,oBAAoB,EAAE;AAAA,MAC1C,WAAW;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA,iBAAiB;AAAA;AAAA,QAEjB,cAAc;AAAA;AAAA,QAEd,kBAAkB;AAAA,QAClB;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,sBAAY;AAAA;AAAA,EACf;AAEJ;;;AC1VA,YAAYE,aAAW;;;ACAvB,SAAS,QAAAC,aAAY;AACrB,SAAS,OAAAC,YAA8B;AACvC,OAAuB;AAgCnB,gBAAAC,aAAA;AA5BJ,IAAM,sBAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGK;AACH,QAAM,OAAO,UAAUC,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oBAAoB,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,mBAAmBC,KAAI,oCAAoC;AAAA,EAC/D,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAED,SAAS,KAAK;AAAA,EACZ;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGK;AACH,QAAM,OAAO,UAAUC,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iBAAiB,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAIA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAEG;AACD,QAAM,OAAO,UAAUE,QAAO;AAE9B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ADjPQ,SAOI,OAAAG,OAPJ,QAAAC,cAAA;AAjDR,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AAGpB,QAAM,SAAe,gBAAQ,MAAM;AACjC,UAAM,OAAO,oBAAI,IAAY;AAC7B,WAAO,KAAK,IAAI,CAAC,KAAK,MAAM;AAC1B,YAAMC,SAAQ,KAAK,IAAI,IAAI,QAAQ,IAC/B,GAAG,IAAI,QAAQ,KAAK,CAAC,KACrB,IAAI;AACR,WAAK,IAAI,IAAI,QAAQ;AACrB,aAAOA;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,WAAW,CAAC,aAAsB;AACtC,QAAI,CAAC,SAAU,QAAO;AACtB,UAAM,IAAI,KAAK,UAAU,SAAO,IAAI,aAAa,QAAQ;AACzD,WAAO,KAAK,IAAI,OAAO,CAAC,IAAI;AAAA,EAC9B;AAEA,QAAM,CAAC,OAAO,QAAQ,IAAU,iBAAS,MAAM,SAAS,mBAAmB,CAAC;AAI5E,QAAM,CAAC,aAAa,cAAc,IAAU,iBAAS,mBAAmB;AACxE,MAAI,wBAAwB,aAAa;AACvC,mBAAe,mBAAmB;AAClC,aAAS,SAAS,mBAAmB,CAAC;AAAA,EACxC;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAW;AAAA,MACX,SAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MAEC,eAAK,IAAI,CAAC,KAAK,MACd,gBAAAC;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,OAAO,CAAC;AAAA,UACf,aAAa;AAAA,UACb,WAAW,GAAG,cAAc,aAAa;AAAA,UAEzC;AAAA,4BAAAD,MAAC,oBAAiB,MAAK,cACrB,0BAAAA,MAAC,UAAK,WAAW,GAAG,6BAA6B,iBAAiB,GAC/D,cAAI,UACP,GACF;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAAA,kBAC/B;AAAA,kBACA;AAAA,gBACF;AAAA,gBAEC,iBAAO,IAAI,WAAW,WAAW,gBAAAA,MAAC,OAAG,cAAI,QAAO,IAAO,IAAI;AAAA;AAAA,YAC9D;AAAA;AAAA;AAAA,QAlBK,OAAO,CAAC;AAAA,MAmBf,CACD;AAAA;AAAA,EACH;AAEJ;;;AE7GA,YAAYG,aAAW;AACvB,OAAgC;AAChC,SAAS,QAAAC,aAAY;AACrB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;;;ACVP,SAAS,QAAAC,aAAY;AACrB,SAAS,OAAAC,aAA8B;AACvC,OAAuB;AA4BnB,gBAAAC,aAAA;AA1BJ,IAAM,oBAAoBD,MAAI,kDAAkD;AAAA,EAC9E,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAED,SAASE,OAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGK;AACH,QAAM,OAAO,UAAUH,QAAO;AAE9B,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,kBAAkB,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ADAM,gBAAAE,aAAA;AArBN,IAAM,OAAO;AASb,IAAM,mBAAyB;AAAA,EAC7B,CAAC;AACH;AAEA,IAAM,YAAY,CAGhB;AAAA,EACA,GAAG;AACL,MAA4C;AAC1C,SACE,gBAAAA,MAAC,iBAAiB,UAAjB,EAA0B,OAAO,EAAE,MAAM,MAAM,KAAK,GACnD,0BAAAA,MAAC,cAAY,GAAG,OAAO,GACzB;AAEJ;AAEA,IAAM,eAAe,MAAM;AACzB,QAAM,eAAqB,mBAAW,gBAAgB;AACtD,QAAM,cAAoB,mBAAW,eAAe;AACpD,QAAM,EAAE,cAAc,IAAI,eAAe;AACzC,QAAM,YAAY,aAAa,EAAE,MAAM,aAAa,KAAK,CAAC;AAC1D,QAAM,aAAa,cAAc,aAAa,MAAM,SAAS;AAE7D,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,QAAM,EAAE,GAAG,IAAI;AAEf,SAAO;AAAA,IACL;AAAA,IACA,MAAM,aAAa;AAAA,IACnB,YAAY,GAAG,EAAE;AAAA,IACjB,mBAAmB,GAAG,EAAE;AAAA,IACxB,eAAe,GAAG,EAAE;AAAA,IACpB,GAAG;AAAA,EACL;AACF;AAMA,IAAM,kBAAwB;AAAA,EAC5B,CAAC;AACH;AAEA,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtE,QAAM,KAAW,cAAM;AAEvB,SACE,gBAAAA,MAAC,gBAAgB,UAAhB,EAAyB,OAAO,EAAE,GAAG,GACpC,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,cAAc,SAAS;AAAA,MACpC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,GAAG;AACL,GAAqD;AACnD,QAAM,EAAE,OAAO,WAAW,IAAI,aAAa;AAE3C,SACE,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY,CAAC,CAAC;AAAA,MACd,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC7D,SAAS;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,GAAG,MAAM,GAAsC;AACpE,QAAM,EAAE,OAAO,YAAY,mBAAmB,cAAc,IAAI,aAAa;AAE7E,SACE,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAI;AAAA,MACJ,oBACE,CAAC,QACG,GAAG,iBAAiB,KACpB,GAAG,iBAAiB,IAAI,aAAa;AAAA,MAE3C,gBAAc,CAAC,CAAC;AAAA,MACf,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAA8B;AAC3E,QAAM,EAAE,kBAAkB,IAAI,aAAa;AAE3C,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAI;AAAA,MACJ,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAA8B;AACvE,QAAM,EAAE,OAAO,cAAc,IAAI,aAAa;AAC9C,QAAM,OAAO,QAAQ,OAAO,OAAO,WAAW,EAAE,IAAI,MAAM;AAE1D,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAI;AAAA,MACJ,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AEzJA,OAAuB;AACvB,YAAY,wBAAwB;AAO3B,gBAAAG,aAAA;AAHT,SAAS,UAAU;AAAA,EACjB,GAAG;AACL,GAAyD;AACvD,SAAO,gBAAAA,MAAoB,yBAAnB,EAAwB,aAAU,cAAc,GAAG,OAAO;AACpE;AAEA,SAAS,iBAAiB;AAAA,EACxB,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA,MAAoB,4BAAnB,EAA2B,aAAU,sBAAsB,GAAG,OAAO;AAE1E;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA,MAAoB,2BAAnB,EAA0B,aAAU,qBACnC,0BAAAA;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,GACF;AAEJ;;;ACvCA,YAAYC,aAAW;AACvB,SAAS,UAAU,uBAAuB;AAC1C,SAAS,iBAAiB;AAiBpB,gBAAAC,OAoCF,QAAAC,cApCE;AAbN,IAAM,uBAA6B,sBAAc,KAAK;AAEtD,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGG;AACD,SACE,gBAAAD,MAAC,qBAAqB,UAArB,EAA8B,OAAO,SAAS,OAC7C,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,oBAAoB;AAAA,QAClB;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,qBAAqB,SAAS;AAAA,MAC3C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,kBAAwB,mBAAW,eAAe;AACxD,QAAM,EAAE,MAAM,cAAc,SAAS,IAAI,iBAAiB,MAAM,KAAK,KAAK,CAAC;AAC3E,QAAM,aAAa,iBAAiB,cAAc;AAClD,QAAM,QAAc,mBAAW,oBAAoB;AAEnD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAa;AAAA,MACb,WAAW;AAAA;AAAA,QAET;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA,CAAC,SAAS;AAAA;AAAA,QAEV,CAAC,SAAS,cAAc,CAAC,YAAY;AAAA;AAAA,QAErC,CAAC,SAAS,YAAY;AAAA;AAAA,QAEtB,SAAS,CAAC,YAAY;AAAA;AAAA,QAEtB,SAAS,YAAY;AAAA,QACrB;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,gBACC,gBAAAD,MAAC,SAAI,WAAU,yEACb,0BAAAA,MAAC,SAAI,WAAU,4DAA2D,GAC5E;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,kBAAkB,EAAE,GAAG,MAAM,GAAgC;AACpE,SACE,gBAAAA,MAAC,SAAI,aAAU,uBAAsB,MAAK,aAAa,GAAG,OACxD,0BAAAA,MAAC,aAAU,GACb;AAEJ;;;AC/FA,OAAuB;AACvB,YAAY,sBAAsB;AAClC,SAAS,aAAAE,YAAW,oBAAAC,mBAAkB,cAAAC,mBAAkB;AASpD,gBAAAC,OA2GA,QAAAC,cA3GA;AALJ,SAAS,QAAQ;AAAA,EACf;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAD;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAkB,uBAAjB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAAwD;AACtD,SAAO,gBAAAA,MAAkB,wBAAjB,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,cAAc;AAAA,EACrB,GAAG;AACL,GAAyD;AACvD,SAAO,gBAAAA,MAAkB,yBAAjB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,kBAAkB;AAAA,EACzB,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAA,MAAkB,6BAAjB,EAA4B,aAAU,uBAAuB,GAAG,OAAO;AAE5E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA,MAAC,iBACC,0BAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGG;AACD,SACE,gBAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAC;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,iFACd,0BAAAA,MAAkB,gCAAjB,EACC,0BAAAA,MAACE,YAAA,EAAU,WAAU,UAAS,GAChC,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAD;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,iFACd,0BAAAA,MAAkB,gCAAjB,EACC,0BAAAA,MAACG,aAAA,EAAW,WAAU,uBAAsB,GAC9C,GACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAH;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB,GAAG;AACL,GAAsD;AACpD,SAAO,gBAAAA,MAAkB,sBAAjB,EAAqB,aAAU,eAAe,GAAG,OAAO;AAClE;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAD,MAACI,mBAAA,EAAiB,WAAU,mBAAkB;AAAA;AAAA;AAAA,EAChD;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAA6D;AAC3D,SACE,gBAAAJ;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC9PA,YAAYK,aAAW;AACvB,YAAYC,uBAAsB;AAClC,SAAS,eAAAC,cAAa,KAAAC,UAAS;AAmB3B,SAcI,OAAAC,OAdJ,QAAAC,cAAA;AAFJ,SAAS,IAAI,EAAE,OAAO,SAAS,GAAa;AAC1C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MAET;AAAA;AAAA,QACD,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,CAAC,MAAM;AACd,gBAAE,gBAAgB;AAClB,uBAAS;AAAA,YACX;AAAA,YACA,WAAU;AAAA,YACV,cAAY,UAAU,KAAK;AAAA,YAE3B,0BAAAA,MAACE,IAAA,EAAE,WAAU,eAAc;AAAA;AAAA,QAC7B;AAAA;AAAA;AAAA,EACF;AAEJ;AA2BA,SAAS,oBAAoB;AAAA,EAC3B,QAAQ;AAAA,EACR,gBAAgB,CAAC;AAAA,EACjB;AAAA,EACA,UAAU,CAAC;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX;AACF,GAA6B;AAC3B,QAAM,CAAC,gBAAgB,iBAAiB,IAAU,iBAAmB,aAAa;AAClF,QAAM,CAAC,YAAY,aAAa,IAAU,iBAAS,EAAE;AACrD,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,iBAAS,EAAE;AACjE,QAAM,WAAiB,eAAyB,IAAI;AACpD,QAAM,aAAmB,eAAuB,IAAI;AAEpD,QAAM,eAAe,eAAe;AACpC,QAAM,SAAS,eAAe,aAAa;AAE3C,QAAM,eAAqB;AAAA,IACzB,CAAC,SAAmB;AAClB,UAAI,CAAC,aAAc,mBAAkB,IAAI;AACzC,uBAAiB,IAAI;AAAA,IACvB;AAAA,IACA,CAAC,cAAc,cAAc;AAAA,EAC/B;AAEA,QAAM,SAAe;AAAA,IACnB,CAAC,QAAgB;AACf,YAAM,UAAU,IAAI,KAAK;AACzB,UAAI,CAAC,WAAW,OAAO,SAAS,OAAO,EAAG;AAC1C,mBAAa,CAAC,GAAG,QAAQ,OAAO,CAAC;AACjC,oBAAc,EAAE;AAChB,0BAAoB,EAAE;AAAA,IACxB;AAAA,IACA,CAAC,QAAQ,YAAY;AAAA,EACvB;AAEA,QAAM,YAAkB;AAAA,IACtB,CAAC,QAAgB;AACf,mBAAa,OAAO,OAAO,CAAC,MAAM,MAAM,GAAG,CAAC;AAAA,IAC9C;AAAA,IACA,CAAC,QAAQ,YAAY;AAAA,EACvB;AAGA,QAAM,kBAAwB,gBAAQ,MAAM;AAC1C,UAAM,QAAQ,WAAW,YAAY;AACrC,WAAO,QAAQ;AAAA,MACb,CAAC,QACC,CAAC,OAAO,SAAS,IAAI,KAAK,MACzB,UAAU,MAAM,IAAI,MAAM,YAAY,EAAE,SAAS,KAAK;AAAA,IAC3D;AAAA,EACF,GAAG,CAAC,SAAS,YAAY,MAAM,CAAC;AAEhC,QAAM,gBAAsB;AAAA,IAC1B,CAAC,MAA6C;AAC5C,UAAI,EAAE,QAAQ,SAAS;AACrB,UAAE,eAAe;AACjB,YAAI,oBAAoB,KAAK,gBAAgB,gBAAgB,GAAG;AAC9D,iBAAO,gBAAgB,gBAAgB,EAAE,KAAK;AAAA,QAChD,WAAW,WAAW,KAAK,GAAG;AAC5B,iBAAO,UAAU;AAAA,QACnB;AAAA,MACF,WAAW,EAAE,QAAQ,eAAe,eAAe,MAAM,OAAO,SAAS,GAAG;AAC1E,kBAAU,OAAO,OAAO,SAAS,CAAC,CAAC;AAAA,MACrC,WAAW,EAAE,QAAQ,aAAa;AAChC,UAAE,eAAe;AACjB,YAAI,CAAC,MAAM;AACT,kBAAQ,IAAI;AACZ;AAAA,QACF;AACA;AAAA,UAAoB,CAAC,SACnB,OAAO,gBAAgB,SAAS,IAAI,OAAO,IAAI;AAAA,QACjD;AAAA,MACF,WAAW,EAAE,QAAQ,WAAW;AAC9B,UAAE,eAAe;AACjB;AAAA,UAAoB,CAAC,SACnB,OAAO,IAAI,OAAO,IAAI,gBAAgB,SAAS;AAAA,QACjD;AAAA,MACF,WAAW,EAAE,QAAQ,UAAU;AAC7B,gBAAQ,KAAK;AACb,4BAAoB,EAAE;AAAA,MACxB;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,iBAAiB,YAAY,QAAQ,QAAQ,WAAW,IAAI;AAAA,EACjF;AAEA,QAAM,oBAA0B;AAAA,IAC9B,CAAC,MAA2C;AAC1C,oBAAc,EAAE,OAAO,KAAK;AAC5B,UAAI,CAAC,KAAM,SAAQ,IAAI;AACvB,0BAAoB,EAAE;AAAA,IACxB;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,oBAA0B;AAAA,IAC9B,CAAC,aAAqB;AACpB,aAAO,QAAQ;AACf,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAEA,QAAM,qBAA2B,oBAAY,MAAM;AACjD,QAAI,SAAU;AACd,aAAS,SAAS,MAAM;AACxB,QAAI,CAAC,KAAM,SAAQ,IAAI;AAAA,EACzB,GAAG,CAAC,UAAU,IAAI,CAAC;AAEnB,QAAM,YAAY;AAElB,SACE,gBAAAF,MAAkB,wBAAjB,EAAsB,MAAY,cAAc,WAAW,SAAY,SACtE,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8CAA8C,SAAS;AAAA,MAGpE;AAAA,iBACC,gBAAAA,OAAC,SAAI,WAAU,gGACZ;AAAA;AAAA,UACA,aACC,gBAAAD,MAAC,UAAK,WAAU,gEAA+D,eAE/E;AAAA,WAEJ;AAAA,QAIF,gBAAAA,MAAkB,0BAAjB,EAAwB,SAAO,MAC9B,0BAAAC;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAW;AAAA,cACT;AAAA,cACA,aAAa,CAAC,WACV,sBACA;AAAA,cACJ,CAAC,YAAY,CAAC,aAAa;AAAA,cAC3B,YAAY;AAAA,YACd;AAAA,YAGC;AAAA,sBACC,gBAAAD,MAAC,UAAK,WAAU,mGACb,gBACH;AAAA,cAIF,gBAAAC,OAAC,SAAI,WAAU,wDACZ;AAAA,uBAAO,IAAI,CAAC,QACX,gBAAAD,MAAC,OAAc,OAAO,KAAK,UAAU,MAAM,UAAU,GAAG,KAA9C,GAAiD,CAC5D;AAAA,gBACD,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,KAAK;AAAA,oBACL,MAAK;AAAA,oBACL,OAAO;AAAA,oBACP,UAAU;AAAA,oBACV,WAAW;AAAA,oBACX,SAAS,MAAM;AAAE,0BAAI,CAAC,QAAQ,CAAC,SAAU,SAAQ,IAAI;AAAA,oBAAE;AAAA,oBACvD;AAAA,oBACA,aAAa,OAAO,WAAW,IAAI,cAAc;AAAA,oBACjD,WAAW;AAAA,sBACT;AAAA,sBACA,YAAY;AAAA,oBACd;AAAA;AAAA,gBACF;AAAA,iBACF;AAAA,cAGA,gBAAAA;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA,QAAQ;AAAA,kBACV;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF,GACF;AAAA,QAGA,gBAAAH,MAAkB,0BAAjB,EACC,0BAAAA;AAAA,UAAkB;AAAA,UAAjB;AAAA,YACC,aAAU;AAAA,YACV,YAAY;AAAA,YACZ,OAAM;AAAA,YACN,iBAAiB,CAAC,MAAM,EAAE,eAAe;AAAA,YACzC,kBAAkB,CAAC,MAAM,EAAE,eAAe;AAAA,YAC1C,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEA,0BAAAC,OAAC,SAAI,MAAK,WAAU,WAAU,iBAE3B;AAAA,yBAAW,KAAK,MAAM,MACrB,CAAC,QAAQ;AAAA,gBACP,CAAC,MAAM,EAAE,MAAM,YAAY,MAAM,WAAW,YAAY;AAAA,cAC1D,KACE,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,iBAAe;AAAA,kBACf,aAAU;AAAA,kBACV,SAAS,MAAM,OAAO,WAAW,KAAK,CAAC;AAAA,kBACvC,cAAc,MAAM,oBAAoB,EAAE;AAAA,kBAC1C,cAAc,MAAM,oBAAoB,EAAE;AAAA,kBAC1C,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA,qBAAqB,MACnB;AAAA,kBACJ;AAAA,kBAEC,qBAAW,KAAK;AAAA;AAAA,cACnB;AAAA,cAEH,gBAAgB,IAAI,CAAC,KAAK,QACzB,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,iBAAe,OAAO,SAAS,IAAI,KAAK;AAAA,kBACxC,aAAU;AAAA,kBACV,SAAS,MAAM,kBAAkB,IAAI,KAAK;AAAA,kBAC1C,cAAc,MAAM,oBAAoB,GAAG;AAAA,kBAC3C,cAAc,MAAM,oBAAoB,EAAE;AAAA,kBAC1C,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA,qBAAqB,OACnB;AAAA,kBACJ;AAAA,kBAEC,cAAI;AAAA;AAAA,gBAdA,IAAI;AAAA,cAeX,CACD;AAAA,cACA,gBAAgB,WAAW,KAAK,WAAW,KAAK,MAAM,MACrD,gBAAAA,MAAC,SAAI,WAAU,8GAA6G,kCAE5H;AAAA,eAEJ;AAAA;AAAA,QACF,GACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;AClUA,OAAuB;AACvB,YAAY,6BAA6B;AACzC,SAAS,OAAAI,aAAW;AACpB,SAAS,mBAAAC,wBAAuB;AAa5B,SAUe,OAAAC,OAVf,QAAAC,cAAA;AATJ,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAyB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,iBAAe;AAAA,MACf,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,YAAY,gBAAAD,MAAC,0BAAuB;AAAA;AAAA;AAAA,EACvC;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA;AAAA,IAAyB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA;AAAA,IAAyB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,6BAA6BE;AAAA,EACjC;AACF;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE,gBAAAD;AAAA,IAAyB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,GAAG,SAAS,SAAS;AAAA,MAC7D,GAAG;AAAA,MAEH;AAAA;AAAA,QAAU;AAAA,QACX,gBAAAD;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QACd;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE,gBAAAH;AAAA,IAAyB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,MACF;AAAA,MAEA,0BAAAA;AAAA,QAAyB;AAAA,QAAxB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA;AAAA,IAAyB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,wBAAwB;AAAA,EAC/B;AAAA,EACA,GAAG;AACL,GAAmE;AACjE,SACE,gBAAAA;AAAA,IAAyB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,SAAI,WAAU,0EAAyE;AAAA;AAAA,EAC1F;AAEJ;;;ACzJA,SAAS,OAAAI,aAA8B;AACvC,SAAS,SAAAC,QAAO,cAAc;AAC9B,OAAuB;AAmGJ,gBAAAC,OAuEb,QAAAC,cAvEa;AA/FnB,IAAM,qBAAqBC;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,QACN,KAAK;AAAA,QACL,WAAW;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA;AAAA,MAEhB;AAAA,QACE,WAAW;AAAA,QACX,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WACE;AAAA,MACJ;AAAA;AAAA,MAEA;AAAA,QACE,WAAW;AAAA,QACX,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WACE;AAAA,MACJ;AAAA;AAAA,MAEA;AAAA,QACE,WAAW;AAAA,QACX,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WAAW;AAAA,MACb;AAAA;AAAA,MAEA;AAAA,QACE,WAAW;AAAA,QACX,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WACE;AAAA,MACJ;AAAA;AAAA,MAEA;AAAA,QACE,WAAW;AAAA,QACX,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WAAW;AAAA,MACb;AAAA;AAAA,MAEA;AAAA,QACE,WAAW;AAAA,QACX,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WACE;AAAA,MACJ;AAAA;AAAA,MAEA;AAAA,QACE,WAAW;AAAA,QACX,UAAU;AAAA,QACV,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAGA,SAAS,eAAe,EAAE,SAAS,GAA2B;AAC5D,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,WACI,4DACA;AAAA,MACN;AAAA,MAEC,sBAAY,gBAAAA,MAAC,UAAO,WAAU,gCAA+B;AAAA;AAAA,EAChE;AAEJ;AAGA,SAAS,kBAAkB,EAAE,SAAS,GAA2B;AAC/D,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,WACI,4DACA;AAAA,MACN;AAAA,MAEC,sBAAY,gBAAAA,MAACG,QAAA,EAAM,WAAU,qBAAoB;AAAA;AAAA,EACpD;AAEJ;AAiBA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAMC,aACJ,kBAAkB,WAAW,iBAAiB;AAEhD,QAAM,YAAY,gBAAAJ,MAACI,YAAA,EAAU,UAAoB;AAEjD,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAY,WAAW,aAAa;AAAA,MACpC;AAAA,MACA,WAAW;AAAA,QACT,mBAAmB;AAAA,UACjB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,6BAAqB,UAAU;AAAA,QAChC,gBAAAA,OAAC,UAAK,WAAU,0CACb;AAAA,kBACC,gBAAAD,MAAC,UAAK,WAAU,mEACb,gBACH;AAAA,UAEF,gBAAAA,MAAC,UAAK,WAAU,YAAY,UAAS;AAAA,WACvC;AAAA,QACC,qBAAqB,WAAW;AAAA;AAAA;AAAA,EACnC;AAEJ;;;ACzLA,OAAuB;AACvB;AAAA,EACE,mBAAAK;AAAA,EACA,oBAAAC;AAAA,EACA;AAAA,OACK;AAOH,gBAAAC,OA4DA,QAAAC,cA5DA;AAFJ,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,GAAG,MAAM,GAA+B;AAChE,SAAO,gBAAAA,MAAC,QAAG,aAAU,mBAAmB,GAAG,OAAO;AACpD;AAOA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAwB;AACtB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc,WAAW,SAAS;AAAA,MAClC,aAAU;AAAA,MACV,eAAa;AAAA,MACb,WAAW;AAAA,QACT,eAAe;AAAA,UACb,SAAS,WAAW,YAAY;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAgD;AAC9C,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX,MAAK;AAAA,MACL,WAAW,GAAG,0BAA0B,SAAS;AAAA,MAChD,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAACE,kBAAA,EAAgB;AAAA,QACjB,gBAAAF,MAAC,UAAK,WAAU,mBAAkB,sBAAQ;AAAA;AAAA;AAAA,EAC5C;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAAgD;AAC9C,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX,MAAK;AAAA,MACL,WAAW,GAAG,0BAA0B,SAAS;AAAA,MAChD,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,mBAAkB,kBAAI;AAAA,QACtC,gBAAAA,MAACG,mBAAA,EAAiB;AAAA;AAAA;AAAA,EACpB;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,MACX,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,sBAAmB,WAAU,UAAS;AAAA,QACvC,gBAAAA,MAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AAAA,EACtC;AAEJ;;;AClHA,YAAY,uBAAuB;AACnC,OAAuB;AAkBjB,gBAAAI,aAAA;AAdN,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAmB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAmB;AAAA,QAAlB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UACV,OAAO,EAAE,WAAW,eAAe,OAAO,SAAS,EAAE,KAAK;AAAA;AAAA,MAC5D;AAAA;AAAA,EACF;AAEJ;;;AC5BA,SAAS,OAAAC,aAA8B;AACvC,OAAuB;AAyCnB,SAUE,OAAAC,OAVF,QAAAC,cAAA;AArCJ,IAAM,sBAAsBC,MAAI,0CAA0C;AAAA,EACxE,UAAU;AAAA,IACR,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ;AAAA,EACV;AACF,CAAC;AAaD,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AAAA,EACb;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,QAAM,aACJ,UAAU,SACN,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,IAChC,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,cAAc,aAAc,GAAG,CAAC;AAEjE,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oBAAoB,EAAE,OAAO,CAAC,GAAG,SAAS;AAAA,MACxD,MAAK;AAAA,MACL,iBAAe,KAAK,MAAM,UAAU;AAAA,MACpC,iBAAe;AAAA,MACf,iBAAe;AAAA,MACd,GAAG;AAAA,MAGJ;AAAA,wBAAAD,MAAC,SAAI,WAAU,2DAA0D;AAAA,QAEzE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YACV,OAAO,EAAE,OAAO,GAAG,UAAU,IAAI;AAAA;AAAA,QACnC;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC3DA,YAAY,yBAAyB;AACrC,SAAS,cAAAG,mBAAkB;AAC3B,OAAuB;AASnB,gBAAAC,aAAA;AALJ,SAASC,YAAW;AAAA,EAClB;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAD;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,cAAc,SAAS;AAAA,MACpC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAqB;AAAA,QAApB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,0BAAAA,MAACE,aAAA,EAAW,WAAU,iFAAgF;AAAA;AAAA,MACxG;AAAA;AAAA,EACF;AAEJ;;;ACxCA,OAAuB;AACvB,SAAS,wBAAwB;AACjC,YAAY,wBAAwB;AAShC,gBAAAC,aAAA;AALJ,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAA;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB,GAAG;AACL,GAA0D;AACxD,SAAO,gBAAAA,MAAoB,0BAAnB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,wBACC,gBAAAA,MAAC,SAAI,WAAU,6EACb,0BAAAA,MAAC,oBAAiB,WAAU,YAAW,GACzC;AAAA;AAAA,EAEJ;AAEJ;;;ACnDA,OAAuB;AACvB,YAAY,yBAAyB;AAUjC,SAKE,OAAAC,OALF,QAAAC,cAAA;AANJ,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAqB;AAAA,UAApB;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACA,gBAAAA,MAAC,aAAU;AAAA,QACX,gBAAAA,MAAqB,4BAApB,EAA2B;AAAA;AAAA;AAAA,EAC9B;AAEJ;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAyE;AACvE,SACE,gBAAAA;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,cACd;AAAA,QACF,gBAAgB,gBACd;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAqB;AAAA,QAApB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA;AAAA,MACZ;AAAA;AAAA,EACF;AAEJ;;;ACrDA,YAAYE,aAAW;AACvB,SAAS,QAAQ,KAAAC,UAAS;AA+JlB,gBAAAC,OAMF,QAAAC,cANE;AAlHR,SAAS,YAAY;AAAA,EACnB,UAAU;AAAA,EACV,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,WAAW;AAAA,EACX,cAAc,CAAC;AAAA,EACf;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,CAAC,eAAe,gBAAgB,IAAU,iBAAS,YAAY;AACrE,QAAM,CAAC,WAAW,YAAY,IAAU,iBAAS,KAAK;AACtD,QAAM,CAAC,iBAAiB,kBAAkB,IAAU,iBAAS,KAAK;AAClE,QAAM,WAAiB,eAAyB,IAAI;AACpD,QAAM,eAAqB,eAAuB,IAAI;AAEtD,QAAM,eAAe,cAAc;AACnC,QAAM,eAAe,eAAe,YAAY;AAChD,QAAM,WAAW,aAAa,KAAK,EAAE,SAAS;AAC9C,QAAM,eAAe,YAAY,CAAC,aAAa,CAAC;AAEhD,QAAM,cAAoB;AAAA,IACxB,CAAC,SAAiB;AAChB,UAAI,CAAC,aAAc,kBAAiB,IAAI;AACxC,sBAAgB,IAAI;AAAA,IACtB;AAAA,IACA,CAAC,cAAc,aAAa;AAAA,EAC9B;AAEA,QAAM,oBAA0B;AAAA,IAC9B,CAAC,MAA2C;AAC1C,kBAAY,EAAE,OAAO,KAAK;AAC1B,UAAI,EAAE,OAAO,MAAM,KAAK,EAAE,SAAS,KAAK,YAAY,SAAS,GAAG;AAC9D,2BAAmB,IAAI;AAAA,MACzB,OAAO;AACL,2BAAmB,KAAK;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,CAAC,aAAa,YAAY,MAAM;AAAA,EAClC;AAEA,QAAM,gBAAsB;AAAA,IAC1B,CAAC,MAA6C;AAC5C,UAAI,EAAE,QAAQ,SAAS;AACrB,UAAE,eAAe;AACjB,mBAAW,YAAY;AACvB,2BAAmB,KAAK;AAAA,MAC1B,WAAW,EAAE,QAAQ,UAAU;AAC7B,2BAAmB,KAAK;AACxB,iBAAS,SAAS,KAAK;AAAA,MACzB;AAAA,IACF;AAAA,IACA,CAAC,cAAc,QAAQ;AAAA,EACzB;AAEA,QAAM,cAAoB,oBAAY,MAAM;AAC1C,gBAAY,EAAE;AACd,cAAU;AACV,aAAS,SAAS,MAAM;AAAA,EAC1B,GAAG,CAAC,aAAa,OAAO,CAAC;AAEzB,QAAM,oBAA0B,oBAAY,MAAM;AAChD,eAAW,YAAY;AACvB,uBAAmB,KAAK;AAAA,EAC1B,GAAG,CAAC,cAAc,QAAQ,CAAC;AAE3B,QAAM,wBAA8B;AAAA,IAClC,CAACC,WAAkB;AACjB,kBAAYA,MAAK;AACjB,0BAAoBA,MAAK;AACzB,yBAAmB,KAAK;AACxB,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,IACA,CAAC,aAAa,iBAAiB;AAAA,EACjC;AAEA,QAAM,cAAoB,oBAAY,MAAM;AAC1C,QAAI,SAAU;AACd,iBAAa,IAAI;AACjB,QAAI,aAAa,KAAK,EAAE,SAAS,KAAK,YAAY,SAAS,GAAG;AAC5D,yBAAmB,IAAI;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,UAAU,cAAc,YAAY,MAAM,CAAC;AAE/C,QAAM,aAAmB;AAAA,IACvB,CAAC,MAAwB;AAEvB,UAAI,aAAa,SAAS,SAAS,EAAE,aAAqB,EAAG;AAC7D,mBAAa,KAAK;AAClB,yBAAmB,KAAK;AAAA,IAC1B;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,oBAAoB,SAAS,eAAe,eAAe;AACjE,QAAM,mBAAmB,gBAAgB,UAAU;AAEnD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,8CAA8C,SAAS;AAAA,MACrE,QAAQ;AAAA,MAGP;AAAA,iBACC,gBAAAD,MAAC,SAAI,WAAU,gGACZ,iBACH;AAAA,QAIF,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA;AAAA,cAEA,QACI,4DACA,YACE,2DACA;AAAA;AAAA,cAEN,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY;AAAA;AAAA,cAErC,QACI,iCACA,YACE,gCACA;AAAA;AAAA,cAEN;AAAA;AAAA,cAEA,YAAY;AAAA,YACd;AAAA,YAGC;AAAA,sBACC,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT;AAAA,oBACA,QAAQ,+BAA+B,YAAY,oBAAoB;AAAA,kBACzE;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA,cAIF,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,KAAK;AAAA,kBACL,MAAK;AAAA,kBACL,OAAO;AAAA,kBACP,UAAU;AAAA,kBACV,WAAW;AAAA,kBACX,SAAS;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,oBACT;AAAA,oBACA,YAAY;AAAA,kBACd;AAAA;AAAA,cACF;AAAA,cAGC,kBACC,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,WAAU;AAAA,kBACV,cAAW;AAAA,kBACX,UAAU;AAAA,kBAEV,0BAAAA,MAACG,IAAA,EAAE,WAAU,eAAc;AAAA;AAAA,cAC7B,IACE,YAAY,WACd,gBAAAH;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT;AAAA,kBACA,WAAU;AAAA,kBACV,UAAU;AAAA,kBACX;AAAA;AAAA,cAED,IAEA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT;AAAA,kBACA,WAAU;AAAA,kBACV,cAAW;AAAA,kBACX,UAAU;AAAA,kBAEV,0BAAAA,MAAC,UAAO,WAAU,0BAAyB;AAAA;AAAA,cAC7C;AAAA;AAAA;AAAA,QAEJ;AAAA,QAGC,qBACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,QAAQ,+BAA+B;AAAA,YACzC;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QAID,mBAAmB,YAAY,SAAS,KACvC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAET,sBAAY,IAAI,CAAC,YAAY,QAC5B,gBAAAC;AAAA,cAAC;AAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,SAAS,MAAM,sBAAsB,WAAW,KAAK;AAAA,gBACrD,aAAa,CAAC,MAAM,EAAE,eAAe;AAAA,gBACrC,WAAU;AAAA,gBAET;AAAA,6BAAW,QACV,gBAAAD,MAAC,UAAK,WAAU,uIACb,qBAAW,MACd;AAAA,kBAEF,gBAAAA,MAAC,UAAK,WAAU,sGACb,qBAAW,OACd;AAAA;AAAA;AAAA,cAbK,GAAG,WAAW,KAAK,IAAI,GAAG;AAAA,YAcjC,CACD;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACpSA,YAAYI,aAAW;AACvB,SAAS,aAAAC,YAAW,gBAAgB,SAAAC,cAAa;AAuL3C,gBAAAC,OA0DI,QAAAC,cA1DJ;AAzIN,IAAM,0BACE,sBAAmD,IAAI;AAE/D,SAAS,sBAAsB;AAC7B,QAAM,MAAY,mBAAW,uBAAuB;AACpD,MAAI,CAAC,KAAK;AACR,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAuBA,SAAS,iBAAiB;AAAA,EACxB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA,QAAQ;AAAA,EACR,gBAAgB,CAAC;AAAA,EACjB;AAAA,EACA,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU,CAAC;AAAA,EACX,MAAM;AAAA,EACN;AAAA,EACA;AACF,GAA0B;AACxB,QAAM,CAAC,cAAc,eAAe,IAAU,iBAAS,KAAK;AAC5D,QAAM,CAAC,eAAe,gBAAgB,IAAU,iBAAS,YAAY;AACrE,QAAM,CAAC,gBAAgB,iBAAiB,IAChC,iBAAmB,aAAa;AAExC,QAAM,OAAO,kBAAkB;AAC/B,QAAM,UAAgB;AAAA,IACpB,CAAC,SAAkB;AACjB,UAAI,mBAAmB,QAAW;AAChC,uBAAe,IAAI;AAAA,MACrB,OAAO;AACL,wBAAgB,IAAI;AACpB,uBAAe,IAAI;AAAA,MACrB;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,YAAY;AAAA,EAC/B;AAEA,QAAM,QAAQ,mBAAmB;AACjC,QAAM,WAAiB;AAAA,IACrB,CAAC,SAAiB;AAChB,UAAI,oBAAoB,QAAW;AACjC,yBAAiB,IAAI;AAAA,MACvB;AACA,sBAAgB,IAAI;AAAA,IACtB;AAAA,IACA,CAAC,iBAAiB,aAAa;AAAA,EACjC;AAEA,QAAM,SAAS,oBAAoB;AACnC,QAAM,YAAkB;AAAA,IACtB,CAAC,SAAmB;AAClB,UAAI,qBAAqB,QAAW;AAClC,0BAAkB,IAAI;AAAA,MACxB;AACA,uBAAiB,IAAI;AAAA,IACvB;AAAA,IACA,CAAC,kBAAkB,cAAc;AAAA,EACnC;AAEA,QAAM,YAAkB,gBAAQ,MAAM;AACpC,UAAM,MAAM,oBAAI,IAAoB;AACpC,eAAW,OAAO,SAAS;AACzB,UAAI,IAAI,IAAI,OAAO,IAAI,KAAK;AAAA,IAC9B;AACA,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,MAAY;AAAA,IAChB,OAAO;AAAA,MACL;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;AAAA,IACA;AAAA,MACE;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;AAAA,EACF;AAEA,SACE,gBAAAD,MAAC,wBAAwB,UAAxB,EAAiC,OAAO,KACvC,0BAAAA,MAAC,WAAQ,MAAY,cAAc,SAChC,UACH,GACF;AAEJ;AAIA,SAAS,wBAAwB;AAAA,EAC/B;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,MAAM,oBAAoB;AAEhC,QAAM,gBAAgB,MAAM;AAC1B,QAAI,SAAU,QAAO;AAErB,QAAI,IAAI,SAAS,UAAU;AACzB,YAAM,QAAQ,IAAI,UAAU,IAAI,IAAI,KAAK;AACzC,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA,CAAC,SAAS;AAAA,UACZ;AAAA,UAEC,mBAAS,IAAI;AAAA;AAAA,MAChB;AAAA,IAEJ;AAGA,QAAI,IAAI,OAAO,WAAW,GAAG;AAC3B,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAET,cAAI;AAAA;AAAA,MACP;AAAA,IAEJ;AAEA,UAAM,UAAU,IAAI,OAAO,MAAM,GAAG,IAAI,QAAQ;AAChD,UAAM,YAAY,IAAI,OAAO,SAAS,QAAQ;AAE9C,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,WAAU;AAAA,QAET;AAAA,kBAAQ,IAAI,CAAC,MACZ,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,SAAQ;AAAA,cACR,WAAU;AAAA,cAEV;AAAA,gCAAAD,MAAC,UAAK,WAAU,0BACb,cAAI,UAAU,IAAI,CAAC,KAAK,GAC3B;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,UAAU;AAAA,oBACV,cAAY,UAAU,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC;AAAA,oBAC/C,WAAU;AAAA,oBACV,eAAe,CAAC,MAAM,EAAE,eAAe;AAAA,oBACvC,SAAS,CAAC,MAAM;AACd,wBAAE,gBAAgB;AAClB,0BAAI,UAAU,IAAI,OAAO,OAAO,CAAC,QAAQ,QAAQ,CAAC,CAAC;AAAA,oBACrD;AAAA,oBAEA,0BAAAA,MAACE,QAAA,EAAM,WAAU,UAAS;AAAA;AAAA,gBAC5B;AAAA;AAAA;AAAA,YAnBK;AAAA,UAoBP,CACD;AAAA,UACA,YAAY,KACX,gBAAAD,OAAC,SAAM,SAAQ,WAAU,WAAU,yBAAwB;AAAA;AAAA,YACvD;AAAA,YAAU;AAAA,aACd;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,UAAU,IAAI;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA,IAAI,SAAS,cAAc;AAAA,QAC3B;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,sBAAc;AAAA,QACf,gBAAAD,MAAC,kBAAe,WAAU,8BAA6B;AAAA;AAAA;AAAA,EACzD;AAEJ;AAIA,SAAS,wBAAwB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,GAEG;AACD,QAAM,MAAM,oBAAoB;AAEhC,QAAM,iBAAuB,gBAAQ,MAAM;AACzC,QAAI,IAAI,QAAQ,WAAW,EAAG,QAAO;AACrC,UAAM,SAAS,oBAAI,IAAsC;AACzD,eAAW,OAAO,IAAI,SAAS;AAC7B,YAAM,MAAM,IAAI,SAAS;AACzB,UAAI,CAAC,OAAO,IAAI,GAAG,EAAG,QAAO,IAAI,KAAK,CAAC,CAAC;AACxC,aAAO,IAAI,GAAG,EAAG,KAAK,GAAG;AAAA,IAC3B;AACA,WAAO;AAAA,EACT,GAAG,CAAC,IAAI,OAAO,CAAC;AAEhB,QAAM,kBAAkB,MAAM;AAC5B,QAAI,CAAC,eAAgB,QAAO;AAC5B,UAAM,UAAU,MAAM,KAAK,eAAe,QAAQ,CAAC;AACnD,QAAI,QAAQ,WAAW,KAAK,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI;AAChD,aAAO,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QACxB,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,IAAI;AAAA,UACX,UAAU,IAAI;AAAA,UAEb,cAAI;AAAA;AAAA,QAJA,IAAI;AAAA,MAKX,CACD;AAAA,IACH;AACA,WAAO,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,MAC9B,gBAAAA,MAAC,yBAAkC,SAAS,SAAS,QAClD,eAAK,IAAI,CAAC,QACT,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO,IAAI;AAAA,QACX,UAAU,IAAI;AAAA,QAEb,cAAI;AAAA;AAAA,MAJA,IAAI;AAAA,IAKX,CACD,KATyB,KAU5B,CACD;AAAA,EACH;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8CAA8C,SAAS;AAAA,MACrE,OAAM;AAAA,MACL,GAAG;AAAA,MAEJ,0BAAAC,OAAC,WACE;AAAA,YAAI,cACH,gBAAAD,MAAC,gBAAa,aAAa,IAAI,mBAAmB;AAAA,QAEpD,gBAAAC,OAAC,eACC;AAAA,0BAAAD,MAAC,gBAAc,qBAAU;AAAA,UACxB,YAAY,gBAAgB;AAAA,WAC/B;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAIA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGG;AACD,QAAM,MAAM,oBAAoB;AAEhC,QAAM,aACJ,IAAI,SAAS,WACT,IAAI,UAAU,QACd,IAAI,OAAO,SAAS,KAAK;AAE/B,QAAM,eAAe,MAAM;AACzB,QAAI,SAAU;AACd,QAAI,IAAI,SAAS,UAAU;AACzB,UAAI,SAAS,UAAU,IAAI,QAAQ,KAAK,KAAK;AAC7C,UAAI,QAAQ,KAAK;AAAA,IACnB,OAAO;AACL,UAAI;AAAA,QACF,aACI,IAAI,OAAO,OAAO,CAAC,MAAM,MAAM,KAAK,IACpC,CAAC,GAAG,IAAI,QAAQ,KAAK;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,IAAI,SAAS,cAAc;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,iBAAe,YAAY;AAAA,MAC1B,GAAG;AAAA,MAEH;AAAA,YAAI,SAAS,cACZ,gBAAAD,MAAC,UAAK,WAAU,2DACd,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,aACI,uCACA;AAAA,YACN;AAAA,YAEC,wBAAc,gBAAAA,MAACG,YAAA,EAAU,WAAU,gBAAe;AAAA;AAAA,QACrD,GACF;AAAA,QAEF,gBAAAH,MAAC,UAAK,WAAU,mBAAmB,UAAS;AAAA,QAC3C,IAAI,SAAS,YAAY,cACxB,gBAAAA,MAAC,UAAK,WAAU,4DACd,0BAAAA,MAACG,YAAA,EAAU,WAAU,UAAS,GAChC;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAIA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAA8C;AAC5C,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACN;AAEJ;AAIA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAA8C;AAC5C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AChdA,OAAuB;AACvB,YAAY,qBAAqB;AACjC,SAAS,aAAAI,YAAW,mBAAAC,kBAAiB,qBAAqB;AAOjD,gBAAAC,OAwBL,QAAAC,cAxBK;AAHT,SAAS,OAAO;AAAA,EACd,GAAG;AACL,GAAsD;AACpD,SAAO,gBAAAD,MAAiB,sBAAhB,EAAqB,aAAU,UAAU,GAAG,OAAO;AAC7D;AAEA,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAiB,uBAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAiB,uBAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAD,MAAiB,sBAAhB,EAAqB,SAAO,MAC3B,0BAAAA,MAACE,kBAAA,EAAgB,WAAU,qBAAoB,GACjD;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAAyD;AACvD,SACE,gBAAAF,MAAiB,wBAAhB,EACC,0BAAAC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,aAAa,YACX;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,wBAAqB;AAAA,QACtB,gBAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,aAAa,YACX;AAAA,YACJ;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,gBAAAA,MAAC,0BAAuB;AAAA;AAAA;AAAA,EAC1B,GACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsD;AACpD,SACE,gBAAAC;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,8DACd,0BAAAA,MAAiB,+BAAhB,EACC,0BAAAA,MAACG,YAAA,EAAU,WAAU,UAAS,GAChC,GACF;AAAA,QACA,gBAAAH,MAAiB,0BAAhB,EAA0B,UAAS;AAAA;AAAA;AAAA,EACtC;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAA2D;AACzD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iDAAiD,SAAS;AAAA,MACvE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,GAAG;AACL,GAAgE;AAC9D,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,iBAAc,WAAU,UAAS;AAAA;AAAA,EACpC;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAACE,kBAAA,EAAgB,WAAU,UAAS;AAAA;AAAA,EACtC;AAEJ;;;ACzKA,OAAuB;AACvB,YAAY,wBAAwB;AAWhC,gBAAAE,aAAA;AAPJ,SAASC,WAAU;AAAA,EACjB;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AAAA,EACb,GAAG;AACL,GAAyD;AACvD,SACE,gBAAAD;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,YAAY,oBAAoB;AAChC,SAAS,SAAAE,cAAa;AACtB,OAAuB;AAKd,gBAAAC,OAoEC,QAAAC,cApED;AADT,SAAS,MAAM,EAAE,GAAG,MAAM,GAAqD;AAC7E,SAAO,gBAAAD,MAAgB,qBAAf,EAAoB,aAAU,SAAS,GAAG,OAAO;AAC3D;AAEA,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAAwD;AACtD,SAAO,gBAAAA,MAAgB,wBAAf,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,WAAW;AAAA,EAClB,GAAG;AACL,GAAsD;AACpD,SAAO,gBAAAA,MAAgB,sBAAf,EAAqB,aAAU,eAAe,GAAG,OAAO;AAClE;AAEA,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAAuD;AACrD,SAAO,gBAAAA,MAAgB,uBAAf,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;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,kBAAkB;AAAA,EAClB,GAAG;AACL,GAGG;AACD,SACE,gBAAAC,OAAC,eACC;AAAA,oBAAAD,MAAC,gBAAa;AAAA,IACd,gBAAAC;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,UACA,mBACC,gBAAAA,OAAgB,sBAAf,EAAqB,WAAU,8OAC9B;AAAA,4BAAAD,MAACE,QAAA,EAAM,WAAU,UAAS;AAAA,YAC1B,gBAAAF,MAAC,UAAK,WAAU,WAAU,mBAAK;AAAA,aACjC;AAAA;AAAA;AAAA,IAEJ;AAAA,KACF;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAA;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,gBAAAA;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA;AAAA,IAAgB;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACjIA,SAAS,QAAAG,aAAY;AACrB,SAAS,OAAAC,aAA8B;AACvC,SAAS,qBAAqB;AAC9B,YAAYC,aAAW;;;ACDnB,gBAAAC,aAAA;AAFJ,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACRA,YAAY,sBAAsB;AAClC,SAAS,KAAAC,UAAS;AAClB,YAAYC,aAAW;AASnB,gBAAAC,OAgFE,QAAAC,cAhFF;AALJ,SAAS,gBAAgB;AAAA,EACvB,gBAAgB;AAAA,EAChB,GAAG;AACL,GAA2D;AACzD,SACE,gBAAAD;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,sBAA4B,sBAAmC,IAAI;AAEzE,SAASE,SAAQ;AAAA,EACf,aAAa;AAAA,EACb,GAAG;AACL,GAGG;AACD,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,MAAM,eAAe,KAAK;AAEjE,MAAI,CAAC,YAAY;AACf,WACE,gBAAAF,MAAC,mBACC,0BAAAA,MAAkB,uBAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO,GACxD;AAAA,EAEJ;AAEA,QAAM,QAAQ,MAAM;AAClB,YAAQ,KAAK;AACb,UAAM,eAAe,KAAK;AAAA,EAC5B;AAEA,SACE,gBAAAA,MAAC,mBACC,0BAAAA,MAAC,oBAAoB,UAApB,EAA6B,OAAO,OACnC,0BAAAA;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,MAAM,MAAM,QAAQ;AAAA,MACpB,cAAc,YAAU;AACtB,YAAI,QAAQ;AACV,kBAAQ,IAAI;AACZ,gBAAM,eAAe,IAAI;AAAA,QAC3B;AAAA,MAEF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF,GACF;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB,GAAG;AACL,GAA0D;AACxD,SAAO,gBAAAA,MAAkB,0BAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAcA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,aAAa;AAAA,EACb,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,SACE,gBAAAA,MAAkB,yBAAjB,EACC,0BAAAC;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,CAAC,aACA,gBAAAD;AAAA,UAAkB;AAAA,UAAjB;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ,GACF;AAEJ;AAaA,IAAM,sBAGF;AAAA,EACF,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AACF;AAgCA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,GAA4B;AAC1B,QAAM,QAAc,mBAAW,mBAAmB;AAElD,QAAM,gBAAgB,MAAM;AAC1B,YAAQ;AACR,gBAAY;AAAA,EACd;AAEA,QAAM,SAAS,oBAAoB,OAAO,KAAK,oBAAoB;AAEnE,SACE,gBAAAA,MAAkB,yBAAjB,EACC,0BAAAC;AAAA,IAAkB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAI,eAAe;AAAA,QAClB,sBAAsB;AAAA,MACxB;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,OAAO;AAAA,cACP,OAAO;AAAA,cACP;AAAA,YACF;AAAA,YAEC;AAAA,sBACC,gBAAAD,MAAC,UAAK,WAAU,mEACb,gBACH;AAAA,cAEF,gBAAAC,OAAC,SAAI,WAAU,sCACZ;AAAA,2BACC,gBAAAD,MAAC,OAAE,WAAU,mCAAmC,mBAAQ;AAAA,gBAE1D,gBAAAA,MAAC,SAAI,WAAU,iCAAiC,UAAS;AAAA,iBAC3D;AAAA,cACC,eACC,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,WAAW;AAAA,oBACT;AAAA,oBACA,OAAO;AAAA,kBACT;AAAA,kBACA,cAAW;AAAA,kBAEX,0BAAAA,MAACG,IAAA,EAAE,WAAU,YAAW;AAAA;AAAA,cAC1B;AAAA;AAAA;AAAA,QAEJ;AAAA,QACC,CAAC,aACA,gBAAAH;AAAA,UAAkB;AAAA,UAAjB;AAAA,YACC,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,WAAW,GAAG,OAAO,OAAO,cAAc;AAAA;AAAA,QAC5C;AAAA;AAAA;AAAA,EAEJ,GACF;AAEJ;;;AF5HQ,gBAAAI,OAkEE,QAAAC,cAlEF;AAxGR,IAAM,sBAAsB;AAC5B,IAAM,yBAAyB,KAAK,KAAK,KAAK;AAC9C,IAAM,gBAAgB;AACtB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,4BAA4B;AAYlC,IAAM,iBAAuB,sBAA0C,IAAI;AAE3E,SAAS,aAAa;AACpB,QAAM,UAAgB,mBAAW,cAAc;AAC/C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO;AACT;AAEA,SAAS,gBAAgB;AAAA,EACvB,cAAc;AAAA,EACd,MAAM;AAAA,EACN,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAIG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,YAAY,aAAa,IAAU,iBAAS,KAAK;AAIxD,QAAM,CAAC,OAAO,QAAQ,IAAU,iBAAS,WAAW;AACpD,QAAM,OAAO,YAAY;AACzB,QAAM,UAAgB;AAAA,IACpB,CAAC,UAAmD;AAClD,YAAM,YAAY,OAAO,UAAU,aAAa,MAAM,IAAI,IAAI;AAC9D,UAAI,aAAa;AACf,oBAAY,SAAS;AAAA,MACvB,OAAO;AACL,iBAAS,SAAS;AAAA,MACpB;AAGA,eAAS,SAAS,GAAG,mBAAmB,IAAI,SAAS,qBAAqB,sBAAsB;AAAA,IAClG;AAAA,IACA,CAAC,aAAa,IAAI;AAAA,EACpB;AAGA,QAAM,gBAAsB,oBAAY,MAAM;AAC5C,WAAO,WAAW,cAAc,CAAAC,UAAQ,CAACA,KAAI,IAAI,QAAQ,CAAAA,UAAQ,CAACA,KAAI;AAAA,EACxE,GAAG,CAAC,UAAU,SAAS,aAAa,CAAC;AAGrC,EAAM,kBAAU,MAAM;AACpB,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UACE,MAAM,QAAQ,8BACb,MAAM,WAAW,MAAM,UACxB;AACA,cAAM,eAAe;AACrB,sBAAc;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,iBAAiB,WAAW,aAAa;AAChD,WAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,EAClE,GAAG,CAAC,aAAa,CAAC;AAIlB,QAAM,QAAQ,OAAO,aAAa;AAElC,QAAM,eAAqB;AAAA,IACzB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,OAAO,MAAM,SAAS,UAAU,YAAY,eAAe,aAAa;AAAA,EAC3E;AAEA,SACE,gBAAAF,MAAC,eAAe,UAAf,EAAwB,OAAO,cAC9B,0BAAAA,MAAC,mBAAgB,eAAe,GAC9B,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,OACE;AAAA,QACE,mBAAmB;AAAA,QACnB,wBAAwB;AAAA,QACxB,GAAG;AAAA,MACL;AAAA,MAEF,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH,GACF,GACF;AAEJ;AAEA,SAAS,QAAQ;AAAA,EACf,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAIG;AACD,QAAM,EAAE,UAAU,OAAO,YAAY,cAAc,IAAI,WAAW;AAElE,MAAI,gBAAgB,QAAQ;AAC1B,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,MAAI,UAAU;AACZ,WACE,gBAAAA,MAAC,SAAM,MAAM,YAAY,cAAc,eAAgB,GAAG,OACxD,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,gBAAa;AAAA,QACb,aAAU;AAAA,QACV,eAAY;AAAA,QACZ,WAAU;AAAA,QACV,OACE;AAAA,UACE,mBAAmB;AAAA,QACrB;AAAA,QAEF;AAAA,QAEA;AAAA,0BAAAA,OAAC,eAAY,WAAU,WACrB;AAAA,4BAAAD,MAAC,cAAW,qBAAO;AAAA,YACnB,gBAAAA,MAAC,oBAAiB,0CAA4B;AAAA,aAChD;AAAA,UACA,gBAAAA,MAAC,SAAI,WAAU,+BAA+B,UAAS;AAAA;AAAA;AAAA,IACzD,GACF;AAAA,EAEJ;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,cAAY;AAAA,MACZ,oBAAkB,UAAU,cAAc,cAAc;AAAA,MACxD,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,aAAU;AAAA,MAGV;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA,YAAY,cAAc,YAAY,UAClC,qFACA;AAAA,YACN;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA,SAAS,SACL,mFACA;AAAA;AAAA,cAEJ,YAAY,cAAc,YAAY,UAClC,6FACA;AAAA,cACJ;AAAA,YACF;AAAA,YACC,GAAG;AAAA,YAEJ,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,gBAAa;AAAA,gBACb,aAAU;AAAA,gBACV,WAAU;AAAA,gBAET;AAAA;AAAA,YACH;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,cAAc,IAAI,WAAW;AAErC,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,gBAAa;AAAA,MACb,aAAU;AAAA,MACV,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAW,GAAG,UAAU,SAAS;AAAA,MACjC,SAAS,WAAS;AAChB,kBAAU,KAAK;AACf,sBAAc;AAAA,MAChB;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,iBAAc;AAAA,QACf,gBAAAA,MAAC,UAAK,WAAU,WAAU,4BAAc;AAAA;AAAA;AAAA,EAC1C;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAmC;AAC5E,QAAM,EAAE,cAAc,IAAI,WAAW;AAErC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,gBAAa;AAAA,MACb,aAAU;AAAA,MACV,cAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,OAAM;AAAA,MACN,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC3E,SACE,gBAAAA;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,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAuC;AACrC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC9D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,SACE,gBAAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC5E,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAwD;AACtD,QAAM,OAAO,UAAUI,QAAO;AAE9B,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAA2D;AACzD,QAAM,OAAO,UAAUI,QAAO;AAE9B,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,kBAAkB,SAAS;AAAA,MACxC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAA+B;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC5E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,4BAA4BK;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,SAAS,kBAAkB;AAAA,EACzB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAIoD;AAClD,QAAM,OAAO,UAAUD,QAAO;AAC9B,QAAM,EAAE,UAAU,MAAM,IAAI,WAAW;AAEvC,QAAM,SACJ,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,aAAW;AAAA,MACX,eAAa;AAAA,MACb,WAAW,GAAG,0BAA0B,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,MACpE,GAAG;AAAA;AAAA,EACN;AAGF,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,YAAY,UAAU;AAC/B,cAAU;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,SACE,gBAAAC,OAACK,UAAA,EACC;AAAA,oBAAAN,MAAC,kBAAe,SAAO,MAAE,kBAAO;AAAA,IAChC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,QAAQ,UAAU,eAAe;AAAA,QAChC,GAAG;AAAA;AAAA,IACN;AAAA,KACF;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,UAAU;AAAA,EACV,cAAc;AAAA,EACd,GAAG;AACL,GAGG;AACD,QAAM,OAAO,UAAUI,QAAO;AAE9B,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eACE;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAEG;AAED,QAAM,QAAc,gBAAQ,MAAM;AAChC,WAAO,GAAG,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,IAAI,EAAE;AAAA,EAC/C,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,+CAA+C,SAAS;AAAA,MACrE,GAAG;AAAA,MAEH;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,gBAAa;AAAA;AAAA,QACf;AAAA,QAEF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,gBAAa;AAAA,YACb,OACE;AAAA,cACE,oBAAoB;AAAA,YACtB;AAAA;AAAA,QAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,gCAAgC,SAAS;AAAA,MACtD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B,UAAU;AAAA,EACV,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAIG;AACD,QAAM,OAAO,UAAUI,QAAO;AAE9B,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,aAAW;AAAA,MACX,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB,SAAS,QAAQ;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AGxrBA,YAAYO,aAAW;AACvB,YAAY,qBAAqB;AAuB7B,SAkBI,OAAAC,OAlBJ,QAAAC,cAAA;AAnBJ,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AAAA,EACN,GAAG;AACL,GAAsD;AACpD,QAAM,UAAgB;AAAA,IACpB,MACE,MAAM,QAAQ,KAAK,IACf,QACA,MAAM,QAAQ,YAAY,IACxB,eACA,CAAC,KAAK,GAAG;AAAA,IACjB,CAAC,OAAO,cAAc,KAAK,GAAG;AAAA,EAChC;AAEA,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,YACF;AAAA,YAEA,0BAAAA;AAAA,cAAiB;AAAA,cAAhB;AAAA,gBACC,aAAU;AAAA,gBACV,WAAW;AAAA,kBACT;AAAA,gBACF;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACC,MAAM,KAAK,EAAE,QAAQ,QAAQ,OAAO,GAAG,CAAC,GAAG,UAC1C,gBAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,aAAU;AAAA,YAEV,WAAU;AAAA;AAAA,UADL;AAAA,QAEP,CACD;AAAA;AAAA;AAAA,EACH;AAEJ;;;AC1DA,OAAuB;;;ACFvB,YAAYE,aAAW;AAiBhB,SAAS,cAAc,OAAwB;AACpD,QAAM,YAAkB;AAAA,IACtB,CAAC,kBAA8B;AAC7B,YAAM,OAAO,OAAO,WAAW,KAAK;AAEpC,UAAI,KAAK,kBAAkB;AACzB,aAAK,iBAAiB,UAAU,aAAa;AAC7C,eAAO,MAAM,KAAK,oBAAoB,UAAU,aAAa;AAAA,MAC/D;AACA,WAAK,YAAY,aAAa;AAC9B,aAAO,MAAM,KAAK,eAAe,aAAa;AAAA,IAChD;AAAA,IACA,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,cAAoB;AAAA,IACxB,MAAM,OAAO,WAAW,KAAK,EAAE;AAAA,IAC/B,CAAC,KAAK;AAAA,EACR;AAGA,QAAM,oBAA0B,oBAAY,MAAM,OAAO,CAAC,CAAC;AAE3D,SAAa,6BAAqB,WAAW,aAAa,iBAAiB;AAC7E;;;ADTI,SAsHA,YAAAC,WAtHA,OAAAC,aAAA;AAJJ,IAAM,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,MAAwB;AAChE,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA,MAAC,UAAQ,GAAG,OAAQ,UAAS,IAE7B,gBAAAA,MAAC,UAAQ,GAAG,OAAQ,UAAS;AAEjC;AAKA,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,iBAAiB,mBAAmB;AAAA,MACpC,iBAAiB,mBAAmB;AAAA,MAEnC;AAAA;AAAA,EACH,IAEA,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,iBAAiB,mBAAmB;AAAA,MACpC;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAOA,IAAM,yBAAyB,CAAC;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,MAAmC;AACjC,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA,MAAC,qBAAmB,GAAG,OAAQ,UAAS,IAExC,gBAAAA,MAAC,qBAAmB,GAAG,OAAQ,UAAS;AAE5C;AAKA,IAAM,oBAAoB,CAAC,EAAE,UAAU,GAAG,MAAM,MAA8B;AAC5E,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA,MAAC,gBAAc,GAAG,OAAQ,UAAS,IAEnC,gBAAAA,MAAC,gBAAc,GAAG,OAAQ,UAAS;AAEvC;AAKA,IAAM,mBAAmB,CAAC,EAAE,UAAU,GAAG,MAAM,MAA6B;AAC1E,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA,MAAC,eAAa,GAAG,OAAQ,UAAS,IAElC,gBAAAA,MAAC,eAAa,GAAG,OAAQ,UAAS;AAEtC;AAKA,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA,MAAC,iBAAe,GAAG,OAAQ,UAAS,IAEpC,gBAAAA,MAAC,iBAAe,GAAG,OAAQ,UAAS;AAExC;AAKA,IAAM,oBAAoB,CAAC,EAAE,UAAU,GAAG,MAAM,MAA8B;AAC5E,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA,MAAC,gBAAc,GAAG,OAAQ,UAAS,IAEnC,gBAAAA,MAAC,gBAAc,GAAG,OAAQ,UAAS;AAEvC;AAKA,IAAM,mBAAmB,CAAC,EAAE,UAAU,GAAG,MAAM,MAA6B;AAC1E,QAAM,WAAW,cAAc,oBAAoB;AAEnD,SAAO,WACL,gBAAAA,MAAAD,WAAA,EACE,0BAAAC,MAAC,eAAa,GAAG,OAAQ,UAAS,GACpC,IAEA,gBAAAA,MAAC,eAAa,GAAG,OAAQ,UAAS;AAEtC;;;AE1JA,SAAS,aAAa,MAAM,qBAAqB;AACjD,SAAS,gBAAgB;AACzB,SAAS,WAAW,QAAQ,aAAgC;AAG1D,gBAAAC,aAAA;AADF,IAAM,cAAc,CAAC,SACnB,gBAAAA,MAAC,UAAK,WAAU,mEACb,gBACH;AAGF,IAAM,UAAU,CAAC,EAAE,GAAG,MAAM,MAAoB;AAC9C,QAAM,EAAE,QAAQ,SAAS,IAAI,SAAS;AAEtC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAU;AAAA,MACV,OAAO;AAAA,QACL,MAAM,YAAY,gBAAAA,MAAC,QAAK,CAAE;AAAA,QAC1B,OAAO,YAAY,gBAAAA,MAAC,iBAAc,CAAE;AAAA,QACpC,SAAS,YAAY,gBAAAA,MAAC,eAAY,CAAE;AAAA,MACtC;AAAA,MACA,cAAc;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,UACV,OACE;AAAA,UACF,OAAO;AAAA,UACP,aAAa;AAAA,UACb,MAAM;AAAA,UACN,OACE;AAAA,UACF,SACE;AAAA,QACJ;AAAA,MACF;AAAA,MACA,OACE;AAAA,QACE,WAAW;AAAA,MACb;AAAA,MAED,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC5CA,YAAY,qBAAqB;AACjC,OAAuB;AAiBjB,gBAAAC,aAAA;AAbN,SAAS,OAAO;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAAsD;AACpD,SACE,gBAAAA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,UACF;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;AC1BA,OAAuB;AAUjB,gBAAAC,aAAA;AANN,SAAS,MAAM,EAAE,WAAW,GAAG,MAAM,GAAkC;AACrE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MAEV,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,UACvD,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mBAAmB,SAAS;AAAA,MACzC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAkC;AACzE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAA+B;AACrE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AACtE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AACtE,SACE,gBAAAA;AAAA,IAAC;AAAA;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,GAAG;AACL,GAAoC;AAClC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACtGA,YAAY,mBAAmB;AAC/B,SAAS,OAAAC,aAA8B;AACvC,YAAYC,aAAW;AA2HjB,gBAAAC,OAwBF,QAAAC,cAxBE;AAjHN,IAAM,cAAoB,sBAAgC;AAAA,EACxD,aAAa;AACf,CAAC;AAID,SAAS,gBACP,SACA,aACA;AACA,QAAM,CAAC,OAAO,QAAQ,IAAU,iBAA8B;AAAA,IAC5D,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,QAAM,qBAA2B,eAAO,IAAI;AAE5C,QAAM,UAAgB,oBAAY,MAAM;AACtC,UAAM,OAAO,QAAQ;AACrB,QAAI,CAAC,KAAM;AAEX,0BAAsB,MAAM;AAC1B,YAAM,WAAW,KAAK;AAAA,QACpB;AAAA,MACF;AACA,UAAI,CAAC,SAAU;AAEf,YAAM,eAAe,mBAAmB;AAExC,UAAI,gBAAgB,cAAc;AAChC,iBAAS;AAAA,UACP,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,OAAO,SAAS;AAAA,UAChB,WAAW,cAAc,SAAS,UAAU;AAAA,UAC5C,YAAY,eACR,SACA;AAAA,UACJ,YAAY;AAAA,UACZ,SAAS;AAAA,QACX,CAAC;AAAA,MACH,OAAO;AACL,iBAAS;AAAA,UACP,UAAU;AAAA,UACV,MAAM;AAAA,UACN,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,QAAQ,SAAS;AAAA,UACjB,WAAW,cAAc,SAAS,SAAS;AAAA,UAC3C,YAAY,eACR,SACA;AAAA,UACJ,YAAY;AAAA,UACZ,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAEA,UAAI,cAAc;AAChB,2BAAmB,UAAU;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,SAAS,WAAW,CAAC;AAEzB,EAAM,kBAAU,MAAM;AACpB,UAAM,OAAO,QAAQ;AACrB,QAAI,CAAC,KAAM;AAGX,YAAQ;AAGR,UAAM,mBAAmB,IAAI,iBAAiB,MAAM;AAClD,cAAQ;AAAA,IACV,CAAC;AACD,qBAAiB,QAAQ,MAAM;AAAA,MAC7B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,iBAAiB,CAAC,YAAY;AAAA,MAC9B,WAAW;AAAA,IACb,CAAC;AAGD,UAAM,iBAAiB,IAAI,eAAe,MAAM;AAC9C,cAAQ;AAAA,IACV,CAAC;AACD,mBAAe,QAAQ,IAAI;AAE3B,WAAO,MAAM;AACX,uBAAiB,WAAW;AAC5B,qBAAe,WAAW;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,SAAS,OAAO,CAAC;AAErB,SAAO,EAAE,MAAM;AACjB;AAIA,SAAS,KAAK;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAoD;AAClD,QAAM,MAAY;AAAA,IAChB,OAAO,EAAE,aAAa,eAAe,aAAa;AAAA,IAClD,CAAC,WAAW;AAAA,EACd;AAEA,SACE,gBAAAD,MAAC,YAAY,UAAZ,EAAqB,OAAO,KAC3B,0BAAAA;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT,gBAAgB,aAAa,wBAAwB;AAAA,QACrD;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAIA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAoD;AAClD,QAAM,UAAgB,eAAuB,IAAI;AACjD,QAAM,EAAE,YAAY,IAAU,mBAAW,WAAW;AACpD,QAAM,EAAE,OAAO,eAAe,IAAI,gBAAgB,SAAS,WAAW;AAEtE,SACE,gBAAAC;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,KAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA;AAAA;AAAA,QAGA,gBAAgB,aACZ,sEACA;AAAA,QACJ;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,cAAM;AAAA,QACP,gBAAAD,MAAC,UAAK,aAAU,kBAAiB,OAAO,gBAAgB;AAAA;AAAA;AAAA,EAC1D;AAEJ;AAIA,IAAM,sBAAsBE;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,aAAa;AAAA,QACX,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB,EAAE,aAAa,cAAc,MAAM,MAAM,OAAO,eAAe;AAAA,MAC/D,EAAE,aAAa,cAAc,MAAM,MAAM,OAAO,eAAe;AAAA,IACjE;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAMA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,QAAM,EAAE,YAAY,IAAU,mBAAW,WAAW;AAEpD,SACE,gBAAAF;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oBAAoB,EAAE,MAAM,YAAY,CAAC,GAAG,SAAS;AAAA,MAClE,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,gBAAgB,aACZ,uBACA;AAAA,UACN;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAIA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE,gBAAAA;AAAA,IAAe;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ;;;AChPA;AAAA,EACE,iBAAiB;AAAA,OAEZ;AAIH,gBAAAG,aAAA;AAFJ,SAAS,cAAc,EAAE,UAAU,GAAG,MAAM,GAAuB;AACjE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,cAAa;AAAA,MACb,cAAY;AAAA,MACZ,2BAAyB;AAAA,MACxB,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACjBA,SAAS,SAAS,MAAM,WAAW;AACnC,SAAS,YAAAC,iBAAgB;AACzB,OAAuB;AAkBf,SACE,OAAAC,OADF,QAAAC,cAAA;AATR,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,SAAS,IAAIC,UAAS;AAE9B,SACE,gBAAAD,OAAC,gBACC;AAAA,oBAAAD,MAAC,uBAAoB,SAAO,MAC1B,0BAAAC,OAAC,UAAO,SAAQ,WAAU,MAAK,QAAO,WAAuB,GAAG,OAC9D;AAAA,sBAAAD,MAAC,OAAI,WAAU,yEAAwE;AAAA,MACvF,gBAAAA,MAAC,QAAK,WAAU,iFAAgF;AAAA,MAChG,gBAAAA,MAAC,UAAK,WAAU,WAAU,0BAAY;AAAA,OACxC,GACF;AAAA,IACA,gBAAAC,OAAC,uBAAoB,OAAM,OACzB;AAAA,sBAAAA,OAAC,oBAAiB,SAAS,MAAM,SAAS,OAAO,GAC/C;AAAA,wBAAAD,MAAC,OAAI,WAAU,UAAS;AAAA,QAAE;AAAA,SAE5B;AAAA,MACA,gBAAAC,OAAC,oBAAiB,SAAS,MAAM,SAAS,MAAM,GAC9C;AAAA,wBAAAD,MAAC,QAAK,WAAU,UAAS;AAAA,QAAE;AAAA,SAE7B;AAAA,MACA,gBAAAC,OAAC,oBAAiB,SAAS,MAAM,SAAS,QAAQ,GAChD;AAAA,wBAAAD,MAAC,WAAQ,WAAU,UAAS;AAAA,QAAE;AAAA,SAEhC;AAAA,OACF;AAAA,KACF;AAEJ;;;AC3CA,OAAkC;AAClC,SAAS,aAAa;AACtB,YAAYG,aAAW;AAuKb,SAiBI,OAAAC,OAjBJ,QAAAC,cAAA;AA3JV,IAAM,0BAAsD;AAAA,EAC1D,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AACZ;AAEA,SAAS,eAAe,IAAyB;AAC/C,SAAO,OAAO;AAChB;AAEA,SAAS,WACP,MACA,aAAyB,OACjB;AACR,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,EAAE,OAAO,QAAQ,IAAI;AAC3B,QAAM,MAAM,OAAO,KAAK,EAAE,SAAS,GAAG,GAAG;AACzC,QAAM,IAAI,OAAO,OAAO,EAAE,SAAS,GAAG,GAAG;AACzC,QAAM,MAAM,QAAQ,MAAM;AAC1B,QAAM,OAAO,OAAO,GAAG,EAAE,SAAS,GAAG,GAAG;AACxC,QAAM,SAAS,SAAS,KAAK,OAAO;AAEpC,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,aAAO,GAAG,GAAG,IAAI,CAAC;AAAA,IACpB,KAAK;AACH,aAAO,GAAG,GAAG,IAAI,CAAC,IAAI,OAAO,YAAY,CAAC;AAAA,IAC5C,KAAK;AACH,aAAO,GAAG,GAAG,IAAI,CAAC,IAAI,MAAM;AAAA,IAC9B,KAAK;AAAA,IACL;AACE,aAAO,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM;AAAA,EACjC;AACF;AAEA,SAAS,eAAe,OAAe,YAAgC;AACrE,MAAI,eAAe,UAAU,EAAG,QAAO;AACvC,SAAO,QAAQ,MAAM;AACvB;AAEA,SAAS,UAAU,OAA4B;AAC7C,SAAO,SAAS,KAAK,OAAO;AAC9B;AAqBO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACjB,QAAM,sBAAsB,eAAe,wBAAwB,UAAU;AAE7E,QAAM,eAAqB,gBAAQ,MAAM;AACvC,QAAI,CAAC,KAAM,QAAO;AAClB,QAAI,cAAe,QAAO,cAAc,IAAI;AAC5C,WAAO,WAAW,MAAM,UAAU;AAAA,EACpC,GAAG,CAAC,MAAM,eAAe,UAAU,CAAC;AAEpC,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAE5C,QAAM,WAAiB,eAAuB,IAAI;AAClD,QAAM,aAAmB,eAAuB,IAAI;AACpD,QAAM,YAAkB,eAAuB,IAAI;AAEnD,QAAM,mBAAyB,oBAAY,MAAM;AAC/C,0BAAsB,MAAM;AAC1B,iBAAW,OAAO,CAAC,UAAU,YAAY,SAAS,GAAG;AACnD,cAAM,YAAY,IAAI;AACtB,YAAI,CAAC,UAAW;AAChB,cAAM,WAAW,UAAU,cAAc,wBAAwB;AACjE,YAAI,UAAU;AACZ,mBAAS,eAAe,EAAE,OAAO,UAAU,UAAU,UAAU,CAAC;AAAA,QAClE;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,EAAM,kBAAU,MAAM;AACpB,QAAI,MAAM;AACR,uBAAiB;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,MAAM,gBAAgB,CAAC;AAE3B,QAAM,mBAAmB,CAAC,SAAiB;AACzC,QAAI;AACJ,QAAI,eAAe,UAAU,GAAG;AAC9B,YAAM;AAAA,IACR,OAAO;AACL,YAAM,gBAAgB,OAAO,UAAU,KAAK,KAAK,IAAI;AACrD,UAAI,kBAAkB,MAAM;AAC1B,cAAM,SAAS,KAAK,IAAI;AAAA,MAC1B,OAAO;AACL,cAAM,SAAS,KAAK,KAAK,OAAO;AAAA,MAClC;AAAA,IACF;AACA,YAAQ,EAAE,OAAO,KAAK,SAAS,MAAM,WAAW,EAAE,CAAC;AAAA,EACrD;AAEA,QAAM,qBAAqB,CAAC,WAAmB;AAC7C,YAAQ,EAAE,OAAO,MAAM,SAAS,GAAG,SAAS,OAAO,CAAC;AAAA,EACtD;AAEA,QAAM,qBAAqB,CAAC,WAAwB;AAClD,UAAM,eAAe,MAAM,SAAS;AACpC,UAAM,aAAa,eAAe;AAClC,UAAM,WAAW,WAAW,OAAO,aAAa,aAAa;AAC7D,YAAQ,EAAE,OAAO,UAAU,SAAS,MAAM,WAAW,EAAE,CAAC;AAAA,EAC1D;AAEA,QAAM,YAAY,eAAe,UAAU,IACvC,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IACtC,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC;AAE9C,QAAM,cAAc,MAAM;AAAA,IACxB,EAAE,QAAQ,KAAK,KAAK,KAAK,UAAU,EAAE;AAAA,IACrC,CAAC,GAAG,MAAM,IAAI;AAAA,EAChB;AAEA,QAAM,cAAc,OAAO,eAAe,KAAK,OAAO,UAAU,IAAI;AACpE,QAAM,iBAAiB,MAAM,WAAW;AACxC,QAAM,iBAAiB,OAAO,UAAU,KAAK,KAAK,IAAI;AAEtD,SACE,gBAAAD,MAAC,SAAI,WAAW,GAAG,uBAAuB,SAAS,GACjD,0BAAAC,OAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,oBAAAD,MAAC,kBAAe,SAAO,MAAC,UAAU,eAChC,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAW;AAAA,UACT,cAAc,EAAE,KAAK,CAAC;AAAA,UACtB;AAAA,UACA;AAAA,UACA,iBACE;AAAA,UACF;AAAA,QACF;AAAA,QACA,UAAU;AAAA,QAET;AAAA,0BAAgB;AAAA,UAChB,SAAS,SACR,OAEA,gBAAAD,MAAC,SAAM,WAAU,0CAAyC;AAAA;AAAA;AAAA,IAE9D,GACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,cAAc,uBAAuB;AAAA,QACnD,iBAAiB,OAAK,EAAE,eAAe;AAAA,QACtC,GAAG;AAAA,QAEJ,0BAAAC,OAAC,SAAI,WAAU,qDAEb;AAAA,0BAAAD,MAAC,SAAI,WAAU,qFACb,0BAAAA,MAAC,SAAI,KAAK,UAAU,WAAU,sBAC3B,oBAAU,IAAI,OACb,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,iBAAe,gBAAgB;AAAA,cAC/B,WAAW;AAAA,gBACT;AAAA,gBACA,gBAAgB,KACd;AAAA,cACJ;AAAA,cACA,SAAS,MAAM,iBAAiB,CAAC;AAAA,cAEhC,iBAAO,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA;AAAA,YAXrB;AAAA,UAYP,CACD,GACH,GACF;AAAA,UAGA,gBAAAA,MAAC,SAAI,WAAU,qFACb,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,WAAW;AAAA,gBACT;AAAA,gBACA,YAAY,UAAU,MAAM;AAAA,cAC9B;AAAA,cAEC,sBAAY,IAAI,OACf,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,iBAAe,mBAAmB;AAAA,kBAClC,WAAW;AAAA,oBACT;AAAA,oBACA,mBAAmB,KACjB;AAAA,kBACJ;AAAA,kBACA,SAAS,MAAM,mBAAmB,CAAC;AAAA,kBAElC,iBAAO,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA;AAAA,gBAXrB;AAAA,cAYP,CACD;AAAA;AAAA,UACH,GACF;AAAA,UAGC,CAAC,eAAe,UAAU,KACzB,gBAAAA,MAAC,SAAI,WAAU,0CACX,WAAC,MAAM,IAAI,EAAY,IAAI,OAC3B,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,iBAAe,mBAAmB;AAAA,cAClC,WAAW;AAAA,gBACT;AAAA,gBACA,mBAAmB,KACjB;AAAA,cACJ;AAAA,cACA,SAAS,MAAM,mBAAmB,CAAC;AAAA,cAElC;AAAA;AAAA,YAXI;AAAA,UAYP,CACD,GACH;AAAA,WAEJ;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;;;AC/QA,OAAuB;AACvB,YAAY,qBAAqB;AACjC,SAAS,OAAAE,aAA8B;AAkCnC,gBAAAC,aAAA;AA9BJ,IAAM,iBAAiBC;AAAA,EACrB;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,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACuC;AACrC,SACE,gBAAAD;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC1CA,YAAYE,aAAW;AACvB,YAAY,0BAA0B;AACtC,OAAkC;AA+B5B,gBAAAC,aAAA;AA1BN,IAAM,qBAA2B,sBAE/B;AAAA,EACA,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AAED,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACuC;AACrC,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,mBAAmB,UAAnB,EAA4B,OAAO,EAAE,SAAS,KAAK,GACjD,UACH;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACuC;AACrC,QAAM,UAAgB,mBAAW,kBAAkB;AAEnD,SACE,gBAAAA;AAAA,IAAsB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,QAAQ,WAAW;AAAA,MACjC,aAAW,QAAQ,QAAQ;AAAA,MAC3B,WAAW;AAAA,QACT,eAAe;AAAA,UACb,SAAS,QAAQ,WAAW;AAAA,UAC5B,MAAM,QAAQ,QAAQ;AAAA,QACxB,CAAC;AAAA,QACD;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACtEA,SAAS,YAAAC,iBAAgB;","names":["jsx","cva","jsx","jsxs","cva","cva","jsx","cva","jsx","jsxs","jsx","X","React","React","cva","React","jsx","jsxs","cva","Fragment","jsx","jsxs","X","React","React","jsx","jsx","jsx","Slot","cva","jsx","cva","Slot","cva","jsx","jsxs","cva","cva","jsx","jsxs","cva","cva","jsx","cva","Slot","jsx","jsxs","Slot","ChevronDownIcon","React","jsx","className","props","ChevronDownIcon","jsx","React","ArrowLeft","jsx","jsxs","api","ArrowLeft","React","Fragment","jsx","jsxs","config","jsx","jsx","CollapsibleTrigger","CollapsibleContent","DialogPrimitive","jsx","jsxs","jsx","jsxs","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","React","PopoverPrimitive","jsx","jsx","jsxs","date","dateFnsFormat","isValid","CalendarDays","React","jsx","jsxs","DATE_FORMAT_TOKENS","DATE_FORMAT_PLACEHOLDER","formatDate","isValid","dateFnsFormat","CalendarDays","XIcon","jsx","jsxs","XIcon","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","jsx","jsxs","React","Slot","cva","jsx","cva","Slot","jsx","jsxs","value","React","Slot","Slot","cva","jsx","Label","jsx","Label","Slot","jsx","React","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","ChevronDown","X","jsx","jsxs","X","ChevronDown","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","cva","Check","jsx","jsxs","cva","Check","Indicator","ChevronLeftIcon","ChevronRightIcon","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","jsx","cva","jsx","jsxs","cva","CircleIcon","jsx","RadioGroup","CircleIcon","jsx","jsx","jsxs","React","X","jsx","jsxs","label","X","React","CheckIcon","XIcon","jsx","jsxs","XIcon","CheckIcon","CheckIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","CheckIcon","jsx","Separator","XIcon","jsx","jsxs","XIcon","Slot","cva","React","jsx","X","React","jsx","jsxs","Tooltip","X","jsx","jsxs","open","Separator","Slot","cva","Tooltip","React","jsx","jsxs","React","Fragment","jsx","jsx","jsx","jsx","cva","React","jsx","jsxs","cva","jsx","useTheme","jsx","jsxs","useTheme","React","jsx","jsxs","cva","jsx","cva","React","jsx","useTheme"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/alert-banner.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/button.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/async-autocomplete.tsx","../src/hooks/use-mobile.ts","../src/components/ui/input.tsx","../src/components/ui/auto-resize-textarea.tsx","../src/components/ui/textarea.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/badge-actionable.tsx","../src/components/ui/badge-informative.tsx","../src/components/ui/badge-number.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/date-input.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-range-input.tsx","../src/components/ui/drawer.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/dropdown-select.tsx","../src/components/ui/faq-accordion.tsx","../src/components/ui/typography.tsx","../src/components/ui/form.tsx","../src/components/ui/label.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/menubar.tsx","../src/components/ui/multi-select-free-text.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/option-card.tsx","../src/components/ui/pagination.tsx","../src/components/ui/progress.tsx","../src/components/ui/progress-bar.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/search-input.tsx","../src/components/ui/searchable-select.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/slider.tsx","../src/components/ui/smart-dialog-drawer.tsx","../src/components/ui/useMediaQuery.ts","../src/components/ui/sonner.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/theme-provider.tsx","../src/components/ui/theme-toggle.tsx","../src/components/ui/time-input.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/hooks/use-theme.ts"],"sourcesContent":["'use client'\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { ChevronDownIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\ntype AccordionVariant = 'default' | 'outlined'\n\n/** Offset between consecutive items when the root has `staggerReveal`. */\nconst ACCORDION_STAGGER_STEP_MS = 80\n\nconst AccordionContext = React.createContext<{\n variant: AccordionVariant\n staggerReveal: boolean\n}>({\n variant: 'default',\n staggerReveal: false\n})\n\nexport type AccordionProps = React.ComponentProps<\n typeof AccordionPrimitive.Root\n> & {\n variant?: AccordionVariant\n /**\n * Fade-and-rise every item in on mount. Give each `AccordionItem` a\n * `revealIndex` so they land 80ms apart; without it they arrive together.\n * Skipped entirely under `prefers-reduced-motion`.\n */\n staggerReveal?: boolean\n}\n\nfunction Accordion({\n variant = 'default',\n staggerReveal = false,\n className,\n ...props\n}: AccordionProps) {\n const context = React.useMemo(\n () => ({ variant, staggerReveal }),\n [variant, staggerReveal]\n )\n return (\n <AccordionContext.Provider value={context}>\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n className={cn(\n variant === 'outlined' && 'flex flex-col gap-3',\n className\n )}\n {...props}\n />\n </AccordionContext.Provider>\n )\n}\n\nexport type AccordionItemProps = React.ComponentProps<\n typeof AccordionPrimitive.Item\n> & {\n /** Position in the list; sets this item's delay when the root has `staggerReveal`. */\n revealIndex?: number\n}\n\nfunction AccordionItem({\n className,\n style,\n revealIndex,\n ...props\n}: AccordionItemProps) {\n const { variant, staggerReveal } = React.useContext(AccordionContext)\n const staggerStyle =\n staggerReveal && revealIndex\n ? { animationDelay: `${revealIndex * ACCORDION_STAGGER_STEP_MS}ms` }\n : undefined\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n variant === 'outlined'\n ? cn(\n 'rounded-xl border border-border-default',\n // Border warms to the brand stroke on pointer hover only — a\n // touch device would otherwise keep the hover colour after a tap.\n 'transition-[border-color] duration-300 ease-out motion-reduce:transition-none',\n '[@media(hover:hover)]:hover:border-primary-stroke-default/60'\n )\n : 'border-b last:border-b-0',\n staggerReveal && 'animate-accordion-item-in',\n className\n )}\n style={staggerStyle ? { ...staggerStyle, ...style } : style}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerIcon = 'chevron' | 'plus-minus'\n\nexport type AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n> & {\n expandedIcon?: React.ReactNode\n collapsedIcon?: React.ReactNode\n /**\n * Built-in indicator, used when no custom icons are given. `chevron`\n * rotates; `plus-minus` morphs a + into a − as the item opens.\n */\n icon?: AccordionTriggerIcon\n /** Merged onto the built-in indicator to resize or recolour it. */\n iconClassName?: string\n}\n\n/** Two bars sharing one grid cell: the upright one rotates flat, so + becomes −. */\nfunction PlusMinusIcon({ className }: { className?: string }) {\n return (\n <span\n aria-hidden\n className={cn(\n 'text-gray-icon-default pointer-events-none relative grid size-6 shrink-0 place-items-center',\n className\n )}\n >\n <span className=\"col-start-1 row-start-1 h-[1.8px] w-3.5 rounded-full bg-current\" />\n <span className=\"col-start-1 row-start-1 h-[1.8px] w-3.5 origin-center rotate-90 rounded-full bg-current transition-[rotate] duration-[280ms] ease-[cubic-bezier(0.33,1,0.68,1)] group-data-[state=open]:rotate-0 motion-reduce:transition-none\" />\n </span>\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n expandedIcon,\n collapsedIcon,\n icon = 'chevron',\n iconClassName,\n ...props\n}: AccordionTriggerProps) {\n const { variant } = React.useContext(AccordionContext)\n const hasCustomIcon =\n expandedIcon !== undefined || collapsedIcon !== undefined\n const animatedIconSwap =\n variant === 'outlined' &&\n collapsedIcon !== undefined &&\n expandedIcon !== undefined\n const usesChevron = !hasCustomIcon && icon === 'chevron'\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50',\n variant === 'outlined' &&\n 'min-h-16 items-center gap-8 px-5 py-4 text-base lg:px-6 lg:text-lg lg:leading-7 hover:no-underline',\n usesChevron && '[&[data-state=open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n {hasCustomIcon ? (\n animatedIconSwap ? (\n <span className=\"pointer-events-none grid shrink-0 text-muted-foreground *:[grid-area:1/1] *:transition-[rotate,opacity] *:duration-300 *:ease-[cubic-bezier(0.33,1,0.68,1)]\">\n <span className=\"group-data-[state=open]:rotate-90 group-data-[state=open]:opacity-0\">\n {collapsedIcon}\n </span>\n <span className=\"-rotate-90 opacity-0 group-data-[state=open]:rotate-0 group-data-[state=open]:opacity-100\">\n {expandedIcon}\n </span>\n </span>\n ) : (\n <>\n {collapsedIcon !== undefined && (\n <span className=\"group-data-[state=open]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {collapsedIcon}\n </span>\n )}\n {expandedIcon !== undefined && (\n <span className=\"group-data-[state=closed]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {expandedIcon}\n </span>\n )}\n </>\n )\n ) : icon === 'plus-minus' ? (\n <PlusMinusIcon className={iconClassName} />\n ) : (\n <ChevronDownIcon\n className={cn(\n 'text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-400',\n iconClassName\n )}\n />\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n const { variant } = React.useContext(AccordionContext)\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className={cn(\n 'overflow-hidden text-sm',\n // Outlined cards fade while they grow; the stripe variant keeps the\n // shadcn height-only motion.\n variant === 'outlined'\n ? 'data-[state=closed]:animate-accordion-up-fade data-[state=open]:animate-accordion-down-fade'\n : 'data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down'\n )}\n {...props}\n >\n <div\n className={cn(\n variant === 'outlined' ? 'px-5 pb-5 lg:px-6 lg:pb-6' : 'pt-0 pb-4',\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst alertBannerVariants = cva(\n 'flex items-start gap-3 w-full rounded-[12px] border px-3 py-4 text-sm leading-5',\n {\n variants: {\n type: {\n informative:\n 'bg-alert-bg-informative border-gray-stroke-light [&_svg]:text-[#52525c] dark:[&_svg]:text-[#a1a1aa]',\n error:\n 'bg-alert-bg-error border-error-stroke-light [&_svg]:text-[#ff6467] dark:[&_svg]:text-[#ff8486]',\n success:\n 'bg-success-surface-subtle border-success-stroke-light [&_svg]:text-[#00a63e] dark:[&_svg]:text-[#34d399]'\n }\n },\n defaultVariants: {\n type: 'informative'\n }\n }\n)\n\nexport interface AlertBannerProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof alertBannerVariants> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n}\n\nfunction AlertBanner({\n className,\n type,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n ...props\n}: AlertBannerProps) {\n return (\n <div\n data-slot=\"alert-banner\"\n role=\"alert\"\n className={cn(alertBannerVariants({ type }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5 text-vibrant-text-heading\">\n {heading}\n </p>\n )}\n <div className=\"font-normal text-sm leading-5 text-vibrant-text-body\">\n {children}\n </div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"flex items-center justify-center shrink-0 size-5 text-vibrant-text-body hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-2.5\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { AlertBanner, alertBannerVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst buttonVariants = cva(\n \"cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-semibold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none relative select-none will-change-auto focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-lg focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive duration-400\",\n {\n variants: {\n variant: {\n primary:\n 'bg-primary text-primary-foreground hover:bg-brand-dark active:bg-active-primary',\n secondary:\n 'bg-brand-subtle text-primary-stroke-default hover:bg-primary-surface-light border border-brand-light active:bg-icon-disabled',\n tertiary:\n 'bg-gray-surface-light text-foreground-secondary hover:bg-gray-surface-default border border-gray-stroke-light hover:border-transparent active:border-transparent active:bg-[#9f9fa9] dark:active:bg-[#71717a]',\n outline:\n 'text-foreground-secondary border border-gray-surface-default bg-background hover:bg-gray-surface-light hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 active:bg-gray-surface-default',\n ghost:\n 'text-primary-stroke-default hover:bg-primary-surface-subtle dark:hover:bg-accent/50 active:bg-primary-surface-light',\n 'ghost-secondary':\n 'text-foreground-secondary hover:bg-gray-surface-light hover:text-accent-foreground dark:hover:bg-accent/50 active:bg-gray-surface-default',\n 'ghost-destructive':\n 'bg-transparent text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n link: 'text-foreground-secondary underline-offset-4 underline hover:bg-none active:bg-none hover:text-brand-vibrant',\n destructive:\n 'bg-error-destructive text-primary-foreground hover:bg-red-800 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-error-surface-dark',\n 'destructive-secondary':\n 'bg-error-surface-light border border-error-stroke-light text-destructive-text hover:border-error-surface-default focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n 'destructive-tertiary':\n 'bg-transparent border border-error-stroke-light text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active'\n },\n size: {\n md: 'h-10 px-4 py-2 has-[>svg]:px-3 text-lg',\n sm: 'h-9 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 text-base',\n lg: 'h-12 rounded-md px-6 has-[>svg]:px-4 text-lg',\n icon: 'size-8'\n }\n },\n defaultVariants: {\n variant: 'primary',\n size: 'lg'\n }\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","import * as DialogPrimitive from '@radix-ui/react-dialog'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ArrowLeft, Loader2, X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { cn } from '@/lib/utils'\nimport { Input } from './input'\n\n/* ─── Scroll dismissal ─────────────────────────────────────── */\n\n/**\n * Chrome's touch slop is 8px and iOS's is ~10px. Small enough that a real\n * drag feels instant, large enough to ignore the 1-3px of jitter a plain tap\n * produces.\n */\nconst TOUCH_SLOP_PX = 8\n\n/**\n * Dismisses an open floating layer when the user *intentionally* scrolls.\n *\n * Deliberately listens for `touchmove`/`wheel` rather than `scroll`: focusing\n * an input on mobile opens the on-screen keyboard, and the browser then\n * scrolls the focused field into view. That fires `scroll` (and, on Android,\n * `resize`), so a `scroll` listener would close the panel on the very\n * interaction that opened it. Gestures only exist because a human moved\n * something, which removes the need for grace periods or delta heuristics.\n *\n * Firing at the *start* of the gesture also makes iOS momentum scrolling a\n * non-problem: we are already closed before `touchend`, so the long tail of\n * post-gesture `scroll` events has nothing left to act on.\n */\nfunction useDismissOnScroll(\n enabled: boolean,\n onDismiss: () => void,\n ignore: React.RefObject<HTMLElement | null>[]\n) {\n // Latest-value ref: callers pass an inline arrow and a fresh array every\n // render, and re-binding document listeners for that would reset the\n // per-gesture state below. No dependency array — gestures happen after\n // paint, so this is always fresh before the user can produce one.\n const latest = React.useRef({ onDismiss, ignore })\n React.useEffect(() => {\n latest.current = { onDismiss, ignore }\n })\n\n React.useEffect(() => {\n if (!enabled) return\n\n let dismissed = false\n let hasOrigin = false\n let originX = 0\n let originY = 0\n let originIgnored = false\n\n const isIgnored = (target: EventTarget | null) =>\n target instanceof Node &&\n latest.current.ignore.some(ref => !!ref.current?.contains(target))\n\n const dismiss = () => {\n // Latch: more touchmoves arrive between here and the re-render that\n // flips `enabled` off. Fire exactly once per open cycle.\n if (dismissed) return\n dismissed = true\n latest.current.onDismiss()\n }\n\n const setOrigin = (target: EventTarget | null, x: number, y: number) => {\n hasOrigin = true\n originX = x\n originY = y\n // A touchmove is always dispatched to the element the touch *started*\n // on, even after the finger leaves it — so \"did this gesture start\n // inside the list?\" only has to be answered once, here.\n originIgnored = isIgnored(target)\n }\n\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.touches[0]\n if (touch) setOrigin(event.target, touch.clientX, touch.clientY)\n }\n\n const handleTouchMove = (event: TouchEvent) => {\n if (dismissed) return\n const touch = event.touches[0]\n if (!touch) return\n // The panel usually opens *during* a touch (tap field -> focus ->\n // open), so these listeners are often bound after touchstart already\n // fired. Without this branch we would measure against a bogus (0,0)\n // origin and dismiss on the first micro-move of the opening tap.\n if (!hasOrigin) {\n setOrigin(event.target, touch.clientX, touch.clientY)\n return\n }\n if (originIgnored) return\n const dx = touch.clientX - originX\n const dy = touch.clientY - originY\n if (dx * dx + dy * dy < TOUCH_SLOP_PX * TOUCH_SLOP_PX) return\n dismiss()\n }\n\n const handleTouchEnd = () => {\n hasOrigin = false\n }\n\n const handleWheel = (event: WheelEvent) => {\n // `wheel` targets the element under the pointer, so unlike touch this\n // genuinely needs a per-event containment check.\n if (dismissed || isIgnored(event.target)) return\n dismiss()\n }\n\n // capture: an ancestor carousel / drawer / map may stopPropagation on\n // touchmove, and capture also runs before React's root listeners.\n // passive: we never preventDefault, and a non-passive document-level\n // touchmove listener forces the compositor off the fast scrolling path.\n const options: AddEventListenerOptions = { passive: true, capture: true }\n document.addEventListener('touchstart', handleTouchStart, options)\n document.addEventListener('touchmove', handleTouchMove, options)\n document.addEventListener('touchend', handleTouchEnd, options)\n document.addEventListener('touchcancel', handleTouchEnd, options)\n document.addEventListener('wheel', handleWheel, options)\n\n return () => {\n // removeEventListener matches on (type, listener, capture) — `passive`\n // is not part of a listener's identity, but `capture` is, so the third\n // argument here is mandatory.\n document.removeEventListener('touchstart', handleTouchStart, true)\n document.removeEventListener('touchmove', handleTouchMove, true)\n document.removeEventListener('touchend', handleTouchEnd, true)\n document.removeEventListener('touchcancel', handleTouchEnd, true)\n document.removeEventListener('wheel', handleWheel, true)\n }\n }, [enabled])\n}\n\n/* ─── Types ────────────────────────────────────────────────── */\n\nexport interface AsyncAutocompleteOption<TData = unknown> {\n /** Stable unique key. Doubles as the DOM id suffix — a `place_id`, slug, … */\n id: string\n /** Primary line. */\n label: string\n /** Secondary line, rendered dimmed after the label. */\n description?: string\n /** Leading icon/avatar for this row. Falls back to `optionIcon`. */\n icon?: React.ReactNode\n /** Rendered dimmed, and skipped by keyboard navigation and clicks. */\n disabled?: boolean\n /**\n * Merged onto this row only, after `classNames.option` — so a single row can\n * be styled differently from its siblings (a \"use my location\" entry, a\n * promoted result).\n */\n className?: string\n /**\n * Arbitrary consumer payload handed straight back by `onSelect` — a raw\n * Google `AutocompletePrediction`, a REST row, a whole domain object. The\n * design system never inspects it.\n */\n data?: TData\n}\n\n/** Row state passed to `renderOption`. */\nexport interface AsyncAutocompleteOptionState {\n /** Position in `options`. Matches the `-suggestion-N` DOM id. */\n index: number\n /** True when keyboard- or hover-highlighted (`aria-activedescendant`). */\n highlighted: boolean\n /** Current input text, for match highlighting. */\n query: string\n}\n\n/**\n * Long-tail `<input>` props forwarded to the text field. The props\n * `AsyncAutocomplete` owns are excluded; `onFocus`, `onKeyDown` and\n * `onPointerDown` are chained after the component's own handlers rather than\n * replacing them.\n */\nexport type AsyncAutocompleteInputProps = Omit<\n React.ComponentPropsWithoutRef<'input'>,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'size'\n | 'disabled'\n | 'placeholder'\n | 'id'\n | 'type'\n | 'role'\n | 'readOnly'\n>\n\n/**\n * Per-slot class overrides. Every entry is merged with `cn`, so\n * tailwind-merge lets a caller class replace a conflicting default rather than\n * fight it — `{ content: 'max-h-[420px]' }` really does replace the built-in\n * max-height.\n *\n * `DateInput`/`TimeInput` expose two or three flat `*ClassName` props;\n * `AsyncAutocomplete` has twenty-odd stylable slots, so they live in one\n * object here instead of twenty top-level props burying `onSearch`/`onSelect`.\n */\nexport interface AsyncAutocompleteClassNames {\n /** Wrapper around the input — also the popover's anchor. */\n field?: string\n /** The visible label element. */\n label?: string\n /** The text input itself. */\n input?: string\n /** Left icon wrapper inside the input. */\n leftIcon?: string\n /** The clear (\"X\") button. */\n clearButton?: string\n /** The popover surface holding the results. */\n content?: string\n /** The `role=\"listbox\"` container, in both popover and sheet. */\n listbox?: string\n /** Every option row. */\n option?: string\n /** Added to the highlighted row, on top of `option`. */\n optionHighlighted?: string\n /** Added to a disabled row, on top of `option`. */\n optionDisabled?: string\n /** Icon wrapper inside a default row. Not applied when `renderOption` is used. */\n optionIcon?: string\n /** Primary text span in a default row. Not applied when `renderOption` is used. */\n optionLabel?: string\n /** Secondary text span in a default row. Not applied when `renderOption` is used. */\n optionDescription?: string\n /** The loading row. */\n loading?: string\n /** The spinner inside the loading row. */\n loadingSpinner?: string\n /** The empty (\"no results\") row. Not applied when `emptyState` is used. */\n empty?: string\n /** The sheet's backdrop. */\n sheetOverlay?: string\n /** The sheet panel. */\n sheetContent?: string\n /** The sheet's pinned header row. */\n sheetHeader?: string\n /** The sheet's close/back button. */\n sheetCloseButton?: string\n /** The sheet's own text input. */\n sheetInput?: string\n /** The sheet's scrollable results area. */\n sheetList?: string\n}\n\nexport interface AsyncAutocompleteProps<TData = unknown> {\n /* ── Data (consumer-owned fetching) ── */\n\n /**\n * Current result set, rendered **verbatim**. `AsyncAutocomplete` never\n * filters, sorts or caches — map your API response to options yourself.\n */\n options: AsyncAutocompleteOption<TData>[]\n /**\n * Fired on every keystroke with the raw input text, plus `''` when the\n * clear button is pressed. **Not debounced** — debounce in your fetch layer\n * (`usePlacesService({ debounce: 300 })`, a `setTimeout` hook, …) so\n * request cancellation and out-of-order responses stay with the code that\n * owns them.\n */\n onSearch: (query: string) => void\n /**\n * Fired when an option is committed by click, tap or Enter. Closes the\n * panel. Deliberately does **not** write the label into the input: call\n * sites resolve their own display text (a `getDetails` lookup, a\n * `formatted_address`) or clear the field. Drive `value` yourself.\n */\n onSelect: (option: AsyncAutocompleteOption<TData>) => void\n /**\n * A request is in flight.\n *\n * The spinner row only replaces the list when there is nothing else to show.\n * If results are already on screen they stay put and the listbox is marked\n * `aria-busy` / `data-busy` instead — so typing another character does not\n * flash the panel back to \"Searching…\".\n */\n loading?: boolean\n\n /* ── Input text (controlled / uncontrolled) ── */\n\n /** Controlled input text. */\n value?: string\n /** Initial input text when uncontrolled. */\n defaultValue?: string\n /** Fired on every input change and on clear. */\n onValueChange?: (value: string) => void\n /**\n * Fired only when the clear (X) button is pressed, after\n * `onValueChange('')` and `onSearch('')`. Use it to drop the selected\n * entity. Focus is returned to the input automatically.\n */\n onClear?: () => void\n\n /* ── Input chrome ── */\n\n placeholder?: string\n /**\n * Visible label, rendered above the field and wired to it with `htmlFor`.\n *\n * A combobox **must** have an accessible name — the ARIA practices are\n * explicit that a placeholder is not one. Provide either this, or an\n * `aria-label`/`aria-labelledby` through `inputProps`. In development the\n * component warns when neither is present.\n */\n label?: string\n /** Appends a red asterisk to `label`. */\n mandatory?: boolean\n /** Decorative leading icon — `<MapPin />`, `<Stethoscope />`, … */\n leftIcon?: React.ReactNode\n /** Fixed height: `sm` 40px · `md` 48px (default) · `lg` 56px. */\n size?: 'sm' | 'md' | 'lg'\n /** Error color scheme on the input. Also sets `aria-invalid`. */\n error?: boolean\n disabled?: boolean\n /** Forwarded to the underlying `<input>` for imperative focus. */\n inputRef?: React.Ref<HTMLInputElement>\n /** Escape hatch for `name`, `enterKeyHint`, `inputMode`, `autoFocus`, … */\n inputProps?: AsyncAutocompleteInputProps\n\n /* ── Presentation ── */\n\n /**\n * `'popover'` (default) always anchors a portaled popover under the field\n * and dismisses it as soon as the user scrolls. `'sheet'` keeps that\n * behavior above 768px but turns the search into a full-screen takeover on\n * phones, where the page behind is scroll-locked.\n */\n mobileVariant?: 'popover' | 'sheet'\n /**\n * Replace a whole row. The default renders `label` plus a dimmed\n * `, description` on one truncated line with a leading icon. Reach for this\n * for stacked two-line rows, avatars, or bold match highlighting — the\n * wrapper, `role=\"option\"`, ids, highlight background and click/keyboard\n * wiring stay with the component.\n *\n * Keep the content non-interactive: it renders inside `role=\"option\"`, and a\n * nested button or link there is both invalid and unreachable by keyboard,\n * since the row is driven by `aria-activedescendant` rather than focus.\n */\n renderOption?: (\n option: AsyncAutocompleteOption<TData>,\n state: AsyncAutocompleteOptionState\n ) => React.ReactNode\n /** Default leading icon for rows without their own `option.icon`. */\n optionIcon?: React.ReactNode\n /** \"No results\" copy. Ignored when `emptyState` is provided. */\n emptyMessage?: string\n /** Full replacement for the empty row — an illustration, a CTA, … */\n emptyState?: React.ReactNode\n /** Copy beside the loading spinner. */\n loadingMessage?: string\n /** Replaces the clear button's `X` glyph. */\n clearIcon?: React.ReactNode\n /** Accessible name for the clear button. */\n clearLabel?: string\n /** Accessible name for the `mobileVariant=\"sheet\"` takeover. */\n sheetTitle?: string\n /** Replaces the sheet's back-arrow glyph. */\n sheetCloseIcon?: React.ReactNode\n /** Accessible name for the sheet's close button. */\n sheetCloseLabel?: string\n\n /* ── Open state ── */\n\n /** Controlled open state. Prefer `defaultOpen` unless you truly need this. */\n open?: boolean\n /** Start open — for fields mounted lazily on focus. */\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n\n /* ── Ids ── */\n\n /**\n * Prefix for stable DOM ids, so analytics autocapture keeps working:\n * `{idPrefix}-input`, `{idPrefix}-clear`, `{idPrefix}-listbox`,\n * `{idPrefix}-suggestion-{index}`, and in sheet mode also\n * `{idPrefix}-sheet-input` and `{idPrefix}-sheet-clear`. Falls back to a\n * `useId()` value, which is fine for ARIA wiring but not usable as a CSS\n * selector.\n */\n idPrefix?: string\n\n /* ── Styling ── */\n\n /** Merged onto the root wrapper. */\n className?: string\n /** Per-slot class overrides. See `AsyncAutocompleteClassNames`. */\n classNames?: AsyncAutocompleteClassNames\n}\n\n/* ─── Component ────────────────────────────────────────────── */\n\nconst rowClassName =\n 'flex items-center gap-[12px] min-h-[48px] px-[8px] rounded-[8px] cursor-pointer select-none transition-colors hover:bg-gray-surface-light'\n\nconst messageClassName =\n 'flex items-center gap-[8px] min-h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details'\n\nfunction AsyncAutocomplete<TData = unknown>({\n options,\n onSearch,\n onSelect,\n loading = false,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n onClear,\n placeholder,\n label,\n mandatory = false,\n leftIcon,\n size = 'md',\n error = false,\n disabled = false,\n inputRef,\n inputProps,\n mobileVariant = 'popover',\n renderOption,\n optionIcon,\n emptyMessage = 'No results found',\n emptyState,\n loadingMessage = 'Searching…',\n clearIcon,\n clearLabel = 'Clear',\n sheetTitle = 'Search',\n sheetCloseIcon,\n sheetCloseLabel = 'Close search',\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n idPrefix,\n className,\n classNames\n}: AsyncAutocompleteProps<TData>) {\n const reactId = React.useId()\n const prefix = idPrefix ?? `async-autocomplete-${reactId}`\n const listboxId = `${prefix}-listbox`\n const optionDomId = (index: number) => `${prefix}-suggestion-${index}`\n\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n // Which presentation this open cycle committed to. A rotated iPhone 14 is\n // 844px wide — no longer \"mobile\" — and letting that swap presentation\n // mid-search would drop focus, the keyboard and the scroll lock.\n const [pinnedSheet, setPinnedSheet] = React.useState<boolean | null>(null)\n\n const fieldRef = React.useRef<HTMLDivElement>(null)\n const contentRef = React.useRef<HTMLDivElement>(null)\n const pageInputRef = React.useRef<HTMLInputElement | null>(null)\n const sheetInputRef = React.useRef<HTMLInputElement | null>(null)\n const optionRefs = React.useRef<(HTMLDivElement | null)[]>([])\n\n const isMobile = useIsMobile()\n\n // A combobox with no accessible name is an accessibility defect, and the\n // failure is silent — so say so at the moment of misuse rather than leaving\n // it to an audit.\n const hasAccessibleName =\n !!label || !!inputProps?.['aria-label'] || !!inputProps?.['aria-labelledby']\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production' || hasAccessibleName) return\n console.warn(\n '[AsyncAutocomplete] No accessible name. Pass `label`, or an ' +\n '`aria-label`/`aria-labelledby` via `inputProps`. A `placeholder` ' +\n 'does not name a combobox.'\n )\n }, [hasAccessibleName])\n\n const isControlledValue = valueProp !== undefined\n const isControlledOpen = openProp !== undefined\n const query = isControlledValue ? valueProp : internalValue\n const isOpen = isControlledOpen ? openProp : internalOpen\n\n const wantsSheet = mobileVariant === 'sheet' && isMobile\n const useSheet = isOpen ? (pinnedSheet ?? wantsSheet) : wantsSheet\n\n const {\n onFocus: inputOnFocus,\n onKeyDown: inputOnKeyDown,\n onPointerDown: inputOnPointerDown,\n ...restInputProps\n } = inputProps ?? {}\n\n const setPageInputNode = React.useCallback(\n (node: HTMLInputElement | null) => {\n pageInputRef.current = node\n if (typeof inputRef === 'function') inputRef(node)\n else if (inputRef) {\n ;(inputRef as React.RefObject<HTMLInputElement | null>).current = node\n }\n },\n [inputRef]\n )\n\n const openPanel = React.useCallback(() => {\n if (disabled || isOpen) return\n setPinnedSheet(wantsSheet)\n if (!isControlledOpen) setInternalOpen(true)\n onOpenChange?.(true)\n }, [disabled, isOpen, wantsSheet, isControlledOpen, onOpenChange])\n\n const closePanel = React.useCallback(() => {\n if (!isOpen) return\n setPinnedSheet(null)\n setHighlightedIndex(-1)\n if (!isControlledOpen) setInternalOpen(false)\n onOpenChange?.(false)\n }, [isOpen, isControlledOpen, onOpenChange])\n\n const updateValue = React.useCallback(\n (next: string) => {\n if (!isControlledValue) setInternalValue(next)\n onValueChange?.(next)\n },\n [isControlledValue, onValueChange]\n )\n\n const handleQueryChange = React.useCallback(\n (next: string) => {\n updateValue(next)\n onSearch(next)\n setHighlightedIndex(-1)\n openPanel()\n },\n [updateValue, onSearch, openPanel]\n )\n\n const handleSelect = React.useCallback(\n (option: AsyncAutocompleteOption<TData>) => {\n if (option.disabled) return\n onSelect(option)\n closePanel()\n },\n [onSelect, closePanel]\n )\n\n // Keyed on the sheet actually being open, not on the variant: clearing from\n // the closed opener must focus the opener, not the unmounted sheet input.\n const sheetIsOpen = isOpen && useSheet\n\n const handleClear = React.useCallback(() => {\n updateValue('')\n onSearch('')\n onClear?.()\n setHighlightedIndex(-1)\n // Inside the sheet the user is still in search mode, so it stays open —\n // there is nothing meaningful to anchor a popover to for an empty query.\n if (!sheetIsOpen) closePanel()\n const node = sheetIsOpen ? sheetInputRef.current : pageInputRef.current\n node?.focus()\n }, [updateValue, onSearch, onClear, sheetIsOpen, closePanel])\n\n // Indexes that keyboard navigation is allowed to land on.\n const enabledIndexes = React.useMemo(\n () =>\n options.reduce<number[]>((acc, option, index) => {\n if (!option.disabled) acc.push(index)\n return acc\n }, []),\n [options]\n )\n\n const moveHighlight = React.useCallback(\n (delta: 1 | -1) => {\n if (enabledIndexes.length === 0) return\n const current = enabledIndexes.indexOf(highlightedIndex)\n const next =\n current === -1\n ? delta === 1\n ? 0\n : enabledIndexes.length - 1\n : (current + delta + enabledIndexes.length) % enabledIndexes.length\n setHighlightedIndex(enabledIndexes[next])\n },\n [enabledIndexes, highlightedIndex]\n )\n\n // Key on the ids, not on `options` itself: consumers map their options\n // inline, so the array identity is new on every parent render and keying on\n // it would reset the highlight constantly — arrow keys would never advance.\n const optionsKey = options.map(option => option.id).join('|')\n React.useEffect(() => {\n setHighlightedIndex(-1)\n }, [optionsKey])\n\n React.useEffect(() => {\n if (highlightedIndex < 0) return\n optionRefs.current[highlightedIndex]?.scrollIntoView({ block: 'nearest' })\n }, [highlightedIndex])\n\n const hasOptions = options.length > 0\n // The spinner only takes over the panel when there is nothing else to show.\n // Once results are visible, a follow-up keystroke must not throw them away —\n // that made the list flash back to \"Searching…\" on every character.\n const showLoadingRow = loading && !hasOptions\n const showEmpty = !loading && !hasOptions && query.trim() !== ''\n // Results on screen while the next request is in flight.\n const isRefreshing = loading && hasOptions\n const hasBody = showLoadingRow || hasOptions || showEmpty\n const popoverOpen = isOpen && !useSheet && hasBody\n\n const dismissIgnoreRefs = React.useMemo(() => [contentRef, fieldRef], [])\n useDismissOnScroll(popoverOpen, closePanel, dismissIgnoreRefs)\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // In sheet mode the in-page field is a read-only opener, so keyboard\n // users need an explicit way in.\n if (\n useSheet &&\n !isOpen &&\n (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')\n ) {\n event.preventDefault()\n openPanel()\n inputOnKeyDown?.(event)\n return\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n if (!isOpen) openPanel()\n else moveHighlight(event.key === 'ArrowDown' ? 1 : -1)\n } else if (event.key === 'Enter') {\n const option =\n highlightedIndex >= 0 ? options[highlightedIndex] : undefined\n if (option) {\n // Also stops an enclosing <form> from submitting.\n event.preventDefault()\n handleSelect(option)\n }\n } else if (event.key === 'Escape') {\n if (isOpen) {\n event.preventDefault()\n closePanel()\n }\n } else if (event.key === 'Tab') {\n closePanel()\n }\n\n inputOnKeyDown?.(event)\n }\n\n // In sheet mode the opener and the sheet's own field are both mounted, so\n // each clear button needs its own id — one shared id would be a duplicate.\n const clearButtonProps = (id: string) =>\n query\n ? {\n // `Button` has no default `type`, so without this the clear button\n // submits any enclosing form. preventDefault on pointer-down keeps\n // the iOS keyboard up and stops focus leaving the field.\n type: 'button' as const,\n id,\n 'aria-label': clearLabel,\n onMouseDown: (event: React.MouseEvent) => event.preventDefault()\n }\n : undefined\n\n const renderRow = (option: AsyncAutocompleteOption<TData>, index: number) => {\n const highlighted = highlightedIndex === index\n const icon = option.icon ?? optionIcon\n\n return (\n <div\n key={option.id}\n id={optionDomId(index)}\n ref={node => {\n optionRefs.current[index] = node\n }}\n role=\"option\"\n aria-selected={highlighted}\n aria-disabled={option.disabled}\n data-slot=\"async-autocomplete-option\"\n data-highlighted={highlighted || undefined}\n data-disabled={option.disabled || undefined}\n // Without this, pointer-down blurs the input, a blur-driven close\n // unmounts the portal, and the click never lands — the row silently\n // does nothing.\n onMouseDown={event => event.preventDefault()}\n onMouseEnter={() => {\n if (!option.disabled) setHighlightedIndex(index)\n }}\n onClick={() => handleSelect(option)}\n // Order is deliberate: base, then state, then the caller's slot\n // classes, then the row's own — most specific wins under tailwind-merge.\n className={cn(\n rowClassName,\n highlighted && 'bg-gray-surface-light',\n option.disabled && 'opacity-50 cursor-not-allowed',\n classNames?.option,\n highlighted && classNames?.optionHighlighted,\n option.disabled && classNames?.optionDisabled,\n option.className\n )}\n >\n {renderOption ? (\n renderOption(option, { index, highlighted, query })\n ) : (\n <>\n {icon && (\n <span\n className={cn(\n 'flex shrink-0 items-center justify-center size-[20px] [&_svg]:size-[20px] text-gray-icon-light',\n classNames?.optionIcon\n )}\n >\n {icon}\n </span>\n )}\n <span\n className={cn(\n 'min-w-0 flex-1 truncate font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading',\n classNames?.optionLabel\n )}\n >\n {option.label}\n {option.description && (\n <span\n className={cn(\n 'text-gray-subtle',\n classNames?.optionDescription\n )}\n >\n {`, ${option.description}`}\n </span>\n )}\n </span>\n </>\n )}\n </div>\n )\n }\n\n const listbox = (\n <div\n role=\"listbox\"\n id={listboxId}\n // `aria-busy` tells assistive tech the list is updating; `data-busy` is\n // only set while stale results are still shown, so callers can style the\n // refresh (e.g. `classNames.listbox=\"data-[busy=true]:opacity-60\"`).\n aria-busy={loading || undefined}\n data-busy={isRefreshing || undefined}\n className={cn('flex flex-col', classNames?.listbox)}\n >\n {showLoadingRow ? (\n // `role=\"listbox\"` may only own `option` and `group` children, so the\n // status rows are disabled options: still announced, never selectable,\n // and skipped by keyboard nav since they are not in `options`.\n <div\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n className={cn(messageClassName, classNames?.loading)}\n >\n <Loader2\n className={cn(\n 'size-[16px] animate-spin text-gray-icon-light',\n classNames?.loadingSpinner\n )}\n />\n {loadingMessage}\n </div>\n ) : showEmpty ? (\n <div\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n className={cn(!emptyState && messageClassName, classNames?.empty)}\n >\n {emptyState ?? emptyMessage}\n </div>\n ) : (\n options.map(renderRow)\n )}\n </div>\n )\n\n const activeDescendant =\n highlightedIndex >= 0 ? optionDomId(highlightedIndex) : undefined\n\n const labelNode = label ? (\n <label\n htmlFor={`${prefix}-input`}\n data-slot=\"async-autocomplete-label\"\n className={cn(\n 'flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details',\n classNames?.label\n )}\n >\n {label}\n {mandatory && (\n // Decorative: the requirement is conveyed by aria-required on the\n // input, so screen readers say \"City, required\" rather than \"City star\".\n <span\n aria-hidden=\"true\"\n className=\"ml-0.5 text-[14px] leading-[20px] text-error-surface-default\"\n >\n *\n </span>\n )}\n </label>\n ) : null\n\n const field = (\n <div ref={fieldRef} className={cn('relative w-full', classNames?.field)}>\n <Input\n {...restInputProps}\n ref={setPageInputNode}\n id={`${prefix}-input`}\n type=\"text\"\n autoComplete=\"off\"\n role=\"combobox\"\n aria-haspopup={useSheet ? 'dialog' : 'listbox'}\n aria-expanded={useSheet ? sheetIsOpen : popoverOpen}\n aria-controls={popoverOpen ? listboxId : undefined}\n aria-autocomplete={useSheet ? undefined : 'list'}\n aria-required={mandatory || undefined}\n aria-activedescendant={popoverOpen ? activeDescendant : undefined}\n size={size}\n error={error}\n disabled={disabled}\n placeholder={placeholder}\n leftIcon={leftIcon}\n leftIconClassName={classNames?.leftIcon}\n rightIcon={query ? (clearIcon ?? <X />) : undefined}\n rightIconOnClick={query ? handleClear : undefined}\n rightIconButtonProps={clearButtonProps(`${prefix}-clear`)}\n rightIconClassName={classNames?.clearButton}\n className={cn(restInputProps.className, classNames?.input)}\n // In sheet mode this field is only an opener; all typing happens in\n // the takeover.\n readOnly={useSheet}\n value={query}\n onChange={event => handleQueryChange(event.target.value)}\n onFocus={event => {\n // Never open the sheet from `focus`: Radix Dialog restores focus to\n // its opener on close, so a focus-driven opener reopens forever.\n if (!useSheet) openPanel()\n inputOnFocus?.(event)\n }}\n onPointerDown={event => {\n // Because scroll-dismissal leaves focus in the field, a second tap\n // fires no `focus` event — without this the input goes dead.\n openPanel()\n inputOnPointerDown?.(event)\n }}\n onKeyDown={handleKeyDown}\n />\n </div>\n )\n\n return (\n <PopoverPrimitive.Root\n open={popoverOpen}\n onOpenChange={next => {\n if (!next) closePanel()\n }}\n >\n <div\n data-slot=\"async-autocomplete\"\n className={cn(\n 'flex w-full flex-col',\n labelNode && 'gap-[8px]',\n className\n )}\n >\n {labelNode}\n <PopoverPrimitive.Anchor asChild>{field}</PopoverPrimitive.Anchor>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={contentRef}\n data-slot=\"async-autocomplete-content\"\n sideOffset={8}\n align=\"start\"\n collisionPadding={8}\n // Visual safety net for scrolls that produce no gesture (a hash\n // jump, a programmatic scrollIntoView). It only hides — never\n // rely on it for dismissal.\n hideWhenDetached\n // Focus must never leave the inline input: the keyboard stays up\n // and typing keeps working while the list is open.\n onOpenAutoFocus={event => event.preventDefault()}\n onCloseAutoFocus={event => event.preventDefault()}\n // `Anchor` is not a `Trigger`, so Radix's own \"target is the\n // trigger\" guard reads a `triggerRef` that is always null here\n // and is dead code. Without this, tapping our own input dismisses.\n onPointerDownOutside={event => {\n if (fieldRef.current?.contains(event.target as Node)) {\n event.preventDefault()\n }\n }}\n // focusin-driven, so it reads the *new* focus owner. A container\n // onBlur + relatedTarget check cannot work here: relatedTarget is\n // falsy across a portal boundary and null on iOS taps.\n onFocusOutside={event => {\n if (fieldRef.current?.contains(event.target as Node)) {\n event.preventDefault()\n }\n }}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n // Clamp to what floating-ui measured from the *visual* viewport\n // so the list cannot extend behind the on-screen keyboard, and\n // contain overscroll so a fling inside the list does not chain\n // to the page and drag the anchor with it.\n 'max-h-[min(300px,var(--radix-popover-content-available-height))] overflow-y-auto overflow-x-hidden overscroll-contain',\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n classNames?.content\n )}\n >\n {listbox}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </div>\n\n {mobileVariant === 'sheet' && (\n <DialogPrimitive.Root\n open={sheetIsOpen}\n onOpenChange={next => {\n if (!next) closePanel()\n }}\n >\n <DialogPrimitive.Portal>\n {/* Opaque, not a scrim — the sheet is full-bleed. The Overlay is\n still rendered because Radix hangs the scroll lock and the\n pointer-events blocking off it. */}\n <DialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-white dark:bg-background',\n classNames?.sheetOverlay\n )}\n />\n <DialogPrimitive.Content\n // No prose to describe; silences Radix's dev warning.\n aria-describedby={undefined}\n className={cn(\n 'fixed inset-0 z-50 flex h-[100dvh] w-full flex-col bg-white outline-none dark:bg-background',\n classNames?.sheetContent\n )}\n onOpenAutoFocus={event => {\n // The trap would otherwise grab the close button. iOS only\n // raises the keyboard when .focus() runs inside the\n // activation window of the gesture that opened the sheet.\n event.preventDefault()\n requestAnimationFrame(() => sheetInputRef.current?.focus())\n }}\n // Do not hand focus back to the read-only opener — that is what\n // would make a focus-driven opener loop.\n onCloseAutoFocus={event => event.preventDefault()}\n >\n <DialogPrimitive.Title className=\"sr-only\">\n {sheetTitle}\n </DialogPrimitive.Title>\n\n {/* Pinned header. The field is at the top for a structural\n reason: iOS does not resize the layout viewport for the\n keyboard, so anything anchored to the bottom of a\n `fixed inset-0` sheet sits behind it. */}\n <div\n className={cn(\n 'flex shrink-0 items-center gap-[8px] p-[12px] pt-[max(12px,env(safe-area-inset-top))]',\n classNames?.sheetHeader\n )}\n >\n <DialogPrimitive.Close\n type=\"button\"\n aria-label={sheetCloseLabel}\n className={cn(\n 'flex size-[40px] shrink-0 cursor-pointer items-center justify-center rounded-[8px] text-gray-icon-light transition-colors hover:bg-gray-surface-light [&_svg]:size-[20px]',\n classNames?.sheetCloseButton\n )}\n >\n {sheetCloseIcon ?? <ArrowLeft />}\n </DialogPrimitive.Close>\n <div className=\"min-w-0 flex-1\">\n <Input\n ref={sheetInputRef}\n id={`${prefix}-sheet-input`}\n type=\"text\"\n autoComplete=\"off\"\n role=\"combobox\"\n aria-expanded\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-label={label ?? sheetTitle}\n size={size}\n placeholder={placeholder}\n leftIcon={leftIcon}\n leftIconClassName={classNames?.leftIcon}\n rightIcon={query ? (clearIcon ?? <X />) : undefined}\n rightIconOnClick={query ? handleClear : undefined}\n rightIconButtonProps={clearButtonProps(\n `${prefix}-sheet-clear`\n )}\n rightIconClassName={classNames?.clearButton}\n className={classNames?.sheetInput}\n value={query}\n onChange={event => handleQueryChange(event.target.value)}\n onKeyDown={handleKeyDown}\n // 16px minimum, or iOS zooms the page on focus.\n style={{ fontSize: 16 }}\n />\n </div>\n </div>\n\n <div\n className={cn(\n 'flex-1 overflow-y-auto overscroll-contain px-[12px] pb-[max(24px,env(safe-area-inset-bottom))]',\n classNames?.sheetList\n )}\n >\n {hasBody && listbox}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )}\n </PopoverPrimitive.Root>\n )\n}\n\nexport { AsyncAutocomplete }\n","import * as React from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from './button'\n\nconst inputVariants = cva(\n [\n // Base styles\n 'file:text-foreground-secondary placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-lg border bg-transparent text-base font-medium transition-all duration-400',\n 'outline-none font-sans',\n // File input styles\n 'file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium',\n // Disabled styles\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60 disabled:text-gray-icon-subtle'\n ],\n {\n variants: {\n size: {\n sm: 'h-10 px-3 py-2 text-base',\n md: 'h-12 px-3 py-2 text-base',\n lg: 'h-14 px-4 py-3 text-base'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nexport interface InputProps\n extends\n Omit<React.ComponentProps<'input'>, 'size'>,\n VariantProps<typeof inputVariants> {\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n leftIconClassName?: string\n rightIconClassName?: string\n rightIconOnClick?: () => void\n rightIconButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>\n error?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n size,\n leftIcon,\n rightIcon,\n leftIconClassName,\n rightIconClassName,\n rightIconOnClick,\n rightIconButtonProps,\n error,\n ...props\n },\n ref\n ) => {\n // Border/bg styles applied conditionally based on error state\n const stateStyles = error\n ? [\n 'border-error-stroke-default bg-background',\n 'hover:border-error-stroke-default',\n 'focus:border-error-stroke-default',\n 'focus-visible:border',\n 'active:border-error-stroke-default'\n ]\n : [\n 'border-gray-stroke-default bg-background',\n 'hover:border-focus-ring',\n 'focus:border-focus-ring',\n 'focus-visible:border',\n 'active:border-focus-ring'\n ]\n\n if (leftIcon || rightIcon) {\n return (\n <div className=\"relative\">\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n inputVariants({ size }),\n stateStyles,\n 'peer',\n leftIcon && 'pl-10',\n rightIcon && 'pr-10',\n className\n )}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n {leftIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'transition-colors stroke-[1.5px]',\n error\n ? 'text-error-stroke-default peer-hover:text-error-stroke-default peer-focus:text-error-stroke-default peer-active:text-error-stroke-default'\n : 'text-muted-foreground peer-hover:text-focus-ring peer-focus:text-focus-ring peer-active:text-focus-ring',\n leftIconClassName\n )}\n >\n {React.isValidElement(leftIcon)\n ? (() => {\n const iconEl = leftIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-5 w-5', iconEl.props.className)\n })\n })()\n : leftIcon}\n </div>\n )}\n {rightIcon && (\n <Button\n onClick={rightIconOnClick}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n 'absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'h-6 w-6 rounded-sm transition-colors',\n error\n ? 'text-error-stroke-default hover:text-error-stroke-default focus:text-error-stroke-default'\n : 'text-muted-foreground hover:text-focus-ring focus:text-focus-ring',\n rightIconClassName\n )}\n aria-label=\"Input action\"\n {...rightIconButtonProps}\n >\n {React.isValidElement(rightIcon)\n ? (() => {\n const iconEl = rightIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-5 w-5', iconEl.props.className)\n })\n })()\n : rightIcon}\n </Button>\n )}\n </div>\n )\n }\n\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size }), stateStyles, className)}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport { Input, inputVariants }\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Textarea } from './textarea'\n\ntype AutoResizeTextareaProps = React.ComponentPropsWithoutRef<typeof Textarea> & {\n /** Stop growing after this many px and allow scroll */\n maxHeight?: number\n /** Minimum height in px */\n minHeight?: number\n}\n\ntype TextareaEl = React.ElementRef<typeof Textarea>\n\nexport const AutoResizeTextarea = React.forwardRef<\n TextareaEl,\n AutoResizeTextareaProps\n>(\n (\n {\n className,\n style,\n onInput,\n onChange,\n maxHeight,\n minHeight = 120,\n value,\n ...props\n },\n forwardedRef\n ) => {\n const innerRef = React.useRef<TextareaEl | null>(null)\n\n const setRefs = React.useCallback(\n (node: TextareaEl | null) => {\n innerRef.current = node\n\n if (typeof forwardedRef === 'function') forwardedRef(node)\n else if (forwardedRef) forwardedRef.current = node\n },\n [forwardedRef]\n )\n\n const resize = React.useCallback(() => {\n const el = innerRef.current\n if (!el) return\n\n el.style.height = 'auto'\n const nextHeight = Math.max(minHeight, el.scrollHeight)\n\n if (maxHeight && nextHeight > maxHeight) {\n el.style.height = `${maxHeight}px`\n el.style.overflowY = 'auto'\n } else {\n el.style.height = `${nextHeight}px`\n el.style.overflowY = 'hidden'\n }\n }, [maxHeight, minHeight])\n\n React.useLayoutEffect(() => {\n resize()\n }, [resize, value])\n\n // Intercept programmatic writes to `el.value` (e.g. RHF reset/setValue,\n // hydration from localStorage) so height updates without a `value` prop.\n React.useLayoutEffect(() => {\n const el = innerRef.current\n if (!el) return\n\n const descriptor = Object.getOwnPropertyDescriptor(\n window.HTMLTextAreaElement.prototype,\n 'value'\n )\n if (!descriptor?.get || !descriptor?.set) return\n\n const { get, set } = descriptor\n Object.defineProperty(el, 'value', {\n configurable: true,\n get() {\n return get.call(this)\n },\n set(v) {\n set.call(this, v)\n resize()\n }\n })\n\n return () => {\n delete (el as Partial<HTMLTextAreaElement>).value\n }\n }, [resize])\n\n return (\n <Textarea\n {...props}\n ref={setRefs}\n value={value}\n onInput={e => {\n resize()\n onInput?.(e)\n }}\n onChange={e => {\n onChange?.(e)\n }}\n className={cn('resize-none', className)}\n style={{\n ...style,\n minHeight: minHeight,\n height: style?.height ?? 'auto',\n overflowY: style?.overflowY ?? 'hidden'\n }}\n />\n )\n }\n)\n\nAutoResizeTextarea.displayName = 'AutoResizeTextarea'\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n// Base styles as a constant to avoid recreation\nconst textareaBaseStyles = [\n // Base styles aligned with Input\n 'placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-lg border bg-transparent text-base font-medium transition-all duration-400',\n 'outline-none font-sans',\n // Disabled\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-40',\n // Default state\n 'border-gray-stroke-default bg-background',\n // Hover/Focus/Active states\n 'hover:border-focus-ring',\n 'focus:border-focus-ring',\n 'focus-visible:border',\n 'active:border-focus-ring',\n // Textarea specific\n 'field-sizing-content min-h-16 resize-y px-3 py-2'\n].join(' ')\n\n// Error styles as a constant to avoid recreation\nconst errorStyles = [\n 'border-error-stroke-default bg-background',\n 'hover:border-error-stroke-default',\n 'focus:border-error-stroke-default',\n 'focus-visible:border',\n 'active:border-error-stroke-default'\n].join(' ')\n\nexport interface TextareaProps extends Omit<\n React.ComponentProps<'textarea'>,\n 'size'\n> {\n error?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(textareaBaseStyles, error && errorStyles, className)}\n aria-invalid={error}\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-primary-foreground [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\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\nexport { Badge, badgeVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeActionableVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-[8px] cursor-pointer select-none transition-all font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0 outline-none focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-xl focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none relative',\n {\n variants: {\n size: {\n M: 'h-10 px-3 py-2 text-base leading-6 [&_svg]:size-5',\n S: 'h-8 px-3 py-2 text-sm leading-5 [&_svg]:size-5'\n }\n },\n defaultVariants: {\n size: 'S'\n }\n }\n)\n\nexport interface BadgeActionableProps\n extends\n Omit<React.ComponentProps<'button'>, 'children'>,\n VariantProps<typeof badgeActionableVariants> {\n icon?: React.ReactNode\n selected?: boolean\n onBackground?: boolean\n children: React.ReactNode\n}\n\nfunction BadgeActionable({\n className,\n size,\n icon,\n selected = false,\n onBackground = false,\n children,\n ...props\n}: BadgeActionableProps) {\n return (\n <button\n data-slot=\"badge-actionable\"\n data-selected={selected || undefined}\n className={cn(\n badgeActionableVariants({ size }),\n selected\n ? 'bg-primary-surface-subtle border border-primary-stroke-default text-primary-stroke-default'\n : onBackground\n ? 'bg-sand-light border border-secondary-stroke-default text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent'\n : 'bg-sand-light border border-secondary-stroke-light text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent',\n 'disabled:pointer-events-none disabled:opacity-50 ',\n className\n )}\n {...props}\n >\n {icon && <span className=\"flex items-center justify-center\">{icon}</span>}\n <span>{children}</span>\n </button>\n )\n}\n\nexport { BadgeActionable, badgeActionableVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeInformativeVariants = cva(\n 'inline-flex items-center justify-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n size: {\n M: 'h-8 px-2 py-1.5 gap-2 rounded-[8px] text-sm leading-5 [&_svg]:size-4',\n S: 'h-6 px-2 py-1.5 gap-1 rounded-[8px] text-xs leading-4 [&_svg]:size-4'\n },\n colorScheme: {\n gray: 'bg-gray-surface-light text-vibrant-text-body',\n blue: 'bg-primary-surface-subtle text-primary-stroke-default',\n yellow:\n 'bg-warning-surface-subtle border border-warning-stroke-default text-warning-stroke-dark'\n }\n },\n defaultVariants: {\n size: 'M',\n colorScheme: 'gray'\n }\n }\n)\n\nexport interface BadgeInformativeProps\n extends\n React.ComponentProps<'div'>,\n VariantProps<typeof badgeInformativeVariants> {\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}\n\nfunction BadgeInformative({\n className,\n size,\n colorScheme,\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: BadgeInformativeProps) {\n return (\n <div\n data-slot=\"badge-informative\"\n className={cn(badgeInformativeVariants({ size, colorScheme }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className={cn(\n 'inline-flex items-center gap-1 font-semibold text-base leading-6 shrink-0',\n colorScheme === 'blue'\n ? 'text-primary-stroke-default'\n : 'text-primary-stroke-default'\n )}\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\n/**\n * Container for multiple BadgeInformative items displayed side-by-side.\n */\nfunction BadgeInformativeGroup({\n className,\n size = 'M',\n colorScheme = 'gray',\n children,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof badgeInformativeVariants>) {\n return (\n <div\n data-slot=\"badge-informative-group\"\n className={cn(\n 'inline-flex items-center gap-3',\n size === 'M'\n ? 'h-8 px-2 py-1.5 rounded-[8px]'\n : 'h-6 px-2 py-1.5 rounded-[8px]',\n colorScheme === 'gray' && 'bg-gray-surface-light',\n colorScheme === 'blue' && 'bg-primary-surface-subtle',\n colorScheme === 'yellow' &&\n 'bg-warning-surface-subtle border border-warning-stroke-default',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * A single item within a BadgeInformativeGroup. Use for multi-content badges.\n */\nfunction BadgeInformativeItem({\n className,\n size = 'M',\n colorScheme = 'gray',\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n size?: 'M' | 'S'\n colorScheme?: 'gray' | 'blue' | 'yellow'\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}) {\n return (\n <div\n data-slot=\"badge-informative-item\"\n className={cn(\n 'inline-flex items-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n size === 'M'\n ? 'gap-1 text-sm leading-5 [&_svg]:size-4'\n : 'gap-1 text-xs leading-4 [&_svg]:size-4',\n colorScheme === 'gray' && 'text-vibrant-text-body',\n colorScheme === 'blue' && 'text-primary-stroke-default',\n colorScheme === 'yellow' && 'text-warning-stroke-dark',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className=\"inline-flex items-center gap-1 font-semibold text-base leading-6 text-primary-stroke-default shrink-0\"\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\nexport {\n BadgeInformative,\n BadgeInformativeGroup,\n BadgeInformativeItem,\n badgeInformativeVariants\n}\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeNumberVariants = cva(\n 'inline-flex items-center justify-center rounded-full font-semibold text-xs leading-[18px] text-center shrink-0 select-none',\n {\n variants: {\n size: {\n M: 'size-6',\n S: 'size-5'\n },\n state: {\n active: 'bg-primary text-primary-foreground',\n disabled: 'bg-gray-surface-light text-gray-subtle',\n resting:\n 'bg-transparent border border-gray-stroke-light text-gray-subtle'\n }\n },\n defaultVariants: {\n size: 'M',\n state: 'active'\n }\n }\n)\n\nexport interface BadgeNumberProps\n extends React.ComponentProps<'span'>,\n VariantProps<typeof badgeNumberVariants> {\n value: number\n}\n\nfunction BadgeNumber({\n className,\n size,\n state,\n value,\n ...props\n}: BadgeNumberProps) {\n return (\n <span\n data-slot=\"badge-number\"\n className={cn(badgeNumberVariants({ size, state }), className)}\n {...props}\n >\n {value}\n </span>\n )\n}\n\nexport { BadgeNumber, badgeNumberVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","'use client'\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon\n} from 'lucide-react'\nimport * as React from 'react'\nimport { DayButton, DayPicker } from 'react-day-picker'\n\nimport { Button, buttonVariants } from '@/components/ui/button'\nimport { cn } from '@/lib/utils'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:--spacing(4)] md:[--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters\n }}\n classNames={{\n root: cn('w-fit ', classNames?.root),\n months: cn(\n 'flex gap-4 flex-col md:flex-row relative',\n classNames?.months\n ),\n month: cn('flex flex-col w-full gap-4 items-center', classNames?.month),\n nav: cn(\n 'flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between',\n classNames?.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_next\n ),\n month_caption: cn(\n 'flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)',\n classNames?.month_caption\n ),\n dropdowns: cn(\n 'w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5',\n classNames?.dropdowns\n ),\n dropdown_root: cn(\n 'relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md',\n classNames?.dropdown_root\n ),\n dropdown: cn(\n 'absolute bg-popover inset-0 opacity-0',\n classNames?.dropdown\n ),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : 'rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5',\n classNames?.caption_label\n ),\n table: cn('w-full border-collapse', classNames?.table),\n weekdays: cn(\n 'flex items-center justify-start w-full gap-2 ',\n classNames?.weekdays\n ),\n weekday: cn(\n 'text-muted-foreground font-medium rounded-full md:flex-1 size-7 md:mx-1 font-normal text-[0.8rem] select-none',\n classNames?.weekday\n ),\n week: cn(\n 'flex w-full md:mt-2 mt-[2px] items-center justify-start gap-2 ',\n classNames?.week\n ),\n week_number_header: cn(\n 'select-none w-(--cell-size) ',\n 'flex items-center justify-center ',\n classNames?.week_number_header\n ),\n week_number: cn(\n 'text-[0.8rem] select-none text-muted-foreground',\n classNames?.week_number\n ),\n day: cn(\n 'relative flex items-center justify-center p-0 text-center group/day aspect-square select-none size-7 md:mx-1 rounded-full',\n classNames?.day\n ),\n range_start: cn(' bg-accent', classNames?.range_start),\n range_middle: cn('rounded-none', classNames?.range_middle),\n range_end: cn(' bg-accent', classNames?.range_end),\n today: cn(\n 'bg-accent text-accent-foreground rounded-full',\n classNames?.today\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n classNames?.outside\n ),\n disabled: cn('text-muted-foreground opacity-50', classNames?.disabled),\n hidden: cn('invisible', classNames?.hidden)\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon className={cn('size-6', className)} {...props} />\n )\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-6', className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn('size-6', className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-range-middle-bg data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none md:font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70 md:p-0 rounded-full md:text-base text-sm font-medium text-foreground data-[range-start=true]:rounded-md data-[range-middle=true]:rounded-md data-[range-end=true]:rounded-md',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'group peer cursor-pointer border-gray-stroke-default dark:bg-input/30 transition-colors duration-400 data-[state=checked]:bg-primary-stroke-default data-[state=checked]:text-white dark:data-[state=checked]:bg-primary-stroke-default data-[state=checked]:border-primary-stroke-default focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-5 shrink-0 rounded-[4px] border-2 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-40 focus-visible:before:absolute focus-visible:before:-inset-[3px] focus:ring-offset-1 focus:ring-offset-brand-text-vibrant',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n forceMount\n className=\"flex items-center justify-center text-current transition-opacity duration-400 opacity-0 group-data-[state=checked]:opacity-100\"\n >\n <Check className=\"size-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","'use client'\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/40',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n overlayClassName,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n overlayClassName?: string\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background border-border-default 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-3xl border p-6 shadow-lg duration-400 sm:max-w-lg',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"border-border-default text-muted-foreground hover:bg-muted absolute top-4 right-4 flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full border [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\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 )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('text-lg leading-none font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport {\n format as dateFnsFormat,\n parse as dateFnsParse,\n isValid\n} from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport { Calendar } from './calendar'\nimport { Input, inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type DateFormat =\n | 'MM/DD/YYYY'\n | 'DD/MM/YYYY'\n | 'YYYY-MM-DD'\n | 'DD-MM-YYYY'\n | 'MM-DD-YYYY'\n | 'DD.MM.YYYY'\n | 'YYYY/MM/DD'\n | 'MMMM D, YYYY'\n | 'D MMMM YYYY'\n | 'MMM D, YYYY'\n | 'MMM DD, YYYY'\n | 'D MMM YYYY'\n | 'DD MMM YYYY'\n | 'ddd, MMM D, YYYY'\n | 'dddd, MMMM D, YYYY'\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'onChange' | 'min' | 'max' | 'size' | 'disabled' | 'onSelect'\n>\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nconst INPUT_PROP_KEYS = new Set([\n 'accept',\n 'alt',\n 'autoComplete',\n 'autoFocus',\n 'capture',\n 'checked',\n 'dirName',\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'height',\n 'list',\n 'maxLength',\n 'minLength',\n 'multiple',\n 'name',\n 'pattern',\n 'readOnly',\n 'required',\n 'size',\n 'src',\n 'step',\n 'type',\n 'width',\n 'id',\n 'inputMode',\n 'lang',\n 'tabIndex',\n 'title',\n 'role',\n 'style',\n 'onFocus',\n 'onFocusCapture',\n 'onBlurCapture',\n 'onInput',\n 'onInvalid',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyPressCapture',\n 'onKeyUp',\n 'onKeyUpCapture',\n 'onPaste',\n 'onPasteCapture',\n 'onPointerDown',\n 'onPointerDownCapture',\n 'onPointerUp',\n 'onPointerUpCapture',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate'\n])\n\nfunction formatDate(date: Date | null, dateFormat: DateFormat = 'MM/DD/YYYY') {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction parseDate(\n value: string,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n): Date | null {\n if (!value) return null\n const parsed = dateFnsParse(value, DATE_FORMAT_TOKENS[dateFormat], new Date())\n return isValid(parsed) ? parsed : null\n}\n\nexport interface DateInputProps\n extends NativeInputProps, FlattenedCalendarProps {\n date: Date | null\n setDate: (date: Date | null) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n mode?: React.ComponentProps<typeof Calendar>['mode']\n selected?: Date\n onSelect?: (selectedDate: Date | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateInput({\n date,\n setDate,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n mode,\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n onBlur,\n ...restProps\n}: DateInputProps) {\n const resolvedPlaceholder = placeholder ?? DATE_FORMAT_PLACEHOLDER[dateFormat]\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(date ?? null)\n const [value, setValue] = React.useState(formatDate(date ?? null, dateFormat))\n const [inputProps, calendarProps] = React.useMemo(() => {\n const nextInputProps: Record<string, unknown> = {}\n const nextCalendarProps: Record<string, unknown> = {}\n\n for (const [key, val] of Object.entries(restProps)) {\n const isInputProp =\n INPUT_PROP_KEYS.has(key) ||\n key.startsWith('aria-') ||\n key.startsWith('data-')\n\n if (isInputProp) {\n nextInputProps[key] = val\n } else {\n nextCalendarProps[key] = val\n }\n }\n\n return [\n nextInputProps as Partial<React.ComponentProps<typeof Input>>,\n nextCalendarProps as Omit<\n React.ComponentProps<typeof Calendar>,\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n >\n ]\n }, [restProps])\n\n // Calculate effective maxDate\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n // Calculate effective minDate\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 15)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 10)\n return d\n }, [effectiveMaxDate, today])\n\n React.useEffect(() => {\n if (date) {\n setValue(formatDate(date, dateFormat))\n setMonthState(date)\n }\n }, [date, dateFormat])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? date ?? undefined\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n const defaultCalendarOnSelect = (selectedDate: Date | undefined) => {\n if (selectedDate) {\n const dateObj = new Date(selectedDate)\n dateObj.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || dateObj >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || dateObj <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(selectedDate)\n setValue(formatDate(selectedDate, dateFormat))\n setOpen(false)\n }\n }\n }\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n\n const isBeforeMin =\n effectiveMinDate !== null && checkDate < effectiveMinDate\n const isAfterMax =\n effectiveMaxDate !== undefined && checkDate > effectiveMaxDate\n\n return isBeforeMin || isAfterMax\n }\n const resolvedCalendarProps = {\n ...calendarProps,\n mode: mode ?? 'single',\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn('w-auto mx-auto h-auto sm:m-2', calendarClassName),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: onSelect ?? defaultCalendarOnSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n setValue(inputValue)\n\n const parsedDate = parseDate(inputValue, dateFormat)\n\n if (parsedDate) {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(parsedDate)\n setMonthState(parsedDate)\n }\n } else if (inputValue === '') {\n setDate(null)\n }\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(e)\n }\n\n if (value === '') {\n if (date !== null) {\n setDate(null)\n }\n return\n }\n\n const parsedDate = parseDate(value, dateFormat)\n if (!parsedDate) {\n setValue(formatDate(date, dateFormat))\n } else {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (!isAfterMin || !isBeforeMax) {\n setValue(formatDate(date, dateFormat))\n }\n }\n }\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <div className=\"w-full relative group\">\n <Input\n id=\"date\"\n value={value}\n placeholder={resolvedPlaceholder}\n className={cn(\n 'bg-background cursor-pointer',\n 'group-data-[state=open]:border-focus-ring group-data-[state=open]:hover:border-focus-ring',\n inputClassName\n )}\n onChange={handleInputChange}\n onBlur={handleBlur}\n disabled={isInputDisabled}\n onKeyDown={e => {\n if (e.key === 'ArrowDown' && !isInputDisabled) {\n e.preventDefault()\n setOpen(true)\n }\n }}\n rightIcon={\n <CalendarDays className=\"h-4 w-4 text-muted-foreground\" />\n }\n rightIconOnClick={\n isInputDisabled ? undefined : () => setOpen(!open)\n }\n rightIconButtonProps={{ disabled: isInputDisabled }}\n {...(inputProps as Partial<React.ComponentProps<typeof Input>>)}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px] ',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md py-2 md:py-0\">\n <Calendar {...resolvedCalendarProps} />\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { format as dateFnsFormat, isValid } from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport type { DateRange } from 'react-day-picker'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport type { DateFormat } from './date-input'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type { DateRange }\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nfunction formatDate(\n date: Date | null | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction formatRange(\n range: DateRange | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!range) return ''\n const from = formatDate(range.from, dateFormat)\n const to = formatDate(range.to, dateFormat)\n if (from && to) return from === to ? from : `${from} \\u2013 ${to}`\n if (from) return from\n return ''\n}\n\nfunction rangePlaceholder(dateFormat: DateFormat) {\n const p = DATE_FORMAT_PLACEHOLDER[dateFormat]\n return `${p} \\u2013 ${p}`\n}\n\nexport interface DateRangeInputProps extends FlattenedCalendarProps {\n dateRange: DateRange | undefined\n setDateRange: (range: DateRange | undefined) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n placeholder?: string\n selected?: DateRange\n onSelect?: (range: DateRange | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateRangeInput({\n dateRange,\n setDateRange,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n size,\n ...restProps\n}: DateRangeInputProps) {\n const resolvedPlaceholder = placeholder ?? rangePlaceholder(dateFormat)\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(\n dateRange?.from ?? null\n )\n\n const displayValue = formatRange(dateRange, dateFormat)\n\n React.useEffect(() => {\n if (dateRange?.from) {\n setMonthState(dateRange.from)\n }\n }, [dateRange])\n\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default wide range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 100)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 100)\n return d\n }, [effectiveMaxDate, today])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? dateRange\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n\n const isWithinBounds = (d: Date) => {\n const isAfterMin = !effectiveMinDate || d >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || d <= effectiveMaxDate\n return isAfterMin && isBeforeMax\n }\n\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n return !isWithinBounds(checkDate)\n }\n\n const handleCalendarSelect = (range: DateRange | undefined) => {\n if (onSelect) {\n onSelect(range)\n return\n }\n setDateRange(range)\n }\n\n const handleClear = () => {\n setDateRange(undefined)\n }\n\n const handleAdd = () => {\n setOpen(false)\n }\n\n const resolvedCalendarProps = {\n ...restProps,\n mode: 'range' as const,\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn('w-auto shrink-0 h-auto mt-2', calendarClassName),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: handleCalendarSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n isInputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={isInputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n <CalendarDays className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px]',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md flex flex-col overflow-y-auto justify-between\">\n <Calendar {...resolvedCalendarProps} />\n <div className=\"flex flex-col gap-2 px-2 pb-1 shrink-0\">\n <Button\n variant=\"ghost-secondary\"\n size=\"sm\"\n onClick={handleClear}\n type=\"button\"\n >\n Clear\n </Button>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={handleAdd}\n type=\"button\"\n >\n Add\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","'use client'\n\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\nimport { Drawer as DrawerPrimitive } from 'vaul'\n\nimport { cn } from '@/lib/utils'\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} repositionInputs={false} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/40',\n className\n )}\n {...props}\n />\n )\n}\n\nconst drawerDirectionClasses = {\n top: 'inset-x-0 top-0 max-h-[80vh] rounded-b-3xl border-b border-border-default',\n bottom:\n 'inset-x-0 bottom-0 max-h-[80vh] rounded-t-3xl border-t border-border-default',\n right:\n 'inset-y-0 right-0 w-3/4 border-l border-border-default sm:max-w-sm',\n left: 'inset-y-0 left-0 w-3/4 border-r border-border-default sm:max-w-sm'\n} as const\n\nfunction DrawerContent({\n className,\n children,\n withCloseButton = true,\n showCloseButton = true,\n direction = 'bottom',\n overlayClassName,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & {\n withCloseButton?: boolean\n showCloseButton?: boolean\n direction?: keyof typeof drawerDirectionClasses\n overlayClassName?: string\n}) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay className={overlayClassName} />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background fixed z-50 flex h-auto flex-col',\n drawerDirectionClasses[direction],\n className\n )}\n {...props}\n >\n {withCloseButton && (\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n )}\n {showCloseButton && (\n <DrawerPrimitive.Close\n data-slot=\"drawer-close-button\"\n className=\"border-border-default text-muted-foreground hover:bg-muted absolute top-4 right-4 z-10 flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full border [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DrawerPrimitive.Close>\n )}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\n 'border-border mt-auto flex shrink-0 flex-col gap-2 border-t px-4 pt-4 pb-[max(1rem,env(safe-area-inset-bottom,0px))]',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Context ──────────────────────────────────────────────── */\n\ninterface DropdownSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n value: string\n onValueChange: (value: string) => void\n disabled: boolean\n error: boolean\n placeholder: string\n icon?: React.ReactNode\n displayLabel: string\n options: { value: string; label: string }[]\n registerOption: (value: string, label: string) => void\n highlightedIndex: number\n setHighlightedIndex: (index: number) => void\n}\n\nconst DropdownSelectContext = React.createContext<DropdownSelectContextValue | null>(null)\n\nfunction useDropdownSelect() {\n const ctx = React.useContext(DropdownSelectContext)\n if (!ctx) throw new Error('DropdownSelect compound components must be used within <DropdownSelect>')\n return ctx\n}\n\n/* ─── Root ─────────────────────────────────────────────────── */\n\nexport interface DropdownSelectProps {\n children: React.ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n error?: boolean\n placeholder?: string\n icon?: React.ReactNode\n}\n\nfunction DropdownSelect({\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n placeholder = 'Select',\n icon,\n}: DropdownSelectProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const [options, setOptions] = React.useState<{ value: string; label: string }[]>([])\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n\n const isControlledValue = valueProp !== undefined\n const isControlledOpen = openProp !== undefined\n const value = isControlledValue ? valueProp : internalValue\n const open = isControlledOpen ? openProp : internalOpen\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlledOpen) setInternalOpen(next)\n onOpenChange?.(next)\n },\n [isControlledOpen, onOpenChange]\n )\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlledValue) setInternalValue(next)\n onValueChange?.(next)\n setOpen(false)\n },\n [isControlledValue, onValueChange, setOpen]\n )\n\n const registerOption = React.useCallback((val: string, label: string) => {\n setOptions(prev => {\n if (prev.some(o => o.value === val)) return prev\n return [...prev, { value: val, label }]\n })\n }, [])\n\n const displayLabel = React.useMemo(() => {\n const match = options.find(o => o.value === value)\n return match?.label ?? ''\n }, [options, value])\n\n const ctx = React.useMemo<DropdownSelectContextValue>(\n () => ({\n open,\n setOpen,\n value,\n onValueChange: handleValueChange,\n disabled,\n error,\n placeholder,\n icon,\n displayLabel,\n options,\n registerOption,\n highlightedIndex,\n setHighlightedIndex,\n }),\n [open, setOpen, value, handleValueChange, disabled, error, placeholder, icon, displayLabel, options, registerOption, highlightedIndex, setHighlightedIndex]\n )\n\n return (\n <DropdownSelectContext.Provider value={ctx}>\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </DropdownSelectContext.Provider>\n )\n}\n\n/* ─── Label ────────────────────────────────────────────────── */\n\nexport interface DropdownSelectLabelProps extends React.ComponentProps<'div'> {\n mandatory?: boolean\n}\n\nfunction DropdownSelectLabel({\n className,\n children,\n mandatory = false,\n ...props\n}: DropdownSelectLabelProps) {\n return (\n <div\n data-slot=\"dropdown-select-label\"\n className={cn(\n 'flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details',\n className\n )}\n {...props}\n >\n {children}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">*</span>\n )}\n </div>\n )\n}\n\n/* ─── Trigger ──────────────────────────────────────────────── */\n\nexport type DropdownSelectTriggerProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Trigger>, 'asChild'>\n\nfunction DropdownSelectTrigger({ className, ...props }: DropdownSelectTriggerProps) {\n const { value, displayLabel, placeholder, icon, disabled, error, open, options, setOpen, onValueChange, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n const len = options.length\n if (len === 0) return\n if (e.key === 'ArrowDown') {\n setHighlightedIndex(highlightedIndex < len - 1 ? highlightedIndex + 1 : 0)\n } else {\n setHighlightedIndex(highlightedIndex > 0 ? highlightedIndex - 1 : len - 1)\n }\n } else if (e.key === 'Enter' && open && highlightedIndex >= 0) {\n e.preventDefault()\n const opt = options[highlightedIndex]\n if (opt) onValueChange(opt.value)\n } else if (e.key === 'Escape' && open) {\n e.preventDefault()\n setOpen(false)\n }\n },\n [disabled, open, setOpen, options, highlightedIndex, setHighlightedIndex, onValueChange]\n )\n\n const hasValue = value !== '' && displayLabel !== ''\n\n return (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n data-slot=\"dropdown-select-trigger\"\n disabled={disabled}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n onKeyDown={handleKeyDown}\n className={cn(\n // Base\n 'flex w-full items-center gap-2 h-[48px] rounded-[8px] px-[12px] py-[8px] font-sans font-medium text-[16px] leading-[24px] outline-none transition-colors cursor-pointer',\n // Default state\n 'border border-gray-stroke-default bg-white dark:bg-background',\n // Placeholder vs selected text\n hasValue\n ? 'text-vibrant-text-heading'\n : 'text-muted-foreground',\n // Hover\n !disabled && !error && 'hover:border-focus-ring',\n // Focus\n !disabled && !error && 'focus-visible:border-focus-ring focus-visible:border-2 focus-visible:px-[11px] focus-visible:py-[7px]',\n // Open/Active\n open && !error && 'border-focus-ring',\n // Error\n error && 'border-error-stroke-light bg-error-surface-light',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n <span className=\"flex-1 text-left truncate\">\n {hasValue ? displayLabel : placeholder}\n </span>\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </button>\n </PopoverPrimitive.Trigger>\n )\n}\n\n/* ─── Content ──────────────────────────────────────────────── */\n\nexport type DropdownSelectContentProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Content>, 'asChild'>\n\nfunction DropdownSelectContent({\n className,\n children,\n ...props\n}: DropdownSelectContentProps) {\n const { setHighlightedIndex } = useDropdownSelect()\n\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"dropdown-select-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={() => setHighlightedIndex(-1)}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n // Custom scrollbar\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n // Animations\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {children}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n )\n}\n\n/* ─── Option ───────────────────────────────────────────────── */\n\nexport interface DropdownSelectOptionProps extends React.ComponentProps<'div'> {\n value: string\n label?: string\n disabled?: boolean\n}\n\nfunction DropdownSelectOption({\n className,\n value: optionValue,\n label,\n disabled: optionDisabled = false,\n children,\n ...props\n}: DropdownSelectOptionProps) {\n const { value, onValueChange, registerOption, options, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const displayText = label ?? (typeof children === 'string' ? children : '')\n\n React.useEffect(() => {\n if (displayText) {\n registerOption(optionValue, displayText)\n }\n }, [optionValue, displayText, registerOption])\n\n const isSelected = value === optionValue\n const index = options.findIndex(o => o.value === optionValue)\n const isHighlighted = highlightedIndex === index\n\n return (\n <div\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={optionDisabled}\n data-slot=\"dropdown-select-option\"\n data-highlighted={isHighlighted || undefined}\n data-selected={isSelected || undefined}\n onClick={() => {\n if (!optionDisabled) onValueChange(optionValue)\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n // Hover/highlighted\n 'hover:bg-gray-surface-light hover:font-semibold',\n isHighlighted && 'bg-gray-surface-light font-semibold',\n // Selected\n isSelected && 'font-semibold',\n // Disabled\n optionDisabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {children ?? displayText}\n </div>\n )\n}\n\n/* ─── Exports ──────────────────────────────────────────────── */\n\nexport {\n DropdownSelect,\n DropdownSelectLabel,\n DropdownSelectTrigger,\n DropdownSelectContent,\n DropdownSelectOption,\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger\n} from '@/components/ui/accordion'\nimport { bodyTextVariants } from '@/components/ui/typography'\nimport { cn } from '@/lib/utils'\n\nexport interface FaqItem {\n question: string\n /** A plain string renders as one paragraph; pass a node for rich text. */\n answer: React.ReactNode\n}\n\nexport interface FaqAccordionProps {\n faqs: FaqItem[]\n className?: string\n /** Fade-and-rise the questions in on mount, 80ms apart. */\n staggerReveal?: boolean\n /** Question text to open on mount, and again whenever this value changes. */\n defaultOpenQuestion?: string\n /** Merged onto every question label. */\n questionClassName?: string\n /** Merged onto every answer body. */\n answerClassName?: string\n /** Merged onto every item card. */\n itemClassName?: string\n}\n\n/**\n * Data-driven FAQ list on the outlined Accordion: one question open at a\n * time, a + that morphs into a −, and a fade-while-growing answer. Reach for\n * this over hand-assembling `Accordion*` whenever the content is a plain\n * question/answer array.\n */\nfunction FaqAccordion({\n faqs,\n className,\n staggerReveal = false,\n defaultOpenQuestion,\n questionClassName,\n answerClassName,\n itemClassName\n}: FaqAccordionProps) {\n // Radix wants a unique value per item. Question text is the natural key,\n // suffixed only when a list repeats a question.\n const values = React.useMemo(() => {\n const seen = new Set<string>()\n return faqs.map((faq, i) => {\n const value = seen.has(faq.question)\n ? `${faq.question}__${i}`\n : faq.question\n seen.add(faq.question)\n return value\n })\n }, [faqs])\n\n const valueFor = (question?: string) => {\n if (!question) return ''\n const i = faqs.findIndex(faq => faq.question === question)\n return i >= 0 ? values[i] : ''\n }\n\n const [value, setValue] = React.useState(() => valueFor(defaultOpenQuestion))\n\n // Re-open when the caller points at a different question, without an\n // effect: adjust state during render, the way React docs recommend.\n const [seenDefault, setSeenDefault] = React.useState(defaultOpenQuestion)\n if (defaultOpenQuestion !== seenDefault) {\n setSeenDefault(defaultOpenQuestion)\n setValue(valueFor(defaultOpenQuestion))\n }\n\n return (\n <Accordion\n type=\"single\"\n collapsible\n variant=\"outlined\"\n staggerReveal={staggerReveal}\n value={value}\n onValueChange={setValue}\n className={className}\n >\n {faqs.map((faq, i) => (\n <AccordionItem\n key={values[i]}\n value={values[i]}\n revealIndex={i}\n className={cn('rounded-lg', itemClassName)}\n >\n <AccordionTrigger icon=\"plus-minus\">\n <span className={cn('text-vibrant-text-heading', questionClassName)}>\n {faq.question}\n </span>\n </AccordionTrigger>\n <AccordionContent\n className={cn(\n bodyTextVariants({ size: 'md' }),\n 'font-normal [&_a]:text-primary-stroke-default [&_a]:underline',\n answerClassName\n )}\n >\n {typeof faq.answer === 'string' ? <p>{faq.answer}</p> : faq.answer}\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport { FaqAccordion }\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst displayTextVariants = cva(\n 'tracking-normal font-normal font-serif italic text-vibrant-text-display',\n {\n variants: {\n size: {\n lg: 'text-4xl md:text-[3.25rem] leading-[44px] md:leading-[64px]',\n md: 'text-[1.75rem] md:text-4xl leading-[36px] md:leading-[44px]',\n sm: 'text-lg md:text-xl leading-[26px] md:leading-[28px]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nfunction DisplayHeading({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> &\n VariantProps<typeof displayTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(displayTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nconst bodyTextVariants = cva('font-sans text-vibrant-text-body', {\n variants: {\n size: {\n lg: 'text-lg md:text-xl leading-[26px] md:leading-[28px]',\n md: 'text-base leading-[24px]',\n sm: 'text-sm leading-[20px]',\n xs: 'text-xs leading-[16px]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Body({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'p'> &\n VariantProps<typeof bodyTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'p'\n\n return (\n <Comp\n data-slot=\"p\"\n className={cn(bodyTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nfunction HeadingXL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(\n 'text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h2'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h2'\n\n return (\n <Comp\n data-slot=\"h2\"\n className={cn(\n 'text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingM({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h3'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h3'\n\n return (\n <Comp\n data-slot=\"h3\"\n className={cn(\n 'text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h4'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h4'\n\n return (\n <Comp\n data-slot=\"h4\"\n className={cn(\n 'text-base leading-[24px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h5'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h5'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-sm leading-[20px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h6'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h6'\n\n return (\n <Comp\n data-slot=\"h6\"\n className={cn(\n 'text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\n/* Medium weight heading variants */\n\nfunction HeadingXLMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(\n 'text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingLMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h2'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h2'\n\n return (\n <Comp\n data-slot=\"h2\"\n className={cn(\n 'text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingMMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h3'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h3'\n\n return (\n <Comp\n data-slot=\"h3\"\n className={cn(\n 'text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h4'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h4'\n\n return (\n <Comp\n data-slot=\"h4\"\n className={cn(\n 'text-base leading-[24px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h5'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h5'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-sm leading-[20px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXXSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h6'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h6'\n\n return (\n <Comp\n data-slot=\"h6\"\n className={cn(\n 'text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Body,\n bodyTextVariants,\n DisplayHeading,\n displayTextVariants,\n HeadingL,\n HeadingLMedium,\n HeadingM,\n HeadingMMedium,\n HeadingS,\n HeadingSMedium,\n HeadingXL,\n HeadingXLMedium,\n HeadingXS,\n HeadingXSMedium,\n HeadingXXS,\n HeadingXXSMedium\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","'use client'\n\nimport { cn } from '@/lib/utils'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nconst labelTextVariants = cva('font-sans font-semibold text-vibrant-text-body', {\n variants: {\n size: {\n lg: 'text-base md:text-lg md:leading-[1.625rem] leading-[1.5rem]',\n md: 'md:text-base text-sm md:leading-[1.5rem] leading-[1.25rem] ',\n sm: 'md:text-sm text-xs md:leading-[1.25rem] leading-[1.125rem] ',\n xs: 'text-xs leading-[1.125rem]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Label({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'label'> &\n VariantProps<typeof labelTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'label'\n\n return (\n <Comp\n data-slot=\"label\"\n className={cn(labelTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nexport { Label, labelTextVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst InputOTPErrorContext = React.createContext(false)\n\nfunction InputOTP({\n className,\n containerClassName,\n error,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n error?: boolean\n}) {\n return (\n <InputOTPErrorContext.Provider value={error ?? false}>\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-40\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n </InputOTPErrorContext.Provider>\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n const isHovering = inputOTPContext?.isHovering ?? false\n const error = React.useContext(InputOTPErrorContext)\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n // Base layout & typography\n \"relative flex size-10 items-center justify-center\",\n \"border-y border-r first:border-l text-sm font-medium leading-5\",\n \"transition-all outline-none\",\n \"first:rounded-l-[4px] last:rounded-r-[4px]\",\n \"text-foreground\",\n // Default state (no error)\n !error && \"border-gray-stroke-default bg-background\",\n // Hover: all slots turn blue (non-error, non-active)\n !error && isHovering && !isActive && \"border-focus-ring\",\n // Active slot (non-error): 2px blue border\n !error && isActive && \"z-10 border-2 border-focus-ring\",\n // Error (non-active)\n error && !isActive && \"border-error-stroke-default bg-error-surface-subtle\",\n // Error + active\n error && isActive && \"z-10 border-2 border-error-stroke-default bg-error-surface-subtle\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-focus-ring h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n )\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </MenubarPortal>\n )\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Types ────────────────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextOption {\n value: string\n label: string\n}\n\n/* ─── Tag ──────────────────────────────────────────────────── */\n\ninterface TagProps {\n label: string\n onRemove: () => void\n}\n\nfunction Tag({ label, onRemove }: TagProps) {\n return (\n <span\n data-slot=\"multi-select-tag\"\n className=\"inline-flex items-center gap-[8px] h-[32px] px-[12px] py-[8px] rounded-[8px] bg-primary-surface-subtle font-sans font-medium text-[14px] leading-[20px] text-primary-stroke-default shrink-0\"\n >\n {label}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n className=\"flex items-center justify-center size-[20px] text-primary-stroke-default hover:text-primary-surface-default transition-colors cursor-pointer\"\n aria-label={`Remove ${label}`}\n >\n <X className=\"size-[16px]\" />\n </button>\n </span>\n )\n}\n\n/* ─── Main Component ───────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextProps {\n /** Current tag values */\n values?: string[]\n /** Default tag values (uncontrolled) */\n defaultValues?: string[]\n /** Callback when tags change */\n onValuesChange?: (values: string[]) => void\n /** Suggestion options shown in dropdown */\n options?: MultiSelectFreeTextOption[]\n /** Placeholder when no tags and no input text */\n placeholder?: string\n /** Left icon */\n icon?: React.ReactNode\n /** Label text */\n label?: string\n /** Show mandatory asterisk on label */\n mandatory?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Additional className */\n className?: string\n}\n\nfunction MultiSelectFreeText({\n values: valuesProp,\n defaultValues = [],\n onValuesChange,\n options = [],\n placeholder = 'Placeholder text',\n icon,\n label,\n mandatory = false,\n disabled = false,\n className,\n}: MultiSelectFreeTextProps) {\n const [internalValues, setInternalValues] = React.useState<string[]>(defaultValues)\n const [inputValue, setInputValue] = React.useState('')\n const [open, setOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const triggerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valuesProp !== undefined\n const values = isControlled ? valuesProp : internalValues\n\n const updateValues = React.useCallback(\n (next: string[]) => {\n if (!isControlled) setInternalValues(next)\n onValuesChange?.(next)\n },\n [isControlled, onValuesChange]\n )\n\n const addTag = React.useCallback(\n (tag: string) => {\n const trimmed = tag.trim()\n if (!trimmed || values.includes(trimmed)) return\n updateValues([...values, trimmed])\n setInputValue('')\n setHighlightedIndex(-1)\n },\n [values, updateValues]\n )\n\n const removeTag = React.useCallback(\n (tag: string) => {\n updateValues(values.filter((v) => v !== tag))\n },\n [values, updateValues]\n )\n\n // Filter options based on input text and already-selected values\n const filteredOptions = React.useMemo(() => {\n const lower = inputValue.toLowerCase()\n return options.filter(\n (opt) =>\n !values.includes(opt.value) &&\n (lower === '' || opt.label.toLowerCase().includes(lower))\n )\n }, [options, inputValue, values])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n if (highlightedIndex >= 0 && filteredOptions[highlightedIndex]) {\n addTag(filteredOptions[highlightedIndex].value)\n } else if (inputValue.trim()) {\n addTag(inputValue)\n }\n } else if (e.key === 'Backspace' && inputValue === '' && values.length > 0) {\n removeTag(values[values.length - 1])\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n } else if (e.key === 'Escape') {\n setOpen(false)\n setHighlightedIndex(-1)\n }\n },\n [highlightedIndex, filteredOptions, inputValue, values, addTag, removeTag, open]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n if (!open) setOpen(true)\n setHighlightedIndex(-1)\n },\n [open]\n )\n\n const handleOptionClick = React.useCallback(\n (optValue: string) => {\n addTag(optValue)\n inputRef.current?.focus()\n },\n [addTag]\n )\n\n const handleTriggerClick = React.useCallback(() => {\n if (disabled) return\n inputRef.current?.focus()\n if (!open) setOpen(true)\n }, [disabled, open])\n\n const isFocused = open\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n <div\n data-slot=\"multi-select-free-text\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">\n *\n </span>\n )}\n </div>\n )}\n\n {/* Input field */}\n <PopoverPrimitive.Anchor asChild>\n <div\n ref={triggerRef}\n onClick={handleTriggerClick}\n className={cn(\n 'flex flex-wrap items-center gap-[8px] w-full min-h-[48px] rounded-[8px] px-[12px] py-[8px] border bg-white dark:bg-background transition-colors cursor-text',\n isFocused && !disabled\n ? 'border-focus-ring'\n : 'border-gray-stroke-default',\n !disabled && !isFocused && 'hover:border-focus-ring',\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n\n {/* Tags + inline input */}\n <div className=\"flex flex-wrap items-center gap-[8px] flex-1 min-w-0\">\n {values.map((tag) => (\n <Tag key={tag} label={tag} onRemove={() => removeTag(tag)} />\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => { if (!open && !disabled) setOpen(true) }}\n disabled={disabled}\n placeholder={values.length === 0 ? placeholder : ''}\n className={cn(\n 'flex-1 min-w-[80px] bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n </div>\n\n {/* Chevron */}\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </div>\n </PopoverPrimitive.Anchor>\n\n {/* Dropdown */}\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"multi-select-free-text-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2'\n )}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {/* Show typed text as \"Free text\" option if it doesn't match any option exactly */}\n {inputValue.trim() !== '' &&\n !options.some(\n (o) => o.label.toLowerCase() === inputValue.toLowerCase()\n ) && (\n <div\n role=\"option\"\n aria-selected={false}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => addTag(inputValue.trim())}\n onMouseEnter={() => setHighlightedIndex(-2)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === -2 &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {inputValue.trim()}\n </div>\n )}\n {filteredOptions.map((opt, idx) => (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={values.includes(opt.value)}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => handleOptionClick(opt.value)}\n onMouseEnter={() => setHighlightedIndex(idx)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === idx &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {opt.label}\n </div>\n ))}\n {filteredOptions.length === 0 && inputValue.trim() === '' && (\n <div className=\"flex items-center h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-muted-foreground\">\n No options available\n </div>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </div>\n </PopoverPrimitive.Root>\n )\n}\n\nexport { MultiSelectFreeText }\n","import * as React from 'react'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cva } from 'class-variance-authority'\nimport { ChevronDownIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n 'group flex flex-1 list-none items-center justify-center gap-1',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn('relative', className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1'\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto',\n 'group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-400 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n 'absolute top-full left-0 isolate z-50 flex justify-center'\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle\n}\n","'use client'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Check, Circle } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst optionCardVariants = cva(\n 'group flex items-center gap-2 h-12 p-2 cursor-pointer transition-all duration-200 font-medium text-base leading-6 outline-none select-none',\n {\n variants: {\n hasStroke: {\n true: 'border rounded-lg',\n false: 'rounded-lg'\n },\n selected: {\n true: '',\n false: ''\n },\n weight: {\n hug: 'w-fit',\n resizable: 'w-full'\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: ''\n }\n },\n compoundVariants: [\n // Stroke + not selected\n {\n hasStroke: true,\n selected: false,\n disabled: false,\n className:\n 'border-gray-stroke-default text-vibrant-text-heading hover:border-primary-stroke-default'\n },\n // Stroke + selected\n {\n hasStroke: true,\n selected: true,\n disabled: false,\n className:\n 'border-primary-stroke-default bg-primary-surface-subtle text-primary-stroke-default'\n },\n // Stroke + disabled + not selected\n {\n hasStroke: true,\n selected: false,\n disabled: true,\n className: 'border-gray-stroke-default text-vibrant-text-heading'\n },\n // Stroke + disabled + selected\n {\n hasStroke: true,\n selected: true,\n disabled: true,\n className:\n 'border-gray-stroke-default text-vibrant-text-heading'\n },\n // No stroke + not selected\n {\n hasStroke: false,\n selected: false,\n disabled: false,\n className: 'text-vibrant-text-heading'\n },\n // No stroke + selected\n {\n hasStroke: false,\n selected: true,\n disabled: false,\n className:\n 'bg-primary-surface-subtle text-primary-stroke-default'\n },\n // No stroke + disabled\n {\n hasStroke: false,\n disabled: true,\n className: 'text-vibrant-text-heading'\n }\n ],\n defaultVariants: {\n hasStroke: true,\n selected: false,\n weight: 'hug',\n disabled: false\n }\n }\n)\n\n// Visual-only radio indicator (not a Radix primitive)\nfunction RadioIndicator({ selected }: { selected?: boolean }) {\n return (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-5 rounded-full border-2 transition-colors duration-200',\n selected\n ? 'bg-primary-stroke-default border-primary-stroke-default'\n : 'border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default'\n )}\n >\n {selected && <Circle className=\"size-2 fill-white text-white\" />}\n </span>\n )\n}\n\n// Visual-only checkbox indicator (not a Radix primitive)\nfunction CheckboxIndicator({ selected }: { selected?: boolean }) {\n return (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-5 rounded-[4px] border-2 transition-colors duration-200',\n selected\n ? 'bg-primary-stroke-default border-primary-stroke-default'\n : 'border-gray-stroke-default bg-transparent group-hover:border-primary-stroke-default'\n )}\n >\n {selected && <Check className=\"size-4 text-white\" />}\n </span>\n )\n}\n\nexport interface OptionCardProps\n extends Omit<React.ComponentProps<'button'>, 'disabled'>,\n Omit<VariantProps<typeof optionCardVariants>, 'selected' | 'disabled'> {\n /** Whether this option is selected */\n selected?: boolean\n /** Whether this option is disabled */\n disabled?: boolean\n /** Position of the selector control */\n selectorPosition?: 'left' | 'right'\n /** Type of selector: radio (single) or checkbox (multiple) */\n selectionType?: 'single' | 'multiple'\n /** Optional leading icon */\n icon?: React.ReactNode\n}\n\nfunction OptionCard({\n className,\n children,\n selected = false,\n disabled = false,\n hasStroke = true,\n weight = 'hug',\n selectorPosition = 'right',\n selectionType = 'single',\n icon,\n ...props\n}: OptionCardProps) {\n const Indicator =\n selectionType === 'single' ? RadioIndicator : CheckboxIndicator\n\n const indicator = <Indicator selected={selected} />\n\n return (\n <button\n type=\"button\"\n data-slot=\"option-card\"\n data-state={selected ? 'selected' : 'unselected'}\n disabled={disabled}\n className={cn(\n optionCardVariants({\n hasStroke,\n selected,\n weight,\n disabled\n }),\n className\n )}\n {...props}\n >\n {selectorPosition === 'left' && indicator}\n <span className=\"flex items-center gap-2 flex-1 min-w-0\">\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <span className=\"truncate\">{children}</span>\n </span>\n {selectorPosition === 'right' && indicator}\n </button>\n )\n}\n\nexport { OptionCard, optionCardVariants }\n","import * as React from 'react'\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon\n} from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport { Button, buttonVariants } from '@/components/ui/button'\n\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size\n }),\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn('flex size-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis\n}\n","'use client'\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n 'bg-primary/20 relative h-2 w-full overflow-hidden rounded-full',\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all rounded-full\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst progressBarVariants = cva('relative overflow-hidden rounded-[8px]', {\n variants: {\n device: {\n desktop: 'w-[360px] h-[4px]',\n mobile: 'w-[342px] h-[4px]'\n }\n },\n defaultVariants: {\n device: 'desktop'\n }\n})\n\nexport interface ProgressBarProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof progressBarVariants> {\n /** Current step (1-based). Must be between 1 and totalSteps. */\n currentStep?: number\n /** Total number of steps. Defaults to 7. */\n totalSteps?: number\n /** Direct percentage value (0-100). Overrides step-based calculation when provided. */\n value?: number\n}\n\nfunction ProgressBar({\n className,\n device,\n currentStep = 1,\n totalSteps = 7,\n value,\n ...props\n}: ProgressBarProps) {\n const percentage =\n value !== undefined\n ? Math.min(100, Math.max(0, value))\n : Math.min(100, Math.max(0, (currentStep / totalSteps) * 100))\n\n return (\n <div\n data-slot=\"progress-bar\"\n className={cn(progressBarVariants({ device }), className)}\n role=\"progressbar\"\n aria-valuenow={Math.round(percentage)}\n aria-valuemin={0}\n aria-valuemax={100}\n {...props}\n >\n {/* Background track */}\n <div className=\"absolute inset-0 rounded-[8px] bg-primary-surface-light\" />\n {/* Fill */}\n <div\n data-slot=\"progress-bar-fill\"\n className=\"absolute inset-y-0 left-0 rounded-[8px] bg-primary-surface-default transition-[width] duration-300 ease-in-out\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n}\n\nexport { ProgressBar, progressBarVariants }\n","'use client'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { CircleIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'cursor-pointer border-gray-stroke-default text-primary-stroke-default focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-5 shrink-0 rounded-full border-2 transition-all duration-400 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-40 data-[state=checked]:bg-primary-stroke-default data-[state=checked]:border-primary-stroke-default',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-white absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"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=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","'use client'\n\nimport * as React from 'react'\nimport { Search, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Suggestion Item ──────────────────────────────────────── */\n\nexport interface SearchSuggestion {\n icon?: React.ReactNode\n label: string\n}\n\n/* ─── Props ────────────────────────────────────────────────── */\n\nexport interface SearchInputProps {\n /** 'icon' renders a 36×36 search icon button; 'button' renders a \"Search\" text button */\n variant?: 'icon' | 'button'\n /** Controlled value */\n value?: string\n /** Uncontrolled default value */\n defaultValue?: string\n /** Called on every input change */\n onValueChange?: (value: string) => void\n /** Called on Enter key or search button click */\n onSearch?: (value: string) => void\n /** Called when the clear (X) button is clicked */\n onClear?: () => void\n placeholder?: string\n /** Label text above the input */\n label?: string\n /** Helper text below the input */\n helperText?: string\n /** Optional left icon */\n icon?: React.ReactNode\n /** Error state */\n error?: boolean\n /** Error helper text (overrides helperText when error=true) */\n errorMessage?: string\n /** Disabled state */\n disabled?: boolean\n /** Suggestion items shown in dropdown when typing */\n suggestions?: SearchSuggestion[]\n /** Called when a suggestion is clicked */\n onSuggestionClick?: (label: string) => void\n className?: string\n}\n\nfunction SearchInput({\n variant = 'icon',\n value: valueProp,\n defaultValue = '',\n onValueChange,\n onSearch,\n onClear,\n placeholder = 'Placeholder',\n label,\n helperText,\n icon,\n error = false,\n errorMessage,\n disabled = false,\n suggestions = [],\n onSuggestionClick,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [isFocused, setIsFocused] = React.useState(false)\n const [showSuggestions, setShowSuggestions] = React.useState(false)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valueProp !== undefined\n const currentValue = isControlled ? valueProp : internalValue\n const hasValue = currentValue.trim().length > 0\n const isFilledEdit = hasValue && !isFocused && !error\n\n const updateValue = React.useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next)\n onValueChange?.(next)\n },\n [isControlled, onValueChange]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n updateValue(e.target.value)\n if (e.target.value.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n } else {\n setShowSuggestions(false)\n }\n },\n [updateValue, suggestions.length]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n onSearch?.(currentValue)\n setShowSuggestions(false)\n } else if (e.key === 'Escape') {\n setShowSuggestions(false)\n inputRef.current?.blur()\n }\n },\n [currentValue, onSearch]\n )\n\n const handleClear = React.useCallback(() => {\n updateValue('')\n onClear?.()\n inputRef.current?.focus()\n }, [updateValue, onClear])\n\n const handleSearchClick = React.useCallback(() => {\n onSearch?.(currentValue)\n setShowSuggestions(false)\n }, [currentValue, onSearch])\n\n const handleSuggestionClick = React.useCallback(\n (label: string) => {\n updateValue(label)\n onSuggestionClick?.(label)\n setShowSuggestions(false)\n inputRef.current?.focus()\n },\n [updateValue, onSuggestionClick]\n )\n\n const handleFocus = React.useCallback(() => {\n if (disabled) return\n setIsFocused(true)\n if (currentValue.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n }\n }, [disabled, currentValue, suggestions.length])\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent) => {\n // Don't blur if clicking inside the container (e.g., search button, suggestion)\n if (containerRef.current?.contains(e.relatedTarget as Node)) return\n setIsFocused(false)\n setShowSuggestions(false)\n },\n []\n )\n\n const displayHelperText = error && errorMessage ? errorMessage : helperText\n const showClearButton = (isFilledEdit || error) && hasValue\n\n return (\n <div\n ref={containerRef}\n data-slot=\"search-input\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n onBlur={handleBlur}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n </div>\n )}\n\n {/* Input container */}\n <div\n className={cn(\n 'flex items-center w-full h-[48px] rounded-[8px] overflow-hidden transition-colors',\n // Border + background\n error\n ? 'border border-error-stroke-light bg-error-surface-light'\n : isFocused\n ? 'border-2 border-focus-ring bg-white dark:bg-background'\n : 'border border-gray-stroke-default bg-white dark:bg-background',\n // Hover (only when not focused, not error, not disabled)\n !isFocused && !error && !disabled && 'hover:border-focus-ring',\n // Padding - adjust for 2px border on focus to prevent layout shift\n error\n ? 'pl-[12px] pr-[12px] py-[8px]'\n : isFocused\n ? 'pl-[11px] pr-[7px] py-[7px]'\n : 'pl-[12px] pr-[8px] py-[8px]',\n // Gap\n 'gap-[8px]',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px]',\n error ? 'text-error-surface-default' : isFocused ? 'text-focus-ring' : 'text-muted-foreground'\n )}\n >\n {icon}\n </span>\n )}\n\n {/* Text input */}\n <input\n ref={inputRef}\n type=\"text\"\n value={currentValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n disabled={disabled}\n placeholder={placeholder}\n className={cn(\n 'flex-1 min-w-0 bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n\n {/* Right action: Search button, icon, or clear */}\n {showClearButton ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"flex items-center justify-center shrink-0 size-[20px] text-muted-foreground hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <X className=\"size-[16px]\" />\n </button>\n ) : variant === 'button' ? (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 h-[36px] min-w-[100px] px-[16px] py-[8px] rounded-[6px] bg-primary-surface-default font-sans font-semibold text-[16px] leading-[24px] text-white cursor-pointer disabled:cursor-not-allowed transition-colors\"\n tabIndex={-1}\n >\n Search\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 size-[36px] rounded-[6px] bg-primary-surface-default cursor-pointer disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Search\"\n tabIndex={-1}\n >\n <Search className=\"size-[20px] text-white\" />\n </button>\n )}\n </div>\n\n {/* Helper text */}\n {displayHelperText && (\n <p\n className={cn(\n 'font-sans font-normal text-[12px] leading-[16px] w-full',\n error ? 'text-error-surface-default' : 'text-vibrant-text-details'\n )}\n >\n {displayHelperText}\n </p>\n )}\n\n {/* Suggestions dropdown */}\n {showSuggestions && suggestions.length > 0 && (\n <div\n data-slot=\"search-input-suggestions\"\n className=\"w-full rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)] flex flex-col gap-[16px]\"\n >\n {suggestions.map((suggestion, idx) => (\n <button\n key={`${suggestion.label}-${idx}`}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion.label)}\n onMouseDown={(e) => e.preventDefault()}\n className=\"flex items-center gap-[13px] h-[40px] pr-[12px] rounded-[8px] w-full text-left hover:bg-gray-surface-light transition-colors cursor-pointer\"\n >\n {suggestion.icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[40px] rounded-[8px] bg-gray-surface-light [&_svg]:size-[20px] text-muted-foreground\">\n {suggestion.icon}\n </span>\n )}\n <span className=\"flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate\">\n {suggestion.label}\n </span>\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { SearchInput }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronsUpDown, XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\"\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport type SearchableSelectOption = {\n value: string\n label: string\n disabled?: boolean\n group?: string\n}\n\n// ─── Context ─────────────────────────────────────────────────────────\n\ninterface SearchableSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n mode: \"single\" | \"multiple\"\n value: string\n setValue: (value: string) => void\n values: string[]\n setValues: (values: string[]) => void\n searchable: boolean\n searchPlaceholder: string\n placeholder: string\n disabled: boolean\n maxCount: number\n options: SearchableSelectOption[]\n optionMap: Map<string, string>\n}\n\nconst SearchableSelectContext =\n React.createContext<SearchableSelectContextValue | null>(null)\n\nfunction useSearchableSelect() {\n const ctx = React.useContext(SearchableSelectContext)\n if (!ctx) {\n throw new Error(\n \"SearchableSelect compound components must be used within <SearchableSelect>\"\n )\n }\n return ctx\n}\n\n// ─── Root ────────────────────────────────────────────────────────────\n\ninterface SearchableSelectProps {\n mode?: \"single\" | \"multiple\"\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n values?: string[]\n defaultValues?: string[]\n onValuesChange?: (values: string[]) => void\n searchable?: boolean\n searchPlaceholder?: string\n placeholder?: string\n disabled?: boolean\n maxCount?: number\n options?: SearchableSelectOption[]\n open?: boolean\n onOpenChange?: (open: boolean) => void\n children?: React.ReactNode\n}\n\nfunction SearchableSelect({\n mode = \"single\",\n value: controlledValue,\n defaultValue = \"\",\n onValueChange,\n values: controlledValues,\n defaultValues = [],\n onValuesChange,\n searchable = true,\n searchPlaceholder = \"Search...\",\n placeholder = \"Select...\",\n disabled = false,\n maxCount = Infinity,\n options = [],\n open: controlledOpen,\n onOpenChange,\n children,\n}: SearchableSelectProps) {\n const [internalOpen, setInternalOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalValues, setInternalValues] =\n React.useState<string[]>(defaultValues)\n\n const open = controlledOpen ?? internalOpen\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (controlledOpen !== undefined) {\n onOpenChange?.(next)\n } else {\n setInternalOpen(next)\n onOpenChange?.(next)\n }\n },\n [controlledOpen, onOpenChange]\n )\n\n const value = controlledValue ?? internalValue\n const setValue = React.useCallback(\n (next: string) => {\n if (controlledValue === undefined) {\n setInternalValue(next)\n }\n onValueChange?.(next)\n },\n [controlledValue, onValueChange]\n )\n\n const values = controlledValues ?? internalValues\n const setValues = React.useCallback(\n (next: string[]) => {\n if (controlledValues === undefined) {\n setInternalValues(next)\n }\n onValuesChange?.(next)\n },\n [controlledValues, onValuesChange]\n )\n\n const optionMap = React.useMemo(() => {\n const map = new Map<string, string>()\n for (const opt of options) {\n map.set(opt.value, opt.label)\n }\n return map\n }, [options])\n\n const ctx = React.useMemo<SearchableSelectContextValue>(\n () => ({\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n }),\n [\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n ]\n )\n\n return (\n <SearchableSelectContext.Provider value={ctx}>\n <Popover open={open} onOpenChange={setOpen}>\n {children}\n </Popover>\n </SearchableSelectContext.Provider>\n )\n}\n\n// ─── Trigger ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof PopoverTrigger> & {\n size?: \"sm\" | \"default\"\n}) {\n const ctx = useSearchableSelect()\n\n const renderContent = () => {\n if (children) return children\n\n if (ctx.mode === \"single\") {\n const label = ctx.optionMap.get(ctx.value)\n return (\n <span\n data-slot=\"searchable-select-value\"\n className={cn(\n \"truncate\",\n !label && \"text-muted-foreground\"\n )}\n >\n {label || ctx.placeholder}\n </span>\n )\n }\n\n // Multi mode\n if (ctx.values.length === 0) {\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"text-muted-foreground\"\n >\n {ctx.placeholder}\n </span>\n )\n }\n\n const visible = ctx.values.slice(0, ctx.maxCount)\n const remaining = ctx.values.length - visible.length\n\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"flex flex-wrap items-center gap-1\"\n >\n {visible.map((v) => (\n <Badge\n key={v}\n variant=\"secondary\"\n className=\"gap-1 pr-1\"\n >\n <span className=\"truncate max-w-[120px]\">\n {ctx.optionMap.get(v) || v}\n </span>\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label={`Remove ${ctx.optionMap.get(v) || v}`}\n className=\"rounded-sm hover:bg-muted cursor-pointer\"\n onPointerDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation()\n ctx.setValues(ctx.values.filter((val) => val !== v))\n }}\n >\n <XIcon className=\"size-3\" />\n </span>\n </Badge>\n ))}\n {remaining > 0 && (\n <Badge variant=\"outline\" className=\"text-muted-foreground\">\n +{remaining} more\n </Badge>\n )}\n </span>\n )\n }\n\n return (\n <PopoverTrigger\n data-slot=\"searchable-select-trigger\"\n data-size={size}\n disabled={ctx.disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:min-h-9 data-[size=sm]:min-h-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ctx.mode === \"multiple\" && \"h-auto flex-wrap whitespace-normal\",\n className\n )}\n {...props}\n >\n {renderContent()}\n <ChevronsUpDown className=\"size-4 shrink-0 opacity-50\" />\n </PopoverTrigger>\n )\n}\n\n// ─── Content ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectContent({\n className,\n children,\n emptyText = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof PopoverContent> & {\n emptyText?: string\n}) {\n const ctx = useSearchableSelect()\n\n const groupedOptions = React.useMemo(() => {\n if (ctx.options.length === 0) return null\n const groups = new Map<string, SearchableSelectOption[]>()\n for (const opt of ctx.options) {\n const key = opt.group || \"\"\n if (!groups.has(key)) groups.set(key, [])\n groups.get(key)!.push(opt)\n }\n return groups\n }, [ctx.options])\n\n const renderAutoItems = () => {\n if (!groupedOptions) return null\n const entries = Array.from(groupedOptions.entries())\n if (entries.length === 1 && entries[0][0] === \"\") {\n return entries[0][1].map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))\n }\n return entries.map(([group, opts]) => (\n <SearchableSelectGroup key={group} heading={group || undefined}>\n {opts.map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))}\n </SearchableSelectGroup>\n ))\n }\n\n return (\n <PopoverContent\n data-slot=\"searchable-select-content\"\n className={cn(\"w-[var(--radix-popover-trigger-width)] p-0\", className)}\n align=\"start\"\n {...props}\n >\n <Command>\n {ctx.searchable && (\n <CommandInput placeholder={ctx.searchPlaceholder} />\n )}\n <CommandList>\n <CommandEmpty>{emptyText}</CommandEmpty>\n {children || renderAutoItems()}\n </CommandList>\n </Command>\n </PopoverContent>\n )\n}\n\n// ─── Item ────────────────────────────────────────────────────────────\n\nfunction SearchableSelectItem({\n className,\n value,\n children,\n disabled,\n ...props\n}: Omit<React.ComponentProps<typeof CommandItem>, \"onSelect\" | \"value\"> & {\n value: string\n disabled?: boolean\n}) {\n const ctx = useSearchableSelect()\n\n const isSelected =\n ctx.mode === \"single\"\n ? ctx.value === value\n : ctx.values.includes(value)\n\n const handleSelect = () => {\n if (disabled) return\n if (ctx.mode === \"single\") {\n ctx.setValue(value === ctx.value ? \"\" : value)\n ctx.setOpen(false)\n } else {\n ctx.setValues(\n isSelected\n ? ctx.values.filter((v) => v !== value)\n : [...ctx.values, value]\n )\n }\n }\n\n return (\n <CommandItem\n data-slot=\"searchable-select-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none\",\n ctx.mode === \"multiple\" && \"pl-8\",\n className\n )}\n onSelect={handleSelect}\n data-disabled={disabled || undefined}\n {...props}\n >\n {ctx.mode === \"multiple\" && (\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <span\n className={cn(\n \"size-4 rounded-sm border border-primary transition-colors\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"bg-transparent\"\n )}\n >\n {isSelected && <CheckIcon className=\"size-4 p-0.5\" />}\n </span>\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {ctx.mode === \"single\" && isSelected && (\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <CheckIcon className=\"size-4\" />\n </span>\n )}\n </CommandItem>\n )\n}\n\n// ─── Group ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandGroup>) {\n return (\n <CommandGroup\n data-slot=\"searchable-select-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\n// ─── Empty ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectEmpty({\n className,\n children = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof CommandEmpty>) {\n return (\n <CommandEmpty\n data-slot=\"searchable-select-empty\"\n className={cn(className)}\n {...props}\n >\n {children}\n </CommandEmpty>\n )\n}\n\n// ─── Exports ─────────────────────────────────────────────────────────\n\nexport {\n SearchableSelect,\n SearchableSelectTrigger,\n SearchableSelectContent,\n SearchableSelectItem,\n SearchableSelectGroup,\n SearchableSelectEmpty,\n}\n\nexport type { SearchableSelectProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 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\nexport { Separator }\n","'use client'\n\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: 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 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\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('text-foreground font-semibold', 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-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger\n}\n","'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { PanelLeftIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Separator } from '@/components/ui/separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle\n} from '@/components/ui/sheet'\nimport { Skeleton } from '@/components/ui/skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n} from '@/components/ui/tooltip'\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { cn } from '@/lib/utils'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '18rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\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 if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\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 data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className\n )}\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-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE\n } as React.CSSProperties\n }\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 className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\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)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\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 // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--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 data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-9', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-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 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('bg-background h-8 w-full shadow-none', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden 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}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'\n },\n size: {\n default: 'h-8 text-sm',\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\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\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\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\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 useSidebar\n}\n","import { cn } from '@/lib/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn('bg-accent animate-pulse rounded-md', className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","'use client'\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction 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\nconst TooltipCloseContext = React.createContext<(() => void) | null>(null)\n\nfunction Tooltip({\n persistent = false,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root> & {\n /** When true, tooltip stays open until dismissed via close button or click outside. */\n persistent?: boolean\n}) {\n const [open, setOpen] = React.useState(props.defaultOpen ?? false)\n\n if (!persistent) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n }\n\n const close = () => {\n setOpen(false)\n props.onOpenChange?.(false)\n }\n\n return (\n <TooltipProvider>\n <TooltipCloseContext.Provider value={close}>\n <TooltipPrimitive.Root\n data-slot=\"tooltip\"\n open={props.open ?? open}\n onOpenChange={isOpen => {\n if (isOpen) {\n setOpen(true)\n props.onOpenChange?.(true)\n }\n // When persistent, ignore close from hover-out\n }}\n {...props}\n />\n </TooltipCloseContext.Provider>\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nexport interface TooltipContentProps extends React.ComponentProps<\n typeof TooltipPrimitive.Content\n> {\n /** Omit the arrow entirely. Defaults to `false`. */\n hideArrow?: boolean\n /**\n * Classes merged (via `cn`) onto the arrow. Use to recolor it so it matches a\n * custom surface, e.g. `arrowClassName=\"bg-white fill-white\"`.\n */\n arrowClassName?: string\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n hideArrow = false,\n arrowClassName,\n children,\n ...props\n}: TooltipContentProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance ',\n className\n )}\n {...props}\n >\n {children}\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n className={cn(\n 'bg-primary fill-primary z-10 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]',\n arrowClassName\n )}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport type RichTooltipVariant = 'dark' | 'light'\n\n/**\n * Per-variant surface, text, muted-text and arrow classes. Both variants render\n * a consistent look regardless of the app's light/dark theme (the base tokens\n * are theme-invariant), matching how the original dark tooltip always rendered.\n *\n * The `light` variant ships a soft shadow on the surface AND a matching\n * `drop-shadow` on the arrow (a `filter`, so the shadow follows the diamond\n * shape) — otherwise a white arrow is invisible against light backgrounds.\n */\nconst richTooltipVariants: Record<\n RichTooltipVariant,\n { surface: string; text: string; mutedText: string; arrow: string }\n> = {\n dark: {\n surface: 'bg-gray-surface-dark',\n text: 'text-white',\n mutedText: 'text-white/70 hover:text-white',\n arrow: 'fill-gray-surface-dark'\n },\n light: {\n surface: 'bg-white shadow-md',\n text: 'text-gray-surface-dark',\n mutedText: 'text-gray-surface-dark/70 hover:text-gray-surface-dark',\n arrow: 'fill-white drop-shadow-[0_2px_2px_rgba(0,0,0,0.12)]'\n }\n}\n\nexport interface RichTooltipContentProps extends Omit<\n React.ComponentProps<typeof TooltipPrimitive.Content>,\n 'children'\n> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n children: React.ReactNode\n /**\n * Preset surface + text + arrow combo. `\"dark\"` (default) keeps the original\n * dark surface with white text; `\"light\"` renders a white surface with dark\n * text. Both look correct out of the box regardless of the app theme.\n */\n variant?: RichTooltipVariant\n /**\n * Classes merged (via `cn`) onto the inner surface `div`, so the background\n * (and text color) can be overridden, e.g. `surfaceClassName=\"bg-white text-foreground\"`.\n * Wins over the `variant` defaults.\n */\n surfaceClassName?: string\n /**\n * Classes merged (via `cn`) onto the arrow so it matches a custom surface,\n * e.g. `arrowClassName=\"fill-white\"`. Wins over the `variant` defaults.\n */\n arrowClassName?: string\n /** Omit the arrow entirely. Defaults to `false`. */\n hideArrow?: boolean\n}\n\nfunction RichTooltipContent({\n className,\n sideOffset = 4,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n variant = 'dark',\n surfaceClassName,\n arrowClassName,\n hideArrow = false,\n ...props\n}: RichTooltipContentProps) {\n const close = React.useContext(TooltipCloseContext)\n\n const handleDismiss = () => {\n close?.()\n onDismiss?.()\n }\n\n const styles = richTooltipVariants[variant] ?? richTooltipVariants.dark\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"rich-tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 origin-(--radix-tooltip-content-transform-origin)',\n className\n )}\n {...(dismissible && {\n onPointerDownOutside: handleDismiss\n })}\n {...props}\n >\n <div\n className={cn(\n 'flex items-start gap-3 rounded-[12px] px-3 py-4 text-sm leading-5 max-w-sm',\n styles.surface,\n styles.text,\n surfaceClassName\n )}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5\">{heading}</p>\n )}\n <div className=\"font-normal text-sm leading-5\">{children}</div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={handleDismiss}\n className={cn(\n 'flex items-center justify-center shrink-0 size-5 transition-colors cursor-pointer',\n styles.mutedText\n )}\n aria-label=\"Dismiss\"\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n {!hideArrow && (\n <TooltipPrimitive.Arrow\n width={16}\n height={12}\n className={cn(styles.arrow, arrowClassName)}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport {\n RichTooltipContent,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport * as React from 'react'\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger\n} from './dialog'\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger\n} from './drawer'\nimport { useMediaQuery } from './useMediaQuery'\n\ntype SmartDialogProps = React.ComponentProps<typeof Dialog> &\n React.ComponentProps<typeof Drawer>\n\nconst SmartDialog = ({ children, ...props }: SmartDialogProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <Drawer {...props}>{children}</Drawer>\n ) : (\n <Dialog {...props}>{children}</Dialog>\n )\n}\n\ntype SmartDialogContentProps = React.ComponentProps<typeof DialogContent> &\n React.ComponentProps<typeof DrawerContent>\n\nconst SmartDialogContent = ({\n children,\n overlayClassName,\n withCloseButton,\n showCloseButton,\n ...props\n}: SmartDialogContentProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerContent\n {...props}\n overlayClassName={overlayClassName}\n withCloseButton={withCloseButton ?? true}\n showCloseButton={showCloseButton ?? true}\n >\n {children}\n </DrawerContent>\n ) : (\n <DialogContent\n {...props}\n showCloseButton={showCloseButton ?? true}\n overlayClassName={overlayClassName}\n >\n {children}\n </DialogContent>\n )\n}\n\ntype SmartDialogDescriptionProps = React.ComponentProps<\n typeof DialogDescription\n> &\n React.ComponentProps<typeof DrawerDescription>\n\nconst SmartDialogDescription = ({\n children,\n ...props\n}: SmartDialogDescriptionProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerDescription {...props}>{children}</DrawerDescription>\n ) : (\n <DialogDescription {...props}>{children}</DialogDescription>\n )\n}\n\ntype SmartDialogHeaderProps = React.ComponentProps<typeof DialogHeader> &\n React.ComponentProps<typeof DrawerHeader>\n\nconst SmartDialogHeader = ({ children, ...props }: SmartDialogHeaderProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerHeader {...props}>{children}</DrawerHeader>\n ) : (\n <DialogHeader {...props}>{children}</DialogHeader>\n )\n}\n\ntype SmartDialogTitleProps = React.ComponentProps<typeof DialogTitle> &\n React.ComponentProps<typeof DrawerTitle>\n\nconst SmartDialogTitle = ({ children, ...props }: SmartDialogTitleProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTitle {...props}>{children}</DrawerTitle>\n ) : (\n <DialogTitle {...props}>{children}</DialogTitle>\n )\n}\n\ntype SmartDialogTriggerProps = React.ComponentProps<typeof DialogTrigger> &\n React.ComponentProps<typeof DrawerTrigger>\n\nconst SmartDialogTrigger = ({\n children,\n ...props\n}: SmartDialogTriggerProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTrigger {...props}>{children}</DrawerTrigger>\n ) : (\n <DialogTrigger {...props}>{children}</DialogTrigger>\n )\n}\n\ntype SmartDialogFooterProps = React.ComponentProps<typeof DialogFooter> &\n React.ComponentProps<typeof DrawerFooter>\n\nconst SmartDialogFooter = ({ children, ...props }: SmartDialogFooterProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerFooter {...props}>{children}</DrawerFooter>\n ) : (\n <DialogFooter {...props}>{children}</DialogFooter>\n )\n}\n\ntype SmartDialogCloseProps = React.ComponentProps<typeof DialogClose> &\n React.ComponentProps<typeof DrawerClose>\n\nconst SmartDialogClose = ({ children, ...props }: SmartDialogCloseProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <>\n <DrawerClose {...props}>{children}</DrawerClose>\n </>\n ) : (\n <DialogClose {...props}>{children}</DialogClose>\n )\n}\n\nexport {\n SmartDialog,\n SmartDialogClose,\n SmartDialogContent,\n SmartDialogDescription,\n SmartDialogFooter,\n SmartDialogHeader,\n SmartDialogTitle,\n SmartDialogTrigger\n}\n","import * as React from 'react'\n\n/**\n * SSR-safe media query subscription.\n *\n * Built on `useSyncExternalStore` so that **hydration renders the server value**\n * and only then switches to the real match. The previous implementation read\n * `window.matchMedia(query).matches` inside `useState`'s initialiser, which made\n * the first client render disagree with the server HTML. React reports that as a\n * hydration mismatch and explicitly does not patch it up: on a phone,\n * `SmartDialog` shipped server-rendered `data-slot=\"dialog-trigger\"` markup that\n * stayed in the DOM while React believed it had rendered a Drawer.\n *\n * The consequence for consumers: `matches` is `false` for the first client\n * render regardless of viewport, then settles. Anything that must not flash\n * should render neutral markup while it is `false`.\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = React.useCallback(\n (onStoreChange: () => void) => {\n const list = window.matchMedia(query)\n // Safari < 14 exposes only the deprecated listener API.\n if (list.addEventListener) {\n list.addEventListener('change', onStoreChange)\n return () => list.removeEventListener('change', onStoreChange)\n }\n list.addListener(onStoreChange)\n return () => list.removeListener(onStoreChange)\n },\n [query]\n )\n\n const getSnapshot = React.useCallback(\n () => window.matchMedia(query).matches,\n [query]\n )\n\n // Server snapshot is always false — the server has no viewport to measure.\n const getServerSnapshot = React.useCallback(() => false, [])\n\n return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","\"use client\"\n\nimport { CircleCheck, Info, TriangleAlert } from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast, type ToasterProps } from \"sonner\"\n\nconst iconWrapper = (icon: React.ReactNode) => (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n)\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n info: iconWrapper(<Info />),\n error: iconWrapper(<TriangleAlert />),\n success: iconWrapper(<CircleCheck />),\n }}\n toastOptions={{\n unstyled: true,\n classNames: {\n toast:\n \"flex items-start gap-3 w-full rounded-[12px] border px-3 py-4 text-sm leading-5\",\n title: \"font-semibold text-sm leading-5 text-vibrant-text-heading\",\n description: \"font-normal text-sm leading-5 text-vibrant-text-body\",\n info: \"bg-alert-bg-informative border-gray-stroke-light [&_svg]:text-[#52525c] dark:[&_svg]:text-[#a1a1aa]\",\n error:\n \"bg-alert-bg-error border-error-stroke-light [&_svg]:text-[#ff6467] dark:[&_svg]:text-[#ff8486]\",\n success:\n \"bg-success-surface-subtle border-success-stroke-light [&_svg]:text-[#00a63e] dark:[&_svg]:text-[#34d399]\",\n },\n }}\n style={\n {\n \"--width\": \"436px\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster, toast }\n","'use client'\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer cursor-pointer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-brand-text-vibrant dark:data-[state=unchecked]:bg-input/80 inline-flex h-[24px] w-[40px] shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-offset-1 ',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-5 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-3px)] data-[state=unchecked]:translate-x-[1px]'\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client'\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n/* ─── Internal Context ─────────────────────────────────────── */\n\ntype TabsContextValue = {\n orientation: 'horizontal' | 'vertical'\n}\n\nconst TabsContext = React.createContext<TabsContextValue>({\n orientation: 'horizontal'\n})\n\n/* ─── useTabIndicator hook ─────────────────────────────────── */\n\nfunction useTabIndicator(\n listRef: React.RefObject<HTMLElement | null>,\n orientation: 'horizontal' | 'vertical'\n) {\n const [style, setStyle] = React.useState<React.CSSProperties>({\n position: 'absolute',\n opacity: 0\n })\n const isFirstMeasurement = React.useRef(true)\n\n const measure = React.useCallback(() => {\n const list = listRef.current\n if (!list) return\n\n requestAnimationFrame(() => {\n const activeEl = list.querySelector<HTMLElement>(\n '[data-state=\"active\"]'\n )\n if (!activeEl) return\n\n const noTransition = isFirstMeasurement.current\n\n if (orientation === 'horizontal') {\n setStyle({\n position: 'absolute',\n bottom: 0,\n left: 0,\n zIndex: 1,\n height: '2px',\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, width 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n } else {\n setStyle({\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 1,\n width: '2px',\n height: activeEl.offsetHeight,\n transform: `translateY(${activeEl.offsetTop}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, height 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n }\n\n if (noTransition) {\n isFirstMeasurement.current = false\n }\n })\n }, [listRef, orientation])\n\n React.useEffect(() => {\n const list = listRef.current\n if (!list) return\n\n // Initial measurement\n measure()\n\n // Observe data-state changes on triggers\n const mutationObserver = new MutationObserver(() => {\n measure()\n })\n mutationObserver.observe(list, {\n subtree: true,\n attributes: true,\n attributeFilter: ['data-state'],\n childList: true\n })\n\n // Observe resize\n const resizeObserver = new ResizeObserver(() => {\n measure()\n })\n resizeObserver.observe(list)\n\n return () => {\n mutationObserver.disconnect()\n resizeObserver.disconnect()\n }\n }, [listRef, measure])\n\n return { style }\n}\n\n/* ─── Tabs (Root) ──────────────────────────────────────────── */\n\nfunction Tabs({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n const ctx = React.useMemo(\n () => ({ orientation: orientation ?? 'horizontal' }),\n [orientation]\n ) as TabsContextValue\n\n return (\n <TabsContext.Provider value={ctx}>\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={cn(\n orientation === 'vertical' ? 'flex flex-row gap-4' : 'flex flex-col gap-2',\n className\n )}\n {...props}\n />\n </TabsContext.Provider>\n )\n}\n\n/* ─── TabsList ─────────────────────────────────────────────── */\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n const listRef = React.useRef<HTMLDivElement>(null)\n const { orientation } = React.useContext(TabsContext)\n const { style: indicatorStyle } = useTabIndicator(listRef, orientation)\n\n return (\n <TabsPrimitive.List\n ref={listRef}\n data-slot=\"tabs-list\"\n className={cn(\n 'text-muted-foreground relative',\n // The gray track is an inset shadow rather than a border so it lives\n // inside the padding box, letting the active indicator paint over it.\n orientation === 'vertical'\n ? 'flex flex-col shadow-[inset_1px_0_0_0_var(--gray-stroke-default)]'\n : 'flex w-fit items-center overflow-x-auto shadow-[inset_0_-1px_0_0_var(--gray-stroke-default)]',\n className\n )}\n {...props}\n >\n {props.children}\n <span data-slot=\"tabs-indicator\" style={indicatorStyle} />\n </TabsPrimitive.List>\n )\n}\n\n/* ─── TabsTrigger ──────────────────────────────────────────── */\n\nconst tabsTriggerVariants = cva(\n 'cursor-pointer inline-flex shrink-0 items-center justify-center font-sans font-medium whitespace-nowrap transition-[color,box-shadow] text-vibrant-text-details data-[state=active]:font-semibold data-[state=active]:text-vibrant-text-heading disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4',\n {\n variants: {\n size: {\n md: 'text-sm leading-5',\n lg: 'text-base leading-6'\n },\n orientation: {\n horizontal: 'pb-1 px-2',\n vertical: 'py-1.5 px-3 justify-start text-left w-full'\n }\n },\n compoundVariants: [\n { orientation: 'horizontal', size: 'md', class: 'min-w-[72px]' },\n { orientation: 'horizontal', size: 'lg', class: 'min-w-[88px]' }\n ],\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal'\n }\n }\n)\n\nexport interface TabsTriggerProps\n extends React.ComponentProps<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {}\n\nfunction TabsTrigger({\n className,\n size,\n children,\n ...props\n}: TabsTriggerProps) {\n const { orientation } = React.useContext(TabsContext)\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(tabsTriggerVariants({ size, orientation }), className)}\n {...props}\n >\n <span\n className={cn(\n 'inline-flex items-center justify-center gap-1.5 rounded-[6px] hover:bg-gray-surface-light',\n orientation === 'vertical'\n ? 'px-2 py-1.5 w-full'\n : 'px-2 py-1.5'\n )}\n >\n {children}\n </span>\n </TabsPrimitive.Trigger>\n )\n}\n\n/* ─── TabsContent ──────────────────────────────────────────── */\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn('flex-1 outline-none', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsTriggerVariants }\n","'use client'\n\nimport {\n ThemeProvider as NextThemesProvider,\n type ThemeProviderProps\n} from 'next-themes'\n\nfunction ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemesProvider\n attribute=\"class\"\n defaultTheme=\"light\"\n enableSystem\n disableTransitionOnChange\n {...props}\n >\n {children}\n </NextThemesProvider>\n )\n}\n\nexport { ThemeProvider, type ThemeProviderProps }\n","'use client'\n\nimport { Monitor, Moon, Sun } from 'lucide-react'\nimport { useTheme } from 'next-themes'\nimport * as React from 'react'\nimport { Button } from './button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger\n} from './dropdown-menu'\n\nfunction ThemeToggle({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { setTheme } = useTheme()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"icon\" className={className} {...props}>\n <Sun className=\"size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <Moon className=\"absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>\n <Sun className=\"size-4\" />\n Light\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>\n <Moon className=\"size-4\" />\n Dark\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>\n <Monitor className=\"size-4\" />\n System\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ThemeToggle }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { Clock } from 'lucide-react'\nimport * as React from 'react'\nimport { Button } from './button'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type TimeFormat = '12h' | '24h' | 'h:mm a' | 'h:mm A'\n\nexport interface TimeValue {\n hours: number\n minutes: number\n}\n\nconst TIME_FORMAT_PLACEHOLDER: Record<TimeFormat, string> = {\n '12h': 'hh:mm AM/PM',\n '24h': 'HH:mm',\n 'h:mm a': 'h:mm am/pm',\n 'h:mm A': 'h:mm AM/PM'\n}\n\nfunction is24HourFormat(tf: TimeFormat): boolean {\n return tf === '24h'\n}\n\nfunction formatTime(\n time: TimeValue | null,\n timeFormat: TimeFormat = '12h'\n): string {\n if (!time) return ''\n const { hours, minutes } = time\n const h24 = String(hours).padStart(2, '0')\n const m = String(minutes).padStart(2, '0')\n const h12 = hours % 12 || 12\n const h12p = String(h12).padStart(2, '0')\n const period = hours >= 12 ? 'PM' : 'AM'\n\n switch (timeFormat) {\n case '24h':\n return `${h24}:${m}`\n case 'h:mm a':\n return `${h12}:${m} ${period.toLowerCase()}`\n case 'h:mm A':\n return `${h12}:${m} ${period}`\n case '12h':\n default:\n return `${h12p}:${m} ${period}`\n }\n}\n\nfunction getDisplayHour(hours: number, timeFormat: TimeFormat): number {\n if (is24HourFormat(timeFormat)) return hours\n return hours % 12 || 12\n}\n\nfunction getPeriod(hours: number): 'AM' | 'PM' {\n return hours >= 12 ? 'PM' : 'AM'\n}\n\nexport interface TimeInputProps {\n time: TimeValue | null\n setTime: (time: TimeValue | null) => void\n timeFormat?: TimeFormat\n minuteStep?: number\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n placeholder?: string\n icon?: React.ReactNode\n formatDisplay?: (time: TimeValue) => string\n}\n\nexport function TimeInput({\n time,\n setTime,\n timeFormat = '12h',\n minuteStep = 1,\n inputDisabled,\n className,\n inputClassName,\n popoverContentClassName,\n popoverContentProps,\n size,\n placeholder,\n icon,\n formatDisplay\n}: TimeInputProps) {\n const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat]\n\n const displayValue = React.useMemo(() => {\n if (!time) return ''\n if (formatDisplay) return formatDisplay(time)\n return formatTime(time, timeFormat)\n }, [time, formatDisplay, timeFormat])\n\n const [open, setOpen] = React.useState(false)\n\n const hoursRef = React.useRef<HTMLDivElement>(null)\n const minutesRef = React.useRef<HTMLDivElement>(null)\n const periodRef = React.useRef<HTMLDivElement>(null)\n\n const scrollToSelected = React.useCallback(() => {\n requestAnimationFrame(() => {\n for (const ref of [hoursRef, minutesRef, periodRef]) {\n const container = ref.current\n if (!container) continue\n const selected = container.querySelector('[data-selected=\"true\"]')\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' })\n }\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (open) {\n scrollToSelected()\n }\n }, [open, scrollToSelected])\n\n const handleHourSelect = (hour: number) => {\n let h24: number\n if (is24HourFormat(timeFormat)) {\n h24 = hour\n } else {\n const currentPeriod = time ? getPeriod(time.hours) : 'AM'\n if (currentPeriod === 'AM') {\n h24 = hour === 12 ? 0 : hour\n } else {\n h24 = hour === 12 ? 12 : hour + 12\n }\n }\n setTime({ hours: h24, minutes: time?.minutes ?? 0 })\n }\n\n const handleMinuteSelect = (minute: number) => {\n setTime({ hours: time?.hours ?? 0, minutes: minute })\n }\n\n const handlePeriodSelect = (period: 'AM' | 'PM') => {\n const currentHours = time?.hours ?? 0\n const currentH12 = currentHours % 12\n const newHours = period === 'AM' ? currentH12 : currentH12 + 12\n setTime({ hours: newHours, minutes: time?.minutes ?? 0 })\n }\n\n const hoursList = is24HourFormat(timeFormat)\n ? Array.from({ length: 24 }, (_, i) => i)\n : Array.from({ length: 12 }, (_, i) => i + 1)\n\n const minutesList = Array.from(\n { length: Math.ceil(60 / minuteStep) },\n (_, i) => i * minuteStep\n )\n\n const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null\n const selectedMinute = time?.minutes ?? null\n const selectedPeriod = time ? getPeriod(time.hours) : null\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={inputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n inputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={inputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n {icon !== undefined ? (\n icon\n ) : (\n <Clock className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn('w-auto p-0', popoverContentClassName)}\n onOpenAutoFocus={e => e.preventDefault()}\n {...popoverContentProps}\n >\n <div className=\"flex divide-x border border-focus-ring rounded-md\">\n {/* Hours */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div ref={hoursRef} className=\"flex flex-col p-1 \">\n {hoursList.map(h => (\n <Button\n key={h}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedH12 === h}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedH12 === h &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleHourSelect(h)}\n >\n {String(h).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* Minutes */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div\n ref={minutesRef}\n className={cn(\n 'flex flex-col p-1',\n minutesList.length <= 12 && 'h-full justify-center'\n )}\n >\n {minutesList.map(m => (\n <Button\n key={m}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedMinute === m}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedMinute === m &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleMinuteSelect(m)}\n >\n {String(m).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* AM/PM */}\n {!is24HourFormat(timeFormat) && (\n <div className=\"flex flex-col p-1 justify-center gap-1\">\n {(['AM', 'PM'] as const).map(p => (\n <Button\n key={p}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedPeriod === p}\n className={cn(\n 'w-14 justify-center text-sm',\n selectedPeriod === p &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handlePeriodSelect(p)}\n >\n {p}\n </Button>\n ))}\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"cursor-pointer inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","export { useTheme } from 'next-themes'\n"],"mappings":"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","names":["jsx","cva","jsx","jsxs","cva","cva","jsx","cva","jsx","jsxs","jsx","X","React","React","cva","React","jsx","jsxs","cva","Fragment","jsx","jsxs","X","React","React","jsx","jsx","jsx","Slot","cva","jsx","cva","Slot","cva","jsx","jsxs","cva","cva","jsx","jsxs","cva","cva","jsx","cva","Slot","jsx","jsxs","Slot","ChevronDownIcon","React","jsx","className","props","ChevronDownIcon","jsx","React","ArrowLeft","jsx","jsxs","api","ArrowLeft","React","Fragment","jsx","jsxs","config","jsx","jsx","CollapsibleTrigger","CollapsibleContent","DialogPrimitive","jsx","jsxs","jsx","jsxs","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","React","PopoverPrimitive","jsx","jsx","jsxs","date","dateFnsFormat","isValid","CalendarDays","React","jsx","jsxs","DATE_FORMAT_TOKENS","DATE_FORMAT_PLACEHOLDER","formatDate","isValid","dateFnsFormat","CalendarDays","XIcon","jsx","jsxs","XIcon","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","jsx","jsxs","React","Slot","cva","jsx","cva","Slot","jsx","jsxs","value","React","Slot","Slot","cva","jsx","Label","jsx","Label","Slot","jsx","React","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","ChevronDown","X","jsx","jsxs","X","ChevronDown","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","cva","Check","jsx","jsxs","cva","Check","Indicator","ChevronLeftIcon","ChevronRightIcon","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","jsx","cva","jsx","jsxs","cva","CircleIcon","jsx","RadioGroup","CircleIcon","jsx","jsx","jsxs","React","X","jsx","jsxs","label","X","React","CheckIcon","XIcon","jsx","jsxs","XIcon","CheckIcon","CheckIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","CheckIcon","jsx","Separator","XIcon","jsx","jsxs","XIcon","Slot","cva","React","jsx","X","React","jsx","jsxs","Tooltip","X","jsx","jsxs","open","Separator","Slot","cva","Tooltip","React","jsx","jsxs","React","Fragment","jsx","jsx","jsx","jsx","cva","React","jsx","jsxs","cva","jsx","useTheme","jsx","jsxs","useTheme","React","jsx","jsxs","cva","jsx","cva","React","jsx","useTheme"]}
|