@juanarenas31/metrik-ui 0.2.0
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/LICENSE +15 -0
- package/README.md +268 -0
- package/dist/index.d.ts +646 -0
- package/dist/index.js +2244 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +57 -0
- package/dist/tailwind-preset.d.ts +13 -0
- package/dist/tailwind-preset.js +87 -0
- package/dist/tailwind-preset.js.map +1 -0
- package/dist/tokens.css +141 -0
- package/package.json +101 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/cn.ts","../src/components/accordion/accordion.tsx","../src/components/alert/alert.variants.ts","../src/components/alert/alert.tsx","../src/components/button/button.variants.ts","../src/components/alert-dialog/alert-dialog.tsx","../src/components/avatar/avatar.tsx","../src/components/badge/badge.variants.ts","../src/components/badge/badge.tsx","../src/components/breadcrumb/breadcrumb.tsx","../src/components/button/button.tsx","../src/components/calendar/calendar.tsx","../src/components/card/card.tsx","../src/components/checkbox/checkbox.tsx","../src/components/chip-selector/chip-selector.tsx","../src/components/collapsible/collapsible.tsx","../src/components/dialog/dialog.tsx","../src/components/command/command.tsx","../src/components/popover/popover.tsx","../src/components/combobox/combobox.tsx","../src/components/context-menu/context-menu.tsx","../src/components/date-range-pill/date-range-pill.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/empty-state/empty-state.tsx","../src/components/file-dropzone/file-dropzone.tsx","../src/components/floating/floating.tsx","../src/components/label/label.tsx","../src/components/form/form.tsx","../src/components/hover-card/hover-card.tsx","../src/components/input/input.variants.ts","../src/components/input/input.tsx","../src/components/pagination/pagination.tsx","../src/components/progress/progress.tsx","../src/components/radio-group/radio-group.tsx","../src/components/rich-text-editor/rich-text-editor.tsx","../src/components/scroll-area/scroll-area.tsx","../src/components/select/select.tsx","../src/components/separator/separator.tsx","../src/components/sheet/sheet.tsx","../src/components/skeleton/skeleton.tsx","../src/components/slider/slider.tsx","../src/hooks/use-theme.ts","../src/components/sonner/sonner.tsx","../src/components/spinner/spinner.tsx","../src/components/switch/switch.tsx","../src/components/table/table.tsx","../src/components/tabs/tabs.tsx","../src/components/textarea/textarea.tsx","../src/components/toggle/toggle.variants.ts","../src/components/toggle/toggle.tsx","../src/components/toggle-group/toggle-group.tsx","../src/components/tooltip/tooltip.tsx","../src/components/visually-hidden/visually-hidden.tsx","../src/hooks/use-disclosure.ts","../src/hooks/use-media-query.ts","../src/hooks/use-debounce.ts","../src/hooks/use-local-storage.ts","../src/hooks/use-click-outside.ts","../src/hooks/use-toggle.ts"],"names":["AccordionItem","AccordionTrigger","AccordionContent","jsx","forwardRef","Alert","jsxs","AlertTitle","AlertDescription","AlertDialogOverlay","AlertDialogContent","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","Avatar","AvatarImage","AvatarFallback","Badge","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","Button","Slot","ChevronRight","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Checkbox","ChipSelector","Check","CollapsibleContent","DialogOverlay","DialogContent","X","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","PopoverContent","Combobox","ContextMenuContent","ContextMenuItem","ContextMenuCheckboxItem","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuSubTrigger","ContextMenuSubContent","DateRangePill","DropdownMenuContent","DropdownMenuItem","DropdownMenuCheckboxItem","DropdownMenuRadioItem","Circle","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuSubTrigger","DropdownMenuSubContent","EmptyState","FileDropzone","useState","FileIcon","FloatingInput","useId","FloatingTextarea","FloatingSelect","FloatingFileInput","FloatingDatePicker","fmt","Label","Form","FormField","FormLabel","FormControl","HoverCardContent","Input","PaginationContent","PaginationItem","ChevronLeft","MoreHorizontal","Progress","RadioGroup","RadioGroupItem","RichTextEditor","ScrollArea","ScrollBar","SelectTrigger","ChevronDown","SelectContent","SelectLabel","SelectItem","SelectSeparator","Separator","DialogPrimitive2","SheetOverlay","SheetContent","SheetTitle","SheetDescription","Skeleton","Slider","useEffect","SonnerToaster","Spinner","Switch","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TabsList","TabsTrigger","TabsContent","Textarea","Toggle","createContext","ToggleGroup","ToggleGroupItem","useContext","TooltipContent","useCallback"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Combina clases de Tailwind resolviendo conflictos.\n * @example cn(\"px-2 py-1\", isActive && \"bg-primary\", className)\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Accordion = AccordionPrimitive.Root;\n\nexport const AccordionItem = forwardRef<\n ElementRef<typeof AccordionPrimitive.Item>,\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(function AccordionItem({ className, ...props }, ref) {\n return <AccordionPrimitive.Item ref={ref} className={cn(\"border-b border-border\", className)} {...props} />;\n});\n\nexport const AccordionTrigger = forwardRef<\n ElementRef<typeof AccordionPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(function AccordionTrigger({ className, children, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between gap-4 py-4 text-left text-sm font-medium text-fg\",\n \"transition-colors duration-fast hover:text-primary\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"size-4 shrink-0 text-fg-muted transition-transform duration-base\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n});\n\nexport const AccordionContent = forwardRef<\n ElementRef<typeof AccordionPrimitive.Content>,\n ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(function AccordionContent({ className, children, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm text-fg-muted\",\n \"data-[state=open]:animate-[metrik-acc-down_var(--metrik-duration-base)_var(--metrik-ease)]\",\n \"data-[state=closed]:animate-[metrik-acc-up_var(--metrik-duration-base)_var(--metrik-ease)]\",\n )}\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n});\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"metrik-accordion-anim\")) {\n const style = document.createElement(\"style\");\n style.id = \"metrik-accordion-anim\";\n style.textContent =\n \"@keyframes metrik-acc-down{from{height:0}to{height:var(--radix-accordion-content-height)}}\" +\n \"@keyframes metrik-acc-up{from{height:var(--radix-accordion-content-height)}to{height:0}}\";\n document.head.appendChild(style);\n}\n","import { cva, type VariantProps } from \"../../lib\";\n\nexport const alertVariants = cva(\n [\n \"relative flex w-full gap-3 rounded-md border-l-4 px-4 py-3\",\n \"text-sm\",\n \"[&>svg]:size-5 [&>svg]:shrink-0 [&>svg]:mt-0.5\",\n ],\n {\n variants: {\n tone: {\n info: \"border-fg-muted bg-surface-muted text-fg\",\n success: \"border-success bg-success-soft text-fg\",\n warning: \"border-warning bg-warning-soft text-fg\",\n danger: \"border-danger bg-danger-soft text-fg\",\n },\n },\n defaultVariants: { tone: \"info\" },\n },\n);\n\nexport type AlertVariants = VariantProps<typeof alertVariants>;\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { Info, CheckCircle2, AlertTriangle, AlertOctagon } from \"lucide-react\";\nimport { cn } from \"../../lib\";\nimport { alertVariants, type AlertVariants } from \"./alert.variants\";\n\nexport interface AlertProps extends HTMLAttributes<HTMLDivElement>, AlertVariants {\n icon?: React.ReactNode | false;\n}\n\nconst DEFAULT_ICONS = {\n info: <Info />,\n success: <CheckCircle2 />,\n warning: <AlertTriangle />,\n danger: <AlertOctagon />,\n} as const;\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { className, tone = \"info\", icon, children, ...props },\n ref,\n) {\n const renderIcon = icon === false ? null : (icon ?? DEFAULT_ICONS[tone ?? \"info\"]);\n return (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ tone }), className)} {...props}>\n {renderIcon}\n <div className=\"flex-1\">{children}</div>\n </div>\n );\n});\n\nexport const AlertTitle = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n function AlertTitle({ className, ...props }, ref) {\n return <div ref={ref} className={cn(\"font-semibold leading-tight mb-1\", className)} {...props} />;\n },\n);\n\nexport const AlertDescription = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n function AlertDescription({ className, ...props }, ref) {\n return <div ref={ref} className={cn(\"text-fg-muted leading-snug\", className)} {...props} />;\n },\n);\n","import { cva, type VariantProps } from \"../../lib\";\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium\",\n \"rounded-md ring-offset-bg transition-colors duration-fast\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n ],\n {\n variants: {\n variant: {\n primary: \"bg-primary text-primary-fg hover:bg-primary-hover\",\n secondary: \"bg-surface-muted text-fg hover:bg-border\",\n outline: \"border border-border-strong bg-transparent text-fg hover:bg-surface-muted\",\n ghost: \"bg-transparent text-fg hover:bg-surface-muted\",\n danger: \"bg-danger text-white hover:bg-coral-700\",\n link: \"bg-transparent text-primary underline-offset-4 hover:underline\",\n },\n size: {\n sm: \"h-8 px-3 text-xs [&_svg]:size-3.5\",\n md: \"h-10 px-4 text-sm [&_svg]:size-4\",\n lg: \"h-12 px-6 text-base [&_svg]:size-5\",\n icon: \"size-10 [&_svg]:size-4\",\n },\n fullWidth: { true: \"w-full\" },\n },\n defaultVariants: { variant: \"primary\", size: \"md\" },\n },\n);\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n","import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\nimport { buttonVariants } from \"../button/button.variants\";\n\nexport const AlertDialog = AlertDialogPrimitive.Root;\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nexport const AlertDialogOverlay = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(function AlertDialogOverlay({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-overlay bg-slate-950/50 backdrop-blur-sm\",\n \"data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const AlertDialogContent = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Content>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(function AlertDialogContent({ className, ...props }, ref) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-modal w-full max-w-md -translate-x-1/2 -translate-y-1/2\",\n \"rounded-lg border border-border bg-surface p-6 shadow-lg\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n});\n\nexport function AlertDialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)} {...props} />;\n}\n\nexport function AlertDialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(\"mt-5 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)} {...props} />\n );\n}\n\nexport const AlertDialogTitle = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(function AlertDialogTitle({ className, ...props }, ref) {\n return <AlertDialogPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold tracking-tight text-fg\", className)} {...props} />;\n});\n\nexport const AlertDialogDescription = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(function AlertDialogDescription({ className, ...props }, ref) {\n return <AlertDialogPrimitive.Description ref={ref} className={cn(\"text-sm text-fg-muted\", className)} {...props} />;\n});\n\nexport const AlertDialogAction = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Action>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(function AlertDialogAction({ className, ...props }, ref) {\n return <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />;\n});\n\nexport const AlertDialogCancel = forwardRef<\n ElementRef<typeof AlertDialogPrimitive.Cancel>,\n ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(function AlertDialogCancel({ className, ...props }, ref) {\n return (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n );\n});\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cva, type VariantProps } from \"../../lib\";\nimport { cn } from \"../../lib\";\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden rounded-full bg-surface-muted text-fg-muted\",\n {\n variants: {\n size: {\n sm: \"size-6 text-[10px]\",\n md: \"size-9 text-xs\",\n lg: \"size-12 text-sm\",\n xl: \"size-16 text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport interface AvatarProps\n extends ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nexport const Avatar = forwardRef<ElementRef<typeof AvatarPrimitive.Root>, AvatarProps>(\n function Avatar({ className, size, ...props }, ref) {\n return <AvatarPrimitive.Root ref={ref} className={cn(avatarVariants({ size }), className)} {...props} />;\n },\n);\n\nexport const AvatarImage = forwardRef<\n ElementRef<typeof AvatarPrimitive.Image>,\n ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(function AvatarImage({ className, ...props }, ref) {\n return <AvatarPrimitive.Image ref={ref} className={cn(\"aspect-square size-full object-cover\", className)} {...props} />;\n});\n\nexport const AvatarFallback = forwardRef<\n ElementRef<typeof AvatarPrimitive.Fallback>,\n ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(function AvatarFallback({ className, ...props }, ref) {\n return (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\"flex size-full items-center justify-center font-semibold uppercase\", className)}\n {...props}\n />\n );\n});\n","import { cva, type VariantProps } from \"../../lib\";\n\nexport const badgeVariants = cva(\n [\n \"inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5\",\n \"text-xs font-semibold tracking-wide\",\n \"transition-colors duration-fast\",\n ],\n {\n variants: {\n tone: {\n neutral: \"bg-surface-muted text-fg-muted\",\n primary: \"bg-primary-soft text-primary\",\n accent: \"bg-accent-soft text-accent\",\n success: \"bg-success-soft text-success\",\n danger: \"bg-danger-soft text-danger\",\n warning: \"bg-warning-soft text-warning\",\n solid: \"bg-fg text-bg\",\n },\n size: {\n sm: \"h-5 px-2 text-[10px]\",\n md: \"h-6 px-2.5 text-xs\",\n lg: \"h-7 px-3 text-sm\",\n },\n dot: { true: \"pl-2\" },\n },\n defaultVariants: { tone: \"neutral\", size: \"md\" },\n },\n);\n\nexport type BadgeVariants = VariantProps<typeof badgeVariants>;\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../lib\";\nimport { badgeVariants, type BadgeVariants } from \"./badge.variants\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement>, BadgeVariants {}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { className, tone, size, dot, children, ...props },\n ref,\n) {\n return (\n <span ref={ref} className={cn(badgeVariants({ tone, size, dot }), className)} {...props}>\n {dot ? <span className=\"size-1.5 rounded-full bg-current\" aria-hidden /> : null}\n {children}\n </span>\n );\n});\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Breadcrumb = forwardRef<HTMLElement, ComponentPropsWithoutRef<\"nav\">>(\n function Breadcrumb(props, ref) {\n return <nav ref={ref} aria-label=\"breadcrumb\" {...props} />;\n },\n);\n\nexport const BreadcrumbList = forwardRef<HTMLOListElement, ComponentPropsWithoutRef<\"ol\">>(\n function BreadcrumbList({ className, ...props }, ref) {\n return (\n <ol\n ref={ref}\n className={cn(\"flex flex-wrap items-center gap-1.5 text-sm text-fg-muted\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, ComponentPropsWithoutRef<\"li\">>(\n function BreadcrumbItem({ className, ...props }, ref) {\n return <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />;\n },\n);\n\nexport const BreadcrumbLink = forwardRef<\n HTMLAnchorElement,\n ComponentPropsWithoutRef<\"a\"> & { asChild?: boolean }\n>(function BreadcrumbLink({ className, asChild, ...props }, ref) {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors duration-fast hover:text-fg\", className)}\n {...props}\n />\n );\n});\n\nexport const BreadcrumbPage = forwardRef<HTMLSpanElement, ComponentPropsWithoutRef<\"span\">>(\n function BreadcrumbPage({ className, ...props }, ref) {\n return (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-medium text-fg\", className)}\n {...props}\n />\n );\n },\n);\n\nexport function BreadcrumbSeparator({ children, className, ...props }: ComponentPropsWithoutRef<\"li\">) {\n return (\n <li role=\"presentation\" aria-hidden className={cn(\"[&>svg]:size-3.5\", className)} {...props}>\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nexport function BreadcrumbEllipsis({ className, ...props }: ComponentPropsWithoutRef<\"span\">) {\n return (\n <span role=\"presentation\" aria-hidden className={cn(\"flex size-9 items-center justify-center\", className)} {...props}>\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">Más</span>\n </span>\n );\n}\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib\";\nimport { buttonVariants, type ButtonVariants } from \"./button.variants\";\n\nexport interface ButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n ButtonVariants {\n /** Renderiza el hijo en lugar de un <button> · útil para envolver <Link>. */\n asChild?: boolean;\n /** Muestra un spinner y deshabilita el botón. */\n loading?: boolean;\n /** Icono a la izquierda del texto. */\n leftIcon?: ReactNode;\n /** Icono a la derecha del texto. */\n rightIcon?: ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { className, variant, size, fullWidth, asChild, loading, leftIcon, rightIcon, disabled, children, ...props },\n ref,\n) {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, fullWidth }), className)}\n disabled={disabled || loading}\n data-loading={loading || undefined}\n {...props}\n >\n {loading ? <Loader2 className=\"animate-spin\" aria-hidden /> : leftIcon}\n {children}\n {!loading && rightIcon}\n </Comp>\n );\n});\n","import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker, type DayPickerProps } from \"react-day-picker\";\nimport { es } from \"react-day-picker/locale\";\nimport { cn } from \"../../lib\";\nimport { buttonVariants } from \"../button/button.variants\";\n\nexport type CalendarProps = DayPickerProps;\n\n/**\n * Calendario basado en `react-day-picker` (v10), estilizado con tokens metrik.\n * Soporta `mode=\"single\" | \"multiple\" | \"range\"`.\n */\nexport function Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n locale={es}\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"relative flex flex-col gap-4 sm:flex-row\",\n month: \"flex w-full flex-col gap-4\",\n month_caption: \"flex h-9 items-center justify-center px-9\",\n caption_label: \"text-sm font-medium capitalize\",\n nav: \"absolute inset-x-0 top-0 flex items-center justify-between\",\n button_previous: cn(\n buttonVariants({ variant: \"outline\", size: \"icon\" }),\n \"size-7 bg-transparent p-0 opacity-70 hover:opacity-100\",\n ),\n button_next: cn(\n buttonVariants({ variant: \"outline\", size: \"icon\" }),\n \"size-7 bg-transparent p-0 opacity-70 hover:opacity-100\",\n ),\n month_grid: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday: \"w-9 text-[11px] font-normal uppercase tracking-wide text-fg-subtle\",\n week: \"mt-1 flex w-full\",\n day: cn(\n \"relative size-9 p-0 text-center text-sm\",\n \"[&:has([aria-selected])]:bg-primary-soft\",\n \"[&:has([aria-selected].day-range-end)]:rounded-r-md\",\n \"first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\",\n ),\n day_button: cn(\n buttonVariants({ variant: \"ghost\", size: \"icon\" }),\n \"size-9 rounded-md p-0 font-normal aria-selected:opacity-100\",\n ),\n range_start: \"day-range-start rounded-l-md bg-primary text-primary-fg hover:bg-primary\",\n range_end: \"day-range-end rounded-r-md bg-primary text-primary-fg hover:bg-primary\",\n range_middle: \"rounded-none bg-primary-soft text-primary aria-selected:bg-primary-soft aria-selected:text-primary\",\n selected: \"rounded-md bg-primary text-primary-fg hover:bg-primary hover:text-primary-fg focus:bg-primary\",\n today: \"rounded-md bg-surface-muted font-semibold text-primary\",\n outside: \"text-fg-subtle opacity-50\",\n disabled: \"text-fg-subtle opacity-40\",\n hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation, className: chevClass }) =>\n orientation === \"left\" ? (\n <ChevronLeft className={cn(\"size-4\", chevClass)} />\n ) : (\n <ChevronRight className={cn(\"size-4\", chevClass)} />\n ),\n }}\n {...props}\n />\n );\n}\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../lib\";\n\ntype DivProps = HTMLAttributes<HTMLDivElement>;\n\nexport const Card = forwardRef<HTMLDivElement, DivProps>(function Card(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border border-border bg-surface text-fg shadow-xs\",\n \"transition-shadow duration-fast\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const CardHeader = forwardRef<HTMLDivElement, DivProps>(function CardHeader(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(\"flex flex-col gap-1.5 p-5\", className)} {...props} />;\n});\n\nexport const CardTitle = forwardRef<HTMLDivElement, DivProps>(function CardTitle(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"text-base font-semibold leading-tight tracking-tight\", className)}\n {...props}\n />\n );\n});\n\nexport const CardDescription = forwardRef<HTMLDivElement, DivProps>(function CardDescription(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(\"text-sm text-fg-muted\", className)} {...props} />;\n});\n\nexport const CardContent = forwardRef<HTMLDivElement, DivProps>(function CardContent(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn(\"px-5 pb-5\", className)} {...props} />;\n});\n\nexport const CardFooter = forwardRef<HTMLDivElement, DivProps>(function CardFooter(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center gap-2 border-t border-border px-5 py-4\", className)}\n {...props}\n />\n );\n});\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check, Minus } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface CheckboxProps extends ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {}\n\nexport const Checkbox = forwardRef<ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n function Checkbox({ className, ...props }, ref) {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer size-[18px] shrink-0 rounded border-2 border-border-strong bg-surface\",\n \"transition-colors duration-fast\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-fg\",\n \"data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-primary-fg\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {props.checked === \"indeterminate\" ? (\n <Minus className=\"size-3\" strokeWidth={3} />\n ) : (\n <Check className=\"size-3\" strokeWidth={3} />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n },\n);\n","import { Check, Plus, X } from \"lucide-react\";\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface ChipOption {\n value: string;\n label: string;\n}\n\nexport interface ChipSelectorProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: ChipOption[];\n value: string[];\n onValueChange: (value: string[]) => void;\n /** Permite quitar todos. Si false, mantiene al menos uno. */\n allowEmpty?: boolean;\n}\n\n/**\n * Selector de múltiples opciones en forma de chips toggleables.\n *\n * @example\n * <ChipSelector options={tags} value={sel} onValueChange={setSel} />\n */\nexport const ChipSelector = forwardRef<HTMLDivElement, ChipSelectorProps>(function ChipSelector(\n { options, value, onValueChange, allowEmpty = true, className, ...props },\n ref,\n) {\n const toggle = (v: string) => {\n const has = value.includes(v);\n if (has && !allowEmpty && value.length === 1) return;\n onValueChange(has ? value.filter((x) => x !== v) : [...value, v]);\n };\n return (\n <div ref={ref} role=\"group\" className={cn(\"flex flex-wrap gap-2\", className)} {...props}>\n {options.map((opt) => {\n const on = value.includes(opt.value);\n return (\n <button\n key={opt.value}\n type=\"button\"\n aria-pressed={on}\n onClick={() => toggle(opt.value)}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-sm font-medium\",\n \"transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n on\n ? \"border-primary bg-primary-soft text-primary\"\n : \"border-border-strong bg-surface text-fg-muted hover:bg-surface-muted hover:text-fg\",\n )}\n >\n {on ? <Check className=\"size-3.5\" /> : <Plus className=\"size-3.5 opacity-60\" />}\n {opt.label}\n {on && <X className=\"size-3 opacity-50\" />}\n </button>\n );\n })}\n </div>\n );\n});\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Collapsible = CollapsiblePrimitive.Root;\nexport const CollapsibleTrigger = CollapsiblePrimitive.Trigger;\n\nexport const CollapsibleContent = forwardRef<\n ElementRef<typeof CollapsiblePrimitive.Content>,\n ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>\n>(function CollapsibleContent({ className, children, ...props }, ref) {\n return (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden\",\n \"data-[state=open]:animate-[metrik-collapse-down_var(--metrik-duration-base)_var(--metrik-ease)]\",\n \"data-[state=closed]:animate-[metrik-collapse-up_var(--metrik-duration-base)_var(--metrik-ease)]\",\n className,\n )}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Content>\n );\n});\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"metrik-collapsible-anim\")) {\n const style = document.createElement(\"style\");\n style.id = \"metrik-collapsible-anim\";\n style.textContent =\n \"@keyframes metrik-collapse-down{from{height:0}to{height:var(--radix-collapsible-content-height)}}\" +\n \"@keyframes metrik-collapse-up{from{height:var(--radix-collapsible-content-height)}to{height:0}}\";\n document.head.appendChild(style);\n}\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\nexport const DialogPortal = DialogPrimitive.Portal;\n\nexport const DialogOverlay = forwardRef<\n ElementRef<typeof DialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(function DialogOverlay({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-overlay bg-slate-950/50 backdrop-blur-sm\",\n \"data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport interface DialogContentProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Esconde el botón de cierre por defecto (× en la esquina). */\n hideCloseButton?: boolean;\n}\n\nexport const DialogContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(function DialogContent({ className, hideCloseButton, children, ...props }, ref) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-modal w-full max-w-lg -translate-x-1/2 -translate-y-1/2\",\n \"rounded-lg border border-border bg-surface p-6 shadow-lg\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n \"focus:outline-none\",\n className,\n )}\n {...props}\n >\n {children}\n {!hideCloseButton ? (\n <DialogPrimitive.Close\n aria-label=\"Cerrar\"\n className={cn(\n \"absolute right-4 top-4 rounded-sm p-1 text-fg-muted opacity-70\",\n \"transition-opacity hover:opacity-100\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n )}\n >\n <X className=\"size-4\" />\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n});\n\nexport function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-1.5 pb-4\", className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"flex flex-col-reverse gap-2 pt-4 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\nexport const DialogTitle = forwardRef<\n ElementRef<typeof DialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(function DialogTitle({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold leading-tight tracking-tight\", className)}\n {...props}\n />\n );\n});\n\nexport const DialogDescription = forwardRef<\n ElementRef<typeof DialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(function DialogDescription({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-fg-muted\", className)}\n {...props}\n />\n );\n});\n","import { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\nimport { Dialog, DialogContent } from \"../dialog\";\n\nexport const Command = forwardRef<\n ElementRef<typeof CommandPrimitive>,\n ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(function Command({ className, ...props }, ref) {\n return (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex size-full flex-col overflow-hidden rounded-md bg-surface-elev text-fg\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport function CommandDialog({\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof Dialog>) {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-fg-subtle [&_[cmdk-input-wrapper]_svg]:size-4 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-2.5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nexport const CommandInput = forwardRef<\n ElementRef<typeof CommandPrimitive.Input>,\n ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(function CommandInput({ className, ...props }, ref) {\n return (\n <div className=\"flex items-center border-b border-border px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 size-4 shrink-0 text-fg-subtle\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full bg-transparent py-3 text-sm outline-none placeholder:text-fg-subtle\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n});\n\nexport const CommandList = forwardRef<\n ElementRef<typeof CommandPrimitive.List>,\n ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(function CommandList({ className, ...props }, ref) {\n return (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden p-1\", className)}\n {...props}\n />\n );\n});\n\nexport const CommandEmpty = forwardRef<\n ElementRef<typeof CommandPrimitive.Empty>,\n ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(function CommandEmpty(props, ref) {\n return <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm text-fg-muted\" {...props} />;\n});\n\nexport const CommandGroup = forwardRef<\n ElementRef<typeof CommandPrimitive.Group>,\n ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(function CommandGroup({ className, ...props }, ref) {\n return (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-fg\",\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-[10px] [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider [&_[cmdk-group-heading]]:text-fg-subtle\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const CommandSeparator = forwardRef<\n ElementRef<typeof CommandPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(function CommandSeparator({ className, ...props }, ref) {\n return <CommandPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />;\n});\n\nexport const CommandItem = forwardRef<\n ElementRef<typeof CommandPrimitive.Item>,\n ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(function CommandItem({ className, ...props }, ref) {\n return (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none\",\n \"data-[selected=true]:bg-primary-soft data-[selected=true]:text-primary\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport function CommandShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn(\"ml-auto text-[11px] tracking-widest text-fg-subtle\", className)} {...props} />;\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport const PopoverContent = forwardRef<\n ElementRef<typeof PopoverPrimitive.Content>,\n ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(function PopoverContent({ className, align = \"center\", sideOffset = 6, ...props }, ref) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-dropdown w-72 rounded-md border border-border bg-surface-elev p-4 text-fg shadow-md outline-none\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n});\n","import { Check, ChevronsUpDown } from \"lucide-react\";\nimport { forwardRef, useState } from \"react\";\nimport { cn } from \"../../lib\";\nimport { Button } from \"../button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n disabled?: boolean;\n className?: string;\n}\n\n/**\n * Select con búsqueda (Popover + Command). Selección única.\n *\n * @example\n * <Combobox options={programas} value={prog} onValueChange={setProg} />\n */\nexport const Combobox = forwardRef<HTMLButtonElement, ComboboxProps>(function Combobox(\n {\n options,\n value,\n onValueChange,\n placeholder = \"Selecciona…\",\n searchPlaceholder = \"Buscar…\",\n emptyText = \"Sin resultados.\",\n disabled,\n className,\n },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const selected = options.find((o) => o.value === value);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn(\"w-full justify-between font-normal\", !selected && \"text-fg-subtle\", className)}\n >\n {selected ? selected.label : placeholder}\n <ChevronsUpDown className=\"ml-2 size-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[var(--radix-popover-trigger-width)] p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder={searchPlaceholder} />\n <CommandList>\n <CommandEmpty>{emptyText}</CommandEmpty>\n <CommandGroup>\n {options.map((opt) => (\n <CommandItem\n key={opt.value}\n value={opt.label}\n onSelect={() => {\n onValueChange?.(opt.value === value ? \"\" : opt.value);\n setOpen(false);\n }}\n >\n <Check className={cn(\"mr-1 size-4\", opt.value === value ? \"opacity-100 text-primary\" : \"opacity-0\")} />\n {opt.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n});\n","import * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const ContextMenu = ContextMenuPrimitive.Root;\nexport const ContextMenuTrigger = ContextMenuPrimitive.Trigger;\nexport const ContextMenuGroup = ContextMenuPrimitive.Group;\nexport const ContextMenuPortal = ContextMenuPrimitive.Portal;\nexport const ContextMenuSub = ContextMenuPrimitive.Sub;\nexport const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst menuSurface = cn(\n \"z-dropdown min-w-[10rem] overflow-hidden rounded-md border border-border bg-surface-elev p-1 text-fg shadow-md\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n);\n\nconst itemBase = cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none\",\n \"data-[highlighted]:bg-primary-soft data-[highlighted]:text-primary\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n);\n\nexport const ContextMenuContent = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.Content>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(function ContextMenuContent({ className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content ref={ref} className={cn(menuSurface, className)} {...props} />\n </ContextMenuPrimitive.Portal>\n );\n});\n\nexport const ContextMenuItem = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.Item>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & { inset?: boolean; destructive?: boolean }\n>(function ContextMenuItem({ className, inset, destructive, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n itemBase,\n inset && \"pl-8\",\n destructive && \"data-[highlighted]:bg-danger-soft data-[highlighted]:text-danger\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const ContextMenuCheckboxItem = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(function ContextMenuCheckboxItem({ className, children, checked, ...props }, ref) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(itemBase, \"pl-8\", className)}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"size-4 text-primary\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\n\nexport const ContextMenuRadioItem = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(function ContextMenuRadioItem({ className, children, ...props }, ref) {\n return (\n <ContextMenuPrimitive.RadioItem ref={ref} className={cn(itemBase, \"pl-8\", className)} {...props}>\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"size-2 fill-current text-primary\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n});\n\nexport const ContextMenuLabel = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.Label>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & { inset?: boolean }\n>(function ContextMenuLabel({ className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-[10px] uppercase tracking-wider text-fg-subtle\", inset && \"pl-8\", className)}\n {...props}\n />\n );\n});\n\nexport const ContextMenuSeparator = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(function ContextMenuSeparator({ className, ...props }, ref) {\n return <ContextMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />;\n});\n\nexport function ContextMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn(\"ml-auto text-[11px] tracking-widest text-fg-subtle\", className)} {...props} />;\n}\n\nexport const ContextMenuSubTrigger = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & { inset?: boolean }\n>(function ContextMenuSubTrigger({ className, inset, children, ...props }, ref) {\n return (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(itemBase, \"data-[state=open]:bg-primary-soft\", inset && \"pl-8\", className)}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto size-4\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n});\n\nexport const ContextMenuSubContent = forwardRef<\n ElementRef<typeof ContextMenuPrimitive.SubContent>,\n ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(function ContextMenuSubContent({ className, ...props }, ref) {\n return <ContextMenuPrimitive.SubContent ref={ref} className={cn(menuSurface, className)} {...props} />;\n});\n","import { CalendarRange, X } from \"lucide-react\";\nimport { forwardRef } from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport { cn } from \"../../lib\";\nimport { Calendar } from \"../calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\n\nexport interface DateRangePillProps {\n value?: DateRange;\n onValueChange?: (range: DateRange | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n numberOfMonths?: number;\n className?: string;\n}\n\nfunction fmt(d: Date) {\n return d.toLocaleDateString(\"es\", { day: \"2-digit\", month: \"short\" });\n}\n\n/**\n * Pastilla compacta que abre un calendario de rango (desde–hasta).\n * Ideal para filtrar reportes por periodo.\n */\nexport const DateRangePill = forwardRef<HTMLButtonElement, DateRangePillProps>(function DateRangePill(\n { value, onValueChange, placeholder = \"Periodo\", disabled, numberOfMonths = 2, className },\n ref,\n) {\n const hasRange = !!value?.from;\n const label = hasRange\n ? value!.to\n ? `${fmt(value!.from!)} – ${fmt(value!.to)}`\n : fmt(value!.from!)\n : placeholder;\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"inline-flex items-center gap-2 rounded-full border px-3.5 py-1.5 text-sm font-medium\",\n \"transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n hasRange\n ? \"border-primary bg-primary-soft text-primary\"\n : \"border-border-strong bg-surface text-fg-muted hover:bg-surface-muted\",\n className,\n )}\n >\n <CalendarRange className=\"size-4\" />\n {label}\n {hasRange && (\n <span\n role=\"button\"\n tabIndex={0}\n aria-label=\"Limpiar periodo\"\n onClick={(e) => {\n e.stopPropagation();\n onValueChange?.(undefined);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n onValueChange?.(undefined);\n }\n }}\n className=\"-mr-1 ml-0.5 rounded-full p-0.5 hover:bg-primary/20\"\n >\n <X className=\"size-3\" />\n </span>\n )}\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"range\"\n selected={value}\n onSelect={onValueChange}\n numberOfMonths={numberOfMonths}\n autoFocus\n />\n </PopoverContent>\n </Popover>\n );\n});\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(function DropdownMenuContent({ className, sideOffset = 6, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-dropdown min-w-[10rem] overflow-hidden rounded-md border border-border bg-surface-elev p-1 text-fg shadow-md\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n});\n\nexport const DropdownMenuItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Item>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { inset?: boolean; destructive?: boolean }\n>(function DropdownMenuItem({ className, inset, destructive, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none\",\n \"data-[highlighted]:bg-primary-soft data-[highlighted]:text-primary\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n destructive && \"data-[highlighted]:bg-danger-soft data-[highlighted]:text-danger\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const DropdownMenuCheckboxItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(function DropdownMenuCheckboxItem({ className, children, checked, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n checked={checked}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"data-[highlighted]:bg-primary-soft data-[highlighted]:text-primary\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"size-4 text-primary\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\n\nexport const DropdownMenuRadioItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(function DropdownMenuRadioItem({ className, children, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"data-[highlighted]:bg-primary-soft data-[highlighted]:text-primary\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"size-2 fill-current text-primary\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n});\n\nexport const DropdownMenuLabel = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Label>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }\n>(function DropdownMenuLabel({ className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-[10px] uppercase tracking-wider text-fg-subtle\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const DropdownMenuSeparator = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(function DropdownMenuSeparator({ className, ...props }, ref) {\n return <DropdownMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />;\n});\n\nexport function DropdownMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn(\"ml-auto text-[11px] tracking-widest text-fg-subtle\", className)} {...props} />;\n}\n\nexport const DropdownMenuSubTrigger = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & { inset?: boolean }\n>(function DropdownMenuSubTrigger({ className, inset, children, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none\",\n \"data-[highlighted]:bg-primary-soft data-[state=open]:bg-primary-soft\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\n\nexport const DropdownMenuSubContent = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(function DropdownMenuSubContent({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-dropdown min-w-[10rem] overflow-hidden rounded-md border border-border bg-surface-elev p-1 text-fg shadow-md\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n className,\n )}\n {...props}\n />\n );\n});\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n title: string;\n description?: string;\n /** Acción opcional (p. ej. un <Button>). */\n action?: ReactNode;\n}\n\n/**\n * Estado vacío · para listas, tablas o resultados sin datos.\n *\n * @example\n * <EmptyState icon={<Inbox />} title=\"Sin reportes\" description=\"Crea el primero.\" action={<Button>Nuevo</Button>} />\n */\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(\n { icon, title, description, action, className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border-strong\",\n \"bg-surface px-6 py-12 text-center\",\n className,\n )}\n {...props}\n >\n {icon && (\n <div className=\"grid size-12 place-items-center rounded-full bg-surface-muted text-fg-subtle [&_svg]:size-6\">\n {icon}\n </div>\n )}\n <div className=\"space-y-1\">\n <h3 className=\"text-sm font-semibold text-fg\">{title}</h3>\n {description && <p className=\"mx-auto max-w-sm text-sm text-fg-muted\">{description}</p>}\n </div>\n {action && <div className=\"mt-1\">{action}</div>}\n </div>\n );\n});\n","import { File as FileIcon, UploadCloud, X } from \"lucide-react\";\nimport { forwardRef, useId, useState, type DragEvent } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface FileDropzoneProps {\n /** Lista controlada de archivos. Si se omite, el componente la gestiona internamente. */\n value?: File[];\n onFilesChange?: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n className?: string;\n hint?: string;\n}\n\nfunction formatSize(bytes: number) {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n}\n\n/**\n * Zona de arrastrar-y-soltar archivos, con click de respaldo y lista de\n * archivos seleccionados.\n */\nexport const FileDropzone = forwardRef<HTMLInputElement, FileDropzoneProps>(function FileDropzone(\n { value, onFilesChange, accept, multiple = true, disabled, className, hint = \"PNG, JPG, PDF · hasta 10 MB\" },\n ref,\n) {\n const inputId = useId();\n const [internal, setInternal] = useState<File[]>([]);\n const [dragging, setDragging] = useState(false);\n const files = value ?? internal;\n\n const setFiles = (next: File[]) => {\n if (!value) setInternal(next);\n onFilesChange?.(next);\n };\n\n const addFiles = (list: FileList | null) => {\n if (!list) return;\n const incoming = Array.from(list);\n setFiles(multiple ? [...files, ...incoming] : incoming.slice(0, 1));\n };\n\n const onDrop = (e: DragEvent) => {\n e.preventDefault();\n setDragging(false);\n if (disabled) return;\n addFiles(e.dataTransfer.files);\n };\n\n return (\n <div className={className}>\n <label\n htmlFor={inputId}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) setDragging(true);\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={onDrop}\n className={cn(\n \"flex cursor-pointer flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-8 text-center\",\n \"transition-colors duration-fast\",\n dragging ? \"border-primary bg-primary-soft\" : \"border-border-strong bg-surface hover:bg-surface-muted\",\n disabled && \"pointer-events-none opacity-60\",\n )}\n >\n <UploadCloud className={cn(\"size-7\", dragging ? \"text-primary\" : \"text-fg-subtle\")} />\n <div className=\"text-sm\">\n <span className=\"font-medium text-primary\">Haz click para subir</span>{\" \"}\n <span className=\"text-fg-muted\">o arrastra aquí</span>\n </div>\n <p className=\"text-xs text-fg-subtle\">{hint}</p>\n <input\n ref={ref}\n id={inputId}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n className=\"sr-only\"\n onChange={(e) => addFiles(e.target.files)}\n />\n </label>\n\n {files.length > 0 && (\n <ul className=\"mt-3 space-y-2\">\n {files.map((f, i) => (\n <li\n key={`${f.name}-${i}`}\n className=\"flex items-center gap-3 rounded-md border border-border bg-surface px-3 py-2 text-sm\"\n >\n <FileIcon className=\"size-4 shrink-0 text-fg-subtle\" />\n <span className=\"min-w-0 flex-1 truncate\">{f.name}</span>\n <span className=\"shrink-0 text-xs text-fg-subtle\">{formatSize(f.size)}</span>\n <button\n type=\"button\"\n aria-label={`Quitar ${f.name}`}\n onClick={() => setFiles(files.filter((_, idx) => idx !== i))}\n className=\"shrink-0 rounded p-0.5 text-fg-subtle transition-colors hover:bg-surface-muted hover:text-danger\"\n >\n <X className=\"size-4\" />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n});\n","import { CalendarDays, Upload } from \"lucide-react\";\nimport {\n forwardRef,\n useId,\n useState,\n type InputHTMLAttributes,\n type SelectHTMLAttributes,\n type TextareaHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../../lib\";\nimport { Calendar } from \"../calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\n\n/* ── estilos compartidos del patrón \"floating label\" ─────────────────────── */\nconst fieldBase = cn(\n \"peer block w-full rounded-md border border-border-strong bg-surface px-3 pb-2 pt-5 text-sm text-fg\",\n \"transition-colors duration-fast\",\n \"focus:outline-none focus:border-primary focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-60 disabled:bg-surface-muted\",\n);\n\nconst labelFloat = cn(\n \"pointer-events-none absolute left-3 top-2 z-10 origin-[0] -translate-y-0 scale-75 text-fg-subtle\",\n \"transition-all duration-fast\",\n);\n\n/** Label que flota según placeholder-shown / focus (para input y textarea). */\nconst labelAuto = cn(\n \"pointer-events-none absolute left-3 top-4 z-10 origin-[0] text-fg-subtle transition-all duration-fast\",\n \"peer-placeholder-shown:translate-y-0 peer-placeholder-shown:scale-100\",\n \"-translate-y-2.5 scale-75\",\n \"peer-focus:-translate-y-2.5 peer-focus:scale-75 peer-focus:text-primary\",\n);\n\nexport interface FloatingInputProps extends InputHTMLAttributes<HTMLInputElement> {\n label: string;\n}\n\nexport const FloatingInput = forwardRef<HTMLInputElement, FloatingInputProps>(function FloatingInput(\n { label, id, className, ...props },\n ref,\n) {\n const auto = useId();\n const fieldId = id ?? auto;\n return (\n <div className=\"relative\">\n <input ref={ref} id={fieldId} placeholder=\" \" className={cn(fieldBase, \"h-14\", className)} {...props} />\n <label htmlFor={fieldId} className={labelAuto}>\n {label}\n </label>\n </div>\n );\n});\n\nexport interface FloatingTextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n label: string;\n}\n\nexport const FloatingTextarea = forwardRef<HTMLTextAreaElement, FloatingTextareaProps>(\n function FloatingTextarea({ label, id, className, ...props }, ref) {\n const auto = useId();\n const fieldId = id ?? auto;\n return (\n <div className=\"relative\">\n <textarea\n ref={ref}\n id={fieldId}\n placeholder=\" \"\n className={cn(fieldBase, \"min-h-[6rem] resize-y\", className)}\n {...props}\n />\n <label htmlFor={fieldId} className={labelAuto}>\n {label}\n </label>\n </div>\n );\n },\n);\n\nexport interface FloatingSelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n label: string;\n}\n\nexport const FloatingSelect = forwardRef<HTMLSelectElement, FloatingSelectProps>(function FloatingSelect(\n { label, id, className, children, ...props },\n ref,\n) {\n const auto = useId();\n const fieldId = id ?? auto;\n return (\n <div className=\"relative\">\n <select\n ref={ref}\n id={fieldId}\n className={cn(fieldBase, \"h-14 appearance-none pr-9\", className)}\n {...props}\n >\n {children}\n </select>\n <label htmlFor={fieldId} className={labelFloat}>\n {label}\n </label>\n <svg\n className=\"pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n );\n});\n\nexport interface FloatingFileInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label: string;\n}\n\nexport const FloatingFileInput = forwardRef<HTMLInputElement, FloatingFileInputProps>(\n function FloatingFileInput({ label, id, className, ...props }, ref) {\n const auto = useId();\n const fieldId = id ?? auto;\n return (\n <div className=\"relative\">\n <label htmlFor={fieldId} className={labelFloat}>\n {label}\n </label>\n <div className={cn(fieldBase, \"flex h-14 items-center gap-2 text-fg-muted\")}>\n <Upload className=\"size-4 shrink-0 text-fg-subtle\" />\n <input\n ref={ref}\n id={fieldId}\n type=\"file\"\n className={cn(\n \"w-full cursor-pointer text-xs text-fg-muted outline-none\",\n \"file:mr-3 file:rounded-md file:border-0 file:bg-primary-soft file:px-3 file:py-1.5 file:text-xs file:font-medium file:text-primary\",\n className,\n )}\n {...props}\n />\n </div>\n </div>\n );\n },\n);\n\nexport interface FloatingDatePickerProps {\n label: string;\n value?: Date;\n onValueChange?: (date: Date | undefined) => void;\n disabled?: boolean;\n className?: string;\n /** Formateador del valor mostrado. Por defecto `toLocaleDateString(\"es\")`. */\n format?: (date: Date) => string;\n}\n\nexport const FloatingDatePicker = forwardRef<HTMLButtonElement, FloatingDatePickerProps>(\n function FloatingDatePicker({ label, value, onValueChange, disabled, className, format }, ref) {\n const auto = useId();\n const fmt = format ?? ((d: Date) => d.toLocaleDateString(\"es\", { day: \"2-digit\", month: \"long\", year: \"numeric\" }));\n return (\n <Popover>\n <div className=\"relative\">\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n className={cn(fieldBase, \"flex h-14 items-center justify-between text-left\", className)}\n >\n <span className={cn(\"text-sm\", value ? \"text-fg\" : \"text-transparent\")}>\n {value ? fmt(value) : \"·\"}\n </span>\n <CalendarDays className=\"size-4 shrink-0 text-fg-subtle\" />\n </button>\n </PopoverTrigger>\n <label className={labelFloat}>{label}</label>\n </div>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={onValueChange}\n autoFocus\n />\n </PopoverContent>\n </Popover>\n );\n },\n);\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface LabelProps extends ComponentPropsWithoutRef<typeof LabelPrimitive.Root> {\n required?: boolean;\n}\n\nexport const Label = forwardRef<ElementRef<typeof LabelPrimitive.Root>, LabelProps>(function Label(\n { className, required, children, ...props },\n ref,\n) {\n return (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n \"text-sm font-medium text-fg leading-none\",\n \"peer-disabled:cursor-not-allowed peer-disabled:opacity-60\",\n className,\n )}\n {...props}\n >\n {children}\n {required ? <span className=\"ml-0.5 text-danger\" aria-hidden>*</span> : null}\n </LabelPrimitive.Root>\n );\n});\n","import { Slot } from \"@radix-ui/react-slot\";\nimport {\n createContext,\n forwardRef,\n useContext,\n useId,\n type FormHTMLAttributes,\n type HTMLAttributes,\n} from \"react\";\nimport { cn } from \"../../lib\";\nimport { Label } from \"../label\";\n\n/**\n * Form ligero · sin react-hook-form. `FormField` cablea ids y errores entre\n * Label / Control / Message para accesibilidad. Para validación, pásale el\n * mensaje de error a `<FormField error=\"...\">` o a `<FormMessage>`.\n */\nexport const Form = forwardRef<HTMLFormElement, FormHTMLAttributes<HTMLFormElement>>(\n function Form({ className, ...props }, ref) {\n return <form ref={ref} className={cn(\"space-y-5\", className)} {...props} />;\n },\n);\n\ntype FieldContext = { id: string; error?: string };\nconst FormFieldContext = createContext<FieldContext | null>(null);\n\nfunction useField() {\n const ctx = useContext(FormFieldContext);\n if (!ctx) throw new Error(\"useField debe usarse dentro de <FormField>\");\n return ctx;\n}\n\nexport interface FormFieldProps extends HTMLAttributes<HTMLDivElement> {\n error?: string;\n}\n\nexport const FormField = forwardRef<HTMLDivElement, FormFieldProps>(function FormField(\n { className, error, ...props },\n ref,\n) {\n const id = useId();\n return (\n <FormFieldContext.Provider value={{ id, error }}>\n <div ref={ref} className={cn(\"space-y-1.5\", className)} {...props} />\n </FormFieldContext.Provider>\n );\n});\n\nexport const FormLabel = forwardRef<\n HTMLLabelElement,\n React.ComponentPropsWithoutRef<typeof Label>\n>(function FormLabel({ className, ...props }, ref) {\n const { id, error } = useField();\n return (\n <Label ref={ref} htmlFor={id} className={cn(error && \"text-danger\", className)} {...props} />\n );\n});\n\nexport const FormControl = forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(function FormControl(props, ref) {\n const { id, error } = useField();\n return (\n <Slot\n ref={ref}\n id={id}\n aria-invalid={!!error || undefined}\n aria-describedby={error ? `${id}-msg` : undefined}\n {...props}\n />\n );\n});\n\nexport function FormDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn(\"text-xs text-fg-muted\", className)} {...props} />;\n}\n\nexport function FormMessage({ className, children, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n const { id, error } = useField();\n const body = error ?? children;\n if (!body) return null;\n return (\n <p id={`${id}-msg`} className={cn(\"text-xs font-medium text-danger\", className)} {...props}>\n {body}\n </p>\n );\n}\n","import * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const HoverCard = HoverCardPrimitive.Root;\nexport const HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nexport const HoverCardContent = forwardRef<\n ElementRef<typeof HoverCardPrimitive.Content>,\n ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(function HoverCardContent({ className, align = \"center\", sideOffset = 6, ...props }, ref) {\n return (\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-dropdown w-64 rounded-md border border-border bg-surface-elev p-4 text-fg shadow-md outline-none\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n});\n","import { cva, type VariantProps } from \"../../lib\";\n\nexport const inputVariants = cva(\n [\n \"flex w-full rounded-md border bg-surface text-sm text-fg\",\n \"transition-colors duration-fast placeholder:text-fg-subtle\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-60 disabled:bg-surface-muted\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n ],\n {\n variants: {\n size: {\n sm: \"h-8 px-2.5 text-xs\",\n md: \"h-10 px-3\",\n lg: \"h-12 px-4 text-base\",\n },\n state: {\n default: \"border-border-strong\",\n error: \"border-danger focus-visible:ring-danger\",\n success: \"border-success focus-visible:ring-success\",\n },\n },\n defaultVariants: { size: \"md\", state: \"default\" },\n },\n);\n\nexport type InputVariants = VariantProps<typeof inputVariants>;\n","import { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../../lib\";\nimport { inputVariants, type InputVariants } from \"./input.variants\";\n\nexport interface InputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\">,\n InputVariants {}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, size, state, type = \"text\", ...props },\n ref,\n) {\n return (\n <input\n ref={ref}\n type={type}\n data-state={state}\n className={cn(inputVariants({ size, state }), className)}\n {...props}\n />\n );\n});\n","import { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport { cn } from \"../../lib\";\nimport { buttonVariants } from \"../button/button.variants\";\n\nexport function Pagination({ className, ...props }: ComponentPropsWithoutRef<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"paginación\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n );\n}\n\nexport const PaginationContent = forwardRef<HTMLUListElement, ComponentPropsWithoutRef<\"ul\">>(\n function PaginationContent({ className, ...props }, ref) {\n return <ul ref={ref} className={cn(\"flex flex-row items-center gap-1\", className)} {...props} />;\n },\n);\n\nexport const PaginationItem = forwardRef<HTMLLIElement, ComponentPropsWithoutRef<\"li\">>(\n function PaginationItem(props, ref) {\n return <li ref={ref} {...props} />;\n },\n);\n\nexport interface PaginationLinkProps extends ComponentPropsWithoutRef<\"a\"> {\n isActive?: boolean;\n size?: \"sm\" | \"md\" | \"icon\";\n}\n\nexport function PaginationLink({ className, isActive, size = \"icon\", ...props }: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({ variant: isActive ? \"outline\" : \"ghost\", size }),\n \"cursor-pointer\",\n isActive && \"border-primary text-primary\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function PaginationPrevious({ className, ...props }: PaginationLinkProps) {\n return (\n <PaginationLink aria-label=\"Anterior\" size=\"sm\" className={cn(\"gap-1 px-2.5\", className)} {...props}>\n <ChevronLeft className=\"size-4\" />\n <span>Anterior</span>\n </PaginationLink>\n );\n}\n\nexport function PaginationNext({ className, ...props }: PaginationLinkProps) {\n return (\n <PaginationLink aria-label=\"Siguiente\" size=\"sm\" className={cn(\"gap-1 px-2.5\", className)} {...props}>\n <span>Siguiente</span>\n <ChevronRight className=\"size-4\" />\n </PaginationLink>\n );\n}\n\nexport function PaginationEllipsis({ className, ...props }: ComponentPropsWithoutRef<\"span\">) {\n return (\n <span aria-hidden className={cn(\"flex size-10 items-center justify-center text-fg-subtle\", className)} {...props}>\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">Más páginas</span>\n </span>\n );\n}\n","import * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface ProgressProps extends ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> {\n /** Color de la barra. */\n tone?: \"primary\" | \"success\" | \"danger\" | \"warning\";\n}\n\nconst TONE = {\n primary: \"bg-primary\",\n success: \"bg-success\",\n danger: \"bg-danger\",\n warning: \"bg-warning\",\n} as const;\n\nexport const Progress = forwardRef<ElementRef<typeof ProgressPrimitive.Root>, ProgressProps>(\n function Progress({ className, value, tone = \"primary\", ...props }, ref) {\n return (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\"relative h-2 w-full overflow-hidden rounded-full bg-surface-muted\", className)}\n value={value}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\"size-full flex-1 transition-transform duration-slow ease-metrik\", TONE[tone])}\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n },\n);\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const RadioGroup = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Root>,\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(function RadioGroup({ className, ...props }, ref) {\n return <RadioGroupPrimitive.Root ref={ref} className={cn(\"grid gap-2.5\", className)} {...props} />;\n});\n\nexport const RadioGroupItem = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Item>,\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(function RadioGroupItem({ className, ...props }, ref) {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square size-[18px] shrink-0 rounded-full border-2 border-border-strong bg-surface text-primary\",\n \"transition-colors duration-fast\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:border-primary\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"size-2.5 fill-primary text-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\n","import { Bold, Italic, Link2, List, ListOrdered, Underline } from \"lucide-react\";\nimport {\n forwardRef,\n useEffect,\n useRef,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface RichTextEditorProps {\n /** HTML inicial (no controlado). */\n defaultValue?: string;\n /** Se dispara con el HTML cada vez que cambia el contenido. */\n onChange?: (html: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n}\n\ntype Cmd = { icon: ReactNode; label: string; run: () => void };\n\n/**\n * Editor de texto enriquecido ligero, basado en `contenteditable` +\n * `document.execCommand` (sin dependencias). Soporta negrita, cursiva,\n * subrayado, listas y enlaces. Para necesidades avanzadas, migrar a Tiptap.\n */\nexport const RichTextEditor = forwardRef<HTMLDivElement, RichTextEditorProps>(function RichTextEditor(\n { defaultValue = \"\", onChange, placeholder = \"Escribe aquí…\", className, disabled },\n ref,\n) {\n const editorRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (editorRef.current && editorRef.current.innerHTML !== defaultValue) {\n editorRef.current.innerHTML = defaultValue;\n }\n // solo en montaje\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const exec = (command: string, value?: string) => {\n editorRef.current?.focus();\n document.execCommand(command, false, value);\n onChange?.(editorRef.current?.innerHTML ?? \"\");\n };\n\n const commands: Cmd[] = [\n { icon: <Bold className=\"size-4\" />, label: \"Negrita\", run: () => exec(\"bold\") },\n { icon: <Italic className=\"size-4\" />, label: \"Cursiva\", run: () => exec(\"italic\") },\n { icon: <Underline className=\"size-4\" />, label: \"Subrayado\", run: () => exec(\"underline\") },\n { icon: <List className=\"size-4\" />, label: \"Lista\", run: () => exec(\"insertUnorderedList\") },\n { icon: <ListOrdered className=\"size-4\" />, label: \"Lista numerada\", run: () => exec(\"insertOrderedList\") },\n {\n icon: <Link2 className=\"size-4\" />,\n label: \"Enlace\",\n run: () => {\n const url = window.prompt(\"URL del enlace:\");\n if (url) exec(\"createLink\", url);\n },\n },\n ];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden rounded-md border border-border-strong bg-surface\",\n \"focus-within:border-primary focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-bg\",\n disabled && \"pointer-events-none opacity-60\",\n className,\n )}\n >\n <div className=\"flex flex-wrap items-center gap-0.5 border-b border-border bg-surface-muted/50 p-1\">\n {commands.map((c) => (\n <button\n key={c.label}\n type=\"button\"\n title={c.label}\n aria-label={c.label}\n onMouseDown={(e) => {\n e.preventDefault();\n c.run();\n }}\n className=\"grid size-8 place-items-center rounded text-fg-muted transition-colors duration-fast hover:bg-surface-muted hover:text-fg\"\n >\n {c.icon}\n </button>\n ))}\n </div>\n <div\n ref={editorRef}\n contentEditable={!disabled}\n role=\"textbox\"\n aria-multiline=\"true\"\n data-placeholder={placeholder}\n onInput={() => onChange?.(editorRef.current?.innerHTML ?? \"\")}\n className={cn(\n \"metrik-rte min-h-[7rem] px-3 py-2.5 text-sm leading-relaxed text-fg outline-none\",\n \"[&_a]:text-primary [&_a]:underline [&_ul]:list-disc [&_ol]:list-decimal [&_ul]:pl-5 [&_ol]:pl-5\",\n \"empty:before:pointer-events-none empty:before:text-fg-subtle empty:before:content-[attr(data-placeholder)]\",\n )}\n />\n </div>\n );\n});\n","import * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const ScrollArea = forwardRef<\n ElementRef<typeof ScrollAreaPrimitive.Root>,\n ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(function ScrollArea({ className, children, ...props }, ref) {\n return (\n <ScrollAreaPrimitive.Root ref={ref} className={cn(\"relative overflow-hidden\", className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"size-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n});\n\nexport const ScrollBar = forwardRef<\n ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(function ScrollBar({ className, orientation = \"vertical\", ...props }, ref) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors duration-fast\",\n orientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border-strong\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n});\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectValue = SelectPrimitive.Value;\n\nexport const SelectTrigger = forwardRef<\n ElementRef<typeof SelectPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(function SelectTrigger({ className, children, ...props }, ref) {\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between gap-2 rounded-md border border-border-strong\",\n \"bg-surface px-3 text-sm text-fg\",\n \"placeholder:text-fg-subtle [&>span]:line-clamp-1\",\n \"transition-colors duration-fast\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-60\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 opacity-60\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n});\n\nexport const SelectContent = forwardRef<\n ElementRef<typeof SelectPrimitive.Content>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(function SelectContent({ className, children, position = \"popper\", ...props }, ref) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position={position}\n className={cn(\n \"z-dropdown min-w-[8rem] overflow-hidden rounded-md border border-border bg-surface-elev text-fg shadow-md\",\n \"data-[state=open]:animate-zoom-in data-[state=closed]:animate-zoom-out\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ScrollUpButton className=\"flex items-center justify-center py-1\">\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n <SelectPrimitive.Viewport className={cn(\"p-1\", position === \"popper\" && \"w-full min-w-[var(--radix-select-trigger-width)]\")}>\n {children}\n </SelectPrimitive.Viewport>\n <SelectPrimitive.ScrollDownButton className=\"flex items-center justify-center py-1\">\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\n\nexport const SelectLabel = forwardRef<\n ElementRef<typeof SelectPrimitive.Label>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(function SelectLabel({ className, ...props }, ref) {\n return (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 px-2 text-[10px] uppercase tracking-wider text-fg-subtle\", className)}\n {...props}\n />\n );\n});\n\nexport const SelectItem = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(function SelectItem({ className, children, ...props }, ref) {\n return (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none\",\n \"data-[highlighted]:bg-primary-soft data-[highlighted]:text-primary\",\n \"data-[state=checked]:font-medium\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4 text-primary\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n );\n});\n\nexport const SelectSeparator = forwardRef<\n ElementRef<typeof SelectPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(function SelectSeparator({ className, ...props }, ref) {\n return <SelectPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />;\n});\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface SeparatorProps extends ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {}\n\nexport const Separator = forwardRef<ElementRef<typeof SeparatorPrimitive.Root>, SeparatorProps>(\n function Separator({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cva, type VariantProps } from \"../../lib\";\nimport { cn } from \"../../lib\";\n\nexport const Sheet = DialogPrimitive.Root;\nexport const SheetTrigger = DialogPrimitive.Trigger;\nexport const SheetClose = DialogPrimitive.Close;\nexport const SheetPortal = DialogPrimitive.Portal;\n\nexport const SheetOverlay = forwardRef<\n ElementRef<typeof DialogPrimitive.Overlay>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(function SheetOverlay({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-overlay bg-slate-950/50 backdrop-blur-sm\",\n \"data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out\",\n className,\n )}\n {...props}\n />\n );\n});\n\nconst sheetVariants = cva(\n [\n \"fixed z-modal flex flex-col gap-4 bg-surface p-6 shadow-lg transition-transform\",\n \"data-[state=open]:animate-fade-in\",\n ],\n {\n variants: {\n side: {\n right: \"inset-y-0 right-0 h-full w-3/4 max-w-sm border-l border-border data-[state=open]:animate-slide-in-right data-[state=closed]:animate-slide-out-right\",\n left: \"inset-y-0 left-0 h-full w-3/4 max-w-sm border-r border-border data-[state=open]:animate-[metrik-slide-in-left_var(--metrik-duration-slow)_var(--metrik-ease)] data-[state=closed]:animate-[metrik-slide-out-left_var(--metrik-duration-slow)_var(--metrik-ease)]\",\n top: \"inset-x-0 top-0 w-full border-b border-border data-[state=open]:animate-[metrik-slide-in-top_var(--metrik-duration-slow)_var(--metrik-ease)] data-[state=closed]:animate-[metrik-slide-out-top_var(--metrik-duration-slow)_var(--metrik-ease)]\",\n bottom: \"inset-x-0 bottom-0 w-full border-t border-border data-[state=open]:animate-[metrik-slide-in-bottom_var(--metrik-duration-slow)_var(--metrik-ease)] data-[state=closed]:animate-[metrik-slide-out-bottom_var(--metrik-duration-slow)_var(--metrik-ease)]\",\n },\n },\n defaultVariants: { side: \"right\" },\n },\n);\n\nexport interface SheetContentProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nexport const SheetContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n SheetContentProps\n>(function SheetContent({ className, side = \"right\", children, ...props }, ref) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <DialogPrimitive.Content ref={ref} className={cn(sheetVariants({ side }), className)} {...props}>\n {children}\n <DialogPrimitive.Close\n className={cn(\n \"absolute right-4 top-4 rounded-sm text-fg-muted opacity-70 transition-opacity\",\n \"hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n )}\n >\n <X className=\"size-4\" />\n <span className=\"sr-only\">Cerrar</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </SheetPortal>\n );\n});\n\nexport function SheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-1.5\", className)} {...props} />;\n}\n\nexport function SheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"mt-auto flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)} {...props} />;\n}\n\nexport const SheetTitle = forwardRef<\n ElementRef<typeof DialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(function SheetTitle({ className, ...props }, ref) {\n return <DialogPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold tracking-tight text-fg\", className)} {...props} />;\n});\n\nexport const SheetDescription = forwardRef<\n ElementRef<typeof DialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(function SheetDescription({ className, ...props }, ref) {\n return <DialogPrimitive.Description ref={ref} className={cn(\"text-sm text-fg-muted\", className)} {...props} />;\n});\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"metrik-sheet-anim\")) {\n const style = document.createElement(\"style\");\n style.id = \"metrik-sheet-anim\";\n style.textContent =\n \"@keyframes metrik-slide-in-left{from{transform:translateX(-100%)}to{transform:translateX(0)}}\" +\n \"@keyframes metrik-slide-out-left{from{transform:translateX(0)}to{transform:translateX(-100%)}}\" +\n \"@keyframes metrik-slide-in-top{from{transform:translateY(-100%)}to{transform:translateY(0)}}\" +\n \"@keyframes metrik-slide-out-top{from{transform:translateY(0)}to{transform:translateY(-100%)}}\" +\n \"@keyframes metrik-slide-in-bottom{from{transform:translateY(100%)}to{transform:translateY(0)}}\" +\n \"@keyframes metrik-slide-out-bottom{from{transform:translateY(0)}to{transform:translateY(100%)}}\";\n document.head.appendChild(style);\n}\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n circle?: boolean;\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\n { className, circle, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n aria-hidden\n className={cn(\n \"relative overflow-hidden bg-surface-muted\",\n circle ? \"rounded-full\" : \"rounded-md\",\n \"before:absolute before:inset-0\",\n \"before:bg-gradient-to-r before:from-transparent before:via-border before:to-transparent\",\n \"before:translate-x-[-100%] before:animate-[metrik-shimmer_1.6s_infinite]\",\n className,\n )}\n {...props}\n />\n );\n});\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"metrik-skeleton-anim\")) {\n const style = document.createElement(\"style\");\n style.id = \"metrik-skeleton-anim\";\n style.textContent = \"@keyframes metrik-shimmer{to{transform:translateX(100%)}}\";\n document.head.appendChild(style);\n}\n","import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Slider = forwardRef<\n ElementRef<typeof SliderPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(function Slider({ className, ...props }, ref) {\n const count =\n Array.isArray(props.value) ? props.value.length\n : Array.isArray(props.defaultValue) ? props.defaultValue.length\n : 1;\n return (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\"relative flex w-full touch-none select-none items-center\", className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-surface-muted\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n {Array.from({ length: count }).map((_, i) => (\n <SliderPrimitive.Thumb\n key={i}\n className={cn(\n \"block size-4 rounded-full border-2 border-primary bg-surface shadow-sm\",\n \"transition-colors duration-fast\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n )}\n />\n ))}\n </SliderPrimitive.Root>\n );\n});\n","import { useCallback, useEffect, useState } from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\nconst STORAGE_KEY = \"metrik-theme\";\n\nfunction resolveSystem(): \"light\" | \"dark\" {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nfunction apply(theme: Theme) {\n if (typeof document === \"undefined\") return;\n const resolved = theme === \"system\" ? resolveSystem() : theme;\n document.documentElement.classList.toggle(\"dark\", resolved === \"dark\");\n document.documentElement.classList.toggle(\"light\", resolved === \"light\");\n}\n\n/**\n * Hook para controlar el tema · light · dark · system.\n * Persiste en localStorage y reacciona a prefers-color-scheme.\n *\n * @example\n * const { theme, setTheme, resolvedTheme } = useTheme();\n * <Switch checked={theme === \"dark\"} onCheckedChange={v => setTheme(v ? \"dark\" : \"light\")} />\n */\nexport function useTheme(defaultTheme: Theme = \"system\") {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return (window.localStorage.getItem(STORAGE_KEY) as Theme | null) ?? defaultTheme;\n });\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(() =>\n theme === \"system\" ? resolveSystem() : theme,\n );\n\n useEffect(() => {\n apply(theme);\n setResolvedTheme(theme === \"system\" ? resolveSystem() : theme);\n if (typeof window !== \"undefined\") window.localStorage.setItem(STORAGE_KEY, theme);\n }, [theme]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n apply(\"system\");\n setResolvedTheme(resolveSystem());\n };\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [theme]);\n\n const setTheme = useCallback((next: Theme) => setThemeState(next), []);\n const toggleTheme = useCallback(\n () => setThemeState((t) => (t === \"dark\" ? \"light\" : \"dark\")),\n [],\n );\n\n return { theme, resolvedTheme, setTheme, toggleTheme };\n}\n","import { Toaster as SonnerToaster, toast, type ToasterProps } from \"sonner\";\nimport { useTheme } from \"../../hooks/use-theme\";\n\n/**\n * Toaster (tostadora) basado en `sonner`. Sincroniza el tema con `useTheme`\n * y estiliza las notificaciones con los tokens de metrik.\n *\n * @example\n * // monta una sola vez cerca de la raíz\n * <Toaster />\n * // dispara desde cualquier parte\n * toast.success(\"Reporte guardado\");\n */\nexport function Toaster(props: ToasterProps) {\n const { resolvedTheme } = useTheme();\n return (\n <SonnerToaster\n theme={resolvedTheme}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-surface-elev group-[.toaster]:text-fg group-[.toaster]:border group-[.toaster]:border-border group-[.toaster]:shadow-md group-[.toaster]:rounded-md\",\n description: \"group-[.toast]:text-fg-muted\",\n actionButton: \"group-[.toast]:bg-primary group-[.toast]:text-primary-fg\",\n cancelButton: \"group-[.toast]:bg-surface-muted group-[.toast]:text-fg-muted\",\n success: \"group-[.toaster]:[&_svg]:text-success\",\n error: \"group-[.toaster]:[&_svg]:text-danger\",\n warning: \"group-[.toaster]:[&_svg]:text-warning\",\n },\n }}\n {...props}\n />\n );\n}\n\nexport { toast };\nexport type { ToasterProps };\n","import { forwardRef, type SVGAttributes } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface SpinnerProps extends SVGAttributes<SVGSVGElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n label?: string;\n}\n\nconst SIZES = { sm: \"size-4\", md: \"size-5\", lg: \"size-6\", xl: \"size-8\" } as const;\n\nexport const Spinner = forwardRef<SVGSVGElement, SpinnerProps>(function Spinner(\n { size = \"md\", label = \"Cargando\", className, ...props },\n ref,\n) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n role=\"status\"\n aria-label={label}\n className={cn(\"animate-spin text-primary\", SIZES[size], className)}\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" strokeOpacity=\".2\" strokeWidth=\"3\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" />\n </svg>\n );\n});\n","import * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface SwitchProps extends ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {}\n\nexport const Switch = forwardRef<ElementRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n function Switch({ className, ...props }, ref) {\n return (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"peer relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full\",\n \"border-2 border-transparent transition-colors duration-fast\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-primary data-[state=unchecked]:bg-border-strong\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block size-4 rounded-full bg-white shadow-sm ring-0\",\n \"transition-transform duration-fast\",\n \"data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n },\n);\n","import { forwardRef, type HTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(\n function Table({ className, ...props }, ref) {\n return (\n <div className=\"relative w-full overflow-x-auto\">\n <table ref={ref} className={cn(\"w-full caption-bottom text-sm\", className)} {...props} />\n </div>\n );\n },\n);\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableHeader({ className, ...props }, ref) {\n return <thead ref={ref} className={cn(\"[&_tr]:border-b [&_tr]:border-border\", className)} {...props} />;\n },\n);\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableBody({ className, ...props }, ref) {\n return <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />;\n },\n);\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableFooter({ className, ...props }, ref) {\n return (\n <tfoot\n ref={ref}\n className={cn(\"border-t border-border bg-surface-muted/50 font-medium\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const TableRow = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\n function TableRow({ className, ...props }, ref) {\n return (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-border transition-colors duration-fast\",\n \"hover:bg-surface-muted/60 data-[state=selected]:bg-primary-soft\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nexport const TableHead = forwardRef<HTMLTableCellElement, ThHTMLAttributes<HTMLTableCellElement>>(\n function TableHead({ className, ...props }, ref) {\n return (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-3 text-left align-middle text-[11px] font-semibold uppercase tracking-wider text-fg-subtle\",\n \"[&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TdHTMLAttributes<HTMLTableCellElement>>(\n function TableCell({ className, ...props }, ref) {\n return <td ref={ref} className={cn(\"p-3 align-middle [&:has([role=checkbox])]:pr-0\", className)} {...props} />;\n },\n);\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, HTMLAttributes<HTMLTableCaptionElement>>(\n function TableCaption({ className, ...props }, ref) {\n return <caption ref={ref} className={cn(\"mt-4 text-sm text-fg-muted\", className)} {...props} />;\n },\n);\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport const TabsList = forwardRef<\n ElementRef<typeof TabsPrimitive.List>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List> & { variant?: \"underline\" | \"pill\" }\n>(function TabsList({ className, variant = \"underline\", ...props }, ref) {\n return (\n <TabsPrimitive.List\n ref={ref}\n data-variant={variant}\n className={cn(\n \"inline-flex items-center\",\n variant === \"underline\" && \"h-10 gap-6 border-b border-border w-full\",\n variant === \"pill\" && \"h-10 rounded-md bg-surface-muted p-1 gap-1\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium\",\n \"transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n // underline variant (default)\n \"[[data-variant=underline]_&]:px-1 [[data-variant=underline]_&]:py-2.5\",\n \"[[data-variant=underline]_&]:text-fg-muted [[data-variant=underline]_&]:border-b-2 [[data-variant=underline]_&]:border-transparent\",\n \"[[data-variant=underline]_&]:data-[state=active]:text-fg [[data-variant=underline]_&]:data-[state=active]:border-primary\",\n // pill variant\n \"[[data-variant=pill]_&]:rounded [[data-variant=pill]_&]:px-3.5 [[data-variant=pill]_&]:py-1.5\",\n \"[[data-variant=pill]_&]:text-fg-muted\",\n \"[[data-variant=pill]_&]:data-[state=active]:bg-surface [[data-variant=pill]_&]:data-[state=active]:text-fg [[data-variant=pill]_&]:data-[state=active]:shadow-xs\",\n className,\n )}\n {...props}\n />\n );\n});\n\nexport const TabsContent = forwardRef<\n ElementRef<typeof TabsPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(function TabsContent({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-md\",\n className,\n )}\n {...props}\n />\n );\n});\n","import { forwardRef, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, invalid, ...props },\n ref,\n) {\n return (\n <textarea\n ref={ref}\n data-invalid={invalid || undefined}\n className={cn(\n \"flex min-h-[88px] w-full rounded-md border bg-surface px-3 py-2.5 text-sm text-fg\",\n \"transition-colors duration-fast placeholder:text-fg-subtle resize-y\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:cursor-not-allowed disabled:opacity-60 disabled:bg-surface-muted\",\n invalid ? \"border-danger focus-visible:ring-danger\" : \"border-border-strong\",\n className,\n )}\n {...props}\n />\n );\n});\n","import { cva, type VariantProps } from \"../../lib\";\n\nexport const toggleVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium\",\n \"transition-colors duration-fast\",\n \"hover:bg-surface-muted hover:text-fg\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=on]:bg-primary-soft data-[state=on]:text-primary\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-border-strong bg-transparent\",\n },\n size: {\n sm: \"h-8 min-w-8 px-2 [&_svg]:size-3.5\",\n md: \"h-10 min-w-10 px-2.5 [&_svg]:size-4\",\n lg: \"h-12 min-w-12 px-4 [&_svg]:size-5\",\n },\n },\n defaultVariants: { variant: \"default\", size: \"md\" },\n },\n);\n\nexport type ToggleVariants = VariantProps<typeof toggleVariants>;\n","import * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\nimport { toggleVariants, type ToggleVariants } from \"./toggle.variants\";\n\nexport interface ToggleProps\n extends ComponentPropsWithoutRef<typeof TogglePrimitive.Root>,\n ToggleVariants {}\n\nexport const Toggle = forwardRef<ElementRef<typeof TogglePrimitive.Root>, ToggleProps>(\n function Toggle({ className, variant, size, ...props }, ref) {\n return (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\n","import * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { createContext, forwardRef, useContext, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\nimport { toggleVariants, type ToggleVariants } from \"../toggle/toggle.variants\";\n\nconst ToggleGroupContext = createContext<ToggleVariants>({ variant: \"default\", size: \"md\" });\n\nexport const ToggleGroup = forwardRef<\n ElementRef<typeof ToggleGroupPrimitive.Root>,\n ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> & ToggleVariants\n>(function ToggleGroup({ className, variant, size, children, ...props }, ref) {\n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"inline-flex items-center gap-1 rounded-md bg-surface-muted p-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n});\n\nexport const ToggleGroupItem = forwardRef<\n ElementRef<typeof ToggleGroupPrimitive.Item>,\n ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> & ToggleVariants\n>(function ToggleGroupItem({ className, variant, size, children, ...props }, ref) {\n const ctx = useContext(ToggleGroupContext);\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({ variant: variant ?? ctx.variant, size: size ?? ctx.size }),\n \"data-[state=on]:bg-surface data-[state=on]:shadow-xs\",\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n});\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef } from \"react\";\nimport { cn } from \"../../lib\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport interface TooltipContentProps\n extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {}\n\nexport const TooltipContent = forwardRef<\n ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(function TooltipContent({ className, sideOffset = 6, ...props }, ref) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-dropdown overflow-hidden rounded-md bg-fg px-2.5 py-1.5 text-xs text-bg shadow-md\",\n \"animate-fade-in data-[state=closed]:animate-fade-out\",\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n );\n});\n","import * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\n\n/**\n * Oculta contenido visualmente pero lo mantiene accesible para lectores de\n * pantalla. Útil para etiquetas de iconos, encabezados de tablas, etc.\n */\nexport const VisuallyHidden = VisuallyHiddenPrimitive.Root;\n","import { useCallback, useState } from \"react\";\n\nexport interface DisclosureControls {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setOpen: (v: boolean) => void;\n}\n\n/**\n * Hook para manejar el estado abierto/cerrado de modals, drawers, popovers, etc.\n * @example\n * const dialog = useDisclosure();\n * <Dialog open={dialog.isOpen} onOpenChange={dialog.setOpen}>...</Dialog>\n */\nexport function useDisclosure(initial = false): DisclosureControls {\n const [isOpen, setOpen] = useState(initial);\n return {\n isOpen,\n open: useCallback(() => setOpen(true), []),\n close: useCallback(() => setOpen(false), []),\n toggle: useCallback(() => setOpen((v) => !v), []),\n setOpen,\n };\n}\n","import { useEffect, useState } from \"react\";\n\n/**\n * Hook para escuchar media queries.\n * @example\n * const isDesktop = useMediaQuery(\"(min-width: 1024px)\");\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const mq = window.matchMedia(query);\n const onChange = (e: MediaQueryListEvent) => setMatches(e.matches);\n setMatches(mq.matches);\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [query]);\n\n return matches;\n}\n\nexport const useBreakpoint = {\n sm: () => useMediaQuery(\"(min-width: 640px)\"),\n md: () => useMediaQuery(\"(min-width: 768px)\"),\n lg: () => useMediaQuery(\"(min-width: 1024px)\"),\n xl: () => useMediaQuery(\"(min-width: 1280px)\"),\n \"2xl\": () => useMediaQuery(\"(min-width: 1536px)\"),\n};\n","import { useEffect, useState } from \"react\";\n\n/**\n * Devuelve el valor después de un retraso · útil para inputs de búsqueda.\n * @example\n * const debounced = useDebounce(query, 300);\n * useEffect(() => fetch(\"/api?q=\" + debounced), [debounced]);\n */\nexport function useDebounce<T>(value: T, delay = 300): T {\n const [debounced, setDebounced] = useState(value);\n useEffect(() => {\n const id = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(id);\n }, [value, delay]);\n return debounced;\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Estado sincronizado con localStorage · serializa con JSON.\n * @example\n * const [filters, setFilters] = useLocalStorage(\"metrik-filters\", { period: \"month\" });\n */\nexport function useLocalStorage<T>(key: string, initialValue: T) {\n const [value, setValue] = useState<T>(() => {\n if (typeof window === \"undefined\") return initialValue;\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? (JSON.parse(raw) as T) : initialValue;\n } catch {\n return initialValue;\n }\n });\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {\n /* quota / serialize errors are silent */\n }\n }, [key, value]);\n\n const remove = useCallback(() => {\n if (typeof window === \"undefined\") return;\n window.localStorage.removeItem(key);\n setValue(initialValue);\n }, [key, initialValue]);\n\n return [value, setValue, remove] as const;\n}\n","import { useEffect, type RefObject } from \"react\";\n\n/**\n * Llama al handler cuando se hace click fuera del ref.\n * @example\n * const ref = useRef(null);\n * useClickOutside(ref, () => setOpen(false));\n */\nexport function useClickOutside<T extends HTMLElement>(\n ref: RefObject<T | null>,\n handler: (event: MouseEvent | TouchEvent) => void,\n enabled = true,\n) {\n useEffect(() => {\n if (!enabled) return;\n const listener = (event: MouseEvent | TouchEvent) => {\n const el = ref.current;\n if (!el || el.contains(event.target as Node)) return;\n handler(event);\n };\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener, { passive: true });\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n }, [ref, handler, enabled]);\n}\n","import { useCallback, useState } from \"react\";\n\nexport function useToggle(initial = false): [boolean, () => void, (v: boolean) => void] {\n const [value, setValue] = useState(initial);\n const toggle = useCallback(() => setValue((v) => !v), []);\n return [value, toggle, setValue];\n}\n"]}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/* @juanarenas31/metrik-ui · base styles
|
|
2
|
+
Importa después de tokens.css */
|
|
3
|
+
@import "./tokens.css";
|
|
4
|
+
|
|
5
|
+
@layer base {
|
|
6
|
+
:root {
|
|
7
|
+
color-scheme: light;
|
|
8
|
+
}
|
|
9
|
+
.dark {
|
|
10
|
+
color-scheme: dark;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
body {
|
|
14
|
+
background: var(--metrik-bg);
|
|
15
|
+
color: var(--metrik-fg);
|
|
16
|
+
font-family: ui-sans-serif, system-ui, -apple-system, "Inter", "Segoe UI", Roboto, sans-serif;
|
|
17
|
+
-webkit-font-smoothing: antialiased;
|
|
18
|
+
-moz-osx-font-smoothing: grayscale;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
*:focus-visible {
|
|
22
|
+
outline: 2px solid var(--metrik-ring);
|
|
23
|
+
outline-offset: 2px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* tabular nums for monospace metrics */
|
|
27
|
+
.metrik-tabular { font-variant-numeric: tabular-nums; }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Animations consumed by components */
|
|
31
|
+
@keyframes metrik-fade-in {
|
|
32
|
+
from { opacity: 0 }
|
|
33
|
+
to { opacity: 1 }
|
|
34
|
+
}
|
|
35
|
+
@keyframes metrik-fade-out {
|
|
36
|
+
from { opacity: 1 }
|
|
37
|
+
to { opacity: 0 }
|
|
38
|
+
}
|
|
39
|
+
@keyframes metrik-zoom-in {
|
|
40
|
+
from { opacity: 0; transform: scale(.96) }
|
|
41
|
+
to { opacity: 1; transform: scale(1) }
|
|
42
|
+
}
|
|
43
|
+
@keyframes metrik-zoom-out {
|
|
44
|
+
from { opacity: 1; transform: scale(1) }
|
|
45
|
+
to { opacity: 0; transform: scale(.96) }
|
|
46
|
+
}
|
|
47
|
+
@keyframes metrik-slide-in-right {
|
|
48
|
+
from { transform: translateX(100%) }
|
|
49
|
+
to { transform: translateX(0) }
|
|
50
|
+
}
|
|
51
|
+
@keyframes metrik-slide-out-right {
|
|
52
|
+
from { transform: translateX(0) }
|
|
53
|
+
to { transform: translateX(100%) }
|
|
54
|
+
}
|
|
55
|
+
@keyframes metrik-spin {
|
|
56
|
+
to { transform: rotate(360deg) }
|
|
57
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Config } from 'tailwindcss';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Preset de Tailwind para @juanarenas31/metrik-ui.
|
|
5
|
+
* Mapea los tokens (CSS vars) a las clases utility · bg-primary, text-fg-muted, etc.
|
|
6
|
+
*
|
|
7
|
+
* // tailwind.config.ts
|
|
8
|
+
* import metrikPreset from "@juanarenas31/metrik-ui/tailwind-preset";
|
|
9
|
+
* export default { presets: [metrikPreset], content: [...] } satisfies Config;
|
|
10
|
+
*/
|
|
11
|
+
declare const preset: Partial<Config>;
|
|
12
|
+
|
|
13
|
+
export { preset as default };
|