@douglasneuroinformatics/libui 2.0.2 → 2.0.4
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/Accordion/Accordion.d.ts +7 -0
- package/dist/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion/Accordion.js +9 -0
- package/dist/components/Accordion/AccordionContent.d.ts +4 -0
- package/dist/components/Accordion/AccordionContent.d.ts.map +1 -0
- package/dist/components/Accordion/AccordionContent.js +7 -0
- package/dist/components/Accordion/AccordionItem.d.ts +4 -0
- package/dist/components/Accordion/AccordionItem.d.ts.map +1 -0
- package/dist/components/Accordion/AccordionItem.js +6 -0
- package/dist/components/Accordion/AccordionRoot.d.ts +4 -0
- package/dist/components/Accordion/AccordionRoot.d.ts.map +1 -0
- package/dist/components/Accordion/AccordionRoot.js +5 -0
- package/dist/components/Accordion/AccordionTrigger.d.ts +4 -0
- package/dist/components/Accordion/AccordionTrigger.d.ts.map +1 -0
- package/dist/components/Accordion/AccordionTrigger.js +10 -0
- package/dist/components/AlertDialog/AlertDialog.d.ts +13 -0
- package/dist/components/AlertDialog/AlertDialog.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialog.js +20 -0
- package/dist/components/AlertDialog/AlertDialogAction.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogAction.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogAction.js +7 -0
- package/dist/components/AlertDialog/AlertDialogCancel.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogCancel.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogCancel.js +7 -0
- package/dist/components/AlertDialog/AlertDialogContent.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogContent.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogContent.js +9 -0
- package/dist/components/AlertDialog/AlertDialogDescription.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogDescription.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogDescription.js +6 -0
- package/dist/components/AlertDialog/AlertDialogFooter.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogFooter.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogFooter.js +3 -0
- package/dist/components/AlertDialog/AlertDialogHeader.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogHeader.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogHeader.js +3 -0
- package/dist/components/AlertDialog/AlertDialogOverlay.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogOverlay.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogOverlay.js +6 -0
- package/dist/components/AlertDialog/AlertDialogTitle.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialogTitle.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialogTitle.js +6 -0
- package/dist/components/ArrowToggle/ArrowToggle.d.ts +287 -0
- package/dist/components/ArrowToggle/ArrowToggle.d.ts.map +1 -0
- package/dist/components/ArrowToggle/ArrowToggle.js +22 -0
- package/dist/components/Avatar/Avatar.d.ts +6 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +7 -0
- package/dist/components/Avatar/AvatarFallback.d.ts +4 -0
- package/dist/components/Avatar/AvatarFallback.d.ts.map +1 -0
- package/dist/components/Avatar/AvatarFallback.js +6 -0
- package/dist/components/Avatar/AvatarImage.d.ts +4 -0
- package/dist/components/Avatar/AvatarImage.d.ts.map +1 -0
- package/dist/components/Avatar/AvatarImage.js +6 -0
- package/dist/components/Avatar/AvatarRoot.d.ts +4 -0
- package/dist/components/Avatar/AvatarRoot.d.ts.map +1 -0
- package/dist/components/Avatar/AvatarRoot.js +6 -0
- package/dist/components/Badge/Badge.d.ts +9 -0
- package/dist/components/Badge/Badge.d.ts.map +1 -0
- package/dist/components/Badge/Badge.js +20 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +14 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +15 -0
- package/dist/components/Breadcrumb/BreadcrumbEllipsis.d.ts +3 -0
- package/dist/components/Breadcrumb/BreadcrumbEllipsis.d.ts.map +1 -0
- package/dist/components/Breadcrumb/BreadcrumbEllipsis.js +5 -0
- package/dist/components/Breadcrumb/BreadcrumbItem.d.ts +3 -0
- package/dist/components/Breadcrumb/BreadcrumbItem.d.ts.map +1 -0
- package/dist/components/Breadcrumb/BreadcrumbItem.js +5 -0
- package/dist/components/Breadcrumb/BreadcrumbLink.d.ts +5 -0
- package/dist/components/Breadcrumb/BreadcrumbLink.d.ts.map +1 -0
- package/dist/components/Breadcrumb/BreadcrumbLink.js +7 -0
- package/dist/components/Breadcrumb/BreadcrumbList.d.ts +3 -0
- package/dist/components/Breadcrumb/BreadcrumbList.d.ts.map +1 -0
- package/dist/components/Breadcrumb/BreadcrumbList.js +5 -0
- package/dist/components/Breadcrumb/BreadcrumbPage.d.ts +3 -0
- package/dist/components/Breadcrumb/BreadcrumbPage.d.ts.map +1 -0
- package/dist/components/Breadcrumb/BreadcrumbPage.js +5 -0
- package/dist/components/Breadcrumb/BreadcrumbRoot.d.ts +5 -0
- package/dist/components/Breadcrumb/BreadcrumbRoot.d.ts.map +1 -0
- package/dist/components/Breadcrumb/BreadcrumbRoot.js +4 -0
- package/dist/components/Breadcrumb/BreadcrumbSeparator.d.ts +3 -0
- package/dist/components/Breadcrumb/BreadcrumbSeparator.d.ts.map +1 -0
- package/dist/components/Breadcrumb/BreadcrumbSeparator.js +4 -0
- package/dist/components/Button/Button.d.ts +299 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/Button.js +37 -0
- package/dist/components/Card/Card.d.ts +9 -0
- package/dist/components/Card/Card.d.ts.map +1 -0
- package/dist/components/Card/Card.js +14 -0
- package/dist/components/Checkbox/Checkbox.d.ts +4 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +9 -0
- package/dist/components/Collapsible/Collapsible.d.ts +6 -0
- package/dist/components/Collapsible/Collapsible.d.ts.map +1 -0
- package/dist/components/Collapsible/Collapsible.js +6 -0
- package/dist/components/Collapsible/CollapsibleRoot.d.ts +3 -0
- package/dist/components/Collapsible/CollapsibleRoot.d.ts.map +1 -0
- package/dist/components/Collapsible/CollapsibleRoot.js +5 -0
- package/dist/components/Command/Command.d.ts +336 -0
- package/dist/components/Command/Command.d.ts.map +1 -0
- package/dist/components/Command/Command.js +22 -0
- package/dist/components/Command/CommandEmpty.d.ts +9 -0
- package/dist/components/Command/CommandEmpty.d.ts.map +1 -0
- package/dist/components/Command/CommandEmpty.js +5 -0
- package/dist/components/Command/CommandGroup.d.ts +13 -0
- package/dist/components/Command/CommandGroup.d.ts.map +1 -0
- package/dist/components/Command/CommandGroup.js +6 -0
- package/dist/components/Command/CommandInput.d.ts +10 -0
- package/dist/components/Command/CommandInput.d.ts.map +1 -0
- package/dist/components/Command/CommandInput.js +11 -0
- package/dist/components/Command/CommandItem.d.ts +15 -0
- package/dist/components/Command/CommandItem.d.ts.map +1 -0
- package/dist/components/Command/CommandItem.js +6 -0
- package/dist/components/Command/CommandList.d.ts +11 -0
- package/dist/components/Command/CommandList.d.ts.map +1 -0
- package/dist/components/Command/CommandList.js +6 -0
- package/dist/components/Command/CommandSeparator.d.ts +9 -0
- package/dist/components/Command/CommandSeparator.d.ts.map +1 -0
- package/dist/components/Command/CommandSeparator.js +6 -0
- package/dist/components/Command/CommandShortcut.d.ts +3 -0
- package/dist/components/Command/CommandShortcut.d.ts.map +1 -0
- package/dist/components/Command/CommandShortcut.js +5 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts +24 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenu.js +26 -0
- package/dist/components/ContextMenu/ContextMenuCheckboxItem.d.ts +4 -0
- package/dist/components/ContextMenu/ContextMenuCheckboxItem.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuCheckboxItem.js +11 -0
- package/dist/components/ContextMenu/ContextMenuContent.d.ts +4 -0
- package/dist/components/ContextMenu/ContextMenuContent.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuContent.js +7 -0
- package/dist/components/ContextMenu/ContextMenuItem.d.ts +6 -0
- package/dist/components/ContextMenu/ContextMenuItem.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuItem.js +6 -0
- package/dist/components/ContextMenu/ContextMenuLabel.d.ts +6 -0
- package/dist/components/ContextMenu/ContextMenuLabel.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuLabel.js +6 -0
- package/dist/components/ContextMenu/ContextMenuRadioItem.d.ts +4 -0
- package/dist/components/ContextMenu/ContextMenuRadioItem.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuRadioItem.js +11 -0
- package/dist/components/ContextMenu/ContextMenuSeparator.d.ts +4 -0
- package/dist/components/ContextMenu/ContextMenuSeparator.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuSeparator.js +6 -0
- package/dist/components/ContextMenu/ContextMenuShortcut.d.ts +3 -0
- package/dist/components/ContextMenu/ContextMenuShortcut.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuShortcut.js +5 -0
- package/dist/components/ContextMenu/ContextMenuSubContent.d.ts +4 -0
- package/dist/components/ContextMenu/ContextMenuSubContent.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuSubContent.js +6 -0
- package/dist/components/ContextMenu/ContextMenuSubTrigger.d.ts +6 -0
- package/dist/components/ContextMenu/ContextMenuSubTrigger.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenuSubTrigger.js +9 -0
- package/dist/components/DatePicker/Calendar.d.ts +9 -0
- package/dist/components/DatePicker/Calendar.d.ts.map +1 -0
- package/dist/components/DatePicker/Calendar.js +28 -0
- package/dist/components/DatePicker/DatePicker.d.ts +8 -0
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker/DatePicker.js +79 -0
- package/dist/components/DatePicker/YearSelector.d.ts +7 -0
- package/dist/components/DatePicker/YearSelector.d.ts.map +1 -0
- package/dist/components/DatePicker/YearSelector.js +20 -0
- package/dist/components/Dialog/Dialog.d.ts +10 -0
- package/dist/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.js +14 -0
- package/dist/components/Dialog/DialogContent.d.ts +3 -0
- package/dist/components/Dialog/DialogContent.d.ts.map +1 -0
- package/dist/components/Dialog/DialogContent.js +13 -0
- package/dist/components/Dialog/DialogDescription.d.ts +3 -0
- package/dist/components/Dialog/DialogDescription.d.ts.map +1 -0
- package/dist/components/Dialog/DialogDescription.js +6 -0
- package/dist/components/Dialog/DialogFooter.d.ts +3 -0
- package/dist/components/Dialog/DialogFooter.d.ts.map +1 -0
- package/dist/components/Dialog/DialogFooter.js +3 -0
- package/dist/components/Dialog/DialogHeader.d.ts +3 -0
- package/dist/components/Dialog/DialogHeader.d.ts.map +1 -0
- package/dist/components/Dialog/DialogHeader.js +3 -0
- package/dist/components/Dialog/DialogOverlay.d.ts +3 -0
- package/dist/components/Dialog/DialogOverlay.d.ts.map +1 -0
- package/dist/components/Dialog/DialogOverlay.js +6 -0
- package/dist/components/Dialog/DialogTitle.d.ts +3 -0
- package/dist/components/Dialog/DialogTitle.d.ts.map +1 -0
- package/dist/components/Dialog/DialogTitle.js +6 -0
- package/dist/components/Drawer/Drawer.d.ts +14 -0
- package/dist/components/Drawer/Drawer.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.js +17 -0
- package/dist/components/Drawer/DrawerContent.d.ts +5 -0
- package/dist/components/Drawer/DrawerContent.d.ts.map +1 -0
- package/dist/components/Drawer/DrawerContent.js +10 -0
- package/dist/components/Drawer/DrawerDescription.d.ts +3 -0
- package/dist/components/Drawer/DrawerDescription.d.ts.map +1 -0
- package/dist/components/Drawer/DrawerDescription.js +6 -0
- package/dist/components/Drawer/DrawerFooter.d.ts +3 -0
- package/dist/components/Drawer/DrawerFooter.d.ts.map +1 -0
- package/dist/components/Drawer/DrawerFooter.js +3 -0
- package/dist/components/Drawer/DrawerHeader.d.ts +3 -0
- package/dist/components/Drawer/DrawerHeader.d.ts.map +1 -0
- package/dist/components/Drawer/DrawerHeader.js +3 -0
- package/dist/components/Drawer/DrawerTitle.d.ts +3 -0
- package/dist/components/Drawer/DrawerTitle.d.ts.map +1 -0
- package/dist/components/Drawer/DrawerTitle.js +6 -0
- package/dist/components/DropdownButton/DropdownButton.d.ts +3 -0
- package/dist/components/DropdownButton/DropdownButton.d.ts.map +1 -0
- package/dist/components/DropdownButton/DropdownButton.js +8 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +27 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +26 -0
- package/dist/components/DropdownMenu/DropdownMenuCheckboxItem.d.ts +4 -0
- package/dist/components/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuCheckboxItem.js +11 -0
- package/dist/components/DropdownMenu/DropdownMenuContent.d.ts +9 -0
- package/dist/components/DropdownMenu/DropdownMenuContent.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuContent.js +7 -0
- package/dist/components/DropdownMenu/DropdownMenuItem.d.ts +6 -0
- package/dist/components/DropdownMenu/DropdownMenuItem.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuItem.js +6 -0
- package/dist/components/DropdownMenu/DropdownMenuLabel.d.ts +6 -0
- package/dist/components/DropdownMenu/DropdownMenuLabel.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuLabel.js +6 -0
- package/dist/components/DropdownMenu/DropdownMenuRadioItem.d.ts +4 -0
- package/dist/components/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuRadioItem.js +11 -0
- package/dist/components/DropdownMenu/DropdownMenuSeparator.d.ts +4 -0
- package/dist/components/DropdownMenu/DropdownMenuSeparator.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuSeparator.js +6 -0
- package/dist/components/DropdownMenu/DropdownMenuShortcut.d.ts +3 -0
- package/dist/components/DropdownMenu/DropdownMenuShortcut.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuShortcut.js +5 -0
- package/dist/components/DropdownMenu/DropdownMenuSubContent.d.ts +4 -0
- package/dist/components/DropdownMenu/DropdownMenuSubContent.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuSubContent.js +6 -0
- package/dist/components/DropdownMenu/DropdownMenuSubTrigger.d.ts +6 -0
- package/dist/components/DropdownMenu/DropdownMenuSubTrigger.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenuSubTrigger.js +9 -0
- package/dist/components/ErrorBoundary/ErrorBoundary.d.ts +5 -0
- package/dist/components/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ErrorBoundary/ErrorBoundary.js +6 -0
- package/dist/components/ErrorFallback/ErrorFallback.d.ts +8 -0
- package/dist/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
- package/dist/components/ErrorFallback/ErrorFallback.js +16 -0
- package/dist/components/Form/BaseRadioField.d.ts +13 -0
- package/dist/components/Form/BaseRadioField.d.ts.map +1 -0
- package/dist/components/Form/BaseRadioField.js +27 -0
- package/dist/components/Form/BooleanField/BooleanField.d.ts +6 -0
- package/dist/components/Form/BooleanField/BooleanField.d.ts.map +1 -0
- package/dist/components/Form/BooleanField/BooleanField.js +10 -0
- package/dist/components/Form/BooleanField/BooleanFieldCheckbox.d.ts +9 -0
- package/dist/components/Form/BooleanField/BooleanFieldCheckbox.d.ts.map +1 -0
- package/dist/components/Form/BooleanField/BooleanFieldCheckbox.js +15 -0
- package/dist/components/Form/BooleanField/BooleanFieldRadio.d.ts +9 -0
- package/dist/components/Form/BooleanField/BooleanFieldRadio.d.ts.map +1 -0
- package/dist/components/Form/BooleanField/BooleanFieldRadio.js +31 -0
- package/dist/components/Form/DateField/DateField.d.ts +7 -0
- package/dist/components/Form/DateField/DateField.d.ts.map +1 -0
- package/dist/components/Form/DateField/DateField.js +40 -0
- package/dist/components/Form/DynamicField.d.ts +13 -0
- package/dist/components/Form/DynamicField.d.ts.map +1 -0
- package/dist/components/Form/DynamicField.js +21 -0
- package/dist/components/Form/ErrorMessage.d.ts +5 -0
- package/dist/components/Form/ErrorMessage.d.ts.map +1 -0
- package/dist/components/Form/ErrorMessage.js +5 -0
- package/dist/components/Form/FieldGroup/FieldGroup.d.ts +15 -0
- package/dist/components/Form/FieldGroup/FieldGroup.d.ts.map +1 -0
- package/dist/components/Form/FieldGroup/FieldGroup.js +9 -0
- package/dist/components/Form/FieldGroup/FieldGroupDescription.d.ts +5 -0
- package/dist/components/Form/FieldGroup/FieldGroupDescription.d.ts.map +1 -0
- package/dist/components/Form/FieldGroup/FieldGroupDescription.js +8 -0
- package/dist/components/Form/FieldGroup/FieldGroupRoot.d.ts +5 -0
- package/dist/components/Form/FieldGroup/FieldGroupRoot.d.ts.map +1 -0
- package/dist/components/Form/FieldGroup/FieldGroupRoot.js +2 -0
- package/dist/components/Form/FieldGroup/FieldGroupRow.d.ts +5 -0
- package/dist/components/Form/FieldGroup/FieldGroupRow.d.ts.map +1 -0
- package/dist/components/Form/FieldGroup/FieldGroupRow.js +2 -0
- package/dist/components/Form/FieldsComponent.d.ts +13 -0
- package/dist/components/Form/FieldsComponent.d.ts.map +1 -0
- package/dist/components/Form/FieldsComponent.js +13 -0
- package/dist/components/Form/Form.d.ts +18 -0
- package/dist/components/Form/Form.d.ts.map +1 -0
- package/dist/components/Form/Form.js +64 -0
- package/dist/components/Form/NumberField/NumberField.d.ts +7 -0
- package/dist/components/Form/NumberField/NumberField.d.ts.map +1 -0
- package/dist/components/Form/NumberField/NumberField.js +12 -0
- package/dist/components/Form/NumberField/NumberFieldInput.d.ts +9 -0
- package/dist/components/Form/NumberField/NumberFieldInput.d.ts.map +1 -0
- package/dist/components/Form/NumberField/NumberFieldInput.js +21 -0
- package/dist/components/Form/NumberField/NumberFieldRadio.d.ts +9 -0
- package/dist/components/Form/NumberField/NumberFieldRadio.d.ts.map +1 -0
- package/dist/components/Form/NumberField/NumberFieldRadio.js +19 -0
- package/dist/components/Form/NumberField/NumberFieldSlider.d.ts +9 -0
- package/dist/components/Form/NumberField/NumberFieldSlider.d.ts.map +1 -0
- package/dist/components/Form/NumberField/NumberFieldSlider.js +14 -0
- package/dist/components/Form/NumberRecordField.d.ts +7 -0
- package/dist/components/Form/NumberRecordField.d.ts.map +1 -0
- package/dist/components/Form/NumberRecordField.js +17 -0
- package/dist/components/Form/RecordArrayField.d.ts +23 -0
- package/dist/components/Form/RecordArrayField.d.ts.map +1 -0
- package/dist/components/Form/RecordArrayField.js +56 -0
- package/dist/components/Form/ScalarField.d.ts +8 -0
- package/dist/components/Form/ScalarField.d.ts.map +1 -0
- package/dist/components/Form/ScalarField.js +22 -0
- package/dist/components/Form/SetField/SetField.d.ts +7 -0
- package/dist/components/Form/SetField/SetField.d.ts.map +1 -0
- package/dist/components/Form/SetField/SetField.js +27 -0
- package/dist/components/Form/SetField/SetFieldListbox.d.ts +7 -0
- package/dist/components/Form/SetField/SetFieldListbox.d.ts.map +1 -0
- package/dist/components/Form/SetField/SetFieldListbox.js +16 -0
- package/dist/components/Form/SetField/SetFieldSelect.d.ts +7 -0
- package/dist/components/Form/SetField/SetFieldSelect.d.ts.map +1 -0
- package/dist/components/Form/SetField/SetFieldSelect.js +23 -0
- package/dist/components/Form/StaticField.d.ts +14 -0
- package/dist/components/Form/StaticField.d.ts.map +1 -0
- package/dist/components/Form/StaticField.js +17 -0
- package/dist/components/Form/StringField/StringField.d.ts +8 -0
- package/dist/components/Form/StringField/StringField.d.ts.map +1 -0
- package/dist/components/Form/StringField/StringField.js +16 -0
- package/dist/components/Form/StringField/StringFieldInput.d.ts +6 -0
- package/dist/components/Form/StringField/StringFieldInput.d.ts.map +1 -0
- package/dist/components/Form/StringField/StringFieldInput.js +12 -0
- package/dist/components/Form/StringField/StringFieldPassword.d.ts +6 -0
- package/dist/components/Form/StringField/StringFieldPassword.d.ts.map +1 -0
- package/dist/components/Form/StringField/StringFieldPassword.js +19 -0
- package/dist/components/Form/StringField/StringFieldRadio.d.ts +9 -0
- package/dist/components/Form/StringField/StringFieldRadio.d.ts.map +1 -0
- package/dist/components/Form/StringField/StringFieldRadio.js +5 -0
- package/dist/components/Form/StringField/StringFieldSelect.d.ts +9 -0
- package/dist/components/Form/StringField/StringFieldSelect.d.ts.map +1 -0
- package/dist/components/Form/StringField/StringFieldSelect.js +16 -0
- package/dist/components/Form/StringField/StringFieldTextArea.d.ts +6 -0
- package/dist/components/Form/StringField/StringFieldTextArea.d.ts.map +1 -0
- package/dist/components/Form/StringField/StringFieldTextArea.js +12 -0
- package/dist/components/Form/types.d.ts +23 -0
- package/dist/components/Form/types.d.ts.map +1 -0
- package/dist/components/Form/types.js +1 -0
- package/dist/components/Form/utils.d.ts +10 -0
- package/dist/components/Form/utils.d.ts.map +1 -0
- package/dist/components/Form/utils.js +44 -0
- package/dist/components/Heading/Heading.d.ts +8 -0
- package/dist/components/Heading/Heading.d.ts.map +1 -0
- package/dist/components/Heading/Heading.js +18 -0
- package/dist/components/HoverCard/HoverCard.d.ts +6 -0
- package/dist/components/HoverCard/HoverCard.d.ts.map +1 -0
- package/dist/components/HoverCard/HoverCard.js +6 -0
- package/dist/components/HoverCard/HoverCardContent.d.ts +3 -0
- package/dist/components/HoverCard/HoverCardContent.d.ts.map +1 -0
- package/dist/components/HoverCard/HoverCardContent.js +6 -0
- package/dist/components/Input/Input.d.ts +4 -0
- package/dist/components/Input/Input.d.ts.map +1 -0
- package/dist/components/Input/Input.js +5 -0
- package/dist/components/Label/Label.d.ts +6 -0
- package/dist/components/Label/Label.d.ts.map +1 -0
- package/dist/components/Label/Label.js +8 -0
- package/dist/components/LanguageToggle/LanguageToggle.d.ts +12 -0
- package/dist/components/LanguageToggle/LanguageToggle.d.ts.map +1 -0
- package/dist/components/LanguageToggle/LanguageToggle.js +13 -0
- package/dist/components/LegacyDropdown/LegacyDropdown.d.ts +21 -0
- package/dist/components/LegacyDropdown/LegacyDropdown.d.ts.map +1 -0
- package/dist/components/LegacyDropdown/LegacyDropdown.js +17 -0
- package/dist/components/LegacyModal/LegacyModal.d.ts +13 -0
- package/dist/components/LegacyModal/LegacyModal.d.ts.map +1 -0
- package/dist/components/LegacyModal/LegacyModal.js +25 -0
- package/dist/components/LegacySelectDropdown/LegacySelectDropdown.d.ts +21 -0
- package/dist/components/LegacySelectDropdown/LegacySelectDropdown.d.ts.map +1 -0
- package/dist/components/LegacySelectDropdown/LegacySelectDropdown.js +18 -0
- package/dist/components/LegacySlider/LegacySlider.d.ts +11 -0
- package/dist/components/LegacySlider/LegacySlider.d.ts.map +1 -0
- package/dist/components/LegacySlider/LegacySlider.js +24 -0
- package/dist/components/LegacyStepper/LegacyStepper.d.ts +15 -0
- package/dist/components/LegacyStepper/LegacyStepper.d.ts.map +1 -0
- package/dist/components/LegacyStepper/LegacyStepper.js +46 -0
- package/dist/components/LegacyTable/LegacyClientTable.d.ts +5 -0
- package/dist/components/LegacyTable/LegacyClientTable.d.ts.map +1 -0
- package/dist/components/LegacyTable/LegacyClientTable.js +29 -0
- package/dist/components/LegacyTable/LegacyTable.d.ts +29 -0
- package/dist/components/LegacyTable/LegacyTable.d.ts.map +1 -0
- package/dist/components/LegacyTable/LegacyTable.js +54 -0
- package/dist/components/LegacyTable/LegacyTableColumnHeader.d.ts +16 -0
- package/dist/components/LegacyTable/LegacyTableColumnHeader.d.ts.map +1 -0
- package/dist/components/LegacyTable/LegacyTableColumnHeader.js +20 -0
- package/dist/components/LineGraph/LineGraph.d.ts +28 -0
- package/dist/components/LineGraph/LineGraph.d.ts.map +1 -0
- package/dist/components/LineGraph/LineGraph.js +42 -0
- package/dist/components/MenuBar/MenuBar.d.ts +28 -0
- package/dist/components/MenuBar/MenuBar.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBar.js +29 -0
- package/dist/components/MenuBar/MenuBarCheckboxItem.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarCheckboxItem.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarCheckboxItem.js +11 -0
- package/dist/components/MenuBar/MenuBarContent.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarContent.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarContent.js +7 -0
- package/dist/components/MenuBar/MenuBarItem.d.ts +5 -0
- package/dist/components/MenuBar/MenuBarItem.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarItem.js +6 -0
- package/dist/components/MenuBar/MenuBarLabel.d.ts +5 -0
- package/dist/components/MenuBar/MenuBarLabel.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarLabel.js +6 -0
- package/dist/components/MenuBar/MenuBarRadioItem.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarRadioItem.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarRadioItem.js +11 -0
- package/dist/components/MenuBar/MenuBarRoot.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarRoot.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarRoot.js +6 -0
- package/dist/components/MenuBar/MenuBarSeparator.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarSeparator.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarSeparator.js +6 -0
- package/dist/components/MenuBar/MenuBarShortcut.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarShortcut.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarShortcut.js +5 -0
- package/dist/components/MenuBar/MenuBarSubContent.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarSubContent.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarSubContent.js +6 -0
- package/dist/components/MenuBar/MenuBarSubTrigger.d.ts +5 -0
- package/dist/components/MenuBar/MenuBarSubTrigger.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarSubTrigger.js +9 -0
- package/dist/components/MenuBar/MenuBarTrigger.d.ts +3 -0
- package/dist/components/MenuBar/MenuBarTrigger.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBarTrigger.js +6 -0
- package/dist/components/NotificationHub/NotificationHub.d.ts +8 -0
- package/dist/components/NotificationHub/NotificationHub.d.ts.map +1 -0
- package/dist/components/NotificationHub/NotificationHub.js +28 -0
- package/dist/components/NotificationHub/NotificationIcon.d.ts +7 -0
- package/dist/components/NotificationHub/NotificationIcon.d.ts.map +1 -0
- package/dist/components/NotificationHub/NotificationIcon.js +15 -0
- package/dist/components/Pagination/Pagination.d.ts +845 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.js +15 -0
- package/dist/components/Pagination/PaginationContent.d.ts +3 -0
- package/dist/components/Pagination/PaginationContent.d.ts.map +1 -0
- package/dist/components/Pagination/PaginationContent.js +3 -0
- package/dist/components/Pagination/PaginationEllipsis.d.ts +3 -0
- package/dist/components/Pagination/PaginationEllipsis.d.ts.map +1 -0
- package/dist/components/Pagination/PaginationEllipsis.js +6 -0
- package/dist/components/Pagination/PaginationItem.d.ts +3 -0
- package/dist/components/Pagination/PaginationItem.d.ts.map +1 -0
- package/dist/components/Pagination/PaginationItem.js +2 -0
- package/dist/components/Pagination/PaginationLink.d.ts +8 -0
- package/dist/components/Pagination/PaginationLink.d.ts.map +1 -0
- package/dist/components/Pagination/PaginationLink.js +7 -0
- package/dist/components/Pagination/PaginationNext.d.ts +4 -0
- package/dist/components/Pagination/PaginationNext.d.ts.map +1 -0
- package/dist/components/Pagination/PaginationNext.js +11 -0
- package/dist/components/Pagination/PaginationPrevious.d.ts +4 -0
- package/dist/components/Pagination/PaginationPrevious.d.ts.map +1 -0
- package/dist/components/Pagination/PaginationPrevious.js +11 -0
- package/dist/components/Pagination/PaginationRoot.d.ts +3 -0
- package/dist/components/Pagination/PaginationRoot.d.ts.map +1 -0
- package/dist/components/Pagination/PaginationRoot.js +3 -0
- package/dist/components/Popover/Popover.d.ts +6 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -0
- package/dist/components/Popover/Popover.js +6 -0
- package/dist/components/Popover/PopoverContent.d.ts +19 -0
- package/dist/components/Popover/PopoverContent.d.ts.map +1 -0
- package/dist/components/Popover/PopoverContent.js +7 -0
- package/dist/components/Progress/Progress.d.ts +4 -0
- package/dist/components/Progress/Progress.d.ts.map +1 -0
- package/dist/components/Progress/Progress.js +7 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +8 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.js +10 -0
- package/dist/components/RadioGroup/RadioGroupItem.d.ts +4 -0
- package/dist/components/RadioGroup/RadioGroupItem.d.ts.map +1 -0
- package/dist/components/RadioGroup/RadioGroupItem.js +9 -0
- package/dist/components/Resizable/Resizable.d.ts +15 -0
- package/dist/components/Resizable/Resizable.d.ts.map +1 -0
- package/dist/components/Resizable/Resizable.js +11 -0
- package/dist/components/Resizable/ResizableHandle.d.ts +7 -0
- package/dist/components/Resizable/ResizableHandle.d.ts.map +1 -0
- package/dist/components/Resizable/ResizableHandle.js +6 -0
- package/dist/components/Resizable/ResizablePanelGroup.d.ts +5 -0
- package/dist/components/Resizable/ResizablePanelGroup.d.ts.map +1 -0
- package/dist/components/Resizable/ResizablePanelGroup.js +4 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts +3 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea/ScrollArea.js +10 -0
- package/dist/components/ScrollArea/ScrollBar.d.ts +3 -0
- package/dist/components/ScrollArea/ScrollBar.d.ts.map +1 -0
- package/dist/components/ScrollArea/ScrollBar.js +7 -0
- package/dist/components/SearchBar/SearchBar.d.ts +23 -0
- package/dist/components/SearchBar/SearchBar.d.ts.map +1 -0
- package/dist/components/SearchBar/SearchBar.js +13 -0
- package/dist/components/Select/Select.d.ts +14 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.js +19 -0
- package/dist/components/Select/SelectContent.d.ts +4 -0
- package/dist/components/Select/SelectContent.d.ts.map +1 -0
- package/dist/components/Select/SelectContent.js +14 -0
- package/dist/components/Select/SelectItem.d.ts +4 -0
- package/dist/components/Select/SelectItem.d.ts.map +1 -0
- package/dist/components/Select/SelectItem.js +11 -0
- package/dist/components/Select/SelectLabel.d.ts +4 -0
- package/dist/components/Select/SelectLabel.d.ts.map +1 -0
- package/dist/components/Select/SelectLabel.js +6 -0
- package/dist/components/Select/SelectScrollDownButton.d.ts +4 -0
- package/dist/components/Select/SelectScrollDownButton.d.ts.map +1 -0
- package/dist/components/Select/SelectScrollDownButton.js +8 -0
- package/dist/components/Select/SelectScrollUpButton.d.ts +4 -0
- package/dist/components/Select/SelectScrollUpButton.d.ts.map +1 -0
- package/dist/components/Select/SelectScrollUpButton.js +8 -0
- package/dist/components/Select/SelectSeparator.d.ts +4 -0
- package/dist/components/Select/SelectSeparator.d.ts.map +1 -0
- package/dist/components/Select/SelectSeparator.js +6 -0
- package/dist/components/Select/SelectTrigger.d.ts +4 -0
- package/dist/components/Select/SelectTrigger.d.ts.map +1 -0
- package/dist/components/Select/SelectTrigger.js +7 -0
- package/dist/components/Separator/Separator.d.ts +4 -0
- package/dist/components/Separator/Separator.d.ts.map +1 -0
- package/dist/components/Separator/Separator.js +6 -0
- package/dist/components/Sheet/Sheet.d.ts +15 -0
- package/dist/components/Sheet/Sheet.d.ts.map +1 -0
- package/dist/components/Sheet/Sheet.js +18 -0
- package/dist/components/Sheet/SheetContent.d.ts +11 -0
- package/dist/components/Sheet/SheetContent.d.ts.map +1 -0
- package/dist/components/Sheet/SheetContent.js +27 -0
- package/dist/components/Sheet/SheetDescription.d.ts +3 -0
- package/dist/components/Sheet/SheetDescription.d.ts.map +1 -0
- package/dist/components/Sheet/SheetDescription.js +6 -0
- package/dist/components/Sheet/SheetFooter.d.ts +3 -0
- package/dist/components/Sheet/SheetFooter.d.ts.map +1 -0
- package/dist/components/Sheet/SheetFooter.js +3 -0
- package/dist/components/Sheet/SheetHeader.d.ts +3 -0
- package/dist/components/Sheet/SheetHeader.d.ts.map +1 -0
- package/dist/components/Sheet/SheetHeader.js +3 -0
- package/dist/components/Sheet/SheetOverlay.d.ts +3 -0
- package/dist/components/Sheet/SheetOverlay.d.ts.map +1 -0
- package/dist/components/Sheet/SheetOverlay.js +6 -0
- package/dist/components/Sheet/SheetTitle.d.ts +3 -0
- package/dist/components/Sheet/SheetTitle.d.ts.map +1 -0
- package/dist/components/Sheet/SheetTitle.js +6 -0
- package/dist/components/Slider/Slider.d.ts +3 -0
- package/dist/components/Slider/Slider.d.ts.map +1 -0
- package/dist/components/Slider/Slider.js +9 -0
- package/dist/components/Spinner/Spinner.d.ts +4 -0
- package/dist/components/Spinner/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner/Spinner.js +13 -0
- package/dist/components/SpinnerIcon/SpinnerIcon.d.ts +3 -0
- package/dist/components/SpinnerIcon/SpinnerIcon.d.ts.map +1 -0
- package/dist/components/SpinnerIcon/SpinnerIcon.js +4 -0
- package/dist/components/Switch/Switch.d.ts +4 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/Switch.js +7 -0
- package/dist/components/Table/Table.d.ts +11 -0
- package/dist/components/Table/Table.d.ts.map +1 -0
- package/dist/components/Table/Table.js +17 -0
- package/dist/components/Table/TableBody.d.ts +3 -0
- package/dist/components/Table/TableBody.d.ts.map +1 -0
- package/dist/components/Table/TableBody.js +5 -0
- package/dist/components/Table/TableCaption.d.ts +3 -0
- package/dist/components/Table/TableCaption.d.ts.map +1 -0
- package/dist/components/Table/TableCaption.js +5 -0
- package/dist/components/Table/TableCell.d.ts +3 -0
- package/dist/components/Table/TableCell.d.ts.map +1 -0
- package/dist/components/Table/TableCell.js +5 -0
- package/dist/components/Table/TableFooter.d.ts +3 -0
- package/dist/components/Table/TableFooter.d.ts.map +1 -0
- package/dist/components/Table/TableFooter.js +5 -0
- package/dist/components/Table/TableHead.d.ts +3 -0
- package/dist/components/Table/TableHead.d.ts.map +1 -0
- package/dist/components/Table/TableHead.js +5 -0
- package/dist/components/Table/TableHeader.d.ts +3 -0
- package/dist/components/Table/TableHeader.d.ts.map +1 -0
- package/dist/components/Table/TableHeader.js +5 -0
- package/dist/components/Table/TableRoot.d.ts +3 -0
- package/dist/components/Table/TableRoot.d.ts.map +1 -0
- package/dist/components/Table/TableRoot.js +6 -0
- package/dist/components/Table/TableRow.d.ts +3 -0
- package/dist/components/Table/TableRow.d.ts.map +1 -0
- package/dist/components/Table/TableRow.js +5 -0
- package/dist/components/Tabs/Tabs.d.ts +7 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.js +9 -0
- package/dist/components/Tabs/TabsContent.d.ts +4 -0
- package/dist/components/Tabs/TabsContent.d.ts.map +1 -0
- package/dist/components/Tabs/TabsContent.js +6 -0
- package/dist/components/Tabs/TabsList.d.ts +4 -0
- package/dist/components/Tabs/TabsList.d.ts.map +1 -0
- package/dist/components/Tabs/TabsList.js +6 -0
- package/dist/components/Tabs/TabsRoot.d.ts +3 -0
- package/dist/components/Tabs/TabsRoot.d.ts.map +1 -0
- package/dist/components/Tabs/TabsRoot.js +5 -0
- package/dist/components/Tabs/TabsTrigger.d.ts +4 -0
- package/dist/components/Tabs/TabsTrigger.d.ts.map +1 -0
- package/dist/components/Tabs/TabsTrigger.js +6 -0
- package/dist/components/TextArea/TextArea.d.ts +4 -0
- package/dist/components/TextArea/TextArea.d.ts.map +1 -0
- package/dist/components/TextArea/TextArea.js +5 -0
- package/dist/components/ThemeToggle/ThemeToggle.d.ts +5 -0
- package/dist/components/ThemeToggle/ThemeToggle.d.ts.map +1 -0
- package/dist/components/ThemeToggle/ThemeToggle.js +16 -0
- package/dist/components/Tooltip/Tooltip.d.ts +6 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.js +7 -0
- package/dist/components/Tooltip/TooltipContent.d.ts +15 -0
- package/dist/components/Tooltip/TooltipContent.d.ts.map +1 -0
- package/dist/components/Tooltip/TooltipContent.js +6 -0
- package/dist/components/Tooltip/TooltipRoot.d.ts +11 -0
- package/dist/components/Tooltip/TooltipRoot.d.ts.map +1 -0
- package/dist/components/Tooltip/TooltipRoot.js +6 -0
- package/dist/components/Tooltip/TooltipTrigger.d.ts +5 -0
- package/dist/components/Tooltip/TooltipTrigger.d.ts.map +1 -0
- package/dist/components/Tooltip/TooltipTrigger.js +7 -0
- package/dist/components.d.ts +55 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +54 -0
- package/dist/context/LegacyStepperContext.d.ts +7 -0
- package/dist/context/LegacyStepperContext.d.ts.map +1 -0
- package/dist/context/LegacyStepperContext.js +3 -0
- package/dist/hooks/useDownload.d.ts +13 -0
- package/dist/hooks/useDownload.d.ts.map +1 -0
- package/dist/hooks/useDownload.js +42 -0
- package/dist/hooks/useEventCallback.d.ts +2 -0
- package/dist/hooks/useEventCallback.d.ts.map +1 -0
- package/dist/hooks/useEventCallback.js +11 -0
- package/dist/hooks/useEventListener.d.ts +7 -0
- package/dist/hooks/useEventListener.d.ts.map +1 -0
- package/dist/hooks/useEventListener.js +23 -0
- package/dist/hooks/useInterval.d.ts +2 -0
- package/dist/hooks/useInterval.d.ts.map +1 -0
- package/dist/hooks/useInterval.js +19 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +3 -0
- package/dist/hooks/useLegacyStepper.d.ts +7 -0
- package/dist/hooks/useLegacyStepper.d.ts.map +1 -0
- package/dist/hooks/useLegacyStepper.js +6 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/hooks/useMediaQuery.js +34 -0
- package/dist/hooks/useNotificationsStore.d.ts +14 -0
- package/dist/hooks/useNotificationsStore.d.ts.map +1 -0
- package/dist/hooks/useNotificationsStore.js +14 -0
- package/dist/hooks/useOnClickOutside.d.ts +5 -0
- package/dist/hooks/useOnClickOutside.d.ts.map +1 -0
- package/dist/hooks/useOnClickOutside.js +12 -0
- package/dist/hooks/useSessionStorage.d.ts +38 -0
- package/dist/hooks/useSessionStorage.d.ts.map +1 -0
- package/dist/hooks/useSessionStorage.js +99 -0
- package/dist/hooks/useTheme.d.ts +19 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +60 -0
- package/dist/hooks/useWindowSize.d.ts +6 -0
- package/dist/hooks/useWindowSize.d.ts.map +1 -0
- package/dist/hooks/useWindowSize.js +21 -0
- package/dist/hooks.d.ts +13 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +12 -0
- package/dist/i18n.d.ts +13 -14
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +46 -211
- package/dist/testing/mocks.d.ts +16 -0
- package/dist/testing/mocks.d.ts.map +1 -0
- package/dist/testing/mocks.js +46 -0
- package/dist/testing/setup-tests.d.ts +2 -0
- package/dist/testing/setup-tests.d.ts.map +1 -0
- package/dist/testing/setup-tests.js +8 -0
- package/dist/translations/libui.json +154 -0
- package/dist/utils.d.ts +4 -6
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +8 -9
- package/package.json +13 -10
- package/src/assets/libui-logo.svg +113 -0
- package/src/components/Accordion/Accordion.tsx +10 -0
- package/src/components/Accordion/AccordionContent.tsx +20 -0
- package/src/components/Accordion/AccordionItem.tsx +12 -0
- package/src/components/Accordion/AccordionRoot.tsx +10 -0
- package/src/components/Accordion/AccordionTrigger.tsx +27 -0
- package/src/components/AlertDialog/AlertDialog.tsx +22 -0
- package/src/components/AlertDialog/AlertDialogAction.tsx +13 -0
- package/src/components/AlertDialog/AlertDialogCancel.tsx +15 -0
- package/src/components/AlertDialog/AlertDialogContent.tsx +25 -0
- package/src/components/AlertDialog/AlertDialogDescription.tsx +12 -0
- package/src/components/AlertDialog/AlertDialogFooter.tsx +7 -0
- package/src/components/AlertDialog/AlertDialogHeader.tsx +7 -0
- package/src/components/AlertDialog/AlertDialogOverlay.tsx +21 -0
- package/src/components/AlertDialog/AlertDialogTitle.tsx +12 -0
- package/src/components/ArrowToggle/ArrowToggle.tsx +63 -0
- package/src/components/Avatar/Avatar.tsx +8 -0
- package/src/components/Avatar/AvatarFallback.tsx +18 -0
- package/src/components/Avatar/AvatarImage.tsx +12 -0
- package/src/components/Avatar/AvatarRoot.tsx +19 -0
- package/src/components/Badge/Badge.tsx +30 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +16 -0
- package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +16 -0
- package/src/components/Breadcrumb/BreadcrumbItem.tsx +9 -0
- package/src/components/Breadcrumb/BreadcrumbLink.tsx +15 -0
- package/src/components/Breadcrumb/BreadcrumbList.tsx +18 -0
- package/src/components/Breadcrumb/BreadcrumbPage.tsx +18 -0
- package/src/components/Breadcrumb/BreadcrumbRoot.tsx +10 -0
- package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +11 -0
- package/src/components/Button/Button.tsx +61 -0
- package/src/components/Card/Card.tsx +37 -0
- package/src/components/Checkbox/Checkbox.tsx +27 -0
- package/src/components/Collapsible/Collapsible.tsx +8 -0
- package/src/components/Collapsible/CollapsibleRoot.tsx +10 -0
- package/src/components/Command/Command.tsx +41 -0
- package/src/components/Command/CommandEmpty.tsx +10 -0
- package/src/components/Command/CommandGroup.tsx +21 -0
- package/src/components/Command/CommandInput.tsx +26 -0
- package/src/components/Command/CommandItem.tsx +21 -0
- package/src/components/Command/CommandList.tsx +18 -0
- package/src/components/Command/CommandSeparator.tsx +12 -0
- package/src/components/Command/CommandShortcut.tsx +7 -0
- package/src/components/ContextMenu/ContextMenu.tsx +28 -0
- package/src/components/ContextMenu/ContextMenuCheckboxItem.tsx +30 -0
- package/src/components/ContextMenu/ContextMenuContent.tsx +23 -0
- package/src/components/ContextMenu/ContextMenuItem.tsx +24 -0
- package/src/components/ContextMenu/ContextMenuLabel.tsx +20 -0
- package/src/components/ContextMenu/ContextMenuRadioItem.tsx +29 -0
- package/src/components/ContextMenu/ContextMenuSeparator.tsx +12 -0
- package/src/components/ContextMenu/ContextMenuShortcut.tsx +7 -0
- package/src/components/ContextMenu/ContextMenuSubContent.tsx +21 -0
- package/src/components/ContextMenu/ContextMenuSubTrigger.tsx +28 -0
- package/src/components/DatePicker/Calendar.tsx +64 -0
- package/src/components/DatePicker/DatePicker.tsx +156 -0
- package/src/components/DatePicker/YearSelector.tsx +49 -0
- package/src/components/Dialog/Dialog.tsx +16 -0
- package/src/components/Dialog/DialogContent.tsx +31 -0
- package/src/components/Dialog/DialogDescription.tsx +12 -0
- package/src/components/Dialog/DialogFooter.tsx +7 -0
- package/src/components/Dialog/DialogHeader.tsx +7 -0
- package/src/components/Dialog/DialogOverlay.tsx +21 -0
- package/src/components/Dialog/DialogTitle.tsx +12 -0
- package/src/components/Drawer/Drawer.tsx +23 -0
- package/src/components/Drawer/DrawerContent.tsx +27 -0
- package/src/components/Drawer/DrawerDescription.tsx +14 -0
- package/src/components/Drawer/DrawerFooter.tsx +7 -0
- package/src/components/Drawer/DrawerHeader.tsx +7 -0
- package/src/components/Drawer/DrawerTitle.tsx +18 -0
- package/src/components/DropdownButton/DropdownButton.tsx +25 -0
- package/src/components/DropdownMenu/DropdownMenu.tsx +28 -0
- package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +30 -0
- package/src/components/DropdownMenu/DropdownMenuContent.tsx +29 -0
- package/src/components/DropdownMenu/DropdownMenuItem.tsx +24 -0
- package/src/components/DropdownMenu/DropdownMenuLabel.tsx +20 -0
- package/src/components/DropdownMenu/DropdownMenuRadioItem.tsx +29 -0
- package/src/components/DropdownMenu/DropdownMenuSeparator.tsx +12 -0
- package/src/components/DropdownMenu/DropdownMenuShortcut.tsx +7 -0
- package/src/components/DropdownMenu/DropdownMenuSubContent.tsx +21 -0
- package/src/components/DropdownMenu/DropdownMenuSubTrigger.tsx +28 -0
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +9 -0
- package/src/components/ErrorFallback/ErrorFallback.tsx +34 -0
- package/src/components/Form/BaseRadioField.tsx +68 -0
- package/src/components/Form/BooleanField/BooleanField.tsx +15 -0
- package/src/components/Form/BooleanField/BooleanFieldCheckbox.tsx +35 -0
- package/src/components/Form/BooleanField/BooleanFieldRadio.tsx +59 -0
- package/src/components/Form/DateField/DateField.tsx +68 -0
- package/src/components/Form/DynamicField.tsx +45 -0
- package/src/components/Form/ErrorMessage.tsx +11 -0
- package/src/components/Form/FieldGroup/FieldGroup.tsx +10 -0
- package/src/components/Form/FieldGroup/FieldGroupDescription.tsx +17 -0
- package/src/components/Form/FieldGroup/FieldGroupRoot.tsx +5 -0
- package/src/components/Form/FieldGroup/FieldGroupRow.tsx +5 -0
- package/src/components/Form/FieldsComponent.tsx +27 -0
- package/src/components/Form/Form.tsx +145 -0
- package/src/components/Form/NumberField/NumberField.tsx +17 -0
- package/src/components/Form/NumberField/NumberFieldInput.tsx +44 -0
- package/src/components/Form/NumberField/NumberFieldRadio.tsx +58 -0
- package/src/components/Form/NumberField/NumberFieldSlider.tsx +41 -0
- package/src/components/Form/NumberRecordField.tsx +60 -0
- package/src/components/Form/RecordArrayField.tsx +99 -0
- package/src/components/Form/ScalarField.tsx +39 -0
- package/src/components/Form/SetField/SetField.tsx +37 -0
- package/src/components/Form/SetField/SetFieldListbox.tsx +45 -0
- package/src/components/Form/SetField/SetFieldSelect.tsx +64 -0
- package/src/components/Form/StaticField.tsx +83 -0
- package/src/components/Form/StringField/StringField.tsx +25 -0
- package/src/components/Form/StringField/StringFieldInput.tsx +24 -0
- package/src/components/Form/StringField/StringFieldPassword.tsx +42 -0
- package/src/components/Form/StringField/StringFieldRadio.tsx +16 -0
- package/src/components/Form/StringField/StringFieldSelect.tsx +45 -0
- package/src/components/Form/StringField/StringFieldTextArea.tsx +24 -0
- package/src/components/Form/types.ts +26 -0
- package/src/components/Form/utils.ts +53 -0
- package/src/components/Heading/Heading.tsx +26 -0
- package/src/components/HoverCard/HoverCard.tsx +8 -0
- package/src/components/HoverCard/HoverCardContent.tsx +23 -0
- package/src/components/Input/Input.tsx +21 -0
- package/src/components/Label/Label.tsx +17 -0
- package/src/components/LanguageToggle/LanguageToggle.tsx +41 -0
- package/src/components/LegacyDropdown/LegacyDropdown.tsx +79 -0
- package/src/components/LegacyModal/LegacyModal.tsx +77 -0
- package/src/components/LegacySelectDropdown/LegacySelectDropdown.tsx +87 -0
- package/src/components/LegacySlider/LegacySlider.tsx +67 -0
- package/src/components/LegacyStepper/LegacyStepper.tsx +91 -0
- package/src/components/LegacyTable/LegacyClientTable.tsx +55 -0
- package/src/components/LegacyTable/LegacyTable.tsx +118 -0
- package/src/components/LegacyTable/LegacyTableColumnHeader.tsx +71 -0
- package/src/components/LineGraph/LineGraph.tsx +133 -0
- package/src/components/MenuBar/MenuBar.tsx +31 -0
- package/src/components/MenuBar/MenuBarCheckboxItem.tsx +30 -0
- package/src/components/MenuBar/MenuBarContent.tsx +25 -0
- package/src/components/MenuBar/MenuBarItem.tsx +24 -0
- package/src/components/MenuBar/MenuBarLabel.tsx +14 -0
- package/src/components/MenuBar/MenuBarRadioItem.tsx +29 -0
- package/src/components/MenuBar/MenuBarRoot.tsx +17 -0
- package/src/components/MenuBar/MenuBarSeparator.tsx +12 -0
- package/src/components/MenuBar/MenuBarShortcut.tsx +7 -0
- package/src/components/MenuBar/MenuBarSubContent.tsx +21 -0
- package/src/components/MenuBar/MenuBarSubTrigger.tsx +28 -0
- package/src/components/MenuBar/MenuBarTrigger.tsx +20 -0
- package/src/components/NotificationHub/NotificationHub.tsx +70 -0
- package/src/components/NotificationHub/NotificationIcon.tsx +22 -0
- package/src/components/Pagination/Pagination.tsx +16 -0
- package/src/components/Pagination/PaginationContent.tsx +7 -0
- package/src/components/Pagination/PaginationEllipsis.tsx +12 -0
- package/src/components/Pagination/PaginationItem.tsx +5 -0
- package/src/components/Pagination/PaginationLink.tsx +29 -0
- package/src/components/Pagination/PaginationNext.tsx +17 -0
- package/src/components/Pagination/PaginationPrevious.tsx +17 -0
- package/src/components/Pagination/PaginationRoot.tsx +12 -0
- package/src/components/Popover/Popover.tsx +8 -0
- package/src/components/Popover/PopoverContent.tsx +47 -0
- package/src/components/Progress/Progress.tsx +23 -0
- package/src/components/RadioGroup/RadioGroup.tsx +23 -0
- package/src/components/RadioGroup/RadioGroupItem.tsx +29 -0
- package/src/components/Resizable/Resizable.tsx +22 -0
- package/src/components/Resizable/ResizableHandle.tsx +26 -0
- package/src/components/Resizable/ResizablePanelGroup.tsx +14 -0
- package/src/components/ScrollArea/ScrollArea.tsx +18 -0
- package/src/components/ScrollArea/ScrollBar.tsx +26 -0
- package/src/components/SearchBar/SearchBar.tsx +49 -0
- package/src/components/Select/Select.tsx +21 -0
- package/src/components/Select/SelectContent.tsx +40 -0
- package/src/components/Select/SelectItem.tsx +29 -0
- package/src/components/Select/SelectLabel.tsx +12 -0
- package/src/components/Select/SelectScrollDownButton.tsx +21 -0
- package/src/components/Select/SelectScrollUpButton.tsx +21 -0
- package/src/components/Select/SelectSeparator.tsx +12 -0
- package/src/components/Select/SelectTrigger.tsx +16 -0
- package/src/components/Separator/Separator.tsx +25 -0
- package/src/components/Sheet/Sheet.tsx +20 -0
- package/src/components/Sheet/SheetContent.tsx +46 -0
- package/src/components/Sheet/SheetDescription.tsx +12 -0
- package/src/components/Sheet/SheetFooter.tsx +7 -0
- package/src/components/Sheet/SheetHeader.tsx +7 -0
- package/src/components/Sheet/SheetOverlay.tsx +21 -0
- package/src/components/Sheet/SheetTitle.tsx +12 -0
- package/src/components/Slider/Slider.tsx +22 -0
- package/src/components/Spinner/Spinner.tsx +22 -0
- package/src/components/SpinnerIcon/SpinnerIcon.tsx +21 -0
- package/src/components/Switch/Switch.tsx +27 -0
- package/src/components/Table/Table.tsx +18 -0
- package/src/components/Table/TableBody.tsx +9 -0
- package/src/components/Table/TableCaption.tsx +9 -0
- package/src/components/Table/TableCell.tsx +9 -0
- package/src/components/Table/TableFooter.tsx +15 -0
- package/src/components/Table/TableHead.tsx +18 -0
- package/src/components/Table/TableHeader.tsx +9 -0
- package/src/components/Table/TableRoot.tsx +14 -0
- package/src/components/Table/TableRow.tsx +15 -0
- package/src/components/Tabs/Tabs.tsx +10 -0
- package/src/components/Tabs/TabsContent.tsx +21 -0
- package/src/components/Tabs/TabsList.tsx +21 -0
- package/src/components/Tabs/TabsRoot.tsx +9 -0
- package/src/components/Tabs/TabsTrigger.tsx +21 -0
- package/src/components/TextArea/TextArea.tsx +23 -0
- package/src/components/ThemeToggle/ThemeToggle.tsx +31 -0
- package/src/components/Tooltip/Tooltip.tsx +8 -0
- package/src/components/Tooltip/TooltipContent.tsx +35 -0
- package/src/components/Tooltip/TooltipRoot.tsx +20 -0
- package/src/components/Tooltip/TooltipTrigger.tsx +17 -0
- package/src/components.ts +54 -0
- package/src/context/LegacyStepperContext.tsx +7 -0
- package/src/hooks/useDownload.ts +61 -0
- package/src/hooks/useEventCallback.ts +15 -0
- package/src/hooks/useEventListener.ts +73 -0
- package/src/hooks/useInterval.ts +25 -0
- package/src/hooks/useIsomorphicLayoutEffect.ts +5 -0
- package/src/hooks/useLegacyStepper.ts +8 -0
- package/src/hooks/useMediaQuery.ts +43 -0
- package/src/hooks/useNotificationsStore.ts +29 -0
- package/src/hooks/useOnClickOutside.ts +22 -0
- package/src/hooks/useSessionStorage.ts +155 -0
- package/src/hooks/useTheme.ts +75 -0
- package/src/hooks/useWindowSize.ts +32 -0
- package/src/hooks.ts +12 -0
- package/src/i18n.ts +78 -0
- package/src/styles/globals.css +86 -0
- package/src/testing/mocks.ts +53 -0
- package/src/testing/setup-tests.ts +11 -0
- package/src/translations/libui.json +154 -0
- package/src/typings/i18next.d.ts +21 -0
- package/src/utils.ts +10 -0
- package/dist/chunk-IP3LSCUG.js +0 -129
- package/dist/chunk-IP3LSCUG.js.map +0 -1
- package/dist/chunk-PAAJ5AH3.js +0 -15
- package/dist/chunk-PAAJ5AH3.js.map +0 -1
- package/dist/components/index.d.ts +0 -2043
- package/dist/components/index.js +0 -4141
- package/dist/components/index.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -122
- package/dist/hooks/index.js +0 -219
- package/dist/hooks/index.js.map +0 -1
- package/dist/i18n.js.map +0 -1
- package/dist/utils.js.map +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { toBasicISOString } from '@douglasneuroinformatics/libjs';
|
|
4
|
+
import type { DateFormField } from '@douglasneuroinformatics/libui-form-types';
|
|
5
|
+
import type { Simplify } from 'type-fest';
|
|
6
|
+
|
|
7
|
+
import { DatePicker } from '../../DatePicker/DatePicker.js';
|
|
8
|
+
import { Input } from '../../Input/Input.js';
|
|
9
|
+
import { Label } from '../../Label/Label.js';
|
|
10
|
+
import { Popover } from '../../Popover/Popover.js';
|
|
11
|
+
import { FieldGroup } from '../FieldGroup/FieldGroup.js';
|
|
12
|
+
import { type BaseFieldComponentProps } from '../types.js';
|
|
13
|
+
|
|
14
|
+
const isValidDateString = (s: string) => /^(\d{4})-((0[1-9])|(1[0-2]))-((0[1-9])|([12])[0-9]|3[01])$/.test(s);
|
|
15
|
+
|
|
16
|
+
export type DateFieldProps = Simplify<BaseFieldComponentProps<Date> & Omit<DateFormField, 'kind'>>;
|
|
17
|
+
|
|
18
|
+
export const DateField = ({ error, label, name, setValue, value }: DateFieldProps) => {
|
|
19
|
+
const [isDatePickerOpen, setIsDatePickerOpen] = useState(false);
|
|
20
|
+
const [isInputFocused, setIsInputFocused] = useState(false);
|
|
21
|
+
const [inputValue, setInputValue] = useState('');
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const isSelecting = isDatePickerOpen || isInputFocused;
|
|
25
|
+
if (isSelecting) {
|
|
26
|
+
return;
|
|
27
|
+
} else if (isValidDateString(inputValue)) {
|
|
28
|
+
setValue(new Date(inputValue));
|
|
29
|
+
} else {
|
|
30
|
+
setInputValue('');
|
|
31
|
+
}
|
|
32
|
+
}, [isDatePickerOpen, isInputFocused]);
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
setInputValue(value ? toBasicISOString(value) : '');
|
|
36
|
+
}, [value]);
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<FieldGroup>
|
|
40
|
+
<Label htmlFor={name}>{label}</Label>
|
|
41
|
+
<Popover open={isDatePickerOpen} onOpenChange={setIsDatePickerOpen}>
|
|
42
|
+
<Popover.Trigger>
|
|
43
|
+
<Input
|
|
44
|
+
autoComplete="off"
|
|
45
|
+
data-cy="date-input"
|
|
46
|
+
data-testid="date-input"
|
|
47
|
+
name={name}
|
|
48
|
+
placeholder="YYYY-MM-DD"
|
|
49
|
+
type="text"
|
|
50
|
+
value={inputValue}
|
|
51
|
+
onBlur={() => setIsInputFocused(false)}
|
|
52
|
+
onChange={(event) => setInputValue(event.target.value)}
|
|
53
|
+
onFocus={() => setIsInputFocused(true)}
|
|
54
|
+
/>
|
|
55
|
+
</Popover.Trigger>
|
|
56
|
+
<Popover.Content asChild align="start" autofocus={false} className="w-auto">
|
|
57
|
+
<DatePicker
|
|
58
|
+
onSelection={(value) => {
|
|
59
|
+
setInputValue(toBasicISOString(value));
|
|
60
|
+
setIsDatePickerOpen(false);
|
|
61
|
+
}}
|
|
62
|
+
/>
|
|
63
|
+
</Popover.Content>
|
|
64
|
+
</Popover>
|
|
65
|
+
<FieldGroup.Error error={error} />
|
|
66
|
+
</FieldGroup>
|
|
67
|
+
);
|
|
68
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import type { DynamicFormField, FormDataType, PartialFormDataType } from '@douglasneuroinformatics/libui-form-types';
|
|
4
|
+
import { pick } from 'lodash-es';
|
|
5
|
+
|
|
6
|
+
import { StaticField } from './StaticField.js';
|
|
7
|
+
|
|
8
|
+
import type { FormErrors } from './types.js';
|
|
9
|
+
|
|
10
|
+
export type DynamicFieldProps<TData extends FormDataType> = {
|
|
11
|
+
errors: FormErrors<TData>;
|
|
12
|
+
field: DynamicFormField<TData>;
|
|
13
|
+
name: string;
|
|
14
|
+
setErrors: React.Dispatch<React.SetStateAction<FormErrors<TData>>>;
|
|
15
|
+
setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<TData>>>;
|
|
16
|
+
values: PartialFormDataType<TData>;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const DynamicField = <TData extends FormDataType>({
|
|
20
|
+
field,
|
|
21
|
+
name,
|
|
22
|
+
values,
|
|
23
|
+
...props
|
|
24
|
+
}: DynamicFieldProps<TData>) => {
|
|
25
|
+
const [dependentValues, setDependentValues] = useState(pick(values, field.deps));
|
|
26
|
+
|
|
27
|
+
const staticField = useMemo(() => {
|
|
28
|
+
return field.render(values);
|
|
29
|
+
}, [dependentValues, field.render]);
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
for (const key of field.deps) {
|
|
33
|
+
if (dependentValues[key] !== values[key]) {
|
|
34
|
+
setDependentValues(pick(values, field.deps));
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}, [field.deps, values]);
|
|
39
|
+
|
|
40
|
+
if (!staticField) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return <StaticField {...props} field={staticField} name={name} values={values} />;
|
|
45
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { CircleAlertIcon } from 'lucide-react';
|
|
4
|
+
|
|
5
|
+
export const ErrorMessage: React.FC<{ error?: null | string }> = ({ error }) =>
|
|
6
|
+
error ? (
|
|
7
|
+
<div className="flex w-full items-center text-sm font-medium text-destructive">
|
|
8
|
+
<CircleAlertIcon className="mr-1" style={{ strokeWidth: '2px' }} />
|
|
9
|
+
<span>{error}</span>
|
|
10
|
+
</div>
|
|
11
|
+
) : null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ErrorMessage } from '../ErrorMessage.js';
|
|
2
|
+
import { FieldGroupDescription } from './FieldGroupDescription.js';
|
|
3
|
+
import { FieldGroupRoot } from './FieldGroupRoot.js';
|
|
4
|
+
import { FieldGroupRow } from './FieldGroupRow.js';
|
|
5
|
+
|
|
6
|
+
export const FieldGroup = Object.assign(FieldGroupRoot, {
|
|
7
|
+
Description: FieldGroupDescription,
|
|
8
|
+
Error: ErrorMessage,
|
|
9
|
+
Row: FieldGroupRow
|
|
10
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { CircleHelpIcon } from 'lucide-react';
|
|
4
|
+
|
|
5
|
+
import { Popover } from '../../Popover/Popover.js';
|
|
6
|
+
|
|
7
|
+
export const FieldGroupDescription: React.FC<{ description?: null | string }> = ({ description }) =>
|
|
8
|
+
description ? (
|
|
9
|
+
<Popover>
|
|
10
|
+
<Popover.Trigger>
|
|
11
|
+
<CircleHelpIcon className="text-muted-foreground" />
|
|
12
|
+
</Popover.Trigger>
|
|
13
|
+
<Popover.Content className="text-sm text-muted-foreground">
|
|
14
|
+
<p>{description}</p>
|
|
15
|
+
</Popover.Content>
|
|
16
|
+
</Popover>
|
|
17
|
+
) : null;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { FormDataType, FormFields, PartialFormDataType } from '@douglasneuroinformatics/libui-form-types';
|
|
4
|
+
|
|
5
|
+
import { DynamicField } from './DynamicField.js';
|
|
6
|
+
import { StaticField } from './StaticField.js';
|
|
7
|
+
|
|
8
|
+
import type { FormErrors } from './types.js';
|
|
9
|
+
|
|
10
|
+
export type FieldsComponentProps<T extends FormDataType> = {
|
|
11
|
+
errors: FormErrors<T>;
|
|
12
|
+
fields: FormFields<T>;
|
|
13
|
+
setErrors: React.Dispatch<React.SetStateAction<FormErrors<T>>>;
|
|
14
|
+
setValues: React.Dispatch<React.SetStateAction<PartialFormDataType<T>>>;
|
|
15
|
+
values: PartialFormDataType<T>;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/** Renders an object containing key value pairs, where the value is a FormField of some kind */
|
|
19
|
+
export const FieldsComponent = <T extends FormDataType>({ fields, ...props }: FieldsComponentProps<T>) => {
|
|
20
|
+
return Object.keys(fields).map((name) => {
|
|
21
|
+
const field = fields[name];
|
|
22
|
+
if (field.kind === 'dynamic') {
|
|
23
|
+
return <DynamicField {...props} field={field} key={name} name={name} />;
|
|
24
|
+
}
|
|
25
|
+
return <StaticField {...props} field={field} key={name} name={name} />;
|
|
26
|
+
});
|
|
27
|
+
};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
FormContent,
|
|
5
|
+
FormDataType,
|
|
6
|
+
FormFields,
|
|
7
|
+
PartialFormDataType,
|
|
8
|
+
PartialNullableFormDataType
|
|
9
|
+
} from '@douglasneuroinformatics/libui-form-types';
|
|
10
|
+
import { set } from 'lodash-es';
|
|
11
|
+
import { useTranslation } from 'react-i18next';
|
|
12
|
+
import { twMerge } from 'tailwind-merge';
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
|
|
15
|
+
import { Button } from '../Button/Button.js';
|
|
16
|
+
import { Heading } from '../Heading/Heading.js';
|
|
17
|
+
import { ErrorMessage } from './ErrorMessage.js';
|
|
18
|
+
import { FieldsComponent } from './FieldsComponent.js';
|
|
19
|
+
import { getInitialValues } from './utils.js';
|
|
20
|
+
|
|
21
|
+
import type { FormErrors } from './types.js';
|
|
22
|
+
|
|
23
|
+
type FormProps<TSchema extends z.ZodType<FormDataType>, TData extends z.infer<TSchema> = z.infer<TSchema>> = {
|
|
24
|
+
[key: `data-${string}`]: unknown;
|
|
25
|
+
className?: string;
|
|
26
|
+
content: FormContent<TData>;
|
|
27
|
+
id?: string;
|
|
28
|
+
initialValues?: PartialNullableFormDataType<TData>;
|
|
29
|
+
onError?: (error: z.ZodError<TData>) => void;
|
|
30
|
+
onSubmit: (data: TData) => void;
|
|
31
|
+
resetBtn?: boolean;
|
|
32
|
+
submitBtnLabel?: string;
|
|
33
|
+
validationSchema: z.ZodType<TData>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const Form = <TSchema extends z.ZodType<FormDataType>, TData extends z.infer<TSchema> = z.infer<TSchema>>({
|
|
37
|
+
className,
|
|
38
|
+
content,
|
|
39
|
+
id,
|
|
40
|
+
initialValues,
|
|
41
|
+
onError,
|
|
42
|
+
onSubmit,
|
|
43
|
+
resetBtn,
|
|
44
|
+
submitBtnLabel,
|
|
45
|
+
validationSchema,
|
|
46
|
+
...props
|
|
47
|
+
}: FormProps<TSchema, TData>) => {
|
|
48
|
+
const { t } = useTranslation('libui');
|
|
49
|
+
const [rootError, setRootError] = useState<null | string>(null);
|
|
50
|
+
const [errors, setErrors] = useState<FormErrors<TData>>({});
|
|
51
|
+
const [values, setValues] = useState<PartialFormDataType<TData>>(
|
|
52
|
+
initialValues ? getInitialValues(initialValues) : {}
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
const handleError = (error: z.ZodError<TData>) => {
|
|
56
|
+
const fieldErrors: FormErrors<TData> = {};
|
|
57
|
+
const rootErrors: string[] = [];
|
|
58
|
+
for (const issue of error.issues) {
|
|
59
|
+
if (issue.path.length > 0) {
|
|
60
|
+
set(fieldErrors, issue.path, issue.message);
|
|
61
|
+
} else {
|
|
62
|
+
rootErrors.push(issue.message);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
setRootError(rootErrors.join('\n'));
|
|
66
|
+
setErrors(fieldErrors);
|
|
67
|
+
if (onError) {
|
|
68
|
+
onError(error);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const reset = () => {
|
|
73
|
+
setRootError(null);
|
|
74
|
+
setErrors({});
|
|
75
|
+
setValues({});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const handleSubmit: React.FormEventHandler<HTMLFormElement> = (event) => {
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
const result = validationSchema.safeParse(values);
|
|
81
|
+
if (result.success) {
|
|
82
|
+
reset();
|
|
83
|
+
onSubmit(result.data);
|
|
84
|
+
} else {
|
|
85
|
+
console.error(result.error.issues);
|
|
86
|
+
handleError(result.error);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const isGrouped = Array.isArray(content);
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<form
|
|
94
|
+
autoComplete="off"
|
|
95
|
+
className={twMerge('w-full', isGrouped ? 'space-y-8 divide-y' : 'space-y-6', className)}
|
|
96
|
+
id={id}
|
|
97
|
+
onSubmit={handleSubmit}
|
|
98
|
+
{...props}
|
|
99
|
+
>
|
|
100
|
+
{isGrouped ? (
|
|
101
|
+
content.map((fieldGroup, i) => {
|
|
102
|
+
return (
|
|
103
|
+
<div className="space-y-6 [&:not(:first-child)]:pt-8" key={i}>
|
|
104
|
+
<div className="space-y-1">
|
|
105
|
+
<Heading variant="h4">{fieldGroup.title}</Heading>
|
|
106
|
+
{fieldGroup.description && (
|
|
107
|
+
<p className="text-sm italic leading-tight text-muted-foreground">{fieldGroup.description}</p>
|
|
108
|
+
)}
|
|
109
|
+
</div>
|
|
110
|
+
<FieldsComponent
|
|
111
|
+
errors={errors}
|
|
112
|
+
fields={fieldGroup.fields as FormFields<TData>}
|
|
113
|
+
setErrors={setErrors}
|
|
114
|
+
setValues={setValues}
|
|
115
|
+
values={values}
|
|
116
|
+
/>
|
|
117
|
+
</div>
|
|
118
|
+
);
|
|
119
|
+
})
|
|
120
|
+
) : (
|
|
121
|
+
<FieldsComponent errors={errors} fields={content} setErrors={setErrors} setValues={setValues} values={values} />
|
|
122
|
+
)}
|
|
123
|
+
<div className="flex w-full gap-3">
|
|
124
|
+
{/** Note - aria-label is used for testing in downstream packages */}
|
|
125
|
+
<Button
|
|
126
|
+
aria-label="Submit Button"
|
|
127
|
+
className="block w-full"
|
|
128
|
+
data-cy="submit-form"
|
|
129
|
+
type="submit"
|
|
130
|
+
variant="primary"
|
|
131
|
+
>
|
|
132
|
+
{submitBtnLabel ?? t('form.submit')}
|
|
133
|
+
</Button>
|
|
134
|
+
{resetBtn && (
|
|
135
|
+
<Button aria-label="Reset Button" className="block w-full" type="button" variant="secondary" onClick={reset}>
|
|
136
|
+
{t('form.reset')}
|
|
137
|
+
</Button>
|
|
138
|
+
)}
|
|
139
|
+
</div>
|
|
140
|
+
{rootError && <ErrorMessage error={rootError} />}
|
|
141
|
+
</form>
|
|
142
|
+
);
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
export { Form, type FormProps };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { match } from 'ts-pattern';
|
|
4
|
+
|
|
5
|
+
import { NumberFieldInput, type NumberFieldInputProps } from './NumberFieldInput.js';
|
|
6
|
+
import { NumberFieldRadio, type NumberFieldRadioProps } from './NumberFieldRadio.js';
|
|
7
|
+
import { NumberFieldSlider, type NumberFieldSliderProps } from './NumberFieldSlider.js';
|
|
8
|
+
|
|
9
|
+
export type NumberFieldProps = NumberFieldInputProps | NumberFieldRadioProps | NumberFieldSliderProps;
|
|
10
|
+
|
|
11
|
+
export const NumberField = (props: NumberFieldProps) => {
|
|
12
|
+
return match(props)
|
|
13
|
+
.with({ variant: 'input' }, (props) => <NumberFieldInput {...props} />)
|
|
14
|
+
.with({ variant: 'slider' }, (props) => <NumberFieldSlider {...props} />)
|
|
15
|
+
.with({ variant: 'radio' }, (props) => <NumberFieldRadio {...props} />)
|
|
16
|
+
.exhaustive();
|
|
17
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';
|
|
4
|
+
import type { Simplify } from 'type-fest';
|
|
5
|
+
|
|
6
|
+
import { Input } from '../../Input/Input.js';
|
|
7
|
+
import { Label } from '../../Label/Label.js';
|
|
8
|
+
import { FieldGroup } from '../FieldGroup/FieldGroup.js';
|
|
9
|
+
|
|
10
|
+
import type { BaseFieldComponentProps } from '../types.js';
|
|
11
|
+
|
|
12
|
+
export type NumberFieldInputProps = Simplify<
|
|
13
|
+
BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'input' }>
|
|
14
|
+
>;
|
|
15
|
+
|
|
16
|
+
export const NumberFieldInput = ({
|
|
17
|
+
description,
|
|
18
|
+
error,
|
|
19
|
+
label,
|
|
20
|
+
max,
|
|
21
|
+
min,
|
|
22
|
+
name,
|
|
23
|
+
setValue,
|
|
24
|
+
value
|
|
25
|
+
}: NumberFieldInputProps) => {
|
|
26
|
+
const handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {
|
|
27
|
+
const newValue = parseFloat(event.target.value);
|
|
28
|
+
if (Number.isNaN(newValue)) {
|
|
29
|
+
setValue(undefined);
|
|
30
|
+
} else if (newValue >= (min ?? -Infinity) && newValue <= (max ?? Infinity)) {
|
|
31
|
+
setValue(newValue);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
return (
|
|
35
|
+
<FieldGroup>
|
|
36
|
+
<FieldGroup.Row>
|
|
37
|
+
<Label>{label}</Label>
|
|
38
|
+
<FieldGroup.Description description={description} />
|
|
39
|
+
</FieldGroup.Row>
|
|
40
|
+
<Input max={max} min={min} name={name} type="text" value={value ?? ''} onChange={handleChange} />
|
|
41
|
+
<FieldGroup.Error error={error} />
|
|
42
|
+
</FieldGroup>
|
|
43
|
+
);
|
|
44
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';
|
|
4
|
+
import type { Simplify } from 'type-fest';
|
|
5
|
+
|
|
6
|
+
import { cn } from '../../../utils.js';
|
|
7
|
+
import { Label } from '../../Label/Label.js';
|
|
8
|
+
import { RadioGroup } from '../../RadioGroup/RadioGroup.js';
|
|
9
|
+
import { FieldGroup } from '../FieldGroup/FieldGroup.js';
|
|
10
|
+
|
|
11
|
+
import type { BaseFieldComponentProps } from '../types.js';
|
|
12
|
+
|
|
13
|
+
export type NumberFieldRadioProps = Simplify<
|
|
14
|
+
BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'radio' }>
|
|
15
|
+
>;
|
|
16
|
+
|
|
17
|
+
export const NumberFieldRadio = ({
|
|
18
|
+
description,
|
|
19
|
+
error,
|
|
20
|
+
label,
|
|
21
|
+
name,
|
|
22
|
+
options,
|
|
23
|
+
setValue,
|
|
24
|
+
value
|
|
25
|
+
}: NumberFieldRadioProps) => {
|
|
26
|
+
const optionsCount = Object.keys(options).length;
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<FieldGroup>
|
|
30
|
+
<FieldGroup.Row>
|
|
31
|
+
<Label>{label}</Label>
|
|
32
|
+
<FieldGroup.Description description={description} />
|
|
33
|
+
</FieldGroup.Row>
|
|
34
|
+
<RadioGroup
|
|
35
|
+
className={cn(
|
|
36
|
+
'flex',
|
|
37
|
+
optionsCount > 5 ? 'flex-col' : 'flex-col @3xl:flex-row @3xl:items-center @3xl:justify-between'
|
|
38
|
+
)}
|
|
39
|
+
name={name}
|
|
40
|
+
value={value?.toString() ?? ''}
|
|
41
|
+
onValueChange={(value) => setValue(parseInt(value))}
|
|
42
|
+
>
|
|
43
|
+
{Object.keys(options)
|
|
44
|
+
.map((val) => parseInt(val))
|
|
45
|
+
.toSorted((a, b) => a - b)
|
|
46
|
+
.map((key) => (
|
|
47
|
+
<div className="flex items-center gap-2" key={key}>
|
|
48
|
+
<RadioGroup.Item id={`${name}-${key}`} value={key.toString()} />
|
|
49
|
+
<Label className="font-normal" htmlFor={`${name}-${key}`}>
|
|
50
|
+
{options[key]}
|
|
51
|
+
</Label>
|
|
52
|
+
</div>
|
|
53
|
+
))}
|
|
54
|
+
</RadioGroup>
|
|
55
|
+
<FieldGroup.Error error={error} />
|
|
56
|
+
</FieldGroup>
|
|
57
|
+
);
|
|
58
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { NumberFormField } from '@douglasneuroinformatics/libui-form-types';
|
|
4
|
+
import type { Simplify } from 'type-fest';
|
|
5
|
+
|
|
6
|
+
import { Label } from '../../Label/Label.js';
|
|
7
|
+
import { Slider } from '../../Slider/Slider.js';
|
|
8
|
+
import { FieldGroup } from '../FieldGroup/FieldGroup.js';
|
|
9
|
+
|
|
10
|
+
import type { BaseFieldComponentProps } from '../types.js';
|
|
11
|
+
|
|
12
|
+
export type NumberFieldSliderProps = Simplify<
|
|
13
|
+
BaseFieldComponentProps<number> & Extract<NumberFormField, { variant: 'slider' }>
|
|
14
|
+
>;
|
|
15
|
+
|
|
16
|
+
export const NumberFieldSlider = ({
|
|
17
|
+
description,
|
|
18
|
+
error,
|
|
19
|
+
label,
|
|
20
|
+
max,
|
|
21
|
+
min,
|
|
22
|
+
name,
|
|
23
|
+
setValue,
|
|
24
|
+
value
|
|
25
|
+
}: NumberFieldSliderProps) => {
|
|
26
|
+
return (
|
|
27
|
+
<FieldGroup>
|
|
28
|
+
<FieldGroup.Row>
|
|
29
|
+
<Label>{label}</Label>
|
|
30
|
+
<FieldGroup.Description description={description} />
|
|
31
|
+
</FieldGroup.Row>
|
|
32
|
+
<FieldGroup.Row>
|
|
33
|
+
<Slider max={max} min={min} name={name} value={[value ?? 0]} onValueChange={([value]) => setValue(value)} />
|
|
34
|
+
<span className="flex h-full w-8 items-center justify-center text-sm text-muted-foreground">
|
|
35
|
+
{value ?? 'NA'}
|
|
36
|
+
</span>
|
|
37
|
+
</FieldGroup.Row>
|
|
38
|
+
<FieldGroup.Error error={error} />
|
|
39
|
+
</FieldGroup>
|
|
40
|
+
);
|
|
41
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
NumberRecordFieldValue,
|
|
5
|
+
NumberRecordFormField,
|
|
6
|
+
RequiredFieldValue
|
|
7
|
+
} from '@douglasneuroinformatics/libui-form-types';
|
|
8
|
+
import type { Simplify } from 'type-fest';
|
|
9
|
+
|
|
10
|
+
import { Heading } from '../Heading/Heading.js';
|
|
11
|
+
import { NumberField } from './NumberField/NumberField.js';
|
|
12
|
+
|
|
13
|
+
import type { BaseFieldComponentProps } from './types.js';
|
|
14
|
+
|
|
15
|
+
export type NumberRecordFieldProps<T extends NumberRecordFieldValue = NumberRecordFieldValue> = Simplify<
|
|
16
|
+
BaseFieldComponentProps<NumberRecordFieldValue> & NumberRecordFormField<RequiredFieldValue<T>>
|
|
17
|
+
>;
|
|
18
|
+
|
|
19
|
+
export const NumberRecordField = <T extends NumberRecordFieldValue = NumberRecordFieldValue>({
|
|
20
|
+
error: recordError,
|
|
21
|
+
items,
|
|
22
|
+
label,
|
|
23
|
+
options,
|
|
24
|
+
setError: setRecordError,
|
|
25
|
+
setValue: setRecordValue,
|
|
26
|
+
value: recordValue
|
|
27
|
+
}: NumberRecordFieldProps<T>) => {
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
setRecordValue({});
|
|
30
|
+
}, [options]);
|
|
31
|
+
|
|
32
|
+
if (!recordValue) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<div className="space-y-4">
|
|
38
|
+
<Heading variant="h5">{label}</Heading>
|
|
39
|
+
<div className="space-y-6">
|
|
40
|
+
{Object.keys(items).map((name) => {
|
|
41
|
+
const item = items[name];
|
|
42
|
+
return (
|
|
43
|
+
<NumberField
|
|
44
|
+
error={recordError?.[name]}
|
|
45
|
+
key={name}
|
|
46
|
+
kind="number"
|
|
47
|
+
name={name}
|
|
48
|
+
options={options}
|
|
49
|
+
setError={(error) => setRecordError({ ...recordError, [name]: error })}
|
|
50
|
+
setValue={(value) => setRecordValue({ ...recordValue, [name]: value })}
|
|
51
|
+
value={recordValue?.[name]}
|
|
52
|
+
variant="radio"
|
|
53
|
+
{...item}
|
|
54
|
+
/>
|
|
55
|
+
);
|
|
56
|
+
})}
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import React, { memo, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
import type { RecordArrayFieldValue, RecordArrayFormField } from '@douglasneuroinformatics/libui-form-types';
|
|
4
|
+
import { MinusCircleIcon, PlusCircleIcon } from 'lucide-react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
import type { Simplify } from 'type-fest';
|
|
7
|
+
|
|
8
|
+
import { Button } from '../Button/Button.js';
|
|
9
|
+
import { Heading } from '../Heading/Heading.js';
|
|
10
|
+
import { Label } from '../Label/Label.js';
|
|
11
|
+
import { ScalarField } from './ScalarField.js';
|
|
12
|
+
|
|
13
|
+
import type { BaseFieldComponentProps } from './types.js';
|
|
14
|
+
|
|
15
|
+
export type RecordArrayFieldProps = Simplify<BaseFieldComponentProps<RecordArrayFieldValue> & RecordArrayFormField>;
|
|
16
|
+
|
|
17
|
+
export const RecordArrayField = memo(function RecordArrayField({
|
|
18
|
+
error: arrayError,
|
|
19
|
+
fieldset,
|
|
20
|
+
label,
|
|
21
|
+
setError: setArrayError,
|
|
22
|
+
setValue: setArrayValue,
|
|
23
|
+
value: arrayValue
|
|
24
|
+
}: RecordArrayFieldProps) {
|
|
25
|
+
const { t } = useTranslation('libui');
|
|
26
|
+
|
|
27
|
+
const createNewRecord = () => Object.fromEntries(Object.keys(fieldset).map((fieldName) => [fieldName, undefined]));
|
|
28
|
+
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
setArrayValue([createNewRecord()]);
|
|
31
|
+
}, [fieldset]);
|
|
32
|
+
|
|
33
|
+
if (!arrayValue) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Creates a new object with all values mapped to null and appends it to the previous arrayValue
|
|
38
|
+
const appendField = () => {
|
|
39
|
+
setArrayValue([...arrayValue, createNewRecord()]);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const removeField = () => {
|
|
43
|
+
if (arrayValue.length > 1) {
|
|
44
|
+
setArrayValue(arrayValue.slice(0, arrayValue.length - 1));
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<div className="space-y-4">
|
|
50
|
+
<Heading variant="h5">{label}</Heading>
|
|
51
|
+
<div className="space-y-6">
|
|
52
|
+
{arrayValue.map((fields, i) => (
|
|
53
|
+
<div className="space-y-4" key={i}>
|
|
54
|
+
<Label className="font-semibold italic">{label + ' ' + (i + 1)}</Label>
|
|
55
|
+
{Object.keys(fields).map((name) => {
|
|
56
|
+
const field = fieldset[name];
|
|
57
|
+
const fieldProps = field?.kind === 'dynamic' ? field.render(fields) : field;
|
|
58
|
+
if (!fieldProps) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return (
|
|
62
|
+
<ScalarField
|
|
63
|
+
error={arrayError?.[i]?.[name]}
|
|
64
|
+
field={fieldProps}
|
|
65
|
+
key={name}
|
|
66
|
+
name={name}
|
|
67
|
+
setError={(error) => {
|
|
68
|
+
const newArrayError = arrayError ? [...arrayError] : [];
|
|
69
|
+
if (!newArrayError[i]) {
|
|
70
|
+
newArrayError[i] = {};
|
|
71
|
+
}
|
|
72
|
+
newArrayError[i][name] = error;
|
|
73
|
+
setArrayError(newArrayError);
|
|
74
|
+
}}
|
|
75
|
+
setValue={(value) => {
|
|
76
|
+
const newArrayValue = [...arrayValue];
|
|
77
|
+
newArrayValue[i][name] = value;
|
|
78
|
+
setArrayValue(newArrayValue);
|
|
79
|
+
}}
|
|
80
|
+
value={arrayValue?.[i]?.[name]}
|
|
81
|
+
/>
|
|
82
|
+
);
|
|
83
|
+
})}
|
|
84
|
+
</div>
|
|
85
|
+
))}
|
|
86
|
+
</div>
|
|
87
|
+
<div className="flex gap-3">
|
|
88
|
+
<Button type="button" variant="outline" onClick={appendField}>
|
|
89
|
+
{t('form.append')}
|
|
90
|
+
<PlusCircleIcon className="ml-2" />
|
|
91
|
+
</Button>
|
|
92
|
+
<Button type="button" variant="outline" onClick={removeField}>
|
|
93
|
+
{t('form.remove')}
|
|
94
|
+
<MinusCircleIcon className="ml-2" />
|
|
95
|
+
</Button>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
);
|
|
99
|
+
});
|