@codapet/design-system 0.6.6 → 0.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +20 -2
- package/dist/index.mjs +154 -43
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +7 -0
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/alert-banner.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/button.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/auto-resize-textarea.tsx","../src/components/ui/textarea.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/badge-actionable.tsx","../src/components/ui/badge-informative.tsx","../src/components/ui/badge-number.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/date-input.tsx","../src/components/ui/input.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-range-input.tsx","../src/components/ui/drawer.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/dropdown-select.tsx","../src/components/ui/form.tsx","../src/components/ui/label.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/menubar.tsx","../src/components/ui/multi-select-free-text.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/progress.tsx","../src/components/ui/progress-bar.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/search-input.tsx","../src/components/ui/searchable-select.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/hooks/use-mobile.ts","../src/components/ui/slider.tsx","../src/components/ui/smart-dialog-drawer.tsx","../src/components/ui/useMediaQuery.ts","../src/components/ui/sonner.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/theme-provider.tsx","../src/components/ui/theme-toggle.tsx","../src/components/ui/time-input.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/typography.tsx","../src/hooks/use-theme.ts"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { ChevronDownIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('border-b last:border-b-0', className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n expandedIcon,\n collapsedIcon,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n expandedIcon?: React.ReactNode\n collapsedIcon?: React.ReactNode\n}) {\n const hasCustomIcon = expandedIcon !== undefined || collapsedIcon !== undefined\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50',\n !hasCustomIcon && '[&[data-state=open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n {hasCustomIcon ? (\n <>\n {collapsedIcon !== undefined && (\n <span className=\"group-data-[state=open]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {collapsedIcon}\n </span>\n )}\n {expandedIcon !== undefined && (\n <span className=\"group-data-[state=closed]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {expandedIcon}\n </span>\n )}\n </>\n ) : (\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-400\" />\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst alertBannerVariants = cva(\n 'flex items-start gap-3 w-full rounded-[12px] border px-3 py-4 text-sm leading-5',\n {\n variants: {\n type: {\n informative:\n 'bg-alert-bg-informative border-gray-stroke-light [&_svg]:text-[#52525c] dark:[&_svg]:text-[#a1a1aa]',\n error:\n 'bg-alert-bg-error border-error-stroke-light [&_svg]:text-[#ff6467] dark:[&_svg]:text-[#ff8486]',\n success:\n 'bg-success-surface-subtle border-success-stroke-light [&_svg]:text-[#00a63e] dark:[&_svg]:text-[#34d399]'\n }\n },\n defaultVariants: {\n type: 'informative'\n }\n }\n)\n\nexport interface AlertBannerProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof alertBannerVariants> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n}\n\nfunction AlertBanner({\n className,\n type,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n ...props\n}: AlertBannerProps) {\n return (\n <div\n data-slot=\"alert-banner\"\n role=\"alert\"\n className={cn(alertBannerVariants({ type }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5 text-vibrant-text-heading\">\n {heading}\n </p>\n )}\n <div className=\"font-normal text-sm leading-5 text-vibrant-text-body\">\n {children}\n </div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"flex items-center justify-center shrink-0 size-5 text-vibrant-text-body hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-2.5\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { AlertBanner, alertBannerVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst buttonVariants = cva(\n \"cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-semibold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none relative select-none will-change-auto focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-lg focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive duration-400\",\n {\n variants: {\n variant: {\n primary:\n 'bg-primary text-primary-foreground hover:bg-brand-dark active:bg-active-primary',\n secondary:\n 'bg-brand-subtle text-primary-stroke-default hover:bg-primary-surface-light border border-brand-light active:bg-icon-disabled',\n tertiary:\n 'bg-gray-surface-light text-foreground-secondary hover:bg-gray-surface-default border border-gray-stroke-light hover:border-transparent active:border-transparent active:bg-[#9f9fa9] dark:active:bg-[#71717a]',\n outline:\n 'text-foreground-secondary border border-gray-surface-default bg-background hover:bg-gray-surface-light hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 active:bg-gray-surface-default',\n ghost:\n 'text-primary-stroke-default hover:bg-primary-surface-subtle dark:hover:bg-accent/50 active:bg-primary-surface-light',\n 'ghost-secondary':\n 'text-foreground-secondary hover:bg-gray-surface-light hover:text-accent-foreground dark:hover:bg-accent/50 active:bg-gray-surface-default',\n 'ghost-destructive':\n 'bg-transparent text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n link: 'text-foreground-secondary underline-offset-4 underline hover:bg-none active:bg-none hover:text-brand-vibrant',\n destructive:\n 'bg-error-surface-default text-primary-foreground hover:bg-red-800 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-error-surface-dark',\n 'destructive-secondary':\n 'bg-error-surface-light border border-error-stroke-light text-destructive-text hover:border-error-surface-default focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n 'destructive-tertiary':\n 'bg-transparent border border-error-stroke-light text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active'\n },\n size: {\n md: 'h-10 px-4 py-2 has-[>svg]:px-3 text-lg',\n sm: 'h-9 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 text-base',\n lg: 'h-12 rounded-md px-6 has-[>svg]:px-4 text-lg',\n icon: 'size-8'\n }\n },\n defaultVariants: {\n variant: 'primary',\n size: 'lg'\n }\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Textarea } from './textarea'\n\ntype AutoResizeTextareaProps = React.ComponentPropsWithoutRef<typeof Textarea> & {\n /** Stop growing after this many px and allow scroll */\n maxHeight?: number\n /** Minimum height in px */\n minHeight?: number\n}\n\ntype TextareaEl = React.ElementRef<typeof Textarea>\n\nexport const AutoResizeTextarea = React.forwardRef<\n TextareaEl,\n AutoResizeTextareaProps\n>(\n (\n {\n className,\n style,\n onInput,\n onChange,\n maxHeight,\n minHeight = 120,\n value,\n ...props\n },\n forwardedRef\n ) => {\n const innerRef = React.useRef<TextareaEl | null>(null)\n\n const setRefs = React.useCallback(\n (node: TextareaEl | null) => {\n innerRef.current = node\n\n if (typeof forwardedRef === 'function') forwardedRef(node)\n else if (forwardedRef) forwardedRef.current = node\n },\n [forwardedRef]\n )\n\n const resize = React.useCallback(() => {\n const el = innerRef.current\n if (!el) return\n\n el.style.height = 'auto'\n const nextHeight = Math.max(minHeight, el.scrollHeight)\n\n if (maxHeight && nextHeight > maxHeight) {\n el.style.height = `${maxHeight}px`\n el.style.overflowY = 'auto'\n } else {\n el.style.height = `${nextHeight}px`\n el.style.overflowY = 'hidden'\n }\n }, [maxHeight, minHeight])\n\n React.useLayoutEffect(() => {\n resize()\n }, [resize, value])\n\n return (\n <Textarea\n {...props}\n ref={setRefs}\n value={value}\n onInput={e => {\n resize()\n onInput?.(e)\n }}\n onChange={e => {\n onChange?.(e)\n }}\n className={cn('resize-none', className)}\n style={{\n ...style,\n minHeight: minHeight,\n height: style?.height ?? 'auto',\n overflowY: style?.overflowY ?? 'hidden'\n }}\n />\n )\n }\n)\n\nAutoResizeTextarea.displayName = 'AutoResizeTextarea'\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n// Base styles as a constant to avoid recreation\nconst textareaBaseStyles = [\n // Base styles aligned with Input\n 'placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-md border bg-transparent text-base shadow-xs transition-all duration-400',\n 'outline-none font-sans',\n // Disabled\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n // Responsive text size\n 'md:text-sm',\n // Default state\n 'border-border-default bg-background',\n // Hover/Focus/Active states\n 'hover:border-brand-normal',\n 'focus:border-focus-ring',\n 'active:border-brand-normal',\n // Textarea specific\n 'field-sizing-content min-h-16 resize-y px-3 py-2'\n].join(' ')\n\n// Error styles as a constant to avoid recreation\nconst errorStyles = [\n 'border-destructive bg-red-subtle',\n 'focus:border-destructive focus:ring-destructive/20',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive'\n].join(' ')\n\nexport interface TextareaProps extends Omit<React.ComponentProps<'textarea'>, 'size'> {\n error?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(textareaBaseStyles, error && errorStyles, className)}\n aria-invalid={error}\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-primary-foreground [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeActionableVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-[8px] cursor-pointer select-none transition-all font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0 outline-none focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-xl focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none relative',\n {\n variants: {\n size: {\n M: 'h-10 px-3 py-2 text-base leading-6 [&_svg]:size-5',\n S: 'h-8 px-3 py-2 text-sm leading-5 [&_svg]:size-5'\n }\n },\n defaultVariants: {\n size: 'S'\n }\n }\n)\n\nexport interface BadgeActionableProps\n extends\n Omit<React.ComponentProps<'button'>, 'children'>,\n VariantProps<typeof badgeActionableVariants> {\n icon?: React.ReactNode\n selected?: boolean\n onBackground?: boolean\n children: React.ReactNode\n}\n\nfunction BadgeActionable({\n className,\n size,\n icon,\n selected = false,\n onBackground = false,\n children,\n ...props\n}: BadgeActionableProps) {\n return (\n <button\n data-slot=\"badge-actionable\"\n data-selected={selected || undefined}\n className={cn(\n badgeActionableVariants({ size }),\n selected\n ? 'bg-primary-surface-subtle border border-primary-stroke-default text-primary-stroke-default'\n : onBackground\n ? 'bg-sand-light border border-secondary-stroke-default text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent'\n : 'bg-sand-light border border-secondary-stroke-light text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent',\n 'disabled:pointer-events-none disabled:opacity-50 ',\n className\n )}\n {...props}\n >\n {icon && <span className=\"flex items-center justify-center\">{icon}</span>}\n <span>{children}</span>\n </button>\n )\n}\n\nexport { BadgeActionable, badgeActionableVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeInformativeVariants = cva(\n 'inline-flex items-center justify-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n size: {\n M: 'h-8 px-2 py-1.5 gap-2 rounded-[8px] text-sm leading-5 [&_svg]:size-4',\n S: 'h-6 px-2 py-1.5 gap-1 rounded-[8px] text-xs leading-4 [&_svg]:size-4'\n },\n colorScheme: {\n gray: 'bg-gray-surface-light text-vibrant-text-body',\n blue: 'bg-primary-surface-subtle text-primary-stroke-default',\n yellow:\n 'bg-warning-surface-subtle border border-warning-stroke-default text-warning-stroke-dark'\n }\n },\n defaultVariants: {\n size: 'M',\n colorScheme: 'gray'\n }\n }\n)\n\nexport interface BadgeInformativeProps\n extends\n React.ComponentProps<'div'>,\n VariantProps<typeof badgeInformativeVariants> {\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}\n\nfunction BadgeInformative({\n className,\n size,\n colorScheme,\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: BadgeInformativeProps) {\n return (\n <div\n data-slot=\"badge-informative\"\n className={cn(badgeInformativeVariants({ size, colorScheme }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className={cn(\n 'inline-flex items-center gap-1 font-semibold text-base leading-6 shrink-0',\n colorScheme === 'blue'\n ? 'text-primary-stroke-default'\n : 'text-primary-stroke-default'\n )}\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\n/**\n * Container for multiple BadgeInformative items displayed side-by-side.\n */\nfunction BadgeInformativeGroup({\n className,\n size = 'M',\n colorScheme = 'gray',\n children,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof badgeInformativeVariants>) {\n return (\n <div\n data-slot=\"badge-informative-group\"\n className={cn(\n 'inline-flex items-center gap-3',\n size === 'M'\n ? 'h-8 px-2 py-1.5 rounded-[8px]'\n : 'h-6 px-2 py-1.5 rounded-[8px]',\n colorScheme === 'gray' && 'bg-gray-surface-light',\n colorScheme === 'blue' && 'bg-primary-surface-subtle',\n colorScheme === 'yellow' &&\n 'bg-warning-surface-subtle border border-warning-stroke-default',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * A single item within a BadgeInformativeGroup. Use for multi-content badges.\n */\nfunction BadgeInformativeItem({\n className,\n size = 'M',\n colorScheme = 'gray',\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n size?: 'M' | 'S'\n colorScheme?: 'gray' | 'blue' | 'yellow'\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}) {\n return (\n <div\n data-slot=\"badge-informative-item\"\n className={cn(\n 'inline-flex items-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n size === 'M'\n ? 'gap-1 text-sm leading-5 [&_svg]:size-4'\n : 'gap-1 text-xs leading-4 [&_svg]:size-4',\n colorScheme === 'gray' && 'text-vibrant-text-body',\n colorScheme === 'blue' && 'text-primary-stroke-default',\n colorScheme === 'yellow' && 'text-warning-stroke-dark',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className=\"inline-flex items-center gap-1 font-semibold text-base leading-6 text-primary-stroke-default shrink-0\"\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\nexport {\n BadgeInformative,\n BadgeInformativeGroup,\n BadgeInformativeItem,\n badgeInformativeVariants\n}\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeNumberVariants = cva(\n 'inline-flex items-center justify-center rounded-full font-semibold text-xs leading-[18px] text-center shrink-0 select-none',\n {\n variants: {\n size: {\n M: 'size-6',\n S: 'size-5'\n },\n state: {\n active: 'bg-primary text-primary-foreground',\n disabled: 'bg-gray-surface-light text-gray-subtle',\n resting:\n 'bg-transparent border border-gray-stroke-light text-gray-subtle'\n }\n },\n defaultVariants: {\n size: 'M',\n state: 'active'\n }\n }\n)\n\nexport interface BadgeNumberProps\n extends React.ComponentProps<'span'>,\n VariantProps<typeof badgeNumberVariants> {\n value: number\n}\n\nfunction BadgeNumber({\n className,\n size,\n state,\n value,\n ...props\n}: BadgeNumberProps) {\n return (\n <span\n data-slot=\"badge-number\"\n className={cn(badgeNumberVariants({ size, state }), className)}\n {...props}\n >\n {value}\n </span>\n )\n}\n\nexport { BadgeNumber, badgeNumberVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","'use client'\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon\n} from 'lucide-react'\nimport * as React from 'react'\nimport { DayButton, DayPicker } from 'react-day-picker'\n\nimport { Button, buttonVariants } from '@/components/ui/button'\nimport { cn } from '@/lib/utils'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:--spacing(4)] md:[--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters\n }}\n classNames={{\n root: cn('w-fit ', classNames?.root),\n months: cn(\n 'flex gap-4 flex-col md:flex-row relative',\n classNames?.months\n ),\n month: cn('flex flex-col w-full gap-4', classNames?.month),\n nav: cn(\n 'flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between',\n classNames?.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_next\n ),\n month_caption: cn(\n 'flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)',\n classNames?.month_caption\n ),\n dropdowns: cn(\n 'w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5',\n classNames?.dropdowns\n ),\n dropdown_root: cn(\n 'relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md',\n classNames?.dropdown_root\n ),\n dropdown: cn(\n 'absolute bg-popover inset-0 opacity-0',\n classNames?.dropdown\n ),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : 'rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5',\n classNames?.caption_label\n ),\n table: cn('w-full border-collapse', classNames?.table),\n weekdays: cn(\n 'flex items-center justify-center w-full gap-2',\n classNames?.weekdays\n ),\n weekday: cn(\n 'text-muted-foreground font-medium rounded-full md:flex-1 size-6 mx-1 font-normal text-[0.8rem] select-none',\n classNames?.weekday\n ),\n week: cn(\n 'flex w-full md:mt-2 mt-[2px] items-center justify-center gap-1',\n classNames?.week\n ),\n week_number_header: cn(\n 'select-none w-(--cell-size) ',\n 'flex items-center justify-center ',\n classNames?.week_number_header\n ),\n week_number: cn(\n 'text-[0.8rem] select-none text-muted-foreground',\n classNames?.week_number\n ),\n day: cn(\n 'relative flex items-center justify-center md:w-full md:h-full p-0 text-center group/day aspect-square select-none size-7 md:mx-0 mx-1 rounded-full',\n classNames?.day\n ),\n range_start: cn(' bg-accent', classNames?.range_start),\n range_middle: cn('rounded-none', classNames?.range_middle),\n range_end: cn(' bg-accent', classNames?.range_end),\n today: cn(\n 'bg-accent text-accent-foreground rounded-full',\n classNames?.today\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n classNames?.outside\n ),\n disabled: cn('text-muted-foreground opacity-50', classNames?.disabled),\n hidden: cn('invisible', classNames?.hidden)\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon className={cn('size-6', className)} {...props} />\n )\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-6', className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn('size-6', className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-range-middle-bg data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none md:font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70 md:p-0 rounded-full md:text-base text-sm font-medium text-foreground data-[range-middle=true]:rounded-md',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'group peer border-input dark:bg-input/30 transition-colors duration-400 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:before:absolute focus-visible:before:-inset-[3px] focus:ring-offset-1 focus:ring-offset-brand-text-vibrant',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n forceMount\n className=\"flex items-center justify-center text-current transition-opacity duration-400 opacity-0 group-data-[state=checked]:opacity-100\"\n >\n <Check className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","'use client'\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n overlayClassName,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n overlayClassName?: string\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-400 sm:max-w-lg',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('text-lg leading-none font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport {\n format as dateFnsFormat,\n parse as dateFnsParse,\n isValid\n} from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport { Calendar } from './calendar'\nimport { Input, inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type DateFormat =\n | 'MM/DD/YYYY'\n | 'DD/MM/YYYY'\n | 'YYYY-MM-DD'\n | 'DD-MM-YYYY'\n | 'MM-DD-YYYY'\n | 'DD.MM.YYYY'\n | 'YYYY/MM/DD'\n | 'MMMM D, YYYY'\n | 'D MMMM YYYY'\n | 'MMM D, YYYY'\n | 'MMM DD, YYYY'\n | 'D MMM YYYY'\n | 'DD MMM YYYY'\n | 'ddd, MMM D, YYYY'\n | 'dddd, MMMM D, YYYY'\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'onChange' | 'min' | 'max' | 'size' | 'disabled' | 'onSelect'\n>\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nconst INPUT_PROP_KEYS = new Set([\n 'accept',\n 'alt',\n 'autoComplete',\n 'autoFocus',\n 'capture',\n 'checked',\n 'dirName',\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'height',\n 'list',\n 'maxLength',\n 'minLength',\n 'multiple',\n 'name',\n 'pattern',\n 'readOnly',\n 'required',\n 'size',\n 'src',\n 'step',\n 'type',\n 'width',\n 'id',\n 'inputMode',\n 'lang',\n 'tabIndex',\n 'title',\n 'role',\n 'style',\n 'onFocus',\n 'onFocusCapture',\n 'onBlurCapture',\n 'onInput',\n 'onInvalid',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyPressCapture',\n 'onKeyUp',\n 'onKeyUpCapture',\n 'onPaste',\n 'onPasteCapture',\n 'onPointerDown',\n 'onPointerDownCapture',\n 'onPointerUp',\n 'onPointerUpCapture',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate'\n])\n\nfunction formatDate(date: Date | null, dateFormat: DateFormat = 'MM/DD/YYYY') {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction parseDate(\n value: string,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n): Date | null {\n if (!value) return null\n const parsed = dateFnsParse(value, DATE_FORMAT_TOKENS[dateFormat], new Date())\n return isValid(parsed) ? parsed : null\n}\n\nexport interface DateInputProps\n extends NativeInputProps, FlattenedCalendarProps {\n date: Date | null\n setDate: (date: Date | null) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n mode?: React.ComponentProps<typeof Calendar>['mode']\n selected?: Date\n onSelect?: (selectedDate: Date | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateInput({\n date,\n setDate,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n mode,\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n onBlur,\n ...restProps\n}: DateInputProps) {\n const resolvedPlaceholder = placeholder ?? DATE_FORMAT_PLACEHOLDER[dateFormat]\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(date ?? null)\n const [value, setValue] = React.useState(formatDate(date ?? null, dateFormat))\n const [inputProps, calendarProps] = React.useMemo(() => {\n const nextInputProps: Record<string, unknown> = {}\n const nextCalendarProps: Record<string, unknown> = {}\n\n for (const [key, val] of Object.entries(restProps)) {\n const isInputProp =\n INPUT_PROP_KEYS.has(key) ||\n key.startsWith('aria-') ||\n key.startsWith('data-')\n\n if (isInputProp) {\n nextInputProps[key] = val\n } else {\n nextCalendarProps[key] = val\n }\n }\n\n return [\n nextInputProps as Partial<React.ComponentProps<typeof Input>>,\n nextCalendarProps as Omit<\n React.ComponentProps<typeof Calendar>,\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n >\n ]\n }, [restProps])\n\n // Calculate effective maxDate\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n // Calculate effective minDate\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default wide range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 100)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 100)\n return d\n }, [effectiveMaxDate, today])\n\n React.useEffect(() => {\n if (date) {\n setValue(formatDate(date, dateFormat))\n setMonthState(date)\n }\n }, [date, dateFormat])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? date ?? undefined\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n const defaultCalendarOnSelect = (selectedDate: Date | undefined) => {\n if (selectedDate) {\n const dateObj = new Date(selectedDate)\n dateObj.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || dateObj >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || dateObj <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(selectedDate)\n setValue(formatDate(selectedDate, dateFormat))\n setOpen(false)\n }\n }\n }\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n\n const isBeforeMin =\n effectiveMinDate !== null && checkDate < effectiveMinDate\n const isAfterMax =\n effectiveMaxDate !== undefined && checkDate > effectiveMaxDate\n\n return isBeforeMin || isAfterMax\n }\n const resolvedCalendarProps = {\n ...calendarProps,\n mode: mode ?? 'single',\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn(\n 'w-auto mx-auto overflow-y-auto h-auto m-2',\n calendarClassName\n ),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: onSelect ?? defaultCalendarOnSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n setValue(inputValue)\n\n const parsedDate = parseDate(inputValue, dateFormat)\n\n if (parsedDate) {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(parsedDate)\n setMonthState(parsedDate)\n }\n } else if (inputValue === '') {\n setDate(null)\n }\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(e)\n }\n\n if (value === '') {\n if (date !== null) {\n setDate(null)\n }\n return\n }\n\n const parsedDate = parseDate(value, dateFormat)\n if (!parsedDate) {\n setValue(formatDate(date, dateFormat))\n } else {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (!isAfterMin || !isBeforeMax) {\n setValue(formatDate(date, dateFormat))\n }\n }\n }\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <div className=\"w-full relative group\">\n <Input\n id=\"date\"\n value={value}\n placeholder={resolvedPlaceholder}\n className={cn(\n 'bg-background cursor-pointer',\n 'group-data-[state=open]:border-focus-ring group-data-[state=open]:hover:border-focus-ring',\n inputClassName\n )}\n onChange={handleInputChange}\n onBlur={handleBlur}\n disabled={isInputDisabled}\n onKeyDown={e => {\n if (e.key === 'ArrowDown' && !isInputDisabled) {\n e.preventDefault()\n setOpen(true)\n }\n }}\n rightIcon={\n <CalendarDays className=\"h-4 w-4 text-muted-foreground\" />\n }\n rightIconOnClick={\n isInputDisabled ? undefined : () => setOpen(!open)\n }\n rightIconButtonProps={{ disabled: isInputDisabled }}\n {...(inputProps as Partial<React.ComponentProps<typeof Input>>)}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px]',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md\">\n <Calendar {...resolvedCalendarProps} />\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from './button'\n\nconst inputVariants = cva(\n [\n // Base styles\n 'file:text-foreground-secondary placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-md border bg-transparent text-base transition-all duration-400',\n 'outline-none font-sans',\n // File input styles\n 'file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium',\n // Disabled styles\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n // Responsive text size\n 'md:text-sm',\n // Default state\n 'border-border-default bg-background',\n // Hover state\n 'hover:border-primary-stroke-default',\n // Focus state\n 'focus:border-focus-ring',\n 'active:border-brand-normal'\n ],\n {\n variants: {\n size: {\n sm: 'h-9 px-3 py-1 text-base',\n md: 'h-10 px-3 py-2 text-base',\n lg: 'h-12 px-4 py-3 text-base'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\ninterface InputProps\n extends Omit<React.ComponentProps<'input'>, 'size'>,\n VariantProps<typeof inputVariants> {\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n leftIconClassName?: string\n rightIconClassName?: string\n rightIconOnClick?: () => void\n rightIconButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>\n error?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n size,\n leftIcon,\n rightIcon,\n leftIconClassName,\n rightIconClassName,\n rightIconOnClick,\n rightIconButtonProps,\n error,\n ...props\n },\n ref\n ) => {\n // Error state styles applied conditionally\n const errorStyles = error\n ? [\n 'border-destructive bg-red-subtle',\n 'focus:border-destructive focus:ring-destructive/20',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive'\n ]\n : []\n\n if (leftIcon || rightIcon) {\n return (\n <div className=\"relative\">\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n inputVariants({ size }),\n errorStyles,\n 'peer',\n leftIcon && 'pl-8',\n rightIcon && 'pr-10',\n className\n )}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n {leftIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'transition-colors stroke-[1.5px]',\n error\n ? 'text-destructive peer-hover:text-destructive peer-focus:text-destructive peer-active:text-destructive'\n : 'text-muted-foreground peer-hover:text-brand-normal peer-focus:text-focus-ring peer-active:text-brand-normal',\n leftIconClassName\n )}\n >\n {React.isValidElement(leftIcon)\n ? (() => {\n const iconEl = leftIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-4 w-4', iconEl.props.className)\n })\n })()\n : leftIcon}\n </div>\n )}\n {rightIcon && (\n <Button\n onClick={rightIconOnClick}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n 'absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'h-6 w-6 rounded-sm transition-colors',\n error\n ? 'text-destructive hover:text-destructive focus:text-destructive'\n : 'text-muted-foreground hover:text-brand-normal focus:text-focus-ring',\n rightIconClassName\n )}\n aria-label=\"Input action\"\n {...rightIconButtonProps}\n >\n {React.isValidElement(rightIcon)\n ? (() => {\n const iconEl = rightIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-4 w-4', iconEl.props.className)\n })\n })()\n : rightIcon}\n </Button>\n )}\n </div>\n )\n }\n\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size }), errorStyles, className)}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport { Input, inputVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { format as dateFnsFormat, isValid } from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport type { DateRange } from 'react-day-picker'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport type { DateFormat } from './date-input'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type { DateRange }\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nfunction formatDate(\n date: Date | null | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction formatRange(\n range: DateRange | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!range) return ''\n const from = formatDate(range.from, dateFormat)\n const to = formatDate(range.to, dateFormat)\n if (from && to) return from === to ? from : `${from} \\u2013 ${to}`\n if (from) return from\n return ''\n}\n\nfunction rangePlaceholder(dateFormat: DateFormat) {\n const p = DATE_FORMAT_PLACEHOLDER[dateFormat]\n return `${p} \\u2013 ${p}`\n}\n\nexport interface DateRangeInputProps extends FlattenedCalendarProps {\n dateRange: DateRange | undefined\n setDateRange: (range: DateRange | undefined) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n placeholder?: string\n selected?: DateRange\n onSelect?: (range: DateRange | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateRangeInput({\n dateRange,\n setDateRange,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n size,\n ...restProps\n}: DateRangeInputProps) {\n const resolvedPlaceholder = placeholder ?? rangePlaceholder(dateFormat)\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(\n dateRange?.from ?? null\n )\n\n const displayValue = formatRange(dateRange, dateFormat)\n\n React.useEffect(() => {\n if (dateRange?.from) {\n setMonthState(dateRange.from)\n }\n }, [dateRange])\n\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default wide range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 100)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 100)\n return d\n }, [effectiveMaxDate, today])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? dateRange\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n\n const isWithinBounds = (d: Date) => {\n const isAfterMin = !effectiveMinDate || d >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || d <= effectiveMaxDate\n return isAfterMin && isBeforeMax\n }\n\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n return !isWithinBounds(checkDate)\n }\n\n const handleCalendarSelect = (range: DateRange | undefined) => {\n if (onSelect) {\n onSelect(range)\n return\n }\n setDateRange(range)\n }\n\n const handleClear = () => {\n setDateRange(undefined)\n }\n\n const handleAdd = () => {\n setOpen(false)\n }\n\n const resolvedCalendarProps = {\n ...restProps,\n mode: 'range' as const,\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn('w-auto shrink-0 h-auto mt-2', calendarClassName),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: handleCalendarSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n isInputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={isInputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n <CalendarDays className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px]',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md flex flex-col overflow-y-auto justify-between\">\n <Calendar {...resolvedCalendarProps} />\n <div className=\"flex flex-col gap-2 px-2 pb-1 shrink-0\">\n <Button\n variant=\"ghost-secondary\"\n size=\"sm\"\n onClick={handleClear}\n type=\"button\"\n >\n Clear\n </Button>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={handleAdd}\n type=\"button\"\n >\n Add\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Drawer as DrawerPrimitive } from 'vaul'\n\nimport { cn } from '@/lib/utils'\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} repositionInputs={false} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n withCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & {\n withCloseButton?: boolean\n}) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background fixed z-50 flex h-auto flex-col',\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm',\n className\n )}\n {...props}\n >\n {withCloseButton && (\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n )}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Context ──────────────────────────────────────────────── */\n\ninterface DropdownSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n value: string\n onValueChange: (value: string) => void\n disabled: boolean\n error: boolean\n placeholder: string\n icon?: React.ReactNode\n displayLabel: string\n options: { value: string; label: string }[]\n registerOption: (value: string, label: string) => void\n highlightedIndex: number\n setHighlightedIndex: (index: number) => void\n}\n\nconst DropdownSelectContext = React.createContext<DropdownSelectContextValue | null>(null)\n\nfunction useDropdownSelect() {\n const ctx = React.useContext(DropdownSelectContext)\n if (!ctx) throw new Error('DropdownSelect compound components must be used within <DropdownSelect>')\n return ctx\n}\n\n/* ─── Root ─────────────────────────────────────────────────── */\n\nexport interface DropdownSelectProps {\n children: React.ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n error?: boolean\n placeholder?: string\n icon?: React.ReactNode\n}\n\nfunction DropdownSelect({\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n placeholder = 'Select',\n icon,\n}: DropdownSelectProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const [options, setOptions] = React.useState<{ value: string; label: string }[]>([])\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n\n const isControlledValue = valueProp !== undefined\n const isControlledOpen = openProp !== undefined\n const value = isControlledValue ? valueProp : internalValue\n const open = isControlledOpen ? openProp : internalOpen\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlledOpen) setInternalOpen(next)\n onOpenChange?.(next)\n },\n [isControlledOpen, onOpenChange]\n )\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlledValue) setInternalValue(next)\n onValueChange?.(next)\n setOpen(false)\n },\n [isControlledValue, onValueChange, setOpen]\n )\n\n const registerOption = React.useCallback((val: string, label: string) => {\n setOptions(prev => {\n if (prev.some(o => o.value === val)) return prev\n return [...prev, { value: val, label }]\n })\n }, [])\n\n const displayLabel = React.useMemo(() => {\n const match = options.find(o => o.value === value)\n return match?.label ?? ''\n }, [options, value])\n\n const ctx = React.useMemo<DropdownSelectContextValue>(\n () => ({\n open,\n setOpen,\n value,\n onValueChange: handleValueChange,\n disabled,\n error,\n placeholder,\n icon,\n displayLabel,\n options,\n registerOption,\n highlightedIndex,\n setHighlightedIndex,\n }),\n [open, setOpen, value, handleValueChange, disabled, error, placeholder, icon, displayLabel, options, registerOption, highlightedIndex, setHighlightedIndex]\n )\n\n return (\n <DropdownSelectContext.Provider value={ctx}>\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </DropdownSelectContext.Provider>\n )\n}\n\n/* ─── Label ────────────────────────────────────────────────── */\n\nexport interface DropdownSelectLabelProps extends React.ComponentProps<'div'> {\n mandatory?: boolean\n}\n\nfunction DropdownSelectLabel({\n className,\n children,\n mandatory = false,\n ...props\n}: DropdownSelectLabelProps) {\n return (\n <div\n data-slot=\"dropdown-select-label\"\n className={cn(\n 'flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details',\n className\n )}\n {...props}\n >\n {children}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">*</span>\n )}\n </div>\n )\n}\n\n/* ─── Trigger ──────────────────────────────────────────────── */\n\nexport type DropdownSelectTriggerProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Trigger>, 'asChild'>\n\nfunction DropdownSelectTrigger({ className, ...props }: DropdownSelectTriggerProps) {\n const { value, displayLabel, placeholder, icon, disabled, error, open, options, setOpen, onValueChange, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n const len = options.length\n if (len === 0) return\n if (e.key === 'ArrowDown') {\n setHighlightedIndex(highlightedIndex < len - 1 ? highlightedIndex + 1 : 0)\n } else {\n setHighlightedIndex(highlightedIndex > 0 ? highlightedIndex - 1 : len - 1)\n }\n } else if (e.key === 'Enter' && open && highlightedIndex >= 0) {\n e.preventDefault()\n const opt = options[highlightedIndex]\n if (opt) onValueChange(opt.value)\n } else if (e.key === 'Escape' && open) {\n e.preventDefault()\n setOpen(false)\n }\n },\n [disabled, open, setOpen, options, highlightedIndex, setHighlightedIndex, onValueChange]\n )\n\n const hasValue = value !== '' && displayLabel !== ''\n\n return (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n data-slot=\"dropdown-select-trigger\"\n disabled={disabled}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n onKeyDown={handleKeyDown}\n className={cn(\n // Base\n 'flex w-full items-center gap-2 h-[48px] rounded-[8px] px-[12px] py-[8px] font-sans font-medium text-[16px] leading-[24px] outline-none transition-colors cursor-pointer',\n // Default state\n 'border border-gray-stroke-default bg-white dark:bg-background',\n // Placeholder vs selected text\n hasValue\n ? 'text-vibrant-text-heading'\n : 'text-muted-foreground',\n // Hover\n !disabled && !error && 'hover:border-focus-ring',\n // Focus\n !disabled && !error && 'focus-visible:border-focus-ring focus-visible:border-2 focus-visible:px-[11px] focus-visible:py-[7px]',\n // Open/Active\n open && !error && 'border-focus-ring',\n // Error\n error && 'border-error-stroke-light bg-error-surface-light',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n <span className=\"flex-1 text-left truncate\">\n {hasValue ? displayLabel : placeholder}\n </span>\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </button>\n </PopoverPrimitive.Trigger>\n )\n}\n\n/* ─── Content ──────────────────────────────────────────────── */\n\nexport type DropdownSelectContentProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Content>, 'asChild'>\n\nfunction DropdownSelectContent({\n className,\n children,\n ...props\n}: DropdownSelectContentProps) {\n const { setHighlightedIndex } = useDropdownSelect()\n\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"dropdown-select-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={() => setHighlightedIndex(-1)}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n // Custom scrollbar\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n // Animations\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {children}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n )\n}\n\n/* ─── Option ───────────────────────────────────────────────── */\n\nexport interface DropdownSelectOptionProps extends React.ComponentProps<'div'> {\n value: string\n label?: string\n disabled?: boolean\n}\n\nfunction DropdownSelectOption({\n className,\n value: optionValue,\n label,\n disabled: optionDisabled = false,\n children,\n ...props\n}: DropdownSelectOptionProps) {\n const { value, onValueChange, registerOption, options, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const displayText = label ?? (typeof children === 'string' ? children : '')\n\n React.useEffect(() => {\n if (displayText) {\n registerOption(optionValue, displayText)\n }\n }, [optionValue, displayText, registerOption])\n\n const isSelected = value === optionValue\n const index = options.findIndex(o => o.value === optionValue)\n const isHighlighted = highlightedIndex === index\n\n return (\n <div\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={optionDisabled}\n data-slot=\"dropdown-select-option\"\n data-highlighted={isHighlighted || undefined}\n data-selected={isSelected || undefined}\n onClick={() => {\n if (!optionDisabled) onValueChange(optionValue)\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n // Hover/highlighted\n 'hover:bg-gray-surface-light hover:font-semibold',\n isHighlighted && 'bg-gray-surface-light font-semibold',\n // Selected\n isSelected && 'font-semibold',\n // Disabled\n optionDisabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {children ?? displayText}\n </div>\n )\n}\n\n/* ─── Exports ──────────────────────────────────────────────── */\n\nexport {\n DropdownSelect,\n DropdownSelectLabel,\n DropdownSelectTrigger,\n DropdownSelectContent,\n DropdownSelectOption,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","'use client'\n\nimport { cn } from '@/lib/utils'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nconst labelTextVariants = cva('font-sans font-semibold ', {\n variants: {\n size: {\n lg: 'text-base md:text-lg md:leading-[1.625rem] leading-[1.5rem]',\n md: 'md:text-base text-sm md:leading-[1.5rem] leading-[1.25rem] ',\n sm: 'md:text-sm text-xs md:leading-[1.25rem] leading-[1.125rem] ',\n xs: 'text-xs leading-[1.125rem]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Label({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'label'> &\n VariantProps<typeof labelTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'label'\n\n return (\n <Comp\n data-slot=\"label\"\n className={cn(labelTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nexport { Label, labelTextVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n )\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </MenubarPortal>\n )\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Types ────────────────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextOption {\n value: string\n label: string\n}\n\n/* ─── Tag ──────────────────────────────────────────────────── */\n\ninterface TagProps {\n label: string\n onRemove: () => void\n}\n\nfunction Tag({ label, onRemove }: TagProps) {\n return (\n <span\n data-slot=\"multi-select-tag\"\n className=\"inline-flex items-center gap-[8px] h-[32px] px-[12px] py-[8px] rounded-[8px] bg-primary-surface-subtle font-sans font-medium text-[14px] leading-[20px] text-primary-stroke-default shrink-0\"\n >\n {label}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n className=\"flex items-center justify-center size-[20px] text-primary-stroke-default hover:text-primary-surface-default transition-colors cursor-pointer\"\n aria-label={`Remove ${label}`}\n >\n <X className=\"size-[16px]\" />\n </button>\n </span>\n )\n}\n\n/* ─── Main Component ───────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextProps {\n /** Current tag values */\n values?: string[]\n /** Default tag values (uncontrolled) */\n defaultValues?: string[]\n /** Callback when tags change */\n onValuesChange?: (values: string[]) => void\n /** Suggestion options shown in dropdown */\n options?: MultiSelectFreeTextOption[]\n /** Placeholder when no tags and no input text */\n placeholder?: string\n /** Left icon */\n icon?: React.ReactNode\n /** Label text */\n label?: string\n /** Show mandatory asterisk on label */\n mandatory?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Additional className */\n className?: string\n}\n\nfunction MultiSelectFreeText({\n values: valuesProp,\n defaultValues = [],\n onValuesChange,\n options = [],\n placeholder = 'Placeholder text',\n icon,\n label,\n mandatory = false,\n disabled = false,\n className,\n}: MultiSelectFreeTextProps) {\n const [internalValues, setInternalValues] = React.useState<string[]>(defaultValues)\n const [inputValue, setInputValue] = React.useState('')\n const [open, setOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const triggerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valuesProp !== undefined\n const values = isControlled ? valuesProp : internalValues\n\n const updateValues = React.useCallback(\n (next: string[]) => {\n if (!isControlled) setInternalValues(next)\n onValuesChange?.(next)\n },\n [isControlled, onValuesChange]\n )\n\n const addTag = React.useCallback(\n (tag: string) => {\n const trimmed = tag.trim()\n if (!trimmed || values.includes(trimmed)) return\n updateValues([...values, trimmed])\n setInputValue('')\n setHighlightedIndex(-1)\n },\n [values, updateValues]\n )\n\n const removeTag = React.useCallback(\n (tag: string) => {\n updateValues(values.filter((v) => v !== tag))\n },\n [values, updateValues]\n )\n\n // Filter options based on input text and already-selected values\n const filteredOptions = React.useMemo(() => {\n const lower = inputValue.toLowerCase()\n return options.filter(\n (opt) =>\n !values.includes(opt.value) &&\n (lower === '' || opt.label.toLowerCase().includes(lower))\n )\n }, [options, inputValue, values])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n if (highlightedIndex >= 0 && filteredOptions[highlightedIndex]) {\n addTag(filteredOptions[highlightedIndex].value)\n } else if (inputValue.trim()) {\n addTag(inputValue)\n }\n } else if (e.key === 'Backspace' && inputValue === '' && values.length > 0) {\n removeTag(values[values.length - 1])\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n } else if (e.key === 'Escape') {\n setOpen(false)\n setHighlightedIndex(-1)\n }\n },\n [highlightedIndex, filteredOptions, inputValue, values, addTag, removeTag, open]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n if (!open) setOpen(true)\n setHighlightedIndex(-1)\n },\n [open]\n )\n\n const handleOptionClick = React.useCallback(\n (optValue: string) => {\n addTag(optValue)\n inputRef.current?.focus()\n },\n [addTag]\n )\n\n const handleTriggerClick = React.useCallback(() => {\n if (disabled) return\n inputRef.current?.focus()\n if (!open) setOpen(true)\n }, [disabled, open])\n\n const isFocused = open\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n <div\n data-slot=\"multi-select-free-text\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">\n *\n </span>\n )}\n </div>\n )}\n\n {/* Input field */}\n <PopoverPrimitive.Anchor asChild>\n <div\n ref={triggerRef}\n onClick={handleTriggerClick}\n className={cn(\n 'flex flex-wrap items-center gap-[8px] w-full min-h-[48px] rounded-[8px] px-[12px] py-[8px] border bg-white dark:bg-background transition-colors cursor-text',\n isFocused && !disabled\n ? 'border-focus-ring'\n : 'border-gray-stroke-default',\n !disabled && !isFocused && 'hover:border-focus-ring',\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n\n {/* Tags + inline input */}\n <div className=\"flex flex-wrap items-center gap-[8px] flex-1 min-w-0\">\n {values.map((tag) => (\n <Tag key={tag} label={tag} onRemove={() => removeTag(tag)} />\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => { if (!open && !disabled) setOpen(true) }}\n disabled={disabled}\n placeholder={values.length === 0 ? placeholder : ''}\n className={cn(\n 'flex-1 min-w-[80px] bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n </div>\n\n {/* Chevron */}\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </div>\n </PopoverPrimitive.Anchor>\n\n {/* Dropdown */}\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"multi-select-free-text-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2'\n )}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {/* Show typed text as \"Free text\" option if it doesn't match any option exactly */}\n {inputValue.trim() !== '' &&\n !options.some(\n (o) => o.label.toLowerCase() === inputValue.toLowerCase()\n ) && (\n <div\n role=\"option\"\n aria-selected={false}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => addTag(inputValue.trim())}\n onMouseEnter={() => setHighlightedIndex(-2)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === -2 &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {inputValue.trim()}\n </div>\n )}\n {filteredOptions.map((opt, idx) => (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={values.includes(opt.value)}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => handleOptionClick(opt.value)}\n onMouseEnter={() => setHighlightedIndex(idx)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === idx &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {opt.label}\n </div>\n ))}\n {filteredOptions.length === 0 && inputValue.trim() === '' && (\n <div className=\"flex items-center h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-muted-foreground\">\n No options available\n </div>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </div>\n </PopoverPrimitive.Root>\n )\n}\n\nexport { MultiSelectFreeText }\n","import * as React from 'react'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cva } from 'class-variance-authority'\nimport { ChevronDownIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n 'group flex flex-1 list-none items-center justify-center gap-1',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn('relative', className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1'\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto',\n 'group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-400 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n 'absolute top-full left-0 isolate z-50 flex justify-center'\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle\n}\n","import * as React from 'react'\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon\n} from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport { Button, buttonVariants } from '@/components/ui/button'\n\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size\n }),\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn('flex size-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis\n}\n","'use client'\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n 'bg-primary/20 relative h-2 w-full overflow-hidden rounded-full',\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all rounded-full\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst progressBarVariants = cva('relative overflow-hidden rounded-[8px]', {\n variants: {\n device: {\n desktop: 'w-[360px] h-[4px]',\n mobile: 'w-[342px] h-[4px]'\n }\n },\n defaultVariants: {\n device: 'desktop'\n }\n})\n\nexport interface ProgressBarProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof progressBarVariants> {\n /** Current step (1-based). Must be between 1 and totalSteps. */\n currentStep?: number\n /** Total number of steps. Defaults to 7. */\n totalSteps?: number\n /** Direct percentage value (0-100). Overrides step-based calculation when provided. */\n value?: number\n}\n\nfunction ProgressBar({\n className,\n device,\n currentStep = 1,\n totalSteps = 7,\n value,\n ...props\n}: ProgressBarProps) {\n const percentage =\n value !== undefined\n ? Math.min(100, Math.max(0, value))\n : Math.min(100, Math.max(0, (currentStep / totalSteps) * 100))\n\n return (\n <div\n data-slot=\"progress-bar\"\n className={cn(progressBarVariants({ device }), className)}\n role=\"progressbar\"\n aria-valuenow={Math.round(percentage)}\n aria-valuemin={0}\n aria-valuemax={100}\n {...props}\n >\n {/* Background track */}\n <div className=\"absolute inset-0 rounded-[8px] bg-primary-surface-light\" />\n {/* Fill */}\n <div\n data-slot=\"progress-bar-fill\"\n className=\"absolute inset-y-0 left-0 rounded-[8px] bg-primary-surface-default transition-[width] duration-300 ease-in-out\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n}\n\nexport { ProgressBar, progressBarVariants }\n","'use client'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { CircleIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'border-input text-primary focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border transition-all duration-400 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-white absolute top-1/2 left-1/2 size-1.5 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","'use client'\n\nimport * as React from 'react'\nimport { Search, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Suggestion Item ──────────────────────────────────────── */\n\nexport interface SearchSuggestion {\n icon?: React.ReactNode\n label: string\n}\n\n/* ─── Props ────────────────────────────────────────────────── */\n\nexport interface SearchInputProps {\n /** 'icon' renders a 36×36 search icon button; 'button' renders a \"Search\" text button */\n variant?: 'icon' | 'button'\n /** Controlled value */\n value?: string\n /** Uncontrolled default value */\n defaultValue?: string\n /** Called on every input change */\n onValueChange?: (value: string) => void\n /** Called on Enter key or search button click */\n onSearch?: (value: string) => void\n /** Called when the clear (X) button is clicked */\n onClear?: () => void\n placeholder?: string\n /** Label text above the input */\n label?: string\n /** Helper text below the input */\n helperText?: string\n /** Optional left icon */\n icon?: React.ReactNode\n /** Error state */\n error?: boolean\n /** Error helper text (overrides helperText when error=true) */\n errorMessage?: string\n /** Disabled state */\n disabled?: boolean\n /** Suggestion items shown in dropdown when typing */\n suggestions?: SearchSuggestion[]\n /** Called when a suggestion is clicked */\n onSuggestionClick?: (label: string) => void\n className?: string\n}\n\nfunction SearchInput({\n variant = 'icon',\n value: valueProp,\n defaultValue = '',\n onValueChange,\n onSearch,\n onClear,\n placeholder = 'Placeholder',\n label,\n helperText,\n icon,\n error = false,\n errorMessage,\n disabled = false,\n suggestions = [],\n onSuggestionClick,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [isFocused, setIsFocused] = React.useState(false)\n const [showSuggestions, setShowSuggestions] = React.useState(false)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valueProp !== undefined\n const currentValue = isControlled ? valueProp : internalValue\n const hasValue = currentValue.trim().length > 0\n const isFilledEdit = hasValue && !isFocused && !error\n\n const updateValue = React.useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next)\n onValueChange?.(next)\n },\n [isControlled, onValueChange]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n updateValue(e.target.value)\n if (e.target.value.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n } else {\n setShowSuggestions(false)\n }\n },\n [updateValue, suggestions.length]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n onSearch?.(currentValue)\n setShowSuggestions(false)\n } else if (e.key === 'Escape') {\n setShowSuggestions(false)\n inputRef.current?.blur()\n }\n },\n [currentValue, onSearch]\n )\n\n const handleClear = React.useCallback(() => {\n updateValue('')\n onClear?.()\n inputRef.current?.focus()\n }, [updateValue, onClear])\n\n const handleSearchClick = React.useCallback(() => {\n onSearch?.(currentValue)\n setShowSuggestions(false)\n }, [currentValue, onSearch])\n\n const handleSuggestionClick = React.useCallback(\n (label: string) => {\n updateValue(label)\n onSuggestionClick?.(label)\n setShowSuggestions(false)\n inputRef.current?.focus()\n },\n [updateValue, onSuggestionClick]\n )\n\n const handleFocus = React.useCallback(() => {\n if (disabled) return\n setIsFocused(true)\n if (currentValue.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n }\n }, [disabled, currentValue, suggestions.length])\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent) => {\n // Don't blur if clicking inside the container (e.g., search button, suggestion)\n if (containerRef.current?.contains(e.relatedTarget as Node)) return\n setIsFocused(false)\n setShowSuggestions(false)\n },\n []\n )\n\n const displayHelperText = error && errorMessage ? errorMessage : helperText\n const showClearButton = (isFilledEdit || error) && hasValue\n\n return (\n <div\n ref={containerRef}\n data-slot=\"search-input\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n onBlur={handleBlur}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n </div>\n )}\n\n {/* Input container */}\n <div\n className={cn(\n 'flex items-center w-full h-[48px] rounded-[8px] overflow-hidden transition-colors',\n // Border + background\n error\n ? 'border border-error-stroke-light bg-error-surface-light'\n : isFocused\n ? 'border-2 border-focus-ring bg-white dark:bg-background'\n : 'border border-gray-stroke-default bg-white dark:bg-background',\n // Hover (only when not focused, not error, not disabled)\n !isFocused && !error && !disabled && 'hover:border-focus-ring',\n // Padding - adjust for 2px border on focus to prevent layout shift\n error\n ? 'pl-[12px] pr-[12px] py-[8px]'\n : isFocused\n ? 'pl-[11px] pr-[7px] py-[7px]'\n : 'pl-[12px] pr-[8px] py-[8px]',\n // Gap\n 'gap-[8px]',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px]',\n error ? 'text-error-surface-default' : isFocused ? 'text-focus-ring' : 'text-muted-foreground'\n )}\n >\n {icon}\n </span>\n )}\n\n {/* Text input */}\n <input\n ref={inputRef}\n type=\"text\"\n value={currentValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n disabled={disabled}\n placeholder={placeholder}\n className={cn(\n 'flex-1 min-w-0 bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n\n {/* Right action: Search button, icon, or clear */}\n {showClearButton ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"flex items-center justify-center shrink-0 size-[20px] text-muted-foreground hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <X className=\"size-[16px]\" />\n </button>\n ) : variant === 'button' ? (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 h-[36px] min-w-[100px] px-[16px] py-[8px] rounded-[6px] bg-primary-surface-default font-sans font-semibold text-[16px] leading-[24px] text-white cursor-pointer disabled:cursor-not-allowed transition-colors\"\n tabIndex={-1}\n >\n Search\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 size-[36px] rounded-[6px] bg-primary-surface-default cursor-pointer disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Search\"\n tabIndex={-1}\n >\n <Search className=\"size-[20px] text-white\" />\n </button>\n )}\n </div>\n\n {/* Helper text */}\n {displayHelperText && (\n <p\n className={cn(\n 'font-sans font-normal text-[12px] leading-[16px] w-full',\n error ? 'text-error-surface-default' : 'text-vibrant-text-details'\n )}\n >\n {displayHelperText}\n </p>\n )}\n\n {/* Suggestions dropdown */}\n {showSuggestions && suggestions.length > 0 && (\n <div\n data-slot=\"search-input-suggestions\"\n className=\"w-full rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)] flex flex-col gap-[16px]\"\n >\n {suggestions.map((suggestion, idx) => (\n <button\n key={`${suggestion.label}-${idx}`}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion.label)}\n onMouseDown={(e) => e.preventDefault()}\n className=\"flex items-center gap-[13px] h-[40px] pr-[12px] rounded-[8px] w-full text-left hover:bg-gray-surface-light transition-colors cursor-pointer\"\n >\n {suggestion.icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[40px] rounded-[8px] bg-gray-surface-light [&_svg]:size-[20px] text-muted-foreground\">\n {suggestion.icon}\n </span>\n )}\n <span className=\"flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate\">\n {suggestion.label}\n </span>\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { SearchInput }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronsUpDown, XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\"\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport type SearchableSelectOption = {\n value: string\n label: string\n disabled?: boolean\n group?: string\n}\n\n// ─── Context ─────────────────────────────────────────────────────────\n\ninterface SearchableSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n mode: \"single\" | \"multiple\"\n value: string\n setValue: (value: string) => void\n values: string[]\n setValues: (values: string[]) => void\n searchable: boolean\n searchPlaceholder: string\n placeholder: string\n disabled: boolean\n maxCount: number\n options: SearchableSelectOption[]\n optionMap: Map<string, string>\n}\n\nconst SearchableSelectContext =\n React.createContext<SearchableSelectContextValue | null>(null)\n\nfunction useSearchableSelect() {\n const ctx = React.useContext(SearchableSelectContext)\n if (!ctx) {\n throw new Error(\n \"SearchableSelect compound components must be used within <SearchableSelect>\"\n )\n }\n return ctx\n}\n\n// ─── Root ────────────────────────────────────────────────────────────\n\ninterface SearchableSelectProps {\n mode?: \"single\" | \"multiple\"\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n values?: string[]\n defaultValues?: string[]\n onValuesChange?: (values: string[]) => void\n searchable?: boolean\n searchPlaceholder?: string\n placeholder?: string\n disabled?: boolean\n maxCount?: number\n options?: SearchableSelectOption[]\n open?: boolean\n onOpenChange?: (open: boolean) => void\n children?: React.ReactNode\n}\n\nfunction SearchableSelect({\n mode = \"single\",\n value: controlledValue,\n defaultValue = \"\",\n onValueChange,\n values: controlledValues,\n defaultValues = [],\n onValuesChange,\n searchable = true,\n searchPlaceholder = \"Search...\",\n placeholder = \"Select...\",\n disabled = false,\n maxCount = Infinity,\n options = [],\n open: controlledOpen,\n onOpenChange,\n children,\n}: SearchableSelectProps) {\n const [internalOpen, setInternalOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalValues, setInternalValues] =\n React.useState<string[]>(defaultValues)\n\n const open = controlledOpen ?? internalOpen\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (controlledOpen !== undefined) {\n onOpenChange?.(next)\n } else {\n setInternalOpen(next)\n onOpenChange?.(next)\n }\n },\n [controlledOpen, onOpenChange]\n )\n\n const value = controlledValue ?? internalValue\n const setValue = React.useCallback(\n (next: string) => {\n if (controlledValue === undefined) {\n setInternalValue(next)\n }\n onValueChange?.(next)\n },\n [controlledValue, onValueChange]\n )\n\n const values = controlledValues ?? internalValues\n const setValues = React.useCallback(\n (next: string[]) => {\n if (controlledValues === undefined) {\n setInternalValues(next)\n }\n onValuesChange?.(next)\n },\n [controlledValues, onValuesChange]\n )\n\n const optionMap = React.useMemo(() => {\n const map = new Map<string, string>()\n for (const opt of options) {\n map.set(opt.value, opt.label)\n }\n return map\n }, [options])\n\n const ctx = React.useMemo<SearchableSelectContextValue>(\n () => ({\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n }),\n [\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n ]\n )\n\n return (\n <SearchableSelectContext.Provider value={ctx}>\n <Popover open={open} onOpenChange={setOpen}>\n {children}\n </Popover>\n </SearchableSelectContext.Provider>\n )\n}\n\n// ─── Trigger ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof PopoverTrigger> & {\n size?: \"sm\" | \"default\"\n}) {\n const ctx = useSearchableSelect()\n\n const renderContent = () => {\n if (children) return children\n\n if (ctx.mode === \"single\") {\n const label = ctx.optionMap.get(ctx.value)\n return (\n <span\n data-slot=\"searchable-select-value\"\n className={cn(\n \"truncate\",\n !label && \"text-muted-foreground\"\n )}\n >\n {label || ctx.placeholder}\n </span>\n )\n }\n\n // Multi mode\n if (ctx.values.length === 0) {\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"text-muted-foreground\"\n >\n {ctx.placeholder}\n </span>\n )\n }\n\n const visible = ctx.values.slice(0, ctx.maxCount)\n const remaining = ctx.values.length - visible.length\n\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"flex flex-wrap items-center gap-1\"\n >\n {visible.map((v) => (\n <Badge\n key={v}\n variant=\"secondary\"\n className=\"gap-1 pr-1\"\n >\n <span className=\"truncate max-w-[120px]\">\n {ctx.optionMap.get(v) || v}\n </span>\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label={`Remove ${ctx.optionMap.get(v) || v}`}\n className=\"rounded-sm hover:bg-muted cursor-pointer\"\n onPointerDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation()\n ctx.setValues(ctx.values.filter((val) => val !== v))\n }}\n >\n <XIcon className=\"size-3\" />\n </span>\n </Badge>\n ))}\n {remaining > 0 && (\n <Badge variant=\"outline\" className=\"text-muted-foreground\">\n +{remaining} more\n </Badge>\n )}\n </span>\n )\n }\n\n return (\n <PopoverTrigger\n data-slot=\"searchable-select-trigger\"\n data-size={size}\n disabled={ctx.disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:min-h-9 data-[size=sm]:min-h-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ctx.mode === \"multiple\" && \"h-auto flex-wrap whitespace-normal\",\n className\n )}\n {...props}\n >\n {renderContent()}\n <ChevronsUpDown className=\"size-4 shrink-0 opacity-50\" />\n </PopoverTrigger>\n )\n}\n\n// ─── Content ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectContent({\n className,\n children,\n emptyText = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof PopoverContent> & {\n emptyText?: string\n}) {\n const ctx = useSearchableSelect()\n\n const groupedOptions = React.useMemo(() => {\n if (ctx.options.length === 0) return null\n const groups = new Map<string, SearchableSelectOption[]>()\n for (const opt of ctx.options) {\n const key = opt.group || \"\"\n if (!groups.has(key)) groups.set(key, [])\n groups.get(key)!.push(opt)\n }\n return groups\n }, [ctx.options])\n\n const renderAutoItems = () => {\n if (!groupedOptions) return null\n const entries = Array.from(groupedOptions.entries())\n if (entries.length === 1 && entries[0][0] === \"\") {\n return entries[0][1].map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))\n }\n return entries.map(([group, opts]) => (\n <SearchableSelectGroup key={group} heading={group || undefined}>\n {opts.map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))}\n </SearchableSelectGroup>\n ))\n }\n\n return (\n <PopoverContent\n data-slot=\"searchable-select-content\"\n className={cn(\"w-[var(--radix-popover-trigger-width)] p-0\", className)}\n align=\"start\"\n {...props}\n >\n <Command>\n {ctx.searchable && (\n <CommandInput placeholder={ctx.searchPlaceholder} />\n )}\n <CommandList>\n <CommandEmpty>{emptyText}</CommandEmpty>\n {children || renderAutoItems()}\n </CommandList>\n </Command>\n </PopoverContent>\n )\n}\n\n// ─── Item ────────────────────────────────────────────────────────────\n\nfunction SearchableSelectItem({\n className,\n value,\n children,\n disabled,\n ...props\n}: Omit<React.ComponentProps<typeof CommandItem>, \"onSelect\" | \"value\"> & {\n value: string\n disabled?: boolean\n}) {\n const ctx = useSearchableSelect()\n\n const isSelected =\n ctx.mode === \"single\"\n ? ctx.value === value\n : ctx.values.includes(value)\n\n const handleSelect = () => {\n if (disabled) return\n if (ctx.mode === \"single\") {\n ctx.setValue(value === ctx.value ? \"\" : value)\n ctx.setOpen(false)\n } else {\n ctx.setValues(\n isSelected\n ? ctx.values.filter((v) => v !== value)\n : [...ctx.values, value]\n )\n }\n }\n\n return (\n <CommandItem\n data-slot=\"searchable-select-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none\",\n ctx.mode === \"multiple\" && \"pl-8\",\n className\n )}\n onSelect={handleSelect}\n data-disabled={disabled || undefined}\n {...props}\n >\n {ctx.mode === \"multiple\" && (\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <span\n className={cn(\n \"size-4 rounded-sm border border-primary transition-colors\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"bg-transparent\"\n )}\n >\n {isSelected && <CheckIcon className=\"size-4 p-0.5\" />}\n </span>\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {ctx.mode === \"single\" && isSelected && (\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <CheckIcon className=\"size-4\" />\n </span>\n )}\n </CommandItem>\n )\n}\n\n// ─── Group ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandGroup>) {\n return (\n <CommandGroup\n data-slot=\"searchable-select-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\n// ─── Empty ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectEmpty({\n className,\n children = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof CommandEmpty>) {\n return (\n <CommandEmpty\n data-slot=\"searchable-select-empty\"\n className={cn(className)}\n {...props}\n >\n {children}\n </CommandEmpty>\n )\n}\n\n// ─── Exports ─────────────────────────────────────────────────────────\n\nexport {\n SearchableSelect,\n SearchableSelectTrigger,\n SearchableSelectContent,\n SearchableSelectItem,\n SearchableSelectGroup,\n SearchableSelectEmpty,\n}\n\nexport type { SearchableSelectProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","'use client'\n\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger\n}\n","'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { PanelLeftIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Separator } from '@/components/ui/separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle\n} from '@/components/ui/sheet'\nimport { Skeleton } from '@/components/ui/skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n} from '@/components/ui/tooltip'\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { cn } from '@/lib/utils'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '18rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-9', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('bg-background h-8 w-full shadow-none', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'default'\n }\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar\n}\n","import { cn } from '@/lib/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn('bg-accent animate-pulse rounded-md', className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport interface RichTooltipContentProps\n extends Omit<React.ComponentProps<typeof TooltipPrimitive.Content>, 'children'> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n children: React.ReactNode\n}\n\nfunction RichTooltipContent({\n className,\n sideOffset = 4,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n ...props\n}: RichTooltipContentProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"rich-tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 origin-(--radix-tooltip-content-transform-origin)\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-start gap-3 bg-gray-surface-dark rounded-[12px] px-3 py-4 text-sm leading-5 max-w-sm\">\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 text-white [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5 text-white\">\n {heading}\n </p>\n )}\n <div className=\"font-normal text-sm leading-5 text-white\">\n {children}\n </div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"flex items-center justify-center shrink-0 size-5 text-white/70 hover:text-white transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-2.5\" />\n </button>\n )}\n </div>\n <TooltipPrimitive.Arrow\n width={16}\n height={12}\n className=\"fill-gray-surface-dark\"\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, RichTooltipContent }\n","import * as React from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport * as React from 'react'\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger\n} from './dialog'\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger\n} from './drawer'\nimport { useMediaQuery } from './useMediaQuery'\n\ntype SmartDialogProps = React.ComponentProps<typeof Dialog> &\n React.ComponentProps<typeof Drawer>\n\nconst SmartDialog = ({ children, ...props }: SmartDialogProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <Drawer {...props}>{children}</Drawer>\n ) : (\n <Dialog {...props}>{children}</Dialog>\n )\n}\n\ntype SmartDialogContentProps = React.ComponentProps<typeof DialogContent> &\n React.ComponentProps<typeof DrawerContent>\n\nconst SmartDialogContent = ({\n children,\n overlayClassName = '',\n withCloseButton,\n showCloseButton,\n ...props\n}: SmartDialogContentProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerContent\n {...props}\n withCloseButton={withCloseButton ?? showCloseButton ?? true}\n >\n {children}\n </DrawerContent>\n ) : (\n <DialogContent\n {...props}\n showCloseButton={showCloseButton ?? withCloseButton ?? true}\n overlayClassName={overlayClassName}\n >\n {children}\n </DialogContent>\n )\n}\n\ntype SmartDialogDescriptionProps = React.ComponentProps<\n typeof DialogDescription\n> &\n React.ComponentProps<typeof DrawerDescription>\n\nconst SmartDialogDescription = ({\n children,\n ...props\n}: SmartDialogDescriptionProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerDescription {...props}>{children}</DrawerDescription>\n ) : (\n <DialogDescription {...props}>{children}</DialogDescription>\n )\n}\n\ntype SmartDialogHeaderProps = React.ComponentProps<typeof DialogHeader> &\n React.ComponentProps<typeof DrawerHeader>\n\nconst SmartDialogHeader = ({ children, ...props }: SmartDialogHeaderProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerHeader {...props}>{children}</DrawerHeader>\n ) : (\n <DialogHeader {...props}>{children}</DialogHeader>\n )\n}\n\ntype SmartDialogTitleProps = React.ComponentProps<typeof DialogTitle> &\n React.ComponentProps<typeof DrawerTitle>\n\nconst SmartDialogTitle = ({ children, ...props }: SmartDialogTitleProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTitle {...props}>{children}</DrawerTitle>\n ) : (\n <DialogTitle {...props}>{children}</DialogTitle>\n )\n}\n\ntype SmartDialogTriggerProps = React.ComponentProps<typeof DialogTrigger> &\n React.ComponentProps<typeof DrawerTrigger>\n\nconst SmartDialogTrigger = ({\n children,\n ...props\n}: SmartDialogTriggerProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTrigger {...props}>{children}</DrawerTrigger>\n ) : (\n <DialogTrigger {...props}>{children}</DialogTrigger>\n )\n}\n\ntype SmartDialogFooterProps = React.ComponentProps<typeof DialogFooter> &\n React.ComponentProps<typeof DrawerFooter>\n\nconst SmartDialogFooter = ({ children, ...props }: SmartDialogFooterProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerFooter {...props}>{children}</DrawerFooter>\n ) : (\n <DialogFooter {...props}>{children}</DialogFooter>\n )\n}\n\ntype SmartDialogCloseProps = React.ComponentProps<typeof DialogClose> &\n React.ComponentProps<typeof DrawerClose>\n\nconst SmartDialogClose = ({ children, ...props }: SmartDialogCloseProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <>\n <DrawerClose {...props}>{children}</DrawerClose>\n </>\n ) : (\n <DialogClose {...props}>{children}</DialogClose>\n )\n}\n\nexport {\n SmartDialog,\n SmartDialogClose,\n SmartDialogContent,\n SmartDialogDescription,\n SmartDialogFooter,\n SmartDialogHeader,\n SmartDialogTitle,\n SmartDialogTrigger\n}\n","import { useEffect, useState } from 'react'\n\nexport function useMediaQuery(query: string): boolean {\n const getMatches = (query: string): boolean => {\n // Prevents SSR issues\n if (typeof window !== 'undefined') {\n return window.matchMedia(query).matches\n }\n return false\n }\n\n const [matches, setMatches] = useState<boolean>(getMatches(query))\n\n function handleChange() {\n setMatches(getMatches(query))\n }\n\n useEffect(() => {\n const matchMedia = window.matchMedia(query)\n\n // Triggered at the first client-side load and if query changes\n handleChange()\n\n // Listen matchMedia\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange)\n } else {\n matchMedia.addEventListener('change', handleChange)\n }\n\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange)\n } else {\n matchMedia.removeEventListener('change', handleChange)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query])\n\n return matches\n}\n","\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","'use client'\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-brand-text-vibrant dark:data-[state=unchecked]:bg-input/80 inline-flex h-[24px] w-[40px] shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-offset-1 ',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-5 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-3px)] data-[state=unchecked]:translate-x-[1px]'\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client'\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n/* ─── Internal Context ─────────────────────────────────────── */\n\ntype TabsContextValue = {\n orientation: 'horizontal' | 'vertical'\n}\n\nconst TabsContext = React.createContext<TabsContextValue>({\n orientation: 'horizontal'\n})\n\n/* ─── useTabIndicator hook ─────────────────────────────────── */\n\nfunction useTabIndicator(\n listRef: React.RefObject<HTMLElement | null>,\n orientation: 'horizontal' | 'vertical'\n) {\n const [style, setStyle] = React.useState<React.CSSProperties>({\n position: 'absolute',\n opacity: 0\n })\n const isFirstMeasurement = React.useRef(true)\n\n const measure = React.useCallback(() => {\n const list = listRef.current\n if (!list) return\n\n requestAnimationFrame(() => {\n const activeEl = list.querySelector<HTMLElement>(\n '[data-state=\"active\"]'\n )\n if (!activeEl) return\n\n const noTransition = isFirstMeasurement.current\n\n if (orientation === 'horizontal') {\n setStyle({\n position: 'absolute',\n bottom: 0,\n left: 0,\n height: '2px',\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, width 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n } else {\n setStyle({\n position: 'absolute',\n left: 0,\n top: 0,\n width: '2px',\n height: activeEl.offsetHeight,\n transform: `translateY(${activeEl.offsetTop}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, height 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n }\n\n if (noTransition) {\n isFirstMeasurement.current = false\n }\n })\n }, [listRef, orientation])\n\n React.useEffect(() => {\n const list = listRef.current\n if (!list) return\n\n // Initial measurement\n measure()\n\n // Observe data-state changes on triggers\n const mutationObserver = new MutationObserver(() => {\n measure()\n })\n mutationObserver.observe(list, {\n subtree: true,\n attributes: true,\n attributeFilter: ['data-state'],\n childList: true\n })\n\n // Observe resize\n const resizeObserver = new ResizeObserver(() => {\n measure()\n })\n resizeObserver.observe(list)\n\n return () => {\n mutationObserver.disconnect()\n resizeObserver.disconnect()\n }\n }, [listRef, measure])\n\n return { style }\n}\n\n/* ─── Tabs (Root) ──────────────────────────────────────────── */\n\nfunction Tabs({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n const ctx = React.useMemo(\n () => ({ orientation: orientation ?? 'horizontal' }),\n [orientation]\n ) as TabsContextValue\n\n return (\n <TabsContext.Provider value={ctx}>\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={cn(\n orientation === 'vertical' ? 'flex flex-row gap-4' : 'flex flex-col gap-2',\n className\n )}\n {...props}\n />\n </TabsContext.Provider>\n )\n}\n\n/* ─── TabsList ─────────────────────────────────────────────── */\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n const listRef = React.useRef<HTMLDivElement>(null)\n const { orientation } = React.useContext(TabsContext)\n const { style: indicatorStyle } = useTabIndicator(listRef, orientation)\n\n return (\n <TabsPrimitive.List\n ref={listRef}\n data-slot=\"tabs-list\"\n className={cn(\n 'text-muted-foreground relative',\n orientation === 'vertical'\n ? 'flex flex-col border-l border-l-gray-stroke-default'\n : 'flex w-fit items-center overflow-x-auto border-b border-b-gray-stroke-default',\n className\n )}\n {...props}\n >\n {props.children}\n <span data-slot=\"tabs-indicator\" style={indicatorStyle} />\n </TabsPrimitive.List>\n )\n}\n\n/* ─── TabsTrigger ──────────────────────────────────────────── */\n\nconst tabsTriggerVariants = cva(\n 'cursor-pointer inline-flex shrink-0 items-center justify-center font-sans font-medium whitespace-nowrap transition-[color,box-shadow] text-vibrant-text-details data-[state=active]:font-semibold data-[state=active]:text-vibrant-text-heading disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4',\n {\n variants: {\n size: {\n md: 'text-sm leading-5',\n lg: 'text-base leading-6'\n },\n orientation: {\n horizontal: 'pb-1 px-2',\n vertical: 'py-1.5 px-3 justify-start text-left w-full'\n }\n },\n compoundVariants: [\n { orientation: 'horizontal', size: 'md', class: 'min-w-[72px]' },\n { orientation: 'horizontal', size: 'lg', class: 'min-w-[88px]' }\n ],\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal'\n }\n }\n)\n\nexport interface TabsTriggerProps\n extends React.ComponentProps<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {}\n\nfunction TabsTrigger({\n className,\n size,\n children,\n ...props\n}: TabsTriggerProps) {\n const { orientation } = React.useContext(TabsContext)\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(tabsTriggerVariants({ size, orientation }), className)}\n {...props}\n >\n <span\n className={cn(\n 'inline-flex items-center justify-center gap-1.5 rounded-[6px] hover:bg-gray-surface-light',\n orientation === 'vertical'\n ? 'px-2 py-1.5 w-full'\n : 'px-2 py-1.5'\n )}\n >\n {children}\n </span>\n </TabsPrimitive.Trigger>\n )\n}\n\n/* ─── TabsContent ──────────────────────────────────────────── */\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn('flex-1 outline-none', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsTriggerVariants }\n","'use client'\n\nimport {\n ThemeProvider as NextThemesProvider,\n type ThemeProviderProps\n} from 'next-themes'\n\nfunction ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemesProvider\n attribute=\"class\"\n defaultTheme=\"light\"\n enableSystem\n disableTransitionOnChange\n {...props}\n >\n {children}\n </NextThemesProvider>\n )\n}\n\nexport { ThemeProvider, type ThemeProviderProps }\n","'use client'\n\nimport { Monitor, Moon, Sun } from 'lucide-react'\nimport { useTheme } from 'next-themes'\nimport * as React from 'react'\nimport { Button } from './button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger\n} from './dropdown-menu'\n\nfunction ThemeToggle({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { setTheme } = useTheme()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"icon\" className={className} {...props}>\n <Sun className=\"size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <Moon className=\"absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>\n <Sun className=\"size-4\" />\n Light\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>\n <Moon className=\"size-4\" />\n Dark\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>\n <Monitor className=\"size-4\" />\n System\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ThemeToggle }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { Clock } from 'lucide-react'\nimport * as React from 'react'\nimport { Button } from './button'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type TimeFormat = '12h' | '24h' | 'h:mm a' | 'h:mm A'\n\nexport interface TimeValue {\n hours: number\n minutes: number\n}\n\nconst TIME_FORMAT_PLACEHOLDER: Record<TimeFormat, string> = {\n '12h': 'hh:mm AM/PM',\n '24h': 'HH:mm',\n 'h:mm a': 'h:mm am/pm',\n 'h:mm A': 'h:mm AM/PM'\n}\n\nfunction is24HourFormat(tf: TimeFormat): boolean {\n return tf === '24h'\n}\n\nfunction formatTime(\n time: TimeValue | null,\n timeFormat: TimeFormat = '12h'\n): string {\n if (!time) return ''\n const { hours, minutes } = time\n const h24 = String(hours).padStart(2, '0')\n const m = String(minutes).padStart(2, '0')\n const h12 = hours % 12 || 12\n const h12p = String(h12).padStart(2, '0')\n const period = hours >= 12 ? 'PM' : 'AM'\n\n switch (timeFormat) {\n case '24h':\n return `${h24}:${m}`\n case 'h:mm a':\n return `${h12}:${m} ${period.toLowerCase()}`\n case 'h:mm A':\n return `${h12}:${m} ${period}`\n case '12h':\n default:\n return `${h12p}:${m} ${period}`\n }\n}\n\nfunction getDisplayHour(hours: number, timeFormat: TimeFormat): number {\n if (is24HourFormat(timeFormat)) return hours\n return hours % 12 || 12\n}\n\nfunction getPeriod(hours: number): 'AM' | 'PM' {\n return hours >= 12 ? 'PM' : 'AM'\n}\n\nexport interface TimeInputProps {\n time: TimeValue | null\n setTime: (time: TimeValue | null) => void\n timeFormat?: TimeFormat\n minuteStep?: number\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n placeholder?: string\n icon?: React.ReactNode\n formatDisplay?: (time: TimeValue) => string\n}\n\nexport function TimeInput({\n time,\n setTime,\n timeFormat = '12h',\n minuteStep = 1,\n inputDisabled,\n className,\n inputClassName,\n popoverContentClassName,\n popoverContentProps,\n size,\n placeholder,\n icon,\n formatDisplay\n}: TimeInputProps) {\n const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat]\n\n const displayValue = React.useMemo(() => {\n if (!time) return ''\n if (formatDisplay) return formatDisplay(time)\n return formatTime(time, timeFormat)\n }, [time, formatDisplay, timeFormat])\n\n const [open, setOpen] = React.useState(false)\n\n const hoursRef = React.useRef<HTMLDivElement>(null)\n const minutesRef = React.useRef<HTMLDivElement>(null)\n const periodRef = React.useRef<HTMLDivElement>(null)\n\n const scrollToSelected = React.useCallback(() => {\n requestAnimationFrame(() => {\n for (const ref of [hoursRef, minutesRef, periodRef]) {\n const container = ref.current\n if (!container) continue\n const selected = container.querySelector('[data-selected=\"true\"]')\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' })\n }\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (open) {\n scrollToSelected()\n }\n }, [open, scrollToSelected])\n\n const handleHourSelect = (hour: number) => {\n let h24: number\n if (is24HourFormat(timeFormat)) {\n h24 = hour\n } else {\n const currentPeriod = time ? getPeriod(time.hours) : 'AM'\n if (currentPeriod === 'AM') {\n h24 = hour === 12 ? 0 : hour\n } else {\n h24 = hour === 12 ? 12 : hour + 12\n }\n }\n setTime({ hours: h24, minutes: time?.minutes ?? 0 })\n }\n\n const handleMinuteSelect = (minute: number) => {\n setTime({ hours: time?.hours ?? 0, minutes: minute })\n }\n\n const handlePeriodSelect = (period: 'AM' | 'PM') => {\n const currentHours = time?.hours ?? 0\n const currentH12 = currentHours % 12\n const newHours = period === 'AM' ? currentH12 : currentH12 + 12\n setTime({ hours: newHours, minutes: time?.minutes ?? 0 })\n }\n\n const hoursList = is24HourFormat(timeFormat)\n ? Array.from({ length: 24 }, (_, i) => i)\n : Array.from({ length: 12 }, (_, i) => i + 1)\n\n const minutesList = Array.from(\n { length: Math.ceil(60 / minuteStep) },\n (_, i) => i * minuteStep\n )\n\n const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null\n const selectedMinute = time?.minutes ?? null\n const selectedPeriod = time ? getPeriod(time.hours) : null\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={inputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n inputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={inputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n {icon !== undefined ? (\n icon\n ) : (\n <Clock className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn('w-auto p-0', popoverContentClassName)}\n onOpenAutoFocus={e => e.preventDefault()}\n {...popoverContentProps}\n >\n <div className=\"flex divide-x border border-focus-ring rounded-md\">\n {/* Hours */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div ref={hoursRef} className=\"flex flex-col p-1 \">\n {hoursList.map(h => (\n <Button\n key={h}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedH12 === h}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedH12 === h &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleHourSelect(h)}\n >\n {String(h).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* Minutes */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div\n ref={minutesRef}\n className={cn(\n 'flex flex-col p-1',\n minutesList.length <= 12 && 'h-full justify-center'\n )}\n >\n {minutesList.map(m => (\n <Button\n key={m}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedMinute === m}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedMinute === m &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleMinuteSelect(m)}\n >\n {String(m).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* AM/PM */}\n {!is24HourFormat(timeFormat) && (\n <div className=\"flex flex-col p-1 justify-center gap-1\">\n {(['AM', 'PM'] as const).map(p => (\n <Button\n key={p}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedPeriod === p}\n className={cn(\n 'w-14 justify-center text-sm',\n selectedPeriod === p &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handlePeriodSelect(p)}\n >\n {p}\n </Button>\n ))}\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst displayTextVariants = cva(\n 'tracking-normal font-normal leading-none text-brand-dark font-serif italic',\n {\n variants: {\n size: {\n md: 'text-[1.75rem] md:text-4xl leading-[2.75rem] md:leading-[4rem]',\n sm: 'text-lg md:text-xl leading-[2.5rem] md:leading-[3rem]',\n lg: 'text-4xl md:text-[3.25rem] leading-[4rem] md:leading-[5rem]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nfunction DisplayHeading({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> &\n VariantProps<typeof displayTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(displayTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nconst bodyTextVariants = cva('font-sans ', {\n variants: {\n size: {\n lg: 'text-lg md:text-xl leading-[1.625rem] md:leading-[1.75rem]',\n md: 'text-base leading-[1.5rem] ',\n sm: 'text-sm leading-[1.25rem] ',\n xs: 'text-xs leading-[1rem]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Body({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> &\n VariantProps<typeof bodyTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'p'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(bodyTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nfunction HeadingXL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(\n 'text-2xl md:text-[2rem] md:leading-[2.5rem] leading-[2rem] font-semibold font-sans',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h2'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h2'\n\n return (\n <Comp\n data-slot=\"h2\"\n className={cn(\n 'md:text-[1.5rem] text-[1.25rem] md:leading-[2rem] leading-[1.75rem] font-semibold font-sans',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingM({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h3'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h3'\n\n return (\n <Comp\n data-slot=\"h3\"\n className={cn(\n 'text-[1.125rem] md:text-xl md:leading-[1.75rem] leading-[1.625rem] font-semibold font-sans',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h4'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h4'\n\n return (\n <Comp\n data-slot=\"h4\"\n className={cn(\n 'text-base leading-[1.5rem] font-semibold font-sans',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h5'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h5'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-sm leading-[1.25rem] font-semibold font-sans',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h6'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h6'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-xs leading-[1rem] font-semibold font-sans',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Body,\n bodyTextVariants,\n DisplayHeading,\n displayTextVariants,\n HeadingL,\n HeadingM,\n HeadingS,\n HeadingXL,\n HeadingXS,\n HeadingXXS\n}\n","export { useTheme } from 'next-themes'\n"],"mappings":"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","names":["jsx","cva","jsx","jsxs","cva","cva","jsx","cva","jsx","jsxs","jsx","React","React","jsx","jsx","jsx","Slot","cva","jsx","cva","Slot","cva","jsx","jsxs","cva","cva","jsx","jsxs","cva","cva","jsx","cva","Slot","jsx","jsxs","Slot","ChevronDownIcon","React","jsx","className","props","ChevronDownIcon","jsx","React","jsx","jsxs","api","React","Fragment","jsx","jsxs","config","jsx","jsx","CollapsibleTrigger","CollapsibleContent","jsx","jsxs","jsx","jsxs","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","React","cva","React","jsx","jsxs","cva","errorStyles","jsx","jsx","jsxs","date","dateFnsFormat","isValid","CalendarDays","React","jsx","jsxs","DATE_FORMAT_TOKENS","DATE_FORMAT_PLACEHOLDER","formatDate","isValid","dateFnsFormat","CalendarDays","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","jsx","jsxs","React","Slot","Slot","cva","jsx","Label","jsx","Label","Slot","jsx","React","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","ChevronDown","X","jsx","jsxs","X","ChevronDown","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","jsx","cva","jsx","jsxs","cva","CircleIcon","jsx","RadioGroup","CircleIcon","jsx","jsx","jsxs","React","X","jsx","jsxs","label","X","React","CheckIcon","XIcon","jsx","jsxs","XIcon","CheckIcon","CheckIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","CheckIcon","jsx","Separator","XIcon","jsx","jsxs","XIcon","Slot","cva","React","jsx","X","jsx","jsxs","Tooltip","X","React","jsx","jsxs","open","Separator","Slot","cva","Tooltip","React","jsx","jsxs","useEffect","useState","query","Fragment","jsx","jsx","jsx","jsx","cva","React","jsx","jsxs","cva","jsx","useTheme","jsx","jsxs","useTheme","React","jsx","jsxs","cva","jsx","cva","React","jsx","Slot","cva","jsx","cva","Slot","useTheme"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/alert-banner.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/button.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/auto-resize-textarea.tsx","../src/components/ui/textarea.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/badge-actionable.tsx","../src/components/ui/badge-informative.tsx","../src/components/ui/badge-number.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/date-input.tsx","../src/components/ui/input.tsx","../src/components/ui/popover.tsx","../src/components/ui/date-range-input.tsx","../src/components/ui/drawer.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/dropdown-select.tsx","../src/components/ui/form.tsx","../src/components/ui/label.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/menubar.tsx","../src/components/ui/multi-select-free-text.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/progress.tsx","../src/components/ui/progress-bar.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/search-input.tsx","../src/components/ui/searchable-select.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/hooks/use-mobile.ts","../src/components/ui/slider.tsx","../src/components/ui/smart-dialog-drawer.tsx","../src/components/ui/useMediaQuery.ts","../src/components/ui/sonner.tsx","../src/components/ui/switch.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/theme-provider.tsx","../src/components/ui/theme-toggle.tsx","../src/components/ui/time-input.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/typography.tsx","../src/hooks/use-theme.ts"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { ChevronDownIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('border-b last:border-b-0', className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n expandedIcon,\n collapsedIcon,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n expandedIcon?: React.ReactNode\n collapsedIcon?: React.ReactNode\n}) {\n const hasCustomIcon = expandedIcon !== undefined || collapsedIcon !== undefined\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50',\n !hasCustomIcon && '[&[data-state=open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n {hasCustomIcon ? (\n <>\n {collapsedIcon !== undefined && (\n <span className=\"group-data-[state=open]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {collapsedIcon}\n </span>\n )}\n {expandedIcon !== undefined && (\n <span className=\"group-data-[state=closed]:hidden pointer-events-none shrink-0 text-muted-foreground\">\n {expandedIcon}\n </span>\n )}\n </>\n ) : (\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-400\" />\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst alertBannerVariants = cva(\n 'flex items-start gap-3 w-full rounded-[12px] border px-3 py-4 text-sm leading-5',\n {\n variants: {\n type: {\n informative:\n 'bg-alert-bg-informative border-gray-stroke-light [&_svg]:text-[#52525c] dark:[&_svg]:text-[#a1a1aa]',\n error:\n 'bg-alert-bg-error border-error-stroke-light [&_svg]:text-[#ff6467] dark:[&_svg]:text-[#ff8486]',\n success:\n 'bg-success-surface-subtle border-success-stroke-light [&_svg]:text-[#00a63e] dark:[&_svg]:text-[#34d399]'\n }\n },\n defaultVariants: {\n type: 'informative'\n }\n }\n)\n\nexport interface AlertBannerProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof alertBannerVariants> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n}\n\nfunction AlertBanner({\n className,\n type,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n ...props\n}: AlertBannerProps) {\n return (\n <div\n data-slot=\"alert-banner\"\n role=\"alert\"\n className={cn(alertBannerVariants({ type }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5 text-vibrant-text-heading\">\n {heading}\n </p>\n )}\n <div className=\"font-normal text-sm leading-5 text-vibrant-text-body\">\n {children}\n </div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"flex items-center justify-center shrink-0 size-5 text-vibrant-text-body hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-2.5\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { AlertBanner, alertBannerVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst buttonVariants = cva(\n \"cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-semibold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none relative select-none will-change-auto focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-lg focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive duration-400\",\n {\n variants: {\n variant: {\n primary:\n 'bg-primary text-primary-foreground hover:bg-brand-dark active:bg-active-primary',\n secondary:\n 'bg-brand-subtle text-primary-stroke-default hover:bg-primary-surface-light border border-brand-light active:bg-icon-disabled',\n tertiary:\n 'bg-gray-surface-light text-foreground-secondary hover:bg-gray-surface-default border border-gray-stroke-light hover:border-transparent active:border-transparent active:bg-[#9f9fa9] dark:active:bg-[#71717a]',\n outline:\n 'text-foreground-secondary border border-gray-surface-default bg-background hover:bg-gray-surface-light hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 active:bg-gray-surface-default',\n ghost:\n 'text-primary-stroke-default hover:bg-primary-surface-subtle dark:hover:bg-accent/50 active:bg-primary-surface-light',\n 'ghost-secondary':\n 'text-foreground-secondary hover:bg-gray-surface-light hover:text-accent-foreground dark:hover:bg-accent/50 active:bg-gray-surface-default',\n 'ghost-destructive':\n 'bg-transparent text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n link: 'text-foreground-secondary underline-offset-4 underline hover:bg-none active:bg-none hover:text-brand-vibrant',\n destructive:\n 'bg-error-surface-default text-primary-foreground hover:bg-red-800 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-error-surface-dark',\n 'destructive-secondary':\n 'bg-error-surface-light border border-error-stroke-light text-destructive-text hover:border-error-surface-default focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active',\n 'destructive-tertiary':\n 'bg-transparent border border-error-stroke-light text-destructive-text hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 active:bg-destructive-active'\n },\n size: {\n md: 'h-10 px-4 py-2 has-[>svg]:px-3 text-lg',\n sm: 'h-9 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 text-base',\n lg: 'h-12 rounded-md px-6 has-[>svg]:px-4 text-lg',\n icon: 'size-8'\n }\n },\n defaultVariants: {\n variant: 'primary',\n size: 'lg'\n }\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />\n}\n\nexport { AspectRatio }\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Textarea } from './textarea'\n\ntype AutoResizeTextareaProps = React.ComponentPropsWithoutRef<typeof Textarea> & {\n /** Stop growing after this many px and allow scroll */\n maxHeight?: number\n /** Minimum height in px */\n minHeight?: number\n}\n\ntype TextareaEl = React.ElementRef<typeof Textarea>\n\nexport const AutoResizeTextarea = React.forwardRef<\n TextareaEl,\n AutoResizeTextareaProps\n>(\n (\n {\n className,\n style,\n onInput,\n onChange,\n maxHeight,\n minHeight = 120,\n value,\n ...props\n },\n forwardedRef\n ) => {\n const innerRef = React.useRef<TextareaEl | null>(null)\n\n const setRefs = React.useCallback(\n (node: TextareaEl | null) => {\n innerRef.current = node\n\n if (typeof forwardedRef === 'function') forwardedRef(node)\n else if (forwardedRef) forwardedRef.current = node\n },\n [forwardedRef]\n )\n\n const resize = React.useCallback(() => {\n const el = innerRef.current\n if (!el) return\n\n el.style.height = 'auto'\n const nextHeight = Math.max(minHeight, el.scrollHeight)\n\n if (maxHeight && nextHeight > maxHeight) {\n el.style.height = `${maxHeight}px`\n el.style.overflowY = 'auto'\n } else {\n el.style.height = `${nextHeight}px`\n el.style.overflowY = 'hidden'\n }\n }, [maxHeight, minHeight])\n\n React.useLayoutEffect(() => {\n resize()\n }, [resize, value])\n\n return (\n <Textarea\n {...props}\n ref={setRefs}\n value={value}\n onInput={e => {\n resize()\n onInput?.(e)\n }}\n onChange={e => {\n onChange?.(e)\n }}\n className={cn('resize-none', className)}\n style={{\n ...style,\n minHeight: minHeight,\n height: style?.height ?? 'auto',\n overflowY: style?.overflowY ?? 'hidden'\n }}\n />\n )\n }\n)\n\nAutoResizeTextarea.displayName = 'AutoResizeTextarea'\n","import * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n// Base styles as a constant to avoid recreation\nconst textareaBaseStyles = [\n // Base styles aligned with Input\n 'placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-md border bg-transparent text-base shadow-xs transition-all duration-400',\n 'outline-none font-sans',\n // Disabled\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n // Responsive text size\n 'md:text-sm',\n // Default state\n 'border-border-default bg-background',\n // Hover/Focus/Active states\n 'hover:border-brand-normal',\n 'focus:border-focus-ring',\n 'active:border-brand-normal',\n // Textarea specific\n 'field-sizing-content min-h-16 resize-y px-3 py-2'\n].join(' ')\n\n// Error styles as a constant to avoid recreation\nconst errorStyles = [\n 'border-destructive bg-red-subtle',\n 'focus:border-destructive focus:ring-destructive/20',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive'\n].join(' ')\n\nexport interface TextareaProps extends Omit<React.ComponentProps<'textarea'>, 'size'> {\n error?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(textareaBaseStyles, error && errorStyles, className)}\n aria-invalid={error}\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-primary-foreground [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeActionableVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-[8px] cursor-pointer select-none transition-all font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0 outline-none focus-visible:before:absolute focus-visible:before:-inset-[3px] focus-visible:before:rounded-xl focus-visible:before:ring-2 focus-visible:before:ring-blue-500/80 focus-visible:before:pointer-events-none relative',\n {\n variants: {\n size: {\n M: 'h-10 px-3 py-2 text-base leading-6 [&_svg]:size-5',\n S: 'h-8 px-3 py-2 text-sm leading-5 [&_svg]:size-5'\n }\n },\n defaultVariants: {\n size: 'S'\n }\n }\n)\n\nexport interface BadgeActionableProps\n extends\n Omit<React.ComponentProps<'button'>, 'children'>,\n VariantProps<typeof badgeActionableVariants> {\n icon?: React.ReactNode\n selected?: boolean\n onBackground?: boolean\n children: React.ReactNode\n}\n\nfunction BadgeActionable({\n className,\n size,\n icon,\n selected = false,\n onBackground = false,\n children,\n ...props\n}: BadgeActionableProps) {\n return (\n <button\n data-slot=\"badge-actionable\"\n data-selected={selected || undefined}\n className={cn(\n badgeActionableVariants({ size }),\n selected\n ? 'bg-primary-surface-subtle border border-primary-stroke-default text-primary-stroke-default'\n : onBackground\n ? 'bg-sand-light border border-secondary-stroke-default text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent'\n : 'bg-sand-light border border-secondary-stroke-light text-secondary-text-dark hover:bg-secondary-surface-default hover:border-transparent',\n 'disabled:pointer-events-none disabled:opacity-50 ',\n className\n )}\n {...props}\n >\n {icon && <span className=\"flex items-center justify-center\">{icon}</span>}\n <span>{children}</span>\n </button>\n )\n}\n\nexport { BadgeActionable, badgeActionableVariants }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeInformativeVariants = cva(\n 'inline-flex items-center justify-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n size: {\n M: 'h-8 px-2 py-1.5 gap-2 rounded-[8px] text-sm leading-5 [&_svg]:size-4',\n S: 'h-6 px-2 py-1.5 gap-1 rounded-[8px] text-xs leading-4 [&_svg]:size-4'\n },\n colorScheme: {\n gray: 'bg-gray-surface-light text-vibrant-text-body',\n blue: 'bg-primary-surface-subtle text-primary-stroke-default',\n yellow:\n 'bg-warning-surface-subtle border border-warning-stroke-default text-warning-stroke-dark'\n }\n },\n defaultVariants: {\n size: 'M',\n colorScheme: 'gray'\n }\n }\n)\n\nexport interface BadgeInformativeProps\n extends\n React.ComponentProps<'div'>,\n VariantProps<typeof badgeInformativeVariants> {\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}\n\nfunction BadgeInformative({\n className,\n size,\n colorScheme,\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: BadgeInformativeProps) {\n return (\n <div\n data-slot=\"badge-informative\"\n className={cn(badgeInformativeVariants({ size, colorScheme }), className)}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className={cn(\n 'inline-flex items-center gap-1 font-semibold text-base leading-6 shrink-0',\n colorScheme === 'blue'\n ? 'text-primary-stroke-default'\n : 'text-primary-stroke-default'\n )}\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\n/**\n * Container for multiple BadgeInformative items displayed side-by-side.\n */\nfunction BadgeInformativeGroup({\n className,\n size = 'M',\n colorScheme = 'gray',\n children,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof badgeInformativeVariants>) {\n return (\n <div\n data-slot=\"badge-informative-group\"\n className={cn(\n 'inline-flex items-center gap-3',\n size === 'M'\n ? 'h-8 px-2 py-1.5 rounded-[8px]'\n : 'h-6 px-2 py-1.5 rounded-[8px]',\n colorScheme === 'gray' && 'bg-gray-surface-light',\n colorScheme === 'blue' && 'bg-primary-surface-subtle',\n colorScheme === 'yellow' &&\n 'bg-warning-surface-subtle border border-warning-stroke-default',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * A single item within a BadgeInformativeGroup. Use for multi-content badges.\n */\nfunction BadgeInformativeItem({\n className,\n size = 'M',\n colorScheme = 'gray',\n icon,\n linkText,\n linkHref,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n size?: 'M' | 'S'\n colorScheme?: 'gray' | 'blue' | 'yellow'\n icon?: React.ReactNode\n linkText?: string\n linkHref?: string\n}) {\n return (\n <div\n data-slot=\"badge-informative-item\"\n className={cn(\n 'inline-flex items-center font-medium whitespace-nowrap shrink-0 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n size === 'M'\n ? 'gap-1 text-sm leading-5 [&_svg]:size-4'\n : 'gap-1 text-xs leading-4 [&_svg]:size-4',\n colorScheme === 'gray' && 'text-vibrant-text-body',\n colorScheme === 'blue' && 'text-primary-stroke-default',\n colorScheme === 'yellow' && 'text-warning-stroke-dark',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n {linkText && (\n <a\n href={linkHref || '#'}\n className=\"inline-flex items-center gap-1 font-semibold text-base leading-6 text-primary-stroke-default shrink-0\"\n >\n {linkText}\n <svg\n className=\"size-4\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.667 11.333L11.333 4.667M11.333 4.667H5.333M11.333 4.667V10.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n )\n}\n\nexport {\n BadgeInformative,\n BadgeInformativeGroup,\n BadgeInformativeItem,\n badgeInformativeVariants\n}\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeNumberVariants = cva(\n 'inline-flex items-center justify-center rounded-full font-semibold text-xs leading-[18px] text-center shrink-0 select-none',\n {\n variants: {\n size: {\n M: 'size-6',\n S: 'size-5'\n },\n state: {\n active: 'bg-primary text-primary-foreground',\n disabled: 'bg-gray-surface-light text-gray-subtle',\n resting:\n 'bg-transparent border border-gray-stroke-light text-gray-subtle'\n }\n },\n defaultVariants: {\n size: 'M',\n state: 'active'\n }\n }\n)\n\nexport interface BadgeNumberProps\n extends React.ComponentProps<'span'>,\n VariantProps<typeof badgeNumberVariants> {\n value: number\n}\n\nfunction BadgeNumber({\n className,\n size,\n state,\n value,\n ...props\n}: BadgeNumberProps) {\n return (\n <span\n data-slot=\"badge-number\"\n className={cn(badgeNumberVariants({ size, state }), className)}\n {...props}\n >\n {value}\n </span>\n )\n}\n\nexport { BadgeNumber, badgeNumberVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","'use client'\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon\n} from 'lucide-react'\nimport * as React from 'react'\nimport { DayButton, DayPicker } from 'react-day-picker'\n\nimport { Button, buttonVariants } from '@/components/ui/button'\nimport { cn } from '@/lib/utils'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:--spacing(4)] md:[--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: date =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters\n }}\n classNames={{\n root: cn('w-fit ', classNames?.root),\n months: cn(\n 'flex gap-4 flex-col md:flex-row relative',\n classNames?.months\n ),\n month: cn('flex flex-col w-full gap-4', classNames?.month),\n nav: cn(\n 'flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between',\n classNames?.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n classNames?.button_next\n ),\n month_caption: cn(\n 'flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)',\n classNames?.month_caption\n ),\n dropdowns: cn(\n 'w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5',\n classNames?.dropdowns\n ),\n dropdown_root: cn(\n 'relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md',\n classNames?.dropdown_root\n ),\n dropdown: cn(\n 'absolute bg-popover inset-0 opacity-0',\n classNames?.dropdown\n ),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : 'rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5',\n classNames?.caption_label\n ),\n table: cn('w-full border-collapse', classNames?.table),\n weekdays: cn(\n 'flex items-center justify-center w-full gap-2',\n classNames?.weekdays\n ),\n weekday: cn(\n 'text-muted-foreground font-medium rounded-full md:flex-1 size-6 mx-1 font-normal text-[0.8rem] select-none',\n classNames?.weekday\n ),\n week: cn(\n 'flex w-full md:mt-2 mt-[2px] items-center justify-center gap-1',\n classNames?.week\n ),\n week_number_header: cn(\n 'select-none w-(--cell-size) ',\n 'flex items-center justify-center ',\n classNames?.week_number_header\n ),\n week_number: cn(\n 'text-[0.8rem] select-none text-muted-foreground',\n classNames?.week_number\n ),\n day: cn(\n 'relative flex items-center justify-center md:w-full md:h-full p-0 text-center group/day aspect-square select-none size-7 md:mx-0 mx-1 rounded-full',\n classNames?.day\n ),\n range_start: cn(' bg-accent', classNames?.range_start),\n range_middle: cn('rounded-none', classNames?.range_middle),\n range_end: cn(' bg-accent', classNames?.range_end),\n today: cn(\n 'bg-accent text-accent-foreground rounded-full',\n classNames?.today\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n classNames?.outside\n ),\n disabled: cn('text-muted-foreground opacity-50', classNames?.disabled),\n hidden: cn('invisible', classNames?.hidden)\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon className={cn('size-6', className)} {...props} />\n )\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-6', className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn('size-6', className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-range-middle-bg data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none md:font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70 md:p-0 rounded-full md:text-base text-sm font-medium text-foreground data-[range-middle=true]:rounded-md',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","'use client'\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'group peer border-input dark:bg-input/30 transition-colors duration-400 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:before:absolute focus-visible:before:-inset-[3px] focus:ring-offset-1 focus:ring-offset-brand-text-vibrant',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n forceMount\n className=\"flex items-center justify-center text-current transition-opacity duration-400 opacity-0 group-data-[state=checked]:opacity-100\"\n >\n <Check className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","'use client'\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n overlayClassName,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n overlayClassName?: string\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-400 sm:max-w-lg',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('text-lg leading-none font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport {\n format as dateFnsFormat,\n parse as dateFnsParse,\n isValid\n} from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport { Calendar } from './calendar'\nimport { Input, inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type DateFormat =\n | 'MM/DD/YYYY'\n | 'DD/MM/YYYY'\n | 'YYYY-MM-DD'\n | 'DD-MM-YYYY'\n | 'MM-DD-YYYY'\n | 'DD.MM.YYYY'\n | 'YYYY/MM/DD'\n | 'MMMM D, YYYY'\n | 'D MMMM YYYY'\n | 'MMM D, YYYY'\n | 'MMM DD, YYYY'\n | 'D MMM YYYY'\n | 'DD MMM YYYY'\n | 'ddd, MMM D, YYYY'\n | 'dddd, MMMM D, YYYY'\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'onChange' | 'min' | 'max' | 'size' | 'disabled' | 'onSelect'\n>\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nconst INPUT_PROP_KEYS = new Set([\n 'accept',\n 'alt',\n 'autoComplete',\n 'autoFocus',\n 'capture',\n 'checked',\n 'dirName',\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'height',\n 'list',\n 'maxLength',\n 'minLength',\n 'multiple',\n 'name',\n 'pattern',\n 'readOnly',\n 'required',\n 'size',\n 'src',\n 'step',\n 'type',\n 'width',\n 'id',\n 'inputMode',\n 'lang',\n 'tabIndex',\n 'title',\n 'role',\n 'style',\n 'onFocus',\n 'onFocusCapture',\n 'onBlurCapture',\n 'onInput',\n 'onInvalid',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyPressCapture',\n 'onKeyUp',\n 'onKeyUpCapture',\n 'onPaste',\n 'onPasteCapture',\n 'onPointerDown',\n 'onPointerDownCapture',\n 'onPointerUp',\n 'onPointerUpCapture',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate'\n])\n\nfunction formatDate(date: Date | null, dateFormat: DateFormat = 'MM/DD/YYYY') {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction parseDate(\n value: string,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n): Date | null {\n if (!value) return null\n const parsed = dateFnsParse(value, DATE_FORMAT_TOKENS[dateFormat], new Date())\n return isValid(parsed) ? parsed : null\n}\n\nexport interface DateInputProps\n extends NativeInputProps, FlattenedCalendarProps {\n date: Date | null\n setDate: (date: Date | null) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n mode?: React.ComponentProps<typeof Calendar>['mode']\n selected?: Date\n onSelect?: (selectedDate: Date | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateInput({\n date,\n setDate,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n mode,\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n onBlur,\n ...restProps\n}: DateInputProps) {\n const resolvedPlaceholder = placeholder ?? DATE_FORMAT_PLACEHOLDER[dateFormat]\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(date ?? null)\n const [value, setValue] = React.useState(formatDate(date ?? null, dateFormat))\n const [inputProps, calendarProps] = React.useMemo(() => {\n const nextInputProps: Record<string, unknown> = {}\n const nextCalendarProps: Record<string, unknown> = {}\n\n for (const [key, val] of Object.entries(restProps)) {\n const isInputProp =\n INPUT_PROP_KEYS.has(key) ||\n key.startsWith('aria-') ||\n key.startsWith('data-')\n\n if (isInputProp) {\n nextInputProps[key] = val\n } else {\n nextCalendarProps[key] = val\n }\n }\n\n return [\n nextInputProps as Partial<React.ComponentProps<typeof Input>>,\n nextCalendarProps as Omit<\n React.ComponentProps<typeof Calendar>,\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n >\n ]\n }, [restProps])\n\n // Calculate effective maxDate\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n // Calculate effective minDate\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default wide range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 100)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 100)\n return d\n }, [effectiveMaxDate, today])\n\n React.useEffect(() => {\n if (date) {\n setValue(formatDate(date, dateFormat))\n setMonthState(date)\n }\n }, [date, dateFormat])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? date ?? undefined\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n const defaultCalendarOnSelect = (selectedDate: Date | undefined) => {\n if (selectedDate) {\n const dateObj = new Date(selectedDate)\n dateObj.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || dateObj >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || dateObj <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(selectedDate)\n setValue(formatDate(selectedDate, dateFormat))\n setOpen(false)\n }\n }\n }\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n\n const isBeforeMin =\n effectiveMinDate !== null && checkDate < effectiveMinDate\n const isAfterMax =\n effectiveMaxDate !== undefined && checkDate > effectiveMaxDate\n\n return isBeforeMin || isAfterMax\n }\n const resolvedCalendarProps = {\n ...calendarProps,\n mode: mode ?? 'single',\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn(\n 'w-auto mx-auto overflow-y-auto h-auto m-2',\n calendarClassName\n ),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: onSelect ?? defaultCalendarOnSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n setValue(inputValue)\n\n const parsedDate = parseDate(inputValue, dateFormat)\n\n if (parsedDate) {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (isAfterMin && isBeforeMax) {\n setDate(parsedDate)\n setMonthState(parsedDate)\n }\n } else if (inputValue === '') {\n setDate(null)\n }\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(e)\n }\n\n if (value === '') {\n if (date !== null) {\n setDate(null)\n }\n return\n }\n\n const parsedDate = parseDate(value, dateFormat)\n if (!parsedDate) {\n setValue(formatDate(date, dateFormat))\n } else {\n const selectedDate = new Date(parsedDate)\n selectedDate.setHours(0, 0, 0, 0)\n\n const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate\n\n if (!isAfterMin || !isBeforeMax) {\n setValue(formatDate(date, dateFormat))\n }\n }\n }\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <div className=\"w-full relative group\">\n <Input\n id=\"date\"\n value={value}\n placeholder={resolvedPlaceholder}\n className={cn(\n 'bg-background cursor-pointer',\n 'group-data-[state=open]:border-focus-ring group-data-[state=open]:hover:border-focus-ring',\n inputClassName\n )}\n onChange={handleInputChange}\n onBlur={handleBlur}\n disabled={isInputDisabled}\n onKeyDown={e => {\n if (e.key === 'ArrowDown' && !isInputDisabled) {\n e.preventDefault()\n setOpen(true)\n }\n }}\n rightIcon={\n <CalendarDays className=\"h-4 w-4 text-muted-foreground\" />\n }\n rightIconOnClick={\n isInputDisabled ? undefined : () => setOpen(!open)\n }\n rightIconButtonProps={{ disabled: isInputDisabled }}\n {...(inputProps as Partial<React.ComponentProps<typeof Input>>)}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px]',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md\">\n <Calendar {...resolvedCalendarProps} />\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from './button'\n\nconst inputVariants = cva(\n [\n // Base styles\n 'file:text-foreground-secondary placeholder:text-gray-subtle selection:bg-primary selection:text-primary-foreground',\n 'flex w-full min-w-0 rounded-lg border bg-transparent text-base font-medium transition-all duration-400',\n 'outline-none font-sans',\n // File input styles\n 'file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium',\n // Disabled styles\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60'\n ],\n {\n variants: {\n size: {\n sm: 'h-10 px-3 py-2 text-base',\n md: 'h-12 px-3 py-2 text-base',\n lg: 'h-14 px-4 py-3 text-base'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\ninterface InputProps\n extends Omit<React.ComponentProps<'input'>, 'size'>,\n VariantProps<typeof inputVariants> {\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n leftIconClassName?: string\n rightIconClassName?: string\n rightIconOnClick?: () => void\n rightIconButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>\n error?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n size,\n leftIcon,\n rightIcon,\n leftIconClassName,\n rightIconClassName,\n rightIconOnClick,\n rightIconButtonProps,\n error,\n ...props\n },\n ref\n ) => {\n // Border/bg styles applied conditionally based on error state\n const stateStyles = error\n ? [\n 'border-error-stroke-default bg-error-surface-subtle',\n 'hover:border-error-stroke-default',\n 'focus:border-2 focus:border-error-stroke-default',\n 'active:border-error-stroke-default'\n ]\n : [\n 'border-gray-stroke-default bg-background',\n 'hover:border-focus-ring',\n 'focus:border-2 focus:border-focus-ring',\n 'active:border-focus-ring'\n ]\n\n if (leftIcon || rightIcon) {\n return (\n <div className=\"relative\">\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n inputVariants({ size }),\n stateStyles,\n 'peer',\n leftIcon && 'pl-10',\n rightIcon && 'pr-10',\n className\n )}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n {leftIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'transition-colors stroke-[1.5px]',\n error\n ? 'text-error-stroke-default peer-hover:text-error-stroke-default peer-focus:text-error-stroke-default peer-active:text-error-stroke-default'\n : 'text-muted-foreground peer-hover:text-focus-ring peer-focus:text-focus-ring peer-active:text-focus-ring',\n leftIconClassName\n )}\n >\n {React.isValidElement(leftIcon)\n ? (() => {\n const iconEl = leftIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-5 w-5', iconEl.props.className)\n })\n })()\n : leftIcon}\n </div>\n )}\n {rightIcon && (\n <Button\n onClick={rightIconOnClick}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n 'absolute right-3 top-1/2 -translate-y-1/2 flex items-center justify-center',\n 'h-6 w-6 rounded-sm transition-colors',\n error\n ? 'text-error-stroke-default hover:text-error-stroke-default focus:text-error-stroke-default'\n : 'text-muted-foreground hover:text-focus-ring focus:text-focus-ring',\n rightIconClassName\n )}\n aria-label=\"Input action\"\n {...rightIconButtonProps}\n >\n {React.isValidElement(rightIcon)\n ? (() => {\n const iconEl = rightIcon as React.ReactElement<{\n className?: string\n }>\n return React.cloneElement(iconEl, {\n className: cn('h-5 w-5', iconEl.props.className)\n })\n })()\n : rightIcon}\n </Button>\n )}\n </div>\n )\n }\n\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size }), stateStyles, className)}\n ref={ref}\n aria-invalid={error}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = 'Input'\n\nexport { Input, inputVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { format as dateFnsFormat, isValid } from 'date-fns'\nimport { CalendarDays } from 'lucide-react'\nimport * as React from 'react'\nimport type { DateRange } from 'react-day-picker'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport type { DateFormat } from './date-input'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type { DateRange }\n\nconst DATE_FORMAT_TOKENS: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'MM/dd/yyyy',\n 'DD/MM/YYYY': 'dd/MM/yyyy',\n 'YYYY-MM-DD': 'yyyy-MM-dd',\n 'DD-MM-YYYY': 'dd-MM-yyyy',\n 'MM-DD-YYYY': 'MM-dd-yyyy',\n 'DD.MM.YYYY': 'dd.MM.yyyy',\n 'YYYY/MM/DD': 'yyyy/MM/dd',\n 'MMMM D, YYYY': 'MMMM d, yyyy',\n 'D MMMM YYYY': 'd MMMM yyyy',\n 'MMM D, YYYY': 'MMM d, yyyy',\n 'MMM DD, YYYY': 'MMM dd, yyyy',\n 'D MMM YYYY': 'd MMM yyyy',\n 'DD MMM YYYY': 'dd MMM yyyy',\n 'ddd, MMM D, YYYY': 'EEE, MMM d, yyyy',\n 'dddd, MMMM D, YYYY': 'EEEE, MMMM d, yyyy'\n}\n\nconst DATE_FORMAT_PLACEHOLDER: Record<DateFormat, string> = {\n 'MM/DD/YYYY': 'mm/dd/yyyy',\n 'DD/MM/YYYY': 'dd/mm/yyyy',\n 'YYYY-MM-DD': 'yyyy-mm-dd',\n 'DD-MM-YYYY': 'dd-mm-yyyy',\n 'MM-DD-YYYY': 'mm-dd-yyyy',\n 'DD.MM.YYYY': 'dd.mm.yyyy',\n 'YYYY/MM/DD': 'yyyy/mm/dd',\n 'MMMM D, YYYY': 'Month d, yyyy',\n 'D MMMM YYYY': 'd Month yyyy',\n 'MMM D, YYYY': 'Mon d, yyyy',\n 'MMM DD, YYYY': 'Mon dd, yyyy',\n 'D MMM YYYY': 'd Mon yyyy',\n 'DD MMM YYYY': 'dd Mon yyyy',\n 'ddd, MMM D, YYYY': 'Day, Mon d, yyyy',\n 'dddd, MMMM D, YYYY': 'Weekday, Month d, yyyy'\n}\n\ntype FlattenedCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n | keyof React.InputHTMLAttributes<HTMLInputElement>\n | 'className'\n | 'mode'\n | 'selected'\n | 'onSelect'\n | 'month'\n | 'onMonthChange'\n | 'disabled'\n | 'captionLayout'\n | 'showOutsideDays'\n | 'classNames'\n | 'components'\n | 'formatters'\n | 'buttonVariant'\n>\n\nfunction formatDate(\n date: Date | null | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!date || !isValid(date)) {\n return ''\n }\n return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat])\n}\n\nfunction formatRange(\n range: DateRange | undefined,\n dateFormat: DateFormat = 'MM/DD/YYYY'\n) {\n if (!range) return ''\n const from = formatDate(range.from, dateFormat)\n const to = formatDate(range.to, dateFormat)\n if (from && to) return from === to ? from : `${from} \\u2013 ${to}`\n if (from) return from\n return ''\n}\n\nfunction rangePlaceholder(dateFormat: DateFormat) {\n const p = DATE_FORMAT_PLACEHOLDER[dateFormat]\n return `${p} \\u2013 ${p}`\n}\n\nexport interface DateRangeInputProps extends FlattenedCalendarProps {\n dateRange: DateRange | undefined\n setDateRange: (range: DateRange | undefined) => void\n maxDate?: Date | null\n minDate?: Date | null\n disableFuture?: boolean\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n calendarClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n dateFormat?: DateFormat\n placeholder?: string\n selected?: DateRange\n onSelect?: (range: DateRange | undefined) => void\n month?: React.ComponentProps<typeof Calendar>['month']\n onMonthChange?: React.ComponentProps<typeof Calendar>['onMonthChange']\n disabled?: React.ComponentProps<typeof Calendar>['disabled']\n captionLayout?: React.ComponentProps<typeof Calendar>['captionLayout']\n showOutsideDays?: React.ComponentProps<typeof Calendar>['showOutsideDays']\n classNames?: React.ComponentProps<typeof Calendar>['classNames']\n components?: React.ComponentProps<typeof Calendar>['components']\n formatters?: React.ComponentProps<typeof Calendar>['formatters']\n buttonVariant?: React.ComponentProps<typeof Calendar>['buttonVariant']\n}\n\nexport function DateRangeInput({\n dateRange,\n setDateRange,\n maxDate,\n minDate,\n disableFuture = false,\n className,\n inputClassName,\n calendarClassName,\n popoverContentClassName,\n popoverContentProps,\n inputDisabled,\n dateFormat = 'MM/DD/YYYY',\n selected,\n onSelect,\n month,\n onMonthChange,\n disabled: calendarDisabled,\n captionLayout = 'dropdown',\n showOutsideDays = false,\n classNames,\n components,\n formatters,\n buttonVariant,\n placeholder,\n size,\n ...restProps\n}: DateRangeInputProps) {\n const resolvedPlaceholder = placeholder ?? rangePlaceholder(dateFormat)\n const [open, setOpen] = React.useState(false)\n const [monthState, setMonthState] = React.useState<Date | null>(\n dateRange?.from ?? null\n )\n\n const displayValue = formatRange(dateRange, dateFormat)\n\n React.useEffect(() => {\n if (dateRange?.from) {\n setMonthState(dateRange.from)\n }\n }, [dateRange])\n\n const today = React.useMemo(() => {\n const d = new Date()\n d.setHours(0, 0, 0, 0)\n return d\n }, [])\n\n const effectiveMaxDate = React.useMemo(() => {\n if (disableFuture) {\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max < today ? max : today\n }\n return today\n }\n if (maxDate) {\n const max = new Date(maxDate)\n max.setHours(0, 0, 0, 0)\n return max\n }\n return undefined\n }, [maxDate, disableFuture, today])\n\n const effectiveMinDate = React.useMemo(() => {\n if (minDate) {\n const min = new Date(minDate)\n min.setHours(0, 0, 0, 0)\n return min\n }\n return null\n }, [minDate])\n\n // Default wide range for the year dropdown when no explicit constraints are set\n const dropdownStartMonth = React.useMemo(() => {\n if (effectiveMinDate) return effectiveMinDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() - 100)\n return d\n }, [effectiveMinDate, today])\n\n const dropdownEndMonth = React.useMemo(() => {\n if (effectiveMaxDate) return effectiveMaxDate\n const d = new Date(today)\n d.setFullYear(d.getFullYear() + 100)\n return d\n }, [effectiveMaxDate, today])\n\n const effectiveMonth = month ?? monthState ?? undefined\n const effectiveSelected = selected ?? dateRange\n const isInputDisabled =\n inputDisabled ??\n (typeof calendarDisabled === 'boolean' ? calendarDisabled : false)\n\n const isWithinBounds = (d: Date) => {\n const isAfterMin = !effectiveMinDate || d >= effectiveMinDate\n const isBeforeMax = !effectiveMaxDate || d <= effectiveMaxDate\n return isAfterMin && isBeforeMax\n }\n\n const defaultCalendarDisabled = (date: Date) => {\n const checkDate = new Date(date)\n checkDate.setHours(0, 0, 0, 0)\n return !isWithinBounds(checkDate)\n }\n\n const handleCalendarSelect = (range: DateRange | undefined) => {\n if (onSelect) {\n onSelect(range)\n return\n }\n setDateRange(range)\n }\n\n const handleClear = () => {\n setDateRange(undefined)\n }\n\n const handleAdd = () => {\n setOpen(false)\n }\n\n const resolvedCalendarProps = {\n ...restProps,\n mode: 'range' as const,\n selected: effectiveSelected,\n captionLayout,\n month: effectiveMonth,\n onMonthChange: onMonthChange ?? setMonthState,\n showOutsideDays,\n startMonth: dropdownStartMonth,\n endMonth: dropdownEndMonth,\n className: cn('w-auto shrink-0 h-auto mt-2', calendarClassName),\n classNames,\n components,\n formatters,\n buttonVariant,\n onSelect: handleCalendarSelect,\n disabled: calendarDisabled ?? defaultCalendarDisabled\n } as React.ComponentProps<typeof Calendar>\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={isInputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n isInputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={isInputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n <CalendarDays className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'p-0 w-[var(--radix-popper-anchor-width)] h-auto md:w-[350px]',\n popoverContentClassName\n )}\n {...popoverContentProps}\n >\n <div className=\"border border-focus-ring h-full w-full rounded-md flex flex-col overflow-y-auto justify-between\">\n <Calendar {...resolvedCalendarProps} />\n <div className=\"flex flex-col gap-2 px-2 pb-1 shrink-0\">\n <Button\n variant=\"ghost-secondary\"\n size=\"sm\"\n onClick={handleClear}\n type=\"button\"\n >\n Clear\n </Button>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={handleAdd}\n type=\"button\"\n >\n Add\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Drawer as DrawerPrimitive } from 'vaul'\n\nimport { cn } from '@/lib/utils'\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} repositionInputs={false} />\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerContent({\n className,\n children,\n withCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & {\n withCloseButton?: boolean\n}) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background fixed z-50 flex h-auto flex-col',\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm',\n className\n )}\n {...props}\n >\n {withCloseButton && (\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n )}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Context ──────────────────────────────────────────────── */\n\ninterface DropdownSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n value: string\n onValueChange: (value: string) => void\n disabled: boolean\n error: boolean\n placeholder: string\n icon?: React.ReactNode\n displayLabel: string\n options: { value: string; label: string }[]\n registerOption: (value: string, label: string) => void\n highlightedIndex: number\n setHighlightedIndex: (index: number) => void\n}\n\nconst DropdownSelectContext = React.createContext<DropdownSelectContextValue | null>(null)\n\nfunction useDropdownSelect() {\n const ctx = React.useContext(DropdownSelectContext)\n if (!ctx) throw new Error('DropdownSelect compound components must be used within <DropdownSelect>')\n return ctx\n}\n\n/* ─── Root ─────────────────────────────────────────────────── */\n\nexport interface DropdownSelectProps {\n children: React.ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n error?: boolean\n placeholder?: string\n icon?: React.ReactNode\n}\n\nfunction DropdownSelect({\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n placeholder = 'Select',\n icon,\n}: DropdownSelectProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const [options, setOptions] = React.useState<{ value: string; label: string }[]>([])\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n\n const isControlledValue = valueProp !== undefined\n const isControlledOpen = openProp !== undefined\n const value = isControlledValue ? valueProp : internalValue\n const open = isControlledOpen ? openProp : internalOpen\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlledOpen) setInternalOpen(next)\n onOpenChange?.(next)\n },\n [isControlledOpen, onOpenChange]\n )\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlledValue) setInternalValue(next)\n onValueChange?.(next)\n setOpen(false)\n },\n [isControlledValue, onValueChange, setOpen]\n )\n\n const registerOption = React.useCallback((val: string, label: string) => {\n setOptions(prev => {\n if (prev.some(o => o.value === val)) return prev\n return [...prev, { value: val, label }]\n })\n }, [])\n\n const displayLabel = React.useMemo(() => {\n const match = options.find(o => o.value === value)\n return match?.label ?? ''\n }, [options, value])\n\n const ctx = React.useMemo<DropdownSelectContextValue>(\n () => ({\n open,\n setOpen,\n value,\n onValueChange: handleValueChange,\n disabled,\n error,\n placeholder,\n icon,\n displayLabel,\n options,\n registerOption,\n highlightedIndex,\n setHighlightedIndex,\n }),\n [open, setOpen, value, handleValueChange, disabled, error, placeholder, icon, displayLabel, options, registerOption, highlightedIndex, setHighlightedIndex]\n )\n\n return (\n <DropdownSelectContext.Provider value={ctx}>\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n {children}\n </PopoverPrimitive.Root>\n </DropdownSelectContext.Provider>\n )\n}\n\n/* ─── Label ────────────────────────────────────────────────── */\n\nexport interface DropdownSelectLabelProps extends React.ComponentProps<'div'> {\n mandatory?: boolean\n}\n\nfunction DropdownSelectLabel({\n className,\n children,\n mandatory = false,\n ...props\n}: DropdownSelectLabelProps) {\n return (\n <div\n data-slot=\"dropdown-select-label\"\n className={cn(\n 'flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details',\n className\n )}\n {...props}\n >\n {children}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">*</span>\n )}\n </div>\n )\n}\n\n/* ─── Trigger ──────────────────────────────────────────────── */\n\nexport type DropdownSelectTriggerProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Trigger>, 'asChild'>\n\nfunction DropdownSelectTrigger({ className, ...props }: DropdownSelectTriggerProps) {\n const { value, displayLabel, placeholder, icon, disabled, error, open, options, setOpen, onValueChange, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n const len = options.length\n if (len === 0) return\n if (e.key === 'ArrowDown') {\n setHighlightedIndex(highlightedIndex < len - 1 ? highlightedIndex + 1 : 0)\n } else {\n setHighlightedIndex(highlightedIndex > 0 ? highlightedIndex - 1 : len - 1)\n }\n } else if (e.key === 'Enter' && open && highlightedIndex >= 0) {\n e.preventDefault()\n const opt = options[highlightedIndex]\n if (opt) onValueChange(opt.value)\n } else if (e.key === 'Escape' && open) {\n e.preventDefault()\n setOpen(false)\n }\n },\n [disabled, open, setOpen, options, highlightedIndex, setHighlightedIndex, onValueChange]\n )\n\n const hasValue = value !== '' && displayLabel !== ''\n\n return (\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n data-slot=\"dropdown-select-trigger\"\n disabled={disabled}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n onKeyDown={handleKeyDown}\n className={cn(\n // Base\n 'flex w-full items-center gap-2 h-[48px] rounded-[8px] px-[12px] py-[8px] font-sans font-medium text-[16px] leading-[24px] outline-none transition-colors cursor-pointer',\n // Default state\n 'border border-gray-stroke-default bg-white dark:bg-background',\n // Placeholder vs selected text\n hasValue\n ? 'text-vibrant-text-heading'\n : 'text-muted-foreground',\n // Hover\n !disabled && !error && 'hover:border-focus-ring',\n // Focus\n !disabled && !error && 'focus-visible:border-focus-ring focus-visible:border-2 focus-visible:px-[11px] focus-visible:py-[7px]',\n // Open/Active\n open && !error && 'border-focus-ring',\n // Error\n error && 'border-error-stroke-light bg-error-surface-light',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n <span className=\"flex-1 text-left truncate\">\n {hasValue ? displayLabel : placeholder}\n </span>\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </button>\n </PopoverPrimitive.Trigger>\n )\n}\n\n/* ─── Content ──────────────────────────────────────────────── */\n\nexport type DropdownSelectContentProps =\n Omit<React.ComponentProps<typeof PopoverPrimitive.Content>, 'asChild'>\n\nfunction DropdownSelectContent({\n className,\n children,\n ...props\n}: DropdownSelectContentProps) {\n const { setHighlightedIndex } = useDropdownSelect()\n\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"dropdown-select-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={() => setHighlightedIndex(-1)}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n // Custom scrollbar\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n // Animations\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {children}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n )\n}\n\n/* ─── Option ───────────────────────────────────────────────── */\n\nexport interface DropdownSelectOptionProps extends React.ComponentProps<'div'> {\n value: string\n label?: string\n disabled?: boolean\n}\n\nfunction DropdownSelectOption({\n className,\n value: optionValue,\n label,\n disabled: optionDisabled = false,\n children,\n ...props\n}: DropdownSelectOptionProps) {\n const { value, onValueChange, registerOption, options, highlightedIndex, setHighlightedIndex } = useDropdownSelect()\n\n const displayText = label ?? (typeof children === 'string' ? children : '')\n\n React.useEffect(() => {\n if (displayText) {\n registerOption(optionValue, displayText)\n }\n }, [optionValue, displayText, registerOption])\n\n const isSelected = value === optionValue\n const index = options.findIndex(o => o.value === optionValue)\n const isHighlighted = highlightedIndex === index\n\n return (\n <div\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={optionDisabled}\n data-slot=\"dropdown-select-option\"\n data-highlighted={isHighlighted || undefined}\n data-selected={isSelected || undefined}\n onClick={() => {\n if (!optionDisabled) onValueChange(optionValue)\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n // Hover/highlighted\n 'hover:bg-gray-surface-light hover:font-semibold',\n isHighlighted && 'bg-gray-surface-light font-semibold',\n // Selected\n isSelected && 'font-semibold',\n // Disabled\n optionDisabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n {...props}\n >\n {children ?? displayText}\n </div>\n )\n}\n\n/* ─── Exports ──────────────────────────────────────────────── */\n\nexport {\n DropdownSelect,\n DropdownSelectLabel,\n DropdownSelectTrigger,\n DropdownSelectContent,\n DropdownSelectOption,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","'use client'\n\nimport { cn } from '@/lib/utils'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nconst labelTextVariants = cva('font-sans font-semibold text-vibrant-text-body', {\n variants: {\n size: {\n lg: 'text-base md:text-lg md:leading-[1.625rem] leading-[1.5rem]',\n md: 'md:text-base text-sm md:leading-[1.5rem] leading-[1.25rem] ',\n sm: 'md:text-sm text-xs md:leading-[1.25rem] leading-[1.125rem] ',\n xs: 'text-xs leading-[1.125rem]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Label({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'label'> &\n VariantProps<typeof labelTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'label'\n\n return (\n <Comp\n data-slot=\"label\"\n className={cn(labelTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nexport { Label, labelTextVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n )\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </MenubarPortal>\n )\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { ChevronDown, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Types ────────────────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextOption {\n value: string\n label: string\n}\n\n/* ─── Tag ──────────────────────────────────────────────────── */\n\ninterface TagProps {\n label: string\n onRemove: () => void\n}\n\nfunction Tag({ label, onRemove }: TagProps) {\n return (\n <span\n data-slot=\"multi-select-tag\"\n className=\"inline-flex items-center gap-[8px] h-[32px] px-[12px] py-[8px] rounded-[8px] bg-primary-surface-subtle font-sans font-medium text-[14px] leading-[20px] text-primary-stroke-default shrink-0\"\n >\n {label}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n className=\"flex items-center justify-center size-[20px] text-primary-stroke-default hover:text-primary-surface-default transition-colors cursor-pointer\"\n aria-label={`Remove ${label}`}\n >\n <X className=\"size-[16px]\" />\n </button>\n </span>\n )\n}\n\n/* ─── Main Component ───────────────────────────────────────── */\n\nexport interface MultiSelectFreeTextProps {\n /** Current tag values */\n values?: string[]\n /** Default tag values (uncontrolled) */\n defaultValues?: string[]\n /** Callback when tags change */\n onValuesChange?: (values: string[]) => void\n /** Suggestion options shown in dropdown */\n options?: MultiSelectFreeTextOption[]\n /** Placeholder when no tags and no input text */\n placeholder?: string\n /** Left icon */\n icon?: React.ReactNode\n /** Label text */\n label?: string\n /** Show mandatory asterisk on label */\n mandatory?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Additional className */\n className?: string\n}\n\nfunction MultiSelectFreeText({\n values: valuesProp,\n defaultValues = [],\n onValuesChange,\n options = [],\n placeholder = 'Placeholder text',\n icon,\n label,\n mandatory = false,\n disabled = false,\n className,\n}: MultiSelectFreeTextProps) {\n const [internalValues, setInternalValues] = React.useState<string[]>(defaultValues)\n const [inputValue, setInputValue] = React.useState('')\n const [open, setOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const triggerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valuesProp !== undefined\n const values = isControlled ? valuesProp : internalValues\n\n const updateValues = React.useCallback(\n (next: string[]) => {\n if (!isControlled) setInternalValues(next)\n onValuesChange?.(next)\n },\n [isControlled, onValuesChange]\n )\n\n const addTag = React.useCallback(\n (tag: string) => {\n const trimmed = tag.trim()\n if (!trimmed || values.includes(trimmed)) return\n updateValues([...values, trimmed])\n setInputValue('')\n setHighlightedIndex(-1)\n },\n [values, updateValues]\n )\n\n const removeTag = React.useCallback(\n (tag: string) => {\n updateValues(values.filter((v) => v !== tag))\n },\n [values, updateValues]\n )\n\n // Filter options based on input text and already-selected values\n const filteredOptions = React.useMemo(() => {\n const lower = inputValue.toLowerCase()\n return options.filter(\n (opt) =>\n !values.includes(opt.value) &&\n (lower === '' || opt.label.toLowerCase().includes(lower))\n )\n }, [options, inputValue, values])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n if (highlightedIndex >= 0 && filteredOptions[highlightedIndex]) {\n addTag(filteredOptions[highlightedIndex].value)\n } else if (inputValue.trim()) {\n addTag(inputValue)\n }\n } else if (e.key === 'Backspace' && inputValue === '' && values.length > 0) {\n removeTag(values[values.length - 1])\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!open) {\n setOpen(true)\n return\n }\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0\n )\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1\n )\n } else if (e.key === 'Escape') {\n setOpen(false)\n setHighlightedIndex(-1)\n }\n },\n [highlightedIndex, filteredOptions, inputValue, values, addTag, removeTag, open]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n if (!open) setOpen(true)\n setHighlightedIndex(-1)\n },\n [open]\n )\n\n const handleOptionClick = React.useCallback(\n (optValue: string) => {\n addTag(optValue)\n inputRef.current?.focus()\n },\n [addTag]\n )\n\n const handleTriggerClick = React.useCallback(() => {\n if (disabled) return\n inputRef.current?.focus()\n if (!open) setOpen(true)\n }, [disabled, open])\n\n const isFocused = open\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={disabled ? undefined : setOpen}>\n <div\n data-slot=\"multi-select-free-text\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n {mandatory && (\n <span className=\"text-error-surface-default ml-0.5 text-[14px] leading-[20px]\">\n *\n </span>\n )}\n </div>\n )}\n\n {/* Input field */}\n <PopoverPrimitive.Anchor asChild>\n <div\n ref={triggerRef}\n onClick={handleTriggerClick}\n className={cn(\n 'flex flex-wrap items-center gap-[8px] w-full min-h-[48px] rounded-[8px] px-[12px] py-[8px] border bg-white dark:bg-background transition-colors cursor-text',\n isFocused && !disabled\n ? 'border-focus-ring'\n : 'border-gray-stroke-default',\n !disabled && !isFocused && 'hover:border-focus-ring',\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px] text-muted-foreground\">\n {icon}\n </span>\n )}\n\n {/* Tags + inline input */}\n <div className=\"flex flex-wrap items-center gap-[8px] flex-1 min-w-0\">\n {values.map((tag) => (\n <Tag key={tag} label={tag} onRemove={() => removeTag(tag)} />\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={() => { if (!open && !disabled) setOpen(true) }}\n disabled={disabled}\n placeholder={values.length === 0 ? placeholder : ''}\n className={cn(\n 'flex-1 min-w-[80px] bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n </div>\n\n {/* Chevron */}\n <ChevronDown\n className={cn(\n 'shrink-0 size-[20px] text-muted-foreground transition-transform',\n open && 'rotate-180'\n )}\n />\n </div>\n </PopoverPrimitive.Anchor>\n\n {/* Dropdown */}\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"multi-select-free-text-content\"\n sideOffset={8}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n className={cn(\n 'z-50 w-[var(--radix-popover-trigger-width)] rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)]',\n 'max-h-[300px] overflow-y-auto overflow-x-hidden',\n '[&::-webkit-scrollbar]:w-[5px] [&::-webkit-scrollbar-track]:rounded-[3px] [&::-webkit-scrollbar-track]:bg-gray-surface-light [&::-webkit-scrollbar-thumb]:rounded-[3px] [&::-webkit-scrollbar-thumb]:bg-gray-surface-default',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2'\n )}\n >\n <div role=\"listbox\" className=\"flex flex-col\">\n {/* Show typed text as \"Free text\" option if it doesn't match any option exactly */}\n {inputValue.trim() !== '' &&\n !options.some(\n (o) => o.label.toLowerCase() === inputValue.toLowerCase()\n ) && (\n <div\n role=\"option\"\n aria-selected={false}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => addTag(inputValue.trim())}\n onMouseEnter={() => setHighlightedIndex(-2)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === -2 &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {inputValue.trim()}\n </div>\n )}\n {filteredOptions.map((opt, idx) => (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={values.includes(opt.value)}\n data-slot=\"multi-select-free-text-option\"\n onClick={() => handleOptionClick(opt.value)}\n onMouseEnter={() => setHighlightedIndex(idx)}\n onMouseLeave={() => setHighlightedIndex(-1)}\n className={cn(\n 'flex items-center h-[48px] px-[8px] rounded-[8px] font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading cursor-pointer select-none transition-colors',\n 'hover:bg-gray-surface-light hover:font-semibold',\n highlightedIndex === idx &&\n 'bg-gray-surface-light font-semibold'\n )}\n >\n {opt.label}\n </div>\n ))}\n {filteredOptions.length === 0 && inputValue.trim() === '' && (\n <div className=\"flex items-center h-[48px] px-[8px] font-sans font-medium text-[14px] leading-[20px] text-muted-foreground\">\n No options available\n </div>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </div>\n </PopoverPrimitive.Root>\n )\n}\n\nexport { MultiSelectFreeText }\n","import * as React from 'react'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cva } from 'class-variance-authority'\nimport { ChevronDownIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n )\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n 'group flex flex-1 list-none items-center justify-center gap-1',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn('relative', className)}\n {...props}\n />\n )\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1'\n)\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n )\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto',\n 'group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-400 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n 'absolute top-full left-0 isolate z-50 flex justify-center'\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n )\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle\n}\n","import * as React from 'react'\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon\n} from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport { Button, buttonVariants } from '@/components/ui/button'\n\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size\n }),\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"sm\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn('flex size-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis\n}\n","'use client'\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n 'bg-primary/20 relative h-2 w-full overflow-hidden rounded-full',\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all rounded-full\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst progressBarVariants = cva('relative overflow-hidden rounded-[8px]', {\n variants: {\n device: {\n desktop: 'w-[360px] h-[4px]',\n mobile: 'w-[342px] h-[4px]'\n }\n },\n defaultVariants: {\n device: 'desktop'\n }\n})\n\nexport interface ProgressBarProps\n extends React.ComponentProps<'div'>,\n VariantProps<typeof progressBarVariants> {\n /** Current step (1-based). Must be between 1 and totalSteps. */\n currentStep?: number\n /** Total number of steps. Defaults to 7. */\n totalSteps?: number\n /** Direct percentage value (0-100). Overrides step-based calculation when provided. */\n value?: number\n}\n\nfunction ProgressBar({\n className,\n device,\n currentStep = 1,\n totalSteps = 7,\n value,\n ...props\n}: ProgressBarProps) {\n const percentage =\n value !== undefined\n ? Math.min(100, Math.max(0, value))\n : Math.min(100, Math.max(0, (currentStep / totalSteps) * 100))\n\n return (\n <div\n data-slot=\"progress-bar\"\n className={cn(progressBarVariants({ device }), className)}\n role=\"progressbar\"\n aria-valuenow={Math.round(percentage)}\n aria-valuemin={0}\n aria-valuemax={100}\n {...props}\n >\n {/* Background track */}\n <div className=\"absolute inset-0 rounded-[8px] bg-primary-surface-light\" />\n {/* Fill */}\n <div\n data-slot=\"progress-bar-fill\"\n className=\"absolute inset-y-0 left-0 rounded-[8px] bg-primary-surface-default transition-[width] duration-300 ease-in-out\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n}\n\nexport { ProgressBar, progressBarVariants }\n","'use client'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { CircleIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'border-input text-primary focus-visible:border-ring focus-visible:ring-brand-text-vibrant aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border transition-all duration-400 outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-white absolute top-1/2 left-1/2 size-1.5 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","'use client'\n\nimport * as React from 'react'\nimport { Search, X } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/* ─── Suggestion Item ──────────────────────────────────────── */\n\nexport interface SearchSuggestion {\n icon?: React.ReactNode\n label: string\n}\n\n/* ─── Props ────────────────────────────────────────────────── */\n\nexport interface SearchInputProps {\n /** 'icon' renders a 36×36 search icon button; 'button' renders a \"Search\" text button */\n variant?: 'icon' | 'button'\n /** Controlled value */\n value?: string\n /** Uncontrolled default value */\n defaultValue?: string\n /** Called on every input change */\n onValueChange?: (value: string) => void\n /** Called on Enter key or search button click */\n onSearch?: (value: string) => void\n /** Called when the clear (X) button is clicked */\n onClear?: () => void\n placeholder?: string\n /** Label text above the input */\n label?: string\n /** Helper text below the input */\n helperText?: string\n /** Optional left icon */\n icon?: React.ReactNode\n /** Error state */\n error?: boolean\n /** Error helper text (overrides helperText when error=true) */\n errorMessage?: string\n /** Disabled state */\n disabled?: boolean\n /** Suggestion items shown in dropdown when typing */\n suggestions?: SearchSuggestion[]\n /** Called when a suggestion is clicked */\n onSuggestionClick?: (label: string) => void\n className?: string\n}\n\nfunction SearchInput({\n variant = 'icon',\n value: valueProp,\n defaultValue = '',\n onValueChange,\n onSearch,\n onClear,\n placeholder = 'Placeholder',\n label,\n helperText,\n icon,\n error = false,\n errorMessage,\n disabled = false,\n suggestions = [],\n onSuggestionClick,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [isFocused, setIsFocused] = React.useState(false)\n const [showSuggestions, setShowSuggestions] = React.useState(false)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const isControlled = valueProp !== undefined\n const currentValue = isControlled ? valueProp : internalValue\n const hasValue = currentValue.trim().length > 0\n const isFilledEdit = hasValue && !isFocused && !error\n\n const updateValue = React.useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next)\n onValueChange?.(next)\n },\n [isControlled, onValueChange]\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n updateValue(e.target.value)\n if (e.target.value.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n } else {\n setShowSuggestions(false)\n }\n },\n [updateValue, suggestions.length]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n onSearch?.(currentValue)\n setShowSuggestions(false)\n } else if (e.key === 'Escape') {\n setShowSuggestions(false)\n inputRef.current?.blur()\n }\n },\n [currentValue, onSearch]\n )\n\n const handleClear = React.useCallback(() => {\n updateValue('')\n onClear?.()\n inputRef.current?.focus()\n }, [updateValue, onClear])\n\n const handleSearchClick = React.useCallback(() => {\n onSearch?.(currentValue)\n setShowSuggestions(false)\n }, [currentValue, onSearch])\n\n const handleSuggestionClick = React.useCallback(\n (label: string) => {\n updateValue(label)\n onSuggestionClick?.(label)\n setShowSuggestions(false)\n inputRef.current?.focus()\n },\n [updateValue, onSuggestionClick]\n )\n\n const handleFocus = React.useCallback(() => {\n if (disabled) return\n setIsFocused(true)\n if (currentValue.trim().length > 0 && suggestions.length > 0) {\n setShowSuggestions(true)\n }\n }, [disabled, currentValue, suggestions.length])\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent) => {\n // Don't blur if clicking inside the container (e.g., search button, suggestion)\n if (containerRef.current?.contains(e.relatedTarget as Node)) return\n setIsFocused(false)\n setShowSuggestions(false)\n },\n []\n )\n\n const displayHelperText = error && errorMessage ? errorMessage : helperText\n const showClearButton = (isFilledEdit || error) && hasValue\n\n return (\n <div\n ref={containerRef}\n data-slot=\"search-input\"\n className={cn('flex flex-col gap-[8px] items-start w-full', className)}\n onBlur={handleBlur}\n >\n {/* Label */}\n {label && (\n <div className=\"flex items-center font-sans font-medium text-[14px] leading-[20px] text-vibrant-text-details\">\n {label}\n </div>\n )}\n\n {/* Input container */}\n <div\n className={cn(\n 'flex items-center w-full h-[48px] rounded-[8px] overflow-hidden transition-colors',\n // Border + background\n error\n ? 'border border-error-stroke-light bg-error-surface-light'\n : isFocused\n ? 'border-2 border-focus-ring bg-white dark:bg-background'\n : 'border border-gray-stroke-default bg-white dark:bg-background',\n // Hover (only when not focused, not error, not disabled)\n !isFocused && !error && !disabled && 'hover:border-focus-ring',\n // Padding - adjust for 2px border on focus to prevent layout shift\n error\n ? 'pl-[12px] pr-[12px] py-[8px]'\n : isFocused\n ? 'pl-[11px] pr-[7px] py-[7px]'\n : 'pl-[12px] pr-[8px] py-[8px]',\n // Gap\n 'gap-[8px]',\n // Disabled\n disabled && 'opacity-60 cursor-not-allowed'\n )}\n >\n {/* Left icon */}\n {icon && (\n <span\n className={cn(\n 'flex items-center justify-center shrink-0 size-[20px] [&_svg]:size-[20px]',\n error ? 'text-error-surface-default' : isFocused ? 'text-focus-ring' : 'text-muted-foreground'\n )}\n >\n {icon}\n </span>\n )}\n\n {/* Text input */}\n <input\n ref={inputRef}\n type=\"text\"\n value={currentValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n disabled={disabled}\n placeholder={placeholder}\n className={cn(\n 'flex-1 min-w-0 bg-transparent outline-none font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading placeholder:text-muted-foreground',\n disabled && 'cursor-not-allowed'\n )}\n />\n\n {/* Right action: Search button, icon, or clear */}\n {showClearButton ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"flex items-center justify-center shrink-0 size-[20px] text-muted-foreground hover:text-vibrant-text-heading transition-colors cursor-pointer\"\n aria-label=\"Clear search\"\n tabIndex={-1}\n >\n <X className=\"size-[16px]\" />\n </button>\n ) : variant === 'button' ? (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 h-[36px] min-w-[100px] px-[16px] py-[8px] rounded-[6px] bg-primary-surface-default font-sans font-semibold text-[16px] leading-[24px] text-white cursor-pointer disabled:cursor-not-allowed transition-colors\"\n tabIndex={-1}\n >\n Search\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSearchClick}\n disabled={disabled}\n className=\"flex items-center justify-center shrink-0 size-[36px] rounded-[6px] bg-primary-surface-default cursor-pointer disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Search\"\n tabIndex={-1}\n >\n <Search className=\"size-[20px] text-white\" />\n </button>\n )}\n </div>\n\n {/* Helper text */}\n {displayHelperText && (\n <p\n className={cn(\n 'font-sans font-normal text-[12px] leading-[16px] w-full',\n error ? 'text-error-surface-default' : 'text-vibrant-text-details'\n )}\n >\n {displayHelperText}\n </p>\n )}\n\n {/* Suggestions dropdown */}\n {showSuggestions && suggestions.length > 0 && (\n <div\n data-slot=\"search-input-suggestions\"\n className=\"w-full rounded-[8px] border border-gray-stroke-light bg-white dark:bg-card p-[12px] shadow-[0px_4px_24px_0px_rgba(0,0,0,0.05)] flex flex-col gap-[16px]\"\n >\n {suggestions.map((suggestion, idx) => (\n <button\n key={`${suggestion.label}-${idx}`}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion.label)}\n onMouseDown={(e) => e.preventDefault()}\n className=\"flex items-center gap-[13px] h-[40px] pr-[12px] rounded-[8px] w-full text-left hover:bg-gray-surface-light transition-colors cursor-pointer\"\n >\n {suggestion.icon && (\n <span className=\"flex items-center justify-center shrink-0 size-[40px] rounded-[8px] bg-gray-surface-light [&_svg]:size-[20px] text-muted-foreground\">\n {suggestion.icon}\n </span>\n )}\n <span className=\"flex-1 min-w-0 font-sans font-medium text-[16px] leading-[24px] text-vibrant-text-heading truncate\">\n {suggestion.label}\n </span>\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { SearchInput }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronsUpDown, XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\"\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport type SearchableSelectOption = {\n value: string\n label: string\n disabled?: boolean\n group?: string\n}\n\n// ─── Context ─────────────────────────────────────────────────────────\n\ninterface SearchableSelectContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n mode: \"single\" | \"multiple\"\n value: string\n setValue: (value: string) => void\n values: string[]\n setValues: (values: string[]) => void\n searchable: boolean\n searchPlaceholder: string\n placeholder: string\n disabled: boolean\n maxCount: number\n options: SearchableSelectOption[]\n optionMap: Map<string, string>\n}\n\nconst SearchableSelectContext =\n React.createContext<SearchableSelectContextValue | null>(null)\n\nfunction useSearchableSelect() {\n const ctx = React.useContext(SearchableSelectContext)\n if (!ctx) {\n throw new Error(\n \"SearchableSelect compound components must be used within <SearchableSelect>\"\n )\n }\n return ctx\n}\n\n// ─── Root ────────────────────────────────────────────────────────────\n\ninterface SearchableSelectProps {\n mode?: \"single\" | \"multiple\"\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n values?: string[]\n defaultValues?: string[]\n onValuesChange?: (values: string[]) => void\n searchable?: boolean\n searchPlaceholder?: string\n placeholder?: string\n disabled?: boolean\n maxCount?: number\n options?: SearchableSelectOption[]\n open?: boolean\n onOpenChange?: (open: boolean) => void\n children?: React.ReactNode\n}\n\nfunction SearchableSelect({\n mode = \"single\",\n value: controlledValue,\n defaultValue = \"\",\n onValueChange,\n values: controlledValues,\n defaultValues = [],\n onValuesChange,\n searchable = true,\n searchPlaceholder = \"Search...\",\n placeholder = \"Select...\",\n disabled = false,\n maxCount = Infinity,\n options = [],\n open: controlledOpen,\n onOpenChange,\n children,\n}: SearchableSelectProps) {\n const [internalOpen, setInternalOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalValues, setInternalValues] =\n React.useState<string[]>(defaultValues)\n\n const open = controlledOpen ?? internalOpen\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (controlledOpen !== undefined) {\n onOpenChange?.(next)\n } else {\n setInternalOpen(next)\n onOpenChange?.(next)\n }\n },\n [controlledOpen, onOpenChange]\n )\n\n const value = controlledValue ?? internalValue\n const setValue = React.useCallback(\n (next: string) => {\n if (controlledValue === undefined) {\n setInternalValue(next)\n }\n onValueChange?.(next)\n },\n [controlledValue, onValueChange]\n )\n\n const values = controlledValues ?? internalValues\n const setValues = React.useCallback(\n (next: string[]) => {\n if (controlledValues === undefined) {\n setInternalValues(next)\n }\n onValuesChange?.(next)\n },\n [controlledValues, onValuesChange]\n )\n\n const optionMap = React.useMemo(() => {\n const map = new Map<string, string>()\n for (const opt of options) {\n map.set(opt.value, opt.label)\n }\n return map\n }, [options])\n\n const ctx = React.useMemo<SearchableSelectContextValue>(\n () => ({\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n }),\n [\n open,\n setOpen,\n mode,\n value,\n setValue,\n values,\n setValues,\n searchable,\n searchPlaceholder,\n placeholder,\n disabled,\n maxCount,\n options,\n optionMap,\n ]\n )\n\n return (\n <SearchableSelectContext.Provider value={ctx}>\n <Popover open={open} onOpenChange={setOpen}>\n {children}\n </Popover>\n </SearchableSelectContext.Provider>\n )\n}\n\n// ─── Trigger ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof PopoverTrigger> & {\n size?: \"sm\" | \"default\"\n}) {\n const ctx = useSearchableSelect()\n\n const renderContent = () => {\n if (children) return children\n\n if (ctx.mode === \"single\") {\n const label = ctx.optionMap.get(ctx.value)\n return (\n <span\n data-slot=\"searchable-select-value\"\n className={cn(\n \"truncate\",\n !label && \"text-muted-foreground\"\n )}\n >\n {label || ctx.placeholder}\n </span>\n )\n }\n\n // Multi mode\n if (ctx.values.length === 0) {\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"text-muted-foreground\"\n >\n {ctx.placeholder}\n </span>\n )\n }\n\n const visible = ctx.values.slice(0, ctx.maxCount)\n const remaining = ctx.values.length - visible.length\n\n return (\n <span\n data-slot=\"searchable-select-value\"\n className=\"flex flex-wrap items-center gap-1\"\n >\n {visible.map((v) => (\n <Badge\n key={v}\n variant=\"secondary\"\n className=\"gap-1 pr-1\"\n >\n <span className=\"truncate max-w-[120px]\">\n {ctx.optionMap.get(v) || v}\n </span>\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label={`Remove ${ctx.optionMap.get(v) || v}`}\n className=\"rounded-sm hover:bg-muted cursor-pointer\"\n onPointerDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation()\n ctx.setValues(ctx.values.filter((val) => val !== v))\n }}\n >\n <XIcon className=\"size-3\" />\n </span>\n </Badge>\n ))}\n {remaining > 0 && (\n <Badge variant=\"outline\" className=\"text-muted-foreground\">\n +{remaining} more\n </Badge>\n )}\n </span>\n )\n }\n\n return (\n <PopoverTrigger\n data-slot=\"searchable-select-trigger\"\n data-size={size}\n disabled={ctx.disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:min-h-9 data-[size=sm]:min-h-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ctx.mode === \"multiple\" && \"h-auto flex-wrap whitespace-normal\",\n className\n )}\n {...props}\n >\n {renderContent()}\n <ChevronsUpDown className=\"size-4 shrink-0 opacity-50\" />\n </PopoverTrigger>\n )\n}\n\n// ─── Content ─────────────────────────────────────────────────────────\n\nfunction SearchableSelectContent({\n className,\n children,\n emptyText = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof PopoverContent> & {\n emptyText?: string\n}) {\n const ctx = useSearchableSelect()\n\n const groupedOptions = React.useMemo(() => {\n if (ctx.options.length === 0) return null\n const groups = new Map<string, SearchableSelectOption[]>()\n for (const opt of ctx.options) {\n const key = opt.group || \"\"\n if (!groups.has(key)) groups.set(key, [])\n groups.get(key)!.push(opt)\n }\n return groups\n }, [ctx.options])\n\n const renderAutoItems = () => {\n if (!groupedOptions) return null\n const entries = Array.from(groupedOptions.entries())\n if (entries.length === 1 && entries[0][0] === \"\") {\n return entries[0][1].map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))\n }\n return entries.map(([group, opts]) => (\n <SearchableSelectGroup key={group} heading={group || undefined}>\n {opts.map((opt) => (\n <SearchableSelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SearchableSelectItem>\n ))}\n </SearchableSelectGroup>\n ))\n }\n\n return (\n <PopoverContent\n data-slot=\"searchable-select-content\"\n className={cn(\"w-[var(--radix-popover-trigger-width)] p-0\", className)}\n align=\"start\"\n {...props}\n >\n <Command>\n {ctx.searchable && (\n <CommandInput placeholder={ctx.searchPlaceholder} />\n )}\n <CommandList>\n <CommandEmpty>{emptyText}</CommandEmpty>\n {children || renderAutoItems()}\n </CommandList>\n </Command>\n </PopoverContent>\n )\n}\n\n// ─── Item ────────────────────────────────────────────────────────────\n\nfunction SearchableSelectItem({\n className,\n value,\n children,\n disabled,\n ...props\n}: Omit<React.ComponentProps<typeof CommandItem>, \"onSelect\" | \"value\"> & {\n value: string\n disabled?: boolean\n}) {\n const ctx = useSearchableSelect()\n\n const isSelected =\n ctx.mode === \"single\"\n ? ctx.value === value\n : ctx.values.includes(value)\n\n const handleSelect = () => {\n if (disabled) return\n if (ctx.mode === \"single\") {\n ctx.setValue(value === ctx.value ? \"\" : value)\n ctx.setOpen(false)\n } else {\n ctx.setValues(\n isSelected\n ? ctx.values.filter((v) => v !== value)\n : [...ctx.values, value]\n )\n }\n }\n\n return (\n <CommandItem\n data-slot=\"searchable-select-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none\",\n ctx.mode === \"multiple\" && \"pl-8\",\n className\n )}\n onSelect={handleSelect}\n data-disabled={disabled || undefined}\n {...props}\n >\n {ctx.mode === \"multiple\" && (\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <span\n className={cn(\n \"size-4 rounded-sm border border-primary transition-colors\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"bg-transparent\"\n )}\n >\n {isSelected && <CheckIcon className=\"size-4 p-0.5\" />}\n </span>\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {ctx.mode === \"single\" && isSelected && (\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <CheckIcon className=\"size-4\" />\n </span>\n )}\n </CommandItem>\n )\n}\n\n// ─── Group ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandGroup>) {\n return (\n <CommandGroup\n data-slot=\"searchable-select-group\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\n// ─── Empty ───────────────────────────────────────────────────────────\n\nfunction SearchableSelectEmpty({\n className,\n children = \"No results found.\",\n ...props\n}: React.ComponentProps<typeof CommandEmpty>) {\n return (\n <CommandEmpty\n data-slot=\"searchable-select-empty\"\n className={cn(className)}\n {...props}\n >\n {children}\n </CommandEmpty>\n )\n}\n\n// ─── Exports ─────────────────────────────────────────────────────────\n\nexport {\n SearchableSelect,\n SearchableSelectTrigger,\n SearchableSelectContent,\n SearchableSelectItem,\n SearchableSelectGroup,\n SearchableSelectEmpty,\n}\n\nexport type { SearchableSelectProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","'use client'\n\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { XIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger\n}\n","'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { PanelLeftIcon } from 'lucide-react'\nimport * as React from 'react'\n\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Separator } from '@/components/ui/separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle\n} from '@/components/ui/sheet'\nimport { Skeleton } from '@/components/ui/skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n} from '@/components/ui/tooltip'\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { cn } from '@/lib/utils'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '18rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-9', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('bg-background h-8 w-full shadow-none', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'default'\n }\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar\n}\n","import { cn } from '@/lib/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn('bg-accent animate-pulse rounded-md', className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport interface RichTooltipContentProps\n extends Omit<React.ComponentProps<typeof TooltipPrimitive.Content>, 'children'> {\n icon?: React.ReactNode\n heading?: string\n dismissible?: boolean\n onDismiss?: () => void\n children: React.ReactNode\n}\n\nfunction RichTooltipContent({\n className,\n sideOffset = 4,\n icon,\n heading,\n dismissible = false,\n onDismiss,\n children,\n ...props\n}: RichTooltipContentProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"rich-tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 origin-(--radix-tooltip-content-transform-origin)\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-start gap-3 bg-gray-surface-dark rounded-[12px] px-3 py-4 text-sm leading-5 max-w-sm\">\n {icon && (\n <span className=\"flex items-center justify-center shrink-0 size-5 text-white [&_svg]:size-5\">\n {icon}\n </span>\n )}\n <div className=\"flex flex-1 flex-col gap-2 min-w-0\">\n {heading && (\n <p className=\"font-semibold text-sm leading-5 text-white\">\n {heading}\n </p>\n )}\n <div className=\"font-normal text-sm leading-5 text-white\">\n {children}\n </div>\n </div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"flex items-center justify-center shrink-0 size-5 text-white/70 hover:text-white transition-colors cursor-pointer\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-2.5\" />\n </button>\n )}\n </div>\n <TooltipPrimitive.Arrow\n width={16}\n height={12}\n className=\"fill-gray-surface-dark\"\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, RichTooltipContent }\n","import * as React from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport * as React from 'react'\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger\n} from './dialog'\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger\n} from './drawer'\nimport { useMediaQuery } from './useMediaQuery'\n\ntype SmartDialogProps = React.ComponentProps<typeof Dialog> &\n React.ComponentProps<typeof Drawer>\n\nconst SmartDialog = ({ children, ...props }: SmartDialogProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <Drawer {...props}>{children}</Drawer>\n ) : (\n <Dialog {...props}>{children}</Dialog>\n )\n}\n\ntype SmartDialogContentProps = React.ComponentProps<typeof DialogContent> &\n React.ComponentProps<typeof DrawerContent>\n\nconst SmartDialogContent = ({\n children,\n overlayClassName = '',\n withCloseButton,\n showCloseButton,\n ...props\n}: SmartDialogContentProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerContent\n {...props}\n withCloseButton={withCloseButton ?? showCloseButton ?? true}\n >\n {children}\n </DrawerContent>\n ) : (\n <DialogContent\n {...props}\n showCloseButton={showCloseButton ?? withCloseButton ?? true}\n overlayClassName={overlayClassName}\n >\n {children}\n </DialogContent>\n )\n}\n\ntype SmartDialogDescriptionProps = React.ComponentProps<\n typeof DialogDescription\n> &\n React.ComponentProps<typeof DrawerDescription>\n\nconst SmartDialogDescription = ({\n children,\n ...props\n}: SmartDialogDescriptionProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerDescription {...props}>{children}</DrawerDescription>\n ) : (\n <DialogDescription {...props}>{children}</DialogDescription>\n )\n}\n\ntype SmartDialogHeaderProps = React.ComponentProps<typeof DialogHeader> &\n React.ComponentProps<typeof DrawerHeader>\n\nconst SmartDialogHeader = ({ children, ...props }: SmartDialogHeaderProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerHeader {...props}>{children}</DrawerHeader>\n ) : (\n <DialogHeader {...props}>{children}</DialogHeader>\n )\n}\n\ntype SmartDialogTitleProps = React.ComponentProps<typeof DialogTitle> &\n React.ComponentProps<typeof DrawerTitle>\n\nconst SmartDialogTitle = ({ children, ...props }: SmartDialogTitleProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTitle {...props}>{children}</DrawerTitle>\n ) : (\n <DialogTitle {...props}>{children}</DialogTitle>\n )\n}\n\ntype SmartDialogTriggerProps = React.ComponentProps<typeof DialogTrigger> &\n React.ComponentProps<typeof DrawerTrigger>\n\nconst SmartDialogTrigger = ({\n children,\n ...props\n}: SmartDialogTriggerProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerTrigger {...props}>{children}</DrawerTrigger>\n ) : (\n <DialogTrigger {...props}>{children}</DialogTrigger>\n )\n}\n\ntype SmartDialogFooterProps = React.ComponentProps<typeof DialogFooter> &\n React.ComponentProps<typeof DrawerFooter>\n\nconst SmartDialogFooter = ({ children, ...props }: SmartDialogFooterProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <DrawerFooter {...props}>{children}</DrawerFooter>\n ) : (\n <DialogFooter {...props}>{children}</DialogFooter>\n )\n}\n\ntype SmartDialogCloseProps = React.ComponentProps<typeof DialogClose> &\n React.ComponentProps<typeof DrawerClose>\n\nconst SmartDialogClose = ({ children, ...props }: SmartDialogCloseProps) => {\n const isMobile = useMediaQuery('(max-width: 600px)')\n\n return isMobile ? (\n <>\n <DrawerClose {...props}>{children}</DrawerClose>\n </>\n ) : (\n <DialogClose {...props}>{children}</DialogClose>\n )\n}\n\nexport {\n SmartDialog,\n SmartDialogClose,\n SmartDialogContent,\n SmartDialogDescription,\n SmartDialogFooter,\n SmartDialogHeader,\n SmartDialogTitle,\n SmartDialogTrigger\n}\n","import { useEffect, useState } from 'react'\n\nexport function useMediaQuery(query: string): boolean {\n const getMatches = (query: string): boolean => {\n // Prevents SSR issues\n if (typeof window !== 'undefined') {\n return window.matchMedia(query).matches\n }\n return false\n }\n\n const [matches, setMatches] = useState<boolean>(getMatches(query))\n\n function handleChange() {\n setMatches(getMatches(query))\n }\n\n useEffect(() => {\n const matchMedia = window.matchMedia(query)\n\n // Triggered at the first client-side load and if query changes\n handleChange()\n\n // Listen matchMedia\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange)\n } else {\n matchMedia.addEventListener('change', handleChange)\n }\n\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange)\n } else {\n matchMedia.removeEventListener('change', handleChange)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query])\n\n return matches\n}\n","\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, type ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","'use client'\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-brand-text-vibrant dark:data-[state=unchecked]:bg-input/80 inline-flex h-[24px] w-[40px] shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-offset-1 ',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-5 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-3px)] data-[state=unchecked]:translate-x-[1px]'\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client'\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n/* ─── Internal Context ─────────────────────────────────────── */\n\ntype TabsContextValue = {\n orientation: 'horizontal' | 'vertical'\n}\n\nconst TabsContext = React.createContext<TabsContextValue>({\n orientation: 'horizontal'\n})\n\n/* ─── useTabIndicator hook ─────────────────────────────────── */\n\nfunction useTabIndicator(\n listRef: React.RefObject<HTMLElement | null>,\n orientation: 'horizontal' | 'vertical'\n) {\n const [style, setStyle] = React.useState<React.CSSProperties>({\n position: 'absolute',\n opacity: 0\n })\n const isFirstMeasurement = React.useRef(true)\n\n const measure = React.useCallback(() => {\n const list = listRef.current\n if (!list) return\n\n requestAnimationFrame(() => {\n const activeEl = list.querySelector<HTMLElement>(\n '[data-state=\"active\"]'\n )\n if (!activeEl) return\n\n const noTransition = isFirstMeasurement.current\n\n if (orientation === 'horizontal') {\n setStyle({\n position: 'absolute',\n bottom: 0,\n left: 0,\n height: '2px',\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, width 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n } else {\n setStyle({\n position: 'absolute',\n left: 0,\n top: 0,\n width: '2px',\n height: activeEl.offsetHeight,\n transform: `translateY(${activeEl.offsetTop}px)`,\n transition: noTransition\n ? 'none'\n : 'transform 300ms ease-in-out, height 300ms ease-in-out',\n background: 'var(--primary-stroke-default)',\n opacity: 1\n })\n }\n\n if (noTransition) {\n isFirstMeasurement.current = false\n }\n })\n }, [listRef, orientation])\n\n React.useEffect(() => {\n const list = listRef.current\n if (!list) return\n\n // Initial measurement\n measure()\n\n // Observe data-state changes on triggers\n const mutationObserver = new MutationObserver(() => {\n measure()\n })\n mutationObserver.observe(list, {\n subtree: true,\n attributes: true,\n attributeFilter: ['data-state'],\n childList: true\n })\n\n // Observe resize\n const resizeObserver = new ResizeObserver(() => {\n measure()\n })\n resizeObserver.observe(list)\n\n return () => {\n mutationObserver.disconnect()\n resizeObserver.disconnect()\n }\n }, [listRef, measure])\n\n return { style }\n}\n\n/* ─── Tabs (Root) ──────────────────────────────────────────── */\n\nfunction Tabs({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n const ctx = React.useMemo(\n () => ({ orientation: orientation ?? 'horizontal' }),\n [orientation]\n ) as TabsContextValue\n\n return (\n <TabsContext.Provider value={ctx}>\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={cn(\n orientation === 'vertical' ? 'flex flex-row gap-4' : 'flex flex-col gap-2',\n className\n )}\n {...props}\n />\n </TabsContext.Provider>\n )\n}\n\n/* ─── TabsList ─────────────────────────────────────────────── */\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n const listRef = React.useRef<HTMLDivElement>(null)\n const { orientation } = React.useContext(TabsContext)\n const { style: indicatorStyle } = useTabIndicator(listRef, orientation)\n\n return (\n <TabsPrimitive.List\n ref={listRef}\n data-slot=\"tabs-list\"\n className={cn(\n 'text-muted-foreground relative',\n orientation === 'vertical'\n ? 'flex flex-col border-l border-l-gray-stroke-default'\n : 'flex w-fit items-center overflow-x-auto border-b border-b-gray-stroke-default',\n className\n )}\n {...props}\n >\n {props.children}\n <span data-slot=\"tabs-indicator\" style={indicatorStyle} />\n </TabsPrimitive.List>\n )\n}\n\n/* ─── TabsTrigger ──────────────────────────────────────────── */\n\nconst tabsTriggerVariants = cva(\n 'cursor-pointer inline-flex shrink-0 items-center justify-center font-sans font-medium whitespace-nowrap transition-[color,box-shadow] text-vibrant-text-details data-[state=active]:font-semibold data-[state=active]:text-vibrant-text-heading disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4',\n {\n variants: {\n size: {\n md: 'text-sm leading-5',\n lg: 'text-base leading-6'\n },\n orientation: {\n horizontal: 'pb-1 px-2',\n vertical: 'py-1.5 px-3 justify-start text-left w-full'\n }\n },\n compoundVariants: [\n { orientation: 'horizontal', size: 'md', class: 'min-w-[72px]' },\n { orientation: 'horizontal', size: 'lg', class: 'min-w-[88px]' }\n ],\n defaultVariants: {\n size: 'md',\n orientation: 'horizontal'\n }\n }\n)\n\nexport interface TabsTriggerProps\n extends React.ComponentProps<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {}\n\nfunction TabsTrigger({\n className,\n size,\n children,\n ...props\n}: TabsTriggerProps) {\n const { orientation } = React.useContext(TabsContext)\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(tabsTriggerVariants({ size, orientation }), className)}\n {...props}\n >\n <span\n className={cn(\n 'inline-flex items-center justify-center gap-1.5 rounded-[6px] hover:bg-gray-surface-light',\n orientation === 'vertical'\n ? 'px-2 py-1.5 w-full'\n : 'px-2 py-1.5'\n )}\n >\n {children}\n </span>\n </TabsPrimitive.Trigger>\n )\n}\n\n/* ─── TabsContent ──────────────────────────────────────────── */\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn('flex-1 outline-none', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsTriggerVariants }\n","'use client'\n\nimport {\n ThemeProvider as NextThemesProvider,\n type ThemeProviderProps\n} from 'next-themes'\n\nfunction ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemesProvider\n attribute=\"class\"\n defaultTheme=\"light\"\n enableSystem\n disableTransitionOnChange\n {...props}\n >\n {children}\n </NextThemesProvider>\n )\n}\n\nexport { ThemeProvider, type ThemeProviderProps }\n","'use client'\n\nimport { Monitor, Moon, Sun } from 'lucide-react'\nimport { useTheme } from 'next-themes'\nimport * as React from 'react'\nimport { Button } from './button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger\n} from './dropdown-menu'\n\nfunction ThemeToggle({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { setTheme } = useTheme()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"icon\" className={className} {...props}>\n <Sun className=\"size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <Moon className=\"absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>\n <Sun className=\"size-4\" />\n Light\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>\n <Moon className=\"size-4\" />\n Dark\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>\n <Monitor className=\"size-4\" />\n System\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ThemeToggle }\n","import { cn } from '@/lib/utils'\nimport { type VariantProps } from 'class-variance-authority'\nimport { Clock } from 'lucide-react'\nimport * as React from 'react'\nimport { Button } from './button'\nimport { inputVariants } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\nexport type TimeFormat = '12h' | '24h' | 'h:mm a' | 'h:mm A'\n\nexport interface TimeValue {\n hours: number\n minutes: number\n}\n\nconst TIME_FORMAT_PLACEHOLDER: Record<TimeFormat, string> = {\n '12h': 'hh:mm AM/PM',\n '24h': 'HH:mm',\n 'h:mm a': 'h:mm am/pm',\n 'h:mm A': 'h:mm AM/PM'\n}\n\nfunction is24HourFormat(tf: TimeFormat): boolean {\n return tf === '24h'\n}\n\nfunction formatTime(\n time: TimeValue | null,\n timeFormat: TimeFormat = '12h'\n): string {\n if (!time) return ''\n const { hours, minutes } = time\n const h24 = String(hours).padStart(2, '0')\n const m = String(minutes).padStart(2, '0')\n const h12 = hours % 12 || 12\n const h12p = String(h12).padStart(2, '0')\n const period = hours >= 12 ? 'PM' : 'AM'\n\n switch (timeFormat) {\n case '24h':\n return `${h24}:${m}`\n case 'h:mm a':\n return `${h12}:${m} ${period.toLowerCase()}`\n case 'h:mm A':\n return `${h12}:${m} ${period}`\n case '12h':\n default:\n return `${h12p}:${m} ${period}`\n }\n}\n\nfunction getDisplayHour(hours: number, timeFormat: TimeFormat): number {\n if (is24HourFormat(timeFormat)) return hours\n return hours % 12 || 12\n}\n\nfunction getPeriod(hours: number): 'AM' | 'PM' {\n return hours >= 12 ? 'PM' : 'AM'\n}\n\nexport interface TimeInputProps {\n time: TimeValue | null\n setTime: (time: TimeValue | null) => void\n timeFormat?: TimeFormat\n minuteStep?: number\n inputDisabled?: boolean\n size?: VariantProps<typeof inputVariants>['size']\n className?: string\n inputClassName?: string\n popoverContentClassName?: string\n popoverContentProps?: Omit<\n React.ComponentProps<typeof PopoverContent>,\n 'children' | 'className'\n >\n placeholder?: string\n icon?: React.ReactNode\n formatDisplay?: (time: TimeValue) => string\n}\n\nexport function TimeInput({\n time,\n setTime,\n timeFormat = '12h',\n minuteStep = 1,\n inputDisabled,\n className,\n inputClassName,\n popoverContentClassName,\n popoverContentProps,\n size,\n placeholder,\n icon,\n formatDisplay\n}: TimeInputProps) {\n const resolvedPlaceholder = placeholder ?? TIME_FORMAT_PLACEHOLDER[timeFormat]\n\n const displayValue = React.useMemo(() => {\n if (!time) return ''\n if (formatDisplay) return formatDisplay(time)\n return formatTime(time, timeFormat)\n }, [time, formatDisplay, timeFormat])\n\n const [open, setOpen] = React.useState(false)\n\n const hoursRef = React.useRef<HTMLDivElement>(null)\n const minutesRef = React.useRef<HTMLDivElement>(null)\n const periodRef = React.useRef<HTMLDivElement>(null)\n\n const scrollToSelected = React.useCallback(() => {\n requestAnimationFrame(() => {\n for (const ref of [hoursRef, minutesRef, periodRef]) {\n const container = ref.current\n if (!container) continue\n const selected = container.querySelector('[data-selected=\"true\"]')\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' })\n }\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (open) {\n scrollToSelected()\n }\n }, [open, scrollToSelected])\n\n const handleHourSelect = (hour: number) => {\n let h24: number\n if (is24HourFormat(timeFormat)) {\n h24 = hour\n } else {\n const currentPeriod = time ? getPeriod(time.hours) : 'AM'\n if (currentPeriod === 'AM') {\n h24 = hour === 12 ? 0 : hour\n } else {\n h24 = hour === 12 ? 12 : hour + 12\n }\n }\n setTime({ hours: h24, minutes: time?.minutes ?? 0 })\n }\n\n const handleMinuteSelect = (minute: number) => {\n setTime({ hours: time?.hours ?? 0, minutes: minute })\n }\n\n const handlePeriodSelect = (period: 'AM' | 'PM') => {\n const currentHours = time?.hours ?? 0\n const currentH12 = currentHours % 12\n const newHours = period === 'AM' ? currentH12 : currentH12 + 12\n setTime({ hours: newHours, minutes: time?.minutes ?? 0 })\n }\n\n const hoursList = is24HourFormat(timeFormat)\n ? Array.from({ length: 24 }, (_, i) => i)\n : Array.from({ length: 12 }, (_, i) => i + 1)\n\n const minutesList = Array.from(\n { length: Math.ceil(60 / minuteStep) },\n (_, i) => i * minuteStep\n )\n\n const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null\n const selectedMinute = time?.minutes ?? null\n const selectedPeriod = time ? getPeriod(time.hours) : null\n\n return (\n <div className={cn('relative flex gap-2', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild disabled={inputDisabled}>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n inputVariants({ size }),\n 'bg-background cursor-pointer w-full text-left flex items-center justify-between gap-2 font-normal',\n 'data-[state=open]:border-focus-ring data-[state=open]:hover:border-focus-ring',\n inputDisabled &&\n 'pointer-events-none cursor-not-allowed opacity-50',\n inputClassName\n )}\n disabled={inputDisabled}\n >\n {displayValue || resolvedPlaceholder}\n {icon !== undefined ? (\n icon\n ) : (\n <Clock className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn('w-auto p-0', popoverContentClassName)}\n onOpenAutoFocus={e => e.preventDefault()}\n {...popoverContentProps}\n >\n <div className=\"flex divide-x border border-focus-ring rounded-md\">\n {/* Hours */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div ref={hoursRef} className=\"flex flex-col p-1 \">\n {hoursList.map(h => (\n <Button\n key={h}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedH12 === h}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedH12 === h &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleHourSelect(h)}\n >\n {String(h).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* Minutes */}\n <div className=\"h-56 w-16 overflow-y-auto overscroll-y-contain [-webkit-overflow-scrolling:touch]\">\n <div\n ref={minutesRef}\n className={cn(\n 'flex flex-col p-1',\n minutesList.length <= 12 && 'h-full justify-center'\n )}\n >\n {minutesList.map(m => (\n <Button\n key={m}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedMinute === m}\n className={cn(\n 'w-full justify-center font-mono text-sm',\n selectedMinute === m &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handleMinuteSelect(m)}\n >\n {String(m).padStart(2, '0')}\n </Button>\n ))}\n </div>\n </div>\n\n {/* AM/PM */}\n {!is24HourFormat(timeFormat) && (\n <div className=\"flex flex-col p-1 justify-center gap-1\">\n {(['AM', 'PM'] as const).map(p => (\n <Button\n key={p}\n variant=\"ghost\"\n size=\"sm\"\n data-selected={selectedPeriod === p}\n className={cn(\n 'w-14 justify-center text-sm',\n selectedPeriod === p &&\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground'\n )}\n onClick={() => handlePeriodSelect(p)}\n >\n {p}\n </Button>\n ))}\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","import { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst displayTextVariants = cva(\n 'tracking-normal font-normal font-serif italic text-vibrant-text-display',\n {\n variants: {\n size: {\n lg: 'text-4xl md:text-[3.25rem] leading-[44px] md:leading-[64px]',\n md: 'text-[1.75rem] md:text-4xl leading-[36px] md:leading-[44px]',\n sm: 'text-lg md:text-xl leading-[26px] md:leading-[28px]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nfunction DisplayHeading({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> &\n VariantProps<typeof displayTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(displayTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nconst bodyTextVariants = cva('font-sans text-vibrant-text-body', {\n variants: {\n size: {\n lg: 'text-lg md:text-xl leading-[26px] md:leading-[28px]',\n md: 'text-base leading-[24px]',\n sm: 'text-sm leading-[20px]',\n xs: 'text-xs leading-[16px]'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Body({\n className,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<'p'> &\n VariantProps<typeof bodyTextVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : 'p'\n\n return (\n <Comp\n data-slot=\"p\"\n className={cn(bodyTextVariants({ size, className }))}\n {...props}\n />\n )\n}\n\nfunction HeadingXL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(\n 'text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingL({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h2'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h2'\n\n return (\n <Comp\n data-slot=\"h2\"\n className={cn(\n 'text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingM({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h3'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h3'\n\n return (\n <Comp\n data-slot=\"h3\"\n className={cn(\n 'text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h4'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h4'\n\n return (\n <Comp\n data-slot=\"h4\"\n className={cn(\n 'text-base leading-[24px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h5'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h5'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-sm leading-[20px] font-semibold font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXXS({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h6'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h6'\n\n return (\n <Comp\n data-slot=\"h6\"\n className={cn(\n 'text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\n/* Medium weight heading variants */\n\nfunction HeadingXLMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h1'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h1'\n\n return (\n <Comp\n data-slot=\"h1\"\n className={cn(\n 'text-2xl md:text-[2rem] leading-[32px] md:leading-[40px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingLMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h2'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h2'\n\n return (\n <Comp\n data-slot=\"h2\"\n className={cn(\n 'text-[1.25rem] md:text-[1.5rem] leading-[28px] md:leading-[32px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingMMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h3'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h3'\n\n return (\n <Comp\n data-slot=\"h3\"\n className={cn(\n 'text-[1.125rem] md:text-xl leading-[26px] md:leading-[28px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h4'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h4'\n\n return (\n <Comp\n data-slot=\"h4\"\n className={cn(\n 'text-base leading-[24px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h5'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h5'\n\n return (\n <Comp\n data-slot=\"h5\"\n className={cn(\n 'text-sm leading-[20px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction HeadingXXSMedium({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'h6'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'h6'\n\n return (\n <Comp\n data-slot=\"h6\"\n className={cn(\n 'text-xs leading-[16px] font-medium font-sans text-vibrant-text-heading',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Body,\n bodyTextVariants,\n DisplayHeading,\n displayTextVariants,\n HeadingL,\n HeadingLMedium,\n HeadingM,\n HeadingMMedium,\n HeadingS,\n HeadingSMedium,\n HeadingXL,\n HeadingXLMedium,\n HeadingXS,\n HeadingXSMedium,\n HeadingXXS,\n HeadingXXSMedium\n}\n","export { useTheme } from 'next-themes'\n"],"mappings":"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","names":["jsx","cva","jsx","jsxs","cva","cva","jsx","cva","jsx","jsxs","jsx","React","React","jsx","jsx","jsx","Slot","cva","jsx","cva","Slot","cva","jsx","jsxs","cva","cva","jsx","jsxs","cva","cva","jsx","cva","Slot","jsx","jsxs","Slot","ChevronDownIcon","React","jsx","className","props","ChevronDownIcon","jsx","React","jsx","jsxs","api","React","Fragment","jsx","jsxs","config","jsx","jsx","CollapsibleTrigger","CollapsibleContent","jsx","jsxs","jsx","jsxs","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","React","cva","React","jsx","jsxs","cva","jsx","jsx","jsxs","date","dateFnsFormat","isValid","CalendarDays","React","jsx","jsxs","DATE_FORMAT_TOKENS","DATE_FORMAT_PLACEHOLDER","formatDate","isValid","dateFnsFormat","CalendarDays","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","jsx","jsxs","React","Slot","Slot","cva","jsx","Label","jsx","Label","Slot","jsx","React","jsx","jsxs","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","CheckIcon","CircleIcon","ChevronRightIcon","React","PopoverPrimitive","ChevronDown","X","jsx","jsxs","X","ChevronDown","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","jsx","jsxs","ChevronLeftIcon","ChevronRightIcon","jsx","cva","jsx","jsxs","cva","CircleIcon","jsx","RadioGroup","CircleIcon","jsx","jsx","jsxs","React","X","jsx","jsxs","label","X","React","CheckIcon","XIcon","jsx","jsxs","XIcon","CheckIcon","CheckIcon","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","CheckIcon","jsx","Separator","XIcon","jsx","jsxs","XIcon","Slot","cva","React","jsx","X","jsx","jsxs","Tooltip","X","React","jsx","jsxs","open","Separator","Slot","cva","Tooltip","React","jsx","jsxs","useEffect","useState","query","Fragment","jsx","jsx","jsx","jsx","cva","React","jsx","jsxs","cva","jsx","useTheme","jsx","jsxs","useTheme","React","jsx","jsxs","cva","jsx","cva","React","jsx","Slot","cva","jsx","cva","Slot","useTheme"]}
|