@douglasneuroinformatics/libui 4.2.1 → 4.3.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/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/ActionDropdown/ActionDropdown.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/Chart/Chart.tsx","../src/components/Chart/ChartContainer.tsx","../src/components/Chart/ChartLegendContent.tsx","../src/components/Chart/utils.ts","../src/components/Chart/ChartStyle.tsx","../src/components/Chart/ChartTooltipContent.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/ClientTable/ClientTable.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/ClientTable/ClientTablePagination.tsx","../src/components/Collapsible/Collapsible.tsx","../src/components/Collapsible/CollapsibleRoot.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/CopyButton/CopyButton.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/DialogBody.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/ErrorBoundary/ErrorBoundary.tsx","../src/components/ErrorFallback/ErrorFallback.tsx","../src/components/FileDropzone/FileDropzone.tsx","../src/components/Form/Form.tsx","../src/components/Heading/Heading.tsx","../src/components/Separator/Separator.tsx","../src/components/Form/ErrorMessage.tsx","../src/components/Form/FieldsComponent.tsx","../src/components/Form/DynamicField.tsx","../src/components/Form/StaticField.tsx","../src/components/Form/NumberRecordField.tsx","../src/components/Form/NumberField/NumberField.tsx","../src/components/Form/NumberField/NumberFieldInput.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/RadioGroup/RadioGroup.tsx","../src/components/RadioGroup/RadioGroupItem.tsx","../src/components/Form/NumberField/NumberFieldRadio.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/NumberField/NumberFieldSelect.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/Form/StringField/StringFieldSelect.tsx","../src/components/TextArea/TextArea.tsx","../src/components/Form/StringField/StringFieldTextArea.tsx","../src/components/Form/ScalarField.tsx","../src/components/Form/utils.ts","../src/components/HoverCard/HoverCard.tsx","../src/components/HoverCard/HoverCardContent.tsx","../src/components/LanguageToggle/LanguageToggle.tsx","../src/components/LineGraph/LineGraph.tsx","../src/components/ListboxDropdown/ListboxDropdown.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/OneTimePasswordInput/OneTimePasswordInput.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/Sheet/Sheet.tsx","../src/components/Sheet/SheetBody.tsx","../src/components/Sheet/SheetContent.tsx","../src/components/Sheet/SheetOverlay.tsx","../src/components/Sheet/SheetDescription.tsx","../src/components/Sheet/SheetFooter.tsx","../src/components/Sheet/SheetHeader.tsx","../src/components/Sheet/SheetTitle.tsx","../src/components/Spinner/Spinner.tsx","../src/components/SpinnerIcon/SpinnerIcon.tsx","../src/components/StatisticCard/StatisticCard.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/TabsContent.tsx","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsRoot.tsx","../src/components/Tabs/TabsTrigger.tsx","../src/components/Tabs/Tabs.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 { forwardRef } from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionContent = 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 { forwardRef } from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionItem = 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 { forwardRef } from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nexport const AccordionRoot = 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 { forwardRef } 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 = 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 { forwardRef } from 'react';\n\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownButton = forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n function DropdownButton({ children, className, ...props }, ref) {\n return (\n <button\n className={cn(\n 'border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs focus:ring-1 focus:outline-hidden 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.bind(null), {\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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-xs py-1.5 pr-8 pl-2 text-sm outline-hidden select-none 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 * as 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuItem = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden transition-colors select-none 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuLabel = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden transition-colors select-none 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSeparator = 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 * as 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSubContent = 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 { forwardRef } 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 = 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 'focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none',\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 { cn } from '@/utils';\n\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { DropdownMenuContentProps } from '../DropdownMenu/DropdownMenuContent';\n\ntype ActionDropdownOptions = readonly string[] | { [key: string]: string };\n\ntype ActionDropdownOptionKey<T> = T extends readonly string[]\n ? T[number]\n : T extends { [key: string]: string }\n ? Extract<keyof T, string>\n : never;\n\nexport type ActionDropdownProps<T extends ActionDropdownOptions> = {\n [key: `data-${string}`]: unknown;\n\n align?: DropdownMenuContentProps['align'];\n\n className?: string;\n\n contentClassName?: string;\n\n disabled?: boolean;\n\n /** Callback function invoked when user clicks an option */\n onSelection: (option: ActionDropdownOptionKey<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 triggerClassName?: string;\n\n widthFull?: boolean;\n};\n\n// eslint-disable-next-line react/function-component-definition\nexport function ActionDropdown<const T extends ActionDropdownOptions>({\n align = 'start',\n className,\n contentClassName,\n disabled,\n onSelection,\n options,\n title,\n triggerClassName,\n widthFull,\n ...props\n}: ActionDropdownProps<T>) {\n const optionKeys: readonly string[] = options instanceof Array ? options : Object.keys(options);\n return (\n <DropdownMenu>\n <div className={cn('w-full', className)} {...props}>\n <DropdownMenu.Trigger asChild disabled={disabled}>\n <DropdownButton className={triggerClassName}>{title}</DropdownButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align={align} className={contentClassName} widthFull={widthFull}>\n <DropdownMenu.Group>\n {optionKeys.map((option) => (\n <DropdownMenu.Item\n key={option}\n onClick={() => {\n onSelection(option as ActionDropdownOptionKey<T>);\n }}\n >\n {Array.isArray(options) ? option : (options[option as keyof T] as string)}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </div>\n </DropdownMenu>\n );\n}\n","import { Root, 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.bind(null), {\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 { forwardRef } 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 = 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 * as React from 'react';\n\nimport { Slot, Slottable } from '@radix-ui/react-slot';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } 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 cursor-pointer rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden 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 aspect-square',\n lg: 'h-10 rounded-md px-8 text-base',\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-xs hover:bg-destructive/70',\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-xs',\n primary: 'bg-primary text-primary-foreground shadow-sm hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-xs hover:bg-secondary/10'\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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 { forwardRef } from 'react';\n\nimport { Overlay } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogOverlay = 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 { forwardRef } from 'react';\n\nimport { Description } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogDescription = 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 * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-x-2 gap-y-0.5 sm:flex-row', className)} {...props} />\n);\n","import * as React from 'react';\n\nimport { 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 { forwardRef } from 'react';\n\nimport { Title } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogTitle = 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 { useMemo } from 'react';\nimport * as React from 'react';\n\nimport { ChevronUpIcon } from 'lucide-react';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { Button } from '../Button';\n\nimport 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 'down':\n return 180 + toggleRotation;\n case 'left':\n return 270 + toggleRotation;\n case 'right':\n return 90 + toggleRotation;\n case 'up':\n return 0 + 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 { forwardRef } from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarFallback = 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 { forwardRef } from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarImage = 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 { forwardRef } from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarRoot = 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 * as React from 'react';\n\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-xs border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-hidden 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-sm hover:bg-primary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow-sm 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\ntype 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 };\nexport type { BadgeProps };\n","import * as React from 'react';\n\nimport { 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(function BreadcrumbItem(\n { className, ...props },\n ref\n) {\n return <li className={cn('inline-flex items-center gap-1.5', className)} ref={ref} {...props} />;\n});\n","import { forwardRef } from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbLink = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbList = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbPage = 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 { forwardRef } from 'react';\n\nexport const BreadcrumbRoot = 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 * as React from 'react';\n\nimport { 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 * as 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('bg-card text-card-foreground rounded-xl border shadow-sm', 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-muted-foreground text-sm', 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('leading-none font-semibold tracking-tight', className)} {...props}>\n {children}\n </h3>\n )\n});\n","import { Legend, Tooltip } from 'recharts';\n\nimport { ChartContainer } from './ChartContainer';\nimport { ChartLegendContent } from './ChartLegendContent';\nimport { ChartStyle } from './ChartStyle';\nimport { ChartTooltipContent } from './ChartTooltipContent';\n\nexport const Chart = Object.assign(ChartContainer, {\n Legend,\n LegendContent: ChartLegendContent,\n Style: ChartStyle,\n Tooltip,\n TooltipContent: ChartTooltipContent\n});\n","import { forwardRef, useId } from 'react';\n\nimport { ResponsiveContainer } from 'recharts';\n\nimport { ChartContext } from '@/context/ChartContext';\nimport { cn } from '@/utils';\n\nimport { Chart } from './Chart';\n\nimport type { ChartConfig } from './types';\n\nexport const ChartContainer = forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n children: React.ComponentProps<typeof ResponsiveContainer>['children'];\n config: ChartConfig;\n }\n>(function ChartContainer({ children, className, config, id, ...props }, ref) {\n const uniqueId = useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n className={cn(\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n data-chart={chartId}\n ref={ref}\n {...props}\n >\n <Chart.Style config={config} id={chartId} />\n <ResponsiveContainer>{children}</ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\n","import { forwardRef } from 'react';\n\nimport type { LegendProps } from 'recharts';\n\nimport { useChart } from '@/hooks/useChart';\nimport { cn } from '@/utils';\n\nimport { getPayloadConfigFromPayload } from './utils';\n\nexport const ChartLegendContent = forwardRef<\n HTMLDivElement,\n Pick<LegendProps, 'payload' | 'verticalAlign'> &\n React.ComponentProps<'div'> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(function ChartLegendContent({ className, hideIcon = false, nameKey, payload, verticalAlign = 'bottom' }, ref) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}\n ref={ref}\n >\n {payload.map((item) => {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n const key = `${nameKey ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n className={cn('flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground')}\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n key={item.value}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n});\n","import type { ChartConfig } from './types';\n\nexport function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n}\n","import type { ChartConfig } from './types';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { dark: '.dark', light: '' } as const;\n\nexport const ChartStyle = ({ config, id }: { config: ChartConfig; id: string }) => {\n const colorConfig = Object.entries(config).filter(([_, config]) => config.theme ?? config.color);\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`\n )\n .join('\\n')\n }}\n />\n );\n};\n","import React, { forwardRef } from 'react';\n\nimport { Tooltip } from 'recharts';\n\nimport { useChart } from '@/hooks/useChart';\nimport { cn } from '@/utils';\n\nimport { getPayloadConfigFromPayload } from './utils';\n\nexport const ChartTooltipContent = forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> &\n React.ComponentProps<typeof Tooltip> & {\n hideIndicator?: boolean;\n hideLabel?: boolean;\n indicator?: 'dashed' | 'dot' | 'line';\n labelKey?: string;\n nameKey?: string;\n }\n>(function ChartLegendContent(\n {\n active,\n className,\n color,\n formatter,\n hideIndicator = false,\n hideLabel = false,\n indicator = 'dot',\n label,\n labelClassName,\n labelFormatter,\n labelKey,\n nameKey,\n payload\n },\n ref\n) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item!.dataKey ?? item!.name ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = !labelKey && typeof label === 'string' ? config[label]?.label || label : itemConfig?.label;\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n className={cn(\n 'border-border/50 grid min-w-[8rem] items-start gap-1.5 rounded-lg border bg-background px-2.5 py-1.5 text-xs shadow-xl',\n className\n )}\n ref={ref}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const indicatorColor = color ?? item.payload.fill ?? item.color;\n\n return (\n <div\n className={cn(\n 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center'\n )}\n key={item.dataKey}\n >\n {formatter && item?.value !== undefined && item.name ? (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]', {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'my-0.5': nestLabel && indicator === 'dashed',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'w-1': indicator === 'line'\n })}\n style={\n {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n '--color-bg': indicatorColor,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n '--color-border': indicatorColor\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn('flex flex-1 justify-between leading-none', nestLabel ? 'items-end' : 'items-center')}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n});\n","import { forwardRef } 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 = 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 border-primary focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground h-4 w-4 shrink-0 rounded-xs border shadow-sm focus-visible:ring-1 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\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 { useState } from 'react';\nimport * as React from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport { range } from 'lodash-es';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nimport { DropdownMenu } from '../DropdownMenu';\nimport { Table } from '../Table';\nimport { ClientTablePagination } from './ClientTablePagination';\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\nexport type ClientTableEntry = { [key: string]: unknown };\n\nexport type ClientFieldFactory<T extends ClientTableEntry = ClientTableEntry> = (entry: T) => string;\n\nexport type ClientTableColumn<T extends ClientTableEntry> = {\n /** How to determine the values for column */\n field: ClientFieldFactory<T> | keyof T;\n\n /** Override the default formatter for this field */\n formatter?: (value: any) => string;\n\n /** The label to be displayed on the header */\n label: string;\n};\n\nexport type ClientTableDropdownOptions<T extends ClientTableEntry> = {\n icon?: React.ComponentType<Omit<React.SVGProps<SVGSVGElement>, 'ref'>>;\n label: string;\n onSelection: (column: ClientTableColumn<T>) => void;\n}[];\n\nexport type ClientTableColumnProps<T extends ClientTableEntry> = {\n column: ClientTableColumn<T>;\n dropdownOptions?: ClientTableDropdownOptions<T>;\n};\n\nexport type ClientTableProps<T extends ClientTableEntry> = {\n [key: `data-${string}`]: unknown;\n className?: string;\n columnDropdownOptions?: ClientTableDropdownOptions<T>;\n columns: ClientTableColumn<T>[];\n data: T[];\n entriesPerPage?: number;\n minRows?: number;\n noWrap?: boolean;\n onEntryClick?: (entry: T) => void;\n};\n\nexport const ClientTable = <T extends ClientTableEntry>({\n className,\n columnDropdownOptions,\n columns,\n data,\n entriesPerPage = 10,\n minRows,\n noWrap,\n onEntryClick,\n ...props\n}: ClientTableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(1);\n\n const pageCount = Math.max(Math.ceil(data.length / entriesPerPage), 1);\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 const nRows = Math.max(currentEntries.length, minRows ?? -1);\n\n return (\n <div className={className} {...props} data-testid=\"ClientTable\">\n <div className=\"bg-card text-muted-foreground rounded-md border tracking-tight shadow-xs\">\n <Table>\n <Table.Header>\n <Table.Row>\n {columns.map((column, i) => (\n <Table.Head className=\"text-foreground whitespace-nowrap\" key={i}>\n {columnDropdownOptions ? (\n <DropdownMenu>\n <DropdownMenu.Trigger className=\"flex items-center justify-between gap-3\">\n <span>{column.label}</span>\n <ChevronDownIcon />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Group>\n {columnDropdownOptions.map((option) => {\n const Icon = option.icon;\n return (\n <DropdownMenu.Item\n data-testid={option.label + '-test-id'}\n key={option.label}\n onClick={() => {\n option.onSelection(column);\n }}\n >\n {Icon && <Icon className=\"mr-2\" height={16} width={16} />}\n {option.label}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : (\n column.label\n )}\n </Table.Head>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {range(nRows).map((i) => {\n const entry = currentEntries[i] as T | undefined;\n const onClick = onEntryClick && entry ? () => onEntryClick(entry) : undefined;\n return (\n <Table.Row\n className={cn(onClick && 'cursor-pointer hover:backdrop-brightness-95')}\n key={i}\n onClick={onClick}\n >\n {columns.map(({ field, formatter }, j) => {\n let value: unknown;\n if (!entry) {\n value = 'NA';\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 <Table.Cell\n className={cn(\n 'leading-none text-ellipsis',\n !entry && 'opacity-0', // safari does not include borders if invisible\n noWrap && 'max-w-3xl overflow-hidden text-ellipsis whitespace-nowrap'\n )}\n key={j}\n >\n {formattedValue}\n </Table.Cell>\n );\n })}\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table>\n </div>\n <ClientTablePagination\n currentPage={currentPage}\n firstEntry={firstEntry}\n lastEntry={lastEntry}\n pageCount={pageCount}\n setCurrentPage={setCurrentPage}\n totalEntries={data.length}\n />\n </div>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableBody = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCaption = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n function TableCell({ className, ...props }, ref) {\n return (\n <td className={cn('px-6 py-3 align-middle [&:has([role=checkbox])]:pr-0', className)} ref={ref} {...props} />\n );\n }\n);\n","import { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableFooter = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHead = forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n function TableHead({ className, ...props }, ref) {\n return (\n <th\n className={cn(\n 'px-6 py-3 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHeader = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRoot = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRow = forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(function TableRow(\n { className, ...props },\n ref\n) {\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","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 { useTranslation } from '@/hooks';\n\nimport { Button } from '../Button';\n\nexport type ClientPagePaginationProps = {\n currentPage: number;\n firstEntry: number;\n lastEntry: number;\n pageCount: number;\n setCurrentPage: (value: number) => void;\n totalEntries: number;\n};\n\nexport const ClientTablePagination = ({\n currentPage,\n firstEntry,\n lastEntry,\n pageCount,\n setCurrentPage,\n totalEntries\n}: ClientPagePaginationProps) => {\n const { t } = useTranslation('libui');\n return (\n <div className=\"flex items-center justify-between py-3\">\n <div className=\"hidden sm:block\">\n <p\n className=\"text-sm font-medium text-muted-foreground\"\n data-testid=\"page-numbers\"\n >{`${firstEntry} - ${lastEntry} / ${totalEntries}`}</p>\n </div>\n <div className=\"flex flex-1 justify-between gap-3 sm:justify-end\">\n <Button\n data-testid=\"first-page-button\"\n disabled={currentPage === 1}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(1);\n }}\n >\n {t('pagination.firstPage')}\n </Button>\n <Button\n data-testid=\"previous-page-button\"\n disabled={currentPage === 1}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(currentPage - 1);\n }}\n >\n {t('pagination.previous')}\n </Button>\n <Button\n data-testid=\"next-page-button\"\n disabled={currentPage === pageCount}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(currentPage + 1);\n }}\n >\n {t('pagination.next')}\n </Button>\n <Button\n data-testid=\"last-page-button\"\n disabled={currentPage === pageCount}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(pageCount);\n }}\n >\n {t('pagination.lastPage')}\n </Button>\n </div>\n </div>\n );\n};\n","import { Content, Trigger } from '@radix-ui/react-collapsible';\n\nimport { CollapsibleRoot } from './CollapsibleRoot';\n\nexport const Collapsible = Object.assign(CollapsibleRoot, {\n Content,\n Trigger\n});\n","import { forwardRef } from 'react';\n\nimport { Root } from '@radix-ui/react-collapsible';\n\nexport const CollapsibleRoot = forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function CollapsibleRoot(props, ref) {\n return <Root ref={ref} {...props} />;\n }\n);\n","import * as React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport type { Simplify } from 'type-fest';\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\ntype CommandRootProps = Simplify<React.ComponentPropsWithoutRef<typeof CommandPrimitive>>;\n\nconst CommandRoot = React.forwardRef<React.ElementRef<typeof CommandPrimitive>, CommandRootProps>(function Command(\n { className, ...props },\n ref\n) {\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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nexport const CommandEmpty = 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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandGroup = 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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const CommandInput = 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 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandItem = 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 'aria-selected:bg-accent aria-selected:text-accent-foreground relative flex cursor-pointer items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandList = 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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandSeparator = 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 * as 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.bind(null), {\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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuContent = 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuItem = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuLabel = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSeparator = 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 * as 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSubContent = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none',\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, { useState } from 'react';\n\nimport { ClipboardCheckIcon, ClipboardListIcon } from 'lucide-react';\nimport { AnimatePresence, motion } from 'motion/react';\nimport { match } from 'ts-pattern';\n\nimport { Button } from '../Button';\n\nimport type { ButtonProps } from '../Button';\n\nexport const CopyButton: React.FC<{ size?: ButtonProps['size']; text: string; variant?: ButtonProps['variant'] }> = ({\n size,\n text,\n variant\n}) => {\n const [state, setState] = useState<'READY' | 'SUCCESS'>('READY');\n\n return (\n <Button\n size={size ?? 'icon'}\n type=\"button\"\n variant={variant}\n onClick={() => {\n if (state === 'READY') {\n navigator.clipboard\n .writeText(text)\n .then(() => setState('SUCCESS'))\n .catch(console.error);\n }\n }}\n onMouseLeave={() => {\n setState('READY');\n }}\n >\n <AnimatePresence mode=\"popLayout\">\n <motion.div\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={state}\n transition={{ duration: 0.1 }}\n >\n {match(state)\n .with('READY', () => <ClipboardListIcon />)\n .with('SUCCESS', () => <ClipboardCheckIcon />)\n .exhaustive()}\n </motion.div>\n </AnimatePresence>\n </Button>\n );\n};\n","import { useReducer, useState } from 'react';\nimport * as React from 'react';\n\nimport { AnimatePresence, motion } from 'motion/react';\n\nimport { useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nimport { ArrowToggle } from '../ArrowToggle';\nimport { Card } from '../Card';\nimport { Calendar, CALENDAR_ANIMATION_DURATION } 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 'decrement':\n newDate.setMonth(newDate.getMonth() - 1);\n break;\n case 'increment':\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 { forwardRef } from 'react';\n\nimport { range } from 'lodash-es';\nimport { AnimatePresence, motion } from 'motion/react';\n\nimport { useTranslation } from '@/hooks';\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 = 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 { forwardRef } 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 = 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 { forwardRef } from 'react';\n\nimport { ScrollAreaScrollbar, ScrollAreaThumb } from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/utils';\n\nexport const ScrollBar = 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 { DialogBody } from './DialogBody';\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.bind(null), {\n Body: DialogBody,\n Content: DialogContent,\n Description: DialogDescription,\n Footer: DialogFooter,\n Header: DialogHeader,\n Title: DialogTitle,\n Trigger\n});\n","import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DialogBody = ({\n children,\n className,\n ...props\n}: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => {\n return (\n <div className={cn('py-4', className)} {...props}>\n {children}\n </div>\n );\n};\n","import { forwardRef } 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 = 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 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"h-4 w-4\" />\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogOverlay = 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 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80 duration-200',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogDescription = 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 * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-x-2 gap-y-0.5 sm:flex-row', className)} {...props} />\n);\n","import * as React from 'react';\n\nimport { 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 { forwardRef } from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogTitle = forwardRef<React.ElementRef<typeof Title>, React.ComponentPropsWithoutRef<typeof Title>>(\n function DialogTitle({ className, ...props }, ref) {\n return (\n <Title className={cn('text-lg font-semibold leading-none tracking-tight', className)} ref={ref} {...props} />\n );\n }\n);\n","import * as 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 { forwardRef } from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerContent = 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 { forwardRef } from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerDescription = 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 * as React from 'react';\n\nimport { 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 * as 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 { forwardRef } from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerTitle = 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 * as React from 'react';\n\nimport { 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\n className=\"flex min-h-screen flex-col items-center justify-center gap-1 p-3 text-center\"\n data-testid=\"error-fallback\"\n >\n <h1 className=\"text-muted-foreground text-sm font-semibold tracking-wide uppercase\">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=\"text-muted-foreground mt-2 max-w-prose text-sm 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 { useCallback } from 'react';\n\nimport { UploadIcon } from 'lucide-react';\nimport { useDropzone } from 'react-dropzone';\nimport type { FileRejection } from 'react-dropzone';\n\nimport { useTranslation } from '@/hooks/useTranslation';\nimport { cn } from '@/utils';\n\nexport type FileDropzoneProps = {\n acceptedFileTypes: {\n [key: string]: string[];\n };\n className?: string;\n description?: string;\n file: File | null;\n setFile: (file: File) => void;\n titles?: {\n dragActive: string;\n dragInactive: string;\n };\n};\n\nexport const FileDropzone = ({\n acceptedFileTypes,\n className,\n description,\n file,\n setFile,\n titles\n}: FileDropzoneProps) => {\n const { t } = useTranslation();\n\n const handleDrop = useCallback(\n (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n for (const { errors, file } of rejectedFiles) {\n console.error(errors, file);\n }\n setFile(acceptedFiles[0]!);\n },\n [setFile]\n );\n const { getInputProps, getRootProps, isDragActive } = useDropzone({\n accept: acceptedFileTypes,\n maxFiles: 1,\n onDrop: handleDrop\n });\n\n const dragActiveTitle =\n titles?.dragActive ??\n t({\n en: 'File to upload',\n fr: 'fichier à télécharger'\n });\n\n const dragInactiveTitle =\n titles?.dragInactive ??\n t({\n en: 'Drag and drop files or click on box to upload',\n fr: 'Glissez-déposez les fichiers ou cliquez sur la case pour les télécharger'\n });\n\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center rounded-md border border-dashed border-slate-400 p-4 dark:border-slate-600',\n className\n )}\n data-testid=\"dropzone\"\n {...getRootProps()}\n >\n <div className=\"flex flex-col items-center justify-center gap-3\">\n <UploadIcon style={{ height: 24, strokeWidth: 2, width: 24 }} />\n <div className=\"flex flex-col items-center gap-1 text-center\">\n <h3 className=\"text-lg font-semibold tracking-tight\" data-testid=\"dropzone-title\">\n {file ? file.name : isDragActive ? dragActiveTitle : dragInactiveTitle}\n </h3>\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n </div>\n <input {...getInputProps()} />\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type {\n FormContent,\n FormDataType,\n FormFields,\n PartialFormDataType,\n PartialNullableFormDataType\n} from '@douglasneuroinformatics/libui-form-types';\nimport { get, set } from 'lodash-es';\nimport { twMerge } from 'tailwind-merge';\nimport type { Promisable } from 'type-fest';\nimport { z } from 'zod';\n\nimport { useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { Separator } from '../Separator';\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.TypeOf<TSchema> = z.TypeOf<TSchema>> = {\n [key: `data-${string}`]: unknown;\n additionalButtons?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n className?: string;\n content: FormContent<TData>;\n customStyles?: {\n resetBtn?: string;\n submitBtn?: string;\n };\n fieldsFooter?: React.ReactNode;\n id?: string;\n initialValues?: PartialNullableFormDataType<NoInfer<TData>>;\n onBeforeSubmit?:\n | ((data: NoInfer<TData>) => Promisable<{ errorMessage: string; success: false } | { success: true }>)\n | null;\n onError?: (error: z.ZodError<NoInfer<TData>>) => void;\n onSubmit: (data: NoInfer<TData>) => Promisable<void>;\n preventResetValuesOnReset?: boolean;\n readOnly?: boolean;\n resetBtn?: boolean;\n revalidateOnBlur?: boolean;\n submitBtnLabel?: string;\n suspendWhileSubmitting?: boolean;\n validationSchema: z.ZodType<TData>;\n};\n\nconst Form = <TSchema extends z.ZodType<FormDataType>, TData extends z.TypeOf<TSchema> = z.TypeOf<TSchema>>({\n additionalButtons,\n className,\n content,\n customStyles,\n fieldsFooter,\n id,\n initialValues,\n onBeforeSubmit,\n onError,\n onSubmit,\n preventResetValuesOnReset,\n readOnly,\n resetBtn,\n revalidateOnBlur,\n submitBtnLabel,\n suspendWhileSubmitting,\n validationSchema,\n ...props\n}: FormProps<TSchema, TData>) => {\n const { resolvedLanguage, t } = useTranslation('libui');\n const [rootErrors, setRootErrors] = useState<string[]>([]);\n const [errors, setErrors] = useState<FormErrors<TData>>({});\n const [values, setValues] = useState<PartialFormDataType<TData>>(\n initialValues ? getInitialValues(initialValues) : {}\n );\n const [isSubmitting, setIsSubmitting] = useState(false);\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 const current = get(fieldErrors, issue.path) as string[] | undefined;\n if (current) {\n current.push(issue.message);\n } else {\n set(fieldErrors, issue.path, [issue.message]);\n }\n } else {\n rootErrors.push(issue.message);\n }\n }\n setErrors(fieldErrors);\n setRootErrors(rootErrors);\n if (onError) {\n onError(error);\n }\n };\n\n const reset = () => {\n setRootErrors([]);\n setErrors({});\n if (!preventResetValuesOnReset) {\n setValues({});\n }\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const result = await validationSchema.safeParseAsync(values);\n if (!result.success) {\n console.error(result.error.issues);\n handleError(result.error);\n return;\n }\n if (onBeforeSubmit) {\n const beforeSubmitResult = await onBeforeSubmit(result.data);\n if (!beforeSubmitResult.success) {\n setErrors({});\n setRootErrors([beforeSubmitResult.errorMessage]);\n return;\n }\n }\n\n try {\n setIsSubmitting(true);\n await Promise.all([\n onSubmit(result.data),\n new Promise<void>((resolve) => {\n return suspendWhileSubmitting ? setTimeout(resolve, 500) : resolve();\n })\n ]);\n reset();\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const isGrouped = Array.isArray(content);\n\n const revalidate = () => {\n const hasErrors = Object.keys(errors).length > 0 || rootErrors.length;\n if (hasErrors) {\n validationSchema\n .safeParseAsync(values)\n .then((result) => {\n if (!result.success) {\n handleError(result.error);\n }\n })\n .catch(console.error);\n }\n };\n\n useEffect(() => {\n setErrors({});\n setRootErrors([]);\n }, [resolvedLanguage]);\n\n const isSuspended = Boolean(suspendWhileSubmitting && isSubmitting);\n\n return (\n <form\n autoComplete=\"off\"\n className={twMerge('relative flex w-full flex-col', !isGrouped && 'gap-6', className)}\n id={id}\n onBlur={revalidateOnBlur ? revalidate : undefined}\n onSubmit={(event) => void handleSubmit(event)}\n {...props}\n >\n {isSubmitting && <div className=\"absolute z-10 h-full w-full cursor-wait\" />}\n {isGrouped ? (\n content.map((fieldGroup, i) => {\n return (\n <>\n <div className=\"flex flex-col gap-6 [&:not(:first-child)]:pt-8\" key={i}>\n <div className=\"flex flex-col gap-1\">\n {fieldGroup.title && (\n <Heading className=\"text-base\" variant=\"h4\">\n {fieldGroup.title}\n </Heading>\n )}\n {fieldGroup.description && (\n <p className=\"text-muted-foreground text-sm leading-tight italic\">{fieldGroup.description}</p>\n )}\n </div>\n <FieldsComponent\n errors={errors}\n fields={fieldGroup.fields as FormFields<TData>}\n readOnly={readOnly}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n </div>\n <Separator className=\"mt-8\" />\n </>\n );\n })\n ) : (\n <FieldsComponent\n errors={errors}\n fields={content}\n readOnly={readOnly}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n )}\n {Boolean(rootErrors.length) && <ErrorMessage className=\"-mt-3\" error={rootErrors} />}\n {fieldsFooter}\n <div className=\"flex w-full gap-3\">\n {additionalButtons?.left}\n {/** Note - aria-label is used for testing in downstream packages */}\n <Button\n aria-label=\"Submit\"\n className={cn('flex w-full items-center justify-center gap-2', customStyles?.submitBtn)}\n disabled={readOnly || isSuspended}\n type=\"submit\"\n variant=\"primary\"\n >\n {submitBtnLabel ?? t('form.submit')}\n <svg\n className={cn('hidden h-4 w-4 animate-spin', isSuspended && 'block')}\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 >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n </Button>\n {resetBtn && (\n <Button\n aria-label=\"Reset\"\n className={cn('block w-full', customStyles?.resetBtn)}\n disabled={readOnly}\n type=\"button\"\n variant=\"secondary\"\n onClick={reset}\n >\n {t('form.reset')}\n </Button>\n )}\n {additionalButtons?.right}\n </div>\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 <h5 className={cn('text-base font-semibold tracking-tight', className)}>{children}</h5>;\n default:\n throw new Error(`Unhandled heading variant: ${variant satisfies never}`);\n }\n};\n","import { forwardRef } from 'react';\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils';\n\nexport const Separator = 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 * as React from 'react';\n\nimport { CircleAlertIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ErrorMessage: React.FC<{ className?: string; error?: null | string[] }> = ({ className, error }) => {\n return error ? (\n <div className=\"flex flex-col gap-1.5\">\n {error.map((message) => (\n <div className={cn('text-destructive flex w-full items-center text-sm font-medium', className)} key={message}>\n <CircleAlertIcon className=\"mr-1\" style={{ strokeWidth: '2px' }} />\n <span data-testid=\"error-message-text\">{message}</span>\n </div>\n )) ?? null}\n </div>\n ) : null;\n};\n","import * as React from 'react';\n\nimport 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 readOnly?: boolean;\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 { useEffect, useMemo, useState } from 'react';\nimport * as React 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 readOnly?: boolean;\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 readOnly,\n setValues,\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.call(undefined, values);\n }, [dependentValues, field.render]);\n\n useEffect(() => {\n if (!staticField) {\n setValues((prevValues) => ({ ...prevValues, [name]: undefined }));\n }\n }, [staticField]);\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 (\n <StaticField {...props} field={staticField} name={name} readOnly={readOnly} setValues={setValues} values={values} />\n );\n};\n","import { useCallback } from 'react';\nimport * as React 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 } from './ScalarField';\n\nimport type { ScalarFieldProps } from './ScalarField';\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 readOnly?: boolean;\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 readOnly,\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 readOnly={readOnly}\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 readOnly={readOnly}\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 readOnly={readOnly}\n setError={setError}\n setValue={setValue}\n value={values[name] as ScalarFieldValue}\n />\n ));\n};\n","import { useEffect, useRef } 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 disabled,\n error: recordError,\n items,\n label,\n options,\n readOnly,\n setError: setRecordError,\n setValue: setRecordValue,\n value: recordValue\n}: NumberRecordFieldProps<T>) => {\n const optionsRef = useRef(options);\n\n useEffect(() => {\n if (!recordValue) {\n setRecordValue({});\n }\n }, []);\n\n useEffect(() => {\n if (optionsRef.current !== options) {\n setRecordValue({});\n optionsRef.current = options;\n }\n }, [options]);\n\n if (!recordValue) {\n return null;\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"flex flex-col gap-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 readOnly={disabled || readOnly}\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 } from './NumberFieldInput';\nimport { NumberFieldRadio } from './NumberFieldRadio';\nimport { NumberFieldSelect } from './NumberFieldSelect';\nimport { NumberFieldSlider } from './NumberFieldSlider';\n\nimport type { NumberFieldInputProps } from './NumberFieldInput';\nimport type { NumberFieldRadioProps } from './NumberFieldRadio';\nimport 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 .with({ variant: 'select' }, (props) => <NumberFieldSelect {...props} />)\n .exhaustive();\n};\n","import { useEffect, useId, useRef, useState } from 'react';\n\nimport { parseNumber } from '@douglasneuroinformatics/libjs';\nimport 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 disabled,\n error,\n label,\n max = Number.MAX_SAFE_INTEGER,\n min = Number.MIN_SAFE_INTEGER,\n name,\n readOnly,\n setValue,\n value\n}: NumberFieldInputProps) => {\n const id = useId();\n const [inputValue, setInputValue] = useState(value?.toString() ?? '');\n const valueRef = useRef<number | undefined>(value);\n\n const parseInputValue = (value: string) => {\n const isSignOrEmpty = /^[+-]?$/.test(value);\n if (isSignOrEmpty) {\n return undefined;\n } else {\n const parsedValue = parseNumber(value);\n if (parsedValue >= min && parsedValue <= max) {\n return parsedValue;\n }\n }\n return NaN;\n };\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const updatedValue = parseInputValue(event.target.value);\n if (Number.isNaN(updatedValue)) {\n return;\n }\n setInputValue(event.target.value);\n setValue(updatedValue);\n valueRef.current = updatedValue;\n };\n\n useEffect(() => {\n if (valueRef.current === value) {\n return;\n }\n const updatedInputValue = value?.toString() ?? '';\n setInputValue(updatedInputValue);\n valueRef.current = value;\n }, [value]);\n\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={id}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n id={id}\n max={max}\n min={min}\n name={name}\n type=\"text\"\n value={inputValue}\n onChange={handleChange}\n />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import * as 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 'border-input placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-80 focus-visible:ring-1 focus-visible:outline-hidden 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 { forwardRef } from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } 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 aria-disabled:cursor-not-allowed aria-disabled:opacity-70'\n);\n\nexport const Label = 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 * as React from 'react';\n\nimport { 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 tabIndex={-1}>\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.bind(null), {\n Content: PopoverContent,\n Trigger: PopoverTrigger\n});\n","import * as 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 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border px-3 py-1.5 shadow-md outline-hidden',\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 * as React from 'react';\n\nexport const FieldGroupRoot: React.FC<{ children: React.ReactNode; name: string }> = ({ children, name }) => (\n <div className=\"flex flex-col gap-3 @container\" data-field-group={name}>\n {children}\n </div>\n);\n","import * as React from 'react';\n\nexport 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 * as 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 { forwardRef } 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 = 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 'border-primary text-primary focus-visible:ring-ring flex aspect-square h-4 w-4 items-center justify-center rounded-full border shadow-sm focus:outline-hidden focus-visible:ring-1 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, { options: object }>\n>;\n\nexport const NumberFieldRadio = ({\n description,\n disableAutoPrefix,\n disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: NumberFieldRadioProps) => {\n const optionsCount = Object.keys(options).length;\n\n return (\n <FieldGroup name={name}>\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((val) => {\n const text = (disableAutoPrefix ? '' : `${val} - `) + options[val];\n return (\n <div className=\"flex items-center gap-2\" key={val}>\n <RadioGroup.Item disabled={disabled || readOnly} id={`${name}-${val}`} value={val.toString()} />\n <Label\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-${val}`}\n >\n {text}\n </Label>\n </div>\n );\n })}\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\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.bind(null), {\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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-xs py-1.5 pr-8 pl-2 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectLabel = 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 { forwardRef } from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectSeparator = 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 { forwardRef } from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { DropdownButton } from '../DropdownButton';\n\nexport const SelectTrigger = 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 { NumberFormField } 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';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldSelectProps<T extends number = number> = Simplify<\n BaseFieldComponentProps<T> & Extract<NumberFormField<T>, { options: object }>\n>;\n\nexport const NumberFieldSelect = <T extends number = number>({\n description,\n disableAutoPrefix,\n disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: NumberFieldSelectProps<T>) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Select name={name} value={value?.toString() ?? ''} onValueChange={(value) => setValue(parseFloat(value) as T)}>\n <Select.Trigger data-testid={`${name}-select-trigger`} disabled={disabled || readOnly}>\n <Select.Value />\n </Select.Trigger>\n <Select.Content data-testid={`${name}-select-content`}>\n {Object.keys(options).map((option) => {\n // Option needs to be type number (this was a design flaw), but is actually always coerced to string anyways\n const text = (disableAutoPrefix ? '' : `${option} - `) + options[option as any as T];\n return (\n <Select.Item data-testid={`${name}-select-item-${option}`} key={option} value={option}>\n {text}\n </Select.Item>\n );\n })}\n </Select.Content>\n </Select>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { Range, Root, Thumb, Track } from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils';\n\nexport const Slider = forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function Slider({ className, disabled, ...props }, ref) {\n return (\n <Root\n className={cn('relative flex w-full touch-none items-center py-1.5 select-none', className)}\n disabled={disabled}\n ref={ref}\n {...props}\n >\n <Track\n aria-disabled={disabled}\n className=\"bg-primary relative h-1.5 w-full grow overflow-hidden rounded-full opacity-15 aria-disabled:cursor-not-allowed aria-disabled:opacity-10\"\n data-testid=\"slider-track\"\n >\n <Range className=\"bg-primary absolute h-full\" />\n </Track>\n <Thumb\n aria-disabled={disabled}\n className=\"bg-background focus-visible:ring-ring block h-4 w-4 rounded-full border border-slate-500 shadow-sm transition-colors focus-visible:ring-1 focus-visible:outline-hidden aria-disabled:cursor-not-allowed\"\n data-testid=\"slider-thumb\"\n />\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 disabled,\n error,\n label,\n max,\n min,\n name,\n readOnly,\n setValue,\n value\n}: NumberFieldSliderProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Slider\n disabled={disabled || readOnly}\n max={max}\n min={min}\n name={name}\n value={[value ?? 0]}\n onValueChange={([value]) => setValue(value)}\n />\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, useRef } from 'react';\n\nimport type { RecordArrayFieldValue, RecordArrayFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { MinusCircleIcon, PlusCircleIcon } from 'lucide-react';\nimport type { Simplify } from 'type-fest';\n\nimport { useTranslation } from '@/hooks';\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 disabled,\n error: arrayError,\n fieldset,\n label,\n readOnly,\n setError: setArrayError,\n setValue: setArrayValue,\n value: arrayValue\n}: RecordArrayFieldProps) {\n const fieldsetRef = useRef(fieldset);\n const { t } = useTranslation('libui');\n\n const createNewRecord = () => Object.fromEntries(Object.keys(fieldset).map((fieldName) => [fieldName, undefined]));\n\n useEffect(() => {\n if (!arrayValue) {\n setArrayValue([createNewRecord()]);\n }\n }, []);\n\n useEffect(() => {\n if (fieldsetRef.current !== fieldset) {\n setArrayValue([createNewRecord()]);\n fieldsetRef.current = fieldset;\n }\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=\"flex flex-col gap-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"flex flex-col gap-6\">\n {arrayValue.map((fields, i) => (\n <div className=\"flex flex-col gap-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.call(undefined, fields) : field;\n if (!fieldProps) {\n return null;\n }\n return (\n <ScalarField\n error={arrayError?.[i]?.[name]}\n field={{\n ...fieldProps,\n disabled: disabled || fieldProps.disabled\n }}\n key={name}\n name={name}\n readOnly={disabled || readOnly}\n setError={(error) => {\n const newArrayError = arrayError ? [...arrayError] : [];\n newArrayError[i] ??= {};\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 disabled={disabled || readOnly} type=\"button\" variant=\"outline\" onClick={appendField}>\n {t('form.append')}\n <PlusCircleIcon className=\"ml-2\" />\n </Button>\n <Button disabled={disabled || readOnly} 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 } from './BooleanFieldCheckbox';\nimport { BooleanFieldRadio } from './BooleanFieldRadio';\n\nimport type { BooleanFieldCheckboxProps } from './BooleanFieldCheckbox';\nimport 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 { Checkbox } from '@/components/Checkbox';\nimport { Label } from '@/components/Label';\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 = ({\n disabled,\n error,\n label,\n name,\n readOnly,\n setValue,\n value\n}: BooleanFieldCheckboxProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Checkbox\n checked={Boolean(value)}\n disabled={disabled || readOnly}\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 { match } from 'ts-pattern';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\nimport { useTranslation } from '@/hooks';\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 = ({\n disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: 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 name={name}>\n <Label>{label}</Label>\n <RadioGroup\n disabled={disabled || readOnly}\n name={name}\n value={stringifyBoolean(value)}\n onValueChange={handleValueChange}\n >\n <FieldGroup.Row>\n <RadioGroup.Item id={`${name}-true`} value=\"true\" />\n <Label\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-true`}\n >\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\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-false`}\n >\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';\n\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 = ({ disabled, error, label, name, readOnly, setValue, value }: DateFieldProps) => {\n const [isDatePickerOpen, setIsDatePickerOpen] = useState(false);\n const [isInputFocused, setIsInputFocused] = useState(false);\n const [inputValue, setInputValue] = useState(value ? toBasicISOString(value) : '');\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 name={name}>\n <Label htmlFor={name}>{label}</Label>\n <Popover open={isDatePickerOpen} onOpenChange={setIsDatePickerOpen}>\n <Popover.Trigger>\n <Input\n autoComplete=\"off\"\n data-testid=\"date-input\"\n disabled={disabled || readOnly}\n name={name}\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 disabled,\n error,\n label,\n name,\n onCheckedChange,\n options,\n readOnly,\n value\n}: SetFieldListboxProps<T>) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <div className=\"grid gap-2\">\n {Object.keys(options).map((option) => (\n <FieldGroup.Row key={option}>\n <Checkbox\n checked={value?.has(option as T) ?? false}\n disabled={disabled || readOnly}\n id={`${name}-${option}`}\n onCheckedChange={(checked) => {\n onCheckedChange(option as T, !checked);\n }}\n />\n <Label className=\"font-normal text-muted-foreground\" htmlFor={`${name}-${option}`}>\n {options[option as T]}\n </Label>\n </FieldGroup.Row>\n ))}\n </div>\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 disabled,\n error,\n label,\n name,\n onCheckedChange,\n options,\n readOnly,\n value\n}: SetFieldSelectProps<T>) => {\n return value ? (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <DropdownMenu>\n <DropdownMenu.Trigger asChild className=\"w-full\" disabled={disabled || readOnly}>\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 } from './StringFieldInput';\nimport { StringFieldPassword } from './StringFieldPassword';\nimport { StringFieldRadio } from './StringFieldRadio';\nimport { StringFieldSelect } from './StringFieldSelect';\nimport { StringFieldTextArea } from './StringFieldTextArea';\n\nimport type { StringFieldInputProps } from './StringFieldInput';\nimport type { StringFieldPasswordProps } from './StringFieldPassword';\nimport type { StringFieldRadioProps } from './StringFieldRadio';\nimport 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> &\n Extract<StringFormField, { variant: 'input' | 'textarea' }>;\n\nexport const StringFieldInput = ({\n description,\n disabled,\n error,\n label,\n name,\n placeholder,\n readOnly,\n setValue,\n value\n}: StringFieldInputProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={name}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n id={name}\n name={name}\n placeholder={placeholder}\n type=\"text\"\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { motion } from 'motion/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 PasswordStrengthValue = 0 | 1 | 2 | 3 | 4;\n\nexport type StringFieldPasswordProps = BaseFieldComponentProps<string> &\n Extract<StringFormField, { variant: 'password' }>;\n\nexport const StringFieldPassword = ({\n calculateStrength,\n description,\n disabled,\n error,\n label,\n name,\n readOnly,\n setValue,\n value\n}: StringFieldPasswordProps) => {\n const [strength, setStrength] = useState<null | PasswordStrengthValue>(calculateStrength ? 0 : null);\n const [show, setShow] = useState(false);\n useEffect(() => {\n if (calculateStrength) {\n setStrength(value ? calculateStrength(value) : 0);\n }\n }, [value]);\n\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={name}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n id={name}\n name={name}\n type={show ? 'text' : 'password'}\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\n <button\n className=\"text-muted-foreground absolute right-0 flex h-full w-8 items-center justify-center\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onClick={() => setShow(!show)}\n >\n <EyeIcon className={cn('absolute transition-all', show ? 'scale-0 -rotate-90' : 'scale-100 rotate-0')} />\n <EyeOffIcon className={cn('absolute transition-all', !show ? 'scale-0 rotate-90' : 'scale-100 rotate-0')} />\n </button>\n </FieldGroup.Row>\n {strength !== null && (\n <motion.div\n animate={{ width: `${Math.max(strength * 25, 5)}%` }}\n className=\"h-1 w-full overflow-hidden rounded-sm\"\n initial={{ width: '5%' }}\n transition={{ duration: 0.5 }}\n >\n <div\n className={cn(\n 'bg-destructive h-full w-full transition-colors duration-500',\n strength === 2 && 'bg-yellow-500 dark:bg-yellow-700',\n strength === 3 && 'bg-sky-500 dark:bg-sky-700',\n strength === 4 && 'bg-green-500 dark:bg-green-700'\n )}\n />\n </motion.div>\n )}\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 disabled?: boolean;\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 disabled,\n error,\n label,\n name,\n options,\n orientation = 'vertical',\n readOnly,\n setValue,\n value\n}: BaseRadioFieldProps<T>) => {\n const optionsCount = Object.keys(options).length;\n return (\n <FieldGroup name={name}>\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 disabled={disabled || readOnly} id={`${name}-${option}`} value={option} />\n <Label\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-${option}`}\n >\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 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';\n\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 disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: StringFieldSelectProps<T>) => {\n return (\n <FieldGroup name={name}>\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 data-testid={`${name}-select-trigger`} disabled={disabled || readOnly}>\n <Select.Value />\n </Select.Trigger>\n <Select.Content data-testid={`${name}-select-content`}>\n {Object.keys(options).map((option) => (\n <Select.Item data-testid={`${name}-select-item-${option}`} 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 * as 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 'border-input placeholder:text-muted-foreground focus-visible:ring-ring flex min-h-[60px] w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs placeholder:opacity-80 focus-visible:ring-1 focus-visible:outline-hidden 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> &\n Extract<StringFormField, { variant: 'input' | 'textarea' }>;\n\nexport const StringFieldTextArea = ({\n description,\n disabled,\n error,\n label,\n name,\n placeholder,\n readOnly,\n setValue,\n value\n}: StringFieldTextAreaProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={name}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <TextArea\n disabled={disabled || readOnly}\n id={name}\n name={name}\n placeholder={placeholder}\n rows={5}\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\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 } from './BooleanField';\nimport { DateField } from './DateField';\nimport { NumberField } from './NumberField';\nimport { SetField } from './SetField';\nimport { StringField } from './StringField';\n\nimport type { BooleanFieldProps } from './BooleanField';\nimport type { DateFieldProps } from './DateField';\nimport type { NumberFieldProps } from './NumberField';\nimport type { SetFieldProps } from './SetField';\nimport type { StringFieldProps } from './StringField';\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 'boolean':\n return <BooleanField {...field} {...(props as BooleanFieldProps)} />;\n case 'date':\n return <DateField {...field} {...(props as DateFieldProps)} />;\n case 'number':\n return <NumberField {...field} {...(props as NumberFieldProps)} />;\n case 'set':\n return <SetField {...field} {...(props as SetFieldProps)} />;\n case 'string':\n return <StringField {...field} {...(props as StringFieldProps)} />;\n default:\n throw new Error(`Unexpected value for kind: ${Reflect.get(field, 'kind') satisfies never}`);\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.call(undefined, 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.bind(null), {\n Content: HoverCardContent,\n Trigger\n});\n","import { forwardRef } from 'react';\n\nimport { Content } from '@radix-ui/react-hover-card';\n\nimport { cn } from '@/utils';\n\nexport const HoverCardContent = 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 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n});\n","import { LanguagesIcon } from 'lucide-react';\n\nimport { useTranslation } from '@/hooks';\nimport type { Language } from '@/i18n';\n\nimport { Button } from '../Button';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { ButtonProps } from '../Button';\n\nexport type LanguageToggleProps = {\n align?: 'center' | 'end' | 'start';\n contentClassName?: string;\n itemClassName?: string;\n options: {\n [L in Language]?: string;\n };\n triggerClassName?: string;\n variant?: ButtonProps['variant'];\n};\n\nexport const LanguageToggle = ({\n align = 'start',\n contentClassName,\n itemClassName,\n options = {},\n triggerClassName,\n variant = 'outline'\n}: LanguageToggleProps) => {\n const { changeLanguage } = 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} className={contentClassName}>\n {Object.keys(options).map((option) => (\n <DropdownMenu.Item\n className={itemClassName}\n key={option}\n onClick={() => void changeLanguage(option as Language)}\n >\n {options[option as Language]}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import * as React from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport {\n CartesianGrid,\n ErrorBar,\n Label,\n Legend,\n Line,\n LineChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n} from 'recharts';\nimport type { LineProps } from 'recharts';\nimport type { ConditionalKeys } from 'type-fest';\n\nimport { useTranslation } from '@/hooks';\nimport { useTheme } from '@/hooks/useTheme';\nimport type { Theme } from '@/hooks/useTheme';\n\n/** An array of arbitrary objects with data to graph */\n\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\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 { resolvedLanguage } = 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(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 * as React from 'react';\n\nimport { cn } from '@/utils';\n\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { ButtonProps } from '../Button';\n\nexport type ListboxDropdownOption = {\n key: string;\n label: string;\n};\n\nexport type ListboxDropdownProps<T extends ListboxDropdownOption> = {\n checkPosition?: 'left' | 'right';\n className?: string;\n contentClassName?: string;\n disabled?: boolean;\n options: T[];\n selected: T[];\n setSelected: React.Dispatch<React.SetStateAction<T[]>>;\n title: string;\n triggerClassName?: string;\n variant?: ButtonProps['variant'];\n widthFull?: boolean;\n};\n\nexport const ListboxDropdown = <T extends ListboxDropdownOption>({\n contentClassName,\n disabled,\n options,\n selected,\n setSelected,\n title,\n triggerClassName,\n widthFull\n}: ListboxDropdownProps<T>) => {\n return (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild className={cn('w-full', triggerClassName)} disabled={disabled}>\n <DropdownButton>{title}</DropdownButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\" className={contentClassName} widthFull={widthFull}>\n {options.map((option) => {\n const checked = Boolean(selected.find((selectedOption) => selectedOption.key === option.key));\n return (\n <DropdownMenu.CheckboxItem\n checked={checked}\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-testid=\"select-dropdown-option\"\n key={option.key}\n onSelect={(event) => {\n event.preventDefault();\n if (checked) {\n setSelected((prevSelected) => {\n return prevSelected.filter((selectedOption) => selectedOption.key !== option.key);\n });\n } else {\n setSelected((prevSelected) => [...prevSelected, option]);\n }\n }}\n >\n {option.label}\n </DropdownMenu.CheckboxItem>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import { Group, Menu, Portal, RadioGroup, Sub } from '@radix-ui/react-menubar';\nimport type { MenubarMenuProps } 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 as React.ComponentType<MenubarMenuProps>,\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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarContent = 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 { forwardRef } from 'react';\n\nimport { Item } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarItem = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport { Label } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarLabel = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport { Root } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarRoot = forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function MenuBarRoot({ className, ...props }, ref) {\n return (\n <Root\n className={cn('bg-background flex h-9 items-center space-x-1 rounded-md border p-1 shadow-xs', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import { forwardRef } from 'react';\n\nimport { Separator } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSeparator = 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 * as 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 { forwardRef } from 'react';\n\nimport { SubContent } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubContent = 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 { forwardRef } from 'react';\n\nimport { SubTrigger } from '@radix-ui/react-menubar';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubTrigger = 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 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none',\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 { forwardRef } from 'react';\n\nimport { Trigger } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarTrigger = 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 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-3 py-1 text-sm font-medium outline-hidden select-none',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { XIcon } from 'lucide-react';\nimport { AnimatePresence, motion } from 'motion/react';\n\nimport { useTranslation } from '@/hooks';\nimport { useNotificationsStore } from '@/hooks/useNotificationsStore';\n\nimport { Card } from '../Card';\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 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:ring-1 focus:ring-sky-500 focus:outline-hidden 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=\"text-muted-foreground my-2\">{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 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 'error':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-red-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z\"\n fillRule=\"evenodd\"\n ></path>\n </svg>\n );\n case 'info':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-blue-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n fillRule=\"evenodd\"\n ></path>\n </svg>\n );\n case 'success':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-green-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n case 'warning':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-yellow-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n fillRule=\"evenodd\"\n ></path>\n </svg>\n );\n }\n};\n","import { useEffect, useRef, useState } from 'react';\nimport type { ChangeEvent, ClipboardEvent, KeyboardEvent } from 'react';\n\nimport type { Promisable } from 'type-fest';\n\nimport { useNotificationsStore, useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nconst CODE_LENGTH = 6;\n\nconst EMPTY_CODE = Object.freeze(Array<null>(CODE_LENGTH).fill(null));\n\ntype OneTimePasswordInputProps = {\n [key: `data-${string}`]: unknown;\n className?: string;\n onComplete: (code: number) => Promisable<void>;\n};\n\nfunction getUpdatedDigits(digits: (null | number)[], index: number, value: null | number) {\n const updatedDigits = [...digits];\n updatedDigits[index] = value;\n return updatedDigits;\n}\n\nexport const OneTimePasswordInput = ({ className, onComplete, ...props }: OneTimePasswordInputProps) => {\n const notifications = useNotificationsStore();\n const { t } = useTranslation('libui');\n const [digits, setDigits] = useState<(null | number)[]>([...EMPTY_CODE]);\n const inputRefs = digits.map(() => useRef<HTMLInputElement>(null));\n\n useEffect(() => {\n const isComplete = digits.every((value) => Number.isInteger(value));\n if (isComplete) {\n void onComplete(parseInt(digits.join('')));\n setDigits([...EMPTY_CODE]);\n }\n }, [digits]);\n\n const focusNext = (index: number) => inputRefs[index + 1 === digits.length ? 0 : index + 1]?.current?.focus();\n\n const focusPrev = (index: number) => inputRefs[index - 1 >= 0 ? index - 1 : digits.length - 1]?.current?.focus();\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>, index: number) => {\n let value: null | number;\n if (e.target.value === '') {\n value = null;\n } else if (Number.isInteger(parseInt(e.target.value))) {\n value = parseInt(e.target.value);\n } else {\n return;\n }\n setDigits((prevDigits) => getUpdatedDigits(prevDigits, index, value));\n focusNext(index);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>, index: number) => {\n switch (e.key) {\n case 'ArrowLeft':\n focusPrev(index);\n break;\n case 'ArrowRight':\n focusNext(index);\n break;\n case 'Backspace':\n setDigits((prevDigits) => getUpdatedDigits(prevDigits, index - 1, null));\n focusPrev(index);\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedDigits = e.clipboardData\n .getData('text/plain')\n .split('')\n .slice(0, CODE_LENGTH)\n .map((value) => parseInt(value));\n const isValid = pastedDigits.length === CODE_LENGTH && pastedDigits.every((value) => Number.isInteger(value));\n if (isValid) {\n setDigits(pastedDigits);\n } else {\n notifications.addNotification({\n message: t('oneTimePasswordInput.invalidCodeFormat'),\n type: 'warning'\n });\n }\n };\n\n return (\n <div className={cn('flex gap-2', className)} {...props}>\n {digits.map((_, index) => (\n <input\n className=\"w-1/6 rounded-md border border-slate-300 bg-transparent p-2 text-center shadow-xs hover:border-slate-300 focus:border-sky-800 focus:outline-hidden dark:border-slate-600 dark:hover:border-slate-400 dark:focus:border-sky-500\"\n key={index}\n maxLength={1}\n ref={inputRefs[index]}\n type=\"text\"\n value={digits[index] ?? ''}\n onChange={(e) => {\n handleChange(e, index);\n }}\n onKeyDown={(e) => {\n handleKeyDown(e, index);\n }}\n onPaste={handlePaste}\n />\n ))}\n </div>\n );\n};\n","import * as 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 * as 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","import * as React from 'react';\n\nexport const PaginationItem = ({ className, ...props }: React.ComponentProps<'li'>) => (\n <li className={className} {...props} />\n);\n","import * as React from 'react';\n\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { buttonVariants } from '../Button';\n\nimport type { ButtonProps } 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 * as React from 'react';\n\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { useTranslation } from '@/hooks';\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';\n\nimport { useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nimport { PaginationLink } from './PaginationLink';\n\nimport 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 * as 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 { forwardRef } from 'react';\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '@/utils';\n\nexport const Progress = 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 * as React from 'react';\n\nimport { Panel } from 'react-resizable-panels';\nimport type { PanelProps } from 'react-resizable-panels';\n\nimport { ResizableHandle } from './ResizableHandle';\nimport { ResizablePanelGroup } from './ResizablePanelGroup';\n\nimport type { ResizableHandleProps } from './ResizableHandle';\nimport 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 * as React from 'react';\n\nimport { 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 'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </PanelResizeHandle>\n);\n","import * as React from 'react';\n\nimport { 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';\n\nimport { useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nimport { Input } from '../Input';\n\ntype BaseSearchBarProps = {\n [key: `data-${string}`]: unknown;\n /** Additional CSS classes to add to the wrapper form component, potentially overriding default styling */\n className?: string;\n /** The ID to pass to the HTMLFormElement */\n id?: 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 /** Whether the input element should be readonly */\n readOnly?: boolean;\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 = ({\n className,\n onClick,\n onValueChange,\n placeholder,\n readOnly,\n value,\n ...props\n}: SearchBarProps) => {\n const { t } = useTranslation('libui');\n return (\n <form className={cn('relative', className)} {...props}>\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 readOnly={readOnly}\n type=\"search\"\n value={value}\n onChange={(event) => {\n onValueChange?.(event.target.value);\n }}\n onClick={() => onClick?.()}\n />\n </form>\n );\n};\n\nexport type { BaseSearchBarProps };\n","import { Close, Portal, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { SheetBody } from './SheetBody';\nimport { SheetContent } from './SheetContent';\nimport { SheetDescription } from './SheetDescription';\nimport { SheetFooter } from './SheetFooter';\nimport { SheetHeader } from './SheetHeader';\nimport { SheetTitle } from './SheetTitle';\n\nexport const Sheet = Object.assign(Root.bind(null), {\n Body: SheetBody,\n Close,\n Content: SheetContent,\n Description: SheetDescription,\n Footer: SheetFooter,\n Header: SheetHeader,\n Portal,\n Title: SheetTitle,\n Trigger\n});\n","import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const SheetBody = ({\n children,\n className,\n ...props\n}: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => {\n return (\n <div className={cn('py-4', className)} {...props}>\n {children}\n </div>\n );\n};\n","import * as React from 'react';\n\nimport { Close, Content, Portal } from '@radix-ui/react-dialog';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nimport { SheetOverlay } from './SheetOverlay';\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 <SheetOverlay />\n <Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetOverlay = 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 { forwardRef } from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetDescription = 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 * as 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 * as 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 { forwardRef } from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetTitle = forwardRef<React.ElementRef<typeof Title>, 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);\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 * as React from 'react';\n\nimport { 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 { useEffect } from 'react';\nimport type { ReactElement } from 'react';\n\nimport { motion, useSpring, useTransform } from 'motion/react';\n\nimport { cn } from '@/utils';\n\nimport { Card } from '../Card';\n\ntype StatisticCardProps = {\n [key: `data-${string}`]: unknown;\n className?: string;\n icon?: ReactElement;\n label: string;\n value: number;\n};\n\nexport const StatisticCard = ({ className, icon, label, value, ...props }: StatisticCardProps) => {\n const spring = useSpring(0, { bounce: 0 });\n const rounded = useTransform(spring, (latest: number) => Math.floor(latest));\n\n useEffect(() => {\n spring.set(value);\n }, [spring, value]);\n\n return (\n <Card className={cn('flex w-full rounded-lg p-4', className)} {...props}>\n {icon && <div className=\"mr-2 flex items-center justify-center text-4xl\">{icon}</div>}\n <div className=\"w-full text-center\">\n <motion.h3 className=\"title-font text-2xl font-semibold text-slate-900 dark:text-slate-100 sm:text-3xl\">\n {rounded}\n </motion.h3>\n <p className=\"font-medium leading-relaxed\">{label}</p>\n </div>\n </Card>\n );\n};\n","import { forwardRef } from 'react';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils';\n\nexport const Switch = 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 focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'bg-background pointer-events-none block h-4 w-4 rounded-full 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 { forwardRef } from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsContent = 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 'ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsList = 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 { forwardRef } from 'react';\n\nimport { Root } from '@radix-ui/react-tabs';\n\nexport const TabsRoot = forwardRef<React.ComponentRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function TabsRoot(props, ref) {\n return <Root ref={ref} {...props} />;\n }\n);\n","import { forwardRef } from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsTrigger = 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 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { TabsContent } from './TabsContent';\nimport { TabsList } from './TabsList';\nimport { TabsRoot } from './TabsRoot';\nimport { TabsTrigger } from './TabsTrigger';\n\nexport const Tabs = Object.assign(TabsRoot, {\n Content: TabsContent,\n List: TabsList,\n Trigger: TabsTrigger\n});\n","import { MoonIcon, SunIcon } from 'lucide-react';\n\nimport { useTheme } from '@/hooks/useTheme';\n\nimport { Button } from '../Button';\n\nimport 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 * as 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 preferred side of the trigger to render against when open. Will be reversed when collisions occur and avoidCollisions is enabled. */\n side?: 'bottom' | 'left' | 'right' | 'top';\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 * as 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 /** Event handler called when the open state of the tooltip changes. */\n onOpenChange?: (open: boolean) => void;\n /** The controlled open state of the tooltip. Must be used in conjunction with onOpenChange. */\n open?: boolean;\n /** How much time a user has to enter another trigger without incurring a delay again. */\n skipDelayDuration?: number;\n};\n\nexport const TooltipRoot = ({\n children,\n delayDuration = 0,\n onOpenChange,\n open,\n skipDelayDuration = 300\n}: TooltipRootProps) => {\n return (\n <Provider delayDuration={delayDuration} skipDelayDuration={skipDelayDuration}>\n <Root open={open} onOpenChange={onOpenChange}>\n {children}\n </Root>\n </Provider>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { Button } from '../Button';\n\nimport type { ButtonProps } from '../Button';\n\nexport type TooltipTriggerProps = Omit<ButtonProps, 'asChild'>;\n\nexport const TooltipTrigger = forwardRef<React.ElementRef<typeof Trigger>, TooltipTriggerProps>(function TooltipTrigger(\n { variant = 'outline', ...props },\n ref\n) {\n return (\n <Trigger asChild ref={ref}>\n <Button variant={variant} {...props} />\n </Trigger>\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","forwardRef","AccordionPrimitive","jsx","forwardRef","AccordionItem","forwardRef","AccordionPrimitive","jsx","AccordionRoot","forwardRef","AccordionPrimitive","jsx","forwardRef","AccordionTrigger","forwardRef","ChevronDownIcon","jsx","jsxs","forwardRef","DropdownButton","ChevronDownIcon","DropdownMenuPrimitive","forwardRef","jsx","jsxs","forwardRef","DropdownMenuCheckboxItem","DropdownMenuPrimitive","jsx","DropdownMenuContent","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuItem","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuLabel","forwardRef","DropdownMenuPrimitive","jsx","jsxs","forwardRef","DropdownMenuRadioItem","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuSeparator","jsx","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuSubContent","forwardRef","DropdownMenuPrimitive","jsx","jsxs","forwardRef","DropdownMenuSubTrigger","jsx","jsxs","Root","Trigger","forwardRef","React","jsx","jsxs","Button","jsx","forwardRef","AlertDialogAction","forwardRef","jsx","forwardRef","AlertDialogCancel","forwardRef","Content","Portal","forwardRef","jsx","forwardRef","AlertDialogOverlay","jsx","jsxs","forwardRef","AlertDialogContent","Portal","Content","forwardRef","jsx","forwardRef","AlertDialogDescription","jsx","jsx","forwardRef","jsx","forwardRef","AlertDialogTitle","Root","Trigger","React","jsx","jsxs","ArrowToggle","forwardRef","jsx","forwardRef","AvatarFallback","forwardRef","AvatarPrimitive","jsx","forwardRef","AvatarImage","forwardRef","AvatarPrimitive","jsx","forwardRef","AvatarRoot","cva","jsx","cva","jsx","forwardRef","jsx","forwardRef","BreadcrumbItem","forwardRef","Slot","jsx","forwardRef","BreadcrumbLink","Slot","forwardRef","jsx","forwardRef","BreadcrumbList","forwardRef","jsx","forwardRef","BreadcrumbPage","forwardRef","jsx","BreadcrumbRoot","ChevronRightIcon","jsx","ChevronRightIcon","React","jsx","CardRoot","Tooltip","forwardRef","jsx","jsxs","forwardRef","ChartContainer","forwardRef","jsx","jsxs","forwardRef","ChartLegendContent","jsx","config","React","forwardRef","jsx","jsxs","forwardRef","ChartLegendContent","React","Tooltip","forwardRef","CheckIcon","jsx","forwardRef","Checkbox","CheckIcon","ChevronDownIcon","forwardRef","jsx","forwardRef","TableBody","forwardRef","jsx","forwardRef","TableCaption","forwardRef","jsx","forwardRef","TableCell","forwardRef","jsx","forwardRef","TableFooter","forwardRef","jsx","forwardRef","TableHead","forwardRef","jsx","forwardRef","TableHeader","forwardRef","jsx","forwardRef","TableRoot","forwardRef","jsx","forwardRef","TableRow","jsx","jsxs","jsx","jsxs","ChevronDownIcon","Content","Trigger","forwardRef","Root","jsx","CollapsibleRoot","Content","Trigger","React","CommandPrimitive","forwardRef","jsx","CommandEmpty","forwardRef","CommandPrimitive","jsx","forwardRef","CommandGroup","CommandPrimitive","forwardRef","CommandPrimitive","jsx","jsxs","forwardRef","CommandInput","CommandPrimitive","forwardRef","CommandPrimitive","jsx","forwardRef","CommandItem","CommandPrimitive","forwardRef","CommandPrimitive","jsx","forwardRef","CommandList","CommandPrimitive","forwardRef","CommandPrimitive","jsx","forwardRef","CommandSeparator","CommandPrimitive","jsx","jsx","CommandPrimitive","Command","Group","Portal","RadioGroup","Root","Sub","Trigger","forwardRef","CheckIcon","jsx","jsxs","forwardRef","ContextMenuCheckboxItem","CheckIcon","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuContent","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuItem","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuLabel","forwardRef","ContextMenuPrimitive","CircleIcon","jsx","jsxs","forwardRef","ContextMenuRadioItem","CircleIcon","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuSeparator","jsx","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuSubContent","forwardRef","ContextMenuPrimitive","ChevronRightIcon","jsx","jsxs","forwardRef","ContextMenuSubTrigger","ChevronRightIcon","Root","Group","Portal","RadioGroup","Sub","Trigger","useState","jsx","useState","useState","React","AnimatePresence","motion","forwardRef","range","AnimatePresence","motion","jsx","jsxs","forwardRef","Calendar","range","AnimatePresence","motion","range","forwardRef","Root","forwardRef","jsx","forwardRef","ScrollBar","jsx","jsxs","forwardRef","ScrollArea","Root","jsx","range","jsx","jsxs","DatePicker","useState","date","AnimatePresence","motion","Root","Trigger","jsx","forwardRef","Content","Portal","forwardRef","Overlay","jsx","forwardRef","DialogOverlay","Overlay","jsx","jsxs","forwardRef","DialogContent","Portal","Content","forwardRef","Description","jsx","forwardRef","DialogDescription","Description","jsx","jsx","forwardRef","Title","jsx","forwardRef","DialogTitle","Title","Root","Trigger","DrawerPrimitive","forwardRef","jsx","jsxs","forwardRef","DrawerContent","forwardRef","DrawerPrimitive","jsx","forwardRef","DrawerDescription","DrawerPrimitive","jsx","jsx","forwardRef","DrawerPrimitive","jsx","forwardRef","DrawerTitle","DrawerPrimitive","jsx","DrawerPrimitive","useEffect","jsx","jsxs","jsx","jsx","jsxs","file","useEffect","useState","jsx","forwardRef","jsx","Separator","forwardRef","jsx","jsxs","useEffect","useMemo","useState","useCallback","match","useEffect","useRef","match","useEffect","useId","useRef","useState","React","jsx","Input","forwardRef","cva","jsx","cva","Label","forwardRef","React","Content","Portal","jsx","PopoverContent","Portal","Content","jsx","jsxs","jsx","jsx","jsx","jsxs","useId","useState","useRef","value","useEffect","Label","React","RadioGroupPrimitive","forwardRef","CircleIcon","jsx","forwardRef","RadioGroupItem","CircleIcon","jsx","RadioGroup","jsx","jsxs","Label","RadioGroup","value","SelectPrimitive","forwardRef","SelectPrimitive","forwardRef","ChevronDownIcon","jsx","forwardRef","SelectScrollDownButton","ChevronDownIcon","forwardRef","SelectPrimitive","ChevronUpIcon","jsx","forwardRef","SelectScrollUpButton","ChevronUpIcon","jsx","jsxs","forwardRef","SelectContent","forwardRef","SelectPrimitive","CheckIcon","jsx","jsxs","forwardRef","SelectItem","CheckIcon","forwardRef","SelectPrimitive","jsx","forwardRef","SelectLabel","forwardRef","SelectPrimitive","jsx","forwardRef","SelectSeparator","forwardRef","SelectPrimitive","jsx","forwardRef","SelectTrigger","jsx","jsxs","Label","value","forwardRef","Root","jsx","jsxs","forwardRef","Slider","Root","jsx","jsxs","Label","value","jsx","match","props","jsx","jsxs","useRef","useEffect","useEffect","useRef","match","jsx","jsxs","value","Label","useCallback","match","jsx","jsxs","match","useCallback","value","Label","RadioGroup","jsx","match","props","useEffect","useState","toBasicISOString","jsx","jsxs","useState","toBasicISOString","useEffect","Label","value","useEffect","match","jsx","jsxs","Label","jsx","jsxs","Label","jsx","useEffect","match","props","match","jsx","jsxs","Label","useEffect","useState","motion","jsx","jsxs","useState","useEffect","Label","motion","cva","jsx","jsxs","cva","Label","RadioGroup","value","jsx","jsx","jsxs","Label","value","React","jsx","TextArea","jsx","jsxs","Label","jsx","match","props","jsx","jsx","jsxs","RecordArrayField","useRef","useEffect","Label","jsx","useCallback","match","field","jsx","useState","useMemo","useEffect","Fragment","jsx","jsxs","useState","rootErrors","useEffect","Separator","Root","Trigger","forwardRef","Content","jsx","forwardRef","HoverCardContent","Content","Root","Trigger","jsx","jsxs","React","toBasicISOString","Label","Legend","ResponsiveContainer","Tooltip","jsx","jsxs","createElement","ResponsiveContainer","toBasicISOString","Label","Tooltip","Legend","jsx","jsxs","Group","Portal","RadioGroup","Sub","forwardRef","CheckboxItem","ItemIndicator","CheckIcon","jsx","jsxs","forwardRef","MenuBarCheckboxItem","CheckboxItem","ItemIndicator","CheckIcon","forwardRef","Content","Portal","jsx","forwardRef","MenuBarContent","Portal","Content","forwardRef","Item","jsx","forwardRef","MenuBarItem","Item","forwardRef","Label","jsx","forwardRef","MenuBarLabel","Label","forwardRef","ItemIndicator","RadioItem","CircleIcon","jsx","jsxs","forwardRef","MenuBarRadioItem","RadioItem","ItemIndicator","CircleIcon","forwardRef","Root","jsx","forwardRef","MenuBarRoot","Root","forwardRef","Separator","jsx","forwardRef","MenuBarSeparator","Separator","jsx","forwardRef","SubContent","jsx","forwardRef","MenuBarSubContent","SubContent","forwardRef","SubTrigger","ChevronRightIcon","jsx","jsxs","forwardRef","MenuBarSubTrigger","SubTrigger","ChevronRightIcon","forwardRef","Trigger","jsx","forwardRef","MenuBarTrigger","Trigger","Group","Portal","RadioGroup","Sub","XIcon","AnimatePresence","motion","jsx","jsx","jsxs","AnimatePresence","motion","XIcon","useEffect","useRef","useState","jsx","useState","useRef","useEffect","jsx","MoreHorizontalIcon","jsx","jsxs","MoreHorizontalIcon","jsx","jsx","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","jsx","jsxs","jsx","forwardRef","jsx","forwardRef","Progress","jsx","jsx","Fragment","jsx","SearchIcon","jsx","jsxs","SearchIcon","Close","Portal","Root","Trigger","jsx","React","Close","Content","Portal","cva","XIcon","forwardRef","Overlay","jsx","forwardRef","SheetOverlay","Overlay","jsx","jsxs","cva","SheetContent","Portal","Content","Close","XIcon","forwardRef","Description","jsx","forwardRef","SheetDescription","Description","jsx","jsx","forwardRef","Title","jsx","forwardRef","SheetTitle","Title","Root","Close","Portal","Trigger","jsx","jsx","useEffect","motion","jsx","jsxs","useEffect","motion","forwardRef","jsx","forwardRef","Switch","forwardRef","jsx","forwardRef","TabsContent","forwardRef","TabsPrimitive","jsx","forwardRef","TabsList","forwardRef","Root","jsx","TabsRoot","forwardRef","TabsPrimitive","jsx","forwardRef","TabsTrigger","jsx","jsxs","React","Content","jsx","TooltipContent","Content","Root","jsx","forwardRef","Trigger","jsx","forwardRef","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/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/ActionDropdown/ActionDropdown.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/Chart/Chart.tsx","../src/components/Chart/ChartContainer.tsx","../src/components/Chart/ChartLegendContent.tsx","../src/components/Chart/utils.ts","../src/components/Chart/ChartStyle.tsx","../src/components/Chart/ChartTooltipContent.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/ClientTable/ClientTable.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/ClientTable/ClientTablePagination.tsx","../src/components/Collapsible/Collapsible.tsx","../src/components/Collapsible/CollapsibleRoot.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/CopyButton/CopyButton.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/DialogBody.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/ErrorBoundary/ErrorBoundary.tsx","../src/components/ErrorFallback/ErrorFallback.tsx","../src/components/FileDropzone/FileDropzone.tsx","../src/components/Form/Form.tsx","../src/components/Heading/Heading.tsx","../src/components/Separator/Separator.tsx","../src/components/Form/ErrorMessage.tsx","../src/components/Form/FieldsComponent.tsx","../src/components/Form/DynamicField.tsx","../src/components/Form/StaticField.tsx","../src/components/Form/NumberRecordField.tsx","../src/components/Form/NumberField/NumberField.tsx","../src/components/Form/NumberField/NumberFieldInput.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/RadioGroup/RadioGroup.tsx","../src/components/RadioGroup/RadioGroupItem.tsx","../src/components/Form/NumberField/NumberFieldRadio.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/NumberField/NumberFieldSelect.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/Form/StringField/StringFieldSelect.tsx","../src/components/TextArea/TextArea.tsx","../src/components/Form/StringField/StringFieldTextArea.tsx","../src/components/Form/ScalarField.tsx","../src/components/Form/utils.ts","../src/components/HoverCard/HoverCard.tsx","../src/components/HoverCard/HoverCardContent.tsx","../src/components/LanguageToggle/LanguageToggle.tsx","../src/components/LineGraph/LineGraph.tsx","../src/components/ListboxDropdown/ListboxDropdown.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/OneTimePasswordInput/OneTimePasswordInput.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/Sheet/Sheet.tsx","../src/components/Sheet/SheetBody.tsx","../src/components/Sheet/SheetContent.tsx","../src/components/Sheet/SheetOverlay.tsx","../src/components/Sheet/SheetDescription.tsx","../src/components/Sheet/SheetFooter.tsx","../src/components/Sheet/SheetHeader.tsx","../src/components/Sheet/SheetTitle.tsx","../src/components/Spinner/Spinner.tsx","../src/components/SpinnerIcon/SpinnerIcon.tsx","../src/components/StatisticCard/StatisticCard.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/TabsContent.tsx","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsRoot.tsx","../src/components/Tabs/TabsTrigger.tsx","../src/components/Tabs/Tabs.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 { forwardRef } from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionContent = 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 { forwardRef } from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionItem = 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 { forwardRef } from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nexport const AccordionRoot = 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 { forwardRef } 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 = 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 { forwardRef } from 'react';\n\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const DropdownButton = forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n function DropdownButton({ children, className, ...props }, ref) {\n return (\n <button\n className={cn(\n 'border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs focus:ring-1 focus:outline-hidden 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.bind(null), {\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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-xs py-1.5 pr-8 pl-2 text-sm outline-hidden select-none 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 * as 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuItem = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden transition-colors select-none 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuLabel = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden transition-colors select-none 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSeparator = 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 * as 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 { forwardRef } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport const DropdownMenuSubContent = 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 { forwardRef } 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 = 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 'focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none',\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 { cn } from '@/utils';\n\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { DropdownMenuContentProps } from '../DropdownMenu/DropdownMenuContent';\n\ntype ActionDropdownOptions = readonly string[] | { [key: string]: string };\n\ntype ActionDropdownOptionKey<T> = T extends readonly string[]\n ? T[number]\n : T extends { [key: string]: string }\n ? Extract<keyof T, string>\n : never;\n\nexport type ActionDropdownProps<T extends ActionDropdownOptions> = {\n [key: `data-${string}`]: unknown;\n\n align?: DropdownMenuContentProps['align'];\n\n className?: string;\n\n contentClassName?: string;\n\n disabled?: boolean;\n\n /** Callback function invoked when user clicks an option */\n onSelection: (option: ActionDropdownOptionKey<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 triggerClassName?: string;\n\n widthFull?: boolean;\n};\n\n// eslint-disable-next-line react/function-component-definition\nexport function ActionDropdown<const T extends ActionDropdownOptions>({\n align = 'start',\n className,\n contentClassName,\n disabled,\n onSelection,\n options,\n title,\n triggerClassName,\n widthFull,\n ...props\n}: ActionDropdownProps<T>) {\n const optionKeys: readonly string[] = options instanceof Array ? options : Object.keys(options);\n return (\n <DropdownMenu>\n <div className={cn('w-full', className)} {...props}>\n <DropdownMenu.Trigger asChild disabled={disabled}>\n <DropdownButton className={triggerClassName}>{title}</DropdownButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align={align} className={contentClassName} widthFull={widthFull}>\n <DropdownMenu.Group>\n {optionKeys.map((option) => (\n <DropdownMenu.Item\n key={option}\n onClick={() => {\n onSelection(option as ActionDropdownOptionKey<T>);\n }}\n >\n {Array.isArray(options) ? option : (options[option as keyof T] as string)}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </div>\n </DropdownMenu>\n );\n}\n","import { Root, 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.bind(null), {\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 { forwardRef } 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 = 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 * as React from 'react';\n\nimport { Slot, Slottable } from '@radix-ui/react-slot';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } 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 cursor-pointer rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden 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 aspect-square',\n lg: 'h-10 rounded-md px-8 text-base',\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-xs hover:bg-destructive/70',\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-xs',\n primary: 'bg-primary text-primary-foreground shadow-sm hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-xs hover:bg-secondary/10'\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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 { forwardRef } from 'react';\n\nimport { Overlay } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogOverlay = 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 { forwardRef } from 'react';\n\nimport { Description } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogDescription = 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 * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-x-2 gap-y-0.5 sm:flex-row', className)} {...props} />\n);\n","import * as React from 'react';\n\nimport { 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 { forwardRef } from 'react';\n\nimport { Title } from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '@/utils';\n\nexport const AlertDialogTitle = 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 { useMemo } from 'react';\nimport * as React from 'react';\n\nimport { ChevronUpIcon } from 'lucide-react';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { Button } from '../Button';\n\nimport 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 'down':\n return 180 + toggleRotation;\n case 'left':\n return 270 + toggleRotation;\n case 'right':\n return 90 + toggleRotation;\n case 'up':\n return 0 + 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 { forwardRef } from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarFallback = 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 { forwardRef } from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarImage = 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 { forwardRef } from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '@/utils';\n\nexport const AvatarRoot = 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 * as React from 'react';\n\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-xs border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-hidden 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-sm hover:bg-primary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow-sm 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\ntype 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 };\nexport type { BadgeProps };\n","import * as React from 'react';\n\nimport { 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(function BreadcrumbItem(\n { className, ...props },\n ref\n) {\n return <li className={cn('inline-flex items-center gap-1.5', className)} ref={ref} {...props} />;\n});\n","import { forwardRef } from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbLink = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbList = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const BreadcrumbPage = 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 { forwardRef } from 'react';\n\nexport const BreadcrumbRoot = 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 * as React from 'react';\n\nimport { 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 * as 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('bg-card text-card-foreground rounded-xl border shadow-sm', 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-muted-foreground text-sm', 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('leading-none font-semibold tracking-tight', className)} {...props}>\n {children}\n </h3>\n )\n});\n","import { Legend, Tooltip } from 'recharts';\n\nimport { ChartContainer } from './ChartContainer';\nimport { ChartLegendContent } from './ChartLegendContent';\nimport { ChartStyle } from './ChartStyle';\nimport { ChartTooltipContent } from './ChartTooltipContent';\n\nexport const Chart = Object.assign(ChartContainer, {\n Legend,\n LegendContent: ChartLegendContent,\n Style: ChartStyle,\n Tooltip,\n TooltipContent: ChartTooltipContent\n});\n","import { forwardRef, useId } from 'react';\n\nimport { ResponsiveContainer } from 'recharts';\n\nimport { ChartContext } from '@/context/ChartContext';\nimport { cn } from '@/utils';\n\nimport { Chart } from './Chart';\n\nimport type { ChartConfig } from './types';\n\nexport const ChartContainer = forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n children: React.ComponentProps<typeof ResponsiveContainer>['children'];\n config: ChartConfig;\n }\n>(function ChartContainer({ children, className, config, id, ...props }, ref) {\n const uniqueId = useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n className={cn(\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n data-chart={chartId}\n ref={ref}\n {...props}\n >\n <Chart.Style config={config} id={chartId} />\n <ResponsiveContainer>{children}</ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\n","import { forwardRef } from 'react';\n\nimport type { LegendProps } from 'recharts';\n\nimport { useChart } from '@/hooks/useChart';\nimport { cn } from '@/utils';\n\nimport { getPayloadConfigFromPayload } from './utils';\n\nexport const ChartLegendContent = forwardRef<\n HTMLDivElement,\n Pick<LegendProps, 'payload' | 'verticalAlign'> &\n React.ComponentProps<'div'> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(function ChartLegendContent({ className, hideIcon = false, nameKey, payload, verticalAlign = 'bottom' }, ref) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}\n ref={ref}\n >\n {payload.map((item) => {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n const key = `${nameKey ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n className={cn('flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground')}\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n key={item.value}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n});\n","import type { ChartConfig } from './types';\n\nexport function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n}\n","import type { ChartConfig } from './types';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { dark: '.dark', light: '' } as const;\n\nexport const ChartStyle = ({ config, id }: { config: ChartConfig; id: string }) => {\n const colorConfig = Object.entries(config).filter(([_, config]) => config.theme ?? config.color);\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`\n )\n .join('\\n')\n }}\n />\n );\n};\n","import React, { forwardRef } from 'react';\n\nimport { Tooltip } from 'recharts';\n\nimport { useChart } from '@/hooks/useChart';\nimport { cn } from '@/utils';\n\nimport { getPayloadConfigFromPayload } from './utils';\n\nexport const ChartTooltipContent = forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> &\n React.ComponentProps<typeof Tooltip> & {\n hideIndicator?: boolean;\n hideLabel?: boolean;\n indicator?: 'dashed' | 'dot' | 'line';\n labelKey?: string;\n nameKey?: string;\n }\n>(function ChartLegendContent(\n {\n active,\n className,\n color,\n formatter,\n hideIndicator = false,\n hideLabel = false,\n indicator = 'dot',\n label,\n labelClassName,\n labelFormatter,\n labelKey,\n nameKey,\n payload\n },\n ref\n) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item!.dataKey ?? item!.name ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = !labelKey && typeof label === 'string' ? config[label]?.label || label : itemConfig?.label;\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n className={cn(\n 'border-border/50 grid min-w-[8rem] items-start gap-1.5 rounded-lg border bg-background px-2.5 py-1.5 text-xs shadow-xl',\n className\n )}\n ref={ref}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const indicatorColor = color ?? item.payload.fill ?? item.color;\n\n return (\n <div\n className={cn(\n 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center'\n )}\n key={item.dataKey}\n >\n {formatter && item?.value !== undefined && item.name ? (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]', {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'my-0.5': nestLabel && indicator === 'dashed',\n 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',\n 'w-1': indicator === 'line'\n })}\n style={\n {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n '--color-bg': indicatorColor,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n '--color-border': indicatorColor\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn('flex flex-1 justify-between leading-none', nestLabel ? 'items-end' : 'items-center')}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n});\n","import { forwardRef } 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 = 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 border-primary focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground h-4 w-4 shrink-0 rounded-xs border shadow-sm focus-visible:ring-1 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\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 { useState } from 'react';\nimport * as React from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport { range } from 'lodash-es';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nimport { DropdownMenu } from '../DropdownMenu';\nimport { Table } from '../Table';\nimport { ClientTablePagination } from './ClientTablePagination';\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\nexport type ClientTableEntry = { [key: string]: unknown };\n\nexport type ClientFieldFactory<T extends ClientTableEntry = ClientTableEntry> = (entry: T) => string;\n\nexport type ClientTableColumn<T extends ClientTableEntry> = {\n /** How to determine the values for column */\n field: ClientFieldFactory<T> | keyof T;\n\n /** Override the default formatter for this field */\n formatter?: (value: any) => string;\n\n /** The label to be displayed on the header */\n label: string;\n};\n\nexport type ClientTableDropdownOptions<T extends ClientTableEntry> = {\n icon?: React.ComponentType<Omit<React.SVGProps<SVGSVGElement>, 'ref'>>;\n label: string;\n onSelection: (column: ClientTableColumn<T>) => void;\n}[];\n\nexport type ClientTableColumnProps<T extends ClientTableEntry> = {\n column: ClientTableColumn<T>;\n dropdownOptions?: ClientTableDropdownOptions<T>;\n};\n\nexport type ClientTableProps<T extends ClientTableEntry> = {\n [key: `data-${string}`]: unknown;\n className?: string;\n columnDropdownOptions?: ClientTableDropdownOptions<T>;\n columns: ClientTableColumn<T>[];\n data: T[];\n entriesPerPage?: number;\n minRows?: number;\n noWrap?: boolean;\n onEntryClick?: (entry: T) => void;\n};\n\nexport const ClientTable = <T extends ClientTableEntry>({\n className,\n columnDropdownOptions,\n columns,\n data,\n entriesPerPage = 10,\n minRows,\n noWrap,\n onEntryClick,\n ...props\n}: ClientTableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(1);\n\n const pageCount = Math.max(Math.ceil(data.length / entriesPerPage), 1);\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 const nRows = Math.max(currentEntries.length, minRows ?? -1);\n\n return (\n <div className={className} {...props} data-testid=\"ClientTable\">\n <div className=\"bg-card text-muted-foreground rounded-md border tracking-tight shadow-xs\">\n <Table>\n <Table.Header>\n <Table.Row>\n {columns.map((column, i) => (\n <Table.Head className=\"text-foreground whitespace-nowrap\" key={i}>\n {columnDropdownOptions ? (\n <DropdownMenu>\n <DropdownMenu.Trigger className=\"flex items-center justify-between gap-3\">\n <span>{column.label}</span>\n <ChevronDownIcon />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Group>\n {columnDropdownOptions.map((option) => {\n const Icon = option.icon;\n return (\n <DropdownMenu.Item\n data-testid={option.label + '-test-id'}\n key={option.label}\n onClick={() => {\n option.onSelection(column);\n }}\n >\n {Icon && <Icon className=\"mr-2\" height={16} width={16} />}\n {option.label}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : (\n column.label\n )}\n </Table.Head>\n ))}\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {range(nRows).map((i) => {\n const entry = currentEntries[i] as T | undefined;\n const onClick = onEntryClick && entry ? () => onEntryClick(entry) : undefined;\n return (\n <Table.Row\n className={cn(onClick && 'cursor-pointer hover:backdrop-brightness-95')}\n key={i}\n onClick={onClick}\n >\n {columns.map(({ field, formatter }, j) => {\n let value: unknown;\n if (!entry) {\n value = 'NA';\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 <Table.Cell\n className={cn(\n 'leading-none text-ellipsis',\n !entry && 'opacity-0', // safari does not include borders if invisible\n noWrap && 'max-w-3xl overflow-hidden text-ellipsis whitespace-nowrap'\n )}\n key={j}\n >\n {formattedValue}\n </Table.Cell>\n );\n })}\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table>\n </div>\n <ClientTablePagination\n currentPage={currentPage}\n firstEntry={firstEntry}\n lastEntry={lastEntry}\n pageCount={pageCount}\n setCurrentPage={setCurrentPage}\n totalEntries={data.length}\n />\n </div>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableBody = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCaption = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n function TableCell({ className, ...props }, ref) {\n return (\n <td className={cn('px-6 py-3 align-middle [&:has([role=checkbox])]:pr-0', className)} ref={ref} {...props} />\n );\n }\n);\n","import { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableFooter = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHead = forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n function TableHead({ className, ...props }, ref) {\n return (\n <th\n className={cn(\n 'px-6 py-3 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableHeader = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRoot = 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 { forwardRef } from 'react';\n\nimport { cn } from '@/utils';\n\nexport const TableRow = forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(function TableRow(\n { className, ...props },\n ref\n) {\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","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 { useTranslation } from '@/hooks';\n\nimport { Button } from '../Button';\n\nexport type ClientPagePaginationProps = {\n currentPage: number;\n firstEntry: number;\n lastEntry: number;\n pageCount: number;\n setCurrentPage: (value: number) => void;\n totalEntries: number;\n};\n\nexport const ClientTablePagination = ({\n currentPage,\n firstEntry,\n lastEntry,\n pageCount,\n setCurrentPage,\n totalEntries\n}: ClientPagePaginationProps) => {\n const { t } = useTranslation('libui');\n return (\n <div className=\"flex items-center justify-between py-3\">\n <div className=\"hidden sm:block\">\n <p\n className=\"text-sm font-medium text-muted-foreground\"\n data-testid=\"page-numbers\"\n >{`${firstEntry} - ${lastEntry} / ${totalEntries}`}</p>\n </div>\n <div className=\"flex flex-1 justify-between gap-3 sm:justify-end\">\n <Button\n data-testid=\"first-page-button\"\n disabled={currentPage === 1}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(1);\n }}\n >\n {t('pagination.firstPage')}\n </Button>\n <Button\n data-testid=\"previous-page-button\"\n disabled={currentPage === 1}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(currentPage - 1);\n }}\n >\n {t('pagination.previous')}\n </Button>\n <Button\n data-testid=\"next-page-button\"\n disabled={currentPage === pageCount}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(currentPage + 1);\n }}\n >\n {t('pagination.next')}\n </Button>\n <Button\n data-testid=\"last-page-button\"\n disabled={currentPage === pageCount}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(pageCount);\n }}\n >\n {t('pagination.lastPage')}\n </Button>\n </div>\n </div>\n );\n};\n","import { Content, Trigger } from '@radix-ui/react-collapsible';\n\nimport { CollapsibleRoot } from './CollapsibleRoot';\n\nexport const Collapsible = Object.assign(CollapsibleRoot, {\n Content,\n Trigger\n});\n","import { forwardRef } from 'react';\n\nimport { Root } from '@radix-ui/react-collapsible';\n\nexport const CollapsibleRoot = forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function CollapsibleRoot(props, ref) {\n return <Root ref={ref} {...props} />;\n }\n);\n","import * as React from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport type { Simplify } from 'type-fest';\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\ntype CommandRootProps = Simplify<React.ComponentPropsWithoutRef<typeof CommandPrimitive>>;\n\nconst CommandRoot = React.forwardRef<React.ElementRef<typeof CommandPrimitive>, CommandRootProps>(function Command(\n { className, ...props },\n ref\n) {\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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nexport const CommandEmpty = 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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandGroup = 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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const CommandInput = 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 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandItem = 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 'aria-selected:bg-accent aria-selected:text-accent-foreground relative flex cursor-pointer items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandList = 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 { forwardRef } from 'react';\n\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '@/utils';\n\nexport const CommandSeparator = 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 * as 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.bind(null), {\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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuContent = 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuItem = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuLabel = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSeparator = 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 * as 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 { forwardRef } from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\n\nimport { cn } from '@/utils';\n\nexport const ContextMenuSubContent = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none',\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, { useState } from 'react';\n\nimport { ClipboardCheckIcon, ClipboardListIcon } from 'lucide-react';\nimport { AnimatePresence, motion } from 'motion/react';\nimport { match } from 'ts-pattern';\n\nimport { Button } from '../Button';\n\nimport type { ButtonProps } from '../Button';\n\nexport const CopyButton: React.FC<{ size?: ButtonProps['size']; text: string; variant?: ButtonProps['variant'] }> = ({\n size,\n text,\n variant\n}) => {\n const [state, setState] = useState<'READY' | 'SUCCESS'>('READY');\n\n return (\n <Button\n size={size ?? 'icon'}\n type=\"button\"\n variant={variant}\n onClick={() => {\n if (state === 'READY') {\n navigator.clipboard\n .writeText(text)\n .then(() => setState('SUCCESS'))\n .catch(console.error);\n }\n }}\n onMouseLeave={() => {\n setState('READY');\n }}\n >\n <AnimatePresence mode=\"popLayout\">\n <motion.div\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n key={state}\n transition={{ duration: 0.1 }}\n >\n {match(state)\n .with('READY', () => <ClipboardListIcon />)\n .with('SUCCESS', () => <ClipboardCheckIcon />)\n .exhaustive()}\n </motion.div>\n </AnimatePresence>\n </Button>\n );\n};\n","import { useReducer, useState } from 'react';\nimport * as React from 'react';\n\nimport { AnimatePresence, motion } from 'motion/react';\n\nimport { useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nimport { ArrowToggle } from '../ArrowToggle';\nimport { Card } from '../Card';\nimport { Calendar, CALENDAR_ANIMATION_DURATION } 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 'decrement':\n newDate.setMonth(newDate.getMonth() - 1);\n break;\n case 'increment':\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 { forwardRef } from 'react';\n\nimport { range } from 'lodash-es';\nimport { AnimatePresence, motion } from 'motion/react';\n\nimport { useTranslation } from '@/hooks';\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 = 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 { forwardRef } 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 = 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 { forwardRef } from 'react';\n\nimport { ScrollAreaScrollbar, ScrollAreaThumb } from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/utils';\n\nexport const ScrollBar = 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 { DialogBody } from './DialogBody';\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.bind(null), {\n Body: DialogBody,\n Content: DialogContent,\n Description: DialogDescription,\n Footer: DialogFooter,\n Header: DialogHeader,\n Title: DialogTitle,\n Trigger\n});\n","import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DialogBody = ({\n children,\n className,\n ...props\n}: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => {\n return (\n <div className={cn('py-4', className)} {...props}>\n {children}\n </div>\n );\n};\n","import { forwardRef } 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 = 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 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"h-4 w-4\" />\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogOverlay = 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 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80 duration-200',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogDescription = 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 * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-x-2 gap-y-0.5 sm:flex-row', className)} {...props} />\n);\n","import * as React from 'react';\n\nimport { 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 { forwardRef } from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const DialogTitle = forwardRef<React.ElementRef<typeof Title>, React.ComponentPropsWithoutRef<typeof Title>>(\n function DialogTitle({ className, ...props }, ref) {\n return (\n <Title className={cn('text-lg font-semibold leading-none tracking-tight', className)} ref={ref} {...props} />\n );\n }\n);\n","import * as 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 { forwardRef } from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerContent = 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 { forwardRef } from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerDescription = 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 * as React from 'react';\n\nimport { 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 * as 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 { forwardRef } from 'react';\n\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/utils';\n\nexport const DrawerTitle = 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 * as React from 'react';\n\nimport { 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\n className=\"flex min-h-screen flex-col items-center justify-center gap-1 p-3 text-center\"\n data-testid=\"error-fallback\"\n >\n <h1 className=\"text-muted-foreground text-sm font-semibold tracking-wide uppercase\">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=\"text-muted-foreground mt-2 max-w-prose text-sm 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 { useCallback } from 'react';\n\nimport { UploadIcon } from 'lucide-react';\nimport { useDropzone } from 'react-dropzone';\nimport type { FileRejection } from 'react-dropzone';\n\nimport { useTranslation } from '@/hooks/useTranslation';\nimport { cn } from '@/utils';\n\nexport type FileDropzoneProps = {\n acceptedFileTypes: {\n [key: string]: string[];\n };\n className?: string;\n description?: string;\n file: File | null;\n setFile: (file: File) => void;\n titles?: {\n dragActive: string;\n dragInactive: string;\n };\n};\n\nexport const FileDropzone = ({\n acceptedFileTypes,\n className,\n description,\n file,\n setFile,\n titles\n}: FileDropzoneProps) => {\n const { t } = useTranslation();\n\n const handleDrop = useCallback(\n (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {\n for (const { errors, file } of rejectedFiles) {\n console.error(errors, file);\n }\n setFile(acceptedFiles[0]!);\n },\n [setFile]\n );\n const { getInputProps, getRootProps, isDragActive } = useDropzone({\n accept: acceptedFileTypes,\n maxFiles: 1,\n onDrop: handleDrop\n });\n\n const dragActiveTitle =\n titles?.dragActive ??\n t({\n en: 'File to upload',\n fr: 'fichier à télécharger'\n });\n\n const dragInactiveTitle =\n titles?.dragInactive ??\n t({\n en: 'Drag and drop files or click on box to upload',\n fr: 'Glissez-déposez les fichiers ou cliquez sur la case pour les télécharger'\n });\n\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center rounded-md border border-dashed border-slate-400 p-4 dark:border-slate-600',\n className\n )}\n data-testid=\"dropzone\"\n {...getRootProps()}\n >\n <div className=\"flex flex-col items-center justify-center gap-3\">\n <UploadIcon style={{ height: 24, strokeWidth: 2, width: 24 }} />\n <div className=\"flex flex-col items-center gap-1 text-center\">\n <h3 className=\"text-lg font-semibold tracking-tight\" data-testid=\"dropzone-title\">\n {file ? file.name : isDragActive ? dragActiveTitle : dragInactiveTitle}\n </h3>\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n </div>\n <input {...getInputProps()} />\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type {\n FormContent,\n FormDataType,\n FormFields,\n PartialFormDataType,\n PartialNullableFormDataType\n} from '@douglasneuroinformatics/libui-form-types';\nimport { get, set } from 'lodash-es';\nimport { twMerge } from 'tailwind-merge';\nimport type { Promisable } from 'type-fest';\nimport { z } from 'zod';\n\nimport { useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { Separator } from '../Separator';\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.TypeOf<TSchema> = z.TypeOf<TSchema>> = {\n [key: `data-${string}`]: unknown;\n additionalButtons?: {\n left?: React.ReactNode;\n right?: React.ReactNode;\n };\n className?: string;\n content: FormContent<TData>;\n customStyles?: {\n resetBtn?: string;\n submitBtn?: string;\n };\n fieldsFooter?: React.ReactNode;\n id?: string;\n initialValues?: PartialNullableFormDataType<NoInfer<TData>>;\n onBeforeSubmit?:\n | ((data: NoInfer<TData>) => Promisable<{ errorMessage: string; success: false } | { success: true }>)\n | null;\n onError?: (error: z.ZodError<NoInfer<TData>>) => void;\n onSubmit: (data: NoInfer<TData>) => Promisable<void>;\n preventResetValuesOnReset?: boolean;\n readOnly?: boolean;\n resetBtn?: boolean;\n revalidateOnBlur?: boolean;\n submitBtnLabel?: string;\n suspendWhileSubmitting?: boolean;\n validationSchema: z.ZodType<TData>;\n};\n\nconst Form = <TSchema extends z.ZodType<FormDataType>, TData extends z.TypeOf<TSchema> = z.TypeOf<TSchema>>({\n additionalButtons,\n className,\n content,\n customStyles,\n fieldsFooter,\n id,\n initialValues,\n onBeforeSubmit,\n onError,\n onSubmit,\n preventResetValuesOnReset,\n readOnly,\n resetBtn,\n revalidateOnBlur,\n submitBtnLabel,\n suspendWhileSubmitting,\n validationSchema,\n ...props\n}: FormProps<TSchema, TData>) => {\n const { resolvedLanguage, t } = useTranslation('libui');\n const [rootErrors, setRootErrors] = useState<string[]>([]);\n const [errors, setErrors] = useState<FormErrors<TData>>({});\n const [values, setValues] = useState<PartialFormDataType<TData>>(\n initialValues ? getInitialValues(initialValues) : {}\n );\n const [isSubmitting, setIsSubmitting] = useState(false);\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 const current = get(fieldErrors, issue.path) as string[] | undefined;\n if (current) {\n current.push(issue.message);\n } else {\n set(fieldErrors, issue.path, [issue.message]);\n }\n } else {\n rootErrors.push(issue.message);\n }\n }\n setErrors(fieldErrors);\n setRootErrors(rootErrors);\n if (onError) {\n onError(error);\n }\n };\n\n const reset = () => {\n setRootErrors([]);\n setErrors({});\n if (!preventResetValuesOnReset) {\n setValues({});\n }\n };\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const result = await validationSchema.safeParseAsync(values);\n if (!result.success) {\n console.error(result.error.issues);\n handleError(result.error);\n return;\n }\n if (onBeforeSubmit) {\n const beforeSubmitResult = await onBeforeSubmit(result.data);\n if (!beforeSubmitResult.success) {\n setErrors({});\n setRootErrors([beforeSubmitResult.errorMessage]);\n return;\n }\n }\n\n try {\n setIsSubmitting(true);\n await Promise.all([\n onSubmit(result.data),\n new Promise<void>((resolve) => {\n return suspendWhileSubmitting ? setTimeout(resolve, 500) : resolve();\n })\n ]);\n reset();\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const isGrouped = Array.isArray(content);\n\n const revalidate = () => {\n const hasErrors = Object.keys(errors).length > 0 || rootErrors.length;\n if (hasErrors) {\n validationSchema\n .safeParseAsync(values)\n .then((result) => {\n if (!result.success) {\n handleError(result.error);\n }\n })\n .catch(console.error);\n }\n };\n\n useEffect(() => {\n setErrors({});\n setRootErrors([]);\n }, [resolvedLanguage]);\n\n const isSuspended = Boolean(suspendWhileSubmitting && isSubmitting);\n\n return (\n <form\n autoComplete=\"off\"\n className={twMerge('relative flex w-full flex-col', !isGrouped && 'gap-6', className)}\n id={id}\n onBlur={revalidateOnBlur ? revalidate : undefined}\n onSubmit={(event) => void handleSubmit(event)}\n {...props}\n >\n {isSubmitting && <div className=\"absolute z-10 h-full w-full cursor-wait\" />}\n {isGrouped ? (\n content.map((fieldGroup, i) => {\n return (\n <>\n <div className=\"flex flex-col gap-6 [&:not(:first-child)]:pt-8\" key={i}>\n <div className=\"flex flex-col gap-1\">\n {fieldGroup.title && (\n <Heading className=\"text-base\" variant=\"h4\">\n {fieldGroup.title}\n </Heading>\n )}\n {fieldGroup.description && (\n <p className=\"text-muted-foreground text-sm leading-tight italic\">{fieldGroup.description}</p>\n )}\n </div>\n <FieldsComponent\n errors={errors}\n fields={fieldGroup.fields as FormFields<TData>}\n readOnly={readOnly}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n </div>\n <Separator className=\"mt-8\" />\n </>\n );\n })\n ) : (\n <FieldsComponent\n errors={errors}\n fields={content}\n readOnly={readOnly}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n )}\n {Boolean(rootErrors.length) && <ErrorMessage className=\"-mt-3\" error={rootErrors} />}\n {fieldsFooter}\n <div className=\"flex w-full gap-3\">\n {additionalButtons?.left}\n {/** Note - aria-label is used for testing in downstream packages */}\n <Button\n aria-label=\"Submit\"\n className={cn('flex w-full items-center justify-center gap-2', customStyles?.submitBtn)}\n disabled={readOnly || isSuspended}\n type=\"submit\"\n variant=\"primary\"\n >\n {submitBtnLabel ?? t('form.submit')}\n <svg\n className={cn('hidden h-4 w-4 animate-spin', isSuspended && 'block')}\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 >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n </Button>\n {resetBtn && (\n <Button\n aria-label=\"Reset\"\n className={cn('block w-full', customStyles?.resetBtn)}\n disabled={readOnly}\n type=\"button\"\n variant=\"secondary\"\n onClick={reset}\n >\n {t('form.reset')}\n </Button>\n )}\n {additionalButtons?.right}\n </div>\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 <h5 className={cn('text-base font-semibold tracking-tight', className)}>{children}</h5>;\n default:\n throw new Error(`Unhandled heading variant: ${variant satisfies never}`);\n }\n};\n","import { forwardRef } from 'react';\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils';\n\nexport const Separator = 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 * as React from 'react';\n\nimport { CircleAlertIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const ErrorMessage: React.FC<{ className?: string; error?: null | string[] }> = ({ className, error }) => {\n return error ? (\n <div className=\"flex flex-col gap-1.5\">\n {error.map((message) => (\n <div className={cn('text-destructive flex w-full items-center text-sm font-medium', className)} key={message}>\n <CircleAlertIcon className=\"mr-1\" style={{ strokeWidth: '2px' }} />\n <span data-testid=\"error-message-text\">{message}</span>\n </div>\n )) ?? null}\n </div>\n ) : null;\n};\n","import * as React from 'react';\n\nimport 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 readOnly?: boolean;\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 { useEffect, useMemo, useState } from 'react';\nimport * as React 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 readOnly?: boolean;\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 readOnly,\n setValues,\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.call(undefined, values);\n }, [dependentValues, field.render]);\n\n useEffect(() => {\n if (!staticField) {\n setValues((prevValues) => ({ ...prevValues, [name]: undefined }));\n }\n }, [staticField]);\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 (\n <StaticField {...props} field={staticField} name={name} readOnly={readOnly} setValues={setValues} values={values} />\n );\n};\n","import { useCallback } from 'react';\nimport * as React 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 } from './ScalarField';\n\nimport type { ScalarFieldProps } from './ScalarField';\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 readOnly?: boolean;\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 readOnly,\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 readOnly={readOnly}\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 readOnly={readOnly}\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 readOnly={readOnly}\n setError={setError}\n setValue={setValue}\n value={values[name] as ScalarFieldValue}\n />\n ));\n};\n","import { useEffect, useRef } 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 disabled,\n error: recordError,\n items,\n label,\n options,\n readOnly,\n setError: setRecordError,\n setValue: setRecordValue,\n value: recordValue\n}: NumberRecordFieldProps<T>) => {\n const optionsRef = useRef(options);\n\n useEffect(() => {\n if (!recordValue) {\n setRecordValue({});\n }\n }, []);\n\n useEffect(() => {\n if (optionsRef.current !== options) {\n setRecordValue({});\n optionsRef.current = options;\n }\n }, [options]);\n\n if (!recordValue) {\n return null;\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"flex flex-col gap-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 readOnly={disabled || readOnly}\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 } from './NumberFieldInput';\nimport { NumberFieldRadio } from './NumberFieldRadio';\nimport { NumberFieldSelect } from './NumberFieldSelect';\nimport { NumberFieldSlider } from './NumberFieldSlider';\n\nimport type { NumberFieldInputProps } from './NumberFieldInput';\nimport type { NumberFieldRadioProps } from './NumberFieldRadio';\nimport 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 .with({ variant: 'select' }, (props) => <NumberFieldSelect {...props} />)\n .exhaustive();\n};\n","import { useEffect, useId, useRef, useState } from 'react';\n\nimport { parseNumber } from '@douglasneuroinformatics/libjs';\nimport 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 disabled,\n error,\n label,\n max = Number.MAX_SAFE_INTEGER,\n min = Number.MIN_SAFE_INTEGER,\n name,\n readOnly,\n setValue,\n value\n}: NumberFieldInputProps) => {\n const id = useId();\n const [inputValue, setInputValue] = useState(value?.toString() ?? '');\n const valueRef = useRef<number | undefined>(value);\n\n const parseInputValue = (value: string) => {\n const isSignOrEmpty = /^[+-]?$/.test(value);\n if (isSignOrEmpty) {\n return undefined;\n } else {\n const parsedValue = parseNumber(value);\n if (parsedValue >= min && parsedValue <= max) {\n return parsedValue;\n }\n }\n return NaN;\n };\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const updatedValue = parseInputValue(event.target.value);\n if (Number.isNaN(updatedValue)) {\n return;\n }\n setInputValue(event.target.value);\n setValue(updatedValue);\n valueRef.current = updatedValue;\n };\n\n useEffect(() => {\n if (valueRef.current === value) {\n return;\n }\n const updatedInputValue = value?.toString() ?? '';\n setInputValue(updatedInputValue);\n valueRef.current = value;\n }, [value]);\n\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={id}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n id={id}\n max={max}\n min={min}\n name={name}\n type=\"text\"\n value={inputValue}\n onChange={handleChange}\n />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import * as 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 'border-input placeholder:text-muted-foreground focus-visible:ring-ring flex h-9 w-full rounded-md border bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-80 focus-visible:ring-1 focus-visible:outline-hidden 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 { forwardRef } from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } 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 aria-disabled:cursor-not-allowed aria-disabled:opacity-70'\n);\n\nexport const Label = 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 * as React from 'react';\n\nimport { 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 tabIndex={-1}>\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.bind(null), {\n Content: PopoverContent,\n Trigger: PopoverTrigger\n});\n","import * as 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 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border px-3 py-1.5 shadow-md outline-hidden',\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 * as React from 'react';\n\nexport const FieldGroupRoot: React.FC<{ children: React.ReactNode; name: string }> = ({ children, name }) => (\n <div className=\"flex flex-col gap-3 @container\" data-field-group={name}>\n {children}\n </div>\n);\n","import * as React from 'react';\n\nexport 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 * as 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 { forwardRef } 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 = 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 'border-primary text-primary focus-visible:ring-ring flex aspect-square h-4 w-4 items-center justify-center rounded-full border shadow-sm focus:outline-hidden focus-visible:ring-1 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, { options: object }>\n>;\n\nexport const NumberFieldRadio = ({\n description,\n disableAutoPrefix,\n disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: NumberFieldRadioProps) => {\n const optionsCount = Object.keys(options).length;\n\n return (\n <FieldGroup name={name}>\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((val) => {\n const text = (disableAutoPrefix ? '' : `${val} - `) + options[val];\n return (\n <div className=\"flex items-center gap-2\" key={val}>\n <RadioGroup.Item disabled={disabled || readOnly} id={`${name}-${val}`} value={val.toString()} />\n <Label\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-${val}`}\n >\n {text}\n </Label>\n </div>\n );\n })}\n </RadioGroup>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\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.bind(null), {\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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-xs py-1.5 pr-8 pl-2 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectLabel = 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 { forwardRef } from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '@/utils';\n\nexport const SelectSeparator = 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 { forwardRef } from 'react';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { DropdownButton } from '../DropdownButton';\n\nexport const SelectTrigger = 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 { NumberFormField } 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';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldSelectProps<T extends number = number> = Simplify<\n BaseFieldComponentProps<T> & Extract<NumberFormField<T>, { options: object }>\n>;\n\nexport const NumberFieldSelect = <T extends number = number>({\n description,\n disableAutoPrefix,\n disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: NumberFieldSelectProps<T>) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Select name={name} value={value?.toString() ?? ''} onValueChange={(value) => setValue(parseFloat(value) as T)}>\n <Select.Trigger data-testid={`${name}-select-trigger`} disabled={disabled || readOnly}>\n <Select.Value />\n </Select.Trigger>\n <Select.Content data-testid={`${name}-select-content`}>\n {Object.keys(options).map((option) => {\n // Option needs to be type number (this was a design flaw), but is actually always coerced to string anyways\n const text = (disableAutoPrefix ? '' : `${option} - `) + options[option as any as T];\n return (\n <Select.Item data-testid={`${name}-select-item-${option}`} key={option} value={option}>\n {text}\n </Select.Item>\n );\n })}\n </Select.Content>\n </Select>\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { Range, Root, Thumb, Track } from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils';\n\nexport const Slider = forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function Slider({ className, disabled, ...props }, ref) {\n return (\n <Root\n className={cn('relative flex w-full touch-none items-center py-1.5 select-none', className)}\n disabled={disabled}\n ref={ref}\n {...props}\n >\n <Track\n aria-disabled={disabled}\n className=\"bg-primary relative h-1.5 w-full grow overflow-hidden rounded-full opacity-15 aria-disabled:cursor-not-allowed aria-disabled:opacity-10\"\n data-testid=\"slider-track\"\n >\n <Range className=\"bg-primary absolute h-full\" />\n </Track>\n <Thumb\n aria-disabled={disabled}\n className=\"bg-background focus-visible:ring-ring block h-4 w-4 rounded-full border border-slate-500 shadow-sm transition-colors focus-visible:ring-1 focus-visible:outline-hidden aria-disabled:cursor-not-allowed\"\n data-testid=\"slider-thumb\"\n />\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 disabled,\n error,\n label,\n max,\n min,\n name,\n readOnly,\n setValue,\n value\n}: NumberFieldSliderProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Slider\n disabled={disabled || readOnly}\n max={max}\n min={min}\n name={name}\n value={[value ?? 0]}\n onValueChange={([value]) => setValue(value)}\n />\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, useRef } from 'react';\n\nimport type { RecordArrayFieldValue, RecordArrayFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { MinusCircleIcon, PlusCircleIcon } from 'lucide-react';\nimport type { Simplify } from 'type-fest';\n\nimport { useTranslation } from '@/hooks';\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 disabled,\n error: arrayError,\n fieldset,\n label,\n readOnly,\n setError: setArrayError,\n setValue: setArrayValue,\n value: arrayValue\n}: RecordArrayFieldProps) {\n const fieldsetRef = useRef(fieldset);\n const { t } = useTranslation('libui');\n\n const createNewRecord = () => Object.fromEntries(Object.keys(fieldset).map((fieldName) => [fieldName, undefined]));\n\n useEffect(() => {\n if (!arrayValue) {\n setArrayValue([createNewRecord()]);\n }\n }, []);\n\n useEffect(() => {\n if (fieldsetRef.current !== fieldset) {\n setArrayValue([createNewRecord()]);\n fieldsetRef.current = fieldset;\n }\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=\"flex flex-col gap-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"flex flex-col gap-6\">\n {arrayValue.map((fields, i) => (\n <div className=\"flex flex-col gap-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.call(undefined, fields) : field;\n if (!fieldProps) {\n return null;\n }\n return (\n <ScalarField\n error={arrayError?.[i]?.[name]}\n field={{\n ...fieldProps,\n disabled: disabled || fieldProps.disabled\n }}\n key={name}\n name={name}\n readOnly={disabled || readOnly}\n setError={(error) => {\n const newArrayError = arrayError ? [...arrayError] : [];\n newArrayError[i] ??= {};\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 disabled={disabled || readOnly} type=\"button\" variant=\"outline\" onClick={appendField}>\n {t('form.append')}\n <PlusCircleIcon className=\"ml-2\" />\n </Button>\n <Button disabled={disabled || readOnly} 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 } from './BooleanFieldCheckbox';\nimport { BooleanFieldRadio } from './BooleanFieldRadio';\n\nimport type { BooleanFieldCheckboxProps } from './BooleanFieldCheckbox';\nimport 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 { Checkbox } from '@/components/Checkbox';\nimport { Label } from '@/components/Label';\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 = ({\n disabled,\n error,\n label,\n name,\n readOnly,\n setValue,\n value\n}: BooleanFieldCheckboxProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Checkbox\n checked={Boolean(value)}\n disabled={disabled || readOnly}\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 { match } from 'ts-pattern';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\nimport { useTranslation } from '@/hooks';\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 = ({\n disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: 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 name={name}>\n <Label>{label}</Label>\n <RadioGroup\n disabled={disabled || readOnly}\n name={name}\n value={stringifyBoolean(value)}\n onValueChange={handleValueChange}\n >\n <FieldGroup.Row>\n <RadioGroup.Item id={`${name}-true`} value=\"true\" />\n <Label\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-true`}\n >\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\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-false`}\n >\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';\n\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 = ({ disabled, error, label, name, readOnly, setValue, value }: DateFieldProps) => {\n const [isDatePickerOpen, setIsDatePickerOpen] = useState(false);\n const [isInputFocused, setIsInputFocused] = useState(false);\n const [inputValue, setInputValue] = useState(value ? toBasicISOString(value) : '');\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 name={name}>\n <Label htmlFor={name}>{label}</Label>\n <Popover open={isDatePickerOpen} onOpenChange={setIsDatePickerOpen}>\n <Popover.Trigger>\n <Input\n autoComplete=\"off\"\n data-testid=\"date-input\"\n disabled={disabled || readOnly}\n name={name}\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 disabled,\n error,\n label,\n name,\n onCheckedChange,\n options,\n readOnly,\n value\n}: SetFieldListboxProps<T>) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <div className=\"grid gap-2\">\n {Object.keys(options).map((option) => (\n <FieldGroup.Row key={option}>\n <Checkbox\n checked={value?.has(option as T) ?? false}\n disabled={disabled || readOnly}\n id={`${name}-${option}`}\n onCheckedChange={(checked) => {\n onCheckedChange(option as T, !checked);\n }}\n />\n <Label className=\"font-normal text-muted-foreground\" htmlFor={`${name}-${option}`}>\n {options[option as T]}\n </Label>\n </FieldGroup.Row>\n ))}\n </div>\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 disabled,\n error,\n label,\n name,\n onCheckedChange,\n options,\n readOnly,\n value\n}: SetFieldSelectProps<T>) => {\n return value ? (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <DropdownMenu>\n <DropdownMenu.Trigger asChild className=\"w-full\" disabled={disabled || readOnly}>\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 } from './StringFieldInput';\nimport { StringFieldPassword } from './StringFieldPassword';\nimport { StringFieldRadio } from './StringFieldRadio';\nimport { StringFieldSelect } from './StringFieldSelect';\nimport { StringFieldTextArea } from './StringFieldTextArea';\n\nimport type { StringFieldInputProps } from './StringFieldInput';\nimport type { StringFieldPasswordProps } from './StringFieldPassword';\nimport type { StringFieldRadioProps } from './StringFieldRadio';\nimport 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> &\n Extract<StringFormField, { variant: 'input' | 'textarea' }>;\n\nexport const StringFieldInput = ({\n description,\n disabled,\n error,\n label,\n name,\n placeholder,\n readOnly,\n setValue,\n value\n}: StringFieldInputProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={name}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n id={name}\n name={name}\n placeholder={placeholder}\n type=\"text\"\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\n <FieldGroup.Error error={error} />\n </FieldGroup>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { motion } from 'motion/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 PasswordStrengthValue = 0 | 1 | 2 | 3 | 4;\n\nexport type StringFieldPasswordProps = BaseFieldComponentProps<string> &\n Extract<StringFormField, { variant: 'password' }>;\n\nexport const StringFieldPassword = ({\n calculateStrength,\n description,\n disabled,\n error,\n label,\n name,\n readOnly,\n setValue,\n value\n}: StringFieldPasswordProps) => {\n const [strength, setStrength] = useState<null | PasswordStrengthValue>(calculateStrength ? 0 : null);\n const [show, setShow] = useState(false);\n useEffect(() => {\n if (calculateStrength) {\n setStrength(value ? calculateStrength(value) : 0);\n }\n }, [value]);\n\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={name}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n id={name}\n name={name}\n type={show ? 'text' : 'password'}\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\n <button\n className=\"text-muted-foreground absolute right-0 flex h-full w-8 items-center justify-center\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onClick={() => setShow(!show)}\n >\n <EyeIcon className={cn('absolute transition-all', show ? 'scale-0 -rotate-90' : 'scale-100 rotate-0')} />\n <EyeOffIcon className={cn('absolute transition-all', !show ? 'scale-0 rotate-90' : 'scale-100 rotate-0')} />\n </button>\n </FieldGroup.Row>\n {strength !== null && (\n <motion.div\n animate={{ width: `${Math.max(strength * 25, 5)}%` }}\n className=\"h-1 w-full overflow-hidden rounded-sm\"\n initial={{ width: '5%' }}\n transition={{ duration: 0.5 }}\n >\n <div\n className={cn(\n 'bg-destructive h-full w-full transition-colors duration-500',\n strength === 2 && 'bg-yellow-500 dark:bg-yellow-700',\n strength === 3 && 'bg-sky-500 dark:bg-sky-700',\n strength === 4 && 'bg-green-500 dark:bg-green-700'\n )}\n />\n </motion.div>\n )}\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 disabled?: boolean;\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 disabled,\n error,\n label,\n name,\n options,\n orientation = 'vertical',\n readOnly,\n setValue,\n value\n}: BaseRadioFieldProps<T>) => {\n const optionsCount = Object.keys(options).length;\n return (\n <FieldGroup name={name}>\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 disabled={disabled || readOnly} id={`${name}-${option}`} value={option} />\n <Label\n aria-disabled={disabled || readOnly}\n className=\"font-normal text-muted-foreground\"\n htmlFor={`${name}-${option}`}\n >\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 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';\n\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 disabled,\n error,\n label,\n name,\n options,\n readOnly,\n setValue,\n value\n}: StringFieldSelectProps<T>) => {\n return (\n <FieldGroup name={name}>\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 data-testid={`${name}-select-trigger`} disabled={disabled || readOnly}>\n <Select.Value />\n </Select.Trigger>\n <Select.Content data-testid={`${name}-select-content`}>\n {Object.keys(options).map((option) => (\n <Select.Item data-testid={`${name}-select-item-${option}`} 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 * as 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 'border-input placeholder:text-muted-foreground focus-visible:ring-ring flex min-h-[60px] w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs placeholder:opacity-80 focus-visible:ring-1 focus-visible:outline-hidden 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> &\n Extract<StringFormField, { variant: 'input' | 'textarea' }>;\n\nexport const StringFieldTextArea = ({\n description,\n disabled,\n error,\n label,\n name,\n placeholder,\n readOnly,\n setValue,\n value\n}: StringFieldTextAreaProps) => {\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label htmlFor={name}>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <TextArea\n disabled={disabled || readOnly}\n id={name}\n name={name}\n placeholder={placeholder}\n rows={5}\n value={value ?? ''}\n onChange={(event) => setValue(event.target.value)}\n />\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 } from './BooleanField';\nimport { DateField } from './DateField';\nimport { NumberField } from './NumberField';\nimport { SetField } from './SetField';\nimport { StringField } from './StringField';\n\nimport type { BooleanFieldProps } from './BooleanField';\nimport type { DateFieldProps } from './DateField';\nimport type { NumberFieldProps } from './NumberField';\nimport type { SetFieldProps } from './SetField';\nimport type { StringFieldProps } from './StringField';\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 'boolean':\n return <BooleanField {...field} {...(props as BooleanFieldProps)} />;\n case 'date':\n return <DateField {...field} {...(props as DateFieldProps)} />;\n case 'number':\n return <NumberField {...field} {...(props as NumberFieldProps)} />;\n case 'set':\n return <SetField {...field} {...(props as SetFieldProps)} />;\n case 'string':\n return <StringField {...field} {...(props as StringFieldProps)} />;\n default:\n throw new Error(`Unexpected value for kind: ${Reflect.get(field, 'kind') satisfies never}`);\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.call(undefined, 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.bind(null), {\n Content: HoverCardContent,\n Trigger\n});\n","import { forwardRef } from 'react';\n\nimport { Content } from '@radix-ui/react-hover-card';\n\nimport { cn } from '@/utils';\n\nexport const HoverCardContent = 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 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n});\n","import { LanguagesIcon } from 'lucide-react';\n\nimport { useTranslation } from '@/hooks';\nimport type { Language } from '@/i18n';\n\nimport { Button } from '../Button';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { ButtonProps } from '../Button';\n\nexport type LanguageToggleProps = {\n align?: 'center' | 'end' | 'start';\n contentClassName?: string;\n itemClassName?: string;\n options: {\n [L in Language]?: string;\n };\n triggerClassName?: string;\n variant?: ButtonProps['variant'];\n};\n\nexport const LanguageToggle = ({\n align = 'start',\n contentClassName,\n itemClassName,\n options = {},\n triggerClassName,\n variant = 'outline'\n}: LanguageToggleProps) => {\n const { changeLanguage } = 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} className={contentClassName}>\n {Object.keys(options).map((option) => (\n <DropdownMenu.Item\n className={itemClassName}\n key={option}\n onClick={() => void changeLanguage(option as Language)}\n >\n {options[option as Language]}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import * as React from 'react';\n\nimport { toBasicISOString } from '@douglasneuroinformatics/libjs';\nimport {\n CartesianGrid,\n ErrorBar,\n Label,\n Legend,\n Line,\n LineChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n} from 'recharts';\nimport type { LineProps } from 'recharts';\nimport type { ConditionalKeys } from 'type-fest';\n\nimport { useTranslation } from '@/hooks';\nimport { useTheme } from '@/hooks/useTheme';\nimport type { Theme } from '@/hooks/useTheme';\n\n/** An array of arbitrary objects with data to graph */\n\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\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 { resolvedLanguage } = 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(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 * as React from 'react';\n\nimport { cn } from '@/utils';\n\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { ButtonProps } from '../Button';\n\nexport type ListboxDropdownOption = {\n key: string;\n label: string;\n};\n\nexport type ListboxDropdownProps<T extends ListboxDropdownOption> = {\n checkPosition?: 'left' | 'right';\n className?: string;\n contentClassName?: string;\n disabled?: boolean;\n options: T[];\n selected: T[];\n setSelected: React.Dispatch<React.SetStateAction<T[]>>;\n title: string;\n triggerClassName?: string;\n variant?: ButtonProps['variant'];\n widthFull?: boolean;\n};\n\nexport const ListboxDropdown = <T extends ListboxDropdownOption>({\n contentClassName,\n disabled,\n options,\n selected,\n setSelected,\n title,\n triggerClassName,\n widthFull\n}: ListboxDropdownProps<T>) => {\n return (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild className={cn('w-full', triggerClassName)} disabled={disabled}>\n <DropdownButton>{title}</DropdownButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\" className={contentClassName} widthFull={widthFull}>\n {options.map((option) => {\n const checked = Boolean(selected.find((selectedOption) => selectedOption.key === option.key));\n return (\n <DropdownMenu.CheckboxItem\n checked={checked}\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-testid=\"select-dropdown-option\"\n key={option.key}\n onSelect={(event) => {\n event.preventDefault();\n if (checked) {\n setSelected((prevSelected) => {\n return prevSelected.filter((selectedOption) => selectedOption.key !== option.key);\n });\n } else {\n setSelected((prevSelected) => [...prevSelected, option]);\n }\n }}\n >\n {option.label}\n </DropdownMenu.CheckboxItem>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import { Group, Menu, Portal, RadioGroup, Sub } from '@radix-ui/react-menubar';\nimport type { MenubarMenuProps } 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 as React.ComponentType<MenubarMenuProps>,\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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport { Content, Portal } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarContent = 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 { forwardRef } from 'react';\n\nimport { Item } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarItem = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport { Label } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarLabel = 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 { forwardRef } 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 = 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 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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 { forwardRef } from 'react';\n\nimport { Root } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarRoot = forwardRef<React.ElementRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function MenuBarRoot({ className, ...props }, ref) {\n return (\n <Root\n className={cn('bg-background flex h-9 items-center space-x-1 rounded-md border p-1 shadow-xs', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import { forwardRef } from 'react';\n\nimport { Separator } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSeparator = 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 * as 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 { forwardRef } from 'react';\n\nimport { SubContent } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubContent = 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 { forwardRef } from 'react';\n\nimport { SubTrigger } from '@radix-ui/react-menubar';\nimport { ChevronRightIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const MenuBarSubTrigger = 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 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none',\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 { forwardRef } from 'react';\n\nimport { Trigger } from '@radix-ui/react-menubar';\n\nimport { cn } from '@/utils';\nexport const MenuBarTrigger = 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 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-3 py-1 text-sm font-medium outline-hidden select-none',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { XIcon } from 'lucide-react';\nimport { AnimatePresence, motion } from 'motion/react';\n\nimport { useTranslation } from '@/hooks';\nimport { useNotificationsStore } from '@/hooks/useNotificationsStore';\n\nimport { Card } from '../Card';\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 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:ring-1 focus:ring-sky-500 focus:outline-hidden 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=\"text-muted-foreground my-2\">{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 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 'error':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-red-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z\"\n fillRule=\"evenodd\"\n ></path>\n </svg>\n );\n case 'info':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-blue-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n fillRule=\"evenodd\"\n ></path>\n </svg>\n );\n case 'success':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-green-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\"\n fillRule=\"evenodd\"\n />\n </svg>\n );\n case 'warning':\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-6 w-6 text-yellow-500\"\n data-slot=\"icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z\"\n fillRule=\"evenodd\"\n ></path>\n </svg>\n );\n }\n};\n","import { useEffect, useRef, useState } from 'react';\nimport type { ChangeEvent, ClipboardEvent, KeyboardEvent } from 'react';\n\nimport type { Promisable } from 'type-fest';\n\nimport { useNotificationsStore, useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nconst CODE_LENGTH = 6;\n\nconst EMPTY_CODE = Object.freeze(Array<null>(CODE_LENGTH).fill(null));\n\ntype OneTimePasswordInputProps = {\n [key: `data-${string}`]: unknown;\n className?: string;\n onComplete: (code: number) => Promisable<void>;\n};\n\nfunction getUpdatedDigits(digits: (null | number)[], index: number, value: null | number) {\n const updatedDigits = [...digits];\n updatedDigits[index] = value;\n return updatedDigits;\n}\n\nexport const OneTimePasswordInput = ({ className, onComplete, ...props }: OneTimePasswordInputProps) => {\n const notifications = useNotificationsStore();\n const { t } = useTranslation('libui');\n const [digits, setDigits] = useState<(null | number)[]>([...EMPTY_CODE]);\n const inputRefs = digits.map(() => useRef<HTMLInputElement>(null));\n\n useEffect(() => {\n const isComplete = digits.every((value) => Number.isInteger(value));\n if (isComplete) {\n void onComplete(parseInt(digits.join('')));\n setDigits([...EMPTY_CODE]);\n }\n }, [digits]);\n\n const focusNext = (index: number) => inputRefs[index + 1 === digits.length ? 0 : index + 1]?.current?.focus();\n\n const focusPrev = (index: number) => inputRefs[index - 1 >= 0 ? index - 1 : digits.length - 1]?.current?.focus();\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>, index: number) => {\n let value: null | number;\n if (e.target.value === '') {\n value = null;\n } else if (Number.isInteger(parseInt(e.target.value))) {\n value = parseInt(e.target.value);\n } else {\n return;\n }\n setDigits((prevDigits) => getUpdatedDigits(prevDigits, index, value));\n focusNext(index);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>, index: number) => {\n switch (e.key) {\n case 'ArrowLeft':\n focusPrev(index);\n break;\n case 'ArrowRight':\n focusNext(index);\n break;\n case 'Backspace':\n setDigits((prevDigits) => getUpdatedDigits(prevDigits, index - 1, null));\n focusPrev(index);\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedDigits = e.clipboardData\n .getData('text/plain')\n .split('')\n .slice(0, CODE_LENGTH)\n .map((value) => parseInt(value));\n const isValid = pastedDigits.length === CODE_LENGTH && pastedDigits.every((value) => Number.isInteger(value));\n if (isValid) {\n setDigits(pastedDigits);\n } else {\n notifications.addNotification({\n message: t('oneTimePasswordInput.invalidCodeFormat'),\n type: 'warning'\n });\n }\n };\n\n return (\n <div className={cn('flex gap-2', className)} {...props}>\n {digits.map((_, index) => (\n <input\n className=\"w-1/6 rounded-md border border-slate-300 bg-transparent p-2 text-center shadow-xs hover:border-slate-300 focus:border-sky-800 focus:outline-hidden dark:border-slate-600 dark:hover:border-slate-400 dark:focus:border-sky-500\"\n key={index}\n maxLength={1}\n ref={inputRefs[index]}\n type=\"text\"\n value={digits[index] ?? ''}\n onChange={(e) => {\n handleChange(e, index);\n }}\n onKeyDown={(e) => {\n handleKeyDown(e, index);\n }}\n onPaste={handlePaste}\n />\n ))}\n </div>\n );\n};\n","import { forwardRef } from 'react';\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '@/utils';\n\nexport const Progress = 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 * as React from 'react';\n\nimport { Panel } from 'react-resizable-panels';\nimport type { PanelProps } from 'react-resizable-panels';\n\nimport { ResizableHandle } from './ResizableHandle';\nimport { ResizablePanelGroup } from './ResizablePanelGroup';\n\nimport type { ResizableHandleProps } from './ResizableHandle';\nimport 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 * as React from 'react';\n\nimport { 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 'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </PanelResizeHandle>\n);\n","import * as React from 'react';\n\nimport { 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';\n\nimport { useTranslation } from '@/hooks';\nimport { cn } from '@/utils';\n\nimport { Input } from '../Input';\n\ntype BaseSearchBarProps = {\n [key: `data-${string}`]: unknown;\n /** Additional CSS classes to add to the wrapper form component, potentially overriding default styling */\n className?: string;\n /** The ID to pass to the HTMLFormElement */\n id?: 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 /** Whether the input element should be readonly */\n readOnly?: boolean;\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 = ({\n className,\n onClick,\n onValueChange,\n placeholder,\n readOnly,\n value,\n ...props\n}: SearchBarProps) => {\n const { t } = useTranslation('libui');\n return (\n <form className={cn('relative', className)} {...props}>\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 readOnly={readOnly}\n type=\"search\"\n value={value}\n onChange={(event) => {\n onValueChange?.(event.target.value);\n }}\n onClick={() => onClick?.()}\n />\n </form>\n );\n};\n\nexport type { BaseSearchBarProps };\n","import { Close, Portal, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { SheetBody } from './SheetBody';\nimport { SheetContent } from './SheetContent';\nimport { SheetDescription } from './SheetDescription';\nimport { SheetFooter } from './SheetFooter';\nimport { SheetHeader } from './SheetHeader';\nimport { SheetTitle } from './SheetTitle';\n\nexport const Sheet = Object.assign(Root.bind(null), {\n Body: SheetBody,\n Close,\n Content: SheetContent,\n Description: SheetDescription,\n Footer: SheetFooter,\n Header: SheetHeader,\n Portal,\n Title: SheetTitle,\n Trigger\n});\n","import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport const SheetBody = ({\n children,\n className,\n ...props\n}: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => {\n return (\n <div className={cn('py-4', className)} {...props}>\n {children}\n </div>\n );\n};\n","import * as React from 'react';\n\nimport { Close, Content, Portal } from '@radix-ui/react-dialog';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nimport { SheetOverlay } from './SheetOverlay';\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 <SheetOverlay />\n <Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetOverlay = 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 { forwardRef } from 'react';\n\nimport { Description } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetDescription = 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 * as 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 * as 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 { forwardRef } from 'react';\n\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '@/utils';\n\nexport const SheetTitle = forwardRef<React.ElementRef<typeof Title>, 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);\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 * as React from 'react';\n\nimport { 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 { useEffect } from 'react';\nimport type { ReactElement } from 'react';\n\nimport { motion, useSpring, useTransform } from 'motion/react';\n\nimport { cn } from '@/utils';\n\nimport { Card } from '../Card';\n\ntype StatisticCardProps = {\n [key: `data-${string}`]: unknown;\n className?: string;\n icon?: ReactElement;\n label: string;\n value: number;\n};\n\nexport const StatisticCard = ({ className, icon, label, value, ...props }: StatisticCardProps) => {\n const spring = useSpring(0, { bounce: 0 });\n const rounded = useTransform(spring, (latest: number) => Math.floor(latest));\n\n useEffect(() => {\n spring.set(value);\n }, [spring, value]);\n\n return (\n <Card className={cn('flex w-full rounded-lg p-4', className)} {...props}>\n {icon && <div className=\"mr-2 flex items-center justify-center text-4xl\">{icon}</div>}\n <div className=\"w-full text-center\">\n <motion.h3 className=\"title-font text-2xl font-semibold text-slate-900 dark:text-slate-100 sm:text-3xl\">\n {rounded}\n </motion.h3>\n <p className=\"font-medium leading-relaxed\">{label}</p>\n </div>\n </Card>\n );\n};\n","import { forwardRef } from 'react';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils';\n\nexport const Switch = 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 focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'bg-background pointer-events-none block h-4 w-4 rounded-full 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 { forwardRef } from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsContent = 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 'ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsList = 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 { forwardRef } from 'react';\n\nimport { Root } from '@radix-ui/react-tabs';\n\nexport const TabsRoot = forwardRef<React.ComponentRef<typeof Root>, React.ComponentPropsWithoutRef<typeof Root>>(\n function TabsRoot(props, ref) {\n return <Root ref={ref} {...props} />;\n }\n);\n","import { forwardRef } from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils';\n\nexport const TabsTrigger = 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 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { TabsContent } from './TabsContent';\nimport { TabsList } from './TabsList';\nimport { TabsRoot } from './TabsRoot';\nimport { TabsTrigger } from './TabsTrigger';\n\nexport const Tabs = Object.assign(TabsRoot, {\n Content: TabsContent,\n List: TabsList,\n Trigger: TabsTrigger\n});\n","import { MoonIcon, SunIcon } from 'lucide-react';\n\nimport { useTheme } from '@/hooks/useTheme';\n\nimport { Button } from '../Button';\n\nimport 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 * as 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 preferred side of the trigger to render against when open. Will be reversed when collisions occur and avoidCollisions is enabled. */\n side?: 'bottom' | 'left' | 'right' | 'top';\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 * as 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 /** Event handler called when the open state of the tooltip changes. */\n onOpenChange?: (open: boolean) => void;\n /** The controlled open state of the tooltip. Must be used in conjunction with onOpenChange. */\n open?: boolean;\n /** How much time a user has to enter another trigger without incurring a delay again. */\n skipDelayDuration?: number;\n};\n\nexport const TooltipRoot = ({\n children,\n delayDuration = 0,\n onOpenChange,\n open,\n skipDelayDuration = 300\n}: TooltipRootProps) => {\n return (\n <Provider delayDuration={delayDuration} skipDelayDuration={skipDelayDuration}>\n <Root open={open} onOpenChange={onOpenChange}>\n {children}\n </Root>\n </Provider>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { Button } from '../Button';\n\nimport type { ButtonProps } from '../Button';\n\nexport type TooltipTriggerProps = Omit<ButtonProps, 'asChild'>;\n\nexport const TooltipTrigger = forwardRef<React.ElementRef<typeof Trigger>, TooltipTriggerProps>(function TooltipTrigger(\n { variant = 'outline', ...props },\n ref\n) {\n return (\n <Trigger asChild ref={ref}>\n <Button variant={variant} {...props} />\n </Trigger>\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","forwardRef","AccordionPrimitive","jsx","forwardRef","AccordionItem","forwardRef","AccordionPrimitive","jsx","AccordionRoot","forwardRef","AccordionPrimitive","jsx","forwardRef","AccordionTrigger","forwardRef","ChevronDownIcon","jsx","jsxs","forwardRef","DropdownButton","ChevronDownIcon","DropdownMenuPrimitive","forwardRef","jsx","jsxs","forwardRef","DropdownMenuCheckboxItem","DropdownMenuPrimitive","jsx","DropdownMenuContent","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuItem","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuLabel","forwardRef","DropdownMenuPrimitive","jsx","jsxs","forwardRef","DropdownMenuRadioItem","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuSeparator","jsx","forwardRef","DropdownMenuPrimitive","jsx","forwardRef","DropdownMenuSubContent","forwardRef","DropdownMenuPrimitive","jsx","jsxs","forwardRef","DropdownMenuSubTrigger","jsx","jsxs","Root","Trigger","forwardRef","React","jsx","jsxs","Button","jsx","forwardRef","AlertDialogAction","forwardRef","jsx","forwardRef","AlertDialogCancel","forwardRef","Content","Portal","forwardRef","jsx","forwardRef","AlertDialogOverlay","jsx","jsxs","forwardRef","AlertDialogContent","Portal","Content","forwardRef","jsx","forwardRef","AlertDialogDescription","jsx","jsx","forwardRef","jsx","forwardRef","AlertDialogTitle","Root","Trigger","React","jsx","jsxs","ArrowToggle","forwardRef","jsx","forwardRef","AvatarFallback","forwardRef","AvatarPrimitive","jsx","forwardRef","AvatarImage","forwardRef","AvatarPrimitive","jsx","forwardRef","AvatarRoot","cva","jsx","cva","jsx","forwardRef","jsx","forwardRef","BreadcrumbItem","forwardRef","Slot","jsx","forwardRef","BreadcrumbLink","Slot","forwardRef","jsx","forwardRef","BreadcrumbList","forwardRef","jsx","forwardRef","BreadcrumbPage","forwardRef","jsx","BreadcrumbRoot","ChevronRightIcon","jsx","ChevronRightIcon","React","jsx","CardRoot","Tooltip","forwardRef","jsx","jsxs","forwardRef","ChartContainer","forwardRef","jsx","jsxs","forwardRef","ChartLegendContent","jsx","config","React","forwardRef","jsx","jsxs","forwardRef","ChartLegendContent","React","Tooltip","forwardRef","CheckIcon","jsx","forwardRef","Checkbox","CheckIcon","ChevronDownIcon","forwardRef","jsx","forwardRef","TableBody","forwardRef","jsx","forwardRef","TableCaption","forwardRef","jsx","forwardRef","TableCell","forwardRef","jsx","forwardRef","TableFooter","forwardRef","jsx","forwardRef","TableHead","forwardRef","jsx","forwardRef","TableHeader","forwardRef","jsx","forwardRef","TableRoot","forwardRef","jsx","forwardRef","TableRow","jsx","jsxs","jsx","jsxs","ChevronDownIcon","Content","Trigger","forwardRef","Root","jsx","CollapsibleRoot","Content","Trigger","React","CommandPrimitive","forwardRef","jsx","CommandEmpty","forwardRef","CommandPrimitive","jsx","forwardRef","CommandGroup","CommandPrimitive","forwardRef","CommandPrimitive","jsx","jsxs","forwardRef","CommandInput","CommandPrimitive","forwardRef","CommandPrimitive","jsx","forwardRef","CommandItem","CommandPrimitive","forwardRef","CommandPrimitive","jsx","forwardRef","CommandList","CommandPrimitive","forwardRef","CommandPrimitive","jsx","forwardRef","CommandSeparator","CommandPrimitive","jsx","jsx","CommandPrimitive","Command","Group","Portal","RadioGroup","Root","Sub","Trigger","forwardRef","CheckIcon","jsx","jsxs","forwardRef","ContextMenuCheckboxItem","CheckIcon","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuContent","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuItem","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuLabel","forwardRef","ContextMenuPrimitive","CircleIcon","jsx","jsxs","forwardRef","ContextMenuRadioItem","CircleIcon","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuSeparator","jsx","forwardRef","ContextMenuPrimitive","jsx","forwardRef","ContextMenuSubContent","forwardRef","ContextMenuPrimitive","ChevronRightIcon","jsx","jsxs","forwardRef","ContextMenuSubTrigger","ChevronRightIcon","Root","Group","Portal","RadioGroup","Sub","Trigger","useState","jsx","useState","useState","React","AnimatePresence","motion","forwardRef","range","AnimatePresence","motion","jsx","jsxs","forwardRef","Calendar","range","AnimatePresence","motion","range","forwardRef","Root","forwardRef","jsx","forwardRef","ScrollBar","jsx","jsxs","forwardRef","ScrollArea","Root","jsx","range","jsx","jsxs","DatePicker","useState","date","AnimatePresence","motion","Root","Trigger","jsx","forwardRef","Content","Portal","forwardRef","Overlay","jsx","forwardRef","DialogOverlay","Overlay","jsx","jsxs","forwardRef","DialogContent","Portal","Content","forwardRef","Description","jsx","forwardRef","DialogDescription","Description","jsx","jsx","forwardRef","Title","jsx","forwardRef","DialogTitle","Title","Root","Trigger","DrawerPrimitive","forwardRef","jsx","jsxs","forwardRef","DrawerContent","forwardRef","DrawerPrimitive","jsx","forwardRef","DrawerDescription","DrawerPrimitive","jsx","jsx","forwardRef","DrawerPrimitive","jsx","forwardRef","DrawerTitle","DrawerPrimitive","jsx","DrawerPrimitive","useEffect","jsx","jsxs","jsx","jsx","jsxs","file","useEffect","useState","jsx","forwardRef","jsx","Separator","forwardRef","jsx","jsxs","useEffect","useMemo","useState","useCallback","match","useEffect","useRef","match","useEffect","useId","useRef","useState","React","jsx","Input","forwardRef","cva","jsx","cva","Label","forwardRef","React","Content","Portal","jsx","PopoverContent","Portal","Content","jsx","jsxs","jsx","jsx","jsx","jsxs","useId","useState","useRef","value","useEffect","Label","React","RadioGroupPrimitive","forwardRef","CircleIcon","jsx","forwardRef","RadioGroupItem","CircleIcon","jsx","RadioGroup","jsx","jsxs","Label","RadioGroup","value","SelectPrimitive","forwardRef","SelectPrimitive","forwardRef","ChevronDownIcon","jsx","forwardRef","SelectScrollDownButton","ChevronDownIcon","forwardRef","SelectPrimitive","ChevronUpIcon","jsx","forwardRef","SelectScrollUpButton","ChevronUpIcon","jsx","jsxs","forwardRef","SelectContent","forwardRef","SelectPrimitive","CheckIcon","jsx","jsxs","forwardRef","SelectItem","CheckIcon","forwardRef","SelectPrimitive","jsx","forwardRef","SelectLabel","forwardRef","SelectPrimitive","jsx","forwardRef","SelectSeparator","forwardRef","SelectPrimitive","jsx","forwardRef","SelectTrigger","jsx","jsxs","Label","value","forwardRef","Root","jsx","jsxs","forwardRef","Slider","Root","jsx","jsxs","Label","value","jsx","match","props","jsx","jsxs","useRef","useEffect","useEffect","useRef","match","jsx","jsxs","value","Label","useCallback","match","jsx","jsxs","match","useCallback","value","Label","RadioGroup","jsx","match","props","useEffect","useState","toBasicISOString","jsx","jsxs","useState","toBasicISOString","useEffect","Label","value","useEffect","match","jsx","jsxs","Label","jsx","jsxs","Label","jsx","useEffect","match","props","match","jsx","jsxs","Label","useEffect","useState","motion","jsx","jsxs","useState","useEffect","Label","motion","cva","jsx","jsxs","cva","Label","RadioGroup","value","jsx","jsx","jsxs","Label","value","React","jsx","TextArea","jsx","jsxs","Label","jsx","match","props","jsx","jsx","jsxs","RecordArrayField","useRef","useEffect","Label","jsx","useCallback","match","field","jsx","useState","useMemo","useEffect","Fragment","jsx","jsxs","useState","rootErrors","useEffect","Separator","Root","Trigger","forwardRef","Content","jsx","forwardRef","HoverCardContent","Content","Root","Trigger","jsx","jsxs","React","toBasicISOString","Label","Legend","ResponsiveContainer","Tooltip","jsx","jsxs","createElement","ResponsiveContainer","toBasicISOString","Label","Tooltip","Legend","jsx","jsxs","Group","Portal","RadioGroup","Sub","forwardRef","CheckboxItem","ItemIndicator","CheckIcon","jsx","jsxs","forwardRef","MenuBarCheckboxItem","CheckboxItem","ItemIndicator","CheckIcon","forwardRef","Content","Portal","jsx","forwardRef","MenuBarContent","Portal","Content","forwardRef","Item","jsx","forwardRef","MenuBarItem","Item","forwardRef","Label","jsx","forwardRef","MenuBarLabel","Label","forwardRef","ItemIndicator","RadioItem","CircleIcon","jsx","jsxs","forwardRef","MenuBarRadioItem","RadioItem","ItemIndicator","CircleIcon","forwardRef","Root","jsx","forwardRef","MenuBarRoot","Root","forwardRef","Separator","jsx","forwardRef","MenuBarSeparator","Separator","jsx","forwardRef","SubContent","jsx","forwardRef","MenuBarSubContent","SubContent","forwardRef","SubTrigger","ChevronRightIcon","jsx","jsxs","forwardRef","MenuBarSubTrigger","SubTrigger","ChevronRightIcon","forwardRef","Trigger","jsx","forwardRef","MenuBarTrigger","Trigger","Group","Portal","RadioGroup","Sub","XIcon","AnimatePresence","motion","jsx","jsx","jsxs","AnimatePresence","motion","XIcon","useEffect","useRef","useState","jsx","useState","useRef","useEffect","forwardRef","jsx","forwardRef","Progress","jsx","jsx","Fragment","jsx","SearchIcon","jsx","jsxs","SearchIcon","Close","Portal","Root","Trigger","jsx","React","Close","Content","Portal","cva","XIcon","forwardRef","Overlay","jsx","forwardRef","SheetOverlay","Overlay","jsx","jsxs","cva","SheetContent","Portal","Content","Close","XIcon","forwardRef","Description","jsx","forwardRef","SheetDescription","Description","jsx","jsx","forwardRef","Title","jsx","forwardRef","SheetTitle","Title","Root","Close","Portal","Trigger","jsx","jsx","useEffect","motion","jsx","jsxs","useEffect","motion","forwardRef","jsx","forwardRef","Switch","forwardRef","jsx","forwardRef","TabsContent","forwardRef","TabsPrimitive","jsx","forwardRef","TabsList","forwardRef","Root","jsx","TabsRoot","forwardRef","TabsPrimitive","jsx","forwardRef","TabsTrigger","jsx","jsxs","React","Content","jsx","TooltipContent","Content","Root","jsx","forwardRef","Trigger","jsx","forwardRef","TooltipTrigger","Trigger","Tooltip"]}