@rock.star/ui 1.0.0 → 1.1.1
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/README.md +3 -3
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +7 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.d.ts +43 -0
- package/dist/index.js +8551 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/index.d.ts +12 -4
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/styles.css +240 -0
- package/dist/ui/index.d.ts +99 -10
- package/dist/ui/index.js +1097 -423
- package/dist/ui/index.js.map +1 -1
- package/dist/utils-Cbsgs0XP.d.ts +5 -0
- package/package.json +8 -3
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/accordion.tsx","../../src/lib/utils.ts","../../src/ui/alert-dialog.tsx","../../src/ui/button.tsx","../../src/ui/apple/index.tsx","../../src/ui/apple/english.tsx","../../src/ui/apple/hindi.tsx","../../src/ui/apple/spanish.tsx","../../src/ui/autocomplete.tsx","../../src/ui/input.tsx","../../src/ui/scroll-area.tsx","../../src/ui/avatar.tsx","../../src/ui/badge.tsx","../../src/ui/bridge.tsx","../../src/lib/capacitor.ts","../../src/ui/bubble.tsx","../../src/ui/button-group.tsx","../../src/ui/separator.tsx","../../src/ui/card.tsx","../../src/ui/carousel.tsx","../../src/ui/chart.tsx","../../src/ui/combobox.tsx","../../src/ui/input-group.tsx","../../src/ui/textarea.tsx","../../src/ui/command.tsx","../../src/ui/dialog.tsx","../../src/ui/dashed.tsx","../../src/ui/dock.tsx","../../src/ui/drawer.tsx","../../src/ui/dropdown-menu.tsx","../../src/ui/empty.tsx","../../src/ui/farmer/FramerMotionVariants.ts","../../src/ui/field.tsx","../../src/ui/label.tsx","../../src/ui/image.tsx","../../src/ui/input-otp.tsx","../../src/ui/item.tsx","../../src/hooks/useMounted.ts","../../src/ui/jelly.tsx","../../src/ui/kbd.tsx","../../src/ui/message.tsx","../../src/ui/message-scroller.tsx","../../src/ui/otp.tsx","../../src/ui/popover.tsx","../../src/ui/quantity.tsx","../../src/ui/radio-group.tsx","../../src/ui/reui/filters.tsx","../../src/ui/tooltip.tsx","../../src/ui/select.tsx","../../src/ui/skeleton.tsx","../../src/ui/sonner.tsx","../../src/ui/switch.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\nimport type * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { ChevronDown, ChevronUp } from \"@gravity-ui/icons\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(\"flex w-full flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"not-last:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n endContent,\n ...props\n}: AccordionPrimitive.Trigger.Props & {\n endContent?: React.ReactNode\n}) {\n return (\n <AccordionPrimitive.Header className=\"flex items-center\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium\",\n className\n )}\n {...props}\n >\n {children}\n\n <ChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n\n {endContent ? (\n <div className={cn(\"flex shrink-0 items-center gap-2\", className)}>\n {endContent}\n </div>\n ) : null}\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n \"h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\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","\"use client\"\n\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\nimport * as React from \"react\"\n\nimport { Button } from \"#components/button\"\nimport { cn } from \"#lib/utils\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\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(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\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 \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\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(\n \"text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\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(\n \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,opacity,transform] duration-150 ease-[var(--ease-out)] outline-none select-none motion-reduce:transition-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:opacity-70 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n \"icon-title\":\n \"size-8 sm:h-8 sm:w-auto sm:gap-1.5 sm:px-2.5 sm:has-data-[icon=inline-end]:pr-2 sm:has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\nimport { AnimatePresence } from \"motion/react\"\nimport { useState } from \"react\"\nimport { AppleHelloEffectEnglish } from \"./english\"\nimport { AppleHelloEffectHindi } from \"./hindi\"\nimport { AppleHelloEffectSpanish } from \"./spanish\"\n\nexport function Apple() {\n const [index, setIndex] = useState(0)\n\n const handleAnimationEnd = () => {\n setIndex((prevIndex) => (prevIndex + 1) % 3)\n }\n\n const demos = [\n <AppleHelloEffectHindi\n key=\"hindi\"\n onAnimationComplete={handleAnimationEnd}\n />,\n <AppleHelloEffectEnglish\n key=\"english\"\n onAnimationComplete={handleAnimationEnd}\n />,\n\n <AppleHelloEffectSpanish\n key=\"spanish\"\n durationScale={0.8}\n onAnimationComplete={handleAnimationEnd}\n />,\n ]\n return (\n <main className=\"m-auto flex grow items-center justify-center\">\n <AnimatePresence mode=\"wait\">{demos[index]}</AnimatePresence>\n </main>\n )\n}\n","\"use client\"\n\nimport { cn } from \"#lib/utils\"\nimport type { TargetAndTransition } from \"motion/react\"\nimport { motion } from \"motion/react\"\nimport type { ComponentProps } from \"react\"\n\nconst initialProps: TargetAndTransition = {\n pathLength: 0,\n opacity: 0,\n}\n\nconst animateProps: TargetAndTransition = {\n pathLength: 1,\n opacity: 1,\n}\n\nexport type AppleHelloEffectEnglishProps = Omit<\n ComponentProps<typeof motion.svg>,\n \"durationScale\" | \"onAnimationComplete\"\n> & {\n /**\n * Scales the duration and delay of the handwriting animation.\n * Values below 1 speed up, values above 1 slow down.\n * @defaultValue 1\n */\n durationScale?: number\n /** Called when the full handwriting animation completes. */\n onAnimationComplete?: () => void\n}\n\nexport function AppleHelloEffectEnglish({\n className,\n durationScale = 1,\n onAnimationComplete,\n ...props\n}: AppleHelloEffectEnglishProps) {\n const calc = (x: number) => x * durationScale\n\n return (\n <motion.svg\n className={cn(\"h-20\", className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 638 200\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"14.8883\"\n strokeLinecap=\"round\"\n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n {...props}\n >\n <title>hello</title>\n\n {/* h1 */}\n <motion.path\n d=\"M8.69214 166.553C36.2393 151.239 61.3409 131.548 89.8191 98.0295C109.203 75.1488 119.625 49.0228 120.122 31.0026C120.37 17.6036 113.836 7.43883 101.759 7.43883C88.3598 7.43883 79.9231 17.6036 74.7122 40.9363C69.005 66.5793 64.7866 96.0036 54.1166 190.356\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeInOut\",\n opacity: { duration: 0.4 },\n }}\n />\n\n {/* h2, ello */}\n <motion.path\n d=\"M55.1624 181.135C60.6251 133.114 81.4118 98.0479 107.963 98.0479C123.844 98.0479 133.937 110.703 131.071 128.817C129.457 139.487 127.587 150.405 125.408 163.06C122.869 178.941 130.128 191.348 152.122 191.348C184.197 191.348 219.189 173.523 237.097 145.915C243.198 136.509 245.68 128.073 245.928 119.884C246.176 104.996 237.739 93.8296 222.851 93.8296C203.992 93.8296 189.6 115.17 189.6 142.465C189.6 171.745 205.481 192.341 239.208 192.341C285.066 192.341 335.86 137.292 359.199 75.8585C365.788 58.513 368.26 42.4065 368.26 31.1512C368.26 17.8057 364.042 7.55823 352.131 7.55823C340.469 7.55823 332.777 16.6141 325.829 30.9129C317.688 47.4967 311.667 71.4162 309.203 98.4549C303 166.301 316.896 191.348 349.936 191.348C390 191.348 434.542 135.534 457.286 75.6686C463.803 58.513 466.275 42.4065 466.275 31.1512C466.275 17.8057 462.057 7.55823 450.146 7.55823C438.484 7.55823 430.792 16.6141 423.844 30.9129C415.703 47.4967 409.682 71.4162 407.218 98.4549C401.015 166.301 414.911 191.348 444.416 191.348C473.874 191.348 489.877 165.67 499.471 138.402C508.955 111.447 520.618 94.8221 544.935 94.8221C565.035 94.8221 580.916 109.71 580.916 137.75C580.916 168.768 560.792 192.093 535.362 192.341C512.984 192.589 498.285 174.475 499.774 147.179C501.511 116.907 519.873 94.8221 543.943 94.8221C557.839 94.8221 569.51 100.999 578.682 107.725C603.549 125.866 622.709 114.656 630.047 96.7186\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(2.8),\n ease: \"easeInOut\",\n delay: calc(0.7),\n opacity: { duration: 0.7, delay: calc(0.7) },\n }}\n onAnimationComplete={onAnimationComplete}\n />\n </motion.svg>\n )\n}\n","\"use client\"\n\nimport type { TargetAndTransition } from \"motion/react\"\nimport { motion } from \"motion/react\"\nimport type { ComponentProps } from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nconst initialProps: TargetAndTransition = {\n pathLength: 0,\n opacity: 0,\n}\n\nconst animateProps: TargetAndTransition = {\n pathLength: 1,\n opacity: 1,\n}\n\nexport type AppleHelloEffectHindiProps = Omit<\n ComponentProps<typeof motion.svg>,\n \"durationScale\" | \"onAnimationComplete\"\n> & {\n /**\n * Scales the duration and delay of the handwriting animation.\n * Values below 1 speed up, values above 1 slow down.\n * @defaultValue 0.8\n */\n durationScale?: number\n /** Called when the full handwriting animation completes. */\n onAnimationComplete?: () => void\n}\n\nexport function AppleHelloEffectHindi({\n className,\n durationScale = 0.8,\n onAnimationComplete,\n ...props\n}: AppleHelloEffectHindiProps) {\n const calc = (x: number) => x * durationScale\n\n return (\n <motion.svg\n className={cn(\"h-20\", className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 605 273\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"14.888\"\n strokeLinecap=\"round\"\n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n {...props}\n >\n <title>नमस्ते</title>\n <motion.path\n d=\"M42.3842 150.002C53.2928 153.473 60.4984 162.29 60.4984 175.561C60.4984 189.953 50.3247 201.119 36.677 201.119C24.022 201.119 14.8408 192.186 14.8408 179.035C14.8408 160.269 31.2182 148.265 56.5282 149.01C82.0863 149.754 103.723 163.663 120.367 185.069\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n opacity: { duration: 0.2 },\n }}\n />\n <motion.path\n d=\"M133.502 93.5842C124.459 153.875 117.303 209.683 111.71 264.988\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(0.6),\n opacity: { duration: 0.2, delay: calc(0.6) },\n }}\n />\n <motion.path\n d=\"M216.556 90.9181C217.117 117.977 216.81 137.689 214.869 160.067C212.007 193.058 200.119 213.115 180.936 213.115C169.295 213.115 160.844 205.334 160.844 193.399C160.844 177.222 175.901 164.28 203.653 165.376C229.863 166.411 256.651 174.863 275.138 192.025\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(1),\n opacity: { duration: 0.2, delay: calc(1) },\n }}\n />\n <motion.path\n d=\"M289.489 90.0085C280.255 150.162 272.672 207.783 267.379 263.003\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(1.6),\n opacity: { duration: 0.2, delay: calc(1.6) },\n }}\n />\n <motion.path\n d=\"M373.949 90.0198C394.816 102.051 408.098 128.602 408.098 154.079C408.098 185.141 387.465 205.586 358.47 205.586C330.249 205.586 311.145 186.038 317.527 170.35C322.864 157.231 341.378 156.812 356.237 168.861C374.674 183.811 382.044 216.764 385.021 261.169\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(2),\n opacity: { duration: 0.2, delay: calc(2) },\n }}\n />\n <motion.path\n d=\"M403.474 177.549C418.085 183.32 439.163 184.314 458.424 179.805\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(2.6),\n opacity: { duration: 0.2, delay: calc(2.6) },\n }}\n />\n <motion.path\n d=\"M556.981 88.1333C546.807 149.619 538.371 207.01 531.919 262.906\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(3),\n opacity: { duration: 0.2, delay: calc(3) },\n }}\n />\n <motion.path\n d=\"M536.891 222.462C541.984 183.336 528.689 152.484 496.435 152.484C472.365 152.484 453.755 175.064 453.755 203.104C453.755 223.451 461.199 245.784 475.095 261.417\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(3.4),\n opacity: { duration: 0.2, delay: calc(3.4) },\n }}\n />\n <motion.path\n d=\"M521.259 45.4307C485.619 43.0134 474.856 32.3917 474.856 21.5298C474.856 12.832 482.71 7.04349 493.506 7.46568C518.289 8.37031 542.96 35.3336 555.578 70.4412\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(4),\n opacity: { duration: 0.2, delay: calc(4) },\n }}\n />\n <motion.path\n d=\"M7.44434 88.6792C30.9102 88.8706 59.0093 89.2085 95.3706 89.2085C132.178 89.2085 208.165 89.2571 253.623 89.2047C295.091 89.1568 396.683 89.0223 452.784 89.0234C506.182 89.0244 552.847 88.4444 596.931 87.2836\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeOut\",\n delay: calc(4.6),\n opacity: { duration: 0.2, delay: calc(4.6) },\n }}\n onAnimationComplete={onAnimationComplete}\n />\n </motion.svg>\n )\n}\n","\"use client\"\n\nimport type { TargetAndTransition } from \"motion/react\"\nimport { motion } from \"motion/react\"\nimport type { ComponentProps } from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nconst initialProps: TargetAndTransition = {\n pathLength: 0,\n opacity: 0,\n}\n\nconst animateProps: TargetAndTransition = {\n pathLength: 1,\n opacity: 1,\n}\n\nexport type AppleHelloEffectSpanishProps = Omit<\n ComponentProps<typeof motion.svg>,\n \"durationScale\" | \"onAnimationComplete\"\n> & {\n /**\n * Scales the duration and delay of the handwriting animation.\n * Values below 1 speed up, values above 1 slow down.\n * @defaultValue 1\n */\n durationScale?: number\n /** Called when the full handwriting animation completes. */\n onAnimationComplete?: () => void\n}\n\nexport function AppleHelloEffectSpanish({\n className,\n durationScale = 1,\n onAnimationComplete,\n ...props\n}: AppleHelloEffectSpanishProps) {\n const calc = (x: number) => x * durationScale\n\n return (\n <motion.svg\n className={cn(\"h-20\", className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 562 200\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"14.888\"\n strokeLinecap=\"round\"\n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n {...props}\n >\n <title>Hola</title>\n <motion.path\n d=\"M8.692 169.422c27.495-16.185 51.282-36.493 77.822-72.424 18.627-25.219 27.738-47.893 28.236-65.962.248-13.399-6.204-23.563-18.362-23.563-13.4 0-21.837 10.164-27.048 33.497-5.707 25.643-9.925 55.067-20.595 149.42\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeOut\",\n opacity: { duration: 0.4 },\n }}\n />\n <motion.path\n d=\"M49.79 181.168c5.265-46.274 26.25-83.086 52.801-83.086 15.881 0 25.974 12.655 23.108 30.769-1.613 10.67-4.528 23.077-6.193 35.236-2.026 15.384 3.761 27.295 21.655 27.295 25.257 0 41.157-24.523 48.037-53.562\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeInOut\",\n delay: calc(0.7),\n opacity: { duration: 0.2, delay: calc(0.8) },\n }}\n />\n <motion.path\n d=\"M234.601 94.36c-24.822 2.006-43.39 23.044-46.898 51.861-3.226 26.302 11.414 46.154 34.739 46.154 28.288 0 46.65-24.318 47.891-54.591.992-29.032-12.903-43.672-31.762-43.672-14.888 0-22.829 11.166-22.332 24.813.484 18.661 14.478 39.612 43.839 42.289 40.725 3.714 96.424-26.396 118.914-85.593 6.487-17.074 8.959-33.18 8.959-44.436 0-13.346-4.219-23.593-16.129-23.593-11.663 0-19.355 9.056-26.303 23.355-8.14 16.583-14.162 40.503-16.625 67.542-6.204 67.846 7.692 92.893 37.42 92.893 30.127 0 50.049-26.113 58.664-56.317\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(1.6),\n ease: \"easeInOut\",\n delay: calc(1.4),\n opacity: { duration: 0.2, delay: calc(1.5) },\n }}\n />\n <motion.path\n d=\"M503.236 112.864c-4.864-11.195-15.204-18.753-31.664-18.753-27.295 0-47.808 27.296-49.155 56.576-1.174 26.799 11.192 41.864 28.805 41.687 25.001-.25 43.378-24.805 51.581-76.763 1.012-6.41 2.061-13.104 3.073-19.514\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.7),\n ease: \"easeInOut\",\n delay: calc(2.9),\n opacity: { duration: 0.2, delay: calc(3) },\n }}\n />\n <motion.path\n d=\"m505.875 96.097-3.073 19.507c-4.482 28.44-6.549 39.66-6.327 46.994.518 17.121 6.675 28.784 22.06 28.784 19.355 0 30.21-13.152 35.421-27.544\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeInOut\",\n delay: calc(3.5),\n opacity: { duration: 0.2, delay: calc(3.5) },\n }}\n onAnimationComplete={onAnimationComplete}\n />\n </motion.svg>\n )\n}\n","\"use client\"\n\nimport { cn } from \"#lib/utils\"\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\"\nimport { ChevronsExpandVertical, Xmark } from \"@gravity-ui/icons\"\nimport type React from \"react\"\nimport { Input } from \"./input\"\nimport { ScrollArea } from \"./scroll-area\"\n\nexport const Autocomplete: typeof AutocompletePrimitive.Root =\n AutocompletePrimitive.Root\n\nexport function AutocompleteInput({\n className,\n showTrigger = false,\n showClear = false,\n startAddon,\n size,\n triggerProps,\n clearProps,\n ...props\n}: Omit<AutocompletePrimitive.Input.Props, \"size\"> & {\n showTrigger?: boolean\n showClear?: boolean\n startAddon?: React.ReactNode\n size?: \"sm\" | \"default\" | \"lg\" | number\n ref?: React.Ref<HTMLInputElement>\n triggerProps?: AutocompletePrimitive.Trigger.Props\n clearProps?: AutocompletePrimitive.Clear.Props\n}): React.ReactElement {\n const sizeValue = (size ?? \"default\") as \"sm\" | \"default\" | \"lg\" | number\n\n return (\n <AutocompletePrimitive.InputGroup\n className=\"relative w-full text-foreground not-has-[>*.w-full]:w-fit has-disabled:opacity-64\"\n data-slot=\"autocomplete-input-group\"\n >\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 inset-s-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg]:-mx-0.5 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\"\n data-slot=\"autocomplete-start-addon\"\n >\n {startAddon}\n </div>\n )}\n <AutocompletePrimitive.Input\n className={cn(\n startAddon &&\n \"*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8.5)-1px)] data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7.5)-1px)] sm:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8)-1px)] sm:data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7)-1px)]\",\n sizeValue === \"sm\"\n ? \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-6.5\"\n : \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-7\",\n className\n )}\n data-slot=\"autocomplete-input\"\n render={<Input />}\n {...props}\n />\n {showTrigger && (\n <AutocompleteTrigger\n className={cn(\n \"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-colors outline-none hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\",\n sizeValue === \"sm\" ? \"inset-e-0\" : \"inset-e-0.5\"\n )}\n {...triggerProps}\n >\n <AutocompletePrimitive.Icon data-slot=\"autocomplete-icon\">\n <ChevronsExpandVertical />\n </AutocompletePrimitive.Icon>\n </AutocompleteTrigger>\n )}\n {showClear && (\n <AutocompleteClear\n className={cn(\n \"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-colors outline-none hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\",\n sizeValue === \"sm\" ? \"inset-e-0\" : \"inset-e-0.5\"\n )}\n {...clearProps}\n >\n <Xmark />\n </AutocompleteClear>\n )}\n </AutocompletePrimitive.InputGroup>\n )\n}\n\nexport function AutocompletePopup({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n alignOffset,\n align = \"start\",\n anchor,\n portalProps,\n ...props\n}: AutocompletePrimitive.Popup.Props & {\n align?: AutocompletePrimitive.Positioner.Props[\"align\"]\n sideOffset?: AutocompletePrimitive.Positioner.Props[\"sideOffset\"]\n alignOffset?: AutocompletePrimitive.Positioner.Props[\"alignOffset\"]\n side?: AutocompletePrimitive.Positioner.Props[\"side\"]\n anchor?: AutocompletePrimitive.Positioner.Props[\"anchor\"]\n portalProps?: AutocompletePrimitive.Portal.Props\n}): React.ReactElement {\n return (\n <AutocompletePrimitive.Portal {...portalProps}>\n <AutocompletePrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"z-50 select-none\"\n data-slot=\"autocomplete-positioner\"\n side={side}\n sideOffset={sideOffset}\n >\n <span\n className={cn(\n \"relative flex max-h-full max-w-(--available-width) min-w-(--anchor-width) origin-(--transform-origin) rounded-lg border bg-background shadow-lg/5 transition-[scale,opacity] not-dark:bg-clip-padding before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className\n )}\n >\n <AutocompletePrimitive.Popup\n className=\"flex max-h-[min(var(--available-height),23rem)] flex-1 flex-col text-foreground\"\n data-slot=\"autocomplete-popup\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Popup>\n </span>\n </AutocompletePrimitive.Positioner>\n </AutocompletePrimitive.Portal>\n )\n}\n\nexport function AutocompleteItem({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Item.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Item\n className={cn(\n \"flex min-h-8 cursor-default items-center rounded-sm px-2 py-1 text-base outline-none select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground sm:min-h-7 sm:text-sm data-disabled:pointer-events-none data-disabled:opacity-64\",\n className\n )}\n data-slot=\"autocomplete-item\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Item>\n )\n}\n\nexport function AutocompleteSeparator({\n className,\n ...props\n}: AutocompletePrimitive.Separator.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border last:hidden\", className)}\n data-slot=\"autocomplete-separator\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteGroup({\n className,\n ...props\n}: AutocompletePrimitive.Group.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Group\n className={cn(\"[[role=group]+&]:mt-1.5\", className)}\n data-slot=\"autocomplete-group\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteGroupLabel({\n className,\n ...props\n}: AutocompletePrimitive.GroupLabel.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 text-xs font-medium text-muted-foreground\",\n className\n )}\n data-slot=\"autocomplete-group-label\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteEmpty({\n className,\n ...props\n}: AutocompletePrimitive.Empty.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Empty\n className={cn(\n \"text-center text-base text-muted-foreground not-empty:p-2 sm:text-sm\",\n className\n )}\n data-slot=\"autocomplete-empty\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteRow({\n className,\n ...props\n}: AutocompletePrimitive.Row.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Row\n className={className}\n data-slot=\"autocomplete-row\"\n {...props}\n />\n )\n}\n\nexport const AutocompleteValue: typeof AutocompletePrimitive.Value =\n AutocompletePrimitive.Value\n\nexport function AutocompleteList({\n className,\n ...props\n}: AutocompletePrimitive.List.Props): React.ReactElement {\n return (\n <ScrollArea>\n <AutocompletePrimitive.List\n className={cn(\n \"not-empty:scroll-py-1 not-empty:p-1 in-data-has-overflow-y:pe-3\",\n className\n )}\n data-slot=\"autocomplete-list\"\n {...props}\n />\n </ScrollArea>\n )\n}\n\nexport function AutocompleteClear({\n className,\n ...props\n}: AutocompletePrimitive.Clear.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Clear\n className={cn(\n \"absolute inset-e-0.5 top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-[color,background-color,box-shadow,opacity] outline-none hover:opacity-100 sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"autocomplete-clear\"\n {...props}\n >\n <Xmark />\n </AutocompletePrimitive.Clear>\n )\n}\n\nexport function AutocompleteStatus({\n className,\n ...props\n}: AutocompletePrimitive.Status.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Status\n className={cn(\n \"px-3 py-2 text-xs font-medium text-muted-foreground empty:m-0 empty:p-0\",\n className\n )}\n data-slot=\"autocomplete-status\"\n {...props}\n />\n )\n}\n\nexport const AutocompleteCollection: typeof AutocompletePrimitive.Collection =\n AutocompletePrimitive.Collection\n\nexport function AutocompleteTrigger({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Trigger.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Trigger\n className={className}\n data-slot=\"autocomplete-trigger\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Trigger>\n )\n}\n\nexport const useAutocompleteFilter: typeof AutocompletePrimitive.useFilter =\n AutocompletePrimitive.useFilter\n\nexport { AutocompletePrimitive }\n","import { Input as InputPrimitive } from \"@base-ui/react/input\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Input({\n className,\n type,\n inputMode,\n onWheel,\n ...props\n}: React.ComponentProps<\"input\">) {\n const isNumberInput = type === \"number\"\n\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n inputMode={isNumberInput ? \"decimal\" : inputMode}\n onWheel={\n isNumberInput\n ? (event) => {\n event.currentTarget.blur()\n onWheel?.(event)\n }\n : onWheel\n }\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n isNumberInput &&\n \"[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\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=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 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}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-full bg-border\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\n \"aspect-square size-full rounded-full object-cover\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarBadge,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,opacity] duration-150 ease-[var(--ease-out)] motion-reduce:transition-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n","\"use client\"\n\nimport { useRouter } from \"next/navigation\"\nimport * as React from \"react\"\n\nimport {\n getNativeAppPlugin,\n getNativePlatform,\n getNativeStatusBarPlugin,\n getNativeThemePlugin,\n isNativeApp,\n} from \"../lib\"\n\nfunction getAppPath(value: string) {\n try {\n const url = new URL(value)\n\n if (url.protocol === \"https:\" && url.hostname === \"kdpower.in\") {\n return `${url.pathname}${url.search}${url.hash}`\n }\n\n if (url.protocol === \"kdpower:\" && url.hostname === \"open\") {\n return `${url.pathname}${url.search}${url.hash}`\n }\n } catch {\n // Ignore malformed or unrelated deep links.\n }\n\n return null\n}\n\nfunction getCurrentTheme(): \"light\" | \"dark\" {\n return document.documentElement.classList.contains(\"dark\") ? \"dark\" : \"light\"\n}\n\nfunction syncNativeStatusBar() {\n const statusBar = getNativeStatusBarPlugin()\n if (!statusBar) return\n\n const theme = getCurrentTheme()\n const backgroundColor = theme === \"dark\" ? \"#000000\" : \"#ffffff\"\n\n void Promise.all([\n statusBar.setStyle?.({\n style: theme === \"dark\" ? \"DARK\" : \"LIGHT\",\n }),\n statusBar.setBackgroundColor?.({\n color: backgroundColor,\n }),\n ]).catch(() => {\n // Status bar sync is optional.\n })\n}\n\nfunction syncNativeTheme() {\n const nativeTheme = getNativeThemePlugin()\n if (!nativeTheme) return\n\n void nativeTheme\n .setStyle?.({\n style: getCurrentTheme(),\n })\n .catch(() => {\n // Native theme sync is optional when the local native plugin is absent.\n })\n}\n\nfunction syncNativeAppearance() {\n syncNativeStatusBar()\n syncNativeTheme()\n}\n\nexport function NativeAppBridge() {\n const router = useRouter()\n\n React.useEffect(() => {\n if (!isNativeApp()) return\n\n const root = document.documentElement\n const platform = getNativePlatform()\n\n root.dataset.nativeApp = \"true\"\n\n if (platform) {\n root.dataset.nativePlatform = platform\n }\n\n if (\n platform === \"ios\" &&\n navigator.platform === \"MacIntel\" &&\n navigator.maxTouchPoints < 2\n ) {\n root.dataset.nativeDevice = \"mac\"\n }\n\n // Initial native appearance sync.\n syncNativeAppearance()\n\n // Watch next-themes changing the <html> class.\n const themeObserver = new MutationObserver(() => {\n syncNativeAppearance()\n })\n\n themeObserver.observe(root, {\n attributes: true,\n attributeFilter: [\"class\"],\n })\n\n let cancelled = false\n let removeAppUrlListener: (() => Promise<void>) | undefined\n\n const appPlugin = getNativeAppPlugin()\n\n if (appPlugin?.addListener) {\n const listenerResult = appPlugin.addListener(\"appUrlOpen\", ({ url }) => {\n const path = getAppPath(url)\n\n if (path) {\n router.push(path)\n }\n })\n\n void Promise.resolve(listenerResult)\n .then((listener) => {\n if (cancelled) {\n void listener.remove()\n return\n }\n\n removeAppUrlListener = () => listener.remove()\n })\n .catch(() => {\n // Deep-link support is optional when the native App plugin is absent.\n })\n }\n\n return () => {\n cancelled = true\n\n themeObserver.disconnect()\n\n void removeAppUrlListener?.()\n\n delete root.dataset.nativeApp\n delete root.dataset.nativePlatform\n delete root.dataset.nativeDevice\n }\n }, [router])\n\n return null\n}\n","type PluginListenerHandle = {\n remove: () => Promise<void>\n}\n\ntype AppUrlOpenEvent = {\n url: string\n}\n\ntype AppPlugin = {\n addListener?: (\n eventName: \"appUrlOpen\",\n listener: (event: AppUrlOpenEvent) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype StatusBarStyle = \"DARK\" | \"LIGHT\" | \"DEFAULT\"\n\ntype StatusBarPlugin = {\n setBackgroundColor?: (options: { color: string }) => Promise<void>\n setStyle?: (options: { style: StatusBarStyle }) => Promise<void>\n}\n\ntype BrowserPlugin = {\n open?: (options: { url: string }) => Promise<void>\n}\n\ntype NativeSharePlugin = {\n share?: (options: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n }) => Promise<void>\n}\n\ntype NativeThemePlugin = {\n setStyle?: (options: { style: \"dark\" | \"light\" | \"system\" }) => Promise<void>\n}\n\ntype NativePaymentPlugin = {\n openUpiUrl?: (options: {\n url: string\n title?: string\n }) => Promise<{ opened: boolean }>\n}\n\nexport type NativeSharedFile = {\n name: string\n type: string\n size: number\n data: string\n}\n\ntype NativeImagePickerPlugin = {\n pickImages?: (options: {\n limit?: number\n title?: string\n }) => Promise<{ files: NativeSharedFile[] }>\n}\n\nexport type NativeSharePayload = {\n id: string\n title?: string | null\n text?: string | null\n files: NativeSharedFile[]\n}\n\ntype NativeShareTargetPlugin = {\n addListener?: (\n eventName: \"shareReceived\",\n listener: (event: NativeSharePayload) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n getPendingShare?: () => Promise<{ share: NativeSharePayload | null }>\n clearPendingShare?: () => Promise<void>\n}\n\ntype NativeAppSettingsPlugin = {\n openAppSettings?: () => Promise<void>\n}\n\nexport type NativeUpdateState = {\n status: \"downloading\" | \"downloaded\" | \"installing\" | \"installed\" | \"failed\" | \"canceled\" | \"unknown\"\n bytesDownloaded: number\n totalBytesToDownload: number\n}\n\nexport type NativeUpdateInfo = NativeUpdateState & {\n available: boolean\n inProgress: boolean\n availableVersionCode: number\n installStatus: NativeUpdateState[\"status\"]\n}\n\ntype NativeInAppUpdatePlugin = {\n checkForUpdate?: () => Promise<NativeUpdateInfo>\n startUpdate?: () => Promise<void>\n completeUpdate?: () => Promise<void>\n addListener?: (\n eventName: \"updateStateChanged\",\n listener: (state: NativeUpdateState) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype NativeShareFilePlugin = {\n saveImage?: (options: {\n data: string\n fileName?: string\n }) => Promise<{ path?: string }>\n}\n\ntype CameraPhoto = {\n format?: string\n path?: string\n webPath?: string\n}\n\ntype CameraPlugin = {\n getPhoto?: (options: {\n allowEditing?: boolean\n quality?: number\n resultType: \"uri\"\n source?: \"PROMPT\" | \"CAMERA\" | \"PHOTOS\"\n }) => Promise<CameraPhoto>\n pickImages?: (options: {\n limit?: number\n quality?: number\n }) => Promise<{ photos: CameraPhoto[] }>\n}\n\ntype CapacitorRuntime = {\n isNativePlatform?: () => boolean\n getPlatform?: () => string\n Plugins?: {\n App?: AppPlugin\n Browser?: BrowserPlugin\n Camera?: CameraPlugin\n NativeAppSettings?: NativeAppSettingsPlugin\n NativeInAppUpdate?: NativeInAppUpdatePlugin\n NativeImagePicker?: NativeImagePickerPlugin\n NativeShareFile?: NativeShareFilePlugin\n NativePayment?: NativePaymentPlugin\n NativeTheme?: NativeThemePlugin\n NativeShareTarget?: NativeShareTargetPlugin\n Share?: NativeSharePlugin\n StatusBar?: StatusBarPlugin\n }\n}\n\ndeclare global {\n interface Window {\n Capacitor?: CapacitorRuntime\n }\n}\n\nexport function isNativeApp() {\n if (typeof window === \"undefined\") return false\n\n return window.Capacitor?.isNativePlatform?.() === true\n}\n\nexport function getNativePlatform() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.getPlatform?.() ?? null\n}\n\nexport function getNativeAppPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.App ?? null\n}\n\nexport function getNativeStatusBarPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.StatusBar ?? null\n}\n\nexport function getNativeBrowserPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Browser ?? null\n}\n\nexport function getNativeSharePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Share ?? null\n}\n\nexport function getNativeCameraPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Camera ?? null\n}\n\nexport function getNativeImagePickerPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeImagePicker ?? null\n}\n\nexport function getNativeShareFilePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareFile ?? null\n}\n\nexport function getNativeThemePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeTheme ?? null\n}\n\nexport function getNativePaymentPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativePayment ?? null\n}\n\nexport function getNativeShareTargetPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareTarget ?? null\n}\n\nexport function getNativeAppSettingsPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeAppSettings ?? null\n}\n\nexport function getNativeInAppUpdatePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeInAppUpdate ?? null\n}\n\n/** Opens the OS App Info page. Returns false when unavailable (web or old shell). */\nexport async function openNativeAppSettings() {\n const settings = getNativeAppSettingsPlugin()\n\n if (!settings?.openAppSettings) return false\n\n try {\n await settings.openAppSettings()\n return true\n } catch {\n return false\n }\n}\n\nexport async function openUpiPaymentUrl(\n url: string,\n options: {\n isNative?: boolean\n title?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const payment = getNativePaymentPlugin()\n\n if (payment?.openUpiUrl) {\n const result = await payment.openUpiUrl({\n url,\n title: options.title,\n })\n\n return result.opened\n }\n }\n\n window.location.href = url\n return true\n}\n\nexport async function openExternalUrl(\n url: string,\n options: {\n isNative?: boolean\n target?: string\n features?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const browser = getNativeBrowserPlugin()\n\n if (browser?.open) {\n await browser.open({ url })\n return true\n }\n }\n\n const opened = window.open(\n url,\n options.target ?? \"_blank\",\n options.features ?? \"noopener,noreferrer\"\n )\n\n return opened != null\n}\n\n/**\n * Saves base64 image bytes into app-private storage and returns a file:// URL\n * that @capacitor/share can attach. Returns null outside the native app or\n * when the save fails, so callers can fall back to a text-only share.\n */\nexport async function saveNativeShareImage(\n dataUrl: string,\n options: {\n fileName?: string\n isNative?: boolean\n } = {}\n) {\n if (!(options.isNative ?? isNativeApp())) return null\n\n const plugin = getNativeShareFilePlugin()\n\n if (!plugin?.saveImage) return null\n\n try {\n const result = await plugin.saveImage({\n data: dataUrl,\n fileName: options.fileName,\n })\n\n return result.path ?? null\n } catch {\n return null\n }\n}\n\nexport async function shareNativeOrWeb(\n data: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n },\n options: {\n isNative?: boolean\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const share = getNativeSharePlugin()\n\n if (share?.share) {\n await share.share(data)\n return true\n }\n }\n\n // Web Share only accepts File objects, not file:// URL strings.\n const { files: _files, ...webData } = data\n\n if (typeof navigator.share === \"function\") {\n await navigator.share(webData)\n return true\n }\n\n return false\n}\n\nfunction isNativePickerCancel(error: unknown) {\n if (!(error instanceof Error)) return false\n\n const message = error.message.toLowerCase()\n\n return (\n message.includes(\"cancel\") ||\n message.includes(\"dismiss\") ||\n message.includes(\"no image\") ||\n message.includes(\"user denied\")\n )\n}\n\nfunction imageTypeFromFormat(format: string | undefined, fallback: string) {\n if (!format) return fallback\n\n const normalized = format.toLowerCase()\n\n if (normalized === \"jpg\") return \"image/jpeg\"\n if (normalized === \"jpeg\") return \"image/jpeg\"\n if (normalized === \"png\") return \"image/png\"\n if (normalized === \"webp\") return \"image/webp\"\n if (normalized === \"heic\") return \"image/heic\"\n if (normalized === \"heif\") return \"image/heif\"\n\n return fallback\n}\n\nfunction imageExtensionFromType(type: string) {\n if (type.includes(\"png\")) return \"png\"\n if (type.includes(\"webp\")) return \"webp\"\n if (type.includes(\"heic\")) return \"heic\"\n if (type.includes(\"heif\")) return \"heif\"\n\n return \"jpg\"\n}\n\nexport function nativeSharedFileToFile(\n sharedFile: NativeSharedFile,\n fallbackName = \"native-image.jpg\"\n) {\n const binary = atob(sharedFile.data)\n const bytes = new Uint8Array(binary.length)\n\n for (let index = 0; index < binary.length; index++) {\n bytes[index] = binary.charCodeAt(index)\n }\n\n return new File([bytes], sharedFile.name || fallbackName, {\n type: sharedFile.type || \"image/jpeg\",\n lastModified: Date.now(),\n })\n}\n\nasync function nativePhotoToFile(\n photo: CameraPhoto,\n index: number,\n prefix: string\n) {\n const src = photo.webPath ?? photo.path\n\n if (!src) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const response = await fetch(src)\n\n if (!response.ok) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const blob = await response.blob()\n const type = blob.type || imageTypeFromFormat(photo.format, \"image/jpeg\")\n const extension = imageExtensionFromType(type)\n\n return new File([blob], `${prefix}-${Date.now()}-${index}.${extension}`, {\n type,\n lastModified: Date.now(),\n })\n}\n\nexport async function pickNativeImageFiles({\n isNative,\n multiple = false,\n limit = multiple ? 10 : 1,\n quality = 85,\n prefix = \"image\",\n}: {\n isNative?: boolean\n multiple?: boolean\n limit?: number\n quality?: number\n prefix?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const camera = getNativeCameraPlugin()\n\n if (!camera) return null\n\n try {\n const photos =\n multiple && camera.pickImages\n ? (await camera.pickImages({ limit, quality })).photos\n : [\n await camera.getPhoto?.({\n allowEditing: false,\n quality,\n resultType: \"uri\",\n source: \"PROMPT\",\n }),\n ].filter((photo): photo is CameraPhoto => Boolean(photo))\n\n return Promise.all(\n photos\n .slice(0, limit)\n .map((photo, index) => nativePhotoToFile(photo, index, prefix))\n )\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n\nexport async function pickNativeChooserImageFiles({\n isNative,\n limit = 1,\n title = \"Select image\",\n}: {\n isNative?: boolean\n limit?: number\n title?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const picker = getNativeImagePickerPlugin()\n\n if (!picker?.pickImages) return null\n\n try {\n const result = await picker.pickImages({\n limit,\n title,\n })\n\n return (result.files ?? [])\n .filter((file) => file.type?.startsWith(\"image/\"))\n .slice(0, limit)\n .map((file) => nativeSharedFileToFile(file))\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n","import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction BubbleGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"bubble-group\"\n className={cn(\"flex min-w-0 flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst bubbleVariants = cva(\n \"group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full\",\n {\n variants: {\n variant: {\n default:\n \"*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80\",\n secondary:\n \"*:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]\",\n muted:\n \"*:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)]\",\n tinted:\n \"*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-foreground dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.35_calc(c*0.5)_h)]\",\n outline:\n \"*:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-input/30\",\n ghost:\n \"border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/50\",\n destructive:\n \"*:data-[slot=bubble-content]:bg-destructive/10 *:data-[slot=bubble-content]:text-destructive dark:*:data-[slot=bubble-content]:bg-destructive/20 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/30\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Bubble({\n variant = \"default\",\n align = \"start\",\n className,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof bubbleVariants> & {\n align?: \"start\" | \"end\"\n }) {\n return (\n <div\n data-slot=\"bubble\"\n data-variant={variant}\n data-align={align}\n className={cn(bubbleVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction BubbleContent({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"w-fit max-w-full min-w-0 overflow-hidden rounded-xl border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-3 [button,a]:focus-visible:ring-ring/50\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"bubble-content\",\n },\n })\n}\n\nconst bubbleReactionsVariants = cva(\n \"absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-muted px-1.5 py-0.5 text-sm ring-3 ring-card has-[button]:p-0\",\n {\n variants: {\n side: {\n top: \"top-0 -translate-y-3/4\",\n bottom: \"bottom-0 translate-y-3/4\",\n },\n align: {\n start: \"left-3\",\n end: \"right-3\",\n },\n },\n defaultVariants: {\n side: \"bottom\",\n align: \"end\",\n },\n }\n)\n\nfunction BubbleReactions({\n side = \"bottom\",\n align = \"end\",\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n align?: \"start\" | \"end\"\n side?: \"top\" | \"bottom\"\n}) {\n return (\n <div\n data-slot=\"bubble-reactions\"\n data-align={align}\n data-side={side}\n className={cn(bubbleReactionsVariants({ side, align }), className)}\n {...props}\n />\n )\n}\n\nexport { BubbleGroup, Bubble, BubbleContent, BubbleReactions }\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\nimport { Separator } from \"./separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\",\n vertical:\n \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n })\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","\"use client\"\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\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 \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)\",\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(\n \"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n className\n )}\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-sm text-muted-foreground\", 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-(--card-spacing)\", 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(\n \"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n}\n","\"use client\"\n\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Button } from \"./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 api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n queueMicrotask(() => onSelect(api))\n\n return () => {\n api.off(\"reInit\", onSelect)\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-sm\",\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 touch-manipulation rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 left-2 z-10 -translate-y-1/2 sm:left-3\"\n : \"top-2 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ChevronLeft className=\"cn-rtl-flip\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon-sm\",\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 touch-manipulation rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 right-2 z-10 -translate-y-1/2 sm:right-3\"\n : \"bottom-2 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ChevronRight className=\"cn-rtl-flip\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n useCarousel,\n type CarouselApi,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport type { TooltipValueType } from \"recharts\"\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\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const\ntype TooltipNameType = number | string\n\nexport type ChartConfig = Record<\n string,\n {\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 initialDimension = INITIAL_DIMENSION,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n initialDimension?: {\n width: number\n height: number\n }\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 \"flex aspect-video justify-center text-xs [&_.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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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 [&_.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 initialDimension={initialDimension}\n >\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 } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n \"accessibilityLayer\"\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]?.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 \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background 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\n .filter((item) => item.type !== \"none\")\n .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={index}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\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 != null && (\n <span className=\"font-medium text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : String(item.value)}\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 hideIcon?: boolean\n nameKey?: string\n} & RechartsPrimitive.DefaultLegendContentProps) {\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\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={index}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\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\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 ? config[configLabelKey] : config[key]\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n}\n","\"use client\"\n\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Check, ChevronDown, Xmark } from \"@gravity-ui/icons\"\nimport { Button } from \"./button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"./input-group\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDown className=\"pointer-events-none size-4 text-muted-foreground\" />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <Xmark className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n startContent,\n endContent,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n endContentFocusInput?: boolean\n startContent?: React.ReactNode\n endContent?: React.ReactNode\n}) {\n return (\n <InputGroup className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n {startContent && (\n <InputGroupAddon align=\"inline-start\">{startContent}</InputGroupAddon>\n )}\n\n <InputGroupAddon align=\"inline-end\" className=\"pr-0\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n render={<ComboboxTrigger />}\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n />\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n <InputGroupAddon align=\"inline-end\">{endContent}</InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\n \"group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg bg-background text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground 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 {children}\n <ComboboxPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Check className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-2 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <Xmark className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Textarea } from \"./textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n focusInput = true,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof inputGroupAddonVariants> & {\n focusInput?: boolean\n }) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n if (!focusInput) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n \"bar-icon\":\n \"size-7 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\" | \"type\"> &\n VariantProps<typeof inputGroupButtonVariants> & {\n type?: \"button\" | \"submit\" | \"reset\"\n }) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n InputGroupTextarea,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","\"use client\"\n\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Magnifier } from \"@gravity-ui/icons\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\nimport { InputGroup, InputGroupAddon } from \"./input-group\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"flex size-full flex-col overflow-hidden rounded-xl! bg-background text-popover-foreground outline-none\",\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 = false,\n ...props\n}: Omit<React.ComponentProps<typeof Dialog>, \"children\"> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n children: React.ReactNode\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(\n \"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\",\n className\n )}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n startContent,\n endContent,\n focusAddon = true,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input> & {\n startContent?: React.ReactNode\n endContent?: React.ReactNode\n /** When false, clicking the leading magnifier won't focus the input. */\n focusAddon?: boolean\n}) {\n return (\n <InputGroup\n data-slot=\"command-input-wrapper\"\n className={cn(\n \"h-8! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\",\n className\n )}\n >\n {startContent ? (\n <InputGroupAddon align=\"inline-start\" focusInput={false}>\n {startContent}\n </InputGroupAddon>\n ) : null}\n <InputGroupAddon focusInput={focusAddon}>\n <Magnifier />\n </InputGroupAddon>\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className=\"w-full outline-hidden disabled:cursor-not-allowed disabled:opacity-50\"\n {...props}\n />\n {endContent ? (\n <InputGroupAddon align=\"inline-end\" focusInput={false}>\n {endContent}\n </InputGroupAddon>\n ) : null}\n </InputGroup>\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 \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn(\"py-6 text-center text-sm\", className)}\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 \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\",\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(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n {/* <CheckIcon className=\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" /> */}\n </CommandPrimitive.Item>\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 \"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n}\n","\"use client\"\n\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Xmark } from \"@gravity-ui/icons\"\nimport { Button } from \"./button\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-card p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute top-4 right-4\"\n size=\"icon-sm\"\n />\n }\n >\n <Xmark />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\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\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex shrink-0 flex-col-reverse items-center justify-center gap-2 p-4 pt-0 sm:flex-row\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\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\"\n\nimport { cn } from \"#lib/utils\"\n\ntype DashedSeparatorProps = {\n className?: string\n dashWidth?: number\n minimumGap?: number\n thickness?: number\n}\n\nexport function DashedSeparator({\n className,\n dashWidth = 12,\n minimumGap = 8,\n thickness = 1,\n}: DashedSeparatorProps) {\n const containerRef = React.useRef<HTMLDivElement>(null)\n const [dashCount, setDashCount] = React.useState(0)\n\n React.useEffect(() => {\n const element = containerRef.current\n\n if (!element) return\n\n const updateDashCount = () => {\n const width = element.getBoundingClientRect().width\n\n const count = Math.max(\n 2,\n Math.floor((width + minimumGap) / (dashWidth + minimumGap))\n )\n\n setDashCount(count)\n }\n\n updateDashCount()\n\n const observer = new ResizeObserver(updateDashCount)\n observer.observe(element)\n\n return () => observer.disconnect()\n }, [dashWidth, minimumGap])\n\n return (\n <div\n ref={containerRef}\n aria-hidden=\"true\"\n className={cn(\n \"flex w-full items-center justify-between overflow-hidden text-border\",\n className\n )}\n style={{ height: thickness }}\n >\n {Array.from({ length: dashCount }).map((_, index) => (\n <span\n key={index}\n className=\"shrink-0 bg-current\"\n style={{\n width: dashWidth,\n height: thickness,\n }}\n />\n ))}\n </div>\n )\n}\n","\"use client\"\nimport { cn } from \"#lib/utils\"\nimport { LucideIcon } from \"lucide-react\"\nimport { motion } from \"motion/react\"\nimport * as React from \"react\"\n\ninterface DockProps {\n className?: string\n items: {\n icon: LucideIcon\n label: string\n onClick?: () => void\n }[]\n}\n\ninterface DockIconButtonProps {\n icon: LucideIcon\n label: string\n onClick?: () => void\n className?: string\n}\n\nconst floatingAnimation = {\n initial: { y: 0 },\n animate: {\n y: [-2, 2, -2],\n transition: {\n duration: 4,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n },\n },\n}\n\nconst DockIconButton = React.forwardRef<HTMLButtonElement, DockIconButtonProps>(\n ({ icon: Icon, label, onClick, className }, ref) => {\n return (\n <motion.button\n ref={ref}\n whileHover={{ scale: 1.1, y: -2 }}\n whileTap={{ scale: 0.95 }}\n onClick={onClick}\n className={cn(\n \"group relative rounded-lg p-3\",\n \"transition-colors hover:bg-secondary\",\n className\n )}\n >\n <Icon className=\"h-5 w-5 text-foreground\" />\n <span\n className={cn(\n \"absolute -top-8 left-1/2 -translate-x-1/2\",\n \"rounded px-2 py-1 text-xs\",\n \"bg-background text-popover-foreground\",\n \"opacity-0 group-hover:opacity-100\",\n \"pointer-events-none whitespace-nowrap transition-opacity\"\n )}\n >\n {label}\n </span>\n </motion.button>\n )\n }\n)\nDockIconButton.displayName = \"DockIconButton\"\n\nconst Dock = React.forwardRef<HTMLDivElement, DockProps>(\n ({ items, className }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex h-64 w-full items-center justify-center p-2\",\n className\n )}\n >\n <div className=\"relative flex h-64 w-full max-w-4xl items-center justify-center rounded-2xl\">\n <motion.div\n initial=\"initial\"\n animate=\"animate\"\n variants={floatingAnimation}\n className={cn(\n \"flex items-center gap-1 rounded-2xl p-2\",\n \"border shadow-lg backdrop-blur-lg\",\n \"border-border bg-background/90\",\n \"transition-shadow duration-300 hover:shadow-xl\"\n )}\n >\n {items.map((item) => (\n <DockIconButton key={item.label} {...item} />\n ))}\n </motion.div>\n </div>\n </div>\n )\n }\n)\nDock.displayName = \"Dock\"\n\nexport { Dock }\n","\"use client\"\n\nimport { Drawer as DrawerPrimitive } from \"@base-ui/react/drawer\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\ntype DrawerContextProps = {\n hasSnapPoints: boolean\n modal: DrawerPrimitive.Root.Props[\"modal\"]\n showSwipeHandle: boolean\n swipeDirection: NonNullable<DrawerPrimitive.Root.Props[\"swipeDirection\"]>\n}\nconst DrawerContext = React.createContext<DrawerContextProps | null>(null)\n\nfunction useDrawer() {\n const context = React.useContext(DrawerContext)\n\n if (!context) {\n throw new Error(\"useDrawer must be used within a Drawer.\")\n }\n\n return context\n}\n\nfunction Drawer({\n modal = true,\n showSwipeHandle,\n snapPoints,\n swipeDirection = \"down\",\n ...props\n}: DrawerPrimitive.Root.Props & {\n showSwipeHandle?: boolean\n}) {\n const hasSnapPoints = snapPoints != null && snapPoints.length > 0\n const resolvedShowSwipeHandle =\n showSwipeHandle ?? (swipeDirection === \"down\" || swipeDirection === \"up\")\n const contextValue = React.useMemo(\n () => ({\n hasSnapPoints,\n modal,\n showSwipeHandle: resolvedShowSwipeHandle,\n swipeDirection,\n }),\n [hasSnapPoints, modal, resolvedShowSwipeHandle, swipeDirection]\n )\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <DrawerPrimitive.Root\n data-slot=\"drawer\"\n modal={modal}\n snapPoints={snapPoints}\n swipeDirection={swipeDirection}\n {...props}\n />\n </DrawerContext.Provider>\n )\n}\n\nfunction DrawerTrigger({ ...props }: DrawerPrimitive.Trigger.Props) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({ ...props }: DrawerPrimitive.Portal.Props) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({ ...props }: DrawerPrimitive.Close.Props) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: DrawerPrimitive.Backdrop.Props) {\n return (\n <DrawerPrimitive.Backdrop\n data-slot=\"drawer-overlay\"\n className={cn(\n \"ease-out-fluid fixed inset-0 z-50 min-h-dvh bg-black/10 opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-backdrop-filter:backdrop-blur-xs supports-[-webkit-touch-callout:none]:absolute\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerSwipeHandle({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-swipe-handle\"\n aria-hidden=\"true\"\n className={cn(\n \"flex shrink-0 cursor-grab transition-opacity duration-200 group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-[swipe-axis=x]/drawer-popup:h-full group-data-[swipe-axis=x]/drawer-popup:w-3 group-data-[swipe-axis=x]/drawer-popup:items-center group-data-[swipe-axis=y]/drawer-popup:h-3 group-data-[swipe-axis=y]/drawer-popup:w-full group-data-[swipe-axis=y]/drawer-popup:justify-center group-data-[swipe-direction=down]/drawer-popup:items-end group-data-[swipe-direction=left]/drawer-popup:order-last group-data-[swipe-direction=left]/drawer-popup:justify-start group-data-[swipe-direction=right]/drawer-popup:justify-end group-data-[swipe-direction=up]/drawer-popup:order-last group-data-[swipe-direction=up]/drawer-popup:items-start after:block after:shrink-0 after:rounded-full after:bg-muted group-data-[swipe-axis=x]/drawer-popup:after:h-24 group-data-[swipe-axis=x]/drawer-popup:after:w-1 group-data-[swipe-axis=y]/drawer-popup:after:h-1 group-data-[swipe-axis=y]/drawer-popup:after:w-20 active:cursor-grabbing\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: DrawerPrimitive.Popup.Props) {\n const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer()\n const swipeAxis =\n swipeDirection === \"down\" || swipeDirection === \"up\" ? \"y\" : \"x\"\n\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n {modal === true && (\n <DrawerOverlay data-snap-points={hasSnapPoints ? \"\" : undefined} />\n )}\n <DrawerPrimitive.Viewport\n data-slot=\"drawer-viewport\"\n data-modal={modal}\n className=\"pointer-events-none fixed inset-0 z-50 select-none data-[modal=true]:pointer-events-auto\"\n >\n <DrawerPrimitive.Popup\n data-slot=\"drawer-popup\"\n data-swipe-axis={swipeAxis}\n data-snap-points={hasSnapPoints ? \"\" : undefined}\n className={cn(\n // Base.\n \"group/drawer-popup pointer-events-auto fixed z-50 m-(--drawer-inset,0px) flex h-(--drawer-content-height) max-h-(--drawer-content-max-height,none) min-h-0 w-(--drawer-content-width,auto) transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)_scale(var(--stack-scale))] flex-col rounded-4xl border bg-card text-sm text-popover-foreground transition-[transform,height,opacity,filter] duration-450 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none [--drawer-bleed-background:transparent] [--drawer-inset:--spacing(2)] [interpolate-size:allow-keywords] dark:border-border\",\n // Nested.\n \"data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95\",\n // Bleed.\n \"after:pointer-events-none after:absolute after:bg-(--drawer-bleed-background,var(--color-popover)) data-[swipe-axis=x]:after:inset-y-0 data-[swipe-axis=x]:after:w-(--bleed) data-[swipe-axis=y]:after:inset-x-0 data-[swipe-axis=y]:after:h-(--bleed) data-[swipe-direction=down]:after:top-full data-[swipe-direction=left]:after:right-full data-[swipe-direction=right]:after:left-full data-[swipe-direction=up]:after:bottom-full\",\n // Sizing.\n \"[--drawer-content-height:var(--drawer-height,auto)] data-[swipe-axis=x]:[--drawer-content-width:75%] data-[swipe-axis=y]:[--drawer-content-max-height:calc(100dvh-6rem)] data-[swipe-axis=y]:data-snap-points:[--drawer-content-height:100dvh] data-[swipe-axis=x]:sm:[--drawer-content-width:24rem]\",\n // Stack.\n \"[--bleed:3rem] [--peek:1rem] [--stack-height:var(--drawer-frontmost-height,var(--drawer-height,0px))] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-scale-base:max(0,calc(1-(var(--nested-drawers)*var(--stack-step))))] [--stack-scale:clamp(0,calc(var(--stack-scale-base)+(var(--stack-step)*var(--stack-progress))),1)] [--stack-shrink:calc(1-var(--stack-scale))] [--stack-step:0.05]\",\n // Transitions.\n \"data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)]\",\n // Axis: y.\n \"data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)\",\n // Axis: x.\n \"data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row\",\n // Direction: down.\n \"data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:origin-bottom data-[swipe-direction=down]:[--closed-transform:translate3d(0,calc(100%+var(--drawer-inset,0px)+2px),0)] data-[swipe-direction=down]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--stack-shrink)*var(--stack-height)))]\",\n // Direction: up.\n \"data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:origin-top data-[swipe-direction=up]:[--closed-transform:translate3d(0,calc(-100%-var(--drawer-inset,0px)-2px),0)] data-[swipe-direction=up]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)+var(--stack-peek-offset)+(var(--stack-shrink)*var(--stack-height)))]\",\n // Direction: left.\n \"data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:origin-left data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]\",\n // Direction: right.\n \"data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:origin-right data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]\",\n className\n )}\n {...props}\n >\n {showSwipeHandle && <DrawerSwipeHandle />}\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-[cubic-bezier(0.45,1.005,0,1.005)] select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none\"\n )}\n >\n {children}\n </DrawerPrimitive.Content>\n </DrawerPrimitive.Popup>\n </DrawerPrimitive.Viewport>\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 shrink-0 flex-col gap-0.5 p-4 pb-0 group-data-[swipe-axis=y]/drawer-popup: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(\"mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({ className, ...props }: DrawerPrimitive.Title.Props) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\n \"font-heading text-base font-medium text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: DrawerPrimitive.Description.Props) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-sm text-balance text-muted-foreground\", 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 DrawerSwipeHandle,\n DrawerTitle,\n DrawerTrigger,\n}\n","\"use client\"\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-background p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_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 </MenuPrimitive.SubmenuTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"w-auto min-w-[96px] rounded-lg bg-background p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 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\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <CheckIcon />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: MenuPrimitive.RadioItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 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\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <CheckIcon />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", 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 \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-14 shrink-0 items-center justify-center rounded-2xl bg-muted text-foreground [&_svg:not([class*='size-'])]:size-7\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-sm font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n}\n","import { Variants } from \"motion/react\"\n\nexport const activityItemAnimation: Variants = {\n hidden: {\n opacity: 0,\n y: 12,\n scale: 0.98,\n },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n duration: 0.18,\n ease: \"easeOut\",\n },\n },\n exit: {\n opacity: 0,\n y: -8,\n scale: 0.98,\n transition: {\n duration: 0.14,\n ease: [0.23, 1, 0.32, 1],\n },\n },\n}\n\nexport const popUp: Variants = {\n hidden: { scale: 0, opacity: 0 },\n visible: {\n opacity: 1,\n scale: 1,\n transition: {\n type: \"spring\",\n },\n },\n}\n\nexport const popUpFromBottomForText: Variants = {\n hidden: {\n opacity: 1,\n y: 70,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n}\nexport const fromRightVariant: Variants = {\n hidden: { x: 100, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 100,\n },\n },\n}\n\nexport const Top: Variants = {\n hidden: {\n opacity: 0,\n y: -70,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n}\n\nexport const Bottom: Variants = {\n hidden: {\n opacity: 1,\n y: 70,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n}\n\nexport const headingFromLeft: Variants = {\n hidden: { x: -200, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 70,\n },\n },\n}\n\nexport const fromLeftVariant: Variants = {\n hidden: { x: -100, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 100,\n },\n },\n}\n\nexport const fromLeftChildren: Variants = {\n hidden: { x: -100, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n },\n },\n}\n\nexport const fromTopVariant: Variants = {\n hidden: { y: -100, opacity: 0 },\n visible: {\n y: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 100,\n },\n },\n}\n\nexport const opacityVariant: Variants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { delay: 0.2 } },\n}\n\nexport const hamFastFadeContainer: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n delayChildren: 0,\n staggerChildren: 0.1,\n },\n },\n}\n\nexport const mobileNavItemSideways: Variants = {\n hidden: { x: -40, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n },\n}\n\nexport const FadeContainer: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: { delayChildren: 0, staggerChildren: 0.1 },\n },\n}\n\nexport const svgVariant: Variants = {\n hidden: {\n pathLength: 0,\n },\n visible: {\n pathLength: 1,\n transition: {\n duration: 4,\n ease: \"easeInOut\",\n },\n },\n}\n\nexport const searchBarSlideAnimation: Variants = {\n hidden: {\n width: 0,\n opacity: 0,\n },\n visible: {\n width: \"100%\",\n opacity: 1,\n transition: {\n type: \"tween\",\n ease: \"linear\",\n duration: 1,\n },\n },\n}\n\nexport const BlogCardAnimation: Variants = {\n hidden: {\n y: 50,\n opacity: 0,\n },\n visible: {\n y: 0,\n opacity: 1,\n transition: {\n delay: 0.2,\n },\n },\n}\n\nexport const ListItemVariant: Variants = {\n hidden: {\n opacity: 0,\n x: -50, // Slide in from the left\n transition: {\n type: \"spring\",\n stiffness: 50,\n },\n },\n visible: {\n opacity: 1,\n x: 0, // Set to the final position\n transition: {\n type: \"spring\",\n stiffness: 50,\n },\n },\n}\n\nexport const kanbanOrderCardAnimation: Variants = {\n hidden: {\n opacity: 0,\n y: 10,\n scale: 0.985,\n filter: \"blur(2px)\",\n },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n filter: \"blur(0px)\",\n transition: {\n type: \"spring\",\n stiffness: 420,\n damping: 34,\n mass: 0.8,\n },\n },\n exit: {\n opacity: 0,\n y: -6,\n scale: 0.985,\n filter: \"blur(1px)\",\n transition: {\n duration: 0.14,\n ease: [0.23, 1, 0.32, 1],\n },\n },\n}\n\nexport const kanbanOrderCardReducedMotionAnimation: Variants = {\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n transition: {\n duration: 0.12,\n ease: \"easeOut\",\n },\n },\n exit: {\n opacity: 0,\n transition: {\n duration: 0.1,\n ease: [0.23, 1, 0.32, 1],\n },\n },\n}\n\nexport const kanbanOrderCardLayoutTransition = {\n type: \"spring\",\n stiffness: 520,\n damping: 42,\n mass: 0.75,\n} as const\n","\"use client\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { useMemo } from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Label } from \"./label\"\nimport { Separator } from \"./separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-1 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-2 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-left text-[10px] leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldTitle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\"\n\nimport NextImage, { type ImageProps as NextImageProps } from \"next/image\"\nimport { type ReactNode, useCallback, useState } from \"react\"\nimport { cn } from \"../lib\"\nimport { JellyMini, Skeleton } from \"./\"\n\nexport type ImageProps = Omit<\n NextImageProps,\n \"children\" | \"placeholder\" | \"blurDataURL\" | \"src\"\n> & {\n src?: NextImageProps[\"src\"] | null\n wrapper?: string\n showSkeleton?: boolean\n children?: ReactNode\n /** Content to render when no source is provided or the image fails to load. */\n fallback?: ReactNode\n}\n\nfunction srcValue(src: NextImageProps[\"src\"] | null | undefined) {\n if (!src) return null\n if (typeof src === \"string\") return src\n if (\"src\" in src) return src.src\n\n return src.default.src\n}\n\nexport function Image({\n wrapper,\n showSkeleton = true,\n className,\n loading = \"lazy\",\n fetchPriority,\n preload,\n quality = 90,\n src,\n alt,\n onLoad,\n onError,\n children,\n fallback = <JellyMini mood=\"curious\" className=\"size-full p-4\" />,\n ...props\n}: ImageProps) {\n const currentSrc = srcValue(src)\n const [loadedSrc, setLoadedSrc] = useState<string | null>(null)\n const [failedSrc, setFailedSrc] = useState<string | null>(null)\n\n const hasSource = Boolean(currentSrc)\n const failed = hasSource && failedSrc === currentSrc\n const loaded = hasSource && loadedSrc === currentSrc && !failed\n const shouldPreload = preload ?? loading === \"eager\"\n const imageLoading = shouldPreload ? \"eager\" : loading\n\n const markLoaded = useCallback(() => {\n if (!currentSrc) return\n setFailedSrc(null)\n setLoadedSrc(currentSrc)\n }, [currentSrc])\n\n const markFailed = useCallback(() => {\n if (!currentSrc) return\n setFailedSrc(currentSrc)\n }, [currentSrc])\n\n return (\n <section className={cn(\"relative block overflow-hidden\", wrapper)}>\n {showSkeleton && !loaded && !failed && hasSource && (\n <Skeleton className=\"absolute inset-0 size-full\" />\n )}\n\n {hasSource && !failed ? (\n <NextImage\n {...props}\n src={src ?? \"\"}\n alt={alt}\n quality={quality}\n loading={imageLoading}\n preload={shouldPreload}\n fetchPriority={\n fetchPriority ?? (imageLoading === \"eager\" ? \"high\" : undefined)\n }\n className={cn(\n \"transition-opacity duration-200\",\n loaded ? \"opacity-100\" : \"opacity-0\",\n className\n )}\n onLoad={(event) => {\n markLoaded()\n onLoad?.(event)\n }}\n onError={(event) => {\n markFailed()\n onError?.(event)\n }}\n />\n ) : (\n fallback\n )}\n\n {children}\n </section>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\n\nimport { cn } from \"#lib/utils\"\nimport { MinusIcon } from \"lucide-react\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"cn-input-otp flex items-center has-disabled:opacity-50\",\n containerClassName\n )}\n spellCheck={false}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\n \"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n className\n )}\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\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out outline-none motion-reduce:transition-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\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=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-separator\"\n className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n role=\"separator\"\n {...props}\n >\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Separator } from \"./separator\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\n \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-2\", className)}\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"border-transparent bg-muted/50\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(itemVariants({ variant, size, className })),\n },\n props\n ),\n render,\n state: {\n slot: \"item\",\n variant,\n size,\n },\n })\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Item,\n ItemActions,\n ItemContent,\n ItemDescription,\n ItemFooter,\n ItemGroup,\n ItemHeader,\n ItemMedia,\n ItemSeparator,\n ItemTitle,\n}\n","import { useEffect, useState } from \"react\"\n\nexport function useMounted() {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n return { mounted }\n}\n","\"use client\"\n\nimport { useMounted } from \"#hooks/index\"\nimport {\n JellyBlobMascot,\n type JellyBlobMascotProps,\n type JellyBlobMood,\n} from \"feral-blob\"\nimport \"feral-blob/blob.css\"\nimport { cn } from \"../lib\"\n\nexport {\n BlobSpeech,\n JellyBlobMascot,\n type JellyBlobMascotProps,\n type JellyBlobMood,\n} from \"feral-blob\"\n\nexport function JellyBlob({ ...props }: JellyBlobMascotProps) {\n return (\n <span className=\"inline-block\">\n <JellyBlobMascot\n {...props}\n className={cn(\"h-auto w-full\", props.className)}\n />\n </span>\n )\n}\n\nconst MOOD_GAZE: Record<JellyBlobMood, { x: number; y: number }> = {\n neutral: { x: 0, y: 8 },\n happy: { x: 18, y: -6 },\n sad: { x: 0, y: 14 },\n angry: { x: 10, y: 2 },\n hmm: { x: 10, y: -4 },\n sideEye: { x: 30, y: 0 },\n password: { x: -14, y: 16 },\n curious: { x: 18, y: -8 },\n surprised: { x: 0, y: -10 },\n sleepy: { x: 0, y: 14 },\n shy: { x: -12, y: 4 },\n love: { x: 0, y: -4 },\n wave: { x: 20, y: -8 },\n}\n\nexport function JellyMini({\n mood = \"neutral\",\n className,\n}: {\n mood?: JellyBlobMood\n className?: string\n}) {\n const { mounted } = useMounted()\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"inline-flex size-5 shrink-0 items-center justify-center select-none\",\n className\n )}\n >\n {mounted ? (\n <JellyBlobMascot\n mood={mood}\n gaze={MOOD_GAZE[mood]}\n className=\"h-auto w-full\"\n />\n ) : null}\n </span>\n )\n}\n","import { cn } from \"#lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup }\n","import * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction MessageGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-group\"\n className={cn(\"flex min-w-0 flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction Message({\n className,\n align = \"start\",\n ...props\n}: React.ComponentProps<\"div\"> & { align?: \"start\" | \"end\" }) {\n return (\n <div\n data-slot=\"message\"\n data-align={align}\n className={cn(\n \"group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageAvatar({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-avatar\"\n className={cn(\n \"flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-content\"\n className={cn(\n \"flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-header\"\n className={cn(\n \"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-footer\"\n className={cn(\n \"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0 group-data-[align=end]/message:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n MessageGroup,\n Message,\n MessageAvatar,\n MessageContent,\n MessageFooter,\n MessageHeader,\n}\n","\"use client\"\n\nimport {\n MessageScroller as MessageScrollerPrimitive,\n useMessageScroller,\n useMessageScrollerScrollable,\n useMessageScrollerVisibility,\n} from \"@shadcn/react/message-scroller\"\nimport * as React from \"react\"\n\nimport { Button } from \"#components/button\"\nimport { cn } from \"#lib/utils\"\nimport { ArrowDownIcon } from \"lucide-react\"\n\nfunction MessageScrollerProvider(\n props: React.ComponentProps<typeof MessageScrollerPrimitive.Provider>\n) {\n return <MessageScrollerPrimitive.Provider {...props} />\n}\n\nfunction MessageScroller({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Root>) {\n return (\n <MessageScrollerPrimitive.Root\n data-slot=\"message-scroller\"\n className={cn(\n \"group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerViewport({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Viewport>) {\n return (\n <MessageScrollerPrimitive.Viewport\n data-slot=\"message-scroller-viewport\"\n className={cn(\n \"size-full min-h-0 min-w-0 scroll-fade scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerContent({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Content>) {\n return (\n <MessageScrollerPrimitive.Content\n data-slot=\"message-scroller-content\"\n className={cn(\"flex h-max min-h-full flex-col gap-6\", className)}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerItem({\n className,\n scrollAnchor = false,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Item>) {\n return (\n <MessageScrollerPrimitive.Item\n data-slot=\"message-scroller-item\"\n scrollAnchor={scrollAnchor}\n className={cn(\n \"min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerButton({\n direction = \"end\",\n className,\n children,\n render,\n variant = \"secondary\",\n size = \"icon-sm\",\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Button> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <MessageScrollerPrimitive.Button\n data-slot=\"message-scroller-button\"\n data-direction={direction}\n data-variant={variant}\n data-size={size}\n direction={direction}\n className={cn(\n \"data-[active=true]:ease-out-quint absolute inset-s-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180\",\n className\n )}\n render={render ?? <Button variant={variant} size={size} />}\n {...props}\n >\n {children ?? (\n <>\n <ArrowDownIcon />\n <span className=\"sr-only\">\n {direction === \"end\" ? \"Scroll to end\" : \"Scroll to start\"}\n </span>\n </>\n )}\n </MessageScrollerPrimitive.Button>\n )\n}\n\nexport {\n MessageScroller,\n MessageScrollerButton,\n MessageScrollerContent,\n MessageScrollerItem,\n MessageScrollerProvider,\n MessageScrollerViewport,\n useMessageScroller,\n useMessageScrollerScrollable,\n useMessageScrollerVisibility,\n}\n","\"use client\"\n\nimport { clsx, type ClassValue } from \"clsx\"\nimport {\n AnimatePresence,\n animate,\n motion,\n useReducedMotion,\n} from \"motion/react\"\nimport { Fragment, useEffect, useId, useRef, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport const EASE_OUT = [0.16, 1, 0.3, 1] as const\nexport const EASE_IN_OUT = [0.77, 0, 0.175, 1] as const\nexport const EASE_DRAWER = [0.32, 0.72, 0, 1] as const\n\nexport const EASE_OUT_CSS = \"cubic-bezier(0.16, 1, 0.3, 1)\"\n\nexport const SPRING_PRESS = {\n type: \"spring\",\n stiffness: 500,\n damping: 30,\n mass: 0.6,\n} as const\n\nexport const SPRING_SWAP = {\n type: \"spring\",\n stiffness: 460,\n damping: 30,\n mass: 0.55,\n} as const\n\nexport const SPRING_PANEL = {\n type: \"spring\",\n stiffness: 420,\n damping: 40,\n mass: 0.5,\n} as const\n\nexport const SPRING_LAYOUT = {\n type: \"spring\",\n stiffness: 360,\n damping: 32,\n mass: 0.6,\n} as const\n\nexport const SPRING_MOUSE = {\n stiffness: 200,\n damping: 15,\n mass: 0.3,\n} as const\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport type OTPStatus = \"idle\" | \"error\" | \"success\"\n\nexport interface OTPInputProps {\n length?: number\n value?: string\n defaultValue?: string\n onChange?: (value: string) => void\n onComplete?: (value: string) => void\n label?: string\n hint?: string\n successMessage?: string\n errorMessage?: string\n status?: OTPStatus\n mask?: boolean\n disabled?: boolean\n autoFocus?: boolean\n onFocusChange?: (focused: boolean) => void\n \"aria-label\"?: string\n className?: string\n}\n\nexport function OTPInput({\n length = 6,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onComplete,\n label,\n hint,\n successMessage,\n errorMessage,\n status = \"idle\",\n mask = false,\n disabled = false,\n autoFocus = false,\n onFocusChange,\n \"aria-label\": ariaLabel = \"One-time passcode\",\n className,\n}: OTPInputProps) {\n const uid = useId()\n const reduce = useReducedMotion()\n const inputRef = useRef<HTMLInputElement>(null)\n const slotsRef = useRef<HTMLDivElement>(null)\n\n const controlled = controlledValue !== undefined\n\n const [slots, setSlots] = useState<string[]>(() =>\n toSlots(controlled ? controlledValue : defaultValue, length)\n )\n\n const [focused, setFocused] = useState(false)\n const [active, setActive] = useState(0)\n\n const joined = slots.join(\"\")\n const joinedRef = useRef(joined)\n joinedRef.current = joined\n\n useEffect(() => {\n if (!controlled) return\n\n const incoming = sanitize(controlledValue, length)\n\n if (incoming !== joinedRef.current) {\n setSlots(toSlots(incoming, length))\n }\n }, [controlled, controlledValue, length])\n\n const commit = (next: string[]) => {\n const wasComplete = slots.every((c) => c !== \"\")\n setSlots(next)\n\n const str = next.join(\"\")\n\n onChange?.(str)\n\n if (!wasComplete && next.every((c) => c !== \"\")) {\n onComplete?.(str)\n }\n }\n\n const clearSlot = (idx: number) => {\n const next = [...slots]\n\n next[idx] = \"\"\n\n commit(next)\n }\n\n const slotFromClientX = (clientX: number) => {\n const els =\n slotsRef.current?.querySelectorAll<HTMLElement>(\"[data-otp-slot]\")\n\n if (!els) return 0\n\n for (let i = 0; i < els.length; i++) {\n if (clientX < els[i].getBoundingClientRect().right) return i\n }\n\n return length - 1\n }\n\n const insert = (raw: string, from = active) => {\n const digits = raw.replace(/\\D/g, \"\")\n\n if (!digits) return\n\n const next = [...slots]\n let i = from\n\n for (const ch of digits) {\n if (i >= length) break\n next[i] = ch\n i++\n }\n\n commit(next)\n setActive(Math.min(i, length - 1))\n }\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (disabled || e.metaKey || e.ctrlKey || e.altKey) return\n\n const k = e.key\n\n if (/^[0-9]$/.test(k)) {\n e.preventDefault()\n insert(k)\n } else if (k === \"Backspace\") {\n e.preventDefault()\n\n if (slots[active]) {\n clearSlot(active)\n } else if (active > 0) {\n clearSlot(active - 1)\n setActive(active - 1)\n }\n } else if (k === \"Delete\") {\n e.preventDefault()\n clearSlot(active)\n } else if (k === \"ArrowLeft\") {\n e.preventDefault()\n setActive((a) => Math.max(a - 1, 0))\n } else if (k === \"ArrowRight\") {\n e.preventDefault()\n setActive((a) => Math.min(a + 1, length - 1))\n } else if (k === \"Home\") {\n e.preventDefault()\n setActive(0)\n } else if (k === \"End\") {\n e.preventDefault()\n setActive(length - 1)\n }\n }\n\n const onPaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n if (disabled) return\n\n e.preventDefault()\n insert(e.clipboardData.getData(\"text\"), active)\n }\n\n const onChangeNative = (e: React.ChangeEvent<HTMLInputElement>) => {\n const digits = sanitize(e.target.value, length)\n\n if (!digits) return\n\n commit(toSlots(digits, length))\n setActive(Math.min(digits.length, length - 1))\n }\n\n useEffect(() => {\n if (status !== \"error\" || reduce || !slotsRef.current) return\n\n animate(\n slotsRef.current,\n {\n x: [0, -5, 5, -3, 3, -1, 0],\n },\n {\n duration: 0.45,\n ease: EASE_OUT,\n }\n )\n }, [status, reduce])\n\n const showSuccess = status === \"success\"\n const activeIndex = focused ? active : -1\n\n const message = showSuccess\n ? successMessage\n : status === \"error\"\n ? errorMessage\n : hint\n\n return (\n <div className={cn(\"inline-flex flex-col gap-2\", className)}>\n {label ? (\n <label\n htmlFor={`${uid}-input`}\n className=\"text-sm font-medium text-foreground\"\n >\n {label}\n </label>\n ) : null}\n\n <div\n className=\"relative inline-flex w-max\"\n onMouseDown={(e) => {\n if (disabled) return\n\n e.preventDefault()\n\n const firstEmpty = slots.indexOf(\"\")\n const cap = firstEmpty === -1 ? length - 1 : firstEmpty\n\n setActive(Math.min(slotFromClientX(e.clientX), cap))\n inputRef.current?.focus()\n }}\n >\n <input\n ref={inputRef}\n id={`${uid}-input`}\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n autoFocus={autoFocus}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-invalid={status === \"error\"}\n value=\"\"\n maxLength={length}\n onKeyDown={onKeyDown}\n onChange={onChangeNative}\n onPaste={onPaste}\n onFocus={() => {\n setFocused(true)\n onFocusChange?.(true)\n }}\n onBlur={() => {\n setFocused(false)\n onFocusChange?.(false)\n }}\n className=\"absolute inset-0 z-20 h-full w-full cursor-text bg-transparent text-transparent caret-transparent opacity-0 outline-none disabled:cursor-not-allowed\"\n />\n\n <div ref={slotsRef} className=\"flex items-center gap-3\">\n {Array.from({ length }, (_, i) => {\n const char = slots[i] ?? \"\"\n const isActive = i === activeIndex\n\n return (\n <Fragment key={`${uid}-${i}`}>\n <div\n data-otp-slot\n data-active={isActive}\n data-filled={char !== \"\"}\n className={cn(\n \"relative grid size-11 place-items-center overflow-hidden rounded-xl border bg-card text-xl font-semibold tabular-nums transition-colors duration-200\",\n showSuccess\n ? \"border-emerald-500/60 text-foreground\"\n : status === \"error\"\n ? \"border-destructive/60 text-foreground\"\n : char\n ? \"border-border-strong text-foreground\"\n : \"border-border text-muted-foreground\",\n isActive &&\n !showSuccess &&\n status !== \"error\" &&\n \"border-brand border-2 ring-0\",\n disabled && \"opacity-50\"\n )}\n >\n {isActive && !showSuccess ? (\n <motion.span\n aria-hidden\n animate={reduce ? undefined : { opacity: [1, 1, 0, 0] }}\n transition={\n reduce\n ? undefined\n : {\n duration: 1,\n repeat: Number.POSITIVE_INFINITY,\n ease: \"linear\",\n }\n }\n className={cn(\n \"bg-brand pointer-events-none absolute top-1/2 h-6 w-px -translate-y-1/2\",\n char ? \"right-3\" : \"left-1/2 -translate-x-1/2\"\n )}\n />\n ) : null}\n\n <AnimatePresence initial={false}>\n {char ? (\n <motion.span\n key={char}\n initial={\n reduce\n ? {\n opacity: 0,\n }\n : {\n y: 14,\n opacity: 0,\n filter: \"blur(4px)\",\n }\n }\n animate={\n reduce\n ? {\n opacity: 1,\n }\n : {\n y: 0,\n opacity: 1,\n filter: \"blur(0px)\",\n }\n }\n exit={\n reduce\n ? {\n opacity: 0,\n }\n : {\n y: -14,\n opacity: 0,\n filter: \"blur(4px)\",\n }\n }\n transition={\n reduce\n ? {\n duration: 0,\n }\n : {\n duration: 0.22,\n ease: EASE_OUT,\n }\n }\n className=\"absolute inset-0 grid place-items-center leading-none\"\n >\n {mask ? \"X\" : char}\n </motion.span>\n ) : null}\n </AnimatePresence>\n </div>\n\n {i === 2 ? (\n <span aria-hidden=\"true\" className=\"h-0.5 w-4 bg-primary\" />\n ) : null}\n </Fragment>\n )\n })}\n </div>\n\n <AnimatePresence>\n {showSuccess ? (\n <motion.span\n initial={\n reduce\n ? {\n opacity: 0,\n }\n : {\n scale: 0.6,\n opacity: 0,\n }\n }\n animate={\n reduce\n ? {\n opacity: 1,\n }\n : {\n scale: 1,\n opacity: 1,\n }\n }\n exit={\n reduce\n ? {\n opacity: 0,\n }\n : {\n scale: 0.6,\n opacity: 0,\n }\n }\n transition={\n reduce\n ? {\n duration: 0,\n }\n : {\n type: \"spring\",\n stiffness: 500,\n damping: 28,\n }\n }\n className=\"pointer-events-none absolute top-1/2 -right-7 -translate-y-1/2 text-emerald-500\"\n aria-hidden\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <title>Verified</title>\n <motion.path\n d=\"M5 13l4 4L19 7\"\n initial={\n reduce\n ? {\n pathLength: 1,\n }\n : {\n pathLength: 0,\n }\n }\n animate={{\n pathLength: 1,\n }}\n transition={\n reduce\n ? {\n duration: 0,\n }\n : {\n duration: 0.35,\n ease: EASE_OUT,\n delay: 0.1,\n }\n }\n />\n </svg>\n </motion.span>\n ) : null}\n </AnimatePresence>\n </div>\n\n {message ? (\n <p\n aria-live=\"polite\"\n className={cn(\n \"text-sm\",\n showSuccess\n ? \"text-emerald-500\"\n : status === \"error\"\n ? \"text-destructive\"\n : \"text-muted-foreground\"\n )}\n >\n {message}\n </p>\n ) : null}\n </div>\n )\n}\n\nfunction sanitize(raw: string | undefined, length: number) {\n return (raw ?? \"\").replace(/\\D/g, \"\").slice(0, length)\n}\n\nfunction toSlots(raw: string | undefined, length: number) {\n const digits = sanitize(raw, length)\n\n return Array.from({ length }, (_, i) => digits[i] ?? \"\")\n}\n","\"use client\"\n\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n ...props\n}: PopoverPrimitive.Popup.Props &\n Pick<\n PopoverPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n \"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-background p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: PopoverPrimitive.Description.Props) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n}\n","\"use client\"\nimport { NumberField } from \"@base-ui/react/number-field\"\nimport { Minus, Plus } from \"@gravity-ui/icons\"\nimport * as React from \"react\"\nimport { buttonVariants } from \"./button\"\n\nexport function QuantityInput({\n ...props\n}: React.ComponentProps<typeof NumberField.Root>) {\n const id = React.useId()\n return (\n <NumberField.Root id={id} {...props} className=\"flex flex-col items-start\">\n <NumberField.Group className=\"flex h-8 gap-1\">\n <NumberField.Decrement\n className={buttonVariants({\n variant: \"secondary\",\n size: \"icon-sm\",\n className: \"rounded-full! border-border!\",\n })}\n >\n <Minus />\n </NumberField.Decrement>\n <NumberField.Input\n className=\"h-7 w-16 rounded-md border px-1 text-center\"\n data-no-ring\n />\n <NumberField.Increment\n className={buttonVariants({\n variant: \"secondary\",\n size: \"icon-sm\",\n className: \"rounded-full! border-border!\",\n })}\n >\n <Plus />\n </NumberField.Increment>\n </NumberField.Group>\n </NumberField.Root>\n )\n}\n","\"use client\"\n\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\"\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n return (\n <RadioGroupPrimitive\n data-slot=\"radio-group\"\n className={cn(\"grid w-full gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\n return (\n <RadioPrimitive.Root\n data-slot=\"radio-group-item\"\n className={cn(\n \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex size-4 items-center justify-center\"\n >\n <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\" />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\"use no memo\"\n\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva } from \"class-variance-authority\"\nimport type React from \"react\"\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\"\n\nimport { Button } from \"#components/button\"\nimport { ButtonGroup, ButtonGroupText } from \"#components/button-group\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"#components/dropdown-menu\"\nimport { Input } from \"#components/input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n} from \"#components/input-group\"\nimport { Kbd } from \"#components/kbd\"\nimport { ScrollArea } from \"#components/scroll-area\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"#components/tooltip\"\nimport { cn } from \"#lib/utils\"\nimport { AlertCircleIcon, CheckIcon, PlusIcon, XIcon } from \"lucide-react\"\n\n// i18n Configuration Interface\nexport interface FilterI18nConfig {\n // UI Labels\n addFilter: string\n searchFields: string\n noFieldsFound: string\n noResultsFound: string\n select: string\n true: string\n false: string\n min: string\n max: string\n to: string\n typeAndPressEnter: string\n selected: string\n selectedCount: string\n percent: string\n defaultCurrency: string\n defaultColor: string\n addFilterTitle: string\n // Async option loading states (optional; fall back to sensible defaults)\n loadingOptions?: string\n errorLoadingOptions?: string\n\n // Operators\n operators: {\n is: string\n isNot: string\n isAnyOf: string\n isNotAnyOf: string\n includesAll: string\n excludesAll: string\n before: string\n after: string\n between: string\n notBetween: string\n contains: string\n notContains: string\n startsWith: string\n endsWith: string\n isExactly: string\n equals: string\n notEquals: string\n greaterThan: string\n lessThan: string\n overlaps: string\n includes: string\n excludes: string\n includesAllOf: string\n includesAnyOf: string\n empty: string\n notEmpty: string\n }\n\n // Placeholders\n placeholders: {\n enterField: (fieldType: string) => string\n selectField: string\n searchField: (fieldName: string) => string\n enterKey: string\n enterValue: string\n }\n\n // Helper functions\n helpers: {\n formatOperator: (operator: string) => string\n }\n\n // Validation\n validation: {\n invalidEmail: string\n invalidUrl: string\n invalidTel: string\n invalid: string\n }\n}\n\n// Default English i18n configuration\nexport const DEFAULT_I18N: FilterI18nConfig = {\n // UI Labels\n addFilter: \"Filter\",\n searchFields: \"Filter...\",\n noFieldsFound: \"No filters found.\",\n noResultsFound: \"No results found.\",\n select: \"Select...\",\n true: \"True\",\n false: \"False\",\n min: \"Min\",\n max: \"Max\",\n to: \"to\",\n typeAndPressEnter: \"Type and press Enter to add tag\",\n selected: \"selected\",\n selectedCount: \"selected\",\n percent: \"%\",\n defaultCurrency: \"$\",\n defaultColor: \"#000000\",\n addFilterTitle: \"Add filter\",\n loadingOptions: \"Loading...\",\n errorLoadingOptions: \"Failed to load options.\",\n\n // Operators\n operators: {\n is: \"is\",\n isNot: \"is not\",\n isAnyOf: \"is any of\",\n isNotAnyOf: \"is not any of\",\n includesAll: \"includes all\",\n excludesAll: \"excludes all\",\n before: \"before\",\n after: \"after\",\n between: \"between\",\n notBetween: \"not between\",\n contains: \"contains\",\n notContains: \"does not contain\",\n startsWith: \"starts with\",\n endsWith: \"ends with\",\n isExactly: \"is exactly\",\n equals: \"equals\",\n notEquals: \"not equals\",\n greaterThan: \"greater than\",\n lessThan: \"less than\",\n overlaps: \"overlaps\",\n includes: \"includes\",\n excludes: \"excludes\",\n includesAllOf: \"includes all of\",\n includesAnyOf: \"includes any of\",\n empty: \"is empty\",\n notEmpty: \"is not empty\",\n },\n\n // Placeholders\n placeholders: {\n enterField: (fieldType: string) => `Enter ${fieldType}...`,\n selectField: \"Select...\",\n searchField: (fieldName: string) => `Search ${fieldName.toLowerCase()}...`,\n enterKey: \"Enter key...\",\n enterValue: \"Enter value...\",\n },\n\n // Helper functions\n helpers: {\n formatOperator: (operator: string) => operator.replace(/_/g, \" \"),\n },\n\n // Validation\n validation: {\n invalidEmail: \"Invalid email format\",\n invalidUrl: \"Invalid URL format\",\n invalidTel: \"Invalid phone format\",\n invalid: \"Invalid input format\",\n },\n}\n\n// Context for all Filter component props\ninterface FilterContextValue {\n variant: \"solid\" | \"default\"\n size: \"sm\" | \"default\" | \"lg\"\n radius: \"default\" | \"full\"\n i18n: FilterI18nConfig\n className?: string\n showSearchInput?: boolean\n trigger?: React.ReactNode\n allowMultiple?: boolean\n}\n\nconst FilterContext = createContext<FilterContextValue>({\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n i18n: DEFAULT_I18N,\n className: undefined,\n showSearchInput: true,\n trigger: undefined,\n allowMultiple: true,\n})\n\nconst useFilterContext = () => useContext(FilterContext)\n\n// Container variant for filters wrapper\nconst filtersContainerVariants = cva(\"flex flex-wrap items-center\", {\n variants: {\n variant: {\n solid: \"gap-2\",\n default: \"\",\n },\n size: {\n sm: \"gap-1.5\",\n default: \"gap-2.5\",\n lg: \"gap-3.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n})\n\nfunction FilterInput<T = unknown>({\n field,\n onBlur,\n onKeyDown,\n className,\n ...props\n}: Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> & {\n className?: string\n field?: FilterFieldConfig<T>\n}) {\n const context = useFilterContext()\n const [isValid, setIsValid] = useState(true)\n const [validationMessage, setValidationMessage] = useState(\"\")\n const inputRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (props.autoFocus) {\n const timer = setTimeout(() => {\n inputRef.current?.focus()\n }, 300)\n return () => clearTimeout(timer)\n }\n }, [props.autoFocus])\n\n // Validation function to check if input matches pattern\n const validateInput = (value: string, pattern?: string): boolean => {\n if (!pattern || !value) return true\n const regex = new RegExp(pattern)\n return regex.test(value)\n }\n\n // Get validation message for field type\n const getValidationMessage = (): string => {\n return context.i18n.validation.invalid\n }\n\n // Handle blur event - validate when user leaves input\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const value = e.target.value\n const pattern = field?.pattern || props.pattern\n\n // Only validate if there's a value and (pattern or validation function)\n if (value && (pattern || field?.validation)) {\n let valid = true\n let customMessage = \"\"\n\n // If there's a custom validation function, use it\n if (field?.validation) {\n const result = field.validation(value)\n // Handle both boolean and object return types\n if (typeof result === \"boolean\") {\n valid = result\n } else {\n valid = result.valid\n customMessage = result.message || \"\"\n }\n } else if (pattern) {\n // Use pattern validation\n valid = validateInput(value, pattern)\n }\n\n setIsValid(valid)\n setValidationMessage(valid ? \"\" : customMessage || getValidationMessage())\n } else {\n // Reset validation state for empty values or no validation\n setIsValid(true)\n setValidationMessage(\"\")\n }\n\n // Call the original onBlur if provided\n onBlur?.(e)\n }\n\n // Handle keydown event - hide validation error when user starts typing\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Hide validation error when user starts typing (any key except special keys)\n if (\n !isValid &&\n ![\n \"Tab\",\n \"Escape\",\n \"Enter\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n ].includes(e.key)\n ) {\n setIsValid(true)\n setValidationMessage(\"\")\n }\n\n // Call the original onKeyDown if provided\n onKeyDown?.(e)\n }\n\n return (\n <InputGroup\n className={cn(\n \"w-36\",\n // Height follows each style's own control ladder. `default` sets no\n // height on purpose so the style's `.cn-input-group` applies (h-8 nova,\n // h-9 maia/luma, h-7 mira, h-10 sera); sm/lg step down/up from it.\n // Base covers nova/lyra/rhea/vega; only deviating styles are listed.\n context.size == \"sm\" && \"h-7!\",\n context.size == \"lg\" && \"h-9!\",\n // Sera's `.cn-input` is `px-0` (underline inputs sit flush); inside a\n // segmented chip that collides with the neighbouring segment, so give\n // the value input the same inline padding sera uses elsewhere.\n \"\",\n className\n )}\n >\n {field?.prefix && (\n <InputGroupAddon>\n <InputGroupText>{field.prefix}</InputGroupText>\n </InputGroupAddon>\n )}\n <InputGroupInput\n ref={inputRef}\n aria-invalid={!isValid}\n aria-describedby={\n !isValid && validationMessage\n ? `${field?.key || \"input\"}-error`\n : undefined\n }\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n className={cn(\n context.size == \"sm\" && \"h-7! text-xs\",\n context.size == \"lg\" && \"h-9!\"\n )}\n {...props}\n />\n {!isValid && validationMessage && (\n <InputGroupAddon align=\"inline-end\">\n <Tooltip>\n <TooltipTrigger render={<InputGroupButton size=\"icon-xs\" />}>\n <AlertCircleIcon className=\"size-3.5 text-destructive\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"text-sm\">{validationMessage}</p>\n </TooltipContent>\n </Tooltip>\n </InputGroupAddon>\n )}\n\n {field?.suffix && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupText>{field.suffix}</InputGroupText>\n </InputGroupAddon>\n )}\n </InputGroup>\n )\n}\n\ninterface FilterRemoveButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: React.ReactNode\n}\n\nfunction FilterRemoveButton({\n className,\n icon = <XIcon />,\n ...props\n}: FilterRemoveButtonProps) {\n const context = useFilterContext()\n\n return (\n <Button\n variant=\"outline\"\n size={\n context.size === \"sm\"\n ? \"icon-sm\"\n : context.size === \"lg\"\n ? \"icon-lg\"\n : \"icon\"\n }\n className={className}\n {...props}\n >\n {icon}\n </Button>\n )\n}\n\n// Generic types for flexible filter system\nexport interface FilterOption<T = unknown> {\n value: T\n label: string\n icon?: React.ReactNode\n metadata?: Record<string, unknown>\n className?: string\n}\n\nexport interface FilterOperator {\n value: string\n label: string\n supportsMultiple?: boolean\n}\n\n// Custom renderer props interface\nexport interface CustomRendererProps<T = unknown> {\n field: FilterFieldConfig<T>\n values: T[]\n onChange: (values: T[]) => void\n operator: string\n}\n\n// Props passed to a field's `renderOptionList` slot. Lets a consumer render the\n// options list however they like (e.g. windowing / virtualization with a\n// library of their choice) while staying bound to the primitive's selection and\n// keyboard behavior.\nexport interface FilterOptionListRenderProps<T = unknown> {\n // Options to render: already resolved, query-filtered, and selected-first.\n options: FilterOption<T>[]\n // Index into `options` of the keyboard-highlighted row (-1 if none). A\n // virtualized implementation should scroll this row into view and keep it\n // mounted so the combobox's aria-activedescendant stays valid.\n highlightedIndex: number\n // Renders one option row with the correct id, selection state, highlight, and\n // toggle handler wired to the primitive. Call it for each row you render.\n renderOption: (option: FilterOption<T>, index: number) => React.ReactNode\n}\n\n// Grouped field configuration interface\nexport interface FilterFieldGroup<T = unknown> {\n group?: string\n fields: FilterFieldConfig<T>[]\n}\n\n// Union type for both flat and grouped field configurations\nexport type FilterFieldsConfig<T = unknown> =\n FilterFieldConfig<T>[] | FilterFieldGroup<T>[]\n\nexport interface FilterFieldConfig<T = unknown> {\n key?: string\n label?: string\n icon?: React.ReactNode\n type?: \"select\" | \"multiselect\" | \"text\" | \"custom\" | \"separator\"\n // Group-level configuration\n group?: string\n fields?: FilterFieldConfig<T>[]\n // Field-specific options\n options?: FilterOption<T>[]\n // Async / large-list options loader. Receives the current search query and\n // may return a Promise. Use it to prefetch a remote list once (ignore the\n // query) or to run server-side search (filter by the query). When both\n // `options` and `loadOptions` are provided, `options` seeds the initial view\n // and the value->label cache while `loadOptions` supplies live results.\n loadOptions?: (\n query: string\n ) => FilterOption<T>[] | Promise<FilterOption<T>[]>\n // Bring-your-own rendering for the options list (e.g. virtualization with a\n // windowing library of your choice). Return the full scrollable list, call\n // `renderOption` for each row, and scroll `highlightedIndex` into view. When\n // omitted, the options render as a plain scrollable list.\n renderOptionList?: (props: FilterOptionListRenderProps<T>) => React.ReactNode\n operators?: FilterOperator[]\n customRenderer?: (props: CustomRendererProps<T>) => React.ReactNode\n customValueRenderer?: (\n values: T[],\n options: FilterOption<T>[]\n ) => React.ReactNode\n placeholder?: string\n searchable?: boolean\n maxSelections?: number\n min?: number\n max?: number\n step?: number\n prefix?: string | React.ReactNode\n suffix?: string | React.ReactNode\n pattern?: string\n validation?: (\n value: unknown\n ) => boolean | { valid: boolean; message?: string }\n allowCustomValues?: boolean\n className?: string\n menuPopupClassName?: string\n // Grouping options (legacy support)\n groupLabel?: string\n // Boolean field options\n onLabel?: string\n offLabel?: string\n // Input event handlers\n onInputChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n // Default operator to use when creating a filter for this field\n defaultOperator?: string\n // Controlled values support for this field\n value?: T[]\n onValueChange?: (values: T[]) => void\n}\n\n// Helper functions to handle both flat and grouped field configurations\nconst isFieldGroup = <T = unknown,>(\n item: FilterFieldConfig<T> | FilterFieldGroup<T>\n): item is FilterFieldGroup<T> => {\n return \"fields\" in item && Array.isArray(item.fields)\n}\n\n// Helper function to check if a FilterFieldConfig is a group-level configuration\nconst isGroupLevelField = <T = unknown,>(\n field: FilterFieldConfig<T>\n): boolean => {\n return Boolean(field.group && field.fields)\n}\n\nconst flattenFields = <T = unknown,>(\n fields: FilterFieldsConfig<T>\n): FilterFieldConfig<T>[] => {\n return fields.reduce<FilterFieldConfig<T>[]>((acc, item) => {\n if (isFieldGroup(item)) {\n return [...acc, ...item.fields]\n }\n // Handle group-level fields (new structure)\n if (isGroupLevelField(item)) {\n return [...acc, ...item.fields!]\n }\n return [...acc, item]\n }, [])\n}\n\nconst getFieldsMap = <T = unknown,>(\n fields: FilterFieldsConfig<T>\n): Record<string, FilterFieldConfig<T>> => {\n const flatFields = flattenFields(fields)\n return flatFields.reduce(\n (acc, field) => {\n // Only add fields that have a key (skip group-level configurations)\n if (field.key) {\n acc[field.key] = field\n }\n return acc\n },\n {} as Record<string, FilterFieldConfig<T>>\n )\n}\n\n// Whether a field exposes any option source (a static list or an async loader).\n// IMPORTANT: never gate on `field.options?.length` once `loadOptions` exists —\n// a function's `.length` is its arity, not an option count, which silently\n// breaks the submenu gate for async fields.\nconst fieldHasOptions = <T = unknown,>(field: FilterFieldConfig<T>): boolean =>\n (field.options?.length ?? 0) > 0 || typeof field.loadOptions === \"function\"\n\ninterface ResolvedFieldOptions<T = unknown> {\n isAsync: boolean\n options: FilterOption<T>[]\n loading: boolean\n error: boolean\n // Resolve selected values to full options using an accumulating value->option\n // cache, so async/controlled selections keep their label and icon even when\n // absent from the latest result page.\n resolveSelected: (values: T[]) => FilterOption<T>[]\n}\n\n// Value->option cache shared across every component instance rendering the\n// SAME field object (the Add Filter submenu and the active-filter chip both\n// receive the same config reference from the fields map). Keyed by the field\n// object so it is shared when fields are memoized and garbage-collected\n// otherwise. This keeps a value selected in the submenu labelled in the chip.\nconst fieldOptionCaches = new WeakMap<object, Map<unknown, FilterOption>>()\n\nconst getFieldOptionCache = <T = unknown,>(\n field: FilterFieldConfig<T>\n): Map<T, FilterOption<T>> => {\n let cache = fieldOptionCaches.get(field as object)\n if (!cache) {\n cache = new Map()\n fieldOptionCaches.set(field as object, cache)\n }\n return cache as Map<T, FilterOption<T>>\n}\n\n// Resolves a field's options for a popover/submenu. Static fields return their\n// list verbatim (unchanged legacy behavior). Async fields (`loadOptions`)\n// debounce the query, guard against out-of-order responses, and expose\n// loading/error state plus a value->label cache.\nfunction useFieldOptions<T = unknown>(\n field: FilterFieldConfig<T>,\n searchInput: string,\n enabled: boolean\n): ResolvedFieldOptions<T> {\n const isAsync = typeof field.loadOptions === \"function\"\n\n // Seed the shared cache from any static options an async field also provides\n // (static fields never read this cache, so skip the work for them).\n if (isAsync && field.options) {\n const cache = getFieldOptionCache(field)\n for (const opt of field.options) {\n cache.set(opt.value, opt)\n }\n }\n\n const [state, setState] = useState<{\n options: FilterOption<T>[]\n loading: boolean\n error: boolean\n }>(() => ({ options: field.options ?? [], loading: false, error: false }))\n\n // Debounce the query for async fields to avoid a request per keystroke.\n const [debouncedQuery, setDebouncedQuery] = useState(searchInput)\n useEffect(() => {\n if (!isAsync) return\n const timer = setTimeout(() => setDebouncedQuery(searchInput), 250)\n return () => clearTimeout(timer)\n }, [searchInput, isAsync])\n\n const requestIdRef = useRef(0)\n // Keep the latest loader in a ref so an unmemoized `loadOptions` identity does\n // not cancel and refire the in-flight request on every parent re-render.\n const loaderRef = useRef(field.loadOptions)\n loaderRef.current = field.loadOptions\n useEffect(() => {\n if (!isAsync || !enabled) return\n const loader = loaderRef.current\n if (!loader) return\n\n const requestId = ++requestIdRef.current\n let cancelled = false\n setState((prev) => ({ ...prev, loading: true, error: false }))\n\n Promise.resolve()\n .then(() => loader(debouncedQuery))\n .then((result) => {\n // Ignore stale responses (out-of-order guard).\n if (cancelled || requestId !== requestIdRef.current) return\n const cache = getFieldOptionCache(field)\n for (const opt of result) cache.set(opt.value, opt)\n setState({ options: result, loading: false, error: false })\n })\n .catch(() => {\n if (cancelled || requestId !== requestIdRef.current) return\n setState((prev) => ({ ...prev, loading: false, error: true }))\n })\n\n return () => {\n cancelled = true\n }\n }, [isAsync, enabled, debouncedQuery])\n\n const resolveSelected = useCallback(\n (values: T[]): FilterOption<T>[] => {\n const cache = getFieldOptionCache(field)\n return values.map(\n (value) => cache.get(value) ?? { value, label: String(value) }\n )\n },\n [field]\n )\n\n if (!isAsync) {\n return {\n isAsync: false,\n options: field.options ?? [],\n loading: false,\n error: false,\n resolveSelected,\n }\n }\n\n return {\n isAsync: true,\n options: state.options,\n loading: state.loading,\n error: state.error,\n resolveSelected,\n }\n}\n\n// Helper function to create operators from i18n config\nconst createOperatorsFromI18n = (\n i18n: FilterI18nConfig\n): Record<string, FilterOperator[]> => ({\n select: [\n { value: \"is\", label: i18n.operators.is },\n { value: \"is_not\", label: i18n.operators.isNot },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n multiselect: [\n { value: \"is_any_of\", label: i18n.operators.isAnyOf },\n { value: \"is_not_any_of\", label: i18n.operators.isNotAnyOf },\n { value: \"includes_all\", label: i18n.operators.includesAll },\n { value: \"excludes_all\", label: i18n.operators.excludesAll },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n text: [\n { value: \"contains\", label: i18n.operators.contains },\n { value: \"not_contains\", label: i18n.operators.notContains },\n { value: \"starts_with\", label: i18n.operators.startsWith },\n { value: \"ends_with\", label: i18n.operators.endsWith },\n { value: \"is\", label: i18n.operators.isExactly },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n custom: [\n { value: \"is\", label: i18n.operators.is },\n { value: \"after\", label: i18n.operators.after },\n { value: \"between\", label: i18n.operators.between },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n})\n\n// Default operators for different field types (using default i18n)\nexport const DEFAULT_OPERATORS: Record<string, FilterOperator[]> =\n createOperatorsFromI18n(DEFAULT_I18N)\n\n// Helper function to get operators for a field\nconst getOperatorsForField = <T = unknown,>(\n field: FilterFieldConfig<T>,\n values: T[],\n i18n: FilterI18nConfig\n): FilterOperator[] => {\n if (field.operators) return field.operators\n\n const operators = createOperatorsFromI18n(i18n)\n\n // Determine field type for operator selection\n let fieldType = field.type || \"select\"\n\n // If it's a select field but has multiple values, treat as multiselect\n if (fieldType === \"select\" && values.length > 1) {\n fieldType = \"multiselect\"\n }\n\n // If it's a multiselect field or has multiselect operators, use multiselect operators\n if (fieldType === \"multiselect\" || field.type === \"multiselect\") {\n return operators.multiselect\n }\n\n return operators[fieldType] || operators.select\n}\n\ninterface FilterOperatorDropdownProps<T = unknown> {\n field: FilterFieldConfig<T>\n operator: string\n values: T[]\n onChange: (operator: string) => void\n}\n\nfunction FilterOperatorDropdown<T = unknown>({\n field,\n operator,\n values,\n onChange,\n}: FilterOperatorDropdownProps<T>) {\n const context = useFilterContext()\n const operators = useMemo(\n () => getOperatorsForField(field, values, context.i18n),\n [field, values, context.i18n]\n )\n\n // Find the operator label, with fallback to formatted operator name\n const operatorLabel =\n operators.find((op) => op.value === operator)?.label ||\n context.i18n.helpers.formatOperator(operator)\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"outline\"\n size={context.size}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n {operatorLabel}\n </Button>\n }\n />\n <DropdownMenuContent align=\"start\" className=\"w-fit min-w-fit\">\n {operators.map((op) => (\n <DropdownMenuItem\n key={op.value}\n onClick={() => onChange(op.value)}\n className={cn(\n \"flex items-center justify-between data-highlighted:bg-accent data-highlighted:text-accent-foreground\"\n )}\n >\n <span>{op.label}</span>\n <CheckIcon\n className={cn(\n \"ms-auto text-primary\",\n op.value === operator ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\ninterface FilterValueSelectorProps<T = unknown> {\n field: FilterFieldConfig<T>\n values: T[]\n onChange: (values: T[]) => void\n operator: string\n autoFocus?: boolean\n}\n\ninterface SelectOptionsPopoverProps<T = unknown> {\n field: FilterFieldConfig<T>\n values: T[]\n onChange: (values: T[]) => void\n onClose?: () => void\n inline?: boolean\n}\n\nfunction SelectOptionsPopover<T = unknown>({\n field,\n values,\n onChange,\n onClose,\n inline = false,\n}: SelectOptionsPopoverProps<T>) {\n const [open, setOpen] = useState(false)\n const [searchInput, setSearchInput] = useState(\"\")\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const context = useFilterContext()\n const baseId = useId()\n\n useEffect(() => {\n if (open) {\n inputRef.current?.focus()\n }\n }, [open])\n\n useEffect(() => {\n setHighlightedIndex(-1)\n }, [searchInput, open])\n\n useEffect(() => {\n if (highlightedIndex >= 0 && open) {\n const element = document.getElementById(\n `${baseId}-item-${highlightedIndex}`\n )\n element?.scrollIntoView({ block: \"nearest\" })\n }\n }, [highlightedIndex, open, baseId])\n\n const {\n isAsync,\n options: resolvedOptions,\n loading,\n error,\n resolveSelected,\n } = useFieldOptions(field, searchInput, inline || open)\n\n const isMultiSelect = field.type === \"multiselect\" || values.length > 1\n const effectiveValues =\n (field.value !== undefined ? (field.value as T[]) : values) || []\n\n // Static fields read their list verbatim (unchanged legacy behavior). Async\n // fields resolve selected values from the value->label cache and take the\n // loader's (already query-filtered) result as the unselected list.\n const selectedOptions = isAsync\n ? resolveSelected(effectiveValues)\n : field.options?.filter((opt) => effectiveValues.includes(opt.value)) || []\n const unselectedOptions = isAsync\n ? resolvedOptions.filter((opt) => !effectiveValues.includes(opt.value))\n : field.options?.filter((opt) => !effectiveValues.includes(opt.value)) || []\n\n // Filter options based on search input (client-side for static lists; async\n // loaders have already filtered by the query).\n const filteredSelectedOptions = selectedOptions // Keep all selected visible\n const filteredUnselectedOptions = isAsync\n ? unselectedOptions\n : unselectedOptions.filter((opt) =>\n opt.label.toLowerCase().includes(searchInput.toLowerCase())\n )\n\n const allFilteredOptions = useMemo(\n () => [...filteredSelectedOptions, ...filteredUnselectedOptions],\n [filteredSelectedOptions, filteredUnselectedOptions]\n )\n\n const handleClose = () => {\n setOpen(false)\n onClose?.()\n }\n\n // Toggle a single option, shared by the plain and custom (renderOptionList)\n // renderers so both behave identically.\n const toggleOption = (option: FilterOption<T>) => {\n const isSelected = effectiveValues.includes(option.value)\n const next = isSelected\n ? (effectiveValues.filter((v) => v !== option.value) as T[])\n : isMultiSelect\n ? ([...effectiveValues, option.value] as T[])\n : ([option.value] as T[])\n\n if (\n !isSelected &&\n isMultiSelect &&\n field.maxSelections &&\n next.length > field.maxSelections\n ) {\n return\n }\n\n if (field.onValueChange) {\n field.onValueChange(next)\n } else {\n onChange(next)\n }\n if (!isMultiSelect) handleClose()\n }\n\n const renderOptionItem = (option: FilterOption<T>, overallIndex: number) => {\n const isSelected = effectiveValues.includes(option.value)\n const isHighlighted = highlightedIndex === overallIndex\n const itemId = `${baseId}-item-${overallIndex}`\n\n return (\n <DropdownMenuCheckboxItem\n key={String(option.value)}\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => setHighlightedIndex(overallIndex)}\n checked={isSelected}\n className={cn(\n \"data-highlighted:bg-accent data-highlighted:text-accent-foreground\",\n option.className\n )}\n onSelect={(e) => {\n if (isMultiSelect) e.preventDefault()\n }}\n onCheckedChange={() => toggleOption(option)}\n >\n {option.icon && option.icon}\n <span className=\"truncate\">{option.label}</span>\n </DropdownMenuCheckboxItem>\n )\n }\n\n const renderMenuContent = () => (\n <>\n {field.searchable !== false && (\n <>\n <Input\n ref={inputRef}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={true}\n aria-haspopup=\"listbox\"\n aria-controls={`${baseId}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${baseId}-item-${highlightedIndex}`\n : undefined\n }\n placeholder={context.i18n.placeholders.searchField(\n field.label || \"\"\n )}\n className={cn(\n \"h-8 rounded-none border-0 border-input bg-transparent! px-2 text-sm shadow-none\",\n \"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0\",\n open && \"placeholder:text-foreground\"\n )}\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n onBlur={() => open && inputRef.current?.focus()}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (allFilteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev < allFilteredOptions.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (allFilteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : allFilteredOptions.length - 1\n )\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n setOpen(false)\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const option = allFilteredOptions[highlightedIndex]\n if (option) {\n const isSelected = effectiveValues.includes(option.value as T)\n const next = isSelected\n ? (effectiveValues.filter((v) => v !== option.value) as T[])\n : isMultiSelect\n ? ([...effectiveValues, option.value] as T[])\n : ([option.value] as T[])\n\n if (\n !isSelected &&\n isMultiSelect &&\n field.maxSelections &&\n next.length > field.maxSelections\n ) {\n return\n }\n\n if (field.onValueChange) {\n field.onValueChange(next)\n } else {\n onChange(next)\n }\n if (!isMultiSelect) handleClose()\n }\n }\n e.stopPropagation()\n }}\n />\n <DropdownMenuSeparator />\n </>\n )}\n <div className=\"relative flex max-h-full\">\n <div\n className=\"flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain\"\n role=\"listbox\"\n id={`${baseId}-listbox`}\n >\n {isAsync && loading && allFilteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {context.i18n.loadingOptions ?? DEFAULT_I18N.loadingOptions}\n </div>\n ) : isAsync && error ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {context.i18n.errorLoadingOptions ??\n DEFAULT_I18N.errorLoadingOptions}\n </div>\n ) : allFilteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {context.i18n.noResultsFound}\n </div>\n ) : field.renderOptionList ? (\n field.renderOptionList({\n options: allFilteredOptions,\n highlightedIndex,\n renderOption: renderOptionItem,\n })\n ) : (\n <ScrollArea className=\"size-full min-h-0 **:data-[slot=scroll-area-scrollbar]:m-0 **:data-[slot=scroll-area-viewport]:h-full **:data-[slot=scroll-area-viewport]:overscroll-contain\">\n {/* Selected items */}\n {filteredSelectedOptions.length > 0 && (\n <DropdownMenuGroup className=\"px-1\">\n {filteredSelectedOptions.map((option, index) =>\n renderOptionItem(option, index)\n )}\n </DropdownMenuGroup>\n )}\n\n {/* Separator */}\n {filteredSelectedOptions.length > 0 &&\n filteredUnselectedOptions.length > 0 && (\n <DropdownMenuSeparator className=\"mx-0\" />\n )}\n\n {/* Available items */}\n {filteredUnselectedOptions.length > 0 && (\n <DropdownMenuGroup className=\"px-1\">\n {filteredUnselectedOptions.map((option, index) =>\n renderOptionItem(\n option,\n index + filteredSelectedOptions.length\n )\n )}\n </DropdownMenuGroup>\n )}\n </ScrollArea>\n )}\n </div>\n </div>\n </>\n )\n\n if (inline) {\n return <div className=\"w-full\">{renderMenuContent()}</div>\n }\n\n return (\n <DropdownMenu\n open={open}\n onOpenChange={(open) => {\n setOpen(open)\n if (!open) {\n setTimeout(() => setSearchInput(\"\"), 200)\n }\n }}\n >\n <DropdownMenuTrigger\n render={\n <Button variant=\"outline\" size={context.size}>\n <div className=\"flex items-center gap-1.5\">\n {field.customValueRenderer ? (\n field.customValueRenderer(\n values,\n isAsync ? resolveSelected(values) : field.options || []\n )\n ) : (\n <>\n {selectedOptions.length > 0 && (\n <div className=\"flex items-center -space-x-1.5\">\n {selectedOptions.slice(0, 3).map((option) => (\n <div key={String(option.value)}>{option.icon}</div>\n ))}\n </div>\n )}\n {selectedOptions.length === 1\n ? selectedOptions[0].label\n : selectedOptions.length > 1\n ? `${selectedOptions.length} ${context.i18n.selectedCount}`\n : context.i18n.select}\n </>\n )}\n </div>\n </Button>\n }\n />\n <DropdownMenuContent\n align=\"start\"\n className={cn(\"w-50 px-0\", field.className)}\n >\n {renderMenuContent()}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nfunction FilterValueSelector<T = unknown>({\n field,\n values,\n onChange,\n operator,\n autoFocus,\n}: FilterValueSelectorProps<T>) {\n if (operator === \"empty\" || operator === \"not_empty\") {\n return null\n }\n\n if (field.customRenderer) {\n return (\n <ButtonGroupText className=\"bg-background text-start whitespace-nowrap outline-hidden hover:bg-accent aria-expanded:bg-accent dark:bg-input/30\">\n {field.customRenderer({ field, values, onChange, operator })}\n </ButtonGroupText>\n )\n }\n\n if (field.type === \"text\") {\n return (\n <FilterInput\n type=\"text\"\n value={(values[0] as string) || \"\"}\n onChange={(e) => onChange([e.target.value] as T[])}\n placeholder={field.placeholder}\n pattern={field.pattern}\n field={field}\n className={cn(\"w-36\", field.className)}\n autoFocus={autoFocus}\n />\n )\n }\n\n if (field.type === \"select\" || field.type === \"multiselect\") {\n return (\n <SelectOptionsPopover field={field} values={values} onChange={onChange} />\n )\n }\n\n return (\n <SelectOptionsPopover field={field} values={values} onChange={onChange} />\n )\n}\nexport interface Filter<T = unknown> {\n id: string\n field: string\n operator: string\n values: T[]\n}\n\nexport interface FilterGroup<T = unknown> {\n id: string\n label?: string\n filters: Filter<T>[]\n fields: FilterFieldConfig<T>[]\n}\n\ninterface FiltersContentProps<T = unknown> {\n filters: Filter<T>[]\n fields: FilterFieldsConfig<T>\n onChange: (filters: Filter<T>[]) => void\n}\n\nexport const FiltersContent = <T = unknown,>({\n filters,\n fields,\n onChange,\n}: FiltersContentProps<T>) => {\n const context = useFilterContext()\n const fieldsMap = useMemo(() => getFieldsMap(fields), [fields])\n\n const updateFilter = useCallback(\n (filterId: string, updates: Partial<Filter<T>>) => {\n onChange(\n filters.map((filter) => {\n if (filter.id === filterId) {\n const updatedFilter = { ...filter, ...updates }\n if (\n updates.operator === \"empty\" ||\n updates.operator === \"not_empty\"\n ) {\n updatedFilter.values = [] as T[]\n }\n return updatedFilter\n }\n return filter\n })\n )\n },\n [filters, onChange]\n )\n\n const removeFilter = useCallback(\n (filterId: string) => {\n onChange(filters.filter((filter) => filter.id !== filterId))\n },\n [filters, onChange]\n )\n\n return (\n <div\n className={cn(\n filtersContainerVariants({\n variant: context.variant,\n size: context.size,\n }),\n context.className\n )}\n >\n {filters.map((filter) => {\n const field = fieldsMap[filter.field]\n if (!field) return null\n\n return (\n <ButtonGroup\n key={filter.id}\n // Sera is an underline style: its group text and input group carry\n // only a bottom border. Normalise the boxed segments (the operator,\n // value and remove buttons) to the same treatment so the whole chip\n // reads as one underlined group instead of mixing boxes and rules.\n className=\"\"\n >\n <ButtonGroupText>\n {field.icon && field.icon}\n {field.label}\n </ButtonGroupText>\n\n <FilterOperatorDropdown<T>\n field={field}\n operator={filter.operator}\n values={filter.values}\n onChange={(operator) => updateFilter(filter.id, { operator })}\n />\n\n <FilterValueSelector<T>\n field={field}\n values={filter.values}\n onChange={(values) => updateFilter(filter.id, { values })}\n operator={filter.operator}\n autoFocus={false}\n />\n\n <FilterRemoveButton onClick={() => removeFilter(filter.id)} />\n </ButtonGroup>\n )\n })}\n </div>\n )\n}\n\ninterface FiltersProps<T = unknown> {\n filters: Filter<T>[]\n fields: FilterFieldsConfig<T>\n onChange: (filters: Filter<T>[]) => void\n className?: string\n variant?: \"solid\" | \"default\"\n size?: \"sm\" | \"default\" | \"lg\"\n radius?: \"default\" | \"full\"\n i18n?: Partial<FilterI18nConfig>\n showSearchInput?: boolean\n trigger?: React.ReactNode\n allowMultiple?: boolean\n menuPopupClassName?: string\n collapseAddButton?: boolean\n enableShortcut?: boolean\n shortcutKey?: string\n shortcutLabel?: string\n}\n\ninterface FilterSubmenuContentProps<T = unknown> {\n field: FilterFieldConfig<T>\n currentValues: T[]\n isMultiSelect: boolean\n onToggle: (value: T, isSelected: boolean) => void\n i18n: FilterI18nConfig\n isActive?: boolean\n onActive?: () => void\n onBack?: () => void\n onClose?: () => void\n}\n\nfunction FilterSubmenuContent<T = unknown>({\n field,\n currentValues,\n isMultiSelect,\n onToggle,\n i18n,\n isActive,\n onActive,\n onBack,\n onClose,\n}: FilterSubmenuContentProps<T>) {\n const [searchInput, setSearchInput] = useState(\"\")\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const baseId = useId()\n\n const {\n isAsync,\n options: resolvedOptions,\n loading,\n error,\n resolveSelected,\n } = useFieldOptions(field, searchInput, true)\n\n useEffect(() => {\n if (isActive) {\n if (field.searchable !== false) {\n inputRef.current?.focus()\n } else {\n const listbox = document.getElementById(`${baseId}-listbox`)\n listbox?.focus()\n }\n }\n }, [isActive, field.searchable, baseId])\n\n useEffect(() => {\n setHighlightedIndex(-1)\n }, [searchInput])\n\n useEffect(() => {\n if (highlightedIndex >= 0 && isActive) {\n const element = document.getElementById(\n `${baseId}-item-${highlightedIndex}`\n )\n element?.scrollIntoView({ block: \"nearest\" })\n }\n }, [highlightedIndex, isActive, baseId])\n\n const filteredOptions = useMemo(() => {\n // Async fields: keep selected values first (resolved from cache so they\n // stay labelled), then the loader's already-query-filtered results.\n if (isAsync) {\n const selectedSet = new Set(currentValues)\n return [\n ...resolveSelected(currentValues),\n ...resolvedOptions.filter((option) => !selectedSet.has(option.value)),\n ]\n }\n return (\n field.options?.filter((option) => {\n const isSelected = currentValues.includes(option.value)\n if (isSelected) return true\n if (!searchInput) return true\n return option.label.toLowerCase().includes(searchInput.toLowerCase())\n }) || []\n )\n }, [\n isAsync,\n resolvedOptions,\n resolveSelected,\n field.options,\n searchInput,\n currentValues,\n ])\n\n const renderOptionItem = (option: FilterOption<T>, index: number) => {\n const isSelected = currentValues.includes(option.value)\n const isHighlighted = highlightedIndex === index\n const itemId = `${baseId}-item-${index}`\n\n return (\n <DropdownMenuCheckboxItem\n key={String(option.value)}\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => setHighlightedIndex(index)}\n checked={isSelected}\n className={cn(\n \"data-highlighted:bg-accent data-highlighted:text-accent-foreground\",\n option.className\n )}\n onSelect={(e) => {\n if (isMultiSelect) e.preventDefault()\n }}\n onCheckedChange={() => onToggle(option.value as T, isSelected)}\n >\n {option.icon && option.icon}\n <span className=\"truncate\">{option.label}</span>\n </DropdownMenuCheckboxItem>\n )\n }\n\n useEffect(() => {\n if (isActive && filteredOptions.length > 0) {\n setHighlightedIndex(0)\n }\n }, [isActive, filteredOptions.length])\n\n return (\n <div className=\"flex flex-col\" onMouseEnter={onActive}>\n {field.searchable !== false && (\n <>\n <Input\n ref={inputRef}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={true}\n aria-haspopup=\"listbox\"\n aria-controls={`${baseId}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${baseId}-item-${highlightedIndex}`\n : undefined\n }\n placeholder={i18n.placeholders.searchField(field.label || \"\")}\n className={cn(\n \"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none\",\n \"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0\",\n isActive && \"placeholder:text-foreground\"\n )}\n value={searchInput}\n onBlur={() => isActive && inputRef.current?.focus()}\n onChange={(e) => setSearchInput(e.target.value)}\n onFocus={() => onActive?.()}\n onMouseEnter={(e) => {\n onActive?.()\n e.stopPropagation()\n }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n onBack?.()\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const option = filteredOptions[highlightedIndex]\n if (option) {\n onToggle(\n option.value as T,\n currentValues.includes(option.value)\n )\n if (!isMultiSelect) {\n onBack?.()\n }\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault()\n onClose?.()\n }\n e.stopPropagation()\n }}\n />\n <DropdownMenuSeparator />\n </>\n )}\n <div className=\"relative flex max-h-full\">\n <div\n className=\"flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain outline-hidden\"\n role=\"listbox\"\n id={`${baseId}-listbox`}\n tabIndex={field.searchable === false ? 0 : -1}\n onKeyDown={(e) => {\n if (field.searchable === false) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n onBack?.()\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const option = filteredOptions[highlightedIndex]\n if (option) {\n onToggle(\n option.value as T,\n currentValues.includes(option.value)\n )\n if (!isMultiSelect) {\n onBack?.()\n }\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault()\n onClose?.()\n }\n e.stopPropagation()\n }\n }}\n >\n {isAsync && loading && filteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {i18n.loadingOptions ?? DEFAULT_I18N.loadingOptions}\n </div>\n ) : isAsync && error ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {i18n.errorLoadingOptions ?? DEFAULT_I18N.errorLoadingOptions}\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {i18n.noResultsFound}\n </div>\n ) : field.renderOptionList ? (\n field.renderOptionList({\n options: filteredOptions,\n highlightedIndex,\n renderOption: renderOptionItem,\n })\n ) : (\n <ScrollArea className=\"size-full min-h-0 **:data-[slot=scroll-area-scrollbar]:m-0 **:data-[slot=scroll-area-viewport]:h-full **:data-[slot=scroll-area-viewport]:overscroll-contain\">\n <DropdownMenuGroup>\n {filteredOptions.map((option, index) =>\n renderOptionItem(option, index)\n )}\n </DropdownMenuGroup>\n </ScrollArea>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport function Filters<T = unknown>({\n filters,\n fields,\n onChange,\n className,\n variant = \"default\",\n size = \"default\",\n radius = \"default\",\n i18n,\n showSearchInput = true,\n trigger,\n allowMultiple = true,\n menuPopupClassName,\n enableShortcut = false,\n shortcutKey = \"f\",\n shortcutLabel = \"F\",\n}: FiltersProps<T>) {\n const [addFilterOpen, setAddFilterOpen] = useState(false)\n const [menuSearchInput, setMenuSearchInput] = useState(\"\")\n const [activeMenu, setActiveMenu] = useState<string>(\"root\")\n const [openSubMenu, setOpenSubMenu] = useState<string | null>(null)\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const [lastAddedFilterId, setLastAddedFilterId] = useState<string | null>(\n null\n )\n const rootInputRef = useRef<HTMLInputElement>(null)\n const rootId = useId()\n\n useEffect(() => {\n if (!enableShortcut) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (\n e.key.toLowerCase() === shortcutKey.toLowerCase() &&\n !addFilterOpen &&\n !(\n document.activeElement instanceof HTMLInputElement ||\n document.activeElement instanceof HTMLTextAreaElement\n )\n ) {\n e.preventDefault()\n setAddFilterOpen(true)\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [enableShortcut, shortcutKey, addFilterOpen])\n\n useEffect(() => {\n if (addFilterOpen && activeMenu === \"root\") {\n rootInputRef.current?.focus()\n }\n }, [addFilterOpen, activeMenu])\n\n useEffect(() => {\n setHighlightedIndex(-1)\n }, [menuSearchInput])\n\n useEffect(() => {\n if (highlightedIndex >= 0 && addFilterOpen) {\n const element = document.getElementById(\n `${rootId}-item-${highlightedIndex}`\n )\n element?.scrollIntoView({ block: \"nearest\" })\n }\n }, [highlightedIndex, addFilterOpen, rootId])\n\n useEffect(() => {\n if (!addFilterOpen) {\n setOpenSubMenu(null)\n }\n }, [addFilterOpen])\n\n // Track which filter instance is being built in the current Add Filter menu session\n // Maps fieldKey -> unique filterId created during this open session\n const [sessionFilterIds, setSessionFilterIds] = useState<\n Record<string, string>\n >({})\n\n useEffect(() => {\n if (lastAddedFilterId) {\n const timer = setTimeout(() => {\n setLastAddedFilterId(null)\n }, 1000)\n return () => clearTimeout(timer)\n }\n }, [lastAddedFilterId])\n\n const mergedI18n: FilterI18nConfig = useMemo(\n () => ({\n ...DEFAULT_I18N,\n ...i18n,\n operators: { ...DEFAULT_I18N.operators, ...i18n?.operators },\n placeholders: { ...DEFAULT_I18N.placeholders, ...i18n?.placeholders },\n validation: { ...DEFAULT_I18N.validation, ...i18n?.validation },\n }),\n [i18n]\n )\n\n const fieldsMap = useMemo(() => getFieldsMap(fields), [fields])\n\n const updateFilter = useCallback(\n (filterId: string, updates: Partial<Filter<T>>) => {\n onChange(\n filters.map((filter) => {\n if (filter.id === filterId) {\n const updatedFilter = { ...filter, ...updates }\n if (\n updates.operator === \"empty\" ||\n updates.operator === \"not_empty\"\n ) {\n updatedFilter.values = [] as T[]\n }\n return updatedFilter\n }\n return filter\n })\n )\n },\n [filters, onChange]\n )\n\n const removeFilter = useCallback(\n (filterId: string) => {\n onChange(filters.filter((filter) => filter.id !== filterId))\n },\n [filters, onChange]\n )\n\n const addFilter = useCallback(\n (fieldKey: string) => {\n const field = fieldsMap[fieldKey]\n if (field && field.key) {\n const defaultOperator =\n field.defaultOperator ||\n (field.type === \"multiselect\" ? \"is_any_of\" : \"is\")\n const defaultValues: unknown[] = field.type === \"text\" ? [\"\"] : []\n const newFilter = createFilter<T>(\n fieldKey,\n defaultOperator,\n defaultValues as T[]\n )\n setLastAddedFilterId(newFilter.id)\n onChange([...filters, newFilter])\n setAddFilterOpen(false)\n setMenuSearchInput(\"\")\n }\n },\n [fieldsMap, filters, onChange]\n )\n\n const selectableFields = useMemo(() => {\n const flatFields = flattenFields(fields)\n return flatFields.filter((field) => {\n if (!field.key || field.type === \"separator\") return false\n if (allowMultiple) return true\n return !filters.some((filter) => filter.field === field.key)\n })\n }, [fields, filters, allowMultiple])\n\n const filteredFields = useMemo(() => {\n return selectableFields.filter(\n (f) =>\n !menuSearchInput ||\n f.label?.toLowerCase().includes(menuSearchInput.toLowerCase())\n )\n }, [selectableFields, menuSearchInput])\n\n useEffect(() => {\n if (addFilterOpen && filteredFields.length > 0) {\n setHighlightedIndex(0)\n }\n }, [addFilterOpen, filteredFields.length])\n\n const triggerButton = useRender({\n render: (trigger as React.ReactElement) ?? (\n <Button variant=\"outline\">\n <PlusIcon />\n {mergedI18n.addFilter}\n </Button>\n ),\n defaultTagName: \"button\",\n })\n\n const contextValue = useMemo<FilterContextValue>(\n () => ({\n variant,\n size,\n radius,\n i18n: mergedI18n,\n className,\n trigger,\n allowMultiple,\n }),\n [variant, size, radius, mergedI18n, className, trigger, allowMultiple]\n )\n\n return (\n <FilterContext.Provider value={contextValue}>\n <div\n className={cn(filtersContainerVariants({ variant, size }), className)}\n >\n {selectableFields.length > 0 && (\n <DropdownMenu\n open={addFilterOpen}\n onOpenChange={(open) => {\n setAddFilterOpen(open)\n if (!open) {\n setMenuSearchInput(\"\")\n setSessionFilterIds({})\n } else {\n setActiveMenu(\"root\")\n }\n }}\n >\n <DropdownMenuTrigger render={triggerButton} />\n <DropdownMenuContent\n className={cn(\"w-55\", menuPopupClassName)}\n align=\"start\"\n >\n {showSearchInput && (\n <>\n <div className=\"relative\">\n <Input\n ref={rootInputRef}\n role=\"combobox\"\n aria-controls={`${rootId}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${rootId}-item-${highlightedIndex}`\n : undefined\n }\n placeholder={mergedI18n.searchFields}\n className={cn(\n \"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none\",\n \"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0\",\n activeMenu === \"root\" && \"placeholder:text-foreground\"\n )}\n value={menuSearchInput}\n onFocus={() => setActiveMenu(\"root\")}\n onMouseEnter={() => setActiveMenu(\"root\")}\n onBlur={() =>\n activeMenu === \"root\" && rootInputRef.current?.focus()\n }\n onChange={(e) => setMenuSearchInput(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (filteredFields.length > 0) {\n setHighlightedIndex((prev) =>\n prev < filteredFields.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (filteredFields.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredFields.length - 1\n )\n }\n } else if (\n (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") &&\n highlightedIndex >= 0\n ) {\n const field = filteredFields[highlightedIndex]\n const hasSubMenu =\n field &&\n (field.type === \"select\" ||\n field.type === \"multiselect\") &&\n fieldHasOptions(field)\n\n if (e.key === \"ArrowRight\" && hasSubMenu) {\n e.preventDefault()\n setOpenSubMenu(field.key || null)\n setActiveMenu(field.key || \"root\")\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n if (openSubMenu) {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n }\n }\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const field = filteredFields[highlightedIndex]\n if (field.key) {\n const hasSubMenu =\n (field.type === \"select\" ||\n field.type === \"multiselect\") &&\n fieldHasOptions(field)\n if (!hasSubMenu) {\n addFilter(field.key)\n } else {\n if (openSubMenu === field.key) {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n } else {\n setOpenSubMenu(field.key)\n setActiveMenu(field.key)\n }\n }\n }\n } else if (e.key === \"Escape\") {\n setAddFilterOpen(false)\n }\n e.stopPropagation()\n }}\n />\n {enableShortcut && shortcutLabel && (\n <Kbd className=\"absolute top-1/2 right-2 -translate-y-1/2 border bg-background\">\n {shortcutLabel}\n </Kbd>\n )}\n </div>\n <DropdownMenuSeparator />\n </>\n )}\n\n <div className=\"relative flex max-h-full\">\n <div\n className=\"flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain\"\n role=\"listbox\"\n id={`${rootId}-listbox`}\n onMouseEnter={() => setActiveMenu(\"root\")}\n >\n <ScrollArea className=\"**:data-[slot=scroll-area-scrollbar]:m-0\">\n {(() => {\n if (filteredFields.length === 0) {\n return (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {mergedI18n.noFieldsFound}\n </div>\n )\n }\n\n return filteredFields.map((field, index) => {\n const isHighlighted = highlightedIndex === index\n const itemId = `${rootId}-item-${index}`\n const hasSubMenu =\n (field.type === \"select\" ||\n field.type === \"multiselect\") &&\n fieldHasOptions(field)\n\n if (hasSubMenu) {\n const isMultiSelect = field.type === \"multiselect\"\n const fieldKey = field.key as string\n const sessionFilterId = sessionFilterIds[fieldKey]\n const sessionFilter = sessionFilterId\n ? filters.find((f) => f.id === sessionFilterId)\n : null\n const currentValues = sessionFilter?.values || []\n\n return (\n <DropdownMenuSub\n key={fieldKey}\n open={openSubMenu === fieldKey}\n onOpenChange={(open) => {\n if (open) {\n setOpenSubMenu(fieldKey)\n } else {\n if (openSubMenu === fieldKey) {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n }\n }\n }}\n >\n <DropdownMenuSubTrigger\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => {\n setHighlightedIndex(index)\n setActiveMenu(\"root\")\n }}\n className=\"data-highlighted:bg-accent data-highlighted:text-accent-foreground data-popup-open:bg-accent data-popup-open:text-accent-foreground\"\n >\n {field.icon}\n <span>{field.label}</span>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent\n className=\"w-50\"\n side=\"right\"\n >\n <FilterSubmenuContent\n field={field}\n currentValues={currentValues}\n isMultiSelect={isMultiSelect}\n i18n={mergedI18n}\n isActive={activeMenu === fieldKey}\n onActive={() => {\n if (field.searchable !== false) {\n setActiveMenu(fieldKey)\n }\n }}\n onBack={() => {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n }}\n onClose={() => setAddFilterOpen(false)}\n onToggle={(value, isSelected) => {\n if (isMultiSelect) {\n const nextValues = isSelected\n ? (currentValues.filter(\n (v) => v !== value\n ) as T[])\n : ([...currentValues, value] as T[])\n\n if (sessionFilter) {\n if (nextValues.length === 0) {\n onChange(\n filters.filter(\n (f) => f.id !== sessionFilter.id\n )\n )\n setSessionFilterIds((prev) => ({\n ...prev,\n [fieldKey]: \"\",\n }))\n } else {\n onChange(\n filters.map((f) =>\n f.id === sessionFilter.id\n ? { ...f, values: nextValues }\n : f\n )\n )\n }\n } else {\n const newFilter = createFilter<T>(\n fieldKey,\n field.defaultOperator || \"is_any_of\",\n nextValues\n )\n onChange([...filters, newFilter])\n setSessionFilterIds((prev) => ({\n ...prev,\n [fieldKey]: newFilter.id,\n }))\n }\n } else {\n const newFilter = createFilter<T>(\n fieldKey,\n field.defaultOperator || \"is\",\n [value] as T[]\n )\n setLastAddedFilterId(newFilter.id)\n onChange([...filters, newFilter])\n setAddFilterOpen(false)\n }\n }}\n />\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n }\n\n return (\n <DropdownMenuItem\n key={field.key}\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => setHighlightedIndex(index)}\n onClick={() => field.key && addFilter(field.key)}\n className=\"data-highlighted:bg-accent data-highlighted:text-accent-foreground\"\n >\n {field.icon}\n <span>{field.label}</span>\n </DropdownMenuItem>\n )\n })\n })()}\n </ScrollArea>\n </div>\n </div>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {filters.map((filter) => {\n const field = fieldsMap[filter.field]\n if (!field) return null\n return (\n <ButtonGroup\n key={filter.id}\n // Sera is an underline style: its group text and input group carry\n // only a bottom border. Normalise the boxed segments (operator,\n // value, remove) to the same treatment so the whole chip reads as\n // one underlined group instead of mixing boxes and rules.\n className=\"\"\n >\n <ButtonGroupText className=\"bg-background dark:bg-input/30\">\n {field.icon && field.icon}\n {field.label}\n </ButtonGroupText>\n <FilterOperatorDropdown<T>\n field={field}\n operator={filter.operator}\n values={filter.values}\n onChange={(operator) => updateFilter(filter.id, { operator })}\n />\n <FilterValueSelector<T>\n field={field}\n values={filter.values}\n operator={filter.operator}\n onChange={(values) => updateFilter(filter.id, { values })}\n autoFocus={filter.id === lastAddedFilterId}\n />\n <FilterRemoveButton onClick={() => removeFilter(filter.id)} />\n </ButtonGroup>\n )\n })}\n </div>\n </FilterContext.Provider>\n )\n}\n\nexport const createFilter = <T = unknown,>(\n field: string,\n operator?: string,\n values: T[] = []\n): Filter<T> => ({\n id: `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\n field,\n operator: operator || \"is\",\n values,\n})\n\nexport const createFilterGroup = <T = unknown,>(\n id: string,\n label: string,\n fields: FilterFieldConfig<T>[],\n initialFilters: Filter<T>[] = []\n): FilterGroup<T> => ({\n id,\n label,\n filters: initialFilters,\n fields,\n})\n","\"use client\"\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n","\"use client\"\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Check, ChevronDown, ChevronUp } from \"@gravity-ui/icons\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-placeholder:text-muted-foreground data-[size=default]:h-8 *:data-[slot=select-value]:line-clamp-1 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <ChevronDown className=\"pointer-events-none size-4 text-muted-foreground\" />\n }\n />\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n \"relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-background text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-open:fade-in-0 data-open:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List className=\"p-1\">\n {children}\n </SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Check className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"top-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronUp />\n </SelectPrimitive.ScrollUpArrow>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronDown />\n </SelectPrimitive.ScrollDownArrow>\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 {\n type CSSProperties,\n forwardRef,\n type HTMLAttributes,\n useLayoutEffect,\n} from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nconst componentThemeClassName =\n \"[--ic-background:#ffffff] [--ic-foreground:#111111] [--ic-primary:#111111] [--ic-secondary:#646b75] [--ic-surface-border:#e9edf2] [--ic-border:#e3e7ec] [--ic-card:#ffffff] [--ic-card-foreground:#111111] [--ic-muted:#f5f7fa] [--ic-muted-foreground:#6d7480] [--ic-accent:#f3f5f8] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] [--ic-accent-foreground:#111111] [--ic-input:#e3e7ec] [--ic-ring:rgba(17,17,17,0.16)] [--ic-destructive:#dc2626] [--ic-paper:#fcfcfd] [--ic-popover-foreground:#111111] [--ic-brand:#0ea5e9] [--ic-brand-soft:#bae6fd] [--ic-shadow-soft:0_18px_38px_-24px_rgba(15,23,42,0.35)] [--ic-chart-1:oklch(0.52_0.19_254)] [--ic-chart-2:oklch(0.74_0.11_232)] [--ic-chart-3:oklch(0.42_0.16_262)] [--ic-chart-4:oklch(0.84_0.07_228)] [--ic-chart-5:oklch(0.62_0.14_240)] [--color-background:var(--ic-background)] [--color-foreground:var(--ic-foreground)] [--color-primary:var(--ic-primary)] [--color-secondary:var(--ic-secondary)] [--color-border:var(--ic-border)] [--color-card:var(--ic-card)] [--color-card-foreground:var(--ic-card-foreground)] [--color-muted:var(--ic-muted)] [--color-muted-foreground:var(--ic-muted-foreground)] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] [--color-input:var(--ic-input)] [--color-ring:var(--ic-ring)] [--color-destructive:var(--ic-destructive)] [--color-paper:var(--ic-paper)] [--color-popover-foreground:var(--ic-popover-foreground)] [--color-brand:var(--ic-brand)] [--color-brand-soft:var(--ic-brand-soft)] [--color-chart-1:var(--ic-chart-1)] [--color-chart-2:var(--ic-chart-2)] [--color-chart-3:var(--ic-chart-3)] [--color-chart-4:var(--ic-chart-4)] [--color-chart-5:var(--ic-chart-5)] dark:[--ic-background:#111111] dark:[--ic-foreground:#f6f3ec] dark:[--ic-primary:#f6f3ec] dark:[--ic-secondary:#cbc6bb] dark:[--ic-surface-border:#2a2a25] dark:[--ic-border:#2b2a25] dark:[--ic-card:#111111] dark:[--ic-card-foreground:#f6f3ec] dark:[--ic-muted:#171716] dark:[--ic-muted-foreground:#9a958a] dark:[--ic-accent:#1a1a18] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] dark:[--ic-accent-foreground:#f6f3ec] dark:[--ic-input:#2b2a25] dark:[--ic-ring:rgba(246,243,236,0.18)] dark:[--ic-destructive:#f87171] dark:[--ic-paper:#171716] dark:[--ic-popover-foreground:#f6f3ec] dark:[--ic-brand:#38bdf8] dark:[--ic-brand-soft:#0c4a6e] dark:[--ic-shadow-soft:0_20px_44px_-28px_rgba(0,0,0,0.6)] dark:[--ic-chart-1:oklch(0.68_0.17_250)] dark:[--ic-chart-2:oklch(0.82_0.09_225)] dark:[--ic-chart-3:oklch(0.58_0.15_260)] dark:[--ic-chart-4:oklch(0.75_0.12_235)] dark:[--ic-chart-5:oklch(0.88_0.06_220)]\"\n\nconst STYLE_ID = \"iconiq-skeleton-styles\"\n\nconst SKELETON_CSS = `\n@keyframes iconiq-skeleton-shimmer {\n to {\n transform: translateX(200%);\n }\n}\n\n@keyframes iconiq-skeleton-fade {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.38;\n }\n}\n\n.iconiq-skeleton-surface {\n background-color: #f5f7fa;\n background-color: var(--ic-muted);\n}\n\n.iconiq-skeleton-shimmer {\n background: linear-gradient(\n 90deg,\n transparent 0%,\n rgba(17, 17, 17, 0.06) 50%,\n transparent 100%\n );\n background: linear-gradient(\n 90deg,\n transparent 0%,\n color-mix(in srgb, var(--ic-foreground) 6%, transparent) 50%,\n transparent 100%\n );\n animation: iconiq-skeleton-shimmer var(--iconiq-skeleton-duration, 1.6s)\n ease-in-out infinite;\n}\n\n.iconiq-skeleton-fade-root {\n animation: iconiq-skeleton-fade var(--iconiq-skeleton-duration, 2.4s)\n ease-in-out infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .iconiq-skeleton-shimmer,\n .iconiq-skeleton-fade-root {\n animation: none;\n }\n}\n`\n\ntype SkeletonRounded = \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"\ntype SkeletonVariant = \"shimmer\" | \"fade\"\n\nconst skeletonRoundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n} as const satisfies Record<SkeletonRounded, string>\n\nconst skeletonVariantDefaultDuration: Record<SkeletonVariant, number> = {\n shimmer: 1.6,\n fade: 2.4,\n}\n\nfunction getSkeletonVariantDuration(variant: SkeletonVariant, duration = 1.6) {\n if (duration !== 1.6) {\n return duration\n }\n\n return skeletonVariantDefaultDuration[variant]\n}\n\nfunction ensureSkeletonStyles() {\n if (typeof document === \"undefined\") {\n return\n }\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null\n\n if (!style) {\n style = document.createElement(\"style\")\n style.id = STYLE_ID\n document.head.appendChild(style)\n }\n\n style.textContent = SKELETON_CSS\n}\n\nfunction resolveSkeletonA11yProps({\n animate = true,\n decorative = true,\n label,\n}: {\n animate?: boolean\n decorative?: boolean\n label?: string | null\n}) {\n if (decorative || label === null) {\n return { \"aria-hidden\": true as const }\n }\n\n return {\n \"aria-label\": label ?? (animate ? \"Loading\" : \"Placeholder\"),\n \"aria-live\": \"polite\" as const,\n role: \"status\" as const,\n }\n}\n\ninterface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n animate?: boolean\n decorative?: boolean\n duration?: number\n label?: string | null\n rounded?: SkeletonRounded\n variant?: SkeletonVariant\n}\n\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\n {\n animate = true,\n className,\n decorative = true,\n duration = 1.6,\n label,\n rounded = \"md\",\n style,\n variant = \"shimmer\",\n ...props\n },\n ref\n) {\n const variantDuration = getSkeletonVariantDuration(variant, duration)\n const showShimmer = animate && variant === \"shimmer\"\n const showFade = animate && variant === \"fade\"\n\n useLayoutEffect(() => {\n if (animate) {\n ensureSkeletonStyles()\n }\n }, [animate])\n\n const animatedStyle =\n showShimmer || showFade\n ? ({\n ...style,\n \"--iconiq-skeleton-duration\": `${variantDuration}s`,\n } as CSSProperties)\n : style\n\n return (\n <div\n className={cn(\n componentThemeClassName,\n \"iconiq-skeleton-surface relative block h-4 w-full overflow-hidden\",\n showFade && \"iconiq-skeleton-fade-root\",\n skeletonRoundedClasses[rounded],\n className\n )}\n ref={ref}\n style={animatedStyle}\n {...resolveSkeletonA11yProps({ animate, decorative, label })}\n {...props}\n >\n {showShimmer ? (\n <span\n aria-hidden=\"true\"\n className=\"iconiq-skeleton-shimmer pointer-events-none absolute inset-0 -translate-x-full\"\n />\n ) : null}\n </div>\n )\n})\n\nSkeleton.displayName = \"Skeleton\"\n\nfunction SkeletonAvatar({\n className,\n ...props\n}: Omit<SkeletonProps, \"rounded\">) {\n return (\n <Skeleton\n className={cn(\"size-10\", className)}\n decorative\n rounded=\"full\"\n {...props}\n />\n )\n}\n\nfunction SkeletonText({ className, ...props }: SkeletonProps) {\n return <Skeleton className={cn(\"h-3\", className)} decorative {...props} />\n}\n\nfunction SkeletonButton({\n className,\n ...props\n}: Omit<SkeletonProps, \"rounded\">) {\n return (\n <Skeleton\n className={cn(\"h-9 w-24\", className)}\n decorative\n rounded=\"lg\"\n {...props}\n />\n )\n}\n\nconst ShimmerSkeleton = Skeleton\n\nexport {\n getSkeletonVariantDuration,\n resolveSkeletonA11yProps,\n ShimmerSkeleton,\n Skeleton,\n SkeletonAvatar,\n SkeletonButton,\n skeletonRoundedClasses,\n SkeletonText,\n skeletonVariantDefaultDuration,\n}\nexport default Skeleton\nexport type {\n SkeletonProps as ShimmerSkeletonProps,\n SkeletonProps,\n SkeletonRounded,\n SkeletonVariant,\n}\n","\"use client\"\n\nimport { GooeyToaster, type GooeyToasterProps } from \"goey-toast\"\nimport { useTheme } from \"next-themes\"\n\nconst Toaster = ({ closeButton = \"top-left\", ...props }: GooeyToasterProps) => {\n const { theme = \"system\" } = useTheme()\n const toasterTheme = theme === \"dark\" ? \"dark\" : \"light\"\n\n return (\n <GooeyToaster\n theme={toasterTheme}\n position=\"bottom-right\"\n closeButton={closeButton}\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","\"use client\"\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: SwitchPrimitive.Root.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 motion-reduce:transition-none dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform duration-150 ease-out group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 motion-reduce:transition-none group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":";AAAA,SAAS,aAAa,0BAA0B;;;ACAhD,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADDA,SAAS,aAAa,iBAAiB;AAInC,cA4BE,YA5BF;AAFJ,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAkC;AACzE,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,wBAAwB,SAAS;AAAA,MAC9C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC7E,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,qBAAqB,SAAS;AAAA,MAC3C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,qBAAC,mBAAmB,QAAnB,EAA0B,WAAU,qBACnC;AAAA;AAAA,MAAC,mBAAmB;AAAA,MAAnB;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,UAED;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,IACF;AAAA,IAEC,aACC,oBAAC,SAAI,WAAW,GAAG,oCAAoC,SAAS,GAC7D,sBACH,IACE;AAAA,KACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;AEpFA,SAAS,eAAe,4BAA4B;;;ACFpD,SAAS,UAAU,uBAAuB;AAC1C,SAAS,WAA8B;AAkDnC,gBAAAA,YAAA;AA9CJ,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,QACF,WACE;AAAA,QACF,OACE;AAAA,QACF,aACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SACE;AAAA,QACF,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WACE;AAAA,QACF,WACE;AAAA,QACF,WAAW;AAAA,QACX,cACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAAgE;AAC9D,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ADhDS,gBAAAC,MAuCL,QAAAC,aAvCK;AADT,SAAS,YAAY,EAAE,GAAG,MAAM,GAAoC;AAClE,SAAO,gBAAAD,KAAC,qBAAqB,MAArB,EAA0B,aAAU,gBAAgB,GAAG,OAAO;AACxE;AAEA,SAAS,mBAAmB,EAAE,GAAG,MAAM,GAAuC;AAC5E,SACE,gBAAAA,KAAC,qBAAqB,SAArB,EAA6B,aAAU,wBAAwB,GAAG,OAAO;AAE9E;AAEA,SAAS,kBAAkB,EAAE,GAAG,MAAM,GAAsC;AAC1E,SACE,gBAAAA,KAAC,qBAAqB,QAArB,EAA4B,aAAU,uBAAuB,GAAG,OAAO;AAE5E;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAwC;AACtC,SACE,gBAAAA;AAAA,IAAC,qBAAqB;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,OAAO;AAAA,EACP,GAAG;AACL,GAEG;AACD,SACE,gBAAAC,MAAC,qBACC;AAAA,oBAAAD,KAAC,sBAAmB;AAAA,IACpB,gBAAAA;AAAA,MAAC,qBAAqB;AAAA,MAArB;AAAA,QACC,aAAU;AAAA,QACV,aAAW;AAAA,QACX,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;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,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,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,IAAC,qBAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;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,qBAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAAwC;AACtC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GACiE;AAC/D,SACE,gBAAAA;AAAA,IAAC,qBAAqB;AAAA,IAArB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,SAAS;AAAA,MACvB,QAAQ,gBAAAA,KAAC,UAAO,SAAkB,MAAY;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ;;;AE1KA,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;;;ACEzB,SAAS,cAAc;AAoCnB,SAaE,OAAAE,MAbF,QAAAC,aAAA;AAjCJ,IAAM,eAAoC;AAAA,EACxC,YAAY;AAAA,EACZ,SAAS;AACX;AAEA,IAAM,eAAoC;AAAA,EACxC,YAAY;AAAA,EACZ,SAAS;AACX;AAgBO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,QAAM,OAAO,CAAC,MAAc,IAAI;AAEhC,SACE,gBAAAA;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC/B,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,SAAS,EAAE,SAAS,EAAE;AAAA,MACtB,MAAM,EAAE,SAAS,EAAE;AAAA,MACnB,YAAY,EAAE,UAAU,IAAI;AAAA,MAC3B,GAAG;AAAA,MAEJ;AAAA,wBAAAD,KAAC,WAAM,mBAAK;AAAA,QAGZ,gBAAAA;AAAA,UAAC,OAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAAS;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,SAAS,EAAE,UAAU,IAAI;AAAA,YAC3B;AAAA;AAAA,QACF;AAAA,QAGA,gBAAAA;AAAA,UAAC,OAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAAS;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA,YACA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC/EA,SAAS,UAAAE,eAAc;AAsCnB,SAaE,OAAAC,MAbF,QAAAC,aAAA;AAjCJ,IAAMC,gBAAoC;AAAA,EACxC,YAAY;AAAA,EACZ,SAAS;AACX;AAEA,IAAMC,gBAAoC;AAAA,EACxC,YAAY;AAAA,EACZ,SAAS;AACX;AAgBO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,QAAM,OAAO,CAAC,MAAc,IAAI;AAEhC,SACE,gBAAAF;AAAA,IAACG,QAAO;AAAA,IAAP;AAAA,MACC,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC/B,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,SAAS,EAAE,SAAS,EAAE;AAAA,MACtB,MAAM,EAAE,SAAS,EAAE;AAAA,MACnB,YAAY,EAAE,UAAU,IAAI;AAAA,MAC3B,GAAG;AAAA,MAEJ;AAAA,wBAAAJ,KAAC,WAAM,kDAAM;AAAA,QACb,gBAAAA;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,SAAS,EAAE,UAAU,IAAI;AAAA,YAC3B;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,CAAC;AAAA,cACb,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,CAAC,EAAE;AAAA,YAC3C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,CAAC;AAAA,cACb,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,CAAC,EAAE;AAAA,YAC3C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,CAAC;AAAA,cACb,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,CAAC,EAAE;AAAA,YAC3C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,CAAC;AAAA,cACb,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,CAAC,EAAE;AAAA,YAC3C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA,YACA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACpKA,SAAS,UAAAE,eAAc;AAsCnB,SAaE,OAAAC,MAbF,QAAAC,aAAA;AAjCJ,IAAMC,gBAAoC;AAAA,EACxC,YAAY;AAAA,EACZ,SAAS;AACX;AAEA,IAAMC,gBAAoC;AAAA,EACxC,YAAY;AAAA,EACZ,SAAS;AACX;AAgBO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,QAAM,OAAO,CAAC,MAAc,IAAI;AAEhC,SACE,gBAAAF;AAAA,IAACG,QAAO;AAAA,IAAP;AAAA,MACC,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC/B,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,SAAS,EAAE,SAAS,EAAE;AAAA,MACtB,MAAM,EAAE,SAAS,EAAE;AAAA,MACnB,YAAY,EAAE,UAAU,IAAI;AAAA,MAC3B,GAAG;AAAA,MAEJ;AAAA,wBAAAJ,KAAC,WAAM,kBAAI;AAAA,QACX,gBAAAA;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,SAAS,EAAE,UAAU,IAAI;AAAA,YAC3B;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,CAAC,EAAE;AAAA,YAC3C;AAAA;AAAA,QACF;AAAA,QACA,gBAAAH;AAAA,UAACI,QAAO;AAAA,UAAP;AAAA,YACC,GAAE;AAAA,YACF,SAASF;AAAA,YACT,SAASC;AAAA,YACT,YAAY;AAAA,cACV,UAAU,KAAK,GAAG;AAAA,cAClB,MAAM;AAAA,cACN,OAAO,KAAK,GAAG;AAAA,cACf,SAAS,EAAE,UAAU,KAAK,OAAO,KAAK,GAAG,EAAE;AAAA,YAC7C;AAAA,YACA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AHjGI,gBAAAE,YAAA;AARG,SAAS,QAAQ;AACtB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,CAAC;AAEpC,QAAM,qBAAqB,MAAM;AAC/B,aAAS,CAAC,eAAe,YAAY,KAAK,CAAC;AAAA,EAC7C;AAEA,QAAM,QAAQ;AAAA,IACZ,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,qBAAqB;AAAA;AAAA,MADjB;AAAA,IAEN;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,qBAAqB;AAAA;AAAA,MADjB;AAAA,IAEN;AAAA,IAEA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,eAAe;AAAA,QACf,qBAAqB;AAAA;AAAA,MAFjB;AAAA,IAGN;AAAA,EACF;AACA,SACE,gBAAAA,KAAC,UAAK,WAAU,gDACd,0BAAAA,KAAC,mBAAgB,MAAK,QAAQ,gBAAM,KAAK,GAAE,GAC7C;AAEJ;;;AIhCA,SAAS,gBAAgB,6BAA6B;AACtD,SAAS,wBAAwB,aAAa;;;ACJ9C,SAAS,SAAS,sBAAsB;AAepC,gBAAAC,YAAA;AAVJ,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAkC;AAChC,QAAM,gBAAgB,SAAS;AAE/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW,gBAAgB,YAAY;AAAA,MACvC,SACE,gBACI,CAAC,UAAU;AACT,cAAM,cAAc,KAAK;AACzB,kBAAU,KAAK;AAAA,MACjB,IACA;AAAA,MAEN,WAAW;AAAA,QACT;AAAA,QACA,iBACE;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AClCA,SAAS,cAAc,2BAA2B;AAU9C,SAKE,OAAAC,MALF,QAAAC,aAAA;AANJ,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,SACE,gBAAAA;AAAA,IAAC,oBAAoB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAC,oBAAoB;AAAA,UAApB;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACA,gBAAAA,KAAC,aAAU;AAAA,QACX,gBAAAA,KAAC,oBAAoB,QAApB,EAA2B;AAAA;AAAA;AAAA,EAC9B;AAEJ;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAwC;AACtC,SACE,gBAAAA;AAAA,IAAC,oBAAoB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC,oBAAoB;AAAA,QAApB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA;AAAA,MACZ;AAAA;AAAA,EACF;AAEJ;;;AFlBI,SAKI,OAAAE,OALJ,QAAAC,aAAA;AAxBG,IAAM,eACX,sBAAsB;AAEjB,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAQuB;AACrB,QAAM,YAAa,QAAQ;AAE3B,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAU;AAAA,MACV,aAAU;AAAA,MAET;AAAA,sBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YACV,aAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QAEF,gBAAAA;AAAA,UAAC,sBAAsB;AAAA,UAAtB;AAAA,YACC,WAAW;AAAA,cACT,cACE;AAAA,cACF,cAAc,OACV,oHACA;AAAA,cACJ;AAAA,YACF;AAAA,YACA,aAAU;AAAA,YACV,QAAQ,gBAAAA,MAAC,SAAM;AAAA,YACd,GAAG;AAAA;AAAA,QACN;AAAA,QACC,eACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,cAAc,OAAO,cAAc;AAAA,YACrC;AAAA,YACC,GAAG;AAAA,YAEJ,0BAAAA,MAAC,sBAAsB,MAAtB,EAA2B,aAAU,qBACpC,0BAAAA,MAAC,0BAAuB,GAC1B;AAAA;AAAA,QACF;AAAA,QAED,aACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,cAAc,OAAO,cAAc;AAAA,YACrC;AAAA,YACC,GAAG;AAAA,YAEJ,0BAAAA,MAAC,SAAM;AAAA;AAAA,QACT;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAOuB;AACrB,SACE,gBAAAA,MAAC,sBAAsB,QAAtB,EAA8B,GAAG,aAChC,0BAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MACV,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UAEA,0BAAAA;AAAA,YAAC,sBAAsB;AAAA,YAAtB;AAAA,cACC,WAAU;AAAA,cACV,aAAU;AAAA,cACT,GAAG;AAAA,cAEH;AAAA;AAAA,UACH;AAAA;AAAA,MACF;AAAA;AAAA,EACF,GACF;AAEJ;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC/D,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW,GAAG,2BAA2B,SAAS;AAAA,MAClD,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,IAAM,oBACX,sBAAsB;AAEjB,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE,gBAAAA,MAAC,cACC,0BAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA,MAEJ,0BAAAA,MAAC,SAAM;AAAA;AAAA,EACT;AAEJ;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA,GAAG;AACL,GAA2D;AACzD,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,IAAM,yBACX,sBAAsB;AAEjB,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,gBAAAA;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACT,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEO,IAAM,wBACX,sBAAsB;;;AG1SxB,SAAS,UAAU,uBAAuB;AAatC,gBAAAE,aAAA;AARJ,SAAS,OAAO;AAAA,EACd;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,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,gBAAgB;AAAA,IAAhB;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,GAAG;AACL,GAAmC;AACjC,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,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;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;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;;;ACnGA,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,OAAAC,YAA8B;AAIvC,IAAM,gBAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAA0E;AACxE,SAAO,UAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,QACE,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC/CA,SAAS,iBAAiB;AAC1B,YAAY,WAAW;;;ACwJhB,SAAS,cAAc;AAC5B,MAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,SAAO,OAAO,WAAW,mBAAmB,MAAM;AACpD;AAEO,SAAS,oBAAoB;AAClC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,cAAc,KAAK;AAC9C;AAEO,SAAS,qBAAqB;AACnC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,OAAO;AAC3C;AAEO,SAAS,2BAA2B;AACzC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,aAAa;AACjD;AAgCO,SAAS,uBAAuB;AACrC,MAAI,CAAC,YAAY,EAAG,QAAO;AAE3B,SAAO,OAAO,WAAW,SAAS,eAAe;AACnD;;;ADxMA,SAAS,WAAW,OAAe;AACjC,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,KAAK;AAEzB,QAAI,IAAI,aAAa,YAAY,IAAI,aAAa,cAAc;AAC9D,aAAO,GAAG,IAAI,QAAQ,GAAG,IAAI,MAAM,GAAG,IAAI,IAAI;AAAA,IAChD;AAEA,QAAI,IAAI,aAAa,cAAc,IAAI,aAAa,QAAQ;AAC1D,aAAO,GAAG,IAAI,QAAQ,GAAG,IAAI,MAAM,GAAG,IAAI,IAAI;AAAA,IAChD;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AAEA,SAAS,kBAAoC;AAC3C,SAAO,SAAS,gBAAgB,UAAU,SAAS,MAAM,IAAI,SAAS;AACxE;AAEA,SAAS,sBAAsB;AAC7B,QAAM,YAAY,yBAAyB;AAC3C,MAAI,CAAC,UAAW;AAEhB,QAAM,QAAQ,gBAAgB;AAC9B,QAAM,kBAAkB,UAAU,SAAS,YAAY;AAEvD,OAAK,QAAQ,IAAI;AAAA,IACf,UAAU,WAAW;AAAA,MACnB,OAAO,UAAU,SAAS,SAAS;AAAA,IACrC,CAAC;AAAA,IACD,UAAU,qBAAqB;AAAA,MAC7B,OAAO;AAAA,IACT,CAAC;AAAA,EACH,CAAC,EAAE,MAAM,MAAM;AAAA,EAEf,CAAC;AACH;AAEA,SAAS,kBAAkB;AACzB,QAAM,cAAc,qBAAqB;AACzC,MAAI,CAAC,YAAa;AAElB,OAAK,YACF,WAAW;AAAA,IACV,OAAO,gBAAgB;AAAA,EACzB,CAAC,EACA,MAAM,MAAM;AAAA,EAEb,CAAC;AACL;AAEA,SAAS,uBAAuB;AAC9B,sBAAoB;AACpB,kBAAgB;AAClB;AAEO,SAAS,kBAAkB;AAChC,QAAM,SAAS,UAAU;AAEzB,EAAM,gBAAU,MAAM;AACpB,QAAI,CAAC,YAAY,EAAG;AAEpB,UAAM,OAAO,SAAS;AACtB,UAAM,WAAW,kBAAkB;AAEnC,SAAK,QAAQ,YAAY;AAEzB,QAAI,UAAU;AACZ,WAAK,QAAQ,iBAAiB;AAAA,IAChC;AAEA,QACE,aAAa,SACb,UAAU,aAAa,cACvB,UAAU,iBAAiB,GAC3B;AACA,WAAK,QAAQ,eAAe;AAAA,IAC9B;AAGA,yBAAqB;AAGrB,UAAM,gBAAgB,IAAI,iBAAiB,MAAM;AAC/C,2BAAqB;AAAA,IACvB,CAAC;AAED,kBAAc,QAAQ,MAAM;AAAA,MAC1B,YAAY;AAAA,MACZ,iBAAiB,CAAC,OAAO;AAAA,IAC3B,CAAC;AAED,QAAI,YAAY;AAChB,QAAI;AAEJ,UAAM,YAAY,mBAAmB;AAErC,QAAI,WAAW,aAAa;AAC1B,YAAM,iBAAiB,UAAU,YAAY,cAAc,CAAC,EAAE,IAAI,MAAM;AACtE,cAAM,OAAO,WAAW,GAAG;AAE3B,YAAI,MAAM;AACR,iBAAO,KAAK,IAAI;AAAA,QAClB;AAAA,MACF,CAAC;AAED,WAAK,QAAQ,QAAQ,cAAc,EAChC,KAAK,CAAC,aAAa;AAClB,YAAI,WAAW;AACb,eAAK,SAAS,OAAO;AACrB;AAAA,QACF;AAEA,+BAAuB,MAAM,SAAS,OAAO;AAAA,MAC/C,CAAC,EACA,MAAM,MAAM;AAAA,MAEb,CAAC;AAAA,IACL;AAEA,WAAO,MAAM;AACX,kBAAY;AAEZ,oBAAc,WAAW;AAEzB,WAAK,uBAAuB;AAE5B,aAAO,KAAK,QAAQ;AACpB,aAAO,KAAK,QAAQ;AACpB,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AACT;;;AErJA,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,OAAAC,YAA8B;AAMnC,gBAAAC,aAAA;AAFJ,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,iBAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,OACE;AAAA,QACF,QACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,OAAO;AAAA,EACd,UAAU;AAAA,EACV,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,GAGK;AACH,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,cAAY;AAAA,MACZ,WAAW,GAAG,eAAe,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoC;AAClC,SAAOE,WAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAOC;AAAA,MACL;AAAA,QACE,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF,CAAC;AACH;AAEA,IAAM,0BAA0BF;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,OAAO;AAAA,QACP,KAAK;AAAA,MACP;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,GAGG;AACD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,aAAW;AAAA,MACX,WAAW,GAAG,wBAAwB,EAAE,MAAM,MAAM,CAAC,GAAG,SAAS;AAAA,MAChE,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC7HA,SAAS,cAAAI,mBAAkB;AAC3B,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,OAAAC,YAA8B;;;ACAvC,SAAS,aAAa,0BAA0B;AAU5C,gBAAAC,aAAA;AANJ,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAA6B;AAC3B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ADQI,gBAAAC,aAAA;AAvBJ,IAAM,sBAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,YACE;AAAA,QACF,UACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2E;AACzE,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoC;AAClC,SAAOE,WAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAOC;AAAA,MACL;AAAA,QACE,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF,CAAC;AACH;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAA2C;AACzC,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AErEI,gBAAAI,aAAA;AANJ,SAAS,KAAK;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,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;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,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,uBAAuB,SAAS;AAAA,MAC7C,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;;;AC1FA,OAAO,sBAEA;AACP,SAAS,aAAa,oBAAoB;AAC1C,YAAYC,YAAW;AAmHjB,gBAAAC,OA8DF,QAAAC,aA9DE;AAzFN,IAAM,kBAAwB,qBAA2C,IAAI;AAE7E,SAAS,cAAc;AACrB,QAAM,UAAgB,kBAAW,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,gBAAS,KAAK;AAC9D,QAAM,CAAC,eAAe,gBAAgB,IAAU,gBAAS,KAAK;AAE9D,QAAM,WAAiB,mBAAY,CAACC,SAAqB;AACvD,QAAI,CAACA,KAAK;AACV,qBAAiBA,KAAI,cAAc,CAAC;AACpC,qBAAiBA,KAAI,cAAc,CAAC;AAAA,EACtC,GAAG,CAAC,CAAC;AAEL,QAAM,aAAmB,mBAAY,MAAM;AACzC,SAAK,WAAW;AAAA,EAClB,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,aAAmB,mBAAY,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,iBAAU,MAAM;AACpB,QAAI,CAAC,OAAO,CAAC,OAAQ;AACrB,WAAO,GAAG;AAAA,EACZ,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhB,EAAM,iBAAU,MAAM;AACpB,QAAI,CAAC,IAAK;AACV,QAAI,GAAG,UAAU,QAAQ;AACzB,QAAI,GAAG,UAAU,QAAQ;AACzB,mBAAe,MAAM,SAAS,GAAG,CAAC;AAElC,WAAO,MAAM;AACX,UAAI,IAAI,UAAU,QAAQ;AAC1B,UAAI,IAAI,UAAU,QAAQ;AAAA,IAC5B;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,mDACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,eAAY,WAAU,eAAc;AAAA,QACrC,gBAAAA,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,qDACA;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,gBAAa,WAAU,eAAc;AAAA,QACtC,gBAAAA,MAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AAAA,EACtC;AAEJ;;;ACtOA,YAAYG,YAAW;AAEvB,YAAY,uBAAuB;AA2D7B,SA0JY,UAjJV,OAAAC,OATF,QAAAC,aAAA;AAtDN,IAAM,SAAS,EAAE,OAAO,IAAI,MAAM,QAAQ;AAE1C,IAAM,oBAAoB,EAAE,OAAO,KAAK,QAAQ,IAAI;AAkBpD,IAAM,eAAqB,qBAAwC,IAAI;AAEvE,SAAS,WAAW;AAClB,QAAM,UAAgB,kBAAW,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,mBAAmB;AAAA,EACnB,GAAG;AACL,GASG;AACD,QAAM,WAAiB,aAAM;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;AAAA,UAAmB;AAAA,UAAlB;AAAA,YACC;AAAA,YAEC;AAAA;AAAA,QACH;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,YAAY,GAAG,KAAK,KAAK,MAAM;AAAA,UAChD,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,GAaK;AACH,QAAM,EAAE,OAAO,IAAI,SAAS;AAE5B,QAAM,eAAqB,eAAQ,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,WACzB,OAAO,KAAK,GAAG,SAAS,QACzB,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,kBACE,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,EACrC,IAAI,CAAC,MAAM,UAAU;AACpB,gBAAM,MAAM,GAAG,WAAW,KAAK,QAAQ,KAAK,WAAW,OAAO;AAC9D,gBAAM,aAAa,4BAA4B,QAAQ,MAAM,GAAG;AAChE,gBAAM,iBAAiB,SAAS,KAAK,SAAS,QAAQ,KAAK;AAE3D,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,MAAA,YACG;AAAA,4BAAY,OACX,gBAAAD,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,MAAC,SAAI,WAAU,gBACZ;AAAA,oCAAY,eAAe;AAAA,wBAC5B,gBAAAD,MAAC,UAAK,WAAU,yBACb,sBAAY,SAAS,KAAK,MAC7B;AAAA,yBACF;AAAA,sBACC,KAAK,SAAS,QACb,gBAAAA,MAAC,UAAK,WAAU,4CACb,iBAAO,KAAK,UAAU,WACnB,KAAK,MAAM,eAAe,IAC1B,OAAO,KAAK,KAAK,GACvB;AAAA;AAAA;AAAA,gBAEJ;AAAA,iBACF;AAAA;AAAA,YAtDG;AAAA,UAwDP;AAAA,QAEJ,CAAC,GACL;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,cAAgC;AAEtC,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,gBAAgB;AAAA,EAChB;AACF,GAGiD;AAC/C,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,kBACE,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM,EACrC,IAAI,CAAC,MAAM,UAAU;AACpB,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;AAAA,QAgBP;AAAA,MAEJ,CAAC;AAAA;AAAA,EACL;AAEJ;AAEA,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,SAAS,OAAO,cAAc,IAAI,OAAO,GAAG;AACvE;;;ACzWA,SAAS,YAAY,yBAAyB;AAC9C,YAAYG,YAAW;AAGvB,SAAS,OAAO,eAAAC,cAAa,SAAAC,cAAa;;;ACJ1C,SAAS,OAAAC,YAA8B;;;ACInC,gBAAAC,aAAA;AAFJ,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAqC;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;;;ADHI,gBAAAC,aAAA;AAFJ,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,0BAA0BC;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,gBACE;AAAA,QACF,cACE;AAAA,QACF,eACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,GAAG;AACL,GAGK;AACH,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW,GAAG,wBAAwB,EAAE,MAAM,CAAC,GAAG,SAAS;AAAA,MAC3D,SAAS,CAAC,MAAM;AACd,YAAK,EAAE,OAAuB,QAAQ,QAAQ,GAAG;AAC/C;AAAA,QACF;AACA,YAAI,CAAC,YAAY;AACf;AAAA,QACF;AACA,UAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAM;AAAA,MAC/D;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,2BAA2BC;AAAA,EAC/B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,WACE;AAAA,QACF,WAAW;AAAA,QACX,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAGK;AACH,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAW;AAAA,MACX;AAAA,MACA,WAAW,GAAG,yBAAyB,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC7E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAAkC;AAChC,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,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAqC;AACnC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AD3IS,gBAAAE,OASL,QAAAC,cATK;AAHT,IAAM,WAAW,kBAAkB;AAEnC,SAAS,cAAc,EAAE,GAAG,MAAM,GAAkC;AAClE,SAAO,gBAAAD,MAAC,kBAAkB,OAAlB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoC;AAClC,SACE,gBAAAC;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC9D,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAD,MAACE,cAAA,EAAY,WAAU,oDAAmD;AAAA;AAAA;AAAA,EAC5E;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC7E,SACE,gBAAAF;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,QAAQ,gBAAAA,MAAC,oBAAiB,SAAQ,SAAQ,MAAK,WAAU;AAAA,MACzD,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA,MAEJ,0BAAAA,MAACG,QAAA,EAAM,WAAU,uBAAsB;AAAA;AAAA,EACzC;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAMG;AACD,SACE,gBAAAF,OAAC,cAAW,WAAW,GAAG,UAAU,SAAS,GAC3C;AAAA,oBAAAD;AAAA,MAAC,kBAAkB;AAAA,MAAlB;AAAA,QACC,QAAQ,gBAAAA,MAAC,mBAAgB,UAAoB;AAAA,QAC5C,GAAG;AAAA;AAAA,IACN;AAAA,IACC,gBACC,gBAAAA,MAAC,mBAAgB,OAAM,gBAAgB,wBAAa;AAAA,IAGtD,gBAAAC,OAAC,mBAAgB,OAAM,cAAa,WAAU,QAC3C;AAAA,qBACC,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,QAAQ,gBAAAA,MAAC,mBAAgB;AAAA,UACzB,aAAU;AAAA,UACV,WAAU;AAAA,UACV;AAAA;AAAA,MACF;AAAA,MAED,aAAa,gBAAAA,MAAC,iBAAc,UAAoB;AAAA,OACnD;AAAA,IACA,gBAAAA,MAAC,mBAAgB,OAAM,cAAc,sBAAW;AAAA,IAC/C;AAAA,KACH;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAIK;AACH,SACE,gBAAAA,MAAC,kBAAkB,QAAlB,EACC,0BAAAA;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV,0BAAAA;AAAA,QAAC,kBAAkB;AAAA,QAAlB;AAAA,UACC,aAAU;AAAA,UACV,cAAY,CAAC,CAAC;AAAA,UACd,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC3E,SACE,gBAAAA;AAAA,IAAC,kBAAkB;AAAA,IAAlB;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,GAAG;AACL,GAAiC;AAC/B,SACE,gBAAAC;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAD;AAAA,UAAC,kBAAkB;AAAA,UAAlB;AAAA,YACC,QACE,gBAAAA,MAAC,UAAK,WAAU,gFAA+E;AAAA,YAGjG,0BAAAA,MAAC,SAAM,WAAU,uBAAsB;AAAA;AAAA,QACzC;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC7E,SACE,gBAAAA;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAuC;AACrC,SACE,gBAAAA;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB,EAAE,GAAG,MAAM,GAAuC;AAC5E,SACE,gBAAAA,MAAC,kBAAkB,YAAlB,EAA6B,aAAU,uBAAuB,GAAG,OAAO;AAE7E;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC7E,SACE,gBAAAA;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,SACE,gBAAAA;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GACiC;AAC/B,SACE,gBAAAA;AAAA,IAAC,kBAAkB;AAAA,IAAlB;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,aAAa;AAAA,EACb,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,cACC,gBAAAD;AAAA,UAAC,kBAAkB;AAAA,UAAlB;AAAA,YACC,QAAQ,gBAAAA,MAAC,UAAO,SAAQ,SAAQ,MAAK,WAAU;AAAA,YAC/C,WAAU;AAAA,YACV,aAAU;AAAA,YAEV,0BAAAA,MAACG,QAAA,EAAM,WAAU,uBAAsB;AAAA;AAAA,QACzC;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAkC;AAChC,SACE,gBAAAH;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,gCAAgC,SAAS;AAAA,MACtD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAC3B,SAAa,cAA8B,IAAI;AACjD;;;AGhSA,SAAS,WAAW,wBAAwB;AAI5C,SAAS,iBAAiB;;;ACJ1B,SAAS,UAAU,uBAAuB;AAI1C,SAAS,SAAAI,cAAa;AAIb,gBAAAC,OAoDC,QAAAC,cApDD;AADT,SAAS,OAAO,EAAE,GAAG,MAAM,GAA+B;AACxD,SAAO,gBAAAD,MAAC,gBAAgB,MAAhB,EAAqB,aAAU,UAAU,GAAG,OAAO;AAC7D;AAEA,SAAS,cAAc,EAAE,GAAG,MAAM,GAAkC;AAClE,SAAO,gBAAAA,MAAC,gBAAgB,SAAhB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,aAAa,EAAE,GAAG,MAAM,GAAiC;AAChE,SAAO,gBAAAA,MAAC,gBAAgB,QAAhB,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,YAAY,EAAE,GAAG,MAAM,GAAgC;AAC9D,SAAO,gBAAAA,MAAC,gBAAgB,OAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,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,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,GAAG;AACL,GAEG;AACD,SACE,gBAAAC,OAAC,gBACC;AAAA,oBAAAD,MAAC,iBAAc;AAAA,IACf,gBAAAC;AAAA,MAAC,gBAAgB;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,YAAC,gBAAgB;AAAA,YAAhB;AAAA,cACC,aAAU;AAAA,cACV,QACE,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,WAAU;AAAA,kBACV,MAAK;AAAA;AAAA,cACP;AAAA,cAGF;AAAA,gCAAAA,MAACE,QAAA,EAAM;AAAA,gBACP,gBAAAF,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,uBAAuB,SAAS;AAAA,MAC7C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA,GAAG;AACL,GAEG;AACD,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,mBACC,gBAAAD,MAAC,gBAAgB,OAAhB,EAAsB,QAAQ,gBAAAA,MAAC,UAAO,SAAQ,WAAU,GAAI,mBAE7D;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAA;AAAA,IAAC,gBAAgB;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,GAAsC;AACpC,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;;;ADzHI,gBAAAG,OA2BE,QAAAC,cA3BF;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,GAMG;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;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,GAKG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,uBACC,gBAAAD,MAAC,mBAAgB,OAAM,gBAAe,YAAY,OAC/C,wBACH,IACE;AAAA,QACJ,gBAAAA,MAAC,mBAAgB,YAAY,YAC3B,0BAAAA,MAAC,aAAU,GACb;AAAA,QACA,gBAAAA;AAAA,UAAC,iBAAiB;AAAA,UAAjB;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YACT,GAAG;AAAA;AAAA,QACN;AAAA,QACC,aACC,gBAAAA,MAAC,mBAAgB,OAAM,cAAa,YAAY,OAC7C,sBACH,IACE;AAAA;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,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,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;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,MAEH;AAAA;AAAA,EAEH;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;;;AErMA,YAAYE,YAAW;AAuDf,gBAAAC,aAAA;AA5CD,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AACd,GAAyB;AACvB,QAAM,eAAqB,cAAuB,IAAI;AACtD,QAAM,CAAC,WAAW,YAAY,IAAU,gBAAS,CAAC;AAElD,EAAM,iBAAU,MAAM;AACpB,UAAM,UAAU,aAAa;AAE7B,QAAI,CAAC,QAAS;AAEd,UAAM,kBAAkB,MAAM;AAC5B,YAAM,QAAQ,QAAQ,sBAAsB,EAAE;AAE9C,YAAM,QAAQ,KAAK;AAAA,QACjB;AAAA,QACA,KAAK,OAAO,QAAQ,eAAe,YAAY,WAAW;AAAA,MAC5D;AAEA,mBAAa,KAAK;AAAA,IACpB;AAEA,oBAAgB;AAEhB,UAAM,WAAW,IAAI,eAAe,eAAe;AACnD,aAAS,QAAQ,OAAO;AAExB,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,QAAQ,UAAU;AAAA,MAE1B,gBAAM,KAAK,EAAE,QAAQ,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,UACzC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UACV,OAAO;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,UACV;AAAA;AAAA,QALK;AAAA,MAMP,CACD;AAAA;AAAA,EACH;AAEJ;;;ACjEA,SAAS,UAAAC,eAAc;AACvB,YAAYC,YAAW;AAiCjB,SAWE,OAAAC,OAXF,QAAAC,cAAA;AAfN,IAAM,oBAAoB;AAAA,EACxB,SAAS,EAAE,GAAG,EAAE;AAAA,EAChB,SAAS;AAAA,IACP,GAAG,CAAC,IAAI,GAAG,EAAE;AAAA,IACb,YAAY;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,IAAM,iBAAuB;AAAA,EAC3B,CAAC,EAAE,MAAM,MAAM,OAAO,SAAS,UAAU,GAAG,QAAQ;AAClD,WACE,gBAAAA;AAAA,MAACH,QAAO;AAAA,MAAP;AAAA,QACC;AAAA,QACA,YAAY,EAAE,OAAO,KAAK,GAAG,GAAG;AAAA,QAChC,UAAU,EAAE,OAAO,KAAK;AAAA,QACxB;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAE,MAAC,QAAK,WAAU,2BAA0B;AAAA,UAC1C,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cAEC;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,eAAe,cAAc;AAE7B,IAAM,OAAa;AAAA,EACjB,CAAC,EAAE,OAAO,UAAU,GAAG,QAAQ;AAC7B,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEA,0BAAAA,MAAC,SAAI,WAAU,+EACb,0BAAAA;AAAA,UAACF,QAAO;AAAA,UAAP;AAAA,YACC,SAAQ;AAAA,YACR,SAAQ;AAAA,YACR,UAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEC,gBAAM,IAAI,CAAC,SACV,gBAAAE,MAAC,kBAAiC,GAAG,QAAhB,KAAK,KAAiB,CAC5C;AAAA;AAAA,QACH,GACF;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,KAAK,cAAc;;;AC/FnB,SAAS,UAAU,uBAAuB;AAC1C,YAAYE,YAAW;AA8CjB,gBAAAC,OA2EE,QAAAC,cA3EF;AApCN,IAAM,gBAAsB,qBAAyC,IAAI;AAEzE,SAAS,YAAY;AACnB,QAAM,UAAgB,kBAAW,aAAa;AAE9C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AAEA,SAAO;AACT;AAEA,SAAS,OAAO;AAAA,EACd,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,GAAG;AACL,GAEG;AACD,QAAM,gBAAgB,cAAc,QAAQ,WAAW,SAAS;AAChE,QAAM,0BACJ,oBAAoB,mBAAmB,UAAU,mBAAmB;AACtE,QAAM,eAAqB;AAAA,IACzB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,MACjB;AAAA,IACF;AAAA,IACA,CAAC,eAAe,OAAO,yBAAyB,cAAc;AAAA,EAChE;AAEA,SACE,gBAAAD,MAAC,cAAc,UAAd,EAAuB,OAAO,cAC7B,0BAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,cAAc,EAAE,GAAG,MAAM,GAAkC;AAClE,SAAO,gBAAAA,MAAC,gBAAgB,SAAhB,EAAwB,aAAU,kBAAkB,GAAG,OAAO;AACxE;AAEA,SAAS,aAAa,EAAE,GAAG,MAAM,GAAiC;AAChE,SAAO,gBAAAA,MAAC,gBAAgB,QAAhB,EAAuB,aAAU,iBAAiB,GAAG,OAAO;AACtE;AAEA,SAAS,YAAY,EAAE,GAAG,MAAM,GAAgC;AAC9D,SAAO,gBAAAA,MAAC,gBAAgB,OAAhB,EAAsB,aAAU,gBAAgB,GAAG,OAAO;AACpE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,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,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,QAAM,EAAE,eAAe,OAAO,iBAAiB,eAAe,IAAI,UAAU;AAC5E,QAAM,YACJ,mBAAmB,UAAU,mBAAmB,OAAO,MAAM;AAE/D,SACE,gBAAAC,OAAC,gBAAa,aAAU,iBACrB;AAAA,cAAU,QACT,gBAAAD,MAAC,iBAAc,oBAAkB,gBAAgB,KAAK,QAAW;AAAA,IAEnE,gBAAAA;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC,aAAU;AAAA,QACV,cAAY;AAAA,QACZ,WAAU;AAAA,QAEV,0BAAAC;AAAA,UAAC,gBAAgB;AAAA,UAAhB;AAAA,YACC,aAAU;AAAA,YACV,mBAAiB;AAAA,YACjB,oBAAkB,gBAAgB,KAAK;AAAA,YACvC,WAAW;AAAA;AAAA,cAET;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA;AAAA,cAEA;AAAA,cACA;AAAA,YACF;AAAA,YACC,GAAG;AAAA,YAEH;AAAA,iCAAmB,gBAAAD,MAAC,qBAAkB;AAAA,cACvC,gBAAAA;AAAA,gBAAC,gBAAgB;AAAA,gBAAhB;AAAA,kBACC,aAAU;AAAA,kBACV,WAAW;AAAA,oBACT;AAAA,kBACF;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;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,GAAG,iDAAiD,SAAS;AAAA,MACvE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,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,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8CAA8C,SAAS;AAAA,MACpE,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACzNA,SAAS,QAAQ,qBAAqB;AAItC,SAAS,WAAW,wBAAwB;AAGnC,gBAAAE,OAyGL,QAAAC,cAzGK;AADT,SAAS,aAAa,EAAE,GAAG,MAAM,GAA6B;AAC5D,SAAO,gBAAAD,MAAC,cAAc,MAAd,EAAmB,aAAU,iBAAiB,GAAG,OAAO;AAClE;AAEA,SAAS,mBAAmB,EAAE,GAAG,MAAM,GAA+B;AACpE,SAAO,gBAAAA,MAAC,cAAc,QAAd,EAAqB,aAAU,wBAAwB,GAAG,OAAO;AAC3E;AAEA,SAAS,oBAAoB,EAAE,GAAG,MAAM,GAAgC;AACtE,SAAO,gBAAAA,MAAC,cAAc,SAAd,EAAsB,aAAU,yBAAyB,GAAG,OAAO;AAC7E;AAEA,SAAS,oBAAoB;AAAA,EAC3B,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,OAAO;AAAA,EACP,aAAa;AAAA,EACb;AAAA,EACA,GAAG;AACL,GAIK;AACH,SACE,gBAAAA,MAAC,cAAc,QAAd,EACC,0BAAAA;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,0BAAAA;AAAA,QAAC,cAAc;AAAA,QAAd;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,kBAAkB,EAAE,GAAG,MAAM,GAA8B;AAClE,SAAO,gBAAAA,MAAC,cAAc,OAAd,EAAoB,aAAU,uBAAuB,GAAG,OAAO;AACzE;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAC,cAAc;AAAA,IAAd;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;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGG;AACD,SACE,gBAAAA;AAAA,IAAC,cAAc;AAAA,IAAd;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,gBAAgB,EAAE,GAAG,MAAM,GAAoC;AACtE,SAAO,gBAAAA,MAAC,cAAc,aAAd,EAA0B,aAAU,qBAAqB,GAAG,OAAO;AAC7E;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAD,MAAC,oBAAiB,WAAU,WAAU;AAAA;AAAA;AAAA,EACxC;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,OAAO;AAAA,EACP,aAAa;AAAA,EACb;AAAA,EACA,GAAG;AACL,GAAqD;AACnD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,yBAAyB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAU;AAAA,YAEV,0BAAAA,MAAC,cAAc,uBAAd,EACC,0BAAAA,MAAC,aAAU,GACb;AAAA;AAAA,QACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,uBAAuB,EAAE,GAAG,MAAM,GAAmC;AAC5E,SACE,gBAAAA;AAAA,IAAC,cAAc;AAAA,IAAd;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,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAU;AAAA,YAEV,0BAAAA,MAAC,cAAc,oBAAd,EACC,0BAAAA,MAAC,aAAU,GACb;AAAA;AAAA,QACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAAkC;AAChC,SACE,gBAAAA;AAAA,IAAC,cAAc;AAAA,IAAd;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;;;AC7PA,SAAS,OAAAE,YAA8B;AAMnC,gBAAAC,aAAA;AAFJ,SAAS,MAAM,EAAE,WAAW,GAAG,MAAM,GAAgC;AACnE,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,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,qBAAqBC;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAA0E;AACxE,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,mBAAmB,EAAE,SAAS,UAAU,CAAC,CAAC;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,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAA8B;AAC5E,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;;;ACzFO,IAAM,wBAAkC;AAAA,EAC7C,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,EACT;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,IACzB;AAAA,EACF;AACF;AAEO,IAAM,QAAkB;AAAA,EAC7B,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE;AAAA,EAC/B,SAAS;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,IACP,YAAY;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,yBAAmC;AAAA,EAC9C,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AACO,IAAM,mBAA6B;AAAA,EACxC,QAAQ,EAAE,GAAG,KAAK,SAAS,EAAE;AAAA,EAC7B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEO,IAAM,MAAgB;AAAA,EAC3B,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEO,IAAM,SAAmB;AAAA,EAC9B,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,GAAG;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEO,IAAM,kBAA4B;AAAA,EACvC,QAAQ,EAAE,GAAG,MAAM,SAAS,EAAE;AAAA,EAC9B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEO,IAAM,kBAA4B;AAAA,EACvC,QAAQ,EAAE,GAAG,MAAM,SAAS,EAAE;AAAA,EAC9B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEO,IAAM,mBAA6B;AAAA,EACxC,QAAQ,EAAE,GAAG,MAAM,SAAS,EAAE;AAAA,EAC9B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEO,IAAM,iBAA2B;AAAA,EACtC,QAAQ,EAAE,GAAG,MAAM,SAAS,EAAE;AAAA,EAC9B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEO,IAAM,iBAA2B;AAAA,EACtC,QAAQ,EAAE,SAAS,EAAE;AAAA,EACrB,SAAS,EAAE,SAAS,GAAG,YAAY,EAAE,OAAO,IAAI,EAAE;AACpD;AAEO,IAAM,uBAAiC;AAAA,EAC5C,QAAQ,EAAE,SAAS,EAAE;AAAA,EACrB,SAAS;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,MACV,eAAe;AAAA,MACf,iBAAiB;AAAA,IACnB;AAAA,EACF;AACF;AAEO,IAAM,wBAAkC;AAAA,EAC7C,QAAQ,EAAE,GAAG,KAAK,SAAS,EAAE;AAAA,EAC7B,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,EACX;AACF;AAEO,IAAM,gBAA0B;AAAA,EACrC,QAAQ,EAAE,SAAS,EAAE;AAAA,EACrB,SAAS;AAAA,IACP,SAAS;AAAA,IACT,YAAY,EAAE,eAAe,GAAG,iBAAiB,IAAI;AAAA,EACvD;AACF;AAEO,IAAM,aAAuB;AAAA,EAClC,QAAQ;AAAA,IACN,YAAY;AAAA,EACd;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,0BAAoC;AAAA,EAC/C,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEO,IAAM,oBAA8B;AAAA,EACzC,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,GAAG;AAAA,IACH,SAAS;AAAA,IACT,YAAY;AAAA,MACV,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,kBAA4B;AAAA,EACvC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,GAAG;AAAA;AAAA,IACH,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEO,IAAM,2BAAqC;AAAA,EAChD,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW;AAAA,MACX,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,IACzB;AAAA,EACF;AACF;AAEO,IAAM,wCAAkD;AAAA,EAC7D,QAAQ;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,YAAY;AAAA,MACV,UAAU;AAAA,MACV,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAAA,IACzB;AAAA,EACF;AACF;AAEO,IAAM,kCAAkC;AAAA,EAC7C,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR;;;AClTA,SAAS,OAAAE,YAA8B;AACvC,SAAS,WAAAC,gBAAe;;;ACKpB,gBAAAC,aAAA;AAFJ,SAAS,MAAM,EAAE,WAAW,GAAG,MAAM,GAAkC;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;;;ADNI,gBAAAC,OA8IA,QAAAC,cA9IA;AAFJ,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAqC;AAC3E,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,YAAY;AAAA,EACnB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAsE;AACpE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,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,IAAM,gBAAgBE;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,UAAU;AAAA,QACV,YACE;AAAA,QACF,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAqE;AACnE,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB,WAAW,GAAG,cAAc,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,MACtD,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,WAAW;AAAA,EAClB;AAAA,EACA,GAAG;AACL,GAAuC;AACrC,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,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,EAAE,WAAW,GAAG,MAAM,GAA8B;AAC5E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,CAAC,CAAC;AAAA,MAChB,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,aAAU,WAAU,4BAA2B;AAAA,QAC/C,YACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,UAAUG,SAAQ,MAAM;AAC5B,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,QAAQ;AACnB,aAAO;AAAA,IACT;AAEA,UAAM,eAAe;AAAA,MACnB,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO;AAAA,IACpE;AAEA,QAAI,cAAc,UAAU,GAAG;AAC7B,aAAO,aAAa,CAAC,GAAG;AAAA,IAC1B;AAEA,WACE,gBAAAH,MAAC,QAAG,WAAU,sCACX,uBAAa;AAAA,MACZ,CAAC,OAAO,UACN,OAAO,WAAW,gBAAAA,MAAC,QAAgB,gBAAM,WAAd,KAAsB;AAAA,IACrD,GACF;AAAA,EAEJ,GAAG,CAAC,UAAU,MAAM,CAAC;AAErB,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC9D,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AE9NA,OAAO,eAAsD;AAC7D,SAAyB,eAAAI,cAAa,YAAAC,iBAAgB;AAqCzC,gBAAAC,OAyBT,QAAAC,cAzBS;AArBb,SAAS,SAAS,KAA+C;AAC/D,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,MAAI,SAAS,IAAK,QAAO,IAAI;AAE7B,SAAO,IAAI,QAAQ;AACrB;AAEO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,gBAAAD,MAAC,aAAU,MAAK,WAAU,WAAU,iBAAgB;AAAA,EAC/D,GAAG;AACL,GAAe;AACb,QAAM,aAAa,SAAS,GAAG;AAC/B,QAAM,CAAC,WAAW,YAAY,IAAIE,UAAwB,IAAI;AAC9D,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAwB,IAAI;AAE9D,QAAM,YAAY,QAAQ,UAAU;AACpC,QAAM,SAAS,aAAa,cAAc;AAC1C,QAAM,SAAS,aAAa,cAAc,cAAc,CAAC;AACzD,QAAM,gBAAgB,WAAW,YAAY;AAC7C,QAAM,eAAe,gBAAgB,UAAU;AAE/C,QAAM,aAAaC,aAAY,MAAM;AACnC,QAAI,CAAC,WAAY;AACjB,iBAAa,IAAI;AACjB,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,aAAaA,aAAY,MAAM;AACnC,QAAI,CAAC,WAAY;AACjB,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,gBAAAF,OAAC,aAAQ,WAAW,GAAG,kCAAkC,OAAO,GAC7D;AAAA,oBAAgB,CAAC,UAAU,CAAC,UAAU,aACrC,gBAAAD,MAAC,YAAS,WAAU,8BAA6B;AAAA,IAGlD,aAAa,CAAC,SACb,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,KAAK,OAAO;AAAA,QACZ;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT,SAAS;AAAA,QACT,eACE,kBAAkB,iBAAiB,UAAU,SAAS;AAAA,QAExD,WAAW;AAAA,UACT;AAAA,UACA,SAAS,gBAAgB;AAAA,UACzB;AAAA,QACF;AAAA,QACA,QAAQ,CAAC,UAAU;AACjB,qBAAW;AACX,mBAAS,KAAK;AAAA,QAChB;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,qBAAW;AACX,oBAAU,KAAK;AAAA,QACjB;AAAA;AAAA,IACF,IAEA;AAAA,IAGD;AAAA,KACH;AAEJ;;;ACpGA,YAAYI,YAAW;AACvB,SAAS,UAAU,uBAAuB;AAG1C,SAAS,iBAAiB;AAUtB,gBAAAC,OAqCA,QAAAC,cArCA;AARJ,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,oBAAoB;AAAA,QAClB;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAY;AAAA,MACZ,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;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,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,QAAM,kBAAwB,kBAAW,eAAe;AACxD,QAAM,EAAE,MAAM,cAAc,SAAS,IAAI,iBAAiB,MAAM,KAAK,KAAK,CAAC;AAE3E,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;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;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACV,MAAK;AAAA,MACJ,GAAG;AAAA,MAEJ,0BAAAA,MAAC,aAAU;AAAA;AAAA,EACb;AAEJ;;;ACnFA,SAAS,cAAAE,mBAAkB;AAC3B,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,OAAAC,YAA8B;AAQnC,gBAAAC,aAAA;AAFJ,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAY;AAAA,MACZ,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC9B,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,eAAeC;AAAA,EACnB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;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,KAAK;AAAA,EACZ;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAAwE;AACtE,SAAOC,WAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAOC;AAAA,MACL;AAAA,QACE,WAAW,GAAG,aAAa,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MAC1D;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAM,oBAAoBF;AAAA,EACxB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAyE;AACvE,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,kBAAkB,EAAE,SAAS,UAAU,CAAC,CAAC;AAAA,MACtD,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;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;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAA8B;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,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,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,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;;;AC3LA,SAAS,aAAAI,YAAW,YAAAC,iBAAgB;AAE7B,SAAS,aAAa;AAC3B,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,EAAAD,WAAU,MAAM;AACd,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,QAAQ;AACnB;;;ACPA;AAAA,EACE;AAAA,OAGK;AACP,OAAO;AAGP;AAAA,EACE;AAAA,EACA,mBAAAE;AAAA,OAGK;AAKD,gBAAAC,aAAA;AAHC,SAAS,UAAU,EAAE,GAAG,MAAM,GAAyB;AAC5D,SACE,gBAAAA,MAAC,UAAK,WAAU,gBACd,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,GAAG,iBAAiB,MAAM,SAAS;AAAA;AAAA,EAChD,GACF;AAEJ;AAEA,IAAM,YAA6D;AAAA,EACjE,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACtB,OAAO,EAAE,GAAG,IAAI,GAAG,GAAG;AAAA,EACtB,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG;AAAA,EACnB,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE;AAAA,EACrB,KAAK,EAAE,GAAG,IAAI,GAAG,GAAG;AAAA,EACpB,SAAS,EAAE,GAAG,IAAI,GAAG,EAAE;AAAA,EACvB,UAAU,EAAE,GAAG,KAAK,GAAG,GAAG;AAAA,EAC1B,SAAS,EAAE,GAAG,IAAI,GAAG,GAAG;AAAA,EACxB,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI;AAAA,EAC1B,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG;AAAA,EACtB,KAAK,EAAE,GAAG,KAAK,GAAG,EAAE;AAAA,EACpB,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG;AAAA,EACpB,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG;AACvB;AAEO,SAAS,UAAU;AAAA,EACxB,OAAO;AAAA,EACP;AACF,GAGG;AACD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,oBACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAM,UAAU,IAAI;AAAA,UACpB,WAAU;AAAA;AAAA,MACZ,IACE;AAAA;AAAA,EACN;AAEJ;;;AClEI,gBAAAC,aAAA;AAFJ,SAAS,IAAI,EAAE,WAAW,GAAG,MAAM,GAAgC;AACjE,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,GAAgC;AACtE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,kCAAkC,SAAS;AAAA,MACxD,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACjBI,gBAAAC,aAAA;AAFJ,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,QAAQ;AAAA,EACf;AAAA,EACA,QAAQ;AAAA,EACR,GAAG;AACL,GAA8D;AAC5D,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;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,GAAgC;AAC5E,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,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;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,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;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;;;AChFA;AAAA,EACE,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP,SAAS,qBAAqB;AAKrB,SA2FD,YAAAC,WA3FC,OAAAC,OA2FD,QAAAC,cA3FC;AAHT,SAAS,wBACP,OACA;AACA,SAAO,gBAAAD,MAAC,yBAAyB,UAAzB,EAAmC,GAAG,OAAO;AACvD;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAA;AAAA,IAAC,yBAAyB;AAAA,IAAzB;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,IAAC,yBAAyB;AAAA,IAAzB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;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,yBAAyB;AAAA,IAAzB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC9D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,GAA+D;AAC7D,SACE,gBAAAA;AAAA,IAAC,yBAAyB;AAAA,IAAzB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GACiE;AAC/D,SACE,gBAAAA;AAAA,IAAC,yBAAyB;AAAA,IAAzB;AAAA,MACC,aAAU;AAAA,MACV,kBAAgB;AAAA,MAChB,gBAAc;AAAA,MACd,aAAW;AAAA,MACX;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,QAAQ,UAAU,gBAAAA,MAAC,UAAO,SAAkB,MAAY;AAAA,MACvD,GAAG;AAAA,MAEH,sBACC,gBAAAC,OAAAF,WAAA,EACE;AAAA,wBAAAC,MAAC,iBAAc;AAAA,QACf,gBAAAA,MAAC,UAAK,WAAU,WACb,wBAAc,QAAQ,kBAAkB,mBAC3C;AAAA,SACF;AAAA;AAAA,EAEJ;AAEJ;;;ACnHA,SAAS,QAAAE,aAA6B;AACtC;AAAA,EACE,mBAAAC;AAAA,EACA;AAAA,EACA,UAAAC;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAAC,WAAU,aAAAC,YAAW,SAAAC,QAAO,UAAAC,SAAQ,YAAAC,iBAAgB;AAC7D,SAAS,WAAAC,gBAAe;AAmPhB,gBAAAC,OAsDQ,QAAAC,cAtDR;AAjPD,IAAM,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;AACjC,IAAM,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC;AACtC,IAAM,cAAc,CAAC,MAAM,MAAM,GAAG,CAAC;AAErC,IAAM,eAAe;AAErB,IAAM,eAAe;AAAA,EAC1B,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR;AAEO,IAAM,eAAe;AAAA,EAC1B,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR;AAEO,IAAM,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR;AAEO,IAAM,eAAe;AAAA,EAC1B,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR;AAEO,SAASC,OAAM,QAAsB;AAC1C,SAAOH,SAAQR,MAAK,MAAM,CAAC;AAC7B;AAuBO,SAASY,UAAS;AAAA,EACvB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA,cAAc,YAAY;AAAA,EAC1B;AACF,GAAkB;AAChB,QAAM,MAAMP,OAAM;AAClB,QAAM,SAAS,iBAAiB;AAChC,QAAM,WAAWC,QAAyB,IAAI;AAC9C,QAAM,WAAWA,QAAuB,IAAI;AAE5C,QAAM,aAAa,oBAAoB;AAEvC,QAAM,CAAC,OAAO,QAAQ,IAAIC;AAAA,IAAmB,MAC3C,QAAQ,aAAa,kBAAkB,cAAc,MAAM;AAAA,EAC7D;AAEA,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,SAAS,IAAIA,UAAS,CAAC;AAEtC,QAAM,SAAS,MAAM,KAAK,EAAE;AAC5B,QAAM,YAAYD,QAAO,MAAM;AAC/B,YAAU,UAAU;AAEpB,EAAAF,WAAU,MAAM;AACd,QAAI,CAAC,WAAY;AAEjB,UAAM,WAAW,SAAS,iBAAiB,MAAM;AAEjD,QAAI,aAAa,UAAU,SAAS;AAClC,eAAS,QAAQ,UAAU,MAAM,CAAC;AAAA,IACpC;AAAA,EACF,GAAG,CAAC,YAAY,iBAAiB,MAAM,CAAC;AAExC,QAAM,SAAS,CAAC,SAAmB;AACjC,UAAM,cAAc,MAAM,MAAM,CAAC,MAAM,MAAM,EAAE;AAC/C,aAAS,IAAI;AAEb,UAAM,MAAM,KAAK,KAAK,EAAE;AAExB,eAAW,GAAG;AAEd,QAAI,CAAC,eAAe,KAAK,MAAM,CAAC,MAAM,MAAM,EAAE,GAAG;AAC/C,mBAAa,GAAG;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,QAAgB;AACjC,UAAM,OAAO,CAAC,GAAG,KAAK;AAEtB,SAAK,GAAG,IAAI;AAEZ,WAAO,IAAI;AAAA,EACb;AAEA,QAAM,kBAAkB,CAAC,YAAoB;AAC3C,UAAM,MACJ,SAAS,SAAS,iBAA8B,iBAAiB;AAEnE,QAAI,CAAC,IAAK,QAAO;AAEjB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAI,UAAU,IAAI,CAAC,EAAE,sBAAsB,EAAE,MAAO,QAAO;AAAA,IAC7D;AAEA,WAAO,SAAS;AAAA,EAClB;AAEA,QAAM,SAAS,CAAC,KAAa,OAAO,WAAW;AAC7C,UAAM,SAAS,IAAI,QAAQ,OAAO,EAAE;AAEpC,QAAI,CAAC,OAAQ;AAEb,UAAM,OAAO,CAAC,GAAG,KAAK;AACtB,QAAI,IAAI;AAER,eAAW,MAAM,QAAQ;AACvB,UAAI,KAAK,OAAQ;AACjB,WAAK,CAAC,IAAI;AACV;AAAA,IACF;AAEA,WAAO,IAAI;AACX,cAAU,KAAK,IAAI,GAAG,SAAS,CAAC,CAAC;AAAA,EACnC;AAEA,QAAM,YAAY,CAAC,MAA6C;AAC9D,QAAI,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,OAAQ;AAEpD,UAAM,IAAI,EAAE;AAEZ,QAAI,UAAU,KAAK,CAAC,GAAG;AACrB,QAAE,eAAe;AACjB,aAAO,CAAC;AAAA,IACV,WAAW,MAAM,aAAa;AAC5B,QAAE,eAAe;AAEjB,UAAI,MAAM,MAAM,GAAG;AACjB,kBAAU,MAAM;AAAA,MAClB,WAAW,SAAS,GAAG;AACrB,kBAAU,SAAS,CAAC;AACpB,kBAAU,SAAS,CAAC;AAAA,MACtB;AAAA,IACF,WAAW,MAAM,UAAU;AACzB,QAAE,eAAe;AACjB,gBAAU,MAAM;AAAA,IAClB,WAAW,MAAM,aAAa;AAC5B,QAAE,eAAe;AACjB,gBAAU,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;AAAA,IACrC,WAAW,MAAM,cAAc;AAC7B,QAAE,eAAe;AACjB,gBAAU,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC;AAAA,IAC9C,WAAW,MAAM,QAAQ;AACvB,QAAE,eAAe;AACjB,gBAAU,CAAC;AAAA,IACb,WAAW,MAAM,OAAO;AACtB,QAAE,eAAe;AACjB,gBAAU,SAAS,CAAC;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,UAAU,CAAC,MAA8C;AAC7D,QAAI,SAAU;AAEd,MAAE,eAAe;AACjB,WAAO,EAAE,cAAc,QAAQ,MAAM,GAAG,MAAM;AAAA,EAChD;AAEA,QAAM,iBAAiB,CAAC,MAA2C;AACjE,UAAM,SAAS,SAAS,EAAE,OAAO,OAAO,MAAM;AAE9C,QAAI,CAAC,OAAQ;AAEb,WAAO,QAAQ,QAAQ,MAAM,CAAC;AAC9B,cAAU,KAAK,IAAI,OAAO,QAAQ,SAAS,CAAC,CAAC;AAAA,EAC/C;AAEA,EAAAA,WAAU,MAAM;AACd,QAAI,WAAW,WAAW,UAAU,CAAC,SAAS,QAAS;AAEvD;AAAA,MACE,SAAS;AAAA,MACT;AAAA,QACE,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAAA,MAC5B;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,QAAM,cAAc,WAAW;AAC/B,QAAM,cAAc,UAAU,SAAS;AAEvC,QAAM,UAAU,cACZ,iBACA,WAAW,UACT,eACA;AAEN,SACE,gBAAAM,OAAC,SAAI,WAAWC,IAAG,8BAA8B,SAAS,GACvD;AAAA,YACC,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,GAAG,GAAG;AAAA,QACf,WAAU;AAAA,QAET;AAAA;AAAA,IACH,IACE;AAAA,IAEJ,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,aAAa,CAAC,MAAM;AAClB,cAAI,SAAU;AAEd,YAAE,eAAe;AAEjB,gBAAM,aAAa,MAAM,QAAQ,EAAE;AACnC,gBAAM,MAAM,eAAe,KAAK,SAAS,IAAI;AAE7C,oBAAU,KAAK,IAAI,gBAAgB,EAAE,OAAO,GAAG,GAAG,CAAC;AACnD,mBAAS,SAAS,MAAM;AAAA,QAC1B;AAAA,QAEA;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,IAAI,GAAG,GAAG;AAAA,cACV,WAAU;AAAA,cACV,cAAa;AAAA,cACb;AAAA,cACA;AAAA,cACA,cAAY;AAAA,cACZ,gBAAc,WAAW;AAAA,cACzB,OAAM;AAAA,cACN,WAAW;AAAA,cACX;AAAA,cACA,UAAU;AAAA,cACV;AAAA,cACA,SAAS,MAAM;AACb,2BAAW,IAAI;AACf,gCAAgB,IAAI;AAAA,cACtB;AAAA,cACA,QAAQ,MAAM;AACZ,2BAAW,KAAK;AAChB,gCAAgB,KAAK;AAAA,cACvB;AAAA,cACA,WAAU;AAAA;AAAA,UACZ;AAAA,UAEA,gBAAAA,MAAC,SAAI,KAAK,UAAU,WAAU,2BAC3B,gBAAM,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM;AAChC,kBAAM,OAAO,MAAM,CAAC,KAAK;AACzB,kBAAM,WAAW,MAAM;AAEvB,mBACE,gBAAAC,OAACP,WAAA,EACC;AAAA,8BAAAO;AAAA,gBAAC;AAAA;AAAA,kBACC,iBAAa;AAAA,kBACb,eAAa;AAAA,kBACb,eAAa,SAAS;AAAA,kBACtB,WAAWC;AAAA,oBACT;AAAA,oBACA,cACI,0CACA,WAAW,UACT,0CACA,OACE,yCACA;AAAA,oBACR,YACE,CAAC,eACD,WAAW,WACX;AAAA,oBACF,YAAY;AAAA,kBACd;AAAA,kBAEC;AAAA,gCAAY,CAAC,cACZ,gBAAAF;AAAA,sBAACP,QAAO;AAAA,sBAAP;AAAA,wBACC,eAAW;AAAA,wBACX,SAAS,SAAS,SAAY,EAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;AAAA,wBACtD,YACE,SACI,SACA;AAAA,0BACE,UAAU;AAAA,0BACV,QAAQ,OAAO;AAAA,0BACf,MAAM;AAAA,wBACR;AAAA,wBAEN,WAAWS;AAAA,0BACT;AAAA,0BACA,OAAO,YAAY;AAAA,wBACrB;AAAA;AAAA,oBACF,IACE;AAAA,oBAEJ,gBAAAF,MAACR,kBAAA,EAAgB,SAAS,OACvB,iBACC,gBAAAQ;AAAA,sBAACP,QAAO;AAAA,sBAAP;AAAA,wBAEC,SACE,SACI;AAAA,0BACE,SAAS;AAAA,wBACX,IACA;AAAA,0BACE,GAAG;AAAA,0BACH,SAAS;AAAA,0BACT,QAAQ;AAAA,wBACV;AAAA,wBAEN,SACE,SACI;AAAA,0BACE,SAAS;AAAA,wBACX,IACA;AAAA,0BACE,GAAG;AAAA,0BACH,SAAS;AAAA,0BACT,QAAQ;AAAA,wBACV;AAAA,wBAEN,MACE,SACI;AAAA,0BACE,SAAS;AAAA,wBACX,IACA;AAAA,0BACE,GAAG;AAAA,0BACH,SAAS;AAAA,0BACT,QAAQ;AAAA,wBACV;AAAA,wBAEN,YACE,SACI;AAAA,0BACE,UAAU;AAAA,wBACZ,IACA;AAAA,0BACE,UAAU;AAAA,0BACV,MAAM;AAAA,wBACR;AAAA,wBAEN,WAAU;AAAA,wBAET,iBAAO,MAAM;AAAA;AAAA,sBA9CT;AAAA,oBA+CP,IACE,MACN;AAAA;AAAA;AAAA,cACF;AAAA,cAEC,MAAM,IACL,gBAAAO,MAAC,UAAK,eAAY,QAAO,WAAU,wBAAuB,IACxD;AAAA,iBAlGS,GAAG,GAAG,IAAI,CAAC,EAmG1B;AAAA,UAEJ,CAAC,GACH;AAAA,UAEA,gBAAAA,MAACR,kBAAA,EACE,wBACC,gBAAAQ;AAAA,YAACP,QAAO;AAAA,YAAP;AAAA,cACC,SACE,SACI;AAAA,gBACE,SAAS;AAAA,cACX,IACA;AAAA,gBACE,OAAO;AAAA,gBACP,SAAS;AAAA,cACX;AAAA,cAEN,SACE,SACI;AAAA,gBACE,SAAS;AAAA,cACX,IACA;AAAA,gBACE,OAAO;AAAA,gBACP,SAAS;AAAA,cACX;AAAA,cAEN,MACE,SACI;AAAA,gBACE,SAAS;AAAA,cACX,IACA;AAAA,gBACE,OAAO;AAAA,gBACP,SAAS;AAAA,cACX;AAAA,cAEN,YACE,SACI;AAAA,gBACE,UAAU;AAAA,cACZ,IACA;AAAA,gBACE,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,SAAS;AAAA,cACX;AAAA,cAEN,WAAU;AAAA,cACV,eAAW;AAAA,cAEX,0BAAAQ;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAM;AAAA,kBACN,QAAO;AAAA,kBACP,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,QAAO;AAAA,kBACP,aAAa;AAAA,kBACb,eAAc;AAAA,kBACd,gBAAe;AAAA,kBAEf;AAAA,oCAAAD,MAAC,WAAM,sBAAQ;AAAA,oBACf,gBAAAA;AAAA,sBAACP,QAAO;AAAA,sBAAP;AAAA,wBACC,GAAE;AAAA,wBACF,SACE,SACI;AAAA,0BACE,YAAY;AAAA,wBACd,IACA;AAAA,0BACE,YAAY;AAAA,wBACd;AAAA,wBAEN,SAAS;AAAA,0BACP,YAAY;AAAA,wBACd;AAAA,wBACA,YACE,SACI;AAAA,0BACE,UAAU;AAAA,wBACZ,IACA;AAAA,0BACE,UAAU;AAAA,0BACV,MAAM;AAAA,0BACN,OAAO;AAAA,wBACT;AAAA;AAAA,oBAER;AAAA;AAAA;AAAA,cACF;AAAA;AAAA,UACF,IACE,MACN;AAAA;AAAA;AAAA,IACF;AAAA,IAEC,UACC,gBAAAO;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,WAAWE;AAAA,UACT;AAAA,UACA,cACI,qBACA,WAAW,UACT,qBACA;AAAA,QACR;AAAA,QAEC;AAAA;AAAA,IACH,IACE;AAAA,KACN;AAEJ;AAEA,SAAS,SAAS,KAAyB,QAAgB;AACzD,UAAQ,OAAO,IAAI,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,MAAM;AACvD;AAEA,SAAS,QAAQ,KAAyB,QAAgB;AACxD,QAAM,SAAS,SAAS,KAAK,MAAM;AAEnC,SAAO,MAAM,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE;AACzD;;;AC7gBA,SAAS,WAAW,wBAAwB;AAMnC,gBAAAE,aAAA;AADT,SAAS,QAAQ,EAAE,GAAG,MAAM,GAAgC;AAC1D,SAAO,gBAAAA,MAAC,iBAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO;AAC/D;AAEA,SAAS,eAAe,EAAE,GAAG,MAAM,GAAmC;AACpE,SAAO,gBAAAA,MAAC,iBAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,OAAO;AAAA,EACP,aAAa;AAAA,EACb,GAAG;AACL,GAIK;AACH,SACE,gBAAAA,MAAC,iBAAiB,QAAjB,EACC,0BAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV,0BAAAA;AAAA,QAAC,iBAAiB;AAAA,QAAjB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC3E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC3E,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,SAAS;AAAA,MACrC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAuC;AACrC,SACE,gBAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yBAAyB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC/EA,SAAS,mBAAmB;AAC5B,SAAS,OAAO,YAAY;AAC5B,YAAYC,YAAW;AASjB,SAQI,OAAAC,OARJ,QAAAC,cAAA;AANC,SAAS,cAAc;AAAA,EAC5B,GAAG;AACL,GAAkD;AAChD,QAAM,KAAW,aAAM;AACvB,SACE,gBAAAD,MAAC,YAAY,MAAZ,EAAiB,IAAS,GAAG,OAAO,WAAU,6BAC7C,0BAAAC,OAAC,YAAY,OAAZ,EAAkB,WAAU,kBAC3B;AAAA,oBAAAD;AAAA,MAAC,YAAY;AAAA,MAAZ;AAAA,QACC,WAAW,eAAe;AAAA,UACxB,SAAS;AAAA,UACT,MAAM;AAAA,UACN,WAAW;AAAA,QACb,CAAC;AAAA,QAED,0BAAAA,MAAC,SAAM;AAAA;AAAA,IACT;AAAA,IACA,gBAAAA;AAAA,MAAC,YAAY;AAAA,MAAZ;AAAA,QACC,WAAU;AAAA,QACV,gBAAY;AAAA;AAAA,IACd;AAAA,IACA,gBAAAA;AAAA,MAAC,YAAY;AAAA,MAAZ;AAAA,QACC,WAAW,eAAe;AAAA,UACxB,SAAS;AAAA,UACT,MAAM;AAAA,UACN,WAAW;AAAA,QACb,CAAC;AAAA,QAED,0BAAAA,MAAC,QAAK;AAAA;AAAA,IACR;AAAA,KACF,GACF;AAEJ;;;ACpCA,SAAS,SAAS,sBAAsB;AACxC,SAAS,cAAc,2BAA2B;AAM9C,gBAAAE,aAAA;AAFJ,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAA8B;AACtE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,qBAAqB,SAAS;AAAA,MAC3C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA8B;AAC1E,SACE,gBAAAA;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC,eAAe;AAAA,QAAf;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,0BAAAA,MAAC,UAAK,WAAU,yGAAwG;AAAA;AAAA,MAC1H;AAAA;AAAA,EACF;AAEJ;;;AChCA,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,OAAAC,YAAW;AAEpB;AAAA,EACE,iBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;ACbP,SAAS,WAAW,wBAAwB;AASxC,gBAAAC,OAsCI,QAAAC,cAtCJ;AALJ,SAAS,gBAAgB;AAAA,EACvB,QAAQ;AAAA,EACR,GAAG;AACL,GAAoC;AAClC,SACE,gBAAAD;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAASE,SAAQ,EAAE,GAAG,MAAM,GAAgC;AAC1D,SAAO,gBAAAF,MAAC,iBAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO;AAC/D;AAEA,SAAS,eAAe,EAAE,GAAG,MAAM,GAAmC;AACpE,SAAO,gBAAAA,MAAC,iBAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAIK;AACH,SACE,gBAAAA,MAAC,iBAAiB,QAAjB,EACC,0BAAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV,0BAAAC;AAAA,QAAC,iBAAiB;AAAA,QAAjB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA,UAEH;AAAA;AAAA,YACD,gBAAAD,MAAC,iBAAiB,OAAjB,EAAuB,WAAU,4hBAA2hB;AAAA;AAAA;AAAA,MAC/jB;AAAA;AAAA,EACF,GACF;AAEJ;;;ADpBA,SAAS,iBAAiB,aAAAG,YAAW,UAAU,aAAa;AA0TlD,SAqnBF,YAAAC,WArnBE,OAAAC,OAqBA,QAAAC,cArBA;AA1OH,IAAM,eAAiC;AAAA;AAAA,EAE5C,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,mBAAmB;AAAA,EACnB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,qBAAqB;AAAA;AAAA,EAGrB,WAAW;AAAA,IACT,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,eAAe;AAAA,IACf,eAAe;AAAA,IACf,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA;AAAA,EAGA,cAAc;AAAA,IACZ,YAAY,CAAC,cAAsB,SAAS,SAAS;AAAA,IACrD,aAAa;AAAA,IACb,aAAa,CAAC,cAAsB,UAAU,UAAU,YAAY,CAAC;AAAA,IACrE,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA;AAAA,EAGA,SAAS;AAAA,IACP,gBAAgB,CAAC,aAAqB,SAAS,QAAQ,MAAM,GAAG;AAAA,EAClE;AAAA;AAAA,EAGA,YAAY;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AACF;AAcA,IAAM,gBAAgBC,eAAkC;AAAA,EACtD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,eAAe;AACjB,CAAC;AAED,IAAM,mBAAmB,MAAMC,YAAW,aAAa;AAGvD,IAAM,2BAA2BC,KAAI,+BAA+B;AAAA,EAClE,UAAU;AAAA,IACR,SAAS;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF,CAAC;AAED,SAAS,YAAyB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGG;AACD,QAAM,UAAU,iBAAiB;AACjC,QAAM,CAAC,SAAS,UAAU,IAAIC,UAAS,IAAI;AAC3C,QAAM,CAAC,mBAAmB,oBAAoB,IAAIA,UAAS,EAAE;AAC7D,QAAM,WAAWC,QAAyB,IAAI;AAE9C,EAAAC,WAAU,MAAM;AACd,QAAI,MAAM,WAAW;AACnB,YAAM,QAAQ,WAAW,MAAM;AAC7B,iBAAS,SAAS,MAAM;AAAA,MAC1B,GAAG,GAAG;AACN,aAAO,MAAM,aAAa,KAAK;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,MAAM,SAAS,CAAC;AAGpB,QAAM,gBAAgB,CAAC,OAAe,YAA8B;AAClE,QAAI,CAAC,WAAW,CAAC,MAAO,QAAO;AAC/B,UAAM,QAAQ,IAAI,OAAO,OAAO;AAChC,WAAO,MAAM,KAAK,KAAK;AAAA,EACzB;AAGA,QAAM,uBAAuB,MAAc;AACzC,WAAO,QAAQ,KAAK,WAAW;AAAA,EACjC;AAGA,QAAM,aAAa,CAAC,MAA0C;AAC5D,UAAM,QAAQ,EAAE,OAAO;AACvB,UAAM,UAAU,OAAO,WAAW,MAAM;AAGxC,QAAI,UAAU,WAAW,OAAO,aAAa;AAC3C,UAAI,QAAQ;AACZ,UAAI,gBAAgB;AAGpB,UAAI,OAAO,YAAY;AACrB,cAAM,SAAS,MAAM,WAAW,KAAK;AAErC,YAAI,OAAO,WAAW,WAAW;AAC/B,kBAAQ;AAAA,QACV,OAAO;AACL,kBAAQ,OAAO;AACf,0BAAgB,OAAO,WAAW;AAAA,QACpC;AAAA,MACF,WAAW,SAAS;AAElB,gBAAQ,cAAc,OAAO,OAAO;AAAA,MACtC;AAEA,iBAAW,KAAK;AAChB,2BAAqB,QAAQ,KAAK,iBAAiB,qBAAqB,CAAC;AAAA,IAC3E,OAAO;AAEL,iBAAW,IAAI;AACf,2BAAqB,EAAE;AAAA,IACzB;AAGA,aAAS,CAAC;AAAA,EACZ;AAGA,QAAM,gBAAgB,CAAC,MAA6C;AAElE,QACE,CAAC,WACD,CAAC;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,SAAS,EAAE,GAAG,GAChB;AACA,iBAAW,IAAI;AACf,2BAAqB,EAAE;AAAA,IACzB;AAGA,gBAAY,CAAC;AAAA,EACf;AAEA,SACE,gBAAAN;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA,QAAQ,QAAQ,QAAQ;AAAA,QACxB,QAAQ,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,QAIxB;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,eAAO,UACN,gBAAAD,MAAC,mBACC,0BAAAA,MAAC,kBAAgB,gBAAM,QAAO,GAChC;AAAA,QAEF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,gBAAc,CAAC;AAAA,YACf,oBACE,CAAC,WAAW,oBACR,GAAG,OAAO,OAAO,OAAO,WACxB;AAAA,YAEN,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,WAAW;AAAA,cACT,QAAQ,QAAQ,QAAQ;AAAA,cACxB,QAAQ,QAAQ,QAAQ;AAAA,YAC1B;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,QACC,CAAC,WAAW,qBACX,gBAAAA,MAAC,mBAAgB,OAAM,cACrB,0BAAAC,OAACO,UAAA,EACC;AAAA,0BAAAR,MAAC,kBAAe,QAAQ,gBAAAA,MAAC,oBAAiB,MAAK,WAAU,GACvD,0BAAAA,MAAC,mBAAgB,WAAU,6BAA4B,GACzD;AAAA,UACA,gBAAAA,MAAC,kBACC,0BAAAA,MAAC,OAAE,WAAU,WAAW,6BAAkB,GAC5C;AAAA,WACF,GACF;AAAA,QAGD,OAAO,UACN,gBAAAA,MAAC,mBAAgB,OAAM,cACrB,0BAAAA,MAAC,kBAAgB,gBAAM,QAAO,GAChC;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAMA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,OAAO,gBAAAA,MAAC,SAAM;AAAA,EACd,GAAG;AACL,GAA4B;AAC1B,QAAM,UAAU,iBAAiB;AAEjC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MACE,QAAQ,SAAS,OACb,YACA,QAAQ,SAAS,OACf,YACA;AAAA,MAER;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AA8GA,IAAM,eAAe,CACnB,SACgC;AAChC,SAAO,YAAY,QAAQ,MAAM,QAAQ,KAAK,MAAM;AACtD;AAGA,IAAM,oBAAoB,CACxB,UACY;AACZ,SAAO,QAAQ,MAAM,SAAS,MAAM,MAAM;AAC5C;AAEA,IAAM,gBAAgB,CACpB,WAC2B;AAC3B,SAAO,OAAO,OAA+B,CAAC,KAAK,SAAS;AAC1D,QAAI,aAAa,IAAI,GAAG;AACtB,aAAO,CAAC,GAAG,KAAK,GAAG,KAAK,MAAM;AAAA,IAChC;AAEA,QAAI,kBAAkB,IAAI,GAAG;AAC3B,aAAO,CAAC,GAAG,KAAK,GAAG,KAAK,MAAO;AAAA,IACjC;AACA,WAAO,CAAC,GAAG,KAAK,IAAI;AAAA,EACtB,GAAG,CAAC,CAAC;AACP;AAEA,IAAM,eAAe,CACnB,WACyC;AACzC,QAAM,aAAa,cAAc,MAAM;AACvC,SAAO,WAAW;AAAA,IAChB,CAAC,KAAK,UAAU;AAEd,UAAI,MAAM,KAAK;AACb,YAAI,MAAM,GAAG,IAAI;AAAA,MACnB;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAMA,IAAM,kBAAkB,CAAe,WACpC,MAAM,SAAS,UAAU,KAAK,KAAK,OAAO,MAAM,gBAAgB;AAkBnE,IAAM,oBAAoB,oBAAI,QAA4C;AAE1E,IAAM,sBAAsB,CAC1B,UAC4B;AAC5B,MAAI,QAAQ,kBAAkB,IAAI,KAAe;AACjD,MAAI,CAAC,OAAO;AACV,YAAQ,oBAAI,IAAI;AAChB,sBAAkB,IAAI,OAAiB,KAAK;AAAA,EAC9C;AACA,SAAO;AACT;AAMA,SAAS,gBACP,OACA,aACA,SACyB;AACzB,QAAM,UAAU,OAAO,MAAM,gBAAgB;AAI7C,MAAI,WAAW,MAAM,SAAS;AAC5B,UAAM,QAAQ,oBAAoB,KAAK;AACvC,eAAW,OAAO,MAAM,SAAS;AAC/B,YAAM,IAAI,IAAI,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,QAAQ,IAAIK,UAIvB,OAAO,EAAE,SAAS,MAAM,WAAW,CAAC,GAAG,SAAS,OAAO,OAAO,MAAM,EAAE;AAGzE,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,UAAS,WAAW;AAChE,EAAAE,WAAU,MAAM;AACd,QAAI,CAAC,QAAS;AACd,UAAM,QAAQ,WAAW,MAAM,kBAAkB,WAAW,GAAG,GAAG;AAClE,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,aAAa,OAAO,CAAC;AAEzB,QAAM,eAAeD,QAAO,CAAC;AAG7B,QAAM,YAAYA,QAAO,MAAM,WAAW;AAC1C,YAAU,UAAU,MAAM;AAC1B,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,WAAW,CAAC,QAAS;AAC1B,UAAM,SAAS,UAAU;AACzB,QAAI,CAAC,OAAQ;AAEb,UAAM,YAAY,EAAE,aAAa;AACjC,QAAI,YAAY;AAChB,aAAS,CAAC,UAAU,EAAE,GAAG,MAAM,SAAS,MAAM,OAAO,MAAM,EAAE;AAE7D,YAAQ,QAAQ,EACb,KAAK,MAAM,OAAO,cAAc,CAAC,EACjC,KAAK,CAAC,WAAW;AAEhB,UAAI,aAAa,cAAc,aAAa,QAAS;AACrD,YAAM,QAAQ,oBAAoB,KAAK;AACvC,iBAAW,OAAO,OAAQ,OAAM,IAAI,IAAI,OAAO,GAAG;AAClD,eAAS,EAAE,SAAS,QAAQ,SAAS,OAAO,OAAO,MAAM,CAAC;AAAA,IAC5D,CAAC,EACA,MAAM,MAAM;AACX,UAAI,aAAa,cAAc,aAAa,QAAS;AACrD,eAAS,CAAC,UAAU,EAAE,GAAG,MAAM,SAAS,OAAO,OAAO,KAAK,EAAE;AAAA,IAC/D,CAAC;AAEH,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,SAAS,SAAS,cAAc,CAAC;AAErC,QAAM,kBAAkBE;AAAA,IACtB,CAAC,WAAmC;AAClC,YAAM,QAAQ,oBAAoB,KAAK;AACvC,aAAO,OAAO;AAAA,QACZ,CAAC,UAAU,MAAM,IAAI,KAAK,KAAK,EAAE,OAAO,OAAO,OAAO,KAAK,EAAE;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,CAAC,KAAK;AAAA,EACR;AAEA,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,MAAM,WAAW,CAAC;AAAA,MAC3B,SAAS;AAAA,MACT,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS,MAAM;AAAA,IACf,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,IACb;AAAA,EACF;AACF;AAGA,IAAM,0BAA0B,CAC9B,UACsC;AAAA,EACtC,QAAQ;AAAA,IACN,EAAE,OAAO,MAAM,OAAO,KAAK,UAAU,GAAG;AAAA,IACxC,EAAE,OAAO,UAAU,OAAO,KAAK,UAAU,MAAM;AAAA,IAC/C,EAAE,OAAO,SAAS,OAAO,KAAK,UAAU,MAAM;AAAA,IAC9C,EAAE,OAAO,aAAa,OAAO,KAAK,UAAU,SAAS;AAAA,EACvD;AAAA,EACA,aAAa;AAAA,IACX,EAAE,OAAO,aAAa,OAAO,KAAK,UAAU,QAAQ;AAAA,IACpD,EAAE,OAAO,iBAAiB,OAAO,KAAK,UAAU,WAAW;AAAA,IAC3D,EAAE,OAAO,gBAAgB,OAAO,KAAK,UAAU,YAAY;AAAA,IAC3D,EAAE,OAAO,gBAAgB,OAAO,KAAK,UAAU,YAAY;AAAA,IAC3D,EAAE,OAAO,SAAS,OAAO,KAAK,UAAU,MAAM;AAAA,IAC9C,EAAE,OAAO,aAAa,OAAO,KAAK,UAAU,SAAS;AAAA,EACvD;AAAA,EACA,MAAM;AAAA,IACJ,EAAE,OAAO,YAAY,OAAO,KAAK,UAAU,SAAS;AAAA,IACpD,EAAE,OAAO,gBAAgB,OAAO,KAAK,UAAU,YAAY;AAAA,IAC3D,EAAE,OAAO,eAAe,OAAO,KAAK,UAAU,WAAW;AAAA,IACzD,EAAE,OAAO,aAAa,OAAO,KAAK,UAAU,SAAS;AAAA,IACrD,EAAE,OAAO,MAAM,OAAO,KAAK,UAAU,UAAU;AAAA,IAC/C,EAAE,OAAO,SAAS,OAAO,KAAK,UAAU,MAAM;AAAA,IAC9C,EAAE,OAAO,aAAa,OAAO,KAAK,UAAU,SAAS;AAAA,EACvD;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,OAAO,MAAM,OAAO,KAAK,UAAU,GAAG;AAAA,IACxC,EAAE,OAAO,SAAS,OAAO,KAAK,UAAU,MAAM;AAAA,IAC9C,EAAE,OAAO,WAAW,OAAO,KAAK,UAAU,QAAQ;AAAA,IAClD,EAAE,OAAO,SAAS,OAAO,KAAK,UAAU,MAAM;AAAA,IAC9C,EAAE,OAAO,aAAa,OAAO,KAAK,UAAU,SAAS;AAAA,EACvD;AACF;AAGO,IAAM,oBACX,wBAAwB,YAAY;AAGtC,IAAM,uBAAuB,CAC3B,OACA,QACA,SACqB;AACrB,MAAI,MAAM,UAAW,QAAO,MAAM;AAElC,QAAM,YAAY,wBAAwB,IAAI;AAG9C,MAAI,YAAY,MAAM,QAAQ;AAG9B,MAAI,cAAc,YAAY,OAAO,SAAS,GAAG;AAC/C,gBAAY;AAAA,EACd;AAGA,MAAI,cAAc,iBAAiB,MAAM,SAAS,eAAe;AAC/D,WAAO,UAAU;AAAA,EACnB;AAEA,SAAO,UAAU,SAAS,KAAK,UAAU;AAC3C;AASA,SAAS,uBAAoC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmC;AACjC,QAAM,UAAU,iBAAiB;AACjC,QAAM,YAAYC;AAAA,IAChB,MAAM,qBAAqB,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACtD,CAAC,OAAO,QAAQ,QAAQ,IAAI;AAAA,EAC9B;AAGA,QAAM,gBACJ,UAAU,KAAK,CAAC,OAAO,GAAG,UAAU,QAAQ,GAAG,SAC/C,QAAQ,KAAK,QAAQ,eAAe,QAAQ;AAE9C,SACE,gBAAAT,OAAC,gBACC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,QACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAM,QAAQ;AAAA,YACd,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA,IAEJ;AAAA,IACA,gBAAAA,MAAC,uBAAoB,OAAM,SAAQ,WAAU,mBAC1C,oBAAU,IAAI,CAAC,OACd,gBAAAC;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,SAAS,GAAG,KAAK;AAAA,QAChC,WAAW;AAAA,UACT;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAD,MAAC,UAAM,aAAG,OAAM;AAAA,UAChB,gBAAAA;AAAA,YAACF;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,GAAG,UAAU,WAAW,gBAAgB;AAAA,cAC1C;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,MAZK,GAAG;AAAA,IAaV,CACD,GACH;AAAA,KACF;AAEJ;AAkBA,SAAS,qBAAkC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAAiC;AAC/B,QAAM,CAAC,MAAM,OAAO,IAAIO,UAAS,KAAK;AACtC,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,EAAE;AACjD,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,UAAS,EAAE;AAC3D,QAAM,WAAWC,QAAyB,IAAI;AAC9C,QAAM,UAAU,iBAAiB;AACjC,QAAM,SAASK,OAAM;AAErB,EAAAJ,WAAU,MAAM;AACd,QAAI,MAAM;AACR,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,EAAAA,WAAU,MAAM;AACd,wBAAoB,EAAE;AAAA,EACxB,GAAG,CAAC,aAAa,IAAI,CAAC;AAEtB,EAAAA,WAAU,MAAM;AACd,QAAI,oBAAoB,KAAK,MAAM;AACjC,YAAM,UAAU,SAAS;AAAA,QACvB,GAAG,MAAM,SAAS,gBAAgB;AAAA,MACpC;AACA,eAAS,eAAe,EAAE,OAAO,UAAU,CAAC;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,kBAAkB,MAAM,MAAM,CAAC;AAEnC,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,gBAAgB,OAAO,aAAa,UAAU,IAAI;AAEtD,QAAM,gBAAgB,MAAM,SAAS,iBAAiB,OAAO,SAAS;AACtE,QAAM,mBACH,MAAM,UAAU,SAAa,MAAM,QAAgB,WAAW,CAAC;AAKlE,QAAM,kBAAkB,UACpB,gBAAgB,eAAe,IAC/B,MAAM,SAAS,OAAO,CAAC,QAAQ,gBAAgB,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC;AAC5E,QAAM,oBAAoB,UACtB,gBAAgB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,SAAS,IAAI,KAAK,CAAC,IACpE,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,gBAAgB,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC;AAI7E,QAAM,0BAA0B;AAChC,QAAM,4BAA4B,UAC9B,oBACA,kBAAkB;AAAA,IAAO,CAAC,QACxB,IAAI,MAAM,YAAY,EAAE,SAAS,YAAY,YAAY,CAAC;AAAA,EAC5D;AAEJ,QAAM,qBAAqBG;AAAA,IACzB,MAAM,CAAC,GAAG,yBAAyB,GAAG,yBAAyB;AAAA,IAC/D,CAAC,yBAAyB,yBAAyB;AAAA,EACrD;AAEA,QAAM,cAAc,MAAM;AACxB,YAAQ,KAAK;AACb,cAAU;AAAA,EACZ;AAIA,QAAM,eAAe,CAAC,WAA4B;AAChD,UAAM,aAAa,gBAAgB,SAAS,OAAO,KAAK;AACxD,UAAM,OAAO,aACR,gBAAgB,OAAO,CAAC,MAAM,MAAM,OAAO,KAAK,IACjD,gBACG,CAAC,GAAG,iBAAiB,OAAO,KAAK,IACjC,CAAC,OAAO,KAAK;AAEpB,QACE,CAAC,cACD,iBACA,MAAM,iBACN,KAAK,SAAS,MAAM,eACpB;AACA;AAAA,IACF;AAEA,QAAI,MAAM,eAAe;AACvB,YAAM,cAAc,IAAI;AAAA,IAC1B,OAAO;AACL,eAAS,IAAI;AAAA,IACf;AACA,QAAI,CAAC,cAAe,aAAY;AAAA,EAClC;AAEA,QAAM,mBAAmB,CAAC,QAAyB,iBAAyB;AAC1E,UAAM,aAAa,gBAAgB,SAAS,OAAO,KAAK;AACxD,UAAM,gBAAgB,qBAAqB;AAC3C,UAAM,SAAS,GAAG,MAAM,SAAS,YAAY;AAE7C,WACE,gBAAAT;AAAA,MAAC;AAAA;AAAA,QAEC,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,oBAAkB,iBAAiB;AAAA,QACnC,cAAc,MAAM,oBAAoB,YAAY;AAAA,QACpD,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA,UAAU,CAAC,MAAM;AACf,cAAI,cAAe,GAAE,eAAe;AAAA,QACtC;AAAA,QACA,iBAAiB,MAAM,aAAa,MAAM;AAAA,QAEzC;AAAA,iBAAO,QAAQ,OAAO;AAAA,UACvB,gBAAAD,MAAC,UAAK,WAAU,YAAY,iBAAO,OAAM;AAAA;AAAA;AAAA,MAjBpC,OAAO,OAAO,KAAK;AAAA,IAkB1B;AAAA,EAEJ;AAEA,QAAM,oBAAoB,MACxB,gBAAAC,OAAAF,WAAA,EACG;AAAA,UAAM,eAAe,SACpB,gBAAAE,OAAAF,WAAA,EACE;AAAA,sBAAAC;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,MAAK;AAAA,UACL,qBAAkB;AAAA,UAClB,iBAAe;AAAA,UACf,iBAAc;AAAA,UACd,iBAAe,GAAG,MAAM;AAAA,UACxB,yBACE,oBAAoB,IAChB,GAAG,MAAM,SAAS,gBAAgB,KAClC;AAAA,UAEN,aAAa,QAAQ,KAAK,aAAa;AAAA,YACrC,MAAM,SAAS;AAAA,UACjB;AAAA,UACA,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,UACV;AAAA,UACA,OAAO;AAAA,UACP,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,UAC9C,QAAQ,MAAM,QAAQ,SAAS,SAAS,MAAM;AAAA,UAC9C,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,UAClC,WAAW,CAAC,MAAM;AAChB,gBAAI,EAAE,QAAQ,aAAa;AACzB,gBAAE,eAAe;AACjB,kBAAI,mBAAmB,SAAS,GAAG;AACjC;AAAA,kBAAoB,CAAC,SACnB,OAAO,mBAAmB,SAAS,IAAI,OAAO,IAAI;AAAA,gBACpD;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,WAAW;AAC9B,gBAAE,eAAe;AACjB,kBAAI,mBAAmB,SAAS,GAAG;AACjC;AAAA,kBAAoB,CAAC,SACnB,OAAO,IAAI,OAAO,IAAI,mBAAmB,SAAS;AAAA,gBACpD;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,aAAa;AAChC,gBAAE,eAAe;AACjB,sBAAQ,KAAK;AAAA,YACf,WAAW,EAAE,QAAQ,WAAW,oBAAoB,GAAG;AACrD,gBAAE,eAAe;AACjB,oBAAM,SAAS,mBAAmB,gBAAgB;AAClD,kBAAI,QAAQ;AACV,sBAAM,aAAa,gBAAgB,SAAS,OAAO,KAAU;AAC7D,sBAAM,OAAO,aACR,gBAAgB,OAAO,CAAC,MAAM,MAAM,OAAO,KAAK,IACjD,gBACG,CAAC,GAAG,iBAAiB,OAAO,KAAK,IACjC,CAAC,OAAO,KAAK;AAEpB,oBACE,CAAC,cACD,iBACA,MAAM,iBACN,KAAK,SAAS,MAAM,eACpB;AACA;AAAA,gBACF;AAEA,oBAAI,MAAM,eAAe;AACvB,wBAAM,cAAc,IAAI;AAAA,gBAC1B,OAAO;AACL,2BAAS,IAAI;AAAA,gBACf;AACA,oBAAI,CAAC,cAAe,aAAY;AAAA,cAClC;AAAA,YACF;AACA,cAAE,gBAAgB;AAAA,UACpB;AAAA;AAAA,MACF;AAAA,MACA,gBAAAA,MAAC,yBAAsB;AAAA,OACzB;AAAA,IAEF,gBAAAA,MAAC,SAAI,WAAU,4BACb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,IAAI,GAAG,MAAM;AAAA,QAEZ,qBAAW,WAAW,mBAAmB,WAAW,IACnD,gBAAAA,MAAC,SAAI,WAAU,kDACZ,kBAAQ,KAAK,kBAAkB,aAAa,gBAC/C,IACE,WAAW,QACb,gBAAAA,MAAC,SAAI,WAAU,kDACZ,kBAAQ,KAAK,uBACZ,aAAa,qBACjB,IACE,mBAAmB,WAAW,IAChC,gBAAAA,MAAC,SAAI,WAAU,kDACZ,kBAAQ,KAAK,gBAChB,IACE,MAAM,mBACR,MAAM,iBAAiB;AAAA,UACrB,SAAS;AAAA,UACT;AAAA,UACA,cAAc;AAAA,QAChB,CAAC,IAED,gBAAAC,OAAC,cAAW,WAAU,gKAEnB;AAAA,kCAAwB,SAAS,KAChC,gBAAAD,MAAC,qBAAkB,WAAU,QAC1B,kCAAwB;AAAA,YAAI,CAAC,QAAQ,UACpC,iBAAiB,QAAQ,KAAK;AAAA,UAChC,GACF;AAAA,UAID,wBAAwB,SAAS,KAChC,0BAA0B,SAAS,KACjC,gBAAAA,MAAC,yBAAsB,WAAU,QAAO;AAAA,UAI3C,0BAA0B,SAAS,KAClC,gBAAAA,MAAC,qBAAkB,WAAU,QAC1B,oCAA0B;AAAA,YAAI,CAAC,QAAQ,UACtC;AAAA,cACE;AAAA,cACA,QAAQ,wBAAwB;AAAA,YAClC;AAAA,UACF,GACF;AAAA,WAEJ;AAAA;AAAA,IAEJ,GACF;AAAA,KACF;AAGF,MAAI,QAAQ;AACV,WAAO,gBAAAA,MAAC,SAAI,WAAU,UAAU,4BAAkB,GAAE;AAAA,EACtD;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,cAAc,CAACW,UAAS;AACtB,gBAAQA,KAAI;AACZ,YAAI,CAACA,OAAM;AACT,qBAAW,MAAM,eAAe,EAAE,GAAG,GAAG;AAAA,QAC1C;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAZ;AAAA,UAAC;AAAA;AAAA,YACC,QACE,gBAAAA,MAAC,UAAO,SAAQ,WAAU,MAAM,QAAQ,MACtC,0BAAAA,MAAC,SAAI,WAAU,6BACZ,gBAAM,sBACL,MAAM;AAAA,cACJ;AAAA,cACA,UAAU,gBAAgB,MAAM,IAAI,MAAM,WAAW,CAAC;AAAA,YACxD,IAEA,gBAAAC,OAAAF,WAAA,EACG;AAAA,8BAAgB,SAAS,KACxB,gBAAAC,MAAC,SAAI,WAAU,kCACZ,0BAAgB,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,WAChC,gBAAAA,MAAC,SAAgC,iBAAO,QAA9B,OAAO,OAAO,KAAK,CAAgB,CAC9C,GACH;AAAA,cAED,gBAAgB,WAAW,IACxB,gBAAgB,CAAC,EAAE,QACnB,gBAAgB,SAAS,IACvB,GAAG,gBAAgB,MAAM,IAAI,QAAQ,KAAK,aAAa,KACvD,QAAQ,KAAK;AAAA,eACrB,GAEJ,GACF;AAAA;AAAA,QAEJ;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,WAAW,GAAG,aAAa,MAAM,SAAS;AAAA,YAEzC,4BAAkB;AAAA;AAAA,QACrB;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,oBAAiC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgC;AAC9B,MAAI,aAAa,WAAW,aAAa,aAAa;AACpD,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,gBAAgB;AACxB,WACE,gBAAAA,MAAC,mBAAgB,WAAU,sHACxB,gBAAM,eAAe,EAAE,OAAO,QAAQ,UAAU,SAAS,CAAC,GAC7D;AAAA,EAEJ;AAEA,MAAI,MAAM,SAAS,QAAQ;AACzB,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAQ,OAAO,CAAC,KAAgB;AAAA,QAChC,UAAU,CAAC,MAAM,SAAS,CAAC,EAAE,OAAO,KAAK,CAAQ;AAAA,QACjD,aAAa,MAAM;AAAA,QACnB,SAAS,MAAM;AAAA,QACf;AAAA,QACA,WAAW,GAAG,QAAQ,MAAM,SAAS;AAAA,QACrC;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,MAAI,MAAM,SAAS,YAAY,MAAM,SAAS,eAAe;AAC3D,WACE,gBAAAA,MAAC,wBAAqB,OAAc,QAAgB,UAAoB;AAAA,EAE5E;AAEA,SACE,gBAAAA,MAAC,wBAAqB,OAAc,QAAgB,UAAoB;AAE5E;AAqBO,IAAM,iBAAiB,CAAe;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,UAAU,iBAAiB;AACjC,QAAM,YAAYU,SAAQ,MAAM,aAAa,MAAM,GAAG,CAAC,MAAM,CAAC;AAE9D,QAAM,eAAeD;AAAA,IACnB,CAAC,UAAkB,YAAgC;AACjD;AAAA,QACE,QAAQ,IAAI,CAAC,WAAW;AACtB,cAAI,OAAO,OAAO,UAAU;AAC1B,kBAAM,gBAAgB,EAAE,GAAG,QAAQ,GAAG,QAAQ;AAC9C,gBACE,QAAQ,aAAa,WACrB,QAAQ,aAAa,aACrB;AACA,4BAAc,SAAS,CAAC;AAAA,YAC1B;AACA,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EACpB;AAEA,QAAM,eAAeA;AAAA,IACnB,CAAC,aAAqB;AACpB,eAAS,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,QAAQ,CAAC;AAAA,IAC7D;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EACpB;AAEA,SACE,gBAAAT;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,yBAAyB;AAAA,UACvB,SAAS,QAAQ;AAAA,UACjB,MAAM,QAAQ;AAAA,QAChB,CAAC;AAAA,QACD,QAAQ;AAAA,MACV;AAAA,MAEC,kBAAQ,IAAI,CAAC,WAAW;AACvB,cAAM,QAAQ,UAAU,OAAO,KAAK;AACpC,YAAI,CAAC,MAAO,QAAO;AAEnB,eACE,gBAAAC;AAAA,UAAC;AAAA;AAAA,YAMC,WAAU;AAAA,YAEV;AAAA,8BAAAA,OAAC,mBACE;AAAA,sBAAM,QAAQ,MAAM;AAAA,gBACpB,MAAM;AAAA,iBACT;AAAA,cAEA,gBAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA,UAAU,OAAO;AAAA,kBACjB,QAAQ,OAAO;AAAA,kBACf,UAAU,CAAC,aAAa,aAAa,OAAO,IAAI,EAAE,SAAS,CAAC;AAAA;AAAA,cAC9D;AAAA,cAEA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA,QAAQ,OAAO;AAAA,kBACf,UAAU,CAAC,WAAW,aAAa,OAAO,IAAI,EAAE,OAAO,CAAC;AAAA,kBACxD,UAAU,OAAO;AAAA,kBACjB,WAAW;AAAA;AAAA,cACb;AAAA,cAEA,gBAAAA,MAAC,sBAAmB,SAAS,MAAM,aAAa,OAAO,EAAE,GAAG;AAAA;AAAA;AAAA,UA3BvD,OAAO;AAAA,QA4Bd;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH;AAEJ;AAiCA,SAAS,qBAAkC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiC;AAC/B,QAAM,CAAC,aAAa,cAAc,IAAIK,UAAS,EAAE;AACjD,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,UAAS,EAAE;AAC3D,QAAM,WAAWC,QAAyB,IAAI;AAC9C,QAAM,SAASK,OAAM;AAErB,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,gBAAgB,OAAO,aAAa,IAAI;AAE5C,EAAAJ,WAAU,MAAM;AACd,QAAI,UAAU;AACZ,UAAI,MAAM,eAAe,OAAO;AAC9B,iBAAS,SAAS,MAAM;AAAA,MAC1B,OAAO;AACL,cAAM,UAAU,SAAS,eAAe,GAAG,MAAM,UAAU;AAC3D,iBAAS,MAAM;AAAA,MACjB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,MAAM,YAAY,MAAM,CAAC;AAEvC,EAAAA,WAAU,MAAM;AACd,wBAAoB,EAAE;AAAA,EACxB,GAAG,CAAC,WAAW,CAAC;AAEhB,EAAAA,WAAU,MAAM;AACd,QAAI,oBAAoB,KAAK,UAAU;AACrC,YAAM,UAAU,SAAS;AAAA,QACvB,GAAG,MAAM,SAAS,gBAAgB;AAAA,MACpC;AACA,eAAS,eAAe,EAAE,OAAO,UAAU,CAAC;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,kBAAkB,UAAU,MAAM,CAAC;AAEvC,QAAM,kBAAkBG,SAAQ,MAAM;AAGpC,QAAI,SAAS;AACX,YAAM,cAAc,IAAI,IAAI,aAAa;AACzC,aAAO;AAAA,QACL,GAAG,gBAAgB,aAAa;AAAA,QAChC,GAAG,gBAAgB,OAAO,CAAC,WAAW,CAAC,YAAY,IAAI,OAAO,KAAK,CAAC;AAAA,MACtE;AAAA,IACF;AACA,WACE,MAAM,SAAS,OAAO,CAAC,WAAW;AAChC,YAAM,aAAa,cAAc,SAAS,OAAO,KAAK;AACtD,UAAI,WAAY,QAAO;AACvB,UAAI,CAAC,YAAa,QAAO;AACzB,aAAO,OAAO,MAAM,YAAY,EAAE,SAAS,YAAY,YAAY,CAAC;AAAA,IACtE,CAAC,KAAK,CAAC;AAAA,EAEX,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,mBAAmB,CAAC,QAAyB,UAAkB;AACnE,UAAM,aAAa,cAAc,SAAS,OAAO,KAAK;AACtD,UAAM,gBAAgB,qBAAqB;AAC3C,UAAM,SAAS,GAAG,MAAM,SAAS,KAAK;AAEtC,WACE,gBAAAT;AAAA,MAAC;AAAA;AAAA,QAEC,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,oBAAkB,iBAAiB;AAAA,QACnC,cAAc,MAAM,oBAAoB,KAAK;AAAA,QAC7C,SAAS;AAAA,QACT,WAAW;AAAA,UACT;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA,UAAU,CAAC,MAAM;AACf,cAAI,cAAe,GAAE,eAAe;AAAA,QACtC;AAAA,QACA,iBAAiB,MAAM,SAAS,OAAO,OAAY,UAAU;AAAA,QAE5D;AAAA,iBAAO,QAAQ,OAAO;AAAA,UACvB,gBAAAD,MAAC,UAAK,WAAU,YAAY,iBAAO,OAAM;AAAA;AAAA;AAAA,MAjBpC,OAAO,OAAO,KAAK;AAAA,IAkB1B;AAAA,EAEJ;AAEA,EAAAO,WAAU,MAAM;AACd,QAAI,YAAY,gBAAgB,SAAS,GAAG;AAC1C,0BAAoB,CAAC;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,UAAU,gBAAgB,MAAM,CAAC;AAErC,SACE,gBAAAN,OAAC,SAAI,WAAU,iBAAgB,cAAc,UAC1C;AAAA,UAAM,eAAe,SACpB,gBAAAA,OAAAF,WAAA,EACE;AAAA,sBAAAC;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,MAAK;AAAA,UACL,qBAAkB;AAAA,UAClB,iBAAe;AAAA,UACf,iBAAc;AAAA,UACd,iBAAe,GAAG,MAAM;AAAA,UACxB,yBACE,oBAAoB,IAChB,GAAG,MAAM,SAAS,gBAAgB,KAClC;AAAA,UAEN,aAAa,KAAK,aAAa,YAAY,MAAM,SAAS,EAAE;AAAA,UAC5D,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA,YAAY;AAAA,UACd;AAAA,UACA,OAAO;AAAA,UACP,QAAQ,MAAM,YAAY,SAAS,SAAS,MAAM;AAAA,UAClD,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,UAC9C,SAAS,MAAM,WAAW;AAAA,UAC1B,cAAc,CAAC,MAAM;AACnB,uBAAW;AACX,cAAE,gBAAgB;AAAA,UACpB;AAAA,UACA,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,UAClC,WAAW,CAAC,MAAM;AAChB,gBAAI,EAAE,QAAQ,aAAa;AACzB,gBAAE,eAAe;AACjB,kBAAI,gBAAgB,SAAS,GAAG;AAC9B;AAAA,kBAAoB,CAAC,SACnB,OAAO,gBAAgB,SAAS,IAAI,OAAO,IAAI;AAAA,gBACjD;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,WAAW;AAC9B,gBAAE,eAAe;AACjB,kBAAI,gBAAgB,SAAS,GAAG;AAC9B;AAAA,kBAAoB,CAAC,SACnB,OAAO,IAAI,OAAO,IAAI,gBAAgB,SAAS;AAAA,gBACjD;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,aAAa;AAChC,gBAAE,eAAe;AACjB,uBAAS;AAAA,YACX,WAAW,EAAE,QAAQ,WAAW,oBAAoB,GAAG;AACrD,gBAAE,eAAe;AACjB,oBAAM,SAAS,gBAAgB,gBAAgB;AAC/C,kBAAI,QAAQ;AACV;AAAA,kBACE,OAAO;AAAA,kBACP,cAAc,SAAS,OAAO,KAAK;AAAA,gBACrC;AACA,oBAAI,CAAC,eAAe;AAClB,2BAAS;AAAA,gBACX;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,UAAU;AAC7B,gBAAE,eAAe;AACjB,wBAAU;AAAA,YACZ;AACA,cAAE,gBAAgB;AAAA,UACpB;AAAA;AAAA,MACF;AAAA,MACA,gBAAAA,MAAC,yBAAsB;AAAA,OACzB;AAAA,IAEF,gBAAAA,MAAC,SAAI,WAAU,4BACb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,IAAI,GAAG,MAAM;AAAA,QACb,UAAU,MAAM,eAAe,QAAQ,IAAI;AAAA,QAC3C,WAAW,CAAC,MAAM;AAChB,cAAI,MAAM,eAAe,OAAO;AAC9B,gBAAI,EAAE,QAAQ,aAAa;AACzB,gBAAE,eAAe;AACjB,kBAAI,gBAAgB,SAAS,GAAG;AAC9B;AAAA,kBAAoB,CAAC,SACnB,OAAO,gBAAgB,SAAS,IAAI,OAAO,IAAI;AAAA,gBACjD;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,WAAW;AAC9B,gBAAE,eAAe;AACjB,kBAAI,gBAAgB,SAAS,GAAG;AAC9B;AAAA,kBAAoB,CAAC,SACnB,OAAO,IAAI,OAAO,IAAI,gBAAgB,SAAS;AAAA,gBACjD;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,aAAa;AAChC,gBAAE,eAAe;AACjB,uBAAS;AAAA,YACX,WAAW,EAAE,QAAQ,WAAW,oBAAoB,GAAG;AACrD,gBAAE,eAAe;AACjB,oBAAM,SAAS,gBAAgB,gBAAgB;AAC/C,kBAAI,QAAQ;AACV;AAAA,kBACE,OAAO;AAAA,kBACP,cAAc,SAAS,OAAO,KAAK;AAAA,gBACrC;AACA,oBAAI,CAAC,eAAe;AAClB,2BAAS;AAAA,gBACX;AAAA,cACF;AAAA,YACF,WAAW,EAAE,QAAQ,UAAU;AAC7B,gBAAE,eAAe;AACjB,wBAAU;AAAA,YACZ;AACA,cAAE,gBAAgB;AAAA,UACpB;AAAA,QACF;AAAA,QAEC,qBAAW,WAAW,gBAAgB,WAAW,IAChD,gBAAAA,MAAC,SAAI,WAAU,kDACZ,eAAK,kBAAkB,aAAa,gBACvC,IACE,WAAW,QACb,gBAAAA,MAAC,SAAI,WAAU,kDACZ,eAAK,uBAAuB,aAAa,qBAC5C,IACE,gBAAgB,WAAW,IAC7B,gBAAAA,MAAC,SAAI,WAAU,kDACZ,eAAK,gBACR,IACE,MAAM,mBACR,MAAM,iBAAiB;AAAA,UACrB,SAAS;AAAA,UACT;AAAA,UACA,cAAc;AAAA,QAChB,CAAC,IAED,gBAAAA,MAAC,cAAW,WAAU,gKACpB,0BAAAA,MAAC,qBACE,0BAAgB;AAAA,UAAI,CAAC,QAAQ,UAC5B,iBAAiB,QAAQ,KAAK;AAAA,QAChC,GACF,GACF;AAAA;AAAA,IAEJ,GACF;AAAA,KACF;AAEJ;AAEO,SAAS,QAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,gBAAgB;AAClB,GAAoB;AAClB,QAAM,CAAC,eAAe,gBAAgB,IAAIK,UAAS,KAAK;AACxD,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,UAAS,EAAE;AACzD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAiB,MAAM;AAC3D,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAwB,IAAI;AAClE,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,UAAS,EAAE;AAC3D,QAAM,CAAC,mBAAmB,oBAAoB,IAAIA;AAAA,IAChD;AAAA,EACF;AACA,QAAM,eAAeC,QAAyB,IAAI;AAClD,QAAM,SAASK,OAAM;AAErB,EAAAJ,WAAU,MAAM;AACd,QAAI,CAAC,eAAgB;AAErB,UAAM,gBAAgB,CAAC,MAAqB;AAC1C,UACE,EAAE,IAAI,YAAY,MAAM,YAAY,YAAY,KAChD,CAAC,iBACD,EACE,SAAS,yBAAyB,oBAClC,SAAS,yBAAyB,sBAEpC;AACA,UAAE,eAAe;AACjB,yBAAiB,IAAI;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,iBAAiB,WAAW,aAAa;AAChD,WAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,EAClE,GAAG,CAAC,gBAAgB,aAAa,aAAa,CAAC;AAE/C,EAAAA,WAAU,MAAM;AACd,QAAI,iBAAiB,eAAe,QAAQ;AAC1C,mBAAa,SAAS,MAAM;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,eAAe,UAAU,CAAC;AAE9B,EAAAA,WAAU,MAAM;AACd,wBAAoB,EAAE;AAAA,EACxB,GAAG,CAAC,eAAe,CAAC;AAEpB,EAAAA,WAAU,MAAM;AACd,QAAI,oBAAoB,KAAK,eAAe;AAC1C,YAAM,UAAU,SAAS;AAAA,QACvB,GAAG,MAAM,SAAS,gBAAgB;AAAA,MACpC;AACA,eAAS,eAAe,EAAE,OAAO,UAAU,CAAC;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,kBAAkB,eAAe,MAAM,CAAC;AAE5C,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,eAAe;AAClB,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,aAAa,CAAC;AAIlB,QAAM,CAAC,kBAAkB,mBAAmB,IAAIF,UAE9C,CAAC,CAAC;AAEJ,EAAAE,WAAU,MAAM;AACd,QAAI,mBAAmB;AACrB,YAAM,QAAQ,WAAW,MAAM;AAC7B,6BAAqB,IAAI;AAAA,MAC3B,GAAG,GAAI;AACP,aAAO,MAAM,aAAa,KAAK;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,QAAM,aAA+BG;AAAA,IACnC,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,WAAW,EAAE,GAAG,aAAa,WAAW,GAAG,MAAM,UAAU;AAAA,MAC3D,cAAc,EAAE,GAAG,aAAa,cAAc,GAAG,MAAM,aAAa;AAAA,MACpE,YAAY,EAAE,GAAG,aAAa,YAAY,GAAG,MAAM,WAAW;AAAA,IAChE;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,YAAYA,SAAQ,MAAM,aAAa,MAAM,GAAG,CAAC,MAAM,CAAC;AAE9D,QAAM,eAAeD;AAAA,IACnB,CAAC,UAAkB,YAAgC;AACjD;AAAA,QACE,QAAQ,IAAI,CAAC,WAAW;AACtB,cAAI,OAAO,OAAO,UAAU;AAC1B,kBAAM,gBAAgB,EAAE,GAAG,QAAQ,GAAG,QAAQ;AAC9C,gBACE,QAAQ,aAAa,WACrB,QAAQ,aAAa,aACrB;AACA,4BAAc,SAAS,CAAC;AAAA,YAC1B;AACA,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EACpB;AAEA,QAAM,eAAeA;AAAA,IACnB,CAAC,aAAqB;AACpB,eAAS,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,QAAQ,CAAC;AAAA,IAC7D;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EACpB;AAEA,QAAM,YAAYA;AAAA,IAChB,CAAC,aAAqB;AACpB,YAAM,QAAQ,UAAU,QAAQ;AAChC,UAAI,SAAS,MAAM,KAAK;AACtB,cAAM,kBACJ,MAAM,oBACL,MAAM,SAAS,gBAAgB,cAAc;AAChD,cAAM,gBAA2B,MAAM,SAAS,SAAS,CAAC,EAAE,IAAI,CAAC;AACjE,cAAM,YAAY;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,6BAAqB,UAAU,EAAE;AACjC,iBAAS,CAAC,GAAG,SAAS,SAAS,CAAC;AAChC,yBAAiB,KAAK;AACtB,2BAAmB,EAAE;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC,WAAW,SAAS,QAAQ;AAAA,EAC/B;AAEA,QAAM,mBAAmBC,SAAQ,MAAM;AACrC,UAAM,aAAa,cAAc,MAAM;AACvC,WAAO,WAAW,OAAO,CAAC,UAAU;AAClC,UAAI,CAAC,MAAM,OAAO,MAAM,SAAS,YAAa,QAAO;AACrD,UAAI,cAAe,QAAO;AAC1B,aAAO,CAAC,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,MAAM,GAAG;AAAA,IAC7D,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,SAAS,aAAa,CAAC;AAEnC,QAAM,iBAAiBA,SAAQ,MAAM;AACnC,WAAO,iBAAiB;AAAA,MACtB,CAAC,MACC,CAAC,mBACD,EAAE,OAAO,YAAY,EAAE,SAAS,gBAAgB,YAAY,CAAC;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,kBAAkB,eAAe,CAAC;AAEtC,EAAAH,WAAU,MAAM;AACd,QAAI,iBAAiB,eAAe,SAAS,GAAG;AAC9C,0BAAoB,CAAC;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,eAAe,eAAe,MAAM,CAAC;AAEzC,QAAM,gBAAgBM,WAAU;AAAA,IAC9B,QAAS,WACP,gBAAAZ,OAAC,UAAO,SAAQ,WACd;AAAA,sBAAAD,MAAC,YAAS;AAAA,MACT,WAAW;AAAA,OACd;AAAA,IAEF,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,eAAeU;AAAA,IACnB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,SAAS,MAAM,QAAQ,YAAY,WAAW,SAAS,aAAa;AAAA,EACvE;AAEA,SACE,gBAAAV,MAAC,cAAc,UAAd,EAAuB,OAAO,cAC7B,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,yBAAyB,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,MAEnE;AAAA,yBAAiB,SAAS,KACzB,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,cAAc,CAAC,SAAS;AACtB,+BAAiB,IAAI;AACrB,kBAAI,CAAC,MAAM;AACT,mCAAmB,EAAE;AACrB,oCAAoB,CAAC,CAAC;AAAA,cACxB,OAAO;AACL,8BAAc,MAAM;AAAA,cACtB;AAAA,YACF;AAAA,YAEA;AAAA,8BAAAD,MAAC,uBAAoB,QAAQ,eAAe;AAAA,cAC5C,gBAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW,GAAG,QAAQ,kBAAkB;AAAA,kBACxC,OAAM;AAAA,kBAEL;AAAA,uCACC,gBAAAA,OAAAF,WAAA,EACE;AAAA,sCAAAE,OAAC,SAAI,WAAU,YACb;AAAA,wCAAAD;AAAA,0BAAC;AAAA;AAAA,4BACC,KAAK;AAAA,4BACL,MAAK;AAAA,4BACL,iBAAe,GAAG,MAAM;AAAA,4BACxB,yBACE,oBAAoB,IAChB,GAAG,MAAM,SAAS,gBAAgB,KAClC;AAAA,4BAEN,aAAa,WAAW;AAAA,4BACxB,WAAW;AAAA,8BACT;AAAA,8BACA;AAAA,8BACA,eAAe,UAAU;AAAA,4BAC3B;AAAA,4BACA,OAAO;AAAA,4BACP,SAAS,MAAM,cAAc,MAAM;AAAA,4BACnC,cAAc,MAAM,cAAc,MAAM;AAAA,4BACxC,QAAQ,MACN,eAAe,UAAU,aAAa,SAAS,MAAM;AAAA,4BAEvD,UAAU,CAAC,MAAM,mBAAmB,EAAE,OAAO,KAAK;AAAA,4BAClD,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,4BAClC,WAAW,CAAC,MAAM;AAChB,kCAAI,EAAE,QAAQ,aAAa;AACzB,kCAAE,eAAe;AACjB,oCAAI,eAAe,SAAS,GAAG;AAC7B;AAAA,oCAAoB,CAAC,SACnB,OAAO,eAAe,SAAS,IAAI,OAAO,IAAI;AAAA,kCAChD;AAAA,gCACF;AAAA,8BACF,WAAW,EAAE,QAAQ,WAAW;AAC9B,kCAAE,eAAe;AACjB,oCAAI,eAAe,SAAS,GAAG;AAC7B;AAAA,oCAAoB,CAAC,SACnB,OAAO,IAAI,OAAO,IAAI,eAAe,SAAS;AAAA,kCAChD;AAAA,gCACF;AAAA,8BACF,YACG,EAAE,QAAQ,gBAAgB,EAAE,QAAQ,gBACrC,oBAAoB,GACpB;AACA,sCAAM,QAAQ,eAAe,gBAAgB;AAC7C,sCAAM,aACJ,UACC,MAAM,SAAS,YACd,MAAM,SAAS,kBACjB,gBAAgB,KAAK;AAEvB,oCAAI,EAAE,QAAQ,gBAAgB,YAAY;AACxC,oCAAE,eAAe;AACjB,iDAAe,MAAM,OAAO,IAAI;AAChC,gDAAc,MAAM,OAAO,MAAM;AAAA,gCACnC,WAAW,EAAE,QAAQ,aAAa;AAChC,oCAAE,eAAe;AACjB,sCAAI,aAAa;AACf,mDAAe,IAAI;AACnB,kDAAc,MAAM;AAAA,kCACtB;AAAA,gCACF;AAAA,8BACF,WAAW,EAAE,QAAQ,WAAW,oBAAoB,GAAG;AACrD,kCAAE,eAAe;AACjB,sCAAM,QAAQ,eAAe,gBAAgB;AAC7C,oCAAI,MAAM,KAAK;AACb,wCAAM,cACH,MAAM,SAAS,YACd,MAAM,SAAS,kBACjB,gBAAgB,KAAK;AACvB,sCAAI,CAAC,YAAY;AACf,8CAAU,MAAM,GAAG;AAAA,kCACrB,OAAO;AACL,wCAAI,gBAAgB,MAAM,KAAK;AAC7B,qDAAe,IAAI;AACnB,oDAAc,MAAM;AAAA,oCACtB,OAAO;AACL,qDAAe,MAAM,GAAG;AACxB,oDAAc,MAAM,GAAG;AAAA,oCACzB;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF,WAAW,EAAE,QAAQ,UAAU;AAC7B,iDAAiB,KAAK;AAAA,8BACxB;AACA,gCAAE,gBAAgB;AAAA,4BACpB;AAAA;AAAA,wBACF;AAAA,wBACC,kBAAkB,iBACjB,gBAAAA,MAAC,OAAI,WAAU,kEACZ,yBACH;AAAA,yBAEJ;AAAA,sBACA,gBAAAA,MAAC,yBAAsB;AAAA,uBACzB;AAAA,oBAGF,gBAAAA,MAAC,SAAI,WAAU,4BACb,0BAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAU;AAAA,wBACV,MAAK;AAAA,wBACL,IAAI,GAAG,MAAM;AAAA,wBACb,cAAc,MAAM,cAAc,MAAM;AAAA,wBAExC,0BAAAA,MAAC,cAAW,WAAU,4CAClB,iBAAM;AACN,8BAAI,eAAe,WAAW,GAAG;AAC/B,mCACE,gBAAAA,MAAC,SAAI,WAAU,kDACZ,qBAAW,eACd;AAAA,0BAEJ;AAEA,iCAAO,eAAe,IAAI,CAAC,OAAO,UAAU;AAC1C,kCAAM,gBAAgB,qBAAqB;AAC3C,kCAAM,SAAS,GAAG,MAAM,SAAS,KAAK;AACtC,kCAAM,cACH,MAAM,SAAS,YACd,MAAM,SAAS,kBACjB,gBAAgB,KAAK;AAEvB,gCAAI,YAAY;AACd,oCAAM,gBAAgB,MAAM,SAAS;AACrC,oCAAM,WAAW,MAAM;AACvB,oCAAM,kBAAkB,iBAAiB,QAAQ;AACjD,oCAAM,gBAAgB,kBAClB,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe,IAC5C;AACJ,oCAAM,gBAAgB,eAAe,UAAU,CAAC;AAEhD,qCACE,gBAAAC;AAAA,gCAAC;AAAA;AAAA,kCAEC,MAAM,gBAAgB;AAAA,kCACtB,cAAc,CAAC,SAAS;AACtB,wCAAI,MAAM;AACR,qDAAe,QAAQ;AAAA,oCACzB,OAAO;AACL,0CAAI,gBAAgB,UAAU;AAC5B,uDAAe,IAAI;AACnB,sDAAc,MAAM;AAAA,sCACtB;AAAA,oCACF;AAAA,kCACF;AAAA,kCAEA;AAAA,oDAAAA;AAAA,sCAAC;AAAA;AAAA,wCACC,IAAI;AAAA,wCACJ,MAAK;AAAA,wCACL,iBAAe;AAAA,wCACf,oBAAkB,iBAAiB;AAAA,wCACnC,cAAc,MAAM;AAClB,8DAAoB,KAAK;AACzB,wDAAc,MAAM;AAAA,wCACtB;AAAA,wCACA,WAAU;AAAA,wCAET;AAAA,gDAAM;AAAA,0CACP,gBAAAD,MAAC,UAAM,gBAAM,OAAM;AAAA;AAAA;AAAA,oCACrB;AAAA,oCACA,gBAAAA;AAAA,sCAAC;AAAA;AAAA,wCACC,WAAU;AAAA,wCACV,MAAK;AAAA,wCAEL,0BAAAA;AAAA,0CAAC;AAAA;AAAA,4CACC;AAAA,4CACA;AAAA,4CACA;AAAA,4CACA,MAAM;AAAA,4CACN,UAAU,eAAe;AAAA,4CACzB,UAAU,MAAM;AACd,kDAAI,MAAM,eAAe,OAAO;AAC9B,8DAAc,QAAQ;AAAA,8CACxB;AAAA,4CACF;AAAA,4CACA,QAAQ,MAAM;AACZ,6DAAe,IAAI;AACnB,4DAAc,MAAM;AAAA,4CACtB;AAAA,4CACA,SAAS,MAAM,iBAAiB,KAAK;AAAA,4CACrC,UAAU,CAAC,OAAO,eAAe;AAC/B,kDAAI,eAAe;AACjB,sDAAM,aAAa,aACd,cAAc;AAAA,kDACb,CAAC,MAAM,MAAM;AAAA,gDACf,IACC,CAAC,GAAG,eAAe,KAAK;AAE7B,oDAAI,eAAe;AACjB,sDAAI,WAAW,WAAW,GAAG;AAC3B;AAAA,sDACE,QAAQ;AAAA,wDACN,CAAC,MAAM,EAAE,OAAO,cAAc;AAAA,sDAChC;AAAA,oDACF;AACA,wEAAoB,CAAC,UAAU;AAAA,sDAC7B,GAAG;AAAA,sDACH,CAAC,QAAQ,GAAG;AAAA,oDACd,EAAE;AAAA,kDACJ,OAAO;AACL;AAAA,sDACE,QAAQ;AAAA,wDAAI,CAAC,MACX,EAAE,OAAO,cAAc,KACnB,EAAE,GAAG,GAAG,QAAQ,WAAW,IAC3B;AAAA,sDACN;AAAA,oDACF;AAAA,kDACF;AAAA,gDACF,OAAO;AACL,wDAAM,YAAY;AAAA,oDAChB;AAAA,oDACA,MAAM,mBAAmB;AAAA,oDACzB;AAAA,kDACF;AACA,2DAAS,CAAC,GAAG,SAAS,SAAS,CAAC;AAChC,sEAAoB,CAAC,UAAU;AAAA,oDAC7B,GAAG;AAAA,oDACH,CAAC,QAAQ,GAAG,UAAU;AAAA,kDACxB,EAAE;AAAA,gDACJ;AAAA,8CACF,OAAO;AACL,sDAAM,YAAY;AAAA,kDAChB;AAAA,kDACA,MAAM,mBAAmB;AAAA,kDACzB,CAAC,KAAK;AAAA,gDACR;AACA,qEAAqB,UAAU,EAAE;AACjC,yDAAS,CAAC,GAAG,SAAS,SAAS,CAAC;AAChC,iEAAiB,KAAK;AAAA,8CACxB;AAAA,4CACF;AAAA;AAAA,wCACF;AAAA;AAAA,oCACF;AAAA;AAAA;AAAA,gCAnGK;AAAA,8BAoGP;AAAA,4BAEJ;AAEA,mCACE,gBAAAC;AAAA,8BAAC;AAAA;AAAA,gCAEC,IAAI;AAAA,gCACJ,MAAK;AAAA,gCACL,iBAAe;AAAA,gCACf,oBAAkB,iBAAiB;AAAA,gCACnC,cAAc,MAAM,oBAAoB,KAAK;AAAA,gCAC7C,SAAS,MAAM,MAAM,OAAO,UAAU,MAAM,GAAG;AAAA,gCAC/C,WAAU;AAAA,gCAET;AAAA,wCAAM;AAAA,kCACP,gBAAAD,MAAC,UAAM,gBAAM,OAAM;AAAA;AAAA;AAAA,8BAVd,MAAM;AAAA,4BAWb;AAAA,0BAEJ,CAAC;AAAA,wBACH,GAAG,GACL;AAAA;AAAA,oBACF,GACF;AAAA;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA,QAGD,QAAQ,IAAI,CAAC,WAAW;AACvB,gBAAM,QAAQ,UAAU,OAAO,KAAK;AACpC,cAAI,CAAC,MAAO,QAAO;AACnB,iBACE,gBAAAC;AAAA,YAAC;AAAA;AAAA,cAMC,WAAU;AAAA,cAEV;AAAA,gCAAAA,OAAC,mBAAgB,WAAU,kCACxB;AAAA,wBAAM,QAAQ,MAAM;AAAA,kBACpB,MAAM;AAAA,mBACT;AAAA,gBACA,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC;AAAA,oBACA,UAAU,OAAO;AAAA,oBACjB,QAAQ,OAAO;AAAA,oBACf,UAAU,CAAC,aAAa,aAAa,OAAO,IAAI,EAAE,SAAS,CAAC;AAAA;AAAA,gBAC9D;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC;AAAA,oBACA,QAAQ,OAAO;AAAA,oBACf,UAAU,OAAO;AAAA,oBACjB,UAAU,CAAC,WAAW,aAAa,OAAO,IAAI,EAAE,OAAO,CAAC;AAAA,oBACxD,WAAW,OAAO,OAAO;AAAA;AAAA,gBAC3B;AAAA,gBACA,gBAAAA,MAAC,sBAAmB,SAAS,MAAM,aAAa,OAAO,EAAE,GAAG;AAAA;AAAA;AAAA,YAxBvD,OAAO;AAAA,UAyBd;AAAA,QAEJ,CAAC;AAAA;AAAA;AAAA,EACH,GACF;AAEJ;AAEO,IAAM,eAAe,CAC1B,OACA,UACA,SAAc,CAAC,OACA;AAAA,EACf,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC;AAAA,EAChE;AAAA,EACA,UAAU,YAAY;AAAA,EACtB;AACF;AAEO,IAAM,oBAAoB,CAC/B,IACA,OACA,QACA,iBAA8B,CAAC,OACX;AAAA,EACpB;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AACF;;;AE9mEA,SAAS,UAAU,uBAAuB;AAI1C,SAAS,SAAAc,QAAO,eAAAC,cAAa,aAAAC,kBAAiB;AAM1C,gBAAAC,OA2BA,QAAAC,cA3BA;AAJJ,IAAM,SAAS,gBAAgB;AAE/B,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAD;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mBAAmB,SAAS;AAAA,MACzC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yBAAyB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAC,gBAAgB;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;AAAA,UAAC,gBAAgB;AAAA,UAAhB;AAAA,YACC,QACE,gBAAAA,MAACF,cAAA,EAAY,WAAU,oDAAmD;AAAA;AAAA,QAE9E;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,GAAG;AACL,GAIK;AACH,SACE,gBAAAE,MAAC,gBAAgB,QAAhB,EACC,0BAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV,0BAAAC;AAAA,QAAC,gBAAgB;AAAA,QAAhB;AAAA,UACC,aAAU;AAAA,UACV,sBAAoB;AAAA,UACpB,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACC,GAAG;AAAA,UAEJ;AAAA,4BAAAD,MAAC,wBAAqB;AAAA,YACtB,gBAAAA,MAAC,gBAAgB,MAAhB,EAAqB,WAAU,OAC7B,UACH;AAAA,YACA,gBAAAA,MAAC,0BAAuB;AAAA;AAAA;AAAA,MAC1B;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA,GAAG;AACL,GAAqC;AACnC,SACE,gBAAAA;AAAA,IAAC,gBAAgB;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,GAA+B;AAC7B,SACE,gBAAAC;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,gBAAgB,UAAhB,EAAyB,WAAU,gDACjC,UACH;AAAA,QACA,gBAAAA;AAAA,UAAC,gBAAgB;AAAA,UAAhB;AAAA,YACC,QACE,gBAAAA,MAAC,UAAK,WAAU,gFAA+E;AAAA,YAGjG,0BAAAA,MAACH,QAAA,EAAM,WAAU,uBAAsB;AAAA;AAAA,QACzC;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA,GAAG;AACL,GAAoC;AAClC,SACE,gBAAAG;AAAA,IAAC,gBAAgB;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,GAA+D;AAC7D,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAACD,YAAA,EAAU;AAAA;AAAA,EACb;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE,gBAAAC;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAACF,cAAA,EAAY;AAAA;AAAA,EACf;AAEJ;;;AC5LA;AAAA,EAEE,cAAAI;AAAA,EAEA;AAAA,OACK;AAkLC,gBAAAC,aAAA;AA9KR,IAAM,0BACJ;AAEF,IAAM,WAAW;AAEjB,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwDrB,IAAM,yBAAyB;AAAA,EAC7B,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AACR;AAEA,IAAM,iCAAkE;AAAA,EACtE,SAAS;AAAA,EACT,MAAM;AACR;AAEA,SAAS,2BAA2B,SAA0B,WAAW,KAAK;AAC5E,MAAI,aAAa,KAAK;AACpB,WAAO;AAAA,EACT;AAEA,SAAO,+BAA+B,OAAO;AAC/C;AAEA,SAAS,uBAAuB;AAC9B,MAAI,OAAO,aAAa,aAAa;AACnC;AAAA,EACF;AAEA,MAAI,QAAQ,SAAS,eAAe,QAAQ;AAE5C,MAAI,CAAC,OAAO;AACV,YAAQ,SAAS,cAAc,OAAO;AACtC,UAAM,KAAK;AACX,aAAS,KAAK,YAAY,KAAK;AAAA,EACjC;AAEA,QAAM,cAAc;AACtB;AAEA,SAAS,yBAAyB;AAAA,EAChC,SAAAC,WAAU;AAAA,EACV,aAAa;AAAA,EACb;AACF,GAIG;AACD,MAAI,cAAc,UAAU,MAAM;AAChC,WAAO,EAAE,eAAe,KAAc;AAAA,EACxC;AAEA,SAAO;AAAA,IACL,cAAc,UAAUA,WAAU,YAAY;AAAA,IAC9C,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACF;AAWA,IAAM,WAAWC,YAA0C,SAASC,UAClE;AAAA,EACE,SAAAF,WAAU;AAAA,EACV;AAAA,EACA,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GACA,KACA;AACA,QAAM,kBAAkB,2BAA2B,SAAS,QAAQ;AACpE,QAAM,cAAcA,YAAW,YAAY;AAC3C,QAAM,WAAWA,YAAW,YAAY;AAExC,kBAAgB,MAAM;AACpB,QAAIA,UAAS;AACX,2BAAqB;AAAA,IACvB;AAAA,EACF,GAAG,CAACA,QAAO,CAAC;AAEZ,QAAM,gBACJ,eAAe,WACV;AAAA,IACC,GAAG;AAAA,IACH,8BAA8B,GAAG,eAAe;AAAA,EAClD,IACA;AAEN,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ,uBAAuB,OAAO;AAAA,QAC9B;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACN,GAAG,yBAAyB,EAAE,SAAAC,UAAS,YAAY,MAAM,CAAC;AAAA,MAC1D,GAAG;AAAA,MAEH,wBACC,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,eAAY;AAAA,UACZ,WAAU;AAAA;AAAA,MACZ,IACE;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,SAAS,cAAc;AAEvB,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,WAAW,SAAS;AAAA,MAClC,YAAU;AAAA,MACV,SAAQ;AAAA,MACP,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAkB;AAC5D,SAAO,gBAAAA,MAAC,YAAS,WAAW,GAAG,OAAO,SAAS,GAAG,YAAU,MAAE,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,YAAY,SAAS;AAAA,MACnC,YAAU;AAAA,MACV,SAAQ;AAAA,MACP,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,kBAAkB;;;AClOxB,SAAS,oBAA4C;AACrD,SAAS,gBAAgB;AAOrB,gBAAAI,aAAA;AALJ,IAAM,UAAU,CAAC,EAAE,cAAc,YAAY,GAAG,MAAM,MAAyB;AAC7E,QAAM,EAAE,QAAQ,SAAS,IAAI,SAAS;AACtC,QAAM,eAAe,UAAU,SAAS,SAAS;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAS;AAAA,MACT;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACfA,SAAS,UAAU,uBAAuB;AAqBpC,gBAAAC,aAAA;AAjBN,SAAS,OAAO;AAAA,EACd;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAEG;AACD,SACE,gBAAAA;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC,gBAAgB;AAAA,QAAhB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA;AAAA,MACZ;AAAA;AAAA,EACF;AAEJ;","names":["jsx","jsx","jsxs","jsx","jsxs","motion","jsx","jsxs","initialProps","animateProps","motion","motion","jsx","jsxs","initialProps","animateProps","motion","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","cva","cva","mergeProps","useRender","cva","jsx","cva","useRender","mergeProps","mergeProps","useRender","cva","jsx","jsx","cva","useRender","mergeProps","jsx","React","jsx","jsxs","api","React","jsx","jsxs","config","React","ChevronDown","Xmark","cva","jsx","jsx","cva","jsx","jsxs","ChevronDown","Xmark","Xmark","jsx","jsxs","Xmark","jsx","jsxs","React","jsx","motion","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","cva","jsx","cva","cva","useMemo","jsx","jsx","jsxs","cva","useMemo","useCallback","useState","jsx","jsxs","useState","useCallback","React","jsx","jsxs","mergeProps","useRender","cva","jsx","cva","useRender","mergeProps","useEffect","useState","JellyBlobMascot","jsx","jsx","jsx","Fragment","jsx","jsxs","clsx","AnimatePresence","motion","Fragment","useEffect","useId","useRef","useState","twMerge","jsx","jsxs","cn","OTPInput","jsx","React","jsx","jsxs","jsx","useRender","cva","createContext","useCallback","useContext","useEffect","useId","useMemo","useRef","useState","jsx","jsxs","Tooltip","CheckIcon","Fragment","jsx","jsxs","createContext","useContext","cva","useState","useRef","useEffect","Tooltip","useCallback","useMemo","useId","open","useRender","Check","ChevronDown","ChevronUp","jsx","jsxs","forwardRef","jsx","animate","forwardRef","Skeleton","jsx","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ui/accordion.tsx","../../src/lib/utils.ts","../../src/ui/alert-dialog.tsx","../../src/ui/button.tsx","../../src/ui/apple/index.tsx","../../src/ui/apple/english.tsx","../../src/ui/apple/hindi.tsx","../../src/ui/apple/spanish.tsx","../../src/ui/ariakit.tsx","../../src/ui/autocomplete.tsx","../../src/ui/input.tsx","../../src/ui/scroll-area.tsx","../../src/ui/avatar.tsx","../../src/ui/badge.tsx","../../src/ui/bridge.tsx","../../src/lib/capacitor.ts","../../src/ui/bubble.tsx","../../src/ui/button-group.tsx","../../src/ui/separator.tsx","../../src/ui/card.tsx","../../src/ui/carousel.tsx","../../src/ui/chart.tsx","../../src/ui/checkbox.tsx","../../src/ui/combobox.tsx","../../src/ui/input-group.tsx","../../src/ui/textarea.tsx","../../src/ui/command.tsx","../../src/ui/dialog.tsx","../../src/ui/dashed.tsx","../../src/ui/dock.tsx","../../src/ui/drawer.tsx","../../src/ui/dropdown-menu.tsx","../../src/ui/empty.tsx","../../src/ui/farmer/FramerMotionVariants.ts","../../src/ui/field.tsx","../../src/ui/label.tsx","../../src/ui/image.tsx","../../src/ui/input-otp.tsx","../../src/ui/item.tsx","../../src/hooks/useMounted.ts","../../src/ui/jelly.tsx","../../src/ui/kbd.tsx","../../src/ui/message.tsx","../../src/ui/message-scroller.tsx","../../src/ui/otp.tsx","../../src/ui/popover.tsx","../../src/ui/quantity.tsx","../../src/ui/radio-group.tsx","../../src/ui/reui/filters.tsx","../../src/ui/tooltip.tsx","../../src/ui/select.tsx","../../src/ui/skeleton.tsx","../../src/ui/sonner.tsx","../../src/ui/sortable.tsx","../../src/lib/compose-refs.ts","../../src/hooks/use-isomorphic-layout-effect.ts","../../src/ui/switch.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\nimport type * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { ChevronDown, ChevronUp } from \"@gravity-ui/icons\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(\"flex w-full flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"not-last:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n endContent,\n ...props\n}: AccordionPrimitive.Trigger.Props & {\n endContent?: React.ReactNode\n}) {\n return (\n <AccordionPrimitive.Header className=\"flex items-center\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium\",\n className\n )}\n {...props}\n >\n {children}\n\n <ChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n\n {endContent ? (\n <div className={cn(\"flex shrink-0 items-center gap-2\", className)}>\n {endContent}\n </div>\n ) : null}\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n \"h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\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","\"use client\"\n\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\nimport * as React from \"react\"\n\nimport { Button } from \"#components/button\"\nimport { cn } from \"#lib/utils\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\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(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\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 \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\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(\n \"text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\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(\n \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,opacity,transform] duration-150 ease-[var(--ease-out)] outline-none select-none motion-reduce:transition-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:opacity-70 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n \"icon-title\":\n \"size-8 sm:h-8 sm:w-auto sm:gap-1.5 sm:px-2.5 sm:has-data-[icon=inline-end]:pr-2 sm:has-data-[icon=inline-start]:pl-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\nimport { AnimatePresence } from \"motion/react\"\nimport { useState } from \"react\"\nimport { AppleHelloEffectEnglish } from \"./english\"\nimport { AppleHelloEffectHindi } from \"./hindi\"\nimport { AppleHelloEffectSpanish } from \"./spanish\"\n\nexport function Apple() {\n const [index, setIndex] = useState(0)\n\n const handleAnimationEnd = () => {\n setIndex((prevIndex) => (prevIndex + 1) % 3)\n }\n\n const demos = [\n <AppleHelloEffectHindi\n key=\"hindi\"\n onAnimationComplete={handleAnimationEnd}\n />,\n <AppleHelloEffectEnglish\n key=\"english\"\n onAnimationComplete={handleAnimationEnd}\n />,\n\n <AppleHelloEffectSpanish\n key=\"spanish\"\n durationScale={0.8}\n onAnimationComplete={handleAnimationEnd}\n />,\n ]\n return (\n <main className=\"m-auto flex grow items-center justify-center\">\n <AnimatePresence mode=\"wait\">{demos[index]}</AnimatePresence>\n </main>\n )\n}\n","\"use client\"\n\nimport { cn } from \"#lib/utils\"\nimport type { TargetAndTransition } from \"motion/react\"\nimport { motion } from \"motion/react\"\nimport type { ComponentProps } from \"react\"\n\nconst initialProps: TargetAndTransition = {\n pathLength: 0,\n opacity: 0,\n}\n\nconst animateProps: TargetAndTransition = {\n pathLength: 1,\n opacity: 1,\n}\n\nexport type AppleHelloEffectEnglishProps = Omit<\n ComponentProps<typeof motion.svg>,\n \"durationScale\" | \"onAnimationComplete\"\n> & {\n /**\n * Scales the duration and delay of the handwriting animation.\n * Values below 1 speed up, values above 1 slow down.\n * @defaultValue 1\n */\n durationScale?: number\n /** Called when the full handwriting animation completes. */\n onAnimationComplete?: () => void\n}\n\nexport function AppleHelloEffectEnglish({\n className,\n durationScale = 1,\n onAnimationComplete,\n ...props\n}: AppleHelloEffectEnglishProps) {\n const calc = (x: number) => x * durationScale\n\n return (\n <motion.svg\n className={cn(\"h-20\", className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 638 200\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"14.8883\"\n strokeLinecap=\"round\"\n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n {...props}\n >\n <title>hello</title>\n\n {/* h1 */}\n <motion.path\n d=\"M8.69214 166.553C36.2393 151.239 61.3409 131.548 89.8191 98.0295C109.203 75.1488 119.625 49.0228 120.122 31.0026C120.37 17.6036 113.836 7.43883 101.759 7.43883C88.3598 7.43883 79.9231 17.6036 74.7122 40.9363C69.005 66.5793 64.7866 96.0036 54.1166 190.356\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeInOut\",\n opacity: { duration: 0.4 },\n }}\n />\n\n {/* h2, ello */}\n <motion.path\n d=\"M55.1624 181.135C60.6251 133.114 81.4118 98.0479 107.963 98.0479C123.844 98.0479 133.937 110.703 131.071 128.817C129.457 139.487 127.587 150.405 125.408 163.06C122.869 178.941 130.128 191.348 152.122 191.348C184.197 191.348 219.189 173.523 237.097 145.915C243.198 136.509 245.68 128.073 245.928 119.884C246.176 104.996 237.739 93.8296 222.851 93.8296C203.992 93.8296 189.6 115.17 189.6 142.465C189.6 171.745 205.481 192.341 239.208 192.341C285.066 192.341 335.86 137.292 359.199 75.8585C365.788 58.513 368.26 42.4065 368.26 31.1512C368.26 17.8057 364.042 7.55823 352.131 7.55823C340.469 7.55823 332.777 16.6141 325.829 30.9129C317.688 47.4967 311.667 71.4162 309.203 98.4549C303 166.301 316.896 191.348 349.936 191.348C390 191.348 434.542 135.534 457.286 75.6686C463.803 58.513 466.275 42.4065 466.275 31.1512C466.275 17.8057 462.057 7.55823 450.146 7.55823C438.484 7.55823 430.792 16.6141 423.844 30.9129C415.703 47.4967 409.682 71.4162 407.218 98.4549C401.015 166.301 414.911 191.348 444.416 191.348C473.874 191.348 489.877 165.67 499.471 138.402C508.955 111.447 520.618 94.8221 544.935 94.8221C565.035 94.8221 580.916 109.71 580.916 137.75C580.916 168.768 560.792 192.093 535.362 192.341C512.984 192.589 498.285 174.475 499.774 147.179C501.511 116.907 519.873 94.8221 543.943 94.8221C557.839 94.8221 569.51 100.999 578.682 107.725C603.549 125.866 622.709 114.656 630.047 96.7186\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(2.8),\n ease: \"easeInOut\",\n delay: calc(0.7),\n opacity: { duration: 0.7, delay: calc(0.7) },\n }}\n onAnimationComplete={onAnimationComplete}\n />\n </motion.svg>\n )\n}\n","\"use client\"\n\nimport type { TargetAndTransition } from \"motion/react\"\nimport { motion } from \"motion/react\"\nimport type { ComponentProps } from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nconst initialProps: TargetAndTransition = {\n pathLength: 0,\n opacity: 0,\n}\n\nconst animateProps: TargetAndTransition = {\n pathLength: 1,\n opacity: 1,\n}\n\nexport type AppleHelloEffectHindiProps = Omit<\n ComponentProps<typeof motion.svg>,\n \"durationScale\" | \"onAnimationComplete\"\n> & {\n /**\n * Scales the duration and delay of the handwriting animation.\n * Values below 1 speed up, values above 1 slow down.\n * @defaultValue 0.8\n */\n durationScale?: number\n /** Called when the full handwriting animation completes. */\n onAnimationComplete?: () => void\n}\n\nexport function AppleHelloEffectHindi({\n className,\n durationScale = 0.8,\n onAnimationComplete,\n ...props\n}: AppleHelloEffectHindiProps) {\n const calc = (x: number) => x * durationScale\n\n return (\n <motion.svg\n className={cn(\"h-20\", className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 605 273\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"14.888\"\n strokeLinecap=\"round\"\n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n {...props}\n >\n <title>नमस्ते</title>\n <motion.path\n d=\"M42.3842 150.002C53.2928 153.473 60.4984 162.29 60.4984 175.561C60.4984 189.953 50.3247 201.119 36.677 201.119C24.022 201.119 14.8408 192.186 14.8408 179.035C14.8408 160.269 31.2182 148.265 56.5282 149.01C82.0863 149.754 103.723 163.663 120.367 185.069\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n opacity: { duration: 0.2 },\n }}\n />\n <motion.path\n d=\"M133.502 93.5842C124.459 153.875 117.303 209.683 111.71 264.988\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(0.6),\n opacity: { duration: 0.2, delay: calc(0.6) },\n }}\n />\n <motion.path\n d=\"M216.556 90.9181C217.117 117.977 216.81 137.689 214.869 160.067C212.007 193.058 200.119 213.115 180.936 213.115C169.295 213.115 160.844 205.334 160.844 193.399C160.844 177.222 175.901 164.28 203.653 165.376C229.863 166.411 256.651 174.863 275.138 192.025\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(1),\n opacity: { duration: 0.2, delay: calc(1) },\n }}\n />\n <motion.path\n d=\"M289.489 90.0085C280.255 150.162 272.672 207.783 267.379 263.003\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(1.6),\n opacity: { duration: 0.2, delay: calc(1.6) },\n }}\n />\n <motion.path\n d=\"M373.949 90.0198C394.816 102.051 408.098 128.602 408.098 154.079C408.098 185.141 387.465 205.586 358.47 205.586C330.249 205.586 311.145 186.038 317.527 170.35C322.864 157.231 341.378 156.812 356.237 168.861C374.674 183.811 382.044 216.764 385.021 261.169\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(2),\n opacity: { duration: 0.2, delay: calc(2) },\n }}\n />\n <motion.path\n d=\"M403.474 177.549C418.085 183.32 439.163 184.314 458.424 179.805\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(2.6),\n opacity: { duration: 0.2, delay: calc(2.6) },\n }}\n />\n <motion.path\n d=\"M556.981 88.1333C546.807 149.619 538.371 207.01 531.919 262.906\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.4),\n ease: \"easeOut\",\n delay: calc(3),\n opacity: { duration: 0.2, delay: calc(3) },\n }}\n />\n <motion.path\n d=\"M536.891 222.462C541.984 183.336 528.689 152.484 496.435 152.484C472.365 152.484 453.755 175.064 453.755 203.104C453.755 223.451 461.199 245.784 475.095 261.417\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(3.4),\n opacity: { duration: 0.2, delay: calc(3.4) },\n }}\n />\n <motion.path\n d=\"M521.259 45.4307C485.619 43.0134 474.856 32.3917 474.856 21.5298C474.856 12.832 482.71 7.04349 493.506 7.46568C518.289 8.37031 542.96 35.3336 555.578 70.4412\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.6),\n ease: \"easeOut\",\n delay: calc(4),\n opacity: { duration: 0.2, delay: calc(4) },\n }}\n />\n <motion.path\n d=\"M7.44434 88.6792C30.9102 88.8706 59.0093 89.2085 95.3706 89.2085C132.178 89.2085 208.165 89.2571 253.623 89.2047C295.091 89.1568 396.683 89.0223 452.784 89.0234C506.182 89.0244 552.847 88.4444 596.931 87.2836\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeOut\",\n delay: calc(4.6),\n opacity: { duration: 0.2, delay: calc(4.6) },\n }}\n onAnimationComplete={onAnimationComplete}\n />\n </motion.svg>\n )\n}\n","\"use client\"\n\nimport type { TargetAndTransition } from \"motion/react\"\nimport { motion } from \"motion/react\"\nimport type { ComponentProps } from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nconst initialProps: TargetAndTransition = {\n pathLength: 0,\n opacity: 0,\n}\n\nconst animateProps: TargetAndTransition = {\n pathLength: 1,\n opacity: 1,\n}\n\nexport type AppleHelloEffectSpanishProps = Omit<\n ComponentProps<typeof motion.svg>,\n \"durationScale\" | \"onAnimationComplete\"\n> & {\n /**\n * Scales the duration and delay of the handwriting animation.\n * Values below 1 speed up, values above 1 slow down.\n * @defaultValue 1\n */\n durationScale?: number\n /** Called when the full handwriting animation completes. */\n onAnimationComplete?: () => void\n}\n\nexport function AppleHelloEffectSpanish({\n className,\n durationScale = 1,\n onAnimationComplete,\n ...props\n}: AppleHelloEffectSpanishProps) {\n const calc = (x: number) => x * durationScale\n\n return (\n <motion.svg\n className={cn(\"h-20\", className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 562 200\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"14.888\"\n strokeLinecap=\"round\"\n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n {...props}\n >\n <title>Hola</title>\n <motion.path\n d=\"M8.692 169.422c27.495-16.185 51.282-36.493 77.822-72.424 18.627-25.219 27.738-47.893 28.236-65.962.248-13.399-6.204-23.563-18.362-23.563-13.4 0-21.837 10.164-27.048 33.497-5.707 25.643-9.925 55.067-20.595 149.42\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeOut\",\n opacity: { duration: 0.4 },\n }}\n />\n <motion.path\n d=\"M49.79 181.168c5.265-46.274 26.25-83.086 52.801-83.086 15.881 0 25.974 12.655 23.108 30.769-1.613 10.67-4.528 23.077-6.193 35.236-2.026 15.384 3.761 27.295 21.655 27.295 25.257 0 41.157-24.523 48.037-53.562\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeInOut\",\n delay: calc(0.7),\n opacity: { duration: 0.2, delay: calc(0.8) },\n }}\n />\n <motion.path\n d=\"M234.601 94.36c-24.822 2.006-43.39 23.044-46.898 51.861-3.226 26.302 11.414 46.154 34.739 46.154 28.288 0 46.65-24.318 47.891-54.591.992-29.032-12.903-43.672-31.762-43.672-14.888 0-22.829 11.166-22.332 24.813.484 18.661 14.478 39.612 43.839 42.289 40.725 3.714 96.424-26.396 118.914-85.593 6.487-17.074 8.959-33.18 8.959-44.436 0-13.346-4.219-23.593-16.129-23.593-11.663 0-19.355 9.056-26.303 23.355-8.14 16.583-14.162 40.503-16.625 67.542-6.204 67.846 7.692 92.893 37.42 92.893 30.127 0 50.049-26.113 58.664-56.317\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(1.6),\n ease: \"easeInOut\",\n delay: calc(1.4),\n opacity: { duration: 0.2, delay: calc(1.5) },\n }}\n />\n <motion.path\n d=\"M503.236 112.864c-4.864-11.195-15.204-18.753-31.664-18.753-27.295 0-47.808 27.296-49.155 56.576-1.174 26.799 11.192 41.864 28.805 41.687 25.001-.25 43.378-24.805 51.581-76.763 1.012-6.41 2.061-13.104 3.073-19.514\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.7),\n ease: \"easeInOut\",\n delay: calc(2.9),\n opacity: { duration: 0.2, delay: calc(3) },\n }}\n />\n <motion.path\n d=\"m505.875 96.097-3.073 19.507c-4.482 28.44-6.549 39.66-6.327 46.994.518 17.121 6.675 28.784 22.06 28.784 19.355 0 30.21-13.152 35.421-27.544\"\n initial={initialProps}\n animate={animateProps}\n transition={{\n duration: calc(0.8),\n ease: \"easeInOut\",\n delay: calc(3.5),\n opacity: { duration: 0.2, delay: calc(3.5) },\n }}\n onAnimationComplete={onAnimationComplete}\n />\n </motion.svg>\n )\n}\n","export * as Ariakit from \"@ariakit/react\"\n","\"use client\"\n\nimport { cn } from \"#lib/utils\"\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\"\nimport { ChevronsExpandVertical, Xmark } from \"@gravity-ui/icons\"\nimport type React from \"react\"\nimport { Input } from \"./input\"\nimport { ScrollArea } from \"./scroll-area\"\n\nexport const Autocomplete: typeof AutocompletePrimitive.Root =\n AutocompletePrimitive.Root\n\nexport function AutocompleteInput({\n className,\n showTrigger = false,\n showClear = false,\n startAddon,\n size,\n triggerProps,\n clearProps,\n ...props\n}: Omit<AutocompletePrimitive.Input.Props, \"size\"> & {\n showTrigger?: boolean\n showClear?: boolean\n startAddon?: React.ReactNode\n size?: \"sm\" | \"default\" | \"lg\" | number\n ref?: React.Ref<HTMLInputElement>\n triggerProps?: AutocompletePrimitive.Trigger.Props\n clearProps?: AutocompletePrimitive.Clear.Props\n}): React.ReactElement {\n const sizeValue = (size ?? \"default\") as \"sm\" | \"default\" | \"lg\" | number\n\n return (\n <AutocompletePrimitive.InputGroup\n className=\"relative w-full text-foreground not-has-[>*.w-full]:w-fit has-disabled:opacity-64\"\n data-slot=\"autocomplete-input-group\"\n >\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 inset-s-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg]:-mx-0.5 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\"\n data-slot=\"autocomplete-start-addon\"\n >\n {startAddon}\n </div>\n )}\n <AutocompletePrimitive.Input\n className={cn(\n startAddon &&\n \"*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8.5)-1px)] data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7.5)-1px)] sm:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8)-1px)] sm:data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7)-1px)]\",\n sizeValue === \"sm\"\n ? \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-6.5\"\n : \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-7\",\n className\n )}\n data-slot=\"autocomplete-input\"\n render={<Input />}\n {...props}\n />\n {showTrigger && (\n <AutocompleteTrigger\n className={cn(\n \"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-colors outline-none hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\",\n sizeValue === \"sm\" ? \"inset-e-0\" : \"inset-e-0.5\"\n )}\n {...triggerProps}\n >\n <AutocompletePrimitive.Icon data-slot=\"autocomplete-icon\">\n <ChevronsExpandVertical />\n </AutocompletePrimitive.Icon>\n </AutocompleteTrigger>\n )}\n {showClear && (\n <AutocompleteClear\n className={cn(\n \"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-colors outline-none hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\",\n sizeValue === \"sm\" ? \"inset-e-0\" : \"inset-e-0.5\"\n )}\n {...clearProps}\n >\n <Xmark />\n </AutocompleteClear>\n )}\n </AutocompletePrimitive.InputGroup>\n )\n}\n\nexport function AutocompletePopup({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n alignOffset,\n align = \"start\",\n anchor,\n portalProps,\n ...props\n}: AutocompletePrimitive.Popup.Props & {\n align?: AutocompletePrimitive.Positioner.Props[\"align\"]\n sideOffset?: AutocompletePrimitive.Positioner.Props[\"sideOffset\"]\n alignOffset?: AutocompletePrimitive.Positioner.Props[\"alignOffset\"]\n side?: AutocompletePrimitive.Positioner.Props[\"side\"]\n anchor?: AutocompletePrimitive.Positioner.Props[\"anchor\"]\n portalProps?: AutocompletePrimitive.Portal.Props\n}): React.ReactElement {\n return (\n <AutocompletePrimitive.Portal {...portalProps}>\n <AutocompletePrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"z-50 select-none\"\n data-slot=\"autocomplete-positioner\"\n side={side}\n sideOffset={sideOffset}\n >\n <span\n className={cn(\n \"relative flex max-h-full max-w-(--available-width) min-w-(--anchor-width) origin-(--transform-origin) rounded-lg border bg-background shadow-lg/5 transition-[scale,opacity] not-dark:bg-clip-padding before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className\n )}\n >\n <AutocompletePrimitive.Popup\n className=\"flex max-h-[min(var(--available-height),23rem)] flex-1 flex-col text-foreground\"\n data-slot=\"autocomplete-popup\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Popup>\n </span>\n </AutocompletePrimitive.Positioner>\n </AutocompletePrimitive.Portal>\n )\n}\n\nexport function AutocompleteItem({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Item.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Item\n className={cn(\n \"flex min-h-8 cursor-default items-center rounded-sm px-2 py-1 text-base outline-none select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground sm:min-h-7 sm:text-sm data-disabled:pointer-events-none data-disabled:opacity-64\",\n className\n )}\n data-slot=\"autocomplete-item\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Item>\n )\n}\n\nexport function AutocompleteSeparator({\n className,\n ...props\n}: AutocompletePrimitive.Separator.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border last:hidden\", className)}\n data-slot=\"autocomplete-separator\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteGroup({\n className,\n ...props\n}: AutocompletePrimitive.Group.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Group\n className={cn(\"[[role=group]+&]:mt-1.5\", className)}\n data-slot=\"autocomplete-group\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteGroupLabel({\n className,\n ...props\n}: AutocompletePrimitive.GroupLabel.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 text-xs font-medium text-muted-foreground\",\n className\n )}\n data-slot=\"autocomplete-group-label\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteEmpty({\n className,\n ...props\n}: AutocompletePrimitive.Empty.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Empty\n className={cn(\n \"text-center text-base text-muted-foreground not-empty:p-2 sm:text-sm\",\n className\n )}\n data-slot=\"autocomplete-empty\"\n {...props}\n />\n )\n}\n\nexport function AutocompleteRow({\n className,\n ...props\n}: AutocompletePrimitive.Row.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Row\n className={className}\n data-slot=\"autocomplete-row\"\n {...props}\n />\n )\n}\n\nexport const AutocompleteValue: typeof AutocompletePrimitive.Value =\n AutocompletePrimitive.Value\n\nexport function AutocompleteList({\n className,\n ...props\n}: AutocompletePrimitive.List.Props): React.ReactElement {\n return (\n <ScrollArea>\n <AutocompletePrimitive.List\n className={cn(\n \"not-empty:scroll-py-1 not-empty:p-1 in-data-has-overflow-y:pe-3\",\n className\n )}\n data-slot=\"autocomplete-list\"\n {...props}\n />\n </ScrollArea>\n )\n}\n\nexport function AutocompleteClear({\n className,\n ...props\n}: AutocompletePrimitive.Clear.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Clear\n className={cn(\n \"absolute inset-e-0.5 top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-[color,background-color,box-shadow,opacity] outline-none hover:opacity-100 sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"autocomplete-clear\"\n {...props}\n >\n <Xmark />\n </AutocompletePrimitive.Clear>\n )\n}\n\nexport function AutocompleteStatus({\n className,\n ...props\n}: AutocompletePrimitive.Status.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Status\n className={cn(\n \"px-3 py-2 text-xs font-medium text-muted-foreground empty:m-0 empty:p-0\",\n className\n )}\n data-slot=\"autocomplete-status\"\n {...props}\n />\n )\n}\n\nexport const AutocompleteCollection: typeof AutocompletePrimitive.Collection =\n AutocompletePrimitive.Collection\n\nexport function AutocompleteTrigger({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Trigger.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Trigger\n className={className}\n data-slot=\"autocomplete-trigger\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Trigger>\n )\n}\n\nexport const useAutocompleteFilter: typeof AutocompletePrimitive.useFilter =\n AutocompletePrimitive.useFilter\n\nexport { AutocompletePrimitive }\n","import { Input as InputPrimitive } from \"@base-ui/react/input\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Input({\n className,\n type,\n inputMode,\n onWheel,\n ...props\n}: React.ComponentProps<\"input\">) {\n const isNumberInput = type === \"number\"\n\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n inputMode={isNumberInput ? \"decimal\" : inputMode}\n onWheel={\n isNumberInput\n ? (event) => {\n event.currentTarget.blur()\n onWheel?.(event)\n }\n : onWheel\n }\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n isNumberInput &&\n \"[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\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=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 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}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-full bg-border\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\n \"aspect-square size-full rounded-full object-cover\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarBadge,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,opacity] duration-150 ease-[var(--ease-out)] motion-reduce:transition-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n","\"use client\"\n\nimport { useRouter } from \"next/navigation\"\nimport * as React from \"react\"\n\nimport {\n getNativeAppPlugin,\n getNativePlatform,\n getNativeStatusBarPlugin,\n getNativeThemePlugin,\n isNativeApp,\n} from \"../lib\"\n\nfunction getAppPath(value: string) {\n try {\n const url = new URL(value)\n\n if (url.protocol === \"https:\" && url.hostname === \"kdpower.in\") {\n return `${url.pathname}${url.search}${url.hash}`\n }\n\n if (url.protocol === \"kdpower:\" && url.hostname === \"open\") {\n return `${url.pathname}${url.search}${url.hash}`\n }\n } catch {\n // Ignore malformed or unrelated deep links.\n }\n\n return null\n}\n\nfunction getCurrentTheme(): \"light\" | \"dark\" {\n return document.documentElement.classList.contains(\"dark\") ? \"dark\" : \"light\"\n}\n\nfunction syncNativeStatusBar() {\n const statusBar = getNativeStatusBarPlugin()\n if (!statusBar) return\n\n const theme = getCurrentTheme()\n const backgroundColor = theme === \"dark\" ? \"#000000\" : \"#ffffff\"\n\n void Promise.all([\n statusBar.setStyle?.({\n style: theme === \"dark\" ? \"DARK\" : \"LIGHT\",\n }),\n statusBar.setBackgroundColor?.({\n color: backgroundColor,\n }),\n ]).catch(() => {\n // Status bar sync is optional.\n })\n}\n\nfunction syncNativeTheme() {\n const nativeTheme = getNativeThemePlugin()\n if (!nativeTheme) return\n\n void nativeTheme\n .setStyle?.({\n style: getCurrentTheme(),\n })\n .catch(() => {\n // Native theme sync is optional when the local native plugin is absent.\n })\n}\n\nfunction syncNativeAppearance() {\n syncNativeStatusBar()\n syncNativeTheme()\n}\n\nexport function NativeAppBridge() {\n const router = useRouter()\n\n React.useEffect(() => {\n if (!isNativeApp()) return\n\n const root = document.documentElement\n const platform = getNativePlatform()\n\n root.dataset.nativeApp = \"true\"\n\n if (platform) {\n root.dataset.nativePlatform = platform\n }\n\n if (\n platform === \"ios\" &&\n navigator.platform === \"MacIntel\" &&\n navigator.maxTouchPoints < 2\n ) {\n root.dataset.nativeDevice = \"mac\"\n }\n\n // Initial native appearance sync.\n syncNativeAppearance()\n\n // Watch next-themes changing the <html> class.\n const themeObserver = new MutationObserver(() => {\n syncNativeAppearance()\n })\n\n themeObserver.observe(root, {\n attributes: true,\n attributeFilter: [\"class\"],\n })\n\n let cancelled = false\n let removeAppUrlListener: (() => Promise<void>) | undefined\n\n const appPlugin = getNativeAppPlugin()\n\n if (appPlugin?.addListener) {\n const listenerResult = appPlugin.addListener(\"appUrlOpen\", ({ url }) => {\n const path = getAppPath(url)\n\n if (path) {\n router.push(path)\n }\n })\n\n void Promise.resolve(listenerResult)\n .then((listener) => {\n if (cancelled) {\n void listener.remove()\n return\n }\n\n removeAppUrlListener = () => listener.remove()\n })\n .catch(() => {\n // Deep-link support is optional when the native App plugin is absent.\n })\n }\n\n return () => {\n cancelled = true\n\n themeObserver.disconnect()\n\n void removeAppUrlListener?.()\n\n delete root.dataset.nativeApp\n delete root.dataset.nativePlatform\n delete root.dataset.nativeDevice\n }\n }, [router])\n\n return null\n}\n","type PluginListenerHandle = {\n remove: () => Promise<void>\n}\n\ntype AppUrlOpenEvent = {\n url: string\n}\n\ntype AppPlugin = {\n addListener?: (\n eventName: \"appUrlOpen\",\n listener: (event: AppUrlOpenEvent) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype StatusBarStyle = \"DARK\" | \"LIGHT\" | \"DEFAULT\"\n\ntype StatusBarPlugin = {\n setBackgroundColor?: (options: { color: string }) => Promise<void>\n setStyle?: (options: { style: StatusBarStyle }) => Promise<void>\n}\n\ntype BrowserPlugin = {\n open?: (options: { url: string }) => Promise<void>\n}\n\ntype NativeSharePlugin = {\n share?: (options: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n }) => Promise<void>\n}\n\ntype NativeThemePlugin = {\n setStyle?: (options: { style: \"dark\" | \"light\" | \"system\" }) => Promise<void>\n}\n\ntype NativePaymentPlugin = {\n openUpiUrl?: (options: {\n url: string\n title?: string\n }) => Promise<{ opened: boolean }>\n}\n\nexport type NativeSharedFile = {\n name: string\n type: string\n size: number\n data: string\n}\n\ntype NativeImagePickerPlugin = {\n pickImages?: (options: {\n limit?: number\n title?: string\n }) => Promise<{ files: NativeSharedFile[] }>\n}\n\nexport type NativeSharePayload = {\n id: string\n title?: string | null\n text?: string | null\n files: NativeSharedFile[]\n}\n\ntype NativeShareTargetPlugin = {\n addListener?: (\n eventName: \"shareReceived\",\n listener: (event: NativeSharePayload) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n getPendingShare?: () => Promise<{ share: NativeSharePayload | null }>\n clearPendingShare?: () => Promise<void>\n}\n\ntype NativeAppSettingsPlugin = {\n openAppSettings?: () => Promise<void>\n}\n\nexport type NativeUpdateState = {\n status: \"downloading\" | \"downloaded\" | \"installing\" | \"installed\" | \"failed\" | \"canceled\" | \"unknown\"\n bytesDownloaded: number\n totalBytesToDownload: number\n}\n\nexport type NativeUpdateInfo = NativeUpdateState & {\n available: boolean\n inProgress: boolean\n availableVersionCode: number\n installStatus: NativeUpdateState[\"status\"]\n}\n\ntype NativeInAppUpdatePlugin = {\n checkForUpdate?: () => Promise<NativeUpdateInfo>\n startUpdate?: () => Promise<void>\n completeUpdate?: () => Promise<void>\n addListener?: (\n eventName: \"updateStateChanged\",\n listener: (state: NativeUpdateState) => void\n ) => PluginListenerHandle | Promise<PluginListenerHandle>\n}\n\ntype NativeShareFilePlugin = {\n saveImage?: (options: {\n data: string\n fileName?: string\n }) => Promise<{ path?: string }>\n}\n\ntype CameraPhoto = {\n format?: string\n path?: string\n webPath?: string\n}\n\ntype CameraPlugin = {\n getPhoto?: (options: {\n allowEditing?: boolean\n quality?: number\n resultType: \"uri\"\n source?: \"PROMPT\" | \"CAMERA\" | \"PHOTOS\"\n }) => Promise<CameraPhoto>\n pickImages?: (options: {\n limit?: number\n quality?: number\n }) => Promise<{ photos: CameraPhoto[] }>\n}\n\ntype CapacitorRuntime = {\n isNativePlatform?: () => boolean\n getPlatform?: () => string\n Plugins?: {\n App?: AppPlugin\n Browser?: BrowserPlugin\n Camera?: CameraPlugin\n NativeAppSettings?: NativeAppSettingsPlugin\n NativeInAppUpdate?: NativeInAppUpdatePlugin\n NativeImagePicker?: NativeImagePickerPlugin\n NativeShareFile?: NativeShareFilePlugin\n NativePayment?: NativePaymentPlugin\n NativeTheme?: NativeThemePlugin\n NativeShareTarget?: NativeShareTargetPlugin\n Share?: NativeSharePlugin\n StatusBar?: StatusBarPlugin\n }\n}\n\ndeclare global {\n interface Window {\n Capacitor?: CapacitorRuntime\n }\n}\n\nexport function isNativeApp() {\n if (typeof window === \"undefined\") return false\n\n return window.Capacitor?.isNativePlatform?.() === true\n}\n\nexport function getNativePlatform() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.getPlatform?.() ?? null\n}\n\nexport function getNativeAppPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.App ?? null\n}\n\nexport function getNativeStatusBarPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.StatusBar ?? null\n}\n\nexport function getNativeBrowserPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Browser ?? null\n}\n\nexport function getNativeSharePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Share ?? null\n}\n\nexport function getNativeCameraPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.Camera ?? null\n}\n\nexport function getNativeImagePickerPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeImagePicker ?? null\n}\n\nexport function getNativeShareFilePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareFile ?? null\n}\n\nexport function getNativeThemePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeTheme ?? null\n}\n\nexport function getNativePaymentPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativePayment ?? null\n}\n\nexport function getNativeShareTargetPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeShareTarget ?? null\n}\n\nexport function getNativeAppSettingsPlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeAppSettings ?? null\n}\n\nexport function getNativeInAppUpdatePlugin() {\n if (!isNativeApp()) return null\n\n return window.Capacitor?.Plugins?.NativeInAppUpdate ?? null\n}\n\n/** Opens the OS App Info page. Returns false when unavailable (web or old shell). */\nexport async function openNativeAppSettings() {\n const settings = getNativeAppSettingsPlugin()\n\n if (!settings?.openAppSettings) return false\n\n try {\n await settings.openAppSettings()\n return true\n } catch {\n return false\n }\n}\n\nexport async function openUpiPaymentUrl(\n url: string,\n options: {\n isNative?: boolean\n title?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const payment = getNativePaymentPlugin()\n\n if (payment?.openUpiUrl) {\n const result = await payment.openUpiUrl({\n url,\n title: options.title,\n })\n\n return result.opened\n }\n }\n\n window.location.href = url\n return true\n}\n\nexport async function openExternalUrl(\n url: string,\n options: {\n isNative?: boolean\n target?: string\n features?: string\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const browser = getNativeBrowserPlugin()\n\n if (browser?.open) {\n await browser.open({ url })\n return true\n }\n }\n\n const opened = window.open(\n url,\n options.target ?? \"_blank\",\n options.features ?? \"noopener,noreferrer\"\n )\n\n return opened != null\n}\n\n/**\n * Saves base64 image bytes into app-private storage and returns a file:// URL\n * that @capacitor/share can attach. Returns null outside the native app or\n * when the save fails, so callers can fall back to a text-only share.\n */\nexport async function saveNativeShareImage(\n dataUrl: string,\n options: {\n fileName?: string\n isNative?: boolean\n } = {}\n) {\n if (!(options.isNative ?? isNativeApp())) return null\n\n const plugin = getNativeShareFilePlugin()\n\n if (!plugin?.saveImage) return null\n\n try {\n const result = await plugin.saveImage({\n data: dataUrl,\n fileName: options.fileName,\n })\n\n return result.path ?? null\n } catch {\n return null\n }\n}\n\nexport async function shareNativeOrWeb(\n data: {\n title?: string\n text?: string\n url?: string\n files?: string[]\n dialogTitle?: string\n },\n options: {\n isNative?: boolean\n } = {}\n) {\n if (typeof window === \"undefined\") return false\n\n if (options.isNative ?? isNativeApp()) {\n const share = getNativeSharePlugin()\n\n if (share?.share) {\n await share.share(data)\n return true\n }\n }\n\n // Web Share only accepts File objects, not file:// URL strings.\n const { files: _files, ...webData } = data\n\n if (typeof navigator.share === \"function\") {\n await navigator.share(webData)\n return true\n }\n\n return false\n}\n\nfunction isNativePickerCancel(error: unknown) {\n if (!(error instanceof Error)) return false\n\n const message = error.message.toLowerCase()\n\n return (\n message.includes(\"cancel\") ||\n message.includes(\"dismiss\") ||\n message.includes(\"no image\") ||\n message.includes(\"user denied\")\n )\n}\n\nfunction imageTypeFromFormat(format: string | undefined, fallback: string) {\n if (!format) return fallback\n\n const normalized = format.toLowerCase()\n\n if (normalized === \"jpg\") return \"image/jpeg\"\n if (normalized === \"jpeg\") return \"image/jpeg\"\n if (normalized === \"png\") return \"image/png\"\n if (normalized === \"webp\") return \"image/webp\"\n if (normalized === \"heic\") return \"image/heic\"\n if (normalized === \"heif\") return \"image/heif\"\n\n return fallback\n}\n\nfunction imageExtensionFromType(type: string) {\n if (type.includes(\"png\")) return \"png\"\n if (type.includes(\"webp\")) return \"webp\"\n if (type.includes(\"heic\")) return \"heic\"\n if (type.includes(\"heif\")) return \"heif\"\n\n return \"jpg\"\n}\n\nexport function nativeSharedFileToFile(\n sharedFile: NativeSharedFile,\n fallbackName = \"native-image.jpg\"\n) {\n const binary = atob(sharedFile.data)\n const bytes = new Uint8Array(binary.length)\n\n for (let index = 0; index < binary.length; index++) {\n bytes[index] = binary.charCodeAt(index)\n }\n\n return new File([bytes], sharedFile.name || fallbackName, {\n type: sharedFile.type || \"image/jpeg\",\n lastModified: Date.now(),\n })\n}\n\nasync function nativePhotoToFile(\n photo: CameraPhoto,\n index: number,\n prefix: string\n) {\n const src = photo.webPath ?? photo.path\n\n if (!src) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const response = await fetch(src)\n\n if (!response.ok) {\n throw new Error(\"Unable to read selected image.\")\n }\n\n const blob = await response.blob()\n const type = blob.type || imageTypeFromFormat(photo.format, \"image/jpeg\")\n const extension = imageExtensionFromType(type)\n\n return new File([blob], `${prefix}-${Date.now()}-${index}.${extension}`, {\n type,\n lastModified: Date.now(),\n })\n}\n\nexport async function pickNativeImageFiles({\n isNative,\n multiple = false,\n limit = multiple ? 10 : 1,\n quality = 85,\n prefix = \"image\",\n}: {\n isNative?: boolean\n multiple?: boolean\n limit?: number\n quality?: number\n prefix?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const camera = getNativeCameraPlugin()\n\n if (!camera) return null\n\n try {\n const photos =\n multiple && camera.pickImages\n ? (await camera.pickImages({ limit, quality })).photos\n : [\n await camera.getPhoto?.({\n allowEditing: false,\n quality,\n resultType: \"uri\",\n source: \"PROMPT\",\n }),\n ].filter((photo): photo is CameraPhoto => Boolean(photo))\n\n return Promise.all(\n photos\n .slice(0, limit)\n .map((photo, index) => nativePhotoToFile(photo, index, prefix))\n )\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n\nexport async function pickNativeChooserImageFiles({\n isNative,\n limit = 1,\n title = \"Select image\",\n}: {\n isNative?: boolean\n limit?: number\n title?: string\n}) {\n if (!(isNative ?? isNativeApp())) return null\n\n const picker = getNativeImagePickerPlugin()\n\n if (!picker?.pickImages) return null\n\n try {\n const result = await picker.pickImages({\n limit,\n title,\n })\n\n return (result.files ?? [])\n .filter((file) => file.type?.startsWith(\"image/\"))\n .slice(0, limit)\n .map((file) => nativeSharedFileToFile(file))\n } catch (error) {\n if (isNativePickerCancel(error)) return []\n throw error\n }\n}\n","import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction BubbleGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"bubble-group\"\n className={cn(\"flex min-w-0 flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst bubbleVariants = cva(\n \"group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full\",\n {\n variants: {\n variant: {\n default:\n \"*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80\",\n secondary:\n \"*:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]\",\n muted:\n \"*:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)]\",\n tinted:\n \"*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-foreground dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.35_calc(c*0.5)_h)]\",\n outline:\n \"*:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-input/30\",\n ghost:\n \"border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/50\",\n destructive:\n \"*:data-[slot=bubble-content]:bg-destructive/10 *:data-[slot=bubble-content]:text-destructive dark:*:data-[slot=bubble-content]:bg-destructive/20 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/30\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Bubble({\n variant = \"default\",\n align = \"start\",\n className,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof bubbleVariants> & {\n align?: \"start\" | \"end\"\n }) {\n return (\n <div\n data-slot=\"bubble\"\n data-variant={variant}\n data-align={align}\n className={cn(bubbleVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction BubbleContent({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"w-fit max-w-full min-w-0 overflow-hidden rounded-xl border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-3 [button,a]:focus-visible:ring-ring/50\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"bubble-content\",\n },\n })\n}\n\nconst bubbleReactionsVariants = cva(\n \"absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-muted px-1.5 py-0.5 text-sm ring-3 ring-card has-[button]:p-0\",\n {\n variants: {\n side: {\n top: \"top-0 -translate-y-3/4\",\n bottom: \"bottom-0 translate-y-3/4\",\n },\n align: {\n start: \"left-3\",\n end: \"right-3\",\n },\n },\n defaultVariants: {\n side: \"bottom\",\n align: \"end\",\n },\n }\n)\n\nfunction BubbleReactions({\n side = \"bottom\",\n align = \"end\",\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n align?: \"start\" | \"end\"\n side?: \"top\" | \"bottom\"\n}) {\n return (\n <div\n data-slot=\"bubble-reactions\"\n data-align={align}\n data-side={side}\n className={cn(bubbleReactionsVariants({ side, align }), className)}\n {...props}\n />\n )\n}\n\nexport { BubbleGroup, Bubble, BubbleContent, BubbleReactions }\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\nimport { Separator } from \"./separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0\",\n vertical:\n \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n })\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","\"use client\"\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }\n>(function Card({ className, size = \"default\", ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\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 \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)\",\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(\n \"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n className\n )}\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-sm text-muted-foreground\", 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-(--card-spacing)\", 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(\n \"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n}\n","\"use client\"\n\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Button } from \"./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 api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n queueMicrotask(() => onSelect(api))\n\n return () => {\n api.off(\"reInit\", onSelect)\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-sm\",\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 touch-manipulation rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 left-2 z-10 -translate-y-1/2 sm:left-3\"\n : \"top-2 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ChevronLeft className=\"cn-rtl-flip\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon-sm\",\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 touch-manipulation rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 right-2 z-10 -translate-y-1/2 sm:right-3\"\n : \"bottom-2 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ChevronRight className=\"cn-rtl-flip\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n useCarousel,\n type CarouselApi,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport type { TooltipValueType } from \"recharts\"\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\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const\ntype TooltipNameType = number | string\n\nexport type ChartConfig = Record<\n string,\n {\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 initialDimension = INITIAL_DIMENSION,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n initialDimension?: {\n width: number\n height: number\n }\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 \"flex aspect-video justify-center text-xs [&_.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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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 [&_.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 initialDimension={initialDimension}\n >\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 } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n \"accessibilityLayer\"\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]?.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 \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background 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\n .filter((item) => item.type !== \"none\")\n .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={index}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\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 != null && (\n <span className=\"font-medium text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : String(item.value)}\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 hideIcon?: boolean\n nameKey?: string\n} & RechartsPrimitive.DefaultLegendContentProps) {\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\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={index}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\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\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 ? config[configLabelKey] : config[key]\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n}\n","\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Checkbox({ className, children, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer inline-flex size-5 shrink-0 items-center justify-center rounded border border-border bg-background text-primary outline-none transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out focus-visible:ring-2 focus-visible:ring-ring/50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-disabled:cursor-not-allowed data-disabled:opacity-50 motion-reduce:transition-none\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center\"\n >\n {children}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Check, ChevronDown, Xmark } from \"@gravity-ui/icons\"\nimport { Button } from \"./button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"./input-group\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n <ChevronDown className=\"pointer-events-none size-4 text-muted-foreground\" />\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <Xmark className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n startContent,\n endContent,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n endContentFocusInput?: boolean\n startContent?: React.ReactNode\n endContent?: React.ReactNode\n}) {\n return (\n <InputGroup className={cn(\"w-auto\", className)}>\n <ComboboxPrimitive.Input\n render={<InputGroupInput disabled={disabled} />}\n {...props}\n />\n {startContent && (\n <InputGroupAddon align=\"inline-start\">{startContent}</InputGroupAddon>\n )}\n\n <InputGroupAddon align=\"inline-end\" className=\"pr-0\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n render={<ComboboxTrigger />}\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n />\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n <InputGroupAddon align=\"inline-end\">{endContent}</InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\n \"group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg bg-background text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n \"no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground 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 {children}\n <ComboboxPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Check className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n \"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({\n className,\n ...props\n}: ComboboxPrimitive.Separator.Props) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({\n className,\n ...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n \"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-2 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxChip({\n className,\n children,\n showRemove = true,\n ...props\n}: ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n \"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0\",\n className\n )}\n {...props}\n >\n {children}\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <Xmark className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({\n className,\n ...props\n}: ComboboxPrimitive.Input.Props) {\n return (\n <ComboboxPrimitive.Input\n data-slot=\"combobox-chip-input\"\n className={cn(\"min-w-16 flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Textarea } from \"./textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]\",\n \"inline-end\":\n \"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2\",\n \"block-end\":\n \"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n focusInput = true,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof inputGroupAddonVariants> & {\n focusInput?: boolean\n }) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n if (!focusInput) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n \"bar-icon\":\n \"size-7 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\" | \"type\"> &\n VariantProps<typeof inputGroupButtonVariants> & {\n type?: \"button\" | \"submit\" | \"reset\"\n }) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n InputGroupTextarea,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","\"use client\"\n\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Magnifier } from \"@gravity-ui/icons\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\nimport { InputGroup, InputGroupAddon } from \"./input-group\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"flex size-full flex-col overflow-hidden rounded-xl! bg-background text-popover-foreground outline-none\",\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 = false,\n ...props\n}: Omit<React.ComponentProps<typeof Dialog>, \"children\"> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n children: React.ReactNode\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(\n \"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0\",\n className\n )}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n startContent,\n endContent,\n focusAddon = true,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input> & {\n startContent?: React.ReactNode\n endContent?: React.ReactNode\n /** When false, clicking the leading magnifier won't focus the input. */\n focusAddon?: boolean\n}) {\n return (\n <InputGroup\n data-slot=\"command-input-wrapper\"\n className={cn(\n \"h-8! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!\",\n className\n )}\n >\n {startContent ? (\n <InputGroupAddon align=\"inline-start\" focusInput={false}>\n {startContent}\n </InputGroupAddon>\n ) : null}\n <InputGroupAddon focusInput={focusAddon}>\n <Magnifier />\n </InputGroupAddon>\n <CommandPrimitive.Input\n data-no-ring\n data-slot=\"command-input\"\n className=\"w-full outline-hidden disabled:cursor-not-allowed disabled:opacity-50\"\n {...props}\n />\n {endContent ? (\n <InputGroupAddon align=\"inline-end\" focusInput={false}>\n {endContent}\n </InputGroupAddon>\n ) : null}\n </InputGroup>\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 \"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn(\"py-6 text-center text-sm\", className)}\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 \"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground\",\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(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n {/* <CheckIcon className=\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" /> */}\n </CommandPrimitive.Item>\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 \"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n}\n","\"use client\"\n\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Xmark } from \"@gravity-ui/icons\"\nimport { Button } from \"./button\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-card p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute top-4 right-4\"\n size=\"icon-sm\"\n />\n }\n >\n <Xmark />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\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\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex shrink-0 flex-col-reverse items-center justify-center gap-2 p-4 pt-0 sm:flex-row\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\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\"\n\nimport { cn } from \"#lib/utils\"\n\ntype DashedSeparatorProps = {\n className?: string\n dashWidth?: number\n minimumGap?: number\n thickness?: number\n}\n\nexport function DashedSeparator({\n className,\n dashWidth = 12,\n minimumGap = 8,\n thickness = 1,\n}: DashedSeparatorProps) {\n const containerRef = React.useRef<HTMLDivElement>(null)\n const [dashCount, setDashCount] = React.useState(0)\n\n React.useEffect(() => {\n const element = containerRef.current\n\n if (!element) return\n\n const updateDashCount = () => {\n const width = element.getBoundingClientRect().width\n\n const count = Math.max(\n 2,\n Math.floor((width + minimumGap) / (dashWidth + minimumGap))\n )\n\n setDashCount(count)\n }\n\n updateDashCount()\n\n const observer = new ResizeObserver(updateDashCount)\n observer.observe(element)\n\n return () => observer.disconnect()\n }, [dashWidth, minimumGap])\n\n return (\n <div\n ref={containerRef}\n aria-hidden=\"true\"\n className={cn(\n \"flex w-full items-center justify-between overflow-hidden text-border\",\n className\n )}\n style={{ height: thickness }}\n >\n {Array.from({ length: dashCount }).map((_, index) => (\n <span\n key={index}\n className=\"shrink-0 bg-current\"\n style={{\n width: dashWidth,\n height: thickness,\n }}\n />\n ))}\n </div>\n )\n}\n","\"use client\"\nimport { cn } from \"#lib/utils\"\nimport { LucideIcon } from \"lucide-react\"\nimport { motion } from \"motion/react\"\nimport * as React from \"react\"\n\ninterface DockProps {\n className?: string\n items: {\n icon: LucideIcon\n label: string\n onClick?: () => void\n }[]\n}\n\ninterface DockIconButtonProps {\n icon: LucideIcon\n label: string\n onClick?: () => void\n className?: string\n}\n\nconst floatingAnimation = {\n initial: { y: 0 },\n animate: {\n y: [-2, 2, -2],\n transition: {\n duration: 4,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n },\n },\n}\n\nconst DockIconButton = React.forwardRef<HTMLButtonElement, DockIconButtonProps>(\n ({ icon: Icon, label, onClick, className }, ref) => {\n return (\n <motion.button\n ref={ref}\n whileHover={{ scale: 1.1, y: -2 }}\n whileTap={{ scale: 0.95 }}\n onClick={onClick}\n className={cn(\n \"group relative rounded-lg p-3\",\n \"transition-colors hover:bg-secondary\",\n className\n )}\n >\n <Icon className=\"h-5 w-5 text-foreground\" />\n <span\n className={cn(\n \"absolute -top-8 left-1/2 -translate-x-1/2\",\n \"rounded px-2 py-1 text-xs\",\n \"bg-background text-popover-foreground\",\n \"opacity-0 group-hover:opacity-100\",\n \"pointer-events-none whitespace-nowrap transition-opacity\"\n )}\n >\n {label}\n </span>\n </motion.button>\n )\n }\n)\nDockIconButton.displayName = \"DockIconButton\"\n\nconst Dock = React.forwardRef<HTMLDivElement, DockProps>(\n ({ items, className }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex h-64 w-full items-center justify-center p-2\",\n className\n )}\n >\n <div className=\"relative flex h-64 w-full max-w-4xl items-center justify-center rounded-2xl\">\n <motion.div\n initial=\"initial\"\n animate=\"animate\"\n variants={floatingAnimation}\n className={cn(\n \"flex items-center gap-1 rounded-2xl p-2\",\n \"border shadow-lg backdrop-blur-lg\",\n \"border-border bg-background/90\",\n \"transition-shadow duration-300 hover:shadow-xl\"\n )}\n >\n {items.map((item) => (\n <DockIconButton key={item.label} {...item} />\n ))}\n </motion.div>\n </div>\n </div>\n )\n }\n)\nDock.displayName = \"Dock\"\n\nexport { Dock }\n","\"use client\"\n\nimport { Drawer as DrawerPrimitive } from \"@base-ui/react/drawer\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\ntype DrawerContextProps = {\n hasSnapPoints: boolean\n modal: DrawerPrimitive.Root.Props[\"modal\"]\n showSwipeHandle: boolean\n swipeDirection: NonNullable<DrawerPrimitive.Root.Props[\"swipeDirection\"]>\n}\nconst DrawerContext = React.createContext<DrawerContextProps | null>(null)\n\nfunction useDrawer() {\n const context = React.useContext(DrawerContext)\n\n if (!context) {\n throw new Error(\"useDrawer must be used within a Drawer.\")\n }\n\n return context\n}\n\nfunction Drawer({\n modal = true,\n showSwipeHandle,\n snapPoints,\n swipeDirection = \"down\",\n ...props\n}: DrawerPrimitive.Root.Props & {\n showSwipeHandle?: boolean\n}) {\n const hasSnapPoints = snapPoints != null && snapPoints.length > 0\n const resolvedShowSwipeHandle =\n showSwipeHandle ?? (swipeDirection === \"down\" || swipeDirection === \"up\")\n const contextValue = React.useMemo(\n () => ({\n hasSnapPoints,\n modal,\n showSwipeHandle: resolvedShowSwipeHandle,\n swipeDirection,\n }),\n [hasSnapPoints, modal, resolvedShowSwipeHandle, swipeDirection]\n )\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <DrawerPrimitive.Root\n data-slot=\"drawer\"\n modal={modal}\n snapPoints={snapPoints}\n swipeDirection={swipeDirection}\n {...props}\n />\n </DrawerContext.Provider>\n )\n}\n\nfunction DrawerTrigger({ ...props }: DrawerPrimitive.Trigger.Props) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({ ...props }: DrawerPrimitive.Portal.Props) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({ ...props }: DrawerPrimitive.Close.Props) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: DrawerPrimitive.Backdrop.Props) {\n return (\n <DrawerPrimitive.Backdrop\n data-slot=\"drawer-overlay\"\n className={cn(\n \"ease-out-fluid fixed inset-0 z-50 min-h-dvh bg-black/10 opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-backdrop-filter:backdrop-blur-xs supports-[-webkit-touch-callout:none]:absolute\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerSwipeHandle({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-swipe-handle\"\n aria-hidden=\"true\"\n className={cn(\n \"flex shrink-0 cursor-grab transition-opacity duration-200 group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-[swipe-axis=x]/drawer-popup:h-full group-data-[swipe-axis=x]/drawer-popup:w-3 group-data-[swipe-axis=x]/drawer-popup:items-center group-data-[swipe-axis=y]/drawer-popup:h-3 group-data-[swipe-axis=y]/drawer-popup:w-full group-data-[swipe-axis=y]/drawer-popup:justify-center group-data-[swipe-direction=down]/drawer-popup:items-end group-data-[swipe-direction=left]/drawer-popup:order-last group-data-[swipe-direction=left]/drawer-popup:justify-start group-data-[swipe-direction=right]/drawer-popup:justify-end group-data-[swipe-direction=up]/drawer-popup:order-last group-data-[swipe-direction=up]/drawer-popup:items-start after:block after:shrink-0 after:rounded-full after:bg-muted group-data-[swipe-axis=x]/drawer-popup:after:h-24 group-data-[swipe-axis=x]/drawer-popup:after:w-1 group-data-[swipe-axis=y]/drawer-popup:after:h-1 group-data-[swipe-axis=y]/drawer-popup:after:w-20 active:cursor-grabbing\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: DrawerPrimitive.Popup.Props) {\n const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer()\n const swipeAxis =\n swipeDirection === \"down\" || swipeDirection === \"up\" ? \"y\" : \"x\"\n\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n {modal === true && (\n <DrawerOverlay data-snap-points={hasSnapPoints ? \"\" : undefined} />\n )}\n <DrawerPrimitive.Viewport\n data-slot=\"drawer-viewport\"\n data-modal={modal}\n className=\"pointer-events-none fixed inset-0 z-50 select-none data-[modal=true]:pointer-events-auto\"\n >\n <DrawerPrimitive.Popup\n data-slot=\"drawer-popup\"\n data-swipe-axis={swipeAxis}\n data-snap-points={hasSnapPoints ? \"\" : undefined}\n className={cn(\n // Base.\n \"group/drawer-popup pointer-events-auto fixed z-50 m-(--drawer-inset,0px) flex h-(--drawer-content-height) max-h-(--drawer-content-max-height,none) min-h-0 w-(--drawer-content-width,auto) transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)_scale(var(--stack-scale))] flex-col rounded-4xl border bg-card text-sm text-popover-foreground transition-[transform,height,opacity,filter] duration-450 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none [--drawer-bleed-background:transparent] [--drawer-inset:--spacing(2)] [interpolate-size:allow-keywords] max-md:pb-(--app-safe-bottom) md:pb-0 dark:border-border\",\n // Nested.\n \"data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95\",\n // Bleed.\n \"after:pointer-events-none after:absolute after:bg-(--drawer-bleed-background,var(--color-popover)) data-[swipe-axis=x]:after:inset-y-0 data-[swipe-axis=x]:after:w-(--bleed) data-[swipe-axis=y]:after:inset-x-0 data-[swipe-axis=y]:after:h-(--bleed) data-[swipe-direction=down]:after:top-full data-[swipe-direction=left]:after:right-full data-[swipe-direction=right]:after:left-full data-[swipe-direction=up]:after:bottom-full\",\n // Sizing.\n \"[--drawer-content-height:var(--drawer-height,auto)] data-[swipe-axis=x]:[--drawer-content-width:75%] data-[swipe-axis=y]:[--drawer-content-max-height:calc(100dvh-6rem)] data-[swipe-axis=y]:data-snap-points:[--drawer-content-height:100dvh] data-[swipe-axis=x]:sm:[--drawer-content-width:24rem]\",\n // Stack.\n \"[--bleed:3rem] [--peek:1rem] [--stack-height:var(--drawer-frontmost-height,var(--drawer-height,0px))] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-scale-base:max(0,calc(1-(var(--nested-drawers)*var(--stack-step))))] [--stack-scale:clamp(0,calc(var(--stack-scale-base)+(var(--stack-step)*var(--stack-progress))),1)] [--stack-shrink:calc(1-var(--stack-scale))] [--stack-step:0.05]\",\n // Transitions.\n \"data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)]\",\n // Axis: y.\n \"data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)\",\n // Axis: x.\n \"data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row\",\n // Direction: down.\n \"data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:origin-bottom data-[swipe-direction=down]:[--closed-transform:translate3d(0,calc(100%+var(--drawer-inset,0px)+2px),0)] data-[swipe-direction=down]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--stack-shrink)*var(--stack-height)))]\",\n // Direction: up.\n \"data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:origin-top data-[swipe-direction=up]:[--closed-transform:translate3d(0,calc(-100%-var(--drawer-inset,0px)-2px),0)] data-[swipe-direction=up]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)+var(--stack-peek-offset)+(var(--stack-shrink)*var(--stack-height)))]\",\n // Direction: left.\n \"data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:origin-left data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]\",\n // Direction: right.\n \"data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:origin-right data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]\",\n className\n )}\n {...props}\n >\n {showSwipeHandle && <DrawerSwipeHandle />}\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-[cubic-bezier(0.45,1.005,0,1.005)] select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none\"\n )}\n >\n {children}\n </DrawerPrimitive.Content>\n </DrawerPrimitive.Popup>\n </DrawerPrimitive.Viewport>\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 shrink-0 flex-col gap-0.5 p-4 pb-0 group-data-[swipe-axis=y]/drawer-popup: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(\"mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0\", className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({ className, ...props }: DrawerPrimitive.Title.Props) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\n \"font-heading text-base font-medium text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: DrawerPrimitive.Description.Props) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-sm text-balance text-muted-foreground\", 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 DrawerSwipeHandle,\n DrawerTitle,\n DrawerTrigger,\n}\n","\"use client\"\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-background p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_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 </MenuPrimitive.SubmenuTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"w-auto min-w-[96px] rounded-lg bg-background p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 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\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <CheckIcon />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: MenuPrimitive.RadioItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 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\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <CheckIcon />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", 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 \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-14 shrink-0 items-center justify-center rounded-2xl bg-muted text-foreground [&_svg:not([class*='size-'])]:size-7\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-sm font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n}\n","import { Variants } from \"motion/react\"\n\nexport const activityItemAnimation: Variants = {\n hidden: {\n opacity: 0,\n y: 12,\n scale: 0.98,\n },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n duration: 0.18,\n ease: \"easeOut\",\n },\n },\n exit: {\n opacity: 0,\n y: -8,\n scale: 0.98,\n transition: {\n duration: 0.14,\n ease: [0.23, 1, 0.32, 1],\n },\n },\n}\n\nexport const popUp: Variants = {\n hidden: { scale: 0, opacity: 0 },\n visible: {\n opacity: 1,\n scale: 1,\n transition: {\n type: \"spring\",\n },\n },\n}\n\nexport const popUpFromBottomForText: Variants = {\n hidden: {\n opacity: 1,\n y: 70,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n}\nexport const fromRightVariant: Variants = {\n hidden: { x: 100, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 100,\n },\n },\n}\n\nexport const Top: Variants = {\n hidden: {\n opacity: 0,\n y: -70,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n}\n\nexport const Bottom: Variants = {\n hidden: {\n opacity: 1,\n y: 70,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n type: \"spring\",\n stiffness: 30,\n },\n },\n}\n\nexport const headingFromLeft: Variants = {\n hidden: { x: -200, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 70,\n },\n },\n}\n\nexport const fromLeftVariant: Variants = {\n hidden: { x: -100, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 100,\n },\n },\n}\n\nexport const fromLeftChildren: Variants = {\n hidden: { x: -100, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n },\n },\n}\n\nexport const fromTopVariant: Variants = {\n hidden: { y: -100, opacity: 0 },\n visible: {\n y: 0,\n opacity: 1,\n transition: {\n duration: 0.1,\n type: \"spring\",\n stiffness: 100,\n },\n },\n}\n\nexport const opacityVariant: Variants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { delay: 0.2 } },\n}\n\nexport const hamFastFadeContainer: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n delayChildren: 0,\n staggerChildren: 0.1,\n },\n },\n}\n\nexport const mobileNavItemSideways: Variants = {\n hidden: { x: -40, opacity: 0 },\n visible: {\n x: 0,\n opacity: 1,\n },\n}\n\nexport const FadeContainer: Variants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: { delayChildren: 0, staggerChildren: 0.1 },\n },\n}\n\nexport const svgVariant: Variants = {\n hidden: {\n pathLength: 0,\n },\n visible: {\n pathLength: 1,\n transition: {\n duration: 4,\n ease: \"easeInOut\",\n },\n },\n}\n\nexport const searchBarSlideAnimation: Variants = {\n hidden: {\n width: 0,\n opacity: 0,\n },\n visible: {\n width: \"100%\",\n opacity: 1,\n transition: {\n type: \"tween\",\n ease: \"linear\",\n duration: 1,\n },\n },\n}\n\nexport const BlogCardAnimation: Variants = {\n hidden: {\n y: 50,\n opacity: 0,\n },\n visible: {\n y: 0,\n opacity: 1,\n transition: {\n delay: 0.2,\n },\n },\n}\n\nexport const ListItemVariant: Variants = {\n hidden: {\n opacity: 0,\n x: -50, // Slide in from the left\n transition: {\n type: \"spring\",\n stiffness: 50,\n },\n },\n visible: {\n opacity: 1,\n x: 0, // Set to the final position\n transition: {\n type: \"spring\",\n stiffness: 50,\n },\n },\n}\n\nexport const kanbanOrderCardAnimation: Variants = {\n hidden: {\n opacity: 0,\n y: 10,\n scale: 0.985,\n filter: \"blur(2px)\",\n },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n filter: \"blur(0px)\",\n transition: {\n type: \"spring\",\n stiffness: 420,\n damping: 34,\n mass: 0.8,\n },\n },\n exit: {\n opacity: 0,\n y: -6,\n scale: 0.985,\n filter: \"blur(1px)\",\n transition: {\n duration: 0.14,\n ease: [0.23, 1, 0.32, 1],\n },\n },\n}\n\nexport const kanbanOrderCardReducedMotionAnimation: Variants = {\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n transition: {\n duration: 0.12,\n ease: \"easeOut\",\n },\n },\n exit: {\n opacity: 0,\n transition: {\n duration: 0.1,\n ease: [0.23, 1, 0.32, 1],\n },\n },\n}\n\nexport const kanbanOrderCardLayoutTransition = {\n type: \"spring\",\n stiffness: 520,\n damping: 42,\n mass: 0.75,\n} as const\n","\"use client\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { useMemo } from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Label } from \"./label\"\nimport { Separator } from \"./separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-1 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-2 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-0.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-left text-[10px] leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldTitle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\"\n\nimport NextImage, { type ImageProps as NextImageProps } from \"next/image\"\nimport { type ReactNode, useCallback, useState } from \"react\"\nimport { cn } from \"../lib\"\nimport { JellyMini, Skeleton } from \"./\"\n\nexport type ImageProps = Omit<\n NextImageProps,\n \"children\" | \"placeholder\" | \"blurDataURL\" | \"src\"\n> & {\n src?: NextImageProps[\"src\"] | null\n wrapper?: string\n showSkeleton?: boolean\n children?: ReactNode\n /** Content to render when no source is provided or the image fails to load. */\n fallback?: ReactNode\n}\n\nfunction srcValue(src: NextImageProps[\"src\"] | null | undefined) {\n if (!src) return null\n if (typeof src === \"string\") return src\n if (\"src\" in src) return src.src\n\n return src.default.src\n}\n\nexport function Image({\n wrapper,\n showSkeleton = true,\n className,\n loading = \"lazy\",\n fetchPriority,\n preload,\n quality = 90,\n src,\n alt,\n onLoad,\n onError,\n children,\n fallback = <JellyMini mood=\"curious\" className=\"size-full p-4\" />,\n ...props\n}: ImageProps) {\n const currentSrc = srcValue(src)\n const [loadedSrc, setLoadedSrc] = useState<string | null>(null)\n const [failedSrc, setFailedSrc] = useState<string | null>(null)\n\n const hasSource = Boolean(currentSrc)\n const failed = hasSource && failedSrc === currentSrc\n const loaded = hasSource && loadedSrc === currentSrc && !failed\n const shouldPreload = preload ?? loading === \"eager\"\n const imageLoading = shouldPreload ? \"eager\" : loading\n\n const markLoaded = useCallback(() => {\n if (!currentSrc) return\n setFailedSrc(null)\n setLoadedSrc(currentSrc)\n }, [currentSrc])\n\n const markFailed = useCallback(() => {\n if (!currentSrc) return\n setFailedSrc(currentSrc)\n }, [currentSrc])\n\n return (\n <section className={cn(\"relative block overflow-hidden\", wrapper)}>\n {showSkeleton && !loaded && !failed && hasSource && (\n <Skeleton className=\"absolute inset-0 size-full\" />\n )}\n\n {hasSource && !failed ? (\n <NextImage\n {...props}\n src={src ?? \"\"}\n alt={alt}\n quality={quality}\n loading={imageLoading}\n preload={shouldPreload}\n fetchPriority={\n fetchPriority ?? (imageLoading === \"eager\" ? \"high\" : undefined)\n }\n className={cn(\n \"transition-opacity duration-200\",\n loaded ? \"opacity-100\" : \"opacity-0\",\n className\n )}\n onLoad={(event) => {\n markLoaded()\n onLoad?.(event)\n }}\n onError={(event) => {\n markFailed()\n onError?.(event)\n }}\n />\n ) : (\n fallback\n )}\n\n {children}\n </section>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\n\nimport { cn } from \"#lib/utils\"\nimport { MinusIcon } from \"lucide-react\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"cn-input-otp flex items-center has-disabled:opacity-50\",\n containerClassName\n )}\n spellCheck={false}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\n \"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n className\n )}\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\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out outline-none motion-reduce:transition-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\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=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-separator\"\n className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n role=\"separator\"\n {...props}\n >\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Separator } from \"./separator\"\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\n \"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-2\", className)}\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n \"group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"border-transparent bg-muted/50\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & VariantProps<typeof itemVariants>) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(itemVariants({ variant, size, className })),\n },\n props\n ),\n render,\n state: {\n slot: \"item\",\n variant,\n size,\n },\n })\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Item,\n ItemActions,\n ItemContent,\n ItemDescription,\n ItemFooter,\n ItemGroup,\n ItemHeader,\n ItemMedia,\n ItemSeparator,\n ItemTitle,\n}\n","import { useEffect, useState } from \"react\"\n\nexport function useMounted() {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n return { mounted }\n}\n","\"use client\"\nimport { useMounted } from \"#hooks/index\"\nimport {\n BlobSpeech,\n JellyBlobMascot,\n type JellyBlobMascotProps,\n type JellyBlobMood,\n} from \"feral-blob\"\nimport * as React from \"react\"\n\nimport { cn } from \"../lib\"\nimport { Button } from \"./button\"\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyTitle,\n} from \"./empty\"\n\nexport {\n BlobSpeech,\n JellyBlobMascot,\n JellyBlobMascotDemo,\n type BlobSpeechProps,\n type JellyBlobEyeStyle,\n type JellyBlobMascotProps,\n type JellyBlobMood,\n} from \"feral-blob\"\n\nexport function JellyBlob({ ...props }: JellyBlobMascotProps) {\n return (\n <span className=\"inline-block\">\n <JellyBlobMascot\n {...props}\n className={cn(\"h-auto w-full\", props.className)}\n />\n </span>\n )\n}\n\nconst MOOD_GAZE: Record<JellyBlobMood, { x: number; y: number }> = {\n neutral: { x: 0, y: 8 },\n happy: { x: 18, y: -6 },\n sad: { x: 0, y: 14 },\n angry: { x: 10, y: 2 },\n hmm: { x: 10, y: -4 },\n sideEye: { x: 30, y: 0 },\n password: { x: -14, y: 16 },\n curious: { x: 18, y: -8 },\n surprised: { x: 0, y: -10 },\n sleepy: { x: 0, y: 14 },\n shy: { x: -12, y: 4 },\n love: { x: 0, y: -4 },\n wave: { x: 20, y: -8 },\n}\n\nexport function JellyMini({\n mood = \"neutral\",\n gaze,\n className,\n ...props\n}: Omit<JellyBlobMascotProps, \"className\"> & {\n className?: string\n}) {\n const { mounted } = useMounted()\n\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"inline-flex size-5 shrink-0 items-center justify-center select-none\",\n className\n )}\n >\n {mounted ? (\n <JellyBlobMascot\n {...props}\n mood={mood}\n gaze={gaze ?? MOOD_GAZE[mood]}\n className=\"h-auto w-full\"\n />\n ) : null}\n </span>\n )\n}\n\ntype JellyMascotState = {\n mood: JellyBlobMood\n speech?: string\n nod: boolean\n gaze: NonNullable<JellyBlobMascotProps[\"gaze\"]>\n mounted: boolean\n blobProps: Omit<JellyBlobMascotProps, \"className\" | \"mood\">\n setPreview: (mood: JellyBlobMood | null) => void\n}\n\nconst JellyMascotContext = React.createContext<JellyMascotState | null>(null)\n\n/** Returns mood-preview handlers for controls near a Jelly mascot. */\nexport function useJellyMood() {\n const state = React.useContext(JellyMascotContext)\n\n return React.useCallback(\n (mood?: JellyBlobMood) => {\n if (!mood || !state) return {}\n\n return {\n onPointerEnter: () => state.setPreview(mood),\n onFocus: () => state.setPreview(mood),\n onPointerLeave: () => state.setPreview(null),\n onBlur: () => state.setPreview(null),\n }\n },\n [state]\n )\n}\n\ntype JellyPreviewProps = {\n mood?: JellyBlobMood\n onPointerEnter?: React.PointerEventHandler<HTMLElement>\n onPointerLeave?: React.PointerEventHandler<HTMLElement>\n onFocus?: React.FocusEventHandler<HTMLElement>\n onBlur?: React.FocusEventHandler<HTMLElement>\n}\n\nfunction withPreviewHandlers<T extends JellyPreviewProps>(\n preview: ReturnType<typeof useJellyMood>,\n props: T\n) {\n const handlers = preview(props.mood)\n\n return {\n onPointerEnter: props.onPointerEnter ?? handlers.onPointerEnter,\n onPointerLeave: props.onPointerLeave ?? handlers.onPointerLeave,\n onFocus: props.onFocus ?? handlers.onFocus,\n onBlur: props.onBlur ?? handlers.onBlur,\n }\n}\n\nexport function JellyAction({\n mood,\n ...props\n}: JellyPreviewProps & React.ComponentProps<typeof Button>) {\n const preview = useJellyMood()\n\n return (\n <Button {...props} {...withPreviewHandlers(preview, { ...props, mood })} />\n )\n}\n\nexport function JellyLink({\n mood,\n ...props\n}: JellyPreviewProps & React.ComponentProps<\"a\">) {\n const preview = useJellyMood()\n\n return <a {...props} {...withPreviewHandlers(preview, { ...props, mood })} />\n}\n\nexport type JellyMascotConfig = Omit<\n JellyBlobMascotProps,\n \"className\" | \"mood\"\n> & {\n mood?: JellyBlobMood\n /** Optional single-line copy rendered in the speech bubble. */\n speech?: string\n}\n\nfunction JellyMascotProvider({\n mood = \"neutral\",\n speech,\n children,\n ...blobProps\n}: JellyMascotConfig & { children: React.ReactNode }) {\n const { mounted } = useMounted()\n const [previewMood, setPreviewMood] = React.useState<JellyBlobMood | null>(\n null\n )\n const activeMood = previewMood ?? mood\n\n const value: JellyMascotState = {\n mood: activeMood,\n speech,\n nod: blobProps.nod ?? false,\n gaze: blobProps.gaze ?? MOOD_GAZE[activeMood],\n mounted,\n blobProps,\n setPreview: setPreviewMood,\n }\n\n return (\n <JellyMascotContext.Provider value={value}>\n {children}\n </JellyMascotContext.Provider>\n )\n}\n\nexport type JellySize = \"sm\" | \"md\" | \"lg\" | \"auto\"\n\nconst SIZE_WRAPPER: Record<JellySize, string> = {\n sm: \"w-20\",\n md: \"w-28\",\n lg: \"w-48\",\n auto: \"w-auto\",\n}\n\nfunction JellyMascotFace({\n size = \"md\",\n className,\n}: {\n size?: JellySize\n className?: string\n}) {\n const mascot = React.useContext(JellyMascotContext)\n\n if (!mascot) return null\n\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n \"flex flex-col items-center select-none\",\n SIZE_WRAPPER[size],\n className\n )}\n >\n {mascot.speech ? (\n <BlobSpeech\n mood={mascot.mood}\n messages={{ [mascot.mood]: mascot.speech }}\n />\n ) : null}\n {mascot.mounted ? (\n <JellyBlobMascot\n {...mascot.blobProps}\n mood={mascot.mood}\n gaze={mascot.gaze}\n nod={mascot.nod}\n className=\"h-auto w-full\"\n />\n ) : null}\n </div>\n )\n}\n\nexport function JellyMascot({\n size = \"md\",\n className,\n ...config\n}: JellyMascotConfig & { size?: JellySize; className?: string }) {\n const existing = React.useContext(JellyMascotContext)\n\n if (existing) return <JellyMascotFace size={size} className={className} />\n\n return (\n <JellyMascotProvider {...config}>\n <JellyMascotFace size={size} className={className} />\n </JellyMascotProvider>\n )\n}\n\nexport function JellyGroup({\n children,\n ...config\n}: JellyMascotConfig & { children: React.ReactNode }) {\n return <JellyMascotProvider {...config}>{children}</JellyMascotProvider>\n}\n\nexport type JellyEmptyProps = JellyMascotConfig & {\n title?: React.ReactNode\n description?: React.ReactNode\n actions?: React.ReactNode\n size?: JellySize\n className?: string\n}\n\n/** Empty-state layout with no built-in copy; callers provide all content. */\nexport function JellyEmpty({\n title,\n description,\n actions,\n size = \"lg\",\n className,\n ...config\n}: JellyEmptyProps) {\n return (\n <JellyMascotProvider {...config}>\n <Empty className={cn(\"gap-4\", className)}>\n <EmptyHeader className=\"gap-2\">\n <JellyMascotFace size={size} />\n {title ? (\n <EmptyTitle className=\"text-base font-semibold sm:text-lg\">\n {title}\n </EmptyTitle>\n ) : null}\n {description ? (\n <EmptyDescription className=\"max-w-sm\">\n {description}\n </EmptyDescription>\n ) : null}\n </EmptyHeader>\n {actions ? <EmptyContent>{actions}</EmptyContent> : null}\n </Empty>\n </JellyMascotProvider>\n )\n}\n","import { cn } from \"#lib/utils\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup }\n","import * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction MessageGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-group\"\n className={cn(\"flex min-w-0 flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction Message({\n className,\n align = \"start\",\n ...props\n}: React.ComponentProps<\"div\"> & { align?: \"start\" | \"end\" }) {\n return (\n <div\n data-slot=\"message\"\n data-align={align}\n className={cn(\n \"group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageAvatar({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-avatar\"\n className={cn(\n \"flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-content\"\n className={cn(\n \"flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-header\"\n className={cn(\n \"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"message-footer\"\n className={cn(\n \"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0 group-data-[align=end]/message:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n MessageGroup,\n Message,\n MessageAvatar,\n MessageContent,\n MessageFooter,\n MessageHeader,\n}\n","\"use client\"\n\nimport {\n MessageScroller as MessageScrollerPrimitive,\n useMessageScroller,\n useMessageScrollerScrollable,\n useMessageScrollerVisibility,\n} from \"@shadcn/react/message-scroller\"\nimport * as React from \"react\"\n\nimport { Button } from \"#components/button\"\nimport { cn } from \"#lib/utils\"\nimport { ArrowDownIcon } from \"lucide-react\"\n\nfunction MessageScrollerProvider(\n props: React.ComponentProps<typeof MessageScrollerPrimitive.Provider>\n) {\n return <MessageScrollerPrimitive.Provider {...props} />\n}\n\nfunction MessageScroller({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Root>) {\n return (\n <MessageScrollerPrimitive.Root\n data-slot=\"message-scroller\"\n className={cn(\n \"group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerViewport({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Viewport>) {\n return (\n <MessageScrollerPrimitive.Viewport\n data-slot=\"message-scroller-viewport\"\n className={cn(\n \"size-full min-h-0 min-w-0 scroll-fade scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerContent({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Content>) {\n return (\n <MessageScrollerPrimitive.Content\n data-slot=\"message-scroller-content\"\n className={cn(\"flex h-max min-h-full flex-col gap-6\", className)}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerItem({\n className,\n scrollAnchor = false,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Item>) {\n return (\n <MessageScrollerPrimitive.Item\n data-slot=\"message-scroller-item\"\n scrollAnchor={scrollAnchor}\n className={cn(\n \"min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MessageScrollerButton({\n direction = \"end\",\n className,\n children,\n render,\n variant = \"secondary\",\n size = \"icon-sm\",\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Button> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <MessageScrollerPrimitive.Button\n data-slot=\"message-scroller-button\"\n data-direction={direction}\n data-variant={variant}\n data-size={size}\n direction={direction}\n className={cn(\n \"data-[active=true]:ease-out-quint absolute inset-s-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180\",\n className\n )}\n render={render ?? <Button variant={variant} size={size} />}\n {...props}\n >\n {children ?? (\n <>\n <ArrowDownIcon />\n <span className=\"sr-only\">\n {direction === \"end\" ? \"Scroll to end\" : \"Scroll to start\"}\n </span>\n </>\n )}\n </MessageScrollerPrimitive.Button>\n )\n}\n\nexport {\n MessageScroller,\n MessageScrollerButton,\n MessageScrollerContent,\n MessageScrollerItem,\n MessageScrollerProvider,\n MessageScrollerViewport,\n useMessageScroller,\n useMessageScrollerScrollable,\n useMessageScrollerVisibility,\n}\n","\"use client\"\n\nimport { clsx, type ClassValue } from \"clsx\"\nimport {\n AnimatePresence,\n animate,\n motion,\n useReducedMotion,\n} from \"motion/react\"\nimport { Fragment, useEffect, useId, useRef, useState } from \"react\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport const EASE_OUT = [0.16, 1, 0.3, 1] as const\nexport const EASE_IN_OUT = [0.77, 0, 0.175, 1] as const\nexport const EASE_DRAWER = [0.32, 0.72, 0, 1] as const\n\nexport const EASE_OUT_CSS = \"cubic-bezier(0.16, 1, 0.3, 1)\"\n\nexport const SPRING_PRESS = {\n type: \"spring\",\n stiffness: 500,\n damping: 30,\n mass: 0.6,\n} as const\n\nexport const SPRING_SWAP = {\n type: \"spring\",\n stiffness: 460,\n damping: 30,\n mass: 0.55,\n} as const\n\nexport const SPRING_PANEL = {\n type: \"spring\",\n stiffness: 420,\n damping: 40,\n mass: 0.5,\n} as const\n\nexport const SPRING_LAYOUT = {\n type: \"spring\",\n stiffness: 360,\n damping: 32,\n mass: 0.6,\n} as const\n\nexport const SPRING_MOUSE = {\n stiffness: 200,\n damping: 15,\n mass: 0.3,\n} as const\n\nfunction otpCn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport type OTPStatus = \"idle\" | \"error\" | \"success\"\n\nexport interface OTPInputProps {\n length?: number\n value?: string\n defaultValue?: string\n onChange?: (value: string) => void\n onComplete?: (value: string) => void\n label?: string\n hint?: string\n successMessage?: string\n errorMessage?: string\n status?: OTPStatus\n mask?: boolean\n disabled?: boolean\n autoFocus?: boolean\n onFocusChange?: (focused: boolean) => void\n \"aria-label\"?: string\n className?: string\n}\n\nexport function OTPInput({\n length = 6,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onComplete,\n label,\n hint,\n successMessage,\n errorMessage,\n status = \"idle\",\n mask = false,\n disabled = false,\n autoFocus = false,\n onFocusChange,\n \"aria-label\": ariaLabel = \"One-time passcode\",\n className,\n}: OTPInputProps) {\n const uid = useId()\n const reduce = useReducedMotion()\n const inputRef = useRef<HTMLInputElement>(null)\n const slotsRef = useRef<HTMLDivElement>(null)\n\n const controlled = controlledValue !== undefined\n\n const [slots, setSlots] = useState<string[]>(() =>\n toSlots(controlled ? controlledValue : defaultValue, length)\n )\n\n const [focused, setFocused] = useState(false)\n const [active, setActive] = useState(0)\n\n const joined = slots.join(\"\")\n const joinedRef = useRef(joined)\n joinedRef.current = joined\n\n useEffect(() => {\n if (!controlled) return\n\n const incoming = sanitize(controlledValue, length)\n\n if (incoming !== joinedRef.current) {\n setSlots(toSlots(incoming, length))\n }\n }, [controlled, controlledValue, length])\n\n const commit = (next: string[]) => {\n const wasComplete = slots.every((c) => c !== \"\")\n setSlots(next)\n\n const str = next.join(\"\")\n\n onChange?.(str)\n\n if (!wasComplete && next.every((c) => c !== \"\")) {\n onComplete?.(str)\n }\n }\n\n const clearSlot = (idx: number) => {\n const next = [...slots]\n\n next[idx] = \"\"\n\n commit(next)\n }\n\n const slotFromClientX = (clientX: number) => {\n const els =\n slotsRef.current?.querySelectorAll<HTMLElement>(\"[data-otp-slot]\")\n\n if (!els) return 0\n\n for (let i = 0; i < els.length; i++) {\n if (clientX < els[i].getBoundingClientRect().right) return i\n }\n\n return length - 1\n }\n\n const insert = (raw: string, from = active) => {\n const digits = raw.replace(/\\D/g, \"\")\n\n if (!digits) return\n\n const next = [...slots]\n let i = from\n\n for (const ch of digits) {\n if (i >= length) break\n next[i] = ch\n i++\n }\n\n commit(next)\n setActive(Math.min(i, length - 1))\n }\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (disabled || e.metaKey || e.ctrlKey || e.altKey) return\n\n const k = e.key\n\n if (/^[0-9]$/.test(k)) {\n e.preventDefault()\n insert(k)\n } else if (k === \"Backspace\") {\n e.preventDefault()\n\n if (slots[active]) {\n clearSlot(active)\n } else if (active > 0) {\n clearSlot(active - 1)\n setActive(active - 1)\n }\n } else if (k === \"Delete\") {\n e.preventDefault()\n clearSlot(active)\n } else if (k === \"ArrowLeft\") {\n e.preventDefault()\n setActive((a) => Math.max(a - 1, 0))\n } else if (k === \"ArrowRight\") {\n e.preventDefault()\n setActive((a) => Math.min(a + 1, length - 1))\n } else if (k === \"Home\") {\n e.preventDefault()\n setActive(0)\n } else if (k === \"End\") {\n e.preventDefault()\n setActive(length - 1)\n }\n }\n\n const onPaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n if (disabled) return\n\n e.preventDefault()\n insert(e.clipboardData.getData(\"text\"), active)\n }\n\n const onChangeNative = (e: React.ChangeEvent<HTMLInputElement>) => {\n const digits = sanitize(e.target.value, length)\n\n if (!digits) return\n\n commit(toSlots(digits, length))\n setActive(Math.min(digits.length, length - 1))\n }\n\n useEffect(() => {\n if (status !== \"error\" || reduce || !slotsRef.current) return\n\n animate(\n slotsRef.current,\n {\n x: [0, -5, 5, -3, 3, -1, 0],\n },\n {\n duration: 0.45,\n ease: EASE_OUT,\n }\n )\n }, [status, reduce])\n\n const showSuccess = status === \"success\"\n const activeIndex = focused ? active : -1\n\n const message = showSuccess\n ? successMessage\n : status === \"error\"\n ? errorMessage\n : hint\n\n return (\n <div className={otpCn(\"inline-flex flex-col gap-2\", className)}>\n {label ? (\n <label\n htmlFor={`${uid}-input`}\n className=\"text-sm font-medium text-foreground\"\n >\n {label}\n </label>\n ) : null}\n\n <div\n className=\"relative inline-flex w-max\"\n onMouseDown={(e) => {\n if (disabled) return\n\n e.preventDefault()\n\n const firstEmpty = slots.indexOf(\"\")\n const cap = firstEmpty === -1 ? length - 1 : firstEmpty\n\n setActive(Math.min(slotFromClientX(e.clientX), cap))\n inputRef.current?.focus()\n }}\n >\n <input\n ref={inputRef}\n id={`${uid}-input`}\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n autoFocus={autoFocus}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-invalid={status === \"error\"}\n value=\"\"\n maxLength={length}\n onKeyDown={onKeyDown}\n onChange={onChangeNative}\n onPaste={onPaste}\n onFocus={() => {\n setFocused(true)\n onFocusChange?.(true)\n }}\n onBlur={() => {\n setFocused(false)\n onFocusChange?.(false)\n }}\n className=\"absolute inset-0 z-20 h-full w-full cursor-text bg-transparent text-transparent caret-transparent opacity-0 outline-none disabled:cursor-not-allowed\"\n />\n\n <div ref={slotsRef} className=\"flex items-center gap-3\">\n {Array.from({ length }, (_, i) => {\n const char = slots[i] ?? \"\"\n const isActive = i === activeIndex\n\n return (\n <Fragment key={`${uid}-${i}`}>\n <div\n data-otp-slot\n data-active={isActive}\n data-filled={char !== \"\"}\n className={otpCn(\n \"relative grid size-11 place-items-center overflow-hidden rounded-xl border bg-card text-xl font-semibold tabular-nums transition-colors duration-200\",\n showSuccess\n ? \"border-emerald-500/60 text-foreground\"\n : status === \"error\"\n ? \"border-destructive/60 text-foreground\"\n : char\n ? \"border-border-strong text-foreground\"\n : \"border-border text-muted-foreground\",\n isActive &&\n !showSuccess &&\n status !== \"error\" &&\n \"border-brand border-2 ring-0\",\n disabled && \"opacity-50\"\n )}\n >\n {isActive && !showSuccess ? (\n <motion.span\n aria-hidden\n animate={reduce ? undefined : { opacity: [1, 1, 0, 0] }}\n transition={\n reduce\n ? undefined\n : {\n duration: 1,\n repeat: Number.POSITIVE_INFINITY,\n ease: \"linear\",\n }\n }\n className={otpCn(\n \"bg-brand pointer-events-none absolute top-1/2 h-6 w-px -translate-y-1/2\",\n char ? \"right-3\" : \"left-1/2 -translate-x-1/2\"\n )}\n />\n ) : null}\n\n <AnimatePresence initial={false}>\n {char ? (\n <motion.span\n key={char}\n initial={\n reduce\n ? {\n opacity: 0,\n }\n : {\n y: 14,\n opacity: 0,\n filter: \"blur(4px)\",\n }\n }\n animate={\n reduce\n ? {\n opacity: 1,\n }\n : {\n y: 0,\n opacity: 1,\n filter: \"blur(0px)\",\n }\n }\n exit={\n reduce\n ? {\n opacity: 0,\n }\n : {\n y: -14,\n opacity: 0,\n filter: \"blur(4px)\",\n }\n }\n transition={\n reduce\n ? {\n duration: 0,\n }\n : {\n duration: 0.22,\n ease: EASE_OUT,\n }\n }\n className=\"absolute inset-0 grid place-items-center leading-none\"\n >\n {mask ? \"X\" : char}\n </motion.span>\n ) : null}\n </AnimatePresence>\n </div>\n\n {i === 2 ? (\n <span aria-hidden=\"true\" className=\"h-0.5 w-4 bg-primary\" />\n ) : null}\n </Fragment>\n )\n })}\n </div>\n\n <AnimatePresence>\n {showSuccess ? (\n <motion.span\n initial={\n reduce\n ? {\n opacity: 0,\n }\n : {\n scale: 0.6,\n opacity: 0,\n }\n }\n animate={\n reduce\n ? {\n opacity: 1,\n }\n : {\n scale: 1,\n opacity: 1,\n }\n }\n exit={\n reduce\n ? {\n opacity: 0,\n }\n : {\n scale: 0.6,\n opacity: 0,\n }\n }\n transition={\n reduce\n ? {\n duration: 0,\n }\n : {\n type: \"spring\",\n stiffness: 500,\n damping: 28,\n }\n }\n className=\"pointer-events-none absolute top-1/2 -right-7 -translate-y-1/2 text-emerald-500\"\n aria-hidden\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <title>Verified</title>\n <motion.path\n d=\"M5 13l4 4L19 7\"\n initial={\n reduce\n ? {\n pathLength: 1,\n }\n : {\n pathLength: 0,\n }\n }\n animate={{\n pathLength: 1,\n }}\n transition={\n reduce\n ? {\n duration: 0,\n }\n : {\n duration: 0.35,\n ease: EASE_OUT,\n delay: 0.1,\n }\n }\n />\n </svg>\n </motion.span>\n ) : null}\n </AnimatePresence>\n </div>\n\n {message ? (\n <p\n aria-live=\"polite\"\n className={otpCn(\n \"text-sm\",\n showSuccess\n ? \"text-emerald-500\"\n : status === \"error\"\n ? \"text-destructive\"\n : \"text-muted-foreground\"\n )}\n >\n {message}\n </p>\n ) : null}\n </div>\n )\n}\n\nfunction sanitize(raw: string | undefined, length: number) {\n return (raw ?? \"\").replace(/\\D/g, \"\").slice(0, length)\n}\n\nfunction toSlots(raw: string | undefined, length: number) {\n const digits = sanitize(raw, length)\n\n return Array.from({ length }, (_, i) => digits[i] ?? \"\")\n}\n","\"use client\"\n\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n ...props\n}: PopoverPrimitive.Popup.Props &\n Pick<\n PopoverPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n \"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-background p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: PopoverPrimitive.Description.Props) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n}\n","\"use client\"\nimport { NumberField } from \"@base-ui/react/number-field\"\nimport { Minus, Plus } from \"@gravity-ui/icons\"\nimport * as React from \"react\"\nimport { buttonVariants } from \"./button\"\n\nexport const QuantityInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentPropsWithoutRef<typeof NumberField.Root>\n>(function QuantityInput({ ...props }, ref) {\n const id = React.useId()\n return (\n <NumberField.Root id={id} {...props} className=\"flex flex-col items-start\">\n <NumberField.Group className=\"flex h-8 gap-1\">\n <NumberField.Decrement\n className={buttonVariants({\n variant: \"secondary\",\n size: \"icon-sm\",\n className: \"rounded-full! border-border!\",\n })}\n >\n <Minus />\n </NumberField.Decrement>\n <NumberField.Input\n ref={ref}\n className=\"h-7 w-16 rounded-md border px-1 text-center\"\n data-no-ring\n />\n <NumberField.Increment\n className={buttonVariants({\n variant: \"secondary\",\n size: \"icon-sm\",\n className: \"rounded-full! border-border!\",\n })}\n >\n <Plus />\n </NumberField.Increment>\n </NumberField.Group>\n </NumberField.Root>\n )\n})\n","\"use client\"\n\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\"\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {\n return (\n <RadioGroupPrimitive\n data-slot=\"radio-group\"\n className={cn(\"grid w-full gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\n return (\n <RadioPrimitive.Root\n data-slot=\"radio-group-item\"\n className={cn(\n \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"flex size-4 items-center justify-center\"\n >\n <span className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground\" />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\"use no memo\"\n\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva } from \"class-variance-authority\"\nimport type React from \"react\"\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\"\n\nimport { Button } from \"#components/button\"\nimport { ButtonGroup, ButtonGroupText } from \"#components/button-group\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"#components/dropdown-menu\"\nimport { Input } from \"#components/input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n} from \"#components/input-group\"\nimport { Kbd } from \"#components/kbd\"\nimport { ScrollArea } from \"#components/scroll-area\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"#components/tooltip\"\nimport { cn } from \"#lib/utils\"\nimport { AlertCircleIcon, CheckIcon, PlusIcon, XIcon } from \"lucide-react\"\n\n// i18n Configuration Interface\nexport interface FilterI18nConfig {\n // UI Labels\n addFilter: string\n searchFields: string\n noFieldsFound: string\n noResultsFound: string\n select: string\n true: string\n false: string\n min: string\n max: string\n to: string\n typeAndPressEnter: string\n selected: string\n selectedCount: string\n percent: string\n defaultCurrency: string\n defaultColor: string\n addFilterTitle: string\n // Async option loading states (optional; fall back to sensible defaults)\n loadingOptions?: string\n errorLoadingOptions?: string\n\n // Operators\n operators: {\n is: string\n isNot: string\n isAnyOf: string\n isNotAnyOf: string\n includesAll: string\n excludesAll: string\n before: string\n after: string\n between: string\n notBetween: string\n contains: string\n notContains: string\n startsWith: string\n endsWith: string\n isExactly: string\n equals: string\n notEquals: string\n greaterThan: string\n lessThan: string\n overlaps: string\n includes: string\n excludes: string\n includesAllOf: string\n includesAnyOf: string\n empty: string\n notEmpty: string\n }\n\n // Placeholders\n placeholders: {\n enterField: (fieldType: string) => string\n selectField: string\n searchField: (fieldName: string) => string\n enterKey: string\n enterValue: string\n }\n\n // Helper functions\n helpers: {\n formatOperator: (operator: string) => string\n }\n\n // Validation\n validation: {\n invalidEmail: string\n invalidUrl: string\n invalidTel: string\n invalid: string\n }\n}\n\n// Default English i18n configuration\nexport const DEFAULT_I18N: FilterI18nConfig = {\n // UI Labels\n addFilter: \"Filter\",\n searchFields: \"Filter...\",\n noFieldsFound: \"No filters found.\",\n noResultsFound: \"No results found.\",\n select: \"Select...\",\n true: \"True\",\n false: \"False\",\n min: \"Min\",\n max: \"Max\",\n to: \"to\",\n typeAndPressEnter: \"Type and press Enter to add tag\",\n selected: \"selected\",\n selectedCount: \"selected\",\n percent: \"%\",\n defaultCurrency: \"$\",\n defaultColor: \"#000000\",\n addFilterTitle: \"Add filter\",\n loadingOptions: \"Loading...\",\n errorLoadingOptions: \"Failed to load options.\",\n\n // Operators\n operators: {\n is: \"is\",\n isNot: \"is not\",\n isAnyOf: \"is any of\",\n isNotAnyOf: \"is not any of\",\n includesAll: \"includes all\",\n excludesAll: \"excludes all\",\n before: \"before\",\n after: \"after\",\n between: \"between\",\n notBetween: \"not between\",\n contains: \"contains\",\n notContains: \"does not contain\",\n startsWith: \"starts with\",\n endsWith: \"ends with\",\n isExactly: \"is exactly\",\n equals: \"equals\",\n notEquals: \"not equals\",\n greaterThan: \"greater than\",\n lessThan: \"less than\",\n overlaps: \"overlaps\",\n includes: \"includes\",\n excludes: \"excludes\",\n includesAllOf: \"includes all of\",\n includesAnyOf: \"includes any of\",\n empty: \"is empty\",\n notEmpty: \"is not empty\",\n },\n\n // Placeholders\n placeholders: {\n enterField: (fieldType: string) => `Enter ${fieldType}...`,\n selectField: \"Select...\",\n searchField: (fieldName: string) => `Search ${fieldName.toLowerCase()}...`,\n enterKey: \"Enter key...\",\n enterValue: \"Enter value...\",\n },\n\n // Helper functions\n helpers: {\n formatOperator: (operator: string) => operator.replace(/_/g, \" \"),\n },\n\n // Validation\n validation: {\n invalidEmail: \"Invalid email format\",\n invalidUrl: \"Invalid URL format\",\n invalidTel: \"Invalid phone format\",\n invalid: \"Invalid input format\",\n },\n}\n\n// Context for all Filter component props\ninterface FilterContextValue {\n variant: \"solid\" | \"default\"\n size: \"sm\" | \"default\" | \"lg\"\n radius: \"default\" | \"full\"\n i18n: FilterI18nConfig\n className?: string\n showSearchInput?: boolean\n trigger?: React.ReactNode\n allowMultiple?: boolean\n}\n\nconst FilterContext = createContext<FilterContextValue>({\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n i18n: DEFAULT_I18N,\n className: undefined,\n showSearchInput: true,\n trigger: undefined,\n allowMultiple: true,\n})\n\nconst useFilterContext = () => useContext(FilterContext)\n\n// Container variant for filters wrapper\nconst filtersContainerVariants = cva(\"flex flex-wrap items-center\", {\n variants: {\n variant: {\n solid: \"gap-2\",\n default: \"\",\n },\n size: {\n sm: \"gap-1.5\",\n default: \"gap-2.5\",\n lg: \"gap-3.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n})\n\nfunction FilterInput<T = unknown>({\n field,\n onBlur,\n onKeyDown,\n className,\n ...props\n}: Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> & {\n className?: string\n field?: FilterFieldConfig<T>\n}) {\n const context = useFilterContext()\n const [isValid, setIsValid] = useState(true)\n const [validationMessage, setValidationMessage] = useState(\"\")\n const inputRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (props.autoFocus) {\n const timer = setTimeout(() => {\n inputRef.current?.focus()\n }, 300)\n return () => clearTimeout(timer)\n }\n }, [props.autoFocus])\n\n // Validation function to check if input matches pattern\n const validateInput = (value: string, pattern?: string): boolean => {\n if (!pattern || !value) return true\n const regex = new RegExp(pattern)\n return regex.test(value)\n }\n\n // Get validation message for field type\n const getValidationMessage = (): string => {\n return context.i18n.validation.invalid\n }\n\n // Handle blur event - validate when user leaves input\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const value = e.target.value\n const pattern = field?.pattern || props.pattern\n\n // Only validate if there's a value and (pattern or validation function)\n if (value && (pattern || field?.validation)) {\n let valid = true\n let customMessage = \"\"\n\n // If there's a custom validation function, use it\n if (field?.validation) {\n const result = field.validation(value)\n // Handle both boolean and object return types\n if (typeof result === \"boolean\") {\n valid = result\n } else {\n valid = result.valid\n customMessage = result.message || \"\"\n }\n } else if (pattern) {\n // Use pattern validation\n valid = validateInput(value, pattern)\n }\n\n setIsValid(valid)\n setValidationMessage(valid ? \"\" : customMessage || getValidationMessage())\n } else {\n // Reset validation state for empty values or no validation\n setIsValid(true)\n setValidationMessage(\"\")\n }\n\n // Call the original onBlur if provided\n onBlur?.(e)\n }\n\n // Handle keydown event - hide validation error when user starts typing\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Hide validation error when user starts typing (any key except special keys)\n if (\n !isValid &&\n ![\n \"Tab\",\n \"Escape\",\n \"Enter\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n ].includes(e.key)\n ) {\n setIsValid(true)\n setValidationMessage(\"\")\n }\n\n // Call the original onKeyDown if provided\n onKeyDown?.(e)\n }\n\n return (\n <InputGroup\n className={cn(\n \"w-36\",\n // Height follows each style's own control ladder. `default` sets no\n // height on purpose so the style's `.cn-input-group` applies (h-8 nova,\n // h-9 maia/luma, h-7 mira, h-10 sera); sm/lg step down/up from it.\n // Base covers nova/lyra/rhea/vega; only deviating styles are listed.\n context.size == \"sm\" && \"h-7!\",\n context.size == \"lg\" && \"h-9!\",\n // Sera's `.cn-input` is `px-0` (underline inputs sit flush); inside a\n // segmented chip that collides with the neighbouring segment, so give\n // the value input the same inline padding sera uses elsewhere.\n \"\",\n className\n )}\n >\n {field?.prefix && (\n <InputGroupAddon>\n <InputGroupText>{field.prefix}</InputGroupText>\n </InputGroupAddon>\n )}\n <InputGroupInput\n ref={inputRef}\n aria-invalid={!isValid}\n aria-describedby={\n !isValid && validationMessage\n ? `${field?.key || \"input\"}-error`\n : undefined\n }\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n className={cn(\n context.size == \"sm\" && \"h-7! text-xs\",\n context.size == \"lg\" && \"h-9!\"\n )}\n {...props}\n />\n {!isValid && validationMessage && (\n <InputGroupAddon align=\"inline-end\">\n <Tooltip>\n <TooltipTrigger render={<InputGroupButton size=\"icon-xs\" />}>\n <AlertCircleIcon className=\"size-3.5 text-destructive\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"text-sm\">{validationMessage}</p>\n </TooltipContent>\n </Tooltip>\n </InputGroupAddon>\n )}\n\n {field?.suffix && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupText>{field.suffix}</InputGroupText>\n </InputGroupAddon>\n )}\n </InputGroup>\n )\n}\n\ninterface FilterRemoveButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: React.ReactNode\n}\n\nfunction FilterRemoveButton({\n className,\n icon = <XIcon />,\n ...props\n}: FilterRemoveButtonProps) {\n const context = useFilterContext()\n\n return (\n <Button\n variant=\"outline\"\n size={\n context.size === \"sm\"\n ? \"icon-sm\"\n : context.size === \"lg\"\n ? \"icon-lg\"\n : \"icon\"\n }\n className={className}\n {...props}\n >\n {icon}\n </Button>\n )\n}\n\n// Generic types for flexible filter system\nexport interface FilterOption<T = unknown> {\n value: T\n label: string\n icon?: React.ReactNode\n metadata?: Record<string, unknown>\n className?: string\n}\n\nexport interface FilterOperator {\n value: string\n label: string\n supportsMultiple?: boolean\n}\n\n// Custom renderer props interface\nexport interface CustomRendererProps<T = unknown> {\n field: FilterFieldConfig<T>\n values: T[]\n onChange: (values: T[]) => void\n operator: string\n}\n\n// Props passed to a field's `renderOptionList` slot. Lets a consumer render the\n// options list however they like (e.g. windowing / virtualization with a\n// library of their choice) while staying bound to the primitive's selection and\n// keyboard behavior.\nexport interface FilterOptionListRenderProps<T = unknown> {\n // Options to render: already resolved, query-filtered, and selected-first.\n options: FilterOption<T>[]\n // Index into `options` of the keyboard-highlighted row (-1 if none). A\n // virtualized implementation should scroll this row into view and keep it\n // mounted so the combobox's aria-activedescendant stays valid.\n highlightedIndex: number\n // Renders one option row with the correct id, selection state, highlight, and\n // toggle handler wired to the primitive. Call it for each row you render.\n renderOption: (option: FilterOption<T>, index: number) => React.ReactNode\n}\n\n// Grouped field configuration interface\nexport interface FilterFieldGroup<T = unknown> {\n group?: string\n fields: FilterFieldConfig<T>[]\n}\n\n// Union type for both flat and grouped field configurations\nexport type FilterFieldsConfig<T = unknown> =\n FilterFieldConfig<T>[] | FilterFieldGroup<T>[]\n\nexport interface FilterFieldConfig<T = unknown> {\n key?: string\n label?: string\n icon?: React.ReactNode\n type?: \"select\" | \"multiselect\" | \"text\" | \"custom\" | \"separator\"\n // Group-level configuration\n group?: string\n fields?: FilterFieldConfig<T>[]\n // Field-specific options\n options?: FilterOption<T>[]\n // Async / large-list options loader. Receives the current search query and\n // may return a Promise. Use it to prefetch a remote list once (ignore the\n // query) or to run server-side search (filter by the query). When both\n // `options` and `loadOptions` are provided, `options` seeds the initial view\n // and the value->label cache while `loadOptions` supplies live results.\n loadOptions?: (\n query: string\n ) => FilterOption<T>[] | Promise<FilterOption<T>[]>\n // Bring-your-own rendering for the options list (e.g. virtualization with a\n // windowing library of your choice). Return the full scrollable list, call\n // `renderOption` for each row, and scroll `highlightedIndex` into view. When\n // omitted, the options render as a plain scrollable list.\n renderOptionList?: (props: FilterOptionListRenderProps<T>) => React.ReactNode\n operators?: FilterOperator[]\n customRenderer?: (props: CustomRendererProps<T>) => React.ReactNode\n customValueRenderer?: (\n values: T[],\n options: FilterOption<T>[]\n ) => React.ReactNode\n placeholder?: string\n searchable?: boolean\n maxSelections?: number\n min?: number\n max?: number\n step?: number\n prefix?: string | React.ReactNode\n suffix?: string | React.ReactNode\n pattern?: string\n validation?: (\n value: unknown\n ) => boolean | { valid: boolean; message?: string }\n allowCustomValues?: boolean\n className?: string\n menuPopupClassName?: string\n // Grouping options (legacy support)\n groupLabel?: string\n // Boolean field options\n onLabel?: string\n offLabel?: string\n // Input event handlers\n onInputChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n // Default operator to use when creating a filter for this field\n defaultOperator?: string\n // Controlled values support for this field\n value?: T[]\n onValueChange?: (values: T[]) => void\n}\n\n// Helper functions to handle both flat and grouped field configurations\nconst isFieldGroup = <T = unknown,>(\n item: FilterFieldConfig<T> | FilterFieldGroup<T>\n): item is FilterFieldGroup<T> => {\n return \"fields\" in item && Array.isArray(item.fields)\n}\n\n// Helper function to check if a FilterFieldConfig is a group-level configuration\nconst isGroupLevelField = <T = unknown,>(\n field: FilterFieldConfig<T>\n): boolean => {\n return Boolean(field.group && field.fields)\n}\n\nconst flattenFields = <T = unknown,>(\n fields: FilterFieldsConfig<T>\n): FilterFieldConfig<T>[] => {\n return fields.reduce<FilterFieldConfig<T>[]>((acc, item) => {\n if (isFieldGroup(item)) {\n return [...acc, ...item.fields]\n }\n // Handle group-level fields (new structure)\n if (isGroupLevelField(item)) {\n return [...acc, ...item.fields!]\n }\n return [...acc, item]\n }, [])\n}\n\nconst getFieldsMap = <T = unknown,>(\n fields: FilterFieldsConfig<T>\n): Record<string, FilterFieldConfig<T>> => {\n const flatFields = flattenFields(fields)\n return flatFields.reduce(\n (acc, field) => {\n // Only add fields that have a key (skip group-level configurations)\n if (field.key) {\n acc[field.key] = field\n }\n return acc\n },\n {} as Record<string, FilterFieldConfig<T>>\n )\n}\n\n// Whether a field exposes any option source (a static list or an async loader).\n// IMPORTANT: never gate on `field.options?.length` once `loadOptions` exists —\n// a function's `.length` is its arity, not an option count, which silently\n// breaks the submenu gate for async fields.\nconst fieldHasOptions = <T = unknown,>(field: FilterFieldConfig<T>): boolean =>\n (field.options?.length ?? 0) > 0 || typeof field.loadOptions === \"function\"\n\ninterface ResolvedFieldOptions<T = unknown> {\n isAsync: boolean\n options: FilterOption<T>[]\n loading: boolean\n error: boolean\n // Resolve selected values to full options using an accumulating value->option\n // cache, so async/controlled selections keep their label and icon even when\n // absent from the latest result page.\n resolveSelected: (values: T[]) => FilterOption<T>[]\n}\n\n// Value->option cache shared across every component instance rendering the\n// SAME field object (the Add Filter submenu and the active-filter chip both\n// receive the same config reference from the fields map). Keyed by the field\n// object so it is shared when fields are memoized and garbage-collected\n// otherwise. This keeps a value selected in the submenu labelled in the chip.\nconst fieldOptionCaches = new WeakMap<object, Map<unknown, FilterOption>>()\n\nconst getFieldOptionCache = <T = unknown,>(\n field: FilterFieldConfig<T>\n): Map<T, FilterOption<T>> => {\n let cache = fieldOptionCaches.get(field as object)\n if (!cache) {\n cache = new Map()\n fieldOptionCaches.set(field as object, cache)\n }\n return cache as Map<T, FilterOption<T>>\n}\n\n// Resolves a field's options for a popover/submenu. Static fields return their\n// list verbatim (unchanged legacy behavior). Async fields (`loadOptions`)\n// debounce the query, guard against out-of-order responses, and expose\n// loading/error state plus a value->label cache.\nfunction useFieldOptions<T = unknown>(\n field: FilterFieldConfig<T>,\n searchInput: string,\n enabled: boolean\n): ResolvedFieldOptions<T> {\n const isAsync = typeof field.loadOptions === \"function\"\n\n // Seed the shared cache from any static options an async field also provides\n // (static fields never read this cache, so skip the work for them).\n if (isAsync && field.options) {\n const cache = getFieldOptionCache(field)\n for (const opt of field.options) {\n cache.set(opt.value, opt)\n }\n }\n\n const [state, setState] = useState<{\n options: FilterOption<T>[]\n loading: boolean\n error: boolean\n }>(() => ({ options: field.options ?? [], loading: false, error: false }))\n\n // Debounce the query for async fields to avoid a request per keystroke.\n const [debouncedQuery, setDebouncedQuery] = useState(searchInput)\n useEffect(() => {\n if (!isAsync) return\n const timer = setTimeout(() => setDebouncedQuery(searchInput), 250)\n return () => clearTimeout(timer)\n }, [searchInput, isAsync])\n\n const requestIdRef = useRef(0)\n // Keep the latest loader in a ref so an unmemoized `loadOptions` identity does\n // not cancel and refire the in-flight request on every parent re-render.\n const loaderRef = useRef(field.loadOptions)\n loaderRef.current = field.loadOptions\n useEffect(() => {\n if (!isAsync || !enabled) return\n const loader = loaderRef.current\n if (!loader) return\n\n const requestId = ++requestIdRef.current\n let cancelled = false\n setState((prev) => ({ ...prev, loading: true, error: false }))\n\n Promise.resolve()\n .then(() => loader(debouncedQuery))\n .then((result) => {\n // Ignore stale responses (out-of-order guard).\n if (cancelled || requestId !== requestIdRef.current) return\n const cache = getFieldOptionCache(field)\n for (const opt of result) cache.set(opt.value, opt)\n setState({ options: result, loading: false, error: false })\n })\n .catch(() => {\n if (cancelled || requestId !== requestIdRef.current) return\n setState((prev) => ({ ...prev, loading: false, error: true }))\n })\n\n return () => {\n cancelled = true\n }\n }, [isAsync, enabled, debouncedQuery])\n\n const resolveSelected = useCallback(\n (values: T[]): FilterOption<T>[] => {\n const cache = getFieldOptionCache(field)\n return values.map(\n (value) => cache.get(value) ?? { value, label: String(value) }\n )\n },\n [field]\n )\n\n if (!isAsync) {\n return {\n isAsync: false,\n options: field.options ?? [],\n loading: false,\n error: false,\n resolveSelected,\n }\n }\n\n return {\n isAsync: true,\n options: state.options,\n loading: state.loading,\n error: state.error,\n resolveSelected,\n }\n}\n\n// Helper function to create operators from i18n config\nconst createOperatorsFromI18n = (\n i18n: FilterI18nConfig\n): Record<string, FilterOperator[]> => ({\n select: [\n { value: \"is\", label: i18n.operators.is },\n { value: \"is_not\", label: i18n.operators.isNot },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n multiselect: [\n { value: \"is_any_of\", label: i18n.operators.isAnyOf },\n { value: \"is_not_any_of\", label: i18n.operators.isNotAnyOf },\n { value: \"includes_all\", label: i18n.operators.includesAll },\n { value: \"excludes_all\", label: i18n.operators.excludesAll },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n text: [\n { value: \"contains\", label: i18n.operators.contains },\n { value: \"not_contains\", label: i18n.operators.notContains },\n { value: \"starts_with\", label: i18n.operators.startsWith },\n { value: \"ends_with\", label: i18n.operators.endsWith },\n { value: \"is\", label: i18n.operators.isExactly },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n custom: [\n { value: \"is\", label: i18n.operators.is },\n { value: \"after\", label: i18n.operators.after },\n { value: \"between\", label: i18n.operators.between },\n { value: \"empty\", label: i18n.operators.empty },\n { value: \"not_empty\", label: i18n.operators.notEmpty },\n ],\n})\n\n// Default operators for different field types (using default i18n)\nexport const DEFAULT_OPERATORS: Record<string, FilterOperator[]> =\n createOperatorsFromI18n(DEFAULT_I18N)\n\n// Helper function to get operators for a field\nconst getOperatorsForField = <T = unknown,>(\n field: FilterFieldConfig<T>,\n values: T[],\n i18n: FilterI18nConfig\n): FilterOperator[] => {\n if (field.operators) return field.operators\n\n const operators = createOperatorsFromI18n(i18n)\n\n // Determine field type for operator selection\n let fieldType = field.type || \"select\"\n\n // If it's a select field but has multiple values, treat as multiselect\n if (fieldType === \"select\" && values.length > 1) {\n fieldType = \"multiselect\"\n }\n\n // If it's a multiselect field or has multiselect operators, use multiselect operators\n if (fieldType === \"multiselect\" || field.type === \"multiselect\") {\n return operators.multiselect\n }\n\n return operators[fieldType] || operators.select\n}\n\ninterface FilterOperatorDropdownProps<T = unknown> {\n field: FilterFieldConfig<T>\n operator: string\n values: T[]\n onChange: (operator: string) => void\n}\n\nfunction FilterOperatorDropdown<T = unknown>({\n field,\n operator,\n values,\n onChange,\n}: FilterOperatorDropdownProps<T>) {\n const context = useFilterContext()\n const operators = useMemo(\n () => getOperatorsForField(field, values, context.i18n),\n [field, values, context.i18n]\n )\n\n // Find the operator label, with fallback to formatted operator name\n const operatorLabel =\n operators.find((op) => op.value === operator)?.label ||\n context.i18n.helpers.formatOperator(operator)\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"outline\"\n size={context.size}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n {operatorLabel}\n </Button>\n }\n />\n <DropdownMenuContent align=\"start\" className=\"w-fit min-w-fit\">\n {operators.map((op) => (\n <DropdownMenuItem\n key={op.value}\n onClick={() => onChange(op.value)}\n className={cn(\n \"flex items-center justify-between data-highlighted:bg-accent data-highlighted:text-accent-foreground\"\n )}\n >\n <span>{op.label}</span>\n <CheckIcon\n className={cn(\n \"ms-auto text-primary\",\n op.value === operator ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\ninterface FilterValueSelectorProps<T = unknown> {\n field: FilterFieldConfig<T>\n values: T[]\n onChange: (values: T[]) => void\n operator: string\n autoFocus?: boolean\n}\n\ninterface SelectOptionsPopoverProps<T = unknown> {\n field: FilterFieldConfig<T>\n values: T[]\n onChange: (values: T[]) => void\n onClose?: () => void\n inline?: boolean\n}\n\nfunction SelectOptionsPopover<T = unknown>({\n field,\n values,\n onChange,\n onClose,\n inline = false,\n}: SelectOptionsPopoverProps<T>) {\n const [open, setOpen] = useState(false)\n const [searchInput, setSearchInput] = useState(\"\")\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const context = useFilterContext()\n const baseId = useId()\n\n useEffect(() => {\n if (open) {\n inputRef.current?.focus()\n }\n }, [open])\n\n useEffect(() => {\n setHighlightedIndex(-1)\n }, [searchInput, open])\n\n useEffect(() => {\n if (highlightedIndex >= 0 && open) {\n const element = document.getElementById(\n `${baseId}-item-${highlightedIndex}`\n )\n element?.scrollIntoView({ block: \"nearest\" })\n }\n }, [highlightedIndex, open, baseId])\n\n const {\n isAsync,\n options: resolvedOptions,\n loading,\n error,\n resolveSelected,\n } = useFieldOptions(field, searchInput, inline || open)\n\n const isMultiSelect = field.type === \"multiselect\" || values.length > 1\n const effectiveValues =\n (field.value !== undefined ? (field.value as T[]) : values) || []\n\n // Static fields read their list verbatim (unchanged legacy behavior). Async\n // fields resolve selected values from the value->label cache and take the\n // loader's (already query-filtered) result as the unselected list.\n const selectedOptions = isAsync\n ? resolveSelected(effectiveValues)\n : field.options?.filter((opt) => effectiveValues.includes(opt.value)) || []\n const unselectedOptions = isAsync\n ? resolvedOptions.filter((opt) => !effectiveValues.includes(opt.value))\n : field.options?.filter((opt) => !effectiveValues.includes(opt.value)) || []\n\n // Filter options based on search input (client-side for static lists; async\n // loaders have already filtered by the query).\n const filteredSelectedOptions = selectedOptions // Keep all selected visible\n const filteredUnselectedOptions = isAsync\n ? unselectedOptions\n : unselectedOptions.filter((opt) =>\n opt.label.toLowerCase().includes(searchInput.toLowerCase())\n )\n\n const allFilteredOptions = useMemo(\n () => [...filteredSelectedOptions, ...filteredUnselectedOptions],\n [filteredSelectedOptions, filteredUnselectedOptions]\n )\n\n const handleClose = () => {\n setOpen(false)\n onClose?.()\n }\n\n // Toggle a single option, shared by the plain and custom (renderOptionList)\n // renderers so both behave identically.\n const toggleOption = (option: FilterOption<T>) => {\n const isSelected = effectiveValues.includes(option.value)\n const next = isSelected\n ? (effectiveValues.filter((v) => v !== option.value) as T[])\n : isMultiSelect\n ? ([...effectiveValues, option.value] as T[])\n : ([option.value] as T[])\n\n if (\n !isSelected &&\n isMultiSelect &&\n field.maxSelections &&\n next.length > field.maxSelections\n ) {\n return\n }\n\n if (field.onValueChange) {\n field.onValueChange(next)\n } else {\n onChange(next)\n }\n if (!isMultiSelect) handleClose()\n }\n\n const renderOptionItem = (option: FilterOption<T>, overallIndex: number) => {\n const isSelected = effectiveValues.includes(option.value)\n const isHighlighted = highlightedIndex === overallIndex\n const itemId = `${baseId}-item-${overallIndex}`\n\n return (\n <DropdownMenuCheckboxItem\n key={String(option.value)}\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => setHighlightedIndex(overallIndex)}\n checked={isSelected}\n className={cn(\n \"data-highlighted:bg-accent data-highlighted:text-accent-foreground\",\n option.className\n )}\n onSelect={(e) => {\n if (isMultiSelect) e.preventDefault()\n }}\n onCheckedChange={() => toggleOption(option)}\n >\n {option.icon && option.icon}\n <span className=\"truncate\">{option.label}</span>\n </DropdownMenuCheckboxItem>\n )\n }\n\n const renderMenuContent = () => (\n <>\n {field.searchable !== false && (\n <>\n <Input\n ref={inputRef}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={true}\n aria-haspopup=\"listbox\"\n aria-controls={`${baseId}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${baseId}-item-${highlightedIndex}`\n : undefined\n }\n placeholder={context.i18n.placeholders.searchField(\n field.label || \"\"\n )}\n className={cn(\n \"h-8 rounded-none border-0 border-input bg-transparent! px-2 text-sm shadow-none\",\n \"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0\",\n open && \"placeholder:text-foreground\"\n )}\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n onBlur={() => open && inputRef.current?.focus()}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (allFilteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev < allFilteredOptions.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (allFilteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : allFilteredOptions.length - 1\n )\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n setOpen(false)\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const option = allFilteredOptions[highlightedIndex]\n if (option) {\n const isSelected = effectiveValues.includes(option.value as T)\n const next = isSelected\n ? (effectiveValues.filter((v) => v !== option.value) as T[])\n : isMultiSelect\n ? ([...effectiveValues, option.value] as T[])\n : ([option.value] as T[])\n\n if (\n !isSelected &&\n isMultiSelect &&\n field.maxSelections &&\n next.length > field.maxSelections\n ) {\n return\n }\n\n if (field.onValueChange) {\n field.onValueChange(next)\n } else {\n onChange(next)\n }\n if (!isMultiSelect) handleClose()\n }\n }\n e.stopPropagation()\n }}\n />\n <DropdownMenuSeparator />\n </>\n )}\n <div className=\"relative flex max-h-full\">\n <div\n className=\"flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain\"\n role=\"listbox\"\n id={`${baseId}-listbox`}\n >\n {isAsync && loading && allFilteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {context.i18n.loadingOptions ?? DEFAULT_I18N.loadingOptions}\n </div>\n ) : isAsync && error ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {context.i18n.errorLoadingOptions ??\n DEFAULT_I18N.errorLoadingOptions}\n </div>\n ) : allFilteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {context.i18n.noResultsFound}\n </div>\n ) : field.renderOptionList ? (\n field.renderOptionList({\n options: allFilteredOptions,\n highlightedIndex,\n renderOption: renderOptionItem,\n })\n ) : (\n <ScrollArea className=\"size-full min-h-0 **:data-[slot=scroll-area-scrollbar]:m-0 **:data-[slot=scroll-area-viewport]:h-full **:data-[slot=scroll-area-viewport]:overscroll-contain\">\n {/* Selected items */}\n {filteredSelectedOptions.length > 0 && (\n <DropdownMenuGroup className=\"px-1\">\n {filteredSelectedOptions.map((option, index) =>\n renderOptionItem(option, index)\n )}\n </DropdownMenuGroup>\n )}\n\n {/* Separator */}\n {filteredSelectedOptions.length > 0 &&\n filteredUnselectedOptions.length > 0 && (\n <DropdownMenuSeparator className=\"mx-0\" />\n )}\n\n {/* Available items */}\n {filteredUnselectedOptions.length > 0 && (\n <DropdownMenuGroup className=\"px-1\">\n {filteredUnselectedOptions.map((option, index) =>\n renderOptionItem(\n option,\n index + filteredSelectedOptions.length\n )\n )}\n </DropdownMenuGroup>\n )}\n </ScrollArea>\n )}\n </div>\n </div>\n </>\n )\n\n if (inline) {\n return <div className=\"w-full\">{renderMenuContent()}</div>\n }\n\n return (\n <DropdownMenu\n open={open}\n onOpenChange={(open) => {\n setOpen(open)\n if (!open) {\n setTimeout(() => setSearchInput(\"\"), 200)\n }\n }}\n >\n <DropdownMenuTrigger\n render={\n <Button variant=\"outline\" size={context.size}>\n <div className=\"flex items-center gap-1.5\">\n {field.customValueRenderer ? (\n field.customValueRenderer(\n values,\n isAsync ? resolveSelected(values) : field.options || []\n )\n ) : (\n <>\n {selectedOptions.length > 0 && (\n <div className=\"flex items-center -space-x-1.5\">\n {selectedOptions.slice(0, 3).map((option) => (\n <div key={String(option.value)}>{option.icon}</div>\n ))}\n </div>\n )}\n {selectedOptions.length === 1\n ? selectedOptions[0].label\n : selectedOptions.length > 1\n ? `${selectedOptions.length} ${context.i18n.selectedCount}`\n : context.i18n.select}\n </>\n )}\n </div>\n </Button>\n }\n />\n <DropdownMenuContent\n align=\"start\"\n className={cn(\"w-50 px-0\", field.className)}\n >\n {renderMenuContent()}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nfunction FilterValueSelector<T = unknown>({\n field,\n values,\n onChange,\n operator,\n autoFocus,\n}: FilterValueSelectorProps<T>) {\n if (operator === \"empty\" || operator === \"not_empty\") {\n return null\n }\n\n if (field.customRenderer) {\n return (\n <ButtonGroupText className=\"bg-background text-start whitespace-nowrap outline-hidden hover:bg-accent aria-expanded:bg-accent dark:bg-input/30\">\n {field.customRenderer({ field, values, onChange, operator })}\n </ButtonGroupText>\n )\n }\n\n if (field.type === \"text\") {\n return (\n <FilterInput\n type=\"text\"\n value={(values[0] as string) || \"\"}\n onChange={(e) => onChange([e.target.value] as T[])}\n placeholder={field.placeholder}\n pattern={field.pattern}\n field={field}\n className={cn(\"w-36\", field.className)}\n autoFocus={autoFocus}\n />\n )\n }\n\n if (field.type === \"select\" || field.type === \"multiselect\") {\n return (\n <SelectOptionsPopover field={field} values={values} onChange={onChange} />\n )\n }\n\n return (\n <SelectOptionsPopover field={field} values={values} onChange={onChange} />\n )\n}\nexport interface Filter<T = unknown> {\n id: string\n field: string\n operator: string\n values: T[]\n}\n\nexport interface FilterGroup<T = unknown> {\n id: string\n label?: string\n filters: Filter<T>[]\n fields: FilterFieldConfig<T>[]\n}\n\ninterface FiltersContentProps<T = unknown> {\n filters: Filter<T>[]\n fields: FilterFieldsConfig<T>\n onChange: (filters: Filter<T>[]) => void\n}\n\nexport const FiltersContent = <T = unknown,>({\n filters,\n fields,\n onChange,\n}: FiltersContentProps<T>) => {\n const context = useFilterContext()\n const fieldsMap = useMemo(() => getFieldsMap(fields), [fields])\n\n const updateFilter = useCallback(\n (filterId: string, updates: Partial<Filter<T>>) => {\n onChange(\n filters.map((filter) => {\n if (filter.id === filterId) {\n const updatedFilter = { ...filter, ...updates }\n if (\n updates.operator === \"empty\" ||\n updates.operator === \"not_empty\"\n ) {\n updatedFilter.values = [] as T[]\n }\n return updatedFilter\n }\n return filter\n })\n )\n },\n [filters, onChange]\n )\n\n const removeFilter = useCallback(\n (filterId: string) => {\n onChange(filters.filter((filter) => filter.id !== filterId))\n },\n [filters, onChange]\n )\n\n return (\n <div\n className={cn(\n filtersContainerVariants({\n variant: context.variant,\n size: context.size,\n }),\n context.className\n )}\n >\n {filters.map((filter) => {\n const field = fieldsMap[filter.field]\n if (!field) return null\n\n return (\n <ButtonGroup\n key={filter.id}\n // Sera is an underline style: its group text and input group carry\n // only a bottom border. Normalise the boxed segments (the operator,\n // value and remove buttons) to the same treatment so the whole chip\n // reads as one underlined group instead of mixing boxes and rules.\n className=\"\"\n >\n <ButtonGroupText>\n {field.icon && field.icon}\n {field.label}\n </ButtonGroupText>\n\n <FilterOperatorDropdown<T>\n field={field}\n operator={filter.operator}\n values={filter.values}\n onChange={(operator) => updateFilter(filter.id, { operator })}\n />\n\n <FilterValueSelector<T>\n field={field}\n values={filter.values}\n onChange={(values) => updateFilter(filter.id, { values })}\n operator={filter.operator}\n autoFocus={false}\n />\n\n <FilterRemoveButton onClick={() => removeFilter(filter.id)} />\n </ButtonGroup>\n )\n })}\n </div>\n )\n}\n\ninterface FiltersProps<T = unknown> {\n filters: Filter<T>[]\n fields: FilterFieldsConfig<T>\n onChange: (filters: Filter<T>[]) => void\n className?: string\n variant?: \"solid\" | \"default\"\n size?: \"sm\" | \"default\" | \"lg\"\n radius?: \"default\" | \"full\"\n i18n?: Partial<FilterI18nConfig>\n showSearchInput?: boolean\n trigger?: React.ReactNode\n allowMultiple?: boolean\n menuPopupClassName?: string\n collapseAddButton?: boolean\n enableShortcut?: boolean\n shortcutKey?: string\n shortcutLabel?: string\n}\n\ninterface FilterSubmenuContentProps<T = unknown> {\n field: FilterFieldConfig<T>\n currentValues: T[]\n isMultiSelect: boolean\n onToggle: (value: T, isSelected: boolean) => void\n i18n: FilterI18nConfig\n isActive?: boolean\n onActive?: () => void\n onBack?: () => void\n onClose?: () => void\n}\n\nfunction FilterSubmenuContent<T = unknown>({\n field,\n currentValues,\n isMultiSelect,\n onToggle,\n i18n,\n isActive,\n onActive,\n onBack,\n onClose,\n}: FilterSubmenuContentProps<T>) {\n const [searchInput, setSearchInput] = useState(\"\")\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const inputRef = useRef<HTMLInputElement>(null)\n const baseId = useId()\n\n const {\n isAsync,\n options: resolvedOptions,\n loading,\n error,\n resolveSelected,\n } = useFieldOptions(field, searchInput, true)\n\n useEffect(() => {\n if (isActive) {\n if (field.searchable !== false) {\n inputRef.current?.focus()\n } else {\n const listbox = document.getElementById(`${baseId}-listbox`)\n listbox?.focus()\n }\n }\n }, [isActive, field.searchable, baseId])\n\n useEffect(() => {\n setHighlightedIndex(-1)\n }, [searchInput])\n\n useEffect(() => {\n if (highlightedIndex >= 0 && isActive) {\n const element = document.getElementById(\n `${baseId}-item-${highlightedIndex}`\n )\n element?.scrollIntoView({ block: \"nearest\" })\n }\n }, [highlightedIndex, isActive, baseId])\n\n const filteredOptions = useMemo(() => {\n // Async fields: keep selected values first (resolved from cache so they\n // stay labelled), then the loader's already-query-filtered results.\n if (isAsync) {\n const selectedSet = new Set(currentValues)\n return [\n ...resolveSelected(currentValues),\n ...resolvedOptions.filter((option) => !selectedSet.has(option.value)),\n ]\n }\n return (\n field.options?.filter((option) => {\n const isSelected = currentValues.includes(option.value)\n if (isSelected) return true\n if (!searchInput) return true\n return option.label.toLowerCase().includes(searchInput.toLowerCase())\n }) || []\n )\n }, [\n isAsync,\n resolvedOptions,\n resolveSelected,\n field.options,\n searchInput,\n currentValues,\n ])\n\n const renderOptionItem = (option: FilterOption<T>, index: number) => {\n const isSelected = currentValues.includes(option.value)\n const isHighlighted = highlightedIndex === index\n const itemId = `${baseId}-item-${index}`\n\n return (\n <DropdownMenuCheckboxItem\n key={String(option.value)}\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => setHighlightedIndex(index)}\n checked={isSelected}\n className={cn(\n \"data-highlighted:bg-accent data-highlighted:text-accent-foreground\",\n option.className\n )}\n onSelect={(e) => {\n if (isMultiSelect) e.preventDefault()\n }}\n onCheckedChange={() => onToggle(option.value as T, isSelected)}\n >\n {option.icon && option.icon}\n <span className=\"truncate\">{option.label}</span>\n </DropdownMenuCheckboxItem>\n )\n }\n\n useEffect(() => {\n if (isActive && filteredOptions.length > 0) {\n setHighlightedIndex(0)\n }\n }, [isActive, filteredOptions.length])\n\n return (\n <div className=\"flex flex-col\" onMouseEnter={onActive}>\n {field.searchable !== false && (\n <>\n <Input\n ref={inputRef}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={true}\n aria-haspopup=\"listbox\"\n aria-controls={`${baseId}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${baseId}-item-${highlightedIndex}`\n : undefined\n }\n placeholder={i18n.placeholders.searchField(field.label || \"\")}\n className={cn(\n \"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none\",\n \"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0\",\n isActive && \"placeholder:text-foreground\"\n )}\n value={searchInput}\n onBlur={() => isActive && inputRef.current?.focus()}\n onChange={(e) => setSearchInput(e.target.value)}\n onFocus={() => onActive?.()}\n onMouseEnter={(e) => {\n onActive?.()\n e.stopPropagation()\n }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n onBack?.()\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const option = filteredOptions[highlightedIndex]\n if (option) {\n onToggle(\n option.value as T,\n currentValues.includes(option.value)\n )\n if (!isMultiSelect) {\n onBack?.()\n }\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault()\n onClose?.()\n }\n e.stopPropagation()\n }}\n />\n <DropdownMenuSeparator />\n </>\n )}\n <div className=\"relative flex max-h-full\">\n <div\n className=\"flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain outline-hidden\"\n role=\"listbox\"\n id={`${baseId}-listbox`}\n tabIndex={field.searchable === false ? 0 : -1}\n onKeyDown={(e) => {\n if (field.searchable === false) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (filteredOptions.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n onBack?.()\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const option = filteredOptions[highlightedIndex]\n if (option) {\n onToggle(\n option.value as T,\n currentValues.includes(option.value)\n )\n if (!isMultiSelect) {\n onBack?.()\n }\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault()\n onClose?.()\n }\n e.stopPropagation()\n }\n }}\n >\n {isAsync && loading && filteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {i18n.loadingOptions ?? DEFAULT_I18N.loadingOptions}\n </div>\n ) : isAsync && error ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {i18n.errorLoadingOptions ?? DEFAULT_I18N.errorLoadingOptions}\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {i18n.noResultsFound}\n </div>\n ) : field.renderOptionList ? (\n field.renderOptionList({\n options: filteredOptions,\n highlightedIndex,\n renderOption: renderOptionItem,\n })\n ) : (\n <ScrollArea className=\"size-full min-h-0 **:data-[slot=scroll-area-scrollbar]:m-0 **:data-[slot=scroll-area-viewport]:h-full **:data-[slot=scroll-area-viewport]:overscroll-contain\">\n <DropdownMenuGroup>\n {filteredOptions.map((option, index) =>\n renderOptionItem(option, index)\n )}\n </DropdownMenuGroup>\n </ScrollArea>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport function Filters<T = unknown>({\n filters,\n fields,\n onChange,\n className,\n variant = \"default\",\n size = \"default\",\n radius = \"default\",\n i18n,\n showSearchInput = true,\n trigger,\n allowMultiple = true,\n menuPopupClassName,\n enableShortcut = false,\n shortcutKey = \"f\",\n shortcutLabel = \"F\",\n}: FiltersProps<T>) {\n const [addFilterOpen, setAddFilterOpen] = useState(false)\n const [menuSearchInput, setMenuSearchInput] = useState(\"\")\n const [activeMenu, setActiveMenu] = useState<string>(\"root\")\n const [openSubMenu, setOpenSubMenu] = useState<string | null>(null)\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const [lastAddedFilterId, setLastAddedFilterId] = useState<string | null>(\n null\n )\n const rootInputRef = useRef<HTMLInputElement>(null)\n const rootId = useId()\n\n useEffect(() => {\n if (!enableShortcut) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (\n e.key.toLowerCase() === shortcutKey.toLowerCase() &&\n !addFilterOpen &&\n !(\n document.activeElement instanceof HTMLInputElement ||\n document.activeElement instanceof HTMLTextAreaElement\n )\n ) {\n e.preventDefault()\n setAddFilterOpen(true)\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [enableShortcut, shortcutKey, addFilterOpen])\n\n useEffect(() => {\n if (addFilterOpen && activeMenu === \"root\") {\n rootInputRef.current?.focus()\n }\n }, [addFilterOpen, activeMenu])\n\n useEffect(() => {\n setHighlightedIndex(-1)\n }, [menuSearchInput])\n\n useEffect(() => {\n if (highlightedIndex >= 0 && addFilterOpen) {\n const element = document.getElementById(\n `${rootId}-item-${highlightedIndex}`\n )\n element?.scrollIntoView({ block: \"nearest\" })\n }\n }, [highlightedIndex, addFilterOpen, rootId])\n\n useEffect(() => {\n if (!addFilterOpen) {\n setOpenSubMenu(null)\n }\n }, [addFilterOpen])\n\n // Track which filter instance is being built in the current Add Filter menu session\n // Maps fieldKey -> unique filterId created during this open session\n const [sessionFilterIds, setSessionFilterIds] = useState<\n Record<string, string>\n >({})\n\n useEffect(() => {\n if (lastAddedFilterId) {\n const timer = setTimeout(() => {\n setLastAddedFilterId(null)\n }, 1000)\n return () => clearTimeout(timer)\n }\n }, [lastAddedFilterId])\n\n const mergedI18n: FilterI18nConfig = useMemo(\n () => ({\n ...DEFAULT_I18N,\n ...i18n,\n operators: { ...DEFAULT_I18N.operators, ...i18n?.operators },\n placeholders: { ...DEFAULT_I18N.placeholders, ...i18n?.placeholders },\n validation: { ...DEFAULT_I18N.validation, ...i18n?.validation },\n }),\n [i18n]\n )\n\n const fieldsMap = useMemo(() => getFieldsMap(fields), [fields])\n\n const updateFilter = useCallback(\n (filterId: string, updates: Partial<Filter<T>>) => {\n onChange(\n filters.map((filter) => {\n if (filter.id === filterId) {\n const updatedFilter = { ...filter, ...updates }\n if (\n updates.operator === \"empty\" ||\n updates.operator === \"not_empty\"\n ) {\n updatedFilter.values = [] as T[]\n }\n return updatedFilter\n }\n return filter\n })\n )\n },\n [filters, onChange]\n )\n\n const removeFilter = useCallback(\n (filterId: string) => {\n onChange(filters.filter((filter) => filter.id !== filterId))\n },\n [filters, onChange]\n )\n\n const addFilter = useCallback(\n (fieldKey: string) => {\n const field = fieldsMap[fieldKey]\n if (field && field.key) {\n const defaultOperator =\n field.defaultOperator ||\n (field.type === \"multiselect\" ? \"is_any_of\" : \"is\")\n const defaultValues: unknown[] = field.type === \"text\" ? [\"\"] : []\n const newFilter = createFilter<T>(\n fieldKey,\n defaultOperator,\n defaultValues as T[]\n )\n setLastAddedFilterId(newFilter.id)\n onChange([...filters, newFilter])\n setAddFilterOpen(false)\n setMenuSearchInput(\"\")\n }\n },\n [fieldsMap, filters, onChange]\n )\n\n const selectableFields = useMemo(() => {\n const flatFields = flattenFields(fields)\n return flatFields.filter((field) => {\n if (!field.key || field.type === \"separator\") return false\n if (allowMultiple) return true\n return !filters.some((filter) => filter.field === field.key)\n })\n }, [fields, filters, allowMultiple])\n\n const filteredFields = useMemo(() => {\n return selectableFields.filter(\n (f) =>\n !menuSearchInput ||\n f.label?.toLowerCase().includes(menuSearchInput.toLowerCase())\n )\n }, [selectableFields, menuSearchInput])\n\n useEffect(() => {\n if (addFilterOpen && filteredFields.length > 0) {\n setHighlightedIndex(0)\n }\n }, [addFilterOpen, filteredFields.length])\n\n const triggerButton = useRender({\n render: (trigger as React.ReactElement) ?? (\n <Button variant=\"outline\">\n <PlusIcon />\n {mergedI18n.addFilter}\n </Button>\n ),\n defaultTagName: \"button\",\n })\n\n const contextValue = useMemo<FilterContextValue>(\n () => ({\n variant,\n size,\n radius,\n i18n: mergedI18n,\n className,\n trigger,\n allowMultiple,\n }),\n [variant, size, radius, mergedI18n, className, trigger, allowMultiple]\n )\n\n return (\n <FilterContext.Provider value={contextValue}>\n <div\n className={cn(filtersContainerVariants({ variant, size }), className)}\n >\n {selectableFields.length > 0 && (\n <DropdownMenu\n open={addFilterOpen}\n onOpenChange={(open) => {\n setAddFilterOpen(open)\n if (!open) {\n setMenuSearchInput(\"\")\n setSessionFilterIds({})\n } else {\n setActiveMenu(\"root\")\n }\n }}\n >\n <DropdownMenuTrigger render={triggerButton} />\n <DropdownMenuContent\n className={cn(\"w-55\", menuPopupClassName)}\n align=\"start\"\n >\n {showSearchInput && (\n <>\n <div className=\"relative\">\n <Input\n ref={rootInputRef}\n role=\"combobox\"\n aria-controls={`${rootId}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${rootId}-item-${highlightedIndex}`\n : undefined\n }\n placeholder={mergedI18n.searchFields}\n className={cn(\n \"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none\",\n \"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0\",\n activeMenu === \"root\" && \"placeholder:text-foreground\"\n )}\n value={menuSearchInput}\n onFocus={() => setActiveMenu(\"root\")}\n onMouseEnter={() => setActiveMenu(\"root\")}\n onBlur={() =>\n activeMenu === \"root\" && rootInputRef.current?.focus()\n }\n onChange={(e) => setMenuSearchInput(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n if (filteredFields.length > 0) {\n setHighlightedIndex((prev) =>\n prev < filteredFields.length - 1 ? prev + 1 : 0\n )\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n if (filteredFields.length > 0) {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredFields.length - 1\n )\n }\n } else if (\n (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") &&\n highlightedIndex >= 0\n ) {\n const field = filteredFields[highlightedIndex]\n const hasSubMenu =\n field &&\n (field.type === \"select\" ||\n field.type === \"multiselect\") &&\n fieldHasOptions(field)\n\n if (e.key === \"ArrowRight\" && hasSubMenu) {\n e.preventDefault()\n setOpenSubMenu(field.key || null)\n setActiveMenu(field.key || \"root\")\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n if (openSubMenu) {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n }\n }\n } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n e.preventDefault()\n const field = filteredFields[highlightedIndex]\n if (field.key) {\n const hasSubMenu =\n (field.type === \"select\" ||\n field.type === \"multiselect\") &&\n fieldHasOptions(field)\n if (!hasSubMenu) {\n addFilter(field.key)\n } else {\n if (openSubMenu === field.key) {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n } else {\n setOpenSubMenu(field.key)\n setActiveMenu(field.key)\n }\n }\n }\n } else if (e.key === \"Escape\") {\n setAddFilterOpen(false)\n }\n e.stopPropagation()\n }}\n />\n {enableShortcut && shortcutLabel && (\n <Kbd className=\"absolute top-1/2 right-2 -translate-y-1/2 border bg-background\">\n {shortcutLabel}\n </Kbd>\n )}\n </div>\n <DropdownMenuSeparator />\n </>\n )}\n\n <div className=\"relative flex max-h-full\">\n <div\n className=\"flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain\"\n role=\"listbox\"\n id={`${rootId}-listbox`}\n onMouseEnter={() => setActiveMenu(\"root\")}\n >\n <ScrollArea className=\"**:data-[slot=scroll-area-scrollbar]:m-0\">\n {(() => {\n if (filteredFields.length === 0) {\n return (\n <div className=\"py-2 text-center text-sm text-muted-foreground\">\n {mergedI18n.noFieldsFound}\n </div>\n )\n }\n\n return filteredFields.map((field, index) => {\n const isHighlighted = highlightedIndex === index\n const itemId = `${rootId}-item-${index}`\n const hasSubMenu =\n (field.type === \"select\" ||\n field.type === \"multiselect\") &&\n fieldHasOptions(field)\n\n if (hasSubMenu) {\n const isMultiSelect = field.type === \"multiselect\"\n const fieldKey = field.key as string\n const sessionFilterId = sessionFilterIds[fieldKey]\n const sessionFilter = sessionFilterId\n ? filters.find((f) => f.id === sessionFilterId)\n : null\n const currentValues = sessionFilter?.values || []\n\n return (\n <DropdownMenuSub\n key={fieldKey}\n open={openSubMenu === fieldKey}\n onOpenChange={(open) => {\n if (open) {\n setOpenSubMenu(fieldKey)\n } else {\n if (openSubMenu === fieldKey) {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n }\n }\n }}\n >\n <DropdownMenuSubTrigger\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => {\n setHighlightedIndex(index)\n setActiveMenu(\"root\")\n }}\n className=\"data-highlighted:bg-accent data-highlighted:text-accent-foreground data-popup-open:bg-accent data-popup-open:text-accent-foreground\"\n >\n {field.icon}\n <span>{field.label}</span>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent\n className=\"w-50\"\n side=\"right\"\n >\n <FilterSubmenuContent\n field={field}\n currentValues={currentValues}\n isMultiSelect={isMultiSelect}\n i18n={mergedI18n}\n isActive={activeMenu === fieldKey}\n onActive={() => {\n if (field.searchable !== false) {\n setActiveMenu(fieldKey)\n }\n }}\n onBack={() => {\n setOpenSubMenu(null)\n setActiveMenu(\"root\")\n }}\n onClose={() => setAddFilterOpen(false)}\n onToggle={(value, isSelected) => {\n if (isMultiSelect) {\n const nextValues = isSelected\n ? (currentValues.filter(\n (v) => v !== value\n ) as T[])\n : ([...currentValues, value] as T[])\n\n if (sessionFilter) {\n if (nextValues.length === 0) {\n onChange(\n filters.filter(\n (f) => f.id !== sessionFilter.id\n )\n )\n setSessionFilterIds((prev) => ({\n ...prev,\n [fieldKey]: \"\",\n }))\n } else {\n onChange(\n filters.map((f) =>\n f.id === sessionFilter.id\n ? { ...f, values: nextValues }\n : f\n )\n )\n }\n } else {\n const newFilter = createFilter<T>(\n fieldKey,\n field.defaultOperator || \"is_any_of\",\n nextValues\n )\n onChange([...filters, newFilter])\n setSessionFilterIds((prev) => ({\n ...prev,\n [fieldKey]: newFilter.id,\n }))\n }\n } else {\n const newFilter = createFilter<T>(\n fieldKey,\n field.defaultOperator || \"is\",\n [value] as T[]\n )\n setLastAddedFilterId(newFilter.id)\n onChange([...filters, newFilter])\n setAddFilterOpen(false)\n }\n }}\n />\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n }\n\n return (\n <DropdownMenuItem\n key={field.key}\n id={itemId}\n role=\"option\"\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted || undefined}\n onMouseEnter={() => setHighlightedIndex(index)}\n onClick={() => field.key && addFilter(field.key)}\n className=\"data-highlighted:bg-accent data-highlighted:text-accent-foreground\"\n >\n {field.icon}\n <span>{field.label}</span>\n </DropdownMenuItem>\n )\n })\n })()}\n </ScrollArea>\n </div>\n </div>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {filters.map((filter) => {\n const field = fieldsMap[filter.field]\n if (!field) return null\n return (\n <ButtonGroup\n key={filter.id}\n // Sera is an underline style: its group text and input group carry\n // only a bottom border. Normalise the boxed segments (operator,\n // value, remove) to the same treatment so the whole chip reads as\n // one underlined group instead of mixing boxes and rules.\n className=\"\"\n >\n <ButtonGroupText className=\"bg-background dark:bg-input/30\">\n {field.icon && field.icon}\n {field.label}\n </ButtonGroupText>\n <FilterOperatorDropdown<T>\n field={field}\n operator={filter.operator}\n values={filter.values}\n onChange={(operator) => updateFilter(filter.id, { operator })}\n />\n <FilterValueSelector<T>\n field={field}\n values={filter.values}\n operator={filter.operator}\n onChange={(values) => updateFilter(filter.id, { values })}\n autoFocus={filter.id === lastAddedFilterId}\n />\n <FilterRemoveButton onClick={() => removeFilter(filter.id)} />\n </ButtonGroup>\n )\n })}\n </div>\n </FilterContext.Provider>\n )\n}\n\nexport const createFilter = <T = unknown,>(\n field: string,\n operator?: string,\n values: T[] = []\n): Filter<T> => ({\n id: `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\n field,\n operator: operator || \"is\",\n values,\n})\n\nexport const createFilterGroup = <T = unknown,>(\n id: string,\n label: string,\n fields: FilterFieldConfig<T>[],\n initialFilters: Filter<T>[] = []\n): FilterGroup<T> => ({\n id,\n label,\n filters: initialFilters,\n fields,\n})\n","\"use client\"\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n","\"use client\"\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\nimport * as React from \"react\"\n\nimport { cn } from \"#lib/utils\"\nimport { Check, ChevronDown, ChevronUp } from \"@gravity-ui/icons\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-placeholder:text-muted-foreground data-[size=default]:h-8 *:data-[slot=select-value]:line-clamp-1 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <ChevronDown className=\"pointer-events-none size-4 text-muted-foreground\" />\n }\n />\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n \"relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-background text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-open:fade-in-0 data-open:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List className=\"p-1\">\n {children}\n </SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <Check className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"top-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronUp />\n </SelectPrimitive.ScrollUpArrow>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronDown />\n </SelectPrimitive.ScrollDownArrow>\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 {\n type CSSProperties,\n forwardRef,\n type HTMLAttributes,\n useLayoutEffect,\n} from \"react\"\n\nimport { cn } from \"#lib/utils\"\n\nconst componentThemeClassName =\n \"[--ic-background:#ffffff] [--ic-foreground:#111111] [--ic-primary:#111111] [--ic-secondary:#646b75] [--ic-surface-border:#e9edf2] [--ic-border:#e3e7ec] [--ic-card:#ffffff] [--ic-card-foreground:#111111] [--ic-muted:#f5f7fa] [--ic-muted-foreground:#6d7480] [--ic-accent:#f3f5f8] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] [--ic-accent-foreground:#111111] [--ic-input:#e3e7ec] [--ic-ring:rgba(17,17,17,0.16)] [--ic-destructive:#dc2626] [--ic-paper:#fcfcfd] [--ic-popover-foreground:#111111] [--ic-brand:#0ea5e9] [--ic-brand-soft:#bae6fd] [--ic-shadow-soft:0_18px_38px_-24px_rgba(15,23,42,0.35)] [--ic-chart-1:oklch(0.52_0.19_254)] [--ic-chart-2:oklch(0.74_0.11_232)] [--ic-chart-3:oklch(0.42_0.16_262)] [--ic-chart-4:oklch(0.84_0.07_228)] [--ic-chart-5:oklch(0.62_0.14_240)] [--color-background:var(--ic-background)] [--color-foreground:var(--ic-foreground)] [--color-primary:var(--ic-primary)] [--color-secondary:var(--ic-secondary)] [--color-border:var(--ic-border)] [--color-card:var(--ic-card)] [--color-card-foreground:var(--ic-card-foreground)] [--color-muted:var(--ic-muted)] [--color-muted-foreground:var(--ic-muted-foreground)] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] [--color-input:var(--ic-input)] [--color-ring:var(--ic-ring)] [--color-destructive:var(--ic-destructive)] [--color-paper:var(--ic-paper)] [--color-popover-foreground:var(--ic-popover-foreground)] [--color-brand:var(--ic-brand)] [--color-brand-soft:var(--ic-brand-soft)] [--color-chart-1:var(--ic-chart-1)] [--color-chart-2:var(--ic-chart-2)] [--color-chart-3:var(--ic-chart-3)] [--color-chart-4:var(--ic-chart-4)] [--color-chart-5:var(--ic-chart-5)] dark:[--ic-background:#111111] dark:[--ic-foreground:#f6f3ec] dark:[--ic-primary:#f6f3ec] dark:[--ic-secondary:#cbc6bb] dark:[--ic-surface-border:#2a2a25] dark:[--ic-border:#2b2a25] dark:[--ic-card:#111111] dark:[--ic-card-foreground:#f6f3ec] dark:[--ic-muted:#171716] dark:[--ic-muted-foreground:#9a958a] dark:[--ic-accent:#1a1a18] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] dark:[--ic-accent-foreground:#f6f3ec] dark:[--ic-input:#2b2a25] dark:[--ic-ring:rgba(246,243,236,0.18)] dark:[--ic-destructive:#f87171] dark:[--ic-paper:#171716] dark:[--ic-popover-foreground:#f6f3ec] dark:[--ic-brand:#38bdf8] dark:[--ic-brand-soft:#0c4a6e] dark:[--ic-shadow-soft:0_20px_44px_-28px_rgba(0,0,0,0.6)] dark:[--ic-chart-1:oklch(0.68_0.17_250)] dark:[--ic-chart-2:oklch(0.82_0.09_225)] dark:[--ic-chart-3:oklch(0.58_0.15_260)] dark:[--ic-chart-4:oklch(0.75_0.12_235)] dark:[--ic-chart-5:oklch(0.88_0.06_220)]\"\n\nconst STYLE_ID = \"iconiq-skeleton-styles\"\n\nconst SKELETON_CSS = `\n@keyframes iconiq-skeleton-shimmer {\n to {\n transform: translateX(200%);\n }\n}\n\n@keyframes iconiq-skeleton-fade {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.38;\n }\n}\n\n.iconiq-skeleton-surface {\n background-color: #f5f7fa;\n background-color: var(--ic-muted);\n}\n\n.iconiq-skeleton-shimmer {\n background: linear-gradient(\n 90deg,\n transparent 0%,\n rgba(17, 17, 17, 0.06) 50%,\n transparent 100%\n );\n background: linear-gradient(\n 90deg,\n transparent 0%,\n color-mix(in srgb, var(--ic-foreground) 6%, transparent) 50%,\n transparent 100%\n );\n animation: iconiq-skeleton-shimmer var(--iconiq-skeleton-duration, 1.6s)\n ease-in-out infinite;\n}\n\n.iconiq-skeleton-fade-root {\n animation: iconiq-skeleton-fade var(--iconiq-skeleton-duration, 2.4s)\n ease-in-out infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .iconiq-skeleton-shimmer,\n .iconiq-skeleton-fade-root {\n animation: none;\n }\n}\n`\n\ntype SkeletonRounded = \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\"\ntype SkeletonVariant = \"shimmer\" | \"fade\"\n\nconst skeletonRoundedClasses = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n} as const satisfies Record<SkeletonRounded, string>\n\nconst skeletonVariantDefaultDuration: Record<SkeletonVariant, number> = {\n shimmer: 1.6,\n fade: 2.4,\n}\n\nfunction getSkeletonVariantDuration(variant: SkeletonVariant, duration = 1.6) {\n if (duration !== 1.6) {\n return duration\n }\n\n return skeletonVariantDefaultDuration[variant]\n}\n\nfunction ensureSkeletonStyles() {\n if (typeof document === \"undefined\") {\n return\n }\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null\n\n if (!style) {\n style = document.createElement(\"style\")\n style.id = STYLE_ID\n document.head.appendChild(style)\n }\n\n style.textContent = SKELETON_CSS\n}\n\nfunction resolveSkeletonA11yProps({\n animate = true,\n decorative = true,\n label,\n}: {\n animate?: boolean\n decorative?: boolean\n label?: string | null\n}) {\n if (decorative || label === null) {\n return { \"aria-hidden\": true as const }\n }\n\n return {\n \"aria-label\": label ?? (animate ? \"Loading\" : \"Placeholder\"),\n \"aria-live\": \"polite\" as const,\n role: \"status\" as const,\n }\n}\n\ninterface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n animate?: boolean\n decorative?: boolean\n duration?: number\n label?: string | null\n rounded?: SkeletonRounded\n variant?: SkeletonVariant\n}\n\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\n {\n animate = true,\n className,\n decorative = true,\n duration = 1.6,\n label,\n rounded = \"md\",\n style,\n variant = \"shimmer\",\n ...props\n },\n ref\n) {\n const variantDuration = getSkeletonVariantDuration(variant, duration)\n const showShimmer = animate && variant === \"shimmer\"\n const showFade = animate && variant === \"fade\"\n\n useLayoutEffect(() => {\n if (animate) {\n ensureSkeletonStyles()\n }\n }, [animate])\n\n const animatedStyle =\n showShimmer || showFade\n ? ({\n ...style,\n \"--iconiq-skeleton-duration\": `${variantDuration}s`,\n } as CSSProperties)\n : style\n\n return (\n <div\n className={cn(\n componentThemeClassName,\n \"iconiq-skeleton-surface relative block h-4 w-full overflow-hidden\",\n showFade && \"iconiq-skeleton-fade-root\",\n skeletonRoundedClasses[rounded],\n className\n )}\n ref={ref}\n style={animatedStyle}\n {...resolveSkeletonA11yProps({ animate, decorative, label })}\n {...props}\n >\n {showShimmer ? (\n <span\n aria-hidden=\"true\"\n className=\"iconiq-skeleton-shimmer pointer-events-none absolute inset-0 -translate-x-full\"\n />\n ) : null}\n </div>\n )\n})\n\nSkeleton.displayName = \"Skeleton\"\n\nfunction SkeletonAvatar({\n className,\n ...props\n}: Omit<SkeletonProps, \"rounded\">) {\n return (\n <Skeleton\n className={cn(\"size-10\", className)}\n decorative\n rounded=\"full\"\n {...props}\n />\n )\n}\n\nfunction SkeletonText({ className, ...props }: SkeletonProps) {\n return <Skeleton className={cn(\"h-3\", className)} decorative {...props} />\n}\n\nfunction SkeletonButton({\n className,\n ...props\n}: Omit<SkeletonProps, \"rounded\">) {\n return (\n <Skeleton\n className={cn(\"h-9 w-24\", className)}\n decorative\n rounded=\"lg\"\n {...props}\n />\n )\n}\n\nconst ShimmerSkeleton = Skeleton\n\nexport {\n getSkeletonVariantDuration,\n resolveSkeletonA11yProps,\n ShimmerSkeleton,\n Skeleton,\n SkeletonAvatar,\n SkeletonButton,\n skeletonRoundedClasses,\n SkeletonText,\n skeletonVariantDefaultDuration,\n}\nexport default Skeleton\nexport type {\n SkeletonProps as ShimmerSkeletonProps,\n SkeletonProps,\n SkeletonRounded,\n SkeletonVariant,\n}\n","\"use client\"\n\nimport { GooeyToaster, type GooeyToasterProps } from \"goey-toast\"\nimport { useTheme } from \"next-themes\"\n\nconst Toaster = ({ closeButton = \"top-left\", ...props }: GooeyToasterProps) => {\n const { theme = \"system\" } = useTheme()\n const toasterTheme = theme === \"dark\" ? \"dark\" : \"light\"\n\n return (\n <GooeyToaster\n theme={toasterTheme}\n position=\"bottom-right\"\n closeButton={closeButton}\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport {\n type Announcements,\n closestCenter,\n closestCorners,\n defaultDropAnimationSideEffects,\n DndContext,\n type DndContextProps,\n type DragEndEvent,\n type DraggableAttributes,\n type DraggableSyntheticListeners,\n DragOverlay,\n type DragStartEvent,\n type DropAnimation,\n KeyboardSensor,\n MouseSensor,\n type ScreenReaderInstructions,\n TouchSensor,\n type UniqueIdentifier,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n restrictToHorizontalAxis,\n restrictToParentElement,\n restrictToVerticalAxis,\n} from \"@dnd-kit/modifiers\";\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n type SortableContextProps,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nimport { useComposedRefs } from \"#lib/compose-refs\";\nimport { cn } from \"#lib/utils\";\nimport { useIsomorphicLayoutEffect } from \"#hooks/use-isomorphic-layout-effect\";\n\nconst orientationConfig = {\n vertical: {\n modifiers: [restrictToVerticalAxis, restrictToParentElement],\n strategy: verticalListSortingStrategy,\n collisionDetection: closestCenter,\n },\n horizontal: {\n modifiers: [restrictToHorizontalAxis, restrictToParentElement],\n strategy: horizontalListSortingStrategy,\n collisionDetection: closestCenter,\n },\n mixed: {\n modifiers: [restrictToParentElement],\n strategy: undefined,\n collisionDetection: closestCorners,\n },\n};\n\nconst ROOT_NAME = \"Sortable\";\nconst CONTENT_NAME = \"SortableContent\";\nconst ITEM_NAME = \"SortableItem\";\nconst ITEM_HANDLE_NAME = \"SortableItemHandle\";\nconst OVERLAY_NAME = \"SortableOverlay\";\n\ninterface SortableRootContextValue<T> {\n id: string;\n items: UniqueIdentifier[];\n modifiers: DndContextProps[\"modifiers\"];\n strategy: SortableContextProps[\"strategy\"];\n activeId: UniqueIdentifier | null;\n setActiveId: (id: UniqueIdentifier | null) => void;\n getItemValue: (item: T) => UniqueIdentifier;\n flatCursor: boolean;\n}\n\nconst SortableRootContext =\n React.createContext<SortableRootContextValue<unknown> | null>(null);\n\nfunction useSortableContext(consumerName: string) {\n const context = React.useContext(SortableRootContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface GetItemValue<T> {\n /**\n * Callback that returns a unique identifier for each sortable item. Required for array of objects.\n * @example getItemValue={(item) => item.id}\n */\n getItemValue: (item: T) => UniqueIdentifier;\n}\n\ntype SortableProps<T> = DndContextProps &\n (T extends object ? GetItemValue<T> : Partial<GetItemValue<T>>) & {\n value: T[];\n onValueChange?: (items: T[]) => void;\n onMove?: (\n event: DragEndEvent & { activeIndex: number; overIndex: number },\n ) => void;\n strategy?: SortableContextProps[\"strategy\"];\n orientation?: \"vertical\" | \"horizontal\" | \"mixed\";\n flatCursor?: boolean;\n };\n\nfunction Sortable<T>(props: SortableProps<T>) {\n const {\n value,\n onValueChange,\n collisionDetection,\n modifiers,\n strategy,\n onMove,\n orientation = \"vertical\",\n flatCursor = false,\n getItemValue: getItemValueProp,\n accessibility,\n ...sortableProps\n } = props;\n\n const id = React.useId();\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null);\n\n const sensors = useSensors(\n useSensor(MouseSensor),\n useSensor(TouchSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n const config = React.useMemo(\n () => orientationConfig[orientation],\n [orientation],\n );\n\n const getItemValue = React.useCallback(\n (item: T): UniqueIdentifier => {\n if (typeof item === \"object\" && !getItemValueProp) {\n throw new Error(\n \"`getItemValue` is required when using array of objects\",\n );\n }\n return getItemValueProp\n ? getItemValueProp(item)\n : (item as UniqueIdentifier);\n },\n [getItemValueProp],\n );\n\n const items = React.useMemo(() => {\n return value.map((item) => getItemValue(item));\n }, [value, getItemValue]);\n\n const onDragStart = React.useCallback(\n (event: DragStartEvent) => {\n sortableProps.onDragStart?.(event);\n\n if (event.activatorEvent.defaultPrevented) return;\n\n setActiveId(event.active.id);\n },\n [sortableProps.onDragStart],\n );\n\n const onDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n sortableProps.onDragEnd?.(event);\n\n if (event.activatorEvent.defaultPrevented) return;\n\n const { active, over } = event;\n if (over && active.id !== over?.id) {\n const activeIndex = value.findIndex(\n (item) => getItemValue(item) === active.id,\n );\n const overIndex = value.findIndex(\n (item) => getItemValue(item) === over.id,\n );\n\n if (onMove) {\n onMove({ ...event, activeIndex, overIndex });\n } else {\n onValueChange?.(arrayMove(value, activeIndex, overIndex));\n }\n }\n setActiveId(null);\n },\n [value, onValueChange, onMove, getItemValue, sortableProps.onDragEnd],\n );\n\n const onDragCancel = React.useCallback(\n (event: DragEndEvent) => {\n sortableProps.onDragCancel?.(event);\n\n if (event.activatorEvent.defaultPrevented) return;\n\n setActiveId(null);\n },\n [sortableProps.onDragCancel],\n );\n\n const announcements: Announcements = React.useMemo(\n () => ({\n onDragStart({ active }) {\n const activeValue = active.id.toString();\n return `Grabbed sortable item \"${activeValue}\". Current position is ${active.data.current?.sortable.index + 1} of ${value.length}. Use arrow keys to move, space to drop.`;\n },\n onDragOver({ active, over }) {\n if (over) {\n const overIndex = over.data.current?.sortable.index ?? 0;\n const activeIndex = active.data.current?.sortable.index ?? 0;\n const moveDirection = overIndex > activeIndex ? \"down\" : \"up\";\n const activeValue = active.id.toString();\n return `Sortable item \"${activeValue}\" moved ${moveDirection} to position ${overIndex + 1} of ${value.length}.`;\n }\n return \"Sortable item is no longer over a droppable area. Press escape to cancel.\";\n },\n onDragEnd({ active, over }) {\n const activeValue = active.id.toString();\n if (over) {\n const overIndex = over.data.current?.sortable.index ?? 0;\n return `Sortable item \"${activeValue}\" dropped at position ${overIndex + 1} of ${value.length}.`;\n }\n return `Sortable item \"${activeValue}\" dropped. No changes were made.`;\n },\n onDragCancel({ active }) {\n const activeIndex = active.data.current?.sortable.index ?? 0;\n const activeValue = active.id.toString();\n return `Sorting cancelled. Sortable item \"${activeValue}\" returned to position ${activeIndex + 1} of ${value.length}.`;\n },\n onDragMove({ active, over }) {\n if (over) {\n const overIndex = over.data.current?.sortable.index ?? 0;\n const activeIndex = active.data.current?.sortable.index ?? 0;\n const moveDirection = overIndex > activeIndex ? \"down\" : \"up\";\n const activeValue = active.id.toString();\n return `Sortable item \"${activeValue}\" is moving ${moveDirection} to position ${overIndex + 1} of ${value.length}.`;\n }\n return \"Sortable item is no longer over a droppable area. Press escape to cancel.\";\n },\n }),\n [value],\n );\n\n const screenReaderInstructions: ScreenReaderInstructions = React.useMemo(\n () => ({\n draggable: `\n To pick up a sortable item, press space or enter.\n While dragging, use the ${orientation === \"vertical\" ? \"up and down\" : orientation === \"horizontal\" ? \"left and right\" : \"arrow\"} keys to move the item.\n Press space or enter again to drop the item in its new position, or press escape to cancel.\n `,\n }),\n [orientation],\n );\n\n const contextValue = React.useMemo(\n () => ({\n id,\n items,\n modifiers: modifiers ?? config.modifiers,\n strategy: strategy ?? config.strategy,\n activeId,\n setActiveId,\n getItemValue,\n flatCursor,\n }),\n [\n id,\n items,\n modifiers,\n strategy,\n config.modifiers,\n config.strategy,\n activeId,\n getItemValue,\n flatCursor,\n ],\n );\n\n return (\n <SortableRootContext.Provider\n value={contextValue as SortableRootContextValue<unknown>}\n >\n <DndContext\n collisionDetection={collisionDetection ?? config.collisionDetection}\n modifiers={modifiers ?? config.modifiers}\n sensors={sensors}\n {...sortableProps}\n id={id}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onDragCancel={onDragCancel}\n accessibility={{\n announcements,\n screenReaderInstructions,\n ...accessibility,\n }}\n />\n </SortableRootContext.Provider>\n );\n}\n\nconst SortableContentContext = React.createContext<boolean>(false);\n\ninterface SortableContentProps\n extends React.ComponentProps<\"div\">, useRender.ComponentProps<\"div\"> {\n strategy?: SortableContextProps[\"strategy\"];\n children: React.ReactNode;\n withoutSlot?: boolean;\n}\n\nfunction SortableContent(props: SortableContentProps) {\n const {\n strategy: strategyProp,\n withoutSlot,\n children,\n className,\n render,\n ref,\n ...contentProps\n } = props;\n\n const context = useSortableContext(CONTENT_NAME);\n\n const element = useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n ref,\n className,\n children,\n },\n contentProps,\n ),\n render,\n state: {\n slot: \"sortable-content\",\n },\n enabled: !withoutSlot,\n });\n\n return (\n <SortableContentContext.Provider value={true}>\n <SortableContext\n items={context.items}\n strategy={strategyProp ?? context.strategy}\n >\n {withoutSlot ? children : element}\n </SortableContext>\n </SortableContentContext.Provider>\n );\n}\n\ninterface SortableItemContextValue {\n id: string;\n attributes: DraggableAttributes;\n listeners: DraggableSyntheticListeners | undefined;\n setActivatorNodeRef: (node: HTMLElement | null) => void;\n isDragging?: boolean;\n disabled?: boolean;\n}\n\nconst SortableItemContext =\n React.createContext<SortableItemContextValue | null>(null);\n\nfunction useSortableItemContext(consumerName: string) {\n const context = React.useContext(SortableItemContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ITEM_NAME}\\``);\n }\n return context;\n}\n\ninterface SortableItemProps\n extends React.ComponentProps<\"div\">, useRender.ComponentProps<\"div\"> {\n value: UniqueIdentifier;\n asHandle?: boolean;\n disabled?: boolean;\n}\n\nfunction SortableItem(props: SortableItemProps) {\n const {\n value,\n style,\n asHandle,\n disabled,\n className,\n render,\n ref,\n ...itemProps\n } = props;\n\n const inSortableContent = React.useContext(SortableContentContext);\n const inSortableOverlay = React.useContext(SortableOverlayContext);\n\n if (!inSortableContent && !inSortableOverlay) {\n throw new Error(\n `\\`${ITEM_NAME}\\` must be used within \\`${CONTENT_NAME}\\` or \\`${OVERLAY_NAME}\\``,\n );\n }\n\n if (value === \"\") {\n throw new Error(`\\`${ITEM_NAME}\\` value cannot be an empty string`);\n }\n\n const context = useSortableContext(ITEM_NAME);\n const id = React.useId();\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: value, disabled });\n\n const onNodeRefChange = React.useCallback(\n (node: HTMLElement | null) => {\n if (disabled) return;\n setNodeRef(node);\n if (asHandle) setActivatorNodeRef(node);\n },\n [disabled, asHandle, setNodeRef, setActivatorNodeRef],\n );\n\n const composedRef = useComposedRefs(ref, onNodeRefChange);\n\n const composedStyle = React.useMemo<React.CSSProperties>(() => {\n return {\n transform: CSS.Translate.toString(transform),\n transition,\n ...style,\n };\n }, [transform, transition, style]);\n\n const itemContext = React.useMemo<SortableItemContextValue>(\n () => ({\n id,\n attributes,\n listeners,\n setActivatorNodeRef,\n isDragging,\n disabled,\n }),\n [id, attributes, listeners, setActivatorNodeRef, isDragging, disabled],\n );\n\n const handleProps =\n asHandle && !disabled ? { ...attributes, ...listeners } : undefined;\n\n const element = useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n id,\n ref: composedRef,\n style: composedStyle,\n className: cn(\n \"focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden\",\n {\n \"touch-none select-none\": asHandle,\n \"cursor-default\": context.flatCursor,\n \"data-dragging:cursor-grabbing\": !context.flatCursor,\n \"cursor-grab\": !isDragging && asHandle && !context.flatCursor,\n \"opacity-50\": isDragging,\n \"pointer-events-none opacity-50\": disabled,\n },\n className,\n ),\n },\n itemProps,\n handleProps,\n ),\n render,\n state: {\n slot: \"sortable-item\",\n ...(disabled && { disabled: \"\" }),\n ...(isDragging && { dragging: \"\" }),\n },\n });\n\n return (\n <SortableItemContext.Provider value={itemContext}>\n {element}\n </SortableItemContext.Provider>\n );\n}\n\ninterface SortableItemHandleProps\n extends React.ComponentProps<\"button\">, useRender.ComponentProps<\"button\"> {}\n\nfunction SortableItemHandle(props: SortableItemHandleProps) {\n const { disabled, className, render, ref, ...itemHandleProps } = props;\n\n const context = useSortableContext(ITEM_HANDLE_NAME);\n const itemContext = useSortableItemContext(ITEM_HANDLE_NAME);\n\n const isDisabled = disabled ?? itemContext.disabled;\n\n const { setActivatorNodeRef } = itemContext;\n\n const onActivatorNodeRef = React.useCallback(\n (node: HTMLElement | null) => {\n if (isDisabled) return;\n setActivatorNodeRef(node);\n },\n [isDisabled, setActivatorNodeRef],\n );\n\n const composedRef = useComposedRefs(ref, onActivatorNodeRef);\n\n const handleProps = isDisabled\n ? undefined\n : { ...itemContext.attributes, ...itemContext.listeners };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n type: \"button\",\n \"aria-controls\": itemContext.id,\n ref: composedRef,\n disabled: isDisabled,\n className: cn(\n \"select-none disabled:pointer-events-none disabled:opacity-50\",\n context.flatCursor\n ? \"cursor-default\"\n : \"cursor-grab data-dragging:cursor-grabbing\",\n className,\n ),\n },\n itemHandleProps,\n handleProps,\n ),\n render,\n state: {\n slot: \"sortable-item-handle\",\n ...(isDisabled && { disabled: \"\" }),\n ...(itemContext.isDragging && { dragging: \"\" }),\n },\n });\n}\n\nconst SortableOverlayContext = React.createContext(false);\n\nconst dropAnimation: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: \"0.4\",\n },\n },\n }),\n};\n\ninterface SortableOverlayProps extends Omit<\n React.ComponentProps<typeof DragOverlay>,\n \"children\"\n> {\n container?: Element | DocumentFragment | null;\n children?:\n | ((params: { value: UniqueIdentifier }) => React.ReactNode)\n | React.ReactNode;\n}\n\nfunction SortableOverlay(props: SortableOverlayProps) {\n const { container: containerProp, children, ...overlayProps } = props;\n\n const context = useSortableContext(OVERLAY_NAME);\n\n const [mounted, setMounted] = React.useState(false);\n\n useIsomorphicLayoutEffect(() => setMounted(true), []);\n\n const container =\n containerProp ?? (mounted ? globalThis.document?.body : null);\n\n if (!container) return null;\n\n return ReactDOM.createPortal(\n <DragOverlay\n dropAnimation={dropAnimation}\n modifiers={context.modifiers}\n className={cn(!context.flatCursor && \"cursor-grabbing\")}\n {...overlayProps}\n >\n <SortableOverlayContext.Provider value={true}>\n {context.activeId\n ? typeof children === \"function\"\n ? children({ value: context.activeId })\n : children\n : null}\n </SortableOverlayContext.Provider>\n </DragOverlay>,\n container,\n );\n}\n\nexport {\n Sortable,\n SortableContent,\n SortableItem,\n SortableItemHandle,\n SortableOverlay,\n type SortableProps,\n};\n","import * as React from \"react\";\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === \"function\") {\n return ref(value);\n }\n\n if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup === \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // oxlint-disable-next-line react/exhaustive-deps -- we want to memoize by all values\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from \"react\";\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","\"use client\"\n\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\"\n\nimport { cn } from \"#lib/utils\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: SwitchPrimitive.Root.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 motion-reduce:transition-none dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform duration-150 ease-out group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 motion-reduce:transition-none group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":"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","names":["jsx","jsx","jsxs","jsx","jsxs","motion","jsx","jsxs","initialProps","animateProps","motion","motion","jsx","jsxs","initialProps","animateProps","motion","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","cva","cva","mergeProps","useRender","cva","jsx","cva","useRender","mergeProps","mergeProps","useRender","cva","jsx","jsx","cva","useRender","mergeProps","React","jsx","Card","React","jsx","jsxs","api","React","jsx","jsxs","config","jsx","React","ChevronDown","Xmark","cva","jsx","jsx","cva","jsx","jsxs","ChevronDown","Xmark","Xmark","jsx","jsxs","Xmark","jsx","jsxs","React","jsx","motion","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","cva","jsx","cva","cva","useMemo","jsx","jsx","jsxs","cva","useMemo","useCallback","useState","jsx","jsxs","useState","useCallback","React","jsx","jsxs","mergeProps","useRender","cva","jsx","cva","useRender","mergeProps","useEffect","useState","React","BlobSpeech","JellyBlobMascot","jsx","jsxs","jsx","jsx","Fragment","jsx","jsxs","clsx","AnimatePresence","motion","Fragment","useEffect","useId","useRef","useState","twMerge","jsx","jsxs","OTPInput","jsx","React","jsx","jsxs","QuantityInput","jsx","useRender","cva","createContext","useCallback","useContext","useEffect","useId","useMemo","useRef","useState","jsx","jsxs","Tooltip","CheckIcon","Fragment","jsx","jsxs","createContext","useContext","cva","useState","useRef","useEffect","Tooltip","useCallback","useMemo","useId","open","useRender","Check","ChevronDown","ChevronUp","jsx","jsxs","forwardRef","jsx","animate","forwardRef","Skeleton","jsx","mergeProps","useRender","React","React","React","jsx","useRender","mergeProps","jsx"]}
|