ruler-components 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +411 -4
- package/dist/index.d.ts +411 -4
- package/dist/index.js +3141 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3025 -56
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/ui/progress.tsx","../lib/cn.ts","../components/ui/switch.tsx","../components/ui/tooltip.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst progressTrackVariants = cva(\n \"relative w-full overflow-hidden rounded-full bg-zinc-100 dark:bg-zinc-800/70\",\n {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-1.5\",\n lg: \"h-2\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nconst progressIndicatorVariants = cva(\n \"h-full rounded-full transition-[width] duration-500 ease-[cubic-bezier(0.4,0,0.2,1)]\",\n {\n variants: {\n variant: {\n default: \"bg-zinc-900 dark:bg-zinc-100\",\n success: \"bg-[#28A745] dark:bg-[#5CC975]\",\n warning: \"bg-[#E58E00] dark:bg-[#F5B84A]\",\n error: \"bg-[#D93025] dark:bg-[#F06B62]\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nconst valuePillVariants = cva(\n \"inline-flex min-w-[2.25rem] items-center justify-end text-[11px] font-medium tabular-nums text-zinc-400 dark:text-zinc-500\",\n {\n variants: {\n variant: {\n default: \"\",\n success: \"\",\n warning: \"\",\n error: \"\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface ProgressProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n VariantProps<typeof progressTrackVariants>,\n VariantProps<typeof progressIndicatorVariants> {\n value?: number;\n max?: number;\n label?: string;\n showValue?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n className,\n value = 0,\n max = 100,\n variant,\n size,\n label,\n showValue = false,\n indeterminate = false,\n disabled = false,\n ...props\n },\n ref,\n ) => {\n const clamped = Math.min(max, Math.max(0, value));\n const percentage = max > 0 ? Math.round((clamped / max) * 100) : 0;\n\n return (\n <div\n className={cn(\n \"flex w-full flex-col gap-2.5\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {(label || showValue) && (\n <div className=\"flex items-center justify-between gap-3\">\n {label && (\n <span className=\"text-sm text-zinc-600 dark:text-zinc-300\">\n {label}\n </span>\n )}\n {showValue && !indeterminate && (\n <span className={cn(valuePillVariants({ variant }))}>\n {percentage}%\n </span>\n )}\n </div>\n )}\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate || disabled ? undefined : clamped}\n aria-label={label}\n aria-valuetext={indeterminate ? \"Loading\" : `${percentage}%`}\n aria-disabled={disabled || undefined}\n className={cn(progressTrackVariants({ size }))}\n {...props}\n >\n {indeterminate ? (\n <div\n className={cn(\n progressIndicatorVariants({ variant }),\n \"w-[40%] animate-[progress-indeterminate_1.5s_ease-in-out_infinite]\",\n )}\n />\n ) : (\n <div\n className={cn(progressIndicatorVariants({ variant }))}\n style={{ width: `${percentage}%` }}\n />\n )}\n </div>\n </div>\n );\n },\n);\nProgress.displayName = \"Progress\";\n\nexport { Progress, progressTrackVariants, progressIndicatorVariants };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst switchTrackVariants = cva(\n [\n \"relative inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-900/20 focus-visible:ring-offset-2 focus-visible:ring-offset-white\",\n \"dark:focus-visible:ring-zinc-100/20 dark:focus-visible:ring-offset-zinc-950\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-zinc-900 data-[state=unchecked]:bg-zinc-200\",\n \"dark:data-[state=checked]:bg-zinc-100 dark:data-[state=unchecked]:bg-zinc-700\",\n \"hover:data-[state=unchecked]:bg-zinc-300 dark:hover:data-[state=unchecked]:bg-zinc-600\",\n \"hover:data-[state=checked]:bg-zinc-800 dark:hover:data-[state=checked]:bg-zinc-200\",\n ],\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-6 w-11\",\n lg: \"h-7 w-[3.25rem]\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nconst switchThumbVariants = cva(\n \"pointer-events-none absolute left-0.5 top-1/2 block -translate-y-1/2 rounded-full bg-white shadow-sm transition-transform duration-200 dark:bg-zinc-950\",\n {\n variants: {\n size: {\n sm: \"h-3.5 w-3.5 data-[state=checked]:translate-x-4\",\n md: \"h-4 w-4 data-[state=checked]:translate-x-5\",\n lg: \"h-5 w-5 data-[state=checked]:translate-x-6\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport interface SwitchProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\" | \"size\">,\n VariantProps<typeof switchTrackVariants> {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n label?: string;\n description?: string;\n}\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n className,\n size,\n checked,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n label,\n description,\n id,\n onClick,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const switchId = id ?? generatedId;\n const isControlled = checked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState(defaultChecked);\n const isChecked = isControlled ? checked : uncontrolledChecked;\n const state = isChecked ? \"checked\" : \"unchecked\";\n\n const toggle = () => {\n if (disabled) return;\n const next = !isChecked;\n if (!isControlled) setUncontrolledChecked(next);\n onCheckedChange?.(next);\n };\n\n const switchControl = (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={isChecked}\n aria-labelledby={label ? `${switchId}-label` : undefined}\n aria-describedby={description ? `${switchId}-description` : undefined}\n disabled={disabled}\n data-state={state}\n className={cn(switchTrackVariants({ size }), className)}\n onClick={(event) => {\n toggle();\n onClick?.(event);\n }}\n onKeyDown={(event) => {\n if (event.key === \" \") {\n event.preventDefault();\n toggle();\n }\n }}\n {...props}\n >\n <span data-state={state} className={switchThumbVariants({ size })} />\n </button>\n );\n\n if (!label && !description) {\n return switchControl;\n }\n\n return (\n <div\n className={cn(\n \"flex items-start justify-between gap-4\",\n disabled && \"opacity-60\",\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n {label && (\n <label\n id={`${switchId}-label`}\n htmlFor={switchId}\n className={cn(\n \"text-sm font-medium leading-snug text-zinc-800 dark:text-zinc-100\",\n !disabled && \"cursor-pointer\",\n )}\n >\n {label}\n </label>\n )}\n {description && (\n <p\n id={`${switchId}-description`}\n className=\"text-xs leading-relaxed text-zinc-500 dark:text-zinc-400\"\n >\n {description}\n </p>\n )}\n </div>\n {switchControl}\n </div>\n );\n },\n);\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchTrackVariants, switchThumbVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst tooltipVariants = cva(\n [\n \"pointer-events-none fixed z-50 max-w-[260px] rounded-lg px-3 py-2\",\n \"text-[13px] font-medium leading-normal tracking-tight\",\n \"bg-zinc-900 text-zinc-50\",\n \"shadow-[0_4px_16px_rgba(0,0,0,0.14),0_0_0_1px_rgba(255,255,255,0.06)]\",\n \"dark:bg-zinc-100 dark:text-zinc-900\",\n \"dark:shadow-[0_4px_16px_rgba(0,0,0,0.35),0_0_0_1px_rgba(0,0,0,0.06)]\",\n \"transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]\",\n \"will-change-[opacity,transform]\",\n ],\n {\n variants: {\n visible: {\n true: \"opacity-100 scale-100\",\n false: \"opacity-0 scale-[0.97]\",\n },\n side: {\n top: \"origin-bottom\",\n bottom: \"origin-top\",\n left: \"origin-right\",\n right: \"origin-left\",\n },\n },\n defaultVariants: { visible: false, side: \"top\" },\n },\n);\n\ntype TooltipSide = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype TooltipAlign = \"start\" | \"center\" | \"end\";\n\nconst VIEWPORT_PADDING = 10;\nconst ARROW_SIZE = 6;\n\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: TooltipSide;\n align?: TooltipAlign;\n sideOffset?: number;\n delayDuration?: number;\n disabled?: boolean;\n className?: string;\n}\n\nfunction getTooltipPosition(\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n side: TooltipSide,\n align: TooltipAlign,\n sideOffset: number,\n) {\n const offset = sideOffset + ARROW_SIZE;\n let top = 0;\n let left = 0;\n\n if (side === \"top\") {\n top = triggerRect.top - tooltipRect.height - offset;\n left = alignTooltipHorizontal(triggerRect, tooltipRect, align);\n } else if (side === \"bottom\") {\n top = triggerRect.bottom + offset;\n left = alignTooltipHorizontal(triggerRect, tooltipRect, align);\n } else if (side === \"left\") {\n top = alignTooltipVertical(triggerRect, tooltipRect, align);\n left = triggerRect.left - tooltipRect.width - offset;\n } else {\n top = alignTooltipVertical(triggerRect, tooltipRect, align);\n left = triggerRect.right + offset;\n }\n\n const maxLeft = window.innerWidth - tooltipRect.width - VIEWPORT_PADDING;\n const maxTop = window.innerHeight - tooltipRect.height - VIEWPORT_PADDING;\n\n return {\n top: Math.min(Math.max(top, VIEWPORT_PADDING), maxTop),\n left: Math.min(Math.max(left, VIEWPORT_PADDING), maxLeft),\n };\n}\n\nfunction alignTooltipHorizontal(\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n align: TooltipAlign,\n) {\n if (align === \"start\") return triggerRect.left;\n if (align === \"end\") return triggerRect.right - tooltipRect.width;\n return triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n}\n\nfunction alignTooltipVertical(\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n align: TooltipAlign,\n) {\n if (align === \"start\") return triggerRect.top;\n if (align === \"end\") return triggerRect.bottom - tooltipRect.height;\n return triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n}\n\nfunction TooltipArrow({ side }: { side: TooltipSide }) {\n const position = {\n top: \"bottom-0 left-1/2 -translate-x-1/2 translate-y-[calc(100%-1px)]\",\n bottom: \"top-0 left-1/2 -translate-x-1/2 -translate-y-[calc(100%-1px)] rotate-180\",\n left: \"right-0 top-1/2 -translate-y-1/2 translate-x-[calc(100%-1px)] -rotate-90\",\n right: \"left-0 top-1/2 -translate-y-1/2 -translate-x-[calc(100%-1px)] rotate-90\",\n }[side];\n\n return (\n <svg\n aria-hidden\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n className={cn(\n \"absolute text-zinc-900 dark:text-zinc-100\",\n position,\n )}\n >\n <path fill=\"currentColor\" d=\"M0 0h10L5 5 0 0z\" />\n </svg>\n );\n}\n\nfunction Tooltip({\n content,\n children,\n side = \"top\",\n align = \"center\",\n sideOffset = 8,\n delayDuration = 250,\n disabled = false,\n className,\n}: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n const [visible, setVisible] = React.useState(false);\n const [mounted, setMounted] = React.useState(false);\n const [position, setPosition] = React.useState({ top: -9999, left: -9999 });\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLSpanElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n const id = React.useId();\n\n React.useEffect(() => setMounted(true), []);\n\n const clearTimer = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n\n const updatePosition = React.useCallback(() => {\n const trigger = triggerRef.current;\n const tooltip = tooltipRef.current;\n if (!trigger || !tooltip) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const tooltipRect = tooltip.getBoundingClientRect();\n setPosition(getTooltipPosition(triggerRect, tooltipRect, side, align, sideOffset));\n requestAnimationFrame(() => setVisible(true));\n }, [side, align, sideOffset]);\n\n const show = () => {\n if (disabled) return;\n clearTimer();\n timeoutRef.current = setTimeout(() => {\n setVisible(false);\n setOpen(true);\n }, delayDuration);\n };\n\n const hide = () => {\n clearTimer();\n setVisible(false);\n setOpen(false);\n };\n\n React.useEffect(() => clearTimer, []);\n\n React.useLayoutEffect(() => {\n if (!open) return;\n updatePosition();\n const handleUpdate = () => updatePosition();\n window.addEventListener(\"scroll\", handleUpdate, true);\n window.addEventListener(\"resize\", handleUpdate);\n return () => {\n window.removeEventListener(\"scroll\", handleUpdate, true);\n window.removeEventListener(\"resize\", handleUpdate);\n };\n }, [open, updatePosition, content]);\n\n const child = React.Children.only(children);\n const trigger = React.isValidElement(child)\n ? React.cloneElement(\n child as React.ReactElement<{ \"aria-describedby\"?: string }>,\n { \"aria-describedby\": open && visible ? id : undefined },\n )\n : children;\n\n const tooltipNode = open ? (\n <div\n ref={tooltipRef}\n id={id}\n role=\"tooltip\"\n aria-hidden={!visible}\n style={{ top: position.top, left: position.left }}\n className={cn(tooltipVariants({ visible, side }), className)}\n >\n {content}\n <TooltipArrow side={side} />\n </div>\n ) : null;\n\n return (\n <>\n <span\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {trigger}\n </span>\n {mounted && tooltipNode ? createPortal(tooltipNode, document.body) : null}\n </>\n );\n}\n\nexport { Tooltip, tooltipVariants };\n"],"mappings":"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","names":["React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","trigger"]}
|
|
1
|
+
{"version":3,"sources":["../components/ui/accordion.tsx","../lib/cn.ts","../components/ui/alert.tsx","../components/ui/allinput.tsx","../components/ui/avatar.tsx","../components/ui/badge.tsx","../components/ui/button.tsx","../components/ui/card.tsx","../components/ui/checkbox.tsx","../components/ui/code-block.tsx","../components/ui/data-table.tsx","../components/ui/input.tsx","../components/ui/pagination.tsx","../components/ui/table.tsx","../components/ui/dropdown.tsx","../components/ui/dialog.tsx","../components/ui/feature-card.tsx","../components/ui/label.tsx","../components/ui/loaders.tsx","../components/ui/menu.tsx","../components/ui/modal.tsx","../components/ui/progress.tsx","../components/ui/radio.tsx","../components/ui/skeleton.tsx","../components/ui/steppers.tsx","../components/ui/switch.tsx","../components/ui/tabs.tsx","../components/ui/tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { createContext, useContext, useState, useRef, useLayoutEffect, useId } from \"react\";\nimport { Plus, ChevronDown, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\ntype AccordionContextType = {\n openValue: string | null;\n toggle: (value: string) => void;\n};\n\nconst AccordionContext = createContext<AccordionContextType | null>(null);\n\nfunction useAccordionContext() {\n const ctx = useContext(AccordionContext);\n if (!ctx) throw new Error(\"Accordion components must be used inside Accordion\");\n return ctx;\n}\n\nconst EASE = { transitionTimingFunction: \"cubic-bezier(0.16,1,0.3,1)\" };\n\nexport function Accordion({ children, defaultValue = null, className = \"\" }: { children: React.ReactNode, defaultValue?: string | null, className?: string }) {\n const [openValue, setOpenValue] = useState<string | null>(defaultValue);\n const toggle = (value: string) => setOpenValue((current) => (current === value ? null : value));\n\n return (\n <AccordionContext.Provider value={{ openValue, toggle }}>\n <div className={className}>{children}</div>\n </AccordionContext.Provider>\n );\n}\n\nexport function AccordionItem({ value, title, children, variant = \"plus\" }: { value: string, title: string, children: React.ReactNode, variant?: \"plus\" | \"chevron\" }) {\n const { openValue, toggle } = useAccordionContext();\n const isOpen = openValue === value;\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState(0);\n const panelId = useId();\n\n useLayoutEffect(() => {\n if (!contentRef.current) return;\n setHeight(isOpen ? contentRef.current.scrollHeight : 0);\n }, [isOpen]);\n\n if (variant === \"chevron\") {\n return (\n <div className=\"border-b border-zinc-200 dark:border-zinc-800 last:border-0\">\n <button\n type=\"button\"\n onClick={() => toggle(value)}\n aria-expanded={isOpen}\n aria-controls={panelId}\n className=\"group flex w-full items-center justify-between rounded-lg py-5 text-left outline-none transition-colors duration-200 hover:bg-zinc-50 focus-visible:ring-2 focus-visible:ring-zinc-900/15 dark:hover:bg-zinc-900/40 dark:focus-visible:ring-white/20\"\n >\n <span\n className={cn(\n \"text-[15px] font-medium transition-colors duration-200\",\n isOpen\n ? \"text-zinc-900 dark:text-white\"\n : \"text-zinc-600 group-hover:text-zinc-900 dark:text-zinc-400 dark:group-hover:text-zinc-200\",\n )}\n >\n {title}\n </span>\n <ChevronDown\n size={18}\n style={EASE}\n className={cn(\n \"shrink-0 text-zinc-400 transition-transform duration-300 group-hover:text-zinc-600 dark:group-hover:text-zinc-300\",\n isOpen && \"rotate-180 text-zinc-900 dark:text-white\",\n )}\n />\n </button>\n <div style={{ ...EASE, height }} className=\"overflow-hidden transition-[height] duration-300\">\n <div id={panelId} ref={contentRef} className=\"pb-5 text-sm leading-relaxed text-zinc-500 dark:text-zinc-400\">\n {children}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"border-b border-zinc-200 dark:border-zinc-800 last:border-0\">\n <button\n type=\"button\"\n onClick={() => toggle(value)}\n aria-expanded={isOpen}\n aria-controls={panelId}\n className=\"group flex w-full items-center gap-3 rounded-lg py-4 text-left outline-none transition-colors duration-200 hover:bg-zinc-50 focus-visible:ring-2 focus-visible:ring-zinc-900/15 dark:hover:bg-zinc-900/40 dark:focus-visible:ring-white/20\"\n >\n <span\n style={EASE}\n className={cn(\n \"flex h-6 w-6 shrink-0 items-center justify-center rounded-full border transition-all duration-300\",\n isOpen\n ? \"border-zinc-900 bg-zinc-900 text-white shadow-sm dark:border-zinc-100 dark:bg-zinc-100 dark:text-zinc-900\"\n : \"border-zinc-300 text-zinc-400 group-hover:border-zinc-400 group-hover:text-zinc-500 dark:border-zinc-700 dark:group-hover:border-zinc-600\",\n )}\n >\n <Plus size={12} style={EASE} className={cn(\"transition-transform duration-300\", isOpen && \"rotate-45\")} />\n </span>\n <span\n className={cn(\n \"text-[15px] font-medium transition-colors duration-200\",\n isOpen\n ? \"text-zinc-900 dark:text-zinc-100\"\n : \"text-zinc-600 group-hover:text-zinc-900 dark:text-zinc-400 dark:group-hover:text-zinc-200\",\n )}\n >\n {title}\n </span>\n </button>\n <div style={{ ...EASE, height }} className=\"overflow-hidden transition-[height] duration-300\">\n <div id={panelId} ref={contentRef} className=\"pb-4 pl-9 text-sm leading-relaxed text-zinc-500 dark:text-zinc-400\">\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nexport function AccordionNested({ title, children, level = 0 }: { title: string, children?: React.ReactNode, level?: number }) {\n const [isOpen, setIsOpen] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState(0);\n const panelId = useId();\n\n useLayoutEffect(() => {\n if (!contentRef.current) return;\n setHeight(isOpen ? contentRef.current.scrollHeight : 0);\n }, [isOpen, children]);\n\n return (\n <div className=\"border-b border-zinc-100 dark:border-zinc-800 last:border-0\">\n <button\n type=\"button\"\n onClick={() => setIsOpen(!isOpen)}\n aria-expanded={isOpen}\n aria-controls={panelId}\n className=\"group flex w-full items-center gap-2.5 rounded-lg py-3.5 text-left outline-none transition-colors duration-200 hover:bg-zinc-50 focus-visible:ring-2 focus-visible:ring-zinc-900/15 dark:hover:bg-zinc-900/40 dark:focus-visible:ring-white/20\"\n style={{ paddingLeft: `${level * 1.5}rem` }}\n >\n <ChevronRight\n size={15}\n style={EASE}\n className={cn(\n \"shrink-0 text-zinc-400 transition-transform duration-300 group-hover:text-zinc-600 dark:group-hover:text-zinc-300\",\n isOpen && \"rotate-90 text-zinc-600 dark:text-zinc-300\",\n )}\n />\n <span className=\"text-[15px] font-medium text-zinc-900 dark:text-zinc-100\">{title}</span>\n </button>\n <div style={{ ...EASE, height }} className=\"overflow-hidden transition-[height] duration-300\">\n <div id={panelId} ref={contentRef} className=\"flex flex-col\">\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nexport function AccordionLink({ title, level = 0 }: { title: string, level?: number }) {\n return (\n <div className=\"border-b border-zinc-100 dark:border-zinc-800 last:border-0\">\n <div\n className=\"cursor-pointer rounded-lg py-3.5 text-[15px] font-medium text-zinc-600 transition-colors duration-200 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-900/40 dark:hover:text-zinc-100\"\n style={{ paddingLeft: `${level * 1.5 + 1.5625}rem` }}\n >\n {title}\n </div>\n </div>\n );\n}\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n","import React from \"react\";\nimport { CheckCircle2, TriangleAlert, Info, XCircle, X } from \"lucide-react\";\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n title?: string;\n description?: string;\n dismissible?: boolean;\n onDismiss?: () => void;\n action?: React.ReactNode;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className = \"\", variant = \"info\", title, description, dismissible, onDismiss, action, children, ...props }, ref) => {\n const configs = {\n info: {\n bar: \"bg-[#0070BA]\",\n icon: (\n <Info className=\"h-5 w-5 text-[#0070BA] shrink-0\" />\n ),\n },\n\n success: {\n bar: \"bg-[#28A745]\",\n icon: (\n <CheckCircle2 className=\"h-5 w-5 text-[#28A745] shrink-0\" />\n ),\n },\n\n warning: {\n bar: \"bg-[#E58E00]\",\n icon: (\n <TriangleAlert className=\"h-5 w-5 text-[#E58E00] shrink-0\" />\n ),\n },\n\n error: {\n bar: \"bg-[#D93025]\",\n icon: (\n <XCircle className=\"h-5 w-5 text-[#D93025] shrink-0\" />\n ),\n },\n};\n\n const current = configs[variant];\n\n return (\n <div\n ref={ref}\n className={`relative flex w-full min-h-[64px] items-center gap-2.5 rounded-lg border border-gray-200 bg-white px-3 py-2.5 shadow-[0_3px_12px_rgba(0,0,0,0.03)] dark:border-zinc-800 dark:bg-zinc-900 dark:shadow-none ${className}`}\n {...props}\n>\n<div\n className={`absolute left-0 top-0 w-16 h-1 ${current.bar} rounded-tl-lg`}\n style={{\n clipPath: \"polygon(0 0, 100% 0, 92% 100%, 0 100%)\",\n }}\n/>\n\n {/* Icon */}\n <div className=\"shrink-0 flex items-center justify-center\">\n {current.icon}\n </div>\n\n <div className=\"flex-1 min-w-0\">\n {title && (\n <h5 className=\"text-[13px] font-semibold tracking-tight text-zinc-900 dark:text-white leading-tight\">\n {title}\n </h5>\n )}\n\n {description && (\n <p className=\"mt-0.5 text-[11px] font-medium text-zinc-500 dark:text-zinc-300 leading-tight\">\n {description}\n </p>\n )}\n\n {children}\n</div>\n\n{action && (\n <div className={`shrink-0 ml-auto ${dismissible || onDismiss ? \"mr-5\" : \"\"}`}>\n {action}\n </div>\n)}\n\n {/* Close button */}\n {(dismissible || onDismiss) && (\n <button\n onClick={onDismiss}\n className=\"absolute right-2.5 top-1/2 -translate-y-1/2 text-zinc-400 hover:text-zinc-600 dark:text-zinc-500 dark:hover:text-zinc-200 transition-colors\"\n >\n <X className=\"h-3.5 w-3.5 stroke-[3]\" />\n </button>\n )}\n</div>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert };","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Search, Eye, EyeOff, Check, type LucideIcon } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\nconst fieldText =\n \"text-sm text-zinc-900 outline-none transition-all duration-150 placeholder:text-zinc-400 dark:text-zinc-100 dark:placeholder:text-zinc-500\";\n\nconst fieldSurface =\n \"border-zinc-200 hover:border-zinc-300 focus:border-zinc-900 focus:ring-4 focus:ring-zinc-900/5 dark:border-zinc-800 dark:hover:border-zinc-700 dark:focus:border-zinc-400 dark:focus:ring-zinc-300/10\";\n\nexport const InputStandard = ({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) => (\n <input\n {...props}\n className={cn(\"w-full rounded-xl border bg-white px-4 py-2.5 dark:bg-zinc-900\", fieldText, fieldSurface, className)}\n />\n);\n\nexport const InputFilled = ({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) => (\n <input\n {...props}\n className={cn(\n \"w-full rounded-xl border border-transparent bg-zinc-100 px-4 py-3 hover:bg-zinc-200/70 focus:border-zinc-900 focus:bg-white focus:ring-4 focus:ring-zinc-900/5 dark:bg-zinc-800 dark:hover:bg-zinc-700/70 dark:focus:border-zinc-400 dark:focus:bg-zinc-900 dark:focus:ring-zinc-300/10\",\n fieldText,\n className,\n )}\n />\n);\n\nexport const InputUnderline = ({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) => (\n <div className=\"group relative\">\n <input\n {...props}\n className={cn(\n \"w-full border-b border-zinc-200 bg-transparent py-2 focus:border-zinc-900 dark:border-zinc-700 dark:focus:border-white\",\n fieldText,\n className,\n )}\n />\n <div className=\"absolute bottom-0 left-0 h-[2px] w-0 bg-zinc-900 transition-all duration-300 group-focus-within:w-full dark:bg-white\" />\n </div>\n);\n\nexport const InputFloating = ({\n label,\n className,\n ...props\n}: { label: string } & React.InputHTMLAttributes<HTMLInputElement>) => {\n const [value, setValue] = useState(\"\");\n const filled = Boolean(value || props.defaultValue);\n\n return (\n <div className=\"relative pt-4\">\n <input\n {...props}\n onChange={(e) => {\n setValue(e.target.value);\n props.onChange?.(e);\n }}\n className={cn(\n \"peer w-full border-b-2 border-zinc-200 bg-transparent py-2 focus:border-zinc-900 dark:border-zinc-700 dark:focus:border-white\",\n fieldText,\n className,\n )}\n />\n <label\n className={cn(\n \"absolute left-0 transition-all duration-200\",\n filled\n ? \"-top-1 text-xs font-bold text-zinc-900 dark:text-white\"\n : \"top-5 text-sm text-zinc-400 peer-focus:-top-1 peer-focus:text-xs peer-focus:font-bold peer-focus:text-zinc-900 dark:peer-focus:text-white\",\n )}\n >\n {label}\n </label>\n </div>\n );\n};\n\nexport const InputSearch = ({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) => (\n <div className=\"group relative\">\n <Search\n size={16}\n className=\"absolute left-4 top-1/2 -translate-y-1/2 text-zinc-400 transition-colors group-focus-within:text-zinc-900 dark:group-focus-within:text-white\"\n />\n <input\n {...props}\n type=\"text\"\n className={cn(\n \"w-full rounded-full border bg-zinc-50 py-2.5 pl-11 pr-4 focus:bg-white dark:bg-zinc-900 dark:focus:bg-zinc-950\",\n fieldText,\n fieldSurface,\n className,\n )}\n />\n </div>\n);\n\nexport const InputPassword = ({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) => {\n const [show, setShow] = useState(false);\n\n return (\n <div className=\"relative\">\n <input\n {...props}\n type={show ? \"text\" : \"password\"}\n className={cn(\"w-full rounded-xl border bg-white px-4 py-2.5 pr-11 dark:bg-zinc-900\", fieldText, fieldSurface, className)}\n />\n <button\n type=\"button\"\n onClick={() => setShow(!show)}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400 transition-colors hover:text-zinc-900 dark:hover:text-white\"\n >\n {show ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n );\n};\n\nexport const InputAddon = ({\n prefix,\n suffix,\n className,\n ...props\n}: { prefix?: string; suffix?: string } & React.InputHTMLAttributes<HTMLInputElement>) => (\n <div\n className={cn(\n \"flex w-full overflow-hidden rounded-xl border border-zinc-200 bg-white transition-all focus-within:border-zinc-900 focus-within:ring-4 focus-within:ring-zinc-900/5 dark:border-zinc-800 dark:bg-zinc-900 dark:focus-within:border-zinc-400 dark:focus-within:ring-zinc-300/10\",\n className,\n )}\n >\n {prefix && (\n <span className=\"flex items-center border-r border-zinc-200 bg-zinc-50 px-3 text-sm font-medium text-zinc-500 dark:border-zinc-800 dark:bg-zinc-800 dark:text-zinc-400\">\n {prefix}\n </span>\n )}\n <input {...props} className={cn(\"flex-1 bg-transparent px-4 py-2.5\", fieldText)} />\n {suffix && (\n <span className=\"flex items-center border-l border-zinc-200 bg-zinc-50 px-3 text-sm font-medium text-zinc-500 dark:border-zinc-800 dark:bg-zinc-800 dark:text-zinc-400\">\n {suffix}\n </span>\n )}\n </div>\n);\n\nexport const InputIcon = ({\n icon: Icon,\n position = \"left\",\n className,\n ...props\n}: { icon: LucideIcon; position?: \"left\" | \"right\" } & React.InputHTMLAttributes<HTMLInputElement>) => (\n <div className=\"relative\">\n <div\n className={cn(\n \"pointer-events-none absolute top-1/2 -translate-y-1/2 text-zinc-400\",\n position === \"left\" ? \"left-3.5\" : \"right-3.5\",\n )}\n >\n <Icon size={18} strokeWidth={1.5} />\n </div>\n <input\n {...props}\n className={cn(\n \"w-full rounded-xl border bg-white py-2.5 shadow-sm dark:bg-zinc-900\",\n position === \"left\" ? \"pl-10 pr-4\" : \"pl-4 pr-10\",\n fieldText,\n fieldSurface,\n className,\n )}\n />\n </div>\n);\n\nexport const InputOTP = () => (\n <div className=\"flex gap-2.5\">\n {[1, 2, 3, 4].map((i) => (\n <input\n key={i}\n maxLength={1}\n aria-label={`Digit ${i}`}\n className=\"h-12 w-12 rounded-xl border-2 border-zinc-200 bg-white text-center text-lg font-bold text-zinc-900 outline-none transition-all focus:border-zinc-900 focus:ring-4 focus:ring-zinc-900/5 dark:border-zinc-800 dark:bg-zinc-900 dark:text-white dark:focus:border-zinc-400 dark:focus:ring-zinc-300/10\"\n />\n ))}\n </div>\n);\n\nexport const InputAutocomplete = ({\n suggestions,\n className,\n ...props\n}: { suggestions: string[] } & React.InputHTMLAttributes<HTMLInputElement>) => (\n <div className=\"relative\">\n <input\n {...props}\n className={cn(\"w-full rounded-xl border bg-white px-4 py-2.5 dark:bg-zinc-900\", fieldText, fieldSurface, className)}\n />\n <div className=\"absolute top-[calc(100%+0.5rem)] z-50 w-full rounded-xl border border-zinc-200 bg-white p-1 shadow-xl dark:border-zinc-800 dark:bg-zinc-900\">\n {suggestions.map((s) => (\n <div\n key={s}\n className=\"flex cursor-pointer items-center justify-between rounded-lg px-3 py-2 text-sm text-zinc-700 hover:bg-zinc-50 dark:text-zinc-200 dark:hover:bg-zinc-800\"\n >\n {s} <Check size={14} className=\"text-zinc-400\" />\n </div>\n ))}\n </div>\n </div>\n);\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst AVATAR_GRADIENTS = [\n \"from-violet-500 to-indigo-600\",\n \"from-sky-500 to-blue-600\",\n \"from-emerald-500 to-teal-600\",\n \"from-amber-500 to-orange-500\",\n \"from-rose-500 to-pink-600\",\n \"from-fuchsia-500 to-purple-600\",\n \"from-cyan-500 to-blue-500\",\n \"from-lime-500 to-emerald-600\",\n];\n\nconst avatarVariants = cva(\n [\n \"relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full\",\n \"ring-1 ring-zinc-900/5 shadow-sm shadow-zinc-900/10\",\n \"dark:ring-white/10 dark:shadow-black/30\",\n ],\n {\n variants: {\n size: {\n sm: \"h-8 w-8 text-[10px]\",\n md: \"h-10 w-10 text-xs\",\n lg: \"h-12 w-12 text-sm\",\n xl: \"h-16 w-16 text-base\",\n },\n variant: {\n default: \"\",\n outline: \"ring-2 ring-white dark:ring-zinc-950\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n },\n);\n\nconst statusVariants = cva(\n [\n \"absolute rounded-full ring-2 ring-white dark:ring-zinc-950\",\n \"shadow-sm\",\n ],\n {\n variants: {\n status: {\n online: \"bg-emerald-500\",\n offline: \"bg-zinc-400 dark:bg-zinc-500\",\n busy: \"bg-amber-500\",\n },\n size: {\n sm: \"bottom-0 right-0 h-2 w-2\",\n md: \"bottom-0 right-0 h-2.5 w-2.5\",\n lg: \"bottom-0.5 right-0.5 h-2.5 w-2.5\",\n xl: \"bottom-1 right-1 h-3 w-3\",\n },\n },\n },\n);\n\nfunction getInitials(name: string) {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return `${parts[0][0]}${parts[parts.length - 1][0]}`.toUpperCase();\n}\n\nfunction getGradientFromName(name: string) {\n let hash = 0;\n for (let i = 0; i < name.length; i += 1) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return AVATAR_GRADIENTS[Math.abs(hash) % AVATAR_GRADIENTS.length];\n}\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof avatarVariants> {\n src?: string;\n alt?: string;\n name?: string;\n status?: \"online\" | \"offline\" | \"busy\" | null;\n}\n\nconst Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ className, size, variant, src, alt, name, status, children, ...props }, ref) => {\n const [imageError, setImageError] = React.useState(false);\n const showImage = src && !imageError;\n const fallbackText = name ? getInitials(name) : children;\n const gradient = name ? getGradientFromName(name) : \"from-zinc-400 to-zinc-500\";\n\n return (\n <span\n ref={ref}\n className={cn(avatarVariants({ size, variant }), className)}\n {...props}\n >\n {showImage ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={src}\n alt={alt ?? name ?? \"Avatar\"}\n className=\"h-full w-full object-cover\"\n onError={() => setImageError(true)}\n />\n ) : (\n <span\n className={cn(\n \"flex h-full w-full items-center justify-center bg-gradient-to-br font-semibold uppercase tracking-tight text-white\",\n gradient,\n )}\n >\n {fallbackText ?? \"?\"}\n </span>\n )}\n {status && (\n <span\n className={cn(statusVariants({ status, size }))}\n aria-hidden\n />\n )}\n </span>\n );\n },\n);\nAvatar.displayName = \"Avatar\";\n\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n max?: number;\n size?: VariantProps<typeof avatarVariants>[\"size\"];\n}\n\nfunction AvatarGroup({\n className,\n max = 5,\n size = \"md\",\n children,\n ...props\n}: AvatarGroupProps) {\n const avatars = React.Children.toArray(children).filter(React.isValidElement);\n const visible = avatars.slice(0, max);\n const remaining = avatars.length - visible.length;\n\n return (\n <div className={cn(\"flex items-center\", className)} {...props}>\n {visible.map((child, index) => (\n <div\n key={index}\n className={cn(\n \"relative transition-transform duration-200 hover:z-10 hover:scale-110\",\n index > 0 && \"-ml-3\",\n )}\n >\n {child}\n </div>\n ))}\n {remaining > 0 && (\n <span\n className={cn(\n \"-ml-3\",\n avatarVariants({ variant: \"outline\", size }),\n \"bg-zinc-100 text-zinc-600 ring-2 ring-white dark:bg-zinc-800 dark:text-zinc-200 dark:ring-zinc-950\",\n )}\n >\n <span className=\"flex h-full w-full items-center justify-center text-[10px] font-semibold\">\n +{remaining}\n </span>\n </span>\n )}\n </div>\n );\n}\n\nexport { Avatar, AvatarGroup, avatarVariants, getInitials, getGradientFromName };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-md font-medium transition-colors\",\n {\n variants: {\n variant: {\n default:\n \"bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-200\",\n info: \"bg-[#0070BA]/10 text-[#0070BA] dark:bg-[#0070BA]/20 dark:text-[#4DA3E0]\",\n success:\n \"bg-[#28A745]/10 text-[#28A745] dark:bg-[#28A745]/20 dark:text-[#5CC975]\",\n warning:\n \"bg-[#E58E00]/10 text-[#E58E00] dark:bg-[#E58E00]/20 dark:text-[#F5B84A]\",\n error:\n \"bg-[#D93025]/10 text-[#D93025] dark:bg-[#D93025]/20 dark:text-[#F06B62]\",\n outline:\n \"border border-zinc-200 bg-transparent text-zinc-700 dark:border-zinc-700 dark:text-zinc-300\",\n },\n size: {\n sm: \"px-1.5 py-0.5 text-[10px]\",\n md: \"px-2 py-0.5 text-[11px]\",\n lg: \"px-2.5 py-1 text-xs\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst buttonVariants = cva(\n [\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-xl\",\n \"text-sm font-medium tracking-tight\",\n \"transition-[color,background-color,border-color,box-shadow,transform] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-900/15 focus-visible:ring-offset-2 focus-visible:ring-offset-white\",\n \"active:scale-[0.97] active:transition-[transform] active:duration-100\",\n \"disabled:pointer-events-none disabled:opacity-40 disabled:shadow-none disabled:active:scale-100\",\n \"dark:focus-visible:ring-white/20 dark:focus-visible:ring-offset-zinc-950\",\n \"select-none\",\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-zinc-900 text-white\",\n \"shadow-[0_1px_2px_rgba(0,0,0,0.06),0_4px_12px_rgba(0,0,0,0.08)]\",\n \"hover:bg-zinc-800 hover:-translate-y-0.5\",\n \"hover:shadow-[0_2px_4px_rgba(0,0,0,0.06),0_8px_20px_rgba(0,0,0,0.12)]\",\n \"dark:bg-zinc-100 dark:text-zinc-900\",\n \"dark:shadow-[0_1px_2px_rgba(255,255,255,0.06),0_4px_16px_rgba(0,0,0,0.35)]\",\n \"dark:hover:bg-white dark:hover:shadow-[0_2px_8px_rgba(0,0,0,0.25),0_8px_24px_rgba(0,0,0,0.2)]\",\n ],\n white: [\n \"border border-zinc-200/80 bg-white text-zinc-900\",\n \"shadow-[0_1px_2px_rgba(0,0,0,0.04),0_4px_12px_rgba(0,0,0,0.06)]\",\n \"hover:border-zinc-300 hover:bg-zinc-50 hover:-translate-y-0.5\",\n \"hover:shadow-[0_2px_4px_rgba(0,0,0,0.04),0_8px_20px_rgba(0,0,0,0.1)]\",\n ],\n outline: [\n \"border border-zinc-200 bg-white/70 text-zinc-700 backdrop-blur-sm\",\n \"shadow-[0_1px_2px_rgba(0,0,0,0.03)]\",\n \"hover:border-zinc-300 hover:bg-white hover:text-zinc-900 hover:-translate-y-0.5\",\n \"hover:shadow-[0_2px_8px_rgba(0,0,0,0.06)]\",\n \"dark:border-zinc-700 dark:bg-zinc-900/40 dark:text-zinc-200 dark:shadow-none\",\n \"dark:hover:border-zinc-500 dark:hover:bg-zinc-800/80 dark:hover:text-white\",\n ],\n ghost: [\n \"text-zinc-600\",\n \"hover:bg-zinc-100/90 hover:text-zinc-900\",\n \"dark:text-zinc-400 dark:hover:bg-zinc-800/70 dark:hover:text-zinc-100\",\n ],\n },\n size: {\n sm: \"h-8 gap-1.5 rounded-lg px-3.5 text-xs\",\n md: \"h-10 px-4\",\n lg: \"h-11 px-5 text-[15px]\",\n },\n },\n defaultVariants: { variant: \"primary\", size: \"md\" },\n },\n);\n\nexport interface ButtonProps\n extends React.ComponentPropsWithoutRef<\"button\">,\n VariantProps<typeof buttonVariants> {}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <button\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { buttonVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst cardVariants = cva(\n \"rounded-2xl border bg-white text-zinc-900 transition-all duration-200 dark:bg-zinc-900 dark:text-zinc-100\",\n {\n variants: {\n variant: {\n default:\n \"border-zinc-200/70 shadow-[0_2px_8px_rgba(0,0,0,0.06)] dark:border-zinc-800/80 dark:shadow-[0_2px_8px_rgba(0,0,0,0.25)]\",\n outline: \"border-zinc-200 shadow-none dark:border-zinc-800\",\n elevated:\n \"border-zinc-200 shadow-[0_8px_30px_rgba(0,0,0,0.08)] dark:border-zinc-800 dark:shadow-[0_8px_30px_rgba(0,0,0,0.35)]\",\n interactive:\n \"cursor-pointer border-zinc-200/70 shadow-[0_2px_8px_rgba(0,0,0,0.06)] hover:-translate-y-0.5 hover:border-zinc-300 hover:shadow-[0_8px_24px_rgba(0,0,0,0.1)] dark:border-zinc-800/80 dark:shadow-[0_2px_8px_rgba(0,0,0,0.25)] dark:hover:border-zinc-700 dark:hover:shadow-[0_8px_24px_rgba(0,0,0,0.4)]\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-base font-semibold leading-none tracking-tight text-zinc-900 dark:text-white\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm leading-relaxed text-zinc-500 dark:text-zinc-400\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-6 pb-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-2 border-t border-zinc-100 bg-zinc-50/60 px-6 py-4 dark:border-zinc-800 dark:bg-zinc-800/30\",\n className,\n )}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n cardVariants,\n};\n","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst checkboxControlVariants = cva(\n [\n \"pointer-events-none relative flex shrink-0 items-center justify-center rounded-[3px] border-2 bg-white transition-all duration-200\",\n \"border-zinc-500 group-hover:border-zinc-700\",\n \"peer-checked:border-zinc-900 peer-checked:bg-zinc-900\",\n \"peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-zinc-900/30 peer-focus-visible:ring-offset-2\",\n \"peer-disabled:border-zinc-300 peer-disabled:bg-zinc-100\",\n \"peer-disabled:peer-checked:border-zinc-300 peer-disabled:peer-checked:bg-zinc-300\",\n \"dark:border-zinc-500 dark:bg-zinc-900 dark:group-hover:border-zinc-400\",\n \"dark:peer-checked:border-zinc-100 dark:peer-checked:bg-zinc-100\",\n \"dark:peer-disabled:border-zinc-700 dark:peer-disabled:bg-zinc-800\",\n \"dark:peer-disabled:peer-checked:border-zinc-600 dark:peer-disabled:peer-checked:bg-zinc-600\",\n \"peer-checked:[&_svg]:scale-100 peer-checked:[&_svg]:opacity-100\",\n ],\n {\n variants: {\n size: {\n sm: \"h-4 w-4 [&_svg]:h-2.5 [&_svg]:w-2.5\",\n md: \"h-[18px] w-[18px] [&_svg]:h-3 [&_svg]:w-3\",\n lg: \"h-5 w-5 [&_svg]:h-3.5 [&_svg]:w-3.5\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nconst checkboxWrapperVariants = cva(\"group flex w-full transition-colors duration-150\", {\n variants: {\n variant: {\n inline: \"gap-3\",\n card: [\n \"gap-3 rounded-lg border border-zinc-200 bg-white px-3.5 py-3\",\n \"hover:border-zinc-300 hover:bg-zinc-50/80\",\n \"has-[:checked]:border-zinc-900\",\n \"dark:border-zinc-800 dark:bg-zinc-900 dark:hover:border-zinc-700 dark:hover:bg-zinc-900/50\",\n \"dark:has-[:checked]:border-zinc-500\",\n ],\n },\n },\n defaultVariants: { variant: \"inline\" },\n});\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\">,\n VariantProps<typeof checkboxControlVariants> {\n label?: string;\n description?: string;\n variant?: \"inline\" | \"card\";\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n size,\n variant = \"inline\",\n label,\n description,\n disabled,\n id,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const resolvedVariant = variant === \"card\" || description ? \"card\" : \"inline\";\n const alignStart = resolvedVariant === \"card\" || Boolean(description);\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n checkboxWrapperVariants({ variant: resolvedVariant }),\n alignStart ? \"items-start\" : \"items-center\",\n disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n className,\n )}\n >\n <span\n className={cn(\n \"relative flex shrink-0 items-center justify-center p-2.5 -m-2.5\",\n alignStart ? \"mt-0.5\" : undefined,\n )}\n >\n <input\n ref={ref}\n id={inputId}\n type=\"checkbox\"\n disabled={disabled}\n className=\"peer absolute inset-0 z-10 cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 rounded-full bg-zinc-900/0 transition-colors duration-200 group-hover:bg-zinc-900/[0.08] group-active:bg-zinc-900/[0.12] peer-disabled:group-hover:bg-transparent dark:group-hover:bg-white/[0.08] dark:group-active:bg-white/[0.12]\"\n />\n <span className={checkboxControlVariants({ size })}>\n <Check\n className=\"text-white opacity-0 transition-all duration-200 dark:text-zinc-900\"\n strokeWidth={3}\n />\n </span>\n </span>\n {(label || description) && (\n <span className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n {label && (\n <span className=\"text-sm leading-snug text-zinc-800 dark:text-zinc-100\">\n {label}\n </span>\n )}\n {description && (\n <span className=\"text-xs leading-relaxed text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxControlVariants };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, Copy } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\nexport function CodeBlock({\n code,\n filename,\n className,\n}: {\n code: string;\n filename?: string;\n className?: string;\n}) {\n const [copied, setCopied] = useState(false);\n\n const onCopy = async () => {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n };\n\n const copyButton = (\n <button\n type=\"button\"\n onClick={onCopy}\n aria-label=\"Copy code\"\n className=\"flex h-7 w-7 items-center justify-center rounded-md text-zinc-500 transition-colors hover:bg-white/10 hover:text-zinc-200\"\n >\n {copied ? (\n <Check className=\"h-3.5 w-3.5 text-white\" />\n ) : (\n <Copy className=\"h-3.5 w-3.5\" />\n )}\n </button>\n );\n\n return (\n <div\n className={cn(\n \"group relative overflow-x-auto rounded-xl bg-zinc-900 ring-1 ring-white/10\",\n className,\n )}\n >\n {filename ? (\n <div className=\"flex items-center justify-between border-b border-white/10 px-4 py-2.5\">\n <span className=\"font-mono text-xs text-zinc-500\">{filename}</span>\n {copyButton}\n </div>\n ) : null}\n <pre className={cn(\"max-w-full overflow-x-auto px-4 py-3.5 text-[13px] leading-relaxed text-zinc-100\", !filename && \"pr-12\")}>\n <code className=\"font-mono\">{code}</code>\n </pre>\n {filename ? null : (\n <div className=\"absolute right-3 top-3\">{copyButton}</div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useMemo, useState } from \"react\";\nimport { ArrowDown, ArrowUp, ArrowUpDown, Filter, Search, X } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Pagination } from \"./pagination\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"./table\";\nimport { Dropdown, DropdownContent, DropdownDivider, DropdownItem, DropdownLabel, DropdownTrigger } from \"./dropdown\";\n\nexport interface DataTableColumn<T> {\n key: string;\n header: string;\n sortable?: boolean;\n align?: \"left\" | \"center\" | \"right\";\n filterOptions?: string[];\n accessor?: (row: T) => string | number;\n render?: (row: T) => React.ReactNode;\n className?: string;\n}\n\nexport interface DataTableProps<T> {\n data: T[];\n columns: DataTableColumn<T>[];\n searchPlaceholder?: string;\n pageSize?: number;\n className?: string;\n}\n\ntype SortDirection = \"asc\" | \"desc\" | null;\n\nexport function DataTable<T extends object>({\n data,\n columns,\n searchPlaceholder = \"Search...\",\n pageSize = 5,\n className,\n}: DataTableProps<T>) {\n const [search, setSearch] = useState(\"\");\n const [sortKey, setSortKey] = useState<string | null>(null);\n const [sortDir, setSortDir] = useState<SortDirection>(null);\n const [activeFilters, setActiveFilters] = useState<Record<string, string>>({});\n const [page, setPage] = useState(1);\n\n const getValue = (row: T, col: DataTableColumn<T>) =>\n col.accessor ? col.accessor(row) : ((row as Record<string, unknown>)[col.key] as string | number);\n\n const filterableColumns = columns.filter((c) => c.filterOptions?.length);\n const activeFilterCount = Object.values(activeFilters).filter(Boolean).length;\n\n const filtered = useMemo(() => {\n let rows = data;\n\n if (search.trim()) {\n const q = search.trim().toLowerCase();\n rows = rows.filter((row) => columns.some((col) => String(getValue(row, col) ?? \"\").toLowerCase().includes(q)));\n }\n\n Object.entries(activeFilters).forEach(([key, value]) => {\n if (!value) return;\n const col = columns.find((c) => c.key === key);\n if (!col) return;\n rows = rows.filter((row) => String(getValue(row, col)) === value);\n });\n\n return rows;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, search, activeFilters]);\n\n const sorted = useMemo(() => {\n if (!sortKey || !sortDir) return filtered;\n const col = columns.find((c) => c.key === sortKey);\n if (!col) return filtered;\n return [...filtered].sort((a, b) => {\n const av = getValue(a, col);\n const bv = getValue(b, col);\n if (typeof av === \"number\" && typeof bv === \"number\") return sortDir === \"asc\" ? av - bv : bv - av;\n return sortDir === \"asc\" ? String(av).localeCompare(String(bv)) : String(bv).localeCompare(String(av));\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filtered, sortKey, sortDir]);\n\n const totalPages = Math.max(1, Math.ceil(sorted.length / pageSize));\n const currentPage = Math.min(page, totalPages);\n const paged = sorted.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n const handleSort = (col: DataTableColumn<T>) => {\n if (!col.sortable) return;\n if (sortKey !== col.key) {\n setSortKey(col.key);\n setSortDir(\"asc\");\n } else if (sortDir === \"asc\") {\n setSortDir(\"desc\");\n } else {\n setSortKey(null);\n setSortDir(null);\n }\n setPage(1);\n };\n\n const clearAll = () => {\n setSearch(\"\");\n setActiveFilters({});\n setPage(1);\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div className=\"flex flex-col gap-3 pb-4 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"relative w-full sm:max-w-xs\">\n <Search size={15} className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\" />\n <Input\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setPage(1);\n }}\n placeholder={searchPlaceholder}\n className=\"pl-9\"\n />\n </div>\n\n {(filterableColumns.length > 0 || activeFilterCount > 0) && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {filterableColumns.map((col) => (\n <Dropdown key={col.key}>\n <DropdownTrigger>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className={cn(activeFilters[col.key] && \"border-zinc-900 text-zinc-900 dark:border-zinc-100 dark:text-white\")}\n >\n <Filter size={13} />\n {activeFilters[col.key] || col.header}\n </Button>\n </DropdownTrigger>\n <DropdownContent align=\"right\">\n <DropdownLabel>Filter by {col.header}</DropdownLabel>\n <DropdownItem label=\"All\" selected={!activeFilters[col.key]} onClick={() => setActiveFilters((f) => ({ ...f, [col.key]: \"\" }))} />\n <DropdownDivider />\n {col.filterOptions!.map((opt) => (\n <DropdownItem\n key={opt}\n label={opt}\n selected={activeFilters[col.key] === opt}\n onClick={() => {\n setActiveFilters((f) => ({ ...f, [col.key]: opt }));\n setPage(1);\n }}\n />\n ))}\n </DropdownContent>\n </Dropdown>\n ))}\n\n {(activeFilterCount > 0 || search) && (\n <Button variant=\"ghost\" size=\"sm\" onClick={clearAll}>\n <X size={13} />\n Clear\n </Button>\n )}\n </div>\n )}\n </div>\n\n <div className=\"overflow-hidden rounded-xl border border-zinc-200 dark:border-zinc-800\">\n <Table>\n <TableHeader>\n <TableRow>\n {columns.map((col) => (\n <TableHead\n key={col.key}\n onClick={() => handleSort(col)}\n className={cn(\n col.align === \"right\" && \"text-right\",\n col.align === \"center\" && \"text-center\",\n col.sortable && \"cursor-pointer select-none hover:text-zinc-700 dark:hover:text-zinc-200\",\n col.className,\n )}\n >\n <span\n className={cn(\n \"inline-flex items-center gap-1\",\n col.align === \"right\" && \"flex-row-reverse\",\n col.align === \"center\" && \"justify-center\",\n )}\n >\n {col.header}\n {col.sortable &&\n (sortKey === col.key ? (\n sortDir === \"asc\" ? (\n <ArrowUp size={12} />\n ) : (\n <ArrowDown size={12} />\n )\n ) : (\n <ArrowUpDown size={12} className=\"opacity-30\" />\n ))}\n </span>\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {paged.length === 0 ? (\n <TableRow className=\"hover:bg-transparent\">\n <TableCell colSpan={columns.length} className=\"py-10 text-center text-zinc-400\">\n No results found.\n </TableCell>\n </TableRow>\n ) : (\n paged.map((row, i) => (\n <TableRow key={i}>\n {columns.map((col) => (\n <TableCell key={col.key} className={cn(col.align === \"right\" && \"text-right\", col.align === \"center\" && \"text-center\", col.className)}>\n {col.render ? col.render(row) : String(getValue(row, col) ?? \"\")}\n </TableCell>\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </div>\n\n <div className=\"flex flex-col-reverse items-center justify-between gap-3 pt-4 sm:flex-row\">\n <p className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {sorted.length === 0 ? \"0 results\" : `Showing ${(currentPage - 1) * pageSize + 1}–${Math.min(currentPage * pageSize, sorted.length)} of ${sorted.length}`}\n </p>\n <Pagination page={currentPage} totalPages={totalPages} onPageChange={setPage} />\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst inputVariants = cva(\n \"flex w-full rounded-xl border bg-white px-3.5 text-sm text-zinc-900 outline-none transition-all duration-150 placeholder:text-zinc-400 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-zinc-900 dark:text-zinc-100 dark:placeholder:text-zinc-500\",\n {\n variants: {\n size: {\n sm: \"h-8 text-xs\",\n md: \"h-10 text-sm\",\n lg: \"h-11 text-base\",\n },\n state: {\n default:\n \"border-zinc-200 hover:border-zinc-300 focus:border-zinc-900 focus:ring-2 focus:ring-zinc-900/10 dark:border-zinc-800 dark:hover:border-zinc-700 dark:focus:border-zinc-400 dark:focus:ring-zinc-400/15\",\n error:\n \"border-red-400 focus:border-red-500 focus:ring-2 focus:ring-red-500/15 dark:border-red-500/60 dark:focus:border-red-400\",\n },\n },\n defaultVariants: {\n size: \"md\",\n state: \"default\",\n },\n },\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof inputVariants> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, size, state, type = \"text\", ...props }, ref) => (\n <input\n ref={ref}\n type={type}\n className={cn(inputVariants({ size, state }), className)}\n {...props}\n />\n ),\n);\nInput.displayName = \"Input\";\n\nexport { Input, inputVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"./button\";\n\nfunction getPageList(current: number, total: number, siblingCount: number): (number | \"...\")[] {\n const totalSlots = siblingCount * 2 + 5;\n if (total <= totalSlots) return Array.from({ length: total }, (_, i) => i + 1);\n\n const left = Math.max(current - siblingCount, 1);\n const right = Math.min(current + siblingCount, total);\n\n const pages: (number | \"...\")[] = [1];\n if (left > 2) pages.push(\"...\");\n for (let p = Math.max(left, 2); p <= Math.min(right, total - 1); p++) pages.push(p);\n if (right < total - 1) pages.push(\"...\");\n if (total > 1) pages.push(total);\n return pages;\n}\n\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n variant?: \"default\" | \"simple\";\n size?: \"small\" | \"half\" | \"full\";\n className?: string;\n}\n\nconst navTransition =\n \"transition-[color,background-color,border-color,box-shadow,transform,opacity,width] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]\";\nconst popIn = \"animate-[pagination-pop_220ms_cubic-bezier(0.16,1,0.3,1)]\";\nconst focusRing = \"focus-visible:ring-offset-white dark:focus-visible:ring-offset-zinc-900\";\n\nconst WIDTH_CLASSES = {\n small: \"w-max max-w-full\",\n half: \"w-full min-w-0 sm:w-1/2 sm:min-w-max sm:max-w-full\",\n full: \"w-full min-w-0\",\n};\n\nconst BUTTON_SIZE = 32;\nconst GAP = 4;\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n siblingCount = 1,\n variant = \"default\",\n size = \"small\",\n className,\n}: PaginationProps) {\n const clampedTotal = Math.max(1, totalPages);\n const current = Math.min(Math.max(page, 1), clampedTotal);\n const goTo = (p: number) => onPageChange(Math.min(Math.max(p, 1), clampedTotal));\n\n const pages = React.useMemo(\n () => getPageList(current, clampedTotal, siblingCount),\n [current, clampedTotal, siblingCount],\n );\n\n const maxSlots = Math.min(clampedTotal, siblingCount * 2 + 5);\n const trackMinWidth = maxSlots * BUTTON_SIZE + (maxSlots - 1) * GAP;\n\n // FLIP: glide numbers/ellipses that persist across a page change to their new\n // position instead of snapping — scoped entirely to this component's own DOM,\n // so it never touches other Pagination instances on the page.\n const trackRef = React.useRef<HTMLDivElement>(null);\n const prevRectsRef = React.useRef(new Map<string, DOMRect>());\n\n React.useLayoutEffect(() => {\n const track = trackRef.current;\n if (!track) return;\n const prevRects = prevRectsRef.current;\n const nextRects = new Map<string, DOMRect>();\n\n track.querySelectorAll<HTMLElement>(\"[data-flip-key]\").forEach((el) => {\n const key = el.dataset.flipKey!;\n const rect = el.getBoundingClientRect();\n nextRects.set(key, rect);\n\n const prev = prevRects.get(key);\n if (!prev) return;\n const dx = prev.left - rect.left;\n if (Math.abs(dx) < 0.5) return;\n\n el.style.transition = \"none\";\n el.style.transform = `translateX(${dx}px)`;\n el.getBoundingClientRect();\n requestAnimationFrame(() => {\n el.style.transition = \"transform 220ms cubic-bezier(0.16,1,0.3,1)\";\n el.style.transform = \"\";\n });\n });\n\n prevRectsRef.current = nextRects;\n }, [pages]);\n\n if (variant === \"simple\") {\n return (\n <nav\n aria-label=\"Pagination\"\n className={cn(\n \"flex items-center justify-between gap-2 overflow-x-auto rounded-full border border-zinc-200/70 bg-white p-1.5 shadow-[0_2px_8px_rgba(0,0,0,0.06)] transition-[width] duration-300 ease-[cubic-bezier(0.16,1,0.3,1)] dark:border-zinc-800/80 dark:bg-zinc-900 dark:shadow-[0_2px_8px_rgba(0,0,0,0.25)]\",\n WIDTH_CLASSES[size],\n className,\n )}\n >\n <Button variant=\"ghost\" size=\"sm\" className={cn(\"rounded-full\", navTransition, focusRing)} disabled={current <= 1} onClick={() => goTo(current - 1)}>\n <ChevronLeft size={15} />\n Previous\n </Button>\n <p className=\"min-w-[6.5rem] text-center text-xs tabular-nums text-zinc-500 dark:text-zinc-400\">\n Page {current} of {clampedTotal}\n </p>\n <Button variant=\"ghost\" size=\"sm\" className={cn(\"rounded-full\", navTransition, focusRing)} disabled={current >= clampedTotal} onClick={() => goTo(current + 1)}>\n Next\n <ChevronRight size={15} />\n </Button>\n </nav>\n );\n }\n\n return (\n <nav\n aria-label=\"Pagination\"\n className={cn(\n \"flex items-center gap-1 overflow-x-auto rounded-full border border-zinc-200/70 bg-white p-1 shadow-[0_2px_8px_rgba(0,0,0,0.06)] transition-[width] duration-300 ease-[cubic-bezier(0.16,1,0.3,1)] dark:border-zinc-800/80 dark:bg-zinc-900 dark:shadow-[0_2px_8px_rgba(0,0,0,0.25)]\",\n WIDTH_CLASSES[size],\n className,\n )}\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\"h-8 w-8 shrink-0 rounded-full p-0\", navTransition, focusRing)}\n disabled={current <= 1}\n onClick={() => goTo(current - 1)}\n aria-label=\"Previous page\"\n >\n <ChevronLeft size={15} />\n </Button>\n\n <div\n ref={trackRef}\n className=\"flex min-w-0 flex-1 items-center justify-center gap-1\"\n style={size === \"small\" ? { minWidth: trackMinWidth } : undefined}\n >\n {pages.map((p, i) =>\n p === \"...\" ? (\n <span\n key={`ellipsis-${i}`}\n data-flip-key={`e-${i}`}\n className={cn(\"flex h-8 w-8 shrink-0 items-center justify-center text-zinc-400\", popIn)}\n aria-hidden=\"true\"\n >\n <MoreHorizontal size={15} />\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n data-flip-key={`p-${p}`}\n onClick={() => goTo(p)}\n aria-current={current === p ? \"page\" : undefined}\n aria-label={`Page ${p}`}\n className={cn(\n \"h-8 w-8 shrink-0 cursor-pointer rounded-full text-sm font-medium tabular-nums outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-zinc-900/15 focus-visible:ring-offset-2 dark:focus-visible:ring-white/20\",\n \"active:scale-90 active:transition-transform active:duration-100\",\n navTransition,\n popIn,\n focusRing,\n current === p\n ? \"bg-zinc-900 text-white shadow-[0_2px_6px_rgba(0,0,0,0.3)] dark:bg-white dark:text-zinc-900 dark:shadow-[0_2px_6px_rgba(0,0,0,0.5)]\"\n : \"text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100\",\n )}\n >\n {p}\n </button>\n ),\n )}\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\"h-8 w-8 shrink-0 rounded-full p-0\", navTransition, focusRing)}\n disabled={current >= clampedTotal}\n onClick={() => goTo(current + 1)}\n aria-label=\"Next page\"\n >\n <ChevronRight size={15} />\n </Button>\n </nav>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\n\nexport function Table({ children, className = \"\", ...props }: React.HTMLAttributes<HTMLTableElement>) {\n return (\n <div className=\"w-full overflow-auto\">\n <table className={`w-full caption-bottom text-sm ${className}`} {...props}>{children}</table>\n </div>\n );\n}\n\nexport function TableHeader({ children, className = \"\", ...props }: React.HTMLAttributes<HTMLTableSectionElement>) {\n return <thead className={`border-b border-zinc-200 bg-zinc-50/50 dark:border-zinc-800 dark:bg-zinc-900/50 ${className}`} {...props}>{children}</thead>;\n}\n\nexport function TableBody({ children, className = \"\", ...props }: React.HTMLAttributes<HTMLTableSectionElement>) {\n return <tbody className={`divide-y divide-zinc-200 dark:divide-zinc-800 ${className}`} {...props}>{children}</tbody>;\n}\n\nexport function TableRow({ children, className = \"\", ...props }: React.HTMLAttributes<HTMLTableRowElement>) {\n return <tr className={`transition-colors hover:bg-zinc-50/50 dark:hover:bg-zinc-900/50 ${className}`} {...props}>{children}</tr>;\n}\n\nexport function TableHead({ children, className = \"\", ...props }: React.ThHTMLAttributes<HTMLTableHeaderCellElement>) {\n return (\n <th className={`h-12 px-4 text-left align-middle font-semibold text-zinc-500 dark:text-zinc-400 uppercase text-[11px] tracking-wider ${className}`} {...props}>\n {children}\n </th>\n );\n}\n\nexport function TableCell({ children, className = \"\", ...props }: React.TdHTMLAttributes<HTMLTableCellElement>) {\n return <td className={`p-4 align-middle text-zinc-700 dark:text-zinc-300 ${className}`} {...props}>{children}</td>;\n}\n\nexport function ExpandableRow({ title, details, children, colSpan = 10 }: { title: React.ReactNode; details: React.ReactNode; children?: React.ReactNode; colSpan?: number }) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n return (\n <>\n <TableRow className=\"cursor-pointer\" onClick={() => setIsExpanded(!isExpanded)}>\n <TableCell className=\"w-10 text-zinc-400\">\n {isExpanded ? <ChevronUp size={16} /> : <ChevronDown size={16} />}\n </TableCell>\n {children}\n </TableRow>\n {isExpanded && (\n <tr className=\"bg-zinc-50/30 dark:bg-zinc-900/30\">\n <TableCell colSpan={colSpan} className=\"p-6 border-l-2 border-zinc-900 dark:border-white\">\n {details}\n </TableCell>\n </tr>\n )}\n </>\n );\n}","\"use client\";\n\nimport React, { useState, useRef, useEffect } from \"react\";\nimport { Check, ChevronDown, Search, User, Settings, LogOut, Filter, ArrowUpDown, Calendar, ChevronRight, X } from \"lucide-react\";\n\n// --- Base Components ---\nexport function Dropdown({ children }: { children: React.ReactNode }) {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) setIsOpen(false);\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (!isOpen) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen]);\n\n return (\n <div className=\"relative inline-block text-left\" ref={containerRef}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<any>, { isOpen, setIsOpen });\n }\n return child;\n })}\n </div>\n );\n}\n\nexport function DropdownTrigger({ children, isOpen, setIsOpen }: any) {\n return React.cloneElement(children, {\n onClick: () => setIsOpen(!isOpen),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": isOpen,\n className: `${children.props.className} ${isOpen ? \"ring-2 ring-zinc-200 dark:ring-zinc-800\" : \"\"}`\n });\n}\n\nexport function DropdownContent({ children, isOpen, className = \"\", align = \"left\" }: any) {\n if (!isOpen) return null;\n const alignClass = align === \"right\" ? \"right-0\" : \"left-0\";\n return (\n <div role=\"menu\" className={`absolute ${alignClass} z-50 mt-2 w-56 origin-top-right rounded-lg border border-zinc-200 bg-white p-1 shadow-xl outline-none dark:border-zinc-800 dark:bg-zinc-950 ${className} animate-in fade-in zoom-in-95 duration-200`}>\n {children}\n </div>\n );\n}\n\nexport function DropdownItem({ label, icon: Icon, selected, onClick, className = \"\", variant = \"default\" }: any) {\n const baseClass = \"flex w-full items-center gap-2 rounded-md px-3 py-2 text-left text-sm transition-colors outline-none cursor-pointer\";\n const variantClass = variant === \"destructive\" ? \"text-red-600 hover:bg-red-50 dark:hover:bg-red-950/30\" : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-900\";\n\n return (\n <button type=\"button\" role=\"menuitem\" className={`${baseClass} ${variantClass} ${className}`} onClick={onClick}>\n {Icon && <Icon size={16} className=\"opacity-70\" />}\n <span className=\"flex-1\">{label}</span>\n {selected && <Check size={14} className=\"text-zinc-900 dark:text-white\" />}\n </button>\n );\n}\n\nexport function DropdownLabel({ children }: { children: React.ReactNode }) {\n return <div className=\"px-3 py-2 text-[11px] font-bold uppercase tracking-wider text-zinc-400\">{children}</div>;\n}\n\nexport function DropdownDivider() {\n return <div role=\"separator\" className=\"my-1 h-px bg-zinc-100 dark:bg-zinc-800\" />;\n}","\"use client\";\n\nimport React, { createContext, useContext, useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { User, Plus } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\ntype DialogContextType = {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n};\n\nconst DialogContext = createContext<DialogContextType | null>(null);\n\nexport function Dialog({ children, open, onOpenChange }: { children: React.ReactNode; open?: boolean; onOpenChange?: (open: boolean) => void }) {\n const [isOpenState, setIsOpenState] = useState(false);\n const isOpen = open !== undefined ? open : isOpenState;\n const setIsOpen = onOpenChange || setIsOpenState;\n\n useEffect(() => {\n if (isOpen) document.body.style.overflow = \"hidden\";\n else document.body.style.overflow = \"unset\";\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen]);\n\n return (\n <DialogContext.Provider value={{ isOpen, setIsOpen }}>\n {children}\n </DialogContext.Provider>\n );\n}\n\nexport function DialogTrigger({ children }: { children: React.ReactElement<any> }) {\n const { setIsOpen } = useContext(DialogContext)!;\n\n return React.cloneElement(children, {\n onClick: (e: React.MouseEvent) => {\n if (children.props?.onClick) children.props.onClick(e);\n setIsOpen(true);\n },\n });\n}\n\nexport function DialogContent({ children, className = \"\" }: { children: React.ReactNode; className?: string }) {\n const { isOpen, setIsOpen } = useContext(DialogContext)!;\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n if (!isOpen) {\n setVisible(false);\n return;\n }\n const frame = requestAnimationFrame(() => setVisible(true));\n return () => cancelAnimationFrame(frame);\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, setIsOpen]);\n\n if (!isOpen) return null;\n\n return createPortal(\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div\n className={cn(\n \"fixed inset-0 bg-zinc-900/45 backdrop-blur-[2px] transition-opacity duration-200 ease-out dark:bg-black/65\",\n visible ? \"opacity-100\" : \"opacity-0\",\n )}\n onClick={() => setIsOpen(false)}\n aria-hidden\n />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n onClick={(e) => e.stopPropagation()}\n className={cn(\n \"relative z-10 w-full max-w-md rounded-2xl border border-zinc-200/90 bg-white p-6 text-zinc-900\",\n \"shadow-[0_20px_60px_rgba(0,0,0,0.12),0_0_0_1px_rgba(0,0,0,0.04)]\",\n \"dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100\",\n \"dark:shadow-[0_20px_60px_rgba(0,0,0,0.5),0_0_0_1px_rgba(255,255,255,0.06)]\",\n \"transition-[opacity,transform] duration-200 ease-out\",\n visible ? \"translate-y-0 scale-100 opacity-100\" : \"translate-y-1 scale-[0.97] opacity-0\",\n className,\n )}\n >\n {children}\n </div>\n </div>,\n document.body,\n );\n}\n\nexport function DialogHeader({ title, description }: { title?: string; description?: string }) {\n return (\n <div className=\"mb-5\">\n {title && <h2 className=\"text-[17px] font-semibold leading-snug tracking-tight text-zinc-900 dark:text-white\">{title}</h2>}\n {description && <p className=\"mt-2 text-[14px] leading-relaxed text-zinc-500 dark:text-zinc-400\">{description}</p>}\n </div>\n );\n}\n\nexport function DialogFooter({ children }: { children: React.ReactNode }) {\n return <div className=\"mt-6 flex items-center justify-end gap-1\">{children}</div>;\n}\n\nexport function DialogAction({ label, onClick, variant = \"primary\" }: { label: string; onClick?: () => void; variant?: \"primary\" | \"destructive\" }) {\n const { setIsOpen } = useContext(DialogContext)!;\n\n const handleClick = () => {\n if (onClick) onClick();\n setIsOpen(false);\n };\n\n const colorClass =\n variant === \"destructive\"\n ? \"text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-500/10\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-200 dark:hover:bg-zinc-800\";\n\n return (\n <button\n onClick={handleClick}\n className={cn(\n \"rounded-lg px-3.5 py-2 text-[13px] font-semibold tracking-tight outline-none transition-colors duration-150\",\n \"focus-visible:ring-2 focus-visible:ring-zinc-900/15 dark:focus-visible:ring-white/20\",\n colorClass,\n )}\n >\n {label}\n </button>\n );\n}\n\nexport function DialogItem({\n label,\n icon,\n onClick,\n variant = \"account\",\n}: {\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n variant?: \"account\" | \"action\";\n}) {\n const { setIsOpen } = useContext(DialogContext)!;\n\n const handleClick = () => {\n if (onClick) onClick();\n setIsOpen(false);\n };\n\n const iconBg = variant === \"account\" ? \"bg-[#0070BA]/10 dark:bg-[#0070BA]/20\" : \"bg-zinc-100 dark:bg-zinc-800\";\n const iconColor = variant === \"account\" ? \"text-[#0070BA] dark:text-[#4DA3E0]\" : \"text-zinc-500 dark:text-zinc-400\";\n\n return (\n <button\n onClick={handleClick}\n className=\"flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left outline-none transition-colors duration-150 hover:bg-zinc-50 dark:hover:bg-zinc-900/60\"\n >\n <div className={cn(\"flex h-9 w-9 shrink-0 items-center justify-center rounded-full\", iconBg, iconColor)}>\n {icon || (variant === \"account\" ? <User size={18} /> : <Plus size={18} />)}\n </div>\n <span className=\"text-[14px] font-medium text-zinc-900 dark:text-white\">{label}</span>\n </button>\n );\n}\n","import type { LucideIcon } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\nexport function FeatureCard({\n icon: Icon,\n title,\n description,\n variant = \"plain\",\n}: {\n icon: LucideIcon;\n title: string;\n description: string;\n variant?: \"plain\" | \"bordered\";\n}) {\n return (\n <div\n className={cn(\n variant === \"bordered\" &&\n \"rounded-xl border border-zinc-200 p-5 dark:border-zinc-800\",\n )}\n >\n <div\n className={cn(\n \"mb-4 flex h-11 w-11 items-center justify-center rounded-2xl border\",\n variant === \"bordered\"\n ? \"border-zinc-200 bg-zinc-50 text-zinc-900 dark:border-white/10 dark:bg-white/[0.06] dark:text-zinc-100\"\n : \"border-zinc-800 bg-zinc-900 text-white dark:border-zinc-200 dark:bg-white dark:text-zinc-900\",\n )}\n >\n <Icon className=\"h-5 w-5\" />\n </div>\n <h3 className=\"text-base font-semibold text-zinc-900 dark:text-zinc-50\">\n {title}\n </h3>\n <p className=\"mt-1 text-sm text-zinc-500 dark:text-zinc-400\">{description}</p>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst labelVariants = cva(\n \"inline-flex items-center gap-1 font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"text-zinc-800 dark:text-zinc-100\",\n muted: \"text-zinc-500 dark:text-zinc-400\",\n },\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-[15px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {\n required?: boolean;\n optional?: boolean;\n hint?: string;\n error?: string;\n}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, variant, size, required, optional, hint, error, children, ...props }, ref) => {\n return (\n <div className=\"flex w-full flex-col gap-1.5\">\n <div className=\"flex items-center justify-between gap-2\">\n <label\n ref={ref}\n className={cn(labelVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n {required && (\n <span className=\"text-red-500\" aria-label=\"required\">\n *\n </span>\n )}\n </label>\n {optional && (\n <span className=\"text-xs text-zinc-400 dark:text-zinc-500\">Optional</span>\n )}\n </div>\n {hint && !error && (\n <p className=\"text-xs leading-relaxed text-zinc-500 dark:text-zinc-400\">{hint}</p>\n )}\n {error && (\n <p className=\"text-xs leading-relaxed text-red-500 dark:text-red-400\" role=\"alert\">\n {error}\n </p>\n )}\n </div>\n );\n },\n);\nLabel.displayName = \"Label\";\n\nexport interface FieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label: string;\n htmlFor: string;\n required?: boolean;\n optional?: boolean;\n hint?: string;\n error?: string;\n labelSize?: \"sm\" | \"md\" | \"lg\";\n children: React.ReactNode;\n}\n\nfunction Field({\n className,\n label,\n htmlFor,\n required,\n optional,\n hint,\n error,\n labelSize = \"md\",\n children,\n ...props\n}: FieldProps) {\n return (\n <div className={cn(\"flex w-full flex-col gap-2\", className)} {...props}>\n <Label\n htmlFor={htmlFor}\n required={required}\n optional={optional}\n hint={hint}\n error={error}\n size={labelSize}\n >\n {label}\n </Label>\n {children}\n </div>\n );\n}\n\nexport { Label, Field, labelVariants };\n","\"use client\";\n\nimport React from \"react\";\nimport { Sparkles } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\nconst LoaderStyles = () => (\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes shimmer { 100% { transform: translateX(100%); } }\n @keyframes progressLoad { 0% { transform: scaleX(0); } 50% { transform: scaleX(0.5); } 100% { transform: scaleX(1); } }\n @keyframes morphShape { 0%, 100% { border-radius: 8px; transform: rotate(0deg); } 50% { border-radius: 50%; transform: rotate(180deg); } }\n @keyframes blurReveal { 0% { filter: blur(10px); opacity: 0; transform: translateY(10px); } 100% { filter: blur(0); opacity: 1; transform: translateY(0); } }\n @keyframes spinDots { 0%, 100% { opacity: 0.2; } 50% { opacity: 1; } }\n @keyframes squareMove { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(0.6); opacity: 0.4; } }\n @keyframes loadBarMove { 0% { left: -100%; } 100% { left: 100%; } }\n `}} />\n);\n\nexport const SkeletonShimmer = ({ className }: { className?: string }) => (\n <div className={cn(\"relative overflow-hidden rounded-md bg-zinc-100 dark:bg-zinc-800\", className)}>\n <LoaderStyles />\n <div className=\"absolute inset-0 -translate-x-full bg-gradient-to-r from-transparent via-white/40 to-transparent dark:via-white/5\" style={{ animation: 'shimmer 2s infinite' }} />\n </div>\n);\n\n// --- Circular Spinners ---\n\nexport const ProgressRing = () => (\n <svg className=\"h-10 w-10 animate-spin text-zinc-900 dark:text-white\" viewBox=\"0 0 32 32\">\n <circle className=\"opacity-10\" cx=\"16\" cy=\"16\" r=\"14\" stroke=\"currentColor\" strokeWidth=\"3\" fill=\"none\" />\n <path className=\"opacity-100\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" d=\"M16 2 A14 14 0 0 1 30 16\" />\n </svg>\n);\n\nexport const SpinnerGradient = () => (\n <div className=\"h-10 w-10 rounded-full border-4 border-zinc-100 dark:border-zinc-800 border-t-zinc-900 dark:border-t-white animate-spin\" />\n);\n\nexport const SpinnerDots = () => (\n <div className=\"relative h-10 w-10\">\n {[...Array(8)].map((_, i) => (\n <div key={i} className=\"absolute top-0 left-0 w-full h-full\" style={{ transform: `rotate(${i * 45}deg)` }}>\n <div className=\"h-2 w-2 rounded-full bg-zinc-900 dark:bg-white\" style={{ animation: 'spinDots 1s linear infinite', animationDelay: `${i * 0.12}s` }} />\n </div>\n ))}\n </div>\n);\n\nexport const HalfCircles = () => (\n <div className=\"relative h-10 w-10 border-4 border-transparent border-t-zinc-900 dark:border-t-white rounded-full animate-spin\">\n <div className=\"absolute inset-0 border-4 border-transparent border-b-zinc-400 rounded-full opacity-50\" />\n </div>\n);\n\n// --- Geometric & Modern ---\n\nexport const SquaresLoader = () => (\n <div className=\"flex gap-1.5\">\n <div className=\"h-4 w-4 bg-zinc-900 dark:bg-white\" style={{ animation: 'squareMove 1s ease-in-out infinite' }} />\n <div className=\"h-4 w-4 bg-zinc-300 dark:bg-zinc-700\" style={{ animation: 'squareMove 1s ease-in-out infinite', animationDelay: '0.2s' }} />\n </div>\n);\n\nexport const LoadBar = () => (\n <div className=\"relative h-4 w-12 overflow-hidden rounded-full bg-zinc-100 dark:bg-zinc-800\">\n <div className=\"absolute top-0 h-full w-6 rounded-full bg-zinc-900 dark:bg-white\" style={{ animation: 'loadBarMove 1.5s linear infinite' }} />\n </div>\n);\n\nexport const PulseLoader = () => (\n <div className=\"relative h-10 w-10 flex items-center justify-center\">\n <div className=\"absolute h-full w-full animate-ping rounded-full bg-zinc-900/20 dark:bg-white/20\" />\n <div className=\"h-4 w-4 rounded-full bg-zinc-900 dark:bg-white\" />\n </div>\n);\n\n// --- Indicators ---\n\nexport const DotWave = () => (\n <div className=\"flex gap-1.5\">\n {[0, 1, 2].map((i) => (\n <div key={i} className=\"h-2 w-2 animate-bounce rounded-full bg-zinc-900 dark:bg-white\" style={{ animationDelay: `${i * 0.15}s` }} />\n ))}\n </div>\n);\n\nexport const ThreeDots = () => (\n <div className=\"flex gap-1\">\n {[0, 1, 2].map((i) => (\n <div key={i} className=\"h-1.5 w-1.5 rounded-full bg-zinc-400 animate-pulse\" style={{ animationDelay: `${i * 0.2}s` }} />\n ))}\n </div>\n);\n\nexport const TypingIndicator = () => (\n <div className=\"flex items-center gap-1.5 px-4 py-2 bg-zinc-100 dark:bg-zinc-800 rounded-2xl w-fit\">\n {[0, 1, 2].map((i) => (\n <div key={i} className=\"h-1.5 w-1.5 animate-pulse rounded-full bg-zinc-400\" style={{ animationDelay: `${i * 0.2}s` }} />\n ))}\n </div>\n);\n\nexport const ProgressBar = () => (\n <div className=\"h-1.5 w-full max-w-[200px] overflow-hidden rounded-full bg-zinc-100 dark:bg-zinc-800\">\n <LoaderStyles />\n <div className=\"h-full w-full origin-left bg-zinc-900 dark:bg-white\" style={{ animation: 'progressLoad 1.5s ease-in-out infinite' }} />\n </div>\n);\n\n// --- Premium ---\n\nexport const MorphingLoader = () => (\n <div className=\"h-10 w-10 bg-zinc-900 dark:bg-white\" style={{ animation: 'morphShape 3s linear infinite' }} />\n);\n\nexport const OrbitLoader = () => (\n <div className=\"relative flex h-12 w-12 items-center justify-center\">\n <div className=\"h-2 w-2 rounded-full bg-zinc-900 dark:bg-white\" />\n <div className=\"absolute h-full w-full animate-spin\">\n <div className=\"h-2 w-2 rounded-full bg-zinc-400\" />\n </div>\n </div>\n);\n\nexport const BlurReveal = ({ children }: { children: React.ReactNode }) => (\n <div style={{ animation: 'blurReveal 1s ease-out forwards' }}>\n {children}\n </div>\n);\n\nexport const AILoader = ({ text = \"Thinking...\" }: { text?: string }) => (\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"relative flex h-12 w-12 items-center justify-center\">\n <div className=\"absolute h-full w-full animate-spin rounded-full border-2 border-zinc-200 border-t-zinc-900 dark:border-zinc-800 dark:border-t-white\" />\n <Sparkles className=\"h-5 w-5 animate-pulse text-zinc-900 dark:text-white\" />\n </div>\n <span className=\"text-[10px] font-bold uppercase tracking-widest text-zinc-400 animate-pulse\">{text}</span>\n </div>\n);","import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst menuVariants = cva(\n \"w-56 rounded-lg p-1 outline-none\",\n {\n variants: {\n variant: {\n default:\n \"border border-zinc-200 bg-white shadow-xl dark:border-zinc-800 dark:bg-zinc-950\",\n ghost: \"bg-transparent\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface MenuProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof menuVariants> {}\n\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>(\n ({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"menu\"\n className={cn(menuVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nMenu.displayName = \"Menu\";\n\nconst menuItemVariants = cva(\n [\n \"flex w-full cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-left text-sm outline-none transition-colors\",\n \"focus-visible:bg-zinc-100 dark:focus-visible:bg-zinc-900\",\n \"disabled:pointer-events-none disabled:opacity-40\",\n ],\n {\n variants: {\n variant: {\n default:\n \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-900\",\n destructive:\n \"text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/30\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface MenuItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof menuItemVariants> {\n label: string;\n icon?: React.ElementType;\n shortcut?: string;\n selected?: boolean;\n}\n\nconst MenuItem = React.forwardRef<HTMLButtonElement, MenuItemProps>(\n (\n { className, variant, label, icon: Icon, shortcut, selected, disabled, ...props },\n ref,\n ) => (\n <button\n ref={ref}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n className={cn(menuItemVariants({ variant }), className)}\n {...props}\n >\n {Icon && <Icon className=\"h-4 w-4 shrink-0 opacity-70\" />}\n <span className=\"flex-1 truncate\">{label}</span>\n {shortcut && (\n <span className=\"shrink-0 text-xs tracking-wide text-zinc-400 dark:text-zinc-500\">\n {shortcut}\n </span>\n )}\n {selected && <Check className=\"h-3.5 w-3.5 shrink-0 text-zinc-900 dark:text-white\" />}\n </button>\n ),\n);\nMenuItem.displayName = \"MenuItem\";\n\nconst MenuLabel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"px-3 py-2 text-[11px] font-bold uppercase tracking-wider text-zinc-400 dark:text-zinc-500\",\n className,\n )}\n {...props}\n />\n));\nMenuLabel.displayName = \"MenuLabel\";\n\nconst MenuDivider = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(\"my-1 h-px bg-zinc-100 dark:bg-zinc-800\", className)}\n {...props}\n />\n));\nMenuDivider.displayName = \"MenuDivider\";\n\nexport { Menu, MenuItem, MenuLabel, MenuDivider, menuVariants, menuItemVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\nconst modalContentVariants = cva(\n [\n \"relative z-10 flex w-full flex-col overflow-hidden rounded-2xl\",\n \"border border-zinc-200/90 bg-white text-zinc-900\",\n \"shadow-[0_20px_60px_rgba(0,0,0,0.12),0_0_0_1px_rgba(0,0,0,0.04)]\",\n \"dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100\",\n \"dark:shadow-[0_20px_60px_rgba(0,0,0,0.45),0_0_0_1px_rgba(255,255,255,0.06)]\",\n \"transition-[opacity,transform] duration-200 ease-out\",\n ],\n {\n variants: {\n size: {\n sm: \"max-w-[400px]\",\n md: \"max-w-[440px]\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n },\n visible: {\n true: \"opacity-100 scale-100\",\n false: \"opacity-0 scale-[0.97]\",\n },\n },\n defaultVariants: { size: \"md\", visible: false },\n },\n);\n\nconst overlayVariants = cva(\n [\n \"absolute inset-0 bg-zinc-900/45\",\n \"transition-opacity duration-200 ease-out\",\n \"dark:bg-black/65\",\n ],\n {\n variants: {\n visible: {\n true: \"opacity-100\",\n false: \"opacity-0\",\n },\n },\n defaultVariants: { visible: false },\n },\n);\n\ninterface ModalContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nconst ModalContext = React.createContext<ModalContextValue | null>(null);\n\ninterface ModalContentContextValue {\n titleId: string;\n descriptionId: string;\n close: () => void;\n}\n\nconst ModalContentContext = React.createContext<ModalContentContextValue | null>(null);\n\nfunction useModalContext() {\n const context = React.useContext(ModalContext);\n if (!context) {\n throw new Error(\"Modal components must be used within Modal\");\n }\n return context;\n}\n\nfunction useModalContentContext() {\n const context = React.useContext(ModalContentContext);\n if (!context) {\n throw new Error(\"Modal subcomponents must be used within ModalContent\");\n }\n return context;\n}\n\nexport interface ModalProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n children: React.ReactNode;\n}\n\nexport function Modal({\n open: controlledOpen,\n onOpenChange,\n defaultOpen = false,\n children,\n}: ModalProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const open = controlledOpen ?? uncontrolledOpen;\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (controlledOpen === undefined) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [controlledOpen, onOpenChange],\n );\n\n return (\n <ModalContext.Provider value={{ open, onOpenChange: handleOpenChange }}>\n {children}\n </ModalContext.Provider>\n );\n}\n\nexport interface ModalTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nexport function ModalTrigger({ asChild, children, onClick, ...props }: ModalTriggerProps) {\n const { onOpenChange } = useModalContext();\n\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n onOpenChange(true);\n }\n };\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<{ onClick?: React.MouseEventHandler<HTMLElement> }>;\n return React.cloneElement(child, {\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n child.props.onClick?.(event);\n if (!event.defaultPrevented) {\n onOpenChange(true);\n }\n },\n });\n }\n\n return (\n <button type=\"button\" onClick={handleOpen} {...props}>\n {children}\n </button>\n );\n}\n\nexport interface ModalContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof modalContentVariants> {\n showCloseButton?: boolean;\n onClose?: () => void;\n}\n\nexport function ModalContent({\n className,\n size,\n showCloseButton = true,\n onClose,\n children,\n ...props\n}: ModalContentProps) {\n const { open, onOpenChange } = useModalContext();\n const [mounted, setMounted] = React.useState(false);\n const [visible, setVisible] = React.useState(false);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const titleId = React.useId();\n const descriptionId = React.useId();\n\n React.useEffect(() => setMounted(true), []);\n\n React.useEffect(() => {\n if (!open) {\n setVisible(false);\n document.body.style.overflow = \"\";\n return;\n }\n\n document.body.style.overflow = \"hidden\";\n const frame = requestAnimationFrame(() => setVisible(true));\n\n return () => {\n cancelAnimationFrame(frame);\n document.body.style.overflow = \"\";\n };\n }, [open]);\n\n const close = React.useCallback(() => {\n onClose?.();\n onOpenChange(false);\n }, [onClose, onOpenChange]);\n\n React.useEffect(() => {\n if (!open) return;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") close();\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, close]);\n\n React.useEffect(() => {\n if (!open || !contentRef.current) return;\n const focusable = contentRef.current.querySelector<HTMLElement>(\n \"button, [href], input, select, textarea, [tabindex]:not([tabindex='-1'])\",\n );\n focusable?.focus();\n }, [open, visible]);\n\n if (!mounted || !open) return null;\n\n const node = (\n <div className=\"fixed inset-0 z-[100] isolate flex items-center justify-center p-4 sm:p-6\">\n <div\n className={overlayVariants({ visible })}\n onClick={close}\n aria-hidden\n />\n <div\n ref={contentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n className={cn(modalContentVariants({ size, visible }), className)}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {showCloseButton && (\n <button\n type=\"button\"\n onClick={close}\n className=\"absolute right-4 top-4 z-10 inline-flex h-8 w-8 items-center justify-center rounded-lg text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-700 dark:hover:bg-zinc-800 dark:hover:text-zinc-200\"\n aria-label=\"Close\"\n >\n <X className=\"h-4 w-4\" strokeWidth={2} />\n </button>\n )}\n <ModalContentContext.Provider value={{ titleId, descriptionId, close }}>\n {children}\n </ModalContentContext.Provider>\n </div>\n </div>\n );\n\n return createPortal(node, document.body);\n}\n\nexport function ModalHeader({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"space-y-1 px-6 pt-6 pr-12\", className)}\n {...props}\n />\n );\n}\n\nexport function ModalTitle({\n className,\n ...props\n}: React.HTMLAttributes<HTMLHeadingElement>) {\n const { titleId } = useModalContentContext();\n\n return (\n <h2\n id={titleId}\n className={cn(\n \"text-[15px] font-semibold leading-snug tracking-tight text-zinc-900 dark:text-white\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function ModalDescription({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) {\n const { descriptionId } = useModalContentContext();\n\n return (\n <p\n id={descriptionId}\n className={cn(\n \"text-[13px] leading-relaxed text-zinc-500 dark:text-zinc-400\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function ModalBody({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"space-y-4 px-6 pt-5 pb-6\", className)}\n {...props}\n />\n );\n}\n\nexport function ModalFooter({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"flex items-center justify-end gap-2 border-t border-zinc-200/90 px-6 py-4 dark:border-zinc-800\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function ModalOption({\n className,\n icon,\n title,\n description,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n}) {\n return (\n <div\n className={cn(\n \"flex gap-3 rounded-xl border border-zinc-200 bg-zinc-50/70 p-3.5\",\n \"dark:border-zinc-800 dark:bg-zinc-900/60\",\n className,\n )}\n {...props}\n >\n {icon && (\n <div\n className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-white text-zinc-500 shadow-sm ring-1 ring-zinc-200/80 dark:bg-zinc-950 dark:text-zinc-400 dark:ring-zinc-700\"\n >\n {icon}\n </div>\n )}\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-zinc-900 dark:text-white\">{title}</p>\n {description && (\n <p className=\"mt-0.5 text-xs leading-relaxed text-zinc-500 dark:text-zinc-400\">\n {description}\n </p>\n )}\n </div>\n </div>\n );\n}\n\nexport interface ModalCloseProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nexport function ModalClose({ asChild, children, onClick, ...props }: ModalCloseProps) {\n const { close } = useModalContentContext();\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(\n children as React.ReactElement<{ onClick?: React.MouseEventHandler }>,\n {\n onClick: (event: React.MouseEvent) => {\n (children as React.ReactElement<{ onClick?: React.MouseEventHandler }>).props.onClick?.(\n event,\n );\n close();\n },\n },\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={(e) => {\n onClick?.(e);\n close();\n }}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport { modalContentVariants, overlayVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst progressTrackVariants = cva(\n \"relative w-full overflow-hidden rounded-full bg-zinc-100 dark:bg-zinc-800/70\",\n {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-1.5\",\n lg: \"h-2\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nconst progressIndicatorVariants = cva(\n \"h-full rounded-full transition-[width] duration-500 ease-[cubic-bezier(0.4,0,0.2,1)]\",\n {\n variants: {\n variant: {\n default: \"bg-zinc-900 dark:bg-zinc-100\",\n success: \"bg-[#28A745] dark:bg-[#5CC975]\",\n warning: \"bg-[#E58E00] dark:bg-[#F5B84A]\",\n error: \"bg-[#D93025] dark:bg-[#F06B62]\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nconst valuePillVariants = cva(\n \"inline-flex min-w-[2.25rem] items-center justify-end text-[11px] font-medium tabular-nums text-zinc-400 dark:text-zinc-500\",\n {\n variants: {\n variant: {\n default: \"\",\n success: \"\",\n warning: \"\",\n error: \"\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\nexport interface ProgressProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n VariantProps<typeof progressTrackVariants>,\n VariantProps<typeof progressIndicatorVariants> {\n value?: number;\n max?: number;\n label?: string;\n showValue?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n className,\n value = 0,\n max = 100,\n variant,\n size,\n label,\n showValue = false,\n indeterminate = false,\n disabled = false,\n ...props\n },\n ref,\n ) => {\n const clamped = Math.min(max, Math.max(0, value));\n const percentage = max > 0 ? Math.round((clamped / max) * 100) : 0;\n\n return (\n <div\n className={cn(\n \"flex w-full flex-col gap-2.5\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {(label || showValue) && (\n <div className=\"flex items-center justify-between gap-3\">\n {label && (\n <span className=\"text-sm text-zinc-600 dark:text-zinc-300\">\n {label}\n </span>\n )}\n {showValue && !indeterminate && (\n <span className={cn(valuePillVariants({ variant }))}>\n {percentage}%\n </span>\n )}\n </div>\n )}\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate || disabled ? undefined : clamped}\n aria-label={label}\n aria-valuetext={indeterminate ? \"Loading\" : `${percentage}%`}\n aria-disabled={disabled || undefined}\n className={cn(progressTrackVariants({ size }))}\n {...props}\n >\n {indeterminate ? (\n <div\n className={cn(\n progressIndicatorVariants({ variant }),\n \"w-[40%] animate-[progress-indeterminate_1.5s_ease-in-out_infinite]\",\n )}\n />\n ) : (\n <div\n className={cn(progressIndicatorVariants({ variant }))}\n style={{ width: `${percentage}%` }}\n />\n )}\n </div>\n </div>\n );\n },\n);\nProgress.displayName = \"Progress\";\n\nexport { Progress, progressTrackVariants, progressIndicatorVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst radioControlVariants = cva(\n [\n \"pointer-events-none relative flex shrink-0 items-center justify-center rounded-full border-2 bg-transparent transition-all duration-200\",\n \"border-zinc-500 group-hover:border-zinc-700\",\n \"peer-checked:border-zinc-900\",\n \"peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-zinc-900/30 peer-focus-visible:ring-offset-2\",\n \"peer-disabled:border-zinc-300\",\n \"peer-disabled:peer-checked:border-zinc-300\",\n \"dark:border-zinc-500 dark:group-hover:border-zinc-400\",\n \"dark:peer-checked:border-zinc-100\",\n \"dark:peer-disabled:border-zinc-600 dark:peer-disabled:peer-checked:border-zinc-600\",\n \"peer-checked:[&_.radio-dot]:scale-100 peer-checked:[&_.radio-dot]:opacity-100\",\n \"peer-disabled:peer-checked:[&_.radio-dot]:bg-zinc-300\",\n \"dark:peer-disabled:peer-checked:[&_.radio-dot]:bg-zinc-600\",\n ],\n {\n variants: {\n size: {\n sm: \"h-4 w-4 [&_.radio-dot]:h-1.5 [&_.radio-dot]:w-1.5\",\n md: \"h-5 w-5 [&_.radio-dot]:h-2.5 [&_.radio-dot]:w-2.5\",\n lg: \"h-6 w-6 [&_.radio-dot]:h-3 [&_.radio-dot]:w-3\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nconst radioWrapperVariants = cva(\"group relative flex w-full transition-colors duration-150\", {\n variants: {\n variant: {\n inline: \"gap-3\",\n card: [\n \"gap-3.5 rounded-lg border border-zinc-200 bg-white px-4 py-3.5\",\n \"hover:border-zinc-300 hover:bg-zinc-50/80\",\n \"has-[:checked]:border-zinc-900\",\n \"dark:border-zinc-800 dark:bg-zinc-900 dark:hover:border-zinc-700\",\n \"dark:has-[:checked]:border-zinc-500\",\n ],\n },\n },\n defaultVariants: { variant: \"inline\" },\n});\n\ninterface RadioGroupContextValue {\n name: string;\n value?: string;\n onValueChange?: (value: string) => void;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"inline\" | \"card\";\n appearance?: \"default\" | \"segmented\";\n disabled?: boolean;\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContextValue | null>(\n null,\n);\n\nexport interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"inline\" | \"card\";\n appearance?: \"default\" | \"segmented\";\n disabled?: boolean;\n orientation?: \"vertical\" | \"horizontal\";\n}\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n className,\n name,\n value: controlledValue,\n defaultValue,\n onValueChange,\n size = \"md\",\n variant = \"inline\",\n appearance = \"default\",\n disabled,\n orientation = \"vertical\",\n children,\n ...props\n },\n ref,\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(\n defaultValue ?? \"\",\n );\n const value = controlledValue ?? uncontrolledValue;\n\n const handleValueChange = (next: string) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(next);\n }\n onValueChange?.(next);\n };\n\n return (\n <RadioGroupContext.Provider\n value={{ name, value, onValueChange: handleValueChange, size, variant, appearance, disabled }}\n >\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\n \"flex\",\n appearance === \"segmented\"\n ? \"inline-flex w-fit gap-0.5 rounded-lg border border-zinc-200 p-0.5 dark:border-zinc-800\"\n : variant === \"card\"\n ? \"gap-2.5\"\n : \"gap-2.5\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n },\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\">,\n VariantProps<typeof radioControlVariants> {\n value: string;\n label?: string;\n description?: string;\n variant?: \"inline\" | \"card\";\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n className,\n size: sizeProp,\n variant: variantProp,\n value,\n label,\n description,\n disabled: disabledProp,\n id,\n onChange,\n checked: checkedProp,\n ...inputProps\n },\n ref,\n ) => {\n const context = React.useContext(RadioGroupContext);\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const size = sizeProp ?? context?.size ?? \"md\";\n const groupVariant = variantProp ?? context?.variant ?? \"inline\";\n const appearance = context?.appearance ?? \"default\";\n const resolvedVariant =\n appearance === \"segmented\"\n ? \"inline\"\n : groupVariant === \"card\" || description\n ? \"card\"\n : \"inline\";\n const disabled = disabledProp ?? context?.disabled;\n const isControlled = context !== null || checkedProp !== undefined;\n const checked = context ? context.value === value : checkedProp;\n const alignStart = resolvedVariant === \"card\" || Boolean(description);\n\n const input = (\n <input\n {...inputProps}\n ref={ref}\n id={inputId}\n type=\"radio\"\n name={context?.name}\n value={value}\n disabled={disabled}\n checked={isControlled ? checked : undefined}\n defaultChecked={!isControlled ? checkedProp : undefined}\n onChange={(event) => {\n onChange?.(event);\n if (event.target.checked) {\n context?.onValueChange?.(value);\n }\n }}\n className=\"peer absolute inset-0 z-10 cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n />\n );\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n appearance === \"segmented\"\n ? \"relative inline-flex items-center rounded-md px-3 py-1.5 text-sm font-medium text-zinc-600 transition-colors duration-150 has-[:checked]:bg-zinc-900 has-[:checked]:text-white dark:text-zinc-400 dark:has-[:checked]:bg-zinc-100 dark:has-[:checked]:text-zinc-900\"\n : radioWrapperVariants({ variant: resolvedVariant }),\n appearance === \"segmented\" ? \"items-center\" : alignStart ? \"items-start\" : \"items-center\",\n disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n className,\n )}\n >\n {appearance === \"segmented\" ? (\n input\n ) : (\n <span\n className={cn(\n \"relative flex shrink-0 items-center justify-center p-2.5 -m-2.5\",\n alignStart ? \"-mt-[3px]\" : undefined,\n )}\n >\n {input}\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 rounded-full bg-zinc-900/0 transition-colors duration-200 group-hover:bg-zinc-900/[0.08] group-active:bg-zinc-900/[0.12] peer-disabled:group-hover:bg-transparent dark:group-hover:bg-white/[0.08] dark:group-active:bg-white/[0.12]\"\n />\n <span className={radioControlVariants({ size })}>\n <span className=\"radio-dot scale-0 rounded-full bg-zinc-900 opacity-0 transition-all duration-200 dark:bg-zinc-100\" />\n </span>\n </span>\n )}\n {(label || description) && (\n <span\n className={cn(\n \"flex min-w-0 flex-col\",\n appearance === \"segmented\" ? \"gap-0\" : \"flex-1 gap-0.5\",\n )}\n >\n {label && (\n <span\n className={cn(\n appearance === \"segmented\"\n ? \"leading-none\"\n : cn(\n \"text-sm leading-snug text-zinc-800 dark:text-zinc-100\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n size === \"lg\" && \"text-base\",\n ),\n )}\n >\n {label}\n </span>\n )}\n {description && (\n <span className=\"text-xs leading-relaxed text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n },\n);\nRadio.displayName = \"Radio\";\n\nexport { Radio, RadioGroup, radioControlVariants };\n","import React from \"react\";\n\nconst SkeletonBar = ({ className }: { className?: string }) => (\n <div className={`animate-pulse rounded bg-zinc-200 dark:bg-zinc-800 ${className}`} />\n);\n\nexport function AccordionSkeletonPlus({ count = 3 }: { count?: number }) {\n return (\n <div className=\"w-full\">\n {Array.from({ length: count }).map((_, i) => (\n <div key={i} className=\"flex items-center gap-3 py-4 border-b border-zinc-100 dark:border-zinc-800 last:border-0\">\n <SkeletonBar className=\"h-5 w-5 rounded-full shrink-0\" />\n <SkeletonBar className=\"h-4 w-2/3\" />\n </div>\n ))}\n </div>\n );\n}\n\nexport function AccordionSkeletonChevron({ count = 3 }: { count?: number }) {\n return (\n <div className=\"w-full\">\n {Array.from({ length: count }).map((_, i) => (\n <div key={i} className=\"flex items-center justify-between py-5 border-b border-zinc-100 dark:border-zinc-800 last:border-0\">\n <SkeletonBar className=\"h-4 w-1/2\" />\n <SkeletonBar className=\"h-4 w-4 rounded-sm shrink-0\" />\n </div>\n ))}\n </div>\n );\n}\n\nexport function CardSkeletonGrid({ count = 3 }: { count?: number }) {\n return (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 w-full\">\n {Array.from({ length: count }).map((_, i) => (\n <div key={i} className=\"flex flex-col gap-3\">\n <SkeletonBar className=\"aspect-video w-full rounded-md\" />\n <SkeletonBar className=\"h-4 w-full\" />\n <SkeletonBar className=\"h-4 w-[60%]\" />\n </div>\n ))}\n </div>\n );\n}\n\nexport function ListSkeleton({ count = 3 }: { count?: number }) {\n return (\n <div className=\"w-full space-y-4\">\n {Array.from({ length: count }).map((_, i) => (\n <div key={i} className=\"flex flex-col gap-4 p-4 border border-zinc-100 dark:border-zinc-800 rounded-lg bg-white dark:bg-zinc-900/50\">\n <div className=\"flex items-center gap-3\">\n <SkeletonBar className=\"h-10 w-10 rounded-full shrink-0\" />\n <div className=\"flex flex-col gap-2\">\n <SkeletonBar className=\"h-3 w-24\" />\n <SkeletonBar className=\"h-3 w-40\" />\n </div>\n </div>\n <div className=\"flex flex-col gap-2 mt-1\">\n <SkeletonBar className=\"h-3 w-full\" />\n <SkeletonBar className=\"h-3 w-[92%]\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport function TableSkeleton({ count = 5 }: { count?: number }) {\n return (\n <div className=\"w-full overflow-hidden rounded-lg border border-zinc-100 dark:border-zinc-800\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm text-left\">\n <thead className=\"bg-zinc-50/50 dark:bg-zinc-900/50 border-b border-zinc-100 dark:border-zinc-800 text-zinc-500\">\n <tr>\n <th className=\"px-4 py-3 font-medium\">Id</th>\n <th className=\"px-4 py-3 font-medium\">Image</th>\n <th className=\"px-4 py-3 font-medium\">Name</th>\n <th className=\"px-4 py-3 font-medium\">Category</th>\n <th className=\"px-4 py-3 font-medium\">Price</th>\n <th className=\"px-4 py-3 font-medium\">Stock</th>\n <th className=\"px-4 py-3 font-medium\">Description</th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-zinc-100 dark:divide-zinc-800\">\n {Array.from({ length: count }).map((_, i) => (\n <tr key={i}>\n <td className=\"px-4 py-4\"><SkeletonBar className=\"h-4 w-8\" /></td>\n <td className=\"px-4 py-4\"><SkeletonBar className=\"h-8 w-12 rounded\" /></td>\n <td className=\"px-4 py-4\"><SkeletonBar className=\"h-4 w-24\" /></td>\n <td className=\"px-4 py-4\"><SkeletonBar className=\"h-4 w-20\" /></td>\n <td className=\"px-4 py-4\"><SkeletonBar className=\"h-4 w-12\" /></td>\n <td className=\"px-4 py-4\"><SkeletonBar className=\"h-4 w-12\" /></td>\n <td className=\"px-4 py-4\"><SkeletonBar className=\"h-4 w-48\" /></td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}","\"use client\";\n\nimport React from \"react\";\nimport { motion } from \"framer-motion\";\nimport { Check, ChevronRight, HelpCircle } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface Step {\n title: string;\n description?: string;\n icon?: React.ElementType;\n}\n\ninterface StepperProps {\n steps: Step[];\n currentStep: number;\n onStepClick?: (step: number) => void;\n className?: string;\n}\n\ntype StepTone = \"done\" | \"current\" | \"upcoming\";\n\nfunction getTone(i: number, currentStep: number): StepTone {\n if (i < currentStep) return \"done\";\n if (i === currentStep) return \"current\";\n return \"upcoming\";\n}\n\nconst NODE_TONE: Record<StepTone, string> = {\n done: \"border-zinc-900 bg-zinc-900 text-white dark:bg-white dark:text-zinc-900 dark:border-white\",\n current:\n \"border-zinc-900 bg-zinc-900 text-white dark:border-white dark:bg-white dark:text-zinc-900\",\n upcoming:\n \"border-zinc-200 bg-white text-zinc-400 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-600\",\n};\n\nconst TEXT_TONE: Record<StepTone, string> = {\n done: \"text-zinc-900 dark:text-zinc-100\",\n current: \"text-zinc-900 dark:text-white\",\n upcoming: \"text-zinc-400 dark:text-zinc-600\",\n};\n\nexport function HorizontalStepper({ steps, currentStep, className }: StepperProps) {\n return (\n <nav aria-label=\"Progress\" className={cn(\"flex w-full items-start pb-8\", className)}>\n {steps.map((step, i) => {\n const tone = getTone(i, currentStep);\n return (\n <React.Fragment key={i}>\n <div className=\"relative flex flex-col items-center\">\n <div\n aria-current={tone === \"current\" ? \"step\" : undefined}\n className={cn(\n \"z-10 flex h-10 w-10 items-center justify-center rounded-full border-2 text-sm font-bold shadow-sm transition-all duration-300\",\n NODE_TONE[tone],\n )}\n >\n {tone === \"done\" ? <Check size={18} strokeWidth={3} /> : <span>{i + 1}</span>}\n </div>\n <div className=\"absolute top-12 w-24 text-center\">\n <span className={cn(\"text-[10px] font-black uppercase tracking-tighter transition-colors duration-300\", TEXT_TONE[tone])}>\n {step.title}\n </span>\n </div>\n </div>\n {i < steps.length - 1 && (\n <div className=\"relative mx-2 mt-5 h-0.5 flex-1 shrink-0 rounded-full bg-zinc-100 dark:bg-zinc-800\">\n <motion.div\n initial={false}\n animate={{ width: i < currentStep ? \"100%\" : \"0%\" }}\n className=\"absolute h-full rounded-full bg-zinc-900 dark:bg-white\"\n transition={{ duration: 0.5, ease: \"easeInOut\" }}\n />\n </div>\n )}\n </React.Fragment>\n );\n })}\n </nav>\n );\n}\n\nexport function VerticalStepper({ steps, currentStep, className }: StepperProps) {\n return (\n <nav aria-label=\"Progress\" className={cn(\"space-y-0\", className)}>\n {steps.map((step, i) => {\n const tone = getTone(i, currentStep);\n return (\n <div key={i} className=\"relative pl-10 pb-10 last:pb-0\">\n {i < steps.length - 1 && (\n <div className=\"absolute left-[15px] top-8 bottom-0 w-0.5 rounded-full bg-zinc-100 dark:bg-zinc-800\">\n <motion.div\n initial={false}\n animate={{ height: i < currentStep ? \"100%\" : \"0%\" }}\n className=\"w-full rounded-full bg-zinc-900 dark:bg-white\"\n transition={{ duration: 0.4 }}\n />\n </div>\n )}\n <motion.div\n aria-current={tone === \"current\" ? \"step\" : undefined}\n animate={{ scale: tone === \"current\" ? 1.15 : 1 }}\n className={cn(\n \"absolute left-0 top-0 z-10 flex h-8 w-8 items-center justify-center rounded-full border-2 transition-all duration-300\",\n tone === \"done\" || tone === \"current\"\n ? \"border-zinc-900 bg-zinc-900 dark:border-white dark:bg-white\"\n : \"border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-950\",\n )}\n >\n {tone === \"done\" ? (\n <Check size={14} strokeWidth={3} className=\"text-white dark:text-zinc-900\" />\n ) : (\n <div className={cn(\"h-1.5 w-1.5 rounded-full\", tone === \"current\" ? \"bg-white dark:bg-zinc-900\" : \"bg-zinc-300 dark:bg-zinc-700\")} />\n )}\n </motion.div>\n <div className=\"flex flex-col\">\n <h6 className={cn(\"text-sm font-bold tracking-tight transition-colors duration-300\", TEXT_TONE[tone])}>\n {step.title}\n </h6>\n <p className=\"mt-1 text-xs leading-tight text-zinc-500 dark:text-zinc-400\">{step.description}</p>\n </div>\n </div>\n );\n })}\n </nav>\n );\n}\n\nexport function ProgressStepper({ steps, currentStep }: StepperProps) {\n const progress = ((currentStep + 1) / steps.length) * 100;\n return (\n <div className=\"w-full space-y-4\">\n <div className=\"flex items-end justify-between\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"text-lg font-black tracking-tighter text-zinc-900 dark:text-white\">\n {Math.round(progress)}%\n </span>\n </div>\n <div className=\"flex gap-1\">\n {steps.map((_, i) => (\n <motion.div\n key={i}\n animate={{ opacity: i <= currentStep ? 1 : 0.2 }}\n className=\"h-1 w-4 rounded-full bg-zinc-900 dark:bg-white\"\n />\n ))}\n </div>\n </div>\n <div className=\"h-3 w-full overflow-hidden rounded-full bg-zinc-100 p-1 dark:bg-zinc-800\">\n <motion.div\n initial={false}\n animate={{ width: `${progress}%` }}\n className=\"h-full rounded-full bg-zinc-900 dark:bg-white\"\n transition={{ type: \"spring\", bounce: 0, duration: 0.8 }}\n />\n </div>\n </div>\n );\n}\nexport function DotStepper({ steps, currentStep }: StepperProps) {\n return (\n <div className=\"flex items-center gap-3 rounded-full border border-zinc-200 bg-white p-4 dark:border-zinc-800 dark:bg-zinc-950\">\n {steps.map((_, i) => {\n const tone = getTone(i, currentStep);\n return (\n <motion.div\n key={i}\n animate={{ width: tone === \"current\" ? 40 : 12 }}\n className={cn(\n \"h-3 rounded-full transition-colors duration-300\",\n tone === \"done\" || tone === \"current\" ? \"bg-zinc-900 dark:bg-white\" : \"bg-zinc-200 dark:bg-zinc-800\",\n )}\n transition={{ type: \"spring\", stiffness: 300, damping: 20 }}\n />\n );\n })}\n </div>\n );\n}\n\nexport function SegmentedStepper({ steps, currentStep }: StepperProps) {\n return (\n <div className=\"flex w-full gap-1\">\n {steps.map((_, i) => (\n <div key={i} className=\"h-2 flex-1 overflow-hidden rounded-sm bg-zinc-100 dark:bg-zinc-800\">\n <motion.div\n initial={false}\n animate={{ x: i <= currentStep ? \"0%\" : \"-100%\" }}\n className=\"h-full bg-zinc-900 dark:bg-white\"\n transition={{ duration: 0.6 }}\n />\n </div>\n ))}\n </div>\n );\n}\n\nexport function BreadcrumbStepper({ steps, currentStep }: StepperProps) {\n return (\n <nav aria-label=\"Progress\" className=\"w-full\">\n <div className=\"flex w-full items-center gap-2\">\n {steps.map((step, i) => {\n const tone = getTone(i, currentStep);\n\n return (\n <div\n key={i}\n className=\"flex min-w-0 flex-1 items-center gap-2\"\n >\n <motion.div\n animate={{\n opacity: tone === \"upcoming\" ? 0.45 : 1,\n scale: tone === \"current\" ? 1 : 0.98,\n }}\n transition={{ duration: 0.25 }}\n className={cn(\n \"flex min-w-0 flex-1 items-center justify-center rounded-full px-2 py-2 text-[9px] font-bold uppercase tracking-wide transition-all duration-300\",\n tone === \"current\" &&\n \"bg-zinc-900 text-white shadow-sm dark:bg-white dark:text-zinc-900\",\n tone === \"done\" &&\n \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\n tone === \"upcoming\" &&\n \"text-zinc-400 dark:text-zinc-600\",\n )}\n >\n <span className=\"whitespace-nowrap\">{step.title}</span>\n </motion.div>\n\n {i < steps.length - 1 && (\n <span\n aria-hidden=\"true\"\n className=\"h-px w-4 shrink-0 bg-zinc-200 dark:bg-zinc-800\"\n />\n )}\n </div>\n );\n })}\n </div>\n </nav>\n );\n}\n\nexport function TimelineStepper({ steps, currentStep }: StepperProps) {\n return (\n <nav aria-label=\"Progress\" className=\"space-y-12\">\n {steps.map((step, i) => {\n const tone = getTone(i, currentStep);\n return (\n <div key={i} className=\"relative flex gap-8\">\n {i < steps.length - 1 && (\n <div className={cn(\"absolute left-5 top-10 -bottom-12 w-0.5 transition-colors duration-1000\", i < currentStep ? \"bg-zinc-900 dark:bg-white\" : \"bg-zinc-100 dark:bg-zinc-800\")} />\n )}\n <motion.div\n animate={{ scale: tone === \"current\" ? 1.2 : 1 }}\n className={cn(\n \"z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full border-4 border-white shadow-xl ring-2 transition-all duration-300 dark:border-zinc-950\",\n tone === \"done\" || tone === \"current\"\n ? \"bg-zinc-900 ring-zinc-900 dark:bg-white dark:ring-white\"\n : \"bg-white ring-zinc-200 dark:bg-zinc-950 dark:ring-zinc-800\",\n )}\n >\n {tone === \"done\" ? (\n <Check size={16} strokeWidth={3} className=\"text-white dark:text-zinc-900\" />\n ) : (\n <span className={cn(\"text-xs font-bold\", tone === \"current\" ? \"text-white dark:text-zinc-900\" : \"text-zinc-400\")}>{i + 1}</span>\n )}\n </motion.div>\n <div className={cn(\"transition-all duration-500\", tone === \"upcoming\" ? \"translate-x-4 opacity-20\" : \"translate-x-0 opacity-100\")}>\n <h3 className=\"text-sm font-black uppercase tracking-tighter text-zinc-900 dark:text-white\">{step.title}</h3>\n <p className=\"mt-1 text-xs text-zinc-500 dark:text-zinc-400\">{step.description}</p>\n </div>\n </div>\n );\n })}\n </nav>\n );\n}\n\nexport function InteractiveStepper({ steps, currentStep, onStepClick }: StepperProps) {\n return (\n <div className=\"flex flex-wrap gap-4\">\n {steps.map((step, i) => {\n const tone = getTone(i, currentStep);\n return (\n <button\n key={i}\n onClick={() => onStepClick?.(i)}\n className={cn(\n \"group relative flex min-w-44 flex-1 flex-col gap-2 rounded-2xl border-2 p-6 text-left transition-all duration-300\",\n tone === \"current\"\n ? \"border-zinc-900 bg-zinc-900 text-white dark:border-white dark:bg-white dark:text-zinc-900\"\n : \"border-zinc-100 hover:border-zinc-900 dark:border-zinc-800 dark:hover:border-white\",\n )}\n >\n <span className={cn(\"text-[10px] font-bold uppercase tracking-widest\", tone === \"current\" ? \"text-zinc-400\" : \"text-zinc-400 group-hover:text-zinc-900 dark:group-hover:text-zinc-200\")}>\n Phase 0{i + 1}\n </span>\n <span className=\"text-sm font-black\">{step.title}</span>\n {tone === \"done\" && (\n <motion.div layoutId=\"inter-check\" className=\"absolute -right-2 -top-2 rounded-full bg-zinc-900 p-1 text-white shadow-lg dark:bg-white dark:text-zinc-900\">\n <Check size={14} strokeWidth={3} />\n </motion.div>\n )}\n </button>\n );\n })}\n </div>\n );\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst switchTrackVariants = cva(\n [\n \"relative inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-900/20 focus-visible:ring-offset-2 focus-visible:ring-offset-white\",\n \"dark:focus-visible:ring-zinc-100/20 dark:focus-visible:ring-offset-zinc-950\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-zinc-900 data-[state=unchecked]:bg-zinc-200\",\n \"dark:data-[state=checked]:bg-zinc-100 dark:data-[state=unchecked]:bg-zinc-700\",\n \"hover:data-[state=unchecked]:bg-zinc-300 dark:hover:data-[state=unchecked]:bg-zinc-600\",\n \"hover:data-[state=checked]:bg-zinc-800 dark:hover:data-[state=checked]:bg-zinc-200\",\n ],\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-6 w-11\",\n lg: \"h-7 w-[3.25rem]\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nconst switchThumbVariants = cva(\n \"pointer-events-none absolute left-0.5 top-1/2 block -translate-y-1/2 rounded-full bg-white shadow-sm transition-transform duration-200 dark:bg-zinc-950\",\n {\n variants: {\n size: {\n sm: \"h-3.5 w-3.5 data-[state=checked]:translate-x-4\",\n md: \"h-4 w-4 data-[state=checked]:translate-x-5\",\n lg: \"h-5 w-5 data-[state=checked]:translate-x-6\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport interface SwitchProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\" | \"size\">,\n VariantProps<typeof switchTrackVariants> {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n label?: string;\n description?: string;\n}\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n className,\n size,\n checked,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n label,\n description,\n id,\n onClick,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const switchId = id ?? generatedId;\n const isControlled = checked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState(defaultChecked);\n const isChecked = isControlled ? checked : uncontrolledChecked;\n const state = isChecked ? \"checked\" : \"unchecked\";\n\n const toggle = () => {\n if (disabled) return;\n const next = !isChecked;\n if (!isControlled) setUncontrolledChecked(next);\n onCheckedChange?.(next);\n };\n\n const switchControl = (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={isChecked}\n aria-labelledby={label ? `${switchId}-label` : undefined}\n aria-describedby={description ? `${switchId}-description` : undefined}\n disabled={disabled}\n data-state={state}\n className={cn(switchTrackVariants({ size }), className)}\n onClick={(event) => {\n toggle();\n onClick?.(event);\n }}\n onKeyDown={(event) => {\n if (event.key === \" \") {\n event.preventDefault();\n toggle();\n }\n }}\n {...props}\n >\n <span data-state={state} className={switchThumbVariants({ size })} />\n </button>\n );\n\n if (!label && !description) {\n return switchControl;\n }\n\n return (\n <div\n className={cn(\n \"flex items-start justify-between gap-4\",\n disabled && \"opacity-60\",\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n {label && (\n <label\n id={`${switchId}-label`}\n htmlFor={switchId}\n className={cn(\n \"text-sm font-medium leading-snug text-zinc-800 dark:text-zinc-100\",\n !disabled && \"cursor-pointer\",\n )}\n >\n {label}\n </label>\n )}\n {description && (\n <p\n id={`${switchId}-description`}\n className=\"text-xs leading-relaxed text-zinc-500 dark:text-zinc-400\"\n >\n {description}\n </p>\n )}\n </div>\n {switchControl}\n </div>\n );\n },\n);\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchTrackVariants, switchThumbVariants };\n","\"use client\";\n\nimport React, { createContext, useContext, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\ntype TabsContextType = {\n activeTab: string;\n setActiveTab: (value: string) => void;\n variant: string;\n uid: string;\n};\n\nconst TabsContext = createContext<TabsContextType | null>(null);\n\nfunction useTabs() {\n const context = useContext(TabsContext);\n if (!context) return { activeTab: \"\", setActiveTab: () => {}, variant: \"\", uid: \"\" };\n return context;\n}\n\nexport function Tabs({\n children,\n defaultValue,\n variant = \"underline\",\n className\n}: {\n children: React.ReactNode;\n defaultValue: string;\n variant?: \"underline\" | \"pill\" | \"segmented\" | \"bordered\" | \"filled\" | \"icon\" | \"vertical\" | \"floating\" | \"scrollable\" | \"card\";\n className?: string;\n}) {\n const [activeTab, setActiveTab] = useState(defaultValue);\n const uid = React.useId();\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab, variant, uid }}>\n <div className={cn(variant === \"vertical\" ? \"flex gap-8\" : \"flex flex-col gap-4\", className)}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport function TabsList({ children, className }: { children: React.ReactNode; className?: string }) {\n const { variant } = useTabs();\n\n const variantStyles: Record<string, string> = {\n underline: \"flex min-w-0 gap-4 overflow-x-auto border-b border-zinc-200 dark:border-zinc-800 sm:gap-8 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n pill: \"flex min-w-0 flex-wrap gap-2\",\n segmented: \"inline-flex max-w-full flex-wrap p-1 bg-zinc-100 dark:bg-zinc-900 rounded-xl gap-1\",\n bordered: \"flex min-w-0 flex-wrap gap-3\",\n filled: \"flex min-w-0 flex-wrap gap-1 bg-zinc-50 dark:bg-zinc-900/50 p-1.5 rounded-lg\",\n icon: \"flex min-w-0 flex-wrap gap-6 sm:gap-10\",\n vertical: \"flex flex-col border-l border-zinc-100 dark:border-zinc-800\",\n floating: \"inline-flex max-w-full flex-wrap bg-white dark:bg-zinc-950 shadow-xl border border-zinc-100 dark:border-zinc-800 p-2 rounded-2xl gap-2\",\n scrollable: \"flex min-w-0 gap-6 overflow-x-auto pb-2 docs-scrollbar whitespace-nowrap\",\n card: \"flex min-w-0 gap-1 overflow-x-auto border-b border-zinc-100 dark:border-zinc-800 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n };\n\n return (\n <div\n role=\"tablist\"\n aria-orientation={variant === \"vertical\" ? \"vertical\" : \"horizontal\"}\n className={cn(variantStyles[variant], className)}\n >\n {children}\n </div>\n );\n}\n\nexport function TabsTrigger({ \n value, \n label, \n icon: Icon, \n badge,\n className \n}: { \n value: string; \n label: string; \n icon?: any; \n badge?: string | number;\n className?: string;\n}) {\n const { activeTab, setActiveTab, variant, uid } = useTabs();\n const isActive = activeTab === value;\n\n const triggerStyles: Record<string, string> = {\n underline: cn(\n \"relative pb-3 text-sm font-medium transition-all\",\n isActive ? \"text-zinc-900 dark:text-white\" : \"text-zinc-500 hover:text-zinc-900 dark:hover:text-zinc-100\"\n ),\n pill: cn(\n \"px-4 py-2 rounded-full text-sm font-semibold transition-all\",\n isActive ? \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900 shadow-lg\" : \"bg-white dark:bg-zinc-900 text-zinc-600 border border-zinc-100 dark:border-zinc-800 hover:bg-zinc-50\"\n ),\n segmented: cn(\n \"px-6 py-1.5 rounded-lg text-xs font-bold transition-all\",\n isActive ? \"bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white shadow-sm\" : \"text-zinc-500 hover:text-zinc-700\"\n ),\n bordered: cn(\n \"px-4 py-2 rounded-lg border-2 text-sm font-bold transition-all\",\n isActive ? \"border-zinc-900 text-zinc-900 dark:border-white dark:text-white\" : \"border-transparent text-zinc-400 hover:border-zinc-200\"\n ),\n filled: cn(\n \"px-4 py-2 rounded-md text-sm font-medium transition-all\",\n isActive ? \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\" : \"text-zinc-500 hover:text-zinc-800 dark:hover:text-zinc-200\"\n ),\n card: cn(\n \"relative shrink-0 px-4 py-2.5 text-sm font-medium transition-all\",\n isActive ? \"text-zinc-900 dark:text-white\" : \"text-zinc-500 hover:text-zinc-800 dark:hover:text-zinc-200\"\n ),\n icon: cn(\n \"flex flex-col items-center gap-1.5 transition-all\",\n isActive ? \"text-zinc-900 dark:text-white\" : \"text-zinc-400 hover:text-zinc-700\"\n ),\n vertical: cn(\n \"pl-6 pr-12 py-2 text-sm font-medium border-l-2 -ml-[2px] transition-all\",\n isActive ? \"border-zinc-900 text-zinc-900 dark:border-white dark:text-white bg-zinc-50 dark:bg-zinc-900\" : \"border-transparent text-zinc-500 hover:text-zinc-800\"\n ),\n floating: cn(\n \"px-4 py-2 rounded-xl text-sm font-medium transition-all\",\n isActive ? \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\" : \"text-zinc-500 hover:bg-zinc-50\"\n )\n };\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n id={`${uid}-tab-${value}`}\n aria-selected={isActive}\n aria-controls={`${uid}-panel-${value}`}\n tabIndex={isActive ? 0 : -1}\n onClick={() => setActiveTab(value)}\n className={cn(\"shrink-0 outline-none\", triggerStyles[variant] || triggerStyles['underline'], className)}\n >\n <div className=\"flex items-center gap-2\">\n {Icon && <Icon size={variant === \"icon\" ? 20 : 16} />}\n <span>{label}</span>\n {badge && (\n <span className={cn(\"flex h-4 w-4 items-center justify-center rounded-full text-[10px] text-white\", isActive ? \"bg-zinc-800 dark:bg-zinc-700\" : \"bg-red-500\")}>\n {badge}\n </span>\n )}\n </div>\n {variant === \"underline\" && isActive && (\n <div className=\"absolute bottom-0 left-0 h-[2.5px] w-full bg-zinc-900 dark:bg-white rounded-full animate-in fade-in\" />\n )}\n </button>\n );\n}\n\nexport function TabsContent({ value, children, className }: { value: string; children: React.ReactNode; className?: string }) {\n const { activeTab, uid } = useTabs();\n if (activeTab !== value) return null;\n return (\n <div\n role=\"tabpanel\"\n id={`${uid}-panel-${value}`}\n aria-labelledby={`${uid}-tab-${value}`}\n tabIndex={0}\n className={cn(\"outline-none animate-in fade-in slide-in-from-bottom-2 duration-300\", className)}\n >\n {children}\n </div>\n );\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/cn\";\n\nconst tooltipVariants = cva(\n [\n \"pointer-events-none fixed z-50 max-w-[260px] rounded-lg px-3 py-2\",\n \"text-[13px] font-medium leading-normal tracking-tight\",\n \"bg-zinc-900 text-zinc-50\",\n \"shadow-[0_4px_16px_rgba(0,0,0,0.14),0_0_0_1px_rgba(255,255,255,0.06)]\",\n \"dark:bg-zinc-100 dark:text-zinc-900\",\n \"dark:shadow-[0_4px_16px_rgba(0,0,0,0.35),0_0_0_1px_rgba(0,0,0,0.06)]\",\n \"transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]\",\n \"will-change-[opacity,transform]\",\n ],\n {\n variants: {\n visible: {\n true: \"opacity-100 scale-100\",\n false: \"opacity-0 scale-[0.97]\",\n },\n side: {\n top: \"origin-bottom\",\n bottom: \"origin-top\",\n left: \"origin-right\",\n right: \"origin-left\",\n },\n },\n defaultVariants: { visible: false, side: \"top\" },\n },\n);\n\ntype TooltipSide = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype TooltipAlign = \"start\" | \"center\" | \"end\";\n\nconst VIEWPORT_PADDING = 10;\nconst ARROW_SIZE = 6;\n\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: TooltipSide;\n align?: TooltipAlign;\n sideOffset?: number;\n delayDuration?: number;\n disabled?: boolean;\n className?: string;\n}\n\nfunction getTooltipPosition(\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n side: TooltipSide,\n align: TooltipAlign,\n sideOffset: number,\n) {\n const offset = sideOffset + ARROW_SIZE;\n let top = 0;\n let left = 0;\n\n if (side === \"top\") {\n top = triggerRect.top - tooltipRect.height - offset;\n left = alignTooltipHorizontal(triggerRect, tooltipRect, align);\n } else if (side === \"bottom\") {\n top = triggerRect.bottom + offset;\n left = alignTooltipHorizontal(triggerRect, tooltipRect, align);\n } else if (side === \"left\") {\n top = alignTooltipVertical(triggerRect, tooltipRect, align);\n left = triggerRect.left - tooltipRect.width - offset;\n } else {\n top = alignTooltipVertical(triggerRect, tooltipRect, align);\n left = triggerRect.right + offset;\n }\n\n const maxLeft = window.innerWidth - tooltipRect.width - VIEWPORT_PADDING;\n const maxTop = window.innerHeight - tooltipRect.height - VIEWPORT_PADDING;\n\n return {\n top: Math.min(Math.max(top, VIEWPORT_PADDING), maxTop),\n left: Math.min(Math.max(left, VIEWPORT_PADDING), maxLeft),\n };\n}\n\nfunction alignTooltipHorizontal(\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n align: TooltipAlign,\n) {\n if (align === \"start\") return triggerRect.left;\n if (align === \"end\") return triggerRect.right - tooltipRect.width;\n return triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n}\n\nfunction alignTooltipVertical(\n triggerRect: DOMRect,\n tooltipRect: DOMRect,\n align: TooltipAlign,\n) {\n if (align === \"start\") return triggerRect.top;\n if (align === \"end\") return triggerRect.bottom - tooltipRect.height;\n return triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n}\n\nfunction TooltipArrow({ side }: { side: TooltipSide }) {\n const position = {\n top: \"bottom-0 left-1/2 -translate-x-1/2 translate-y-[calc(100%-1px)]\",\n bottom: \"top-0 left-1/2 -translate-x-1/2 -translate-y-[calc(100%-1px)] rotate-180\",\n left: \"right-0 top-1/2 -translate-y-1/2 translate-x-[calc(100%-1px)] -rotate-90\",\n right: \"left-0 top-1/2 -translate-y-1/2 -translate-x-[calc(100%-1px)] rotate-90\",\n }[side];\n\n return (\n <svg\n aria-hidden\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n className={cn(\n \"absolute text-zinc-900 dark:text-zinc-100\",\n position,\n )}\n >\n <path fill=\"currentColor\" d=\"M0 0h10L5 5 0 0z\" />\n </svg>\n );\n}\n\nfunction Tooltip({\n content,\n children,\n side = \"top\",\n align = \"center\",\n sideOffset = 8,\n delayDuration = 250,\n disabled = false,\n className,\n}: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n const [visible, setVisible] = React.useState(false);\n const [mounted, setMounted] = React.useState(false);\n const [position, setPosition] = React.useState({ top: -9999, left: -9999 });\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLSpanElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n const id = React.useId();\n\n React.useEffect(() => setMounted(true), []);\n\n const clearTimer = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n\n const updatePosition = React.useCallback(() => {\n const trigger = triggerRef.current;\n const tooltip = tooltipRef.current;\n if (!trigger || !tooltip) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const tooltipRect = tooltip.getBoundingClientRect();\n setPosition(getTooltipPosition(triggerRect, tooltipRect, side, align, sideOffset));\n requestAnimationFrame(() => setVisible(true));\n }, [side, align, sideOffset]);\n\n const show = () => {\n if (disabled) return;\n clearTimer();\n timeoutRef.current = setTimeout(() => {\n setVisible(false);\n setOpen(true);\n }, delayDuration);\n };\n\n const hide = () => {\n clearTimer();\n setVisible(false);\n setOpen(false);\n };\n\n React.useEffect(() => clearTimer, []);\n\n React.useLayoutEffect(() => {\n if (!open) return;\n updatePosition();\n const handleUpdate = () => updatePosition();\n window.addEventListener(\"scroll\", handleUpdate, true);\n window.addEventListener(\"resize\", handleUpdate);\n return () => {\n window.removeEventListener(\"scroll\", handleUpdate, true);\n window.removeEventListener(\"resize\", handleUpdate);\n };\n }, [open, updatePosition, content]);\n\n const child = React.Children.only(children);\n const trigger = React.isValidElement(child)\n ? React.cloneElement(\n child as React.ReactElement<{ \"aria-describedby\"?: string }>,\n { \"aria-describedby\": open && visible ? id : undefined },\n )\n : children;\n\n const tooltipNode = open ? (\n <div\n ref={tooltipRef}\n id={id}\n role=\"tooltip\"\n aria-hidden={!visible}\n style={{ top: position.top, left: position.left }}\n className={cn(tooltipVariants({ visible, side }), className)}\n >\n {content}\n <TooltipArrow side={side} />\n </div>\n ) : null;\n\n return (\n <>\n <span\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {trigger}\n </span>\n {mounted && tooltipNode ? createPortal(tooltipNode, document.body) : null}\n </>\n );\n}\n\nexport { Tooltip, tooltipVariants };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAgB,eAAe,YAAY,UAAU,QAAQ,iBAAiB,aAAa;AAC3F,SAAS,MAAM,aAAa,oBAAoB;;;ACHhD,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,IAAM,KAAK,IAAI,WAAyB,QAAQ,KAAK,MAAM,CAAC;;;ADwB7D,cAoBE,YApBF;AAhBN,IAAM,mBAAmB,cAA2C,IAAI;AAExE,SAAS,sBAAsB;AAC7B,QAAM,MAAM,WAAW,gBAAgB;AACvC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,oDAAoD;AAC9E,SAAO;AACT;AAEA,IAAM,OAAO,EAAE,0BAA0B,6BAA6B;AAE/D,SAAS,UAAU,EAAE,UAAU,eAAe,MAAM,YAAY,GAAG,GAAoF;AAC5J,QAAM,CAAC,WAAW,YAAY,IAAI,SAAwB,YAAY;AACtE,QAAM,SAAS,CAAC,UAAkB,aAAa,CAAC,YAAa,YAAY,QAAQ,OAAO,KAAM;AAE9F,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,EAAE,WAAW,OAAO,GACpD,8BAAC,SAAI,WAAuB,UAAS,GACvC;AAEJ;AAEO,SAAS,cAAc,EAAE,OAAO,OAAO,UAAU,UAAU,OAAO,GAA8F;AACrK,QAAM,EAAE,WAAW,OAAO,IAAI,oBAAoB;AAClD,QAAM,SAAS,cAAc;AAC7B,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,CAAC;AACtC,QAAM,UAAU,MAAM;AAEtB,kBAAgB,MAAM;AACpB,QAAI,CAAC,WAAW,QAAS;AACzB,cAAU,SAAS,WAAW,QAAQ,eAAe,CAAC;AAAA,EACxD,GAAG,CAAC,MAAM,CAAC;AAEX,MAAI,YAAY,WAAW;AACzB,WACE,qBAAC,SAAI,WAAU,+DACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM,OAAO,KAAK;AAAA,UAC3B,iBAAe;AAAA,UACf,iBAAe;AAAA,UACf,WAAU;AAAA,UAEV;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,SACI,kCACA;AAAA,gBACN;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM;AAAA,gBACN,OAAO;AAAA,gBACP,WAAW;AAAA,kBACT;AAAA,kBACA,UAAU;AAAA,gBACZ;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA,MACA,oBAAC,SAAI,OAAO,iCAAK,OAAL,EAAW,OAAO,IAAG,WAAU,oDACzC,8BAAC,SAAI,IAAI,SAAS,KAAK,YAAY,WAAU,iEAC1C,UACH,GACF;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,qBAAC,SAAI,WAAU,+DACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,MAAM,OAAO,KAAK;AAAA,QAC3B,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,WAAU;AAAA,QAEV;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,cACP,WAAW;AAAA,gBACT;AAAA,gBACA,SACI,8GACA;AAAA,cACN;AAAA,cAEA,8BAAC,QAAK,MAAM,IAAI,OAAO,MAAM,WAAW,GAAG,qCAAqC,UAAU,WAAW,GAAG;AAAA;AAAA,UAC1G;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,SACI,qCACA;AAAA,cACN;AAAA,cAEC;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACF;AAAA,IACA,oBAAC,SAAI,OAAO,iCAAK,OAAL,EAAW,OAAO,IAAG,WAAU,oDACzC,8BAAC,SAAI,IAAI,SAAS,KAAK,YAAY,WAAU,sEAC1C,UACH,GACF;AAAA,KACF;AAEJ;AAEO,SAAS,gBAAgB,EAAE,OAAO,UAAU,QAAQ,EAAE,GAAkE;AAC7H,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,CAAC;AACtC,QAAM,UAAU,MAAM;AAEtB,kBAAgB,MAAM;AACpB,QAAI,CAAC,WAAW,QAAS;AACzB,cAAU,SAAS,WAAW,QAAQ,eAAe,CAAC;AAAA,EACxD,GAAG,CAAC,QAAQ,QAAQ,CAAC;AAErB,SACE,qBAAC,SAAI,WAAU,+DACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,MAAM,UAAU,CAAC,MAAM;AAAA,QAChC,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,WAAU;AAAA,QACV,OAAO,EAAE,aAAa,GAAG,QAAQ,GAAG,MAAM;AAAA,QAE1C;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,OAAO;AAAA,cACP,WAAW;AAAA,gBACT;AAAA,gBACA,UAAU;AAAA,cACZ;AAAA;AAAA,UACF;AAAA,UACA,oBAAC,UAAK,WAAU,4DAA4D,iBAAM;AAAA;AAAA;AAAA,IACpF;AAAA,IACA,oBAAC,SAAI,OAAO,iCAAK,OAAL,EAAW,OAAO,IAAG,WAAU,oDACzC,8BAAC,SAAI,IAAI,SAAS,KAAK,YAAY,WAAU,iBAC1C,UACH,GACF;AAAA,KACF;AAEJ;AAEO,SAAS,cAAc,EAAE,OAAO,QAAQ,EAAE,GAAsC;AACrF,SACE,oBAAC,SAAI,WAAU,+DACb;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,aAAa,GAAG,QAAQ,MAAM,MAAM,MAAM;AAAA,MAElD;AAAA;AAAA,EACH,GACF;AAEJ;;;AE7KA,OAAOA,YAAW;AAClB,SAAS,cAAc,eAAe,MAAM,SAAS,SAAS;AAiBxD,gBAAAC,MA8CL,QAAAC,aA9CK;AANN,IAAM,QAAQC,OAAM;AAAA,EAClB,CAAC,IAA8G,QAAQ;AAAtH,iBAAE,cAAY,IAAI,UAAU,QAAQ,OAAO,aAAa,aAAa,WAAW,QAAQ,SAb3F,IAaG,IAAqG,kBAArG,IAAqG,CAAnG,aAAgB,WAAkB,SAAO,eAAa,eAAa,aAAW,UAAQ;AACvF,UAAM,UAAU;AAAA,MAClB,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,MACE,gBAAAF,KAAC,QAAK,WAAU,mCAAkC;AAAA,MAEtD;AAAA,MAEA,SAAS;AAAA,QACP,KAAK;AAAA,QACL,MACE,gBAAAA,KAAC,gBAAa,WAAU,mCAAkC;AAAA,MAE9D;AAAA,MAEA,SAAS;AAAA,QACP,KAAK;AAAA,QACL,MACE,gBAAAA,KAAC,iBAAc,WAAU,mCAAkC;AAAA,MAE/D;AAAA,MAEA,OAAO;AAAA,QACL,KAAK;AAAA,QACL,MACE,gBAAAA,KAAC,WAAQ,WAAU,mCAAkC;AAAA,MAEzD;AAAA,IACF;AAEI,UAAM,UAAU,QAAQ,OAAO;AAE/B,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACL;AAAA,QACA,WAAW,6MAA6M,SAAS;AAAA,SAC7N,QAHC;AAAA,QAKP;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,kCAAkC,QAAQ,GAAG;AAAA,cACxD,OAAO;AAAA,gBACL,UAAU;AAAA,cACZ;AAAA;AAAA,UACF;AAAA,UAGE,gBAAAA,KAAC,SAAI,WAAU,6CACZ,kBAAQ,MACX;AAAA,UAED,gBAAAC,MAAC,SAAI,WAAU,kBACb;AAAA,qBACC,gBAAAD,KAAC,QAAG,WAAU,wFACX,iBACH;AAAA,YAGD,eACC,gBAAAA,KAAC,OAAE,WAAU,iFACV,uBACH;AAAA,YAGD;AAAA,aACH;AAAA,UAEC,UACC,gBAAAA,KAAC,SAAI,WAAW,oBAAoB,eAAe,YAAY,SAAS,EAAE,IACvE,kBACH;AAAA,WAIE,eAAe,cACf,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAU;AAAA,cAEV,0BAAAA,KAAC,KAAE,WAAU,0BAAyB;AAAA;AAAA,UACxC;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEE;AACF;AAEA,MAAM,cAAc;;;AClGpB,SAAgB,YAAAG,iBAAgB;AAChC,SAAS,QAAQ,KAAK,QAAQ,aAA8B;AAU1D,gBAAAC,MAkBA,QAAAC,aAlBA;AAPF,IAAM,YACJ;AAEF,IAAM,eACJ;AAEK,IAAM,gBAAgB,CAAC,OAAsE;AAAtE,eAAE,YAZhC,IAY8B,IAAgB,kBAAhB,IAAgB,CAAd;AAC9B,yBAAAD;AAAA,IAAC;AAAA,qCACK,QADL;AAAA,MAEC,WAAW,GAAG,kEAAkE,WAAW,cAAc,SAAS;AAAA;AAAA,EACpH;AAAA;AAGK,IAAM,cAAc,CAAC,OAAsE;AAAtE,eAAE,YAnB9B,IAmB4B,IAAgB,kBAAhB,IAAgB,CAAd;AAC5B,yBAAAA;AAAA,IAAC;AAAA,qCACK,QADL;AAAA,MAEC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA;AAAA,EACF;AAAA;AAGK,IAAM,iBAAiB,CAAC,OAAsE;AAAtE,eAAE,YA9BjC,IA8B+B,IAAgB,kBAAhB,IAAgB,CAAd;AAC/B,yBAAAC,MAAC,SAAI,WAAU,kBACb;AAAA,oBAAAD;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,gBAAAA,KAAC,SAAI,WAAU,wHAAuH;AAAA,KACxI;AAAA;AAGK,IAAM,gBAAgB,CAAC,OAIyC;AAJzC,eAC5B;AAAA;AAAA,IACA;AAAA,EA9CF,IA4C8B,IAGzB,kBAHyB,IAGzB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,QAAM,CAAC,OAAO,QAAQ,IAAIE,UAAS,EAAE;AACrC,QAAM,SAAS,QAAQ,SAAS,MAAM,YAAY;AAElD,SACE,gBAAAD,MAAC,SAAI,WAAU,iBACb;AAAA,oBAAAD;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,UAAU,CAAC,MAAM;AAxDzB,cAAAG;AAyDU,mBAAS,EAAE,OAAO,KAAK;AACvB,WAAAA,MAAA,MAAM,aAAN,gBAAAA,IAAA,YAAiB;AAAA,QACnB;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,gBAAAH;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,SACI,2DACA;AAAA,QACN;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAEO,IAAM,cAAc,CAAC,OAAsE;AAAtE,eAAE,YAhF9B,IAgF4B,IAAgB,kBAAhB,IAAgB,CAAd;AAC5B,yBAAAC,MAAC,SAAI,WAAU,kBACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAU;AAAA;AAAA,IACZ;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,MAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAAA;AAGK,IAAM,gBAAgB,CAAC,OAAyE;AAAzE,eAAE,YAnGhC,IAmG8B,IAAgB,kBAAhB,IAAgB,CAAd;AAC9B,QAAM,CAAC,MAAM,OAAO,IAAIE,UAAS,KAAK;AAEtC,SACE,gBAAAD,MAAC,SAAI,WAAU,YACb;AAAA,oBAAAD;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,MAAM,OAAO,SAAS;AAAA,QACtB,WAAW,GAAG,wEAAwE,WAAW,cAAc,SAAS;AAAA;AAAA,IAC1H;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,MAAM,QAAQ,CAAC,IAAI;AAAA,QAC5B,cAAY,OAAO,kBAAkB;AAAA,QACrC,WAAU;AAAA,QAET,iBAAO,gBAAAA,KAAC,UAAO,MAAM,IAAI,IAAK,gBAAAA,KAAC,OAAI,MAAM,IAAI;AAAA;AAAA,IAChD;AAAA,KACF;AAEJ;AAEO,IAAM,aAAa,CAAC,OAK4D;AAL5D,eACzB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EA5HF,IAyH2B,IAItB,kBAJsB,IAItB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,yBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,kBACC,gBAAAD,KAAC,UAAK,WAAU,yJACb,kBACH;AAAA,QAEF,gBAAAA,KAAC,0CAAU,QAAV,EAAiB,WAAW,GAAG,qCAAqC,SAAS,IAAG;AAAA,QAChF,UACC,gBAAAA,KAAC,UAAK,WAAU,yJACb,kBACH;AAAA;AAAA;AAAA,EAEJ;AAAA;AAGK,IAAM,YAAY,CAAC,OAK0E;AAL1E,eACxB;AAAA,UAAM;AAAA,IACN,WAAW;AAAA,IACX;AAAA,EAtJF,IAmJ0B,IAIrB,kBAJqB,IAIrB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,yBAAAC,MAAC,SAAI,WAAU,YACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,aAAa,SAAS,aAAa;AAAA,QACrC;AAAA,QAEA,0BAAAA,KAAC,QAAK,MAAM,IAAI,aAAa,KAAK;AAAA;AAAA,IACpC;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,WAAW;AAAA,UACT;AAAA,UACA,aAAa,SAAS,eAAe;AAAA,UACrC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAAA;AAGK,IAAM,WAAW,MACtB,gBAAAA,KAAC,SAAI,WAAU,gBACZ,WAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACjB,gBAAAA;AAAA,EAAC;AAAA;AAAA,IAEC,WAAW;AAAA,IACX,cAAY,SAAS,CAAC;AAAA,IACtB,WAAU;AAAA;AAAA,EAHL;AAIP,CACD,GACH;AAGK,IAAM,oBAAoB,CAAC,OAI0C;AAJ1C,eAChC;AAAA;AAAA,IACA;AAAA,EA9LF,IA4LkC,IAG7B,kBAH6B,IAG7B;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,yBAAAC,MAAC,SAAI,WAAU,YACb;AAAA,oBAAAD;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,WAAW,GAAG,kEAAkE,WAAW,cAAc,SAAS;AAAA;AAAA,IACpH;AAAA,IACA,gBAAAA,KAAC,SAAI,WAAU,+IACZ,sBAAY,IAAI,CAAC,MAChB,gBAAAC;AAAA,MAAC;AAAA;AAAA,QAEC,WAAU;AAAA,QAET;AAAA;AAAA,UAAE;AAAA,UAAC,gBAAAD,KAAC,SAAM,MAAM,IAAI,WAAU,iBAAgB;AAAA;AAAA;AAAA,MAH1C;AAAA,IAIP,CACD,GACH;AAAA,KACF;AAAA;;;AC9MF,YAAYI,YAAW;AACvB,SAAS,WAA8B;AA8FjC,SAOI,OAAAC,MAPJ,QAAAC,aAAA;AA3FN,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,YAAY,MAAc;AACjC,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO;AACrD,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,MAAI,MAAM,WAAW,EAAG,QAAO,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY;AAChE,SAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY;AACnE;AAEA,SAAS,oBAAoB,MAAc;AACzC,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,WAAO,KAAK,WAAW,CAAC,MAAM,QAAQ,KAAK;AAAA,EAC7C;AACA,SAAO,iBAAiB,KAAK,IAAI,IAAI,IAAI,iBAAiB,MAAM;AAClE;AAWA,IAAM,SAAe;AAAA,EACnB,CAAC,IAA0E,QAAQ;AAAlF,iBAAE,aAAW,MAAM,SAAS,KAAK,KAAK,MAAM,QAAQ,SA1FvD,IA0FG,IAAiE,kBAAjE,IAAiE,CAA/D,aAAW,QAAM,WAAS,OAAK,OAAK,QAAM,UAAQ;AA1FvD,QAAAC;AA2FI,UAAM,CAAC,YAAY,aAAa,IAAU,gBAAS,KAAK;AACxD,UAAM,YAAY,OAAO,CAAC;AAC1B,UAAM,eAAe,OAAO,YAAY,IAAI,IAAI;AAChD,UAAM,WAAW,OAAO,oBAAoB,IAAI,IAAI;AAEpD,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,eAAe,EAAE,MAAM,QAAQ,CAAC,GAAG,SAAS;AAAA,SACtD,QAHL;AAAA,QAKE;AAAA;AAAA;AAAA,YAEC,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,MAAKE,MAAA,oBAAO,SAAP,OAAAA,MAAe;AAAA,gBACpB,WAAU;AAAA,gBACV,SAAS,MAAM,cAAc,IAAI;AAAA;AAAA,YACnC;AAAA,cAEA,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,cACF;AAAA,cAEC,gDAAgB;AAAA;AAAA,UACnB;AAAA,UAED,UACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,GAAG,eAAe,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,cAC9C,eAAW;AAAA;AAAA,UACb;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;AAOrB,SAAS,YAAY,IAMA;AANA,eACnB;AAAA;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,EA7IF,IAyIqB,IAKhB,kBALgB,IAKhB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,UAAgB,gBAAS,QAAQ,QAAQ,EAAE,OAAa,qBAAc;AAC5E,QAAM,UAAU,QAAQ,MAAM,GAAG,GAAG;AACpC,QAAM,YAAY,QAAQ,SAAS,QAAQ;AAE3C,SACE,gBAAAC,MAAC,sCAAI,WAAW,GAAG,qBAAqB,SAAS,KAAO,QAAvD,EACE;AAAA,YAAQ,IAAI,CAAC,OAAO,UACnB,gBAAAD;AAAA,MAAC;AAAA;AAAA,QAEC,WAAW;AAAA,UACT;AAAA,UACA,QAAQ,KAAK;AAAA,QACf;AAAA,QAEC;AAAA;AAAA,MANI;AAAA,IAOP,CACD;AAAA,IACA,YAAY,KACX,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,eAAe,EAAE,SAAS,WAAW,KAAK,CAAC;AAAA,UAC3C;AAAA,QACF;AAAA,QAEA,0BAAAC,MAAC,UAAK,WAAU,4EAA2E;AAAA;AAAA,UACvF;AAAA,WACJ;AAAA;AAAA,IACF;AAAA,MAEJ;AAEJ;;;AChLA,YAAYE,YAAW;AACvB,SAAS,OAAAC,YAA8B;AAwCjC,gBAAAC,YAAA;AArCN,IAAM,gBAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,MAAM;AAAA,QACN,SACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,SACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAMA,IAAM,QAAc;AAAA,EAClB,CAAC,IAAwC,QAAQ;AAAhD,iBAAE,aAAW,SAAS,KAvCzB,IAuCG,IAA+B,kBAA/B,IAA+B,CAA7B,aAAW,WAAS;AACrB,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,cAAc,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,SACrD;AAAA,IACN;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;;;ACjDpB,YAAYE,YAAW;AACvB,SAAS,OAAAC,YAA8B;AA+DjC,gBAAAC,YAAA;AA5DN,IAAM,iBAAiBC;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,WAAW,MAAM,KAAK;AAAA,EACpD;AACF;AAMO,IAAM,SAAe;AAAA,EAC1B,CAAC,IAAwC,QAAQ;AAAhD,iBAAE,aAAW,SAAS,KA9DzB,IA8DG,IAA+B,kBAA/B,IAA+B,CAA7B,aAAW,WAAS;AACrB,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,eAAe,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,SACtD;AAAA,IACN;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;;;ACxErB,YAAYE,YAAW;AACvB,SAAS,OAAAC,YAA8B;AA2BnC,gBAAAC,YAAA;AAxBJ,IAAM,eAAeC;AAAA,EACnB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,SAAS;AAAA,QACT,UACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAMA,IAAM,OAAa;AAAA,EACjB,CAAC,IAAkC,QAAK;AAAvC,iBAAE,aAAW,QA3BhB,IA2BG,IAAyB,kBAAzB,IAAyB,CAAvB,aAAW;AACZ,2BAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,aAAa,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,SAC9C;AAAA,IACN;AAAA;AAEJ;AACA,KAAK,cAAc;AAEnB,IAAM,aAAmB,kBAGvB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAxCL,IAwCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,yBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,6BAA6B,SAAS;AAAA,OAChD;AAAA,EACN;AAAA,CACD;AACD,WAAW,cAAc;AAEzB,IAAM,YAAkB,kBAGtB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YApDL,IAoDG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,yBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,qFAAqF,SAAS;AAAA,OACxG;AAAA,EACN;AAAA,CACD;AACD,UAAU,cAAc;AAExB,IAAM,kBAAwB,kBAG5B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAhEL,IAgEG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,yBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,4DAA4D,SAAS;AAAA,OAC/E;AAAA,EACN;AAAA,CACD;AACD,gBAAgB,cAAc;AAE9B,IAAM,cAAoB,kBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA5EL,IA4EG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,yBAAAA,KAAC,wBAAI,KAAU,WAAW,GAAG,kBAAkB,SAAS,KAAO,MAAO;AAAA,CACvE;AACD,YAAY,cAAc;AAE1B,IAAM,aAAmB,kBAGvB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YApFL,IAoFG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,yBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,WAAW,cAAc;;;AC9FzB,YAAYE,YAAW;AACvB,SAAS,SAAAC,cAAa;AACtB,SAAS,OAAAC,YAA8B;AAkF/B,SAME,OAAAC,MANF,QAAAC,aAAA;AA/ER,IAAM,0BAA0BC;AAAA,EAC9B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,KAAK;AAAA,EAChC;AACF;AAEA,IAAM,0BAA0BA,KAAI,oDAAoD;AAAA,EACtF,UAAU;AAAA,IACR,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,SAAS,SAAS;AACvC,CAAC;AAUD,IAAM,WAAiB;AAAA,EACrB,CACE,IAUA,QACG;AAXH,iBACE;AAAA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAhEN,IAyDI,IAQK,kBARL,IAQK;AAAA,MAPH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,cAAoB,aAAM;AAChC,UAAM,UAAU,kBAAM;AACtB,UAAM,kBAAkB,YAAY,UAAU,cAAc,SAAS;AACrE,UAAM,aAAa,oBAAoB,UAAU,QAAQ,WAAW;AAEpE,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT,wBAAwB,EAAE,SAAS,gBAAgB,CAAC;AAAA,UACpD,aAAa,gBAAgB;AAAA,UAC7B,WAAW,kCAAkC;AAAA,UAC7C;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,aAAa,WAAW;AAAA,cAC1B;AAAA,cAEA;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC;AAAA,oBACA,IAAI;AAAA,oBACJ,MAAK;AAAA,oBACL;AAAA,oBACA,WAAU;AAAA,qBACN;AAAA,gBACN;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,eAAW;AAAA,oBACX,WAAU;AAAA;AAAA,gBACZ;AAAA,gBACA,gBAAAA,KAAC,UAAK,WAAW,wBAAwB,EAAE,KAAK,CAAC,GAC/C,0BAAAA;AAAA,kBAACG;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa;AAAA;AAAA,gBACf,GACF;AAAA;AAAA;AAAA,UACF;AAAA,WACE,SAAS,gBACT,gBAAAF,MAAC,UAAK,WAAU,wCACb;AAAA,qBACC,gBAAAD,KAAC,UAAK,WAAU,yDACb,iBACH;AAAA,YAED,eACC,gBAAAA,KAAC,UAAK,WAAU,4DACb,uBACH;AAAA,aAEJ;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;;;AC7HvB,SAAS,YAAAI,iBAAgB;AACzB,SAAS,SAAAC,QAAO,YAAY;AA4BpB,gBAAAC,MAeA,QAAAC,aAfA;AAzBD,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,KAAK;AAE1C,QAAM,SAAS,YAAY;AACzB,UAAM,UAAU,UAAU,UAAU,IAAI;AACxC,cAAU,IAAI;AACd,eAAW,MAAM,UAAU,KAAK,GAAG,IAAI;AAAA,EACzC;AAEA,QAAM,aACJ,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAW;AAAA,MACX,WAAU;AAAA,MAET,mBACC,gBAAAA,KAACG,QAAA,EAAM,WAAU,0BAAyB,IAE1C,gBAAAH,KAAC,QAAK,WAAU,eAAc;AAAA;AAAA,EAElC;AAGF,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,mBACC,gBAAAA,MAAC,SAAI,WAAU,0EACb;AAAA,0BAAAD,KAAC,UAAK,WAAU,mCAAmC,oBAAS;AAAA,UAC3D;AAAA,WACH,IACE;AAAA,QACJ,gBAAAA,KAAC,SAAI,WAAW,GAAG,oFAAoF,CAAC,YAAY,OAAO,GACzH,0BAAAA,KAAC,UAAK,WAAU,aAAa,gBAAK,GACpC;AAAA,QACC,WAAW,OACV,gBAAAA,KAAC,SAAI,WAAU,0BAA0B,sBAAW;AAAA;AAAA;AAAA,EAExD;AAEJ;;;ACzDA,SAAgB,WAAAI,UAAS,YAAAC,iBAAgB;AACzC,SAAS,WAAW,SAAS,eAAAC,cAAa,UAAAC,SAAQ,UAAAC,SAAQ,KAAAC,UAAS;;;ACHnE,YAAYC,YAAW;AACvB,SAAS,OAAAC,YAA8B;AAgCnC,gBAAAC,aAAA;AA7BJ,IAAM,gBAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,OAAO;AAAA,QACL,SACE;AAAA,QACF,OACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAMA,IAAM,QAAc;AAAA,EAClB,CAAC,IAAqD,QAAK;AAA1D,iBAAE,aAAW,MAAM,OAAO,OAAO,OAhCpC,IAgCG,IAA4C,kBAA5C,IAA4C,CAA1C,aAAW,QAAM,SAAO;AACzB,2BAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAW,GAAG,cAAc,EAAE,MAAM,MAAM,CAAC,GAAG,SAAS;AAAA,SACnD;AAAA,IACN;AAAA;AAEJ;AACA,MAAM,cAAc;;;ACvCpB,YAAYE,aAAW;AACvB,SAAS,aAAa,gBAAAC,eAAc,sBAAsB;AA4GlD,SACE,OAAAC,OADF,QAAAC,aAAA;AAxGR,SAAS,YAAY,SAAiB,OAAe,cAA0C;AAC7F,QAAM,aAAa,eAAe,IAAI;AACtC,MAAI,SAAS,WAAY,QAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC;AAE7E,QAAM,OAAO,KAAK,IAAI,UAAU,cAAc,CAAC;AAC/C,QAAM,QAAQ,KAAK,IAAI,UAAU,cAAc,KAAK;AAEpD,QAAM,QAA4B,CAAC,CAAC;AACpC,MAAI,OAAO,EAAG,OAAM,KAAK,KAAK;AAC9B,WAAS,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI,OAAO,QAAQ,CAAC,GAAG,IAAK,OAAM,KAAK,CAAC;AAClF,MAAI,QAAQ,QAAQ,EAAG,OAAM,KAAK,KAAK;AACvC,MAAI,QAAQ,EAAG,OAAM,KAAK,KAAK;AAC/B,SAAO;AACT;AAYA,IAAM,gBACJ;AACF,IAAM,QAAQ;AACd,IAAM,YAAY;AAElB,IAAM,gBAAgB;AAAA,EACpB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AACR;AAEA,IAAM,cAAc;AACpB,IAAM,MAAM;AAEL,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AACF,GAAoB;AAClB,QAAM,eAAe,KAAK,IAAI,GAAG,UAAU;AAC3C,QAAM,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,YAAY;AACxD,QAAM,OAAO,CAAC,MAAc,aAAa,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC;AAE/E,QAAM,QAAc;AAAA,IAClB,MAAM,YAAY,SAAS,cAAc,YAAY;AAAA,IACrD,CAAC,SAAS,cAAc,YAAY;AAAA,EACtC;AAEA,QAAM,WAAW,KAAK,IAAI,cAAc,eAAe,IAAI,CAAC;AAC5D,QAAM,gBAAgB,WAAW,eAAe,WAAW,KAAK;AAKhE,QAAM,WAAiB,eAAuB,IAAI;AAClD,QAAM,eAAqB,eAAO,oBAAI,IAAqB,CAAC;AAE5D,EAAM,wBAAgB,MAAM;AAC1B,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AACZ,UAAM,YAAY,aAAa;AAC/B,UAAM,YAAY,oBAAI,IAAqB;AAE3C,UAAM,iBAA8B,iBAAiB,EAAE,QAAQ,CAAC,OAAO;AACrE,YAAM,MAAM,GAAG,QAAQ;AACvB,YAAM,OAAO,GAAG,sBAAsB;AACtC,gBAAU,IAAI,KAAK,IAAI;AAEvB,YAAM,OAAO,UAAU,IAAI,GAAG;AAC9B,UAAI,CAAC,KAAM;AACX,YAAM,KAAK,KAAK,OAAO,KAAK;AAC5B,UAAI,KAAK,IAAI,EAAE,IAAI,IAAK;AAExB,SAAG,MAAM,aAAa;AACtB,SAAG,MAAM,YAAY,cAAc,EAAE;AACrC,SAAG,sBAAsB;AACzB,4BAAsB,MAAM;AAC1B,WAAG,MAAM,aAAa;AACtB,WAAG,MAAM,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC;AAED,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,KAAK,CAAC;AAEV,MAAI,YAAY,UAAU;AACxB,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,cAAW;AAAA,QACX,WAAW;AAAA,UACX;AAAA,UACE,cAAc,IAAI;AAAA,UAClB;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAA,MAAC,UAAO,SAAQ,SAAQ,MAAK,MAAK,WAAW,GAAG,gBAAgB,eAAe,SAAS,GAAG,UAAU,WAAW,GAAG,SAAS,MAAM,KAAK,UAAU,CAAC,GAChJ;AAAA,4BAAAD,MAAC,eAAY,MAAM,IAAI;AAAA,YAAE;AAAA,aAE3B;AAAA,UACA,gBAAAC,MAAC,OAAE,WAAU,oFAAmF;AAAA;AAAA,YACxF;AAAA,YAAQ;AAAA,YAAK;AAAA,aACrB;AAAA,UACA,gBAAAA,MAAC,UAAO,SAAQ,SAAQ,MAAK,MAAK,WAAW,GAAG,gBAAgB,eAAe,SAAS,GAAG,UAAU,WAAW,cAAc,SAAS,MAAM,KAAK,UAAU,CAAC,GAAG;AAAA;AAAA,YAE9J,gBAAAD,MAACE,eAAA,EAAa,MAAM,IAAI;AAAA,aAC1B;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA,cAAc,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAW,GAAG,qCAAqC,eAAe,SAAS;AAAA,YAC3E,UAAU,WAAW;AAAA,YACrB,SAAS,MAAM,KAAK,UAAU,CAAC;AAAA,YAC/B,cAAW;AAAA,YAEX,0BAAAA,MAAC,eAAY,MAAM,IAAI;AAAA;AAAA,QACzB;AAAA,QAEA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAU;AAAA,YACV,OAAO,SAAS,UAAU,EAAE,UAAU,cAAc,IAAI;AAAA,YAEvD,gBAAM;AAAA,cAAI,CAAC,GAAG,MACb,MAAM,QACJ,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,iBAAe,KAAK,CAAC;AAAA,kBACrB,WAAW,GAAG,mEAAmE,KAAK;AAAA,kBACtF,eAAY;AAAA,kBAEZ,0BAAAA,MAAC,kBAAe,MAAM,IAAI;AAAA;AAAA,gBALrB,YAAY,CAAC;AAAA,cAMpB,IAEA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,iBAAe,KAAK,CAAC;AAAA,kBACrB,SAAS,MAAM,KAAK,CAAC;AAAA,kBACrB,gBAAc,YAAY,IAAI,SAAS;AAAA,kBACvC,cAAY,QAAQ,CAAC;AAAA,kBACrB,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA,YAAY,IACR,uIACA;AAAA,kBACN;AAAA,kBAEC;AAAA;AAAA,gBAlBI;AAAA,cAmBP;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA,QAEA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAW,GAAG,qCAAqC,eAAe,SAAS;AAAA,YAC3E,UAAU,WAAW;AAAA,YACrB,SAAS,MAAM,KAAK,UAAU,CAAC;AAAA,YAC/B,cAAW;AAAA,YAEX,0BAAAA,MAACE,eAAA,EAAa,MAAM,IAAI;AAAA;AAAA,QAC1B;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACrMA,SAAgB,YAAAC,iBAAgB;AAChC,SAAS,eAAAC,cAAa,iBAAiB;AAKjC,SAiCF,UAjCE,OAAAC,OAkCA,QAAAC,aAlCA;AAHC,SAAS,MAAM,IAAgF;AAAhF,eAAE,YAAU,YAAY,GAL9C,IAKsB,IAA+B,kBAA/B,IAA+B,CAA7B,YAAU;AAChC,SACE,gBAAAD,MAAC,SAAI,WAAU,wBACb,0BAAAA,MAAC,wCAAM,WAAW,iCAAiC,SAAS,MAAQ,QAAnE,EAA2E,WAAS,GACvF;AAEJ;AAEO,SAAS,YAAY,IAAuF;AAAvF,eAAE,YAAU,YAAY,GAbpD,IAa4B,IAA+B,kBAA/B,IAA+B,CAA7B,YAAU;AACtC,SAAO,gBAAAA,MAAC,wCAAM,WAAW,mFAAmF,SAAS,MAAQ,QAArH,EAA6H,WAAS;AAChJ;AAEO,SAAS,UAAU,IAAuF;AAAvF,eAAE,YAAU,YAAY,GAjBlD,IAiB0B,IAA+B,kBAA/B,IAA+B,CAA7B,YAAU;AACpC,SAAO,gBAAAA,MAAC,wCAAM,WAAW,iDAAiD,SAAS,MAAQ,QAAnF,EAA2F,WAAS;AAC9G;AAEO,SAAS,SAAS,IAAmF;AAAnF,eAAE,YAAU,YAAY,GArBjD,IAqByB,IAA+B,kBAA/B,IAA+B,CAA7B,YAAU;AACnC,SAAO,gBAAAA,MAAC,qCAAG,WAAW,mEAAmE,SAAS,MAAQ,QAAlG,EAA0G,WAAS;AAC7H;AAEO,SAAS,UAAU,IAA4F;AAA5F,eAAE,YAAU,YAAY,GAzBlD,IAyB0B,IAA+B,kBAA/B,IAA+B,CAA7B,YAAU;AACpC,SACE,gBAAAA,MAAC,qCAAG,WAAW,wHAAwH,SAAS,MAAQ,QAAvJ,EACE,WACH;AAEJ;AAEO,SAAS,UAAU,IAAsF;AAAtF,eAAE,YAAU,YAAY,GAjClD,IAiC0B,IAA+B,kBAA/B,IAA+B,CAA7B,YAAU;AACpC,SAAO,gBAAAA,MAAC,qCAAG,WAAW,qDAAqD,SAAS,MAAQ,QAApF,EAA4F,WAAS;AAC/G;AAEO,SAAS,cAAc,EAAE,OAAO,SAAS,UAAU,UAAU,GAAG,GAAuG;AAC5K,QAAM,CAAC,YAAY,aAAa,IAAIE,UAAS,KAAK;AAElD,SACE,gBAAAD,MAAA,YACE;AAAA,oBAAAA,MAAC,YAAS,WAAU,kBAAiB,SAAS,MAAM,cAAc,CAAC,UAAU,GAC3E;AAAA,sBAAAD,MAAC,aAAU,WAAU,sBAClB,uBAAa,gBAAAA,MAAC,aAAU,MAAM,IAAI,IAAK,gBAAAA,MAACG,cAAA,EAAY,MAAM,IAAI,GACjE;AAAA,MACC;AAAA,OACH;AAAA,IACC,cACC,gBAAAH,MAAC,QAAG,WAAU,qCACZ,0BAAAA,MAAC,aAAU,SAAkB,WAAU,oDACpC,mBACH,GACF;AAAA,KAEJ;AAEJ;;;ACvDA,OAAOI,WAAS,YAAAC,WAAU,UAAAC,SAAQ,iBAAiB;AACnD,SAAS,SAAAC,cAA0G;AAyB/G,gBAAAC,OAmCA,QAAAC,aAnCA;AAtBG,SAAS,SAAS,EAAE,SAAS,GAAkC;AACpE,QAAM,CAAC,QAAQ,SAAS,IAAIJ,UAAS,KAAK;AAC1C,QAAM,eAAeC,QAAuB,IAAI;AAEhD,YAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,MAAkB;AAC5C,UAAI,aAAa,WAAW,CAAC,aAAa,QAAQ,SAAS,EAAE,MAAc,EAAG,WAAU,KAAK;AAAA,IAC/F;AACA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM,SAAS,oBAAoB,aAAa,kBAAkB;AAAA,EAC3E,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,gBAAgB,CAAC,MAAqB;AAC1C,UAAI,EAAE,QAAQ,SAAU,WAAU,KAAK;AAAA,IACzC;AACA,aAAS,iBAAiB,WAAW,aAAa;AAClD,WAAO,MAAM,SAAS,oBAAoB,WAAW,aAAa;AAAA,EACpE,GAAG,CAAC,MAAM,CAAC;AAEX,SACE,gBAAAE,MAAC,SAAI,WAAU,mCAAkC,KAAK,cACnD,UAAAJ,QAAM,SAAS,IAAI,UAAU,CAAC,UAAU;AACvC,QAAIA,QAAM,eAAe,KAAK,GAAG;AAC/B,aAAOA,QAAM,aAAa,OAAkC,EAAE,QAAQ,UAAU,CAAC;AAAA,IACnF;AACA,WAAO;AAAA,EACT,CAAC,GACH;AAEJ;AAEO,SAAS,gBAAgB,EAAE,UAAU,QAAQ,UAAU,GAAQ;AACpE,SAAOA,QAAM,aAAa,UAAU;AAAA,IAClC,SAAS,MAAM,UAAU,CAAC,MAAM;AAAA,IAChC,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,WAAW,GAAG,SAAS,MAAM,SAAS,IAAI,SAAS,4CAA4C,EAAE;AAAA,EACnG,CAAC;AACH;AAEO,SAAS,gBAAgB,EAAE,UAAU,QAAQ,YAAY,IAAI,QAAQ,OAAO,GAAQ;AACzF,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,aAAa,UAAU,UAAU,YAAY;AACnD,SACE,gBAAAI,MAAC,SAAI,MAAK,QAAO,WAAW,YAAY,UAAU,gJAAgJ,SAAS,+CACxM,UACH;AAEJ;AAEO,SAAS,aAAa,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,YAAY,IAAI,UAAU,UAAU,GAAQ;AAC/G,QAAM,YAAY;AAClB,QAAM,eAAe,YAAY,gBAAgB,0DAA0D;AAE3G,SACE,gBAAAC,MAAC,YAAO,MAAK,UAAS,MAAK,YAAW,WAAW,GAAG,SAAS,IAAI,YAAY,IAAI,SAAS,IAAI,SAC3F;AAAA,YAAQ,gBAAAD,MAAC,QAAK,MAAM,IAAI,WAAU,cAAa;AAAA,IAChD,gBAAAA,MAAC,UAAK,WAAU,UAAU,iBAAM;AAAA,IAC/B,YAAY,gBAAAA,MAACD,QAAA,EAAM,MAAM,IAAI,WAAU,iCAAgC;AAAA,KAC1E;AAEJ;AAEO,SAAS,cAAc,EAAE,SAAS,GAAkC;AACzE,SAAO,gBAAAC,MAAC,SAAI,WAAU,0EAA0E,UAAS;AAC3G;AAEO,SAAS,kBAAkB;AAChC,SAAO,gBAAAA,MAAC,SAAI,MAAK,aAAY,WAAU,0CAAyC;AAClF;;;AJiCQ,SACE,OAAAE,OADF,QAAAC,cAAA;AA9ED,SAAS,UAA4B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX;AACF,GAAsB;AACpB,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,EAAE;AACvC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAwB,IAAI;AAC1D,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAwB,IAAI;AAC1D,QAAM,CAAC,eAAe,gBAAgB,IAAIA,UAAiC,CAAC,CAAC;AAC7E,QAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,CAAC;AAElC,QAAM,WAAW,CAAC,KAAQ,QACxB,IAAI,WAAW,IAAI,SAAS,GAAG,IAAM,IAAgC,IAAI,GAAG;AAE9E,QAAM,oBAAoB,QAAQ,OAAO,CAAC,MAAG;AAhD/C;AAgDkD,mBAAE,kBAAF,mBAAiB;AAAA,GAAM;AACvE,QAAM,oBAAoB,OAAO,OAAO,aAAa,EAAE,OAAO,OAAO,EAAE;AAEvE,QAAM,WAAWC,SAAQ,MAAM;AAC7B,QAAI,OAAO;AAEX,QAAI,OAAO,KAAK,GAAG;AACjB,YAAM,IAAI,OAAO,KAAK,EAAE,YAAY;AACpC,aAAO,KAAK,OAAO,CAAC,QAAQ,QAAQ,KAAK,CAAC,QAAK;AAxDrD;AAwDwD,uBAAO,cAAS,KAAK,GAAG,MAAjB,YAAsB,EAAE,EAAE,YAAY,EAAE,SAAS,CAAC;AAAA,OAAC,CAAC;AAAA,IAC/G;AAEA,WAAO,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,UAAI,CAAC,MAAO;AACZ,YAAM,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAC7C,UAAI,CAAC,IAAK;AACV,aAAO,KAAK,OAAO,CAAC,QAAQ,OAAO,SAAS,KAAK,GAAG,CAAC,MAAM,KAAK;AAAA,IAClE,CAAC;AAED,WAAO;AAAA,EAET,GAAG,CAAC,MAAM,QAAQ,aAAa,CAAC;AAEhC,QAAM,SAASA,SAAQ,MAAM;AAC3B,QAAI,CAAC,WAAW,CAAC,QAAS,QAAO;AACjC,UAAM,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,OAAO;AACjD,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM;AAClC,YAAM,KAAK,SAAS,GAAG,GAAG;AAC1B,YAAM,KAAK,SAAS,GAAG,GAAG;AAC1B,UAAI,OAAO,OAAO,YAAY,OAAO,OAAO,SAAU,QAAO,YAAY,QAAQ,KAAK,KAAK,KAAK;AAChG,aAAO,YAAY,QAAQ,OAAO,EAAE,EAAE,cAAc,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,EAAE,cAAc,OAAO,EAAE,CAAC;AAAA,IACvG,CAAC;AAAA,EAEH,GAAG,CAAC,UAAU,SAAS,OAAO,CAAC;AAE/B,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,KAAK,OAAO,SAAS,QAAQ,CAAC;AAClE,QAAM,cAAc,KAAK,IAAI,MAAM,UAAU;AAC7C,QAAM,QAAQ,OAAO,OAAO,cAAc,KAAK,UAAU,cAAc,QAAQ;AAE/E,QAAM,aAAa,CAAC,QAA4B;AAC9C,QAAI,CAAC,IAAI,SAAU;AACnB,QAAI,YAAY,IAAI,KAAK;AACvB,iBAAW,IAAI,GAAG;AAClB,iBAAW,KAAK;AAAA,IAClB,WAAW,YAAY,OAAO;AAC5B,iBAAW,MAAM;AAAA,IACnB,OAAO;AACL,iBAAW,IAAI;AACf,iBAAW,IAAI;AAAA,IACjB;AACA,YAAQ,CAAC;AAAA,EACX;AAEA,QAAM,WAAW,MAAM;AACrB,cAAU,EAAE;AACZ,qBAAiB,CAAC,CAAC;AACnB,YAAQ,CAAC;AAAA,EACX;AAEA,SACE,gBAAAF,OAAC,SAAI,WAAW,GAAG,UAAU,SAAS,GACpC;AAAA,oBAAAA,OAAC,SAAI,WAAU,2EACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,+BACb;AAAA,wBAAAD,MAACI,SAAA,EAAO,MAAM,IAAI,WAAU,8EAA6E;AAAA,QACzG,gBAAAJ;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP,UAAU,CAAC,MAAM;AACf,wBAAU,EAAE,OAAO,KAAK;AACxB,sBAAQ,CAAC;AAAA,YACX;AAAA,YACA,aAAa;AAAA,YACb,WAAU;AAAA;AAAA,QACZ;AAAA,SACF;AAAA,OAEE,kBAAkB,SAAS,KAAK,oBAAoB,MACpD,gBAAAC,OAAC,SAAI,WAAU,qCACZ;AAAA,0BAAkB,IAAI,CAAC,QACtB,gBAAAA,OAAC,YACC;AAAA,0BAAAD,MAAC,mBACC,0BAAAC;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,WAAW,GAAG,cAAc,IAAI,GAAG,KAAK,oEAAoE;AAAA,cAE5G;AAAA,gCAAAD,MAACK,SAAA,EAAO,MAAM,IAAI;AAAA,gBACjB,cAAc,IAAI,GAAG,KAAK,IAAI;AAAA;AAAA;AAAA,UACjC,GACF;AAAA,UACA,gBAAAJ,OAAC,mBAAgB,OAAM,SACrB;AAAA,4BAAAA,OAAC,iBAAc;AAAA;AAAA,cAAW,IAAI;AAAA,eAAO;AAAA,YACrC,gBAAAD,MAAC,gBAAa,OAAM,OAAM,UAAU,CAAC,cAAc,IAAI,GAAG,GAAG,SAAS,MAAM,iBAAiB,CAAC,MAAO,iCAAK,IAAL,EAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG;AAAA,YAChI,gBAAAA,MAAC,mBAAgB;AAAA,YAChB,IAAI,cAAe,IAAI,CAAC,QACvB,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO;AAAA,gBACP,UAAU,cAAc,IAAI,GAAG,MAAM;AAAA,gBACrC,SAAS,MAAM;AACb,mCAAiB,CAAC,MAAO,iCAAK,IAAL,EAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE;AAClD,0BAAQ,CAAC;AAAA,gBACX;AAAA;AAAA,cANK;AAAA,YAOP,CACD;AAAA,aACH;AAAA,aA1Ba,IAAI,GA2BnB,CACD;AAAA,SAEC,oBAAoB,KAAK,WACzB,gBAAAC,OAAC,UAAO,SAAQ,SAAQ,MAAK,MAAK,SAAS,UACzC;AAAA,0BAAAD,MAACM,IAAA,EAAE,MAAM,IAAI;AAAA,UAAE;AAAA,WAEjB;AAAA,SAEJ;AAAA,OAEJ;AAAA,IAEA,gBAAAN,MAAC,SAAI,WAAU,0EACb,0BAAAC,OAAC,SACC;AAAA,sBAAAD,MAAC,eACC,0BAAAA,MAAC,YACE,kBAAQ,IAAI,CAAC,QACZ,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,WAAW,GAAG;AAAA,UAC7B,WAAW;AAAA,YACT,IAAI,UAAU,WAAW;AAAA,YACzB,IAAI,UAAU,YAAY;AAAA,YAC1B,IAAI,YAAY;AAAA,YAChB,IAAI;AAAA,UACN;AAAA,UAEA,0BAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,IAAI,UAAU,WAAW;AAAA,gBACzB,IAAI,UAAU,YAAY;AAAA,cAC5B;AAAA,cAEC;AAAA,oBAAI;AAAA,gBACJ,IAAI,aACF,YAAY,IAAI,MACf,YAAY,QACV,gBAAAD,MAAC,WAAQ,MAAM,IAAI,IAEnB,gBAAAA,MAAC,aAAU,MAAM,IAAI,IAGvB,gBAAAA,MAACO,cAAA,EAAY,MAAM,IAAI,WAAU,cAAa;AAAA;AAAA;AAAA,UAEpD;AAAA;AAAA,QA3BK,IAAI;AAAA,MA4BX,CACD,GACH,GACF;AAAA,MACA,gBAAAP,MAAC,aACE,gBAAM,WAAW,IAChB,gBAAAA,MAAC,YAAS,WAAU,wBAClB,0BAAAA,MAAC,aAAU,SAAS,QAAQ,QAAQ,WAAU,mCAAkC,+BAEhF,GACF,IAEA,MAAM,IAAI,CAAC,KAAK,MACd,gBAAAA,MAAC,YACE,kBAAQ,IAAI,CAAC,QAAK;AAtNrC;AAuNoB,+BAAAA,MAAC,aAAwB,WAAW,GAAG,IAAI,UAAU,WAAW,cAAc,IAAI,UAAU,YAAY,eAAe,IAAI,SAAS,GACjI,cAAI,SAAS,IAAI,OAAO,GAAG,IAAI,QAAO,cAAS,KAAK,GAAG,MAAjB,YAAsB,EAAE,KADjD,IAAI,GAEpB;AAAA,OACD,KALY,CAMf,CACD,GAEL;AAAA,OACF,GACF;AAAA,IAEA,gBAAAC,OAAC,SAAI,WAAU,6EACb;AAAA,sBAAAD,MAAC,OAAE,WAAU,4CACV,iBAAO,WAAW,IAAI,cAAc,YAAY,cAAc,KAAK,WAAW,CAAC,SAAI,KAAK,IAAI,cAAc,UAAU,OAAO,MAAM,CAAC,OAAO,OAAO,MAAM,IACzJ;AAAA,MACA,gBAAAA,MAAC,cAAW,MAAM,aAAa,YAAwB,cAAc,SAAS;AAAA,OAChF;AAAA,KACF;AAEJ;;;AKxOA,OAAOQ,WAAS,iBAAAC,gBAAe,cAAAC,aAAY,YAAAC,WAAU,aAAAC,kBAAiB;AACtE,SAAS,oBAAoB;AAC7B,SAAS,QAAAC,OAAM,QAAAC,aAAY;AAwBvB,gBAAAC,OA0CA,QAAAC,cA1CA;AAhBJ,IAAM,gBAAgBC,eAAwC,IAAI;AAE3D,SAAS,OAAO,EAAE,UAAU,MAAM,aAAa,GAA0F;AAC9I,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAS,KAAK;AACpD,QAAM,SAAS,SAAS,SAAY,OAAO;AAC3C,QAAM,YAAY,gBAAgB;AAElC,EAAAC,WAAU,MAAM;AACd,QAAI,OAAQ,UAAS,KAAK,MAAM,WAAW;AAAA,QACtC,UAAS,KAAK,MAAM,WAAW;AACpC,WAAO,MAAM;AACX,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SACE,gBAAAJ,MAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,QAAQ,UAAU,GAChD,UACH;AAEJ;AAEO,SAAS,cAAc,EAAE,SAAS,GAA0C;AACjF,QAAM,EAAE,UAAU,IAAIK,YAAW,aAAa;AAE9C,SAAOC,QAAM,aAAa,UAAU;AAAA,IAClC,SAAS,CAAC,MAAwB;AAtCtC;AAuCM,WAAI,cAAS,UAAT,mBAAgB,QAAS,UAAS,MAAM,QAAQ,CAAC;AACrD,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,cAAc,EAAE,UAAU,YAAY,GAAG,GAAsD;AAC7G,QAAM,EAAE,QAAQ,UAAU,IAAID,YAAW,aAAa;AACtD,QAAM,CAAC,SAAS,UAAU,IAAIF,UAAS,KAAK;AAE5C,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX,iBAAW,KAAK;AAChB;AAAA,IACF;AACA,UAAM,QAAQ,sBAAsB,MAAM,WAAW,IAAI,CAAC;AAC1D,WAAO,MAAM,qBAAqB,KAAK;AAAA,EACzC,GAAG,CAAC,MAAM,CAAC;AAEX,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,OAAQ;AACb,UAAM,gBAAgB,CAAC,MAAqB;AAC1C,UAAI,EAAE,QAAQ,SAAU,WAAU,KAAK;AAAA,IACzC;AACA,WAAO,iBAAiB,WAAW,aAAa;AAChD,WAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,EAClE,GAAG,CAAC,QAAQ,SAAS,CAAC;AAEtB,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO;AAAA,IACL,gBAAAH,OAAC,SAAI,WAAU,2DACb;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,UAAU,gBAAgB;AAAA,UAC5B;AAAA,UACA,SAAS,MAAM,UAAU,KAAK;AAAA,UAC9B,eAAW;AAAA;AAAA,MACb;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAW;AAAA,UACX,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,UAClC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,UAAU,wCAAwC;AAAA,YAClD;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,OACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;AAEO,SAAS,aAAa,EAAE,OAAO,YAAY,GAA6C;AAC7F,SACE,gBAAAC,OAAC,SAAI,WAAU,QACZ;AAAA,aAAS,gBAAAD,MAAC,QAAG,WAAU,uFAAuF,iBAAM;AAAA,IACpH,eAAe,gBAAAA,MAAC,OAAE,WAAU,qEAAqE,uBAAY;AAAA,KAChH;AAEJ;AAEO,SAAS,aAAa,EAAE,SAAS,GAAkC;AACxE,SAAO,gBAAAA,MAAC,SAAI,WAAU,4CAA4C,UAAS;AAC7E;AAEO,SAAS,aAAa,EAAE,OAAO,SAAS,UAAU,UAAU,GAAiF;AAClJ,QAAM,EAAE,UAAU,IAAIK,YAAW,aAAa;AAE9C,QAAM,cAAc,MAAM;AACxB,QAAI,QAAS,SAAQ;AACrB,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,aACJ,YAAY,gBACR,4EACA;AAEN,SACE,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,QAAM,EAAE,UAAU,IAAIK,YAAW,aAAa;AAE9C,QAAM,cAAc,MAAM;AACxB,QAAI,QAAS,SAAQ;AACrB,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,SAAS,YAAY,YAAY,yCAAyC;AAChF,QAAM,YAAY,YAAY,YAAY,uCAAuC;AAEjF,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAU;AAAA,MAEV;AAAA,wBAAAD,MAAC,SAAI,WAAW,GAAG,kEAAkE,QAAQ,SAAS,GACnG,mBAAS,YAAY,YAAY,gBAAAA,MAACO,OAAA,EAAK,MAAM,IAAI,IAAK,gBAAAP,MAACQ,OAAA,EAAK,MAAM,IAAI,IACzE;AAAA,QACA,gBAAAR,MAAC,UAAK,WAAU,yDAAyD,iBAAM;AAAA;AAAA;AAAA,EACjF;AAEJ;;;AC7JI,SAcI,OAAAS,OAdJ,QAAAC,cAAA;AAZG,SAAS,YAAY;AAAA,EAC1B,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAKG;AACD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,YAAY,cACV;AAAA,MACJ;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,YAAY,aACR,0GACA;AAAA,YACN;AAAA,YAEA,0BAAAA,MAAC,QAAK,WAAU,WAAU;AAAA;AAAA,QAC5B;AAAA,QACA,gBAAAA,MAAC,QAAG,WAAU,2DACX,iBACH;AAAA,QACA,gBAAAA,MAAC,OAAE,WAAU,iDAAiD,uBAAY;AAAA;AAAA;AAAA,EAC5E;AAEJ;;;ACrCA,YAAYE,aAAW;AACvB,SAAS,OAAAC,YAA8B;AAsC7B,SAOI,OAAAC,OAPJ,QAAAC,cAAA;AAnCV,IAAM,gBAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAWA,IAAM,QAAc;AAAA,EAClB,CAAC,IAAmF,QAAQ;AAA3F,iBAAE,aAAW,SAAS,MAAM,UAAU,UAAU,MAAM,OAAO,SAnChE,IAmCG,IAA0E,kBAA1E,IAA0E,CAAxE,aAAW,WAAS,QAAM,YAAU,YAAU,QAAM,SAAO;AAC5D,WACE,gBAAAD,OAAC,SAAI,WAAU,gCACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,2CACb;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAW,GAAG,cAAc,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,aACrD,QAHL;AAAA,YAKE;AAAA;AAAA,cACA,YACC,gBAAAD,MAAC,UAAK,WAAU,gBAAe,cAAW,YAAW,eAErD;AAAA;AAAA;AAAA,QAEJ;AAAA,QACC,YACC,gBAAAA,MAAC,UAAK,WAAU,4CAA2C,sBAAQ;AAAA,SAEvE;AAAA,MACC,QAAQ,CAAC,SACR,gBAAAA,MAAC,OAAE,WAAU,4DAA4D,gBAAK;AAAA,MAE/E,SACC,gBAAAA,MAAC,OAAE,WAAU,0DAAyD,MAAK,SACxE,iBACH;AAAA,OAEJ;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;AAapB,SAAS,MAAM,IAWA;AAXA,eACb;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,EAzFF,IAgFe,IAUV,kBAVU,IAUV;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,gBAAAC,OAAC,sCAAI,WAAW,GAAG,8BAA8B,SAAS,KAAO,QAAhE,EACC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QAEL;AAAA;AAAA,IACH;AAAA,IACC;AAAA,MACH;AAEJ;;;ACxGA,SAAS,gBAAgB;AAIvB,gBAAAG,OAYA,QAAAC,cAZA;AADF,IAAM,eAAe,MACnB,gBAAAD,MAAC,WAAM,yBAAyB,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQzC,GAAG;AAGC,IAAM,kBAAkB,CAAC,EAAE,UAAU,MAC1C,gBAAAC,OAAC,SAAI,WAAW,GAAG,oEAAoE,SAAS,GAC9F;AAAA,kBAAAD,MAAC,gBAAa;AAAA,EACd,gBAAAA,MAAC,SAAI,WAAU,qHAAoH,OAAO,EAAE,WAAW,sBAAsB,GAAG;AAAA,GAClL;AAKK,IAAM,eAAe,MAC1B,gBAAAC,OAAC,SAAI,WAAU,wDAAuD,SAAQ,aAC5E;AAAA,kBAAAD,MAAC,YAAO,WAAU,cAAa,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,QAAO,gBAAe,aAAY,KAAI,MAAK,QAAO;AAAA,EACxG,gBAAAA,MAAC,UAAK,WAAU,eAAc,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,GAAE,4BAA2B;AAAA,GACrI;AAGK,IAAM,kBAAkB,MAC7B,gBAAAA,MAAC,SAAI,WAAU,2HAA0H;AAGpI,IAAM,cAAc,MACzB,gBAAAA,MAAC,SAAI,WAAU,sBACZ,WAAC,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,MACrB,gBAAAA,MAAC,SAAY,WAAU,uCAAsC,OAAO,EAAE,WAAW,UAAU,IAAI,EAAE,OAAO,GACtG,0BAAAA,MAAC,SAAI,WAAU,kDAAiD,OAAO,EAAE,WAAW,+BAA+B,gBAAgB,GAAG,IAAI,IAAI,IAAI,GAAG,KAD7I,CAEV,CACD,GACH;AAGK,IAAM,cAAc,MACzB,gBAAAA,MAAC,SAAI,WAAU,kHACb,0BAAAA,MAAC,SAAI,WAAU,0FAAyF,GAC1G;AAKK,IAAM,gBAAgB,MAC3B,gBAAAC,OAAC,SAAI,WAAU,gBACb;AAAA,kBAAAD,MAAC,SAAI,WAAU,qCAAoC,OAAO,EAAE,WAAW,qCAAqC,GAAG;AAAA,EAC/G,gBAAAA,MAAC,SAAI,WAAU,wCAAuC,OAAO,EAAE,WAAW,sCAAsC,gBAAgB,OAAO,GAAG;AAAA,GAC5I;AAGK,IAAM,UAAU,MACrB,gBAAAA,MAAC,SAAI,WAAU,+EACb,0BAAAA,MAAC,SAAI,WAAU,oEAAmE,OAAO,EAAE,WAAW,mCAAmC,GAAG,GAC9I;AAGK,IAAM,cAAc,MACzB,gBAAAC,OAAC,SAAI,WAAU,uDACb;AAAA,kBAAAD,MAAC,SAAI,WAAU,oFAAmF;AAAA,EAClG,gBAAAA,MAAC,SAAI,WAAU,kDAAiD;AAAA,GAClE;AAKK,IAAM,UAAU,MACrB,gBAAAA,MAAC,SAAI,WAAU,gBACZ,WAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACd,gBAAAA,MAAC,SAAY,WAAU,iEAAgE,OAAO,EAAE,gBAAgB,GAAG,IAAI,IAAI,IAAI,KAArH,CAAwH,CACnI,GACH;AAGK,IAAM,YAAY,MACvB,gBAAAA,MAAC,SAAI,WAAU,cACZ,WAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACd,gBAAAA,MAAC,SAAY,WAAU,sDAAqD,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,KAAzG,CAA4G,CACvH,GACH;AAGK,IAAM,kBAAkB,MAC7B,gBAAAA,MAAC,SAAI,WAAU,sFACZ,WAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MACd,gBAAAA,MAAC,SAAY,WAAU,sDAAqD,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,KAAzG,CAA4G,CACvH,GACH;AAGK,IAAM,cAAc,MACzB,gBAAAC,OAAC,SAAI,WAAU,wFACb;AAAA,kBAAAD,MAAC,gBAAa;AAAA,EACd,gBAAAA,MAAC,SAAI,WAAU,uDAAsD,OAAO,EAAE,WAAW,yCAAyC,GAAG;AAAA,GACvI;AAKK,IAAM,iBAAiB,MAC5B,gBAAAA,MAAC,SAAI,WAAU,uCAAsC,OAAO,EAAE,WAAW,gCAAgC,GAAG;AAGvG,IAAM,cAAc,MACzB,gBAAAC,OAAC,SAAI,WAAU,uDACb;AAAA,kBAAAD,MAAC,SAAI,WAAU,kDAAiD;AAAA,EAChE,gBAAAA,MAAC,SAAI,WAAU,uCACb,0BAAAA,MAAC,SAAI,WAAU,oCAAmC,GACpD;AAAA,GACF;AAGK,IAAM,aAAa,CAAC,EAAE,SAAS,MACpC,gBAAAA,MAAC,SAAI,OAAO,EAAE,WAAW,kCAAkC,GACxD,UACH;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,cAAc,MAC9C,gBAAAC,OAAC,SAAI,WAAU,oCACb;AAAA,kBAAAA,OAAC,SAAI,WAAU,uDACb;AAAA,oBAAAD,MAAC,SAAI,WAAU,wIAAuI;AAAA,IACtJ,gBAAAA,MAAC,YAAS,WAAU,uDAAsD;AAAA,KAC5E;AAAA,EACA,gBAAAA,MAAC,UAAK,WAAU,+EAA+E,gBAAK;AAAA,GACtG;;;ACzIF,YAAYE,aAAW;AACvB,SAAS,SAAAC,cAAa;AACtB,SAAS,OAAAC,YAA8B;AAuBnC,gBAAAC,OA2CA,QAAAC,cA3CA;AApBJ,IAAM,eAAeC;AAAA,EACnB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAMA,IAAM,OAAa;AAAA,EACjB,CAAC,IAAkC,QAAK;AAAvC,iBAAE,aAAW,QAxBhB,IAwBG,IAAyB,kBAAzB,IAAyB,CAAvB,aAAW;AACZ,2BAAAF;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,WAAW,GAAG,aAAa,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,SAC9C;AAAA,IACN;AAAA;AAEJ;AACA,KAAK,cAAc;AAEnB,IAAM,mBAAmBE;AAAA,EACvB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAWA,IAAM,WAAiB;AAAA,EACrB,CACE,IACA,QACA;AAFA,iBAAE,aAAW,SAAS,OAAO,MAAM,MAAM,UAAU,UAAU,SAjEjE,IAiEI,IAA0E,kBAA1E,IAA0E,CAAxE,aAAW,WAAS,SAAO,QAAY,YAAU,YAAU;AAG7D,2BAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,MAAK;AAAA,QACL;AAAA,QACA,WAAW,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,SAClD,QANL;AAAA,QAQE;AAAA,kBAAQ,gBAAAD,MAAC,QAAK,WAAU,+BAA8B;AAAA,UACvD,gBAAAA,MAAC,UAAK,WAAU,mBAAmB,iBAAM;AAAA,UACxC,YACC,gBAAAA,MAAC,UAAK,WAAU,mEACb,oBACH;AAAA,UAED,YAAY,gBAAAA,MAACG,QAAA,EAAM,WAAU,sDAAqD;AAAA;AAAA;AAAA,IACrF;AAAA;AAEJ;AACA,SAAS,cAAc;AAEvB,IAAM,YAAkB,mBAGtB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA5FL,IA4FG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,yBAAAH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,UAAU,cAAc;AAExB,IAAM,cAAoB,mBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA3GL,IA2GG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,yBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,WAAW,GAAG,0CAA0C,SAAS;AAAA,OAC7D;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAAc;;;ACjH1B,YAAYI,aAAW;AACvB,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,OAAAC,YAA8B;AACvC,SAAS,KAAAC,UAAS;AAwGd,gBAAAC,OA8GE,QAAAC,cA9GF;AArGJ,IAAM,uBAAuBC;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,MAAM,SAAS,MAAM;AAAA,EAChD;AACF;AAEA,IAAM,kBAAkBA;AAAA,EACtB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,MAAM;AAAA,EACpC;AACF;AAOA,IAAM,eAAqB,sBAAwC,IAAI;AAQvE,IAAM,sBAA4B,sBAA+C,IAAI;AAErF,SAAS,kBAAkB;AACzB,QAAM,UAAgB,mBAAW,YAAY;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB;AAChC,QAAM,UAAgB,mBAAW,mBAAmB;AACpD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AACA,SAAO;AACT;AASO,SAAS,MAAM;AAAA,EACpB,MAAM;AAAA,EACN;AAAA,EACA,cAAc;AAAA,EACd;AACF,GAAe;AACb,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,iBAAS,WAAW;AAC1E,QAAM,OAAO,0CAAkB;AAE/B,QAAM,mBAAyB;AAAA,IAC7B,CAAC,SAAkB;AACjB,UAAI,mBAAmB,QAAW;AAChC,4BAAoB,IAAI;AAAA,MAC1B;AACA,mDAAe;AAAA,IACjB;AAAA,IACA,CAAC,gBAAgB,YAAY;AAAA,EAC/B;AAEA,SACE,gBAAAF,MAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,MAAM,cAAc,iBAAiB,GAClE,UACH;AAEJ;AAMO,SAAS,aAAa,IAA6D;AAA7D,eAAE,WAAS,UAAU,QAvHlD,IAuH6B,IAAiC,kBAAjC,IAAiC,CAA/B,WAAS,YAAU;AAChD,QAAM,EAAE,aAAa,IAAI,gBAAgB;AAEzC,QAAM,aAAa,CAAC,UAA+C;AACjE,uCAAU;AACV,QAAI,CAAC,MAAM,kBAAkB;AAC3B,mBAAa,IAAI;AAAA,IACnB;AAAA,EACF;AAEA,MAAI,WAAiB,uBAAe,QAAQ,GAAG;AAC7C,UAAM,QAAQ;AACd,WAAa,qBAAa,OAAO;AAAA,MAC/B,SAAS,CAAC,UAAyC;AApIzD,YAAAG,KAAAC;AAqIQ,SAAAA,OAAAD,MAAA,MAAM,OAAM,YAAZ,gBAAAC,IAAA,KAAAD,KAAsB;AACtB,YAAI,CAAC,MAAM,kBAAkB;AAC3B,uBAAa,IAAI;AAAA,QACnB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SACE,gBAAAH,MAAC,yCAAO,MAAK,UAAS,SAAS,cAAgB,QAA9C,EACE,WACH;AAEJ;AASO,SAAS,aAAa,IAOP;AAPO,eAC3B;AAAA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,EAhKF,IA2J6B,IAMxB,kBANwB,IAMxB;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,EAAE,MAAM,aAAa,IAAI,gBAAgB;AAC/C,QAAM,CAAC,SAAS,UAAU,IAAU,iBAAS,KAAK;AAClD,QAAM,CAAC,SAAS,UAAU,IAAU,iBAAS,KAAK;AAClD,QAAM,aAAmB,eAAuB,IAAI;AACpD,QAAM,UAAgB,cAAM;AAC5B,QAAM,gBAAsB,cAAM;AAElC,EAAM,kBAAU,MAAM,WAAW,IAAI,GAAG,CAAC,CAAC;AAE1C,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,MAAM;AACT,iBAAW,KAAK;AAChB,eAAS,KAAK,MAAM,WAAW;AAC/B;AAAA,IACF;AAEA,aAAS,KAAK,MAAM,WAAW;AAC/B,UAAM,QAAQ,sBAAsB,MAAM,WAAW,IAAI,CAAC;AAE1D,WAAO,MAAM;AACX,2BAAqB,KAAK;AAC1B,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,QAAc,oBAAY,MAAM;AACpC;AACA,iBAAa,KAAK;AAAA,EACpB,GAAG,CAAC,SAAS,YAAY,CAAC;AAE1B,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,KAAM;AACX,UAAM,gBAAgB,CAAC,UAAyB;AAC9C,UAAI,MAAM,QAAQ,SAAU,OAAM;AAAA,IACpC;AACA,WAAO,iBAAiB,WAAW,aAAa;AAChD,WAAO,MAAM,OAAO,oBAAoB,WAAW,aAAa;AAAA,EAClE,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,EAAM,kBAAU,MAAM;AACpB,QAAI,CAAC,QAAQ,CAAC,WAAW,QAAS;AAClC,UAAM,YAAY,WAAW,QAAQ;AAAA,MACnC;AAAA,IACF;AACA,2CAAW;AAAA,EACb,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,MAAI,CAAC,WAAW,CAAC,KAAM,QAAO;AAE9B,QAAM,OACJ,gBAAAC,OAAC,SAAI,WAAU,6EACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,gBAAgB,EAAE,QAAQ,CAAC;AAAA,QACtC,SAAS;AAAA,QACT,eAAW;AAAA;AAAA,IACb;AAAA,IACA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,MAAK;AAAA,QACL,cAAW;AAAA,QACX,mBAAiB;AAAA,QACjB,oBAAkB;AAAA,QAClB,WAAW,GAAG,qBAAqB,EAAE,MAAM,QAAQ,CAAC,GAAG,SAAS;AAAA,QAChE,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,SAC9B,QARL;AAAA,QAUE;AAAA,6BACC,gBAAAD;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,0BAAAA,MAACK,IAAA,EAAE,WAAU,WAAU,aAAa,GAAG;AAAA;AAAA,UACzC;AAAA,UAEF,gBAAAL,MAAC,oBAAoB,UAApB,EAA6B,OAAO,EAAE,SAAS,eAAe,MAAM,GAClE,UACH;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAGF,SAAOM,cAAa,MAAM,SAAS,IAAI;AACzC;AAEO,SAAS,YAAY,IAGa;AAHb,eAC1B;AAAA;AAAA,EA1PF,IAyP4B,IAEvB,kBAFuB,IAEvB;AAAA,IADH;AAAA;AAGA,SACE,gBAAAN;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,6BAA6B,SAAS;AAAA,OAChD;AAAA,EACN;AAEJ;AAEO,SAAS,WAAW,IAGkB;AAHlB,eACzB;AAAA;AAAA,EAtQF,IAqQ2B,IAEtB,kBAFsB,IAEtB;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,QAAQ,IAAI,uBAAuB;AAE3C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEO,SAAS,iBAAiB,IAGc;AAHd,eAC/B;AAAA;AAAA,EAxRF,IAuRiC,IAE5B,kBAF4B,IAE5B;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,cAAc,IAAI,uBAAuB;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEO,SAAS,UAAU,IAGe;AAHf,eACxB;AAAA;AAAA,EA1SF,IAyS0B,IAErB,kBAFqB,IAErB;AAAA,IADH;AAAA;AAGA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,4BAA4B,SAAS;AAAA,OAC/C;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,IAGa;AAHb,eAC1B;AAAA;AAAA,EAtTF,IAqT4B,IAEvB,kBAFuB,IAEvB;AAAA,IADH;AAAA;AAGA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,IAUzB;AAVyB,eAC1B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAxUF,IAoU4B,IAKvB,kBALuB,IAKvB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACI,QANL;AAAA,MAQE;AAAA,gBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QAEF,gBAAAC,OAAC,SAAI,WAAU,WACb;AAAA,0BAAAD,MAAC,OAAE,WAAU,qDAAqD,iBAAM;AAAA,UACvE,eACC,gBAAAA,MAAC,OAAE,WAAU,mEACV,uBACH;AAAA,WAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;AAMO,SAAS,WAAW,IAA2D;AAA3D,eAAE,WAAS,UAAU,QA/WhD,IA+W2B,IAAiC,kBAAjC,IAAiC,CAA/B,WAAS,YAAU;AAC9C,QAAM,EAAE,MAAM,IAAI,uBAAuB;AAEzC,MAAI,WAAiB,uBAAe,QAAQ,GAAG;AAC7C,WAAa;AAAA,MACX;AAAA,MACA;AAAA,QACE,SAAS,CAAC,UAA4B;AAtX9C,cAAAG,KAAAC;AAuXU,WAACA,OAAAD,MAAA,SAAuE,OAAM,YAA7E,gBAAAC,IAAA;AAAA,YAAAD;AAAA,YACC;AAAA;AAEF,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,CAAC,MAAM;AACd,2CAAU;AACV,cAAM;AAAA,MACR;AAAA,OACI,QANL;AAAA,MAQE;AAAA;AAAA,EACH;AAEJ;;;AC5YA,YAAYO,aAAW;AACvB,SAAS,OAAAC,aAA8B;AAyFzB,gBAAAC,OAKA,QAAAC,cALA;AAtFd,IAAM,wBAAwBC;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,KAAK;AAAA,EAChC;AACF;AAEA,IAAM,4BAA4BA;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAEA,IAAM,oBAAoBA;AAAA,EACxB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAcA,IAAM,WAAiB;AAAA,EACrB,CACE,IAYA,QACG;AAbH,iBACE;AAAA;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,WAAW;AAAA,IAvEjB,IA8DI,IAUK,kBAVL,IAUK;AAAA,MATH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC;AAChD,UAAM,aAAa,MAAM,IAAI,KAAK,MAAO,UAAU,MAAO,GAAG,IAAI;AAEjE,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QAEE;AAAA,oBAAS,cACT,gBAAAA,OAAC,SAAI,WAAU,2CACZ;AAAA,qBACC,gBAAAD,MAAC,UAAK,WAAU,4CACb,iBACH;AAAA,YAED,aAAa,CAAC,iBACb,gBAAAC,OAAC,UAAK,WAAW,GAAG,kBAAkB,EAAE,QAAQ,CAAC,CAAC,GAC/C;AAAA;AAAA,cAAW;AAAA,eACd;AAAA,aAEJ;AAAA,UAEF,gBAAAD;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,MAAK;AAAA,cACL,iBAAe;AAAA,cACf,iBAAe;AAAA,cACf,iBAAe,iBAAiB,WAAW,SAAY;AAAA,cACvD,cAAY;AAAA,cACZ,kBAAgB,gBAAgB,YAAY,GAAG,UAAU;AAAA,cACzD,iBAAe,YAAY;AAAA,cAC3B,WAAW,GAAG,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAAA,eACzC,QAVL;AAAA,cAYE,0BACC,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT,0BAA0B,EAAE,QAAQ,CAAC;AAAA,oBACrC;AAAA,kBACF;AAAA;AAAA,cACF,IAEA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW,GAAG,0BAA0B,EAAE,QAAQ,CAAC,CAAC;AAAA,kBACpD,OAAO,EAAE,OAAO,GAAG,UAAU,IAAI;AAAA;AAAA,cACnC;AAAA;AAAA,UAEJ;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;;;ACnIvB,YAAYG,aAAW;AACvB,SAAS,OAAAC,aAA8B;AA0G/B,gBAAAC,OAsGE,QAAAC,cAtGF;AAvGR,IAAM,uBAAuBC;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,KAAK;AAAA,EAChC;AACF;AAEA,IAAM,uBAAuBA,MAAI,6DAA6D;AAAA,EAC5F,UAAU;AAAA,IACR,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,SAAS,SAAS;AACvC,CAAC;AAYD,IAAM,oBAA0B;AAAA,EAC9B;AACF;AAcA,IAAM,aAAmB;AAAA,EACvB,CACE,IAcA,QACG;AAfH,iBACE;AAAA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa;AAAA,MACb;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IAtFN,IA2EI,IAYK,kBAZL,IAYK;AAAA,MAXH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,CAAC,mBAAmB,oBAAoB,IAAU;AAAA,MACtD,sCAAgB;AAAA,IAClB;AACA,UAAM,QAAQ,4CAAmB;AAEjC,UAAM,oBAAoB,CAAC,SAAiB;AAC1C,UAAI,oBAAoB,QAAW;AACjC,6BAAqB,IAAI;AAAA,MAC3B;AACA,qDAAgB;AAAA,IAClB;AAEA,WACE,gBAAAF;AAAA,MAAC,kBAAkB;AAAA,MAAlB;AAAA,QACC,OAAO,EAAE,MAAM,OAAO,eAAe,mBAAmB,MAAM,SAAS,YAAY,SAAS;AAAA,QAE5F,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,MAAK;AAAA,YACL,WAAW;AAAA,cACT;AAAA,cACA,eAAe,cACX,2FACA,YAAY,SACV,YACA;AAAA,cACN,gBAAgB,aAAa,aAAa;AAAA,cAC1C;AAAA,YACF;AAAA,aACI,QAbL;AAAA,YAeE;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;AAWzB,IAAM,QAAc;AAAA,EAClB,CACE,IAaA,QACG;AAdH,iBACE;AAAA;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,SAAS;AAAA,IAvJf,IA6II,IAWK,uBAXL,IAWK;AAAA,MAVH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAvJN,QAAAG,KAAAC,KAAA;AA4JI,UAAM,UAAgB,mBAAW,iBAAiB;AAClD,UAAM,cAAoB,cAAM;AAChC,UAAM,UAAU,kBAAM;AACtB,UAAM,QAAOD,MAAA,8BAAY,mCAAS,SAArB,OAAAA,MAA6B;AAC1C,UAAM,gBAAeC,MAAA,oCAAe,mCAAS,YAAxB,OAAAA,MAAmC;AACxD,UAAM,cAAa,wCAAS,eAAT,YAAuB;AAC1C,UAAM,kBACJ,eAAe,cACX,WACA,iBAAiB,UAAU,cACzB,SACA;AACR,UAAM,WAAW,sCAAgB,mCAAS;AAC1C,UAAM,eAAe,YAAY,QAAQ,gBAAgB;AACzD,UAAM,UAAU,UAAU,QAAQ,UAAU,QAAQ;AACpD,UAAM,aAAa,oBAAoB,UAAU,QAAQ,WAAW;AAEpE,UAAM,QACJ,gBAAAJ;AAAA,MAAC;AAAA,uCACK,aADL;AAAA,QAEC;AAAA,QACA,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,MAAM,mCAAS;AAAA,QACf;AAAA,QACA;AAAA,QACA,SAAS,eAAe,UAAU;AAAA,QAClC,gBAAgB,CAAC,eAAe,cAAc;AAAA,QAC9C,UAAU,CAAC,UAAU;AAxL7B,cAAAG;AAyLU,+CAAW;AACX,cAAI,MAAM,OAAO,SAAS;AACxB,aAAAA,MAAA,mCAAS,kBAAT,gBAAAA,IAAA,cAAyB;AAAA,UAC3B;AAAA,QACF;AAAA,QACA,WAAU;AAAA;AAAA,IACZ;AAGF,WACE,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW;AAAA,UACT,eAAe,cACX,wQACA,qBAAqB,EAAE,SAAS,gBAAgB,CAAC;AAAA,UACrD,eAAe,cAAc,iBAAiB,aAAa,gBAAgB;AAAA,UAC3E,WAAW,kCAAkC;AAAA,UAC7C;AAAA,QACF;AAAA,QAEC;AAAA,yBAAe,cACd,QAEA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,aAAa,cAAc;AAAA,cAC7B;AAAA,cAEC;AAAA;AAAA,gBACD,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,eAAW;AAAA,oBACX,WAAU;AAAA;AAAA,gBACZ;AAAA,gBACA,gBAAAA,MAAC,UAAK,WAAW,qBAAqB,EAAE,KAAK,CAAC,GAC5C,0BAAAA,MAAC,UAAK,WAAU,qGAAoG,GACtH;AAAA;AAAA;AAAA,UACF;AAAA,WAEA,SAAS,gBACT,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,eAAe,cAAc,UAAU;AAAA,cACzC;AAAA,cAEC;AAAA,yBACC,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW;AAAA,sBACT,eAAe,cACX,iBACA;AAAA,wBACE;AAAA,wBACA,SAAS,QAAQ;AAAA,wBACjB,SAAS,QAAQ;AAAA,wBACjB,SAAS,QAAQ;AAAA,sBACnB;AAAA,oBACN;AAAA,oBAEC;AAAA;AAAA,gBACH;AAAA,gBAED,eACC,gBAAAA,MAAC,UAAK,WAAU,4DACb,uBACH;AAAA;AAAA;AAAA,UAEJ;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;;;AChQlB,gBAAAK,OAOM,QAAAC,cAPN;AADF,IAAM,cAAc,CAAC,EAAE,UAAU,MAC/B,gBAAAD,MAAC,SAAI,WAAW,sDAAsD,SAAS,IAAI;AAG9E,SAAS,sBAAsB,EAAE,QAAQ,EAAE,GAAuB;AACvE,SACE,gBAAAA,MAAC,SAAI,WAAU,UACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAC,OAAC,SAAY,WAAU,4FACrB;AAAA,oBAAAD,MAAC,eAAY,WAAU,iCAAgC;AAAA,IACvD,gBAAAA,MAAC,eAAY,WAAU,aAAY;AAAA,OAF3B,CAGV,CACD,GACH;AAEJ;AAEO,SAAS,yBAAyB,EAAE,QAAQ,EAAE,GAAuB;AAC1E,SACE,gBAAAA,MAAC,SAAI,WAAU,UACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAC,OAAC,SAAY,WAAU,sGACrB;AAAA,oBAAAD,MAAC,eAAY,WAAU,aAAY;AAAA,IACnC,gBAAAA,MAAC,eAAY,WAAU,+BAA8B;AAAA,OAF7C,CAGV,CACD,GACH;AAEJ;AAEO,SAAS,iBAAiB,EAAE,QAAQ,EAAE,GAAuB;AAClE,SACE,gBAAAA,MAAC,SAAI,WAAU,+DACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAC,OAAC,SAAY,WAAU,uBACrB;AAAA,oBAAAD,MAAC,eAAY,WAAU,kCAAiC;AAAA,IACxD,gBAAAA,MAAC,eAAY,WAAU,cAAa;AAAA,IACpC,gBAAAA,MAAC,eAAY,WAAU,eAAc;AAAA,OAH7B,CAIV,CACD,GACH;AAEJ;AAEO,SAAS,aAAa,EAAE,QAAQ,EAAE,GAAuB;AAC9D,SACE,gBAAAA,MAAC,SAAI,WAAU,oBACZ,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAC,OAAC,SAAY,WAAU,+GACrB;AAAA,oBAAAA,OAAC,SAAI,WAAU,2BACb;AAAA,sBAAAD,MAAC,eAAY,WAAU,mCAAkC;AAAA,MACzD,gBAAAC,OAAC,SAAI,WAAU,uBACb;AAAA,wBAAAD,MAAC,eAAY,WAAU,YAAW;AAAA,QAClC,gBAAAA,MAAC,eAAY,WAAU,YAAW;AAAA,SACpC;AAAA,OACF;AAAA,IACA,gBAAAC,OAAC,SAAI,WAAU,4BACb;AAAA,sBAAAD,MAAC,eAAY,WAAU,cAAa;AAAA,MACpC,gBAAAA,MAAC,eAAY,WAAU,eAAc;AAAA,OACvC;AAAA,OAXQ,CAYV,CACD,GACH;AAEJ;AAEO,SAAS,cAAc,EAAE,QAAQ,EAAE,GAAuB;AAC/D,SACE,gBAAAA,MAAC,SAAI,WAAU,iFACb,0BAAAA,MAAC,SAAI,WAAU,mBACb,0BAAAC,OAAC,WAAM,WAAU,4BACf;AAAA,oBAAAD,MAAC,WAAM,WAAU,iGACf,0BAAAC,OAAC,QACC;AAAA,sBAAAD,MAAC,QAAG,WAAU,yBAAwB,gBAAE;AAAA,MACxC,gBAAAA,MAAC,QAAG,WAAU,yBAAwB,mBAAK;AAAA,MAC3C,gBAAAA,MAAC,QAAG,WAAU,yBAAwB,kBAAI;AAAA,MAC1C,gBAAAA,MAAC,QAAG,WAAU,yBAAwB,sBAAQ;AAAA,MAC9C,gBAAAA,MAAC,QAAG,WAAU,yBAAwB,mBAAK;AAAA,MAC3C,gBAAAA,MAAC,QAAG,WAAU,yBAAwB,mBAAK;AAAA,MAC3C,gBAAAA,MAAC,QAAG,WAAU,yBAAwB,yBAAW;AAAA,OACnD,GACF;AAAA,IACA,gBAAAA,MAAC,WAAM,WAAU,iDACd,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAC,OAAC,QACC;AAAA,sBAAAD,MAAC,QAAG,WAAU,aAAY,0BAAAA,MAAC,eAAY,WAAU,WAAU,GAAE;AAAA,MAC7D,gBAAAA,MAAC,QAAG,WAAU,aAAY,0BAAAA,MAAC,eAAY,WAAU,oBAAmB,GAAE;AAAA,MACtE,gBAAAA,MAAC,QAAG,WAAU,aAAY,0BAAAA,MAAC,eAAY,WAAU,YAAW,GAAE;AAAA,MAC9D,gBAAAA,MAAC,QAAG,WAAU,aAAY,0BAAAA,MAAC,eAAY,WAAU,YAAW,GAAE;AAAA,MAC9D,gBAAAA,MAAC,QAAG,WAAU,aAAY,0BAAAA,MAAC,eAAY,WAAU,YAAW,GAAE;AAAA,MAC9D,gBAAAA,MAAC,QAAG,WAAU,aAAY,0BAAAA,MAAC,eAAY,WAAU,YAAW,GAAE;AAAA,MAC9D,gBAAAA,MAAC,QAAG,WAAU,aAAY,0BAAAA,MAAC,eAAY,WAAU,YAAW,GAAE;AAAA,SAPvD,CAQT,CACD,GACH;AAAA,KACF,GACF,GACF;AAEJ;;;ACnGA,OAAOE,aAAW;AAClB,SAAS,cAAc;AACvB,SAAS,SAAAC,cAAuC;AA6CpC,SAQuB,OAAAC,OARvB,QAAAC,cAAA;AA3BZ,SAAS,QAAQ,GAAW,aAA+B;AACzD,MAAI,IAAI,YAAa,QAAO;AAC5B,MAAI,MAAM,YAAa,QAAO;AAC9B,SAAO;AACT;AAEA,IAAM,YAAsC;AAAA,EAC1C,MAAM;AAAA,EACN,SACE;AAAA,EACF,UACE;AACJ;AAEA,IAAM,YAAsC;AAAA,EAC1C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AACZ;AAEO,SAAS,kBAAkB,EAAE,OAAO,aAAa,UAAU,GAAiB;AACjF,SACE,gBAAAD,MAAC,SAAI,cAAW,YAAW,WAAW,GAAG,gCAAgC,SAAS,GAC/E,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,UAAM,OAAO,QAAQ,GAAG,WAAW;AACnC,WACE,gBAAAC,OAACC,QAAM,UAAN,EACC;AAAA,sBAAAD,OAAC,SAAI,WAAU,uCACb;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,gBAAc,SAAS,YAAY,SAAS;AAAA,YAC5C,WAAW;AAAA,cACT;AAAA,cACA,UAAU,IAAI;AAAA,YAChB;AAAA,YAEC,mBAAS,SAAS,gBAAAA,MAACG,QAAA,EAAM,MAAM,IAAI,aAAa,GAAG,IAAK,gBAAAH,MAAC,UAAM,cAAI,GAAE;AAAA;AAAA,QACxE;AAAA,QACA,gBAAAA,MAAC,SAAI,WAAU,oCACb,0BAAAA,MAAC,UAAK,WAAW,GAAG,oFAAoF,UAAU,IAAI,CAAC,GACpH,eAAK,OACR,GACF;AAAA,SACF;AAAA,MACC,IAAI,MAAM,SAAS,KAClB,gBAAAA,MAAC,SAAI,WAAU,sFACb,0BAAAA;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,SAAS;AAAA,UACT,SAAS,EAAE,OAAO,IAAI,cAAc,SAAS,KAAK;AAAA,UAClD,WAAU;AAAA,UACV,YAAY,EAAE,UAAU,KAAK,MAAM,YAAY;AAAA;AAAA,MACjD,GACF;AAAA,SAzBiB,CA2BrB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEO,SAAS,gBAAgB,EAAE,OAAO,aAAa,UAAU,GAAiB;AAC/E,SACE,gBAAAA,MAAC,SAAI,cAAW,YAAW,WAAW,GAAG,aAAa,SAAS,GAC5D,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,UAAM,OAAO,QAAQ,GAAG,WAAW;AACnC,WACE,gBAAAC,OAAC,SAAY,WAAU,kCACpB;AAAA,UAAI,MAAM,SAAS,KAClB,gBAAAD,MAAC,SAAI,WAAU,uFACb,0BAAAA;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,SAAS;AAAA,UACT,SAAS,EAAE,QAAQ,IAAI,cAAc,SAAS,KAAK;AAAA,UACnD,WAAU;AAAA,UACV,YAAY,EAAE,UAAU,IAAI;AAAA;AAAA,MAC9B,GACF;AAAA,MAEF,gBAAAA;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,gBAAc,SAAS,YAAY,SAAS;AAAA,UAC5C,SAAS,EAAE,OAAO,SAAS,YAAY,OAAO,EAAE;AAAA,UAChD,WAAW;AAAA,YACT;AAAA,YACA,SAAS,UAAU,SAAS,YACxB,gEACA;AAAA,UACN;AAAA,UAEC,mBAAS,SACR,gBAAAA,MAACG,QAAA,EAAM,MAAM,IAAI,aAAa,GAAG,WAAU,iCAAgC,IAE3E,gBAAAH,MAAC,SAAI,WAAW,GAAG,4BAA4B,SAAS,YAAY,8BAA8B,8BAA8B,GAAG;AAAA;AAAA,MAEvI;AAAA,MACA,gBAAAC,OAAC,SAAI,WAAU,iBACb;AAAA,wBAAAD,MAAC,QAAG,WAAW,GAAG,mEAAmE,UAAU,IAAI,CAAC,GACjG,eAAK,OACR;AAAA,QACA,gBAAAA,MAAC,OAAE,WAAU,+DAA+D,eAAK,aAAY;AAAA,SAC/F;AAAA,SAhCQ,CAiCV;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEO,SAAS,gBAAgB,EAAE,OAAO,YAAY,GAAiB;AACpE,QAAM,YAAa,cAAc,KAAK,MAAM,SAAU;AACtD,SACE,gBAAAC,OAAC,SAAI,WAAU,oBACb;AAAA,oBAAAA,OAAC,SAAI,WAAU,kCACb;AAAA,sBAAAD,MAAC,SAAI,WAAU,6BACb,0BAAAC,OAAC,UAAK,WAAU,qEACb;AAAA,aAAK,MAAM,QAAQ;AAAA,QAAE;AAAA,SACxB,GACF;AAAA,MACA,gBAAAD,MAAC,SAAI,WAAU,cACZ,gBAAM,IAAI,CAAC,GAAG,MACb,gBAAAA;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UAEC,SAAS,EAAE,SAAS,KAAK,cAAc,IAAI,IAAI;AAAA,UAC/C,WAAU;AAAA;AAAA,QAFL;AAAA,MAGP,CACD,GACH;AAAA,OACF;AAAA,IACA,gBAAAA,MAAC,SAAI,WAAU,4EACb,0BAAAA;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,SAAS;AAAA,QACT,SAAS,EAAE,OAAO,GAAG,QAAQ,IAAI;AAAA,QACjC,WAAU;AAAA,QACV,YAAY,EAAE,MAAM,UAAU,QAAQ,GAAG,UAAU,IAAI;AAAA;AAAA,IACzD,GACF;AAAA,KACF;AAEJ;AACO,SAAS,WAAW,EAAE,OAAO,YAAY,GAAiB;AAC/D,SACE,gBAAAA,MAAC,SAAI,WAAU,kHACZ,gBAAM,IAAI,CAAC,GAAG,MAAM;AACnB,UAAM,OAAO,QAAQ,GAAG,WAAW;AACnC,WACE,gBAAAA;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QAEC,SAAS,EAAE,OAAO,SAAS,YAAY,KAAK,GAAG;AAAA,QAC/C,WAAW;AAAA,UACT;AAAA,UACA,SAAS,UAAU,SAAS,YAAY,8BAA8B;AAAA,QACxE;AAAA,QACA,YAAY,EAAE,MAAM,UAAU,WAAW,KAAK,SAAS,GAAG;AAAA;AAAA,MANrD;AAAA,IAOP;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEO,SAAS,iBAAiB,EAAE,OAAO,YAAY,GAAiB;AACrE,SACE,gBAAAA,MAAC,SAAI,WAAU,qBACZ,gBAAM,IAAI,CAAC,GAAG,MACb,gBAAAA,MAAC,SAAY,WAAU,sEACrB,0BAAAA;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC,SAAS;AAAA,MACT,SAAS,EAAE,GAAG,KAAK,cAAc,OAAO,QAAQ;AAAA,MAChD,WAAU;AAAA,MACV,YAAY,EAAE,UAAU,IAAI;AAAA;AAAA,EAC9B,KANQ,CAOV,CACD,GACH;AAEJ;AAEO,SAAS,kBAAkB,EAAE,OAAO,YAAY,GAAiB;AACtE,SACE,gBAAAA,MAAC,SAAI,cAAW,YAAW,WAAU,UACnC,0BAAAA,MAAC,SAAI,WAAU,kCACZ,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,UAAM,OAAO,QAAQ,GAAG,WAAW;AAEnC,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QAEC,WAAU;AAAA,QAEV;AAAA,0BAAAD;AAAA,YAAC,OAAO;AAAA,YAAP;AAAA,cACC,SAAS;AAAA,gBACP,SAAS,SAAS,aAAa,OAAO;AAAA,gBACtC,OAAO,SAAS,YAAY,IAAI;AAAA,cAClC;AAAA,cACA,YAAY,EAAE,UAAU,KAAK;AAAA,cAC7B,WAAW;AAAA,gBACT;AAAA,gBACA,SAAS,aACP;AAAA,gBACF,SAAS,UACP;AAAA,gBACF,SAAS,cACP;AAAA,cACJ;AAAA,cAEA,0BAAAA,MAAC,UAAK,WAAU,qBAAqB,eAAK,OAAM;AAAA;AAAA,UAClD;AAAA,UAEC,IAAI,MAAM,SAAS,KAClB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MA1BG;AAAA,IA4BP;AAAA,EAEJ,CAAC,GACH,GACF;AAEJ;AAEO,SAAS,gBAAgB,EAAE,OAAO,YAAY,GAAiB;AACpE,SACE,gBAAAA,MAAC,SAAI,cAAW,YAAW,WAAU,cAClC,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,UAAM,OAAO,QAAQ,GAAG,WAAW;AACnC,WACE,gBAAAC,OAAC,SAAY,WAAU,uBACpB;AAAA,UAAI,MAAM,SAAS,KAClB,gBAAAD,MAAC,SAAI,WAAW,GAAG,2EAA2E,IAAI,cAAc,8BAA8B,8BAA8B,GAAG;AAAA,MAEjL,gBAAAA;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,SAAS,EAAE,OAAO,SAAS,YAAY,MAAM,EAAE;AAAA,UAC/C,WAAW;AAAA,YACT;AAAA,YACA,SAAS,UAAU,SAAS,YACxB,4DACA;AAAA,UACN;AAAA,UAEC,mBAAS,SACR,gBAAAA,MAACG,QAAA,EAAM,MAAM,IAAI,aAAa,GAAG,WAAU,iCAAgC,IAE3E,gBAAAH,MAAC,UAAK,WAAW,GAAG,qBAAqB,SAAS,YAAY,kCAAkC,eAAe,GAAI,cAAI,GAAE;AAAA;AAAA,MAE7H;AAAA,MACA,gBAAAC,OAAC,SAAI,WAAW,GAAG,+BAA+B,SAAS,aAAa,6BAA6B,2BAA2B,GAC9H;AAAA,wBAAAD,MAAC,QAAG,WAAU,+EAA+E,eAAK,OAAM;AAAA,QACxG,gBAAAA,MAAC,OAAE,WAAU,iDAAiD,eAAK,aAAY;AAAA,SACjF;AAAA,SAtBQ,CAuBV;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEO,SAAS,mBAAmB,EAAE,OAAO,aAAa,YAAY,GAAiB;AACpF,SACE,gBAAAA,MAAC,SAAI,WAAU,wBACZ,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,UAAM,OAAO,QAAQ,GAAG,WAAW;AACnC,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,2CAAc;AAAA,QAC7B,WAAW;AAAA,UACT;AAAA,UACA,SAAS,YACL,8FACA;AAAA,QACN;AAAA,QAEA;AAAA,0BAAAA,OAAC,UAAK,WAAW,GAAG,mDAAmD,SAAS,YAAY,kBAAkB,wEAAwE,GAAG;AAAA;AAAA,YAC/K,IAAI;AAAA,aACd;AAAA,UACA,gBAAAD,MAAC,UAAK,WAAU,sBAAsB,eAAK,OAAM;AAAA,UAChD,SAAS,UACR,gBAAAA,MAAC,OAAO,KAAP,EAAW,UAAS,eAAc,WAAU,+GAC3C,0BAAAA,MAACG,QAAA,EAAM,MAAM,IAAI,aAAa,GAAG,GACnC;AAAA;AAAA;AAAA,MAhBG;AAAA,IAkBP;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AClTA,YAAYC,aAAW;AACvB,SAAS,OAAAC,aAA8B;AAyG/B,gBAAAC,OAeA,QAAAC,cAfA;AAtGR,IAAM,sBAAsBC;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,KAAK;AAAA,EAChC;AACF;AAEA,IAAM,sBAAsBA;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,KAAK;AAAA,EAChC;AACF;AAYA,IAAM,SAAe;AAAA,EACnB,CACE,IAaA,QACG;AAdH,iBACE;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAjEN,IAuDI,IAWK,kBAXL,IAWK;AAAA,MAVH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,cAAoB,cAAM;AAChC,UAAM,WAAW,kBAAM;AACvB,UAAM,eAAe,YAAY;AACjC,UAAM,CAAC,qBAAqB,sBAAsB,IAAU,iBAAS,cAAc;AACnF,UAAM,YAAY,eAAe,UAAU;AAC3C,UAAM,QAAQ,YAAY,YAAY;AAEtC,UAAM,SAAS,MAAM;AACnB,UAAI,SAAU;AACd,YAAM,OAAO,CAAC;AACd,UAAI,CAAC,aAAc,wBAAuB,IAAI;AAC9C,yDAAkB;AAAA,IACpB;AAEA,UAAM,gBACJ,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,MAAK;AAAA,QACL,gBAAc;AAAA,QACd,mBAAiB,QAAQ,GAAG,QAAQ,WAAW;AAAA,QAC/C,oBAAkB,cAAc,GAAG,QAAQ,iBAAiB;AAAA,QAC5D;AAAA,QACA,cAAY;AAAA,QACZ,WAAW,GAAG,oBAAoB,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA,QACtD,SAAS,CAAC,UAAU;AAClB,iBAAO;AACP,6CAAU;AAAA,QACZ;AAAA,QACA,WAAW,CAAC,UAAU;AACpB,cAAI,MAAM,QAAQ,KAAK;AACrB,kBAAM,eAAe;AACrB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,SACI,QArBL;AAAA,QAuBC,0BAAAA,MAAC,UAAK,cAAY,OAAO,WAAW,oBAAoB,EAAE,KAAK,CAAC,GAAG;AAAA;AAAA,IACrE;AAGF,QAAI,CAAC,SAAS,CAAC,aAAa;AAC1B,aAAO;AAAA,IACT;AAEA,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,YAAY;AAAA,QACd;AAAA,QAEA;AAAA,0BAAAA,OAAC,SAAI,WAAU,iCACZ;AAAA,qBACC,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI,GAAG,QAAQ;AAAA,gBACf,SAAS;AAAA,gBACT,WAAW;AAAA,kBACT;AAAA,kBACA,CAAC,YAAY;AAAA,gBACf;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA,YAED,eACC,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI,GAAG,QAAQ;AAAA,gBACf,WAAU;AAAA,gBAET;AAAA;AAAA,YACH;AAAA,aAEJ;AAAA,UACC;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;;;ACpJrB,OAAOG,WAAS,iBAAAC,gBAAe,cAAAC,aAAY,YAAAC,kBAAgB;AAiCrD,gBAAAC,OAoGA,QAAAC,cApGA;AAvBN,IAAM,cAAcC,eAAsC,IAAI;AAE9D,SAAS,UAAU;AACjB,QAAM,UAAUC,YAAW,WAAW;AACtC,MAAI,CAAC,QAAS,QAAO,EAAE,WAAW,IAAI,cAAc,MAAM;AAAA,EAAC,GAAG,SAAS,IAAI,KAAK,GAAG;AACnF,SAAO;AACT;AAEO,SAAS,KAAK;AAAA,EACnB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AACF,GAKG;AACD,QAAM,CAAC,WAAW,YAAY,IAAIC,WAAS,YAAY;AACvD,QAAM,MAAMC,QAAM,MAAM;AACxB,SACE,gBAAAL,MAAC,YAAY,UAAZ,EAAqB,OAAO,EAAE,WAAW,cAAc,SAAS,IAAI,GACnE,0BAAAA,MAAC,SAAI,WAAW,GAAG,YAAY,aAAa,eAAe,uBAAuB,SAAS,GACxF,UACH,GACF;AAEJ;AAEO,SAAS,SAAS,EAAE,UAAU,UAAU,GAAsD;AACnG,QAAM,EAAE,QAAQ,IAAI,QAAQ;AAE5B,QAAM,gBAAwC;AAAA,IAC5C,WAAW;AAAA,IACX,MAAM;AAAA,IACN,WAAW;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,MAAM;AAAA,EACR;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,oBAAkB,YAAY,aAAa,aAAa;AAAA,MACxD,WAAW,GAAG,cAAc,OAAO,GAAG,SAAS;AAAA,MAE9C;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AACF,GAMG;AACD,QAAM,EAAE,WAAW,cAAc,SAAS,IAAI,IAAI,QAAQ;AAC1D,QAAM,WAAW,cAAc;AAE/B,QAAM,gBAAwC;AAAA,IAC5C,WAAW;AAAA,MACT;AAAA,MACA,WAAW,kCAAkC;AAAA,IAC/C;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA,WAAW,sEAAsE;AAAA,IACnF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,WAAW,sEAAsE;AAAA,IACnF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,WAAW,oEAAoE;AAAA,IACjF;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,MACA,WAAW,4DAA4D;AAAA,IACzE;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA,WAAW,kCAAkC;AAAA,IAC/C;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA,WAAW,kCAAkC;AAAA,IAC/C;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,WAAW,gGAAgG;AAAA,IAC7G;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA,WAAW,4DAA4D;AAAA,IACzE;AAAA,EACF;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAK;AAAA,MACL,IAAI,GAAG,GAAG,QAAQ,KAAK;AAAA,MACvB,iBAAe;AAAA,MACf,iBAAe,GAAG,GAAG,UAAU,KAAK;AAAA,MACpC,UAAU,WAAW,IAAI;AAAA,MACzB,SAAS,MAAM,aAAa,KAAK;AAAA,MACjC,WAAW,GAAG,yBAAyB,cAAc,OAAO,KAAK,cAAc,WAAW,GAAG,SAAS;AAAA,MAEtG;AAAA,wBAAAA,OAAC,SAAI,WAAU,2BACZ;AAAA,kBAAQ,gBAAAD,MAAC,QAAK,MAAM,YAAY,SAAS,KAAK,IAAI;AAAA,UACnD,gBAAAA,MAAC,UAAM,iBAAM;AAAA,UACZ,SACC,gBAAAA,MAAC,UAAK,WAAW,GAAG,gFAAgF,WAAW,iCAAiC,YAAY,GACzJ,iBACH;AAAA,WAEJ;AAAA,QACC,YAAY,eAAe,YAC1B,gBAAAA,MAAC,SAAI,WAAU,uGAAsG;AAAA;AAAA;AAAA,EAEzH;AAEJ;AAEO,SAAS,YAAY,EAAE,OAAO,UAAU,UAAU,GAAqE;AAC5H,QAAM,EAAE,WAAW,IAAI,IAAI,QAAQ;AACnC,MAAI,cAAc,MAAO,QAAO;AAChC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,IAAI,GAAG,GAAG,UAAU,KAAK;AAAA,MACzB,mBAAiB,GAAG,GAAG,QAAQ,KAAK;AAAA,MACpC,UAAU;AAAA,MACV,WAAW,GAAG,uEAAuE,SAAS;AAAA,MAE7F;AAAA;AAAA,EACH;AAEJ;;;ACnKA,YAAYM,aAAW;AACvB,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,OAAAC,aAA8B;AAyHjC,SAgGF,YAAAC,WAhGE,OAAAC,OAkFF,QAAAC,cAlFE;AAtHN,IAAM,kBAAkBC;AAAA,EACtB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,OAAO,MAAM,MAAM;AAAA,EACjD;AACF;AAKA,IAAM,mBAAmB;AACzB,IAAM,aAAa;AAanB,SAAS,mBACP,aACA,aACA,MACA,OACA,YACA;AACA,QAAM,SAAS,aAAa;AAC5B,MAAI,MAAM;AACV,MAAI,OAAO;AAEX,MAAI,SAAS,OAAO;AAClB,UAAM,YAAY,MAAM,YAAY,SAAS;AAC7C,WAAO,uBAAuB,aAAa,aAAa,KAAK;AAAA,EAC/D,WAAW,SAAS,UAAU;AAC5B,UAAM,YAAY,SAAS;AAC3B,WAAO,uBAAuB,aAAa,aAAa,KAAK;AAAA,EAC/D,WAAW,SAAS,QAAQ;AAC1B,UAAM,qBAAqB,aAAa,aAAa,KAAK;AAC1D,WAAO,YAAY,OAAO,YAAY,QAAQ;AAAA,EAChD,OAAO;AACL,UAAM,qBAAqB,aAAa,aAAa,KAAK;AAC1D,WAAO,YAAY,QAAQ;AAAA,EAC7B;AAEA,QAAM,UAAU,OAAO,aAAa,YAAY,QAAQ;AACxD,QAAM,SAAS,OAAO,cAAc,YAAY,SAAS;AAEzD,SAAO;AAAA,IACL,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,gBAAgB,GAAG,MAAM;AAAA,IACrD,MAAM,KAAK,IAAI,KAAK,IAAI,MAAM,gBAAgB,GAAG,OAAO;AAAA,EAC1D;AACF;AAEA,SAAS,uBACP,aACA,aACA,OACA;AACA,MAAI,UAAU,QAAS,QAAO,YAAY;AAC1C,MAAI,UAAU,MAAO,QAAO,YAAY,QAAQ,YAAY;AAC5D,SAAO,YAAY,OAAO,YAAY,QAAQ,IAAI,YAAY,QAAQ;AACxE;AAEA,SAAS,qBACP,aACA,aACA,OACA;AACA,MAAI,UAAU,QAAS,QAAO,YAAY;AAC1C,MAAI,UAAU,MAAO,QAAO,YAAY,SAAS,YAAY;AAC7D,SAAO,YAAY,MAAM,YAAY,SAAS,IAAI,YAAY,SAAS;AACzE;AAEA,SAAS,aAAa,EAAE,KAAK,GAA0B;AACrD,QAAM,WAAW;AAAA,IACf,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,EACT,EAAE,IAAI;AAEN,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,MACX,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAA,MAAC,UAAK,MAAK,gBAAe,GAAE,oBAAmB;AAAA;AAAA,EACjD;AAEJ;AAEA,SAAS,QAAQ;AAAA,EACf;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX;AACF,GAAiB;AACf,QAAM,CAAC,MAAM,OAAO,IAAU,iBAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAU,iBAAS,KAAK;AAClD,QAAM,CAAC,SAAS,UAAU,IAAU,iBAAS,KAAK;AAClD,QAAM,CAAC,UAAU,WAAW,IAAU,iBAAS,EAAE,KAAK,OAAO,MAAM,MAAM,CAAC;AAC1E,QAAM,aAAmB,eAA6C,IAAI;AAC1E,QAAM,aAAmB,eAAwB,IAAI;AACrD,QAAM,aAAmB,eAAuB,IAAI;AACpD,QAAM,KAAW,cAAM;AAEvB,EAAM,kBAAU,MAAM,WAAW,IAAI,GAAG,CAAC,CAAC;AAE1C,QAAM,aAAa,MAAM;AACvB,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAC/B,iBAAW,UAAU;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,iBAAuB,oBAAY,MAAM;AAC7C,UAAMG,WAAU,WAAW;AAC3B,UAAM,UAAU,WAAW;AAC3B,QAAI,CAACA,YAAW,CAAC,QAAS;AAE1B,UAAM,cAAcA,SAAQ,sBAAsB;AAClD,UAAM,cAAc,QAAQ,sBAAsB;AAClD,gBAAY,mBAAmB,aAAa,aAAa,MAAM,OAAO,UAAU,CAAC;AACjF,0BAAsB,MAAM,WAAW,IAAI,CAAC;AAAA,EAC9C,GAAG,CAAC,MAAM,OAAO,UAAU,CAAC;AAE5B,QAAM,OAAO,MAAM;AACjB,QAAI,SAAU;AACd,eAAW;AACX,eAAW,UAAU,WAAW,MAAM;AACpC,iBAAW,KAAK;AAChB,cAAQ,IAAI;AAAA,IACd,GAAG,aAAa;AAAA,EAClB;AAEA,QAAM,OAAO,MAAM;AACjB,eAAW;AACX,eAAW,KAAK;AAChB,YAAQ,KAAK;AAAA,EACf;AAEA,EAAM,kBAAU,MAAM,YAAY,CAAC,CAAC;AAEpC,EAAM,wBAAgB,MAAM;AAC1B,QAAI,CAAC,KAAM;AACX,mBAAe;AACf,UAAM,eAAe,MAAM,eAAe;AAC1C,WAAO,iBAAiB,UAAU,cAAc,IAAI;AACpD,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,cAAc,IAAI;AACvD,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,MAAM,gBAAgB,OAAO,CAAC;AAElC,QAAM,QAAc,iBAAS,KAAK,QAAQ;AAC1C,QAAM,UAAgB,uBAAe,KAAK,IAChC;AAAA,IACJ;AAAA,IACA,EAAE,oBAAoB,QAAQ,UAAU,KAAK,OAAU;AAAA,EACzD,IACA;AAEJ,QAAM,cAAc,OAClB,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,MAAK;AAAA,MACL,eAAa,CAAC;AAAA,MACd,OAAO,EAAE,KAAK,SAAS,KAAK,MAAM,SAAS,KAAK;AAAA,MAChD,WAAW,GAAG,gBAAgB,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,MAE1D;AAAA;AAAA,QACD,gBAAAD,MAAC,gBAAa,MAAY;AAAA;AAAA;AAAA,EAC5B,IACE;AAEJ,SACE,gBAAAC,OAAAF,WAAA,EACE;AAAA,oBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAU;AAAA,QACV,cAAc;AAAA,QACd,cAAc;AAAA,QACd,SAAS;AAAA,QACT,QAAQ;AAAA,QAEP;AAAA;AAAA,IACH;AAAA,IACC,WAAW,cAAcI,cAAa,aAAa,SAAS,IAAI,IAAI;AAAA,KACvE;AAEJ;","names":["React","jsx","jsxs","React","useState","jsx","jsxs","useState","_a","React","jsx","jsxs","_a","React","cva","jsx","cva","React","cva","jsx","cva","React","cva","jsx","cva","React","Check","cva","jsx","jsxs","cva","Check","useState","Check","jsx","jsxs","useState","Check","useMemo","useState","ArrowUpDown","Filter","Search","X","React","cva","jsx","cva","React","ChevronRight","jsx","jsxs","ChevronRight","useState","ChevronDown","jsx","jsxs","useState","ChevronDown","React","useState","useRef","Check","jsx","jsxs","jsx","jsxs","useState","useMemo","Search","Filter","X","ArrowUpDown","React","createContext","useContext","useState","useEffect","User","Plus","jsx","jsxs","createContext","useState","useEffect","useContext","React","User","Plus","jsx","jsxs","React","cva","jsx","jsxs","cva","jsx","jsxs","React","Check","cva","jsx","jsxs","cva","Check","React","createPortal","cva","X","jsx","jsxs","cva","_a","_b","X","createPortal","React","cva","jsx","jsxs","cva","React","cva","jsx","jsxs","cva","_a","_b","jsx","jsxs","React","Check","jsx","jsxs","React","Check","React","cva","jsx","jsxs","cva","React","createContext","useContext","useState","jsx","jsxs","createContext","useContext","useState","React","React","createPortal","cva","Fragment","jsx","jsxs","cva","trigger","createPortal"]}
|