@douglasneuroinformatics/libui 2.0.0-beta.9 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Accordion/AccordionContent.tsx","../../src/components/Accordion/AccordionItem.tsx","../../src/components/Accordion/AccordionRoot.tsx","../../src/components/Accordion/AccordionTrigger.tsx","../../src/components/Accordion/Accordion.tsx","../../src/components/AlertDialog/AlertDialog.tsx","../../src/components/AlertDialog/AlertDialogAction.tsx","../../src/components/Button/Button.tsx","../../src/components/AlertDialog/AlertDialogCancel.tsx","../../src/components/AlertDialog/AlertDialogContent.tsx","../../src/components/AlertDialog/AlertDialogOverlay.tsx","../../src/components/AlertDialog/AlertDialogDescription.tsx","../../src/components/AlertDialog/AlertDialogFooter.tsx","../../src/components/AlertDialog/AlertDialogHeader.tsx","../../src/components/AlertDialog/AlertDialogTitle.tsx","../../src/components/ArrowToggle/ArrowToggle.tsx","../../src/components/Avatar/AvatarFallback.tsx","../../src/components/Avatar/AvatarImage.tsx","../../src/components/Avatar/AvatarRoot.tsx","../../src/components/Avatar/Avatar.tsx","../../src/components/Badge/Badge.tsx","../../src/components/Breadcrumb/BreadcrumbEllipsis.tsx","../../src/components/Breadcrumb/BreadcrumbItem.tsx","../../src/components/Breadcrumb/BreadcrumbLink.tsx","../../src/components/Breadcrumb/BreadcrumbList.tsx","../../src/components/Breadcrumb/BreadcrumbPage.tsx","../../src/components/Breadcrumb/BreadcrumbRoot.tsx","../../src/components/Breadcrumb/BreadcrumbSeparator.tsx","../../src/components/Breadcrumb/Breadcrumb.tsx","../../src/components/Card/Card.tsx","../../src/components/Checkbox/Checkbox.tsx","../../src/components/Collapsible/Collapsible.tsx","../../src/components/Command/Command.tsx","../../src/components/Command/CommandEmpty.tsx","../../src/components/Command/CommandGroup.tsx","../../src/components/Command/CommandInput.tsx","../../src/components/Command/CommandItem.tsx","../../src/components/Command/CommandList.tsx","../../src/components/Command/CommandSeparator.tsx","../../src/components/Command/CommandShortcut.tsx","../../src/components/ContextMenu/ContextMenu.tsx","../../src/components/ContextMenu/ContextMenuCheckboxItem.tsx","../../src/components/ContextMenu/ContextMenuContent.tsx","../../src/components/ContextMenu/ContextMenuItem.tsx","../../src/components/ContextMenu/ContextMenuLabel.tsx","../../src/components/ContextMenu/ContextMenuRadioItem.tsx","../../src/components/ContextMenu/ContextMenuSeparator.tsx","../../src/components/ContextMenu/ContextMenuShortcut.tsx","../../src/components/ContextMenu/ContextMenuSubContent.tsx","../../src/components/ContextMenu/ContextMenuSubTrigger.tsx","../../src/components/DatePicker/DatePicker.tsx","../../src/components/DatePicker/Calendar.tsx","../../src/components/DatePicker/YearSelector.tsx","../../src/components/ScrollArea/ScrollArea.tsx","../../src/components/ScrollArea/ScrollBar.tsx","../../src/components/Dialog/Dialog.tsx","../../src/components/Dialog/DialogContent.tsx","../../src/components/Dialog/DialogOverlay.tsx","../../src/components/Dialog/DialogDescription.tsx","../../src/components/Dialog/DialogFooter.tsx","../../src/components/Dialog/DialogHeader.tsx","../../src/components/Dialog/DialogTitle.tsx","../../src/components/Drawer/Drawer.tsx","../../src/components/Drawer/DrawerContent.tsx","../../src/components/Drawer/DrawerDescription.tsx","../../src/components/Drawer/DrawerFooter.tsx","../../src/components/Drawer/DrawerHeader.tsx","../../src/components/Drawer/DrawerTitle.tsx","../../src/components/DropdownButton/DropdownButton.tsx","../../src/components/DropdownMenu/DropdownMenu.tsx","../../src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx","../../src/components/DropdownMenu/DropdownMenuContent.tsx","../../src/components/DropdownMenu/DropdownMenuItem.tsx","../../src/components/DropdownMenu/DropdownMenuLabel.tsx","../../src/components/DropdownMenu/DropdownMenuRadioItem.tsx","../../src/components/DropdownMenu/DropdownMenuSeparator.tsx","../../src/components/DropdownMenu/DropdownMenuShortcut.tsx","../../src/components/DropdownMenu/DropdownMenuSubContent.tsx","../../src/components/DropdownMenu/DropdownMenuSubTrigger.tsx","../../src/components/ErrorBoundary/ErrorBoundary.tsx","../../src/components/ErrorFallback/ErrorFallback.tsx","../../src/components/Form/Form.tsx","../../src/components/Heading/Heading.tsx","../../src/components/Form/ErrorMessage.tsx","../../src/components/Form/DynamicField.tsx","../../src/components/Form/StaticField.tsx","../../src/components/Form/NumberRecordField.tsx","../../src/components/Form/NumberField/NumberField.tsx","../../src/components/Input/Input.tsx","../../src/components/Label/Label.tsx","../../src/components/Form/FieldGroup/FieldGroupDescription.tsx","../../src/components/Popover/Popover.tsx","../../src/components/Popover/PopoverContent.tsx","../../src/components/Form/FieldGroup/FieldGroupRoot.tsx","../../src/components/Form/FieldGroup/FieldGroupRow.tsx","../../src/components/Form/FieldGroup/FieldGroup.tsx","../../src/components/Form/NumberField/NumberFieldInput.tsx","../../src/components/RadioGroup/RadioGroup.tsx","../../src/components/RadioGroup/RadioGroupItem.tsx","../../src/components/Form/NumberField/NumberFieldRadio.tsx","../../src/components/Slider/Slider.tsx","../../src/components/Form/NumberField/NumberFieldSlider.tsx","../../src/components/Form/RecordArrayField.tsx","../../src/components/Form/BooleanField/BooleanField.tsx","../../src/components/Form/BooleanField/BooleanFieldCheckbox.tsx","../../src/components/Form/BooleanField/BooleanFieldRadio.tsx","../../src/components/Form/DateField/DateField.tsx","../../src/components/Form/SetField/SetField.tsx","../../src/components/Form/SetField/SetFieldListbox.tsx","../../src/components/Form/SetField/SetFieldSelect.tsx","../../src/components/Form/StringField/StringField.tsx","../../src/components/Form/StringField/StringFieldInput.tsx","../../src/components/Form/StringField/StringFieldPassword.tsx","../../src/components/Form/BaseRadioField.tsx","../../src/components/Form/StringField/StringFieldRadio.tsx","../../src/components/Select/Select.tsx","../../src/components/Select/SelectContent.tsx","../../src/components/Select/SelectScrollDownButton.tsx","../../src/components/Select/SelectScrollUpButton.tsx","../../src/components/Select/SelectItem.tsx","../../src/components/Select/SelectLabel.tsx","../../src/components/Select/SelectSeparator.tsx","../../src/components/Select/SelectTrigger.tsx","../../src/components/Form/StringField/StringFieldSelect.tsx","../../src/components/TextArea/TextArea.tsx","../../src/components/Form/StringField/StringFieldTextArea.tsx","../../src/components/Form/ScalarField.tsx","../../src/components/Form/FieldsComponent.tsx","../../src/components/Form/utils.ts","../../src/components/HoverCard/HoverCard.tsx","../../src/components/HoverCard/HoverCardContent.tsx","../../src/components/LanguageToggle/LanguageToggle.tsx","../../src/components/LegacyDropdown/LegacyDropdown.tsx","../../src/components/LegacyModal/LegacyModal.tsx","../../src/components/LegacySelectDropdown/LegacySelectDropdown.tsx","../../src/components/LegacySlider/LegacySlider.tsx","../../src/components/LegacyStepper/LegacyStepper.tsx","../../src/components/LegacyTable/LegacyClientTable.tsx","../../src/components/LegacyTable/LegacyTable.tsx","../../src/components/LegacyTable/LegacyTableColumnHeader.tsx","../../src/components/LineGraph/LineGraph.tsx","../../src/components/MenuBar/MenuBar.tsx","../../src/components/MenuBar/MenuBarCheckboxItem.tsx","../../src/components/MenuBar/MenuBarContent.tsx","../../src/components/MenuBar/MenuBarItem.tsx","../../src/components/MenuBar/MenuBarLabel.tsx","../../src/components/MenuBar/MenuBarRadioItem.tsx","../../src/components/MenuBar/MenuBarRoot.tsx","../../src/components/MenuBar/MenuBarSeparator.tsx","../../src/components/MenuBar/MenuBarShortcut.tsx","../../src/components/MenuBar/MenuBarSubContent.tsx","../../src/components/MenuBar/MenuBarSubTrigger.tsx","../../src/components/MenuBar/MenuBarTrigger.tsx","../../src/components/NotificationHub/NotificationHub.tsx","../../src/components/NotificationHub/NotificationIcon.tsx","../../src/components/Pagination/PaginationContent.tsx","../../src/components/Pagination/PaginationEllipsis.tsx","../../src/components/Pagination/PaginationItem.tsx","../../src/components/Pagination/PaginationLink.tsx","../../src/components/Pagination/PaginationNext.tsx","../../src/components/Pagination/PaginationPrevious.tsx","../../src/components/Pagination/PaginationRoot.tsx","../../src/components/Pagination/Pagination.tsx","../../src/components/Progress/Progress.tsx","../../src/components/Resizable/Resizable.tsx","../../src/components/Resizable/ResizableHandle.tsx","../../src/components/Resizable/ResizablePanelGroup.tsx","../../src/components/SearchBar/SearchBar.tsx","../../src/components/Separator/Separator.tsx","../../src/components/Sheet/Sheet.tsx","../../src/components/Sheet/SheetContent.tsx","../../src/components/Sheet/SheetDescription.tsx","../../src/components/Sheet/SheetFooter.tsx","../../src/components/Sheet/SheetHeader.tsx","../../src/components/Sheet/SheetOverlay.tsx","../../src/components/Sheet/SheetTitle.tsx","../../src/components/Spinner/Spinner.tsx","../../src/components/SpinnerIcon/SpinnerIcon.tsx","../../src/components/Switch/Switch.tsx","../../src/components/Table/TableBody.tsx","../../src/components/Table/TableCaption.tsx","../../src/components/Table/TableCell.tsx","../../src/components/Table/TableFooter.tsx","../../src/components/Table/TableHead.tsx","../../src/components/Table/TableHeader.tsx","../../src/components/Table/TableRoot.tsx","../../src/components/Table/TableRow.tsx","../../src/components/Table/Table.tsx","../../src/components/Tabs/Tabs.tsx","../../src/components/Tabs/TabsContent.tsx","../../src/components/Tabs/TabsList.tsx","../../src/components/Tabs/TabsTrigger.tsx","../../src/components/ThemeToggle/ThemeToggle.tsx","../../src/components/Tooltip/TooltipContent.tsx","../../src/components/Tooltip/TooltipRoot.tsx","../../src/components/Tooltip/TooltipTrigger.tsx","../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(function AccordionContent({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n ref={ref}\n {...props}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n});\n","import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(function AccordionItem({ className, ...props }, ref) {\n return <AccordionPrimitive.Item className={cn('border-b', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nexport const AccordionRoot = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>\n>(function AccordionRoot(props, ref) {\n return <AccordionPrimitive.Root data-testid=\"accordion\" ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(function AccordionTrigger({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n 'flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n});\n","import { AccordionContent } from './AccordionContent';\nimport { AccordionItem } from './AccordionItem';\nimport { AccordionRoot } from './AccordionRoot';\nimport { AccordionTrigger } from './AccordionTrigger';\n\nexport const Accordion = Object.assign(AccordionRoot, {\n Content: AccordionContent,\n Item: AccordionItem,\n Trigger: AccordionTrigger\n});\n","import { Root } from '@radix-ui/react-alert-dialog';\nimport { Trigger } from '@radix-ui/react-alert-dialog';\n\nimport { AlertDialogAction } from './AlertDialogAction';\nimport { AlertDialogCancel } from './AlertDialogCancel';\nimport { AlertDialogContent } from './AlertDialogContent';\nimport { AlertDialogDescription } from './AlertDialogDescription';\nimport { AlertDialogFooter } from './AlertDialogFooter';\nimport { AlertDialogHeader } from './AlertDialogHeader';\nimport { AlertDialogOverlay } from './AlertDialogOverlay';\nimport { AlertDialogTitle } from './AlertDialogTitle';\n\nexport const AlertDialog = Object.assign(Root, {\n Action: AlertDialogAction,\n Cancel: AlertDialogCancel,\n Content: AlertDialogContent,\n Description: AlertDialogDescription,\n Footer: AlertDialogFooter,\n Header: AlertDialogHeader,\n Overlay: AlertDialogOverlay,\n Title: AlertDialogTitle,\n Trigger\n});\n","import React from 'react';\n\nimport { Action } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nimport { buttonVariants } from '../Button';\n\nexport const AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof Action>,\n React.ComponentPropsWithoutRef<typeof Action>\n>(function AlertDialogAction({ className, ...props }, ref) {\n return <Action className={cn(buttonVariants(), className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { Slot, Slottable } from '@radix-ui/react-slot';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nexport const BUTTON_ICON_SIZE = {\n lg: 18,\n md: 16,\n sm: 14\n};\n\nexport const buttonVariants = cva(\n 'flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n defaultVariants: {\n size: 'md',\n variant: 'primary'\n },\n variants: {\n size: {\n icon: 'p-1.5',\n lg: 'h-10 rounded-md px-8',\n md: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs'\n },\n variant: {\n danger: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n outline: 'border border-input bg-inherit shadow-sm',\n primary: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-sm hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type ButtonProps = Simplify<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n /** @deprecated - use children */\n label?: string;\n }\n>;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { asChild, children, className, label, size = 'md', variant = 'primary', ...props },\n ref\n) {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp className={cn(buttonVariants({ className, size, variant }))} ref={ref} {...props}>\n {label}\n <Slottable>{children}</Slottable>\n </Comp>\n );\n});\n","import React from 'react';\n\nimport { Cancel } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nimport { buttonVariants } from '../Button';\n\nexport const AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof Cancel>,\n React.ComponentPropsWithoutRef<typeof Cancel>\n>(function AlertDialogCancel({ className, ...props }, ref) {\n return (\n <Cancel className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)} ref={ref} {...props} />\n );\n});\n","import React from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nimport { AlertDialogOverlay } from './AlertDialogOverlay';\n\nexport const AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function AlertDialogContent({ className, ...props }, ref) {\n return (\n <Portal>\n <AlertDialogOverlay />\n <Content\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n />\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Overlay } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof Overlay>,\n React.ComponentPropsWithoutRef<typeof Overlay>\n>(function AlertDialogOverlay({ className, ...props }, ref) {\n return (\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n );\n});\n","import React from 'react';\n\nimport { Description } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof Description>,\n React.ComponentPropsWithoutRef<typeof Description>\n>(function AlertDialogDescription({ className, ...props }, ref) {\n return <Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n});\n","import { cn } from '@/utils';\n\nexport const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\n","import { cn } from '@/utils';\n\nexport const AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Title } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof Title>,\n React.ComponentPropsWithoutRef<typeof Title>\n>(function AlertDialogTitle({ className, ...props }, ref) {\n return <Title className={cn('text-lg font-semibold', className)} ref={ref} {...props} />;\n});\n","import React, { useMemo } from 'react';\n\nimport { ChevronUpIcon } from 'lucide-react';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type ArrowToggleProps = Simplify<\n React.HTMLAttributes<HTMLButtonElement> & {\n /** Whether or not the arrow is currently toggled */\n isToggled?: boolean;\n\n /** The starting position of the arrow (i.e., which direction does it point to) */\n position: 'down' | 'left' | 'right' | 'up';\n\n /** The clockwise rotation of the arrow when toggled (e.g., if the position is 'right' and rotation is 90, the arrow will point down) */\n rotation?: number;\n\n size?: ButtonProps['size'];\n\n /** The variant of button to use */\n variant?: Extract<ButtonProps['variant'], 'ghost' | 'outline'>;\n }\n>;\n\nexport const ArrowToggle = React.forwardRef<HTMLButtonElement, ArrowToggleProps>(function ArrowToggle(\n { children, className, isToggled, position, rotation = 0, size = 'icon', variant = 'ghost', ...props },\n ref\n) {\n const computedRotation = useMemo(() => {\n const toggleRotation = isToggled ? rotation : 0;\n switch (position) {\n case 'up':\n return 0 + toggleRotation;\n case 'right':\n return 90 + toggleRotation;\n case 'down':\n return 180 + toggleRotation;\n case 'left':\n return 270 + toggleRotation;\n }\n }, [position, rotation, isToggled]);\n\n return (\n <Button\n className={cn(size === 'icon' && 'h-6 w-6', className)}\n data-testid=\"arrow-toggle\"\n ref={ref}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n <ChevronUpIcon\n className=\"transform-gpu transition-transform\"\n data-testid=\"arrow-up-icon\"\n style={{ transform: `rotate(${computedRotation}deg)` }}\n />\n {children}\n </Button>\n );\n});\n","import React from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(function AvatarFallback({ className, ...props }, ref) {\n return (\n <AvatarPrimitive.Fallback\n className={cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(function AvatarImage({ className, ...props }, ref) {\n return <AvatarPrimitive.Image className={cn('aspect-square h-full w-full', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarRoot = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(function AvatarRoot({ className, ...props }, ref) {\n return (\n <AvatarPrimitive.Root\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n data-testid=\"avatar\"\n ref={ref}\n {...props}\n />\n );\n});\n","import { AvatarFallback } from './AvatarFallback';\nimport { AvatarImage } from './AvatarImage';\nimport { AvatarRoot } from './AvatarRoot';\n\nexport const Avatar = Object.assign(AvatarRoot, {\n Fallback: AvatarFallback,\n Image: AvatarImage\n});\n","import React from 'react';\n\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-sm border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n defaultVariants: {\n variant: 'default'\n },\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof badgeVariants>;\n\nconst Badge = ({ className, variant, ...props }: BadgeProps) => {\n return <div className={cn(badgeVariants({ variant }), className)} data-testid=\"badge\" {...props} />;\n};\n\nexport { Badge, badgeVariants };\n","import { MoreHorizontalIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span\n aria-hidden=\"true\"\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n role=\"presentation\"\n {...props}\n >\n <MoreHorizontalIcon className=\"h-4 w-4\" />\n </span>\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n function BreadcrumbItem({ className, ...props }, ref) {\n return <li className={cn('inline-flex items-center gap-1.5', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & {\n asChild?: boolean;\n }\n>(function BreadcrumbLink({ asChild, className, ...props }, ref) {\n const Comp = asChild ? Slot : 'a';\n return <Comp className={cn('transition-colors hover:text-foreground', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n function BreadcrumbList({ className, ...props }, ref) {\n return (\n <ol\n className={cn(\n 'flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n function BreadcrumbPage({ className, ...props }, ref) {\n return (\n <span\n aria-current=\"page\"\n aria-disabled=\"true\"\n className={cn('font-normal text-foreground', className)}\n ref={ref}\n role=\"link\"\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nexport const BreadcrumbRoot = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'> & {\n separator?: React.ReactNode;\n }\n>(function BreadcrumbRoot({ ...props }, ref) {\n return <nav aria-label=\"breadcrumb\" ref={ref} {...props} />;\n});\n","import { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => (\n <li aria-hidden=\"true\" className={cn('[&>svg]:size-3.5', className)} role=\"presentation\" {...props}>\n {children ?? <ChevronRightIcon />}\n </li>\n);\n","import { BreadcrumbEllipsis } from './BreadcrumbEllipsis';\nimport { BreadcrumbItem } from './BreadcrumbItem';\nimport { BreadcrumbLink } from './BreadcrumbLink';\nimport { BreadcrumbList } from './BreadcrumbList';\nimport { BreadcrumbPage } from './BreadcrumbPage';\nimport { BreadcrumbRoot } from './BreadcrumbRoot';\nimport { BreadcrumbSeparator } from './BreadcrumbSeparator';\n\nexport const Breadcrumb = Object.assign(BreadcrumbRoot, {\n Ellipsis: BreadcrumbEllipsis,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n List: BreadcrumbList,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nconst CardRoot = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardRoot(\n { className, ...props },\n ref\n) {\n return (\n <div\n className={cn('rounded-xl border bg-card text-card-foreground shadow', className)}\n data-testid=\"card\"\n ref={ref}\n {...props}\n />\n );\n});\n\nexport const Card = Object.assign(CardRoot, {\n Content: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('p-6 pt-0', className)} {...props} />\n ),\n Description: ({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n Footer: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return <div className={cn('flex items-center p-6 pt-0', className)} {...props} />;\n },\n Header: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n ),\n Title: ({ children, className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) => (\n <h3 className={cn('font-semibold leading-none tracking-tight', className)} {...props}>\n {children}\n </h3>\n )\n});\n","import React from 'react';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(function Checkbox({ className, ...props }, ref) {\n return (\n <CheckboxPrimitive.Root\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n className\n )}\n data-testid=\"checkbox\"\n ref={ref}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-current')}>\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\n","import { Content, Root, Trigger } from '@radix-ui/react-collapsible';\n\nexport const Collapsible = Object.assign(Root, {\n Content,\n Trigger\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nimport { CommandEmpty } from './CommandEmpty';\nimport { CommandGroup } from './CommandGroup';\nimport { CommandInput } from './CommandInput';\nimport { CommandItem } from './CommandItem';\nimport { CommandList } from './CommandList';\nimport { CommandSeparator } from './CommandSeparator';\nimport { CommandShortcut } from './CommandShortcut';\n\nconst CommandRoot = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(function Command({ className, ...props }, ref) {\n return (\n <CommandPrimitive\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n\nexport const Command = Object.assign(CommandRoot, {\n Empty: CommandEmpty,\n Group: CommandGroup,\n Input: CommandInput,\n Item: CommandItem,\n List: CommandList,\n Separator: CommandSeparator,\n Shortcut: CommandShortcut\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nexport const CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(function CommandEmpty(props, ref) {\n return <CommandPrimitive.Empty className=\"py-6 text-center text-sm\" ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(function CommandGroup({ className, ...props }, ref) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(function CommandInput({ className, ...props }, ref) {\n return (\n // eslint-disable-next-line react/no-unknown-property\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <SearchIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(function CommandItem({ className, ...props }, ref) {\n return (\n <CommandPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(function CommandList({ className, ...props }, ref) {\n return (\n <CommandPrimitive.List\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(function CommandSeparator({ className, ...props }, ref) {\n return <CommandPrimitive.Separator className={cn('-mx-1 h-px bg-border', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\n","import { Group, Portal, RadioGroup, Root, Sub, Trigger } from '@radix-ui/react-context-menu';\n\nimport { ContextMenuCheckboxItem } from './ContextMenuCheckboxItem';\nimport { ContextMenuContent } from './ContextMenuContent';\nimport { ContextMenuItem } from './ContextMenuItem';\nimport { ContextMenuLabel } from './ContextMenuLabel';\nimport { ContextMenuRadioItem } from './ContextMenuRadioItem';\nimport { ContextMenuSeparator } from './ContextMenuSeparator';\nimport { ContextMenuShortcut } from './ContextMenuShortcut';\nimport { ContextMenuSubContent } from './ContextMenuSubContent';\nimport { ContextMenuSubTrigger } from './ContextMenuSubTrigger';\n\nexport const ContextMenu = Object.assign(Root, {\n CheckboxItem: ContextMenuCheckboxItem,\n Content: ContextMenuContent,\n Group,\n Item: ContextMenuItem,\n Label: ContextMenuLabel,\n Portal,\n RadioGroup,\n RadioItem: ContextMenuRadioItem,\n Separator: ContextMenuSeparator,\n Shortcut: ContextMenuShortcut,\n Sub,\n SubContent: ContextMenuSubContent,\n SubTrigger: ContextMenuSubTrigger,\n Trigger\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(function ContextMenuCheckboxItem({ checked, children, className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n checked={checked}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(function ContextMenuContent({ className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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',\n className\n )}\n ref={ref}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(function ContextMenuItem({ className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(function ContextMenuLabel({ className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Label\n className={cn('px-2 py-1.5 text-sm font-semibold text-foreground', inset && 'pl-8', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(function ContextMenuRadioItem({ children, className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(function ContextMenuSeparator({ className, ...props }, ref) {\n return <ContextMenuPrimitive.Separator className={cn('-mx-1 my-1 h-px bg-border', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(function ContextMenuSubContent({ className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(function ContextMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n});\n","import React, { useReducer, useState } from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { ArrowToggle } from '../ArrowToggle';\nimport { Card } from '../Card';\nimport { CALENDAR_ANIMATION_DURATION, Calendar } from './Calendar';\nimport { YearSelector } from './YearSelector';\n\nconst MONTHS = [\n 'january',\n 'february',\n 'march',\n 'april',\n 'may',\n 'june',\n 'july',\n 'august',\n 'september',\n 'october',\n 'november',\n 'december'\n] as const;\n\ntype IncrementAction = {\n type: 'increment';\n};\n\ntype DecrementAction = {\n type: 'decrement';\n};\n\ntype SetYearAction = {\n type: 'set-year';\n value: number;\n};\n\ntype ReducerAction = DecrementAction | IncrementAction | SetYearAction;\n\nconst reducer = (previousDate: Date, action: ReducerAction) => {\n const newDate = new Date(previousDate.valueOf());\n switch (action.type) {\n case 'increment':\n newDate.setMonth(newDate.getMonth() + 1);\n break;\n case 'decrement':\n newDate.setMonth(newDate.getMonth() - 1);\n break;\n case 'set-year':\n newDate.setFullYear(action.value);\n }\n return newDate;\n};\n\nexport type DatePickerProps = {\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n onSelection: (value: Date) => void;\n};\n\nexport const DatePicker = React.forwardRef<React.ElementRef<typeof Card>, DatePickerProps>(function DatePicker(\n { onSelection, ...props },\n ref\n) {\n const [date, dispatch] = useReducer(reducer, new Date());\n const [showYearSelector, setShowYearSelector] = useState(false);\n const { t } = useTranslation('libui');\n\n // this is to prevent changing month before prev calendar is unmounted\n // the duration is doubled because presumably it is to mount old and mount new\n const [canSetMonth, setCanSetMonth] = useState(true);\n\n const monthName = t(`months.${MONTHS[date.getMonth()]}`);\n\n const handleYearSelection = (date: Date) => {\n dispatch({ type: 'set-year', value: date.getFullYear() });\n setShowYearSelector(false);\n };\n\n return (\n <Card className=\"w-fit p-3\" data-testid=\"datepicker\" ref={ref} {...props}>\n <div className=\"mb-3 flex items-center justify-between px-1\">\n <div className=\"flex items-center\">\n <span className=\"mx-1 text-sm font-medium tracking-tight\">{`${monthName} ${date.getFullYear()}`}</span>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n isToggled={showYearSelector}\n position=\"up\"\n rotation={180}\n tabIndex={-1}\n onClick={() => {\n setShowYearSelector(!showYearSelector);\n }}\n />\n </div>\n <div className={cn('flex', { hidden: showYearSelector })}>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"left\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'decrement' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"right\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'increment' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n </div>\n </div>\n <div>\n <AnimatePresence initial={false} mode=\"wait\">\n {showYearSelector ? (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 10 }}\n initial={{ opacity: 0, y: 10 }}\n key={0}\n transition={{ duration: 0.2 }}\n >\n <YearSelector selected={date} onSelection={handleYearSelection} />\n </motion.div>\n ) : (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n initial={{ opacity: 0, y: -10 }}\n key={1}\n transition={{ duration: 0.2 }}\n >\n <Calendar month={date.getMonth()} year={date.getFullYear()} onSelection={onSelection} />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </Card>\n );\n});\n","import React from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { range } from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\n\nexport const CALENDAR_ANIMATION_DURATION = 0.2; // seconds\n\nexport type CalendarProps = {\n month: number;\n onSelection: (date: Date) => void;\n year: number;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(function Calendar(props, ref) {\n const { t } = useTranslation('libui');\n const firstDay = new Date(props.year, props.month).getDay();\n const lastDay = new Date(props.year, props.month + 1, 0).getDate();\n const days = range(1, lastDay + 1);\n\n const daysOfWeek = [\n t('days.sunday'),\n t('days.monday'),\n t('days.tuesday'),\n t('days.wednesday'),\n t('days.thursday'),\n t('days.friday'),\n t('days.saturday')\n ];\n\n return (\n <AnimatePresence initial={false} mode=\"wait\">\n <motion.div\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -20 }}\n initial={{ opacity: 0, x: 20 }}\n key={`${props.year}-${props.month}`}\n transition={{ duration: CALENDAR_ANIMATION_DURATION }}\n >\n <div className=\"grid h-56 w-56 grid-cols-7 text-sm\" ref={ref}>\n {daysOfWeek.map((label) => (\n <div className=\"flex h-8 w-8 items-center justify-center text-muted-foreground\" key={label}>\n {label.charAt(0).toUpperCase()}\n </div>\n ))}\n <div style={{ gridColumn: `span ${firstDay} / span ${firstDay}` }} />\n {days.map((day) => (\n <button\n className=\"dark:hover:bg-extra-muted flex h-8 w-8 items-center justify-center rounded-md hover:bg-slate-200 dark:hover:bg-slate-700\"\n key={day}\n tabIndex={-1}\n type=\"button\"\n onClick={() => {\n props.onSelection(new Date(props.year, props.month, day));\n }}\n >\n {day}\n </button>\n ))}\n </div>\n </motion.div>\n </AnimatePresence>\n );\n});\n","import { useEffect, useRef } from 'react';\n\nimport { range } from 'lodash-es';\n\nimport { cn } from '@/utils';\n\nimport { ScrollArea } from '../ScrollArea';\n\nexport type YearSelectorProps = {\n onSelection: (date: Date) => void;\n selected: Date;\n};\n\nexport const YearSelector = (props: YearSelectorProps) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n const currentYear = new Date().getFullYear();\n const years = Array.from(range(currentYear - 100, currentYear + 8)).reverse();\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({ block: 'center' });\n }\n }, []);\n\n return (\n <ScrollArea className=\"h-56 w-56\">\n <div className=\"grid grid-cols-3 gap-x-2 gap-y-1 text-sm text-muted-foreground\">\n {years.map((year) => (\n <div className=\"flex h-7 items-center justify-center\" key={year}>\n <button\n className={cn(\n 'h-full w-full rounded-md hover:bg-slate-200 dark:hover:bg-slate-700',\n year === props.selected.getFullYear() &&\n 'bg-primary text-primary-foreground hover:bg-primary dark:hover:bg-primary'\n )}\n ref={year === props.selected.getFullYear() ? selectedRef : null}\n tabIndex={-1}\n type=\"button\"\n onClick={() => {\n props.onSelection(new Date(year, 0));\n }}\n >\n {year}\n </button>\n </div>\n ))}\n </div>\n </ScrollArea>\n );\n};\n","import React from 'react';\n\nimport { Corner, Root, Viewport } from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/utils';\n\nimport { ScrollBar } from './ScrollBar';\n\nexport const ScrollArea = React.forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function ScrollArea({ children, className, ...props }, ref) {\n return (\n <Root className={cn('relative overflow-hidden', className)} data-testid=\"scroll-area\" ref={ref} {...props}>\n <Viewport className=\"h-full w-full rounded-[inherit]\">{children}</Viewport>\n <ScrollBar />\n <Corner />\n </Root>\n );\n }\n);\n","import React from 'react';\n\nimport { ScrollAreaScrollbar, ScrollAreaThumb } from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/utils';\n\nexport const ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaScrollbar>\n>(function ScrollBar({ className, orientation = 'vertical', ...props }, ref) {\n return (\n <ScrollAreaScrollbar\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n >\n <ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaScrollbar>\n );\n});\n","import { Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { DialogContent } from './DialogContent';\nimport { DialogDescription } from './DialogDescription';\nimport { DialogFooter } from './DialogFooter';\nimport { DialogHeader } from './DialogHeader';\nimport { DialogTitle } from './DialogTitle';\n\nexport const Dialog = Object.assign(Root, {\n Content: DialogContent,\n Description: DialogDescription,\n Footer: DialogFooter,\n Header: DialogHeader,\n Title: DialogTitle,\n Trigger\n});\n","import React from 'react';\n\nimport { Close, Content, Portal } from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nimport { DialogOverlay } from './DialogOverlay';\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function DialogContent({ children, className, ...props }, ref) {\n return (\n <Portal>\n <DialogOverlay />\n <Content\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <XIcon className=\"h-4 w-4\" />\n </Close>\n </Content>\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogOverlay = React.forwardRef<\n React.ElementRef<typeof Overlay>,\n React.ComponentPropsWithoutRef<typeof Overlay>\n>(function DialogOverlay({ className, ...props }, ref) {\n return (\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogDescription = React.forwardRef<\n React.ElementRef<typeof Description>,\n React.ComponentPropsWithoutRef<typeof Description>\n>(function DialogDescription({ className, ...props }, ref) {\n return <Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\n","import { cn } from '@/utils';\n\nexport const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogTitle = React.forwardRef<\n React.ElementRef<typeof Title>,\n React.ComponentPropsWithoutRef<typeof Title>\n>(function DialogTitle({ className, ...props }, ref) {\n return <Title className={cn('text-lg font-semibold leading-none tracking-tight', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { DrawerContent } from './DrawerContent';\nimport { DrawerDescription } from './DrawerDescription';\nimport { DrawerFooter } from './DrawerFooter';\nimport { DrawerHeader } from './DrawerHeader';\nimport { DrawerTitle } from './DrawerTitle';\n\nconst DrawerRoot = ({ shouldScaleBackground = true, ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />\n);\n\nexport const Drawer = Object.assign(DrawerRoot, {\n Close: DrawerPrimitive.Close,\n Content: DrawerContent,\n Description: DrawerDescription,\n Footer: DrawerFooter,\n Header: DrawerHeader,\n Title: DrawerTitle,\n Trigger: DrawerPrimitive.Trigger\n});\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(function DrawerContent({ children, className, ...props }, ref) {\n return (\n <DrawerPrimitive.Portal>\n <DrawerPrimitive.Overlay className={cn('fixed inset-0 z-50 bg-black/80', className)} ref={ref} {...props} />\n <DrawerPrimitive.Content\n className={cn(\n 'fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background',\n className\n )}\n ref={ref}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(function DrawerDescription({ className, ...props }, ref) {\n return (\n <DrawerPrimitive.Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />\n );\n});\n","import { cn } from '@/utils';\n\nexport const DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('mt-auto flex flex-col gap-2 p-4', className)} {...props} />\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('grid gap-1.5 p-4 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(function DrawerTitle({ className, ...props }, ref) {\n return (\n <DrawerPrimitive.Title\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownButton = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n function DropdownButton({ children, className, ...props }, ref) {\n return (\n <button\n className={cn(\n 'flex h-9 w-full items-center whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n children ? 'justify-between' : 'justify-end',\n className\n )}\n ref={ref}\n type=\"button\"\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 opacity-50\" />\n </button>\n );\n }\n);\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem';\nimport { DropdownMenuContent } from './DropdownMenuContent';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuLabel } from './DropdownMenuLabel';\nimport { DropdownMenuRadioItem } from './DropdownMenuRadioItem';\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator';\nimport { DropdownMenuShortcut } from './DropdownMenuShortcut';\nimport { DropdownMenuSubContent } from './DropdownMenuSubContent';\nimport { DropdownMenuSubTrigger } from './DropdownMenuSubTrigger';\n\nexport const DropdownMenu = Object.assign(DropdownMenuPrimitive.Root, {\n CheckboxItem: DropdownMenuCheckboxItem,\n Content: DropdownMenuContent,\n Group: DropdownMenuPrimitive.Group,\n Item: DropdownMenuItem,\n Label: DropdownMenuLabel,\n Portal: DropdownMenuPrimitive.Portal,\n RadioGroup: DropdownMenuPrimitive.RadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n Sub: DropdownMenuPrimitive.Sub,\n SubContent: DropdownMenuSubContent,\n SubTrigger: DropdownMenuSubTrigger,\n Trigger: DropdownMenuPrimitive.Trigger\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(function DropdownMenuCheckboxItem({ checked, children, className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n checked={checked}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport type DropdownMenuContentProps = React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> & {\n widthFull?: boolean;\n};\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n DropdownMenuContentProps\n>(function DropdownMenuContent({ className, sideOffset = 4, widthFull = false, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md',\n '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',\n widthFull && 'w-[var(--radix-dropdown-menu-trigger-width)]',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(function DropdownMenuItem({ className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(function DropdownMenuLabel({ className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Label\n className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(function DropdownMenuRadioItem({ children, className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(function DropdownMenuSeparator({ className, ...props }, ref) {\n return <DropdownMenuPrimitive.Separator className={cn('-mx-1 my-1 h-px bg-muted', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...props} />;\n};\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(function DropdownMenuSubContent({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubContent\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(function DropdownMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\n","import { ErrorBoundary as ReactErrorBoundary } from 'react-error-boundary';\n\nimport { ErrorFallback } from '../ErrorFallback';\n\nexport const ErrorBoundary: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <ReactErrorBoundary FallbackComponent={ErrorFallback}>{children}</ReactErrorBoundary>;\n};\n","import { useEffect } from 'react';\n\nexport type ErrorFallbackProps = {\n error: {\n message: string;\n };\n};\n\nexport const ErrorFallback = ({ error }: ErrorFallbackProps) => {\n useEffect(() => {\n console.error(error);\n }, [error]);\n\n return (\n <div className=\"flex min-h-screen flex-col items-center justify-center gap-1 p-3 text-center\">\n <h1 className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">Unexpected Error</h1>\n <h3 className=\"text-3xl font-extrabold tracking-tight sm:text-4xl md:text-5xl\">Something Went Wrong</h3>\n <p className=\"mt-2 max-w-prose text-sm text-muted-foreground sm:text-base\">\n We apologize for the inconvenience. Please contact us for further assistance.\n </p>\n <div className=\"mt-6\">\n <button\n className=\"text-sky-800 underline-offset-4 hover:text-sky-700 hover:underline dark:text-sky-200 dark:hover:text-sky-300\"\n type=\"button\"\n onClick={() => {\n window.location.assign(window.location.origin);\n }}\n >\n Reload Page<span aria-hidden=\"true\"> &rarr;</span>\n </button>\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\n\nimport type {\n FormContent,\n FormDataType,\n FormFields,\n PartialFormDataType,\n PartialNullableFormDataType\n} from '@douglasneuroinformatics/libui-form-types';\nimport { set } from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\nimport { twMerge } from 'tailwind-merge';\nimport { z } from 'zod';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { ErrorMessage } from './ErrorMessage';\nimport { FieldsComponent } from './FieldsComponent';\nimport { getInitialValues } from './utils';\n\nimport type { FormErrors } from './types';\n\ntype FormProps<TSchema extends z.ZodType<FormDataType>, TData extends z.infer<TSchema> = z.infer<TSchema>> = {\n [key: `data-${string}`]: unknown;\n className?: string;\n content: FormContent<TData>;\n id?: string;\n initialValues?: PartialNullableFormDataType<TData>;\n onError?: (error: z.ZodError<TData>) => void;\n onSubmit: (data: TData) => void;\n resetBtn?: boolean;\n submitBtnLabel?: string;\n validationSchema: z.ZodType<TData>;\n};\n\nconst Form = <TSchema extends z.ZodType<FormDataType>, TData extends z.infer<TSchema> = z.infer<TSchema>>({\n className,\n content,\n id,\n initialValues,\n onError,\n onSubmit,\n resetBtn,\n submitBtnLabel,\n validationSchema,\n ...props\n}: FormProps<TSchema, TData>) => {\n const { t } = useTranslation();\n const [rootError, setRootError] = useState<null | string>(null);\n const [errors, setErrors] = useState<FormErrors<TData>>({});\n const [values, setValues] = useState<PartialFormDataType<TData>>(\n initialValues ? getInitialValues(initialValues) : {}\n );\n\n const handleError = (error: z.ZodError<TData>) => {\n const fieldErrors: FormErrors<TData> = {};\n const rootErrors: string[] = [];\n for (const issue of error.issues) {\n if (issue.path.length > 0) {\n set(fieldErrors, issue.path, issue.message);\n } else {\n rootErrors.push(issue.message);\n }\n }\n setRootError(rootErrors.join('\\n'));\n setErrors(fieldErrors);\n if (onError) {\n onError(error);\n }\n };\n\n const reset = () => {\n setRootError(null);\n setErrors({});\n setValues({});\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n const result = validationSchema.safeParse(values);\n if (result.success) {\n reset();\n onSubmit(result.data);\n } else {\n console.error(result.error.issues);\n handleError(result.error);\n }\n };\n\n const isGrouped = Array.isArray(content);\n\n return (\n <form\n autoComplete=\"off\"\n className={twMerge('my-8 w-full', isGrouped ? 'space-y-8 divide-y' : 'space-y-8', className)}\n id={id}\n onSubmit={handleSubmit}\n {...props}\n >\n {isGrouped ? (\n content.map((fieldGroup, i) => {\n return (\n <div className=\"space-y-8 [&:not(:first-child)]:pt-8\" key={i}>\n <div>\n <Heading variant=\"h4\">{fieldGroup.title}</Heading>\n {fieldGroup.description && (\n <small className=\"text-sm italic text-muted-foreground\">{fieldGroup.description}</small>\n )}\n </div>\n <FieldsComponent\n errors={errors}\n fields={fieldGroup.fields as FormFields<TData>}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n </div>\n );\n })\n ) : (\n <FieldsComponent errors={errors} fields={content} setErrors={setErrors} setValues={setValues} values={values} />\n )}\n <div className=\"flex w-full gap-3\">\n {/** Note - aria-label is used for testing in downstream packages */}\n <Button\n aria-label=\"Submit Button\"\n className=\"block w-full\"\n data-cy=\"submit-form\"\n type=\"submit\"\n variant=\"primary\"\n >\n {submitBtnLabel ?? t('form.submit')}\n </Button>\n {resetBtn && (\n <Button aria-label=\"Reset Button\" className=\"block w-full\" type=\"button\" variant=\"secondary\" onClick={reset}>\n {t('form.reset')}\n </Button>\n )}\n </div>\n {rootError && <ErrorMessage error={rootError} />}\n </form>\n );\n};\n\nexport { Form, type FormProps };\n","import { cn } from '@/utils';\n\nexport type HeadingProps = {\n children: string;\n className?: string;\n variant: 'h1' | 'h2' | 'h3' | 'h4' | 'h5';\n};\n\nexport const Heading = ({ children, className, variant }: HeadingProps) => {\n switch (variant) {\n case 'h1':\n return <h1 className={cn('text-3xl font-bold tracking-tight', className)}>{children}</h1>;\n case 'h2':\n return <h2 className={cn('text-2xl font-semibold tracking-tight', className)}>{children}</h2>;\n case 'h3':\n return <h3 className={cn('text-xl font-semibold tracking-tight', className)}>{children}</h3>;\n case 'h4':\n return <h4 className={cn('text-lg font-semibold tracking-tight', className)}>{children}</h4>;\n case 'h5':\n return <h4 className={cn('text-base font-semibold tracking-tight', className)}>{children}</h4>;\n default:\n throw new Error(`Unhandled heading variant: ${variant satisfies never}`);\n }\n};\n","import { CircleAlertIcon } from 'lucide-react';\n\nexport const ErrorMessage: React.FC<{ error?: null | string }> = ({ error }) =>\n error ? (\n <div className=\"flex w-full items-center text-sm font-medium text-destructive\">\n <CircleAlertIcon className=\"mr-1\" style={{ strokeWidth: '2px' }} />\n <span>{error}</span>\n </div>\n ) : null;\n","import { useEffect, useMemo, useState } from 'react';\n\nimport type { DynamicFormField, FormDataType, PartialFormDataType } from '@douglasneuroinformatics/libui-form-types';\nimport { pick } from 'lodash-es';\n\nimport { StaticField } from './StaticField';\n\nimport type { FormErrors } from './types';\n\nexport type DynamicFieldProps<TData extends FormDataType> = {\n errors: FormErrors<TData>;\n field: DynamicFormField<TData>;\n name: string;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors<TData>>>;\n setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<TData>>>;\n values: PartialFormDataType<TData>;\n};\n\nexport const DynamicField = <TData extends FormDataType>({\n field,\n name,\n values,\n ...props\n}: DynamicFieldProps<TData>) => {\n const [dependentValues, setDependentValues] = useState(pick(values, field.deps));\n\n const staticField = useMemo(() => {\n return field.render(values);\n }, [dependentValues, field.render]);\n\n useEffect(() => {\n for (const key of field.deps) {\n if (dependentValues[key] !== values[key]) {\n setDependentValues(pick(values, field.deps));\n break;\n }\n }\n }, [field.deps, values]);\n\n if (!staticField) {\n return null;\n }\n\n return <StaticField {...props} field={staticField} name={name} values={values} />;\n};\n","import { useCallback } from 'react';\n\nimport type {\n FormDataType,\n FormFieldValue,\n NumberRecordFieldValue,\n NumberRecordFormField,\n PartialFormDataType,\n RecordArrayFieldValue,\n RecordArrayFormField,\n ScalarFieldValue\n} from '@douglasneuroinformatics/libui-form-types';\nimport { match } from 'ts-pattern';\n\nimport { NumberRecordField } from './NumberRecordField';\nimport { RecordArrayField } from './RecordArrayField';\nimport { ScalarField, type ScalarFieldProps } from './ScalarField';\n\nimport type { FieldError, FormErrors } from './types';\n\nexport type StaticFieldProps<TData extends FormDataType> = {\n errors: FormErrors<TData>;\n field: NumberRecordFormField | RecordArrayFormField | ScalarFieldProps['field'];\n name: string;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors<TData>>>;\n setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<TData>>>;\n values: PartialFormDataType<TData>;\n};\n\nexport const StaticField = <TData extends FormDataType>({\n errors,\n field,\n name,\n setErrors,\n setValues,\n values\n}: StaticFieldProps<TData>) => {\n const setError = useCallback(\n <TValue extends FormFieldValue>(error: FieldError<TValue>) => {\n return setErrors((prevErrors) => ({ ...prevErrors, [name]: error }));\n },\n [setErrors]\n );\n\n const setValue = useCallback(\n <TValue extends FormFieldValue>(value: TValue) => {\n return setValues((prevValues) => ({ ...prevValues, [name]: value }));\n },\n [setValues]\n );\n\n return match(field)\n .with({ kind: 'record-array' }, (field) => (\n <RecordArrayField\n {...field}\n error={errors[name] as { [key: string]: string }[]}\n name={name}\n setError={setError}\n setValue={setValue}\n value={values[name] as RecordArrayFieldValue}\n />\n ))\n .with({ kind: 'number-record' }, (field) => (\n <NumberRecordField\n {...field}\n error={errors[name] as { [key: string]: string }}\n name={name}\n setError={setError}\n setValue={setValue}\n value={values[name] as NumberRecordFieldValue}\n />\n ))\n .otherwise((field) => (\n <ScalarField\n error={errors[name] as string}\n field={field}\n name={name}\n setError={setError}\n setValue={setValue}\n value={values[name] as ScalarFieldValue}\n />\n ));\n};\n","import { useEffect } from 'react';\n\nimport type {\n NumberRecordFieldValue,\n NumberRecordFormField,\n RequiredFieldValue\n} from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Heading } from '../Heading';\nimport { NumberField } from './NumberField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type NumberRecordFieldProps<T extends NumberRecordFieldValue = NumberRecordFieldValue> = Simplify<\n BaseFieldComponentProps<NumberRecordFieldValue> & NumberRecordFormField<RequiredFieldValue<T>>\n>;\n\nexport const NumberRecordField = <T extends NumberRecordFieldValue = NumberRecordFieldValue>({\n error: recordError,\n items,\n label,\n options,\n setError: setRecordError,\n setValue: setRecordValue,\n value: recordValue\n}: NumberRecordFieldProps<T>) => {\n useEffect(() => {\n setRecordValue({});\n }, [options]);\n\n if (!recordValue) {\n return null;\n }\n\n return (\n <div className=\"space-y-4\">\n <Heading variant=\"h5\">{label}</Heading>\n <div className=\"space-y-8\">\n {Object.keys(items).map((name) => {\n const item = items[name];\n return (\n <NumberField\n error={recordError?.[name]}\n key={name}\n kind=\"number\"\n name={name}\n options={options}\n setError={(error) => setRecordError({ ...recordError, [name]: error })}\n setValue={(value) => setRecordValue({ ...recordValue, [name]: value })}\n value={recordValue?.[name]}\n variant=\"radio\"\n {...item}\n />\n );\n })}\n </div>\n </div>\n );\n};\n","import { match } from 'ts-pattern';\n\nimport { NumberFieldInput, type NumberFieldInputProps } from './NumberFieldInput';\nimport { NumberFieldRadio, type NumberFieldRadioProps } from './NumberFieldRadio';\nimport { NumberFieldSlider, type NumberFieldSliderProps } from './NumberFieldSlider';\n\nexport type NumberFieldProps = NumberFieldInputProps | NumberFieldRadioProps | NumberFieldSliderProps;\n\nexport const NumberField = (props: NumberFieldProps) => {\n return match(props)\n .with({ variant: 'input' }, (props) => <NumberFieldInput {...props} />)\n .with({ variant: 'slider' }, (props) => <NumberFieldSlider {...props} />)\n .with({ variant: 'radio' }, (props) => <NumberFieldRadio {...props} />)\n .exhaustive();\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(function Input({ className, type, ...props }, ref) {\n return (\n <input\n autoComplete=\"off\"\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"input\"\n ref={ref}\n type={type}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nexport const labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n);\n\nexport const Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(function Label({ className, ...props }, ref) {\n return <LabelPrimitive.Root className={cn(labelVariants(), className)} ref={ref} {...props} />;\n});\n","import { CircleHelpIcon } from 'lucide-react';\n\nimport { Popover } from '@/components/Popover';\n\nexport const FieldGroupDescription: React.FC<{ description?: null | string }> = ({ description }) =>\n description ? (\n <Popover>\n <Popover.Trigger>\n <CircleHelpIcon className=\"text-muted-foreground\" />\n </Popover.Trigger>\n <Popover.Content className=\"text-sm text-muted-foreground\">\n <p>{description}</p>\n </Popover.Content>\n </Popover>\n ) : null;\n","import { Root as PopoverRoot, Trigger as PopoverTrigger } from '@radix-ui/react-popover';\n\nimport { PopoverContent } from './PopoverContent';\n\nexport const Popover = Object.assign(PopoverRoot, {\n Content: PopoverContent,\n Trigger: PopoverTrigger\n});\n","import React from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-popover';\n\nimport { cn } from '@/utils';\n\nexport type PopoverContentProps = {\n /** The preferred alignment against the anchor, which may change when collisions occur */\n align?: 'center' | 'end' | 'start';\n /** Change the default rendered element for the one passed as a child, merging their props and behavior */\n asChild?: boolean;\n /** Whether the content should be automatically focused when opened (default = true) */\n autofocus?: boolean;\n /** The content to display when the user opens the popover */\n children: React.ReactNode;\n /** Additional CSS classes to add to the component, potentially overriding default styling */\n className?: string;\n /** The distance in pixels from the viewport edges where collision detection should occur */\n collisionPadding?: number;\n /** The distance in pixels from the anchor */\n sideOffset?: number;\n};\n\nexport const PopoverContent = React.forwardRef<React.ElementRef<typeof Content>, PopoverContentProps>(\n function PopoverContent(\n { align = 'center', asChild, autofocus = true, className, collisionPadding = 0, sideOffset = 4, ...props },\n ref\n ) {\n return (\n <Portal>\n <Content\n align={align}\n asChild={asChild}\n className={cn(\n 'z-50 w-72 rounded-md border bg-popover px-3 py-1.5 text-popover-foreground shadow-md outline-none 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',\n className\n )}\n collisionPadding={collisionPadding}\n ref={ref}\n sideOffset={sideOffset}\n onOpenAutoFocus={autofocus === false ? (event) => event.preventDefault() : undefined}\n {...props}\n />\n </Portal>\n );\n }\n);\n","import React from 'react';\n\nexport const FieldGroupRoot: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"flex flex-col gap-2 @container\">{children}</div>\n);\n","export const FieldGroupRow: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"relative flex items-center gap-2\">{children}</div>\n);\n","import { ErrorMessage } from '../ErrorMessage';\nimport { FieldGroupDescription } from './FieldGroupDescription';\nimport { FieldGroupRoot } from './FieldGroupRoot';\nimport { FieldGroupRow } from './FieldGroupRow';\n\nexport const FieldGroup = Object.assign(FieldGroupRoot, {\n Description: FieldGroupDescription,\n Error: ErrorMessage,\n Row: FieldGroupRow\n});\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldInputProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'input' }>\n>;\n\nexport const NumberFieldInput = ({\n description,\n error,\n label,\n max,\n min,\n name,\n setValue,\n value\n}: NumberFieldInputProps) => {\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = parseFloat(event.target.value);\n if (Number.isNaN(newValue)) {\n setValue(undefined);\n } else if (newValue >= (min ?? -Infinity) && newValue <= (max ?? Infinity)) {\n setValue(newValue);\n }\n };\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input max={max} min={min} name={name} type=\"text\" value={value ?? ''} onChange={handleChange} />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\n\nimport { cn } from '@/utils';\n\nimport { RadioGroupItem } from './RadioGroupItem';\n\ntype RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;\n\nconst RadioGroupRoot = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(function RadioGroup({ className, ...props }, ref) {\n return (\n <RadioGroupPrimitive.Root className={cn('grid gap-2', className)} data-testid=\"radio-group\" {...props} ref={ref} />\n );\n});\n\nexport const RadioGroup = Object.assign(RadioGroupRoot, {\n Item: RadioGroupItem\n});\n\nexport type { RadioGroupProps };\n","import React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(function RadioGroupItem({ className, ...props }, ref) {\n return (\n <RadioGroupPrimitive.Item\n className={cn(\n 'flex aspect-square h-4 w-4 items-center justify-center rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <RadioGroupPrimitive.Indicator asChild>\n <CircleIcon\n className=\"fill-current text-current\"\n style={{ height: '0.625rem', strokeWidth: '2px', width: '0.625rem' }}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldRadioProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'radio' }>\n>;\n\nexport const NumberFieldRadio = ({\n description,\n error,\n label,\n name,\n options,\n setValue,\n value\n}: NumberFieldRadioProps) => {\n const optionsCount = Object.keys(options).length;\n\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <RadioGroup\n className={cn(\n 'flex',\n optionsCount > 5 ? 'flex-col' : 'flex-col @3xl:flex-row @3xl:items-center @3xl:justify-between'\n )}\n name={name}\n value={value?.toString() ?? ''}\n onValueChange={(value) => setValue(parseInt(value))}\n >\n {Object.keys(options)\n .map((val) => parseInt(val))\n .toSorted((a, b) => a - b)\n .map((key) => (\n <div className=\"flex items-center gap-2\" key={key}>\n <RadioGroup.Item id={`${name}-${key}`} value={key.toString()} />\n <Label className=\"font-normal\" htmlFor={`${name}-${key}`}>\n {options[key]}\n </Label>\n </div>\n ))}\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import React from 'react';\n\nimport { Range, Root, Thumb, Track } from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils';\n\nexport const Slider = React.forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function Slider({ className, ...props }, ref) {\n return (\n <Root\n className={cn('relative flex w-full touch-none select-none items-center py-1.5', className)}\n ref={ref}\n {...props}\n >\n <Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary opacity-15\">\n <Range className=\"absolute h-full bg-primary\" />\n </Track>\n <Thumb className=\"block h-4 w-4 rounded-full border border-slate-500 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </Root>\n );\n }\n);\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { Slider } from '@/components/Slider';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldSliderProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'slider' }>\n>;\n\nexport const NumberFieldSlider = ({\n description,\n error,\n label,\n max,\n min,\n name,\n setValue,\n value\n}: NumberFieldSliderProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Slider max={max} min={min} name={name} value={[value ?? 0]} onValueChange={([value]) => setValue(value)} />\n <span className=\"flex h-full w-8 items-center justify-center text-sm text-muted-foreground\">\n {value ?? 'NA'}\n </span>\n </FieldGroup.Row>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { memo, useEffect } from 'react';\n\nimport type { RecordArrayFieldValue, RecordArrayFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { MinusCircleIcon, PlusCircleIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport type { Simplify } from 'type-fest';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { Label } from '../Label';\nimport { ScalarField } from './ScalarField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type RecordArrayFieldProps = Simplify<BaseFieldComponentProps<RecordArrayFieldValue> & RecordArrayFormField>;\n\nexport const RecordArrayField = memo(function RecordArrayField({\n error: arrayError,\n fieldset,\n label,\n setError: setArrayError,\n setValue: setArrayValue,\n value: arrayValue\n}: RecordArrayFieldProps) {\n const { t } = useTranslation();\n\n const createNewRecord = () => Object.fromEntries(Object.keys(fieldset).map((fieldName) => [fieldName, undefined]));\n\n useEffect(() => {\n setArrayValue([createNewRecord()]);\n }, [fieldset]);\n\n if (!arrayValue) {\n return null;\n }\n\n // Creates a new object with all values mapped to null and appends it to the previous arrayValue\n const appendField = () => {\n setArrayValue([...arrayValue, createNewRecord()]);\n };\n\n const removeField = () => {\n if (arrayValue.length > 1) {\n setArrayValue(arrayValue.slice(0, arrayValue.length - 1));\n }\n };\n\n return (\n <div className=\"space-y-4\">\n <Heading variant=\"h5\">{label}</Heading>\n <div className=\"space-y-8\">\n {arrayValue.map((fields, i) => (\n <div className=\"space-y-4\" key={i}>\n <Label className=\"font-semibold italic\">{label + ' ' + (i + 1)}</Label>\n {Object.keys(fields).map((name) => {\n const field = fieldset[name];\n const fieldProps = field?.kind === 'dynamic' ? field.render(fields) : field;\n if (!fieldProps) {\n return null;\n }\n return (\n <ScalarField\n error={arrayError?.[i]?.[name]}\n field={fieldProps}\n key={name}\n name={name}\n setError={(error) => {\n const newArrayError = arrayError ? [...arrayError] : [];\n if (!newArrayError[i]) {\n newArrayError[i] = {};\n }\n newArrayError[i][name] = error;\n setArrayError(newArrayError);\n }}\n setValue={(value) => {\n const newArrayValue = [...arrayValue];\n newArrayValue[i][name] = value;\n setArrayValue(newArrayValue);\n }}\n value={arrayValue?.[i]?.[name]}\n />\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"flex gap-3\">\n <Button type=\"button\" variant=\"outline\" onClick={appendField}>\n {t('form.append')}\n <PlusCircleIcon className=\"ml-2\" />\n </Button>\n <Button type=\"button\" variant=\"outline\" onClick={removeField}>\n {t('form.remove')}\n <MinusCircleIcon className=\"ml-2\" />\n </Button>\n </div>\n </div>\n );\n});\n","import { match } from 'ts-pattern';\n\nimport { BooleanFieldCheckbox, type BooleanFieldCheckboxProps } from './BooleanFieldCheckbox';\nimport { BooleanFieldRadio, type BooleanFieldRadioProps } from './BooleanFieldRadio';\n\nexport type BooleanFieldProps = BooleanFieldCheckboxProps | BooleanFieldRadioProps;\n\nexport const BooleanField = (props: BooleanFieldProps) => {\n return match(props)\n .with({ variant: 'radio' }, (props) => <BooleanFieldRadio {...props} />)\n .with({ variant: 'checkbox' }, (props) => <BooleanFieldCheckbox {...props} />)\n .exhaustive();\n};\n","import type { BooleanFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components';\nimport { Checkbox } from '@/components/Checkbox';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type BooleanFieldCheckboxProps = Simplify<\n BaseFieldComponentProps<boolean> & Omit<Extract<BooleanFormField, { variant: 'checkbox' }>, 'kind'>\n>;\n\nexport const BooleanFieldCheckbox = ({ error, label, name, setValue, value }: BooleanFieldCheckboxProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Checkbox\n checked={value}\n id={name}\n name={name}\n onCheckedChange={(value) => {\n if (typeof value === 'boolean') {\n setValue(value);\n }\n }}\n />\n <Label htmlFor={name}>{label}</Label>\n </FieldGroup.Row>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useCallback } from 'react';\n\nimport type { BooleanFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { useTranslation } from 'react-i18next';\nimport { match } from 'ts-pattern';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nconst stringifyBoolean = (value: boolean | undefined) =>\n match(value)\n .with(undefined, () => '')\n .with(true, () => 'true' as const)\n .with(false, () => 'false' as const)\n .exhaustive();\n\nexport type BooleanFieldRadioProps = Simplify<\n BaseFieldComponentProps<boolean> & Omit<Extract<BooleanFormField, { variant: 'radio' }>, 'kind'>\n>;\n\nexport const BooleanFieldRadio = ({ error, label, name, options, setValue, value }: BooleanFieldRadioProps) => {\n const { t } = useTranslation('libui');\n\n const handleValueChange = useCallback(\n (value: string) => {\n match(value)\n .with('', () => setValue(undefined))\n .with('true', () => setValue(true))\n .with('false', () => setValue(false))\n .otherwise((value) => console.error(`Unexpected value for boolean field '${name}': ${value}`));\n },\n [match, setValue]\n );\n\n return (\n <FieldGroup>\n <Label>{label}</Label>\n <RadioGroup name={name} value={stringifyBoolean(value)} onValueChange={handleValueChange}>\n <FieldGroup.Row>\n <RadioGroup.Item id={`${name}-true`} value=\"true\" />\n <Label className=\"font-normal\" htmlFor={`${name}-true`}>\n {options?.true ?? t('form.radioLabels.true')}\n </Label>\n </FieldGroup.Row>\n <FieldGroup.Row>\n <RadioGroup.Item id={`${name}-false`} value=\"false\" />\n <Label className=\"font-normal\" htmlFor={`${name}-false`}>\n {options?.false ?? t('form.radioLabels.false')}\n </Label>\n </FieldGroup.Row>\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport type { DateFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { DatePicker } from '@/components/DatePicker';\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\nimport { Popover } from '@/components/Popover';\n\nimport { FieldGroup } from '../FieldGroup';\nimport { type BaseFieldComponentProps } from '../types';\n\nconst isValidDateString = (s: string) => /^(\\d{4})-((0[1-9])|(1[0-2]))-((0[1-9])|([12])[0-9]|3[01])$/.test(s);\n\nexport type DateFieldProps = Simplify<BaseFieldComponentProps<Date> & Omit<DateFormField, 'kind'>>;\n\nexport const DateField = ({ error, label, name, setValue, value }: DateFieldProps) => {\n const [isDatePickerOpen, setIsDatePickerOpen] = useState(false);\n const [isInputFocused, setIsInputFocused] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n useEffect(() => {\n const isSelecting = isDatePickerOpen || isInputFocused;\n if (isSelecting) {\n return;\n } else if (isValidDateString(inputValue)) {\n setValue(new Date(inputValue));\n } else {\n setInputValue('');\n }\n }, [isDatePickerOpen, isInputFocused]);\n\n useEffect(() => {\n setInputValue(value ? toBasicISOString(value) : '');\n }, [value]);\n\n return (\n <FieldGroup>\n <Label htmlFor={name}>{label}</Label>\n <Popover open={isDatePickerOpen} onOpenChange={setIsDatePickerOpen}>\n <Popover.Trigger>\n <Input\n autoComplete=\"off\"\n data-cy=\"date-input\"\n data-testid=\"date-input\"\n placeholder=\"YYYY-MM-DD\"\n type=\"text\"\n value={inputValue}\n onBlur={() => setIsInputFocused(false)}\n onChange={(event) => setInputValue(event.target.value)}\n onFocus={() => setIsInputFocused(true)}\n />\n </Popover.Trigger>\n <Popover.Content asChild align=\"start\" autofocus={false} className=\"w-auto\">\n <DatePicker\n onSelection={(value) => {\n setInputValue(toBasicISOString(value));\n setIsDatePickerOpen(false);\n }}\n />\n </Popover.Content>\n </Popover>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useEffect } from 'react';\n\nimport type { SetFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { match } from 'ts-pattern';\nimport type { Simplify } from 'type-fest';\n\nimport { SetFieldListbox } from './SetFieldListbox';\nimport { SetFieldSelect } from './SetFieldSelect';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type SetFieldProps<T extends string = string> = Simplify<BaseFieldComponentProps<Set<T>> & SetFormField<Set<T>>>;\n\nexport const SetField = <T extends string = string>(props: SetFieldProps<T>) => {\n useEffect(() => {\n if (!props.value) {\n props.setValue(new Set([]));\n }\n }, [props.value]);\n\n const handleCheckedChange = (option: T, isChecked: boolean) => {\n if (isChecked) {\n const updatedValue = new Set<T>(props.value);\n updatedValue.delete(option);\n props.setValue(updatedValue);\n } else {\n const updatedValue = new Set<T>(props.value);\n updatedValue.add(option);\n props.setValue(updatedValue);\n }\n };\n\n return match(props)\n .with({ variant: 'select' }, (props) => <SetFieldSelect onCheckedChange={handleCheckedChange} {...props} />)\n .with({ variant: 'listbox' }, (props) => <SetFieldListbox onCheckedChange={handleCheckedChange} {...props} />)\n .exhaustive();\n};\n","import { Checkbox } from '@/components/Checkbox';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { SetFieldProps } from './SetField';\n\nexport type SetFieldListboxProps<T extends string = string> = SetFieldProps<T> & {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n};\n\nexport const SetFieldListbox = <T extends string = string>({\n description,\n error,\n label,\n name,\n onCheckedChange,\n options,\n value\n}: SetFieldListboxProps<T>) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n {Object.keys(options).map((option) => (\n <div className=\"flex items-center gap-2\" key={option}>\n <Checkbox\n checked={value?.has(option as T) ?? false}\n id={`${name}-${option}`}\n onCheckedChange={(checked) => {\n onCheckedChange(option as T, !checked);\n }}\n />\n <Label className=\"font-normal\" htmlFor={`${name}-${option}`}>\n {options[option as T]}\n </Label>\n </div>\n ))}\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { Badge } from '@/components/Badge';\nimport { DropdownButton } from '@/components/DropdownButton';\nimport { DropdownMenu } from '@/components/DropdownMenu';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { SetFieldProps } from './SetField';\n\nexport type SetFieldSelectProps<T extends string = string> = SetFieldProps<T> & {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n};\n\nexport const SetFieldSelect = <T extends string = string>({\n description,\n error,\n label,\n onCheckedChange,\n options,\n value\n}: SetFieldSelectProps<T>) => {\n return value ? (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <DropdownMenu>\n <DropdownMenu.Trigger asChild className=\"w-full\">\n <DropdownButton>\n {value.size ? (\n <div className=\"flex items-center gap-2\">\n {Array.from(value).map((option) => (\n <Badge className=\"font-normal\" key={option} variant=\"outline\">\n {options[option]}\n </Badge>\n ))}\n </div>\n ) : null}\n </DropdownButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content widthFull align=\"start\">\n {Object.keys(options).map((option) => {\n const checked = value.has(option as T);\n return (\n <DropdownMenu.CheckboxItem\n checked={checked}\n key={option}\n onSelect={(event) => {\n event.preventDefault();\n onCheckedChange(option as T, value.has(option as T));\n }}\n >\n {options[option as T]}\n </DropdownMenu.CheckboxItem>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n ) : null;\n};\n","import { match } from 'ts-pattern';\n\nimport { StringFieldInput, type StringFieldInputProps } from './StringFieldInput';\nimport { StringFieldPassword, type StringFieldPasswordProps } from './StringFieldPassword';\nimport { StringFieldRadio, type StringFieldRadioProps } from './StringFieldRadio';\nimport { StringFieldSelect } from './StringFieldSelect';\nimport { StringFieldTextArea, type StringFieldTextAreaProps } from './StringFieldTextArea';\n\nexport type StringFieldProps =\n | StringFieldInputProps\n | StringFieldPasswordProps\n | StringFieldRadioProps\n | StringFieldTextAreaProps;\n\nexport const StringField = (props: StringFieldProps) => {\n return match(props)\n .with({ variant: 'textarea' }, (props) => <StringFieldTextArea {...props} />)\n .with({ variant: 'password' }, (props) => <StringFieldPassword {...props} />)\n .with({ variant: 'input' }, (props) => <StringFieldInput {...props} />)\n .with({ variant: 'select' }, (props) => <StringFieldSelect {...props} />)\n .with({ variant: 'radio' }, (props) => <StringFieldRadio {...props} />)\n .exhaustive();\n};\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldInputProps = BaseFieldComponentProps<string> & StringFormField;\n\nexport const StringFieldInput = ({ description, error, label, name, setValue, value }: StringFieldInputProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input name={name} type=\"text\" value={value ?? ''} onChange={(event) => setValue(event.target.value)} />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useState } from 'react';\n\nimport type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldPasswordProps = BaseFieldComponentProps<string> & StringFormField;\n\nexport const StringFieldPassword = ({ description, error, label, name, setValue, value }: StringFieldPasswordProps) => {\n const [show, setShow] = useState(false);\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Input\n name={name}\n type={show ? 'text' : 'password'}\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\n <button\n className=\"absolute right-0 flex h-full w-8 items-center justify-center text-muted-foreground\"\n type=\"button\"\n onClick={() => setShow(!show)}\n >\n <EyeIcon className={cn('absolute transition-all', show ? '-rotate-90 scale-0' : 'rotate-0 scale-100')} />\n <EyeOffIcon className={cn('absolute transition-all', !show ? 'rotate-90 scale-0' : 'rotate-0 scale-100')} />\n </button>\n </FieldGroup.Row>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { cva } from 'class-variance-authority';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '../Label';\nimport { RadioGroup } from '../RadioGroup';\nimport { FieldGroup } from './FieldGroup';\n\nimport type { BaseFieldComponentProps } from './types';\n\nconst baseRadioFieldVariants = cva('flex', {\n defaultVariants: {\n orientation: 'vertical'\n },\n variants: {\n orientation: {\n horizontal: 'flex-col @3xl:flex-row @3xl:items-center @3xl:justify-between',\n vertical: 'flex-col'\n }\n }\n});\n\nexport type BaseRadioFieldProps<T extends string> = Simplify<\n BaseFieldComponentProps<T> & {\n description?: string;\n label: string;\n options: { [K in T]: string };\n orientation?: 'horizontal' | 'vertical';\n }\n>;\n\nexport const BaseRadioField = <T extends string>({\n description,\n error,\n label,\n name,\n options,\n orientation = 'vertical',\n setValue,\n value\n}: BaseRadioFieldProps<T>) => {\n const optionsCount = Object.keys(options).length;\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <RadioGroup\n className={baseRadioFieldVariants({ orientation: optionsCount > 5 ? 'vertical' : orientation })}\n name={name}\n value={value ?? ''}\n onValueChange={(value) => setValue(value as T)}\n >\n {Object.keys(options).map((option) => (\n <div className=\"flex items-center gap-2\" key={option}>\n <RadioGroup.Item id={`${name}-${option}`} value={option} />\n <Label className=\"font-normal\" htmlFor={`${name}-${option}`}>\n {options[option as T]}\n </Label>\n </div>\n ))}\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { BaseRadioField } from '../BaseRadioField';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldRadioProps<T extends string = string> = Simplify<\n BaseFieldComponentProps<T> & Extract<StringFormField<T>, { options: object }>\n>;\n\nexport const StringFieldRadio = <T extends string = string>(props: StringFieldRadioProps<T>) => {\n return <BaseRadioField {...props} />;\n};\n","import * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { SelectContent } from './SelectContent';\nimport { SelectItem } from './SelectItem';\nimport { SelectLabel } from './SelectLabel';\nimport { SelectScrollDownButton } from './SelectScrollDownButton';\nimport { SelectScrollUpButton } from './SelectScrollUpButton';\nimport { SelectSeparator } from './SelectSeparator';\nimport { SelectTrigger } from './SelectTrigger';\n\nexport const Select = Object.assign(SelectPrimitive.Root, {\n Content: SelectContent,\n Group: SelectPrimitive.Group,\n Item: SelectItem,\n Label: SelectLabel,\n ScrollDownButton: SelectScrollDownButton,\n ScrollUpButton: SelectScrollUpButton,\n Separator: SelectSeparator,\n Trigger: SelectTrigger,\n Value: SelectPrimitive.Value\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nimport { SelectScrollDownButton } from './SelectScrollDownButton';\nimport { SelectScrollUpButton } from './SelectScrollUpButton';\n\nexport const SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(function SelectContent({ children, className, position = 'popper', ...props }, ref) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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',\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 ref={ref}\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)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(function SelectScrollDownButton({ className, ...props }, ref) {\n return (\n <SelectPrimitive.ScrollDownButton\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n ref={ref}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { ChevronUpIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(function SelectScrollUpButton({ className, ...props }, ref) {\n return (\n <SelectPrimitive.ScrollUpButton\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n ref={ref}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(function SelectItem({ children, className, ...props }, ref) {\n return (\n <SelectPrimitive.Item\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(function SelectLabel({ className, ...props }, ref) {\n return <SelectPrimitive.Label className={cn('px-2 py-1.5 text-sm font-semibold', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(function SelectSeparator({ className, ...props }, ref) {\n return <SelectPrimitive.Separator className={cn('-mx-1 my-1 h-px bg-muted', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { DropdownButton } from '../DropdownButton';\n\nexport const SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(function SelectTrigger({ children, className, ...props }, ref) {\n return (\n <SelectPrimitive.Trigger asChild className={className} ref={ref} {...props}>\n <DropdownButton>{children}</DropdownButton>\n </SelectPrimitive.Trigger>\n );\n});\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { Select } from '@/components/Select';\n\nimport { FieldGroup } from '../FieldGroup';\nimport { type BaseFieldComponentProps } from '../types';\n\nexport type StringFieldSelectProps<T extends string = string> = Simplify<\n BaseFieldComponentProps<T> & Extract<StringFormField<T>, { options: object }>\n>;\n\nexport const StringFieldSelect = <T extends string = string>({\n description,\n error,\n label,\n name,\n options,\n setValue,\n value\n}: StringFieldSelectProps<T>) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Select name={name} value={value ?? ''} onValueChange={(value: T) => setValue(value)}>\n <Select.Trigger>\n <Select.Value />\n </Select.Trigger>\n <Select.Content>\n {Object.keys(options).map((option) => (\n <Select.Item key={option} value={option}>\n {options[option as T]}\n </Select.Item>\n ))}\n </Select.Content>\n </Select>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport type TextAreaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(function TextArea(\n { className, ...props },\n ref\n) {\n return (\n <textarea\n autoComplete=\"off\"\n className={cn(\n 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"text-area\"\n ref={ref}\n {...props}\n />\n );\n});\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Label } from '@/components/Label';\nimport { TextArea } from '@/components/TextArea';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldTextAreaProps = BaseFieldComponentProps<string> & StringFormField;\n\nexport const StringFieldTextArea = ({ description, error, label, name, setValue, value }: StringFieldTextAreaProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <TextArea name={name} rows={5} value={value ?? ''} onChange={(event) => setValue(event.target.value)} />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import type {\n BooleanFormField,\n DateFormField,\n NumberFormField,\n ScalarFieldValue,\n SetFormField,\n StringFormField\n} from '@douglasneuroinformatics/libui-form-types';\n\nimport { BooleanField, type BooleanFieldProps } from './BooleanField';\nimport { DateField, type DateFieldProps } from './DateField';\nimport { NumberField, type NumberFieldProps } from './NumberField';\nimport { SetField, type SetFieldProps } from './SetField';\nimport { StringField, type StringFieldProps } from './StringField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type ScalarFieldProps = BaseFieldComponentProps<ScalarFieldValue> & {\n field: BooleanFormField | DateFormField | NumberFormField | SetFormField | StringFormField;\n};\n\nexport const ScalarField = ({ field, ...props }: ScalarFieldProps) => {\n switch (field.kind) {\n case 'string':\n return <StringField {...field} {...(props as StringFieldProps)} />;\n case 'number':\n return <NumberField {...field} {...(props as NumberFieldProps)} />;\n case 'date':\n return <DateField {...field} {...(props as DateFieldProps)} />;\n case 'boolean':\n return <BooleanField {...field} {...(props as BooleanFieldProps)} />;\n case 'set':\n return <SetField {...field} {...(props as SetFieldProps)} />;\n default:\n throw new Error(`Unexpected value for kind: ${Reflect.get(field, 'kind') satisfies never}`);\n }\n};\n","import type { FormDataType, FormFields, PartialFormDataType } from '@douglasneuroinformatics/libui-form-types';\n\nimport { DynamicField } from './DynamicField';\nimport { StaticField } from './StaticField';\n\nimport type { FormErrors } from './types';\n\nexport type FieldsComponentProps<T extends FormDataType> = {\n errors: FormErrors<T>;\n fields: FormFields<T>;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors<T>>>;\n setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<T>>>;\n values: PartialFormDataType<T>;\n};\n\n/** Renders an object containing key value pairs, where the value is a FormField of some kind */\nexport const FieldsComponent = <T extends FormDataType>({ fields, ...props }: FieldsComponentProps<T>) => {\n return Object.keys(fields).map((name) => {\n const field = fields[name];\n if (field.kind === 'dynamic') {\n return <DynamicField {...props} field={field} key={name} name={name} />;\n }\n return <StaticField {...props} field={field} key={name} name={name} />;\n });\n};\n","import type {\n FormContent,\n FormDataType,\n FormFields,\n PartialFormDataType,\n PartialNullableFormDataType,\n StaticFormFields,\n UnknownFormField\n} from '@douglasneuroinformatics/libui-form-types';\n\nexport function getInitialValues<T extends FormDataType>(values: PartialNullableFormDataType<T>) {\n const initialValues: { [key: string]: unknown } = {};\n for (const key in values) {\n const value = values[key];\n if (value === null || value === undefined) {\n continue;\n } else if (Array.isArray(value)) {\n initialValues[key] = value.map(getInitialValues);\n } else {\n initialValues[key] = value;\n }\n }\n return initialValues as PartialFormDataType<T>;\n}\n\n/** Extract a flat array of form fields from the content. This function assumes there are no duplicate keys in groups */\nexport function getFormFields<T extends FormDataType>(content: FormContent<T>): FormFields<T> {\n if (!Array.isArray(content)) {\n return content;\n }\n return content.reduce((prev, current) => ({ ...prev, ...current.fields }), content[0].fields) as FormFields<T>;\n}\n\n/**\n * Given a set of data, resolve static content for form fields. Null values\n * will be removed.\n */\nexport function resolveStaticFormFields<T extends FormDataType>(content: FormContent<T>, data: PartialFormDataType<T>) {\n const staticFormFields: Partial<StaticFormFields<T>> = {};\n const formFields = getFormFields(content);\n for (const fieldName in formFields) {\n const field: UnknownFormField<T, typeof fieldName> = formFields[fieldName];\n if (field.kind === 'dynamic') {\n const resolvedField = field.render(data);\n if (resolvedField) {\n staticFormFields[fieldName] = resolvedField;\n }\n } else {\n staticFormFields[fieldName] = field;\n }\n }\n return staticFormFields;\n}\n","import { Root, Trigger } from '@radix-ui/react-hover-card';\n\nimport { HoverCardContent } from './HoverCardContent';\n\nexport const HoverCard = Object.assign(Root, {\n Content: HoverCardContent,\n Trigger\n});\n","import React from 'react';\n\nimport { Content } from '@radix-ui/react-hover-card';\n\nimport { cn } from '@/utils';\n\nexport const HoverCardContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function HoverCardContent({ align = 'center', className, sideOffset = 4, ...props }, ref) {\n return (\n <Content\n align={align}\n className={cn(\n 'z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n});\n","import { LanguagesIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Button } from '../Button';\nimport { DropdownMenu } from '../DropdownMenu';\n\nexport type LanguageToggleProps = {\n align?: 'center' | 'end' | 'start';\n options: {\n [key: string]: string;\n };\n};\n\nexport const LanguageToggle = ({ align, options }: LanguageToggleProps = { align: 'start', options: {} }) => {\n const { i18n } = useTranslation();\n\n return (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button size=\"icon\" variant=\"outline\">\n <LanguagesIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align={align}>\n {Object.keys(options).map((option) => (\n <DropdownMenu.Item key={option} onClick={() => void i18n.changeLanguage(option)}>\n {options[option]}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import { Menu, Transition } from '@headlessui/react';\nimport { twMerge } from 'tailwind-merge';\n\nimport { Card } from '../Card/Card';\nimport { DropdownButton } from '../DropdownButton';\n\ntype LegacyDropdownOptions = { [key: string]: string } | readonly string[];\n\ntype LegacyDropdownOptionKey<T> = T extends readonly string[]\n ? T[number]\n : T extends { [key: string]: string }\n ? Extract<keyof T, string>\n : never;\n\n/** @deprecated */\nexport type LegacyDropdownProps<T extends LegacyDropdownOptions> = {\n className?: string;\n\n /** Callback function invoked when user clicks an option */\n onSelection: (option: LegacyDropdownOptionKey<T>) => void;\n\n /** Either a list of options for the dropdown, or an object with options mapped to custom labels */\n options: T;\n\n /** The text content for the dropdown toggle */\n title: string;\n};\n\n/** @deprecated */\n// eslint-disable-next-line react/function-component-definition\nexport function LegacyDropdown<const T extends LegacyDropdownOptions>({\n className,\n onSelection,\n options,\n title\n}: LegacyDropdownProps<T>) {\n const optionKeys: readonly string[] = options instanceof Array ? options : Object.keys(options);\n return (\n <Menu as=\"div\" className={twMerge('relative w-full whitespace-nowrap', className)}>\n <Menu.Button\n as={DropdownButton}\n className=\"h-full w-full\"\n disabled={options.length === 0}\n style={{ width: '100%' }}\n >\n {title}\n </Menu.Button>\n <Transition\n as=\"div\"\n className=\"absolute bottom-0 z-10 w-full\"\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Menu.Items as={Card} className=\"absolute z-10 mt-2 flex w-fit min-w-full flex-col overflow-hidden rounded-md\">\n {optionKeys.map((option) => (\n <Menu.Item key={option}>\n <button\n className=\"p-2 text-left text-sm hover:bg-slate-200 dark:hover:bg-slate-700\"\n data-cy=\"dropdown-menu-option\"\n style={{ minWidth: 100 }}\n onClick={() => {\n onSelection(option as LegacyDropdownOptionKey<T>);\n }}\n >\n {Array.isArray(options) ? option : (options[option as keyof T] as string)}\n </button>\n </Menu.Item>\n ))}\n </Menu.Items>\n </Transition>\n </Menu>\n );\n}\n","import React from 'react';\n\nimport { Dialog, Transition } from '@headlessui/react';\nimport { XMarkIcon } from '@heroicons/react/24/solid';\nimport { clsx } from 'clsx';\n\n/** @deprecated */\nexport type LegacyModalProps = {\n children: React.ReactNode;\n onClose: () => void;\n open: boolean;\n showCloseButton?: boolean;\n title: string;\n width?: 'lg' | 'md' | 'sm' | 'xl';\n};\n\n/** @deprecated */\nexport const LegacyModal = ({ children, onClose, open, showCloseButton, title, width = 'md' }: LegacyModalProps) => {\n return (\n <Transition appear as={React.Fragment} show={open}>\n <Dialog as=\"div\" className=\"relative z-10\" onClose={onClose}>\n <Transition.Child\n as={React.Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black bg-opacity-50\" />\n </Transition.Child>\n <div className=\"fixed inset-0 overflow-y-auto\">\n <div className=\"flex min-h-full items-center justify-center p-4 text-center\">\n <Transition.Child\n as={React.Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 scale-95\"\n enterTo=\"opacity-100 scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 scale-100\"\n leaveTo=\"opacity-0 scale-95\"\n >\n <Dialog.Panel\n className={clsx(\n 'relative w-full transform overflow-visible rounded-2xl bg-slate-100 p-6 text-left align-middle text-slate-900 shadow-xl transition-all dark:bg-slate-800 dark:text-slate-100',\n {\n 'max-w-lg': width === 'lg',\n 'max-w-md': width === 'md',\n 'max-w-sm': width === 'sm',\n 'max-w-xl': width === 'xl'\n }\n )}\n >\n <div className=\"flex items-center justify-between\">\n <Dialog.Title as=\"h3\" className=\"p-0.5 text-xl font-bold leading-6\">\n {title}\n </Dialog.Title>\n {showCloseButton && (\n <button\n className=\"flex items-center justify-center rounded-md p-0.5 hover:bg-slate-200 dark:hover:bg-slate-700\"\n type=\"button\"\n onClick={onClose}\n >\n <XMarkIcon height={24} width={24} />\n </button>\n )}\n </div>\n <div className=\"my-2 p-0.5\">{children}</div>\n </Dialog.Panel>\n </Transition.Child>\n </div>\n </div>\n </Dialog>\n </Transition>\n );\n};\n","import { Listbox, Transition } from '@headlessui/react';\nimport { CheckIcon } from '@heroicons/react/24/solid';\nimport { clsx } from 'clsx';\n\nimport { type ButtonProps } from '../Button';\nimport { Card } from '../Card';\nimport { DropdownButton } from '../DropdownButton';\n\n/** @deprecated */\nexport type LegacySelectOption = {\n key: string;\n label: string;\n};\n\n/** @deprecated */\nexport type LegacySelectDropdownProps<T extends LegacySelectOption> = {\n checkPosition?: 'left' | 'right';\n className?: string;\n options: T[];\n selected: T[];\n setSelected: (selected: T[]) => void;\n title: string;\n /** The button variant to use for the dropdown toggle */\n variant?: ButtonProps['variant'];\n};\n\n/** @deprecated */\nexport const LegacySelectDropdown = <T extends LegacySelectOption>({\n checkPosition = 'right',\n className,\n options,\n selected,\n setSelected,\n title\n}: LegacySelectDropdownProps<T>) => {\n // Here we specify the key prop of objects for comparison\n return (\n <Listbox\n multiple\n as=\"div\"\n by=\"key\"\n className={clsx('relative flex w-full', className)}\n value={selected}\n onChange={setSelected}\n >\n <Listbox.Button as={DropdownButton} className=\"h-full w-full\">\n {title}\n </Listbox.Button>\n <Transition\n as=\"div\"\n className=\"absolute bottom-0 z-10 w-full\"\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Listbox.Options\n as={Card}\n className=\"absolute z-10 mt-2 flex max-h-80 min-w-full flex-col overflow-scroll rounded-md scrollbar-none\"\n >\n {options.map((option) => (\n <Listbox.Option\n className=\"flex w-full items-center whitespace-nowrap bg-slate-50 p-2 text-sm hover:bg-slate-200 dark:bg-slate-800 dark:hover:bg-slate-700 \"\n data-cy=\"select-dropdown-option\"\n key={option.key}\n value={option}\n >\n {checkPosition === 'left' && (\n <CheckIcon className=\"invisible mr-2 h-6 ui-selected:visible\" height={16} width={16} />\n )}\n <span className=\"ui-selected:font-medium\" data-cy=\"select-dropdown-option-label\">\n {option.label}\n </span>\n {checkPosition === 'right' && (\n <CheckIcon className=\"invisible ml-2 ui-selected:visible\" height={16} width={16} />\n )}\n </Listbox.Option>\n ))}\n </Listbox.Options>\n </Transition>\n </Listbox>\n );\n};\n","import React from 'react';\n\nimport { Dialog, Transition } from '@headlessui/react';\nimport { XMarkIcon } from '@heroicons/react/24/outline';\n\n/** @deprecated */\nexport type LegacySliderProps = {\n children: React.ReactNode;\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n title: React.ReactNode;\n};\n\n/** @deprecated */\nexport const LegacySlider = ({ children, isOpen, setIsOpen, title }: LegacySliderProps) => {\n return (\n <Transition as={React.Fragment} show={isOpen}>\n <Dialog as=\"div\" className=\"fixed inset-0 z-10 overflow-hidden\" onClose={setIsOpen}>\n <div className=\"absolute inset-0 overflow-hidden\">\n <Transition.Child\n as={React.Fragment}\n enter=\"transition-opacity ease-linear duration-500\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"transition-opacity ease-linear duration-500\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black/30\" />\n </Transition.Child>\n <div className=\"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10\">\n <Transition.Child\n as={React.Fragment}\n enter=\"transform transition ease-in-out duration-500\"\n enterFrom=\"translate-x-full\"\n enterTo=\"translate-x-0\"\n leave=\"transform transition ease-in-out duration-500\"\n leaveFrom=\"translate-x-0\"\n leaveTo=\"translate-x-full\"\n >\n <div className=\"pointer-events-auto w-screen max-w-md\">\n <div className=\"flex h-full flex-col overflow-y-scroll bg-slate-50 py-6 shadow-xl dark:bg-slate-800\">\n <div className=\"px-4 sm:px-6\">\n <div className=\"flex items-center justify-between\">\n <Dialog.Title className=\"font-semibold text-slate-900 dark:text-slate-100\">{title}</Dialog.Title>\n <button\n className=\"text-muted-foreground hover:text-slate-500\"\n type=\"button\"\n onClick={() => {\n setIsOpen(false);\n }}\n >\n <XMarkIcon aria-hidden=\"true\" className=\"h-6 w-6\" />\n </button>\n </div>\n </div>\n <hr className=\"mx-4 my-4 border-slate-300\" />\n <div className=\"relative flex-1 px-4 sm:px-6\">{children}</div>\n </div>\n </div>\n </Transition.Child>\n </div>\n </div>\n </Dialog>\n </Transition>\n );\n};\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\n\nimport clsx from 'clsx';\n\nimport { LegacyStepperContext } from '@/context/LegacyStepperContext';\nimport { useWindowSize } from '@/hooks/useWindowSize';\nimport { cn } from '@/utils';\n\n/** @deprecated */\nexport type Step = {\n element: React.ReactElement;\n icon: React.ReactElement;\n label: string;\n};\n\n/** @deprecated */\nexport type LegacyStepperProps = {\n className?: string;\n steps: Step[];\n};\n\n/** @deprecated */\nexport const LegacyStepper = ({ className, steps }: LegacyStepperProps) => {\n const icons = useRef<HTMLDivElement[]>([]);\n const [divideStyles, setDivideStyles] = useState<React.CSSProperties[]>([]);\n const { height, width } = useWindowSize();\n\n useEffect(() => {\n const styles: React.CSSProperties[] = [];\n for (let i = 0; i < steps.length - 1; i++) {\n const current = icons.current[i];\n const next = icons.current[i + 1];\n const left = current.offsetLeft + current.offsetWidth;\n styles.push({\n left,\n width: next.offsetLeft - left\n });\n }\n setDivideStyles(styles);\n }, [height, width]);\n\n const [index, updateIndex] = useReducer((prevIndex: number, action: 'decrement' | 'increment') => {\n if (action === 'decrement' && prevIndex > 0) {\n return prevIndex - 1;\n } else if (action === 'increment' && prevIndex < steps.length - 1) {\n return prevIndex + 1;\n }\n return prevIndex;\n }, 0);\n\n return (\n <LegacyStepperContext.Provider value={{ index, updateIndex }}>\n <div className={cn('flex flex-col', className)}>\n <div className=\"relative mb-12 flex items-center justify-between print:hidden\">\n {steps.map((step, i) => {\n return (\n <React.Fragment key={i}>\n <div className=\"flex items-center\">\n <div className=\"flex flex-col items-center justify-center\">\n <div\n className={clsx(\n 'h-12 w-12 rounded-full bg-sky-700 py-3 text-white transition duration-500 ease-in-out [&>*]:h-full [&>*]:w-full',\n i > index && 'bg-slate-200 dark:bg-slate-700'\n )}\n ref={(e) => {\n icons.current[i] = e!;\n }}\n >\n {step.icon}\n </div>\n <span className=\"mt-2 text-xs font-medium uppercase text-muted-foreground\">{step.label}</span>\n </div>\n </div>\n {i !== steps.length - 1 && (\n <div\n className={clsx(\n 'absolute top-6 flex-auto border-t-2 transition duration-500 ease-in-out',\n i >= index ? 'border-slate-200 dark:border-slate-700' : 'border-sky-700'\n )}\n style={divideStyles[i]}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"flex-grow\">{steps[index]?.element}</div>\n </div>\n </LegacyStepperContext.Provider>\n );\n};\n","import { useState } from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { LegacyTable, type LegacyTableEntry, type LegacyTableProps } from './LegacyTable';\n\n/** @deprecated */\nexport const LegacyClientTable = <T extends LegacyTableEntry>({ data, ...props }: LegacyTableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(1);\n const [entriesPerPage] = useState(10);\n const { t } = useTranslation();\n\n const pageCount = Math.ceil(data.length / entriesPerPage);\n\n const firstEntry = data.length === 0 ? 0 : (currentPage - 1) * entriesPerPage + 1;\n const lastEntry = Math.min(firstEntry + entriesPerPage - 1, data.length);\n const currentEntries = data.slice(firstEntry - 1, lastEntry);\n\n return (\n <div>\n <LegacyTable data={currentEntries} {...props} />\n <div className=\"flex items-center justify-between px-1 py-3\">\n <div className=\"hidden sm:block\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n {t('table.pagination.info', {\n first: firstEntry,\n last: lastEntry,\n total: data.length\n })}\n </p>\n </div>\n <div className=\"flex flex-1 justify-between sm:justify-end\">\n <button\n className=\"relative inline-flex items-center rounded-md border border-slate-300 bg-slate-50 px-4 py-2 text-sm font-medium text-muted-foreground disabled:opacity-75 dark:border-slate-600 dark:bg-slate-800\"\n disabled={currentPage === 1}\n onClick={() => {\n setCurrentPage(currentPage - 1);\n }}\n >\n {t('table.pagination.previous')}\n </button>\n <button\n className=\"relative ml-3 inline-flex items-center rounded-md border border-slate-300 bg-slate-50 px-4 py-2 text-sm font-medium text-muted-foreground disabled:opacity-75 dark:border-slate-600 dark:bg-slate-800\"\n disabled={currentPage === pageCount}\n onClick={() => {\n setCurrentPage(currentPage + 1);\n }}\n >\n {t('table.pagination.next')}\n </button>\n </div>\n </div>\n </div>\n );\n};\n","import { range, toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nimport { type LegacyColumnDropdownOptions, LegacyTableColumnHeader } from './LegacyTableColumnHeader';\n\n/** Coerces the value in a cell to a string for consistant display purposes */\nfunction defaultFormatter(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n } else if (typeof value === 'number') {\n return value.toFixed(2).toString();\n } else if (typeof value === 'undefined') {\n return 'NA';\n }\n if (value instanceof Date) {\n return toBasicISOString(value);\n }\n return JSON.stringify(value);\n}\n\n/** @deprecated */\nexport type LegacyTableEntry = { [key: string]: unknown };\n\n/** @deprecated */\nexport type LegacyFieldFactory<T extends LegacyTableEntry = LegacyTableEntry> = (entry: T) => string;\n\n/** @deprecated */\nexport type LegacyTableColumn<T extends LegacyTableEntry> = {\n /** How to determine the values for column */\n field: LegacyFieldFactory<T> | keyof T;\n\n /** Override the default formatter for this field */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter?: (value: any) => string;\n\n /** The label to be displayed on the header */\n label: string;\n};\n\n/** @deprecated */\nexport type LegacyTableProps<T extends LegacyTableEntry> = {\n className?: string;\n columnDropdownOptions?: LegacyColumnDropdownOptions<T>;\n columns: LegacyTableColumn<T>[];\n data: T[];\n minRows?: number;\n onEntryClick?: (entry: T) => void;\n};\n\n/** @deprecated */\nexport const LegacyTable = <T extends LegacyTableEntry>({\n className,\n columnDropdownOptions,\n columns,\n data,\n minRows,\n onEntryClick\n}: LegacyTableProps<T>) => {\n const nRows = Math.max(data.length, minRows ?? -1);\n return (\n <div className={twMerge('min-w-full overflow-hidden rounded-md bg-slate-50 shadow dark:bg-slate-800', className)}>\n <div className=\"w-full overflow-x-scroll\">\n <table className=\"w-full table-auto\">\n <thead className=\"border-b border-slate-300 bg-slate-50 dark:border-0 dark:bg-slate-700\">\n <tr>\n {columns.map((column, i) => (\n <th\n className=\"whitespace-nowrap text-left text-sm font-semibold text-slate-800 dark:text-slate-200\"\n key={i}\n >\n <LegacyTableColumnHeader column={column} dropdownOptions={columnDropdownOptions} />\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y dark:divide-slate-600\">\n {nRows > 0 &&\n range(nRows).map((i) => {\n const entry = data[i];\n return (\n <tr\n className={clsx('whitespace-nowrap p-4 text-sm text-muted-foreground', {\n 'cursor-pointer hover:backdrop-brightness-95': entry && typeof onEntryClick === 'function'\n })}\n data-cy=\"table-row\"\n key={i}\n onClick={() => {\n entry && onEntryClick && onEntryClick(entry);\n }}\n >\n {columns.map(({ field, formatter }, j) => {\n let value: unknown;\n if (!entry) {\n value = '';\n } else if (typeof field === 'function') {\n value = field(entry);\n } else {\n value = entry[field];\n }\n const formattedValue = entry && formatter ? formatter(value) : defaultFormatter(value);\n return (\n <td className=\"whitespace-nowrap px-6\" data-cy=\"table-data-item\" key={j} style={{ height: 42 }}>\n <span className=\"block text-ellipsis leading-none\">{formattedValue}</span>\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nimport { Menu, Transition } from '@headlessui/react';\nimport { ChevronDownIcon } from '@heroicons/react/24/solid';\nimport { clsx } from 'clsx';\n\nimport type { LegacyTableColumn, LegacyTableEntry } from './LegacyTable';\n\n/** @deprecated */\nexport type LegacyColumnDropdownOptions<T extends LegacyTableEntry> = {\n icon?: React.ComponentType<Omit<React.SVGProps<SVGSVGElement>, 'ref'>>;\n label: string;\n onSelection: (column: LegacyTableColumn<T>) => void;\n}[];\n\n/** @deprecated */\nexport type LegacyTableColumnProps<T extends LegacyTableEntry> = {\n column: LegacyTableColumn<T>;\n dropdownOptions?: LegacyColumnDropdownOptions<T>;\n};\n\n/** @deprecated */\nexport const LegacyTableColumnHeader = <T extends LegacyTableEntry>({\n column,\n dropdownOptions\n}: LegacyTableColumnProps<T>) => {\n return (\n <Menu as=\"div\" className=\"relative\">\n <Menu.Button\n className={clsx(\n 'flex min-w-[10rem] flex-shrink-0 items-center justify-between px-6 py-3 text-sm font-semibold text-slate-800 dark:text-slate-200',\n { 'cursor-default': !dropdownOptions }\n )}\n >\n {column.label}\n {dropdownOptions && <ChevronDownIcon className=\"ml-3\" height={16} width={16} />}\n </Menu.Button>\n {dropdownOptions && (\n <Transition\n as={React.Fragment}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Menu.Items className=\"absolute right-4 z-50 mt-2 w-32 origin-top-right overflow-hidden rounded-md bg-slate-50 shadow-sm ring-1 ring-black ring-opacity-5 focus:outline-none dark:bg-slate-700\">\n {dropdownOptions.map((option) => {\n const Icon = option.icon;\n return (\n <Menu.Item\n as=\"button\"\n className=\"flex w-full items-center text-ellipsis whitespace-nowrap px-3 py-2 hover:backdrop-brightness-95 dark:hover:backdrop-brightness-150\"\n key={option.label}\n type=\"button\"\n onClick={() => {\n option.onSelection(column);\n }}\n >\n {Icon && <Icon className=\"mr-2\" height={16} width={16} />}\n {option.label}\n </Menu.Item>\n );\n })}\n </Menu.Items>\n </Transition>\n )}\n </Menu>\n );\n};\n","import React from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport { useTranslation } from 'react-i18next';\nimport {\n CartesianGrid,\n ErrorBar,\n Label,\n Legend,\n Line,\n LineChart,\n type LineProps,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n} from 'recharts';\nimport type { ConditionalKeys } from 'type-fest';\n\nimport { type Theme, useTheme } from '@/hooks/useTheme';\n\n/** An array of arbitrary objects with data to graph */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LineGraphData = readonly { [key: string]: any }[];\n\n/** Extract string keys from items in `T` where the value of `T[K]` extends `K` */\ntype ExtractValidKeys<T extends LineGraphData, K> = Extract<ConditionalKeys<T[number], K>, string>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LineGraphLine<T extends LineGraphData = { [key: string]: any }[]> = Pick<\n LineProps,\n 'legendType' | 'stroke' | 'strokeDasharray' | 'strokeWidth' | 'type'\n> & {\n err?: ExtractValidKeys<T, number>;\n name: string;\n val: ExtractValidKeys<T, number>;\n};\n\nconst strokeColors = {\n dark: '#cbd5e1', // slate-300\n light: '#475569' // slate-600\n};\n\nconst tooltipStyles: { [K in Theme]: React.CSSProperties } = {\n dark: {\n backgroundColor: '#0f172a', // slate-900\n borderColor: strokeColors.light,\n borderRadius: '2px'\n },\n light: {\n backgroundColor: '#f1f5f9', // slate-100\n borderColor: strokeColors.dark,\n borderRadius: '2px'\n }\n};\n\n// eslint-disable-next-line react/function-component-definition\nfunction LineGraphComponent<const T extends LineGraphData>({\n data,\n lines,\n xAxis\n}: {\n /** An array of objects, where each object represents one point on the x-axis */\n data: T;\n lines: LineGraphLine<T>[];\n xAxis?: {\n key?: ExtractValidKeys<T, number>; // unix time\n label?: string;\n };\n}) {\n const { i18n } = useTranslation();\n const [theme] = useTheme();\n\n return (\n <ResponsiveContainer height={400} width=\"100%\">\n <LineChart data={[...data]} margin={{ bottom: 5, left: 15, right: 15, top: 5 }}>\n <CartesianGrid stroke=\"#64748b\" strokeDasharray=\"5 5\" />\n <XAxis\n axisLine={{ stroke: '#64748b' }}\n dataKey={xAxis?.key}\n domain={['auto', 'auto']}\n height={50}\n interval=\"preserveStartEnd\"\n padding={{ left: 20, right: 20 }}\n stroke={strokeColors[theme]}\n tickFormatter={(time: number) => toBasicISOString(new Date(time))}\n tickLine={{ stroke: '#64748b' }}\n tickMargin={8}\n tickSize={8}\n type={'number'}\n >\n <Label fill={strokeColors[theme]} offset={0} position=\"insideBottom\" value={xAxis?.label} />\n </XAxis>\n <YAxis\n axisLine={{ stroke: '#64748b' }}\n stroke={strokeColors[theme]}\n tickLine={{ stroke: '#64748b' }}\n tickMargin={5}\n tickSize={8}\n width={40}\n />\n <Tooltip\n contentStyle={tooltipStyles[theme]}\n labelFormatter={(time: number) => {\n const date = new Date(time);\n return new Intl.DateTimeFormat(i18n.resolvedLanguage, {\n dateStyle: 'full',\n timeStyle: 'medium'\n }).format(date);\n }}\n labelStyle={{ color: strokeColors[theme], fontWeight: 500, whiteSpace: 'pre-wrap' }}\n />\n {lines.map(({ err, name, stroke, type, val, ...props }) => (\n <Line\n {...props}\n dataKey={val}\n key={val}\n name={name}\n stroke={stroke ?? strokeColors[theme]}\n type={type ?? 'linear'}\n >\n {err && <ErrorBar dataKey={err} stroke=\"#64748b\" />}\n </Line>\n ))}\n <Legend wrapperStyle={{ paddingLeft: 40, paddingTop: 10 }} />\n </LineChart>\n </ResponsiveContainer>\n );\n}\n\nexport const LineGraph = React.memo(LineGraphComponent) as typeof LineGraphComponent;\n\nexport type { LineGraphData, LineGraphLine };\n","import { Group, Menu, Portal, RadioGroup, Sub } from '@radix-ui/react-menubar';\n\nimport { MenuBarCheckboxItem } from './MenuBarCheckboxItem';\nimport { MenuBarContent } from './MenuBarContent';\nimport { MenuBarItem } from './MenuBarItem';\nimport { MenuBarLabel } from './MenuBarLabel';\nimport { MenuBarRadioItem } from './MenuBarRadioItem';\nimport { MenuBarRoot } from './MenuBarRoot';\nimport { MenuBarSeparator } from './MenuBarSeparator';\nimport { MenuBarShortcut } from './MenuBarShortcut';\nimport { MenuBarSubContent } from './MenuBarSubContent';\nimport { MenuBarSubTrigger } from './MenuBarSubTrigger';\nimport { MenuBarTrigger } from './MenuBarTrigger';\n\nexport const MenuBar = Object.assign(MenuBarRoot, {\n CheckboxItem: MenuBarCheckboxItem,\n Content: MenuBarContent,\n Group: Group,\n Item: MenuBarItem,\n Label: MenuBarLabel,\n Menu: Menu,\n Portal: Portal,\n RadioGroup: RadioGroup,\n RadioItem: MenuBarRadioItem,\n Separator: MenuBarSeparator,\n Shortcut: MenuBarShortcut,\n Sub: Sub,\n SubContent: MenuBarSubContent,\n SubTrigger: MenuBarSubTrigger,\n Trigger: MenuBarTrigger\n});\n","import React from 'react';\n\nimport { CheckboxItem, ItemIndicator } from '@radix-ui/react-menubar';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof CheckboxItem>\n>(function MenuBarCheckboxItem({ checked, children, className, ...props }, ref) {\n return (\n <CheckboxItem\n checked={checked}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ItemIndicator>\n </span>\n {children}\n </CheckboxItem>\n );\n});\n","import React from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function MenuBarContent({ align = 'start', alignOffset = -4, className, sideOffset = 8, ...props }, ref) {\n return (\n <Portal>\n <Content\n align={align}\n alignOffset={alignOffset}\n className={cn(\n 'z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Item } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarItem = React.forwardRef<\n React.ElementRef<typeof Item>,\n React.ComponentPropsWithoutRef<typeof Item> & {\n inset?: boolean;\n }\n>(function MenuBarItem({ className, inset, ...props }, ref) {\n return (\n <Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Label } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarLabel = React.forwardRef<\n React.ElementRef<typeof Label>,\n React.ComponentPropsWithoutRef<typeof Label> & {\n inset?: boolean;\n }\n>(function MenuBarLabel({ className, inset, ...props }, ref) {\n return <Label className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { ItemIndicator, RadioItem } from '@radix-ui/react-menubar';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarRadioItem = React.forwardRef<\n React.ElementRef<typeof RadioItem>,\n React.ComponentPropsWithoutRef<typeof RadioItem>\n>(function MenuBarRadioItem({ children, className, ...props }, ref) {\n return (\n <RadioItem\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ItemIndicator>\n </span>\n {children}\n </RadioItem>\n );\n});\n","import React from 'react';\n\nimport { Root } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarRoot = React.forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function MenuBarRoot({ className, ...props }, ref) {\n return (\n <Root\n className={cn('flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { Separator } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentPropsWithoutRef<typeof Separator>\n>(function MenuBarSeparator({ className, ...props }, ref) {\n return <Separator className={cn('-mx-1 my-1 h-px bg-muted', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\n","import React from 'react';\n\nimport { SubContent } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubContent = React.forwardRef<\n React.ElementRef<typeof SubContent>,\n React.ComponentPropsWithoutRef<typeof SubContent>\n>(function MenuBarSubContent({ className, ...props }, ref) {\n return (\n <SubContent\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { SubTrigger } from '@radix-ui/react-menubar';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubTrigger = React.forwardRef<\n React.ElementRef<typeof SubTrigger>,\n React.ComponentPropsWithoutRef<typeof SubTrigger> & {\n inset?: boolean;\n }\n>(function MenuBarSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </SubTrigger>\n );\n});\n","import React from 'react';\n\nimport { Trigger } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarTrigger = React.forwardRef<\n React.ElementRef<typeof Trigger>,\n React.ComponentPropsWithoutRef<typeof Trigger>\n>(function MenuBarTrigger({ className, ...props }, ref) {\n return (\n <Trigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { AnimatePresence, motion } from 'framer-motion';\nimport { XIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Card } from '@/components/Card';\nimport { useNotificationsStore } from '@/hooks/useNotificationsStore';\n\nimport { NotificationIcon } from './NotificationIcon';\n\ntype NotificationHubProps = {\n /** The number of milliseconds before the notification is automatically cleared */\n timeout?: number;\n};\n\nconst NotificationHub = ({ timeout = 5000 }: NotificationHubProps) => {\n const { t } = useTranslation();\n const { dismissNotification, notifications } = useNotificationsStore();\n\n return (\n <div className=\"fixed bottom-0 z-50 w-full print:hidden\">\n <AnimatePresence>\n {notifications.map((item) => (\n <motion.div\n animate={{ height: 'auto', opacity: 1 }}\n className=\"relative max-w-sm\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n key={item.id}\n transition={{ bounce: 0.1, type: 'spring' }}\n >\n <div className=\"w-full p-2\">\n <Card className=\"w-full rounded-lg p-0\">\n <div className=\"p-4\">\n <div className=\"mb-2 flex items-center\">\n <NotificationIcon type={item.type} />\n <h5 className=\"ml-3 flex-grow font-medium text-slate-900 dark:text-slate-100\">\n {item.title ?? t(`notifications.types.${item.type}`)}\n </h5>\n <button\n className=\"inline-flex rounded-md text-slate-400 hover:text-slate-500 focus:outline-none focus:ring-1 focus:ring-sky-500 dark:focus:ring-sky-600\"\n type=\"button\"\n onClick={() => {\n dismissNotification(item.id);\n }}\n >\n <XIcon aria-hidden=\"true\" className=\"h-5 w-5\" />\n </button>\n </div>\n <p className=\"my-2 text-muted-foreground\">{item.message}</p>\n </div>\n <motion.div\n animate={{ width: '100%' }}\n className=\"h-1 bg-slate-500\"\n initial={{ width: '0%' }}\n transition={{ duration: timeout / 1000, ease: 'linear' }}\n onAnimationComplete={() => {\n dismissNotification(item.id);\n }}\n />\n </Card>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n );\n};\n\nexport { NotificationHub, type NotificationHubProps };\n","import { CheckCircleIcon, ExclamationCircleIcon, InformationCircleIcon, XCircleIcon } from '@heroicons/react/24/solid';\n\nimport { type NotificationInterface } from '@/hooks/useNotificationsStore';\n\nexport type NotificationIconProps = {\n type: NotificationInterface['type'];\n};\n\nexport const NotificationIcon = ({ type }: NotificationIconProps) => {\n switch (type) {\n case 'info':\n return <InformationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-blue-500\" />;\n case 'success':\n return <CheckCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-green-500\" />;\n case 'warning':\n return <ExclamationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-yellow-500\" />;\n case 'error':\n return <XCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-red-500\" />;\n }\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const PaginationContent = ({ className, ...props }: React.ComponentProps<'ul'>) => (\n <ul className={cn('flex flex-row items-center gap-1', className)} {...props} />\n);\n","import React from 'react';\n\nimport { MoreHorizontalIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const PaginationEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span aria-hidden className={cn('flex h-9 w-9 items-center justify-center', className)} {...props}>\n <MoreHorizontalIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\n","export const PaginationItem = ({ className, ...props }: React.ComponentProps<'li'>) => (\n <li className={className} {...props} />\n);\n","import React from 'react';\n\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { type ButtonProps, buttonVariants } from '../Button';\n\nexport type PaginationLinkProps = Simplify<\n Pick<ButtonProps, 'size'> &\n React.ComponentProps<'a'> & {\n isActive?: boolean;\n }\n>;\n\nexport const PaginationLink = ({ children, className, isActive, size = 'icon', ...props }: PaginationLinkProps) => (\n <a\n aria-current={isActive ? 'page' : undefined}\n className={cn(\n buttonVariants({\n size,\n variant: isActive ? 'outline' : 'ghost'\n }),\n className\n )}\n {...props}\n >\n {children}\n </a>\n);\n","import React from 'react';\n\nimport { ChevronRightIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { PaginationLink } from './PaginationLink';\n\nexport const PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => {\n const { t } = useTranslation('libui');\n return (\n <PaginationLink aria-label=\"Go to next page\" className={cn('gap-1 pr-2.5', className)} size=\"md\" {...props}>\n <span>{t('pagination.next')}</span>\n <ChevronRightIcon className=\"h-4 w-4\" />\n </PaginationLink>\n );\n};\n","import { ChevronLeftIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { PaginationLink, type PaginationLinkProps } from './PaginationLink';\n\nexport const PaginationPrevious = ({ className, ...props }: PaginationLinkProps) => {\n const { t } = useTranslation('libui');\n return (\n <PaginationLink aria-label=\"Go to previous page\" className={cn('gap-1 pl-2.5', className)} size=\"md\" {...props}>\n <ChevronLeftIcon className=\"h-4 w-4\" />\n <span>{t('pagination.previous')}</span>\n </PaginationLink>\n );\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const PaginationRoot = ({ className, ...props }: React.ComponentProps<'nav'>) => (\n <nav\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n role=\"navigation\"\n {...props}\n />\n);\n","import { PaginationContent } from './PaginationContent';\nimport { PaginationEllipsis } from './PaginationEllipsis';\nimport { PaginationItem } from './PaginationItem';\nimport { PaginationLink } from './PaginationLink';\nimport { PaginationNext } from './PaginationNext';\nimport { PaginationPrevious } from './PaginationPrevious';\nimport { PaginationRoot } from './PaginationRoot';\n\nexport const Pagination = Object.assign(PaginationRoot, {\n Content: PaginationContent,\n Ellipsis: PaginationEllipsis,\n Item: PaginationItem,\n Link: PaginationLink,\n Next: PaginationNext,\n Previous: PaginationPrevious\n});\n","import React from 'react';\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '@/utils';\n\nexport const Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(function Progress({ className, value, ...props }, ref) {\n return (\n <ProgressPrimitive.Root\n className={cn('bg-primary/20 relative h-2 w-full overflow-hidden rounded-full', className)}\n ref={ref}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n});\n","import React from 'react';\n\nimport { Panel, type PanelProps } from 'react-resizable-panels';\n\nimport { ResizableHandle, type ResizableHandleProps } from './ResizableHandle';\nimport { ResizablePanelGroup, type ResizablePanelGroupProps } from './ResizablePanelGroup';\n\ntype ResizableRootType = React.FC<{ children: React.ReactNode }>;\ntype ResizableType = ResizableRootType & {\n Handle: React.FC<ResizableHandleProps>;\n Panel: React.FC<PanelProps>;\n PanelGroup: React.FC<ResizablePanelGroupProps>;\n};\n\n// This is only for storybook and is unnecessary for real-world use\nconst ResizableRoot: ResizableRootType = ({ children }) => <>{children}</>;\n\nexport const Resizable: ResizableType = Object.assign(ResizableRoot, {\n Handle: ResizableHandle,\n Panel,\n PanelGroup: ResizablePanelGroup\n});\n","import { GripVertical } from 'lucide-react';\nimport { PanelResizeHandle } from 'react-resizable-panels';\n\nimport { cn } from '@/utils';\n\nexport type ResizableHandleProps = React.ComponentProps<typeof PanelResizeHandle> & {\n withHandle?: boolean;\n};\n\nexport const ResizableHandle = ({ className, withHandle, ...props }: ResizableHandleProps) => (\n <PanelResizeHandle\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 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-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </PanelResizeHandle>\n);\n","import { PanelGroup } from 'react-resizable-panels';\n\nimport { cn } from '@/utils';\n\nexport type ResizablePanelGroupProps = React.ComponentProps<typeof PanelGroup>;\n\nexport const ResizablePanelGroup = ({ className, ...props }: ResizablePanelGroupProps) => (\n <PanelGroup\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n);\n","import { SearchIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { Input } from '../Input';\n\nexport type SearchBarProps = {\n /** Additional CSS classes to add to the wrapper form component, potentially overriding default styling */\n className?: string;\n /** Event handler called when the value changes */\n onValueChange: (value: string) => void;\n /** Custom placeholder to use instead of the default */\n placeholder?: string;\n /** The controlled value of the search bar, which should be used in conjunction with onValueChange */\n value: string;\n};\n\nexport const SearchBar = ({ className, onValueChange, placeholder, value }: SearchBarProps) => {\n const { t } = useTranslation();\n return (\n <form className={cn('relative', className)}>\n <SearchIcon className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n className=\"pl-8\"\n placeholder={placeholder ?? t('searchBar.placeholder')}\n type=\"search\"\n value={value}\n onChange={(event) => {\n onValueChange?.(event.target.value);\n }}\n />\n </form>\n );\n};\n","import React from 'react';\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils';\n\nexport const Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(function Separator({ className, decorative = true, orientation = 'horizontal', ...props }, ref) {\n return (\n <SeparatorPrimitive.Root\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n data-testid=\"separator\"\n decorative={decorative}\n orientation={orientation}\n ref={ref}\n {...props}\n />\n );\n});\n","import { Close, Portal, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { SheetContent } from './SheetContent';\nimport { SheetDescription } from './SheetDescription';\nimport { SheetFooter } from './SheetFooter';\nimport { SheetHeader } from './SheetHeader';\nimport { SheetOverlay } from './SheetOverlay';\nimport { SheetTitle } from './SheetTitle';\n\nexport const Sheet = Object.assign(Root, {\n Close,\n Content: SheetContent,\n Description: SheetDescription,\n Footer: SheetFooter,\n Header: SheetHeader,\n Overlay: SheetOverlay,\n Portal,\n Title: SheetTitle,\n Trigger\n});\n","import React from 'react';\n\nimport { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n defaultVariants: {\n side: 'right'\n },\n variants: {\n side: {\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top'\n }\n }\n }\n);\n\nexport type SheetContentProps = React.ComponentPropsWithoutRef<typeof Content> & VariantProps<typeof sheetVariants>;\n\nexport const SheetContent = React.forwardRef<React.ElementRef<typeof Content>, SheetContentProps>(function SheetContent(\n { children, className, side = 'right', ...props },\n ref\n) {\n return (\n <Portal>\n <Overlay />\n <Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Close>\n </Content>\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetDescription = React.forwardRef<\n React.ElementRef<typeof Description>,\n React.ComponentPropsWithoutRef<typeof Description>\n>(function SheetDescription({ className, ...props }, ref) {\n return <Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetOverlay = React.forwardRef<\n React.ElementRef<typeof Overlay>,\n React.ComponentPropsWithoutRef<typeof Overlay>\n>(function SheetOverlay({ className, ...props }, ref) {\n return (\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n );\n});\n","import React from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetTitle = React.forwardRef<\n React.ElementRef<typeof Title>,\n React.ComponentPropsWithoutRef<typeof Title>\n>(function SheetTitle({ className, ...props }, ref) {\n return <Title className={cn('text-lg font-semibold text-foreground', className)} ref={ref} {...props} />;\n});\n","import type { HTMLProps } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const Spinner = ({ className, ...props }: HTMLProps<HTMLDivElement>) => {\n return (\n <div className={cn('flex h-full w-full items-center justify-center', className)} {...props}>\n <span\n className=\"relative animate-spinner overflow-hidden text-slate-900 dark:text-slate-100\"\n style={{\n borderRadius: '50%',\n fontSize: '45px',\n height: '1em',\n textIndent: '-9999em',\n transform: 'translateZ(0)',\n width: '1em'\n }}\n />\n </div>\n );\n};\n","import { cn } from '@/utils';\n\nexport const SpinnerIcon = ({ className, ...props }: React.HTMLAttributes<SVGElement>) => (\n <svg\n className={cn('animate-spin', className)}\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n);\n","import React from 'react';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils';\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(function Switch({ className, ...props }, ref) {\n return (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n );\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n function TableBody({ className, ...props }, ref) {\n return <tbody className={cn('[&_tr:last-child]:border-0', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n function TableCaption({ className, ...props }, ref) {\n return <caption className={cn('mt-4 text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n function TableCell({ className, ...props }, ref) {\n return <td className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n function TableFooter({ className, ...props }, ref) {\n return (\n <tfoot\n className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n function TableHead({ className, ...props }, ref) {\n return (\n <th\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n function TableHeader({ className, ...props }, ref) {\n return <thead className={cn('[&_tr]:border-b', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRoot = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(function TableRoot(\n { className, ...props },\n ref\n) {\n return (\n <div className=\"relative w-full overflow-auto\">\n <table className={cn('w-full caption-bottom text-sm', className)} ref={ref} {...props} />\n </div>\n );\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n function TableRow({ className, ...props }, ref) {\n return (\n <tr\n className={cn('hover:bg-muted/50 border-b transition-colors data-[state=selected]:bg-muted', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import { TableBody } from './TableBody';\nimport { TableCaption } from './TableCaption';\nimport { TableCell } from './TableCell';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { TableHeader } from './TableHeader';\nimport { TableRoot } from './TableRoot';\nimport { TableRow } from './TableRow';\n\nexport const Table = Object.assign(TableRoot, {\n Body: TableBody,\n Caption: TableCaption,\n Cell: TableCell,\n Footer: TableFooter,\n Head: TableHead,\n Header: TableHeader,\n Row: TableRow\n});\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { TabsContent } from './TabsContent';\nimport { TabsList } from './TabsList';\nimport { TabsTrigger } from './TabsTrigger';\n\nexport const Tabs = Object.assign(TabsPrimitive.Root, {\n Content: TabsContent,\n List: TabsList,\n Trigger: TabsTrigger\n});\n","import React from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(function TabsContent({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Content\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(function TabsList({ className, ...props }, ref) {\n return (\n <TabsPrimitive.List\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Trigger\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { MoonIcon, SunIcon } from 'lucide-react';\n\nimport { useTheme } from '@/hooks/useTheme';\n\nimport { Button } from '../Button';\n\nexport type ThemeToggleProps = {\n align?: 'center' | 'end' | 'start';\n};\n\nexport const ThemeToggle = () => {\n const [theme, setTheme] = useTheme();\n\n const toggleTheme = () => {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n };\n\n return (\n <Button size=\"icon\" variant=\"outline\" onClick={toggleTheme}>\n <SunIcon className=\"rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <MoonIcon className=\"absolute rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n </Button>\n );\n};\n","import React from 'react';\n\nimport { Content } from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/utils';\n\nexport type TooltipContentProps = {\n /** The preferred alignment against the trigger, which may change when collisions occur. */\n align?: 'center' | 'end' | 'start';\n /** The content to display when the user hovers over the tooltip trigger */\n children: React.ReactNode;\n /** Additional CSS classes to add to the component, potentially overriding default styling */\n className?: string;\n /** The distance in pixels from the viewport edges where collision detection should occur */\n collisionPadding?: number;\n /** The distance in pixels from the trigger */\n sideOffset?: number;\n};\n\nexport const TooltipContent = React.forwardRef<React.ElementRef<typeof Content>, TooltipContentProps>(\n function TooltipContent({ className, collisionPadding = 0, sideOffset = 4, ...props }, ref) {\n return (\n <Content\n className={cn(\n 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs 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',\n className\n )}\n collisionPadding={collisionPadding}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { Provider, Root } from '@radix-ui/react-tooltip';\n\nexport type TooltipRootProps = {\n /** The tooltip trigger and content */\n children: React.ReactNode;\n /** The duration from when the mouse enters a tooltip trigger until the tooltip opens. */\n delayDuration?: number;\n /** How much time a user has to enter another trigger without incurring a delay again. */\n skipDelayDuration?: number;\n};\n\nexport const TooltipRoot = ({ children, delayDuration = 0, skipDelayDuration = 300 }: TooltipRootProps) => {\n return (\n <Provider delayDuration={delayDuration} skipDelayDuration={skipDelayDuration}>\n <Root>{children}</Root>\n </Provider>\n );\n};\n","import React from 'react';\n\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type TooltipTriggerProps = Omit<ButtonProps, 'asChild'>;\n\nexport const TooltipTrigger = React.forwardRef<React.ElementRef<typeof Trigger>, TooltipTriggerProps>(\n function TooltipTrigger({ variant = 'outline', ...props }, ref) {\n return (\n <Trigger asChild ref={ref}>\n <Button variant={variant} {...props} />\n </Trigger>\n );\n }\n);\n","import { TooltipContent } from './TooltipContent';\nimport { TooltipRoot } from './TooltipRoot';\nimport { TooltipTrigger } from './TooltipTrigger';\n\nexport const Tooltip = Object.assign(TooltipRoot, {\n Content: TooltipContent,\n Trigger: TooltipTrigger\n});\n"],"mappings":"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","names":["AccordionContent","React","AccordionPrimitive","jsx","React","AccordionItem","React","AccordionPrimitive","jsx","AccordionRoot","React","AccordionPrimitive","jsx","React","AccordionTrigger","Root","Trigger","React","React","jsx","jsxs","React","Button","jsx","React","AlertDialogAction","React","jsx","React","AlertDialogCancel","React","Content","React","jsx","React","AlertDialogOverlay","jsx","jsxs","React","AlertDialogContent","Content","React","jsx","React","AlertDialogDescription","jsx","jsx","React","jsx","React","AlertDialogTitle","Root","Trigger","React","jsx","jsxs","React","ArrowToggle","React","jsx","React","AvatarFallback","React","AvatarPrimitive","jsx","React","AvatarImage","React","AvatarPrimitive","jsx","React","AvatarRoot","cva","jsx","cva","jsx","React","jsx","React","BreadcrumbItem","React","Slot","jsx","React","BreadcrumbLink","Slot","React","jsx","React","BreadcrumbList","React","jsx","React","BreadcrumbPage","React","jsx","BreadcrumbRoot","jsx","React","jsx","React","CardRoot","React","jsx","React","Checkbox","Content","Root","Trigger","React","CommandPrimitive","React","jsx","CommandEmpty","React","CommandPrimitive","jsx","React","CommandGroup","CommandPrimitive","React","CommandPrimitive","jsx","jsxs","React","CommandInput","CommandPrimitive","React","CommandPrimitive","jsx","React","CommandItem","CommandPrimitive","React","CommandPrimitive","jsx","React","CommandList","CommandPrimitive","React","CommandPrimitive","jsx","React","CommandSeparator","CommandPrimitive","jsx","jsx","React","CommandPrimitive","Command","Portal","Root","Trigger","React","CheckIcon","jsx","jsxs","React","ContextMenuCheckboxItem","CheckIcon","React","ContextMenuPrimitive","jsx","React","ContextMenuContent","React","ContextMenuPrimitive","jsx","React","ContextMenuItem","React","ContextMenuPrimitive","jsx","React","ContextMenuLabel","React","ContextMenuPrimitive","jsx","jsxs","React","ContextMenuRadioItem","React","ContextMenuPrimitive","jsx","React","ContextMenuSeparator","jsx","React","ContextMenuPrimitive","jsx","React","ContextMenuSubContent","React","ContextMenuPrimitive","ChevronRightIcon","jsx","jsxs","React","ContextMenuSubTrigger","ChevronRightIcon","Root","Portal","Trigger","React","AnimatePresence","motion","useTranslation","React","jsx","jsxs","Calendar","range","React","Root","React","jsx","React","ScrollBar","jsx","jsxs","React","ScrollArea","Root","jsx","range","jsx","jsxs","React","DatePicker","useTranslation","date","AnimatePresence","motion","Root","Trigger","React","Content","Portal","React","Overlay","jsx","React","DialogOverlay","Overlay","jsx","jsxs","React","DialogContent","Portal","Content","React","Description","jsx","React","DialogDescription","Description","jsx","jsx","React","Title","jsx","React","DialogTitle","Title","Root","Trigger","DrawerPrimitive","React","jsx","jsxs","React","DrawerContent","React","DrawerPrimitive","jsx","React","DrawerDescription","DrawerPrimitive","jsx","jsx","React","DrawerPrimitive","jsx","React","DrawerTitle","DrawerPrimitive","jsx","DrawerPrimitive","React","ChevronDownIcon","jsx","jsxs","React","DropdownButton","ChevronDownIcon","DropdownMenuPrimitive","React","CheckIcon","jsx","jsxs","React","DropdownMenuCheckboxItem","CheckIcon","React","DropdownMenuPrimitive","jsx","React","DropdownMenuContent","React","DropdownMenuPrimitive","jsx","React","DropdownMenuItem","React","DropdownMenuPrimitive","jsx","React","DropdownMenuLabel","React","DropdownMenuPrimitive","CircleIcon","jsx","jsxs","React","DropdownMenuRadioItem","CircleIcon","React","DropdownMenuPrimitive","jsx","React","DropdownMenuSeparator","jsx","React","DropdownMenuPrimitive","jsx","React","DropdownMenuSubContent","React","DropdownMenuPrimitive","ChevronRightIcon","jsx","jsxs","React","DropdownMenuSubTrigger","ChevronRightIcon","useEffect","jsx","jsxs","jsx","useState","useTranslation","jsx","jsx","jsxs","useEffect","useMemo","useState","useCallback","match","useEffect","React","jsx","React","Input","React","cva","jsx","cva","Label","React","React","Content","Portal","jsx","React","PopoverContent","Portal","Content","jsx","jsxs","jsx","jsx","jsx","jsxs","Label","React","RadioGroupPrimitive","React","CircleIcon","jsx","React","RadioGroupItem","CircleIcon","jsx","React","RadioGroup","jsx","jsxs","Label","RadioGroup","value","React","Root","jsx","jsxs","React","Slider","Root","jsx","jsxs","Label","value","jsx","props","jsx","jsxs","useEffect","useEffect","useTranslation","match","jsx","jsxs","value","Label","useTranslation","match","jsx","jsxs","match","useTranslation","value","Label","RadioGroup","jsx","match","props","useEffect","useState","jsx","jsxs","useState","useEffect","Label","value","useEffect","match","jsx","jsxs","Label","jsx","jsxs","Label","jsx","useEffect","match","props","match","jsx","jsxs","Label","useState","jsx","jsxs","useState","Label","cva","jsx","jsxs","cva","Label","RadioGroup","value","jsx","SelectPrimitive","React","SelectPrimitive","React","ChevronDownIcon","jsx","React","SelectScrollDownButton","ChevronDownIcon","React","SelectPrimitive","ChevronUpIcon","jsx","React","SelectScrollUpButton","ChevronUpIcon","jsx","jsxs","React","SelectContent","React","SelectPrimitive","CheckIcon","jsx","jsxs","React","SelectItem","CheckIcon","React","SelectPrimitive","jsx","React","SelectLabel","React","SelectPrimitive","jsx","React","SelectSeparator","React","SelectPrimitive","jsx","React","SelectTrigger","jsx","jsxs","Label","value","React","jsx","React","TextArea","jsx","jsxs","Label","jsx","match","props","jsx","jsx","jsxs","RecordArrayField","useTranslation","useEffect","Label","jsx","useCallback","match","field","jsx","useState","useMemo","useEffect","jsx","jsxs","useTranslation","useState","Root","Trigger","React","Content","jsx","React","HoverCardContent","Content","Root","Trigger","useTranslation","jsx","jsxs","useTranslation","twMerge","jsx","jsxs","twMerge","React","Dialog","Transition","jsx","jsxs","Transition","CheckIcon","clsx","jsx","jsxs","clsx","Transition","CheckIcon","React","Dialog","Transition","XMarkIcon","jsx","jsxs","React","useEffect","useReducer","useRef","useState","clsx","jsx","jsxs","useRef","useState","useEffect","useReducer","React","clsx","useState","useTranslation","range","toBasicISOString","clsx","twMerge","React","Menu","Transition","ChevronDownIcon","clsx","jsx","jsxs","jsx","jsxs","toBasicISOString","twMerge","range","clsx","jsx","jsxs","useState","useTranslation","React","toBasicISOString","useTranslation","Label","jsx","jsxs","createElement","useTranslation","toBasicISOString","Label","React","Group","Menu","Portal","RadioGroup","Sub","React","CheckboxItem","ItemIndicator","CheckIcon","jsx","jsxs","React","MenuBarCheckboxItem","CheckboxItem","ItemIndicator","CheckIcon","React","Content","Portal","jsx","React","MenuBarContent","Portal","Content","React","Item","jsx","React","MenuBarItem","Item","React","Label","jsx","React","MenuBarLabel","Label","React","ItemIndicator","RadioItem","CircleIcon","jsx","jsxs","React","MenuBarRadioItem","RadioItem","ItemIndicator","CircleIcon","React","Root","jsx","React","MenuBarRoot","Root","React","Separator","jsx","React","MenuBarSeparator","Separator","jsx","React","SubContent","jsx","React","MenuBarSubContent","SubContent","React","SubTrigger","ChevronRightIcon","jsx","jsxs","React","MenuBarSubTrigger","SubTrigger","ChevronRightIcon","React","Trigger","jsx","React","MenuBarTrigger","Trigger","Group","Menu","Portal","RadioGroup","Sub","AnimatePresence","motion","XIcon","useTranslation","jsx","jsx","jsxs","useTranslation","AnimatePresence","motion","XIcon","jsx","MoreHorizontalIcon","jsx","jsxs","MoreHorizontalIcon","jsx","jsx","ChevronRightIcon","useTranslation","jsx","jsxs","useTranslation","ChevronRightIcon","useTranslation","jsx","jsxs","useTranslation","jsx","React","jsx","React","Progress","jsx","jsx","jsx","SearchIcon","useTranslation","jsx","jsxs","useTranslation","SearchIcon","React","jsx","Separator","React","Close","Portal","Root","Trigger","React","Close","Content","Overlay","Portal","cva","XIcon","jsx","jsxs","cva","React","SheetContent","Portal","Overlay","Content","Close","XIcon","React","Description","jsx","React","SheetDescription","Description","jsx","jsx","React","Overlay","jsx","React","SheetOverlay","Overlay","React","Title","jsx","React","SheetTitle","Title","Root","Close","Portal","Trigger","jsx","jsx","React","jsx","React","Switch","React","jsx","React","TableBody","React","jsx","React","TableCaption","React","jsx","React","TableCell","React","jsx","React","TableFooter","React","jsx","React","TableHead","React","jsx","React","TableHeader","React","jsx","React","TableRoot","React","jsx","React","TableRow","TabsPrimitive","React","jsx","React","TabsContent","React","TabsPrimitive","jsx","React","TabsList","React","TabsPrimitive","jsx","React","TabsTrigger","jsx","jsxs","React","Content","jsx","React","TooltipContent","Content","Root","jsx","React","Trigger","jsx","React","TooltipTrigger","Trigger","Tooltip"]}
1
+ {"version":3,"sources":["../../src/components/Accordion/AccordionContent.tsx","../../src/components/Accordion/AccordionItem.tsx","../../src/components/Accordion/AccordionRoot.tsx","../../src/components/Accordion/AccordionTrigger.tsx","../../src/components/Accordion/Accordion.tsx","../../src/components/AlertDialog/AlertDialog.tsx","../../src/components/AlertDialog/AlertDialogAction.tsx","../../src/components/Button/Button.tsx","../../src/components/AlertDialog/AlertDialogCancel.tsx","../../src/components/AlertDialog/AlertDialogContent.tsx","../../src/components/AlertDialog/AlertDialogOverlay.tsx","../../src/components/AlertDialog/AlertDialogDescription.tsx","../../src/components/AlertDialog/AlertDialogFooter.tsx","../../src/components/AlertDialog/AlertDialogHeader.tsx","../../src/components/AlertDialog/AlertDialogTitle.tsx","../../src/components/ArrowToggle/ArrowToggle.tsx","../../src/components/Avatar/AvatarFallback.tsx","../../src/components/Avatar/AvatarImage.tsx","../../src/components/Avatar/AvatarRoot.tsx","../../src/components/Avatar/Avatar.tsx","../../src/components/Badge/Badge.tsx","../../src/components/Breadcrumb/BreadcrumbEllipsis.tsx","../../src/components/Breadcrumb/BreadcrumbItem.tsx","../../src/components/Breadcrumb/BreadcrumbLink.tsx","../../src/components/Breadcrumb/BreadcrumbList.tsx","../../src/components/Breadcrumb/BreadcrumbPage.tsx","../../src/components/Breadcrumb/BreadcrumbRoot.tsx","../../src/components/Breadcrumb/BreadcrumbSeparator.tsx","../../src/components/Breadcrumb/Breadcrumb.tsx","../../src/components/Card/Card.tsx","../../src/components/Checkbox/Checkbox.tsx","../../src/components/Collapsible/Collapsible.tsx","../../src/components/Command/Command.tsx","../../src/components/Command/CommandEmpty.tsx","../../src/components/Command/CommandGroup.tsx","../../src/components/Command/CommandInput.tsx","../../src/components/Command/CommandItem.tsx","../../src/components/Command/CommandList.tsx","../../src/components/Command/CommandSeparator.tsx","../../src/components/Command/CommandShortcut.tsx","../../src/components/ContextMenu/ContextMenu.tsx","../../src/components/ContextMenu/ContextMenuCheckboxItem.tsx","../../src/components/ContextMenu/ContextMenuContent.tsx","../../src/components/ContextMenu/ContextMenuItem.tsx","../../src/components/ContextMenu/ContextMenuLabel.tsx","../../src/components/ContextMenu/ContextMenuRadioItem.tsx","../../src/components/ContextMenu/ContextMenuSeparator.tsx","../../src/components/ContextMenu/ContextMenuShortcut.tsx","../../src/components/ContextMenu/ContextMenuSubContent.tsx","../../src/components/ContextMenu/ContextMenuSubTrigger.tsx","../../src/components/DatePicker/DatePicker.tsx","../../src/components/DatePicker/Calendar.tsx","../../src/components/DatePicker/YearSelector.tsx","../../src/components/ScrollArea/ScrollArea.tsx","../../src/components/ScrollArea/ScrollBar.tsx","../../src/components/Dialog/Dialog.tsx","../../src/components/Dialog/DialogContent.tsx","../../src/components/Dialog/DialogOverlay.tsx","../../src/components/Dialog/DialogDescription.tsx","../../src/components/Dialog/DialogFooter.tsx","../../src/components/Dialog/DialogHeader.tsx","../../src/components/Dialog/DialogTitle.tsx","../../src/components/Drawer/Drawer.tsx","../../src/components/Drawer/DrawerContent.tsx","../../src/components/Drawer/DrawerDescription.tsx","../../src/components/Drawer/DrawerFooter.tsx","../../src/components/Drawer/DrawerHeader.tsx","../../src/components/Drawer/DrawerTitle.tsx","../../src/components/DropdownButton/DropdownButton.tsx","../../src/components/DropdownMenu/DropdownMenu.tsx","../../src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx","../../src/components/DropdownMenu/DropdownMenuContent.tsx","../../src/components/DropdownMenu/DropdownMenuItem.tsx","../../src/components/DropdownMenu/DropdownMenuLabel.tsx","../../src/components/DropdownMenu/DropdownMenuRadioItem.tsx","../../src/components/DropdownMenu/DropdownMenuSeparator.tsx","../../src/components/DropdownMenu/DropdownMenuShortcut.tsx","../../src/components/DropdownMenu/DropdownMenuSubContent.tsx","../../src/components/DropdownMenu/DropdownMenuSubTrigger.tsx","../../src/components/ErrorBoundary/ErrorBoundary.tsx","../../src/components/ErrorFallback/ErrorFallback.tsx","../../src/components/Form/Form.tsx","../../src/components/Heading/Heading.tsx","../../src/components/Form/ErrorMessage.tsx","../../src/components/Form/DynamicField.tsx","../../src/components/Form/StaticField.tsx","../../src/components/Form/NumberRecordField.tsx","../../src/components/Form/NumberField/NumberField.tsx","../../src/components/Input/Input.tsx","../../src/components/Label/Label.tsx","../../src/components/Form/FieldGroup/FieldGroupDescription.tsx","../../src/components/Popover/Popover.tsx","../../src/components/Popover/PopoverContent.tsx","../../src/components/Form/FieldGroup/FieldGroupRoot.tsx","../../src/components/Form/FieldGroup/FieldGroupRow.tsx","../../src/components/Form/FieldGroup/FieldGroup.tsx","../../src/components/Form/NumberField/NumberFieldInput.tsx","../../src/components/RadioGroup/RadioGroup.tsx","../../src/components/RadioGroup/RadioGroupItem.tsx","../../src/components/Form/NumberField/NumberFieldRadio.tsx","../../src/components/Slider/Slider.tsx","../../src/components/Form/NumberField/NumberFieldSlider.tsx","../../src/components/Form/RecordArrayField.tsx","../../src/components/Form/BooleanField/BooleanField.tsx","../../src/components/Form/BooleanField/BooleanFieldCheckbox.tsx","../../src/components/Form/BooleanField/BooleanFieldRadio.tsx","../../src/components/Form/DateField/DateField.tsx","../../src/components/Form/SetField/SetField.tsx","../../src/components/Form/SetField/SetFieldListbox.tsx","../../src/components/Form/SetField/SetFieldSelect.tsx","../../src/components/Form/StringField/StringField.tsx","../../src/components/Form/StringField/StringFieldInput.tsx","../../src/components/Form/StringField/StringFieldPassword.tsx","../../src/components/Form/BaseRadioField.tsx","../../src/components/Form/StringField/StringFieldRadio.tsx","../../src/components/Select/Select.tsx","../../src/components/Select/SelectContent.tsx","../../src/components/Select/SelectScrollDownButton.tsx","../../src/components/Select/SelectScrollUpButton.tsx","../../src/components/Select/SelectItem.tsx","../../src/components/Select/SelectLabel.tsx","../../src/components/Select/SelectSeparator.tsx","../../src/components/Select/SelectTrigger.tsx","../../src/components/Form/StringField/StringFieldSelect.tsx","../../src/components/TextArea/TextArea.tsx","../../src/components/Form/StringField/StringFieldTextArea.tsx","../../src/components/Form/ScalarField.tsx","../../src/components/Form/FieldsComponent.tsx","../../src/components/Form/utils.ts","../../src/components/HoverCard/HoverCard.tsx","../../src/components/HoverCard/HoverCardContent.tsx","../../src/components/LanguageToggle/LanguageToggle.tsx","../../src/components/LegacyDropdown/LegacyDropdown.tsx","../../src/components/LegacyModal/LegacyModal.tsx","../../src/components/LegacySelectDropdown/LegacySelectDropdown.tsx","../../src/components/LegacySlider/LegacySlider.tsx","../../src/components/LegacyStepper/LegacyStepper.tsx","../../src/components/LegacyTable/LegacyClientTable.tsx","../../src/components/LegacyTable/LegacyTable.tsx","../../src/components/LegacyTable/LegacyTableColumnHeader.tsx","../../src/components/LineGraph/LineGraph.tsx","../../src/components/MenuBar/MenuBar.tsx","../../src/components/MenuBar/MenuBarCheckboxItem.tsx","../../src/components/MenuBar/MenuBarContent.tsx","../../src/components/MenuBar/MenuBarItem.tsx","../../src/components/MenuBar/MenuBarLabel.tsx","../../src/components/MenuBar/MenuBarRadioItem.tsx","../../src/components/MenuBar/MenuBarRoot.tsx","../../src/components/MenuBar/MenuBarSeparator.tsx","../../src/components/MenuBar/MenuBarShortcut.tsx","../../src/components/MenuBar/MenuBarSubContent.tsx","../../src/components/MenuBar/MenuBarSubTrigger.tsx","../../src/components/MenuBar/MenuBarTrigger.tsx","../../src/components/NotificationHub/NotificationHub.tsx","../../src/components/NotificationHub/NotificationIcon.tsx","../../src/components/Pagination/PaginationContent.tsx","../../src/components/Pagination/PaginationEllipsis.tsx","../../src/components/Pagination/PaginationItem.tsx","../../src/components/Pagination/PaginationLink.tsx","../../src/components/Pagination/PaginationNext.tsx","../../src/components/Pagination/PaginationPrevious.tsx","../../src/components/Pagination/PaginationRoot.tsx","../../src/components/Pagination/Pagination.tsx","../../src/components/Progress/Progress.tsx","../../src/components/Resizable/Resizable.tsx","../../src/components/Resizable/ResizableHandle.tsx","../../src/components/Resizable/ResizablePanelGroup.tsx","../../src/components/SearchBar/SearchBar.tsx","../../src/components/Separator/Separator.tsx","../../src/components/Sheet/Sheet.tsx","../../src/components/Sheet/SheetContent.tsx","../../src/components/Sheet/SheetDescription.tsx","../../src/components/Sheet/SheetFooter.tsx","../../src/components/Sheet/SheetHeader.tsx","../../src/components/Sheet/SheetOverlay.tsx","../../src/components/Sheet/SheetTitle.tsx","../../src/components/Spinner/Spinner.tsx","../../src/components/SpinnerIcon/SpinnerIcon.tsx","../../src/components/Switch/Switch.tsx","../../src/components/Table/TableBody.tsx","../../src/components/Table/TableCaption.tsx","../../src/components/Table/TableCell.tsx","../../src/components/Table/TableFooter.tsx","../../src/components/Table/TableHead.tsx","../../src/components/Table/TableHeader.tsx","../../src/components/Table/TableRoot.tsx","../../src/components/Table/TableRow.tsx","../../src/components/Table/Table.tsx","../../src/components/Tabs/Tabs.tsx","../../src/components/Tabs/TabsContent.tsx","../../src/components/Tabs/TabsList.tsx","../../src/components/Tabs/TabsTrigger.tsx","../../src/components/ThemeToggle/ThemeToggle.tsx","../../src/components/Tooltip/TooltipContent.tsx","../../src/components/Tooltip/TooltipRoot.tsx","../../src/components/Tooltip/TooltipTrigger.tsx","../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(function AccordionContent({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n ref={ref}\n {...props}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n});\n","import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(function AccordionItem({ className, ...props }, ref) {\n return <AccordionPrimitive.Item className={cn('border-b', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nexport const AccordionRoot = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>\n>(function AccordionRoot(props, ref) {\n return <AccordionPrimitive.Root data-testid=\"accordion\" ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(function AccordionTrigger({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n 'flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n});\n","import { AccordionContent } from './AccordionContent';\nimport { AccordionItem } from './AccordionItem';\nimport { AccordionRoot } from './AccordionRoot';\nimport { AccordionTrigger } from './AccordionTrigger';\n\nexport const Accordion = Object.assign(AccordionRoot, {\n Content: AccordionContent,\n Item: AccordionItem,\n Trigger: AccordionTrigger\n});\n","import { Root } from '@radix-ui/react-alert-dialog';\nimport { Trigger } from '@radix-ui/react-alert-dialog';\n\nimport { AlertDialogAction } from './AlertDialogAction';\nimport { AlertDialogCancel } from './AlertDialogCancel';\nimport { AlertDialogContent } from './AlertDialogContent';\nimport { AlertDialogDescription } from './AlertDialogDescription';\nimport { AlertDialogFooter } from './AlertDialogFooter';\nimport { AlertDialogHeader } from './AlertDialogHeader';\nimport { AlertDialogOverlay } from './AlertDialogOverlay';\nimport { AlertDialogTitle } from './AlertDialogTitle';\n\nexport const AlertDialog = Object.assign(Root, {\n Action: AlertDialogAction,\n Cancel: AlertDialogCancel,\n Content: AlertDialogContent,\n Description: AlertDialogDescription,\n Footer: AlertDialogFooter,\n Header: AlertDialogHeader,\n Overlay: AlertDialogOverlay,\n Title: AlertDialogTitle,\n Trigger\n});\n","import React from 'react';\n\nimport { Action } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nimport { buttonVariants } from '../Button';\n\nexport const AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof Action>,\n React.ComponentPropsWithoutRef<typeof Action>\n>(function AlertDialogAction({ className, ...props }, ref) {\n return <Action className={cn(buttonVariants(), className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { Slot, Slottable } from '@radix-ui/react-slot';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nexport const BUTTON_ICON_SIZE = {\n lg: 18,\n md: 16,\n sm: 14\n};\n\nexport const buttonVariants = cva(\n 'flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n defaultVariants: {\n size: 'md',\n variant: 'primary'\n },\n variants: {\n size: {\n icon: 'p-1.5',\n lg: 'h-10 rounded-md px-8',\n md: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs'\n },\n variant: {\n danger: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n outline: 'border border-input bg-inherit shadow-sm',\n primary: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-sm hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type ButtonProps = Simplify<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n /** @deprecated - use children */\n label?: string;\n }\n>;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { asChild, children, className, label, size = 'md', variant = 'primary', ...props },\n ref\n) {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp className={cn(buttonVariants({ className, size, variant }))} ref={ref} {...props}>\n {label}\n <Slottable>{children}</Slottable>\n </Comp>\n );\n});\n","import React from 'react';\n\nimport { Cancel } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nimport { buttonVariants } from '../Button';\n\nexport const AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof Cancel>,\n React.ComponentPropsWithoutRef<typeof Cancel>\n>(function AlertDialogCancel({ className, ...props }, ref) {\n return (\n <Cancel className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)} ref={ref} {...props} />\n );\n});\n","import React from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nimport { AlertDialogOverlay } from './AlertDialogOverlay';\n\nexport const AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function AlertDialogContent({ className, ...props }, ref) {\n return (\n <Portal>\n <AlertDialogOverlay />\n <Content\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n />\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Overlay } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof Overlay>,\n React.ComponentPropsWithoutRef<typeof Overlay>\n>(function AlertDialogOverlay({ className, ...props }, ref) {\n return (\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n );\n});\n","import React from 'react';\n\nimport { Description } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof Description>,\n React.ComponentPropsWithoutRef<typeof Description>\n>(function AlertDialogDescription({ className, ...props }, ref) {\n return <Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n});\n","import { cn } from '@/utils';\n\nexport const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\n","import { cn } from '@/utils';\n\nexport const AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Title } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof Title>,\n React.ComponentPropsWithoutRef<typeof Title>\n>(function AlertDialogTitle({ className, ...props }, ref) {\n return <Title className={cn('text-lg font-semibold', className)} ref={ref} {...props} />;\n});\n","import React, { useMemo } from 'react';\n\nimport { ChevronUpIcon } from 'lucide-react';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type ArrowToggleProps = Simplify<\n React.HTMLAttributes<HTMLButtonElement> & {\n /** Whether or not the arrow is currently toggled */\n isToggled?: boolean;\n\n /** The starting position of the arrow (i.e., which direction does it point to) */\n position: 'down' | 'left' | 'right' | 'up';\n\n /** The clockwise rotation of the arrow when toggled (e.g., if the position is 'right' and rotation is 90, the arrow will point down) */\n rotation?: number;\n\n size?: ButtonProps['size'];\n\n /** The variant of button to use */\n variant?: Extract<ButtonProps['variant'], 'ghost' | 'outline'>;\n }\n>;\n\nexport const ArrowToggle = React.forwardRef<HTMLButtonElement, ArrowToggleProps>(function ArrowToggle(\n { children, className, isToggled, position, rotation = 0, size = 'icon', variant = 'ghost', ...props },\n ref\n) {\n const computedRotation = useMemo(() => {\n const toggleRotation = isToggled ? rotation : 0;\n switch (position) {\n case 'up':\n return 0 + toggleRotation;\n case 'right':\n return 90 + toggleRotation;\n case 'down':\n return 180 + toggleRotation;\n case 'left':\n return 270 + toggleRotation;\n }\n }, [position, rotation, isToggled]);\n\n return (\n <Button\n className={cn(size === 'icon' && 'h-6 w-6', className)}\n data-testid=\"arrow-toggle\"\n ref={ref}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n <ChevronUpIcon\n className=\"transform-gpu transition-transform\"\n data-testid=\"arrow-up-icon\"\n style={{ transform: `rotate(${computedRotation}deg)` }}\n />\n {children}\n </Button>\n );\n});\n","import React from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(function AvatarFallback({ className, ...props }, ref) {\n return (\n <AvatarPrimitive.Fallback\n className={cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(function AvatarImage({ className, ...props }, ref) {\n return <AvatarPrimitive.Image className={cn('aspect-square h-full w-full', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarRoot = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(function AvatarRoot({ className, ...props }, ref) {\n return (\n <AvatarPrimitive.Root\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n data-testid=\"avatar\"\n ref={ref}\n {...props}\n />\n );\n});\n","import { AvatarFallback } from './AvatarFallback';\nimport { AvatarImage } from './AvatarImage';\nimport { AvatarRoot } from './AvatarRoot';\n\nexport const Avatar = Object.assign(AvatarRoot, {\n Fallback: AvatarFallback,\n Image: AvatarImage\n});\n","import React from 'react';\n\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-sm border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n defaultVariants: {\n variant: 'default'\n },\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof badgeVariants>;\n\nconst Badge = ({ className, variant, ...props }: BadgeProps) => {\n return <div className={cn(badgeVariants({ variant }), className)} data-testid=\"badge\" {...props} />;\n};\n\nexport { Badge, badgeVariants };\n","import { MoreHorizontalIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span\n aria-hidden=\"true\"\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n role=\"presentation\"\n {...props}\n >\n <MoreHorizontalIcon className=\"h-4 w-4\" />\n </span>\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n function BreadcrumbItem({ className, ...props }, ref) {\n return <li className={cn('inline-flex items-center gap-1.5', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & {\n asChild?: boolean;\n }\n>(function BreadcrumbLink({ asChild, className, ...props }, ref) {\n const Comp = asChild ? Slot : 'a';\n return <Comp className={cn('transition-colors hover:text-foreground', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n function BreadcrumbList({ className, ...props }, ref) {\n return (\n <ol\n className={cn(\n 'flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n function BreadcrumbPage({ className, ...props }, ref) {\n return (\n <span\n aria-current=\"page\"\n aria-disabled=\"true\"\n className={cn('font-normal text-foreground', className)}\n ref={ref}\n role=\"link\"\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nexport const BreadcrumbRoot = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'> & {\n separator?: React.ReactNode;\n }\n>(function BreadcrumbRoot({ ...props }, ref) {\n return <nav aria-label=\"breadcrumb\" ref={ref} {...props} />;\n});\n","import { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => (\n <li aria-hidden=\"true\" className={cn('[&>svg]:size-3.5', className)} role=\"presentation\" {...props}>\n {children ?? <ChevronRightIcon />}\n </li>\n);\n","import { BreadcrumbEllipsis } from './BreadcrumbEllipsis';\nimport { BreadcrumbItem } from './BreadcrumbItem';\nimport { BreadcrumbLink } from './BreadcrumbLink';\nimport { BreadcrumbList } from './BreadcrumbList';\nimport { BreadcrumbPage } from './BreadcrumbPage';\nimport { BreadcrumbRoot } from './BreadcrumbRoot';\nimport { BreadcrumbSeparator } from './BreadcrumbSeparator';\n\nexport const Breadcrumb = Object.assign(BreadcrumbRoot, {\n Ellipsis: BreadcrumbEllipsis,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n List: BreadcrumbList,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nconst CardRoot = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardRoot(\n { className, ...props },\n ref\n) {\n return (\n <div\n className={cn('rounded-xl border bg-card text-card-foreground shadow', className)}\n data-testid=\"card\"\n ref={ref}\n {...props}\n />\n );\n});\n\nexport const Card = Object.assign(CardRoot, {\n Content: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('p-6 pt-0', className)} {...props} />\n ),\n Description: ({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n Footer: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return <div className={cn('flex items-center p-6 pt-0', className)} {...props} />;\n },\n Header: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n ),\n Title: ({ children, className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) => (\n <h3 className={cn('font-semibold leading-none tracking-tight', className)} {...props}>\n {children}\n </h3>\n )\n});\n","import React from 'react';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(function Checkbox({ className, ...props }, ref) {\n return (\n <CheckboxPrimitive.Root\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n className\n )}\n data-testid=\"checkbox\"\n ref={ref}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-current')}>\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\n","import { Content, Root, Trigger } from '@radix-ui/react-collapsible';\n\nexport const Collapsible = Object.assign(Root, {\n Content,\n Trigger\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nimport { CommandEmpty } from './CommandEmpty';\nimport { CommandGroup } from './CommandGroup';\nimport { CommandInput } from './CommandInput';\nimport { CommandItem } from './CommandItem';\nimport { CommandList } from './CommandList';\nimport { CommandSeparator } from './CommandSeparator';\nimport { CommandShortcut } from './CommandShortcut';\n\nconst CommandRoot = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(function Command({ className, ...props }, ref) {\n return (\n <CommandPrimitive\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n\nexport const Command = Object.assign(CommandRoot, {\n Empty: CommandEmpty,\n Group: CommandGroup,\n Input: CommandInput,\n Item: CommandItem,\n List: CommandList,\n Separator: CommandSeparator,\n Shortcut: CommandShortcut\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nexport const CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(function CommandEmpty(props, ref) {\n return <CommandPrimitive.Empty className=\"py-6 text-center text-sm\" ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(function CommandGroup({ className, ...props }, ref) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(function CommandInput({ className, ...props }, ref) {\n return (\n // eslint-disable-next-line react/no-unknown-property\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <SearchIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(function CommandItem({ className, ...props }, ref) {\n return (\n <CommandPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(function CommandList({ className, ...props }, ref) {\n return (\n <CommandPrimitive.List\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(function CommandSeparator({ className, ...props }, ref) {\n return <CommandPrimitive.Separator className={cn('-mx-1 h-px bg-border', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\n","import { Group, Portal, RadioGroup, Root, Sub, Trigger } from '@radix-ui/react-context-menu';\n\nimport { ContextMenuCheckboxItem } from './ContextMenuCheckboxItem';\nimport { ContextMenuContent } from './ContextMenuContent';\nimport { ContextMenuItem } from './ContextMenuItem';\nimport { ContextMenuLabel } from './ContextMenuLabel';\nimport { ContextMenuRadioItem } from './ContextMenuRadioItem';\nimport { ContextMenuSeparator } from './ContextMenuSeparator';\nimport { ContextMenuShortcut } from './ContextMenuShortcut';\nimport { ContextMenuSubContent } from './ContextMenuSubContent';\nimport { ContextMenuSubTrigger } from './ContextMenuSubTrigger';\n\nexport const ContextMenu = Object.assign(Root, {\n CheckboxItem: ContextMenuCheckboxItem,\n Content: ContextMenuContent,\n Group,\n Item: ContextMenuItem,\n Label: ContextMenuLabel,\n Portal,\n RadioGroup,\n RadioItem: ContextMenuRadioItem,\n Separator: ContextMenuSeparator,\n Shortcut: ContextMenuShortcut,\n Sub,\n SubContent: ContextMenuSubContent,\n SubTrigger: ContextMenuSubTrigger,\n Trigger\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(function ContextMenuCheckboxItem({ checked, children, className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n checked={checked}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(function ContextMenuContent({ className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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',\n className\n )}\n ref={ref}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(function ContextMenuItem({ className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(function ContextMenuLabel({ className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Label\n className={cn('px-2 py-1.5 text-sm font-semibold text-foreground', inset && 'pl-8', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(function ContextMenuRadioItem({ children, className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(function ContextMenuSeparator({ className, ...props }, ref) {\n return <ContextMenuPrimitive.Separator className={cn('-mx-1 my-1 h-px bg-border', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(function ContextMenuSubContent({ className, ...props }, ref) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(function ContextMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n});\n","import React, { useReducer, useState } from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { ArrowToggle } from '../ArrowToggle';\nimport { Card } from '../Card';\nimport { CALENDAR_ANIMATION_DURATION, Calendar } from './Calendar';\nimport { YearSelector } from './YearSelector';\n\nconst MONTHS = [\n 'january',\n 'february',\n 'march',\n 'april',\n 'may',\n 'june',\n 'july',\n 'august',\n 'september',\n 'october',\n 'november',\n 'december'\n] as const;\n\ntype IncrementAction = {\n type: 'increment';\n};\n\ntype DecrementAction = {\n type: 'decrement';\n};\n\ntype SetYearAction = {\n type: 'set-year';\n value: number;\n};\n\ntype ReducerAction = DecrementAction | IncrementAction | SetYearAction;\n\nconst reducer = (previousDate: Date, action: ReducerAction) => {\n const newDate = new Date(previousDate.valueOf());\n switch (action.type) {\n case 'increment':\n newDate.setMonth(newDate.getMonth() + 1);\n break;\n case 'decrement':\n newDate.setMonth(newDate.getMonth() - 1);\n break;\n case 'set-year':\n newDate.setFullYear(action.value);\n }\n return newDate;\n};\n\nexport type DatePickerProps = {\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n onSelection: (value: Date) => void;\n};\n\nexport const DatePicker = React.forwardRef<React.ElementRef<typeof Card>, DatePickerProps>(function DatePicker(\n { onSelection, ...props },\n ref\n) {\n const [date, dispatch] = useReducer(reducer, new Date());\n const [showYearSelector, setShowYearSelector] = useState(false);\n const { t } = useTranslation('libui');\n\n // this is to prevent changing month before prev calendar is unmounted\n // the duration is doubled because presumably it is to mount old and mount new\n const [canSetMonth, setCanSetMonth] = useState(true);\n\n const monthName = t(`months.${MONTHS[date.getMonth()]}`);\n\n const handleYearSelection = (date: Date) => {\n dispatch({ type: 'set-year', value: date.getFullYear() });\n setShowYearSelector(false);\n };\n\n return (\n <Card className=\"w-fit p-3\" data-testid=\"datepicker\" ref={ref} {...props}>\n <div className=\"mb-3 flex items-center justify-between px-1\">\n <div className=\"flex items-center\">\n <span className=\"mx-1 text-sm font-medium tracking-tight\">{`${monthName} ${date.getFullYear()}`}</span>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n isToggled={showYearSelector}\n position=\"up\"\n rotation={180}\n tabIndex={-1}\n onClick={() => {\n setShowYearSelector(!showYearSelector);\n }}\n />\n </div>\n <div className={cn('flex', { hidden: showYearSelector })}>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"left\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'decrement' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"right\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'increment' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n </div>\n </div>\n <div>\n <AnimatePresence initial={false} mode=\"wait\">\n {showYearSelector ? (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 10 }}\n initial={{ opacity: 0, y: 10 }}\n key={0}\n transition={{ duration: 0.2 }}\n >\n <YearSelector selected={date} onSelection={handleYearSelection} />\n </motion.div>\n ) : (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n initial={{ opacity: 0, y: -10 }}\n key={1}\n transition={{ duration: 0.2 }}\n >\n <Calendar month={date.getMonth()} year={date.getFullYear()} onSelection={onSelection} />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </Card>\n );\n});\n","import React from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { range } from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\n\nexport const CALENDAR_ANIMATION_DURATION = 0.2; // seconds\n\nexport type CalendarProps = {\n month: number;\n onSelection: (date: Date) => void;\n year: number;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(function Calendar(props, ref) {\n const { t } = useTranslation('libui');\n const firstDay = new Date(props.year, props.month).getDay();\n const lastDay = new Date(props.year, props.month + 1, 0).getDate();\n const days = range(1, lastDay + 1);\n\n const daysOfWeek = [\n t('days.sunday'),\n t('days.monday'),\n t('days.tuesday'),\n t('days.wednesday'),\n t('days.thursday'),\n t('days.friday'),\n t('days.saturday')\n ];\n\n return (\n <AnimatePresence initial={false} mode=\"wait\">\n <motion.div\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -20 }}\n initial={{ opacity: 0, x: 20 }}\n key={`${props.year}-${props.month}`}\n transition={{ duration: CALENDAR_ANIMATION_DURATION }}\n >\n <div className=\"grid h-56 w-56 grid-cols-7 text-sm\" ref={ref}>\n {daysOfWeek.map((label) => (\n <div className=\"flex h-8 w-8 items-center justify-center text-muted-foreground\" key={label}>\n {label.charAt(0).toUpperCase()}\n </div>\n ))}\n <div style={{ gridColumn: `span ${firstDay} / span ${firstDay}` }} />\n {days.map((day) => (\n <button\n className=\"dark:hover:bg-extra-muted flex h-8 w-8 items-center justify-center rounded-md hover:bg-slate-200 dark:hover:bg-slate-700\"\n key={day}\n tabIndex={-1}\n type=\"button\"\n onClick={() => {\n props.onSelection(new Date(props.year, props.month, day));\n }}\n >\n {day}\n </button>\n ))}\n </div>\n </motion.div>\n </AnimatePresence>\n );\n});\n","import { useEffect, useRef } from 'react';\n\nimport { range } from 'lodash-es';\n\nimport { cn } from '@/utils';\n\nimport { ScrollArea } from '../ScrollArea';\n\nexport type YearSelectorProps = {\n onSelection: (date: Date) => void;\n selected: Date;\n};\n\nexport const YearSelector = (props: YearSelectorProps) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n const currentYear = new Date().getFullYear();\n const years = Array.from(range(currentYear - 100, currentYear + 8)).reverse();\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({ block: 'center' });\n }\n }, []);\n\n return (\n <ScrollArea className=\"h-56 w-56\">\n <div className=\"grid grid-cols-3 gap-x-2 gap-y-1 text-sm text-muted-foreground\">\n {years.map((year) => (\n <div className=\"flex h-7 items-center justify-center\" key={year}>\n <button\n className={cn(\n 'h-full w-full rounded-md hover:bg-slate-200 dark:hover:bg-slate-700',\n year === props.selected.getFullYear() &&\n 'bg-primary text-primary-foreground hover:bg-primary dark:hover:bg-primary'\n )}\n ref={year === props.selected.getFullYear() ? selectedRef : null}\n tabIndex={-1}\n type=\"button\"\n onClick={() => {\n props.onSelection(new Date(year, 0));\n }}\n >\n {year}\n </button>\n </div>\n ))}\n </div>\n </ScrollArea>\n );\n};\n","import React from 'react';\n\nimport { Corner, Root, Viewport } from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/utils';\n\nimport { ScrollBar } from './ScrollBar';\n\nexport const ScrollArea = React.forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function ScrollArea({ children, className, ...props }, ref) {\n return (\n <Root className={cn('relative overflow-hidden', className)} data-testid=\"scroll-area\" ref={ref} {...props}>\n <Viewport className=\"h-full w-full rounded-[inherit]\">{children}</Viewport>\n <ScrollBar />\n <Corner />\n </Root>\n );\n }\n);\n","import React from 'react';\n\nimport { ScrollAreaScrollbar, ScrollAreaThumb } from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/utils';\n\nexport const ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaScrollbar>\n>(function ScrollBar({ className, orientation = 'vertical', ...props }, ref) {\n return (\n <ScrollAreaScrollbar\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n >\n <ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaScrollbar>\n );\n});\n","import { Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { DialogContent } from './DialogContent';\nimport { DialogDescription } from './DialogDescription';\nimport { DialogFooter } from './DialogFooter';\nimport { DialogHeader } from './DialogHeader';\nimport { DialogTitle } from './DialogTitle';\n\nexport const Dialog = Object.assign(Root, {\n Content: DialogContent,\n Description: DialogDescription,\n Footer: DialogFooter,\n Header: DialogHeader,\n Title: DialogTitle,\n Trigger\n});\n","import React from 'react';\n\nimport { Close, Content, Portal } from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nimport { DialogOverlay } from './DialogOverlay';\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function DialogContent({ children, className, ...props }, ref) {\n return (\n <Portal>\n <DialogOverlay />\n <Content\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <XIcon className=\"h-4 w-4\" />\n </Close>\n </Content>\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogOverlay = React.forwardRef<\n React.ElementRef<typeof Overlay>,\n React.ComponentPropsWithoutRef<typeof Overlay>\n>(function DialogOverlay({ className, ...props }, ref) {\n return (\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogDescription = React.forwardRef<\n React.ElementRef<typeof Description>,\n React.ComponentPropsWithoutRef<typeof Description>\n>(function DialogDescription({ className, ...props }, ref) {\n return <Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\n","import { cn } from '@/utils';\n\nexport const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogTitle = React.forwardRef<\n React.ElementRef<typeof Title>,\n React.ComponentPropsWithoutRef<typeof Title>\n>(function DialogTitle({ className, ...props }, ref) {\n return <Title className={cn('text-lg font-semibold leading-none tracking-tight', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { DrawerContent } from './DrawerContent';\nimport { DrawerDescription } from './DrawerDescription';\nimport { DrawerFooter } from './DrawerFooter';\nimport { DrawerHeader } from './DrawerHeader';\nimport { DrawerTitle } from './DrawerTitle';\n\nconst DrawerRoot = ({ shouldScaleBackground = true, ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />\n);\n\nexport const Drawer = Object.assign(DrawerRoot, {\n Close: DrawerPrimitive.Close,\n Content: DrawerContent,\n Description: DrawerDescription,\n Footer: DrawerFooter,\n Header: DrawerHeader,\n Title: DrawerTitle,\n Trigger: DrawerPrimitive.Trigger\n});\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(function DrawerContent({ children, className, ...props }, ref) {\n return (\n <DrawerPrimitive.Portal>\n <DrawerPrimitive.Overlay className={cn('fixed inset-0 z-50 bg-black/80', className)} ref={ref} {...props} />\n <DrawerPrimitive.Content\n className={cn(\n 'fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background',\n className\n )}\n ref={ref}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(function DrawerDescription({ className, ...props }, ref) {\n return (\n <DrawerPrimitive.Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />\n );\n});\n","import { cn } from '@/utils';\n\nexport const DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('mt-auto flex flex-col gap-2 p-4', className)} {...props} />\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('grid gap-1.5 p-4 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(function DrawerTitle({ className, ...props }, ref) {\n return (\n <DrawerPrimitive.Title\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownButton = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n function DropdownButton({ children, className, ...props }, ref) {\n return (\n <button\n className={cn(\n 'flex h-9 w-full items-center whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n children ? 'justify-between' : 'justify-end',\n className\n )}\n ref={ref}\n type=\"button\"\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 opacity-50\" />\n </button>\n );\n }\n);\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem';\nimport { DropdownMenuContent } from './DropdownMenuContent';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuLabel } from './DropdownMenuLabel';\nimport { DropdownMenuRadioItem } from './DropdownMenuRadioItem';\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator';\nimport { DropdownMenuShortcut } from './DropdownMenuShortcut';\nimport { DropdownMenuSubContent } from './DropdownMenuSubContent';\nimport { DropdownMenuSubTrigger } from './DropdownMenuSubTrigger';\n\nexport const DropdownMenu = Object.assign(DropdownMenuPrimitive.Root, {\n CheckboxItem: DropdownMenuCheckboxItem,\n Content: DropdownMenuContent,\n Group: DropdownMenuPrimitive.Group,\n Item: DropdownMenuItem,\n Label: DropdownMenuLabel,\n Portal: DropdownMenuPrimitive.Portal,\n RadioGroup: DropdownMenuPrimitive.RadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n Sub: DropdownMenuPrimitive.Sub,\n SubContent: DropdownMenuSubContent,\n SubTrigger: DropdownMenuSubTrigger,\n Trigger: DropdownMenuPrimitive.Trigger\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(function DropdownMenuCheckboxItem({ checked, children, className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n checked={checked}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport type DropdownMenuContentProps = React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> & {\n widthFull?: boolean;\n};\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n DropdownMenuContentProps\n>(function DropdownMenuContent({ className, sideOffset = 4, widthFull = false, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md',\n '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',\n widthFull && 'w-[var(--radix-dropdown-menu-trigger-width)]',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(function DropdownMenuItem({ className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(function DropdownMenuLabel({ className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Label\n className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(function DropdownMenuRadioItem({ children, className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(function DropdownMenuSeparator({ className, ...props }, ref) {\n return <DropdownMenuPrimitive.Separator className={cn('-mx-1 my-1 h-px bg-muted', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...props} />;\n};\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(function DropdownMenuSubContent({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubContent\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(function DropdownMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\n","import { ErrorBoundary as ReactErrorBoundary } from 'react-error-boundary';\n\nimport { ErrorFallback } from '../ErrorFallback';\n\nexport const ErrorBoundary: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <ReactErrorBoundary FallbackComponent={ErrorFallback}>{children}</ReactErrorBoundary>;\n};\n","import { useEffect } from 'react';\n\nexport type ErrorFallbackProps = {\n error: {\n message: string;\n };\n};\n\nexport const ErrorFallback = ({ error }: ErrorFallbackProps) => {\n useEffect(() => {\n console.error(error);\n }, [error]);\n\n return (\n <div className=\"flex min-h-screen flex-col items-center justify-center gap-1 p-3 text-center\">\n <h1 className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">Unexpected Error</h1>\n <h3 className=\"text-3xl font-extrabold tracking-tight sm:text-4xl md:text-5xl\">Something Went Wrong</h3>\n <p className=\"mt-2 max-w-prose text-sm text-muted-foreground sm:text-base\">\n We apologize for the inconvenience. Please contact us for further assistance.\n </p>\n <div className=\"mt-6\">\n <button\n className=\"text-sky-800 underline-offset-4 hover:text-sky-700 hover:underline dark:text-sky-200 dark:hover:text-sky-300\"\n type=\"button\"\n onClick={() => {\n window.location.assign(window.location.origin);\n }}\n >\n Reload Page<span aria-hidden=\"true\"> &rarr;</span>\n </button>\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\n\nimport type {\n FormContent,\n FormDataType,\n FormFields,\n PartialFormDataType,\n PartialNullableFormDataType\n} from '@douglasneuroinformatics/libui-form-types';\nimport { set } from 'lodash-es';\nimport { useTranslation } from 'react-i18next';\nimport { twMerge } from 'tailwind-merge';\nimport { z } from 'zod';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { ErrorMessage } from './ErrorMessage';\nimport { FieldsComponent } from './FieldsComponent';\nimport { getInitialValues } from './utils';\n\nimport type { FormErrors } from './types';\n\ntype FormProps<TSchema extends z.ZodType<FormDataType>, TData extends z.infer<TSchema> = z.infer<TSchema>> = {\n [key: `data-${string}`]: unknown;\n className?: string;\n content: FormContent<TData>;\n id?: string;\n initialValues?: PartialNullableFormDataType<TData>;\n onError?: (error: z.ZodError<TData>) => void;\n onSubmit: (data: TData) => void;\n resetBtn?: boolean;\n submitBtnLabel?: string;\n validationSchema: z.ZodType<TData>;\n};\n\nconst Form = <TSchema extends z.ZodType<FormDataType>, TData extends z.infer<TSchema> = z.infer<TSchema>>({\n className,\n content,\n id,\n initialValues,\n onError,\n onSubmit,\n resetBtn,\n submitBtnLabel,\n validationSchema,\n ...props\n}: FormProps<TSchema, TData>) => {\n const { t } = useTranslation('libui');\n const [rootError, setRootError] = useState<null | string>(null);\n const [errors, setErrors] = useState<FormErrors<TData>>({});\n const [values, setValues] = useState<PartialFormDataType<TData>>(\n initialValues ? getInitialValues(initialValues) : {}\n );\n\n const handleError = (error: z.ZodError<TData>) => {\n const fieldErrors: FormErrors<TData> = {};\n const rootErrors: string[] = [];\n for (const issue of error.issues) {\n if (issue.path.length > 0) {\n set(fieldErrors, issue.path, issue.message);\n } else {\n rootErrors.push(issue.message);\n }\n }\n setRootError(rootErrors.join('\\n'));\n setErrors(fieldErrors);\n if (onError) {\n onError(error);\n }\n };\n\n const reset = () => {\n setRootError(null);\n setErrors({});\n setValues({});\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n const result = validationSchema.safeParse(values);\n if (result.success) {\n reset();\n onSubmit(result.data);\n } else {\n console.error(result.error.issues);\n handleError(result.error);\n }\n };\n\n const isGrouped = Array.isArray(content);\n\n return (\n <form\n autoComplete=\"off\"\n className={twMerge('w-full', isGrouped ? 'space-y-8 divide-y' : 'space-y-6', className)}\n id={id}\n onSubmit={handleSubmit}\n {...props}\n >\n {isGrouped ? (\n content.map((fieldGroup, i) => {\n return (\n <div className=\"space-y-6 [&:not(:first-child)]:pt-8\" key={i}>\n <div className=\"space-y-1\">\n <Heading variant=\"h4\">{fieldGroup.title}</Heading>\n {fieldGroup.description && (\n <p className=\"text-sm italic leading-tight text-muted-foreground\">{fieldGroup.description}</p>\n )}\n </div>\n <FieldsComponent\n errors={errors}\n fields={fieldGroup.fields as FormFields<TData>}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n </div>\n );\n })\n ) : (\n <FieldsComponent errors={errors} fields={content} setErrors={setErrors} setValues={setValues} values={values} />\n )}\n <div className=\"flex w-full gap-3\">\n {/** Note - aria-label is used for testing in downstream packages */}\n <Button\n aria-label=\"Submit Button\"\n className=\"block w-full\"\n data-cy=\"submit-form\"\n type=\"submit\"\n variant=\"primary\"\n >\n {submitBtnLabel ?? t('form.submit')}\n </Button>\n {resetBtn && (\n <Button aria-label=\"Reset Button\" className=\"block w-full\" type=\"button\" variant=\"secondary\" onClick={reset}>\n {t('form.reset')}\n </Button>\n )}\n </div>\n {rootError && <ErrorMessage error={rootError} />}\n </form>\n );\n};\n\nexport { Form, type FormProps };\n","import { cn } from '@/utils';\n\nexport type HeadingProps = {\n children: string;\n className?: string;\n variant: 'h1' | 'h2' | 'h3' | 'h4' | 'h5';\n};\n\nexport const Heading = ({ children, className, variant }: HeadingProps) => {\n switch (variant) {\n case 'h1':\n return <h1 className={cn('text-3xl font-bold tracking-tight', className)}>{children}</h1>;\n case 'h2':\n return <h2 className={cn('text-2xl font-semibold tracking-tight', className)}>{children}</h2>;\n case 'h3':\n return <h3 className={cn('text-xl font-semibold tracking-tight', className)}>{children}</h3>;\n case 'h4':\n return <h4 className={cn('text-lg font-semibold tracking-tight', className)}>{children}</h4>;\n case 'h5':\n return <h4 className={cn('text-base font-semibold tracking-tight', className)}>{children}</h4>;\n default:\n throw new Error(`Unhandled heading variant: ${variant satisfies never}`);\n }\n};\n","import { CircleAlertIcon } from 'lucide-react';\n\nexport const ErrorMessage: React.FC<{ error?: null | string }> = ({ error }) =>\n error ? (\n <div className=\"flex w-full items-center text-sm font-medium text-destructive\">\n <CircleAlertIcon className=\"mr-1\" style={{ strokeWidth: '2px' }} />\n <span>{error}</span>\n </div>\n ) : null;\n","import { useEffect, useMemo, useState } from 'react';\n\nimport type { DynamicFormField, FormDataType, PartialFormDataType } from '@douglasneuroinformatics/libui-form-types';\nimport { pick } from 'lodash-es';\n\nimport { StaticField } from './StaticField';\n\nimport type { FormErrors } from './types';\n\nexport type DynamicFieldProps<TData extends FormDataType> = {\n errors: FormErrors<TData>;\n field: DynamicFormField<TData>;\n name: string;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors<TData>>>;\n setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<TData>>>;\n values: PartialFormDataType<TData>;\n};\n\nexport const DynamicField = <TData extends FormDataType>({\n field,\n name,\n values,\n ...props\n}: DynamicFieldProps<TData>) => {\n const [dependentValues, setDependentValues] = useState(pick(values, field.deps));\n\n const staticField = useMemo(() => {\n return field.render(values);\n }, [dependentValues, field.render]);\n\n useEffect(() => {\n for (const key of field.deps) {\n if (dependentValues[key] !== values[key]) {\n setDependentValues(pick(values, field.deps));\n break;\n }\n }\n }, [field.deps, values]);\n\n if (!staticField) {\n return null;\n }\n\n return <StaticField {...props} field={staticField} name={name} values={values} />;\n};\n","import { useCallback } from 'react';\n\nimport type {\n FormDataType,\n FormFieldValue,\n NumberRecordFieldValue,\n NumberRecordFormField,\n PartialFormDataType,\n RecordArrayFieldValue,\n RecordArrayFormField,\n ScalarFieldValue\n} from '@douglasneuroinformatics/libui-form-types';\nimport { match } from 'ts-pattern';\n\nimport { NumberRecordField } from './NumberRecordField';\nimport { RecordArrayField } from './RecordArrayField';\nimport { ScalarField, type ScalarFieldProps } from './ScalarField';\n\nimport type { FieldError, FormErrors } from './types';\n\nexport type StaticFieldProps<TData extends FormDataType> = {\n errors: FormErrors<TData>;\n field: NumberRecordFormField | RecordArrayFormField | ScalarFieldProps['field'];\n name: string;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors<TData>>>;\n setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<TData>>>;\n values: PartialFormDataType<TData>;\n};\n\nexport const StaticField = <TData extends FormDataType>({\n errors,\n field,\n name,\n setErrors,\n setValues,\n values\n}: StaticFieldProps<TData>) => {\n const setError = useCallback(\n <TValue extends FormFieldValue>(error: FieldError<TValue>) => {\n return setErrors((prevErrors) => ({ ...prevErrors, [name]: error }));\n },\n [setErrors]\n );\n\n const setValue = useCallback(\n <TValue extends FormFieldValue>(value: TValue) => {\n return setValues((prevValues) => ({ ...prevValues, [name]: value }));\n },\n [setValues]\n );\n\n return match(field)\n .with({ kind: 'record-array' }, (field) => (\n <RecordArrayField\n {...field}\n error={errors[name] as { [key: string]: string }[]}\n name={name}\n setError={setError}\n setValue={setValue}\n value={values[name] as RecordArrayFieldValue}\n />\n ))\n .with({ kind: 'number-record' }, (field) => (\n <NumberRecordField\n {...field}\n error={errors[name] as { [key: string]: string }}\n name={name}\n setError={setError}\n setValue={setValue}\n value={values[name] as NumberRecordFieldValue}\n />\n ))\n .otherwise((field) => (\n <ScalarField\n error={errors[name] as string}\n field={field}\n name={name}\n setError={setError}\n setValue={setValue}\n value={values[name] as ScalarFieldValue}\n />\n ));\n};\n","import { useEffect } from 'react';\n\nimport type {\n NumberRecordFieldValue,\n NumberRecordFormField,\n RequiredFieldValue\n} from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Heading } from '../Heading';\nimport { NumberField } from './NumberField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type NumberRecordFieldProps<T extends NumberRecordFieldValue = NumberRecordFieldValue> = Simplify<\n BaseFieldComponentProps<NumberRecordFieldValue> & NumberRecordFormField<RequiredFieldValue<T>>\n>;\n\nexport const NumberRecordField = <T extends NumberRecordFieldValue = NumberRecordFieldValue>({\n error: recordError,\n items,\n label,\n options,\n setError: setRecordError,\n setValue: setRecordValue,\n value: recordValue\n}: NumberRecordFieldProps<T>) => {\n useEffect(() => {\n setRecordValue({});\n }, [options]);\n\n if (!recordValue) {\n return null;\n }\n\n return (\n <div className=\"space-y-4\">\n <Heading variant=\"h5\">{label}</Heading>\n <div className=\"space-y-6\">\n {Object.keys(items).map((name) => {\n const item = items[name];\n return (\n <NumberField\n error={recordError?.[name]}\n key={name}\n kind=\"number\"\n name={name}\n options={options}\n setError={(error) => setRecordError({ ...recordError, [name]: error })}\n setValue={(value) => setRecordValue({ ...recordValue, [name]: value })}\n value={recordValue?.[name]}\n variant=\"radio\"\n {...item}\n />\n );\n })}\n </div>\n </div>\n );\n};\n","import { match } from 'ts-pattern';\n\nimport { NumberFieldInput, type NumberFieldInputProps } from './NumberFieldInput';\nimport { NumberFieldRadio, type NumberFieldRadioProps } from './NumberFieldRadio';\nimport { NumberFieldSlider, type NumberFieldSliderProps } from './NumberFieldSlider';\n\nexport type NumberFieldProps = NumberFieldInputProps | NumberFieldRadioProps | NumberFieldSliderProps;\n\nexport const NumberField = (props: NumberFieldProps) => {\n return match(props)\n .with({ variant: 'input' }, (props) => <NumberFieldInput {...props} />)\n .with({ variant: 'slider' }, (props) => <NumberFieldSlider {...props} />)\n .with({ variant: 'radio' }, (props) => <NumberFieldRadio {...props} />)\n .exhaustive();\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(function Input({ className, type, ...props }, ref) {\n return (\n <input\n autoComplete=\"off\"\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"input\"\n ref={ref}\n type={type}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nexport const labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n);\n\nexport const Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(function Label({ className, ...props }, ref) {\n return <LabelPrimitive.Root className={cn(labelVariants(), className)} ref={ref} {...props} />;\n});\n","import { CircleHelpIcon } from 'lucide-react';\n\nimport { Popover } from '@/components/Popover';\n\nexport const FieldGroupDescription: React.FC<{ description?: null | string }> = ({ description }) =>\n description ? (\n <Popover>\n <Popover.Trigger>\n <CircleHelpIcon className=\"text-muted-foreground\" />\n </Popover.Trigger>\n <Popover.Content className=\"text-sm text-muted-foreground\">\n <p>{description}</p>\n </Popover.Content>\n </Popover>\n ) : null;\n","import { Root as PopoverRoot, Trigger as PopoverTrigger } from '@radix-ui/react-popover';\n\nimport { PopoverContent } from './PopoverContent';\n\nexport const Popover = Object.assign(PopoverRoot, {\n Content: PopoverContent,\n Trigger: PopoverTrigger\n});\n","import React from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-popover';\n\nimport { cn } from '@/utils';\n\nexport type PopoverContentProps = {\n /** The preferred alignment against the anchor, which may change when collisions occur */\n align?: 'center' | 'end' | 'start';\n /** Change the default rendered element for the one passed as a child, merging their props and behavior */\n asChild?: boolean;\n /** Whether the content should be automatically focused when opened (default = true) */\n autofocus?: boolean;\n /** The content to display when the user opens the popover */\n children: React.ReactNode;\n /** Additional CSS classes to add to the component, potentially overriding default styling */\n className?: string;\n /** The distance in pixels from the viewport edges where collision detection should occur */\n collisionPadding?: number;\n /** The distance in pixels from the anchor */\n sideOffset?: number;\n};\n\nexport const PopoverContent = React.forwardRef<React.ElementRef<typeof Content>, PopoverContentProps>(\n function PopoverContent(\n { align = 'center', asChild, autofocus = true, className, collisionPadding = 0, sideOffset = 4, ...props },\n ref\n ) {\n return (\n <Portal>\n <Content\n align={align}\n asChild={asChild}\n className={cn(\n 'z-50 w-72 rounded-md border bg-popover px-3 py-1.5 text-popover-foreground shadow-md outline-none 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',\n className\n )}\n collisionPadding={collisionPadding}\n ref={ref}\n sideOffset={sideOffset}\n onOpenAutoFocus={autofocus === false ? (event) => event.preventDefault() : undefined}\n {...props}\n />\n </Portal>\n );\n }\n);\n","import React from 'react';\n\nexport const FieldGroupRoot: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"flex flex-col gap-2 @container\">{children}</div>\n);\n","export const FieldGroupRow: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"relative flex items-center gap-2\">{children}</div>\n);\n","import { ErrorMessage } from '../ErrorMessage';\nimport { FieldGroupDescription } from './FieldGroupDescription';\nimport { FieldGroupRoot } from './FieldGroupRoot';\nimport { FieldGroupRow } from './FieldGroupRow';\n\nexport const FieldGroup = Object.assign(FieldGroupRoot, {\n Description: FieldGroupDescription,\n Error: ErrorMessage,\n Row: FieldGroupRow\n});\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldInputProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'input' }>\n>;\n\nexport const NumberFieldInput = ({\n description,\n error,\n label,\n max,\n min,\n name,\n setValue,\n value\n}: NumberFieldInputProps) => {\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = parseFloat(event.target.value);\n if (Number.isNaN(newValue)) {\n setValue(undefined);\n } else if (newValue >= (min ?? -Infinity) && newValue <= (max ?? Infinity)) {\n setValue(newValue);\n }\n };\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input max={max} min={min} name={name} type=\"text\" value={value ?? ''} onChange={handleChange} />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\n\nimport { cn } from '@/utils';\n\nimport { RadioGroupItem } from './RadioGroupItem';\n\ntype RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;\n\nconst RadioGroupRoot = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(function RadioGroup({ className, ...props }, ref) {\n return (\n <RadioGroupPrimitive.Root className={cn('grid gap-2', className)} data-testid=\"radio-group\" {...props} ref={ref} />\n );\n});\n\nexport const RadioGroup = Object.assign(RadioGroupRoot, {\n Item: RadioGroupItem\n});\n\nexport type { RadioGroupProps };\n","import React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(function RadioGroupItem({ className, ...props }, ref) {\n return (\n <RadioGroupPrimitive.Item\n className={cn(\n 'flex aspect-square h-4 w-4 items-center justify-center rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <RadioGroupPrimitive.Indicator asChild>\n <CircleIcon\n className=\"fill-current text-current\"\n style={{ height: '0.625rem', strokeWidth: '2px', width: '0.625rem' }}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldRadioProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'radio' }>\n>;\n\nexport const NumberFieldRadio = ({\n description,\n error,\n label,\n name,\n options,\n setValue,\n value\n}: NumberFieldRadioProps) => {\n const optionsCount = Object.keys(options).length;\n\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <RadioGroup\n className={cn(\n 'flex',\n optionsCount > 5 ? 'flex-col' : 'flex-col @3xl:flex-row @3xl:items-center @3xl:justify-between'\n )}\n name={name}\n value={value?.toString() ?? ''}\n onValueChange={(value) => setValue(parseInt(value))}\n >\n {Object.keys(options)\n .map((val) => parseInt(val))\n .toSorted((a, b) => a - b)\n .map((key) => (\n <div className=\"flex items-center gap-2\" key={key}>\n <RadioGroup.Item id={`${name}-${key}`} value={key.toString()} />\n <Label className=\"font-normal\" htmlFor={`${name}-${key}`}>\n {options[key]}\n </Label>\n </div>\n ))}\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import React from 'react';\n\nimport { Range, Root, Thumb, Track } from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils';\n\nexport const Slider = React.forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function Slider({ className, ...props }, ref) {\n return (\n <Root\n className={cn('relative flex w-full touch-none select-none items-center py-1.5', className)}\n ref={ref}\n {...props}\n >\n <Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary opacity-15\">\n <Range className=\"absolute h-full bg-primary\" />\n </Track>\n <Thumb className=\"block h-4 w-4 rounded-full border border-slate-500 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </Root>\n );\n }\n);\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { Slider } from '@/components/Slider';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldSliderProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'slider' }>\n>;\n\nexport const NumberFieldSlider = ({\n description,\n error,\n label,\n max,\n min,\n name,\n setValue,\n value\n}: NumberFieldSliderProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Slider max={max} min={min} name={name} value={[value ?? 0]} onValueChange={([value]) => setValue(value)} />\n <span className=\"flex h-full w-8 items-center justify-center text-sm text-muted-foreground\">\n {value ?? 'NA'}\n </span>\n </FieldGroup.Row>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { memo, useEffect } from 'react';\n\nimport type { RecordArrayFieldValue, RecordArrayFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { MinusCircleIcon, PlusCircleIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport type { Simplify } from 'type-fest';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { Label } from '../Label';\nimport { ScalarField } from './ScalarField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type RecordArrayFieldProps = Simplify<BaseFieldComponentProps<RecordArrayFieldValue> & RecordArrayFormField>;\n\nexport const RecordArrayField = memo(function RecordArrayField({\n error: arrayError,\n fieldset,\n label,\n setError: setArrayError,\n setValue: setArrayValue,\n value: arrayValue\n}: RecordArrayFieldProps) {\n const { t } = useTranslation('libui');\n\n const createNewRecord = () => Object.fromEntries(Object.keys(fieldset).map((fieldName) => [fieldName, undefined]));\n\n useEffect(() => {\n setArrayValue([createNewRecord()]);\n }, [fieldset]);\n\n if (!arrayValue) {\n return null;\n }\n\n // Creates a new object with all values mapped to null and appends it to the previous arrayValue\n const appendField = () => {\n setArrayValue([...arrayValue, createNewRecord()]);\n };\n\n const removeField = () => {\n if (arrayValue.length > 1) {\n setArrayValue(arrayValue.slice(0, arrayValue.length - 1));\n }\n };\n\n return (\n <div className=\"space-y-4\">\n <Heading variant=\"h5\">{label}</Heading>\n <div className=\"space-y-6\">\n {arrayValue.map((fields, i) => (\n <div className=\"space-y-4\" key={i}>\n <Label className=\"font-semibold italic\">{label + ' ' + (i + 1)}</Label>\n {Object.keys(fields).map((name) => {\n const field = fieldset[name];\n const fieldProps = field?.kind === 'dynamic' ? field.render(fields) : field;\n if (!fieldProps) {\n return null;\n }\n return (\n <ScalarField\n error={arrayError?.[i]?.[name]}\n field={fieldProps}\n key={name}\n name={name}\n setError={(error) => {\n const newArrayError = arrayError ? [...arrayError] : [];\n if (!newArrayError[i]) {\n newArrayError[i] = {};\n }\n newArrayError[i][name] = error;\n setArrayError(newArrayError);\n }}\n setValue={(value) => {\n const newArrayValue = [...arrayValue];\n newArrayValue[i][name] = value;\n setArrayValue(newArrayValue);\n }}\n value={arrayValue?.[i]?.[name]}\n />\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"flex gap-3\">\n <Button type=\"button\" variant=\"outline\" onClick={appendField}>\n {t('form.append')}\n <PlusCircleIcon className=\"ml-2\" />\n </Button>\n <Button type=\"button\" variant=\"outline\" onClick={removeField}>\n {t('form.remove')}\n <MinusCircleIcon className=\"ml-2\" />\n </Button>\n </div>\n </div>\n );\n});\n","import { match } from 'ts-pattern';\n\nimport { BooleanFieldCheckbox, type BooleanFieldCheckboxProps } from './BooleanFieldCheckbox';\nimport { BooleanFieldRadio, type BooleanFieldRadioProps } from './BooleanFieldRadio';\n\nexport type BooleanFieldProps = BooleanFieldCheckboxProps | BooleanFieldRadioProps;\n\nexport const BooleanField = (props: BooleanFieldProps) => {\n return match(props)\n .with({ variant: 'radio' }, (props) => <BooleanFieldRadio {...props} />)\n .with({ variant: 'checkbox' }, (props) => <BooleanFieldCheckbox {...props} />)\n .exhaustive();\n};\n","import type { BooleanFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components';\nimport { Checkbox } from '@/components/Checkbox';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type BooleanFieldCheckboxProps = Simplify<\n BaseFieldComponentProps<boolean> & Omit<Extract<BooleanFormField, { variant: 'checkbox' }>, 'kind'>\n>;\n\nexport const BooleanFieldCheckbox = ({ error, label, name, setValue, value }: BooleanFieldCheckboxProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Checkbox\n checked={value}\n id={name}\n name={name}\n onCheckedChange={(value) => {\n if (typeof value === 'boolean') {\n setValue(value);\n }\n }}\n />\n <Label htmlFor={name}>{label}</Label>\n </FieldGroup.Row>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useCallback } from 'react';\n\nimport type { BooleanFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { useTranslation } from 'react-i18next';\nimport { match } from 'ts-pattern';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nconst stringifyBoolean = (value: boolean | undefined) =>\n match(value)\n .with(undefined, () => '')\n .with(true, () => 'true' as const)\n .with(false, () => 'false' as const)\n .exhaustive();\n\nexport type BooleanFieldRadioProps = Simplify<\n BaseFieldComponentProps<boolean> & Omit<Extract<BooleanFormField, { variant: 'radio' }>, 'kind'>\n>;\n\nexport const BooleanFieldRadio = ({ error, label, name, options, setValue, value }: BooleanFieldRadioProps) => {\n const { t } = useTranslation('libui');\n\n const handleValueChange = useCallback(\n (value: string) => {\n match(value)\n .with('', () => setValue(undefined))\n .with('true', () => setValue(true))\n .with('false', () => setValue(false))\n .otherwise((value) => console.error(`Unexpected value for boolean field '${name}': ${value}`));\n },\n [match, setValue]\n );\n\n return (\n <FieldGroup>\n <Label>{label}</Label>\n <RadioGroup name={name} value={stringifyBoolean(value)} onValueChange={handleValueChange}>\n <FieldGroup.Row>\n <RadioGroup.Item id={`${name}-true`} value=\"true\" />\n <Label className=\"font-normal\" htmlFor={`${name}-true`}>\n {options?.true ?? t('form.radioLabels.true')}\n </Label>\n </FieldGroup.Row>\n <FieldGroup.Row>\n <RadioGroup.Item id={`${name}-false`} value=\"false\" />\n <Label className=\"font-normal\" htmlFor={`${name}-false`}>\n {options?.false ?? t('form.radioLabels.false')}\n </Label>\n </FieldGroup.Row>\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport type { DateFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { DatePicker } from '@/components/DatePicker';\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\nimport { Popover } from '@/components/Popover';\n\nimport { FieldGroup } from '../FieldGroup';\nimport { type BaseFieldComponentProps } from '../types';\n\nconst isValidDateString = (s: string) => /^(\\d{4})-((0[1-9])|(1[0-2]))-((0[1-9])|([12])[0-9]|3[01])$/.test(s);\n\nexport type DateFieldProps = Simplify<BaseFieldComponentProps<Date> & Omit<DateFormField, 'kind'>>;\n\nexport const DateField = ({ error, label, name, setValue, value }: DateFieldProps) => {\n const [isDatePickerOpen, setIsDatePickerOpen] = useState(false);\n const [isInputFocused, setIsInputFocused] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n useEffect(() => {\n const isSelecting = isDatePickerOpen || isInputFocused;\n if (isSelecting) {\n return;\n } else if (isValidDateString(inputValue)) {\n setValue(new Date(inputValue));\n } else {\n setInputValue('');\n }\n }, [isDatePickerOpen, isInputFocused]);\n\n useEffect(() => {\n setInputValue(value ? toBasicISOString(value) : '');\n }, [value]);\n\n return (\n <FieldGroup>\n <Label htmlFor={name}>{label}</Label>\n <Popover open={isDatePickerOpen} onOpenChange={setIsDatePickerOpen}>\n <Popover.Trigger>\n <Input\n autoComplete=\"off\"\n data-cy=\"date-input\"\n data-testid=\"date-input\"\n placeholder=\"YYYY-MM-DD\"\n type=\"text\"\n value={inputValue}\n onBlur={() => setIsInputFocused(false)}\n onChange={(event) => setInputValue(event.target.value)}\n onFocus={() => setIsInputFocused(true)}\n />\n </Popover.Trigger>\n <Popover.Content asChild align=\"start\" autofocus={false} className=\"w-auto\">\n <DatePicker\n onSelection={(value) => {\n setInputValue(toBasicISOString(value));\n setIsDatePickerOpen(false);\n }}\n />\n </Popover.Content>\n </Popover>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useEffect } from 'react';\n\nimport type { SetFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { match } from 'ts-pattern';\nimport type { Simplify } from 'type-fest';\n\nimport { SetFieldListbox } from './SetFieldListbox';\nimport { SetFieldSelect } from './SetFieldSelect';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type SetFieldProps<T extends string = string> = Simplify<BaseFieldComponentProps<Set<T>> & SetFormField<Set<T>>>;\n\nexport const SetField = <T extends string = string>(props: SetFieldProps<T>) => {\n useEffect(() => {\n if (!props.value) {\n props.setValue(new Set([]));\n }\n }, [props.value]);\n\n const handleCheckedChange = (option: T, isChecked: boolean) => {\n if (isChecked) {\n const updatedValue = new Set<T>(props.value);\n updatedValue.delete(option);\n props.setValue(updatedValue);\n } else {\n const updatedValue = new Set<T>(props.value);\n updatedValue.add(option);\n props.setValue(updatedValue);\n }\n };\n\n return match(props)\n .with({ variant: 'select' }, (props) => <SetFieldSelect onCheckedChange={handleCheckedChange} {...props} />)\n .with({ variant: 'listbox' }, (props) => <SetFieldListbox onCheckedChange={handleCheckedChange} {...props} />)\n .exhaustive();\n};\n","import { Checkbox } from '@/components/Checkbox';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { SetFieldProps } from './SetField';\n\nexport type SetFieldListboxProps<T extends string = string> = SetFieldProps<T> & {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n};\n\nexport const SetFieldListbox = <T extends string = string>({\n description,\n error,\n label,\n name,\n onCheckedChange,\n options,\n value\n}: SetFieldListboxProps<T>) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n {Object.keys(options).map((option) => (\n <div className=\"flex items-center gap-2\" key={option}>\n <Checkbox\n checked={value?.has(option as T) ?? false}\n id={`${name}-${option}`}\n onCheckedChange={(checked) => {\n onCheckedChange(option as T, !checked);\n }}\n />\n <Label className=\"font-normal\" htmlFor={`${name}-${option}`}>\n {options[option as T]}\n </Label>\n </div>\n ))}\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { Badge } from '@/components/Badge';\nimport { DropdownButton } from '@/components/DropdownButton';\nimport { DropdownMenu } from '@/components/DropdownMenu';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { SetFieldProps } from './SetField';\n\nexport type SetFieldSelectProps<T extends string = string> = SetFieldProps<T> & {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n};\n\nexport const SetFieldSelect = <T extends string = string>({\n description,\n error,\n label,\n onCheckedChange,\n options,\n value\n}: SetFieldSelectProps<T>) => {\n return value ? (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <DropdownMenu>\n <DropdownMenu.Trigger asChild className=\"w-full\">\n <DropdownButton>\n {value.size ? (\n <div className=\"flex items-center gap-2\">\n {Array.from(value).map((option) => (\n <Badge className=\"font-normal\" key={option} variant=\"outline\">\n {options[option]}\n </Badge>\n ))}\n </div>\n ) : null}\n </DropdownButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content widthFull align=\"start\">\n {Object.keys(options).map((option) => {\n const checked = value.has(option as T);\n return (\n <DropdownMenu.CheckboxItem\n checked={checked}\n key={option}\n onSelect={(event) => {\n event.preventDefault();\n onCheckedChange(option as T, value.has(option as T));\n }}\n >\n {options[option as T]}\n </DropdownMenu.CheckboxItem>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n ) : null;\n};\n","import { match } from 'ts-pattern';\n\nimport { StringFieldInput, type StringFieldInputProps } from './StringFieldInput';\nimport { StringFieldPassword, type StringFieldPasswordProps } from './StringFieldPassword';\nimport { StringFieldRadio, type StringFieldRadioProps } from './StringFieldRadio';\nimport { StringFieldSelect } from './StringFieldSelect';\nimport { StringFieldTextArea, type StringFieldTextAreaProps } from './StringFieldTextArea';\n\nexport type StringFieldProps =\n | StringFieldInputProps\n | StringFieldPasswordProps\n | StringFieldRadioProps\n | StringFieldTextAreaProps;\n\nexport const StringField = (props: StringFieldProps) => {\n return match(props)\n .with({ variant: 'textarea' }, (props) => <StringFieldTextArea {...props} />)\n .with({ variant: 'password' }, (props) => <StringFieldPassword {...props} />)\n .with({ variant: 'input' }, (props) => <StringFieldInput {...props} />)\n .with({ variant: 'select' }, (props) => <StringFieldSelect {...props} />)\n .with({ variant: 'radio' }, (props) => <StringFieldRadio {...props} />)\n .exhaustive();\n};\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldInputProps = BaseFieldComponentProps<string> & StringFormField;\n\nexport const StringFieldInput = ({ description, error, label, name, setValue, value }: StringFieldInputProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input name={name} type=\"text\" value={value ?? ''} onChange={(event) => setValue(event.target.value)} />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useState } from 'react';\n\nimport type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldPasswordProps = BaseFieldComponentProps<string> & StringFormField;\n\nexport const StringFieldPassword = ({ description, error, label, name, setValue, value }: StringFieldPasswordProps) => {\n const [show, setShow] = useState(false);\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Input\n name={name}\n type={show ? 'text' : 'password'}\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\n <button\n className=\"absolute right-0 flex h-full w-8 items-center justify-center text-muted-foreground\"\n type=\"button\"\n onClick={() => setShow(!show)}\n >\n <EyeIcon className={cn('absolute transition-all', show ? '-rotate-90 scale-0' : 'rotate-0 scale-100')} />\n <EyeOffIcon className={cn('absolute transition-all', !show ? 'rotate-90 scale-0' : 'rotate-0 scale-100')} />\n </button>\n </FieldGroup.Row>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { cva } from 'class-variance-authority';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '../Label';\nimport { RadioGroup } from '../RadioGroup';\nimport { FieldGroup } from './FieldGroup';\n\nimport type { BaseFieldComponentProps } from './types';\n\nconst baseRadioFieldVariants = cva('flex', {\n defaultVariants: {\n orientation: 'vertical'\n },\n variants: {\n orientation: {\n horizontal: 'flex-col @3xl:flex-row @3xl:items-center @3xl:justify-between',\n vertical: 'flex-col'\n }\n }\n});\n\nexport type BaseRadioFieldProps<T extends string> = Simplify<\n BaseFieldComponentProps<T> & {\n description?: string;\n label: string;\n options: { [K in T]: string };\n orientation?: 'horizontal' | 'vertical';\n }\n>;\n\nexport const BaseRadioField = <T extends string>({\n description,\n error,\n label,\n name,\n options,\n orientation = 'vertical',\n setValue,\n value\n}: BaseRadioFieldProps<T>) => {\n const optionsCount = Object.keys(options).length;\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <RadioGroup\n className={baseRadioFieldVariants({ orientation: optionsCount > 5 ? 'vertical' : orientation })}\n name={name}\n value={value ?? ''}\n onValueChange={(value) => setValue(value as T)}\n >\n {Object.keys(options).map((option) => (\n <div className=\"flex items-center gap-2\" key={option}>\n <RadioGroup.Item id={`${name}-${option}`} value={option} />\n <Label className=\"font-normal\" htmlFor={`${name}-${option}`}>\n {options[option as T]}\n </Label>\n </div>\n ))}\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { BaseRadioField } from '../BaseRadioField';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldRadioProps<T extends string = string> = Simplify<\n BaseFieldComponentProps<T> & Extract<StringFormField<T>, { options: object }>\n>;\n\nexport const StringFieldRadio = <T extends string = string>(props: StringFieldRadioProps<T>) => {\n return <BaseRadioField {...props} />;\n};\n","import * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { SelectContent } from './SelectContent';\nimport { SelectItem } from './SelectItem';\nimport { SelectLabel } from './SelectLabel';\nimport { SelectScrollDownButton } from './SelectScrollDownButton';\nimport { SelectScrollUpButton } from './SelectScrollUpButton';\nimport { SelectSeparator } from './SelectSeparator';\nimport { SelectTrigger } from './SelectTrigger';\n\nexport const Select = Object.assign(SelectPrimitive.Root, {\n Content: SelectContent,\n Group: SelectPrimitive.Group,\n Item: SelectItem,\n Label: SelectLabel,\n ScrollDownButton: SelectScrollDownButton,\n ScrollUpButton: SelectScrollUpButton,\n Separator: SelectSeparator,\n Trigger: SelectTrigger,\n Value: SelectPrimitive.Value\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nimport { SelectScrollDownButton } from './SelectScrollDownButton';\nimport { SelectScrollUpButton } from './SelectScrollUpButton';\n\nexport const SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(function SelectContent({ children, className, position = 'popper', ...props }, ref) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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',\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 ref={ref}\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)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(function SelectScrollDownButton({ className, ...props }, ref) {\n return (\n <SelectPrimitive.ScrollDownButton\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n ref={ref}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { ChevronUpIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(function SelectScrollUpButton({ className, ...props }, ref) {\n return (\n <SelectPrimitive.ScrollUpButton\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n ref={ref}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(function SelectItem({ children, className, ...props }, ref) {\n return (\n <SelectPrimitive.Item\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(function SelectLabel({ className, ...props }, ref) {\n return <SelectPrimitive.Label className={cn('px-2 py-1.5 text-sm font-semibold', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(function SelectSeparator({ className, ...props }, ref) {\n return <SelectPrimitive.Separator className={cn('-mx-1 my-1 h-px bg-muted', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { DropdownButton } from '../DropdownButton';\n\nexport const SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(function SelectTrigger({ children, className, ...props }, ref) {\n return (\n <SelectPrimitive.Trigger asChild className={className} ref={ref} {...props}>\n <DropdownButton>{children}</DropdownButton>\n </SelectPrimitive.Trigger>\n );\n});\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { Select } from '@/components/Select';\n\nimport { FieldGroup } from '../FieldGroup';\nimport { type BaseFieldComponentProps } from '../types';\n\nexport type StringFieldSelectProps<T extends string = string> = Simplify<\n BaseFieldComponentProps<T> & Extract<StringFormField<T>, { options: object }>\n>;\n\nexport const StringFieldSelect = <T extends string = string>({\n description,\n error,\n label,\n name,\n options,\n setValue,\n value\n}: StringFieldSelectProps<T>) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Select name={name} value={value ?? ''} onValueChange={(value: T) => setValue(value)}>\n <Select.Trigger>\n <Select.Value />\n </Select.Trigger>\n <Select.Content>\n {Object.keys(options).map((option) => (\n <Select.Item key={option} value={option}>\n {options[option as T]}\n </Select.Item>\n ))}\n </Select.Content>\n </Select>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport type TextAreaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(function TextArea(\n { className, ...props },\n ref\n) {\n return (\n <textarea\n autoComplete=\"off\"\n className={cn(\n 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"text-area\"\n ref={ref}\n {...props}\n />\n );\n});\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Label } from '@/components/Label';\nimport { TextArea } from '@/components/TextArea';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldTextAreaProps = BaseFieldComponentProps<string> & StringFormField;\n\nexport const StringFieldTextArea = ({ description, error, label, name, setValue, value }: StringFieldTextAreaProps) => {\n return (\n <FieldGroup>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <TextArea name={name} rows={5} value={value ?? ''} onChange={(event) => setValue(event.target.value)} />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import type {\n BooleanFormField,\n DateFormField,\n NumberFormField,\n ScalarFieldValue,\n SetFormField,\n StringFormField\n} from '@douglasneuroinformatics/libui-form-types';\n\nimport { BooleanField, type BooleanFieldProps } from './BooleanField';\nimport { DateField, type DateFieldProps } from './DateField';\nimport { NumberField, type NumberFieldProps } from './NumberField';\nimport { SetField, type SetFieldProps } from './SetField';\nimport { StringField, type StringFieldProps } from './StringField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type ScalarFieldProps = BaseFieldComponentProps<ScalarFieldValue> & {\n field: BooleanFormField | DateFormField | NumberFormField | SetFormField | StringFormField;\n};\n\nexport const ScalarField = ({ field, ...props }: ScalarFieldProps) => {\n switch (field.kind) {\n case 'string':\n return <StringField {...field} {...(props as StringFieldProps)} />;\n case 'number':\n return <NumberField {...field} {...(props as NumberFieldProps)} />;\n case 'date':\n return <DateField {...field} {...(props as DateFieldProps)} />;\n case 'boolean':\n return <BooleanField {...field} {...(props as BooleanFieldProps)} />;\n case 'set':\n return <SetField {...field} {...(props as SetFieldProps)} />;\n default:\n throw new Error(`Unexpected value for kind: ${Reflect.get(field, 'kind') satisfies never}`);\n }\n};\n","import type { FormDataType, FormFields, PartialFormDataType } from '@douglasneuroinformatics/libui-form-types';\n\nimport { DynamicField } from './DynamicField';\nimport { StaticField } from './StaticField';\n\nimport type { FormErrors } from './types';\n\nexport type FieldsComponentProps<T extends FormDataType> = {\n errors: FormErrors<T>;\n fields: FormFields<T>;\n setErrors: React.Dispatch<React.SetStateAction<FormErrors<T>>>;\n setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<T>>>;\n values: PartialFormDataType<T>;\n};\n\n/** Renders an object containing key value pairs, where the value is a FormField of some kind */\nexport const FieldsComponent = <T extends FormDataType>({ fields, ...props }: FieldsComponentProps<T>) => {\n return Object.keys(fields).map((name) => {\n const field = fields[name];\n if (field.kind === 'dynamic') {\n return <DynamicField {...props} field={field} key={name} name={name} />;\n }\n return <StaticField {...props} field={field} key={name} name={name} />;\n });\n};\n","import type {\n FormContent,\n FormDataType,\n FormFields,\n PartialFormDataType,\n PartialNullableFormDataType,\n StaticFormFields,\n UnknownFormField\n} from '@douglasneuroinformatics/libui-form-types';\n\nexport function getInitialValues<T extends FormDataType>(values: PartialNullableFormDataType<T>) {\n const initialValues: { [key: string]: unknown } = {};\n for (const key in values) {\n const value = values[key];\n if (value === null || value === undefined) {\n continue;\n } else if (Array.isArray(value)) {\n initialValues[key] = value.map(getInitialValues);\n } else {\n initialValues[key] = value;\n }\n }\n return initialValues as PartialFormDataType<T>;\n}\n\n/** Extract a flat array of form fields from the content. This function assumes there are no duplicate keys in groups */\nexport function getFormFields<T extends FormDataType>(content: FormContent<T>): FormFields<T> {\n if (!Array.isArray(content)) {\n return content;\n }\n return content.reduce((prev, current) => ({ ...prev, ...current.fields }), content[0].fields) as FormFields<T>;\n}\n\n/**\n * Given a set of data, resolve static content for form fields. Null values\n * will be removed.\n */\nexport function resolveStaticFormFields<T extends FormDataType>(content: FormContent<T>, data: PartialFormDataType<T>) {\n const staticFormFields: Partial<StaticFormFields<T>> = {};\n const formFields = getFormFields(content);\n for (const fieldName in formFields) {\n const field: UnknownFormField<T, typeof fieldName> = formFields[fieldName];\n if (field.kind === 'dynamic') {\n const resolvedField = field.render(data);\n if (resolvedField) {\n staticFormFields[fieldName] = resolvedField;\n }\n } else {\n staticFormFields[fieldName] = field;\n }\n }\n return staticFormFields;\n}\n","import { Root, Trigger } from '@radix-ui/react-hover-card';\n\nimport { HoverCardContent } from './HoverCardContent';\n\nexport const HoverCard = Object.assign(Root, {\n Content: HoverCardContent,\n Trigger\n});\n","import React from 'react';\n\nimport { Content } from '@radix-ui/react-hover-card';\n\nimport { cn } from '@/utils';\n\nexport const HoverCardContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function HoverCardContent({ align = 'center', className, sideOffset = 4, ...props }, ref) {\n return (\n <Content\n align={align}\n className={cn(\n 'z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n});\n","import { LanguagesIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Button, type ButtonProps } from '../Button';\nimport { DropdownMenu } from '../DropdownMenu';\n\nexport type LanguageToggleProps = {\n align?: 'center' | 'end' | 'start';\n options: {\n [key: string]: string;\n };\n triggerClassName?: string;\n variant?: ButtonProps['variant'];\n};\n\nexport const LanguageToggle = ({\n align = 'start',\n options = {},\n triggerClassName,\n variant = 'outline'\n}: LanguageToggleProps) => {\n const { i18n } = useTranslation('libui');\n return (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button className={triggerClassName} size=\"icon\" variant={variant}>\n <LanguagesIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align={align}>\n {Object.keys(options).map((option) => (\n <DropdownMenu.Item key={option} onClick={() => void i18n.changeLanguage(option)}>\n {options[option]}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import { Menu, Transition } from '@headlessui/react';\nimport { twMerge } from 'tailwind-merge';\n\nimport { Card } from '../Card/Card';\nimport { DropdownButton } from '../DropdownButton';\n\ntype LegacyDropdownOptions = { [key: string]: string } | readonly string[];\n\ntype LegacyDropdownOptionKey<T> = T extends readonly string[]\n ? T[number]\n : T extends { [key: string]: string }\n ? Extract<keyof T, string>\n : never;\n\n/** @deprecated */\nexport type LegacyDropdownProps<T extends LegacyDropdownOptions> = {\n className?: string;\n\n /** Callback function invoked when user clicks an option */\n onSelection: (option: LegacyDropdownOptionKey<T>) => void;\n\n /** Either a list of options for the dropdown, or an object with options mapped to custom labels */\n options: T;\n\n /** The text content for the dropdown toggle */\n title: string;\n};\n\n/** @deprecated */\n// eslint-disable-next-line react/function-component-definition\nexport function LegacyDropdown<const T extends LegacyDropdownOptions>({\n className,\n onSelection,\n options,\n title\n}: LegacyDropdownProps<T>) {\n const optionKeys: readonly string[] = options instanceof Array ? options : Object.keys(options);\n return (\n <Menu as=\"div\" className={twMerge('relative w-full whitespace-nowrap', className)}>\n <Menu.Button\n as={DropdownButton}\n className=\"h-full w-full\"\n disabled={options.length === 0}\n style={{ width: '100%' }}\n >\n {title}\n </Menu.Button>\n <Transition\n as=\"div\"\n className=\"absolute bottom-0 z-10 w-full\"\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Menu.Items as={Card} className=\"absolute z-10 mt-2 flex w-fit min-w-full flex-col overflow-hidden rounded-md\">\n {optionKeys.map((option) => (\n <Menu.Item key={option}>\n <button\n className=\"p-2 text-left text-sm hover:bg-slate-200 dark:hover:bg-slate-700\"\n data-cy=\"dropdown-menu-option\"\n style={{ minWidth: 100 }}\n onClick={() => {\n onSelection(option as LegacyDropdownOptionKey<T>);\n }}\n >\n {Array.isArray(options) ? option : (options[option as keyof T] as string)}\n </button>\n </Menu.Item>\n ))}\n </Menu.Items>\n </Transition>\n </Menu>\n );\n}\n","import React from 'react';\n\nimport { Dialog, Transition } from '@headlessui/react';\nimport { XMarkIcon } from '@heroicons/react/24/solid';\nimport { clsx } from 'clsx';\n\n/** @deprecated */\nexport type LegacyModalProps = {\n children: React.ReactNode;\n onClose: () => void;\n open: boolean;\n showCloseButton?: boolean;\n title: string;\n width?: 'lg' | 'md' | 'sm' | 'xl';\n};\n\n/** @deprecated */\nexport const LegacyModal = ({ children, onClose, open, showCloseButton, title, width = 'md' }: LegacyModalProps) => {\n return (\n <Transition appear as={React.Fragment} show={open}>\n <Dialog as=\"div\" className=\"relative z-10\" onClose={onClose}>\n <Transition.Child\n as={React.Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black bg-opacity-50\" />\n </Transition.Child>\n <div className=\"fixed inset-0 overflow-y-auto\">\n <div className=\"flex min-h-full items-center justify-center p-4 text-center\">\n <Transition.Child\n as={React.Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 scale-95\"\n enterTo=\"opacity-100 scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 scale-100\"\n leaveTo=\"opacity-0 scale-95\"\n >\n <Dialog.Panel\n className={clsx(\n 'relative w-full transform overflow-visible rounded-2xl bg-slate-100 p-6 text-left align-middle text-slate-900 shadow-xl transition-all dark:bg-slate-800 dark:text-slate-100',\n {\n 'max-w-lg': width === 'lg',\n 'max-w-md': width === 'md',\n 'max-w-sm': width === 'sm',\n 'max-w-xl': width === 'xl'\n }\n )}\n >\n <div className=\"flex items-center justify-between\">\n <Dialog.Title as=\"h3\" className=\"p-0.5 text-xl font-bold leading-6\">\n {title}\n </Dialog.Title>\n {showCloseButton && (\n <button\n className=\"flex items-center justify-center rounded-md p-0.5 hover:bg-slate-200 dark:hover:bg-slate-700\"\n type=\"button\"\n onClick={onClose}\n >\n <XMarkIcon height={24} width={24} />\n </button>\n )}\n </div>\n <div className=\"my-2 p-0.5\">{children}</div>\n </Dialog.Panel>\n </Transition.Child>\n </div>\n </div>\n </Dialog>\n </Transition>\n );\n};\n","import { Listbox, Transition } from '@headlessui/react';\nimport { CheckIcon } from '@heroicons/react/24/solid';\nimport { clsx } from 'clsx';\n\nimport { type ButtonProps } from '../Button';\nimport { Card } from '../Card';\nimport { DropdownButton } from '../DropdownButton';\n\n/** @deprecated */\nexport type LegacySelectOption = {\n key: string;\n label: string;\n};\n\n/** @deprecated */\nexport type LegacySelectDropdownProps<T extends LegacySelectOption> = {\n checkPosition?: 'left' | 'right';\n className?: string;\n options: T[];\n selected: T[];\n setSelected: (selected: T[]) => void;\n title: string;\n /** The button variant to use for the dropdown toggle */\n variant?: ButtonProps['variant'];\n};\n\n/** @deprecated */\nexport const LegacySelectDropdown = <T extends LegacySelectOption>({\n checkPosition = 'right',\n className,\n options,\n selected,\n setSelected,\n title\n}: LegacySelectDropdownProps<T>) => {\n // Here we specify the key prop of objects for comparison\n return (\n <Listbox\n multiple\n as=\"div\"\n by=\"key\"\n className={clsx('relative flex w-full', className)}\n value={selected}\n onChange={setSelected}\n >\n <Listbox.Button as={DropdownButton} className=\"h-full w-full\">\n {title}\n </Listbox.Button>\n <Transition\n as=\"div\"\n className=\"absolute bottom-0 z-10 w-full\"\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Listbox.Options\n as={Card}\n className=\"absolute z-10 mt-2 flex max-h-80 min-w-full flex-col overflow-scroll rounded-md scrollbar-none\"\n >\n {options.map((option) => (\n <Listbox.Option\n className=\"flex w-full items-center whitespace-nowrap bg-slate-50 p-2 text-sm hover:bg-slate-200 dark:bg-slate-800 dark:hover:bg-slate-700 \"\n data-cy=\"select-dropdown-option\"\n key={option.key}\n value={option}\n >\n {checkPosition === 'left' && (\n <CheckIcon className=\"invisible mr-2 h-6 ui-selected:visible\" height={16} width={16} />\n )}\n <span className=\"ui-selected:font-medium\" data-cy=\"select-dropdown-option-label\">\n {option.label}\n </span>\n {checkPosition === 'right' && (\n <CheckIcon className=\"invisible ml-2 ui-selected:visible\" height={16} width={16} />\n )}\n </Listbox.Option>\n ))}\n </Listbox.Options>\n </Transition>\n </Listbox>\n );\n};\n","import React from 'react';\n\nimport { Dialog, Transition } from '@headlessui/react';\nimport { XMarkIcon } from '@heroicons/react/24/outline';\n\n/** @deprecated */\nexport type LegacySliderProps = {\n children: React.ReactNode;\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n title: React.ReactNode;\n};\n\n/** @deprecated */\nexport const LegacySlider = ({ children, isOpen, setIsOpen, title }: LegacySliderProps) => {\n return (\n <Transition as={React.Fragment} show={isOpen}>\n <Dialog as=\"div\" className=\"fixed inset-0 z-10 overflow-hidden\" onClose={setIsOpen}>\n <div className=\"absolute inset-0 overflow-hidden\">\n <Transition.Child\n as={React.Fragment}\n enter=\"transition-opacity ease-linear duration-500\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"transition-opacity ease-linear duration-500\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black/30\" />\n </Transition.Child>\n <div className=\"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10\">\n <Transition.Child\n as={React.Fragment}\n enter=\"transform transition ease-in-out duration-500\"\n enterFrom=\"translate-x-full\"\n enterTo=\"translate-x-0\"\n leave=\"transform transition ease-in-out duration-500\"\n leaveFrom=\"translate-x-0\"\n leaveTo=\"translate-x-full\"\n >\n <div className=\"pointer-events-auto w-screen max-w-md\">\n <div className=\"flex h-full flex-col overflow-y-scroll bg-slate-50 py-6 shadow-xl dark:bg-slate-800\">\n <div className=\"px-4 sm:px-6\">\n <div className=\"flex items-center justify-between\">\n <Dialog.Title className=\"font-semibold text-slate-900 dark:text-slate-100\">{title}</Dialog.Title>\n <button\n className=\"text-muted-foreground hover:text-slate-500\"\n type=\"button\"\n onClick={() => {\n setIsOpen(false);\n }}\n >\n <XMarkIcon aria-hidden=\"true\" className=\"h-6 w-6\" />\n </button>\n </div>\n </div>\n <hr className=\"mx-4 my-4 border-slate-300\" />\n <div className=\"relative flex-1 px-4 sm:px-6\">{children}</div>\n </div>\n </div>\n </Transition.Child>\n </div>\n </div>\n </Dialog>\n </Transition>\n );\n};\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\n\nimport clsx from 'clsx';\n\nimport { LegacyStepperContext } from '@/context/LegacyStepperContext';\nimport { useWindowSize } from '@/hooks/useWindowSize';\nimport { cn } from '@/utils';\n\n/** @deprecated */\nexport type Step = {\n element: React.ReactElement;\n icon: React.ReactElement;\n label: string;\n};\n\n/** @deprecated */\nexport type LegacyStepperProps = {\n className?: string;\n steps: Step[];\n};\n\n/** @deprecated */\nexport const LegacyStepper = ({ className, steps }: LegacyStepperProps) => {\n const icons = useRef<HTMLDivElement[]>([]);\n const [divideStyles, setDivideStyles] = useState<React.CSSProperties[]>([]);\n const { height, width } = useWindowSize();\n\n useEffect(() => {\n const styles: React.CSSProperties[] = [];\n for (let i = 0; i < steps.length - 1; i++) {\n const current = icons.current[i];\n const next = icons.current[i + 1];\n const left = current.offsetLeft + current.offsetWidth;\n styles.push({\n left,\n width: next.offsetLeft - left\n });\n }\n setDivideStyles(styles);\n }, [height, width]);\n\n const [index, updateIndex] = useReducer((prevIndex: number, action: 'decrement' | 'increment') => {\n if (action === 'decrement' && prevIndex > 0) {\n return prevIndex - 1;\n } else if (action === 'increment' && prevIndex < steps.length - 1) {\n return prevIndex + 1;\n }\n return prevIndex;\n }, 0);\n\n return (\n <LegacyStepperContext.Provider value={{ index, updateIndex }}>\n <div className={cn('flex flex-col', className)}>\n <div className=\"relative mb-12 flex items-center justify-between print:hidden\">\n {steps.map((step, i) => {\n return (\n <React.Fragment key={i}>\n <div className=\"flex items-center\">\n <div className=\"flex flex-col items-center justify-center\">\n <div\n className={clsx(\n 'h-12 w-12 rounded-full bg-sky-700 py-3 text-white transition duration-500 ease-in-out [&>*]:h-full [&>*]:w-full',\n i > index && 'bg-slate-200 dark:bg-slate-700'\n )}\n ref={(e) => {\n icons.current[i] = e!;\n }}\n >\n {step.icon}\n </div>\n <span className=\"mt-2 text-xs font-medium uppercase text-muted-foreground\">{step.label}</span>\n </div>\n </div>\n {i !== steps.length - 1 && (\n <div\n className={clsx(\n 'absolute top-6 flex-auto border-t-2 transition duration-500 ease-in-out',\n i >= index ? 'border-slate-200 dark:border-slate-700' : 'border-sky-700'\n )}\n style={divideStyles[i]}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"flex-grow\">{steps[index]?.element}</div>\n </div>\n </LegacyStepperContext.Provider>\n );\n};\n","import { useState } from 'react';\n\nimport { useTranslation } from 'react-i18next';\n\nimport { LegacyTable, type LegacyTableEntry, type LegacyTableProps } from './LegacyTable';\n\n/** @deprecated */\nexport const LegacyClientTable = <T extends LegacyTableEntry>({ data, ...props }: LegacyTableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(1);\n const [entriesPerPage] = useState(10);\n const { t } = useTranslation('libui');\n\n const pageCount = Math.ceil(data.length / entriesPerPage);\n\n const firstEntry = data.length === 0 ? 0 : (currentPage - 1) * entriesPerPage + 1;\n const lastEntry = Math.min(firstEntry + entriesPerPage - 1, data.length);\n const currentEntries = data.slice(firstEntry - 1, lastEntry);\n\n return (\n <div>\n <LegacyTable data={currentEntries} {...props} />\n <div className=\"flex items-center justify-between px-1 py-3\">\n <div className=\"hidden sm:block\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n {t('pagination.info', {\n first: firstEntry,\n last: lastEntry,\n total: data.length\n })}\n </p>\n </div>\n <div className=\"flex flex-1 justify-between sm:justify-end\">\n <button\n className=\"relative inline-flex items-center rounded-md border border-slate-300 bg-slate-50 px-4 py-2 text-sm font-medium text-muted-foreground disabled:opacity-75 dark:border-slate-600 dark:bg-slate-800\"\n disabled={currentPage === 1}\n onClick={() => {\n setCurrentPage(currentPage - 1);\n }}\n >\n {t('pagination.previous')}\n </button>\n <button\n className=\"relative ml-3 inline-flex items-center rounded-md border border-slate-300 bg-slate-50 px-4 py-2 text-sm font-medium text-muted-foreground disabled:opacity-75 dark:border-slate-600 dark:bg-slate-800\"\n disabled={currentPage === pageCount}\n onClick={() => {\n setCurrentPage(currentPage + 1);\n }}\n >\n {t('pagination.next')}\n </button>\n </div>\n </div>\n </div>\n );\n};\n","import { range, toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nimport { type LegacyColumnDropdownOptions, LegacyTableColumnHeader } from './LegacyTableColumnHeader';\n\n/** Coerces the value in a cell to a string for consistant display purposes */\nfunction defaultFormatter(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n } else if (typeof value === 'number') {\n return value.toFixed(2).toString();\n } else if (typeof value === 'undefined') {\n return 'NA';\n }\n if (value instanceof Date) {\n return toBasicISOString(value);\n }\n return JSON.stringify(value);\n}\n\n/** @deprecated */\nexport type LegacyTableEntry = { [key: string]: unknown };\n\n/** @deprecated */\nexport type LegacyFieldFactory<T extends LegacyTableEntry = LegacyTableEntry> = (entry: T) => string;\n\n/** @deprecated */\nexport type LegacyTableColumn<T extends LegacyTableEntry> = {\n /** How to determine the values for column */\n field: LegacyFieldFactory<T> | keyof T;\n\n /** Override the default formatter for this field */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter?: (value: any) => string;\n\n /** The label to be displayed on the header */\n label: string;\n};\n\n/** @deprecated */\nexport type LegacyTableProps<T extends LegacyTableEntry> = {\n className?: string;\n columnDropdownOptions?: LegacyColumnDropdownOptions<T>;\n columns: LegacyTableColumn<T>[];\n data: T[];\n minRows?: number;\n onEntryClick?: (entry: T) => void;\n};\n\n/** @deprecated */\nexport const LegacyTable = <T extends LegacyTableEntry>({\n className,\n columnDropdownOptions,\n columns,\n data,\n minRows,\n onEntryClick\n}: LegacyTableProps<T>) => {\n const nRows = Math.max(data.length, minRows ?? -1);\n return (\n <div className={twMerge('min-w-full overflow-hidden rounded-md bg-slate-50 shadow dark:bg-slate-800', className)}>\n <div className=\"w-full overflow-x-scroll\">\n <table className=\"w-full table-auto\">\n <thead className=\"border-b border-slate-300 bg-slate-50 dark:border-0 dark:bg-slate-700\">\n <tr>\n {columns.map((column, i) => (\n <th\n className=\"whitespace-nowrap text-left text-sm font-semibold text-slate-800 dark:text-slate-200\"\n key={i}\n >\n <LegacyTableColumnHeader column={column} dropdownOptions={columnDropdownOptions} />\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y dark:divide-slate-600\">\n {nRows > 0 &&\n range(nRows).map((i) => {\n const entry = data[i];\n return (\n <tr\n className={clsx('whitespace-nowrap p-4 text-sm text-muted-foreground', {\n 'cursor-pointer hover:backdrop-brightness-95': entry && typeof onEntryClick === 'function'\n })}\n data-cy=\"table-row\"\n key={i}\n onClick={() => {\n entry && onEntryClick && onEntryClick(entry);\n }}\n >\n {columns.map(({ field, formatter }, j) => {\n let value: unknown;\n if (!entry) {\n value = '';\n } else if (typeof field === 'function') {\n value = field(entry);\n } else {\n value = entry[field];\n }\n const formattedValue = entry && formatter ? formatter(value) : defaultFormatter(value);\n return (\n <td className=\"whitespace-nowrap px-6\" data-cy=\"table-data-item\" key={j} style={{ height: 42 }}>\n <span className=\"block text-ellipsis leading-none\">{formattedValue}</span>\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n","import React from 'react';\n\nimport { Menu, Transition } from '@headlessui/react';\nimport { ChevronDownIcon } from '@heroicons/react/24/solid';\nimport { clsx } from 'clsx';\n\nimport type { LegacyTableColumn, LegacyTableEntry } from './LegacyTable';\n\n/** @deprecated */\nexport type LegacyColumnDropdownOptions<T extends LegacyTableEntry> = {\n icon?: React.ComponentType<Omit<React.SVGProps<SVGSVGElement>, 'ref'>>;\n label: string;\n onSelection: (column: LegacyTableColumn<T>) => void;\n}[];\n\n/** @deprecated */\nexport type LegacyTableColumnProps<T extends LegacyTableEntry> = {\n column: LegacyTableColumn<T>;\n dropdownOptions?: LegacyColumnDropdownOptions<T>;\n};\n\n/** @deprecated */\nexport const LegacyTableColumnHeader = <T extends LegacyTableEntry>({\n column,\n dropdownOptions\n}: LegacyTableColumnProps<T>) => {\n return (\n <Menu as=\"div\" className=\"relative\">\n <Menu.Button\n className={clsx(\n 'flex min-w-[10rem] flex-shrink-0 items-center justify-between px-6 py-3 text-sm font-semibold text-slate-800 dark:text-slate-200',\n { 'cursor-default': !dropdownOptions }\n )}\n >\n {column.label}\n {dropdownOptions && <ChevronDownIcon className=\"ml-3\" height={16} width={16} />}\n </Menu.Button>\n {dropdownOptions && (\n <Transition\n as={React.Fragment}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Menu.Items className=\"absolute right-4 z-50 mt-2 w-32 origin-top-right overflow-hidden rounded-md bg-slate-50 shadow-sm ring-1 ring-black ring-opacity-5 focus:outline-none dark:bg-slate-700\">\n {dropdownOptions.map((option) => {\n const Icon = option.icon;\n return (\n <Menu.Item\n as=\"button\"\n className=\"flex w-full items-center text-ellipsis whitespace-nowrap px-3 py-2 hover:backdrop-brightness-95 dark:hover:backdrop-brightness-150\"\n key={option.label}\n type=\"button\"\n onClick={() => {\n option.onSelection(column);\n }}\n >\n {Icon && <Icon className=\"mr-2\" height={16} width={16} />}\n {option.label}\n </Menu.Item>\n );\n })}\n </Menu.Items>\n </Transition>\n )}\n </Menu>\n );\n};\n","import React from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport { useTranslation } from 'react-i18next';\nimport {\n CartesianGrid,\n ErrorBar,\n Label,\n Legend,\n Line,\n LineChart,\n type LineProps,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n} from 'recharts';\nimport type { ConditionalKeys } from 'type-fest';\n\nimport { type Theme, useTheme } from '@/hooks/useTheme';\n\n/** An array of arbitrary objects with data to graph */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LineGraphData = readonly { [key: string]: any }[];\n\n/** Extract string keys from items in `T` where the value of `T[K]` extends `K` */\ntype ExtractValidKeys<T extends LineGraphData, K> = Extract<ConditionalKeys<T[number], K>, string>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LineGraphLine<T extends LineGraphData = { [key: string]: any }[]> = Pick<\n LineProps,\n 'legendType' | 'stroke' | 'strokeDasharray' | 'strokeWidth' | 'type'\n> & {\n err?: ExtractValidKeys<T, number>;\n name: string;\n val: ExtractValidKeys<T, number>;\n};\n\nconst strokeColors = {\n dark: '#cbd5e1', // slate-300\n light: '#475569' // slate-600\n};\n\nconst tooltipStyles: { [K in Theme]: React.CSSProperties } = {\n dark: {\n backgroundColor: '#0f172a', // slate-900\n borderColor: strokeColors.light,\n borderRadius: '2px'\n },\n light: {\n backgroundColor: '#f1f5f9', // slate-100\n borderColor: strokeColors.dark,\n borderRadius: '2px'\n }\n};\n\n// eslint-disable-next-line react/function-component-definition\nfunction LineGraphComponent<const T extends LineGraphData>({\n data,\n lines,\n xAxis\n}: {\n /** An array of objects, where each object represents one point on the x-axis */\n data: T;\n lines: LineGraphLine<T>[];\n xAxis?: {\n key?: ExtractValidKeys<T, number>; // unix time\n label?: string;\n };\n}) {\n const { i18n } = useTranslation('libui');\n const [theme] = useTheme();\n\n return (\n <ResponsiveContainer height={400} width=\"100%\">\n <LineChart data={[...data]} margin={{ bottom: 5, left: 15, right: 15, top: 5 }}>\n <CartesianGrid stroke=\"#64748b\" strokeDasharray=\"5 5\" />\n <XAxis\n axisLine={{ stroke: '#64748b' }}\n dataKey={xAxis?.key}\n domain={['auto', 'auto']}\n height={50}\n interval=\"preserveStartEnd\"\n padding={{ left: 20, right: 20 }}\n stroke={strokeColors[theme]}\n tickFormatter={(time: number) => toBasicISOString(new Date(time))}\n tickLine={{ stroke: '#64748b' }}\n tickMargin={8}\n tickSize={8}\n type={'number'}\n >\n <Label fill={strokeColors[theme]} offset={0} position=\"insideBottom\" value={xAxis?.label} />\n </XAxis>\n <YAxis\n axisLine={{ stroke: '#64748b' }}\n stroke={strokeColors[theme]}\n tickLine={{ stroke: '#64748b' }}\n tickMargin={5}\n tickSize={8}\n width={40}\n />\n <Tooltip\n contentStyle={tooltipStyles[theme]}\n labelFormatter={(time: number) => {\n const date = new Date(time);\n return new Intl.DateTimeFormat(i18n.resolvedLanguage, {\n dateStyle: 'full',\n timeStyle: 'medium'\n }).format(date);\n }}\n labelStyle={{ color: strokeColors[theme], fontWeight: 500, whiteSpace: 'pre-wrap' }}\n />\n {lines.map(({ err, name, stroke, type, val, ...props }) => (\n <Line\n {...props}\n dataKey={val}\n key={val}\n name={name}\n stroke={stroke ?? strokeColors[theme]}\n type={type ?? 'linear'}\n >\n {err && <ErrorBar dataKey={err} stroke=\"#64748b\" />}\n </Line>\n ))}\n <Legend wrapperStyle={{ paddingLeft: 40, paddingTop: 10 }} />\n </LineChart>\n </ResponsiveContainer>\n );\n}\n\nexport const LineGraph = React.memo(LineGraphComponent) as typeof LineGraphComponent;\n\nexport type { LineGraphData, LineGraphLine };\n","import { Group, Menu, Portal, RadioGroup, Sub } from '@radix-ui/react-menubar';\n\nimport { MenuBarCheckboxItem } from './MenuBarCheckboxItem';\nimport { MenuBarContent } from './MenuBarContent';\nimport { MenuBarItem } from './MenuBarItem';\nimport { MenuBarLabel } from './MenuBarLabel';\nimport { MenuBarRadioItem } from './MenuBarRadioItem';\nimport { MenuBarRoot } from './MenuBarRoot';\nimport { MenuBarSeparator } from './MenuBarSeparator';\nimport { MenuBarShortcut } from './MenuBarShortcut';\nimport { MenuBarSubContent } from './MenuBarSubContent';\nimport { MenuBarSubTrigger } from './MenuBarSubTrigger';\nimport { MenuBarTrigger } from './MenuBarTrigger';\n\nexport const MenuBar = Object.assign(MenuBarRoot, {\n CheckboxItem: MenuBarCheckboxItem,\n Content: MenuBarContent,\n Group: Group,\n Item: MenuBarItem,\n Label: MenuBarLabel,\n Menu: Menu,\n Portal: Portal,\n RadioGroup: RadioGroup,\n RadioItem: MenuBarRadioItem,\n Separator: MenuBarSeparator,\n Shortcut: MenuBarShortcut,\n Sub: Sub,\n SubContent: MenuBarSubContent,\n SubTrigger: MenuBarSubTrigger,\n Trigger: MenuBarTrigger\n});\n","import React from 'react';\n\nimport { CheckboxItem, ItemIndicator } from '@radix-ui/react-menubar';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof CheckboxItem>\n>(function MenuBarCheckboxItem({ checked, children, className, ...props }, ref) {\n return (\n <CheckboxItem\n checked={checked}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ItemIndicator>\n </span>\n {children}\n </CheckboxItem>\n );\n});\n","import React from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarContent = React.forwardRef<\n React.ElementRef<typeof Content>,\n React.ComponentPropsWithoutRef<typeof Content>\n>(function MenuBarContent({ align = 'start', alignOffset = -4, className, sideOffset = 8, ...props }, ref) {\n return (\n <Portal>\n <Content\n align={align}\n alignOffset={alignOffset}\n className={cn(\n 'z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Item } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarItem = React.forwardRef<\n React.ElementRef<typeof Item>,\n React.ComponentPropsWithoutRef<typeof Item> & {\n inset?: boolean;\n }\n>(function MenuBarItem({ className, inset, ...props }, ref) {\n return (\n <Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { Label } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarLabel = React.forwardRef<\n React.ElementRef<typeof Label>,\n React.ComponentPropsWithoutRef<typeof Label> & {\n inset?: boolean;\n }\n>(function MenuBarLabel({ className, inset, ...props }, ref) {\n return <Label className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { ItemIndicator, RadioItem } from '@radix-ui/react-menubar';\nimport { CircleIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarRadioItem = React.forwardRef<\n React.ElementRef<typeof RadioItem>,\n React.ComponentPropsWithoutRef<typeof RadioItem>\n>(function MenuBarRadioItem({ children, className, ...props }, ref) {\n return (\n <RadioItem\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ItemIndicator>\n </span>\n {children}\n </RadioItem>\n );\n});\n","import React from 'react';\n\nimport { Root } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarRoot = React.forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function MenuBarRoot({ className, ...props }, ref) {\n return (\n <Root\n className={cn('flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { Separator } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentPropsWithoutRef<typeof Separator>\n>(function MenuBarSeparator({ className, ...props }, ref) {\n return <Separator className={cn('-mx-1 my-1 h-px bg-muted', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\n","import React from 'react';\n\nimport { SubContent } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubContent = React.forwardRef<\n React.ElementRef<typeof SubContent>,\n React.ComponentPropsWithoutRef<typeof SubContent>\n>(function MenuBarSubContent({ className, ...props }, ref) {\n return (\n <SubContent\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport { SubTrigger } from '@radix-ui/react-menubar';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubTrigger = React.forwardRef<\n React.ElementRef<typeof SubTrigger>,\n React.ComponentPropsWithoutRef<typeof SubTrigger> & {\n inset?: boolean;\n }\n>(function MenuBarSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </SubTrigger>\n );\n});\n","import React from 'react';\n\nimport { Trigger } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarTrigger = React.forwardRef<\n React.ElementRef<typeof Trigger>,\n React.ComponentPropsWithoutRef<typeof Trigger>\n>(function MenuBarTrigger({ className, ...props }, ref) {\n return (\n <Trigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { AnimatePresence, motion } from 'framer-motion';\nimport { XIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Card } from '@/components/Card';\nimport { useNotificationsStore } from '@/hooks/useNotificationsStore';\n\nimport { NotificationIcon } from './NotificationIcon';\n\ntype NotificationHubProps = {\n /** The number of milliseconds before the notification is automatically cleared */\n timeout?: number;\n};\n\nconst NotificationHub = ({ timeout = 5000 }: NotificationHubProps) => {\n const { t } = useTranslation('libui');\n const { dismissNotification, notifications } = useNotificationsStore();\n\n return (\n <div className=\"fixed bottom-0 z-50 w-full print:hidden\">\n <AnimatePresence>\n {notifications.map((item) => (\n <motion.div\n animate={{ height: 'auto', opacity: 1 }}\n className=\"relative max-w-sm\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n key={item.id}\n transition={{ bounce: 0.1, type: 'spring' }}\n >\n <div className=\"w-full p-2\">\n <Card className=\"w-full rounded-lg p-0\">\n <div className=\"p-4\">\n <div className=\"mb-2 flex items-center\">\n <NotificationIcon type={item.type} />\n <h5 className=\"ml-3 flex-grow font-medium text-slate-900 dark:text-slate-100\">\n {item.title ?? t(`notifications.types.${item.type}`)}\n </h5>\n <button\n className=\"inline-flex rounded-md text-slate-400 hover:text-slate-500 focus:outline-none focus:ring-1 focus:ring-sky-500 dark:focus:ring-sky-600\"\n type=\"button\"\n onClick={() => {\n dismissNotification(item.id);\n }}\n >\n <XIcon aria-hidden=\"true\" className=\"h-5 w-5\" />\n </button>\n </div>\n <p className=\"my-2 text-muted-foreground\">{item.message}</p>\n </div>\n <motion.div\n animate={{ width: '100%' }}\n className=\"h-1 bg-slate-500\"\n initial={{ width: '0%' }}\n transition={{ duration: timeout / 1000, ease: 'linear' }}\n onAnimationComplete={() => {\n dismissNotification(item.id);\n }}\n />\n </Card>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n );\n};\n\nexport { NotificationHub, type NotificationHubProps };\n","import { CheckCircleIcon, ExclamationCircleIcon, InformationCircleIcon, XCircleIcon } from '@heroicons/react/24/solid';\n\nimport { type NotificationInterface } from '@/hooks/useNotificationsStore';\n\nexport type NotificationIconProps = {\n type: NotificationInterface['type'];\n};\n\nexport const NotificationIcon = ({ type }: NotificationIconProps) => {\n switch (type) {\n case 'info':\n return <InformationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-blue-500\" />;\n case 'success':\n return <CheckCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-green-500\" />;\n case 'warning':\n return <ExclamationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-yellow-500\" />;\n case 'error':\n return <XCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-red-500\" />;\n }\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const PaginationContent = ({ className, ...props }: React.ComponentProps<'ul'>) => (\n <ul className={cn('flex flex-row items-center gap-1', className)} {...props} />\n);\n","import React from 'react';\n\nimport { MoreHorizontalIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const PaginationEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span aria-hidden className={cn('flex h-9 w-9 items-center justify-center', className)} {...props}>\n <MoreHorizontalIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\n","export const PaginationItem = ({ className, ...props }: React.ComponentProps<'li'>) => (\n <li className={className} {...props} />\n);\n","import React from 'react';\n\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { type ButtonProps, buttonVariants } from '../Button';\n\nexport type PaginationLinkProps = Simplify<\n Pick<ButtonProps, 'size'> &\n React.ComponentProps<'a'> & {\n isActive?: boolean;\n }\n>;\n\nexport const PaginationLink = ({ children, className, isActive, size = 'icon', ...props }: PaginationLinkProps) => (\n <a\n aria-current={isActive ? 'page' : undefined}\n className={cn(\n buttonVariants({\n size,\n variant: isActive ? 'outline' : 'ghost'\n }),\n className\n )}\n {...props}\n >\n {children}\n </a>\n);\n","import React from 'react';\n\nimport { ChevronRightIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { PaginationLink } from './PaginationLink';\n\nexport const PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => {\n const { t } = useTranslation('libui');\n return (\n <PaginationLink aria-label=\"Go to next page\" className={cn('gap-1 pr-2.5', className)} size=\"md\" {...props}>\n <span>{t('pagination.next')}</span>\n <ChevronRightIcon className=\"h-4 w-4\" />\n </PaginationLink>\n );\n};\n","import { ChevronLeftIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { PaginationLink, type PaginationLinkProps } from './PaginationLink';\n\nexport const PaginationPrevious = ({ className, ...props }: PaginationLinkProps) => {\n const { t } = useTranslation('libui');\n return (\n <PaginationLink aria-label=\"Go to previous page\" className={cn('gap-1 pl-2.5', className)} size=\"md\" {...props}>\n <ChevronLeftIcon className=\"h-4 w-4\" />\n <span>{t('pagination.previous')}</span>\n </PaginationLink>\n );\n};\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const PaginationRoot = ({ className, ...props }: React.ComponentProps<'nav'>) => (\n <nav\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n role=\"navigation\"\n {...props}\n />\n);\n","import { PaginationContent } from './PaginationContent';\nimport { PaginationEllipsis } from './PaginationEllipsis';\nimport { PaginationItem } from './PaginationItem';\nimport { PaginationLink } from './PaginationLink';\nimport { PaginationNext } from './PaginationNext';\nimport { PaginationPrevious } from './PaginationPrevious';\nimport { PaginationRoot } from './PaginationRoot';\n\nexport const Pagination = Object.assign(PaginationRoot, {\n Content: PaginationContent,\n Ellipsis: PaginationEllipsis,\n Item: PaginationItem,\n Link: PaginationLink,\n Next: PaginationNext,\n Previous: PaginationPrevious\n});\n","import React from 'react';\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '@/utils';\n\nexport const Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(function Progress({ className, value, ...props }, ref) {\n return (\n <ProgressPrimitive.Root\n className={cn('bg-primary/20 relative h-2 w-full overflow-hidden rounded-full', className)}\n ref={ref}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n});\n","import React from 'react';\n\nimport { Panel, type PanelProps } from 'react-resizable-panels';\n\nimport { ResizableHandle, type ResizableHandleProps } from './ResizableHandle';\nimport { ResizablePanelGroup, type ResizablePanelGroupProps } from './ResizablePanelGroup';\n\ntype ResizableRootType = React.FC<{ children: React.ReactNode }>;\ntype ResizableType = ResizableRootType & {\n Handle: React.FC<ResizableHandleProps>;\n Panel: React.FC<PanelProps>;\n PanelGroup: React.FC<ResizablePanelGroupProps>;\n};\n\n// This is only for storybook and is unnecessary for real-world use\nconst ResizableRoot: ResizableRootType = ({ children }) => <>{children}</>;\n\nexport const Resizable: ResizableType = Object.assign(ResizableRoot, {\n Handle: ResizableHandle,\n Panel,\n PanelGroup: ResizablePanelGroup\n});\n","import { GripVertical } from 'lucide-react';\nimport { PanelResizeHandle } from 'react-resizable-panels';\n\nimport { cn } from '@/utils';\n\nexport type ResizableHandleProps = React.ComponentProps<typeof PanelResizeHandle> & {\n withHandle?: boolean;\n};\n\nexport const ResizableHandle = ({ className, withHandle, ...props }: ResizableHandleProps) => (\n <PanelResizeHandle\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 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-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </PanelResizeHandle>\n);\n","import { PanelGroup } from 'react-resizable-panels';\n\nimport { cn } from '@/utils';\n\nexport type ResizablePanelGroupProps = React.ComponentProps<typeof PanelGroup>;\n\nexport const ResizablePanelGroup = ({ className, ...props }: ResizablePanelGroupProps) => (\n <PanelGroup\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n);\n","import { SearchIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nimport { cn } from '@/utils';\n\nimport { Input } from '../Input';\n\nexport type BaseSearchBarProps = {\n /** Additional CSS classes to add to the wrapper form component, potentially overriding default styling */\n className?: string;\n /** An optional callback invoked when the user clicks the search bar */\n onClick?: () => void;\n /** Custom placeholder to use instead of the default */\n placeholder?: string;\n};\n\ntype ControlledSearchBarProps = BaseSearchBarProps & {\n /** Event handler called when the value changes */\n onValueChange: (value: string) => void;\n /** The controlled value of the search bar, which should be used in conjunction with onValueChange */\n value: string;\n};\n\ntype UncontrolledSearchBarProps = BaseSearchBarProps & {\n onValueChange?: never;\n value?: never;\n};\n\nexport type SearchBarProps = ControlledSearchBarProps | UncontrolledSearchBarProps;\n\nexport const SearchBar = ({ className, onClick, onValueChange, placeholder, value }: SearchBarProps) => {\n const { t } = useTranslation('libui');\n return (\n <form className={cn('relative', className)}>\n <SearchIcon className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n className=\"pl-8\"\n placeholder={placeholder ?? t('searchBar.placeholder')}\n type=\"search\"\n value={value}\n onChange={(event) => {\n onValueChange?.(event.target.value);\n }}\n onClick={() => onClick?.()}\n />\n </form>\n );\n};\n","import React from 'react';\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils';\n\nexport const Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(function Separator({ className, decorative = true, orientation = 'horizontal', ...props }, ref) {\n return (\n <SeparatorPrimitive.Root\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n data-testid=\"separator\"\n decorative={decorative}\n orientation={orientation}\n ref={ref}\n {...props}\n />\n );\n});\n","import { Close, Portal, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { SheetContent } from './SheetContent';\nimport { SheetDescription } from './SheetDescription';\nimport { SheetFooter } from './SheetFooter';\nimport { SheetHeader } from './SheetHeader';\nimport { SheetOverlay } from './SheetOverlay';\nimport { SheetTitle } from './SheetTitle';\n\nexport const Sheet = Object.assign(Root, {\n Close,\n Content: SheetContent,\n Description: SheetDescription,\n Footer: SheetFooter,\n Header: SheetHeader,\n Overlay: SheetOverlay,\n Portal,\n Title: SheetTitle,\n Trigger\n});\n","import React from 'react';\n\nimport { Close, Content, Overlay, Portal } from '@radix-ui/react-dialog';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n defaultVariants: {\n side: 'right'\n },\n variants: {\n side: {\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top'\n }\n }\n }\n);\n\nexport type SheetContentProps = React.ComponentPropsWithoutRef<typeof Content> & VariantProps<typeof sheetVariants>;\n\nexport const SheetContent = React.forwardRef<React.ElementRef<typeof Content>, SheetContentProps>(function SheetContent(\n { children, className, side = 'right', ...props },\n ref\n) {\n return (\n <Portal>\n <Overlay />\n <Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Close>\n </Content>\n </Portal>\n );\n});\n","import React from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetDescription = React.forwardRef<\n React.ElementRef<typeof Description>,\n React.ComponentPropsWithoutRef<typeof Description>\n>(function SheetDescription({ className, ...props }, ref) {\n return <Description className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\n","import React from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetOverlay = React.forwardRef<\n React.ElementRef<typeof Overlay>,\n React.ComponentPropsWithoutRef<typeof Overlay>\n>(function SheetOverlay({ className, ...props }, ref) {\n return (\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n );\n});\n","import React from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetTitle = React.forwardRef<\n React.ElementRef<typeof Title>,\n React.ComponentPropsWithoutRef<typeof Title>\n>(function SheetTitle({ className, ...props }, ref) {\n return <Title className={cn('text-lg font-semibold text-foreground', className)} ref={ref} {...props} />;\n});\n","import type { HTMLProps } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const Spinner = ({ className, ...props }: HTMLProps<HTMLDivElement>) => {\n return (\n <div className={cn('flex h-full w-full items-center justify-center', className)} {...props}>\n <span\n className=\"relative animate-spinner overflow-hidden text-slate-900 dark:text-slate-100\"\n style={{\n borderRadius: '50%',\n fontSize: '45px',\n height: '1em',\n textIndent: '-9999em',\n transform: 'translateZ(0)',\n width: '1em'\n }}\n />\n </div>\n );\n};\n","import { cn } from '@/utils';\n\nexport const SpinnerIcon = ({ className, ...props }: React.HTMLAttributes<SVGElement>) => (\n <svg\n className={cn('animate-spin', className)}\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n);\n","import React from 'react';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils';\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(function Switch({ className, ...props }, ref) {\n return (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n );\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n function TableBody({ className, ...props }, ref) {\n return <tbody className={cn('[&_tr:last-child]:border-0', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n function TableCaption({ className, ...props }, ref) {\n return <caption className={cn('mt-4 text-sm text-muted-foreground', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n function TableCell({ className, ...props }, ref) {\n return <td className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n function TableFooter({ className, ...props }, ref) {\n return (\n <tfoot\n className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n function TableHead({ className, ...props }, ref) {\n return (\n <th\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n function TableHeader({ className, ...props }, ref) {\n return <thead className={cn('[&_tr]:border-b', className)} ref={ref} {...props} />;\n }\n);\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRoot = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(function TableRoot(\n { className, ...props },\n ref\n) {\n return (\n <div className=\"relative w-full overflow-auto\">\n <table className={cn('w-full caption-bottom text-sm', className)} ref={ref} {...props} />\n </div>\n );\n});\n","import React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n function TableRow({ className, ...props }, ref) {\n return (\n <tr\n className={cn('hover:bg-muted/50 border-b transition-colors data-[state=selected]:bg-muted', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import { TableBody } from './TableBody';\nimport { TableCaption } from './TableCaption';\nimport { TableCell } from './TableCell';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { TableHeader } from './TableHeader';\nimport { TableRoot } from './TableRoot';\nimport { TableRow } from './TableRow';\n\nexport const Table = Object.assign(TableRoot, {\n Body: TableBody,\n Caption: TableCaption,\n Cell: TableCell,\n Footer: TableFooter,\n Head: TableHead,\n Header: TableHeader,\n Row: TableRow\n});\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { TabsContent } from './TabsContent';\nimport { TabsList } from './TabsList';\nimport { TabsTrigger } from './TabsTrigger';\n\nexport const Tabs = Object.assign(TabsPrimitive.Root, {\n Content: TabsContent,\n List: TabsList,\n Trigger: TabsTrigger\n});\n","import React from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(function TabsContent({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Content\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(function TabsList({ className, ...props }, ref) {\n return (\n <TabsPrimitive.List\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import React from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Trigger\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { MoonIcon, SunIcon } from 'lucide-react';\n\nimport { useTheme } from '@/hooks/useTheme';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type ThemeToggleProps = Omit<ButtonProps, 'children' | 'size'>;\n\nexport const ThemeToggle = ({ onClick, variant = 'outline', ...props }: ThemeToggleProps) => {\n const [theme, setTheme] = useTheme();\n\n const toggleTheme = () => {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n };\n\n return (\n <Button\n size=\"icon\"\n variant={variant}\n onClick={(event) => {\n toggleTheme();\n onClick?.(event);\n }}\n {...props}\n >\n <SunIcon className=\"rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <MoonIcon className=\"absolute rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n </Button>\n );\n};\n","import React from 'react';\n\nimport { Content } from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/utils';\n\nexport type TooltipContentProps = {\n /** The preferred alignment against the trigger, which may change when collisions occur. */\n align?: 'center' | 'end' | 'start';\n /** The content to display when the user hovers over the tooltip trigger */\n children: React.ReactNode;\n /** Additional CSS classes to add to the component, potentially overriding default styling */\n className?: string;\n /** The distance in pixels from the viewport edges where collision detection should occur */\n collisionPadding?: number;\n /** The distance in pixels from the trigger */\n sideOffset?: number;\n};\n\nexport const TooltipContent = React.forwardRef<React.ElementRef<typeof Content>, TooltipContentProps>(\n function TooltipContent({ className, collisionPadding = 0, sideOffset = 4, ...props }, ref) {\n return (\n <Content\n className={cn(\n 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs 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',\n className\n )}\n collisionPadding={collisionPadding}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n }\n);\n","import React from 'react';\n\nimport { Provider, Root } from '@radix-ui/react-tooltip';\n\nexport type TooltipRootProps = {\n /** The tooltip trigger and content */\n children: React.ReactNode;\n /** The duration from when the mouse enters a tooltip trigger until the tooltip opens. */\n delayDuration?: number;\n /** How much time a user has to enter another trigger without incurring a delay again. */\n skipDelayDuration?: number;\n};\n\nexport const TooltipRoot = ({ children, delayDuration = 0, skipDelayDuration = 300 }: TooltipRootProps) => {\n return (\n <Provider delayDuration={delayDuration} skipDelayDuration={skipDelayDuration}>\n <Root>{children}</Root>\n </Provider>\n );\n};\n","import React from 'react';\n\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type TooltipTriggerProps = Omit<ButtonProps, 'asChild'>;\n\nexport const TooltipTrigger = React.forwardRef<React.ElementRef<typeof Trigger>, TooltipTriggerProps>(\n function TooltipTrigger({ variant = 'outline', ...props }, ref) {\n return (\n <Trigger asChild ref={ref}>\n <Button variant={variant} {...props} />\n </Trigger>\n );\n }\n);\n","import { TooltipContent } from './TooltipContent';\nimport { TooltipRoot } from './TooltipRoot';\nimport { TooltipTrigger } from './TooltipTrigger';\n\nexport const Tooltip = Object.assign(TooltipRoot, {\n Content: TooltipContent,\n Trigger: TooltipTrigger\n});\n"],"mappings":"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","names":["AccordionContent","React","AccordionPrimitive","jsx","React","AccordionItem","React","AccordionPrimitive","jsx","AccordionRoot","React","AccordionPrimitive","jsx","React","AccordionTrigger","Root","Trigger","React","React","jsx","jsxs","React","Button","jsx","React","AlertDialogAction","React","jsx","React","AlertDialogCancel","React","Content","React","jsx","React","AlertDialogOverlay","jsx","jsxs","React","AlertDialogContent","Content","React","jsx","React","AlertDialogDescription","jsx","jsx","React","jsx","React","AlertDialogTitle","Root","Trigger","React","jsx","jsxs","React","ArrowToggle","React","jsx","React","AvatarFallback","React","AvatarPrimitive","jsx","React","AvatarImage","React","AvatarPrimitive","jsx","React","AvatarRoot","cva","jsx","cva","jsx","React","jsx","React","BreadcrumbItem","React","Slot","jsx","React","BreadcrumbLink","Slot","React","jsx","React","BreadcrumbList","React","jsx","React","BreadcrumbPage","React","jsx","BreadcrumbRoot","jsx","React","jsx","React","CardRoot","React","jsx","React","Checkbox","Content","Root","Trigger","React","CommandPrimitive","React","jsx","CommandEmpty","React","CommandPrimitive","jsx","React","CommandGroup","CommandPrimitive","React","CommandPrimitive","jsx","jsxs","React","CommandInput","CommandPrimitive","React","CommandPrimitive","jsx","React","CommandItem","CommandPrimitive","React","CommandPrimitive","jsx","React","CommandList","CommandPrimitive","React","CommandPrimitive","jsx","React","CommandSeparator","CommandPrimitive","jsx","jsx","React","CommandPrimitive","Command","Portal","Root","Trigger","React","CheckIcon","jsx","jsxs","React","ContextMenuCheckboxItem","CheckIcon","React","ContextMenuPrimitive","jsx","React","ContextMenuContent","React","ContextMenuPrimitive","jsx","React","ContextMenuItem","React","ContextMenuPrimitive","jsx","React","ContextMenuLabel","React","ContextMenuPrimitive","jsx","jsxs","React","ContextMenuRadioItem","React","ContextMenuPrimitive","jsx","React","ContextMenuSeparator","jsx","React","ContextMenuPrimitive","jsx","React","ContextMenuSubContent","React","ContextMenuPrimitive","ChevronRightIcon","jsx","jsxs","React","ContextMenuSubTrigger","ChevronRightIcon","Root","Portal","Trigger","React","AnimatePresence","motion","useTranslation","React","jsx","jsxs","Calendar","range","React","Root","React","jsx","React","ScrollBar","jsx","jsxs","React","ScrollArea","Root","jsx","range","jsx","jsxs","React","DatePicker","useTranslation","date","AnimatePresence","motion","Root","Trigger","React","Content","Portal","React","Overlay","jsx","React","DialogOverlay","Overlay","jsx","jsxs","React","DialogContent","Portal","Content","React","Description","jsx","React","DialogDescription","Description","jsx","jsx","React","Title","jsx","React","DialogTitle","Title","Root","Trigger","DrawerPrimitive","React","jsx","jsxs","React","DrawerContent","React","DrawerPrimitive","jsx","React","DrawerDescription","DrawerPrimitive","jsx","jsx","React","DrawerPrimitive","jsx","React","DrawerTitle","DrawerPrimitive","jsx","DrawerPrimitive","React","ChevronDownIcon","jsx","jsxs","React","DropdownButton","ChevronDownIcon","DropdownMenuPrimitive","React","CheckIcon","jsx","jsxs","React","DropdownMenuCheckboxItem","CheckIcon","React","DropdownMenuPrimitive","jsx","React","DropdownMenuContent","React","DropdownMenuPrimitive","jsx","React","DropdownMenuItem","React","DropdownMenuPrimitive","jsx","React","DropdownMenuLabel","React","DropdownMenuPrimitive","CircleIcon","jsx","jsxs","React","DropdownMenuRadioItem","CircleIcon","React","DropdownMenuPrimitive","jsx","React","DropdownMenuSeparator","jsx","React","DropdownMenuPrimitive","jsx","React","DropdownMenuSubContent","React","DropdownMenuPrimitive","ChevronRightIcon","jsx","jsxs","React","DropdownMenuSubTrigger","ChevronRightIcon","useEffect","jsx","jsxs","jsx","useState","useTranslation","jsx","jsx","jsxs","useEffect","useMemo","useState","useCallback","match","useEffect","React","jsx","React","Input","React","cva","jsx","cva","Label","React","React","Content","Portal","jsx","React","PopoverContent","Portal","Content","jsx","jsxs","jsx","jsx","jsx","jsxs","Label","React","RadioGroupPrimitive","React","CircleIcon","jsx","React","RadioGroupItem","CircleIcon","jsx","React","RadioGroup","jsx","jsxs","Label","RadioGroup","value","React","Root","jsx","jsxs","React","Slider","Root","jsx","jsxs","Label","value","jsx","props","jsx","jsxs","useEffect","useEffect","useTranslation","match","jsx","jsxs","value","Label","useTranslation","match","jsx","jsxs","match","useTranslation","value","Label","RadioGroup","jsx","match","props","useEffect","useState","jsx","jsxs","useState","useEffect","Label","value","useEffect","match","jsx","jsxs","Label","jsx","jsxs","Label","jsx","useEffect","match","props","match","jsx","jsxs","Label","useState","jsx","jsxs","useState","Label","cva","jsx","jsxs","cva","Label","RadioGroup","value","jsx","SelectPrimitive","React","SelectPrimitive","React","ChevronDownIcon","jsx","React","SelectScrollDownButton","ChevronDownIcon","React","SelectPrimitive","ChevronUpIcon","jsx","React","SelectScrollUpButton","ChevronUpIcon","jsx","jsxs","React","SelectContent","React","SelectPrimitive","CheckIcon","jsx","jsxs","React","SelectItem","CheckIcon","React","SelectPrimitive","jsx","React","SelectLabel","React","SelectPrimitive","jsx","React","SelectSeparator","React","SelectPrimitive","jsx","React","SelectTrigger","jsx","jsxs","Label","value","React","jsx","React","TextArea","jsx","jsxs","Label","jsx","match","props","jsx","jsx","jsxs","RecordArrayField","useTranslation","useEffect","Label","jsx","useCallback","match","field","jsx","useState","useMemo","useEffect","jsx","jsxs","useTranslation","useState","Root","Trigger","React","Content","jsx","React","HoverCardContent","Content","Root","Trigger","useTranslation","jsx","jsxs","useTranslation","twMerge","jsx","jsxs","twMerge","React","Dialog","Transition","jsx","jsxs","Transition","CheckIcon","clsx","jsx","jsxs","clsx","Transition","CheckIcon","React","Dialog","Transition","XMarkIcon","jsx","jsxs","React","useEffect","useReducer","useRef","useState","clsx","jsx","jsxs","useRef","useState","useEffect","useReducer","React","clsx","useState","useTranslation","range","toBasicISOString","clsx","twMerge","React","Menu","Transition","ChevronDownIcon","clsx","jsx","jsxs","jsx","jsxs","toBasicISOString","twMerge","range","clsx","jsx","jsxs","useState","useTranslation","React","toBasicISOString","useTranslation","Label","jsx","jsxs","createElement","useTranslation","toBasicISOString","Label","React","Group","Menu","Portal","RadioGroup","Sub","React","CheckboxItem","ItemIndicator","CheckIcon","jsx","jsxs","React","MenuBarCheckboxItem","CheckboxItem","ItemIndicator","CheckIcon","React","Content","Portal","jsx","React","MenuBarContent","Portal","Content","React","Item","jsx","React","MenuBarItem","Item","React","Label","jsx","React","MenuBarLabel","Label","React","ItemIndicator","RadioItem","CircleIcon","jsx","jsxs","React","MenuBarRadioItem","RadioItem","ItemIndicator","CircleIcon","React","Root","jsx","React","MenuBarRoot","Root","React","Separator","jsx","React","MenuBarSeparator","Separator","jsx","React","SubContent","jsx","React","MenuBarSubContent","SubContent","React","SubTrigger","ChevronRightIcon","jsx","jsxs","React","MenuBarSubTrigger","SubTrigger","ChevronRightIcon","React","Trigger","jsx","React","MenuBarTrigger","Trigger","Group","Menu","Portal","RadioGroup","Sub","AnimatePresence","motion","XIcon","useTranslation","jsx","jsx","jsxs","useTranslation","AnimatePresence","motion","XIcon","jsx","MoreHorizontalIcon","jsx","jsxs","MoreHorizontalIcon","jsx","jsx","ChevronRightIcon","useTranslation","jsx","jsxs","useTranslation","ChevronRightIcon","useTranslation","jsx","jsxs","useTranslation","jsx","React","jsx","React","Progress","jsx","jsx","jsx","SearchIcon","useTranslation","jsx","jsxs","useTranslation","SearchIcon","React","jsx","Separator","React","Close","Portal","Root","Trigger","React","Close","Content","Overlay","Portal","cva","XIcon","jsx","jsxs","cva","React","SheetContent","Portal","Overlay","Content","Close","XIcon","React","Description","jsx","React","SheetDescription","Description","jsx","jsx","React","Overlay","jsx","React","SheetOverlay","Overlay","React","Title","jsx","React","SheetTitle","Title","Root","Close","Portal","Trigger","jsx","jsx","React","jsx","React","Switch","React","jsx","React","TableBody","React","jsx","React","TableCaption","React","jsx","React","TableCell","React","jsx","React","TableFooter","React","jsx","React","TableHead","React","jsx","React","TableHeader","React","jsx","React","TableRoot","React","jsx","React","TableRow","TabsPrimitive","React","jsx","React","TabsContent","React","TabsPrimitive","jsx","React","TabsList","React","TabsPrimitive","jsx","React","TabsTrigger","jsx","jsxs","React","Content","jsx","React","TooltipContent","Content","Root","jsx","React","Trigger","jsx","React","TooltipTrigger","Trigger","Tooltip"]}