@doscientos/ui 0.1.29 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +243 -140
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.js +218 -121
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hooks/use-autosave.ts","../src/hooks/use-debounced-value.ts","../src/hooks/use-form-dirty.ts","../src/lib/action-ripple.ts","../src/lib/cn.ts","../src/lib/text-match.ts","../src/ui/accordion/accordion.tsx","../src/ui/alert-dialog/alert-dialog.tsx","../src/ui/button/button.tsx","../src/ui/button/button-variants.ts","../src/ui/dialog/dialog.tsx","../src/ui/alert/alert-variants.ts","../src/ui/alert/alert.tsx","../src/ui/app-shell/app-shell.tsx","../src/ui/avatar/avatar.tsx","../src/ui/badge/badge.tsx","../src/ui/badge/badge-variants.ts","../src/ui/breadcrumb/breadcrumb.tsx","../src/ui/separator/separator.tsx","../src/ui/button-group/button-group-variants.ts","../src/ui/button-group/button-group.tsx","../src/ui/card/card.tsx","../src/ui/checkbox/checkbox.tsx","../src/ui/collapsible/collapsible.tsx","../src/ui/combobox/combobox.tsx","../src/ui/command/command.tsx","../src/ui/confirm-dialog/confirm-dialog.tsx","../src/ui/danger-zone/danger-zone.tsx","../src/ui/doc-preview/doc-preview.tsx","../src/ui/dropdown-menu/dropdown-menu.tsx","../src/ui/empty-state/empty-state-variants.ts","../src/ui/empty-state/empty-state.tsx","../src/ui/label/label.tsx","../src/ui/field/field-variants.ts","../src/ui/field/field.tsx","../src/ui/form-feedback/form-feedback.tsx","../src/ui/form-feedback/use-form-feedback.ts","../src/ui/form-row/form-row.tsx","../src/ui/icon-button/icon-button.tsx","../src/ui/tooltip/tooltip.tsx","../src/ui/input-group/input-group.tsx","../src/ui/input/input.tsx","../src/ui/textarea/textarea.tsx","../src/ui/input-group/input-group-addon-variants.ts","../src/ui/kbd/kbd.tsx","../src/ui/loading-overlay/loading-overlay.tsx","../src/ui/menu/menu.tsx","../src/ui/metric-card/metric-card.tsx","../src/ui/otp-input/otp-input.tsx","../src/ui/page-header/page-header.tsx","../src/ui/pagination/pagination.tsx","../src/ui/popover/popover.tsx","../src/ui/quantity-input/quantity-input.tsx","../src/ui/select/select.tsx","../src/ui/sheet/sheet.tsx","../src/ui/sidebar/sidebar.tsx","../src/ui/sidebar/sidebar-context.ts","../src/ui/skeleton/skeleton.tsx","../src/ui/submit-button/submit-button.tsx","../src/ui/switch/switch.tsx","../src/ui/table/table.tsx","../src/ui/tabs/tabs.tsx","../src/ui/toast/toast.tsx","../src/ui/toast/toast-store.ts","../src/ui/toolbar/toolbar.tsx"],"sourcesContent":["export * from './hooks/use-autosave'\nexport * from './hooks/use-debounced-value'\nexport * from './hooks/use-form-dirty'\nexport * from './lib/action-ripple'\nexport * from './lib/cn'\nexport * from './lib/text-match'\nexport * from './ui/accordion/accordion'\nexport * from './ui/alert-dialog/alert-dialog'\nexport * from './ui/alert/alert'\nexport * from './ui/alert/alert-variants'\nexport * from './ui/app-shell/app-shell'\nexport * from './ui/avatar/avatar'\nexport * from './ui/badge/badge'\nexport * from './ui/badge/badge-variants'\nexport * from './ui/breadcrumb/breadcrumb'\nexport * from './ui/button-group/button-group'\nexport * from './ui/button-group/button-group-variants'\nexport * from './ui/button/button'\nexport * from './ui/button/button-variants'\nexport * from './ui/card/card'\nexport * from './ui/checkbox/checkbox'\nexport * from './ui/collapsible/collapsible'\nexport * from './ui/combobox/combobox'\nexport * from './ui/command/command'\nexport * from './ui/confirm-dialog/confirm-dialog'\nexport * from './ui/danger-zone/danger-zone'\nexport * from './ui/dialog/dialog'\nexport * from './ui/doc-preview/doc-preview'\nexport * from './ui/dropdown-menu/dropdown-menu'\nexport * from './ui/empty-state/empty-state'\nexport * from './ui/empty-state/empty-state-variants'\nexport * from './ui/field/field'\nexport * from './ui/field/field-variants'\nexport * from './ui/form-feedback/form-feedback'\nexport * from './ui/form-feedback/use-form-feedback'\nexport * from './ui/form-row/form-row'\nexport * from './ui/icon-button/icon-button'\nexport * from './ui/input-group/input-group'\nexport * from './ui/input-group/input-group-addon-variants'\nexport * from './ui/input/input'\nexport * from './ui/kbd/kbd'\nexport * from './ui/label/label'\nexport * from './ui/loading-overlay/loading-overlay'\nexport * from './ui/menu/menu'\nexport * from './ui/metric-card/metric-card'\nexport * from './ui/otp-input/otp-input'\nexport * from './ui/page-header/page-header'\nexport * from './ui/pagination/pagination'\nexport * from './ui/popover/popover'\nexport * from './ui/quantity-input/quantity-input'\nexport * from './ui/select/select'\nexport * from './ui/separator/separator'\nexport * from './ui/sheet/sheet'\nexport * from './ui/sidebar/sidebar'\nexport * from './ui/sidebar/sidebar-context'\nexport * from './ui/skeleton/skeleton'\nexport * from './ui/submit-button/submit-button'\nexport * from './ui/switch/switch'\nexport * from './ui/table/table'\nexport * from './ui/tabs/tabs'\nexport * from './ui/textarea/textarea'\nexport * from './ui/toast/toast'\nexport * from './ui/toast/toast-store'\nexport * from './ui/toolbar/toolbar'\nexport * from './ui/tooltip/tooltip'\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nexport type AutosaveStatus = 'idle' | 'saving' | 'saved' | 'error'\n\nexport type UseAutosaveOptions<T> = {\n data: T\n onSave: (data: T) => Promise<void>\n debounceMs?: number\n enabled?: boolean\n serialize?: (data: T) => string\n}\n\n/** Debounced autosave with stale-value protection and an explicit `saveNow`. */\nexport function useAutosave<T>({\n data,\n onSave,\n debounceMs = 1_000,\n enabled = true,\n serialize = JSON.stringify,\n}: UseAutosaveOptions<T>) {\n const [status, setStatus] = useState<AutosaveStatus>('idle')\n const [error, setError] = useState<Error | null>(null)\n const lastSaved = useRef<string | null>(null)\n const saveRef = useRef(onSave)\n const serializeRef = useRef(serialize)\n\n useEffect(() => {\n saveRef.current = onSave\n serializeRef.current = serialize\n }, [onSave, serialize])\n\n const save = useCallback(async (value: T) => {\n setStatus('saving')\n setError(null)\n try {\n await saveRef.current(value)\n lastSaved.current = serializeRef.current(value)\n setStatus('saved')\n } catch (cause) {\n setError(cause instanceof Error ? cause : new Error('No se pudo guardar.'))\n setStatus('error')\n }\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const snapshot = serializeRef.current(data)\n if (lastSaved.current === null) {\n lastSaved.current = snapshot\n return\n }\n if (snapshot === lastSaved.current) return\n const timeout = window.setTimeout(() => void save(data), debounceMs)\n return () => window.clearTimeout(timeout)\n }, [data, debounceMs, enabled, save])\n\n return { status, error, saveNow: () => save(data) }\n}\n","import { useEffect, useState } from 'react'\n\n/** Returns a value only after it has been stable for the supplied delay. */\nexport function useDebouncedValue<T>(value: T, delay: number = 250) {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const timeout = window.setTimeout(() => setDebouncedValue(value), delay)\n return () => window.clearTimeout(timeout)\n }, [delay, value])\n\n return debouncedValue\n}\n","import { type RefCallback, useCallback, useRef, useState } from 'react'\n\nexport function formSnapshot(form: HTMLFormElement): string {\n const entries: Array<[string, string]> = Array.from(new FormData(form), ([key, value]) => [\n key,\n typeof value === 'string' ? value : value.name,\n ])\n entries.sort(([left], [right]) => left.localeCompare(right))\n return JSON.stringify(entries)\n}\n\nexport interface UseFormDirtyResult<T extends HTMLFormElement = HTMLFormElement> {\n formRef: RefCallback<T | null>\n isDirty: boolean\n markDirty: () => void\n reset: () => void\n}\n\n/** Tracks changes in native form controls and supports controlled fields. */\nexport function useFormDirty<T extends HTMLFormElement = HTMLFormElement>(): UseFormDirtyResult<T> {\n const formElement = useRef<T | null>(null)\n const baseline = useRef<string | null>(null)\n const [isDirty, setIsDirty] = useState(false)\n\n const recompute = useCallback(() => {\n if (formElement.current && baseline.current !== null) {\n setIsDirty(formSnapshot(formElement.current) !== baseline.current)\n }\n }, [])\n\n const reset = useCallback(() => {\n if (formElement.current) {\n baseline.current = formSnapshot(formElement.current)\n setIsDirty(false)\n }\n }, [])\n\n const formRef = useCallback<RefCallback<T | null>>(\n (form) => {\n if (formElement.current) {\n formElement.current.removeEventListener('input', recompute)\n formElement.current.removeEventListener('change', recompute)\n formElement.current.removeEventListener('reset', recompute)\n }\n formElement.current = form\n if (form) {\n baseline.current = formSnapshot(form)\n setIsDirty(false)\n form.addEventListener('input', recompute)\n form.addEventListener('change', recompute)\n form.addEventListener('reset', recompute)\n }\n },\n [recompute],\n )\n\n return { formRef, isDirty, markDirty: () => setIsDirty(true), reset }\n}\n","import { cva } from 'class-variance-authority'\n\n/**\n * Provides the clipping and stacking context for a transient action ripple.\n */\nexport const actionRipple = cva('relative isolate overflow-hidden')\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\n/** Merges conditional class names, resolving conflicting Tailwind utilities. */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","export type TextMatchPart = {\n text: string\n match: boolean\n}\n\nfunction normalize(value: string) {\n return value\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLocaleLowerCase()\n}\n\nfunction normalizedTextWithRanges(value: string) {\n const ranges: Array<{ start: number; end: number }> = []\n let normalized = ''\n let sourceIndex = 0\n\n for (const character of value) {\n const start = sourceIndex\n sourceIndex += character.length\n const normalizedCharacter = normalize(character)\n normalized += normalizedCharacter\n for (let index = 0; index < normalizedCharacter.length; index += 1) {\n ranges.push({ start, end: sourceIndex })\n }\n }\n\n return { normalized, ranges }\n}\n\n/**\n * Splits text into matching and non-matching chunks. Matching is case- and\n * accent-insensitive while preserving the original text for rendering.\n */\nexport function getTextMatchParts(text: string, query: string): TextMatchPart[] {\n const term = normalize(query.trim())\n if (!term) return [{ text, match: false }]\n\n const { normalized, ranges } = normalizedTextWithRanges(text)\n const parts: TextMatchPart[] = []\n let sourceCursor = 0\n let index = normalized.indexOf(term)\n\n while (index !== -1) {\n const rangeStart = ranges[index]?.start\n const rangeEnd = ranges[index + term.length - 1]?.end\n if (rangeStart === undefined || rangeEnd === undefined) break\n if (rangeStart > sourceCursor)\n parts.push({ text: text.slice(sourceCursor, rangeStart), match: false })\n parts.push({ text: text.slice(rangeStart, rangeEnd), match: true })\n sourceCursor = rangeEnd\n index = normalized.indexOf(term, index + term.length)\n }\n\n if (sourceCursor < text.length) parts.push({ text: text.slice(sourceCursor), match: false })\n return parts.length ? parts : [{ text, match: false }]\n}\n","'use client'\n\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react'\nimport * as React from 'react'\nimport {\n DisclosurePanel as AccordionContentPrimitive,\n Heading as AccordionHeaderPrimitive,\n Disclosure as AccordionItemPrimitive,\n DisclosureGroup as AccordionPrimitive,\n Button as AccordionTriggerPrimitive,\n type ButtonProps,\n type DisclosureGroupProps,\n type DisclosurePanelProps,\n type DisclosureProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Groups related expandable sections and manages their expanded state. */\nexport function Accordion({ className, ...props }: DisclosureGroupProps) {\n return (\n <AccordionPrimitive\n data-slot=\"accordion\"\n className={cn('flex w-full flex-col text-foreground', className)}\n {...props}\n />\n )\n}\n\n/** A single expandable section within an {@link Accordion}. */\nexport function AccordionItem({ className, ...props }: DisclosureProps) {\n return (\n <AccordionItemPrimitive\n data-slot=\"accordion-item\"\n className={cn('border-border not-last:border-b', className)}\n {...props}\n />\n )\n}\n\n/** Accessible heading button that expands or collapses its {@link AccordionItem}. */\nexport function AccordionTrigger({\n className,\n children,\n ...props\n}: Omit<ButtonProps, 'children'> & { children: React.ReactNode }) {\n return (\n <AccordionHeaderPrimitive className=\"flex\">\n <AccordionTriggerPrimitive\n slot=\"trigger\"\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between gap-3 rounded-lg border border-transparent px-2.5 py-2.5 text-left text-sm font-medium text-foreground transition-colors outline-none hover:bg-muted/50 aria-expanded:bg-muted/50 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUpIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionTriggerPrimitive>\n </AccordionHeaderPrimitive>\n )\n}\n\n/** Panel revealed when its parent {@link AccordionItem} is expanded. */\nexport function AccordionContent({ className, children, ...props }: DisclosurePanelProps) {\n return (\n <AccordionContentPrimitive\n data-slot=\"accordion-content\"\n className=\"text-muted-foreground data-open:animate-accordion-down data-closed:animate-accordion-up h-(--disclosure-panel-height) overflow-clip text-sm transition-[height]\"\n {...props}\n >\n <div\n className={cn(\n 'px-2.5 pt-0 pb-3 [&_a]:text-foreground [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-primary [&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionContentPrimitive>\n )\n}\n","import * as React from 'react'\nimport { type ModalOverlayProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button } from '../button/button'\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n} from '../dialog/dialog'\n\nexport type AlertDialogProps = {\n children: React.ReactNode\n open: boolean\n onOpenChange: (open: boolean) => void\n}\n\n/** Controlled, composable confirmation dialog for domain-specific destructive actions. */\nexport function AlertDialog({ children, open, onOpenChange }: AlertDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n {children}\n </Dialog>\n )\n}\n\nexport function AlertDialogPortal({ children }: { children?: React.ReactNode }) {\n return <DialogPortal>{children}</DialogPortal>\n}\n\nexport function AlertDialogTrigger({\n children,\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'onPress'>) {\n return (\n <DialogTrigger data-slot=\"alert-dialog-trigger\" {...props}>\n {children}\n </DialogTrigger>\n )\n}\n\nexport function AlertDialogOverlay({\n className,\n ...props\n}: Omit<ModalOverlayProps, 'children' | 'className' | 'isOpen' | 'onOpenChange'> & {\n className?: string\n}) {\n return <DialogOverlay data-slot=\"alert-dialog-overlay\" className={className} {...props} />\n}\n\nexport function AlertDialogContent({\n className,\n size = 'default',\n children,\n}: {\n children?: React.ReactNode\n className?: string\n size?: 'default' | 'sm'\n}) {\n return (\n <DialogContent\n contentSlot=\"alert-dialog-content\"\n overlaySlot=\"alert-dialog-overlay\"\n role=\"alertdialog\"\n showCloseButton={false}\n className={cn(size === 'sm' ? 'sm:max-w-xs' : 'sm:max-w-sm', className)}\n >\n {children}\n </DialogContent>\n )\n}\n\nexport function AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <DialogHeader\n data-slot=\"alert-dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n )\n}\n\nexport function AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <DialogFooter data-slot=\"alert-dialog-footer\" className={cn(className)} {...props} />\n}\n\nexport function AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogTitle>) {\n return <DialogTitle data-slot=\"alert-dialog-title\" className={cn(className)} {...props} />\n}\n\nexport function AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogDescription>) {\n return (\n <DialogDescription data-slot=\"alert-dialog-description\" className={cn(className)} {...props} />\n )\n}\n\nexport function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>) {\n return <Button data-slot=\"alert-dialog-action\" className={cn(className)} {...props} />\n}\n\nexport function AlertDialogCancel({\n children = 'Cancelar',\n onClick,\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'onPress'>) {\n return (\n <DialogClose asChild>\n <Button data-slot=\"alert-dialog-cancel\" variant=\"outline\" onClick={onClick} {...props}>\n {children}\n </Button>\n </DialogClose>\n )\n}\n","'use client'\n\nimport type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\nimport { useState } from 'react'\nimport {\n Button as ButtonPrimitive,\n type ButtonProps as ButtonPrimitiveProps,\n Link as LinkPrimitive,\n type LinkProps as LinkPrimitiveProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { buttonVariants } from './button-variants'\n\ntype RipplePosition = {\n x: string\n y: string\n}\n\ntype Ripple = {\n id: number\n position: RipplePosition\n}\n\nconst centeredRipplePosition: RipplePosition = { x: '50%', y: '50%' }\n\ntype RippleEvent = {\n pointerType?: string\n x?: number\n y?: number\n}\n\nfunction getRipplePosition(event: RippleEvent): RipplePosition {\n if (event.pointerType === 'keyboard' || event.pointerType === 'virtual') {\n return centeredRipplePosition\n }\n\n if (event.x === undefined || event.y === undefined) {\n return centeredRipplePosition\n }\n\n return {\n x: `${event.x}px`,\n y: `${event.y}px`,\n }\n}\n\nfunction useActionRipple(enabled: boolean) {\n const [ripple, setRipple] = useState<Ripple | null>(null)\n\n function triggerRipple(event: RippleEvent) {\n if (!enabled) return\n\n const position = getRipplePosition(event)\n setRipple((currentRipple) => ({\n id: (currentRipple?.id ?? 0) + 1,\n position,\n }))\n }\n\n const rippleElement = ripple ? (\n <span\n key={ripple.id}\n aria-hidden=\"true\"\n data-slot=\"button-ripple\"\n className=\"animate-ui-ripple pointer-events-none absolute aspect-square w-full rounded-full motion-reduce:hidden\"\n style={{ left: ripple.position.x, top: ripple.position.y }}\n onAnimationEnd={() =>\n setRipple((currentRipple) => (currentRipple?.id === ripple.id ? null : currentRipple))\n }\n />\n ) : null\n\n return { ripple: rippleElement, triggerRipple }\n}\n\n/** Props for a button that triggers an in-page action. */\nexport type ButtonProps = Omit<ButtonPrimitiveProps, 'className'> &\n React.RefAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants> & {\n /** HTML-compatible alias for `isDisabled`. */\n disabled?: boolean\n /** Visual treatment for the action's priority and intent. */\n variant?: VariantProps<typeof buttonVariants>['variant']\n /** Preset height, spacing and icon dimensions. */\n size?: VariantProps<typeof buttonVariants>['size']\n className?: string\n }\n\n/**\n * Accessible button with visual variants and a press ripple.\n * Provide an `aria-label` when it contains only an icon.\n */\nexport function Button({\n className,\n variant = 'default',\n size = 'default',\n children,\n disabled,\n isDisabled,\n onClick,\n onPress,\n ...props\n}: ButtonProps) {\n const { ripple, triggerRipple } = useActionRipple(variant !== 'link')\n\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n onClick={onClick}\n isDisabled={isDisabled ?? disabled}\n onPress={(event) => {\n onPress?.(event)\n triggerRipple(event)\n }}\n {...props}\n >\n {(renderProps) => (\n <>\n {typeof children === 'function' ? children(renderProps) : children}\n {ripple}\n </>\n )}\n </ButtonPrimitive>\n )\n}\n\n/** Props for a link styled consistently with {@link Button}. */\nexport type LinkButtonProps = Omit<LinkPrimitiveProps, 'className'> &\n VariantProps<typeof buttonVariants> & {\n /** Visual treatment for the navigation action's priority and intent. */\n variant?: VariantProps<typeof buttonVariants>['variant']\n /** Preset height, spacing and icon dimensions. */\n size?: VariantProps<typeof buttonVariants>['size']\n className?: string\n }\n\n/**\n * Navigation link styled as a {@link Button}.\n * Provide an `aria-label` when it contains only an icon.\n */\nexport function LinkButton({\n className,\n variant = 'default',\n size = 'default',\n children,\n onClick,\n onPress,\n ...props\n}: LinkButtonProps) {\n const { ripple, triggerRipple } = useActionRipple(variant !== 'link')\n\n return (\n <LinkPrimitive\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n onClick={onClick}\n onPress={(event) => {\n onPress?.(event)\n triggerRipple(event)\n }}\n {...props}\n >\n {(renderProps) => (\n <>\n {typeof children === 'function' ? children(renderProps) : children}\n {ripple}\n </>\n )}\n </LinkPrimitive>\n )\n}\n","import { cva } from 'class-variance-authority'\n\nimport { actionRipple } from '../../lib/action-ripple'\nimport { cn } from '../../lib/cn'\n\nexport const buttonVariants = cva(\n cn(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n actionRipple(),\n ),\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/80',\n outline:\n 'border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',\n ghost:\n 'hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50',\n destructive:\n 'bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40',\n link: 'text-primary underline-offset-4 hover:underline after:hidden',\n },\n size: {\n default:\n 'h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',\n icon: 'size-8',\n 'icon-xs':\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n 'icon-sm':\n 'size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg',\n 'icon-lg': 'size-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n","'use client'\n\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\nimport {\n Dialog as AriaDialog,\n Heading,\n Modal,\n ModalOverlay,\n type ModalOverlayProps,\n Text,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button } from '../button/button'\n\ntype DialogContextValue = { open: boolean; setOpen: (open: boolean) => void }\ntype SlottableProps = React.HTMLAttributes<HTMLElement> & { 'data-slot'?: string }\nconst DialogContext = React.createContext<DialogContextValue | null>(null)\n\nfunction useDialogContext() {\n const context = React.useContext(DialogContext)\n if (!context) throw new Error('Dialog components must be rendered within Dialog.')\n return context\n}\n\n/** Props for a controlled or uncontrolled dialog state container. */\nexport type DialogRootProps = {\n children: React.ReactNode\n /** Initial state when the dialog is uncontrolled. */\n defaultOpen?: boolean\n /** Called after the open state changes. */\n onOpenChange?: (open: boolean) => void\n /** Controlled open state. Use with {@link onOpenChange}. */\n open?: boolean\n}\n\n/** Coordinates the trigger, overlay and content of a modal dialog. */\nexport function DialogRoot({\n children,\n defaultOpen = false,\n onOpenChange,\n open: controlledOpen,\n}: DialogRootProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const open = controlledOpen ?? uncontrolledOpen\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen)\n onOpenChange?.(nextOpen)\n },\n [controlledOpen, onOpenChange],\n )\n\n return <DialogContext.Provider value={{ open, setOpen }}>{children}</DialogContext.Provider>\n}\n\nexport type DialogTriggerProps = Omit<React.ComponentProps<typeof Button>, 'onPress'> & {\n /** Renders and augments the single child instead of rendering a {@link Button}. */\n asChild?: boolean\n}\n\n/** Opens the parent {@link Dialog} or {@link DialogRoot}. */\nexport function DialogTrigger({\n asChild = false,\n children,\n onClick,\n ...props\n}: DialogTriggerProps) {\n const { setOpen } = useDialogContext()\n const handleClick: React.MouseEventHandler<HTMLElement> = (event) => {\n onClick?.(event as React.MouseEvent<HTMLButtonElement>)\n if (!event.defaultPrevented) setOpen(true)\n }\n\n if (asChild && React.isValidElement<SlottableProps>(children)) {\n const child = children as React.ReactElement<SlottableProps>\n return React.cloneElement(child, {\n ...(props as React.HTMLAttributes<HTMLElement>),\n 'data-slot': 'dialog-trigger',\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n child.props.onClick?.(event)\n handleClick(event)\n },\n })\n }\n\n return (\n <Button data-slot=\"dialog-trigger\" onPress={() => setOpen(true)} {...props}>\n {children}\n </Button>\n )\n}\n\n/** Groups dialog content rendered in the overlay layer. */\nexport function DialogPortal({ children }: { children?: React.ReactNode }) {\n return <>{children}</>\n}\n\ntype DialogOverlayProps = Omit<\n ModalOverlayProps,\n 'children' | 'className' | 'isOpen' | 'onOpenChange'\n> & {\n children?: React.ReactNode\n className?: string\n}\n\n/** Dismissable backdrop displayed while the parent {@link Dialog} is open. */\nexport function DialogOverlay({ children, className, ...props }: DialogOverlayProps) {\n const { open, setOpen } = useDialogContext()\n if (!open) return null\n\n return (\n <ModalOverlay\n data-slot=\"dialog-overlay\"\n isDismissable\n isOpen={open}\n onOpenChange={setOpen}\n className={cn(\n 'fixed inset-0 isolate z-50 grid place-items-center bg-black/10 p-4 supports-backdrop-filter:backdrop-blur-xs motion-safe:data-entering:animate-ui-overlay-in motion-safe:data-exiting:animate-ui-overlay-out',\n className,\n )}\n {...props}\n >\n {children}\n </ModalOverlay>\n )\n}\n\nexport type DialogContentProps = Omit<\n React.ComponentProps<typeof AriaDialog>,\n 'children' | 'className'\n> & {\n children?: React.ReactNode\n className?: string\n contentSlot?: string\n onOverlayClick?: React.MouseEventHandler<HTMLDivElement>\n overlaySlot?: string\n showCloseButton?: boolean\n}\n\ntype SimpleDialogProps = DialogRootProps &\n Omit<DialogContentProps, 'children'> & {\n /** Text for a default button, or an interactive element that opens the dialog. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<DialogTriggerProps, 'asChild' | 'children'>\n }\n\nexport type DialogProps = DialogRootProps | SimpleDialogProps\n\n/**\n * A modal dialog with a simple trigger API.\n * Omit {@link trigger} and compose {@link DialogRoot}, {@link DialogTrigger} and {@link DialogContent} directly.\n */\nexport function Dialog(props: DialogProps) {\n if (!('trigger' in props)) return <DialogRoot {...props} />\n\n const { children, trigger, triggerProps, defaultOpen, onOpenChange, open, ...contentProps } =\n props\n\n return (\n <DialogRoot defaultOpen={defaultOpen} onOpenChange={onOpenChange} open={open}>\n {typeof trigger === 'string' ? (\n <DialogTrigger {...triggerProps}>{trigger}</DialogTrigger>\n ) : (\n <DialogTrigger asChild {...triggerProps}>\n {trigger}\n </DialogTrigger>\n )}\n <DialogContent {...contentProps}>{children}</DialogContent>\n </DialogRoot>\n )\n}\n\n/** Focus-managed modal content. Include a {@link DialogTitle} to give it an accessible name. */\nexport function DialogContent({\n children,\n className,\n contentSlot = 'dialog-content',\n onOverlayClick,\n overlaySlot = 'dialog-overlay',\n showCloseButton = true,\n ...props\n}: DialogContentProps) {\n const { setOpen } = useDialogContext()\n\n return (\n <DialogPortal>\n <DialogOverlay\n data-slot={overlaySlot}\n onClick={(event) => {\n if (event.target === event.currentTarget) onOverlayClick?.(event)\n }}\n >\n <Modal\n className=\"motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out max-h-full min-h-0 w-full\"\n onClick={(event) => {\n if (event.target === event.currentTarget) {\n setOpen(false)\n onOverlayClick?.(event)\n }\n }}\n >\n <AriaDialog\n data-slot={contentSlot}\n className={cn(\n 'relative mx-auto grid box-border max-h-full min-h-0 w-full max-w-[calc(100%-2rem)] gap-4 overflow-x-hidden overflow-y-auto rounded-xl bg-background p-4 text-sm text-foreground ring-1 ring-foreground/10 outline-none sm:max-w-sm',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <Button\n aria-label=\"Cerrar diálogo\"\n data-slot=\"dialog-close\"\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n onPress={() => setOpen(false)}\n >\n <XIcon />\n </Button>\n ) : null}\n </AriaDialog>\n </Modal>\n </DialogOverlay>\n </DialogPortal>\n )\n}\n\ntype DialogCloseProps = Omit<React.ComponentProps<typeof Button>, 'onPress'> & {\n /** Renders and augments the single child instead of rendering a {@link Button}. */\n asChild?: boolean\n}\n\n/** Closes the parent {@link Dialog}. */\nexport function DialogClose({ asChild = false, children, onClick, ...props }: DialogCloseProps) {\n const { setOpen } = useDialogContext()\n if (asChild && React.isValidElement<SlottableProps>(children)) {\n const child = children as React.ReactElement<SlottableProps>\n return React.cloneElement(child, {\n ...(props as React.HTMLAttributes<HTMLElement>),\n 'data-slot': 'dialog-close',\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n child.props.onClick?.(event)\n onClick?.(event)\n if (!event.defaultPrevented) setOpen(false)\n },\n })\n }\n\n return (\n <Button data-slot=\"dialog-close\" onPress={() => setOpen(false)} {...props}>\n {children}\n </Button>\n )\n}\n\n/** Groups the title and description at the top of a dialog. */\nexport function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"dialog-header\" className={cn('flex flex-col gap-2', className)} {...props} />\n )\n}\n\n/** Groups dialog actions and can add a secondary close action. */\nexport function DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<'div'> & { showCloseButton?: boolean }) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n '-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t border-border bg-muted/50 p-4 sm:flex-row sm:flex-wrap sm:justify-end',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton ? <DialogClose variant=\"outline\">Cerrar</DialogClose> : null}\n </div>\n )\n}\n\n/** Title used to give the parent {@link DialogContent} an accessible name. */\nexport function DialogTitle({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof Heading>, 'slot'>) {\n return (\n <Heading\n slot=\"title\"\n data-slot=\"dialog-title\"\n className={cn('font-heading text-base leading-none font-medium', className)}\n {...props}\n />\n )\n}\n\n/** Supporting text announced alongside the parent {@link DialogTitle}. */\nexport function DialogDescription({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof Text>, 'slot'>) {\n return (\n <Text\n slot=\"description\"\n data-slot=\"dialog-description\"\n className={cn(\n 'text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\n\nexport const alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg border border-border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n info: 'border-info/30 bg-info/5 text-info',\n success: 'border-success/30 bg-success/5 text-success',\n warning: 'border-warning/30 bg-warning/5 text-warning',\n destructive:\n 'border-destructive/30 bg-destructive/5 text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { alertVariants } from './alert-variants'\n\nexport type AlertProps = React.ComponentProps<'div'> &\n VariantProps<typeof alertVariants> & {\n /** Communicates the alert's semantic intent. */\n variant?: VariantProps<typeof alertVariants>['variant']\n }\n\n/** Announces a concise status, warning or error message. */\nfunction Alert({ className, variant, ...props }: AlertProps) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"alert-action\" className={cn('absolute top-2 right-2', className)} {...props} />\n )\n}\n\nexport { Alert, AlertAction, AlertDescription, AlertTitle }\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport type AppShellBreakpoint = 'sm' | 'md' | 'lg'\n\nexport type AppShellProps = React.ComponentProps<'div'> & {\n /** Breakpoint at which the persistent sidebar replaces the mobile header. */\n sidebarBreakpoint?: AppShellBreakpoint\n}\n\n/** Application layout foundation for a responsive sidebar, header and content area. */\nexport function AppShell({ className, sidebarBreakpoint = 'md', ...props }: AppShellProps) {\n return (\n <div\n data-slot=\"app-shell\"\n data-sidebar-breakpoint={sidebarBreakpoint}\n className={cn('bg-background text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function AppShellSidebar({ className, ...props }: React.ComponentProps<'aside'>) {\n return (\n <aside\n data-slot=\"app-shell-sidebar\"\n className={cn('w-56 shrink-0 border-r border-border bg-card text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function AppShellMain({ className, ...props }: React.ComponentProps<'main'>) {\n return <main data-slot=\"app-shell-main\" className={cn('bg-background', className)} {...props} />\n}\n\nexport function AppShellHeader({ className, ...props }: React.ComponentProps<'header'>) {\n return (\n <header\n data-slot=\"app-shell-header\"\n className={cn('border-b border-border bg-background px-4', className)}\n {...props}\n />\n )\n}\n\nexport function AppShellMobileHeader({ className, ...props }: React.ComponentProps<'header'>) {\n return (\n <header\n data-slot=\"app-shell-mobile-header\"\n className={cn(\n 'h-14 shrink-0 items-center gap-2 border-b border-border bg-background px-3',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport type AppShellContentProps = React.ComponentProps<'div'> & {\n /** Maximum content width. Use `full` for dense application screens. */\n size?: 'default' | 'wide' | 'full'\n /** Adds the standard responsive content padding. */\n padded?: boolean\n /** Lets this region scroll while the surrounding shell remains fixed. */\n scrollable?: boolean\n}\n\nexport function AppShellContent({\n className,\n size = 'wide',\n padded = true,\n scrollable = true,\n ...props\n}: AppShellContentProps) {\n return (\n <div\n data-slot=\"app-shell-content\"\n data-size={size}\n data-padded={padded || undefined}\n data-scrollable={scrollable || undefined}\n className={className}\n {...props}\n />\n )\n}\n","import { createContext, useContext, useEffect, useState } from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport type AvatarProps = React.ComponentProps<'div'> & {\n /** Avatar dimensions and fallback text size. */\n size?: 'xs' | 'sm' | 'default' | 'lg'\n}\n\nconst sizes = {\n xs: 'size-5 text-[10px]',\n sm: 'size-6 text-xs',\n default: 'size-8 text-sm',\n lg: 'size-10 text-base',\n}\n\ntype AvatarStatus = 'idle' | 'loading' | 'loaded' | 'error'\nconst AvatarContext = createContext<{\n status: AvatarStatus\n setStatus: (status: AvatarStatus) => void\n} | null>(null)\n\n/** Displays an image or fallback content for a person, organisation or entity. */\nexport function Avatar({ className, size = 'default', children, ...props }: AvatarProps) {\n const [status, setStatus] = useState<AvatarStatus>('idle')\n return (\n <AvatarContext.Provider value={{ status, setStatus }}>\n <div\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex shrink-0 overflow-hidden rounded-full bg-muted text-muted-foreground',\n sizes[size],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </AvatarContext.Provider>\n )\n}\n\nexport function AvatarImage({\n className,\n src,\n onError,\n onLoad,\n ...props\n}: React.ComponentProps<'img'>) {\n const avatar = useContext(AvatarContext)\n const [failed, setFailed] = useState(false)\n\n useEffect(() => {\n setFailed(false)\n avatar?.setStatus(src ? 'loading' : 'idle')\n }, [avatar?.setStatus, src])\n\n if (failed || avatar?.status === 'error') return null\n return (\n <img\n data-slot=\"avatar-image\"\n src={src}\n alt=\"\"\n className={cn('aspect-square size-full object-cover', className)}\n onLoad={(event) => {\n avatar?.setStatus('loaded')\n onLoad?.(event)\n }}\n onError={(event) => {\n setFailed(true)\n avatar?.setStatus('error')\n onError?.(event)\n }}\n {...props}\n />\n )\n}\n\nexport function AvatarFallback({ className, ...props }: React.ComponentProps<'span'>) {\n const avatar = useContext(AvatarContext)\n if (avatar?.status === 'loaded') return null\n return (\n <span\n data-slot=\"avatar-fallback\"\n className={cn('flex size-full items-center justify-center font-medium', className)}\n {...props}\n />\n )\n}\n\nexport function AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 size-2.5 rounded-full bg-success ring-2 ring-background',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'flex -space-x-2 [&>[data-slot=avatar]]:ring-2 [&>[data-slot=avatar]]:ring-background',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function AvatarGroupCount({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-group-count\"\n className={cn(\n 'flex size-8 items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground ring-2 ring-background',\n className,\n )}\n {...props}\n />\n )\n}\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\nimport { Link, type LinkProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { badgeVariants } from './badge-variants'\n\nexport type BadgeProps = React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n /** Visual intent for a compact status or category label. */\n variant?: VariantProps<typeof badgeVariants>['variant']\n }\n\n/** Compact label for statuses, categories and small counts. */\nexport function Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <span\n data-slot=\"badge\"\n data-variant={variant ?? 'default'}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport type BadgeLinkProps = Omit<LinkProps, 'className'> &\n VariantProps<typeof badgeVariants> & { className?: string }\n\nexport function BadgeLink({ className, variant, ...props }: BadgeLinkProps) {\n return (\n <Link\n data-slot=\"badge\"\n data-variant={variant ?? 'default'}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\n\nexport const badgeVariants = cva(\n 'inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&>svg]:pointer-events-none [&>svg]:size-3',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n neutral: 'bg-muted text-muted-foreground',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/10 text-warning',\n info: 'bg-info/10 text-info',\n danger: 'bg-destructive/10 text-destructive',\n destructive: 'bg-destructive text-destructive-foreground',\n outline: 'border border-border text-foreground',\n ghost: 'text-foreground hover:bg-muted',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n)\n","import {\n Breadcrumb as AriaBreadcrumb,\n Breadcrumbs as AriaBreadcrumbs,\n Link as AriaLink,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Accessible navigation trail showing the current page's hierarchy. */\nexport function Breadcrumbs({ className, ...props }: React.ComponentProps<typeof AriaBreadcrumbs>) {\n return (\n <AriaBreadcrumbs\n data-slot=\"breadcrumbs\"\n className={cn('flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function Breadcrumb({ className, ...props }: React.ComponentProps<typeof AriaBreadcrumb>) {\n return (\n <AriaBreadcrumb\n data-slot=\"breadcrumb\"\n className={cn('inline-flex items-center gap-1.5', className)}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbLink({ className, ...props }: React.ComponentProps<typeof AriaLink>) {\n return (\n <AriaLink\n data-slot=\"breadcrumb-link\"\n className={cn('transition-colors hover:text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n aria-current=\"page\"\n className={cn('font-medium text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbSeparator({\n children = '/',\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-separator\"\n aria-hidden=\"true\"\n className={cn('text-muted-foreground/60', className)}\n {...props}\n >\n {children}\n </span>\n )\n}\n","'use client'\n\nimport { Separator as SeparatorPrimitive } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport type SeparatorProps = React.ComponentProps<typeof SeparatorPrimitive>\n\n/** Semantic horizontal or vertical divider between related content. */\nfunction Separator({ className, orientation = 'horizontal', ...props }: SeparatorProps) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n 'block shrink-0 border-0 bg-border aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=vertical]:w-px aria-[orientation=vertical]:self-stretch [:is(hr)]:h-px [:is(hr)]:w-full',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import { cva } from 'class-variance-authority'\n\nexport const buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n '**:data-slot:rounded-r-none [&_[data-slot]~[data-slot]]:rounded-l-none [&_[data-slot]~[data-slot]]:border-l-0 [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!',\n vertical:\n 'flex-col **:data-slot:rounded-b-none [&_[data-slot]~[data-slot]]:rounded-t-none [&_[data-slot]~[data-slot]]:border-t-0 [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Separator } from '../separator/separator'\nimport { buttonGroupVariants } from './button-group-variants'\n\n/** Groups adjacent actions into a single connected control. */\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof buttonGroupVariants>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: fieldset would impose form semantics on a generic action group.\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: React.ComponentProps<'div'> & {\n render?: (props: React.HTMLAttributes<HTMLElement>) => React.ReactNode\n}) {\n if (render) {\n const renderProps = {\n 'data-slot': 'button-group-text',\n className: cn(\n \"flex items-center gap-2 rounded-lg border border-border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n ),\n ...props,\n }\n\n return render(renderProps)\n }\n\n return (\n <div\n data-slot=\"button-group-text\"\n className={cn(\n \"flex items-center gap-2 rounded-lg border border-border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n 'relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText }\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport type CardProps = React.ComponentProps<'div'> & {\n /** Spacing preset for standard or compact content. */\n size?: 'default' | 'sm'\n}\n\n/** Surface for related content with optional header, body, action and footer regions. */\nfunction Card({ className, size = 'default', ...props }: CardProps) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl border border-border bg-card py-(--card-spacing) text-sm text-card-foreground shadow-sm [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n 'group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n 'text-base leading-snug font-medium group-data-[size=sm]/card:text-sm',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn('col-start-2 row-span-2 row-start-1 self-start justify-self-end', className)}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"card-content\" className={cn('px-(--card-spacing)', className)} {...props} />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n 'flex items-center rounded-b-xl border-t border-border bg-muted/50 p-(--card-spacing)',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }\n","import { Check } from 'lucide-react'\nimport {\n Checkbox as AriaCheckbox,\n type CheckboxProps as AriaCheckboxProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Props for an accessible boolean form control. */\nexport type CheckboxProps = Omit<AriaCheckboxProps, 'className'> & { className?: string }\n\n/** Checkbox that supports controlled and uncontrolled selection. */\nexport function Checkbox({ className, children, ...props }: CheckboxProps) {\n return (\n <AriaCheckbox\n data-slot=\"checkbox\"\n className={cn(\n 'group inline-flex items-center gap-2 text-sm text-foreground data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {(state) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"border-border bg-background text-primary-foreground group-data-selected:border-primary group-data-selected:bg-primary group-data-focus-visible:ring-ring/50 grid size-4 place-items-center rounded border transition-colors group-data-focus-visible:ring-3\"\n >\n <Check className=\"size-3 opacity-0 transition-opacity group-data-selected:opacity-100 motion-reduce:transition-none\" />\n </span>\n {typeof children === 'function' ? children(state) : children}\n </>\n )}\n </AriaCheckbox>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ntype CollapsibleContextValue = {\n contentId: string\n open: boolean\n setOpen: (open: boolean) => void\n}\ntype SlottableProps = React.HTMLAttributes<HTMLElement> & {\n 'data-slot'?: string\n 'data-state'?: 'closed' | 'open'\n}\nconst CollapsibleContext = React.createContext<CollapsibleContextValue | null>(null)\n\nfunction useCollapsibleContext() {\n const context = React.useContext(CollapsibleContext)\n if (!context) throw new Error('Collapsible components must be rendered within Collapsible.')\n return context\n}\n\n/** Props for the collapsible state container. */\nexport type CollapsibleProps = React.ComponentProps<'div'> & {\n /** Initial state when the component is uncontrolled. */\n defaultOpen?: boolean\n /** Called after the expanded state changes. */\n onOpenChange?: (open: boolean) => void\n /** Controlled expanded state. Use with {@link onOpenChange}. */\n open?: boolean\n}\n\n/** Groups a trigger and conditional content in a controlled or uncontrolled disclosure. */\nexport function Collapsible({\n children,\n defaultOpen = false,\n onOpenChange,\n open: controlledOpen,\n ...props\n}: CollapsibleProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const contentId = React.useId()\n const open = controlledOpen ?? uncontrolledOpen\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen)\n onOpenChange?.(nextOpen)\n },\n [controlledOpen, onOpenChange],\n )\n\n return (\n <CollapsibleContext.Provider value={{ contentId, open, setOpen }}>\n <div data-slot=\"collapsible\" data-state={open ? 'open' : 'closed'} {...props}>\n {children}\n </div>\n </CollapsibleContext.Provider>\n )\n}\n\n/** Props for the control that toggles a {@link Collapsible}. */\nexport type CollapsibleTriggerProps = React.ComponentProps<'button'> & {\n /** Renders and augments the single child element instead of a native button. */\n asChild?: boolean\n}\n\n/** Button that toggles its parent {@link Collapsible} and exposes `aria-expanded`. */\nexport function CollapsibleTrigger({\n asChild = false,\n children,\n onClick,\n ...props\n}: CollapsibleTriggerProps) {\n const { contentId, open, setOpen } = useCollapsibleContext()\n const handleClick: React.MouseEventHandler<HTMLElement> = (event) => {\n onClick?.(event as React.MouseEvent<HTMLButtonElement>)\n if (!event.defaultPrevented) setOpen(!open)\n }\n\n if (asChild && React.isValidElement<SlottableProps>(children)) {\n const child = children as React.ReactElement<SlottableProps>\n return React.cloneElement(child, {\n ...(props as React.HTMLAttributes<HTMLElement>),\n 'aria-controls': contentId,\n 'aria-expanded': open,\n 'data-slot': 'collapsible-trigger',\n 'data-state': open ? 'open' : 'closed',\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n child.props.onClick?.(event)\n handleClick(event)\n },\n })\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"collapsible-trigger\"\n data-state={open ? 'open' : 'closed'}\n aria-controls={contentId}\n aria-expanded={open}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport type CollapsibleContentProps = React.ComponentProps<'div'>\n\n/** Content that is mounted only while its parent {@link Collapsible} is open. */\nexport function CollapsibleContent({ children, ...props }: CollapsibleContentProps) {\n const { contentId, open } = useCollapsibleContext()\n if (!open) return null\n\n return (\n <div id={contentId} data-slot=\"collapsible-content\" data-state=\"open\" {...props}>\n {children}\n </div>\n )\n}\n","import { Fragment, useMemo, useState, type ReactNode } from 'react'\nimport {\n ComboBox as AriaComboBox,\n ComboBoxValue,\n FieldError,\n Input,\n Label,\n ListBox,\n ListBoxItem,\n Popover,\n Text,\n type ComboBoxProps,\n type InputProps,\n type Key,\n type ListBoxItemProps,\n type ListBoxProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { getTextMatchParts } from '../../lib/text-match'\n\nexport const Combobox = AriaComboBox\nexport { ComboBoxValue as ComboboxValue }\nexport type { ComboBoxProps }\n\nexport function ComboboxInput({ className, ...props }: InputProps) {\n return (\n <Input\n data-slot=\"combobox-input\"\n className={cn(\n 'h-9 w-full rounded-lg border border-border bg-background px-2.5 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50',\n className,\n )}\n {...props}\n />\n )\n}\nexport function ComboboxContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"combobox-content\"\n className={cn(\n 'max-h-72 w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\nexport function ComboboxList<T extends object>({\n className,\n emptyState,\n ...props\n}: ListBoxProps<T> & { emptyState?: React.ReactNode }) {\n return (\n <ListBox\n data-slot=\"combobox-list\"\n className={cn('max-h-64 overflow-y-auto', className)}\n renderEmptyState={emptyState ? () => emptyState : undefined}\n {...props}\n />\n )\n}\nexport function ComboboxItem<T extends object>({\n className,\n children,\n ...props\n}: ListBoxItemProps<T>) {\n return (\n <ListBoxItem\n data-slot=\"combobox-item\"\n className={cn(\n 'flex w-full cursor-default items-center justify-between rounded-md px-2 py-2 text-sm outline-none transition-colors data-focused:bg-muted data-focused:text-foreground data-hovered:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n </ListBoxItem>\n )\n}\nexport function HighlightMatch({\n text,\n query,\n className,\n}: {\n text: string\n query: string\n className?: string\n}) {\n return (\n <span className={className}>\n {getTextMatchParts(text, query).map((part, index) =>\n part.match ? (\n <mark\n key={`${part.text}-${index}`}\n className=\"bg-accent text-accent-foreground rounded px-0.5\"\n >\n {part.text}\n </mark>\n ) : (\n <Fragment key={`${part.text}-${index}`}>{part.text}</Fragment>\n ),\n )}\n </span>\n )\n}\n\nexport type AutocompleteComboboxProps<T extends object> = Omit<\n ComboBoxProps<T>,\n | 'children'\n | 'items'\n | 'inputValue'\n | 'onInputChange'\n | 'selectedKey'\n | 'onSelectionChange'\n | 'defaultFilter'\n> & {\n items: readonly T[]\n getItemKey: (item: T) => Key\n getItemLabel: (item: T) => string\n renderItem?: (item: T, query: string) => ReactNode\n inputValue?: string\n onInputChange?: (value: string) => void\n selectedKey?: Key | null\n onSelectionChange?: (key: Key | null, item?: T) => void\n label?: ReactNode\n description?: ReactNode\n errorMessage?: ReactNode\n emptyState?: ReactNode\n suggestion?: boolean\n placeholder?: string\n}\n\n/** A safe, keyboard-first autocomplete for users, contracts and other entities. */\nexport function AutocompleteCombobox<T extends object>({\n items,\n getItemKey,\n getItemLabel,\n renderItem,\n inputValue: controlledInputValue,\n onInputChange,\n selectedKey,\n onSelectionChange,\n label,\n description,\n errorMessage,\n emptyState = (\n <p className=\"text-muted-foreground px-3 py-7 text-center text-sm\">No hay resultados.</p>\n ),\n suggestion = true,\n placeholder,\n className,\n onKeyDown: _onKeyDown,\n ...props\n}: AutocompleteComboboxProps<T>) {\n const [internalInputValue, setInternalInputValue] = useState('')\n const inputValue = controlledInputValue ?? internalInputValue\n const setInputValue = (value: string) => {\n setInternalInputValue(value)\n onInputChange?.(value)\n }\n const normalizedQuery = inputValue.trim().toLocaleLowerCase()\n const filteredItems = useMemo(\n () =>\n normalizedQuery\n ? items.filter((item) => getItemLabel(item).toLocaleLowerCase().includes(normalizedQuery))\n : [...items],\n [getItemLabel, items, normalizedQuery],\n )\n const suggestedItem = useMemo(\n () =>\n !suggestion || !normalizedQuery\n ? undefined\n : items.find(\n (item) =>\n getItemLabel(item).toLocaleLowerCase().startsWith(normalizedQuery) &&\n getItemLabel(item).length > inputValue.length,\n ),\n [getItemLabel, inputValue.length, items, normalizedQuery, suggestion],\n )\n const suggestionLabel = suggestedItem ? getItemLabel(suggestedItem) : undefined\n const acceptSuggestion = () => {\n if (!suggestedItem || !suggestionLabel) return false\n setInputValue(suggestionLabel)\n onSelectionChange?.(getItemKey(suggestedItem), suggestedItem)\n return true\n }\n const handleKeyDown = (event: Parameters<NonNullable<InputProps['onKeyDown']>>[0]) => {\n if ((event.key === 'Tab' || event.key === 'Enter') && acceptSuggestion()) event.preventDefault()\n }\n return (\n <AriaComboBox<T>\n {...props}\n className={cn('group/combobox flex w-full flex-col gap-1.5', className)}\n items={filteredItems}\n selectedKey={selectedKey}\n inputValue={inputValue}\n onInputChange={setInputValue}\n onSelectionChange={(key) => {\n const item = filteredItems.find(\n (candidate) => String(getItemKey(candidate)) === String(key),\n )\n if (item) setInputValue(getItemLabel(item))\n onSelectionChange?.(key, item)\n }}\n >\n {label && <Label className=\"text-foreground text-sm font-medium\">{label}</Label>}\n <div className=\"relative\">\n {suggestionLabel && (\n <span\n aria-hidden=\"true\"\n className=\"text-muted-foreground/60 pointer-events-none absolute inset-y-0 left-2.5 z-0 flex items-center text-sm whitespace-pre\"\n >\n <span className=\"text-transparent\">{inputValue}</span>\n {suggestionLabel.slice(inputValue.length)}\n </span>\n )}\n <ComboboxInput\n aria-autocomplete={suggestionLabel ? 'both' : 'list'}\n placeholder={placeholder}\n onKeyDown={handleKeyDown}\n className=\"relative z-10 bg-transparent\"\n />\n </div>\n {description && (\n <Text slot=\"description\" className=\"text-muted-foreground text-xs\">\n {description}\n </Text>\n )}\n {errorMessage && <FieldError className=\"text-destructive text-xs\">{errorMessage}</FieldError>}\n <ComboboxContent>\n <ComboboxList<T> emptyState={emptyState}>\n {(item) => (\n <ComboboxItem id={getItemKey(item)} textValue={getItemLabel(item)}>\n {renderItem ? (\n renderItem(item, inputValue)\n ) : (\n <HighlightMatch text={getItemLabel(item)} query={inputValue} />\n )}\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxContent>\n </AriaComboBox>\n )\n}\n","import {\n ComboBox as AriaComboBox,\n Input as AriaInput,\n ListBox,\n ListBoxItem,\n Popover,\n type ComboBoxProps,\n type ListBoxItemProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Searchable command palette built from an accessible combobox and option list. */\nexport function Command<T extends object>({ className, ...props }: ComboBoxProps<T>) {\n return <AriaComboBox data-slot=\"command\" className={cn('w-full', className)} {...props} />\n}\n\nexport function CommandInput({ className, ...props }: React.ComponentProps<typeof AriaInput>) {\n return (\n <AriaInput\n data-slot=\"command-input\"\n className={cn(\n 'h-9 w-full border-0 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function CommandContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"command-content\"\n className={cn(\n 'w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 shadow-lg outline-none',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function CommandList<T extends object>({\n className,\n ...props\n}: React.ComponentProps<typeof ListBox<T>>) {\n return (\n <ListBox\n data-slot=\"command-list\"\n className={cn('max-h-72 overflow-y-auto', className)}\n {...props}\n />\n )\n}\n\nexport function CommandItem<T extends object>({ className, ...props }: ListBoxItemProps<T>) {\n return (\n <ListBoxItem\n data-slot=\"command-item\"\n className={cn(\n 'flex cursor-default items-center rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n />\n )\n}\n","import type * as React from 'react'\n\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../alert-dialog/alert-dialog'\nimport { Button } from '../button/button'\n\nexport type ConfirmDialogProps = {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description?: React.ReactNode\n confirmLabel?: string\n cancelLabel?: string\n destructive?: boolean\n pending?: boolean\n onConfirm: () => void\n}\n\n/** Controlled confirmation dialog for irreversible actions. */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = 'Confirmar',\n cancelLabel = 'Cancelar',\n destructive = false,\n pending = false,\n onConfirm,\n}: ConfirmDialogProps) {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n {description ? <AlertDialogDescription>{description}</AlertDialogDescription> : null}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <Button variant=\"outline\" isDisabled={pending} onPress={() => onOpenChange(false)}>\n {cancelLabel}\n </Button>\n <Button\n variant={destructive ? 'destructive' : 'default'}\n isDisabled={pending}\n onPress={onConfirm}\n >\n {confirmLabel}\n </Button>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n","'use client'\n\nimport { ChevronDown, ShieldAlert } from 'lucide-react'\nimport type * as React from 'react'\nimport {\n Button as DisclosureButton,\n Disclosure,\n DisclosurePanel,\n Heading,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Card, CardContent } from '../card/card'\n\nexport type DangerZoneProps = {\n children: React.ReactNode\n className?: string\n defaultOpen?: boolean\n description?: string\n title?: string\n}\n\n/** Collapsed-by-default container for actions that are hard to reverse. */\nexport function DangerZone({\n title = 'Zona de peligro',\n description = 'Acciones irreversibles. Ábrela solo si estás seguro.',\n defaultOpen = false,\n className,\n children,\n}: DangerZoneProps) {\n return (\n <Disclosure defaultExpanded={defaultOpen}>\n <Card className={cn('border-destructive/30', className)}>\n <Heading className=\"flex\">\n <DisclosureButton\n slot=\"trigger\"\n data-slot=\"danger-zone-trigger\"\n className=\"group/danger focus-visible:ring-ring/50 flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3\"\n >\n <ShieldAlert className=\"text-destructive size-4 shrink-0\" />\n <span className=\"flex flex-1 flex-col gap-0.5\">\n <span className=\"font-heading text-destructive text-base leading-snug font-medium\">\n {title}\n </span>\n <span className=\"text-muted-foreground text-xs\">{description}</span>\n </span>\n <ChevronDown className=\"text-muted-foreground size-4 shrink-0 transition-transform group-aria-expanded/danger:rotate-180\" />\n </DisclosureButton>\n </Heading>\n <DisclosurePanel data-slot=\"danger-zone-content\">\n <CardContent>{children}</CardContent>\n </DisclosurePanel>\n </Card>\n </Disclosure>\n )\n}\n","'use client'\n\nimport { FileText, Image } from 'lucide-react'\n\nexport type DocPreviewProps = {\n /** Signed storage URL, generated by the consuming application. */\n mimeType: string | null\n name: string\n url: string | null\n}\n\nexport function DocPreview({ url, mimeType, name }: DocPreviewProps) {\n if (!url) return <Fallback mimeType={mimeType} reason=\"no-url\" />\n\n if (mimeType === 'application/pdf' || mimeType === 'text/plain' || mimeType === 'text/csv') {\n return (\n <iframe\n src={url}\n title={name}\n className=\"w-full rounded-sm border-0\"\n style={{ height: '75vh', minHeight: 400 }}\n />\n )\n }\n\n if (mimeType?.startsWith('image/')) {\n return (\n <div className=\"bg-muted/30 flex justify-center rounded-sm p-6\">\n {/* biome-ignore lint/performance/noImgElement: preview URLs are supplied by consuming applications. */}\n <img src={url} alt={name} className=\"max-h-[75vh] max-w-full rounded object-contain\" />\n </div>\n )\n }\n\n return <Fallback mimeType={mimeType} reason=\"unsupported\" />\n}\n\nfunction Fallback({\n mimeType,\n reason,\n}: {\n mimeType: string | null\n reason: 'no-url' | 'unsupported'\n}) {\n const Icon = mimeType?.startsWith('image/') ? Image : FileText\n const message =\n reason === 'no-url'\n ? 'No se pudo generar la URL de preview.'\n : 'Preview no disponible para este tipo de archivo.'\n\n return (\n <div className=\"text-muted-foreground flex flex-col items-center justify-center gap-2 py-14\">\n <Icon className=\"size-9 opacity-30\" />\n <p className=\"text-sm\">{message}</p>\n {mimeType ? <p className=\"font-mono text-xs opacity-50\">{mimeType}</p> : null}\n <p className=\"text-xs opacity-50\">Usa el botón Descargar para abrir el archivo.</p>\n </div>\n )\n}\n","'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { CheckIcon, ChevronRightIcon } from 'lucide-react'\nimport * as React from 'react'\nimport {\n composeRenderProps,\n Header as HeaderPrimitive,\n MenuItem as MenuItemPrimitive,\n Menu as MenuPrimitive,\n MenuSection as MenuSectionPrimitive,\n MenuTrigger as MenuTriggerPrimitive,\n Popover as PopoverPrimitive,\n Separator as SeparatorPrimitive,\n SubmenuTrigger as SubmenuTriggerPrimitive,\n type MenuItemProps as MenuItemPrimitiveProps,\n type MenuSectionProps as MenuSectionPrimitiveProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\n\nfunction DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof MenuTriggerPrimitive>) {\n return <MenuTriggerPrimitive data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nexport type DropdownMenuContentProps = Omit<\n React.ComponentProps<typeof MenuPrimitive<object>>,\n 'children' | 'className'\n> &\n Pick<React.ComponentProps<typeof PopoverPrimitive>, 'placement' | 'offset' | 'crossOffset'> & {\n 'data-slot'?: string\n className?: string\n children?: React.ReactNode\n }\n\n/** Floating menu of actions or selections opened by a {@link DropdownMenuTrigger}. */\nfunction DropdownMenuContent({\n 'data-slot': dataSlot = 'dropdown-menu-content',\n placement = 'bottom start',\n offset = 4,\n crossOffset = 0,\n className,\n children,\n ...props\n}: DropdownMenuContentProps) {\n return (\n <PopoverPrimitive\n data-slot={dataSlot}\n placement={placement}\n offset={offset}\n crossOffset={crossOffset}\n className={cn(\n 'z-50 w-(--trigger-width) min-w-32 origin-(--trigger-anchor-point) overflow-x-hidden overflow-y-auto rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n >\n <MenuPrimitive\n className=\"max-h-[inherit] overflow-x-hidden overflow-y-auto outline-hidden\"\n {...props}\n >\n {children}\n </MenuPrimitive>\n </PopoverPrimitive>\n )\n}\n\ntype DropdownMenuTriggerStateProps = Pick<\n React.ComponentProps<typeof MenuTriggerPrimitive>,\n 'defaultOpen' | 'isOpen' | 'onOpenChange'\n>\n\ntype SimpleDropdownMenuProps = DropdownMenuContentProps &\n DropdownMenuTriggerStateProps & {\n /** Text for a default button, or an interactive element that opens the menu. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<ButtonProps, 'children'>\n children: React.ReactNode\n }\n\nexport type DropdownMenuProps = DropdownMenuContentProps | SimpleDropdownMenuProps\n\n/**\n * An action menu with a simple trigger API.\n * Omit {@link trigger} and use {@link DropdownMenuTrigger} plus {@link DropdownMenuContent} for advanced composition.\n */\nfunction DropdownMenu(props: DropdownMenuProps) {\n if (!('trigger' in props)) return <DropdownMenuContent {...props} />\n\n const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } =\n props\n const triggerElement =\n typeof trigger === 'string' ? <Button {...triggerProps}>{trigger}</Button> : trigger\n\n return (\n <DropdownMenuTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {triggerElement}\n <DropdownMenuContent {...contentProps}>{children}</DropdownMenuContent>\n </DropdownMenuTrigger>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: Omit<MenuSectionPrimitiveProps<object>, 'children'> & {\n children?: React.ReactNode\n}) {\n return <MenuSectionPrimitive data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof HeaderPrimitive> & {\n inset?: boolean\n}) {\n return (\n <HeaderPrimitive\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n 'px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7',\n className,\n )}\n {...props}\n />\n )\n}\n\nconst dropdownMenuItemVariants = cva(\n 'group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n selectionMode: {\n none: \"gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-muted focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n single:\n \"gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm focus:bg-muted focus:text-foreground focus:**:text-foreground data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4\",\n multiple:\n \"gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm focus:bg-muted focus:text-foreground focus:**:text-foreground data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n },\n)\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n children,\n ...props\n}: MenuItemPrimitiveProps<object> & {\n inset?: boolean\n variant?: 'default' | 'destructive'\n}) {\n return (\n <MenuItemPrimitive\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n textValue={typeof children === 'string' ? children : props.textValue}\n className={composeRenderProps(className, (className, { selectionMode }) =>\n cn(dropdownMenuItemVariants({ selectionMode }), className),\n )}\n {...props}\n >\n {composeRenderProps(children, (children, { isSelected, selectionMode }) => (\n <>\n {selectionMode !== 'none' ? (\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot={\n selectionMode === 'single'\n ? 'dropdown-menu-radio-item-indicator'\n : 'dropdown-menu-checkbox-item-indicator'\n }\n >\n {isSelected ? <CheckIcon /> : null}\n </span>\n ) : null}\n {children}\n </>\n ))}\n </MenuItemPrimitive>\n )\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof SubmenuTriggerPrimitive>) {\n return <SubmenuTriggerPrimitive data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuItemPrimitiveProps<object> & {\n inset?: boolean\n}) {\n return (\n <MenuItemPrimitive\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n textValue={typeof children === 'string' ? children : props.textValue}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-muted focus:text-foreground focus:**:text-foreground data-inset:pl-7 data-open:bg-muted data-open:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {composeRenderProps(children, (children) => (\n <>\n {children}\n <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n </>\n ))}\n </MenuItemPrimitive>\n )\n}\n\nfunction DropdownMenuSubContent({\n placement = 'end top',\n crossOffset = -3,\n offset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n 'w-auto min-w-24 rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg',\n className,\n )}\n placement={placement}\n crossOffset={crossOffset}\n offset={offset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive>) {\n return (\n <SeparatorPrimitive\n data-slot=\"dropdown-menu-separator\"\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenuTrigger,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import { cva } from 'class-variance-authority'\n\nexport const emptyStateMediaVariants = cva(\n 'mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n icon: \"size-8 rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: { variant: 'default' },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { emptyStateMediaVariants } from './empty-state-variants'\n\n/** Composes an informative empty result with optional media and a recovery action. */\nexport function EmptyState({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-state\"\n className={cn(\n 'flex min-h-44 w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border border-dashed border-border p-6 text-center text-balance',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function EmptyStateHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-state-header\"\n className={cn('flex max-w-sm flex-col items-center gap-2', className)}\n {...props}\n />\n )\n}\n\nexport function EmptyStateMedia({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof emptyStateMediaVariants>) {\n return (\n <div\n data-slot=\"empty-state-media\"\n data-variant={variant}\n className={cn(emptyStateMediaVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport function EmptyStateTitle({ className, children, ...props }: React.ComponentProps<'h3'>) {\n return (\n <h3\n data-slot=\"empty-state-title\"\n className={cn('text-sm font-medium tracking-tight text-foreground', className)}\n {...props}\n >\n {children}\n </h3>\n )\n}\n\nexport function EmptyStateDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"empty-state-description\"\n className={cn(\n 'max-w-sm text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function EmptyStateContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-state-content\"\n className={cn(\n 'flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm',\n className,\n )}\n {...props}\n />\n )\n}\n","import { forwardRef, type ComponentPropsWithRef } from 'react'\nimport { Label as LabelPrimitive } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Accessible label associated with a React Aria form control. */\nexport const Label = forwardRef<HTMLLabelElement, ComponentPropsWithRef<typeof LabelPrimitive>>(\n function Label({ className, ...props }, ref) {\n return (\n <LabelPrimitive\n ref={ref}\n data-slot=\"label\"\n className={cn(\n 'flex items-center gap-2 text-sm font-medium leading-none select-none',\n className,\n )}\n {...props}\n />\n )\n },\n)\n\nexport type LabelProps = ComponentPropsWithRef<typeof Label>\n","import { cva } from 'class-variance-authority'\n\nexport const fieldVariants = cva(\n 'group/field flex w-full gap-2 data-[invalid=true]:text-destructive',\n {\n variants: {\n orientation: {\n vertical: 'flex-col *:w-full [&>.sr-only]:w-auto',\n horizontal:\n 'flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto',\n responsive:\n 'flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto',\n },\n },\n defaultVariants: { orientation: 'vertical' },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Label } from '../label/label'\nimport { Separator } from '../separator/separator'\nimport { fieldVariants } from './field-variants'\n\n/** Semantic fieldset for controls that share a {@link FieldLegend}. */\nexport function FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>) {\n return (\n <fieldset data-slot=\"field-set\" className={cn('flex flex-col gap-4', className)} {...props} />\n )\n}\n\n/** Label for a {@link FieldSet}, with heading or label styling. */\nexport function FieldLegend({\n className,\n variant = 'legend',\n ...props\n}: React.ComponentProps<'legend'> & { variant?: 'legend' | 'label' }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n 'mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Responsive vertical stack for related {@link Field} components. */\nexport function FieldGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n 'group/field-group @container/field-group flex w-full flex-col gap-5',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Props for the layout wrapper of a labelled form control. */\nexport type FieldProps = React.ComponentProps<'div'> &\n VariantProps<typeof fieldVariants> & {\n /** Layout of the label and control; `responsive` changes at the field-group container breakpoint. */\n orientation?: VariantProps<typeof fieldVariants>['orientation']\n }\n\n/** Groups a form control, its label and descriptive or error text. */\nexport function Field({ className, orientation = 'vertical', ...props }: FieldProps) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: FieldSet provides native fieldset semantics when they are appropriate.\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\n/** Stacks the label, description and validation message for a {@link Field}. */\nexport function FieldContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn('flex flex-1 flex-col gap-0.5 leading-snug', className)}\n {...props}\n />\n )\n}\n\n/** Label associated with the control inside a {@link Field}. */\nexport function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n 'flex w-fit gap-2 leading-snug text-foreground group-data-[disabled=true]/field:opacity-50',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Short visible title for a {@link Field} that is not a native label. */\nexport function FieldTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-title\"\n className={cn('flex w-fit items-center gap-2 text-sm font-medium', className)}\n {...props}\n />\n )\n}\n\n/** Helper text that clarifies how to complete a {@link Field}. */\nexport function FieldDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n 'text-left text-sm leading-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Visual divider between groups of fields, optionally with a text label. */\nexport function FieldSeparator({ className, children, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={Boolean(children) || undefined}\n className={cn('relative -my-2 h-5 text-sm', className)}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children ? (\n <span\n data-slot=\"field-separator-content\"\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n >\n {children}\n </span>\n ) : null}\n </div>\n )\n}\n\n/** Props for a validation message rendered by {@link FieldError}. */\nexport type FieldErrorProps = React.ComponentProps<'div'> & {\n /** Validation errors whose unique messages are rendered when no children are supplied. */\n errors?: Array<{ message?: string } | undefined>\n}\n\n/** Announced validation message for a {@link Field}. */\nexport function FieldError({ className, children, errors, ...props }: FieldErrorProps) {\n const messages = [...new Set(errors?.flatMap((error) => error?.message ?? []) ?? [])]\n const content =\n children ??\n (messages.length === 1 ? (\n messages[0]\n ) : messages.length > 1 ? (\n <ul className=\"ml-4 list-disc\">\n {messages.map((message) => (\n <li key={message}>{message}</li>\n ))}\n </ul>\n ) : null)\n if (!content) return null\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn('text-sm text-destructive', className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n","import { CheckCircle, CircleAlert, LoaderCircle } from 'lucide-react'\n\nimport { cn } from '../../lib/cn'\n\nexport type FormFeedbackState =\n | { status: 'idle' }\n | { status: 'pending' }\n | { status: 'success'; message?: string }\n | { status: 'error'; message: string }\n\nexport interface FormFeedbackProps {\n /** Current submission state and optional user-facing result message. */\n state: FormFeedbackState\n className?: string\n /** Text announced while the form submission is pending. */\n pendingLabel?: string\n /** Fallback text used when a successful state has no message. */\n successLabel?: string\n}\n\n/** Live status message for pending, successful and failed form submissions. */\nexport function FormFeedback({\n state,\n className,\n pendingLabel = 'Guardando…',\n successLabel = 'Guardado',\n}: FormFeedbackProps) {\n if (state.status === 'idle')\n return <span aria-hidden=\"true\" className={cn('inline-flex h-5 items-center', className)} />\n const error = state.status === 'error'\n const success = state.status === 'success'\n return (\n <span\n role={error ? 'alert' : 'status'}\n aria-live=\"polite\"\n className={cn(\n 'inline-flex h-5 items-center gap-1.5 text-xs',\n error && 'text-destructive',\n success && 'text-success',\n state.status === 'pending' && 'text-muted-foreground',\n className,\n )}\n >\n {state.status === 'pending' && (\n <LoaderCircle aria-hidden=\"true\" className=\"size-3.5 animate-spin\" />\n )}\n {success && <CheckCircle aria-hidden=\"true\" className=\"size-3.5\" />}\n {error && <CircleAlert aria-hidden=\"true\" className=\"size-3.5\" />}\n <span>\n {state.status === 'pending'\n ? pendingLabel\n : success\n ? (state.message ?? successLabel)\n : state.message}\n </span>\n </span>\n )\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormFeedbackState } from './form-feedback'\n\nexport function useFormFeedback(options?: { successResetMs?: number }) {\n const resetMs = options?.successResetMs ?? 2500\n const [state, setState] = useState<FormFeedbackState>({ status: 'idle' })\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n const clearTimer = useCallback(() => {\n if (timer.current) clearTimeout(timer.current)\n timer.current = null\n }, [])\n useEffect(() => () => clearTimer(), [clearTimer])\n const setPending = useCallback(() => {\n clearTimer()\n setState({ status: 'pending' })\n }, [clearTimer])\n const setSuccess = useCallback(\n (message?: string) => {\n clearTimer()\n setState({ status: 'success', message })\n if (resetMs > 0) timer.current = setTimeout(() => setState({ status: 'idle' }), resetMs)\n },\n [clearTimer, resetMs],\n )\n const setError = useCallback(\n (message: string) => {\n clearTimer()\n setState({ status: 'error', message })\n },\n [clearTimer],\n )\n const reset = useCallback(() => {\n clearTimer()\n setState({ status: 'idle' })\n }, [clearTimer])\n return { state, pending: state.status === 'pending', setPending, setSuccess, setError, reset }\n}\n","import type { ReactNode } from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport interface FormRowProps {\n /** Visible label associated with the form control. */\n label: ReactNode\n /** Identifier of the labelled form control. */\n htmlFor: string\n /** Marks the label as required for assistive technology. */\n required?: boolean\n /** Supplementary guidance displayed below the control. */\n hint?: ReactNode\n /** Validation message announced to the user. */\n error?: ReactNode\n className?: string\n children: ReactNode\n}\n\n/** Labelled form-control row with optional help text and validation feedback. */\nexport function FormRow({\n label,\n htmlFor,\n required,\n hint,\n error,\n className,\n children,\n}: FormRowProps) {\n const hintId = hint ? `${htmlFor}-hint` : undefined\n const errorId = error ? `${htmlFor}-error` : undefined\n return (\n <div data-slot=\"form-row\" className={cn('flex flex-col gap-1.5', className)}>\n <label htmlFor={htmlFor} className=\"text-foreground text-sm font-medium\">\n {label}\n {required && (\n <>\n <span aria-hidden=\"true\" className=\"text-destructive ml-0.5\">\n *\n </span>\n <span className=\"sr-only\"> (obligatorio)</span>\n </>\n )}\n </label>\n {children}\n {hint && (\n <p id={hintId} className=\"text-muted-foreground text-xs\">\n {hint}\n </p>\n )}\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-destructive text-xs font-medium\">\n {error}\n </p>\n )}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Link } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\nimport { buttonVariants } from '../button/button-variants'\nimport { Tooltip } from '../tooltip/tooltip'\n\nexport type IconButtonProps = Omit<ButtonProps, 'children'> & {\n /** Accessible name and text shown in the tooltip. */\n label: string\n /** Optional href for rendering the action as an accessible link. */\n href?: string\n children?: ReactNode\n}\n\n/** A consistently sized icon-only action with an accessible tooltip. */\nexport function IconButton({\n label,\n children,\n href,\n className,\n variant,\n ...props\n}: IconButtonProps) {\n const linkClassName = cn(buttonVariants({ variant, size: 'icon' }), className)\n\n return (\n <Tooltip label={label}>\n {href ? (\n <Link data-slot=\"icon-button\" aria-label={label} href={href} className={linkClassName}>\n {children}\n </Link>\n ) : (\n <Button\n data-slot=\"icon-button\"\n aria-label={label}\n variant={variant}\n size=\"icon\"\n className={className}\n {...props}\n >\n {children}\n </Button>\n )}\n </Tooltip>\n )\n}\n","'use client'\n\nimport type * as React from 'react'\nimport {\n OverlayArrow,\n Tooltip as TooltipPrimitive,\n TooltipTrigger as TooltipTriggerPrimitive,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Couples a focusable trigger with its {@link TooltipContent} content. */\nexport function TooltipTrigger({\n delay = 0,\n ...props\n}: React.ComponentProps<typeof TooltipTriggerPrimitive>) {\n return <TooltipTriggerPrimitive data-slot=\"tooltip-trigger\" delay={delay} {...props} />\n}\n\ntype TooltipSurfaceProps = Omit<\n React.ComponentProps<typeof TooltipPrimitive>,\n 'children' | 'className'\n> & { className?: string }\n\nexport type TooltipProps = TooltipSurfaceProps & {\n /** Contextual text or rich content shown when the trigger is focused or hovered. */\n label: React.ReactNode\n /** The single focusable element that reveals the tooltip. */\n children: React.ReactNode\n /** Delay before revealing the tooltip. */\n delay?: React.ComponentProps<typeof TooltipTriggerPrimitive>['delay']\n}\n\n/**\n * Brief contextual information for a focusable child.\n * Do not use it as the child's only accessible label or as essential content.\n */\nexport function Tooltip({ label, children, delay, ...props }: TooltipProps) {\n return (\n <TooltipTrigger delay={delay}>\n {children}\n <TooltipContent {...props}>{label}</TooltipContent>\n </TooltipTrigger>\n )\n}\n\n/**\n * Brief contextual information revealed from a {@link TooltipTrigger}.\n * Do not use it as the only label or as essential content.\n */\nexport function TooltipContent({\n className,\n placement = 'top',\n offset = 4,\n crossOffset = 0,\n children,\n ...props\n}: TooltipSurfaceProps & {\n children?: React.ReactNode\n}) {\n return (\n <TooltipPrimitive\n data-slot=\"tooltip-content\"\n placement={placement}\n offset={offset}\n crossOffset={crossOffset}\n className={cn(\n 'z-50 inline-flex w-fit max-w-xs origin-(--trigger-anchor-point) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background shadow-md outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm',\n className,\n )}\n {...props}\n >\n {children}\n <OverlayArrow\n className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs\"\n style={({ placement, defaultStyle }) => ({\n ...defaultStyle,\n rotate: '0deg',\n translate: '0 0',\n transform:\n placement === 'bottom'\n ? 'translate(-50%, calc(50% + 2px)) rotate(45deg)'\n : placement === 'top'\n ? 'translate(-50%, calc(-50% - 2px)) rotate(45deg)'\n : placement === 'left'\n ? 'translate(calc(-50% - 2px), -50%) rotate(45deg)'\n : 'translate(calc(50% + 2px), -50%) rotate(45deg)',\n })}\n />\n </TooltipPrimitive>\n )\n}\n","import { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\nimport { Input } from '../input/input'\nimport { Textarea } from '../textarea/textarea'\nimport { inputGroupAddonVariants } from './input-group-addon-variants'\n\n/** Visually joins an input or textarea with contextual text and actions. */\nexport function InputGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: fieldset cannot preserve this inline control composition.\n <div\n role=\"group\"\n data-slot=\"input-group\"\n className={cn(\n 'group/input-group relative flex min-h-8 w-full min-w-0 items-center rounded-lg border border-border transition-colors outline-none has-disabled:bg-muted/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align^=block]]:h-auto has-[>[data-align^=block]]:flex-col',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function InputGroupAddon({\n className,\n align = 'inline-start',\n onClick,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: this addon delegates focus to its associated input.\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented && !(event.target as HTMLElement).closest('button'))\n event.currentTarget.parentElement?.querySelector<HTMLElement>('input, textarea')?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva('shrink-0 shadow-none', {\n variants: {\n size: { xs: 'h-6 px-1.5 text-xs', sm: 'h-7 px-2', 'icon-xs': 'size-6', 'icon-sm': 'size-7' },\n },\n defaultVariants: { size: 'xs' },\n})\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size'> &\n VariantProps<typeof inputGroupButtonVariants>\nexport function InputGroupButton({\n className,\n type = 'button',\n variant = 'ghost',\n size = 'xs',\n ...props\n}: InputGroupButtonProps) {\n const buttonSize = size === 'icon-xs' || size === 'icon-sm' ? size : size\n return (\n <Button\n data-slot=\"input-group-button\"\n type={type}\n size={buttonSize}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport function InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"input-group-text\"\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function InputGroupInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n 'flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function InputGroupTextarea({ className, ...props }: React.ComponentProps<typeof Textarea>) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n 'flex-1 resize-none rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0',\n className,\n )}\n {...props}\n />\n )\n}\n","import { forwardRef } from 'react'\nimport { Input as AriaInput, type InputProps as AriaInputProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\ntype CompatibleRef<T> = ((instance: T | null) => unknown) | { readonly current: T | null } | null\n\n/** Props for a single-line text input. */\nexport type InputProps = Omit<AriaInputProps, 'ref'> & {\n /** Ref compatible with all supported React 19 type releases. */\n ref?: CompatibleRef<HTMLInputElement>\n}\n\nconst InputImpl = forwardRef<HTMLInputElement, AriaInputProps>(function Input(\n { className, type, ...props },\n ref,\n) {\n return (\n <AriaInput\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n 'box-border h-8 w-full min-w-0 rounded-lg border border-border bg-background px-2.5 py-1 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive',\n className,\n )}\n {...props}\n />\n )\n})\n\n/** Accessible single-line input with a ref type compatible across React 19 type releases. */\nexport const Input = InputImpl as unknown as (props: InputProps) => ReturnType<typeof InputImpl>\n","import { forwardRef } from 'react'\nimport {\n TextArea as AriaTextArea,\n type TextAreaProps as AriaTextAreaProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\ntype CompatibleRef<T> = ((instance: T | null) => unknown) | { readonly current: T | null } | null\n\nexport type TextareaProps = Omit<AriaTextAreaProps, 'ref'> & {\n ref?: CompatibleRef<HTMLTextAreaElement>\n}\n\nconst TextareaImpl = forwardRef<HTMLTextAreaElement, AriaTextAreaProps>(function Textarea(\n { className, ...props },\n ref,\n) {\n return (\n <AriaTextArea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n 'box-border min-h-20 w-full rounded-lg border border-border bg-background px-2.5 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive',\n className,\n )}\n {...props}\n />\n )\n})\n\n/** Forward-ref component with a ref type compatible across React 19 type releases. */\nexport const Textarea = TextareaImpl as unknown as (\n props: TextareaProps,\n) => ReturnType<typeof TextareaImpl>\n","import { cva } from 'class-variance-authority'\n\nexport const inputGroupAddonVariants = cva(\n \"flex cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n 'inline-start': 'order-first pl-2',\n 'inline-end': 'order-last pr-2',\n 'block-start': 'order-first w-full justify-start px-2.5 pt-2',\n 'block-end': 'order-last w-full justify-start px-2.5 pb-2',\n },\n },\n defaultVariants: { align: 'inline-start' },\n },\n)\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Formats a keyboard key or shortcut with semantic `kbd` markup. */\nexport function Kbd({ className, ...props }: React.ComponentProps<'kbd'>) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n 'pointer-events-none inline-flex h-5 min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function KbdGroup({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"kbd-group\"\n className={cn('inline-flex items-center gap-1', className)}\n {...props}\n />\n )\n}\n","import { LoaderCircle } from 'lucide-react'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Busy overlay that keeps the loading state available to assistive technology. */\nexport function LoadingOverlay({\n label = 'Cargando',\n className,\n ...props\n}: React.ComponentProps<'output'> & { label?: string }) {\n return (\n <output\n aria-live=\"polite\"\n className={cn(\n 'absolute inset-0 z-10 flex items-center justify-center bg-background/70 backdrop-blur-[2px]',\n className,\n )}\n {...props}\n >\n <div className=\"border-border bg-background flex items-center gap-2 rounded-lg border px-3 py-2 text-sm shadow-sm\">\n <LoaderCircle className=\"animate-spin\" aria-hidden=\"true\" />\n <span>{label}</span>\n </div>\n </output>\n )\n}\n","import {\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n MenuTrigger as AriaMenuTrigger,\n Popover,\n type MenuItemProps,\n type MenuProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport const MenuTrigger = AriaMenuTrigger\n\nexport function MenuContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"menu-content\"\n className={cn(\n 'min-w-40 overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Accessible collection of actions or options within a {@link MenuTrigger}. */\nexport function Menu<T extends object>({ className, ...props }: MenuProps<T>) {\n return <AriaMenu data-slot=\"menu\" className={cn('outline-none', className)} {...props} />\n}\n\nexport function MenuItem<T extends object>({ className, children, ...props }: MenuItemProps<T>) {\n return (\n <AriaMenuItem\n data-slot=\"menu-item\"\n className={cn(\n 'flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n </AriaMenuItem>\n )\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Card, CardContent } from '../card/card'\n\nexport type MetricCardProps = Omit<React.ComponentProps<typeof Card>, 'children'> & {\n /** Short name of the metric. */\n label: React.ReactNode\n /** Primary metric value. */\n value: React.ReactNode\n /** Optional supporting information, such as freshness or comparison. */\n description?: React.ReactNode\n /** Decorative or labelled visual accompanying the metric. */\n icon?: React.ReactNode\n /** Semantic emphasis without coupling the card to a product status. */\n tone?: 'default' | 'success' | 'warning' | 'danger' | 'info'\n}\n\n/** Compact, accessible summary of a labelled metric. */\nexport function MetricCard({\n className,\n label,\n value,\n description,\n icon,\n tone = 'default',\n ...props\n}: MetricCardProps) {\n return (\n <Card data-slot=\"metric-card\" data-tone={tone} className={cn('min-w-0', className)} {...props}>\n <CardContent className=\"flex items-start gap-3\">\n {icon ? (\n <div data-slot=\"metric-card-icon\" className=\"text-muted-foreground shrink-0\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0\">\n <p data-slot=\"metric-card-label\" className=\"text-muted-foreground text-sm\">\n {label}\n </p>\n <strong\n data-slot=\"metric-card-value\"\n className=\"mt-1 block text-2xl font-semibold tracking-tight\"\n >\n {value}\n </strong>\n {description ? (\n <p data-slot=\"metric-card-description\" className=\"text-muted-foreground mt-1 text-xs\">\n {description}\n </p>\n ) : null}\n </div>\n </CardContent>\n </Card>\n )\n}\n","import {\n forwardRef,\n type PointerEvent as ReactPointerEvent,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Input as AriaInput, type InputProps as AriaInputProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\ntype CompatibleRef<T> = ((instance: T | null) => unknown) | { readonly current: T | null } | null\n\nexport type OtpInputProps = Omit<\n AriaInputProps,\n 'children' | 'className' | 'defaultValue' | 'maxLength' | 'onChange' | 'type' | 'value'\n> & {\n /** Number of numeric characters in the code. */\n length?: number\n value?: string\n defaultValue?: string\n onChange?: (value: string) => void\n onComplete?: (value: string) => void\n className?: string\n inputClassName?: string\n ref?: CompatibleRef<HTMLInputElement>\n}\n\nfunction normalizeOtp(value: string, length: number) {\n return value.replace(/[^0-9]/g, '').slice(0, length)\n}\n\nconst OtpInputImpl = forwardRef<HTMLInputElement, OtpInputProps>(function OtpInput(\n {\n length = 6,\n value,\n defaultValue = '',\n onChange,\n onComplete,\n className,\n inputClassName,\n disabled,\n onBlur,\n onFocus,\n onKeyUp,\n onSelect,\n ...props\n },\n forwardedRef,\n) {\n const slotCount = Math.max(1, Math.floor(length))\n const controlled = value !== undefined\n const [internalValue, setInternalValue] = useState(() => normalizeOtp(defaultValue, slotCount))\n const code = normalizeOtp(controlled ? value : internalValue, slotCount)\n const slots = Array.from({ length: slotCount }, (_, index) => `otp-slot-${index + 1}`)\n const inputRef = useRef<HTMLInputElement>(null)\n const [focused, setFocused] = useState(false)\n const [selectionStart, setSelectionStart] = useState(0)\n const invalid = props['aria-invalid'] === true || props['aria-invalid'] === 'true'\n const activeIndex =\n code.length === slotCount ? slotCount - 1 : Math.min(selectionStart, code.length, slotCount - 1)\n\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement)\n\n function updateSelection(input: HTMLInputElement) {\n setSelectionStart(input.selectionStart ?? code.length)\n }\n\n function commitValue(rawValue: string) {\n const nextValue = normalizeOtp(rawValue, slotCount)\n if (!controlled) setInternalValue(nextValue)\n if (nextValue === code) return\n onChange?.(nextValue)\n if (nextValue.length === slotCount) onComplete?.(nextValue)\n }\n\n function handlePointerDown(event: ReactPointerEvent<HTMLDivElement>) {\n if (disabled) return\n event.preventDefault()\n const input = inputRef.current\n if (!input) return\n const bounds = event.currentTarget.getBoundingClientRect()\n const offset = bounds.width > 0 ? (event.clientX - bounds.left) / bounds.width : 1\n const position = Math.min(Math.max(Math.floor(offset * slotCount), 0), code.length)\n input.focus()\n input.setSelectionRange(position, position)\n setSelectionStart(position)\n }\n\n return (\n <div\n data-slot=\"otp-input\"\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n className={cn('relative inline-grid max-w-full gap-2', className)}\n style={{ gridTemplateColumns: `repeat(${slotCount}, minmax(0, 2.5rem))` }}\n onPointerDown={handlePointerDown}\n >\n <AriaInput\n {...props}\n ref={inputRef}\n type=\"text\"\n inputMode={props.inputMode ?? 'numeric'}\n autoComplete={props.autoComplete ?? 'one-time-code'}\n pattern={props.pattern ?? '[0-9]*'}\n maxLength={slotCount}\n value={code}\n disabled={disabled}\n data-slot=\"otp-input-control\"\n className={cn(\n 'absolute inset-0 z-10 size-full cursor-text appearance-none rounded-lg border-0 bg-transparent text-base text-transparent caret-transparent outline-none selection:bg-transparent disabled:cursor-not-allowed',\n inputClassName,\n )}\n onChange={(event) => {\n commitValue(event.currentTarget.value)\n updateSelection(event.currentTarget)\n }}\n onFocus={(event) => {\n setFocused(true)\n updateSelection(event.currentTarget)\n onFocus?.(event)\n }}\n onBlur={(event) => {\n setFocused(false)\n onBlur?.(event)\n }}\n onSelect={(event) => {\n updateSelection(event.currentTarget)\n onSelect?.(event)\n }}\n onKeyUp={(event) => {\n updateSelection(event.currentTarget)\n onKeyUp?.(event)\n }}\n />\n {slots.map((slot, index) => (\n <span\n key={slot}\n aria-hidden=\"true\"\n data-slot=\"otp-input-slot\"\n data-active={(focused && index === activeIndex) || undefined}\n className={cn(\n 'pointer-events-none grid size-10 place-items-center rounded-lg border border-border bg-background text-base font-medium tabular-nums text-foreground transition-[border-color,box-shadow]',\n focused && index === activeIndex && 'border-ring ring-3 ring-ring/50',\n invalid && 'border-destructive',\n disabled && 'opacity-50',\n )}\n >\n {code[index] ?? ''}\n </span>\n ))}\n </div>\n )\n})\n\n/** A single accessible input visually split into slots for numeric one-time codes. */\nexport const OtpInput = OtpInputImpl as unknown as (\n props: OtpInputProps,\n) => ReturnType<typeof OtpInputImpl>\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Page-level heading layout with optional description and actions. */\nexport function PageHeader({ className, ...props }: React.ComponentProps<'header'>) {\n return (\n <header\n data-slot=\"page-header\"\n className={cn(\n 'flex flex-col gap-4 py-2 sm:flex-row sm:items-center sm:justify-between',\n className,\n )}\n {...props}\n />\n )\n}\nexport function PageHeaderHeading({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"page-header-heading\" className={cn('min-w-0', className)} {...props} />\n}\nexport function PageHeaderTitle({ className, children, ...props }: React.ComponentProps<'h1'>) {\n return (\n <h1\n data-slot=\"page-header-title\"\n className={cn('truncate text-xl font-semibold tracking-tight md:text-2xl', className)}\n {...props}\n >\n {children}\n </h1>\n )\n}\nexport function PageHeaderDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"page-header-description\"\n className={cn('mt-1 text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\nexport function PageHeaderActions({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"page-header-actions\"\n className={cn('flex shrink-0 items-center gap-2', className)}\n {...props}\n />\n )\n}\n","import { ChevronLeft, ChevronRight } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Button } from '../button/button'\n\nexport type PaginationProps = {\n /** Currently selected page, starting at one. */\n page: number\n /** Total number of pages available. */\n pageCount: number\n /** Called with the page selected by the user. */\n onPageChange: (page: number) => void\n /** Accessible name for the page navigation landmark. */\n ariaLabel?: string\n /** Optional description of the slice of results currently visible. */\n summary?: React.ReactNode\n /** Number of neighbouring pages shown around the current page. */\n siblingCount?: number\n className?: string\n}\n\nfunction visiblePages(page: number, pageCount: number, siblingCount: number) {\n return [\n ...new Set([\n 1,\n ...Array.from({ length: siblingCount * 2 + 1 }, (_, index) => page - siblingCount + index),\n pageCount,\n ]),\n ]\n .filter((item) => item >= 1 && item <= pageCount)\n .sort((left, right) => left - right)\n}\n\n/** Navigation control for a known number of result pages. */\nexport function Pagination({\n page,\n pageCount,\n onPageChange,\n ariaLabel = 'Paginación',\n summary,\n siblingCount = 1,\n className,\n}: PaginationProps) {\n if (pageCount <= 1) return null\n const pages = visiblePages(page, pageCount, siblingCount)\n\n return (\n <nav\n aria-label={ariaLabel}\n className={cn('flex flex-wrap items-center justify-between gap-4', className)}\n >\n <p className=\"text-muted-foreground text-sm\">{summary ?? `Página ${page} de ${pageCount}`}</p>\n <div className=\"flex items-center gap-1\">\n <Button\n aria-label=\"Página anterior\"\n isDisabled={page <= 1}\n onPress={() => onPageChange(page - 1)}\n size=\"icon\"\n variant=\"ghost\"\n >\n <ChevronLeft />\n </Button>\n {pages.map((item, index) => {\n const previousPage = pages[index - 1]\n return (\n <React.Fragment key={item}>\n {previousPage !== undefined && item > previousPage + 1 ? (\n <span aria-hidden=\"true\" className=\"text-muted-foreground px-1\">\n …\n </span>\n ) : null}\n <Button\n aria-current={item === page ? 'page' : undefined}\n aria-label={`Página ${item}`}\n onPress={() => onPageChange(item)}\n size=\"icon\"\n variant={item === page ? 'secondary' : 'ghost'}\n >\n {item}\n </Button>\n </React.Fragment>\n )\n })}\n <Button\n aria-label=\"Página siguiente\"\n isDisabled={page >= pageCount}\n onPress={() => onPageChange(page + 1)}\n size=\"icon\"\n variant=\"ghost\"\n >\n <ChevronRight />\n </Button>\n </div>\n </nav>\n )\n}\n","import type * as React from 'react'\nimport {\n DialogTrigger as AriaDialogTrigger,\n Popover as AriaPopover,\n type DialogTriggerProps,\n type PopoverProps as AriaPopoverProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\n\nexport type PopoverContentProps = Omit<AriaPopoverProps, 'className' | 'trigger'> & {\n className?: string\n}\nexport type { DialogTriggerProps as PopoverTriggerProps }\n\n/** Wrap a trigger and Popover surface; React Aria handles focus and positioning. */\nexport const PopoverTrigger = AriaDialogTrigger\n\n/** Floating content positioned and focus-managed by {@link PopoverTrigger}. */\nexport function PopoverContent({ className, ...props }: PopoverContentProps) {\n return (\n <AriaPopover\n data-slot=\"popover\"\n offset={6}\n className={cn(\n 'z-50 min-w-48 rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype PopoverTriggerStateProps = Pick<DialogTriggerProps, 'defaultOpen' | 'isOpen' | 'onOpenChange'>\n\ntype SimplePopoverProps = PopoverContentProps &\n PopoverTriggerStateProps & {\n /** Text for a default button, or an interactive element that opens the popover. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<ButtonProps, 'children'>\n children: React.ReactNode\n }\n\nexport type PopoverProps = PopoverContentProps | SimplePopoverProps\n\n/**\n * A contextual surface with a simple trigger API.\n * Omit {@link trigger} and use {@link PopoverTrigger} plus {@link PopoverContent} for advanced composition.\n */\nexport function Popover(props: PopoverProps) {\n if (!('trigger' in props)) return <PopoverContent {...props} />\n\n const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } =\n props\n const triggerElement =\n typeof trigger === 'string' ? <Button {...triggerProps}>{trigger}</Button> : trigger\n\n return (\n <PopoverTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {triggerElement}\n <PopoverContent {...contentProps}>{children}</PopoverContent>\n </PopoverTrigger>\n )\n}\n","import { Minus, Plus } from 'lucide-react'\nimport {\n Button as AriaButton,\n Group as AriaGroup,\n Input as AriaInput,\n NumberField as AriaNumberField,\n type NumberFieldProps as AriaNumberFieldProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport type QuantityInputProps = Omit<AriaNumberFieldProps, 'children' | 'className'> & {\n className?: string\n inputClassName?: string\n decrementAriaLabel?: string\n incrementAriaLabel?: string\n}\n\n/** A compact quantity control with accessible stepper buttons and numeric keyboard support. */\nexport function QuantityInput({\n className,\n inputClassName,\n decrementAriaLabel = 'Disminuir cantidad',\n incrementAriaLabel = 'Aumentar cantidad',\n minValue = 0,\n step = 1,\n ...props\n}: QuantityInputProps) {\n return (\n <AriaNumberField\n {...props}\n minValue={minValue}\n step={step}\n data-slot=\"quantity-input\"\n className={cn(\n 'group/quantity-input inline-flex min-w-0 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n >\n <AriaGroup\n data-slot=\"quantity-input-group\"\n className=\"border-border bg-background text-foreground focus-within:border-ring focus-within:ring-ring/50 group-data-invalid/quantity-input:border-destructive flex h-8 min-w-0 items-stretch overflow-hidden rounded-lg border transition-[border-color,box-shadow] focus-within:ring-3\"\n >\n <AriaButton\n slot=\"decrement\"\n aria-label={decrementAriaLabel}\n data-slot=\"quantity-input-decrement\"\n className=\"border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-r transition-colors outline-none data-disabled:pointer-events-none\"\n >\n <Minus aria-hidden=\"true\" className=\"size-4\" />\n </AriaButton>\n <AriaInput\n data-slot=\"quantity-input-value\"\n className={cn(\n 'w-14 min-w-0 bg-transparent px-1 text-center text-sm tabular-nums outline-none',\n inputClassName,\n )}\n />\n <AriaButton\n slot=\"increment\"\n aria-label={incrementAriaLabel}\n data-slot=\"quantity-input-increment\"\n className=\"border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-l transition-colors outline-none data-disabled:pointer-events-none\"\n >\n <Plus aria-hidden=\"true\" className=\"size-4\" />\n </AriaButton>\n </AriaGroup>\n </AriaNumberField>\n )\n}\n","import { ChevronDown } from 'lucide-react'\nimport {\n Button as AriaButton,\n Select as AriaSelect,\n SelectValue as AriaSelectValue,\n ListBox,\n ListBoxItem,\n Popover,\n type SelectProps as AriaSelectProps,\n type ButtonProps,\n type ListBoxItemProps,\n type ListBoxProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** State container for an accessible select control and its option collection. */\nexport const Select = AriaSelect\nexport type { AriaSelectProps as SelectProps }\n\n/** Button that opens the option list of its parent {@link Select}. */\nexport function SelectTrigger({ className, children, ...props }: ButtonProps) {\n return (\n <AriaButton\n data-slot=\"select-trigger\"\n className={cn(\n 'group/select-trigger box-border flex h-8 w-full min-w-36 items-center gap-2 rounded-lg border border-border bg-background px-2.5 text-left text-sm text-foreground outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {(state) => (\n <>\n {typeof children === 'function' ? children(state) : children}\n <ChevronDown\n aria-hidden=\"true\"\n className=\"text-muted-foreground ml-auto size-4 transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none\"\n />\n </>\n )}\n </AriaButton>\n )\n}\n\n/** Displays the selected option or its placeholder. */\nexport function SelectValue({ className, ...props }: React.ComponentProps<typeof AriaSelectValue>) {\n return (\n <AriaSelectValue\n data-slot=\"select-value\"\n className={cn('flex-1 truncate data-placeholder:text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\n/** Floating surface that contains a {@link SelectList}. */\nexport function SelectContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"select-content\"\n className={cn(\n 'w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Scrollable list of {@link SelectItem} options. */\nexport function SelectList<T extends object>({ className, ...props }: ListBoxProps<T>) {\n return (\n <ListBox\n data-slot=\"select-list\"\n className={cn('max-h-64 overflow-y-auto', className)}\n {...props}\n />\n )\n}\n\n/** Selectable option within a {@link SelectList}. */\nexport function SelectItem<T extends object>({\n className,\n children,\n ...props\n}: ListBoxItemProps<T>) {\n return (\n <ListBoxItem\n data-slot=\"select-item\"\n className={cn(\n 'flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-selected:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n </ListBoxItem>\n )\n}\n","'use client'\n\nimport { XIcon } from 'lucide-react'\nimport type * as React from 'react'\nimport {\n Heading,\n ModalOverlay as ModalOverlayPrimitive,\n type ModalOverlayProps as ModalOverlayPrimitiveProps,\n Modal as ModalPrimitive,\n Dialog as SheetPrimitive,\n type DialogProps as SheetPrimitiveProps,\n DialogTrigger as SheetTriggerPrimitive,\n type DialogTriggerProps as SheetTriggerPrimitiveProps,\n Text,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\n\nfunction SheetTrigger({ ...props }: SheetTriggerPrimitiveProps) {\n return <SheetTriggerPrimitive data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({ className, variant = 'outline', size = 'default', ...props }: ButtonProps) {\n return (\n <Button\n slot=\"close\"\n data-slot=\"sheet-close\"\n variant={variant}\n size={size}\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction SheetOverlay({\n className,\n children,\n ...props\n}: Omit<ModalOverlayPrimitiveProps, 'className' | 'children'> & {\n className?: string\n children: React.ReactNode\n}) {\n return (\n <ModalOverlayPrimitive\n data-slot=\"sheet-overlay\"\n isDismissable\n className={cn(\n 'fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-entering:opacity-0 data-exiting:opacity-0 supports-backdrop-filter:backdrop-blur-xs',\n className,\n )}\n {...props}\n >\n {children}\n </ModalOverlayPrimitive>\n )\n}\n\n/** Dismissable modal panel that slides in from a screen edge. */\nfunction Sheet({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: Omit<ModalOverlayPrimitiveProps, 'className' | 'children'> &\n Pick<React.ComponentProps<typeof ModalPrimitive>, 'isDismissable'> & {\n className?: string\n children: React.ReactNode\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n }) {\n return (\n <SheetOverlay {...props}>\n <ModalPrimitive\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n 'fixed z-50 flex flex-col gap-4 border-border bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-entering:opacity-0 data-exiting:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-entering:translate-y-10 data-[side=bottom]:data-exiting:translate-y-10 data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-entering:-translate-x-10 data-[side=left]:data-exiting:-translate-x-10 data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-entering:translate-x-10 data-[side=right]:data-exiting:translate-x-10 data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-entering:-translate-y-10 data-[side=top]:data-exiting:-translate-y-10 data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm',\n className,\n )}\n >\n <SheetPrimitive\n data-slot=\"sheet\"\n className=\"[display:inherit] h-full max-h-[inherit] [flex-direction:inherit] gap-[inherit] outline-none\"\n >\n {children}\n {showCloseButton && (\n <SheetClose variant=\"ghost\" className=\"absolute top-3 right-3\" size=\"icon-sm\">\n <XIcon />\n <span className=\"sr-only\">Cerrar</span>\n </SheetClose>\n )}\n </SheetPrimitive>\n </ModalPrimitive>\n </SheetOverlay>\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Sheet> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n}) {\n return (\n <Sheet className={className} side={side} showCloseButton={showCloseButton} {...props}>\n {children}\n </Sheet>\n )\n}\n\n/** Props for the simple {@link Drawer} API. */\nexport type DrawerProps = React.ComponentProps<typeof SheetContent> &\n Pick<SheetTriggerPrimitiveProps, 'defaultOpen' | 'isOpen' | 'onOpenChange'> & {\n /** Text for a default button, or an interactive element that opens the drawer. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<ButtonProps, 'children'>\n }\n\n/**\n * A dismissable modal panel with a simple trigger API.\n * Use {@link DrawerTrigger} plus {@link DrawerContent} for advanced composition.\n */\nfunction Drawer({\n children,\n trigger,\n triggerProps,\n defaultOpen,\n isOpen,\n onOpenChange,\n ...contentProps\n}: DrawerProps) {\n const triggerElement =\n typeof trigger === 'string' ? <Button {...triggerProps}>{trigger}</Button> : trigger\n\n return (\n <SheetTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {triggerElement}\n <SheetContent {...contentProps}>{children}</SheetContent>\n </SheetTrigger>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-0.5 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({ className, ...props }: Omit<React.ComponentProps<typeof Heading>, 'slot'>) {\n return (\n <Heading\n slot=\"title\"\n data-slot=\"sheet-title\"\n className={cn('text-base font-medium text-foreground', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof Text>, 'slot'>) {\n return (\n <Text\n slot=\"description\"\n data-slot=\"sheet-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\n/** Explicit advanced-composition name for {@link SheetTrigger}. */\nconst DrawerTrigger = SheetTrigger\n/** Explicit advanced-composition name for {@link Sheet}. */\nconst DrawerContent = SheetContent\n/** Explicit advanced-composition name for {@link SheetClose}. */\nconst DrawerClose = SheetClose\n/** Explicit advanced-composition name for {@link SheetHeader}. */\nconst DrawerHeader = SheetHeader\n/** Explicit advanced-composition name for {@link SheetFooter}. */\nconst DrawerFooter = SheetFooter\n/** Explicit advanced-composition name for {@link SheetTitle}. */\nconst DrawerTitle = SheetTitle\n/** Explicit advanced-composition name for {@link SheetDescription}. */\nconst DrawerDescription = SheetDescription\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n type SheetPrimitiveProps,\n SheetTitle,\n SheetTrigger,\n type SheetTriggerPrimitiveProps,\n}\n","import { ChevronLeft, ChevronRight, Ellipsis, Search } from 'lucide-react'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { Link, type LinkProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\nimport { SidebarContext, useSidebar } from './sidebar-context'\n\n/** Provides the expanded or collapsed state required by sidebar components. */\nexport function SidebarProvider({\n defaultCollapsed = false,\n children,\n}: {\n defaultCollapsed?: boolean\n children: ReactNode\n}) {\n const [collapsed, setCollapsed] = useState(defaultCollapsed)\n const value = useMemo(\n () => ({\n collapsed,\n setCollapsed,\n toggle: () => setCollapsed((current) => !current),\n }),\n [collapsed],\n )\n return <SidebarContext.Provider value={value}>{children}</SidebarContext.Provider>\n}\n\n/** Primary application navigation; render it within a {@link SidebarProvider}. */\nexport function Sidebar({ className, ...props }: React.ComponentProps<'aside'>) {\n const { collapsed } = useSidebar()\n return (\n <aside\n data-slot=\"sidebar\"\n data-collapsed={collapsed || undefined}\n className={cn(\n 'group/sidebar flex h-full w-56 shrink-0 flex-col border-r border-border bg-card text-foreground transition-[width] duration-200 ease-out motion-reduce:transition-none data-[collapsed]:w-16',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n className={cn('flex items-center gap-2 px-4 py-5', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarSearch({\n label = 'Buscar…',\n shortcut = '⌘K',\n className,\n ...props\n}: React.ComponentProps<'button'> & { label?: string; shortcut?: string }) {\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-search\"\n className={cn(\n 'group flex w-full items-center gap-2 rounded-md border border-border bg-background px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:border-primary/40 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...props}\n >\n <Search className=\"size-4 shrink-0\" />\n <span className=\"flex-1 text-left\">{label}</span>\n <kbd className=\"bg-secondary text-muted-foreground rounded px-1.5 py-0.5 font-mono text-[10px]\">\n {shortcut}\n </kbd>\n </button>\n )\n}\n\nexport function SidebarContent({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n data-slot=\"sidebar-content\"\n aria-label=\"Navegación principal\"\n className={cn('min-h-0 flex-1 overflow-y-auto px-2 py-1', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n className={cn('mt-auto flex flex-col gap-2 border-t border-border p-2', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarGroup({\n label,\n className,\n children,\n ...props\n}: React.ComponentProps<'section'> & { label?: string }) {\n const { collapsed } = useSidebar()\n return (\n <section data-slot=\"sidebar-group\" className={cn('mb-4 last:mb-0', className)} {...props}>\n {label && (\n <h2\n className={cn(\n 'mb-1 px-3 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground',\n collapsed && 'sr-only',\n )}\n >\n {label}\n </h2>\n )}\n {children}\n </section>\n )\n}\n\nexport type SidebarItemProps = LinkProps & {\n icon?: ReactNode\n active?: boolean\n badge?: ReactNode\n label?: string\n}\nexport function SidebarItem({\n icon,\n active,\n badge,\n label,\n children,\n className,\n ...props\n}: SidebarItemProps) {\n const { collapsed } = useSidebar()\n const content = typeof children === 'function' ? label : (children ?? label)\n return (\n <Link\n data-slot=\"sidebar-item\"\n aria-current={active ? 'page' : undefined}\n aria-label={collapsed && label ? label : undefined}\n className={cn(\n 'group/item relative flex min-h-9 items-center gap-2.5 rounded-md px-2.5 py-2 text-sm text-muted-foreground outline-none transition-[background-color,color,transform] duration-150 hover:bg-secondary/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring/40 data-[current=page]:bg-secondary data-[current=page]:font-medium data-[current=page]:text-foreground data-pressed:scale-[0.98] motion-reduce:transition-none',\n collapsed && 'justify-center px-0',\n typeof className === 'function' ? className : className,\n )}\n {...props}\n >\n {(values) => (\n <>\n <span className=\"flex size-4 shrink-0 items-center justify-center\">{icon}</span>\n <span className={cn('min-w-0 flex-1 truncate', collapsed && 'sr-only')}>\n {typeof children === 'function' ? children(values) : content}\n </span>\n {badge && !collapsed && <span className=\"text-muted-foreground text-xs\">{badge}</span>}\n </>\n )}\n </Link>\n )\n}\n\nexport function SidebarSeparator({ className, ...props }: React.ComponentProps<'hr'>) {\n return (\n <hr\n data-slot=\"sidebar-separator\"\n className={cn('my-2 h-px border-0 bg-border', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarTrigger({ className, ...props }: ButtonProps) {\n const { collapsed, toggle } = useSidebar()\n return (\n <Button\n aria-label={collapsed ? 'Expandir navegación' : 'Colapsar navegación'}\n onPress={toggle}\n size=\"icon\"\n variant=\"ghost\"\n className={cn('ml-auto', className)}\n {...props}\n >\n {collapsed ? <ChevronRight /> : <ChevronLeft />}\n </Button>\n )\n}\n\nexport function SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggle } = useSidebar()\n return (\n <button\n type=\"button\"\n aria-label=\"Alternar navegación\"\n onClick={toggle}\n className={cn(\n 'absolute inset-y-0 right-0 z-20 hidden w-1 -translate-x-1/2 cursor-ew-resize bg-transparent transition-colors hover:bg-border lg:block',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function SidebarMore({ className, ...props }: ButtonProps) {\n return (\n <Button\n aria-label=\"Más opciones\"\n size=\"icon\"\n variant=\"ghost\"\n className={cn('size-7', className)}\n {...props}\n >\n <Ellipsis />\n </Button>\n )\n}\n","import { createContext, useContext } from 'react'\n\nexport type SidebarContextValue = {\n collapsed: boolean\n setCollapsed: (value: boolean) => void\n toggle: () => void\n}\n\nexport const SidebarContext = createContext<SidebarContextValue | null>(null)\n\nexport function useSidebar() {\n const context = useContext(SidebarContext)\n if (!context) throw new Error('useSidebar must be used inside SidebarProvider')\n return context\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Decorative placeholder displayed while content is loading. */\nexport function Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n aria-hidden=\"true\"\n data-slot=\"skeleton\"\n className={cn('animate-pulse rounded-md bg-muted', className)}\n {...props}\n />\n )\n}\n","import { LoaderCircle } from 'lucide-react'\nimport { useCallback, useLayoutEffect, useRef } from 'react'\nimport type * as React from 'react'\nimport { useFormStatus } from 'react-dom'\n\nimport { Button, type ButtonProps } from '../button/button'\n\nfunction assignRef(ref: React.Ref<HTMLButtonElement> | undefined, node: HTMLButtonElement | null) {\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n}\n\nexport interface SubmitButtonProps extends Omit<ButtonProps, 'type'> {\n /** Text displayed while the parent form is submitting or loading is set. */\n loadingLabel?: string\n /** @deprecated Use `loadingLabel` instead. */\n pendingLabel?: string\n /** Explicit loading state in addition to the parent form status. */\n loading?: boolean\n children: React.ReactNode\n}\n\n/** Submit button that disables itself and announces progress while a form is pending. */\nexport function SubmitButton({\n loadingLabel,\n pendingLabel,\n loading = false,\n children,\n isDisabled,\n ref: forwardedRef,\n size = 'sm',\n ...props\n}: SubmitButtonProps) {\n const { pending } = useFormStatus()\n const busy = pending || loading\n const label = loadingLabel ?? pendingLabel ?? 'Guardando…'\n const buttonRef = useRef<HTMLButtonElement>(null)\n const setButtonRef = useCallback(\n (node: HTMLButtonElement | null) => {\n buttonRef.current = node\n assignRef(forwardedRef, node)\n },\n [forwardedRef],\n )\n\n useLayoutEffect(() => {\n const button = buttonRef.current\n if (!button) return\n\n if (busy) button.setAttribute('aria-busy', 'true')\n else button.removeAttribute('aria-busy')\n }, [busy])\n\n return (\n <Button\n ref={setButtonRef}\n type=\"submit\"\n size={size}\n isDisabled={busy || isDisabled}\n aria-busy={busy || undefined}\n {...props}\n >\n {busy ? (\n <>\n <LoaderCircle aria-hidden=\"true\" className=\"size-3.5 animate-spin\" />\n {label}\n </>\n ) : (\n children\n )}\n </Button>\n )\n}\n","'use client'\n\nimport { useEffect, useRef, type ReactNode } from 'react'\nimport { Switch as AriaSwitch, type SwitchProps as AriaSwitchProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nconst switchSizes = {\n sm: {\n control: 'h-4 w-[1.875rem] p-0.5',\n thumb: 'h-3',\n idleWidth: '0.75rem',\n activeWidth: '1rem',\n selectedOffset: '0.875rem',\n activeSelectedOffset: '0.625rem',\n },\n md: {\n control: 'h-5 w-9 p-0.5',\n thumb: 'h-4',\n idleWidth: '1rem',\n activeWidth: '1.25rem',\n selectedOffset: '1rem',\n activeSelectedOffset: '0.75rem',\n },\n lg: {\n control: 'h-6 w-11 p-0.5',\n thumb: 'h-5',\n idleWidth: '1.25rem',\n activeWidth: '1.5rem',\n selectedOffset: '1.25rem',\n activeSelectedOffset: '1rem',\n },\n} as const\n\nexport type SwitchProps = Omit<AriaSwitchProps, 'className'> & {\n className?: string\n size?: keyof typeof switchSizes\n description?: ReactNode\n icon?: ReactNode\n selectedIcon?: ReactNode\n}\n\n/** Accessible React Aria switch with semantic tokens and a compact capsule thumb. */\nexport function Switch({\n className,\n children,\n description,\n icon,\n inputRef,\n isDisabled,\n isReadOnly,\n selectedIcon,\n size = 'sm',\n ...props\n}: SwitchProps) {\n const styles = switchSizes[size]\n const fallbackInputRef = useRef<HTMLInputElement>(null)\n const resolvedInputRef = inputRef ?? fallbackInputRef\n\n useEffect(() => {\n const input = resolvedInputRef.current\n if (!input) return\n\n const handleDirectionalKey = (event: KeyboardEvent) => {\n if (\n event.target !== input ||\n event.defaultPrevented ||\n isDisabled ||\n isReadOnly ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n )\n return\n\n const nextSelected =\n event.key === 'ArrowRight' ? true : event.key === 'ArrowLeft' ? false : null\n if (nextSelected === null) return\n\n event.preventDefault()\n if (input.checked !== nextSelected) input.click()\n }\n\n const ownerDocument = input.ownerDocument\n ownerDocument.addEventListener('keydown', handleDirectionalKey)\n return () => ownerDocument.removeEventListener('keydown', handleDirectionalKey)\n }, [isDisabled, isReadOnly, resolvedInputRef])\n\n return (\n <AriaSwitch\n data-slot=\"switch\"\n data-size={size}\n inputRef={resolvedInputRef}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n className={cn(\n 'group/switch inline-flex cursor-pointer items-center gap-3 text-sm text-foreground outline-none select-none',\n 'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {(state) => {\n const isThumbPressed = state.isPressed\n const thumbOffset = state.isSelected\n ? isThumbPressed\n ? styles.activeSelectedOffset\n : styles.selectedOffset\n : '0'\n\n return (\n <>\n <span\n aria-hidden=\"true\"\n data-slot=\"switch-control\"\n className={cn(\n 'relative inline-flex shrink-0 items-center overflow-hidden rounded-full border border-border bg-input shadow-inner',\n 'transition-[background-color,border-color,box-shadow] duration-200 ease-out motion-reduce:transition-none',\n 'group-data-hovered/switch:bg-muted-foreground/25',\n 'group-data-selected/switch:border-primary group-data-selected/switch:bg-primary',\n 'group-data-selected/switch:group-data-hovered/switch:bg-primary/85',\n 'group-data-focus-visible/switch:ring-3 group-data-focus-visible/switch:ring-ring/50',\n styles.control,\n )}\n >\n <span\n data-slot=\"switch-thumb\"\n style={{\n transform: `translate3d(${thumbOffset}, 0, 0)`,\n width: isThumbPressed ? styles.activeWidth : styles.idleWidth,\n }}\n className={cn(\n 'grid shrink-0 place-items-center rounded-full border border-border/60 bg-background text-[0.625rem] text-muted-foreground shadow-sm',\n 'will-change-[transform,width] transition-[transform,width,background-color,color,border-color] duration-[240ms] ease-[cubic-bezier(0.2,0.8,0.2,1)] motion-reduce:transition-none',\n 'group-data-selected/switch:border-primary-foreground/20',\n 'group-data-selected/switch:bg-primary-foreground group-data-selected/switch:text-primary',\n styles.thumb,\n )}\n >\n {state.isSelected ? (selectedIcon ?? icon) : icon}\n </span>\n </span>\n {children || description ? (\n <span className=\"grid gap-0.5 leading-tight\">\n {children ? (\n <span data-slot=\"switch-label\" className=\"font-medium\">\n {typeof children === 'function' ? children(state) : children}\n </span>\n ) : null}\n {description ? (\n <span\n data-slot=\"switch-description\"\n className=\"text-muted-foreground text-xs font-normal\"\n >\n {description}\n </span>\n ) : null}\n </span>\n ) : null}\n </>\n )\n }}\n </AriaSwitch>\n )\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Presentational table primitives. Sorting, pagination and data state stay in the application. */\nexport function Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n )\n}\n\nexport function TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return <thead data-slot=\"table-header\" className={cn('[&_tr]:border-b', className)} {...props} />\n}\nexport function TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n )\n}\nexport function TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'border-b border-border transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n )\n}\nexport function TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n )\n}\nexport function TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn('p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n )\n}\nexport function TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n 'border-t border-border bg-muted/50 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n )\n}\n","import {\n Tab as AriaTab,\n TabList as AriaTabList,\n TabPanel as AriaTabPanel,\n TabPanels as AriaTabPanels,\n Tabs as AriaTabs,\n composeRenderProps,\n type TabListProps as AriaTabListProps,\n type TabPanelProps as AriaTabPanelProps,\n type TabPanelsProps as AriaTabPanelsProps,\n type TabProps as AriaTabProps,\n type TabsProps as AriaTabsProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport type TabsProps = AriaTabsProps\nexport type TabProps = AriaTabProps\nexport type TabPanelProps = AriaTabPanelProps\n\n/** State container that coordinates a tab list with its associated panels. */\nexport function Tabs({ className, ...props }: AriaTabsProps) {\n return (\n <AriaTabs\n data-slot=\"tabs\"\n className={composeRenderProps(className, (value) => cn('flex flex-col gap-2', value))}\n {...props}\n />\n )\n}\n\n/** Container for the selectable {@link TabsTrigger} elements. */\nexport function TabsList<T extends object>({ className, ...props }: AriaTabListProps<T>) {\n return (\n <AriaTabList\n data-slot=\"tabs-list\"\n className={composeRenderProps(className, (value) =>\n cn(\n 'inline-flex w-fit items-center gap-1 rounded-lg bg-muted p-1 text-muted-foreground',\n value,\n ),\n )}\n {...props}\n />\n )\n}\n\n/** Tab control that selects the {@link TabsContent} with the same identifier. */\nexport function TabsTrigger({ className, ...props }: AriaTabProps) {\n return (\n <AriaTab\n data-slot=\"tabs-trigger\"\n className={composeRenderProps(className, (value) =>\n cn(\n 'inline-flex h-7 items-center justify-center gap-1.5 rounded-md px-2.5 text-sm font-medium outline-none transition-colors data-hovered:text-foreground data-selected:bg-background data-selected:text-foreground data-selected:shadow-sm data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n value,\n ),\n )}\n {...props}\n />\n )\n}\n\n/** Container for the panels associated with a {@link TabsList}. */\nexport function TabsPanels<T extends object>({ className, ...props }: AriaTabPanelsProps<T>) {\n return <AriaTabPanels data-slot=\"tabs-panels\" className={cn('min-w-0', className)} {...props} />\n}\n\n/** Content panel displayed for the selected {@link TabsTrigger}. */\nexport function TabsContent({ className, ...props }: AriaTabPanelProps) {\n return (\n <AriaTabPanel\n data-slot=\"tabs-content\"\n className={composeRenderProps(className, (value) =>\n cn('text-sm outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50', value),\n )}\n {...props}\n />\n )\n}\n","import { useEffect, type ReactNode } from 'react'\nimport { sileo, Toaster as SileoToaster } from 'sileo'\n\nimport { toast } from './toast-store'\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info'\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\nexport type ToastAction = { label: string; onPress: () => void }\nexport type ToastOptions = {\n title: string\n description?: string\n variant?: ToastVariant\n duration?: number\n position?: ToastPosition\n action?: ToastAction\n}\nexport type ToastData = ToastOptions & { id: string; state: 'open' | 'closing' }\nexport function ToastProvider({ children }: { children: ReactNode }) {\n return (\n <>\n {children}\n <Toaster />\n </>\n )\n}\n\n/** Viewport that renders notifications created with {@link toast}. */\nexport function Toaster({ position }: { position?: ToastPosition }) {\n return <SileoToaster position={position} options={{ fill: 'var(--ui-secondary)' }} />\n}\n\nexport function ToastViewport({\n position,\n visiblePosition,\n className,\n}: {\n position: ToastPosition\n visiblePosition?: ToastPosition\n className?: string\n}) {\n void className\n if (visiblePosition && visiblePosition !== position) return null\n return <Toaster position={position} />\n}\n\nexport function Toast({\n id,\n title,\n description,\n variant = 'default',\n action,\n state,\n duration = 0,\n position,\n onDismiss,\n}: ToastData & { onDismiss?: () => void }) {\n useEffect(() => {\n if (state !== 'open') return\n const toastId = toast({ title, description, variant, action, duration, position })\n return () => {\n sileo.dismiss(toastId)\n onDismiss?.()\n }\n }, [action, description, duration, id, onDismiss, position, state, title, variant])\n return null\n}\n","import { sileo } from 'sileo'\n\nimport type { ToastOptions, ToastPosition } from './toast'\n\ntype ToastPromiseOptions<T> = {\n loading: string\n success: string | ((value: T) => string)\n error: string | ((error: unknown) => string)\n description?: string\n position?: ToastPosition\n}\n\nfunction toSileoOptions({ title, description, duration, position, action }: ToastOptions) {\n return {\n title,\n description,\n duration: duration === 0 ? null : duration,\n position,\n button: action ? { title: action.label, onClick: action.onPress } : undefined,\n }\n}\n\nfunction create(options: ToastOptions) {\n const sileoOptions = toSileoOptions(options)\n if (options.action) return sileo.action(sileoOptions)\n if (options.variant === 'success') return sileo.success(sileoOptions)\n if (options.variant === 'error') return sileo.error(sileoOptions)\n if (options.variant === 'warning') return sileo.warning(sileoOptions)\n if (options.variant === 'info') return sileo.info(sileoOptions)\n return sileo.show(sileoOptions)\n}\n\nexport const toast = Object.assign((options: ToastOptions) => create(options), {\n success: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'success' }),\n error: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'error' }),\n warning: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'warning' }),\n info: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'info' }),\n dismiss: (id: string) => sileo.dismiss(id),\n promise: <T>(promise: Promise<T>, options: ToastPromiseOptions<T>) => {\n const shared = { description: options.description, position: options.position }\n return sileo.promise(promise, {\n loading: { ...shared, title: options.loading },\n success: (value) => ({\n ...shared,\n title: typeof options.success === 'function' ? options.success(value) : options.success,\n }),\n error: (error) => ({\n ...shared,\n title: typeof options.error === 'function' ? options.error(error) : options.error,\n }),\n position: options.position,\n })\n },\n})\n\nexport function useToast() {\n return toast\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n/** Groups related actions with the toolbar semantic role. */\nexport function Toolbar({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n role=\"toolbar\"\n data-slot=\"toolbar\"\n className={cn('flex flex-wrap items-center gap-2', className)}\n {...props}\n />\n )\n}\nexport function ToolbarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"toolbar-group\"\n className={cn('flex items-center gap-2', className)}\n {...props}\n />\n )\n}\nexport function ToolbarSpacer({ className, ...props }: React.ComponentProps<'div'>) {\n return <div aria-hidden=\"true\" className={cn('hidden flex-1 sm:block', className)} {...props} />\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","names":["FieldError","Input","Label","OtpInput","Popover","Textarea","import_react","import_react","AccordionPrimitive","AccordionItemPrimitive","AccordionHeaderPrimitive","AccordionTriggerPrimitive","AccordionContentPrimitive","React","import_react_aria_components","import_react","import_react_aria_components","import_class_variance_authority","import_jsx_runtime","ButtonPrimitive","LinkPrimitive","import_lucide_react","React","import_react_aria_components","import_jsx_runtime","AriaDialog","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react_aria_components","import_class_variance_authority","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaBreadcrumbs","AriaBreadcrumb","AriaLink","import_react_aria_components","import_jsx_runtime","SeparatorPrimitive","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_react_aria_components","import_jsx_runtime","AriaCheckbox","React","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","AriaComboBox","AriaComboBox","import_react_aria_components","import_jsx_runtime","AriaComboBox","AriaInput","import_jsx_runtime","import_lucide_react","import_react_aria_components","import_jsx_runtime","DisclosureButton","import_lucide_react","import_jsx_runtime","import_class_variance_authority","import_lucide_react","React","import_react_aria_components","import_jsx_runtime","MenuTriggerPrimitive","PopoverPrimitive","MenuPrimitive","MenuSectionPrimitive","HeaderPrimitive","MenuItemPrimitive","className","children","SubmenuTriggerPrimitive","SeparatorPrimitive","import_class_variance_authority","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","Label","LabelPrimitive","import_class_variance_authority","import_jsx_runtime","Label","FieldError","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react_aria_components","import_react_aria_components","import_jsx_runtime","TooltipTriggerPrimitive","TooltipPrimitive","placement","import_jsx_runtime","import_class_variance_authority","import_react","import_react_aria_components","import_jsx_runtime","Input","AriaInput","import_react","import_react_aria_components","import_jsx_runtime","AriaTextArea","Textarea","import_class_variance_authority","import_jsx_runtime","Input","Textarea","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaMenuTrigger","AriaMenu","AriaMenuItem","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","AriaInput","OtpInput","import_jsx_runtime","import_lucide_react","React","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaDialogTrigger","AriaPopover","Popover","import_lucide_react","import_react_aria_components","import_jsx_runtime","AriaNumberField","AriaGroup","AriaButton","AriaInput","import_lucide_react","import_react_aria_components","import_jsx_runtime","AriaSelect","AriaButton","AriaSelectValue","import_lucide_react","import_react_aria_components","import_jsx_runtime","SheetTriggerPrimitive","ModalOverlayPrimitive","ModalPrimitive","SheetPrimitive","import_lucide_react","import_react","import_react_aria_components","import_react","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_react","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","AriaSwitch","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaTabs","AriaTabList","AriaTab","AriaTabPanels","AriaTabPanel","import_react","import_sileo","import_jsx_runtime","SileoToaster","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks/use-autosave.ts","../src/hooks/use-debounced-value.ts","../src/hooks/use-form-dirty.ts","../src/lib/action-ripple.ts","../src/lib/cn.ts","../src/lib/text-match.ts","../src/ui/accordion/accordion.tsx","../src/ui/alert-dialog/alert-dialog.tsx","../src/ui/button/button.tsx","../src/ui/button/button-variants.ts","../src/ui/dialog/dialog.tsx","../src/ui/alert/alert-variants.ts","../src/ui/alert/alert.tsx","../src/ui/app-shell/app-shell.tsx","../src/ui/avatar/avatar.tsx","../src/ui/badge/badge.tsx","../src/ui/badge/badge-variants.ts","../src/ui/breadcrumb/breadcrumb.tsx","../src/ui/separator/separator.tsx","../src/ui/button-group/button-group-variants.ts","../src/ui/button-group/button-group.tsx","../src/ui/card/card.tsx","../src/ui/checkbox/checkbox.tsx","../src/ui/collapsible/collapsible.tsx","../src/ui/combobox/combobox.tsx","../src/ui/command/command.tsx","../src/ui/confirm-dialog/confirm-dialog.tsx","../src/ui/danger-zone/danger-zone.tsx","../src/ui/doc-preview/doc-preview.tsx","../src/ui/dropdown-menu/dropdown-menu.tsx","../src/ui/empty-state/empty-state-variants.ts","../src/ui/empty-state/empty-state.tsx","../src/ui/label/label.tsx","../src/ui/field/field-variants.ts","../src/ui/field/field.tsx","../src/ui/form-feedback/form-feedback.tsx","../src/ui/form-feedback/use-form-feedback.ts","../src/ui/form-row/form-row.tsx","../src/ui/icon-button/icon-button.tsx","../src/ui/tooltip/tooltip.tsx","../src/ui/input-group/input-group.tsx","../src/ui/input/input.tsx","../src/ui/textarea/textarea.tsx","../src/ui/input-group/input-group-addon-variants.ts","../src/ui/kanban/kanban.tsx","../src/ui/kbd/kbd.tsx","../src/ui/loading-overlay/loading-overlay.tsx","../src/ui/menu/menu.tsx","../src/ui/metric-card/metric-card.tsx","../src/ui/otp-input/otp-input.tsx","../src/ui/page-header/page-header.tsx","../src/ui/pagination/pagination.tsx","../src/ui/popover/popover.tsx","../src/ui/quantity-input/quantity-input.tsx","../src/ui/select/select.tsx","../src/ui/sheet/sheet.tsx","../src/ui/sidebar/sidebar.tsx","../src/ui/sidebar/sidebar-context.ts","../src/ui/skeleton/skeleton.tsx","../src/ui/submit-button/submit-button.tsx","../src/ui/switch/switch.tsx","../src/ui/table/table.tsx","../src/ui/tabs/tabs.tsx","../src/ui/toast/toast.tsx","../src/ui/toast/toast-store.ts","../src/ui/toolbar/toolbar.tsx"],"sourcesContent":["export * from './hooks/use-autosave'\nexport * from './hooks/use-debounced-value'\nexport * from './hooks/use-form-dirty'\nexport * from './lib/action-ripple'\nexport * from './lib/cn'\nexport * from './lib/text-match'\nexport * from './ui/accordion/accordion'\nexport * from './ui/alert-dialog/alert-dialog'\nexport * from './ui/alert/alert'\nexport * from './ui/alert/alert-variants'\nexport * from './ui/app-shell/app-shell'\nexport * from './ui/avatar/avatar'\nexport * from './ui/badge/badge'\nexport * from './ui/badge/badge-variants'\nexport * from './ui/breadcrumb/breadcrumb'\nexport * from './ui/button-group/button-group'\nexport * from './ui/button-group/button-group-variants'\nexport * from './ui/button/button'\nexport * from './ui/button/button-variants'\nexport * from './ui/card/card'\nexport * from './ui/checkbox/checkbox'\nexport * from './ui/collapsible/collapsible'\nexport * from './ui/combobox/combobox'\nexport * from './ui/command/command'\nexport * from './ui/confirm-dialog/confirm-dialog'\nexport * from './ui/danger-zone/danger-zone'\nexport * from './ui/dialog/dialog'\nexport * from './ui/doc-preview/doc-preview'\nexport * from './ui/dropdown-menu/dropdown-menu'\nexport * from './ui/empty-state/empty-state'\nexport * from './ui/empty-state/empty-state-variants'\nexport * from './ui/field/field'\nexport * from './ui/field/field-variants'\nexport * from './ui/form-feedback/form-feedback'\nexport * from './ui/form-feedback/use-form-feedback'\nexport * from './ui/form-row/form-row'\nexport * from './ui/icon-button/icon-button'\nexport * from './ui/input-group/input-group'\nexport * from './ui/input-group/input-group-addon-variants'\nexport * from './ui/input/input'\nexport * from './ui/kanban/kanban'\nexport * from './ui/kbd/kbd'\nexport * from './ui/label/label'\nexport * from './ui/loading-overlay/loading-overlay'\nexport * from './ui/menu/menu'\nexport * from './ui/metric-card/metric-card'\nexport * from './ui/otp-input/otp-input'\nexport * from './ui/page-header/page-header'\nexport * from './ui/pagination/pagination'\nexport * from './ui/popover/popover'\nexport * from './ui/quantity-input/quantity-input'\nexport * from './ui/select/select'\nexport * from './ui/separator/separator'\nexport * from './ui/sheet/sheet'\nexport * from './ui/sidebar/sidebar'\nexport * from './ui/sidebar/sidebar-context'\nexport * from './ui/skeleton/skeleton'\nexport * from './ui/submit-button/submit-button'\nexport * from './ui/switch/switch'\nexport * from './ui/table/table'\nexport * from './ui/tabs/tabs'\nexport * from './ui/textarea/textarea'\nexport * from './ui/toast/toast'\nexport * from './ui/toast/toast-store'\nexport * from './ui/toolbar/toolbar'\nexport * from './ui/tooltip/tooltip'\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nexport type AutosaveStatus = 'idle' | 'saving' | 'saved' | 'error'\n\nexport type UseAutosaveOptions<T> = {\n data: T\n onSave: (data: T) => Promise<void>\n debounceMs?: number\n enabled?: boolean\n serialize?: (data: T) => string\n}\n\n/** Debounced autosave with stale-value protection and an explicit `saveNow`. */\nexport function useAutosave<T>({\n data,\n onSave,\n debounceMs = 1_000,\n enabled = true,\n serialize = JSON.stringify,\n}: UseAutosaveOptions<T>) {\n const [status, setStatus] = useState<AutosaveStatus>('idle')\n const [error, setError] = useState<Error | null>(null)\n const lastSaved = useRef<string | null>(null)\n const saveRef = useRef(onSave)\n const serializeRef = useRef(serialize)\n\n useEffect(() => {\n saveRef.current = onSave\n serializeRef.current = serialize\n }, [onSave, serialize])\n\n const save = useCallback(async (value: T) => {\n setStatus('saving')\n setError(null)\n try {\n await saveRef.current(value)\n lastSaved.current = serializeRef.current(value)\n setStatus('saved')\n } catch (cause) {\n setError(cause instanceof Error ? cause : new Error('No se pudo guardar.'))\n setStatus('error')\n }\n }, [])\n\n useEffect(() => {\n if (!enabled) return\n const snapshot = serializeRef.current(data)\n if (lastSaved.current === null) {\n lastSaved.current = snapshot\n return\n }\n if (snapshot === lastSaved.current) return\n const timeout = window.setTimeout(() => void save(data), debounceMs)\n return () => window.clearTimeout(timeout)\n }, [data, debounceMs, enabled, save])\n\n return { status, error, saveNow: () => save(data) }\n}\n","import { useEffect, useState } from 'react'\n\n/** Returns a value only after it has been stable for the supplied delay. */\nexport function useDebouncedValue<T>(value: T, delay: number = 250) {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const timeout = window.setTimeout(() => setDebouncedValue(value), delay)\n return () => window.clearTimeout(timeout)\n }, [delay, value])\n\n return debouncedValue\n}\n","import { type RefCallback, useCallback, useRef, useState } from 'react'\n\nexport function formSnapshot(form: HTMLFormElement): string {\n const entries: Array<[string, string]> = Array.from(new FormData(form), ([key, value]) => [\n key,\n typeof value === 'string' ? value : value.name,\n ])\n entries.sort(([left], [right]) => left.localeCompare(right))\n return JSON.stringify(entries)\n}\n\nexport interface UseFormDirtyResult<T extends HTMLFormElement = HTMLFormElement> {\n formRef: RefCallback<T | null>\n isDirty: boolean\n markDirty: () => void\n reset: () => void\n}\n\n/** Tracks changes in native form controls and supports controlled fields. */\nexport function useFormDirty<T extends HTMLFormElement = HTMLFormElement>(): UseFormDirtyResult<T> {\n const formElement = useRef<T | null>(null)\n const baseline = useRef<string | null>(null)\n const [isDirty, setIsDirty] = useState(false)\n\n const recompute = useCallback(() => {\n if (formElement.current && baseline.current !== null) {\n setIsDirty(formSnapshot(formElement.current) !== baseline.current)\n }\n }, [])\n\n const reset = useCallback(() => {\n if (formElement.current) {\n baseline.current = formSnapshot(formElement.current)\n setIsDirty(false)\n }\n }, [])\n\n const formRef = useCallback<RefCallback<T | null>>(\n (form) => {\n if (formElement.current) {\n formElement.current.removeEventListener('input', recompute)\n formElement.current.removeEventListener('change', recompute)\n formElement.current.removeEventListener('reset', recompute)\n }\n formElement.current = form\n if (form) {\n baseline.current = formSnapshot(form)\n setIsDirty(false)\n form.addEventListener('input', recompute)\n form.addEventListener('change', recompute)\n form.addEventListener('reset', recompute)\n }\n },\n [recompute],\n )\n\n return { formRef, isDirty, markDirty: () => setIsDirty(true), reset }\n}\n","import { cva } from 'class-variance-authority'\n\n/**\n * Provides the clipping and stacking context for a transient action ripple.\n */\nexport const actionRipple = cva('relative isolate overflow-hidden')\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\n/** Merges conditional class names, resolving conflicting Tailwind utilities. */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","export type TextMatchPart = {\n text: string\n match: boolean\n}\n\nfunction normalize(value: string) {\n return value\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLocaleLowerCase()\n}\n\nfunction normalizedTextWithRanges(value: string) {\n const ranges: Array<{ start: number; end: number }> = []\n let normalized = ''\n let sourceIndex = 0\n\n for (const character of value) {\n const start = sourceIndex\n sourceIndex += character.length\n const normalizedCharacter = normalize(character)\n normalized += normalizedCharacter\n for (let index = 0; index < normalizedCharacter.length; index += 1) {\n ranges.push({ start, end: sourceIndex })\n }\n }\n\n return { normalized, ranges }\n}\n\n/**\n * Splits text into matching and non-matching chunks. Matching is case- and\n * accent-insensitive while preserving the original text for rendering.\n */\nexport function getTextMatchParts(text: string, query: string): TextMatchPart[] {\n const term = normalize(query.trim())\n if (!term) return [{ text, match: false }]\n\n const { normalized, ranges } = normalizedTextWithRanges(text)\n const parts: TextMatchPart[] = []\n let sourceCursor = 0\n let index = normalized.indexOf(term)\n\n while (index !== -1) {\n const rangeStart = ranges[index]?.start\n const rangeEnd = ranges[index + term.length - 1]?.end\n if (rangeStart === undefined || rangeEnd === undefined) break\n if (rangeStart > sourceCursor)\n parts.push({ text: text.slice(sourceCursor, rangeStart), match: false })\n parts.push({ text: text.slice(rangeStart, rangeEnd), match: true })\n sourceCursor = rangeEnd\n index = normalized.indexOf(term, index + term.length)\n }\n\n if (sourceCursor < text.length) parts.push({ text: text.slice(sourceCursor), match: false })\n return parts.length ? parts : [{ text, match: false }]\n}\n","'use client'\n\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react'\nimport * as React from 'react'\nimport {\n DisclosurePanel as AccordionContentPrimitive,\n Heading as AccordionHeaderPrimitive,\n Disclosure as AccordionItemPrimitive,\n DisclosureGroup as AccordionPrimitive,\n Button as AccordionTriggerPrimitive,\n type ButtonProps,\n type DisclosureGroupProps,\n type DisclosurePanelProps,\n type DisclosureProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Groups related expandable sections and manages their expanded state. */\nexport function Accordion({ className, ...props }: DisclosureGroupProps) {\n return (\n <AccordionPrimitive\n data-slot=\"accordion\"\n className={cn('flex w-full flex-col text-foreground', className)}\n {...props}\n />\n )\n}\n\n/** A single expandable section within an {@link Accordion}. */\nexport function AccordionItem({ className, ...props }: DisclosureProps) {\n return (\n <AccordionItemPrimitive\n data-slot=\"accordion-item\"\n className={cn('border-border not-last:border-b', className)}\n {...props}\n />\n )\n}\n\n/** Accessible heading button that expands or collapses its {@link AccordionItem}. */\nexport function AccordionTrigger({\n className,\n children,\n ...props\n}: Omit<ButtonProps, 'children'> & { children: React.ReactNode }) {\n return (\n <AccordionHeaderPrimitive className=\"flex\">\n <AccordionTriggerPrimitive\n slot=\"trigger\"\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between gap-3 rounded-lg border border-transparent px-2.5 py-2.5 text-left text-sm font-medium text-foreground transition-colors outline-none hover:bg-muted/50 aria-expanded:bg-muted/50 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUpIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionTriggerPrimitive>\n </AccordionHeaderPrimitive>\n )\n}\n\n/** Panel revealed when its parent {@link AccordionItem} is expanded. */\nexport function AccordionContent({ className, children, ...props }: DisclosurePanelProps) {\n return (\n <AccordionContentPrimitive\n data-slot=\"accordion-content\"\n className=\"text-muted-foreground data-open:animate-accordion-down data-closed:animate-accordion-up h-(--disclosure-panel-height) overflow-clip text-sm transition-[height]\"\n {...props}\n >\n <div\n className={cn(\n 'px-2.5 pt-0 pb-3 [&_a]:text-foreground [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-primary [&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionContentPrimitive>\n )\n}\n","import * as React from 'react'\nimport { type ModalOverlayProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button } from '../button/button'\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n} from '../dialog/dialog'\n\nexport type AlertDialogProps = {\n children: React.ReactNode\n open: boolean\n onOpenChange: (open: boolean) => void\n}\n\n/** Controlled, composable confirmation dialog for domain-specific destructive actions. */\nexport function AlertDialog({ children, open, onOpenChange }: AlertDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n {children}\n </Dialog>\n )\n}\n\nexport function AlertDialogPortal({ children }: { children?: React.ReactNode }) {\n return <DialogPortal>{children}</DialogPortal>\n}\n\nexport function AlertDialogTrigger({\n children,\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'onPress'>) {\n return (\n <DialogTrigger data-slot=\"alert-dialog-trigger\" {...props}>\n {children}\n </DialogTrigger>\n )\n}\n\nexport function AlertDialogOverlay({\n className,\n ...props\n}: Omit<ModalOverlayProps, 'children' | 'className' | 'isOpen' | 'onOpenChange'> & {\n className?: string\n}) {\n return <DialogOverlay data-slot=\"alert-dialog-overlay\" className={className} {...props} />\n}\n\nexport function AlertDialogContent({\n className,\n size = 'default',\n children,\n}: {\n children?: React.ReactNode\n className?: string\n size?: 'default' | 'sm'\n}) {\n return (\n <DialogContent\n contentSlot=\"alert-dialog-content\"\n overlaySlot=\"alert-dialog-overlay\"\n role=\"alertdialog\"\n showCloseButton={false}\n className={cn(size === 'sm' ? 'sm:max-w-xs' : 'sm:max-w-sm', className)}\n >\n {children}\n </DialogContent>\n )\n}\n\nexport function AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <DialogHeader\n data-slot=\"alert-dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n )\n}\n\nexport function AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <DialogFooter data-slot=\"alert-dialog-footer\" className={cn(className)} {...props} />\n}\n\nexport function AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogTitle>) {\n return <DialogTitle data-slot=\"alert-dialog-title\" className={cn(className)} {...props} />\n}\n\nexport function AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogDescription>) {\n return (\n <DialogDescription data-slot=\"alert-dialog-description\" className={cn(className)} {...props} />\n )\n}\n\nexport function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>) {\n return <Button data-slot=\"alert-dialog-action\" className={cn(className)} {...props} />\n}\n\nexport function AlertDialogCancel({\n children = 'Cancelar',\n onClick,\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'onPress'>) {\n return (\n <DialogClose asChild>\n <Button data-slot=\"alert-dialog-cancel\" variant=\"outline\" onClick={onClick} {...props}>\n {children}\n </Button>\n </DialogClose>\n )\n}\n","'use client'\n\nimport type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\nimport { useState } from 'react'\nimport {\n Button as ButtonPrimitive,\n type ButtonProps as ButtonPrimitiveProps,\n Link as LinkPrimitive,\n type LinkProps as LinkPrimitiveProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { buttonVariants } from './button-variants'\n\ntype RipplePosition = {\n x: string\n y: string\n}\n\ntype Ripple = {\n id: number\n position: RipplePosition\n}\n\nconst centeredRipplePosition: RipplePosition = { x: '50%', y: '50%' }\n\ntype RippleEvent = {\n pointerType?: string\n x?: number\n y?: number\n}\n\nfunction getRipplePosition(event: RippleEvent): RipplePosition {\n if (event.pointerType === 'keyboard' || event.pointerType === 'virtual') {\n return centeredRipplePosition\n }\n\n if (event.x === undefined || event.y === undefined) {\n return centeredRipplePosition\n }\n\n return {\n x: `${event.x}px`,\n y: `${event.y}px`,\n }\n}\n\nfunction useActionRipple(enabled: boolean) {\n const [ripple, setRipple] = useState<Ripple | null>(null)\n\n function triggerRipple(event: RippleEvent) {\n if (!enabled) return\n\n const position = getRipplePosition(event)\n setRipple((currentRipple) => ({\n id: (currentRipple?.id ?? 0) + 1,\n position,\n }))\n }\n\n const rippleElement = ripple ? (\n <span\n key={ripple.id}\n aria-hidden=\"true\"\n data-slot=\"button-ripple\"\n className=\"animate-ui-ripple pointer-events-none absolute aspect-square w-full rounded-full motion-reduce:hidden\"\n style={{ left: ripple.position.x, top: ripple.position.y }}\n onAnimationEnd={() =>\n setRipple((currentRipple) => (currentRipple?.id === ripple.id ? null : currentRipple))\n }\n />\n ) : null\n\n return { ripple: rippleElement, triggerRipple }\n}\n\n/** Props for a button that triggers an in-page action. */\nexport type ButtonProps = Omit<ButtonPrimitiveProps, 'className'> &\n React.RefAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants> & {\n /** HTML-compatible alias for `isDisabled`. */\n disabled?: boolean\n /** Visual treatment for the action's priority and intent. */\n variant?: VariantProps<typeof buttonVariants>['variant']\n /** Preset height, spacing and icon dimensions. */\n size?: VariantProps<typeof buttonVariants>['size']\n className?: string\n }\n\n/**\n * Accessible button with visual variants and a press ripple.\n * Provide an `aria-label` when it contains only an icon.\n */\nexport function Button({\n className,\n variant = 'default',\n size = 'default',\n children,\n disabled,\n isDisabled,\n onClick,\n onPress,\n ...props\n}: ButtonProps) {\n const { ripple, triggerRipple } = useActionRipple(variant !== 'link')\n\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n onClick={onClick}\n isDisabled={isDisabled ?? disabled}\n onPress={(event) => {\n onPress?.(event)\n triggerRipple(event)\n }}\n {...props}\n >\n {(renderProps) => (\n <>\n {typeof children === 'function' ? children(renderProps) : children}\n {ripple}\n </>\n )}\n </ButtonPrimitive>\n )\n}\n\n/** Props for a link styled consistently with {@link Button}. */\nexport type LinkButtonProps = Omit<LinkPrimitiveProps, 'className'> &\n VariantProps<typeof buttonVariants> & {\n /** Visual treatment for the navigation action's priority and intent. */\n variant?: VariantProps<typeof buttonVariants>['variant']\n /** Preset height, spacing and icon dimensions. */\n size?: VariantProps<typeof buttonVariants>['size']\n className?: string\n }\n\n/**\n * Navigation link styled as a {@link Button}.\n * Provide an `aria-label` when it contains only an icon.\n */\nexport function LinkButton({\n className,\n variant = 'default',\n size = 'default',\n children,\n onClick,\n onPress,\n ...props\n}: LinkButtonProps) {\n const { ripple, triggerRipple } = useActionRipple(variant !== 'link')\n\n return (\n <LinkPrimitive\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n onClick={onClick}\n onPress={(event) => {\n onPress?.(event)\n triggerRipple(event)\n }}\n {...props}\n >\n {(renderProps) => (\n <>\n {typeof children === 'function' ? children(renderProps) : children}\n {ripple}\n </>\n )}\n </LinkPrimitive>\n )\n}\n","import { cva } from 'class-variance-authority'\n\nimport { actionRipple } from '../../lib/action-ripple'\nimport { cn } from '../../lib/cn'\n\nexport const buttonVariants = cva(\n cn(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n actionRipple(),\n ),\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/80',\n outline:\n 'border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',\n ghost:\n 'hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50',\n destructive:\n 'bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40',\n link: 'text-primary underline-offset-4 hover:underline after:hidden',\n },\n size: {\n default:\n 'h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',\n icon: 'size-8',\n 'icon-xs':\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n 'icon-sm':\n 'size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg',\n 'icon-lg': 'size-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n","'use client'\n\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\nimport {\n Dialog as AriaDialog,\n Heading,\n Modal,\n ModalOverlay,\n type ModalOverlayProps,\n Text,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button } from '../button/button'\n\ntype DialogContextValue = { open: boolean; setOpen: (open: boolean) => void }\ntype SlottableProps = React.HTMLAttributes<HTMLElement> & { 'data-slot'?: string }\nconst DialogContext = React.createContext<DialogContextValue | null>(null)\n\nfunction useDialogContext() {\n const context = React.useContext(DialogContext)\n if (!context) throw new Error('Dialog components must be rendered within Dialog.')\n return context\n}\n\n/** Props for a controlled or uncontrolled dialog state container. */\nexport type DialogRootProps = {\n children: React.ReactNode\n /** Initial state when the dialog is uncontrolled. */\n defaultOpen?: boolean\n /** Called after the open state changes. */\n onOpenChange?: (open: boolean) => void\n /** Controlled open state. Use with {@link onOpenChange}. */\n open?: boolean\n}\n\n/** Coordinates the trigger, overlay and content of a modal dialog. */\nexport function DialogRoot({\n children,\n defaultOpen = false,\n onOpenChange,\n open: controlledOpen,\n}: DialogRootProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const open = controlledOpen ?? uncontrolledOpen\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen)\n onOpenChange?.(nextOpen)\n },\n [controlledOpen, onOpenChange],\n )\n\n return <DialogContext.Provider value={{ open, setOpen }}>{children}</DialogContext.Provider>\n}\n\nexport type DialogTriggerProps = Omit<React.ComponentProps<typeof Button>, 'onPress'> & {\n /** Renders and augments the single child instead of rendering a {@link Button}. */\n asChild?: boolean\n}\n\n/** Opens the parent {@link Dialog} or {@link DialogRoot}. */\nexport function DialogTrigger({\n asChild = false,\n children,\n onClick,\n ...props\n}: DialogTriggerProps) {\n const { setOpen } = useDialogContext()\n const handleClick: React.MouseEventHandler<HTMLElement> = (event) => {\n onClick?.(event as React.MouseEvent<HTMLButtonElement>)\n if (!event.defaultPrevented) setOpen(true)\n }\n\n if (asChild && React.isValidElement<SlottableProps>(children)) {\n const child = children as React.ReactElement<SlottableProps>\n return React.cloneElement(child, {\n ...(props as React.HTMLAttributes<HTMLElement>),\n 'data-slot': 'dialog-trigger',\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n child.props.onClick?.(event)\n handleClick(event)\n },\n })\n }\n\n return (\n <Button data-slot=\"dialog-trigger\" onPress={() => setOpen(true)} {...props}>\n {children}\n </Button>\n )\n}\n\n/** Groups dialog content rendered in the overlay layer. */\nexport function DialogPortal({ children }: { children?: React.ReactNode }) {\n return <>{children}</>\n}\n\ntype DialogOverlayProps = Omit<\n ModalOverlayProps,\n 'children' | 'className' | 'isOpen' | 'onOpenChange'\n> & {\n children?: React.ReactNode\n className?: string\n}\n\n/** Dismissable backdrop displayed while the parent {@link Dialog} is open. */\nexport function DialogOverlay({ children, className, ...props }: DialogOverlayProps) {\n const { open, setOpen } = useDialogContext()\n if (!open) return null\n\n return (\n <ModalOverlay\n data-slot=\"dialog-overlay\"\n isDismissable\n isOpen={open}\n onOpenChange={setOpen}\n className={cn(\n 'fixed inset-0 isolate z-50 grid place-items-center bg-black/10 p-4 supports-backdrop-filter:backdrop-blur-xs motion-safe:data-entering:animate-ui-overlay-in motion-safe:data-exiting:animate-ui-overlay-out',\n className,\n )}\n {...props}\n >\n {children}\n </ModalOverlay>\n )\n}\n\nexport type DialogContentProps = Omit<\n React.ComponentProps<typeof AriaDialog>,\n 'children' | 'className'\n> & {\n children?: React.ReactNode\n className?: string\n contentSlot?: string\n onOverlayClick?: React.MouseEventHandler<HTMLDivElement>\n overlaySlot?: string\n showCloseButton?: boolean\n}\n\ntype SimpleDialogProps = DialogRootProps &\n Omit<DialogContentProps, 'children'> & {\n /** Text for a default button, or an interactive element that opens the dialog. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<DialogTriggerProps, 'asChild' | 'children'>\n }\n\nexport type DialogProps = DialogRootProps | SimpleDialogProps\n\n/**\n * A modal dialog with a simple trigger API.\n * Omit {@link trigger} and compose {@link DialogRoot}, {@link DialogTrigger} and {@link DialogContent} directly.\n */\nexport function Dialog(props: DialogProps) {\n if (!('trigger' in props)) return <DialogRoot {...props} />\n\n const { children, trigger, triggerProps, defaultOpen, onOpenChange, open, ...contentProps } =\n props\n\n return (\n <DialogRoot defaultOpen={defaultOpen} onOpenChange={onOpenChange} open={open}>\n {typeof trigger === 'string' ? (\n <DialogTrigger {...triggerProps}>{trigger}</DialogTrigger>\n ) : (\n <DialogTrigger asChild {...triggerProps}>\n {trigger}\n </DialogTrigger>\n )}\n <DialogContent {...contentProps}>{children}</DialogContent>\n </DialogRoot>\n )\n}\n\n/** Focus-managed modal content. Include a {@link DialogTitle} to give it an accessible name. */\nexport function DialogContent({\n children,\n className,\n contentSlot = 'dialog-content',\n onOverlayClick,\n overlaySlot = 'dialog-overlay',\n showCloseButton = true,\n ...props\n}: DialogContentProps) {\n const { setOpen } = useDialogContext()\n\n return (\n <DialogPortal>\n <DialogOverlay\n data-slot={overlaySlot}\n onClick={(event) => {\n if (event.target === event.currentTarget) onOverlayClick?.(event)\n }}\n >\n <Modal\n className=\"motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out max-h-full min-h-0 w-full\"\n onClick={(event) => {\n if (event.target === event.currentTarget) {\n setOpen(false)\n onOverlayClick?.(event)\n }\n }}\n >\n <AriaDialog\n data-slot={contentSlot}\n className={cn(\n 'relative mx-auto grid box-border max-h-full min-h-0 w-full max-w-[calc(100%-2rem)] gap-4 overflow-x-hidden overflow-y-auto rounded-xl bg-background p-4 text-sm text-foreground ring-1 ring-foreground/10 outline-none sm:max-w-sm',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton ? (\n <Button\n aria-label=\"Cerrar diálogo\"\n data-slot=\"dialog-close\"\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n onPress={() => setOpen(false)}\n >\n <XIcon />\n </Button>\n ) : null}\n </AriaDialog>\n </Modal>\n </DialogOverlay>\n </DialogPortal>\n )\n}\n\ntype DialogCloseProps = Omit<React.ComponentProps<typeof Button>, 'onPress'> & {\n /** Renders and augments the single child instead of rendering a {@link Button}. */\n asChild?: boolean\n}\n\n/** Closes the parent {@link Dialog}. */\nexport function DialogClose({ asChild = false, children, onClick, ...props }: DialogCloseProps) {\n const { setOpen } = useDialogContext()\n if (asChild && React.isValidElement<SlottableProps>(children)) {\n const child = children as React.ReactElement<SlottableProps>\n return React.cloneElement(child, {\n ...(props as React.HTMLAttributes<HTMLElement>),\n 'data-slot': 'dialog-close',\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n child.props.onClick?.(event)\n onClick?.(event)\n if (!event.defaultPrevented) setOpen(false)\n },\n })\n }\n\n return (\n <Button data-slot=\"dialog-close\" onPress={() => setOpen(false)} {...props}>\n {children}\n </Button>\n )\n}\n\n/** Groups the title and description at the top of a dialog. */\nexport function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"dialog-header\" className={cn('flex flex-col gap-2', className)} {...props} />\n )\n}\n\n/** Groups dialog actions and can add a secondary close action. */\nexport function DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<'div'> & { showCloseButton?: boolean }) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n '-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t border-border bg-muted/50 p-4 sm:flex-row sm:flex-wrap sm:justify-end',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton ? <DialogClose variant=\"outline\">Cerrar</DialogClose> : null}\n </div>\n )\n}\n\n/** Title used to give the parent {@link DialogContent} an accessible name. */\nexport function DialogTitle({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof Heading>, 'slot'>) {\n return (\n <Heading\n slot=\"title\"\n data-slot=\"dialog-title\"\n className={cn('font-heading text-base leading-none font-medium', className)}\n {...props}\n />\n )\n}\n\n/** Supporting text announced alongside the parent {@link DialogTitle}. */\nexport function DialogDescription({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof Text>, 'slot'>) {\n return (\n <Text\n slot=\"description\"\n data-slot=\"dialog-description\"\n className={cn(\n 'text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\n\nexport const alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg border border-border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n info: 'border-info/30 bg-info/5 text-info',\n success: 'border-success/30 bg-success/5 text-success',\n warning: 'border-warning/30 bg-warning/5 text-warning',\n destructive:\n 'border-destructive/30 bg-destructive/5 text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { alertVariants } from './alert-variants'\n\nexport type AlertProps = React.ComponentProps<'div'> &\n VariantProps<typeof alertVariants> & {\n /** Communicates the alert's semantic intent. */\n variant?: VariantProps<typeof alertVariants>['variant']\n }\n\n/** Announces a concise status, warning or error message. */\nfunction Alert({ className, variant, ...props }: AlertProps) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"alert-action\" className={cn('absolute top-2 right-2', className)} {...props} />\n )\n}\n\nexport { Alert, AlertAction, AlertDescription, AlertTitle }\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport type AppShellBreakpoint = 'sm' | 'md' | 'lg'\n\nexport type AppShellProps = React.ComponentProps<'div'> & {\n /** Breakpoint at which the persistent sidebar replaces the mobile header. */\n sidebarBreakpoint?: AppShellBreakpoint\n}\n\n/** Application layout foundation for a responsive sidebar, header and content area. */\nexport function AppShell({ className, sidebarBreakpoint = 'md', ...props }: AppShellProps) {\n return (\n <div\n data-slot=\"app-shell\"\n data-sidebar-breakpoint={sidebarBreakpoint}\n className={cn('bg-background text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function AppShellSidebar({ className, ...props }: React.ComponentProps<'aside'>) {\n return (\n <aside\n data-slot=\"app-shell-sidebar\"\n className={cn('w-56 shrink-0 border-r border-border bg-card text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function AppShellMain({ className, ...props }: React.ComponentProps<'main'>) {\n return <main data-slot=\"app-shell-main\" className={cn('bg-background', className)} {...props} />\n}\n\nexport function AppShellHeader({ className, ...props }: React.ComponentProps<'header'>) {\n return (\n <header\n data-slot=\"app-shell-header\"\n className={cn('border-b border-border bg-background px-4', className)}\n {...props}\n />\n )\n}\n\nexport function AppShellMobileHeader({ className, ...props }: React.ComponentProps<'header'>) {\n return (\n <header\n data-slot=\"app-shell-mobile-header\"\n className={cn(\n 'h-14 shrink-0 items-center gap-2 border-b border-border bg-background px-3',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport type AppShellContentProps = React.ComponentProps<'div'> & {\n /** Maximum content width. Use `full` for dense application screens. */\n size?: 'default' | 'wide' | 'full'\n /** Adds the standard responsive content padding. */\n padded?: boolean\n /** Lets this region scroll while the surrounding shell remains fixed. */\n scrollable?: boolean\n}\n\nexport function AppShellContent({\n className,\n size = 'wide',\n padded = true,\n scrollable = true,\n ...props\n}: AppShellContentProps) {\n return (\n <div\n data-slot=\"app-shell-content\"\n data-size={size}\n data-padded={padded || undefined}\n data-scrollable={scrollable || undefined}\n className={className}\n {...props}\n />\n )\n}\n","import { createContext, useContext, useEffect, useState } from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport type AvatarProps = React.ComponentProps<'div'> & {\n /** Avatar dimensions and fallback text size. */\n size?: 'xs' | 'sm' | 'default' | 'lg'\n}\n\nconst sizes = {\n xs: 'size-5 text-[10px]',\n sm: 'size-6 text-xs',\n default: 'size-8 text-sm',\n lg: 'size-10 text-base',\n}\n\ntype AvatarStatus = 'idle' | 'loading' | 'loaded' | 'error'\nconst AvatarContext = createContext<{\n status: AvatarStatus\n setStatus: (status: AvatarStatus) => void\n} | null>(null)\n\n/** Displays an image or fallback content for a person, organisation or entity. */\nexport function Avatar({ className, size = 'default', children, ...props }: AvatarProps) {\n const [status, setStatus] = useState<AvatarStatus>('idle')\n return (\n <AvatarContext.Provider value={{ status, setStatus }}>\n <div\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex shrink-0 overflow-hidden rounded-full bg-muted text-muted-foreground',\n sizes[size],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </AvatarContext.Provider>\n )\n}\n\nexport function AvatarImage({\n className,\n src,\n onError,\n onLoad,\n ...props\n}: React.ComponentProps<'img'>) {\n const avatar = useContext(AvatarContext)\n const [failed, setFailed] = useState(false)\n\n useEffect(() => {\n setFailed(false)\n avatar?.setStatus(src ? 'loading' : 'idle')\n }, [avatar?.setStatus, src])\n\n if (failed || avatar?.status === 'error') return null\n return (\n <img\n data-slot=\"avatar-image\"\n src={src}\n alt=\"\"\n className={cn('aspect-square size-full object-cover', className)}\n onLoad={(event) => {\n avatar?.setStatus('loaded')\n onLoad?.(event)\n }}\n onError={(event) => {\n setFailed(true)\n avatar?.setStatus('error')\n onError?.(event)\n }}\n {...props}\n />\n )\n}\n\nexport function AvatarFallback({ className, ...props }: React.ComponentProps<'span'>) {\n const avatar = useContext(AvatarContext)\n if (avatar?.status === 'loaded') return null\n return (\n <span\n data-slot=\"avatar-fallback\"\n className={cn('flex size-full items-center justify-center font-medium', className)}\n {...props}\n />\n )\n}\n\nexport function AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 size-2.5 rounded-full bg-success ring-2 ring-background',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'flex -space-x-2 [&>[data-slot=avatar]]:ring-2 [&>[data-slot=avatar]]:ring-background',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function AvatarGroupCount({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-group-count\"\n className={cn(\n 'flex size-8 items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground ring-2 ring-background',\n className,\n )}\n {...props}\n />\n )\n}\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\nimport { Link, type LinkProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { badgeVariants } from './badge-variants'\n\nexport type BadgeProps = React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n /** Visual intent for a compact status or category label. */\n variant?: VariantProps<typeof badgeVariants>['variant']\n }\n\n/** Compact label for statuses, categories and small counts. */\nexport function Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <span\n data-slot=\"badge\"\n data-variant={variant ?? 'default'}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport type BadgeLinkProps = Omit<LinkProps, 'className'> &\n VariantProps<typeof badgeVariants> & { className?: string }\n\nexport function BadgeLink({ className, variant, ...props }: BadgeLinkProps) {\n return (\n <Link\n data-slot=\"badge\"\n data-variant={variant ?? 'default'}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n","import { cva } from 'class-variance-authority'\n\nexport const badgeVariants = cva(\n 'inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&>svg]:pointer-events-none [&>svg]:size-3',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n neutral: 'bg-muted text-muted-foreground',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/10 text-warning',\n info: 'bg-info/10 text-info',\n danger: 'bg-destructive/10 text-destructive',\n destructive: 'bg-destructive text-destructive-foreground',\n outline: 'border border-border text-foreground',\n ghost: 'text-foreground hover:bg-muted',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n)\n","import {\n Breadcrumb as AriaBreadcrumb,\n Breadcrumbs as AriaBreadcrumbs,\n Link as AriaLink,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Accessible navigation trail showing the current page's hierarchy. */\nexport function Breadcrumbs({ className, ...props }: React.ComponentProps<typeof AriaBreadcrumbs>) {\n return (\n <AriaBreadcrumbs\n data-slot=\"breadcrumbs\"\n className={cn('flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function Breadcrumb({ className, ...props }: React.ComponentProps<typeof AriaBreadcrumb>) {\n return (\n <AriaBreadcrumb\n data-slot=\"breadcrumb\"\n className={cn('inline-flex items-center gap-1.5', className)}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbLink({ className, ...props }: React.ComponentProps<typeof AriaLink>) {\n return (\n <AriaLink\n data-slot=\"breadcrumb-link\"\n className={cn('transition-colors hover:text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n aria-current=\"page\"\n className={cn('font-medium text-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbSeparator({\n children = '/',\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-separator\"\n aria-hidden=\"true\"\n className={cn('text-muted-foreground/60', className)}\n {...props}\n >\n {children}\n </span>\n )\n}\n","'use client'\n\nimport { Separator as SeparatorPrimitive } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport type SeparatorProps = React.ComponentProps<typeof SeparatorPrimitive>\n\n/** Semantic horizontal or vertical divider between related content. */\nfunction Separator({ className, orientation = 'horizontal', ...props }: SeparatorProps) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n 'block shrink-0 border-0 bg-border aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=vertical]:w-px aria-[orientation=vertical]:self-stretch [:is(hr)]:h-px [:is(hr)]:w-full',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import { cva } from 'class-variance-authority'\n\nexport const buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n '**:data-slot:rounded-r-none [&_[data-slot]~[data-slot]]:rounded-l-none [&_[data-slot]~[data-slot]]:border-l-0 [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!',\n vertical:\n 'flex-col **:data-slot:rounded-b-none [&_[data-slot]~[data-slot]]:rounded-t-none [&_[data-slot]~[data-slot]]:border-t-0 [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Separator } from '../separator/separator'\nimport { buttonGroupVariants } from './button-group-variants'\n\n/** Groups adjacent actions into a single connected control. */\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof buttonGroupVariants>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: fieldset would impose form semantics on a generic action group.\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: React.ComponentProps<'div'> & {\n render?: (props: React.HTMLAttributes<HTMLElement>) => React.ReactNode\n}) {\n if (render) {\n const renderProps = {\n 'data-slot': 'button-group-text',\n className: cn(\n \"flex items-center gap-2 rounded-lg border border-border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n ),\n ...props,\n }\n\n return render(renderProps)\n }\n\n return (\n <div\n data-slot=\"button-group-text\"\n className={cn(\n \"flex items-center gap-2 rounded-lg border border-border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n 'relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText }\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport type CardProps = React.ComponentProps<'div'> & {\n /** Spacing preset for standard or compact content. */\n size?: 'default' | 'sm'\n}\n\n/** Surface for related content with optional header, body, action and footer regions. */\nfunction Card({ className, size = 'default', ...props }: CardProps) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl border border-border bg-card py-(--card-spacing) text-sm text-card-foreground shadow-sm [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n 'group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n 'text-base leading-snug font-medium group-data-[size=sm]/card:text-sm',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn('col-start-2 row-span-2 row-start-1 self-start justify-self-end', className)}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"card-content\" className={cn('px-(--card-spacing)', className)} {...props} />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n 'flex items-center rounded-b-xl border-t border-border bg-muted/50 p-(--card-spacing)',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }\n","import { Check } from 'lucide-react'\nimport {\n Checkbox as AriaCheckbox,\n type CheckboxProps as AriaCheckboxProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Props for an accessible boolean form control. */\nexport type CheckboxProps = Omit<AriaCheckboxProps, 'className'> & { className?: string }\n\n/** Checkbox that supports controlled and uncontrolled selection. */\nexport function Checkbox({ className, children, ...props }: CheckboxProps) {\n return (\n <AriaCheckbox\n data-slot=\"checkbox\"\n className={cn(\n 'group inline-flex items-center gap-2 text-sm text-foreground data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {(state) => (\n <>\n <span\n aria-hidden=\"true\"\n className=\"border-border bg-background text-primary-foreground group-data-selected:border-primary group-data-selected:bg-primary group-data-focus-visible:ring-ring/50 grid size-4 place-items-center rounded border transition-colors group-data-focus-visible:ring-3\"\n >\n <Check className=\"size-3 opacity-0 transition-opacity group-data-selected:opacity-100 motion-reduce:transition-none\" />\n </span>\n {typeof children === 'function' ? children(state) : children}\n </>\n )}\n </AriaCheckbox>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ntype CollapsibleContextValue = {\n contentId: string\n open: boolean\n setOpen: (open: boolean) => void\n}\ntype SlottableProps = React.HTMLAttributes<HTMLElement> & {\n 'data-slot'?: string\n 'data-state'?: 'closed' | 'open'\n}\nconst CollapsibleContext = React.createContext<CollapsibleContextValue | null>(null)\n\nfunction useCollapsibleContext() {\n const context = React.useContext(CollapsibleContext)\n if (!context) throw new Error('Collapsible components must be rendered within Collapsible.')\n return context\n}\n\n/** Props for the collapsible state container. */\nexport type CollapsibleProps = React.ComponentProps<'div'> & {\n /** Initial state when the component is uncontrolled. */\n defaultOpen?: boolean\n /** Called after the expanded state changes. */\n onOpenChange?: (open: boolean) => void\n /** Controlled expanded state. Use with {@link onOpenChange}. */\n open?: boolean\n}\n\n/** Groups a trigger and conditional content in a controlled or uncontrolled disclosure. */\nexport function Collapsible({\n children,\n defaultOpen = false,\n onOpenChange,\n open: controlledOpen,\n ...props\n}: CollapsibleProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const contentId = React.useId()\n const open = controlledOpen ?? uncontrolledOpen\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen)\n onOpenChange?.(nextOpen)\n },\n [controlledOpen, onOpenChange],\n )\n\n return (\n <CollapsibleContext.Provider value={{ contentId, open, setOpen }}>\n <div data-slot=\"collapsible\" data-state={open ? 'open' : 'closed'} {...props}>\n {children}\n </div>\n </CollapsibleContext.Provider>\n )\n}\n\n/** Props for the control that toggles a {@link Collapsible}. */\nexport type CollapsibleTriggerProps = React.ComponentProps<'button'> & {\n /** Renders and augments the single child element instead of a native button. */\n asChild?: boolean\n}\n\n/** Button that toggles its parent {@link Collapsible} and exposes `aria-expanded`. */\nexport function CollapsibleTrigger({\n asChild = false,\n children,\n onClick,\n ...props\n}: CollapsibleTriggerProps) {\n const { contentId, open, setOpen } = useCollapsibleContext()\n const handleClick: React.MouseEventHandler<HTMLElement> = (event) => {\n onClick?.(event as React.MouseEvent<HTMLButtonElement>)\n if (!event.defaultPrevented) setOpen(!open)\n }\n\n if (asChild && React.isValidElement<SlottableProps>(children)) {\n const child = children as React.ReactElement<SlottableProps>\n return React.cloneElement(child, {\n ...(props as React.HTMLAttributes<HTMLElement>),\n 'aria-controls': contentId,\n 'aria-expanded': open,\n 'data-slot': 'collapsible-trigger',\n 'data-state': open ? 'open' : 'closed',\n onClick: (event: React.MouseEvent<HTMLElement>) => {\n child.props.onClick?.(event)\n handleClick(event)\n },\n })\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"collapsible-trigger\"\n data-state={open ? 'open' : 'closed'}\n aria-controls={contentId}\n aria-expanded={open}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport type CollapsibleContentProps = React.ComponentProps<'div'>\n\n/** Content that is mounted only while its parent {@link Collapsible} is open. */\nexport function CollapsibleContent({ children, ...props }: CollapsibleContentProps) {\n const { contentId, open } = useCollapsibleContext()\n if (!open) return null\n\n return (\n <div id={contentId} data-slot=\"collapsible-content\" data-state=\"open\" {...props}>\n {children}\n </div>\n )\n}\n","import { Fragment, useMemo, useState, type ReactNode } from 'react'\nimport {\n ComboBox as AriaComboBox,\n ComboBoxValue,\n FieldError,\n Input,\n Label,\n ListBox,\n ListBoxItem,\n Popover,\n Text,\n type ComboBoxProps,\n type InputProps,\n type Key,\n type ListBoxItemProps,\n type ListBoxProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { getTextMatchParts } from '../../lib/text-match'\n\nexport const Combobox = AriaComboBox\nexport { ComboBoxValue as ComboboxValue }\nexport type { ComboBoxProps }\n\nexport function ComboboxInput({ className, ...props }: InputProps) {\n return (\n <Input\n data-slot=\"combobox-input\"\n className={cn(\n 'h-9 w-full rounded-lg border border-border bg-background px-2.5 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50',\n className,\n )}\n {...props}\n />\n )\n}\nexport function ComboboxContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"combobox-content\"\n className={cn(\n 'max-h-72 w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\nexport function ComboboxList<T extends object>({\n className,\n emptyState,\n ...props\n}: ListBoxProps<T> & { emptyState?: React.ReactNode }) {\n return (\n <ListBox\n data-slot=\"combobox-list\"\n className={cn('max-h-64 overflow-y-auto', className)}\n renderEmptyState={emptyState ? () => emptyState : undefined}\n {...props}\n />\n )\n}\nexport function ComboboxItem<T extends object>({\n className,\n children,\n ...props\n}: ListBoxItemProps<T>) {\n return (\n <ListBoxItem\n data-slot=\"combobox-item\"\n className={cn(\n 'flex w-full cursor-default items-center justify-between rounded-md px-2 py-2 text-sm outline-none transition-colors data-focused:bg-muted data-focused:text-foreground data-hovered:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n </ListBoxItem>\n )\n}\nexport function HighlightMatch({\n text,\n query,\n className,\n}: {\n text: string\n query: string\n className?: string\n}) {\n return (\n <span className={className}>\n {getTextMatchParts(text, query).map((part, index) =>\n part.match ? (\n <mark\n key={`${part.text}-${index}`}\n className=\"bg-accent text-accent-foreground rounded px-0.5\"\n >\n {part.text}\n </mark>\n ) : (\n <Fragment key={`${part.text}-${index}`}>{part.text}</Fragment>\n ),\n )}\n </span>\n )\n}\n\nexport type AutocompleteComboboxProps<T extends object> = Omit<\n ComboBoxProps<T>,\n | 'children'\n | 'items'\n | 'inputValue'\n | 'onInputChange'\n | 'selectedKey'\n | 'onSelectionChange'\n | 'defaultFilter'\n> & {\n items: readonly T[]\n getItemKey: (item: T) => Key\n getItemLabel: (item: T) => string\n renderItem?: (item: T, query: string) => ReactNode\n inputValue?: string\n onInputChange?: (value: string) => void\n selectedKey?: Key | null\n onSelectionChange?: (key: Key | null, item?: T) => void\n label?: ReactNode\n description?: ReactNode\n errorMessage?: ReactNode\n emptyState?: ReactNode\n suggestion?: boolean\n placeholder?: string\n}\n\n/** A safe, keyboard-first autocomplete for users, contracts and other entities. */\nexport function AutocompleteCombobox<T extends object>({\n items,\n getItemKey,\n getItemLabel,\n renderItem,\n inputValue: controlledInputValue,\n onInputChange,\n selectedKey,\n onSelectionChange,\n label,\n description,\n errorMessage,\n emptyState = (\n <p className=\"text-muted-foreground px-3 py-7 text-center text-sm\">No hay resultados.</p>\n ),\n suggestion = true,\n placeholder,\n className,\n onKeyDown: _onKeyDown,\n ...props\n}: AutocompleteComboboxProps<T>) {\n const [internalInputValue, setInternalInputValue] = useState('')\n const inputValue = controlledInputValue ?? internalInputValue\n const setInputValue = (value: string) => {\n setInternalInputValue(value)\n onInputChange?.(value)\n }\n const normalizedQuery = inputValue.trim().toLocaleLowerCase()\n const filteredItems = useMemo(\n () =>\n normalizedQuery\n ? items.filter((item) => getItemLabel(item).toLocaleLowerCase().includes(normalizedQuery))\n : [...items],\n [getItemLabel, items, normalizedQuery],\n )\n const suggestedItem = useMemo(\n () =>\n !suggestion || !normalizedQuery\n ? undefined\n : items.find(\n (item) =>\n getItemLabel(item).toLocaleLowerCase().startsWith(normalizedQuery) &&\n getItemLabel(item).length > inputValue.length,\n ),\n [getItemLabel, inputValue.length, items, normalizedQuery, suggestion],\n )\n const suggestionLabel = suggestedItem ? getItemLabel(suggestedItem) : undefined\n const acceptSuggestion = () => {\n if (!suggestedItem || !suggestionLabel) return false\n setInputValue(suggestionLabel)\n onSelectionChange?.(getItemKey(suggestedItem), suggestedItem)\n return true\n }\n const handleKeyDown = (event: Parameters<NonNullable<InputProps['onKeyDown']>>[0]) => {\n if ((event.key === 'Tab' || event.key === 'Enter') && acceptSuggestion()) event.preventDefault()\n }\n return (\n <AriaComboBox<T>\n {...props}\n className={cn('group/combobox flex w-full flex-col gap-1.5', className)}\n items={filteredItems}\n selectedKey={selectedKey}\n inputValue={inputValue}\n onInputChange={setInputValue}\n onSelectionChange={(key) => {\n const item = filteredItems.find(\n (candidate) => String(getItemKey(candidate)) === String(key),\n )\n if (item) setInputValue(getItemLabel(item))\n onSelectionChange?.(key, item)\n }}\n >\n {label && <Label className=\"text-foreground text-sm font-medium\">{label}</Label>}\n <div className=\"relative\">\n {suggestionLabel && (\n <span\n aria-hidden=\"true\"\n className=\"text-muted-foreground/60 pointer-events-none absolute inset-y-0 left-2.5 z-0 flex items-center text-sm whitespace-pre\"\n >\n <span className=\"text-transparent\">{inputValue}</span>\n {suggestionLabel.slice(inputValue.length)}\n </span>\n )}\n <ComboboxInput\n aria-autocomplete={suggestionLabel ? 'both' : 'list'}\n placeholder={placeholder}\n onKeyDown={handleKeyDown}\n className=\"relative z-10 bg-transparent\"\n />\n </div>\n {description && (\n <Text slot=\"description\" className=\"text-muted-foreground text-xs\">\n {description}\n </Text>\n )}\n {errorMessage && <FieldError className=\"text-destructive text-xs\">{errorMessage}</FieldError>}\n <ComboboxContent>\n <ComboboxList<T> emptyState={emptyState}>\n {(item) => (\n <ComboboxItem id={getItemKey(item)} textValue={getItemLabel(item)}>\n {renderItem ? (\n renderItem(item, inputValue)\n ) : (\n <HighlightMatch text={getItemLabel(item)} query={inputValue} />\n )}\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxContent>\n </AriaComboBox>\n )\n}\n","import {\n ComboBox as AriaComboBox,\n Input as AriaInput,\n ListBox,\n ListBoxItem,\n Popover,\n type ComboBoxProps,\n type ListBoxItemProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Searchable command palette built from an accessible combobox and option list. */\nexport function Command<T extends object>({ className, ...props }: ComboBoxProps<T>) {\n return <AriaComboBox data-slot=\"command\" className={cn('w-full', className)} {...props} />\n}\n\nexport function CommandInput({ className, ...props }: React.ComponentProps<typeof AriaInput>) {\n return (\n <AriaInput\n data-slot=\"command-input\"\n className={cn(\n 'h-9 w-full border-0 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function CommandContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"command-content\"\n className={cn(\n 'w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 shadow-lg outline-none',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function CommandList<T extends object>({\n className,\n ...props\n}: React.ComponentProps<typeof ListBox<T>>) {\n return (\n <ListBox\n data-slot=\"command-list\"\n className={cn('max-h-72 overflow-y-auto', className)}\n {...props}\n />\n )\n}\n\nexport function CommandItem<T extends object>({ className, ...props }: ListBoxItemProps<T>) {\n return (\n <ListBoxItem\n data-slot=\"command-item\"\n className={cn(\n 'flex cursor-default items-center rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n />\n )\n}\n","import type * as React from 'react'\n\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../alert-dialog/alert-dialog'\nimport { Button } from '../button/button'\n\nexport type ConfirmDialogProps = {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description?: React.ReactNode\n confirmLabel?: string\n cancelLabel?: string\n destructive?: boolean\n pending?: boolean\n onConfirm: () => void\n}\n\n/** Controlled confirmation dialog for irreversible actions. */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = 'Confirmar',\n cancelLabel = 'Cancelar',\n destructive = false,\n pending = false,\n onConfirm,\n}: ConfirmDialogProps) {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n {description ? <AlertDialogDescription>{description}</AlertDialogDescription> : null}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <Button variant=\"outline\" isDisabled={pending} onPress={() => onOpenChange(false)}>\n {cancelLabel}\n </Button>\n <Button\n variant={destructive ? 'destructive' : 'default'}\n isDisabled={pending}\n onPress={onConfirm}\n >\n {confirmLabel}\n </Button>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n","'use client'\n\nimport { ChevronDown, ShieldAlert } from 'lucide-react'\nimport type * as React from 'react'\nimport {\n Button as DisclosureButton,\n Disclosure,\n DisclosurePanel,\n Heading,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Card, CardContent } from '../card/card'\n\nexport type DangerZoneProps = {\n children: React.ReactNode\n className?: string\n defaultOpen?: boolean\n description?: string\n title?: string\n}\n\n/** Collapsed-by-default container for actions that are hard to reverse. */\nexport function DangerZone({\n title = 'Zona de peligro',\n description = 'Acciones irreversibles. Ábrela solo si estás seguro.',\n defaultOpen = false,\n className,\n children,\n}: DangerZoneProps) {\n return (\n <Disclosure defaultExpanded={defaultOpen}>\n <Card className={cn('border-destructive/30', className)}>\n <Heading className=\"flex\">\n <DisclosureButton\n slot=\"trigger\"\n data-slot=\"danger-zone-trigger\"\n className=\"group/danger focus-visible:ring-ring/50 flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3\"\n >\n <ShieldAlert className=\"text-destructive size-4 shrink-0\" />\n <span className=\"flex flex-1 flex-col gap-0.5\">\n <span className=\"font-heading text-destructive text-base leading-snug font-medium\">\n {title}\n </span>\n <span className=\"text-muted-foreground text-xs\">{description}</span>\n </span>\n <ChevronDown className=\"text-muted-foreground size-4 shrink-0 transition-transform group-aria-expanded/danger:rotate-180\" />\n </DisclosureButton>\n </Heading>\n <DisclosurePanel data-slot=\"danger-zone-content\">\n <CardContent>{children}</CardContent>\n </DisclosurePanel>\n </Card>\n </Disclosure>\n )\n}\n","'use client'\n\nimport { FileText, Image } from 'lucide-react'\n\nexport type DocPreviewProps = {\n /** Signed storage URL, generated by the consuming application. */\n mimeType: string | null\n name: string\n url: string | null\n}\n\nexport function DocPreview({ url, mimeType, name }: DocPreviewProps) {\n if (!url) return <Fallback mimeType={mimeType} reason=\"no-url\" />\n\n if (mimeType === 'application/pdf' || mimeType === 'text/plain' || mimeType === 'text/csv') {\n return (\n <iframe\n src={url}\n title={name}\n className=\"w-full rounded-sm border-0\"\n style={{ height: '75vh', minHeight: 400 }}\n />\n )\n }\n\n if (mimeType?.startsWith('image/')) {\n return (\n <div className=\"bg-muted/30 flex justify-center rounded-sm p-6\">\n {/* biome-ignore lint/performance/noImgElement: preview URLs are supplied by consuming applications. */}\n <img src={url} alt={name} className=\"max-h-[75vh] max-w-full rounded object-contain\" />\n </div>\n )\n }\n\n return <Fallback mimeType={mimeType} reason=\"unsupported\" />\n}\n\nfunction Fallback({\n mimeType,\n reason,\n}: {\n mimeType: string | null\n reason: 'no-url' | 'unsupported'\n}) {\n const Icon = mimeType?.startsWith('image/') ? Image : FileText\n const message =\n reason === 'no-url'\n ? 'No se pudo generar la URL de preview.'\n : 'Preview no disponible para este tipo de archivo.'\n\n return (\n <div className=\"text-muted-foreground flex flex-col items-center justify-center gap-2 py-14\">\n <Icon className=\"size-9 opacity-30\" />\n <p className=\"text-sm\">{message}</p>\n {mimeType ? <p className=\"font-mono text-xs opacity-50\">{mimeType}</p> : null}\n <p className=\"text-xs opacity-50\">Usa el botón Descargar para abrir el archivo.</p>\n </div>\n )\n}\n","'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { CheckIcon, ChevronRightIcon } from 'lucide-react'\nimport * as React from 'react'\nimport {\n composeRenderProps,\n Header as HeaderPrimitive,\n MenuItem as MenuItemPrimitive,\n Menu as MenuPrimitive,\n MenuSection as MenuSectionPrimitive,\n MenuTrigger as MenuTriggerPrimitive,\n Popover as PopoverPrimitive,\n Separator as SeparatorPrimitive,\n SubmenuTrigger as SubmenuTriggerPrimitive,\n type MenuItemProps as MenuItemPrimitiveProps,\n type MenuSectionProps as MenuSectionPrimitiveProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\n\nfunction DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof MenuTriggerPrimitive>) {\n return <MenuTriggerPrimitive data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nexport type DropdownMenuContentProps = Omit<\n React.ComponentProps<typeof MenuPrimitive<object>>,\n 'children' | 'className'\n> &\n Pick<React.ComponentProps<typeof PopoverPrimitive>, 'placement' | 'offset' | 'crossOffset'> & {\n 'data-slot'?: string\n className?: string\n children?: React.ReactNode\n }\n\n/** Floating menu of actions or selections opened by a {@link DropdownMenuTrigger}. */\nfunction DropdownMenuContent({\n 'data-slot': dataSlot = 'dropdown-menu-content',\n placement = 'bottom start',\n offset = 4,\n crossOffset = 0,\n className,\n children,\n ...props\n}: DropdownMenuContentProps) {\n return (\n <PopoverPrimitive\n data-slot={dataSlot}\n placement={placement}\n offset={offset}\n crossOffset={crossOffset}\n className={cn(\n 'z-50 w-(--trigger-width) min-w-32 origin-(--trigger-anchor-point) overflow-x-hidden overflow-y-auto rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n >\n <MenuPrimitive\n className=\"max-h-[inherit] overflow-x-hidden overflow-y-auto outline-hidden\"\n {...props}\n >\n {children}\n </MenuPrimitive>\n </PopoverPrimitive>\n )\n}\n\ntype DropdownMenuTriggerStateProps = Pick<\n React.ComponentProps<typeof MenuTriggerPrimitive>,\n 'defaultOpen' | 'isOpen' | 'onOpenChange'\n>\n\ntype SimpleDropdownMenuProps = DropdownMenuContentProps &\n DropdownMenuTriggerStateProps & {\n /** Text for a default button, or an interactive element that opens the menu. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<ButtonProps, 'children'>\n children: React.ReactNode\n }\n\nexport type DropdownMenuProps = DropdownMenuContentProps | SimpleDropdownMenuProps\n\n/**\n * An action menu with a simple trigger API.\n * Omit {@link trigger} and use {@link DropdownMenuTrigger} plus {@link DropdownMenuContent} for advanced composition.\n */\nfunction DropdownMenu(props: DropdownMenuProps) {\n if (!('trigger' in props)) return <DropdownMenuContent {...props} />\n\n const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } =\n props\n const triggerElement =\n typeof trigger === 'string' ? <Button {...triggerProps}>{trigger}</Button> : trigger\n\n return (\n <DropdownMenuTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {triggerElement}\n <DropdownMenuContent {...contentProps}>{children}</DropdownMenuContent>\n </DropdownMenuTrigger>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: Omit<MenuSectionPrimitiveProps<object>, 'children'> & {\n children?: React.ReactNode\n}) {\n return <MenuSectionPrimitive data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof HeaderPrimitive> & {\n inset?: boolean\n}) {\n return (\n <HeaderPrimitive\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n 'px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7',\n className,\n )}\n {...props}\n />\n )\n}\n\nconst dropdownMenuItemVariants = cva(\n 'group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n selectionMode: {\n none: \"gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-muted focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n single:\n \"gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm focus:bg-muted focus:text-foreground focus:**:text-foreground data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4\",\n multiple:\n \"gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm focus:bg-muted focus:text-foreground focus:**:text-foreground data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n },\n)\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n children,\n ...props\n}: MenuItemPrimitiveProps<object> & {\n inset?: boolean\n variant?: 'default' | 'destructive'\n}) {\n return (\n <MenuItemPrimitive\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n textValue={typeof children === 'string' ? children : props.textValue}\n className={composeRenderProps(className, (className, { selectionMode }) =>\n cn(dropdownMenuItemVariants({ selectionMode }), className),\n )}\n {...props}\n >\n {composeRenderProps(children, (children, { isSelected, selectionMode }) => (\n <>\n {selectionMode !== 'none' ? (\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot={\n selectionMode === 'single'\n ? 'dropdown-menu-radio-item-indicator'\n : 'dropdown-menu-checkbox-item-indicator'\n }\n >\n {isSelected ? <CheckIcon /> : null}\n </span>\n ) : null}\n {children}\n </>\n ))}\n </MenuItemPrimitive>\n )\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof SubmenuTriggerPrimitive>) {\n return <SubmenuTriggerPrimitive data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuItemPrimitiveProps<object> & {\n inset?: boolean\n}) {\n return (\n <MenuItemPrimitive\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n textValue={typeof children === 'string' ? children : props.textValue}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-muted focus:text-foreground focus:**:text-foreground data-inset:pl-7 data-open:bg-muted data-open:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {composeRenderProps(children, (children) => (\n <>\n {children}\n <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n </>\n ))}\n </MenuItemPrimitive>\n )\n}\n\nfunction DropdownMenuSubContent({\n placement = 'end top',\n crossOffset = -3,\n offset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n 'w-auto min-w-24 rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg',\n className,\n )}\n placement={placement}\n crossOffset={crossOffset}\n offset={offset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive>) {\n return (\n <SeparatorPrimitive\n data-slot=\"dropdown-menu-separator\"\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-foreground',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenuTrigger,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import { cva } from 'class-variance-authority'\n\nexport const emptyStateMediaVariants = cva(\n 'mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n icon: \"size-8 rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: { variant: 'default' },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { emptyStateMediaVariants } from './empty-state-variants'\n\n/** Composes an informative empty result with optional media and a recovery action. */\nexport function EmptyState({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-state\"\n className={cn(\n 'flex min-h-44 w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border border-dashed border-border p-6 text-center text-balance',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function EmptyStateHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-state-header\"\n className={cn('flex max-w-sm flex-col items-center gap-2', className)}\n {...props}\n />\n )\n}\n\nexport function EmptyStateMedia({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof emptyStateMediaVariants>) {\n return (\n <div\n data-slot=\"empty-state-media\"\n data-variant={variant}\n className={cn(emptyStateMediaVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport function EmptyStateTitle({ className, children, ...props }: React.ComponentProps<'h3'>) {\n return (\n <h3\n data-slot=\"empty-state-title\"\n className={cn('text-sm font-medium tracking-tight text-foreground', className)}\n {...props}\n >\n {children}\n </h3>\n )\n}\n\nexport function EmptyStateDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"empty-state-description\"\n className={cn(\n 'max-w-sm text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function EmptyStateContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-state-content\"\n className={cn(\n 'flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm',\n className,\n )}\n {...props}\n />\n )\n}\n","import { forwardRef, type ComponentPropsWithRef } from 'react'\nimport { Label as LabelPrimitive } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Accessible label associated with a React Aria form control. */\nexport const Label = forwardRef<HTMLLabelElement, ComponentPropsWithRef<typeof LabelPrimitive>>(\n function Label({ className, ...props }, ref) {\n return (\n <LabelPrimitive\n ref={ref}\n data-slot=\"label\"\n className={cn(\n 'flex items-center gap-2 text-sm font-medium leading-none select-none',\n className,\n )}\n {...props}\n />\n )\n },\n)\n\nexport type LabelProps = ComponentPropsWithRef<typeof Label>\n","import { cva } from 'class-variance-authority'\n\nexport const fieldVariants = cva(\n 'group/field flex w-full gap-2 data-[invalid=true]:text-destructive',\n {\n variants: {\n orientation: {\n vertical: 'flex-col *:w-full [&>.sr-only]:w-auto',\n horizontal:\n 'flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto',\n responsive:\n 'flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto',\n },\n },\n defaultVariants: { orientation: 'vertical' },\n },\n)\n","import type { VariantProps } from 'class-variance-authority'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Label } from '../label/label'\nimport { Separator } from '../separator/separator'\nimport { fieldVariants } from './field-variants'\n\n/** Semantic fieldset for controls that share a {@link FieldLegend}. */\nexport function FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>) {\n return (\n <fieldset data-slot=\"field-set\" className={cn('flex flex-col gap-4', className)} {...props} />\n )\n}\n\n/** Label for a {@link FieldSet}, with heading or label styling. */\nexport function FieldLegend({\n className,\n variant = 'legend',\n ...props\n}: React.ComponentProps<'legend'> & { variant?: 'legend' | 'label' }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n 'mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Responsive vertical stack for related {@link Field} components. */\nexport function FieldGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n 'group/field-group @container/field-group flex w-full flex-col gap-5',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Props for the layout wrapper of a labelled form control. */\nexport type FieldProps = React.ComponentProps<'div'> &\n VariantProps<typeof fieldVariants> & {\n /** Layout of the label and control; `responsive` changes at the field-group container breakpoint. */\n orientation?: VariantProps<typeof fieldVariants>['orientation']\n }\n\n/** Groups a form control, its label and descriptive or error text. */\nexport function Field({ className, orientation = 'vertical', ...props }: FieldProps) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: FieldSet provides native fieldset semantics when they are appropriate.\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\n/** Stacks the label, description and validation message for a {@link Field}. */\nexport function FieldContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn('flex flex-1 flex-col gap-0.5 leading-snug', className)}\n {...props}\n />\n )\n}\n\n/** Label associated with the control inside a {@link Field}. */\nexport function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n 'flex w-fit gap-2 leading-snug text-foreground group-data-[disabled=true]/field:opacity-50',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Short visible title for a {@link Field} that is not a native label. */\nexport function FieldTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-title\"\n className={cn('flex w-fit items-center gap-2 text-sm font-medium', className)}\n {...props}\n />\n )\n}\n\n/** Helper text that clarifies how to complete a {@link Field}. */\nexport function FieldDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n 'text-left text-sm leading-normal text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Visual divider between groups of fields, optionally with a text label. */\nexport function FieldSeparator({ className, children, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={Boolean(children) || undefined}\n className={cn('relative -my-2 h-5 text-sm', className)}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children ? (\n <span\n data-slot=\"field-separator-content\"\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n >\n {children}\n </span>\n ) : null}\n </div>\n )\n}\n\n/** Props for a validation message rendered by {@link FieldError}. */\nexport type FieldErrorProps = React.ComponentProps<'div'> & {\n /** Validation errors whose unique messages are rendered when no children are supplied. */\n errors?: Array<{ message?: string } | undefined>\n}\n\n/** Announced validation message for a {@link Field}. */\nexport function FieldError({ className, children, errors, ...props }: FieldErrorProps) {\n const messages = [...new Set(errors?.flatMap((error) => error?.message ?? []) ?? [])]\n const content =\n children ??\n (messages.length === 1 ? (\n messages[0]\n ) : messages.length > 1 ? (\n <ul className=\"ml-4 list-disc\">\n {messages.map((message) => (\n <li key={message}>{message}</li>\n ))}\n </ul>\n ) : null)\n if (!content) return null\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn('text-sm text-destructive', className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n","import { CheckCircle, CircleAlert, LoaderCircle } from 'lucide-react'\n\nimport { cn } from '../../lib/cn'\n\nexport type FormFeedbackState =\n | { status: 'idle' }\n | { status: 'pending' }\n | { status: 'success'; message?: string }\n | { status: 'error'; message: string }\n\nexport interface FormFeedbackProps {\n /** Current submission state and optional user-facing result message. */\n state: FormFeedbackState\n className?: string\n /** Text announced while the form submission is pending. */\n pendingLabel?: string\n /** Fallback text used when a successful state has no message. */\n successLabel?: string\n}\n\n/** Live status message for pending, successful and failed form submissions. */\nexport function FormFeedback({\n state,\n className,\n pendingLabel = 'Guardando…',\n successLabel = 'Guardado',\n}: FormFeedbackProps) {\n if (state.status === 'idle')\n return <span aria-hidden=\"true\" className={cn('inline-flex h-5 items-center', className)} />\n const error = state.status === 'error'\n const success = state.status === 'success'\n return (\n <span\n role={error ? 'alert' : 'status'}\n aria-live=\"polite\"\n className={cn(\n 'inline-flex h-5 items-center gap-1.5 text-xs',\n error && 'text-destructive',\n success && 'text-success',\n state.status === 'pending' && 'text-muted-foreground',\n className,\n )}\n >\n {state.status === 'pending' && (\n <LoaderCircle aria-hidden=\"true\" className=\"size-3.5 animate-spin\" />\n )}\n {success && <CheckCircle aria-hidden=\"true\" className=\"size-3.5\" />}\n {error && <CircleAlert aria-hidden=\"true\" className=\"size-3.5\" />}\n <span>\n {state.status === 'pending'\n ? pendingLabel\n : success\n ? (state.message ?? successLabel)\n : state.message}\n </span>\n </span>\n )\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormFeedbackState } from './form-feedback'\n\nexport function useFormFeedback(options?: { successResetMs?: number }) {\n const resetMs = options?.successResetMs ?? 2500\n const [state, setState] = useState<FormFeedbackState>({ status: 'idle' })\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n const clearTimer = useCallback(() => {\n if (timer.current) clearTimeout(timer.current)\n timer.current = null\n }, [])\n useEffect(() => () => clearTimer(), [clearTimer])\n const setPending = useCallback(() => {\n clearTimer()\n setState({ status: 'pending' })\n }, [clearTimer])\n const setSuccess = useCallback(\n (message?: string) => {\n clearTimer()\n setState({ status: 'success', message })\n if (resetMs > 0) timer.current = setTimeout(() => setState({ status: 'idle' }), resetMs)\n },\n [clearTimer, resetMs],\n )\n const setError = useCallback(\n (message: string) => {\n clearTimer()\n setState({ status: 'error', message })\n },\n [clearTimer],\n )\n const reset = useCallback(() => {\n clearTimer()\n setState({ status: 'idle' })\n }, [clearTimer])\n return { state, pending: state.status === 'pending', setPending, setSuccess, setError, reset }\n}\n","import type { ReactNode } from 'react'\n\nimport { cn } from '../../lib/cn'\n\nexport interface FormRowProps {\n /** Visible label associated with the form control. */\n label: ReactNode\n /** Identifier of the labelled form control. */\n htmlFor: string\n /** Marks the label as required for assistive technology. */\n required?: boolean\n /** Supplementary guidance displayed below the control. */\n hint?: ReactNode\n /** Validation message announced to the user. */\n error?: ReactNode\n className?: string\n children: ReactNode\n}\n\n/** Labelled form-control row with optional help text and validation feedback. */\nexport function FormRow({\n label,\n htmlFor,\n required,\n hint,\n error,\n className,\n children,\n}: FormRowProps) {\n const hintId = hint ? `${htmlFor}-hint` : undefined\n const errorId = error ? `${htmlFor}-error` : undefined\n return (\n <div data-slot=\"form-row\" className={cn('flex flex-col gap-1.5', className)}>\n <label htmlFor={htmlFor} className=\"text-foreground text-sm font-medium\">\n {label}\n {required && (\n <>\n <span aria-hidden=\"true\" className=\"text-destructive ml-0.5\">\n *\n </span>\n <span className=\"sr-only\"> (obligatorio)</span>\n </>\n )}\n </label>\n {children}\n {hint && (\n <p id={hintId} className=\"text-muted-foreground text-xs\">\n {hint}\n </p>\n )}\n {error && (\n <p id={errorId} role=\"alert\" className=\"text-destructive text-xs font-medium\">\n {error}\n </p>\n )}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Link } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\nimport { buttonVariants } from '../button/button-variants'\nimport { Tooltip } from '../tooltip/tooltip'\n\nexport type IconButtonProps = Omit<ButtonProps, 'children'> & {\n /** Accessible name and text shown in the tooltip. */\n label: string\n /** Optional href for rendering the action as an accessible link. */\n href?: string\n children?: ReactNode\n}\n\n/** A consistently sized icon-only action with an accessible tooltip. */\nexport function IconButton({\n label,\n children,\n href,\n className,\n variant,\n ...props\n}: IconButtonProps) {\n const linkClassName = cn(buttonVariants({ variant, size: 'icon' }), className)\n\n return (\n <Tooltip label={label}>\n {href ? (\n <Link data-slot=\"icon-button\" aria-label={label} href={href} className={linkClassName}>\n {children}\n </Link>\n ) : (\n <Button\n data-slot=\"icon-button\"\n aria-label={label}\n variant={variant}\n size=\"icon\"\n className={className}\n {...props}\n >\n {children}\n </Button>\n )}\n </Tooltip>\n )\n}\n","'use client'\n\nimport type * as React from 'react'\nimport {\n OverlayArrow,\n Tooltip as TooltipPrimitive,\n TooltipTrigger as TooltipTriggerPrimitive,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** Couples a focusable trigger with its {@link TooltipContent} content. */\nexport function TooltipTrigger({\n delay = 0,\n ...props\n}: React.ComponentProps<typeof TooltipTriggerPrimitive>) {\n return <TooltipTriggerPrimitive data-slot=\"tooltip-trigger\" delay={delay} {...props} />\n}\n\ntype TooltipSurfaceProps = Omit<\n React.ComponentProps<typeof TooltipPrimitive>,\n 'children' | 'className'\n> & { className?: string }\n\nexport type TooltipProps = TooltipSurfaceProps & {\n /** Contextual text or rich content shown when the trigger is focused or hovered. */\n label: React.ReactNode\n /** The single focusable element that reveals the tooltip. */\n children: React.ReactNode\n /** Delay before revealing the tooltip. */\n delay?: React.ComponentProps<typeof TooltipTriggerPrimitive>['delay']\n}\n\n/**\n * Brief contextual information for a focusable child.\n * Do not use it as the child's only accessible label or as essential content.\n */\nexport function Tooltip({ label, children, delay, ...props }: TooltipProps) {\n return (\n <TooltipTrigger delay={delay}>\n {children}\n <TooltipContent {...props}>{label}</TooltipContent>\n </TooltipTrigger>\n )\n}\n\n/**\n * Brief contextual information revealed from a {@link TooltipTrigger}.\n * Do not use it as the only label or as essential content.\n */\nexport function TooltipContent({\n className,\n placement = 'top',\n offset = 4,\n crossOffset = 0,\n children,\n ...props\n}: TooltipSurfaceProps & {\n children?: React.ReactNode\n}) {\n return (\n <TooltipPrimitive\n data-slot=\"tooltip-content\"\n placement={placement}\n offset={offset}\n crossOffset={crossOffset}\n className={cn(\n 'z-50 inline-flex w-fit max-w-xs origin-(--trigger-anchor-point) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background shadow-md outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm',\n className,\n )}\n {...props}\n >\n {children}\n <OverlayArrow\n className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs\"\n style={({ placement, defaultStyle }) => ({\n ...defaultStyle,\n rotate: '0deg',\n translate: '0 0',\n transform:\n placement === 'bottom'\n ? 'translate(-50%, calc(50% + 2px)) rotate(45deg)'\n : placement === 'top'\n ? 'translate(-50%, calc(-50% - 2px)) rotate(45deg)'\n : placement === 'left'\n ? 'translate(calc(-50% - 2px), -50%) rotate(45deg)'\n : 'translate(calc(50% + 2px), -50%) rotate(45deg)',\n })}\n />\n </TooltipPrimitive>\n )\n}\n","import { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\nimport { Input } from '../input/input'\nimport { Textarea } from '../textarea/textarea'\nimport { inputGroupAddonVariants } from './input-group-addon-variants'\n\n/** Visually joins an input or textarea with contextual text and actions. */\nexport function InputGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: fieldset cannot preserve this inline control composition.\n <div\n role=\"group\"\n data-slot=\"input-group\"\n className={cn(\n 'group/input-group relative flex min-h-8 w-full min-w-0 items-center rounded-lg border border-border transition-colors outline-none has-disabled:bg-muted/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align^=block]]:h-auto has-[>[data-align^=block]]:flex-col',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function InputGroupAddon({\n className,\n align = 'inline-start',\n onClick,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: this addon delegates focus to its associated input.\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented && !(event.target as HTMLElement).closest('button'))\n event.currentTarget.parentElement?.querySelector<HTMLElement>('input, textarea')?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva('shrink-0 shadow-none', {\n variants: {\n size: { xs: 'h-6 px-1.5 text-xs', sm: 'h-7 px-2', 'icon-xs': 'size-6', 'icon-sm': 'size-7' },\n },\n defaultVariants: { size: 'xs' },\n})\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size'> &\n VariantProps<typeof inputGroupButtonVariants>\nexport function InputGroupButton({\n className,\n type = 'button',\n variant = 'ghost',\n size = 'xs',\n ...props\n}: InputGroupButtonProps) {\n const buttonSize = size === 'icon-xs' || size === 'icon-sm' ? size : size\n return (\n <Button\n data-slot=\"input-group-button\"\n type={type}\n size={buttonSize}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nexport function InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"input-group-text\"\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function InputGroupInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n 'flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function InputGroupTextarea({ className, ...props }: React.ComponentProps<typeof Textarea>) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n 'flex-1 resize-none rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0',\n className,\n )}\n {...props}\n />\n )\n}\n","import { forwardRef } from 'react'\nimport { Input as AriaInput, type InputProps as AriaInputProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\ntype CompatibleRef<T> = ((instance: T | null) => unknown) | { readonly current: T | null } | null\n\n/** Props for a single-line text input. */\nexport type InputProps = Omit<AriaInputProps, 'ref'> & {\n /** Ref compatible with all supported React 19 type releases. */\n ref?: CompatibleRef<HTMLInputElement>\n}\n\nconst InputImpl = forwardRef<HTMLInputElement, AriaInputProps>(function Input(\n { className, type, ...props },\n ref,\n) {\n return (\n <AriaInput\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n 'box-border h-8 w-full min-w-0 rounded-lg border border-border bg-background px-2.5 py-1 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive',\n className,\n )}\n {...props}\n />\n )\n})\n\n/** Accessible single-line input with a ref type compatible across React 19 type releases. */\nexport const Input = InputImpl as unknown as (props: InputProps) => ReturnType<typeof InputImpl>\n","import { forwardRef } from 'react'\nimport {\n TextArea as AriaTextArea,\n type TextAreaProps as AriaTextAreaProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\ntype CompatibleRef<T> = ((instance: T | null) => unknown) | { readonly current: T | null } | null\n\nexport type TextareaProps = Omit<AriaTextAreaProps, 'ref'> & {\n ref?: CompatibleRef<HTMLTextAreaElement>\n}\n\nconst TextareaImpl = forwardRef<HTMLTextAreaElement, AriaTextAreaProps>(function Textarea(\n { className, ...props },\n ref,\n) {\n return (\n <AriaTextArea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n 'box-border min-h-20 w-full rounded-lg border border-border bg-background px-2.5 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive',\n className,\n )}\n {...props}\n />\n )\n})\n\n/** Forward-ref component with a ref type compatible across React 19 type releases. */\nexport const Textarea = TextareaImpl as unknown as (\n props: TextareaProps,\n) => ReturnType<typeof TextareaImpl>\n","import { cva } from 'class-variance-authority'\n\nexport const inputGroupAddonVariants = cva(\n \"flex cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n 'inline-start': 'order-first pl-2',\n 'inline-end': 'order-last pr-2',\n 'block-start': 'order-first w-full justify-start px-2.5 pt-2',\n 'block-end': 'order-last w-full justify-start px-2.5 pb-2',\n },\n },\n defaultVariants: { align: 'inline-start' },\n },\n)\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\nconst columnSize = {\n compact: 'w-56',\n default: 'w-72',\n wide: 'w-80',\n} as const\n\nexport type KanbanColumnSize = keyof typeof columnSize\n\n/** Horizontally scrollable layout for independently managed Kanban columns. */\nexport function KanbanViewport({\n children,\n className,\n contentClassName,\n ...props\n}: React.ComponentProps<'div'> & { contentClassName?: string }) {\n return (\n <div\n data-slot=\"kanban-viewport\"\n className={cn('-mx-1 overflow-x-auto pb-3', className)}\n {...props}\n >\n <div\n data-slot=\"kanban-viewport-content\"\n className={cn('flex min-w-max items-start gap-3 px-1', contentClassName)}\n >\n {children}\n </div>\n </div>\n )\n}\n\n/** Presentational column shell. Drag-and-drop behaviour remains owned by consumers. */\nexport function KanbanColumn({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<'section'> & { size?: KanbanColumnSize }) {\n return (\n <section\n data-slot=\"kanban-column\"\n data-size={size}\n className={cn('shrink-0 rounded-lg border border-border/70 p-2', columnSize[size], className)}\n {...props}\n />\n )\n}\n\nexport function KanbanColumnHeader({ className, ...props }: React.ComponentProps<'header'>) {\n return (\n <header\n data-slot=\"kanban-column-header\"\n className={cn('mb-2 flex items-center justify-between gap-2 px-1 py-1', className)}\n {...props}\n />\n )\n}\n\nexport function KanbanColumnTitle({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"kanban-column-title\"\n className={cn(\n 'text-foreground truncate text-[11px] font-semibold tracking-wide uppercase',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function KanbanColumnBody({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"kanban-column-body\" className={cn('space-y-2', className)} {...props} />\n}\n\nexport function KanbanEmpty({\n className,\n compact = false,\n ...props\n}: React.ComponentProps<'p'> & { compact?: boolean }) {\n return (\n <p\n data-slot=\"kanban-empty\"\n data-compact={compact || undefined}\n className={cn(\n 'border-border text-muted-foreground rounded-md border border-dashed py-6 text-center',\n compact ? 'px-2 text-[11px]' : 'px-3 text-xs',\n className,\n )}\n {...props}\n />\n )\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Formats a keyboard key or shortcut with semantic `kbd` markup. */\nexport function Kbd({ className, ...props }: React.ComponentProps<'kbd'>) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n 'pointer-events-none inline-flex h-5 min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function KbdGroup({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"kbd-group\"\n className={cn('inline-flex items-center gap-1', className)}\n {...props}\n />\n )\n}\n","import { LoaderCircle } from 'lucide-react'\nimport type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Busy overlay that keeps the loading state available to assistive technology. */\nexport function LoadingOverlay({\n label = 'Cargando',\n className,\n ...props\n}: React.ComponentProps<'output'> & { label?: string }) {\n return (\n <output\n aria-live=\"polite\"\n className={cn(\n 'absolute inset-0 z-10 flex items-center justify-center bg-background/70 backdrop-blur-[2px]',\n className,\n )}\n {...props}\n >\n <div className=\"border-border bg-background flex items-center gap-2 rounded-lg border px-3 py-2 text-sm shadow-sm\">\n <LoaderCircle className=\"animate-spin\" aria-hidden=\"true\" />\n <span>{label}</span>\n </div>\n </output>\n )\n}\n","import {\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n MenuTrigger as AriaMenuTrigger,\n Popover,\n type MenuItemProps,\n type MenuProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport const MenuTrigger = AriaMenuTrigger\n\nexport function MenuContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"menu-content\"\n className={cn(\n 'min-w-40 overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Accessible collection of actions or options within a {@link MenuTrigger}. */\nexport function Menu<T extends object>({ className, ...props }: MenuProps<T>) {\n return <AriaMenu data-slot=\"menu\" className={cn('outline-none', className)} {...props} />\n}\n\nexport function MenuItem<T extends object>({ className, children, ...props }: MenuItemProps<T>) {\n return (\n <AriaMenuItem\n data-slot=\"menu-item\"\n className={cn(\n 'flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n </AriaMenuItem>\n )\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Card, CardContent } from '../card/card'\n\nexport type MetricCardProps = Omit<React.ComponentProps<typeof Card>, 'children'> & {\n /** Short name of the metric. */\n label: React.ReactNode\n /** Primary metric value. */\n value: React.ReactNode\n /** Optional supporting information, such as freshness or comparison. */\n description?: React.ReactNode\n /** Decorative or labelled visual accompanying the metric. */\n icon?: React.ReactNode\n /** Semantic emphasis without coupling the card to a product status. */\n tone?: 'default' | 'success' | 'warning' | 'danger' | 'info'\n}\n\n/** Compact, accessible summary of a labelled metric. */\nexport function MetricCard({\n className,\n label,\n value,\n description,\n icon,\n tone = 'default',\n ...props\n}: MetricCardProps) {\n return (\n <Card data-slot=\"metric-card\" data-tone={tone} className={cn('min-w-0', className)} {...props}>\n <CardContent className=\"flex items-start gap-3\">\n {icon ? (\n <div data-slot=\"metric-card-icon\" className=\"text-muted-foreground shrink-0\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0\">\n <p data-slot=\"metric-card-label\" className=\"text-muted-foreground text-sm\">\n {label}\n </p>\n <strong\n data-slot=\"metric-card-value\"\n className=\"mt-1 block text-2xl font-semibold tracking-tight\"\n >\n {value}\n </strong>\n {description ? (\n <p data-slot=\"metric-card-description\" className=\"text-muted-foreground mt-1 text-xs\">\n {description}\n </p>\n ) : null}\n </div>\n </CardContent>\n </Card>\n )\n}\n","import {\n forwardRef,\n type PointerEvent as ReactPointerEvent,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Input as AriaInput, type InputProps as AriaInputProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\ntype CompatibleRef<T> = ((instance: T | null) => unknown) | { readonly current: T | null } | null\n\nexport type OtpInputProps = Omit<\n AriaInputProps,\n 'children' | 'className' | 'defaultValue' | 'maxLength' | 'onChange' | 'type' | 'value'\n> & {\n /** Number of numeric characters in the code. */\n length?: number\n value?: string\n defaultValue?: string\n onChange?: (value: string) => void\n onComplete?: (value: string) => void\n className?: string\n inputClassName?: string\n ref?: CompatibleRef<HTMLInputElement>\n}\n\nfunction normalizeOtp(value: string, length: number) {\n return value.replace(/[^0-9]/g, '').slice(0, length)\n}\n\nconst OtpInputImpl = forwardRef<HTMLInputElement, OtpInputProps>(function OtpInput(\n {\n length = 6,\n value,\n defaultValue = '',\n onChange,\n onComplete,\n className,\n inputClassName,\n disabled,\n onBlur,\n onFocus,\n onKeyUp,\n onSelect,\n ...props\n },\n forwardedRef,\n) {\n const slotCount = Math.max(1, Math.floor(length))\n const controlled = value !== undefined\n const [internalValue, setInternalValue] = useState(() => normalizeOtp(defaultValue, slotCount))\n const code = normalizeOtp(controlled ? value : internalValue, slotCount)\n const slots = Array.from({ length: slotCount }, (_, index) => `otp-slot-${index + 1}`)\n const inputRef = useRef<HTMLInputElement>(null)\n const [focused, setFocused] = useState(false)\n const [selectionStart, setSelectionStart] = useState(0)\n const invalid = props['aria-invalid'] === true || props['aria-invalid'] === 'true'\n const activeIndex =\n code.length === slotCount ? slotCount - 1 : Math.min(selectionStart, code.length, slotCount - 1)\n\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement)\n\n function updateSelection(input: HTMLInputElement) {\n setSelectionStart(input.selectionStart ?? code.length)\n }\n\n function commitValue(rawValue: string) {\n const nextValue = normalizeOtp(rawValue, slotCount)\n if (!controlled) setInternalValue(nextValue)\n if (nextValue === code) return\n onChange?.(nextValue)\n if (nextValue.length === slotCount) onComplete?.(nextValue)\n }\n\n function handlePointerDown(event: ReactPointerEvent<HTMLDivElement>) {\n if (disabled) return\n event.preventDefault()\n const input = inputRef.current\n if (!input) return\n const bounds = event.currentTarget.getBoundingClientRect()\n const offset = bounds.width > 0 ? (event.clientX - bounds.left) / bounds.width : 1\n const position = Math.min(Math.max(Math.floor(offset * slotCount), 0), code.length)\n input.focus()\n input.setSelectionRange(position, position)\n setSelectionStart(position)\n }\n\n return (\n <div\n data-slot=\"otp-input\"\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n className={cn('relative inline-grid max-w-full gap-2', className)}\n style={{ gridTemplateColumns: `repeat(${slotCount}, minmax(0, 2.5rem))` }}\n onPointerDown={handlePointerDown}\n >\n <AriaInput\n {...props}\n ref={inputRef}\n type=\"text\"\n inputMode={props.inputMode ?? 'numeric'}\n autoComplete={props.autoComplete ?? 'one-time-code'}\n pattern={props.pattern ?? '[0-9]*'}\n maxLength={slotCount}\n value={code}\n disabled={disabled}\n data-slot=\"otp-input-control\"\n className={cn(\n 'absolute inset-0 z-10 size-full cursor-text appearance-none rounded-lg border-0 bg-transparent text-base text-transparent caret-transparent outline-none selection:bg-transparent disabled:cursor-not-allowed',\n inputClassName,\n )}\n onChange={(event) => {\n commitValue(event.currentTarget.value)\n updateSelection(event.currentTarget)\n }}\n onFocus={(event) => {\n setFocused(true)\n updateSelection(event.currentTarget)\n onFocus?.(event)\n }}\n onBlur={(event) => {\n setFocused(false)\n onBlur?.(event)\n }}\n onSelect={(event) => {\n updateSelection(event.currentTarget)\n onSelect?.(event)\n }}\n onKeyUp={(event) => {\n updateSelection(event.currentTarget)\n onKeyUp?.(event)\n }}\n />\n {slots.map((slot, index) => (\n <span\n key={slot}\n aria-hidden=\"true\"\n data-slot=\"otp-input-slot\"\n data-active={(focused && index === activeIndex) || undefined}\n className={cn(\n 'pointer-events-none grid size-10 place-items-center rounded-lg border border-border bg-background text-base font-medium tabular-nums text-foreground transition-[border-color,box-shadow]',\n focused && index === activeIndex && 'border-ring ring-3 ring-ring/50',\n invalid && 'border-destructive',\n disabled && 'opacity-50',\n )}\n >\n {code[index] ?? ''}\n </span>\n ))}\n </div>\n )\n})\n\n/** A single accessible input visually split into slots for numeric one-time codes. */\nexport const OtpInput = OtpInputImpl as unknown as (\n props: OtpInputProps,\n) => ReturnType<typeof OtpInputImpl>\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Page-level heading layout with optional description and actions. */\nexport function PageHeader({ className, ...props }: React.ComponentProps<'header'>) {\n return (\n <header\n data-slot=\"page-header\"\n className={cn(\n 'flex flex-col gap-4 py-2 sm:flex-row sm:items-center sm:justify-between',\n className,\n )}\n {...props}\n />\n )\n}\nexport function PageHeaderHeading({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"page-header-heading\" className={cn('min-w-0', className)} {...props} />\n}\nexport function PageHeaderTitle({ className, children, ...props }: React.ComponentProps<'h1'>) {\n return (\n <h1\n data-slot=\"page-header-title\"\n className={cn('truncate text-xl font-semibold tracking-tight md:text-2xl', className)}\n {...props}\n >\n {children}\n </h1>\n )\n}\nexport function PageHeaderDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"page-header-description\"\n className={cn('mt-1 text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\nexport function PageHeaderActions({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"page-header-actions\"\n className={cn('flex shrink-0 items-center gap-2', className)}\n {...props}\n />\n )\n}\n","import { ChevronLeft, ChevronRight } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '../../lib/cn'\nimport { Button } from '../button/button'\n\nexport type PaginationProps = {\n /** Currently selected page, starting at one. */\n page: number\n /** Total number of pages available. */\n pageCount: number\n /** Called with the page selected by the user. */\n onPageChange: (page: number) => void\n /** Accessible name for the page navigation landmark. */\n ariaLabel?: string\n /** Optional description of the slice of results currently visible. */\n summary?: React.ReactNode\n /** Number of neighbouring pages shown around the current page. */\n siblingCount?: number\n className?: string\n}\n\nfunction visiblePages(page: number, pageCount: number, siblingCount: number) {\n return [\n ...new Set([\n 1,\n ...Array.from({ length: siblingCount * 2 + 1 }, (_, index) => page - siblingCount + index),\n pageCount,\n ]),\n ]\n .filter((item) => item >= 1 && item <= pageCount)\n .sort((left, right) => left - right)\n}\n\n/** Navigation control for a known number of result pages. */\nexport function Pagination({\n page,\n pageCount,\n onPageChange,\n ariaLabel = 'Paginación',\n summary,\n siblingCount = 1,\n className,\n}: PaginationProps) {\n if (pageCount <= 1) return null\n const pages = visiblePages(page, pageCount, siblingCount)\n\n return (\n <nav\n aria-label={ariaLabel}\n className={cn('flex flex-wrap items-center justify-between gap-4', className)}\n >\n <p className=\"text-muted-foreground text-sm\">{summary ?? `Página ${page} de ${pageCount}`}</p>\n <div className=\"flex items-center gap-1\">\n <Button\n aria-label=\"Página anterior\"\n isDisabled={page <= 1}\n onPress={() => onPageChange(page - 1)}\n size=\"icon\"\n variant=\"ghost\"\n >\n <ChevronLeft />\n </Button>\n {pages.map((item, index) => {\n const previousPage = pages[index - 1]\n return (\n <React.Fragment key={item}>\n {previousPage !== undefined && item > previousPage + 1 ? (\n <span aria-hidden=\"true\" className=\"text-muted-foreground px-1\">\n …\n </span>\n ) : null}\n <Button\n aria-current={item === page ? 'page' : undefined}\n aria-label={`Página ${item}`}\n onPress={() => onPageChange(item)}\n size=\"icon\"\n variant={item === page ? 'secondary' : 'ghost'}\n >\n {item}\n </Button>\n </React.Fragment>\n )\n })}\n <Button\n aria-label=\"Página siguiente\"\n isDisabled={page >= pageCount}\n onPress={() => onPageChange(page + 1)}\n size=\"icon\"\n variant=\"ghost\"\n >\n <ChevronRight />\n </Button>\n </div>\n </nav>\n )\n}\n","import type * as React from 'react'\nimport {\n DialogTrigger as AriaDialogTrigger,\n Popover as AriaPopover,\n type DialogTriggerProps,\n type PopoverProps as AriaPopoverProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\n\nexport type PopoverContentProps = Omit<AriaPopoverProps, 'className' | 'trigger'> & {\n className?: string\n}\nexport type { DialogTriggerProps as PopoverTriggerProps }\n\n/** Wrap a trigger and Popover surface; React Aria handles focus and positioning. */\nexport const PopoverTrigger = AriaDialogTrigger\n\n/** Floating content positioned and focus-managed by {@link PopoverTrigger}. */\nexport function PopoverContent({ className, ...props }: PopoverContentProps) {\n return (\n <AriaPopover\n data-slot=\"popover\"\n offset={6}\n className={cn(\n 'z-50 min-w-48 rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype PopoverTriggerStateProps = Pick<DialogTriggerProps, 'defaultOpen' | 'isOpen' | 'onOpenChange'>\n\ntype SimplePopoverProps = PopoverContentProps &\n PopoverTriggerStateProps & {\n /** Text for a default button, or an interactive element that opens the popover. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<ButtonProps, 'children'>\n children: React.ReactNode\n }\n\nexport type PopoverProps = PopoverContentProps | SimplePopoverProps\n\n/**\n * A contextual surface with a simple trigger API.\n * Omit {@link trigger} and use {@link PopoverTrigger} plus {@link PopoverContent} for advanced composition.\n */\nexport function Popover(props: PopoverProps) {\n if (!('trigger' in props)) return <PopoverContent {...props} />\n\n const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } =\n props\n const triggerElement =\n typeof trigger === 'string' ? <Button {...triggerProps}>{trigger}</Button> : trigger\n\n return (\n <PopoverTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {triggerElement}\n <PopoverContent {...contentProps}>{children}</PopoverContent>\n </PopoverTrigger>\n )\n}\n","import { Minus, Plus } from 'lucide-react'\nimport {\n Button as AriaButton,\n Group as AriaGroup,\n Input as AriaInput,\n NumberField as AriaNumberField,\n type NumberFieldProps as AriaNumberFieldProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport type QuantityInputProps = Omit<AriaNumberFieldProps, 'children' | 'className'> & {\n className?: string\n inputClassName?: string\n decrementAriaLabel?: string\n incrementAriaLabel?: string\n}\n\n/** A compact quantity control with accessible stepper buttons and numeric keyboard support. */\nexport function QuantityInput({\n className,\n inputClassName,\n decrementAriaLabel = 'Disminuir cantidad',\n incrementAriaLabel = 'Aumentar cantidad',\n minValue = 0,\n step = 1,\n ...props\n}: QuantityInputProps) {\n return (\n <AriaNumberField\n {...props}\n minValue={minValue}\n step={step}\n data-slot=\"quantity-input\"\n className={cn(\n 'group/quantity-input inline-flex min-w-0 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n >\n <AriaGroup\n data-slot=\"quantity-input-group\"\n className=\"border-border bg-background text-foreground focus-within:border-ring focus-within:ring-ring/50 group-data-invalid/quantity-input:border-destructive flex h-8 min-w-0 items-stretch overflow-hidden rounded-lg border transition-[border-color,box-shadow] focus-within:ring-3\"\n >\n <AriaButton\n slot=\"decrement\"\n aria-label={decrementAriaLabel}\n data-slot=\"quantity-input-decrement\"\n className=\"border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-r transition-colors outline-none data-disabled:pointer-events-none\"\n >\n <Minus aria-hidden=\"true\" className=\"size-4\" />\n </AriaButton>\n <AriaInput\n data-slot=\"quantity-input-value\"\n className={cn(\n 'w-14 min-w-0 bg-transparent px-1 text-center text-sm tabular-nums outline-none',\n inputClassName,\n )}\n />\n <AriaButton\n slot=\"increment\"\n aria-label={incrementAriaLabel}\n data-slot=\"quantity-input-increment\"\n className=\"border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-l transition-colors outline-none data-disabled:pointer-events-none\"\n >\n <Plus aria-hidden=\"true\" className=\"size-4\" />\n </AriaButton>\n </AriaGroup>\n </AriaNumberField>\n )\n}\n","import { ChevronDown } from 'lucide-react'\nimport {\n Button as AriaButton,\n Select as AriaSelect,\n SelectValue as AriaSelectValue,\n ListBox,\n ListBoxItem,\n Popover,\n type SelectProps as AriaSelectProps,\n type ButtonProps,\n type ListBoxItemProps,\n type ListBoxProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\n/** State container for an accessible select control and its option collection. */\nexport const Select = AriaSelect\nexport type { AriaSelectProps as SelectProps }\n\n/** Button that opens the option list of its parent {@link Select}. */\nexport function SelectTrigger({ className, children, ...props }: ButtonProps) {\n return (\n <AriaButton\n data-slot=\"select-trigger\"\n className={cn(\n 'group/select-trigger box-border flex h-8 w-full min-w-36 items-center gap-2 rounded-lg border border-border bg-background px-2.5 text-left text-sm text-foreground outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {(state) => (\n <>\n {typeof children === 'function' ? children(state) : children}\n <ChevronDown\n aria-hidden=\"true\"\n className=\"text-muted-foreground ml-auto size-4 transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none\"\n />\n </>\n )}\n </AriaButton>\n )\n}\n\n/** Displays the selected option or its placeholder. */\nexport function SelectValue({ className, ...props }: React.ComponentProps<typeof AriaSelectValue>) {\n return (\n <AriaSelectValue\n data-slot=\"select-value\"\n className={cn('flex-1 truncate data-placeholder:text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\n/** Floating surface that contains a {@link SelectList}. */\nexport function SelectContent({ className, ...props }: React.ComponentProps<typeof Popover>) {\n return (\n <Popover\n data-slot=\"select-content\"\n className={cn(\n 'w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Scrollable list of {@link SelectItem} options. */\nexport function SelectList<T extends object>({ className, ...props }: ListBoxProps<T>) {\n return (\n <ListBox\n data-slot=\"select-list\"\n className={cn('max-h-64 overflow-y-auto', className)}\n {...props}\n />\n )\n}\n\n/** Selectable option within a {@link SelectList}. */\nexport function SelectItem<T extends object>({\n className,\n children,\n ...props\n}: ListBoxItemProps<T>) {\n return (\n <ListBoxItem\n data-slot=\"select-item\"\n className={cn(\n 'flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-selected:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n </ListBoxItem>\n )\n}\n","'use client'\n\nimport { XIcon } from 'lucide-react'\nimport type * as React from 'react'\nimport {\n Heading,\n ModalOverlay as ModalOverlayPrimitive,\n type ModalOverlayProps as ModalOverlayPrimitiveProps,\n Modal as ModalPrimitive,\n Dialog as SheetPrimitive,\n type DialogProps as SheetPrimitiveProps,\n DialogTrigger as SheetTriggerPrimitive,\n type DialogTriggerProps as SheetTriggerPrimitiveProps,\n Text,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\n\nfunction SheetTrigger({ ...props }: SheetTriggerPrimitiveProps) {\n return <SheetTriggerPrimitive data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({ className, variant = 'outline', size = 'default', ...props }: ButtonProps) {\n return (\n <Button\n slot=\"close\"\n data-slot=\"sheet-close\"\n variant={variant}\n size={size}\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction SheetOverlay({\n className,\n children,\n ...props\n}: Omit<ModalOverlayPrimitiveProps, 'className' | 'children'> & {\n className?: string\n children: React.ReactNode\n}) {\n return (\n <ModalOverlayPrimitive\n data-slot=\"sheet-overlay\"\n isDismissable\n className={cn(\n 'fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-entering:opacity-0 data-exiting:opacity-0 supports-backdrop-filter:backdrop-blur-xs',\n className,\n )}\n {...props}\n >\n {children}\n </ModalOverlayPrimitive>\n )\n}\n\n/** Dismissable modal panel that slides in from a screen edge. */\nfunction Sheet({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: Omit<ModalOverlayPrimitiveProps, 'className' | 'children'> &\n Pick<React.ComponentProps<typeof ModalPrimitive>, 'isDismissable'> & {\n className?: string\n children: React.ReactNode\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n }) {\n return (\n <SheetOverlay {...props}>\n <ModalPrimitive\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n 'fixed z-50 flex flex-col gap-4 border-border bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-entering:opacity-0 data-exiting:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-entering:translate-y-10 data-[side=bottom]:data-exiting:translate-y-10 data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-entering:-translate-x-10 data-[side=left]:data-exiting:-translate-x-10 data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-entering:translate-x-10 data-[side=right]:data-exiting:translate-x-10 data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-entering:-translate-y-10 data-[side=top]:data-exiting:-translate-y-10 data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm',\n className,\n )}\n >\n <SheetPrimitive\n data-slot=\"sheet\"\n className=\"[display:inherit] h-full max-h-[inherit] [flex-direction:inherit] gap-[inherit] outline-none\"\n >\n {children}\n {showCloseButton && (\n <SheetClose variant=\"ghost\" className=\"absolute top-3 right-3\" size=\"icon-sm\">\n <XIcon />\n <span className=\"sr-only\">Cerrar</span>\n </SheetClose>\n )}\n </SheetPrimitive>\n </ModalPrimitive>\n </SheetOverlay>\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Sheet> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n}) {\n return (\n <Sheet className={className} side={side} showCloseButton={showCloseButton} {...props}>\n {children}\n </Sheet>\n )\n}\n\n/** Props for the simple {@link Drawer} API. */\nexport type DrawerProps = React.ComponentProps<typeof SheetContent> &\n Pick<SheetTriggerPrimitiveProps, 'defaultOpen' | 'isOpen' | 'onOpenChange'> & {\n /** Text for a default button, or an interactive element that opens the drawer. */\n trigger: string | React.ReactElement\n /** Props for the default button rendered when {@link trigger} is text. */\n triggerProps?: Omit<ButtonProps, 'children'>\n }\n\n/**\n * A dismissable modal panel with a simple trigger API.\n * Use {@link DrawerTrigger} plus {@link DrawerContent} for advanced composition.\n */\nfunction Drawer({\n children,\n trigger,\n triggerProps,\n defaultOpen,\n isOpen,\n onOpenChange,\n ...contentProps\n}: DrawerProps) {\n const triggerElement =\n typeof trigger === 'string' ? <Button {...triggerProps}>{trigger}</Button> : trigger\n\n return (\n <SheetTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {triggerElement}\n <SheetContent {...contentProps}>{children}</SheetContent>\n </SheetTrigger>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-0.5 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({ className, ...props }: Omit<React.ComponentProps<typeof Heading>, 'slot'>) {\n return (\n <Heading\n slot=\"title\"\n data-slot=\"sheet-title\"\n className={cn('text-base font-medium text-foreground', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof Text>, 'slot'>) {\n return (\n <Text\n slot=\"description\"\n data-slot=\"sheet-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\n/** Explicit advanced-composition name for {@link SheetTrigger}. */\nconst DrawerTrigger = SheetTrigger\n/** Explicit advanced-composition name for {@link Sheet}. */\nconst DrawerContent = SheetContent\n/** Explicit advanced-composition name for {@link SheetClose}. */\nconst DrawerClose = SheetClose\n/** Explicit advanced-composition name for {@link SheetHeader}. */\nconst DrawerHeader = SheetHeader\n/** Explicit advanced-composition name for {@link SheetFooter}. */\nconst DrawerFooter = SheetFooter\n/** Explicit advanced-composition name for {@link SheetTitle}. */\nconst DrawerTitle = SheetTitle\n/** Explicit advanced-composition name for {@link SheetDescription}. */\nconst DrawerDescription = SheetDescription\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n type SheetPrimitiveProps,\n SheetTitle,\n SheetTrigger,\n type SheetTriggerPrimitiveProps,\n}\n","import { ChevronLeft, ChevronRight, Ellipsis, Search } from 'lucide-react'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { Link, type LinkProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\nimport { Button, type ButtonProps } from '../button/button'\nimport { SidebarContext, useSidebar } from './sidebar-context'\n\n/** Provides the expanded or collapsed state required by sidebar components. */\nexport function SidebarProvider({\n defaultCollapsed = false,\n children,\n}: {\n defaultCollapsed?: boolean\n children: ReactNode\n}) {\n const [collapsed, setCollapsed] = useState(defaultCollapsed)\n const value = useMemo(\n () => ({\n collapsed,\n setCollapsed,\n toggle: () => setCollapsed((current) => !current),\n }),\n [collapsed],\n )\n return <SidebarContext.Provider value={value}>{children}</SidebarContext.Provider>\n}\n\n/** Primary application navigation; render it within a {@link SidebarProvider}. */\nexport function Sidebar({ className, ...props }: React.ComponentProps<'aside'>) {\n const { collapsed } = useSidebar()\n return (\n <aside\n data-slot=\"sidebar\"\n data-collapsed={collapsed || undefined}\n className={cn(\n 'group/sidebar flex h-full w-56 shrink-0 flex-col border-r border-border bg-card text-foreground transition-[width] duration-200 ease-out motion-reduce:transition-none data-[collapsed]:w-16',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n className={cn('flex items-center gap-2 px-4 py-5', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarSearch({\n label = 'Buscar…',\n shortcut = '⌘K',\n className,\n ...props\n}: React.ComponentProps<'button'> & { label?: string; shortcut?: string }) {\n return (\n <button\n type=\"button\"\n data-slot=\"sidebar-search\"\n className={cn(\n 'group flex w-full items-center gap-2 rounded-md border border-border bg-background px-2.5 py-1.5 text-sm text-muted-foreground transition-colors hover:border-primary/40 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...props}\n >\n <Search className=\"size-4 shrink-0\" />\n <span className=\"flex-1 text-left\">{label}</span>\n <kbd className=\"bg-secondary text-muted-foreground rounded px-1.5 py-0.5 font-mono text-[10px]\">\n {shortcut}\n </kbd>\n </button>\n )\n}\n\nexport function SidebarContent({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n data-slot=\"sidebar-content\"\n aria-label=\"Navegación principal\"\n className={cn('min-h-0 flex-1 overflow-y-auto px-2 py-1', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n className={cn('mt-auto flex flex-col gap-2 border-t border-border p-2', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarGroup({\n label,\n className,\n children,\n ...props\n}: React.ComponentProps<'section'> & { label?: string }) {\n const { collapsed } = useSidebar()\n return (\n <section data-slot=\"sidebar-group\" className={cn('mb-4 last:mb-0', className)} {...props}>\n {label && (\n <h2\n className={cn(\n 'mb-1 px-3 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground',\n collapsed && 'sr-only',\n )}\n >\n {label}\n </h2>\n )}\n {children}\n </section>\n )\n}\n\nexport type SidebarItemProps = LinkProps & {\n icon?: ReactNode\n active?: boolean\n badge?: ReactNode\n label?: string\n}\nexport function SidebarItem({\n icon,\n active,\n badge,\n label,\n children,\n className,\n ...props\n}: SidebarItemProps) {\n const { collapsed } = useSidebar()\n const content = typeof children === 'function' ? label : (children ?? label)\n return (\n <Link\n data-slot=\"sidebar-item\"\n aria-current={active ? 'page' : undefined}\n aria-label={collapsed && label ? label : undefined}\n className={cn(\n 'group/item relative flex min-h-9 items-center gap-2.5 rounded-md px-2.5 py-2 text-sm text-muted-foreground outline-none transition-[background-color,color,transform] duration-150 hover:bg-secondary/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring/40 data-[current=page]:bg-secondary data-[current=page]:font-medium data-[current=page]:text-foreground data-pressed:scale-[0.98] motion-reduce:transition-none',\n collapsed && 'justify-center px-0',\n typeof className === 'function' ? className : className,\n )}\n {...props}\n >\n {(values) => (\n <>\n <span className=\"flex size-4 shrink-0 items-center justify-center\">{icon}</span>\n <span className={cn('min-w-0 flex-1 truncate', collapsed && 'sr-only')}>\n {typeof children === 'function' ? children(values) : content}\n </span>\n {badge && !collapsed && <span className=\"text-muted-foreground text-xs\">{badge}</span>}\n </>\n )}\n </Link>\n )\n}\n\nexport function SidebarSeparator({ className, ...props }: React.ComponentProps<'hr'>) {\n return (\n <hr\n data-slot=\"sidebar-separator\"\n className={cn('my-2 h-px border-0 bg-border', className)}\n {...props}\n />\n )\n}\n\nexport function SidebarTrigger({ className, ...props }: ButtonProps) {\n const { collapsed, toggle } = useSidebar()\n return (\n <Button\n aria-label={collapsed ? 'Expandir navegación' : 'Colapsar navegación'}\n onPress={toggle}\n size=\"icon\"\n variant=\"ghost\"\n className={cn('ml-auto', className)}\n {...props}\n >\n {collapsed ? <ChevronRight /> : <ChevronLeft />}\n </Button>\n )\n}\n\nexport function SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggle } = useSidebar()\n return (\n <button\n type=\"button\"\n aria-label=\"Alternar navegación\"\n onClick={toggle}\n className={cn(\n 'absolute inset-y-0 right-0 z-20 hidden w-1 -translate-x-1/2 cursor-ew-resize bg-transparent transition-colors hover:bg-border lg:block',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport function SidebarMore({ className, ...props }: ButtonProps) {\n return (\n <Button\n aria-label=\"Más opciones\"\n size=\"icon\"\n variant=\"ghost\"\n className={cn('size-7', className)}\n {...props}\n >\n <Ellipsis />\n </Button>\n )\n}\n","import { createContext, useContext } from 'react'\n\nexport type SidebarContextValue = {\n collapsed: boolean\n setCollapsed: (value: boolean) => void\n toggle: () => void\n}\n\nexport const SidebarContext = createContext<SidebarContextValue | null>(null)\n\nexport function useSidebar() {\n const context = useContext(SidebarContext)\n if (!context) throw new Error('useSidebar must be used inside SidebarProvider')\n return context\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Decorative placeholder displayed while content is loading. */\nexport function Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n aria-hidden=\"true\"\n data-slot=\"skeleton\"\n className={cn('animate-pulse rounded-md bg-muted', className)}\n {...props}\n />\n )\n}\n","import { LoaderCircle } from 'lucide-react'\nimport { useCallback, useLayoutEffect, useRef } from 'react'\nimport type * as React from 'react'\nimport { useFormStatus } from 'react-dom'\n\nimport { Button, type ButtonProps } from '../button/button'\n\nfunction assignRef(ref: React.Ref<HTMLButtonElement> | undefined, node: HTMLButtonElement | null) {\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n}\n\nexport interface SubmitButtonProps extends Omit<ButtonProps, 'type'> {\n /** Text displayed while the parent form is submitting or loading is set. */\n loadingLabel?: string\n /** @deprecated Use `loadingLabel` instead. */\n pendingLabel?: string\n /** Explicit loading state in addition to the parent form status. */\n loading?: boolean\n children: React.ReactNode\n}\n\n/** Submit button that disables itself and announces progress while a form is pending. */\nexport function SubmitButton({\n loadingLabel,\n pendingLabel,\n loading = false,\n children,\n isDisabled,\n ref: forwardedRef,\n size = 'sm',\n ...props\n}: SubmitButtonProps) {\n const { pending } = useFormStatus()\n const busy = pending || loading\n const label = loadingLabel ?? pendingLabel ?? 'Guardando…'\n const buttonRef = useRef<HTMLButtonElement>(null)\n const setButtonRef = useCallback(\n (node: HTMLButtonElement | null) => {\n buttonRef.current = node\n assignRef(forwardedRef, node)\n },\n [forwardedRef],\n )\n\n useLayoutEffect(() => {\n const button = buttonRef.current\n if (!button) return\n\n if (busy) button.setAttribute('aria-busy', 'true')\n else button.removeAttribute('aria-busy')\n }, [busy])\n\n return (\n <Button\n ref={setButtonRef}\n type=\"submit\"\n size={size}\n isDisabled={busy || isDisabled}\n aria-busy={busy || undefined}\n {...props}\n >\n {busy ? (\n <>\n <LoaderCircle aria-hidden=\"true\" className=\"size-3.5 animate-spin\" />\n {label}\n </>\n ) : (\n children\n )}\n </Button>\n )\n}\n","'use client'\n\nimport { useEffect, useRef, type ReactNode } from 'react'\nimport { Switch as AriaSwitch, type SwitchProps as AriaSwitchProps } from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nconst switchSizes = {\n sm: {\n control: 'h-4 w-[1.875rem] p-0.5',\n thumb: 'h-3',\n idleWidth: '0.75rem',\n activeWidth: '1rem',\n selectedOffset: '0.875rem',\n activeSelectedOffset: '0.625rem',\n },\n md: {\n control: 'h-5 w-9 p-0.5',\n thumb: 'h-4',\n idleWidth: '1rem',\n activeWidth: '1.25rem',\n selectedOffset: '1rem',\n activeSelectedOffset: '0.75rem',\n },\n lg: {\n control: 'h-6 w-11 p-0.5',\n thumb: 'h-5',\n idleWidth: '1.25rem',\n activeWidth: '1.5rem',\n selectedOffset: '1.25rem',\n activeSelectedOffset: '1rem',\n },\n} as const\n\nexport type SwitchProps = Omit<AriaSwitchProps, 'className'> & {\n className?: string\n size?: keyof typeof switchSizes\n description?: ReactNode\n icon?: ReactNode\n selectedIcon?: ReactNode\n}\n\n/** Accessible React Aria switch with semantic tokens and a compact capsule thumb. */\nexport function Switch({\n className,\n children,\n description,\n icon,\n inputRef,\n isDisabled,\n isReadOnly,\n selectedIcon,\n size = 'sm',\n ...props\n}: SwitchProps) {\n const styles = switchSizes[size]\n const fallbackInputRef = useRef<HTMLInputElement>(null)\n const resolvedInputRef = inputRef ?? fallbackInputRef\n\n useEffect(() => {\n const input = resolvedInputRef.current\n if (!input) return\n\n const handleDirectionalKey = (event: KeyboardEvent) => {\n if (\n event.target !== input ||\n event.defaultPrevented ||\n isDisabled ||\n isReadOnly ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n )\n return\n\n const nextSelected =\n event.key === 'ArrowRight' ? true : event.key === 'ArrowLeft' ? false : null\n if (nextSelected === null) return\n\n event.preventDefault()\n if (input.checked !== nextSelected) input.click()\n }\n\n const ownerDocument = input.ownerDocument\n ownerDocument.addEventListener('keydown', handleDirectionalKey)\n return () => ownerDocument.removeEventListener('keydown', handleDirectionalKey)\n }, [isDisabled, isReadOnly, resolvedInputRef])\n\n return (\n <AriaSwitch\n data-slot=\"switch\"\n data-size={size}\n inputRef={resolvedInputRef}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n className={cn(\n 'group/switch inline-flex cursor-pointer items-center gap-3 text-sm text-foreground outline-none select-none',\n 'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {(state) => {\n const isThumbPressed = state.isPressed\n const thumbOffset = state.isSelected\n ? isThumbPressed\n ? styles.activeSelectedOffset\n : styles.selectedOffset\n : '0'\n\n return (\n <>\n <span\n aria-hidden=\"true\"\n data-slot=\"switch-control\"\n className={cn(\n 'relative inline-flex shrink-0 items-center overflow-hidden rounded-full border border-border bg-input shadow-inner',\n 'transition-[background-color,border-color,box-shadow] duration-200 ease-out motion-reduce:transition-none',\n 'group-data-hovered/switch:bg-muted-foreground/25',\n 'group-data-selected/switch:border-primary group-data-selected/switch:bg-primary',\n 'group-data-selected/switch:group-data-hovered/switch:bg-primary/85',\n 'group-data-focus-visible/switch:ring-3 group-data-focus-visible/switch:ring-ring/50',\n styles.control,\n )}\n >\n <span\n data-slot=\"switch-thumb\"\n style={{\n transform: `translate3d(${thumbOffset}, 0, 0)`,\n width: isThumbPressed ? styles.activeWidth : styles.idleWidth,\n }}\n className={cn(\n 'grid shrink-0 place-items-center rounded-full border border-border/60 bg-background text-[0.625rem] text-muted-foreground shadow-sm',\n 'will-change-[transform,width] transition-[transform,width,background-color,color,border-color] duration-[240ms] ease-[cubic-bezier(0.2,0.8,0.2,1)] motion-reduce:transition-none',\n 'group-data-selected/switch:border-primary-foreground/20',\n 'group-data-selected/switch:bg-primary-foreground group-data-selected/switch:text-primary',\n styles.thumb,\n )}\n >\n {state.isSelected ? (selectedIcon ?? icon) : icon}\n </span>\n </span>\n {children || description ? (\n <span className=\"grid gap-0.5 leading-tight\">\n {children ? (\n <span data-slot=\"switch-label\" className=\"font-medium\">\n {typeof children === 'function' ? children(state) : children}\n </span>\n ) : null}\n {description ? (\n <span\n data-slot=\"switch-description\"\n className=\"text-muted-foreground text-xs font-normal\"\n >\n {description}\n </span>\n ) : null}\n </span>\n ) : null}\n </>\n )\n }}\n </AriaSwitch>\n )\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n\n/** Presentational table primitives. Sorting, pagination and data state stay in the application. */\nexport function Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n )\n}\n\nexport function TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return <thead data-slot=\"table-header\" className={cn('[&_tr]:border-b', className)} {...props} />\n}\nexport function TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n )\n}\nexport function TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'border-b border-border transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n )\n}\nexport function TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n )\n}\nexport function TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn('p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n )\n}\nexport function TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\nexport function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n 'border-t border-border bg-muted/50 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n )\n}\n","import {\n Tab as AriaTab,\n TabList as AriaTabList,\n TabPanel as AriaTabPanel,\n TabPanels as AriaTabPanels,\n Tabs as AriaTabs,\n composeRenderProps,\n type TabListProps as AriaTabListProps,\n type TabPanelProps as AriaTabPanelProps,\n type TabPanelsProps as AriaTabPanelsProps,\n type TabProps as AriaTabProps,\n type TabsProps as AriaTabsProps,\n} from 'react-aria-components'\n\nimport { cn } from '../../lib/cn'\n\nexport type TabsProps = AriaTabsProps\nexport type TabProps = AriaTabProps\nexport type TabPanelProps = AriaTabPanelProps\n\n/** State container that coordinates a tab list with its associated panels. */\nexport function Tabs({ className, ...props }: AriaTabsProps) {\n return (\n <AriaTabs\n data-slot=\"tabs\"\n className={composeRenderProps(className, (value) => cn('flex flex-col gap-2', value))}\n {...props}\n />\n )\n}\n\n/** Container for the selectable {@link TabsTrigger} elements. */\nexport function TabsList<T extends object>({ className, ...props }: AriaTabListProps<T>) {\n return (\n <AriaTabList\n data-slot=\"tabs-list\"\n className={composeRenderProps(className, (value) =>\n cn(\n 'inline-flex w-fit items-center gap-1 rounded-lg bg-muted p-1 text-muted-foreground',\n value,\n ),\n )}\n {...props}\n />\n )\n}\n\n/** Tab control that selects the {@link TabsContent} with the same identifier. */\nexport function TabsTrigger({ className, ...props }: AriaTabProps) {\n return (\n <AriaTab\n data-slot=\"tabs-trigger\"\n className={composeRenderProps(className, (value) =>\n cn(\n 'inline-flex h-7 items-center justify-center gap-1.5 rounded-md px-2.5 text-sm font-medium outline-none transition-colors data-hovered:text-foreground data-selected:bg-background data-selected:text-foreground data-selected:shadow-sm data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50',\n value,\n ),\n )}\n {...props}\n />\n )\n}\n\n/** Container for the panels associated with a {@link TabsList}. */\nexport function TabsPanels<T extends object>({ className, ...props }: AriaTabPanelsProps<T>) {\n return <AriaTabPanels data-slot=\"tabs-panels\" className={cn('min-w-0', className)} {...props} />\n}\n\n/** Content panel displayed for the selected {@link TabsTrigger}. */\nexport function TabsContent({ className, ...props }: AriaTabPanelProps) {\n return (\n <AriaTabPanel\n data-slot=\"tabs-content\"\n className={composeRenderProps(className, (value) =>\n cn('text-sm outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50', value),\n )}\n {...props}\n />\n )\n}\n","import { useEffect, type ReactNode } from 'react'\nimport { sileo, Toaster as SileoToaster } from 'sileo'\n\nimport { toast } from './toast-store'\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info'\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\nexport type ToastAction = { label: string; onPress: () => void }\nexport type ToastOptions = {\n title: string\n description?: string\n variant?: ToastVariant\n duration?: number\n position?: ToastPosition\n action?: ToastAction\n}\nexport type ToastData = ToastOptions & { id: string; state: 'open' | 'closing' }\nexport function ToastProvider({ children }: { children: ReactNode }) {\n return (\n <>\n {children}\n <Toaster />\n </>\n )\n}\n\n/** Viewport that renders notifications created with {@link toast}. */\nexport function Toaster({ position }: { position?: ToastPosition }) {\n return <SileoToaster position={position} options={{ fill: 'var(--ui-secondary)' }} />\n}\n\nexport function ToastViewport({\n position,\n visiblePosition,\n className,\n}: {\n position: ToastPosition\n visiblePosition?: ToastPosition\n className?: string\n}) {\n void className\n if (visiblePosition && visiblePosition !== position) return null\n return <Toaster position={position} />\n}\n\nexport function Toast({\n id,\n title,\n description,\n variant = 'default',\n action,\n state,\n duration = 0,\n position,\n onDismiss,\n}: ToastData & { onDismiss?: () => void }) {\n useEffect(() => {\n if (state !== 'open') return\n const toastId = toast({ title, description, variant, action, duration, position })\n return () => {\n sileo.dismiss(toastId)\n onDismiss?.()\n }\n }, [action, description, duration, id, onDismiss, position, state, title, variant])\n return null\n}\n","import { sileo } from 'sileo'\n\nimport type { ToastOptions, ToastPosition } from './toast'\n\ntype ToastPromiseOptions<T> = {\n loading: string\n success: string | ((value: T) => string)\n error: string | ((error: unknown) => string)\n description?: string\n position?: ToastPosition\n}\n\nfunction toSileoOptions({ title, description, duration, position, action }: ToastOptions) {\n return {\n title,\n description,\n duration: duration === 0 ? null : duration,\n position,\n button: action ? { title: action.label, onClick: action.onPress } : undefined,\n }\n}\n\nfunction create(options: ToastOptions) {\n const sileoOptions = toSileoOptions(options)\n if (options.action) return sileo.action(sileoOptions)\n if (options.variant === 'success') return sileo.success(sileoOptions)\n if (options.variant === 'error') return sileo.error(sileoOptions)\n if (options.variant === 'warning') return sileo.warning(sileoOptions)\n if (options.variant === 'info') return sileo.info(sileoOptions)\n return sileo.show(sileoOptions)\n}\n\nexport const toast = Object.assign((options: ToastOptions) => create(options), {\n success: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'success' }),\n error: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'error' }),\n warning: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'warning' }),\n info: (title: string, options?: Omit<ToastOptions, 'title' | 'variant'>) =>\n create({ ...options, title, variant: 'info' }),\n dismiss: (id: string) => sileo.dismiss(id),\n promise: <T>(promise: Promise<T>, options: ToastPromiseOptions<T>) => {\n const shared = { description: options.description, position: options.position }\n return sileo.promise(promise, {\n loading: { ...shared, title: options.loading },\n success: (value) => ({\n ...shared,\n title: typeof options.success === 'function' ? options.success(value) : options.success,\n }),\n error: (error) => ({\n ...shared,\n title: typeof options.error === 'function' ? options.error(error) : options.error,\n }),\n position: options.position,\n })\n },\n})\n\nexport function useToast() {\n return toast\n}\n","import type * as React from 'react'\n\nimport { cn } from '../../lib/cn'\n/** Groups related actions with the toolbar semantic role. */\nexport function Toolbar({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n role=\"toolbar\"\n data-slot=\"toolbar\"\n className={cn('flex flex-wrap items-center gap-2', className)}\n {...props}\n />\n )\n}\nexport function ToolbarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"toolbar-group\"\n className={cn('flex items-center gap-2', className)}\n {...props}\n />\n )\n}\nexport function ToolbarSpacer({ className, ...props }: React.ComponentProps<'div'>) {\n return <div aria-hidden=\"true\" className={cn('hidden flex-1 sm:block', className)} {...props} />\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAyD;AAalD,SAAS,YAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AAAA,EACV,YAAY,KAAK;AACnB,GAA0B;AACxB,QAAM,CAAC,QAAQ,SAAS,QAAI,uBAAyB,MAAM;AAC3D,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAuB,IAAI;AACrD,QAAM,gBAAY,qBAAsB,IAAI;AAC5C,QAAM,cAAU,qBAAO,MAAM;AAC7B,QAAM,mBAAe,qBAAO,SAAS;AAErC,8BAAU,MAAM;AACd,YAAQ,UAAU;AAClB,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,QAAQ,SAAS,CAAC;AAEtB,QAAM,WAAO,0BAAY,OAAO,UAAa;AAC3C,cAAU,QAAQ;AAClB,aAAS,IAAI;AACb,QAAI;AACF,YAAM,QAAQ,QAAQ,KAAK;AAC3B,gBAAU,UAAU,aAAa,QAAQ,KAAK;AAC9C,gBAAU,OAAO;AAAA,IACnB,SAAS,OAAO;AACd,eAAS,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,qBAAqB,CAAC;AAC1E,gBAAU,OAAO;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,8BAAU,MAAM;AACd,QAAI,CAAC,QAAS;AACd,UAAM,WAAW,aAAa,QAAQ,IAAI;AAC1C,QAAI,UAAU,YAAY,MAAM;AAC9B,gBAAU,UAAU;AACpB;AAAA,IACF;AACA,QAAI,aAAa,UAAU,QAAS;AACpC,UAAM,UAAU,OAAO,WAAW,MAAM,KAAK,KAAK,IAAI,GAAG,UAAU;AACnE,WAAO,MAAM,OAAO,aAAa,OAAO;AAAA,EAC1C,GAAG,CAAC,MAAM,YAAY,SAAS,IAAI,CAAC;AAEpC,SAAO,EAAE,QAAQ,OAAO,SAAS,MAAM,KAAK,IAAI,EAAE;AACpD;;;ACzDA,IAAAC,gBAAoC;AAG7B,SAAS,kBAAqB,OAAU,QAAgB,KAAK;AAClE,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,wBAAS,KAAK;AAE1D,+BAAU,MAAM;AACd,UAAM,UAAU,OAAO,WAAW,MAAM,kBAAkB,KAAK,GAAG,KAAK;AACvE,WAAO,MAAM,OAAO,aAAa,OAAO;AAAA,EAC1C,GAAG,CAAC,OAAO,KAAK,CAAC;AAEjB,SAAO;AACT;;;ACZA,IAAAC,gBAAgE;AAEzD,SAAS,aAAa,MAA+B;AAC1D,QAAM,UAAmC,MAAM,KAAK,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,IACxF;AAAA,IACA,OAAO,UAAU,WAAW,QAAQ,MAAM;AAAA,EAC5C,CAAC;AACD,UAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC;AAC3D,SAAO,KAAK,UAAU,OAAO;AAC/B;AAUO,SAAS,eAAmF;AACjG,QAAM,kBAAc,sBAAiB,IAAI;AACzC,QAAM,eAAW,sBAAsB,IAAI;AAC3C,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,KAAK;AAE5C,QAAM,gBAAY,2BAAY,MAAM;AAClC,QAAI,YAAY,WAAW,SAAS,YAAY,MAAM;AACpD,iBAAW,aAAa,YAAY,OAAO,MAAM,SAAS,OAAO;AAAA,IACnE;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,YAAQ,2BAAY,MAAM;AAC9B,QAAI,YAAY,SAAS;AACvB,eAAS,UAAU,aAAa,YAAY,OAAO;AACnD,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,cAAU;AAAA,IACd,CAAC,SAAS;AACR,UAAI,YAAY,SAAS;AACvB,oBAAY,QAAQ,oBAAoB,SAAS,SAAS;AAC1D,oBAAY,QAAQ,oBAAoB,UAAU,SAAS;AAC3D,oBAAY,QAAQ,oBAAoB,SAAS,SAAS;AAAA,MAC5D;AACA,kBAAY,UAAU;AACtB,UAAI,MAAM;AACR,iBAAS,UAAU,aAAa,IAAI;AACpC,mBAAW,KAAK;AAChB,aAAK,iBAAiB,SAAS,SAAS;AACxC,aAAK,iBAAiB,UAAU,SAAS;AACzC,aAAK,iBAAiB,SAAS,SAAS;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,SAAO,EAAE,SAAS,SAAS,WAAW,MAAM,WAAW,IAAI,GAAG,MAAM;AACtE;;;ACzDA,sCAAoB;AAKb,IAAM,mBAAe,qCAAI,kCAAkC;;;ACLlE,kBAAsC;AACtC,4BAAwB;AAGjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ACDA,SAAS,UAAU,OAAe;AAChC,SAAO,MACJ,UAAU,KAAK,EACf,QAAQ,oBAAoB,EAAE,EAC9B,kBAAkB;AACvB;AAEA,SAAS,yBAAyB,OAAe;AAC/C,QAAM,SAAgD,CAAC;AACvD,MAAI,aAAa;AACjB,MAAI,cAAc;AAElB,aAAW,aAAa,OAAO;AAC7B,UAAM,QAAQ;AACd,mBAAe,UAAU;AACzB,UAAM,sBAAsB,UAAU,SAAS;AAC/C,kBAAc;AACd,aAAS,QAAQ,GAAG,QAAQ,oBAAoB,QAAQ,SAAS,GAAG;AAClE,aAAO,KAAK,EAAE,OAAO,KAAK,YAAY,CAAC;AAAA,IACzC;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,OAAO;AAC9B;AAMO,SAAS,kBAAkB,MAAc,OAAgC;AAC9E,QAAM,OAAO,UAAU,MAAM,KAAK,CAAC;AACnC,MAAI,CAAC,KAAM,QAAO,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC;AAEzC,QAAM,EAAE,YAAY,OAAO,IAAI,yBAAyB,IAAI;AAC5D,QAAM,QAAyB,CAAC;AAChC,MAAI,eAAe;AACnB,MAAI,QAAQ,WAAW,QAAQ,IAAI;AAEnC,SAAO,UAAU,IAAI;AACnB,UAAM,aAAa,OAAO,KAAK,GAAG;AAClC,UAAM,WAAW,OAAO,QAAQ,KAAK,SAAS,CAAC,GAAG;AAClD,QAAI,eAAe,UAAa,aAAa,OAAW;AACxD,QAAI,aAAa;AACf,YAAM,KAAK,EAAE,MAAM,KAAK,MAAM,cAAc,UAAU,GAAG,OAAO,MAAM,CAAC;AACzE,UAAM,KAAK,EAAE,MAAM,KAAK,MAAM,YAAY,QAAQ,GAAG,OAAO,KAAK,CAAC;AAClE,mBAAe;AACf,YAAQ,WAAW,QAAQ,MAAM,QAAQ,KAAK,MAAM;AAAA,EACtD;AAEA,MAAI,eAAe,KAAK,OAAQ,OAAM,KAAK,EAAE,MAAM,KAAK,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC;AAC3F,SAAO,MAAM,SAAS,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC;AACvD;;;ACtDA,0BAA+C;AAC/C,YAAuB;AACvB,mCAUO;AAOH;AAFG,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAyB;AACvE,SACE;AAAA,IAAC,6BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC9D,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAoB;AACtE,SACE;AAAA,IAAC,6BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mCAAmC,SAAS;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,4CAAC,6BAAAC,SAAA,EAAyB,WAAU,QAClC;AAAA,IAAC,6BAAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAGO,SAAS,iBAAiB,EAAE,WAAW,UAAU,GAAG,MAAM,GAAyB;AACxF,SACE;AAAA,IAAC,6BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;ACzFA,IAAAC,SAAuB;AACvB,IAAAC,gCAAuC;;;ACGvC,IAAAC,gBAAyB;AACzB,IAAAC,gCAKO;;;ACVP,IAAAC,mCAAoB;AAKb,IAAM,qBAAiB;AAAA,EAC5B;AAAA,IACE;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,QACF,WACE;AAAA,QACF,OACE;AAAA,QACF,aACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SACE;AAAA,QACF,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WACE;AAAA,QACF,WACE;AAAA,QACF,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;;;ADmBI,IAAAC,sBAAA;AArCJ,IAAM,yBAAyC,EAAE,GAAG,OAAO,GAAG,MAAM;AAQpE,SAAS,kBAAkB,OAAoC;AAC7D,MAAI,MAAM,gBAAgB,cAAc,MAAM,gBAAgB,WAAW;AACvE,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,MAAM,UAAa,MAAM,MAAM,QAAW;AAClD,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAG,GAAG,MAAM,CAAC;AAAA,IACb,GAAG,GAAG,MAAM,CAAC;AAAA,EACf;AACF;AAEA,SAAS,gBAAgB,SAAkB;AACzC,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAwB,IAAI;AAExD,WAAS,cAAc,OAAoB;AACzC,QAAI,CAAC,QAAS;AAEd,UAAM,WAAW,kBAAkB,KAAK;AACxC,cAAU,CAAC,mBAAmB;AAAA,MAC5B,KAAK,eAAe,MAAM,KAAK;AAAA,MAC/B;AAAA,IACF,EAAE;AAAA,EACJ;AAEA,QAAM,gBAAgB,SACpB;AAAA,IAAC;AAAA;AAAA,MAEC,eAAY;AAAA,MACZ,aAAU;AAAA,MACV,WAAU;AAAA,MACV,OAAO,EAAE,MAAM,OAAO,SAAS,GAAG,KAAK,OAAO,SAAS,EAAE;AAAA,MACzD,gBAAgB,MACd,UAAU,CAAC,kBAAmB,eAAe,OAAO,OAAO,KAAK,OAAO,aAAc;AAAA;AAAA,IANlF,OAAO;AAAA,EAQd,IACE;AAEJ,SAAO,EAAE,QAAQ,eAAe,cAAc;AAChD;AAmBO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgB;AACd,QAAM,EAAE,QAAQ,cAAc,IAAI,gBAAgB,YAAY,MAAM;AAEpE,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MAC1D;AAAA,MACA,YAAY,cAAc;AAAA,MAC1B,SAAS,CAAC,UAAU;AAClB,kBAAU,KAAK;AACf,sBAAc,KAAK;AAAA,MACrB;AAAA,MACC,GAAG;AAAA,MAEH,WAAC,gBACA,8EACG;AAAA,eAAO,aAAa,aAAa,SAAS,WAAW,IAAI;AAAA,QACzD;AAAA,SACH;AAAA;AAAA,EAEJ;AAEJ;AAgBO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,EAAE,QAAQ,cAAc,IAAI,gBAAgB,YAAY,MAAM;AAEpE,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MAC1D;AAAA,MACA,SAAS,CAAC,UAAU;AAClB,kBAAU,KAAK;AACf,sBAAc,KAAK;AAAA,MACrB;AAAA,MACC,GAAG;AAAA,MAEH,WAAC,gBACA,8EACG;AAAA,eAAO,aAAa,aAAa,SAAS,WAAW,IAAI;AAAA,QACzD;AAAA,SACH;AAAA;AAAA,EAEJ;AAEJ;;;AE/KA,IAAAC,uBAAsB;AACtB,IAAAC,SAAuB;AACvB,IAAAC,gCAOO;AA2CE,IAAAC,sBAAA;AApCT,IAAM,gBAAsB,qBAAyC,IAAI;AAEzE,SAAS,mBAAmB;AAC1B,QAAM,UAAgB,kBAAW,aAAa;AAC9C,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,mDAAmD;AACjF,SAAO;AACT;AAcO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,MAAM;AACR,GAAoB;AAClB,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,gBAAS,WAAW;AAC1E,QAAM,OAAO,kBAAkB;AAC/B,QAAM,UAAgB;AAAA,IACpB,CAAC,aAAsB;AACrB,UAAI,mBAAmB,OAAW,qBAAoB,QAAQ;AAC9D,qBAAe,QAAQ;AAAA,IACzB;AAAA,IACA,CAAC,gBAAgB,YAAY;AAAA,EAC/B;AAEA,SAAO,6CAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,MAAM,QAAQ,GAAI,UAAS;AACrE;AAQO,SAAS,cAAc;AAAA,EAC5B,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAuB;AACrB,QAAM,EAAE,QAAQ,IAAI,iBAAiB;AACrC,QAAM,cAAoD,CAAC,UAAU;AACnE,cAAU,KAA4C;AACtD,QAAI,CAAC,MAAM,iBAAkB,SAAQ,IAAI;AAAA,EAC3C;AAEA,MAAI,WAAiB,sBAA+B,QAAQ,GAAG;AAC7D,UAAM,QAAQ;AACd,WAAa,oBAAa,OAAO;AAAA,MAC/B,GAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS,CAAC,UAAyC;AACjD,cAAM,MAAM,UAAU,KAAK;AAC3B,oBAAY,KAAK;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SACE,6CAAC,UAAO,aAAU,kBAAiB,SAAS,MAAM,QAAQ,IAAI,GAAI,GAAG,OAClE,UACH;AAEJ;AAGO,SAAS,aAAa,EAAE,SAAS,GAAmC;AACzE,SAAO,6EAAG,UAAS;AACrB;AAWO,SAAS,cAAc,EAAE,UAAU,WAAW,GAAG,MAAM,GAAuB;AACnF,QAAM,EAAE,MAAM,QAAQ,IAAI,iBAAiB;AAC3C,MAAI,CAAC,KAAM,QAAO;AAElB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAa;AAAA,MACb,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AA4BO,SAAS,OAAO,OAAoB;AACzC,MAAI,EAAE,aAAa,OAAQ,QAAO,6CAAC,cAAY,GAAG,OAAO;AAEzD,QAAM,EAAE,UAAU,SAAS,cAAc,aAAa,cAAc,MAAM,GAAG,aAAa,IACxF;AAEF,SACE,8CAAC,cAAW,aAA0B,cAA4B,MAC/D;AAAA,WAAO,YAAY,WAClB,6CAAC,iBAAe,GAAG,cAAe,mBAAQ,IAE1C,6CAAC,iBAAc,SAAO,MAAE,GAAG,cACxB,mBACH;AAAA,IAEF,6CAAC,iBAAe,GAAG,cAAe,UAAS;AAAA,KAC7C;AAEJ;AAGO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,GAAG;AACL,GAAuB;AACrB,QAAM,EAAE,QAAQ,IAAI,iBAAiB;AAErC,SACE,6CAAC,gBACC;AAAA,IAAC;AAAA;AAAA,MACC,aAAW;AAAA,MACX,SAAS,CAAC,UAAU;AAClB,YAAI,MAAM,WAAW,MAAM,cAAe,kBAAiB,KAAK;AAAA,MAClE;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAS,CAAC,UAAU;AAClB,gBAAI,MAAM,WAAW,MAAM,eAAe;AACxC,sBAAQ,KAAK;AACb,+BAAiB,KAAK;AAAA,YACxB;AAAA,UACF;AAAA,UAEA;AAAA,YAAC,8BAAAC;AAAA,YAAA;AAAA,cACC,aAAW;AAAA,cACX,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,cACF;AAAA,cACC,GAAG;AAAA,cAEH;AAAA;AAAA,gBACA,kBACC;AAAA,kBAAC;AAAA;AAAA,oBACC,cAAW;AAAA,oBACX,aAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,WAAU;AAAA,oBACV,MAAK;AAAA,oBACL,SAAS,MAAM,QAAQ,KAAK;AAAA,oBAE5B,uDAAC,8BAAM;AAAA;AAAA,gBACT,IACE;AAAA;AAAA;AAAA,UACN;AAAA;AAAA,MACF;AAAA;AAAA,EACF,GACF;AAEJ;AAQO,SAAS,YAAY,EAAE,UAAU,OAAO,UAAU,SAAS,GAAG,MAAM,GAAqB;AAC9F,QAAM,EAAE,QAAQ,IAAI,iBAAiB;AACrC,MAAI,WAAiB,sBAA+B,QAAQ,GAAG;AAC7D,UAAM,QAAQ;AACd,WAAa,oBAAa,OAAO;AAAA,MAC/B,GAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS,CAAC,UAAyC;AACjD,cAAM,MAAM,UAAU,KAAK;AAC3B,kBAAU,KAAK;AACf,YAAI,CAAC,MAAM,iBAAkB,SAAQ,KAAK;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SACE,6CAAC,UAAO,aAAU,gBAAe,SAAS,MAAM,QAAQ,KAAK,GAAI,GAAG,OACjE,UACH;AAEJ;AAGO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AACjF,SACE,6CAAC,SAAI,aAAU,iBAAgB,WAAW,GAAG,uBAAuB,SAAS,GAAI,GAAG,OAAO;AAE/F;AAGO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA,GAAG;AACL,GAAgE;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,kBAAkB,6CAAC,eAAY,SAAQ,WAAU,oBAAM,IAAiB;AAAA;AAAA;AAAA,EAC3E;AAEJ;AAGO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,mDAAmD,SAAS;AAAA,MACzE,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,GAAG;AACL,GAAoD;AAClD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AHrSI,IAAAC,sBAAA;AAFG,SAAS,YAAY,EAAE,UAAU,MAAM,aAAa,GAAqB;AAC9E,SACE,6CAAC,UAAO,MAAY,cACjB,UACH;AAEJ;AAEO,SAAS,kBAAkB,EAAE,SAAS,GAAmC;AAC9E,SAAO,6CAAC,gBAAc,UAAS;AACjC;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE,6CAAC,iBAAc,aAAU,wBAAwB,GAAG,OACjD,UACH;AAEJ;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA,GAAG;AACL,GAEG;AACD,SAAO,6CAAC,iBAAc,aAAU,wBAAuB,WAAuB,GAAG,OAAO;AAC1F;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAIG;AACD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,MAAK;AAAA,MACL,iBAAiB;AAAA,MACjB,WAAW,GAAG,SAAS,OAAO,gBAAgB,eAAe,SAAS;AAAA,MAErE;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,gDAAgD,SAAS;AAAA,MACtE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtF,SAAO,6CAAC,gBAAa,aAAU,uBAAsB,WAAW,GAAG,SAAS,GAAI,GAAG,OAAO;AAC5F;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,GAAG;AACL,GAA6C;AAC3C,SAAO,6CAAC,eAAY,aAAU,sBAAqB,WAAW,GAAG,SAAS,GAAI,GAAG,OAAO;AAC1F;AAEO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA,GAAG;AACL,GAAmD;AACjD,SACE,6CAAC,qBAAkB,aAAU,4BAA2B,WAAW,GAAG,SAAS,GAAI,GAAG,OAAO;AAEjG;AAEO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAAwC;AAC9F,SAAO,6CAAC,UAAO,aAAU,uBAAsB,WAAW,GAAG,SAAS,GAAI,GAAG,OAAO;AACtF;AAEO,SAAS,kBAAkB;AAAA,EAChC,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE,6CAAC,eAAY,SAAO,MAClB,uDAAC,UAAO,aAAU,uBAAsB,SAAQ,WAAU,SAAmB,GAAG,OAC7E,UACH,GACF;AAEJ;;;AI7HA,IAAAC,mCAAoB;AAEb,IAAM,oBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,aACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;ACJI,IAAAC,sBAAA;AAFJ,SAAS,MAAM,EAAE,WAAW,SAAS,GAAG,MAAM,GAAe;AAC3D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,6CAAC,SAAI,aAAU,gBAAe,WAAW,GAAG,0BAA0B,SAAS,GAAI,GAAG,OAAO;AAEjG;;;ACxCI,IAAAC,sBAAA;AAFG,SAAS,SAAS,EAAE,WAAW,oBAAoB,MAAM,GAAG,MAAM,GAAkB;AACzF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,2BAAyB;AAAA,MACzB,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAkC;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,gEAAgE,SAAS;AAAA,MACtF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAiC;AAClF,SAAO,6CAAC,UAAK,aAAU,kBAAiB,WAAW,GAAG,iBAAiB,SAAS,GAAI,GAAG,OAAO;AAChG;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAmC;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,qBAAqB,EAAE,WAAW,GAAG,MAAM,GAAmC;AAC5F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAWO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aAAa;AAAA,EACb,GAAG;AACL,GAAyB;AACvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,eAAa,UAAU;AAAA,MACvB,mBAAiB,cAAc;AAAA,MAC/B;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACtFA,IAAAC,gBAA+D;AA2BzD,IAAAC,sBAAA;AAlBN,IAAM,QAAQ;AAAA,EACZ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AACN;AAGA,IAAM,oBAAgB,6BAGZ,IAAI;AAGP,SAAS,OAAO,EAAE,WAAW,OAAO,WAAW,UAAU,GAAG,MAAM,GAAgB;AACvF,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAuB,MAAM;AACzD,SACE,6CAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,QAAQ,UAAU,GACjD;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA,MAAM,IAAI;AAAA,QACV;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH,GACF;AAEJ;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,QAAM,aAAS,0BAAW,aAAa;AACvC,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAS,KAAK;AAE1C,+BAAU,MAAM;AACd,cAAU,KAAK;AACf,YAAQ,UAAU,MAAM,YAAY,MAAM;AAAA,EAC5C,GAAG,CAAC,QAAQ,WAAW,GAAG,CAAC;AAE3B,MAAI,UAAU,QAAQ,WAAW,QAAS,QAAO;AACjD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,KAAI;AAAA,MACJ,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC/D,QAAQ,CAAC,UAAU;AACjB,gBAAQ,UAAU,QAAQ;AAC1B,iBAAS,KAAK;AAAA,MAChB;AAAA,MACA,SAAS,CAAC,UAAU;AAClB,kBAAU,IAAI;AACd,gBAAQ,UAAU,OAAO;AACzB,kBAAU,KAAK;AAAA,MACjB;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAiC;AACpF,QAAM,aAAS,0BAAW,aAAa;AACvC,MAAI,QAAQ,WAAW,SAAU,QAAO;AACxC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,0DAA0D,SAAS;AAAA,MAChF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAiC;AACjF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AAChF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAAiC;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC9HA,IAAAC,gCAAqC;;;ACFrC,IAAAC,mCAAoB;AAEb,IAAM,oBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,SAAS;AAAA,QACT,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;;;ADNI,IAAAC,sBAAA;AAFG,SAAS,MAAM,EAAE,WAAW,SAAS,GAAG,MAAM,GAAe;AAClE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,WAAW;AAAA,MACzB,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAKO,SAAS,UAAU,EAAE,WAAW,SAAS,GAAG,MAAM,GAAmB;AAC1E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,WAAW;AAAA,MACzB,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;;;AErCA,IAAAC,gCAIO;AAOH,IAAAC,sBAAA;AAFG,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAiD;AACjG,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,qEAAqE,SAAS;AAAA,MAC3F,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgD;AAC/F,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA0C;AAC7F,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAiC;AACpF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAa;AAAA,MACb,WAAW,GAAG,+BAA+B,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,oBAAoB;AAAA,EAClC,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AC/DA,IAAAC,gCAAgD;AAS5C,IAAAC,uBAAA;AAFJ,SAAS,UAAU,EAAE,WAAW,cAAc,cAAc,GAAG,MAAM,GAAmB;AACtF,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACrBA,IAAAC,mCAAoB;AAEb,IAAM,0BAAsB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,YACE;AAAA,QACF,UACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,aAAa;AAAA,IACf;AAAA,EACF;AACF;;;ACFI,IAAAC;AAAA;AAAA,EAAA;AAAA;AAPJ,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA2E;AACzE,SAEE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,MAAI,QAAQ;AACV,UAAM,cAAc;AAAA,MAClB,aAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,OAAO,WAAW;AAAA,EAC3B;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAA2C;AACzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC7DI,IAAAC,uBAAA;AAFJ,SAAS,KAAK,EAAE,WAAW,OAAO,WAAW,GAAG,MAAM,GAAc;AAClE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,kEAAkE,SAAS;AAAA,MACxF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE,8CAAC,SAAI,aAAU,gBAAe,WAAW,GAAG,uBAAuB,SAAS,GAAI,GAAG,OAAO;AAE9F;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACvFA,IAAAC,uBAAsB;AACtB,IAAAC,gCAGO;AAmBC,IAAAC,uBAAA;AAXD,SAAS,SAAS,EAAE,WAAW,UAAU,GAAG,MAAM,GAAkB;AACzE,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,WAAC,UACA,gFACE;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YAEV,wDAAC,8BAAM,WAAU,qGAAoG;AAAA;AAAA,QACvH;AAAA,QACC,OAAO,aAAa,aAAa,SAAS,KAAK,IAAI;AAAA,SACtD;AAAA;AAAA,EAEJ;AAEJ;;;ACjCA,IAAAC,SAAuB;AAkDjB,IAAAC,uBAAA;AAvCN,IAAM,qBAA2B,qBAA8C,IAAI;AAEnF,SAAS,wBAAwB;AAC/B,QAAM,UAAgB,kBAAW,kBAAkB;AACnD,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,6DAA6D;AAC3F,SAAO;AACT;AAaO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,MAAM;AAAA,EACN,GAAG;AACL,GAAqB;AACnB,QAAM,CAAC,kBAAkB,mBAAmB,IAAU,gBAAS,WAAW;AAC1E,QAAM,YAAkB,aAAM;AAC9B,QAAM,OAAO,kBAAkB;AAC/B,QAAM,UAAgB;AAAA,IACpB,CAAC,aAAsB;AACrB,UAAI,mBAAmB,OAAW,qBAAoB,QAAQ;AAC9D,qBAAe,QAAQ;AAAA,IACzB;AAAA,IACA,CAAC,gBAAgB,YAAY;AAAA,EAC/B;AAEA,SACE,8CAAC,mBAAmB,UAAnB,EAA4B,OAAO,EAAE,WAAW,MAAM,QAAQ,GAC7D,wDAAC,SAAI,aAAU,eAAc,cAAY,OAAO,SAAS,UAAW,GAAG,OACpE,UACH,GACF;AAEJ;AASO,SAAS,mBAAmB;AAAA,EACjC,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4B;AAC1B,QAAM,EAAE,WAAW,MAAM,QAAQ,IAAI,sBAAsB;AAC3D,QAAM,cAAoD,CAAC,UAAU;AACnE,cAAU,KAA4C;AACtD,QAAI,CAAC,MAAM,iBAAkB,SAAQ,CAAC,IAAI;AAAA,EAC5C;AAEA,MAAI,WAAiB,sBAA+B,QAAQ,GAAG;AAC7D,UAAM,QAAQ;AACd,WAAa,oBAAa,OAAO;AAAA,MAC/B,GAAI;AAAA,MACJ,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,cAAc,OAAO,SAAS;AAAA,MAC9B,SAAS,CAAC,UAAyC;AACjD,cAAM,MAAM,UAAU,KAAK;AAC3B,oBAAY,KAAK;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAY,OAAO,SAAS;AAAA,MAC5B,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,SAAS;AAAA,MACR,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAKO,SAAS,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAA4B;AAClF,QAAM,EAAE,WAAW,KAAK,IAAI,sBAAsB;AAClD,MAAI,CAAC,KAAM,QAAO;AAElB,SACE,8CAAC,SAAI,IAAI,WAAW,aAAU,uBAAsB,cAAW,QAAQ,GAAG,OACvE,UACH;AAEJ;;;ACxHA,IAAAC,gBAA4D;AAC5D,IAAAC,gCAeO;AAWH,IAAAC,uBAAA;AANG,IAAM,WAAW,8BAAAC;AAIjB,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAe;AACjE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAyC;AAC7F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,aAA+B;AAAA,EAC7C;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAuD;AACrD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MACnD,kBAAkB,aAAa,MAAM,aAAa;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,aAA+B;AAAA,EAC7C;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AACO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SACE,8CAAC,UAAK,WACH,4BAAkB,MAAM,KAAK,EAAE;AAAA,IAAI,CAAC,MAAM,UACzC,KAAK,QACH;AAAA,MAAC;AAAA;AAAA,QAEC,WAAU;AAAA,QAET,eAAK;AAAA;AAAA,MAHD,GAAG,KAAK,IAAI,IAAI,KAAK;AAAA,IAI5B,IAEA,8CAAC,0BAAwC,eAAK,QAA/B,GAAG,KAAK,IAAI,IAAI,KAAK,EAAe;AAAA,EAEvD,GACF;AAEJ;AA6BO,SAAS,qBAAuC;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aACE,8CAAC,OAAE,WAAU,uDAAsD,gCAAkB;AAAA,EAEvF,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAAiC;AAC/B,QAAM,CAAC,oBAAoB,qBAAqB,QAAI,wBAAS,EAAE;AAC/D,QAAM,aAAa,wBAAwB;AAC3C,QAAM,gBAAgB,CAAC,UAAkB;AACvC,0BAAsB,KAAK;AAC3B,oBAAgB,KAAK;AAAA,EACvB;AACA,QAAM,kBAAkB,WAAW,KAAK,EAAE,kBAAkB;AAC5D,QAAM,oBAAgB;AAAA,IACpB,MACE,kBACI,MAAM,OAAO,CAAC,SAAS,aAAa,IAAI,EAAE,kBAAkB,EAAE,SAAS,eAAe,CAAC,IACvF,CAAC,GAAG,KAAK;AAAA,IACf,CAAC,cAAc,OAAO,eAAe;AAAA,EACvC;AACA,QAAM,oBAAgB;AAAA,IACpB,MACE,CAAC,cAAc,CAAC,kBACZ,SACA,MAAM;AAAA,MACJ,CAAC,SACC,aAAa,IAAI,EAAE,kBAAkB,EAAE,WAAW,eAAe,KACjE,aAAa,IAAI,EAAE,SAAS,WAAW;AAAA,IAC3C;AAAA,IACN,CAAC,cAAc,WAAW,QAAQ,OAAO,iBAAiB,UAAU;AAAA,EACtE;AACA,QAAM,kBAAkB,gBAAgB,aAAa,aAAa,IAAI;AACtE,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,iBAAiB,CAAC,gBAAiB,QAAO;AAC/C,kBAAc,eAAe;AAC7B,wBAAoB,WAAW,aAAa,GAAG,aAAa;AAC5D,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,CAAC,UAA+D;AACpF,SAAK,MAAM,QAAQ,SAAS,MAAM,QAAQ,YAAY,iBAAiB,EAAG,OAAM,eAAe;AAAA,EACjG;AACA,SACE;AAAA,IAAC,8BAAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,GAAG,+CAA+C,SAAS;AAAA,MACtE,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,mBAAmB,CAAC,QAAQ;AAC1B,cAAM,OAAO,cAAc;AAAA,UACzB,CAAC,cAAc,OAAO,WAAW,SAAS,CAAC,MAAM,OAAO,GAAG;AAAA,QAC7D;AACA,YAAI,KAAM,eAAc,aAAa,IAAI,CAAC;AAC1C,4BAAoB,KAAK,IAAI;AAAA,MAC/B;AAAA,MAEC;AAAA,iBAAS,8CAAC,uCAAM,WAAU,uCAAuC,iBAAM;AAAA,QACxE,+CAAC,SAAI,WAAU,YACZ;AAAA,6BACC;AAAA,YAAC;AAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAU;AAAA,cAEV;AAAA,8DAAC,UAAK,WAAU,oBAAoB,sBAAW;AAAA,gBAC9C,gBAAgB,MAAM,WAAW,MAAM;AAAA;AAAA;AAAA,UAC1C;AAAA,UAEF;AAAA,YAAC;AAAA;AAAA,cACC,qBAAmB,kBAAkB,SAAS;AAAA,cAC9C;AAAA,cACA,WAAW;AAAA,cACX,WAAU;AAAA;AAAA,UACZ;AAAA,WACF;AAAA,QACC,eACC,8CAAC,sCAAK,MAAK,eAAc,WAAU,iCAChC,uBACH;AAAA,QAED,gBAAgB,8CAAC,4CAAW,WAAU,4BAA4B,wBAAa;AAAA,QAChF,8CAAC,mBACC,wDAAC,gBAAgB,YACd,WAAC,SACA,8CAAC,gBAAa,IAAI,WAAW,IAAI,GAAG,WAAW,aAAa,IAAI,GAC7D,uBACC,WAAW,MAAM,UAAU,IAE3B,8CAAC,kBAAe,MAAM,aAAa,IAAI,GAAG,OAAO,YAAY,GAEjE,GAEJ,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACtPA,IAAAC,iCAQO;AAME,IAAAC,uBAAA;AADF,SAAS,QAA0B,EAAE,WAAW,GAAG,MAAM,GAAqB;AACnF,SAAO,8CAAC,+BAAAC,UAAA,EAAa,aAAU,WAAU,WAAW,GAAG,UAAU,SAAS,GAAI,GAAG,OAAO;AAC1F;AAEO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAA2C;AAC5F,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAyC;AAC5F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAA8B;AAAA,EAC5C;AAAA,EACA,GAAG;AACL,GAA4C;AAC1C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAA8B,EAAE,WAAW,GAAG,MAAM,GAAwB;AAC1F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC5BQ,IAAAC,uBAAA;AAdD,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,cAAc;AAAA,EACd,cAAc;AAAA,EACd,UAAU;AAAA,EACV;AACF,GAAuB;AACrB,SACE,8CAAC,eAAY,MAAY,cACvB,yDAAC,sBACC;AAAA,mDAAC,qBACC;AAAA,oDAAC,oBAAkB,iBAAM;AAAA,MACxB,cAAc,8CAAC,0BAAwB,uBAAY,IAA4B;AAAA,OAClF;AAAA,IACA,+CAAC,qBACC;AAAA,oDAAC,UAAO,SAAQ,WAAU,YAAY,SAAS,SAAS,MAAM,aAAa,KAAK,GAC7E,uBACH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,cAAc,gBAAgB;AAAA,UACvC,YAAY;AAAA,UACZ,SAAS;AAAA,UAER;AAAA;AAAA,MACH;AAAA,OACF;AAAA,KACF,GACF;AAEJ;;;ACxDA,IAAAC,uBAAyC;AAEzC,IAAAC,iCAKO;AA8BK,IAAAC,uBAAA;AAhBL,SAAS,WAAW;AAAA,EACzB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,cAAc;AAAA,EACd;AAAA,EACA;AACF,GAAoB;AAClB,SACE,8CAAC,6CAAW,iBAAiB,aAC3B,yDAAC,QAAK,WAAW,GAAG,yBAAyB,SAAS,GACpD;AAAA,kDAAC,0CAAQ,WAAU,QACjB;AAAA,MAAC,+BAAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,aAAU;AAAA,QACV,WAAU;AAAA,QAEV;AAAA,wDAAC,oCAAY,WAAU,oCAAmC;AAAA,UAC1D,+CAAC,UAAK,WAAU,gCACd;AAAA,0DAAC,UAAK,WAAU,oEACb,iBACH;AAAA,YACA,8CAAC,UAAK,WAAU,iCAAiC,uBAAY;AAAA,aAC/D;AAAA,UACA,8CAAC,oCAAY,WAAU,oGAAmG;AAAA;AAAA;AAAA,IAC5H,GACF;AAAA,IACA,8CAAC,kDAAgB,aAAU,uBACzB,wDAAC,eAAa,UAAS,GACzB;AAAA,KACF,GACF;AAEJ;;;ACrDA,IAAAC,uBAAgC;AAUb,IAAAC,uBAAA;AADZ,SAAS,WAAW,EAAE,KAAK,UAAU,KAAK,GAAoB;AACnE,MAAI,CAAC,IAAK,QAAO,8CAAC,YAAS,UAAoB,QAAO,UAAS;AAE/D,MAAI,aAAa,qBAAqB,aAAa,gBAAgB,aAAa,YAAY;AAC1F,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO;AAAA,QACP,WAAU;AAAA,QACV,OAAO,EAAE,QAAQ,QAAQ,WAAW,IAAI;AAAA;AAAA,IAC1C;AAAA,EAEJ;AAEA,MAAI,UAAU,WAAW,QAAQ,GAAG;AAClC,WACE,8CAAC,SAAI,WAAU,kDAEb,wDAAC,SAAI,KAAK,KAAK,KAAK,MAAM,WAAU,kDAAiD,GACvF;AAAA,EAEJ;AAEA,SAAO,8CAAC,YAAS,UAAoB,QAAO,eAAc;AAC5D;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AACF,GAGG;AACD,QAAM,OAAO,UAAU,WAAW,QAAQ,IAAI,6BAAQ;AACtD,QAAM,UACJ,WAAW,WACP,0CACA;AAEN,SACE,+CAAC,SAAI,WAAU,+EACb;AAAA,kDAAC,QAAK,WAAU,qBAAoB;AAAA,IACpC,8CAAC,OAAE,WAAU,WAAW,mBAAQ;AAAA,IAC/B,WAAW,8CAAC,OAAE,WAAU,gCAAgC,oBAAS,IAAO;AAAA,IACzE,8CAAC,OAAE,WAAU,sBAAqB,8DAA6C;AAAA,KACjF;AAEJ;;;ACxDA,IAAAC,mCAAoB;AACpB,IAAAC,uBAA4C;AAC5C,IAAAC,SAAuB;AACvB,IAAAC,iCAYO;AAME,IAAAC,uBAAA;AADT,SAAS,oBAAoB,EAAE,GAAG,MAAM,GAAsD;AAC5F,SAAO,8CAAC,+BAAAC,aAAA,EAAqB,aAAU,yBAAyB,GAAG,OAAO;AAC5E;AAaA,SAAS,oBAAoB;AAAA,EAC3B,aAAa,WAAW;AAAA,EACxB,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA6B;AAC3B,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,QAAC,+BAAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACT,GAAG;AAAA,UAEH;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAsBA,SAAS,aAAa,OAA0B;AAC9C,MAAI,EAAE,aAAa,OAAQ,QAAO,8CAAC,uBAAqB,GAAG,OAAO;AAElE,QAAM,EAAE,UAAU,SAAS,cAAc,aAAa,QAAQ,cAAc,GAAG,aAAa,IAC1F;AACF,QAAM,iBACJ,OAAO,YAAY,WAAW,8CAAC,UAAQ,GAAG,cAAe,mBAAQ,IAAY;AAE/E,SACE,+CAAC,uBAAoB,aAA0B,QAAgB,cAC5D;AAAA;AAAA,IACD,8CAAC,uBAAqB,GAAG,cAAe,UAAS;AAAA,KACnD;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB,GAAG;AACL,GAEG;AACD,SAAO,8CAAC,+BAAAC,aAAA,EAAqB,aAAU,uBAAuB,GAAG,OAAO;AAC1E;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,+BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,eAAe;AAAA,QACb,MAAM;AAAA,QACN,QACE;AAAA,QACF,UACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAGG;AACD,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,WAAW,OAAO,aAAa,WAAW,WAAW,MAAM;AAAA,MAC3D,eAAW;AAAA,QAAmB;AAAA,QAAW,CAACC,YAAW,EAAE,cAAc,MACnE,GAAG,yBAAyB,EAAE,cAAc,CAAC,GAAGA,UAAS;AAAA,MAC3D;AAAA,MACC,GAAG;AAAA,MAEH,iEAAmB,UAAU,CAACC,WAAU,EAAE,YAAY,cAAc,MACnE,gFACG;AAAA,0BAAkB,SACjB;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,aACE,kBAAkB,WACd,uCACA;AAAA,YAGL,uBAAa,8CAAC,kCAAU,IAAK;AAAA;AAAA,QAChC,IACE;AAAA,QACHA;AAAA,SACH,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,gBAAgB,EAAE,GAAG,MAAM,GAAyD;AAC3F,SAAO,8CAAC,+BAAAC,gBAAA,EAAwB,aAAU,qBAAqB,GAAG,OAAO;AAC3E;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE;AAAA,IAAC,+BAAAH;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ,WAAW,OAAO,aAAa,WAAW,WAAW,MAAM;AAAA,MAC3D,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,iEAAmB,UAAU,CAACE,cAC7B,gFACG;AAAA,QAAAA;AAAA,QACD,8CAAC,yCAAiB,WAAU,uBAAsB;AAAA,SACpD,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,SAAS;AAAA,EACT;AAAA,EACA,GAAG;AACL,GAAqD;AACnD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAAoD;AAClD,SACE;AAAA,IAAC,+BAAAE;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,qBAAqB,EAAE,WAAW,GAAG,MAAM,GAAiC;AACnF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC3QA,IAAAC,mCAAoB;AAEb,IAAM,8BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;;;ACJI,IAAAC,uBAAA;AAFG,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC/E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAAgC;AACrF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAA+E;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,wBAAwB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,gBAAgB,EAAE,WAAW,UAAU,GAAG,MAAM,GAA+B;AAC7F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sDAAsD,SAAS;AAAA,MAC5E,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,sBAAsB,EAAE,WAAW,GAAG,MAAM,GAA8B;AACxF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACjFA,IAAAC,gBAAuD;AACvD,IAAAC,iCAAwC;AAQlC,IAAAC,uBAAA;AAHC,IAAMC,aAAQ;AAAA,EACnB,SAASA,OAAM,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAC3C,WACE;AAAA,MAAC,+BAAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;;;ACpBA,IAAAC,mCAAoB;AAEb,IAAM,oBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,UAAU;AAAA,QACV,YACE;AAAA,QACF,YACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,aAAa,WAAW;AAAA,EAC7C;AACF;;;ACLI,IAAAC,uBAAA;AAFG,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAqC;AAClF,SACE,8CAAC,cAAS,aAAU,aAAY,WAAW,GAAG,uBAAuB,SAAS,GAAI,GAAG,OAAO;AAEhG;AAGO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAsE;AACpE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC/E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAUO,SAAS,MAAM,EAAE,WAAW,cAAc,YAAY,GAAG,MAAM,GAAe;AACnF;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,aAAU;AAAA,QACV,oBAAkB;AAAA,QAClB,WAAW,GAAG,cAAc,EAAE,YAAY,CAAC,GAAG,SAAS;AAAA,QACtD,GAAG;AAAA;AAAA,IACN;AAAA;AAEJ;AAGO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AACjF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAuC;AACtF,SACE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC/E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,qDAAqD,SAAS;AAAA,MAC3E,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAA8B;AACnF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,eAAe,EAAE,WAAW,UAAU,GAAG,MAAM,GAAgC;AAC7F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,QAAQ,QAAQ,KAAK;AAAA,MACnC,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA,MAEJ;AAAA,sDAAC,aAAU,WAAU,4BAA2B;AAAA,QAC/C,WACC;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAET;AAAA;AAAA,QACH,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AASO,SAASC,YAAW,EAAE,WAAW,UAAU,QAAQ,GAAG,MAAM,GAAoB;AACrF,QAAM,WAAW,CAAC,GAAG,IAAI,IAAI,QAAQ,QAAQ,CAAC,UAAU,OAAO,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,QAAM,UACJ,aACC,SAAS,WAAW,IACnB,SAAS,CAAC,IACR,SAAS,SAAS,IACpB,8CAAC,QAAG,WAAU,kBACX,mBAAS,IAAI,CAAC,YACb,8CAAC,QAAkB,qBAAV,OAAkB,CAC5B,GACH,IACE;AACN,MAAI,CAAC,QAAS,QAAO;AACrB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AC5KA,IAAAC,uBAAuD;AA4B5C,IAAAC,uBAAA;AAPJ,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,eAAe;AACjB,GAAsB;AACpB,MAAI,MAAM,WAAW;AACnB,WAAO,8CAAC,UAAK,eAAY,QAAO,WAAW,GAAG,gCAAgC,SAAS,GAAG;AAC5F,QAAM,QAAQ,MAAM,WAAW;AAC/B,QAAM,UAAU,MAAM,WAAW;AACjC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,QAAQ,UAAU;AAAA,MACxB,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,MAAM,WAAW,aAAa;AAAA,QAC9B;AAAA,MACF;AAAA,MAEC;AAAA,cAAM,WAAW,aAChB,8CAAC,qCAAa,eAAY,QAAO,WAAU,yBAAwB;AAAA,QAEpE,WAAW,8CAAC,oCAAY,eAAY,QAAO,WAAU,YAAW;AAAA,QAChE,SAAS,8CAAC,oCAAY,eAAY,QAAO,WAAU,YAAW;AAAA,QAC/D,8CAAC,UACE,gBAAM,WAAW,YACd,eACA,UACG,MAAM,WAAW,eAClB,MAAM,SACd;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACzDA,IAAAC,gBAAyD;AAIlD,SAAS,gBAAgB,SAAuC;AACrE,QAAM,UAAU,SAAS,kBAAkB;AAC3C,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAA4B,EAAE,QAAQ,OAAO,CAAC;AACxE,QAAM,YAAQ,sBAA6C,IAAI;AAC/D,QAAM,iBAAa,2BAAY,MAAM;AACnC,QAAI,MAAM,QAAS,cAAa,MAAM,OAAO;AAC7C,UAAM,UAAU;AAAA,EAClB,GAAG,CAAC,CAAC;AACL,+BAAU,MAAM,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC;AAChD,QAAM,iBAAa,2BAAY,MAAM;AACnC,eAAW;AACX,aAAS,EAAE,QAAQ,UAAU,CAAC;AAAA,EAChC,GAAG,CAAC,UAAU,CAAC;AACf,QAAM,iBAAa;AAAA,IACjB,CAAC,YAAqB;AACpB,iBAAW;AACX,eAAS,EAAE,QAAQ,WAAW,QAAQ,CAAC;AACvC,UAAI,UAAU,EAAG,OAAM,UAAU,WAAW,MAAM,SAAS,EAAE,QAAQ,OAAO,CAAC,GAAG,OAAO;AAAA,IACzF;AAAA,IACA,CAAC,YAAY,OAAO;AAAA,EACtB;AACA,QAAM,eAAW;AAAA,IACf,CAAC,YAAoB;AACnB,iBAAW;AACX,eAAS,EAAE,QAAQ,SAAS,QAAQ,CAAC;AAAA,IACvC;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AACA,QAAM,YAAQ,2BAAY,MAAM;AAC9B,eAAW;AACX,aAAS,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC7B,GAAG,CAAC,UAAU,CAAC;AACf,SAAO,EAAE,OAAO,SAAS,MAAM,WAAW,WAAW,YAAY,YAAY,UAAU,MAAM;AAC/F;;;ACDU,IAAAC,uBAAA;AAhBH,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiB;AACf,QAAM,SAAS,OAAO,GAAG,OAAO,UAAU;AAC1C,QAAM,UAAU,QAAQ,GAAG,OAAO,WAAW;AAC7C,SACE,+CAAC,SAAI,aAAU,YAAW,WAAW,GAAG,yBAAyB,SAAS,GACxE;AAAA,mDAAC,WAAM,SAAkB,WAAU,uCAChC;AAAA;AAAA,MACA,YACC,gFACE;AAAA,sDAAC,UAAK,eAAY,QAAO,WAAU,2BAA0B,eAE7D;AAAA,QACA,8CAAC,UAAK,WAAU,WAAU,4BAAc;AAAA,SAC1C;AAAA,OAEJ;AAAA,IACC;AAAA,IACA,QACC,8CAAC,OAAE,IAAI,QAAQ,WAAU,iCACtB,gBACH;AAAA,IAED,SACC,8CAAC,OAAE,IAAI,SAAS,MAAK,SAAQ,WAAU,wCACpC,iBACH;AAAA,KAEJ;AAEJ;;;ACxDA,IAAAC,iCAAqB;;;ACErB,IAAAC,iCAIO;AASE,IAAAC,uBAAA;AAJF,SAAS,eAAe;AAAA,EAC7B,QAAQ;AAAA,EACR,GAAG;AACL,GAAyD;AACvD,SAAO,8CAAC,+BAAAC,gBAAA,EAAwB,aAAU,mBAAkB,OAAe,GAAG,OAAO;AACvF;AAoBO,SAAS,QAAQ,EAAE,OAAO,UAAU,OAAO,GAAG,MAAM,GAAiB;AAC1E,SACE,+CAAC,kBAAe,OACb;AAAA;AAAA,IACD,8CAAC,kBAAgB,GAAG,OAAQ,iBAAM;AAAA,KACpC;AAEJ;AAMO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAEG;AACD,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,CAAC,EAAE,WAAAC,YAAW,aAAa,OAAO;AAAA,cACvC,GAAG;AAAA,cACH,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,WACEA,eAAc,WACV,mDACAA,eAAc,QACZ,oDACAA,eAAc,SACZ,oDACA;AAAA,YACZ;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AD7DQ,IAAAC,uBAAA;AAbD,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,gBAAgB,GAAG,eAAe,EAAE,SAAS,MAAM,OAAO,CAAC,GAAG,SAAS;AAE7E,SACE,8CAAC,WAAQ,OACN,iBACC,8CAAC,uCAAK,aAAU,eAAc,cAAY,OAAO,MAAY,WAAW,eACrE,UACH,IAEA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ;AAAA,MACA,MAAK;AAAA,MACL;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH,GAEJ;AAEJ;;;AE/CA,IAAAC,oCAAuC;;;ACAvC,IAAAC,gBAA2B;AAC3B,IAAAC,iCAAsE;AAiBlE,IAAAC,uBAAA;AALJ,IAAM,gBAAY,0BAA6C,SAASC,OACtE,EAAE,WAAW,MAAM,GAAG,MAAM,GAC5B,KACA;AACA,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAGM,IAAMD,SAAQ;;;AChCrB,IAAAE,iBAA2B;AAC3B,IAAAC,iCAGO;AAeH,IAAAC,uBAAA;AALJ,IAAM,mBAAe,2BAAmD,SAAS,SAC/E,EAAE,WAAW,GAAG,MAAM,GACtB,KACA;AACA,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAGM,IAAMC,YAAW;;;AChCxB,IAAAC,mCAAoB;AAEb,IAAM,8BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,eAAe;AAAA,QACf,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,OAAO,eAAe;AAAA,EAC3C;AACF;;;AHHI,IAAAC;AAAA;AAAA,EAAA;AAAA;AAHG,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC/E,SAEE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,GAA+E;AAC7E;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,aAAU;AAAA,QACV,cAAY;AAAA,QACZ,WAAW,GAAG,wBAAwB,EAAE,MAAM,CAAC,GAAG,SAAS;AAAA,QAC3D,SAAS,CAAC,UAAU;AAClB,oBAAU,KAAK;AACf,cAAI,CAAC,MAAM,oBAAoB,CAAE,MAAM,OAAuB,QAAQ,QAAQ;AAC5E,kBAAM,cAAc,eAAe,cAA2B,iBAAiB,GAAG,MAAM;AAAA,QAC5F;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA;AAEJ;AAEA,IAAM,+BAA2B,uCAAI,wBAAwB;AAAA,EAC3D,UAAU;AAAA,IACR,MAAM,EAAE,IAAI,sBAAsB,IAAI,YAAY,WAAW,UAAU,WAAW,SAAS;AAAA,EAC7F;AAAA,EACA,iBAAiB,EAAE,MAAM,KAAK;AAChC,CAAC;AAGM,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAA0B;AACxB,QAAM,aAAa,SAAS,aAAa,SAAS,YAAY,OAAO;AACrE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,WAAW,GAAG,yBAAyB,EAAE,KAAK,CAAC,GAAG,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAiC;AACpF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAuC;AAC3F,SACE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,mBAAmB,EAAE,WAAW,GAAG,MAAM,GAA0C;AACjG,SACE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AIvFM,IAAAC,uBAAA;AArBN,IAAM,aAAa;AAAA,EACjB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AACR;AAKO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgE;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAW,GAAG,yCAAyC,gBAAgB;AAAA,UAEtE;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAGO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAkE;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW,GAAG,mDAAmD,WAAW,IAAI,GAAG,SAAS;AAAA,MAC3F,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,mBAAmB,EAAE,WAAW,GAAG,MAAM,GAAmC;AAC1F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,0DAA0D,SAAS;AAAA,MAChF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAAiC;AACvF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAAgC;AACrF,SAAO,8CAAC,SAAI,aAAU,sBAAqB,WAAW,GAAG,aAAa,SAAS,GAAI,GAAG,OAAO;AAC/F;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAAsD;AACpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,WAAW;AAAA,MACzB,WAAW;AAAA,QACT;AAAA,QACA,UAAU,qBAAqB;AAAA,QAC/B;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACxFI,IAAAC,uBAAA;AAFG,SAAS,IAAI,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAiC;AAC9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,kCAAkC,SAAS;AAAA,MACxD,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC1BA,IAAAC,uBAA6B;AAoBvB,IAAAC,uBAAA;AAdC,SAAS,eAAe;AAAA,EAC7B,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,GAAwD;AACtD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,yDAAC,SAAI,WAAU,qGACb;AAAA,sDAAC,qCAAa,WAAU,gBAAe,eAAY,QAAO;AAAA,QAC1D,8CAAC,UAAM,iBAAM;AAAA,SACf;AAAA;AAAA,EACF;AAEJ;;;AC1BA,IAAAC,iCAOO;AAQH,IAAAC,uBAAA;AAJG,IAAM,cAAc,+BAAAC;AAEpB,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAyC;AACzF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,KAAuB,EAAE,WAAW,GAAG,MAAM,GAAiB;AAC5E,SAAO,8CAAC,+BAAAC,MAAA,EAAS,aAAU,QAAO,WAAW,GAAG,gBAAgB,SAAS,GAAI,GAAG,OAAO;AACzF;AAEO,SAAS,SAA2B,EAAE,WAAW,UAAU,GAAG,MAAM,GAAqB;AAC9F,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACZU,IAAAC,uBAAA;AAbH,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAoB;AAClB,SACE,8CAAC,QAAK,aAAU,eAAc,aAAW,MAAM,WAAW,GAAG,WAAW,SAAS,GAAI,GAAG,OACtF,yDAAC,eAAY,WAAU,0BACpB;AAAA,WACC,8CAAC,SAAI,aAAU,oBAAmB,WAAU,kCACzC,gBACH,IACE;AAAA,IACJ,+CAAC,SAAI,WAAU,WACb;AAAA,oDAAC,OAAE,aAAU,qBAAoB,WAAU,iCACxC,iBACH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAET;AAAA;AAAA,MACH;AAAA,MACC,cACC,8CAAC,OAAE,aAAU,2BAA0B,WAAU,sCAC9C,uBACH,IACE;AAAA,OACN;AAAA,KACF,GACF;AAEJ;;;ACvDA,IAAAC,iBAMO;AACP,IAAAC,iCAAsE;AAmFlE,IAAAC,uBAAA;AA9DJ,SAAS,aAAa,OAAe,QAAgB;AACnD,SAAO,MAAM,QAAQ,WAAW,EAAE,EAAE,MAAM,GAAG,MAAM;AACrD;AAEA,IAAM,mBAAe,2BAA4C,SAAS,SACxE;AAAA,EACE,SAAS;AAAA,EACT;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACA,cACA;AACA,QAAM,YAAY,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC;AAChD,QAAM,aAAa,UAAU;AAC7B,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,MAAM,aAAa,cAAc,SAAS,CAAC;AAC9F,QAAM,OAAO,aAAa,aAAa,QAAQ,eAAe,SAAS;AACvE,QAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,UAAU,GAAG,CAAC,GAAG,UAAU,YAAY,QAAQ,CAAC,EAAE;AACrF,QAAM,eAAW,uBAAyB,IAAI;AAC9C,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAC5C,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,yBAAS,CAAC;AACtD,QAAM,UAAU,MAAM,cAAc,MAAM,QAAQ,MAAM,cAAc,MAAM;AAC5E,QAAM,cACJ,KAAK,WAAW,YAAY,YAAY,IAAI,KAAK,IAAI,gBAAgB,KAAK,QAAQ,YAAY,CAAC;AAEjG,0CAAoB,cAAc,MAAM,SAAS,OAA2B;AAE5E,WAAS,gBAAgB,OAAyB;AAChD,sBAAkB,MAAM,kBAAkB,KAAK,MAAM;AAAA,EACvD;AAEA,WAAS,YAAY,UAAkB;AACrC,UAAM,YAAY,aAAa,UAAU,SAAS;AAClD,QAAI,CAAC,WAAY,kBAAiB,SAAS;AAC3C,QAAI,cAAc,KAAM;AACxB,eAAW,SAAS;AACpB,QAAI,UAAU,WAAW,UAAW,cAAa,SAAS;AAAA,EAC5D;AAEA,WAAS,kBAAkB,OAA0C;AACnE,QAAI,SAAU;AACd,UAAM,eAAe;AACrB,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,MAAO;AACZ,UAAM,SAAS,MAAM,cAAc,sBAAsB;AACzD,UAAM,SAAS,OAAO,QAAQ,KAAK,MAAM,UAAU,OAAO,QAAQ,OAAO,QAAQ;AACjF,UAAM,WAAW,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,SAAS,SAAS,GAAG,CAAC,GAAG,KAAK,MAAM;AAClF,UAAM,MAAM;AACZ,UAAM,kBAAkB,UAAU,QAAQ;AAC1C,sBAAkB,QAAQ;AAAA,EAC5B;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,iBAAe,YAAY;AAAA,MAC3B,gBAAc,WAAW;AAAA,MACzB,WAAW,GAAG,yCAAyC,SAAS;AAAA,MAChE,OAAO,EAAE,qBAAqB,UAAU,SAAS,uBAAuB;AAAA,MACxE,eAAe;AAAA,MAEf;AAAA;AAAA,UAAC,+BAAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,KAAK;AAAA,YACL,MAAK;AAAA,YACL,WAAW,MAAM,aAAa;AAAA,YAC9B,cAAc,MAAM,gBAAgB;AAAA,YACpC,SAAS,MAAM,WAAW;AAAA,YAC1B,WAAW;AAAA,YACX,OAAO;AAAA,YACP;AAAA,YACA,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YACA,UAAU,CAAC,UAAU;AACnB,0BAAY,MAAM,cAAc,KAAK;AACrC,8BAAgB,MAAM,aAAa;AAAA,YACrC;AAAA,YACA,SAAS,CAAC,UAAU;AAClB,yBAAW,IAAI;AACf,8BAAgB,MAAM,aAAa;AACnC,wBAAU,KAAK;AAAA,YACjB;AAAA,YACA,QAAQ,CAAC,UAAU;AACjB,yBAAW,KAAK;AAChB,uBAAS,KAAK;AAAA,YAChB;AAAA,YACA,UAAU,CAAC,UAAU;AACnB,8BAAgB,MAAM,aAAa;AACnC,yBAAW,KAAK;AAAA,YAClB;AAAA,YACA,SAAS,CAAC,UAAU;AAClB,8BAAgB,MAAM,aAAa;AACnC,wBAAU,KAAK;AAAA,YACjB;AAAA;AAAA,QACF;AAAA,QACC,MAAM,IAAI,CAAC,MAAM,UAChB;AAAA,UAAC;AAAA;AAAA,YAEC,eAAY;AAAA,YACZ,aAAU;AAAA,YACV,eAAc,WAAW,UAAU,eAAgB;AAAA,YACnD,WAAW;AAAA,cACT;AAAA,cACA,WAAW,UAAU,eAAe;AAAA,cACpC,WAAW;AAAA,cACX,YAAY;AAAA,YACd;AAAA,YAEC,eAAK,KAAK,KAAK;AAAA;AAAA,UAXX;AAAA,QAYP,CACD;AAAA;AAAA;AAAA,EACH;AAEJ,CAAC;AAGM,IAAMC,YAAW;;;ACrJpB,IAAAC,uBAAA;AAFG,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAmC;AAClF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtF,SAAO,8CAAC,SAAI,aAAU,uBAAsB,WAAW,GAAG,WAAW,SAAS,GAAI,GAAG,OAAO;AAC9F;AACO,SAAS,gBAAgB,EAAE,WAAW,UAAU,GAAG,MAAM,GAA+B;AAC7F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6DAA6D,SAAS;AAAA,MACnF,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AACO,SAAS,sBAAsB,EAAE,WAAW,GAAG,MAAM,GAA8B;AACxF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAAgC;AACtF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;;;AChDA,IAAAC,uBAA0C;AAC1C,IAAAC,SAAuB;AAmDjB,IAAAC,uBAAA;AA9BN,SAAS,aAAa,MAAc,WAAmB,cAAsB;AAC3E,SAAO;AAAA,IACL,GAAG,oBAAI,IAAI;AAAA,MACT;AAAA,MACA,GAAG,MAAM,KAAK,EAAE,QAAQ,eAAe,IAAI,EAAE,GAAG,CAAC,GAAG,UAAU,OAAO,eAAe,KAAK;AAAA,MACzF;AAAA,IACF,CAAC;AAAA,EACH,EACG,OAAO,CAAC,SAAS,QAAQ,KAAK,QAAQ,SAAS,EAC/C,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK;AACvC;AAGO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,eAAe;AAAA,EACf;AACF,GAAoB;AAClB,MAAI,aAAa,EAAG,QAAO;AAC3B,QAAM,QAAQ,aAAa,MAAM,WAAW,YAAY;AAExD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY;AAAA,MACZ,WAAW,GAAG,qDAAqD,SAAS;AAAA,MAE5E;AAAA,sDAAC,OAAE,WAAU,iCAAiC,qBAAW,aAAU,IAAI,OAAO,SAAS,IAAG;AAAA,QAC1F,+CAAC,SAAI,WAAU,2BACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,cAAW;AAAA,cACX,YAAY,QAAQ;AAAA,cACpB,SAAS,MAAM,aAAa,OAAO,CAAC;AAAA,cACpC,MAAK;AAAA,cACL,SAAQ;AAAA,cAER,wDAAC,oCAAY;AAAA;AAAA,UACf;AAAA,UACC,MAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,kBAAM,eAAe,MAAM,QAAQ,CAAC;AACpC,mBACE,+CAAO,iBAAN,EACE;AAAA,+BAAiB,UAAa,OAAO,eAAe,IACnD,8CAAC,UAAK,eAAY,QAAO,WAAU,8BAA6B,oBAEhE,IACE;AAAA,cACJ;AAAA,gBAAC;AAAA;AAAA,kBACC,gBAAc,SAAS,OAAO,SAAS;AAAA,kBACvC,cAAY,aAAU,IAAI;AAAA,kBAC1B,SAAS,MAAM,aAAa,IAAI;AAAA,kBAChC,MAAK;AAAA,kBACL,SAAS,SAAS,OAAO,cAAc;AAAA,kBAEtC;AAAA;AAAA,cACH;AAAA,iBAdmB,IAerB;AAAA,UAEJ,CAAC;AAAA,UACD;AAAA,YAAC;AAAA;AAAA,cACC,cAAW;AAAA,cACX,YAAY,QAAQ;AAAA,cACpB,SAAS,MAAM,aAAa,OAAO,CAAC;AAAA,cACpC,MAAK;AAAA,cACL,SAAQ;AAAA,cAER,wDAAC,qCAAa;AAAA;AAAA,UAChB;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC/FA,IAAAC,iCAKO;AAgBH,IAAAC,uBAAA;AALG,IAAM,iBAAiB,+BAAAC;AAGvB,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAwB;AAC3E,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAmBO,SAASC,SAAQ,OAAqB;AAC3C,MAAI,EAAE,aAAa,OAAQ,QAAO,8CAAC,kBAAgB,GAAG,OAAO;AAE7D,QAAM,EAAE,UAAU,SAAS,cAAc,aAAa,QAAQ,cAAc,GAAG,aAAa,IAC1F;AACF,QAAM,iBACJ,OAAO,YAAY,WAAW,8CAAC,UAAQ,GAAG,cAAe,mBAAQ,IAAY;AAE/E,SACE,+CAAC,kBAAe,aAA0B,QAAgB,cACvD;AAAA;AAAA,IACD,8CAAC,kBAAgB,GAAG,cAAe,UAAS;AAAA,KAC9C;AAEJ;;;ACjEA,IAAAC,wBAA4B;AAC5B,IAAAC,iCAMO;AAgCD,IAAAC,uBAAA;AApBC,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,GAAG;AACL,GAAuB;AACrB,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,QAAC,+BAAAC;AAAA,QAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV;AAAA;AAAA,cAAC,+BAAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,cAAY;AAAA,gBACZ,aAAU;AAAA,gBACV,WAAU;AAAA,gBAEV,wDAAC,+BAAM,eAAY,QAAO,WAAU,UAAS;AAAA;AAAA,YAC/C;AAAA,YACA;AAAA,cAAC,+BAAAC;AAAA,cAAA;AAAA,gBACC,aAAU;AAAA,gBACV,WAAW;AAAA,kBACT;AAAA,kBACA;AAAA,gBACF;AAAA;AAAA,YACF;AAAA,YACA;AAAA,cAAC,+BAAAD;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,cAAY;AAAA,gBACZ,aAAU;AAAA,gBACV,WAAU;AAAA,gBAEV,wDAAC,8BAAK,eAAY,QAAO,WAAU,UAAS;AAAA;AAAA,YAC9C;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;ACrEA,IAAAE,wBAA4B;AAC5B,IAAAC,iCAWO;AAoBC,IAAAC,uBAAA;AAfD,IAAM,SAAS,+BAAAC;AAIf,SAAS,cAAc,EAAE,WAAW,UAAU,GAAG,MAAM,GAAgB;AAC5E,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,WAAC,UACA,gFACG;AAAA,eAAO,aAAa,aAAa,SAAS,KAAK,IAAI;AAAA,QACpD;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA;AAAA,QACZ;AAAA,SACF;AAAA;AAAA,EAEJ;AAEJ;AAGO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAiD;AACjG,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,0DAA0D,SAAS;AAAA,MAChF,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAyC;AAC3F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,WAA6B,EAAE,WAAW,GAAG,MAAM,GAAoB;AACrF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,WAA6B;AAAA,EAC3C;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AChGA,IAAAC,wBAAsB;AAEtB,IAAAC,iCAUO;AAME,IAAAC,uBAAA;AADT,SAAS,aAAa,EAAE,GAAG,MAAM,GAA+B;AAC9D,SAAO,8CAAC,+BAAAC,eAAA,EAAsB,aAAU,iBAAiB,GAAG,OAAO;AACrE;AAEA,SAAS,WAAW,EAAE,WAAW,UAAU,WAAW,OAAO,WAAW,GAAG,MAAM,GAAgB;AAC/F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGG;AACD,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAGA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,GAAG;AACL,GAMK;AACH,SACE,8CAAC,gBAAc,GAAG,OAChB;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,QAAC,+BAAAC;AAAA,QAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAET;AAAA;AAAA,YACA,mBACC,+CAAC,cAAW,SAAQ,SAAQ,WAAU,0BAAyB,MAAK,WAClE;AAAA,4DAAC,+BAAM;AAAA,cACP,8CAAC,UAAK,WAAU,WAAU,oBAAM;AAAA,eAClC;AAAA;AAAA;AAAA,MAEJ;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,GAAG;AACL,GAGG;AACD,SACE,8CAAC,SAAM,WAAsB,MAAY,iBAAmC,GAAG,OAC5E,UACH;AAEJ;AAeA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAgB;AACd,QAAM,iBACJ,OAAO,YAAY,WAAW,8CAAC,UAAQ,GAAG,cAAe,mBAAQ,IAAY;AAE/E,SACE,+CAAC,gBAAa,aAA0B,QAAgB,cACrD;AAAA;AAAA,IACD,8CAAC,gBAAc,GAAG,cAAe,UAAS;AAAA,KAC5C;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6BAA6B,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mCAAmC,SAAS;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAuD;AAC/F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,yCAAyC,SAAS;AAAA,MAC/D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAAoD;AAClD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAGA,IAAM,gBAAgB;AAEtB,IAAM,gBAAgB;AAEtB,IAAM,cAAc;AAEpB,IAAM,eAAe;AAErB,IAAM,eAAe;AAErB,IAAM,cAAc;AAEpB,IAAM,oBAAoB;;;AChN1B,IAAAC,wBAA4D;AAC5D,IAAAC,iBAAkD;AAClD,IAAAC,iCAAqC;;;ACFrC,IAAAC,iBAA0C;AAQnC,IAAM,qBAAiB,8BAA0C,IAAI;AAErE,SAAS,aAAa;AAC3B,QAAM,cAAU,2BAAW,cAAc;AACzC,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,gDAAgD;AAC9E,SAAO;AACT;;;ADWS,IAAAC,uBAAA;AAhBF,SAAS,gBAAgB;AAAA,EAC9B,mBAAmB;AAAA,EACnB;AACF,GAGG;AACD,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,gBAAgB;AAC3D,QAAM,YAAQ;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,QAAQ,MAAM,aAAa,CAAC,YAAY,CAAC,OAAO;AAAA,IAClD;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AACA,SAAO,8CAAC,eAAe,UAAf,EAAwB,OAAe,UAAS;AAC1D;AAGO,SAAS,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC9E,QAAM,EAAE,UAAU,IAAI,WAAW;AACjC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,kBAAgB,aAAa;AAAA,MAC7B,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAClF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,qCAAqC,SAAS;AAAA,MAC3D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,cAAc;AAAA,EAC5B,QAAQ;AAAA,EACR,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAA2E;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,sDAAC,gCAAO,WAAU,mBAAkB;AAAA,QACpC,8CAAC,UAAK,WAAU,oBAAoB,iBAAM;AAAA,QAC1C,8CAAC,SAAI,WAAU,kFACZ,oBACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAgC;AACnF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAW;AAAA,MACX,WAAW,GAAG,4CAA4C,SAAS;AAAA,MAClE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAClF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,0DAA0D,SAAS;AAAA,MAChF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,QAAM,EAAE,UAAU,IAAI,WAAW;AACjC,SACE,+CAAC,aAAQ,aAAU,iBAAgB,WAAW,GAAG,kBAAkB,SAAS,GAAI,GAAG,OAChF;AAAA,aACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,aAAa;AAAA,QACf;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IAED;AAAA,KACH;AAEJ;AAQO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,QAAM,EAAE,UAAU,IAAI,WAAW;AACjC,QAAM,UAAU,OAAO,aAAa,aAAa,QAAS,YAAY;AACtE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,SAAS,SAAS;AAAA,MAChC,cAAY,aAAa,QAAQ,QAAQ;AAAA,MACzC,WAAW;AAAA,QACT;AAAA,QACA,aAAa;AAAA,QACb,OAAO,cAAc,aAAa,YAAY;AAAA,MAChD;AAAA,MACC,GAAG;AAAA,MAEH,WAAC,WACA,gFACE;AAAA,sDAAC,UAAK,WAAU,oDAAoD,gBAAK;AAAA,QACzE,8CAAC,UAAK,WAAW,GAAG,2BAA2B,aAAa,SAAS,GAClE,iBAAO,aAAa,aAAa,SAAS,MAAM,IAAI,SACvD;AAAA,QACC,SAAS,CAAC,aAAa,8CAAC,UAAK,WAAU,iCAAiC,iBAAM;AAAA,SACjF;AAAA;AAAA,EAEJ;AAEJ;AAEO,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAA+B;AACpF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,gCAAgC,SAAS;AAAA,MACtD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAAgB;AACnE,QAAM,EAAE,WAAW,OAAO,IAAI,WAAW;AACzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,YAAY,2BAAwB;AAAA,MAChD,SAAS;AAAA,MACT,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,WAAW,GAAG,WAAW,SAAS;AAAA,MACjC,GAAG;AAAA,MAEH,sBAAY,8CAAC,sCAAa,IAAK,8CAAC,qCAAY;AAAA;AAAA,EAC/C;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAmC;AACnF,QAAM,EAAE,OAAO,IAAI,WAAW;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgB;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,WAAW,GAAG,UAAU,SAAS;AAAA,MAChC,GAAG;AAAA,MAEJ,wDAAC,kCAAS;AAAA;AAAA,EACZ;AAEJ;;;AErNI,IAAAC,uBAAA;AAFG,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,aAAU;AAAA,MACV,WAAW,GAAG,qCAAqC,SAAS;AAAA,MAC3D,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACdA,IAAAC,wBAA6B;AAC7B,IAAAC,iBAAqD;AAErD,uBAA8B;AA+DtB,IAAAC,uBAAA;AA3DR,SAAS,UAAU,KAA+C,MAAgC;AAChG,MAAI,OAAO,QAAQ,YAAY;AAC7B,QAAI,IAAI;AAAA,EACV,WAAW,KAAK;AACd,QAAI,UAAU;AAAA,EAChB;AACF;AAaO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,KAAK;AAAA,EACL,OAAO;AAAA,EACP,GAAG;AACL,GAAsB;AACpB,QAAM,EAAE,QAAQ,QAAI,gCAAc;AAClC,QAAM,OAAO,WAAW;AACxB,QAAM,QAAQ,gBAAgB,gBAAgB;AAC9C,QAAM,gBAAY,uBAA0B,IAAI;AAChD,QAAM,mBAAe;AAAA,IACnB,CAAC,SAAmC;AAClC,gBAAU,UAAU;AACpB,gBAAU,cAAc,IAAI;AAAA,IAC9B;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,sCAAgB,MAAM;AACpB,UAAM,SAAS,UAAU;AACzB,QAAI,CAAC,OAAQ;AAEb,QAAI,KAAM,QAAO,aAAa,aAAa,MAAM;AAAA,QAC5C,QAAO,gBAAgB,WAAW;AAAA,EACzC,GAAG,CAAC,IAAI,CAAC;AAET,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACA,YAAY,QAAQ;AAAA,MACpB,aAAW,QAAQ;AAAA,MAClB,GAAG;AAAA,MAEH,iBACC,gFACE;AAAA,sDAAC,sCAAa,eAAY,QAAO,WAAU,yBAAwB;AAAA,QAClE;AAAA,SACH,IAEA;AAAA;AAAA,EAEJ;AAEJ;;;ACzEA,IAAAC,iBAAkD;AAClD,IAAAC,iCAA0E;AA6GhE,IAAAC,uBAAA;AAzGV,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,IACF,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACxB;AAAA,EACA,IAAI;AAAA,IACF,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACxB;AAAA,EACA,IAAI;AAAA,IACF,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACxB;AACF;AAWO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAgB;AACd,QAAM,SAAS,YAAY,IAAI;AAC/B,QAAM,uBAAmB,uBAAyB,IAAI;AACtD,QAAM,mBAAmB,YAAY;AAErC,gCAAU,MAAM;AACd,UAAM,QAAQ,iBAAiB;AAC/B,QAAI,CAAC,MAAO;AAEZ,UAAM,uBAAuB,CAAC,UAAyB;AACrD,UACE,MAAM,WAAW,SACjB,MAAM,oBACN,cACA,cACA,MAAM,UACN,MAAM,WACN,MAAM,WACN,MAAM;AAEN;AAEF,YAAM,eACJ,MAAM,QAAQ,eAAe,OAAO,MAAM,QAAQ,cAAc,QAAQ;AAC1E,UAAI,iBAAiB,KAAM;AAE3B,YAAM,eAAe;AACrB,UAAI,MAAM,YAAY,aAAc,OAAM,MAAM;AAAA,IAClD;AAEA,UAAM,gBAAgB,MAAM;AAC5B,kBAAc,iBAAiB,WAAW,oBAAoB;AAC9D,WAAO,MAAM,cAAc,oBAAoB,WAAW,oBAAoB;AAAA,EAChF,GAAG,CAAC,YAAY,YAAY,gBAAgB,CAAC;AAE7C,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH,WAAC,UAAU;AACV,cAAM,iBAAiB,MAAM;AAC7B,cAAM,cAAc,MAAM,aACtB,iBACE,OAAO,uBACP,OAAO,iBACT;AAEJ,eACE,gFACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,eAAY;AAAA,cACZ,aAAU;AAAA,cACV,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,OAAO;AAAA,cACT;AAAA,cAEA;AAAA,gBAAC;AAAA;AAAA,kBACC,aAAU;AAAA,kBACV,OAAO;AAAA,oBACL,WAAW,eAAe,WAAW;AAAA,oBACrC,OAAO,iBAAiB,OAAO,cAAc,OAAO;AAAA,kBACtD;AAAA,kBACA,WAAW;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA,OAAO;AAAA,kBACT;AAAA,kBAEC,gBAAM,aAAc,gBAAgB,OAAQ;AAAA;AAAA,cAC/C;AAAA;AAAA,UACF;AAAA,UACC,YAAY,cACX,+CAAC,UAAK,WAAU,8BACb;AAAA,uBACC,8CAAC,UAAK,aAAU,gBAAe,WAAU,eACtC,iBAAO,aAAa,aAAa,SAAS,KAAK,IAAI,UACtD,IACE;AAAA,YACH,cACC;AAAA,cAAC;AAAA;AAAA,gBACC,aAAU;AAAA,gBACV,WAAU;AAAA,gBAET;AAAA;AAAA,YACH,IACE;AAAA,aACN,IACE;AAAA,WACN;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;AC7JM,IAAAC,uBAAA;AAHC,SAAS,MAAM,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC5E,SACE,8CAAC,SAAI,aAAU,mBAAkB,WAAU,mCACzC;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAClF,SAAO,8CAAC,WAAM,aAAU,gBAAe,WAAW,GAAG,mBAAmB,SAAS,GAAI,GAAG,OAAO;AACjG;AACO,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAkC;AAChF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC5E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,oEAAoE,SAAS;AAAA,MAC1F,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAoC;AACrF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAClF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACnFA,IAAAC,iCAYO;AAWH,IAAAC,uBAAA;AAFG,SAAS,KAAK,EAAE,WAAW,GAAG,MAAM,GAAkB;AAC3D,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAW,mDAAmB,WAAW,CAAC,UAAU,GAAG,uBAAuB,KAAK,CAAC;AAAA,MACnF,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,SAA2B,EAAE,WAAW,GAAG,MAAM,GAAwB;AACvF,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QAAmB;AAAA,QAAW,CAAC,UACxC;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAiB;AACjE,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QAAmB;AAAA,QAAW,CAAC,UACxC;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAGO,SAAS,WAA6B,EAAE,WAAW,GAAG,MAAM,GAA0B;AAC3F,SAAO,8CAAC,+BAAAC,WAAA,EAAc,aAAU,eAAc,WAAW,GAAG,WAAW,SAAS,GAAI,GAAG,OAAO;AAChG;AAGO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAsB;AACtE,SACE;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QAAmB;AAAA,QAAW,CAAC,UACxC,GAAG,kFAAkF,KAAK;AAAA,MAC5F;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AC/EA,IAAAC,iBAA0C;AAC1C,IAAAC,gBAA+C;;;ACD/C,mBAAsB;AAYtB,SAAS,eAAe,EAAE,OAAO,aAAa,UAAU,UAAU,OAAO,GAAiB;AACxF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,aAAa,IAAI,OAAO;AAAA,IAClC;AAAA,IACA,QAAQ,SAAS,EAAE,OAAO,OAAO,OAAO,SAAS,OAAO,QAAQ,IAAI;AAAA,EACtE;AACF;AAEA,SAAS,OAAO,SAAuB;AACrC,QAAM,eAAe,eAAe,OAAO;AAC3C,MAAI,QAAQ,OAAQ,QAAO,mBAAM,OAAO,YAAY;AACpD,MAAI,QAAQ,YAAY,UAAW,QAAO,mBAAM,QAAQ,YAAY;AACpE,MAAI,QAAQ,YAAY,QAAS,QAAO,mBAAM,MAAM,YAAY;AAChE,MAAI,QAAQ,YAAY,UAAW,QAAO,mBAAM,QAAQ,YAAY;AACpE,MAAI,QAAQ,YAAY,OAAQ,QAAO,mBAAM,KAAK,YAAY;AAC9D,SAAO,mBAAM,KAAK,YAAY;AAChC;AAEO,IAAM,QAAQ,OAAO,OAAO,CAAC,YAA0B,OAAO,OAAO,GAAG;AAAA,EAC7E,SAAS,CAAC,OAAe,YACvB,OAAO,EAAE,GAAG,SAAS,OAAO,SAAS,UAAU,CAAC;AAAA,EAClD,OAAO,CAAC,OAAe,YACrB,OAAO,EAAE,GAAG,SAAS,OAAO,SAAS,QAAQ,CAAC;AAAA,EAChD,SAAS,CAAC,OAAe,YACvB,OAAO,EAAE,GAAG,SAAS,OAAO,SAAS,UAAU,CAAC;AAAA,EAClD,MAAM,CAAC,OAAe,YACpB,OAAO,EAAE,GAAG,SAAS,OAAO,SAAS,OAAO,CAAC;AAAA,EAC/C,SAAS,CAAC,OAAe,mBAAM,QAAQ,EAAE;AAAA,EACzC,SAAS,CAAI,SAAqB,YAAoC;AACpE,UAAM,SAAS,EAAE,aAAa,QAAQ,aAAa,UAAU,QAAQ,SAAS;AAC9E,WAAO,mBAAM,QAAQ,SAAS;AAAA,MAC5B,SAAS,EAAE,GAAG,QAAQ,OAAO,QAAQ,QAAQ;AAAA,MAC7C,SAAS,CAAC,WAAW;AAAA,QACnB,GAAG;AAAA,QACH,OAAO,OAAO,QAAQ,YAAY,aAAa,QAAQ,QAAQ,KAAK,IAAI,QAAQ;AAAA,MAClF;AAAA,MACA,OAAO,CAAC,WAAW;AAAA,QACjB,GAAG;AAAA,QACH,OAAO,OAAO,QAAQ,UAAU,aAAa,QAAQ,MAAM,KAAK,IAAI,QAAQ;AAAA,MAC9E;AAAA,MACA,UAAU,QAAQ;AAAA,IACpB,CAAC;AAAA,EACH;AACF,CAAC;AAEM,SAAS,WAAW;AACzB,SAAO;AACT;;;ADpCI,IAAAC,uBAAA;AAFG,SAAS,cAAc,EAAE,SAAS,GAA4B;AACnE,SACE,gFACG;AAAA;AAAA,IACD,8CAAC,WAAQ;AAAA,KACX;AAEJ;AAGO,SAAS,QAAQ,EAAE,SAAS,GAAiC;AAClE,SAAO,8CAAC,cAAAC,SAAA,EAAa,UAAoB,SAAS,EAAE,MAAM,sBAAsB,GAAG;AACrF;AAEO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,OAAK;AACL,MAAI,mBAAmB,oBAAoB,SAAU,QAAO;AAC5D,SAAO,8CAAC,WAAQ,UAAoB;AACtC;AAEO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AACF,GAA2C;AACzC,gCAAU,MAAM;AACd,QAAI,UAAU,OAAQ;AACtB,UAAM,UAAU,MAAM,EAAE,OAAO,aAAa,SAAS,QAAQ,UAAU,SAAS,CAAC;AACjF,WAAO,MAAM;AACX,0BAAM,QAAQ,OAAO;AACrB,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,QAAQ,aAAa,UAAU,IAAI,WAAW,UAAU,OAAO,OAAO,OAAO,CAAC;AAClF,SAAO;AACT;;;AEjEI,IAAAC,uBAAA;AAFG,SAAS,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC5E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,qCAAqC,SAAS;AAAA,MAC3D,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AACjF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,MACjD,GAAG;AAAA;AAAA,EACN;AAEJ;AACO,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAgC;AAClF,SAAO,8CAAC,SAAI,eAAY,QAAO,WAAW,GAAG,0BAA0B,SAAS,GAAI,GAAG,OAAO;AAChG;","names":["FieldError","Input","Label","OtpInput","Popover","Textarea","import_react","import_react","AccordionPrimitive","AccordionItemPrimitive","AccordionHeaderPrimitive","AccordionTriggerPrimitive","AccordionContentPrimitive","React","import_react_aria_components","import_react","import_react_aria_components","import_class_variance_authority","import_jsx_runtime","ButtonPrimitive","LinkPrimitive","import_lucide_react","React","import_react_aria_components","import_jsx_runtime","AriaDialog","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react_aria_components","import_class_variance_authority","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaBreadcrumbs","AriaBreadcrumb","AriaLink","import_react_aria_components","import_jsx_runtime","SeparatorPrimitive","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_react_aria_components","import_jsx_runtime","AriaCheckbox","React","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","AriaComboBox","AriaComboBox","import_react_aria_components","import_jsx_runtime","AriaComboBox","AriaInput","import_jsx_runtime","import_lucide_react","import_react_aria_components","import_jsx_runtime","DisclosureButton","import_lucide_react","import_jsx_runtime","import_class_variance_authority","import_lucide_react","React","import_react_aria_components","import_jsx_runtime","MenuTriggerPrimitive","PopoverPrimitive","MenuPrimitive","MenuSectionPrimitive","HeaderPrimitive","MenuItemPrimitive","className","children","SubmenuTriggerPrimitive","SeparatorPrimitive","import_class_variance_authority","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","Label","LabelPrimitive","import_class_variance_authority","import_jsx_runtime","Label","FieldError","import_lucide_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react_aria_components","import_react_aria_components","import_jsx_runtime","TooltipTriggerPrimitive","TooltipPrimitive","placement","import_jsx_runtime","import_class_variance_authority","import_react","import_react_aria_components","import_jsx_runtime","Input","AriaInput","import_react","import_react_aria_components","import_jsx_runtime","AriaTextArea","Textarea","import_class_variance_authority","import_jsx_runtime","Input","Textarea","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaMenuTrigger","AriaMenu","AriaMenuItem","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","AriaInput","OtpInput","import_jsx_runtime","import_lucide_react","React","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaDialogTrigger","AriaPopover","Popover","import_lucide_react","import_react_aria_components","import_jsx_runtime","AriaNumberField","AriaGroup","AriaButton","AriaInput","import_lucide_react","import_react_aria_components","import_jsx_runtime","AriaSelect","AriaButton","AriaSelectValue","import_lucide_react","import_react_aria_components","import_jsx_runtime","SheetTriggerPrimitive","ModalOverlayPrimitive","ModalPrimitive","SheetPrimitive","import_lucide_react","import_react","import_react_aria_components","import_react","import_jsx_runtime","import_jsx_runtime","import_lucide_react","import_react","import_jsx_runtime","import_react","import_react_aria_components","import_jsx_runtime","AriaSwitch","import_jsx_runtime","import_react_aria_components","import_jsx_runtime","AriaTabs","AriaTabList","AriaTab","AriaTabPanels","AriaTabPanel","import_react","import_sileo","import_jsx_runtime","SileoToaster","import_jsx_runtime"]}
|