@douglasneuroinformatics/libui 3.4.0 → 3.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components.js +2 -2
- package/dist/components.js.map +1 -1
- package/dist/douglasneuroinformatics-libui-3.4.2.tgz +0 -0
- package/package.json +1 -1
- package/src/components/ActionDropdown/ActionDropdown.stories.tsx +11 -0
- package/src/components/ActionDropdown/ActionDropdown.tsx +2 -4
- package/src/components/Form/Form.tsx +1 -1
- package/dist/douglasneuroinformatics-libui-3.4.0.tgz +0 -0
package/dist/components.js.map
CHANGED
|
@@ -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/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/Form/Form.tsx","../src/components/Heading/Heading.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/Pagination/PaginationContent.tsx","../src/components/Pagination/PaginationEllipsis.tsx","../src/components/Pagination/PaginationItem.tsx","../src/components/Pagination/PaginationLink.tsx","../src/components/Pagination/PaginationNext.tsx","../src/components/Pagination/PaginationPrevious.tsx","../src/components/Pagination/PaginationRoot.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Progress/Progress.tsx","../src/components/Resizable/Resizable.tsx","../src/components/Resizable/ResizableHandle.tsx","../src/components/Resizable/ResizablePanelGroup.tsx","../src/components/SearchBar/SearchBar.tsx","../src/components/Separator/Separator.tsx","../src/components/Sheet/Sheet.tsx","../src/components/Sheet/SheetBody.tsx","../src/components/Sheet/SheetContent.tsx","../src/components/Sheet/SheetDescription.tsx","../src/components/Sheet/SheetFooter.tsx","../src/components/Sheet/SheetHeader.tsx","../src/components/Sheet/SheetOverlay.tsx","../src/components/Sheet/SheetTitle.tsx","../src/components/Spinner/Spinner.tsx","../src/components/SpinnerIcon/SpinnerIcon.tsx","../src/components/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 'flex h-9 w-full items-center gap-2 whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n children ? 'justify-between' : 'justify-end',\n className\n )}\n ref={ref}\n type=\"button\"\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 opacity-50\" />\n </button>\n );\n }\n);\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem';\nimport { DropdownMenuContent } from './DropdownMenuContent';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuLabel } from './DropdownMenuLabel';\nimport { DropdownMenuRadioItem } from './DropdownMenuRadioItem';\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator';\nimport { DropdownMenuShortcut } from './DropdownMenuShortcut';\nimport { DropdownMenuSubContent } from './DropdownMenuSubContent';\nimport { DropdownMenuSubTrigger } from './DropdownMenuSubTrigger';\n\nexport const DropdownMenu = Object.assign(DropdownMenuPrimitive.Root.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 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\n","import * as React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport type DropdownMenuContentProps = {\n widthFull?: boolean;\n} & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>;\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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item>\n>(function DropdownMenuItem({ className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label>\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger>\n>(function DropdownMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\n","import { cn } from '@/utils';\n\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { DropdownMenuContentProps } from '../DropdownMenu/DropdownMenuContent';\n\ntype ActionDropdownOptions = { [key: string]: string } | readonly 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>\n <DropdownButton className={triggerClassName} disabled={disabled}>\n {title}\n </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, 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 rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n defaultVariants: {\n size: 'md',\n variant: 'primary'\n },\n variants: {\n size: {\n icon: 'p-1.5 aspect-square',\n lg: 'h-10 rounded-md px-8',\n md: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs'\n },\n variant: {\n danger: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n outline: 'border border-input bg-inherit shadow-sm',\n primary: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-sm hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type ButtonProps = Simplify<\n {\n asChild?: boolean;\n /** @deprecated - use children */\n label?: string;\n } & React.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants>\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, type ButtonProps } from '../Button';\n\nexport type ArrowToggleProps = Simplify<\n {\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 } & React.HTMLAttributes<HTMLButtonElement>\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, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-sm border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n defaultVariants: {\n variant: 'default'\n },\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof badgeVariants>;\n\nconst Badge = ({ className, variant, ...props }: BadgeProps) => {\n return <div className={cn(badgeVariants({ variant }), className)} data-testid=\"badge\" {...props} />;\n};\n\nexport { Badge, badgeVariants };\n","import * 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 {\n asChild?: boolean;\n } & React.ComponentPropsWithoutRef<'a'>\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 {\n separator?: React.ReactNode;\n } & React.ComponentPropsWithoutRef<'nav'>\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('rounded-xl border bg-card text-card-foreground shadow', className)}\n data-testid=\"card\"\n ref={ref}\n {...props}\n />\n );\n});\n\nexport const Card = Object.assign(CardRoot, {\n Content: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('p-6 pt-0', className)} {...props} />\n ),\n Description: ({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n Footer: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return <div className={cn('flex items-center p-6 pt-0', className)} {...props} />;\n },\n Header: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n ),\n Title: ({ children, className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) => (\n <h3 className={cn('font-semibold leading-none tracking-tight', className)} {...props}>\n {children}\n </h3>\n )\n});\n","import { 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 h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n className\n )}\n data-testid=\"checkbox\"\n ref={ref}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-current')}>\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\n","import { 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}>\n <div className=\"rounded-md border bg-card tracking-tight text-muted-foreground shadow-sm\">\n <Table>\n <Table.Header>\n <Table.Row>\n {columns.map((column, i) => (\n <Table.Head className=\"whitespace-nowrap text-foreground\" 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 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 'text-ellipsis leading-none',\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 className=\"text-sm font-medium text-muted-foreground\">{`${firstEntry} - ${lastEntry} / ${totalEntries}`}</p>\n </div>\n <div className=\"flex flex-1 justify-between gap-3 sm:justify-end\">\n <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 disabled={currentPage === pageCount}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(currentPage + 1);\n }}\n >\n {t('pagination.next')}\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 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n});\n","import { 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 'relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled=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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item>\n>(function ContextMenuItem({ className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label>\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger>\n>(function ContextMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n});\n","import React, { useState } from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { ClipboardCheckIcon, ClipboardListIcon } from 'lucide-react';\nimport { match } from 'ts-pattern';\n\nimport { Button, 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 'framer-motion';\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 'increment':\n newDate.setMonth(newDate.getMonth() + 1);\n break;\n case 'decrement':\n newDate.setMonth(newDate.getMonth() - 1);\n break;\n case 'set-year':\n newDate.setFullYear(action.value);\n }\n return newDate;\n};\n\nexport type DatePickerProps = {\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n onSelection: (value: Date) => void;\n};\n\nexport const DatePicker = React.forwardRef<React.ElementRef<typeof Card>, DatePickerProps>(function DatePicker(\n { onSelection, ...props },\n ref\n) {\n const [date, dispatch] = useReducer(reducer, new Date());\n const [showYearSelector, setShowYearSelector] = useState(false);\n const { t } = useTranslation('libui');\n\n // this is to prevent changing month before prev calendar is unmounted\n // the duration is doubled because presumably it is to mount old and mount new\n const [canSetMonth, setCanSetMonth] = useState(true);\n\n const monthName = t(`months.${MONTHS[date.getMonth()]!}`);\n\n const handleYearSelection = (date: Date) => {\n dispatch({ type: 'set-year', value: date.getFullYear() });\n setShowYearSelector(false);\n };\n\n return (\n <Card className=\"w-fit p-3\" data-testid=\"datepicker\" ref={ref} {...props}>\n <div className=\"mb-3 flex items-center justify-between px-1\">\n <div className=\"flex items-center\">\n <span className=\"mx-1 text-sm font-medium tracking-tight\">{`${monthName} ${date.getFullYear()}`}</span>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n isToggled={showYearSelector}\n position=\"up\"\n rotation={180}\n tabIndex={-1}\n onClick={() => {\n setShowYearSelector(!showYearSelector);\n }}\n />\n </div>\n <div className={cn('flex', { hidden: showYearSelector })}>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"left\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'decrement' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"right\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'increment' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n </div>\n </div>\n <div>\n <AnimatePresence initial={false} mode=\"wait\">\n {showYearSelector ? (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 10 }}\n initial={{ opacity: 0, y: 10 }}\n key={0}\n transition={{ duration: 0.2 }}\n >\n <YearSelector selected={date} onSelection={handleYearSelection} />\n </motion.div>\n ) : (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n initial={{ opacity: 0, y: -10 }}\n key={1}\n transition={{ duration: 0.2 }}\n >\n <Calendar month={date.getMonth()} year={date.getFullYear()} onSelection={onSelection} />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </Card>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { range } from 'lodash-es';\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 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <XIcon className=\"h-4 w-4\" />\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { 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 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 className=\"flex min-h-screen flex-col items-center justify-center gap-1 p-3 text-center\">\n <h1 className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">Unexpected Error</h1>\n <h3 className=\"text-3xl font-extrabold tracking-tight sm:text-4xl md:text-5xl\">Something Went Wrong</h3>\n <p className=\"mt-2 max-w-prose text-sm text-muted-foreground sm:text-base\">\n We apologize for the inconvenience. Please contact us for further assistance.\n </p>\n <div className=\"mt-6\">\n <button\n className=\"text-sky-800 underline-offset-4 hover:text-sky-700 hover:underline dark:text-sky-200 dark:hover:text-sky-300\"\n type=\"button\"\n onClick={() => {\n window.location.assign(window.location.origin);\n }}\n >\n Reload Page<span aria-hidden=\"true\"> →</span>\n </button>\n </div>\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport * as React 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';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { ErrorMessage } from './ErrorMessage';\nimport { FieldsComponent } from './FieldsComponent';\nimport { getInitialValues } from './utils';\n\nimport type { FormErrors } from './types';\n\ntype FormProps<TSchema extends z.ZodType<FormDataType>, TData extends z.TypeOf<TSchema> = z.TypeOf<TSchema>> = {\n [key: `data-${string}`]: unknown;\n className?: string;\n content: FormContent<TData>;\n fieldsFooter?: React.ReactNode;\n id?: string;\n initialValues?: PartialNullableFormDataType<TData>;\n onError?: (error: z.ZodError<TData>) => void;\n onSubmit: (data: TData) => Promisable<void>;\n preventResetValuesOnReset?: boolean;\n readOnly?: boolean;\n resetBtn?: boolean;\n revalidateOnBlur?: boolean;\n submitBtnLabel?: string;\n validationSchema: z.ZodType<TData>;\n};\n\nconst Form = <TSchema extends z.ZodType<FormDataType>, TData extends z.TypeOf<TSchema> = z.TypeOf<TSchema>>({\n className,\n content,\n fieldsFooter,\n id,\n initialValues,\n onError,\n onSubmit,\n preventResetValuesOnReset,\n readOnly,\n resetBtn,\n revalidateOnBlur,\n submitBtnLabel,\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\n const handleError = (error: z.ZodError<TData>) => {\n const fieldErrors: FormErrors<TData> = {};\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 setRootErrors((prevErrors) => [...prevErrors, issue.message]);\n }\n }\n setErrors(fieldErrors);\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 reset();\n await onSubmit(result.data);\n } else {\n console.error(result.error.issues);\n handleError(result.error);\n }\n };\n\n const isGrouped = Array.isArray(content);\n\n const revalidate = () => {\n const hasErrors = Object.keys(errors).length > 0;\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 revalidate();\n }, [resolvedLanguage]);\n\n return (\n <form\n autoComplete=\"off\"\n className={twMerge('w-full', isGrouped ? 'space-y-8 divide-y' : 'space-y-6', className)}\n id={id}\n onBlur={revalidateOnBlur ? revalidate : undefined}\n onSubmit={(event) => void handleSubmit(event)}\n {...props}\n >\n {isGrouped ? (\n content.map((fieldGroup, i) => {\n return (\n <div className=\"space-y-6 [&:not(:first-child)]:pt-8\" key={i}>\n <div className=\"space-y-1\">\n {fieldGroup.title && (\n <Heading className=\"text-base\" variant=\"h4\">\n {fieldGroup.title}\n </Heading>\n )}\n {fieldGroup.description && (\n <p className=\"text-sm italic leading-tight text-muted-foreground\">{fieldGroup.description}</p>\n )}\n </div>\n <FieldsComponent\n errors={errors}\n fields={fieldGroup.fields as FormFields<TData>}\n readOnly={readOnly}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n </div>\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 {fieldsFooter}\n <div className=\"flex w-full gap-3\">\n {/** Note - aria-label is used for testing in downstream packages */}\n <Button aria-label=\"Submit\" className=\"block w-full\" disabled={readOnly} type=\"submit\" variant=\"primary\">\n {submitBtnLabel ?? t('form.submit')}\n </Button>\n {resetBtn && (\n <Button\n aria-label=\"Reset\"\n className=\"block w-full\"\n disabled={readOnly}\n type=\"button\"\n variant=\"secondary\"\n onClick={reset}\n >\n {t('form.reset')}\n </Button>\n )}\n </div>\n {Boolean(rootErrors.length) && <ErrorMessage error={rootErrors} />}\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 * as React from 'react';\n\nimport { CircleAlertIcon } from 'lucide-react';\n\nexport const ErrorMessage: React.FC<{ error?: null | string[] }> = ({ error }) => {\n return error ? (\n <div className=\"space-y-1.5\">\n {error.map((message) => (\n <div className=\"flex w-full items-center text-sm font-medium text-destructive\" key={message}>\n <CircleAlertIcon className=\"mr-1\" style={{ strokeWidth: '2px' }} />\n <span>{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, type ScalarFieldProps } from './ScalarField';\n\nimport type { FieldError, FormErrors } from './types';\n\nexport type StaticFieldProps<TData extends FormDataType> = {\n errors: FormErrors<TData>;\n field: NumberRecordFormField | RecordArrayFormField | ScalarFieldProps['field'];\n name: string;\n 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 } 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 useEffect(() => {\n setRecordValue({});\n }, [options]);\n\n if (!recordValue) {\n return null;\n }\n\n return (\n <div className=\"space-y-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"space-y-6\">\n {Object.keys(items).map((name) => {\n const item = items[name]!;\n return (\n <NumberField\n error={recordError?.[name]}\n key={name}\n kind=\"number\"\n name={name}\n options={options}\n 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, type NumberFieldInputProps } from './NumberFieldInput';\nimport { NumberFieldRadio, type NumberFieldRadioProps } from './NumberFieldRadio';\nimport { NumberFieldSelect } from './NumberFieldSelect';\nimport { NumberFieldSlider, type NumberFieldSliderProps } from './NumberFieldSlider';\n\nexport type NumberFieldProps = NumberFieldInputProps | NumberFieldRadioProps | NumberFieldSliderProps;\n\nexport const NumberField = (props: NumberFieldProps) => {\n return match(props)\n .with({ variant: 'input' }, (props) => <NumberFieldInput {...props} />)\n .with({ variant: 'slider' }, (props) => <NumberFieldSlider {...props} />)\n .with({ variant: 'radio' }, (props) => <NumberFieldRadio {...props} />)\n .with({ variant: 'select' }, (props) => <NumberFieldSelect {...props} />)\n .exhaustive();\n};\n","import { useRef, useState } from 'react';\nimport * as React 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 inputValueRef = useRef(value?.toString() ?? '');\n const [inputKey, setInputKey] = useState(0);\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n let newValue: number | undefined = value;\n if (/^[+-]?$/.test(event.target.value)) {\n newValue = undefined;\n inputValueRef.current = event.target.value;\n } else {\n const parsedValue = parseNumber(event.target.value);\n if (parsedValue >= min && parsedValue <= max) {\n newValue = parsedValue;\n inputValueRef.current = event.target.value;\n }\n }\n if (value === newValue) {\n setInputKey(inputKey + 1);\n } else {\n setValue(newValue);\n }\n };\n\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n max={max}\n min={min}\n name={name}\n type=\"text\"\n value={inputValueRef.current}\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 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground placeholder:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"input\"\n ref={ref}\n type={type}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, 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 'z-50 w-72 rounded-md border bg-popover px-3 py-1.5 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n collisionPadding={collisionPadding}\n ref={ref}\n sideOffset={sideOffset}\n onOpenAutoFocus={autofocus === false ? (event) => event.preventDefault() : undefined}\n {...props}\n />\n </Portal>\n );\n }\n);\n","import * 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 'flex aspect-square h-4 w-4 items-center justify-center rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <RadioGroupPrimitive.Indicator asChild>\n <CircleIcon\n className=\"fill-current text-current\"\n style={{ height: '0.625rem', strokeWidth: '2px', width: '0.625rem' }}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldRadioProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { 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 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\n","import { 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';\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 select-none items-center py-1.5', className)}\n disabled={disabled}\n ref={ref}\n {...props}\n >\n <Track\n aria-disabled={disabled}\n className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary opacity-15 aria-disabled:cursor-not-allowed aria-disabled:opacity-10\"\n data-testid=\"slider-track\"\n >\n <Range className=\"absolute h-full bg-primary\" />\n </Track>\n <Thumb\n aria-disabled={disabled}\n className=\"block h-4 w-4 rounded-full border border-slate-500 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring 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 } 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 { t } = useTranslation('libui');\n\n const createNewRecord = () => Object.fromEntries(Object.keys(fieldset).map((fieldName) => [fieldName, undefined]));\n\n useEffect(() => {\n setArrayValue([createNewRecord()]);\n }, [fieldset]);\n\n if (!arrayValue) {\n return null;\n }\n\n // Creates a new object with all values mapped to null and appends it to the previous arrayValue\n const appendField = () => {\n setArrayValue([...arrayValue, createNewRecord()]);\n };\n\n const removeField = () => {\n if (arrayValue.length > 1) {\n setArrayValue(arrayValue.slice(0, arrayValue.length - 1));\n }\n };\n\n return (\n <div className=\"space-y-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"space-y-6\">\n {arrayValue.map((fields, i) => (\n <div className=\"space-y-4\" key={i}>\n <Label className=\"font-semibold italic\">{label + ' ' + (i + 1)}</Label>\n {Object.keys(fields).map((name) => {\n const field = fieldset[name];\n const fieldProps = field?.kind === 'dynamic' ? field.render.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 if (!newArrayError[i]) {\n newArrayError[i] = {};\n }\n newArrayError[i][name] = error;\n setArrayError(newArrayError);\n }}\n setValue={(value) => {\n const newArrayValue = [...arrayValue];\n newArrayValue[i]![name] = value;\n setArrayValue(newArrayValue);\n }}\n value={arrayValue?.[i]?.[name]}\n />\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"flex gap-3\">\n <Button 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, type BooleanFieldCheckboxProps } from './BooleanFieldCheckbox';\nimport { BooleanFieldRadio, type BooleanFieldRadioProps } from './BooleanFieldRadio';\n\nexport type BooleanFieldProps = BooleanFieldCheckboxProps | BooleanFieldRadioProps;\n\nexport const BooleanField = (props: BooleanFieldProps) => {\n return match(props)\n .with({ variant: 'radio' }, (props) => <BooleanFieldRadio {...props} />)\n .with({ variant: 'checkbox' }, (props) => <BooleanFieldCheckbox {...props} />)\n .exhaustive();\n};\n","import type { BooleanFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { 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={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';\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('');\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> = {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n} & SetFieldProps<T>;\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> = {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n} & SetFieldProps<T>;\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, type StringFieldInputProps } from './StringFieldInput';\nimport { StringFieldPassword, type StringFieldPasswordProps } from './StringFieldPassword';\nimport { StringFieldRadio, type StringFieldRadioProps } from './StringFieldRadio';\nimport { StringFieldSelect } from './StringFieldSelect';\nimport { StringFieldTextArea, type StringFieldTextAreaProps } from './StringFieldTextArea';\n\nexport type StringFieldProps =\n | StringFieldInputProps\n | StringFieldPasswordProps\n | StringFieldRadioProps\n | StringFieldTextAreaProps;\n\nexport const StringField = (props: StringFieldProps) => {\n return match(props)\n .with({ variant: 'textarea' }, (props) => <StringFieldTextArea {...props} />)\n .with({ variant: 'password' }, (props) => <StringFieldPassword {...props} />)\n .with({ variant: 'input' }, (props) => <StringFieldInput {...props} />)\n .with({ variant: 'select' }, (props) => <StringFieldSelect {...props} />)\n .with({ variant: 'radio' }, (props) => <StringFieldRadio {...props} />)\n .exhaustive();\n};\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldInputProps = BaseFieldComponentProps<string> &\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 { motion } from 'framer-motion';\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type 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=\"absolute right-0 flex h-full w-8 items-center justify-center text-muted-foreground\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onClick={() => setShow(!show)}\n >\n <EyeIcon className={cn('absolute transition-all', show ? '-rotate-90 scale-0' : 'rotate-0 scale-100')} />\n <EyeOffIcon className={cn('absolute transition-all', !show ? 'rotate-90 scale-0' : 'rotate-0 scale-100')} />\n </button>\n </FieldGroup.Row>\n {strength !== null && (\n <motion.div\n animate={{ width: `${Math.max(strength, value?.length ? 1 : 0) * 25}%` }}\n className=\"h-1 w-full overflow-hidden rounded\"\n initial={{ width: '0%' }}\n transition={{ duration: 0.5 }}\n >\n <div\n className={cn(\n 'h-full w-full bg-destructive 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 {\n description?: string;\n disabled?: boolean;\n label: string;\n options: { [K in T]: string };\n orientation?: 'horizontal' | 'vertical';\n } & BaseFieldComponentProps<T>\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';\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 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground placeholder:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"text-area\"\n ref={ref}\n {...props}\n />\n );\n});\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Label } from '@/components/Label';\nimport { TextArea } from '@/components/TextArea';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldTextAreaProps = BaseFieldComponentProps<string> &\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, type BooleanFieldProps } from './BooleanField';\nimport { DateField, type DateFieldProps } from './DateField';\nimport { NumberField, type NumberFieldProps } from './NumberField';\nimport { SetField, type SetFieldProps } from './SetField';\nimport { StringField, type StringFieldProps } from './StringField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type ScalarFieldProps = {\n field: BooleanFormField | DateFormField | NumberFormField | SetFormField | StringFormField;\n} & BaseFieldComponentProps<ScalarFieldValue>;\n\nexport const ScalarField = ({ field, ...props }: ScalarFieldProps) => {\n switch (field.kind) {\n case 'string':\n return <StringField {...field} {...(props as StringFieldProps)} />;\n case 'number':\n return <NumberField {...field} {...(props as NumberFieldProps)} />;\n case 'date':\n return <DateField {...field} {...(props as DateFieldProps)} />;\n case 'boolean':\n return <BooleanField {...field} {...(props as BooleanFieldProps)} />;\n case 'set':\n return <SetField {...field} {...(props as SetFieldProps)} />;\n default:\n throw new Error(`Unexpected value for kind: ${Reflect.get(field, 'kind') satisfies never}`);\n }\n};\n","import type {\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 'z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n});\n","import { LanguagesIcon } from 'lucide-react';\n\nimport { useTranslation } from '@/hooks';\nimport type { Language } from '@/i18n';\n\nimport { Button, type ButtonProps } from '../Button';\nimport { DropdownMenu } from '../DropdownMenu';\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 type LineProps,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n} from 'recharts';\nimport type { ConditionalKeys } from 'type-fest';\n\nimport { useTranslation } from '@/hooks';\nimport { type Theme, useTheme } 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 }[]> = {\n err?: ExtractValidKeys<T, number>;\n name: string;\n val: ExtractValidKeys<T, number>;\n} & Pick<LineProps, 'legendType' | 'stroke' | 'strokeDasharray' | 'strokeWidth' | 'type'>;\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 { type ButtonProps } from '../Button';\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ItemIndicator>\n </span>\n {children}\n </CheckboxItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof Item>\n>(function MenuBarItem({ className, inset, ...props }, ref) {\n return (\n <Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof Label>\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ItemIndicator>\n </span>\n {children}\n </RadioItem>\n );\n});\n","import { 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('flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof SubTrigger>\n>(function MenuBarSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </SubTrigger>\n );\n});\n","import { 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 'flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { AnimatePresence, motion } from 'framer-motion';\nimport { XIcon } from 'lucide-react';\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 flex-grow font-medium text-slate-900 dark:text-slate-100\">\n {item.title ?? t(`notifications.types.${item.type}`)}\n </h5>\n <button\n className=\"inline-flex rounded-md text-slate-400 hover:text-slate-500 focus:outline-none focus:ring-1 focus:ring-sky-500 dark:focus:ring-sky-600\"\n type=\"button\"\n onClick={() => {\n dismissNotification(item.id);\n }}\n >\n <XIcon aria-hidden=\"true\" className=\"h-5 w-5\" />\n </button>\n </div>\n <p className=\"my-2 text-muted-foreground\">{item.message}</p>\n </div>\n <motion.div\n animate={{ width: '100%' }}\n className=\"h-1 bg-slate-500\"\n initial={{ width: '0%' }}\n transition={{ duration: timeout / 1000, ease: 'linear' }}\n onAnimationComplete={() => {\n dismissNotification(item.id);\n }}\n />\n </Card>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n );\n};\n\nexport { NotificationHub, type NotificationHubProps };\n","import { CheckCircleIcon, ExclamationCircleIcon, InformationCircleIcon, XCircleIcon } from '@heroicons/react/24/solid';\n\nimport { type NotificationInterface } from '@/hooks/useNotificationsStore';\n\nexport type NotificationIconProps = {\n type: NotificationInterface['type'];\n};\n\nexport const NotificationIcon = ({ type }: NotificationIconProps) => {\n switch (type) {\n case 'error':\n return <XCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-red-500\" />;\n case 'info':\n return <InformationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-blue-500\" />;\n case 'success':\n return <CheckCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-green-500\" />;\n case 'warning':\n return <ExclamationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-yellow-500\" />;\n }\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 { type ButtonProps, buttonVariants } from '../Button';\n\nexport type PaginationLinkProps = Simplify<\n {\n isActive?: boolean;\n } & Pick<ButtonProps, 'size'> &\n React.ComponentProps<'a'>\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, 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, type PanelProps } from 'react-resizable-panels';\n\nimport { ResizableHandle, type ResizableHandleProps } from './ResizableHandle';\nimport { ResizablePanelGroup, type ResizablePanelGroupProps } from './ResizablePanelGroup';\n\ntype ResizableRootType = React.FC<{ children: React.ReactNode }>;\ntype ResizableType = {\n Handle: React.FC<ResizableHandleProps>;\n Panel: React.FC<PanelProps>;\n PanelGroup: React.FC<ResizablePanelGroupProps>;\n} & ResizableRootType;\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 = {\n withHandle?: boolean;\n} & React.ComponentProps<typeof PanelResizeHandle>;\n\nexport const ResizableHandle = ({ className, withHandle, ...props }: ResizableHandleProps) => (\n <PanelResizeHandle\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </PanelResizeHandle>\n);\n","import * 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\nexport type 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 = {\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} & BaseSearchBarProps;\n\ntype UncontrolledSearchBarProps = {\n onValueChange?: never;\n value?: never;\n} & BaseSearchBarProps;\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","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 { 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 { SheetOverlay } from './SheetOverlay';\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 Overlay: SheetOverlay,\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, Overlay, Portal } from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n defaultVariants: {\n side: 'right'\n },\n variants: {\n side: {\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top'\n }\n }\n }\n);\n\nexport type SheetContentProps = React.ComponentPropsWithoutRef<typeof Content> & VariantProps<typeof sheetVariants>;\n\nexport const SheetContent = React.forwardRef<React.ElementRef<typeof Content>, SheetContentProps>(function SheetContent(\n { children, className, side = 'right', ...props },\n ref\n) {\n return (\n <Portal>\n <Overlay />\n <Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { 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 { 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 { 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';\n\nimport { motion, useSpring, useTransform } from 'framer-motion';\n\nimport { cn } from '@/utils';\n\nimport { Card } from '../Card';\n\ntype StatisticCardProps = {\n [key: `data-${string}`]: unknown;\n className?: string;\n icon?: JSX.Element;\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 inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n );\n});\n","import { 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 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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, 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 /** How much time a user has to enter another trigger without incurring a delay again. */\n skipDelayDuration?: number;\n};\n\nexport const TooltipRoot = ({ children, delayDuration = 0, skipDelayDuration = 300 }: TooltipRootProps) => {\n return (\n <Provider delayDuration={delayDuration} skipDelayDuration={skipDelayDuration}>\n <Root>{children}</Root>\n </Provider>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type TooltipTriggerProps = Omit<ButtonProps, 'asChild'>;\n\nexport const TooltipTrigger = 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","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","AnimatePresence","motion","range","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","useEffect","useState","jsx","jsx","jsxs","useEffect","useMemo","useState","useCallback","match","useEffect","match","useRef","useState","React","jsx","Input","forwardRef","cva","jsx","cva","Label","forwardRef","React","Content","Portal","jsx","PopoverContent","Portal","Content","jsx","jsxs","jsx","jsx","jsx","jsxs","useRef","useState","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","useEffect","useEffect","match","jsx","jsxs","value","Label","match","jsx","jsxs","match","value","Label","RadioGroup","jsx","match","props","useEffect","useState","toBasicISOString","jsx","jsxs","useState","useEffect","toBasicISOString","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","useEffect","Label","jsx","useCallback","match","field","jsx","useState","useMemo","useEffect","jsx","jsxs","useState","useEffect","Root","Trigger","forwardRef","Content","jsx","forwardRef","HoverCardContent","Content","Root","Trigger","jsx","jsxs","React","toBasicISOString","Label","jsx","jsxs","createElement","toBasicISOString","Label","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","AnimatePresence","motion","XIcon","jsx","jsx","jsxs","AnimatePresence","motion","XIcon","jsx","MoreHorizontalIcon","jsx","jsxs","MoreHorizontalIcon","jsx","jsx","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","jsx","jsxs","jsx","forwardRef","jsx","forwardRef","Progress","jsx","jsx","jsx","SearchIcon","jsx","jsxs","SearchIcon","forwardRef","jsx","Separator","forwardRef","Close","Portal","Root","Trigger","jsx","React","Close","Content","Overlay","Portal","cva","XIcon","jsx","jsxs","cva","SheetContent","Portal","Overlay","Content","Close","XIcon","forwardRef","Description","jsx","forwardRef","SheetDescription","Description","jsx","jsx","forwardRef","Overlay","jsx","forwardRef","SheetOverlay","Overlay","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/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/Form/Form.tsx","../src/components/Heading/Heading.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/Pagination/PaginationContent.tsx","../src/components/Pagination/PaginationEllipsis.tsx","../src/components/Pagination/PaginationItem.tsx","../src/components/Pagination/PaginationLink.tsx","../src/components/Pagination/PaginationNext.tsx","../src/components/Pagination/PaginationPrevious.tsx","../src/components/Pagination/PaginationRoot.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Progress/Progress.tsx","../src/components/Resizable/Resizable.tsx","../src/components/Resizable/ResizableHandle.tsx","../src/components/Resizable/ResizablePanelGroup.tsx","../src/components/SearchBar/SearchBar.tsx","../src/components/Separator/Separator.tsx","../src/components/Sheet/Sheet.tsx","../src/components/Sheet/SheetBody.tsx","../src/components/Sheet/SheetContent.tsx","../src/components/Sheet/SheetDescription.tsx","../src/components/Sheet/SheetFooter.tsx","../src/components/Sheet/SheetHeader.tsx","../src/components/Sheet/SheetOverlay.tsx","../src/components/Sheet/SheetTitle.tsx","../src/components/Spinner/Spinner.tsx","../src/components/SpinnerIcon/SpinnerIcon.tsx","../src/components/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 'flex h-9 w-full items-center gap-2 whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n children ? 'justify-between' : 'justify-end',\n className\n )}\n ref={ref}\n type=\"button\"\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 opacity-50\" />\n </button>\n );\n }\n);\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem';\nimport { DropdownMenuContent } from './DropdownMenuContent';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuLabel } from './DropdownMenuLabel';\nimport { DropdownMenuRadioItem } from './DropdownMenuRadioItem';\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator';\nimport { DropdownMenuShortcut } from './DropdownMenuShortcut';\nimport { DropdownMenuSubContent } from './DropdownMenuSubContent';\nimport { DropdownMenuSubTrigger } from './DropdownMenuSubTrigger';\n\nexport const DropdownMenu = Object.assign(DropdownMenuPrimitive.Root.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 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\n","import * as React from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@/utils';\n\nexport type DropdownMenuContentProps = {\n widthFull?: boolean;\n} & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>;\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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item>\n>(function DropdownMenuItem({ className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label>\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger>\n>(function DropdownMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\n","import { cn } from '@/utils';\n\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\n\nimport type { DropdownMenuContentProps } from '../DropdownMenu/DropdownMenuContent';\n\ntype ActionDropdownOptions = { [key: string]: string } | readonly 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, 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 rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n defaultVariants: {\n size: 'md',\n variant: 'primary'\n },\n variants: {\n size: {\n icon: 'p-1.5 aspect-square',\n lg: 'h-10 rounded-md px-8',\n md: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs'\n },\n variant: {\n danger: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n outline: 'border border-input bg-inherit shadow-sm',\n primary: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-sm hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type ButtonProps = Simplify<\n {\n asChild?: boolean;\n /** @deprecated - use children */\n label?: string;\n } & React.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants>\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, type ButtonProps } from '../Button';\n\nexport type ArrowToggleProps = Simplify<\n {\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 } & React.HTMLAttributes<HTMLButtonElement>\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, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-sm border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n defaultVariants: {\n variant: 'default'\n },\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof badgeVariants>;\n\nconst Badge = ({ className, variant, ...props }: BadgeProps) => {\n return <div className={cn(badgeVariants({ variant }), className)} data-testid=\"badge\" {...props} />;\n};\n\nexport { Badge, badgeVariants };\n","import * 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 {\n asChild?: boolean;\n } & React.ComponentPropsWithoutRef<'a'>\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 {\n separator?: React.ReactNode;\n } & React.ComponentPropsWithoutRef<'nav'>\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('rounded-xl border bg-card text-card-foreground shadow', className)}\n data-testid=\"card\"\n ref={ref}\n {...props}\n />\n );\n});\n\nexport const Card = Object.assign(CardRoot, {\n Content: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('p-6 pt-0', className)} {...props} />\n ),\n Description: ({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n Footer: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return <div className={cn('flex items-center p-6 pt-0', className)} {...props} />;\n },\n Header: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n ),\n Title: ({ children, className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) => (\n <h3 className={cn('font-semibold leading-none tracking-tight', className)} {...props}>\n {children}\n </h3>\n )\n});\n","import { 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 h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n className\n )}\n data-testid=\"checkbox\"\n ref={ref}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-current')}>\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\n","import { 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}>\n <div className=\"rounded-md border bg-card tracking-tight text-muted-foreground shadow-sm\">\n <Table>\n <Table.Header>\n <Table.Row>\n {columns.map((column, i) => (\n <Table.Head className=\"whitespace-nowrap text-foreground\" 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 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 'text-ellipsis leading-none',\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 className=\"text-sm font-medium text-muted-foreground\">{`${firstEntry} - ${lastEntry} / ${totalEntries}`}</p>\n </div>\n <div className=\"flex flex-1 justify-between gap-3 sm:justify-end\">\n <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 disabled={currentPage === pageCount}\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n setCurrentPage(currentPage + 1);\n }}\n >\n {t('pagination.next')}\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 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n});\n","import { 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 'relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled=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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item>\n>(function ContextMenuItem({ className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label>\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger>\n>(function ContextMenuSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <ContextMenuPrimitive.SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n});\n","import React, { useState } from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { ClipboardCheckIcon, ClipboardListIcon } from 'lucide-react';\nimport { match } from 'ts-pattern';\n\nimport { Button, 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 'framer-motion';\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 'increment':\n newDate.setMonth(newDate.getMonth() + 1);\n break;\n case 'decrement':\n newDate.setMonth(newDate.getMonth() - 1);\n break;\n case 'set-year':\n newDate.setFullYear(action.value);\n }\n return newDate;\n};\n\nexport type DatePickerProps = {\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n onSelection: (value: Date) => void;\n};\n\nexport const DatePicker = React.forwardRef<React.ElementRef<typeof Card>, DatePickerProps>(function DatePicker(\n { onSelection, ...props },\n ref\n) {\n const [date, dispatch] = useReducer(reducer, new Date());\n const [showYearSelector, setShowYearSelector] = useState(false);\n const { t } = useTranslation('libui');\n\n // this is to prevent changing month before prev calendar is unmounted\n // the duration is doubled because presumably it is to mount old and mount new\n const [canSetMonth, setCanSetMonth] = useState(true);\n\n const monthName = t(`months.${MONTHS[date.getMonth()]!}`);\n\n const handleYearSelection = (date: Date) => {\n dispatch({ type: 'set-year', value: date.getFullYear() });\n setShowYearSelector(false);\n };\n\n return (\n <Card className=\"w-fit p-3\" data-testid=\"datepicker\" ref={ref} {...props}>\n <div className=\"mb-3 flex items-center justify-between px-1\">\n <div className=\"flex items-center\">\n <span className=\"mx-1 text-sm font-medium tracking-tight\">{`${monthName} ${date.getFullYear()}`}</span>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n isToggled={showYearSelector}\n position=\"up\"\n rotation={180}\n tabIndex={-1}\n onClick={() => {\n setShowYearSelector(!showYearSelector);\n }}\n />\n </div>\n <div className={cn('flex', { hidden: showYearSelector })}>\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"left\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'decrement' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n <ArrowToggle\n className=\"flex items-center justify-center rounded-full p-1 hover:bg-slate-200 dark:hover:bg-slate-700\"\n position=\"right\"\n tabIndex={-1}\n onClick={() => {\n if (canSetMonth) {\n setCanSetMonth(false);\n dispatch({ type: 'increment' });\n setTimeout(() => {\n setCanSetMonth(true);\n }, CALENDAR_ANIMATION_DURATION * 2000);\n }\n }}\n />\n </div>\n </div>\n <div>\n <AnimatePresence initial={false} mode=\"wait\">\n {showYearSelector ? (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 10 }}\n initial={{ opacity: 0, y: 10 }}\n key={0}\n transition={{ duration: 0.2 }}\n >\n <YearSelector selected={date} onSelection={handleYearSelection} />\n </motion.div>\n ) : (\n <motion.div\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n initial={{ opacity: 0, y: -10 }}\n key={1}\n transition={{ duration: 0.2 }}\n >\n <Calendar month={date.getMonth()} year={date.getFullYear()} onSelection={onSelection} />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </Card>\n );\n});\n","import { forwardRef } from 'react';\n\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { range } from 'lodash-es';\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 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <XIcon className=\"h-4 w-4\" />\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { 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 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 className=\"flex min-h-screen flex-col items-center justify-center gap-1 p-3 text-center\">\n <h1 className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">Unexpected Error</h1>\n <h3 className=\"text-3xl font-extrabold tracking-tight sm:text-4xl md:text-5xl\">Something Went Wrong</h3>\n <p className=\"mt-2 max-w-prose text-sm text-muted-foreground sm:text-base\">\n We apologize for the inconvenience. Please contact us for further assistance.\n </p>\n <div className=\"mt-6\">\n <button\n className=\"text-sky-800 underline-offset-4 hover:text-sky-700 hover:underline dark:text-sky-200 dark:hover:text-sky-300\"\n type=\"button\"\n onClick={() => {\n window.location.assign(window.location.origin);\n }}\n >\n Reload Page<span aria-hidden=\"true\"> →</span>\n </button>\n </div>\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport * as React 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';\n\nimport { Button } from '../Button';\nimport { Heading } from '../Heading';\nimport { ErrorMessage } from './ErrorMessage';\nimport { FieldsComponent } from './FieldsComponent';\nimport { getInitialValues } from './utils';\n\nimport type { FormErrors } from './types';\n\ntype FormProps<TSchema extends z.ZodType<FormDataType>, TData extends z.TypeOf<TSchema> = z.TypeOf<TSchema>> = {\n [key: `data-${string}`]: unknown;\n className?: string;\n content: FormContent<TData>;\n fieldsFooter?: React.ReactNode;\n id?: string;\n initialValues?: PartialNullableFormDataType<TData>;\n onError?: (error: z.ZodError<TData>) => void;\n onSubmit: (data: TData) => Promisable<void>;\n preventResetValuesOnReset?: boolean;\n readOnly?: boolean;\n resetBtn?: boolean;\n revalidateOnBlur?: boolean;\n submitBtnLabel?: string;\n validationSchema: z.ZodType<TData>;\n};\n\nconst Form = <TSchema extends z.ZodType<FormDataType>, TData extends z.TypeOf<TSchema> = z.TypeOf<TSchema>>({\n className,\n content,\n fieldsFooter,\n id,\n initialValues,\n onError,\n onSubmit,\n preventResetValuesOnReset,\n readOnly,\n resetBtn,\n revalidateOnBlur,\n submitBtnLabel,\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\n const handleError = (error: z.ZodError<TData>) => {\n const fieldErrors: FormErrors<TData> = {};\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 setRootErrors((prevErrors) => [...prevErrors, issue.message]);\n }\n }\n setErrors(fieldErrors);\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 reset();\n await onSubmit(result.data);\n } else {\n console.error(result.error.issues);\n handleError(result.error);\n }\n };\n\n const isGrouped = Array.isArray(content);\n\n const revalidate = () => {\n const hasErrors = Object.keys(errors).length > 0;\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 revalidate();\n }, [resolvedLanguage]);\n\n return (\n <form\n autoComplete=\"off\"\n className={twMerge('w-full', isGrouped ? 'space-y-8 divide-y' : 'space-y-6', className)}\n id={id}\n onBlur={revalidateOnBlur ? revalidate : undefined}\n onSubmit={(event) => void handleSubmit(event)}\n {...props}\n >\n {isGrouped ? (\n content.map((fieldGroup, i) => {\n return (\n <div className=\"flex flex-col space-y-6 [&:not(:first-child)]:pt-8\" key={i}>\n <div className=\"space-y-1\">\n {fieldGroup.title && (\n <Heading className=\"text-base\" variant=\"h4\">\n {fieldGroup.title}\n </Heading>\n )}\n {fieldGroup.description && (\n <p className=\"text-sm italic leading-tight text-muted-foreground\">{fieldGroup.description}</p>\n )}\n </div>\n <FieldsComponent\n errors={errors}\n fields={fieldGroup.fields as FormFields<TData>}\n readOnly={readOnly}\n setErrors={setErrors}\n setValues={setValues}\n values={values}\n />\n </div>\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 {fieldsFooter}\n <div className=\"flex w-full gap-3\">\n {/** Note - aria-label is used for testing in downstream packages */}\n <Button aria-label=\"Submit\" className=\"block w-full\" disabled={readOnly} type=\"submit\" variant=\"primary\">\n {submitBtnLabel ?? t('form.submit')}\n </Button>\n {resetBtn && (\n <Button\n aria-label=\"Reset\"\n className=\"block w-full\"\n disabled={readOnly}\n type=\"button\"\n variant=\"secondary\"\n onClick={reset}\n >\n {t('form.reset')}\n </Button>\n )}\n </div>\n {Boolean(rootErrors.length) && <ErrorMessage error={rootErrors} />}\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 * as React from 'react';\n\nimport { CircleAlertIcon } from 'lucide-react';\n\nexport const ErrorMessage: React.FC<{ error?: null | string[] }> = ({ error }) => {\n return error ? (\n <div className=\"space-y-1.5\">\n {error.map((message) => (\n <div className=\"flex w-full items-center text-sm font-medium text-destructive\" key={message}>\n <CircleAlertIcon className=\"mr-1\" style={{ strokeWidth: '2px' }} />\n <span>{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, type ScalarFieldProps } from './ScalarField';\n\nimport type { FieldError, FormErrors } from './types';\n\nexport type StaticFieldProps<TData extends FormDataType> = {\n errors: FormErrors<TData>;\n field: NumberRecordFormField | RecordArrayFormField | ScalarFieldProps['field'];\n name: string;\n 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 } 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 useEffect(() => {\n setRecordValue({});\n }, [options]);\n\n if (!recordValue) {\n return null;\n }\n\n return (\n <div className=\"space-y-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"space-y-6\">\n {Object.keys(items).map((name) => {\n const item = items[name]!;\n return (\n <NumberField\n error={recordError?.[name]}\n key={name}\n kind=\"number\"\n name={name}\n options={options}\n 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, type NumberFieldInputProps } from './NumberFieldInput';\nimport { NumberFieldRadio, type NumberFieldRadioProps } from './NumberFieldRadio';\nimport { NumberFieldSelect } from './NumberFieldSelect';\nimport { NumberFieldSlider, type NumberFieldSliderProps } from './NumberFieldSlider';\n\nexport type NumberFieldProps = NumberFieldInputProps | NumberFieldRadioProps | NumberFieldSliderProps;\n\nexport const NumberField = (props: NumberFieldProps) => {\n return match(props)\n .with({ variant: 'input' }, (props) => <NumberFieldInput {...props} />)\n .with({ variant: 'slider' }, (props) => <NumberFieldSlider {...props} />)\n .with({ variant: 'radio' }, (props) => <NumberFieldRadio {...props} />)\n .with({ variant: 'select' }, (props) => <NumberFieldSelect {...props} />)\n .exhaustive();\n};\n","import { useRef, useState } from 'react';\nimport * as React 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 inputValueRef = useRef(value?.toString() ?? '');\n const [inputKey, setInputKey] = useState(0);\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n let newValue: number | undefined = value;\n if (/^[+-]?$/.test(event.target.value)) {\n newValue = undefined;\n inputValueRef.current = event.target.value;\n } else {\n const parsedValue = parseNumber(event.target.value);\n if (parsedValue >= min && parsedValue <= max) {\n newValue = parsedValue;\n inputValueRef.current = event.target.value;\n }\n }\n if (value === newValue) {\n setInputKey(inputKey + 1);\n } else {\n setValue(newValue);\n }\n };\n\n return (\n <FieldGroup name={name}>\n <FieldGroup.Row>\n <Label>{label}</Label>\n <FieldGroup.Description description={description} />\n </FieldGroup.Row>\n <Input\n disabled={disabled || readOnly}\n max={max}\n min={min}\n name={name}\n type=\"text\"\n value={inputValueRef.current}\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 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground placeholder:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"input\"\n ref={ref}\n type={type}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, 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 'z-50 w-72 rounded-md border bg-popover px-3 py-1.5 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n collisionPadding={collisionPadding}\n ref={ref}\n sideOffset={sideOffset}\n onOpenAutoFocus={autofocus === false ? (event) => event.preventDefault() : undefined}\n {...props}\n />\n </Portal>\n );\n }\n);\n","import * 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 'flex aspect-square h-4 w-4 items-center justify-center rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <RadioGroupPrimitive.Indicator asChild>\n <CircleIcon\n className=\"fill-current text-current\"\n style={{ height: '0.625rem', strokeWidth: '2px', width: '0.625rem' }}\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\n","import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { Label } from '@/components/Label';\nimport { RadioGroup } from '@/components/RadioGroup';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type NumberFieldRadioProps = Simplify<\n BaseFieldComponentProps<number> & Extract<NumberFormField, { 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 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\n","import { 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';\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 select-none items-center py-1.5', className)}\n disabled={disabled}\n ref={ref}\n {...props}\n >\n <Track\n aria-disabled={disabled}\n className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary opacity-15 aria-disabled:cursor-not-allowed aria-disabled:opacity-10\"\n data-testid=\"slider-track\"\n >\n <Range className=\"absolute h-full bg-primary\" />\n </Track>\n <Thumb\n aria-disabled={disabled}\n className=\"block h-4 w-4 rounded-full border border-slate-500 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring 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 } 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 { t } = useTranslation('libui');\n\n const createNewRecord = () => Object.fromEntries(Object.keys(fieldset).map((fieldName) => [fieldName, undefined]));\n\n useEffect(() => {\n setArrayValue([createNewRecord()]);\n }, [fieldset]);\n\n if (!arrayValue) {\n return null;\n }\n\n // Creates a new object with all values mapped to null and appends it to the previous arrayValue\n const appendField = () => {\n setArrayValue([...arrayValue, createNewRecord()]);\n };\n\n const removeField = () => {\n if (arrayValue.length > 1) {\n setArrayValue(arrayValue.slice(0, arrayValue.length - 1));\n }\n };\n\n return (\n <div className=\"space-y-4\">\n <Heading className=\"font-medium\" variant=\"h5\">\n {label}\n </Heading>\n <div className=\"space-y-6\">\n {arrayValue.map((fields, i) => (\n <div className=\"space-y-4\" key={i}>\n <Label className=\"font-semibold italic\">{label + ' ' + (i + 1)}</Label>\n {Object.keys(fields).map((name) => {\n const field = fieldset[name];\n const fieldProps = field?.kind === 'dynamic' ? field.render.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 if (!newArrayError[i]) {\n newArrayError[i] = {};\n }\n newArrayError[i][name] = error;\n setArrayError(newArrayError);\n }}\n setValue={(value) => {\n const newArrayValue = [...arrayValue];\n newArrayValue[i]![name] = value;\n setArrayValue(newArrayValue);\n }}\n value={arrayValue?.[i]?.[name]}\n />\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"flex gap-3\">\n <Button 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, type BooleanFieldCheckboxProps } from './BooleanFieldCheckbox';\nimport { BooleanFieldRadio, type BooleanFieldRadioProps } from './BooleanFieldRadio';\n\nexport type BooleanFieldProps = BooleanFieldCheckboxProps | BooleanFieldRadioProps;\n\nexport const BooleanField = (props: BooleanFieldProps) => {\n return match(props)\n .with({ variant: 'radio' }, (props) => <BooleanFieldRadio {...props} />)\n .with({ variant: 'checkbox' }, (props) => <BooleanFieldCheckbox {...props} />)\n .exhaustive();\n};\n","import type { BooleanFormField } from '@douglasneuroinformatics/libui-form-types';\nimport type { Simplify } from 'type-fest';\n\nimport { 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={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';\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('');\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> = {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n} & SetFieldProps<T>;\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> = {\n onCheckedChange: (option: T, isChecked: boolean) => void;\n} & SetFieldProps<T>;\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, type StringFieldInputProps } from './StringFieldInput';\nimport { StringFieldPassword, type StringFieldPasswordProps } from './StringFieldPassword';\nimport { StringFieldRadio, type StringFieldRadioProps } from './StringFieldRadio';\nimport { StringFieldSelect } from './StringFieldSelect';\nimport { StringFieldTextArea, type StringFieldTextAreaProps } from './StringFieldTextArea';\n\nexport type StringFieldProps =\n | StringFieldInputProps\n | StringFieldPasswordProps\n | StringFieldRadioProps\n | StringFieldTextAreaProps;\n\nexport const StringField = (props: StringFieldProps) => {\n return match(props)\n .with({ variant: 'textarea' }, (props) => <StringFieldTextArea {...props} />)\n .with({ variant: 'password' }, (props) => <StringFieldPassword {...props} />)\n .with({ variant: 'input' }, (props) => <StringFieldInput {...props} />)\n .with({ variant: 'select' }, (props) => <StringFieldSelect {...props} />)\n .with({ variant: 'radio' }, (props) => <StringFieldRadio {...props} />)\n .exhaustive();\n};\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldInputProps = BaseFieldComponentProps<string> &\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 { motion } from 'framer-motion';\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\n\nimport { Input } from '@/components/Input';\nimport { Label } from '@/components/Label';\nimport { cn } from '@/utils';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type 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=\"absolute right-0 flex h-full w-8 items-center justify-center text-muted-foreground\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onClick={() => setShow(!show)}\n >\n <EyeIcon className={cn('absolute transition-all', show ? '-rotate-90 scale-0' : 'rotate-0 scale-100')} />\n <EyeOffIcon className={cn('absolute transition-all', !show ? 'rotate-90 scale-0' : 'rotate-0 scale-100')} />\n </button>\n </FieldGroup.Row>\n {strength !== null && (\n <motion.div\n animate={{ width: `${Math.max(strength, value?.length ? 1 : 0) * 25}%` }}\n className=\"h-1 w-full overflow-hidden rounded\"\n initial={{ width: '0%' }}\n transition={{ duration: 0.5 }}\n >\n <div\n className={cn(\n 'h-full w-full bg-destructive 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 {\n description?: string;\n disabled?: boolean;\n label: string;\n options: { [K in T]: string };\n orientation?: 'horizontal' | 'vertical';\n } & BaseFieldComponentProps<T>\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';\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 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground placeholder:opacity-80 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"text-area\"\n ref={ref}\n {...props}\n />\n );\n});\n","import type { StringFormField } from '@douglasneuroinformatics/libui-form-types';\n\nimport { Label } from '@/components/Label';\nimport { TextArea } from '@/components/TextArea';\n\nimport { FieldGroup } from '../FieldGroup';\n\nimport type { BaseFieldComponentProps } from '../types';\n\nexport type StringFieldTextAreaProps = BaseFieldComponentProps<string> &\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, type BooleanFieldProps } from './BooleanField';\nimport { DateField, type DateFieldProps } from './DateField';\nimport { NumberField, type NumberFieldProps } from './NumberField';\nimport { SetField, type SetFieldProps } from './SetField';\nimport { StringField, type StringFieldProps } from './StringField';\n\nimport type { BaseFieldComponentProps } from './types';\n\nexport type ScalarFieldProps = {\n field: BooleanFormField | DateFormField | NumberFormField | SetFormField | StringFormField;\n} & BaseFieldComponentProps<ScalarFieldValue>;\n\nexport const ScalarField = ({ field, ...props }: ScalarFieldProps) => {\n switch (field.kind) {\n case 'string':\n return <StringField {...field} {...(props as StringFieldProps)} />;\n case 'number':\n return <NumberField {...field} {...(props as NumberFieldProps)} />;\n case 'date':\n return <DateField {...field} {...(props as DateFieldProps)} />;\n case 'boolean':\n return <BooleanField {...field} {...(props as BooleanFieldProps)} />;\n case 'set':\n return <SetField {...field} {...(props as SetFieldProps)} />;\n default:\n throw new Error(`Unexpected value for kind: ${Reflect.get(field, 'kind') satisfies never}`);\n }\n};\n","import type {\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 'z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n );\n});\n","import { LanguagesIcon } from 'lucide-react';\n\nimport { useTranslation } from '@/hooks';\nimport type { Language } from '@/i18n';\n\nimport { Button, type ButtonProps } from '../Button';\nimport { DropdownMenu } from '../DropdownMenu';\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 type LineProps,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis\n} from 'recharts';\nimport type { ConditionalKeys } from 'type-fest';\n\nimport { useTranslation } from '@/hooks';\nimport { type Theme, useTheme } 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 }[]> = {\n err?: ExtractValidKeys<T, number>;\n name: string;\n val: ExtractValidKeys<T, number>;\n} & Pick<LineProps, 'legendType' | 'stroke' | 'strokeDasharray' | 'strokeWidth' | 'type'>;\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 { type ButtonProps } from '../Button';\nimport { DropdownButton } from '../DropdownButton';\nimport { DropdownMenu } from '../DropdownMenu';\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ItemIndicator>\n </span>\n {children}\n </CheckboxItem>\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof Item>\n>(function MenuBarItem({ className, inset, ...props }, ref) {\n return (\n <Item\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof Label>\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 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ItemIndicator>\n <CircleIcon className=\"fill-current\" style={{ height: 8, width: 8 }} />\n </ItemIndicator>\n </span>\n {children}\n </RadioItem>\n );\n});\n","import { 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('flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm', className)}\n ref={ref}\n {...props}\n />\n );\n }\n);\n","import { 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 {\n inset?: boolean;\n } & React.ComponentPropsWithoutRef<typeof SubTrigger>\n>(function MenuBarSubTrigger({ children, className, inset, ...props }, ref) {\n return (\n <SubTrigger\n className={cn(\n 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n inset && 'pl-8',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </SubTrigger>\n );\n});\n","import { 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 'flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { AnimatePresence, motion } from 'framer-motion';\nimport { XIcon } from 'lucide-react';\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 flex-grow font-medium text-slate-900 dark:text-slate-100\">\n {item.title ?? t(`notifications.types.${item.type}`)}\n </h5>\n <button\n className=\"inline-flex rounded-md text-slate-400 hover:text-slate-500 focus:outline-none focus:ring-1 focus:ring-sky-500 dark:focus:ring-sky-600\"\n type=\"button\"\n onClick={() => {\n dismissNotification(item.id);\n }}\n >\n <XIcon aria-hidden=\"true\" className=\"h-5 w-5\" />\n </button>\n </div>\n <p className=\"my-2 text-muted-foreground\">{item.message}</p>\n </div>\n <motion.div\n animate={{ width: '100%' }}\n className=\"h-1 bg-slate-500\"\n initial={{ width: '0%' }}\n transition={{ duration: timeout / 1000, ease: 'linear' }}\n onAnimationComplete={() => {\n dismissNotification(item.id);\n }}\n />\n </Card>\n </div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n );\n};\n\nexport { NotificationHub, type NotificationHubProps };\n","import { CheckCircleIcon, ExclamationCircleIcon, InformationCircleIcon, XCircleIcon } from '@heroicons/react/24/solid';\n\nimport { type NotificationInterface } from '@/hooks/useNotificationsStore';\n\nexport type NotificationIconProps = {\n type: NotificationInterface['type'];\n};\n\nexport const NotificationIcon = ({ type }: NotificationIconProps) => {\n switch (type) {\n case 'error':\n return <XCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-red-500\" />;\n case 'info':\n return <InformationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-blue-500\" />;\n case 'success':\n return <CheckCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-green-500\" />;\n case 'warning':\n return <ExclamationCircleIcon aria-hidden=\"true\" className=\"h-6 w-6 text-yellow-500\" />;\n }\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 { type ButtonProps, buttonVariants } from '../Button';\n\nexport type PaginationLinkProps = Simplify<\n {\n isActive?: boolean;\n } & Pick<ButtonProps, 'size'> &\n React.ComponentProps<'a'>\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, 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, type PanelProps } from 'react-resizable-panels';\n\nimport { ResizableHandle, type ResizableHandleProps } from './ResizableHandle';\nimport { ResizablePanelGroup, type ResizablePanelGroupProps } from './ResizablePanelGroup';\n\ntype ResizableRootType = React.FC<{ children: React.ReactNode }>;\ntype ResizableType = {\n Handle: React.FC<ResizableHandleProps>;\n Panel: React.FC<PanelProps>;\n PanelGroup: React.FC<ResizablePanelGroupProps>;\n} & ResizableRootType;\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 = {\n withHandle?: boolean;\n} & React.ComponentProps<typeof PanelResizeHandle>;\n\nexport const ResizableHandle = ({ className, withHandle, ...props }: ResizableHandleProps) => (\n <PanelResizeHandle\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </PanelResizeHandle>\n);\n","import * 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\nexport type 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 = {\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} & BaseSearchBarProps;\n\ntype UncontrolledSearchBarProps = {\n onValueChange?: never;\n value?: never;\n} & BaseSearchBarProps;\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","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 { 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 { SheetOverlay } from './SheetOverlay';\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 Overlay: SheetOverlay,\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, Overlay, Portal } from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nexport const sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n defaultVariants: {\n side: 'right'\n },\n variants: {\n side: {\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top'\n }\n }\n }\n);\n\nexport type SheetContentProps = React.ComponentPropsWithoutRef<typeof Content> & VariantProps<typeof sheetVariants>;\n\nexport const SheetContent = React.forwardRef<React.ElementRef<typeof Content>, SheetContentProps>(function SheetContent(\n { children, className, side = 'right', ...props },\n ref\n) {\n return (\n <Portal>\n <Overlay />\n <Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </Close>\n </Content>\n </Portal>\n );\n});\n","import { 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 { 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 { 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';\n\nimport { motion, useSpring, useTransform } from 'framer-motion';\n\nimport { cn } from '@/utils';\n\nimport { Card } from '../Card';\n\ntype StatisticCardProps = {\n [key: `data-${string}`]: unknown;\n className?: string;\n icon?: JSX.Element;\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 inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n );\n});\n","import { 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 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow',\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\n","import { 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, 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 /** How much time a user has to enter another trigger without incurring a delay again. */\n skipDelayDuration?: number;\n};\n\nexport const TooltipRoot = ({ children, delayDuration = 0, skipDelayDuration = 300 }: TooltipRootProps) => {\n return (\n <Provider delayDuration={delayDuration} skipDelayDuration={skipDelayDuration}>\n <Root>{children}</Root>\n </Provider>\n );\n};\n","import { forwardRef } from 'react';\n\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type TooltipTriggerProps = Omit<ButtonProps, 'asChild'>;\n\nexport const TooltipTrigger = 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","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","AnimatePresence","motion","range","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","useEffect","useState","jsx","jsx","jsxs","useEffect","useMemo","useState","useCallback","match","useEffect","match","useRef","useState","React","jsx","Input","forwardRef","cva","jsx","cva","Label","forwardRef","React","Content","Portal","jsx","PopoverContent","Portal","Content","jsx","jsxs","jsx","jsx","jsx","jsxs","useRef","useState","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","useEffect","useEffect","match","jsx","jsxs","value","Label","match","jsx","jsxs","match","value","Label","RadioGroup","jsx","match","props","useEffect","useState","toBasicISOString","jsx","jsxs","useState","useEffect","toBasicISOString","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","useEffect","Label","jsx","useCallback","match","field","jsx","useState","useMemo","useEffect","jsx","jsxs","useState","useEffect","Root","Trigger","forwardRef","Content","jsx","forwardRef","HoverCardContent","Content","Root","Trigger","jsx","jsxs","React","toBasicISOString","Label","jsx","jsxs","createElement","toBasicISOString","Label","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","AnimatePresence","motion","XIcon","jsx","jsx","jsxs","AnimatePresence","motion","XIcon","jsx","MoreHorizontalIcon","jsx","jsxs","MoreHorizontalIcon","jsx","jsx","ChevronRightIcon","jsx","jsxs","ChevronRightIcon","jsx","jsxs","jsx","forwardRef","jsx","forwardRef","Progress","jsx","jsx","jsx","SearchIcon","jsx","jsxs","SearchIcon","forwardRef","jsx","Separator","forwardRef","Close","Portal","Root","Trigger","jsx","React","Close","Content","Overlay","Portal","cva","XIcon","jsx","jsxs","cva","SheetContent","Portal","Overlay","Content","Close","XIcon","forwardRef","Description","jsx","forwardRef","SheetDescription","Description","jsx","jsx","forwardRef","Overlay","jsx","forwardRef","SheetOverlay","Overlay","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"]}
|