@aleph-alpha/ui-library 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -3
- package/config.d.ts +185 -1
- package/config.js +549 -6
- package/dist/system/index.d.ts +1788 -407
- package/dist/system/lib.js +48817 -24028
- package/package.json +3 -3
- package/src/__tests__/test-utils.ts +46 -0
- package/src/{primitives → components}/UiAccordion/UiAccordion.stories.ts +26 -2
- package/src/{primitives → components}/UiAccordion/UiAccordion.vue +1 -1
- package/src/{primitives → components}/UiAccordion/UiAccordionContent.vue +1 -1
- package/src/{primitives → components}/UiAccordion/UiAccordionItem.vue +1 -1
- package/src/{primitives → components}/UiAccordion/UiAccordionTrigger.vue +1 -1
- package/src/{primitives → components}/UiAccordion/types.ts +0 -1
- package/src/{primitives → components}/UiAlert/UiAlert.stories.ts +9 -9
- package/src/{primitives → components}/UiAlert/UiAlert.vue +1 -1
- package/src/{primitives → components}/UiAlert/UiAlertDescription.vue +1 -1
- package/src/{primitives → components}/UiAlert/UiAlertTitle.vue +1 -1
- package/src/{primitives → components}/UiAlert/types.ts +2 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialog.stories.ts +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialog.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogAction.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogCancel.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogContent.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogDescription.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogFooter.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogHeader.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogTitle.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/UiAlertDialogTrigger.vue +1 -1
- package/src/{primitives → components}/UiAlertDialog/index.ts +1 -0
- package/src/{primitives → components}/UiAlertDialog/types.ts +1 -1
- package/src/{primitives → components}/UiAvatar/UiAvatar.stories.ts +1 -1
- package/src/{primitives → components}/UiAvatar/UiAvatar.vue +1 -1
- package/src/{primitives → components}/UiAvatar/UiAvatarFallback.vue +1 -1
- package/src/{primitives → components}/UiAvatar/UiAvatarImage.vue +1 -1
- package/src/{primitives → components}/UiAvatar/index.ts +1 -0
- package/src/{primitives → components}/UiAvatar/types.ts +4 -1
- package/src/{primitives → components}/UiBadge/UiBadge.stories.ts +10 -10
- package/src/{primitives → components}/UiBadge/UiBadge.vue +1 -1
- package/src/{primitives → components}/UiBadge/__tests__/UiBadge.test.ts +3 -13
- package/src/{primitives → components}/UiBadge/types.ts +0 -1
- package/src/{primitives → components}/UiButton/UiButton.stories.ts +13 -13
- package/src/{primitives → components}/UiButton/UiButton.vue +2 -2
- package/src/{primitives → components}/UiButton/__tests__/UiButton.test.ts +1 -10
- package/src/{primitives → components}/UiButton/types.ts +0 -1
- package/src/{primitives → components}/UiCalendar/UiCalendar.stories.ts +5 -5
- package/src/{primitives → components}/UiCalendar/UiCalendar.vue +1 -1
- package/src/{primitives → components}/UiCalendar/types.ts +0 -1
- package/src/{primitives → components}/UiCard/UiCard.stories.ts +1 -1
- package/src/{primitives → components}/UiCard/UiCard.vue +1 -1
- package/src/{primitives → components}/UiCard/UiCardAction.vue +1 -1
- package/src/{primitives → components}/UiCard/UiCardContent.vue +1 -1
- package/src/{primitives → components}/UiCard/UiCardDescription.vue +1 -1
- package/src/{primitives → components}/UiCard/UiCardFooter.vue +1 -1
- package/src/{primitives → components}/UiCard/UiCardHeader.vue +1 -1
- package/src/{primitives → components}/UiCard/UiCardTitle.vue +1 -1
- package/src/components/UiCard/index.ts +10 -0
- package/src/{primitives → components}/UiCard/types.ts +0 -1
- package/src/{primitives → components}/UiCheckbox/UiCheckbox.stories.ts +1 -1
- package/src/{primitives → components}/UiCheckbox/UiCheckbox.vue +1 -1
- package/src/{primitives → components}/UiCheckbox/types.ts +0 -1
- package/src/{primitives → components}/UiDrawer/UiDrawer.stories.ts +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawer.vue +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawerClose.vue +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawerContent.vue +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawerDescription.vue +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawerFooter.vue +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawerHeader.vue +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawerTitle.vue +1 -1
- package/src/{primitives → components}/UiDrawer/UiDrawerTrigger.vue +1 -1
- package/src/{primitives → components}/UiDrawer/index.ts +1 -0
- package/src/{primitives → components}/UiDrawer/types.ts +31 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenu.stories.ts +3 -3
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenu.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuCheckboxItem.vue +2 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuContent.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuGroup.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuItem.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuLabel.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuRadioGroup.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuRadioItem.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSeparator.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuShortcut.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSub.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSubContent.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSubTrigger.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuTrigger.vue +1 -1
- package/src/{primitives → components}/UiDropdownMenu/types.ts +61 -1
- package/src/components/UiEmpty/UiEmpty.stories.ts +240 -0
- package/src/components/UiEmpty/UiEmpty.vue +35 -0
- package/src/components/UiEmpty/__tests__/UiEmpty.test.ts +67 -0
- package/src/components/UiEmpty/index.ts +2 -0
- package/src/components/UiEmpty/types.ts +26 -0
- package/src/{primitives → components}/UiField/UiField.stories.ts +1 -2
- package/src/{primitives → components}/UiField/UiField.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldContent.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldDescription.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldError.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldGroup.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldLabel.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldLegend.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldSeparator.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldSet.vue +1 -1
- package/src/{primitives → components}/UiField/UiFieldTitle.vue +1 -1
- package/src/{primitives → components}/UiField/index.ts +1 -0
- package/src/{primitives → components}/UiField/types.ts +7 -2
- package/src/components/UiIcon/UiIcon.stories.ts +140 -0
- package/src/components/UiIcon/UiIcon.vue +67 -0
- package/src/components/UiIcon/__tests__/UiIcon.test.ts +53 -0
- package/src/{primitives → components}/UiIcon/index.ts +1 -0
- package/src/components/UiIcon/types.ts +33 -0
- package/src/{primitives → components}/UiIconButton/UiIconButton.stories.ts +37 -37
- package/src/{primitives → components}/UiIconButton/UiIconButton.vue +2 -2
- package/src/{primitives → components}/UiIconButton/__tests__/UiIconButton.test.ts +2 -9
- package/src/{primitives → components}/UiIconButton/types.ts +0 -1
- package/src/{primitives → components}/UiInput/UiInput.stories.ts +1 -1
- package/src/{primitives → components}/UiInput/UiInput.vue +1 -1
- package/src/{primitives → components}/UiInput/types.ts +0 -1
- package/src/components/UiItem/UiItem.stories.ts +1029 -0
- package/src/components/UiItem/UiItem.vue +20 -0
- package/src/components/UiItem/UiItemMedia.vue +18 -0
- package/src/components/UiItem/__tests__/UiItem.test.ts +446 -0
- package/src/components/UiItem/constants.ts +13 -0
- package/src/components/UiItem/index.ts +15 -0
- package/src/components/UiItem/types.ts +114 -0
- package/src/components/UiKbd/UiKbd.stories.ts +546 -0
- package/src/components/UiKbd/UiKbd.vue +57 -0
- package/src/components/UiKbd/UiKbdGroup.vue +13 -0
- package/src/components/UiKbd/__tests__/UiKbd.test.ts +46 -0
- package/src/components/UiKbd/index.ts +3 -0
- package/src/components/UiKbd/types.ts +25 -0
- package/src/components/UiLabel/UiLabel.stories.ts +192 -0
- package/src/components/UiLabel/UiLabel.vue +16 -0
- package/src/components/UiLabel/__tests__/UiLabel.test.ts +43 -0
- package/src/components/UiLabel/index.ts +2 -0
- package/src/components/UiLabel/types.ts +15 -0
- package/src/components/UiListbox/UiListbox.stories.ts +607 -0
- package/src/components/UiListbox/UiListbox.vue +33 -0
- package/src/components/UiListbox/UiListboxContent.vue +13 -0
- package/src/components/UiListbox/UiListboxFilter.vue +16 -0
- package/src/components/UiListbox/UiListboxGroup.vue +13 -0
- package/src/components/UiListbox/UiListboxGroupLabel.vue +13 -0
- package/src/components/UiListbox/UiListboxItem.vue +21 -0
- package/src/components/UiListbox/UiListboxItemIndicator.vue +13 -0
- package/src/components/UiListbox/__tests__/UiListbox.test.ts +42 -0
- package/src/components/UiListbox/index.ts +8 -0
- package/src/components/UiListbox/types.ts +109 -0
- package/src/{primitives → components}/UiPopover/UiPopover.stories.ts +17 -1
- package/src/{primitives → components}/UiPopover/UiPopover.vue +1 -1
- package/src/{primitives → components}/UiPopover/UiPopoverContent.vue +1 -1
- package/src/{primitives → components}/UiPopover/UiPopoverTrigger.vue +1 -1
- package/src/{primitives → components}/UiPopover/index.ts +1 -0
- package/src/{primitives → components}/UiPopover/types.ts +13 -1
- package/src/{primitives → components}/UiProgress/UiProgress.stories.ts +1 -1
- package/src/{primitives → components}/UiProgress/UiProgress.vue +1 -1
- package/src/{primitives → components}/UiProgress/types.ts +3 -4
- package/src/{primitives → components}/UiRadioGroup/UiRadioGroup.stories.ts +1 -1
- package/src/{primitives → components}/UiRadioGroup/UiRadioGroup.vue +1 -1
- package/src/{primitives → components}/UiRadioGroup/UiRadioGroupItem.vue +1 -1
- package/src/{primitives → components}/UiRadioGroup/types.ts +6 -1
- package/src/{primitives → components}/UiRangeCalendar/UiRangeCalendar.stories.ts +1 -1
- package/src/{primitives → components}/UiRangeCalendar/UiRangeCalendar.vue +1 -1
- package/src/{primitives → components}/UiRangeCalendar/types.ts +0 -1
- package/src/{primitives → components}/UiSelect/UiSelect.stories.ts +20 -1
- package/src/{primitives → components}/UiSelect/UiSelect.vue +1 -1
- package/src/{primitives → components}/UiSelect/UiSelectContent.vue +1 -1
- package/src/{primitives → components}/UiSelect/UiSelectGroup.vue +1 -1
- package/src/{primitives → components}/UiSelect/UiSelectItem.vue +1 -1
- package/src/{primitives → components}/UiSelect/UiSelectLabel.vue +1 -1
- package/src/{primitives → components}/UiSelect/UiSelectSeparator.vue +1 -1
- package/src/{primitives → components}/UiSelect/UiSelectTrigger.vue +1 -1
- package/src/{primitives → components}/UiSelect/UiSelectValue.vue +1 -1
- package/src/{primitives → components}/UiSelect/types.ts +0 -1
- package/src/components/UiSeparator/UiSeparator.stories.ts +177 -0
- package/src/components/UiSeparator/UiSeparator.vue +17 -0
- package/src/components/UiSeparator/__tests__/UiSeparator.test.ts +34 -0
- package/src/components/UiSeparator/index.ts +2 -0
- package/src/components/UiSeparator/types.ts +22 -0
- package/src/components/UiSkeleton/UiSkeleton.stories.ts +247 -0
- package/src/components/UiSkeleton/UiSkeleton.vue +24 -0
- package/src/components/UiSkeleton/__tests__/UiSkeleton.test.ts +47 -0
- package/src/components/UiSkeleton/index.ts +2 -0
- package/src/components/UiSkeleton/types.ts +25 -0
- package/src/{primitives → components}/UiSlider/UiSlider.stories.ts +1 -1
- package/src/{primitives → components}/UiSlider/UiSlider.vue +1 -1
- package/src/{primitives → components}/UiSlider/__tests__/UiSlider.test.ts +1 -1
- package/src/{primitives → components}/UiSlider/index.ts +1 -0
- package/src/{primitives → components}/UiSlider/types.ts +0 -1
- package/src/{primitives → components}/UiSpinner/UiSpinner.stories.ts +1 -1
- package/src/{primitives → components}/UiSpinner/UiSpinner.vue +1 -1
- package/src/{primitives → components}/UiSpinner/types.ts +0 -1
- package/src/{primitives → components}/UiSwitch/UiSwitch.stories.ts +1 -1
- package/src/{primitives → components}/UiSwitch/UiSwitch.vue +1 -1
- package/src/{primitives → components}/UiSwitch/types.ts +0 -1
- package/src/{primitives → components}/UiTable/UiTable.stories.ts +3 -3
- package/src/{primitives → components}/UiTable/UiTable.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableBody.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableCaption.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableCell.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableEmpty.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableFooter.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableHead.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableHeader.vue +1 -1
- package/src/{primitives → components}/UiTable/UiTableRow.vue +1 -1
- package/src/{primitives → components}/UiTable/types.ts +0 -1
- package/src/{primitives → components}/UiTabs/UiTabs.stories.ts +22 -3
- package/src/{primitives → components}/UiTabs/UiTabs.vue +1 -1
- package/src/{primitives → components}/UiTabs/UiTabsContent.vue +1 -1
- package/src/{primitives → components}/UiTabs/UiTabsList.vue +1 -1
- package/src/{primitives → components}/UiTabs/UiTabsTrigger.vue +1 -1
- package/src/{primitives → components}/UiTabs/types.ts +0 -1
- package/src/components/UiTagsInput/UiTagsInput.stories.ts +538 -0
- package/src/components/UiTagsInput/UiTagsInput.vue +20 -0
- package/src/components/UiTagsInput/UiTagsInputInput.vue +14 -0
- package/src/components/UiTagsInput/UiTagsInputItem.vue +16 -0
- package/src/components/UiTagsInput/UiTagsInputItemDelete.vue +13 -0
- package/src/components/UiTagsInput/UiTagsInputItemText.vue +11 -0
- package/src/components/UiTagsInput/__tests__/UiTagsInput.test.ts +44 -0
- package/src/components/UiTagsInput/index.ts +6 -0
- package/src/components/UiTagsInput/types.ts +51 -0
- package/src/{primitives → components}/UiTextarea/UiTextarea.stories.ts +1 -1
- package/src/{primitives → components}/UiTextarea/UiTextarea.vue +1 -1
- package/src/{primitives → components}/UiTextarea/types.ts +0 -1
- package/src/components/UiToggle/UiToggle.stories.ts +370 -0
- package/src/components/UiToggle/UiToggle.vue +28 -0
- package/src/components/UiToggle/__tests__/UiToggle.test.ts +62 -0
- package/src/components/UiToggle/index.ts +2 -0
- package/src/components/UiToggle/types.ts +34 -0
- package/src/components/UiToggleGroup/UiToggleGroup.stories.ts +441 -0
- package/src/components/UiToggleGroup/UiToggleGroup.vue +52 -0
- package/src/components/UiToggleGroup/UiToggleGroupItem.vue +21 -0
- package/src/components/UiToggleGroup/__tests__/UiToggleGroup.test.ts +394 -0
- package/src/components/UiToggleGroup/index.ts +3 -0
- package/src/components/UiToggleGroup/types.ts +132 -0
- package/src/{primitives → components}/UiTooltip/UiTooltip.stories.ts +42 -42
- package/src/{primitives → components}/UiTooltip/UiTooltip.vue +1 -1
- package/src/components/UiTooltip/index.ts +10 -0
- package/src/{primitives → components}/UiTooltip/types.ts +0 -1
- package/src/{primitives/shadcn → components/core}/accordion/Accordion.vue +1 -1
- package/src/{primitives/shadcn → components/core}/accordion/AccordionItem.vue +1 -1
- package/src/{primitives/shadcn → components/core}/accordion/AccordionTrigger.vue +5 -4
- package/src/{primitives/shadcn → components/core}/alert/index.ts +2 -2
- package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogAction.vue +1 -1
- package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogCancel.vue +1 -1
- package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogContent.vue +2 -2
- package/src/{primitives/shadcn → components/core}/badge/index.ts +1 -1
- package/src/{primitives/shadcn → components/core}/button/index.ts +4 -4
- package/src/{primitives/shadcn → components/core}/calendar/Calendar.vue +1 -1
- package/src/{primitives/shadcn → components/core}/calendar/CalendarCellTrigger.vue +3 -3
- package/src/{primitives/shadcn → components/core}/calendar/CalendarNextButton.vue +3 -3
- package/src/{primitives/shadcn → components/core}/calendar/CalendarPrevButton.vue +3 -3
- package/src/{primitives/shadcn → components/core}/card/Card.vue +1 -1
- package/src/{primitives/shadcn → components/core}/checkbox/Checkbox.vue +3 -3
- package/src/{primitives/shadcn → components/core}/drawer/DrawerContent.vue +2 -2
- package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuCheckboxItem.vue +3 -3
- package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuItem.vue +1 -1
- package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
- package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSubTrigger.vue +3 -3
- package/src/{primitives/shadcn → components/core}/field/FieldError.vue +1 -1
- package/src/{primitives/shadcn → components/core}/field/FieldLabel.vue +1 -1
- package/src/{primitives/shadcn → components/core}/field/FieldSeparator.vue +1 -1
- package/src/{primitives/shadcn → components/core}/index.ts +1 -0
- package/src/{primitives/shadcn → components/core}/input/Input.vue +1 -1
- package/src/components/core/item/Item.vue +33 -0
- package/src/components/core/item/ItemActions.vue +14 -0
- package/src/components/core/item/ItemContent.vue +17 -0
- package/src/components/core/item/ItemDescription.vue +23 -0
- package/src/components/core/item/ItemFooter.vue +17 -0
- package/src/components/core/item/ItemGroup.vue +18 -0
- package/src/components/core/item/ItemHeader.vue +17 -0
- package/src/components/core/item/ItemMedia.vue +21 -0
- package/src/components/core/item/ItemSeparator.vue +12 -0
- package/src/components/core/item/ItemTitle.vue +17 -0
- package/src/components/core/item/index.ts +53 -0
- package/src/components/core/kbd/Kbd.vue +20 -0
- package/src/components/core/kbd/KbdGroup.vue +12 -0
- package/src/components/core/kbd/index.ts +2 -0
- package/src/components/core/listbox/Listbox.vue +23 -0
- package/src/components/core/listbox/ListboxContent.vue +26 -0
- package/src/components/core/listbox/ListboxFilter.vue +30 -0
- package/src/components/core/listbox/ListboxGroup.vue +26 -0
- package/src/components/core/listbox/ListboxGroupLabel.vue +26 -0
- package/src/components/core/listbox/ListboxItem.vue +32 -0
- package/src/components/core/listbox/ListboxItemIndicator.vue +40 -0
- package/src/components/core/listbox/index.ts +7 -0
- package/src/{primitives/shadcn → components/core}/native-select/NativeSelect.vue +6 -5
- package/src/{primitives/shadcn → components/core}/radio-group/RadioGroupItem.vue +3 -4
- package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendar.vue +1 -1
- package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarCellTrigger.vue +8 -6
- package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarHeading.vue +1 -1
- package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarNextButton.vue +3 -3
- package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarPrevButton.vue +3 -3
- package/src/{primitives/shadcn → components/core}/select/Select.vue +1 -1
- package/src/{primitives/shadcn → components/core}/select/SelectItem.vue +3 -3
- package/src/{primitives/shadcn → components/core}/select/SelectScrollDownButton.vue +2 -2
- package/src/{primitives/shadcn → components/core}/select/SelectScrollUpButton.vue +2 -2
- package/src/{primitives/shadcn → components/core}/select/SelectTrigger.vue +3 -3
- package/src/components/core/skeleton/Skeleton.vue +10 -0
- package/src/components/core/skeleton/index.ts +1 -0
- package/src/{primitives/shadcn → components/core}/spinner/Spinner.vue +5 -4
- package/src/{primitives/shadcn → components/core}/switch/Switch.vue +1 -1
- package/src/{primitives/shadcn → components/core}/table/TableRow.vue +4 -1
- package/src/{primitives/shadcn → components/core}/tabs/Tabs.vue +1 -1
- package/src/components/core/tabs/TabsTrigger.vue +28 -0
- package/src/components/core/tags-input/TagsInput.vue +33 -0
- package/src/components/core/tags-input/TagsInputInput.vue +24 -0
- package/src/components/core/tags-input/TagsInputItem.vue +31 -0
- package/src/components/core/tags-input/TagsInputItemDelete.vue +46 -0
- package/src/components/core/tags-input/TagsInputItemText.vue +24 -0
- package/src/components/core/tags-input/index.ts +5 -0
- package/src/{primitives/shadcn → components/core}/textarea/Textarea.vue +1 -1
- package/src/components/core/toggle/Toggle.vue +34 -0
- package/src/components/core/toggle/index.ts +26 -0
- package/src/components/core/toggle-group/ToggleGroup.vue +38 -0
- package/src/components/core/toggle-group/ToggleGroupItem.vue +37 -0
- package/src/components/core/toggle-group/context.ts +11 -0
- package/src/components/core/toggle-group/index.ts +28 -0
- package/src/{primitives/shadcn → components/core}/tooltip/TooltipContent.vue +1 -1
- package/src/{primitives → components}/index.ts +13 -5
- package/src/index.ts +6 -10
- package/src/{compositions → patterns}/UiDataTable/UiDataTable.stories.ts +13 -11
- package/src/{compositions → patterns}/UiDataTable/UiDataTable.vue +2 -2
- package/src/{compositions → patterns}/UiDataTable/UiDataTableColumnHeader.vue +27 -28
- package/src/{compositions → patterns}/UiDataTable/UiDataTablePagination.vue +10 -38
- package/src/{compositions → patterns}/UiDataTable/UiDataTableToolbar.vue +4 -29
- package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTable.test.ts +1 -1
- package/src/patterns/UiDataTable/types.ts +116 -0
- package/src/{compositions → patterns}/UiDatePicker/UiDatePicker.stories.ts +1 -1
- package/src/{compositions → patterns}/UiDatePicker/UiDatePicker.vue +7 -7
- package/src/{compositions → patterns}/UiDatePicker/types.ts +0 -1
- package/src/{foundations → patterns}/UiPlaceholder/types.ts +0 -1
- package/src/patterns/index.ts +7 -0
- package/src/templates/UiTemplatePlaceholder/types.ts +0 -1
- package/src/templates/index.ts +4 -5
- package/src/theme/Background.stories.ts +225 -0
- package/src/theme/Border.stories.ts +158 -0
- package/src/theme/Extended.stories.ts +268 -0
- package/src/theme/Flex.stories.ts +313 -0
- package/src/theme/Grid.stories.ts +302 -0
- package/src/theme/Overlay.stories.ts +124 -0
- package/src/theme/Theme.stories.ts +309 -0
- package/src/theme/Typography.stories.ts +230 -0
- package/tokens.json +11252 -0
- package/src/compositions/UiCompositionPlaceholder/UiCompositionPlaceholder.vue +0 -9
- package/src/compositions/UiCompositionPlaceholder/index.ts +0 -1
- package/src/compositions/UiCompositionPlaceholder/types.ts +0 -8
- package/src/compositions/UiDataTable/types.ts +0 -39
- package/src/compositions/index.ts +0 -8
- package/src/foundations/index.ts +0 -6
- package/src/primitives/UiCard/index.ts +0 -7
- package/src/primitives/UiIcon/UiIcon.stories.ts +0 -95
- package/src/primitives/UiIcon/UiIcon.vue +0 -14
- package/src/primitives/UiIcon/__tests__/UiIcon.test.ts +0 -24
- package/src/primitives/UiIcon/types.ts +0 -23
- package/src/primitives/UiTooltip/index.ts +0 -2
- package/src/primitives/shadcn/tabs/TabsTrigger.vue +0 -28
- /package/src/{primitives → components}/UiAccordion/__tests__/UiAccordion.test.ts +0 -0
- /package/src/{primitives → components}/UiAccordion/index.ts +0 -0
- /package/src/{primitives → components}/UiAlert/__tests__/UiAlert.test.ts +0 -0
- /package/src/{primitives → components}/UiAlert/constants.ts +0 -0
- /package/src/{primitives → components}/UiAlert/index.ts +0 -0
- /package/src/{primitives → components}/UiAlertDialog/__tests__/UiAlertDialog.test.ts +0 -0
- /package/src/{primitives → components}/UiAvatar/__tests__/UiAvatar.test.ts +0 -0
- /package/src/{primitives → components}/UiBadge/constants.ts +0 -0
- /package/src/{primitives → components}/UiBadge/index.ts +0 -0
- /package/src/{primitives → components}/UiButton/index.ts +0 -0
- /package/src/{primitives → components}/UiCalendar/__tests__/UiCalendar.test.ts +0 -0
- /package/src/{primitives → components}/UiCalendar/index.ts +0 -0
- /package/src/{primitives → components}/UiCard/__tests__/UiCard.test.ts +0 -0
- /package/src/{primitives → components}/UiCard/__tests__/UiCardAction.test.ts +0 -0
- /package/src/{primitives → components}/UiCard/__tests__/UiCardContent.test.ts +0 -0
- /package/src/{primitives → components}/UiCard/__tests__/UiCardDescription.test.ts +0 -0
- /package/src/{primitives → components}/UiCard/__tests__/UiCardFooter.test.ts +0 -0
- /package/src/{primitives → components}/UiCard/__tests__/UiCardHeader.test.ts +0 -0
- /package/src/{primitives → components}/UiCard/__tests__/UiCardTitle.test.ts +0 -0
- /package/src/{primitives → components}/UiCheckbox/__tests__/UiCheckbox.test.ts +0 -0
- /package/src/{primitives → components}/UiCheckbox/index.ts +0 -0
- /package/src/{primitives → components}/UiDrawer/__tests__/UiDrawer.test.ts +0 -0
- /package/src/{primitives → components}/UiDropdownMenu/__tests__/UiDropdownMenu.test.ts +0 -0
- /package/src/{primitives → components}/UiDropdownMenu/index.ts +0 -0
- /package/src/{primitives → components}/UiField/__tests__/UiFieldError.test.ts +0 -0
- /package/src/{primitives → components}/UiIconButton/index.ts +0 -0
- /package/src/{primitives → components}/UiInput/__tests__/UiInput.test.ts +0 -0
- /package/src/{primitives → components}/UiInput/index.ts +0 -0
- /package/src/{primitives → components}/UiPopover/__tests__/UiPopover.test.ts +0 -0
- /package/src/{primitives → components}/UiProgress/__tests__/UiProgress.test.ts +0 -0
- /package/src/{primitives → components}/UiProgress/index.ts +0 -0
- /package/src/{primitives → components}/UiRadioGroup/__tests__/UiRadioGroup.test.ts +0 -0
- /package/src/{primitives → components}/UiRadioGroup/index.ts +0 -0
- /package/src/{primitives → components}/UiRangeCalendar/__tests__/UiRangeCalendar.test.ts +0 -0
- /package/src/{primitives → components}/UiRangeCalendar/index.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelect.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelectContent.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelectGroup.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelectItem.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelectLabel.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelectSeparator.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelectTrigger.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/__tests__/UiSelectValue.test.ts +0 -0
- /package/src/{primitives → components}/UiSelect/index.ts +0 -0
- /package/src/{primitives → components}/UiSpinner/__tests__/UiSpinner.test.ts +0 -0
- /package/src/{primitives → components}/UiSpinner/index.ts +0 -0
- /package/src/{primitives → components}/UiSwitch/__tests__/UiSwitch.test.ts +0 -0
- /package/src/{primitives → components}/UiSwitch/index.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTable.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableBody.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableCaption.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableCell.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableEmpty.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableFooter.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableHead.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableHeader.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/__tests__/UiTableRow.test.ts +0 -0
- /package/src/{primitives → components}/UiTable/index.ts +0 -0
- /package/src/{primitives → components}/UiTabs/__tests__/UiTabs.test.ts +0 -0
- /package/src/{primitives → components}/UiTabs/index.ts +0 -0
- /package/src/{primitives → components}/UiTextarea/__tests__/UiTextarea.test.ts +0 -0
- /package/src/{primitives → components}/UiTextarea/index.ts +0 -0
- /package/src/{primitives → components}/UiTooltip/__tests__/UiTooltip.test.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/accordion/AccordionContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/accordion/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/alert/Alert.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert/AlertDescription.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert/AlertTitle.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialog.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogDescription.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogFooter.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogHeader.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogTitle.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogTrigger.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/alert-dialog/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/avatar/Avatar.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/avatar/AvatarFallback.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/avatar/AvatarImage.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/avatar/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/badge/Badge.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/button/Button.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarCell.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarGrid.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarGridBody.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarGridHead.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarGridRow.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarHeadCell.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarHeader.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/CalendarHeading.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/calendar/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/card/CardAction.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/card/CardContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/card/CardDescription.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/card/CardFooter.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/card/CardHeader.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/card/CardTitle.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/card/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/checkbox/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/Drawer.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/DrawerClose.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/DrawerDescription.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/DrawerFooter.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/DrawerHeader.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/DrawerTitle.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/DrawerTrigger.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/drawer/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenu.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuGroup.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuLabel.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuRadioGroup.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSeparator.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuShortcut.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSub.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSubContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuTrigger.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/dropdown-menu/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/field/Field.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/field/FieldContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/field/FieldDescription.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/field/FieldGroup.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/field/FieldLegend.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/field/FieldSet.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/field/FieldTitle.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/field/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/icon/Icon.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/icon/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/input/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/label/Label.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/label/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/native-select/NativeSelectOptGroup.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/native-select/NativeSelectOption.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/native-select/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/popover/Popover.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/popover/PopoverContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/popover/PopoverTrigger.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/popover/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/progress/Progress.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/progress/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/radio-group/RadioGroup.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/radio-group/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarCell.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGrid.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGridBody.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGridHead.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGridRow.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarHeadCell.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarHeader.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/range-calendar/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/select/SelectContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/select/SelectGroup.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/select/SelectItemText.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/select/SelectLabel.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/select/SelectSeparator.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/select/SelectValue.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/select/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/separator/Separator.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/separator/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/slider/Slider.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/slider/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/spinner/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/switch/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/table/Table.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/TableBody.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/TableCaption.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/TableCell.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/TableEmpty.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/TableFooter.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/TableHead.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/TableHeader.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/table/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/table/utils.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/tabs/TabsContent.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/tabs/TabsList.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/tabs/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/textarea/index.ts +0 -0
- /package/src/{primitives/shadcn → components/core}/tooltip/Tooltip.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/tooltip/TooltipProvider.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/tooltip/TooltipTrigger.vue +0 -0
- /package/src/{primitives/shadcn → components/core}/tooltip/index.ts +0 -0
- /package/src/{compositions → patterns}/UiDataTable/UiDataTable.mock.ts +0 -0
- /package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTableColumnHeader.test.ts +0 -0
- /package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTablePagination.test.ts +0 -0
- /package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTableToolbar.test.ts +0 -0
- /package/src/{compositions → patterns}/UiDataTable/constants.ts +0 -0
- /package/src/{compositions → patterns}/UiDataTable/index.ts +0 -0
- /package/src/{compositions → patterns}/UiDatePicker/__tests__/UiDatePicker.test.ts +0 -0
- /package/src/{compositions → patterns}/UiDatePicker/index.ts +0 -0
- /package/src/{foundations → patterns}/UiPlaceholder/UiPlaceholder.vue +0 -0
- /package/src/{foundations → patterns}/UiPlaceholder/index.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { DropdownMenuTrigger as ShadcnDropdownMenuTrigger } from '@/
|
|
2
|
+
import { DropdownMenuTrigger as ShadcnDropdownMenuTrigger } from '@/components/core/dropdown-menu';
|
|
3
3
|
import type { UiDropdownMenuTriggerProps } from './types';
|
|
4
4
|
|
|
5
5
|
defineOptions({
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A menu that appears on trigger click with actions and options. Use for
|
|
3
3
|
* context menus, action lists, or any menu triggered by a button.
|
|
4
|
-
*
|
|
5
4
|
* @category Overlays
|
|
6
5
|
* @useCases action menu, context menu, options list, user menu, settings menu
|
|
7
6
|
* @keywords dropdown, menu, actions, options, context, popover, list
|
|
@@ -23,6 +22,9 @@ export interface UiDropdownMenuProps {
|
|
|
23
22
|
modal?: boolean;
|
|
24
23
|
}
|
|
25
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Emits for the UiDropdownMenu component.
|
|
27
|
+
*/
|
|
26
28
|
export interface UiDropdownMenuEmits {
|
|
27
29
|
/**
|
|
28
30
|
* Event emitted when the open state changes.
|
|
@@ -30,6 +32,10 @@ export interface UiDropdownMenuEmits {
|
|
|
30
32
|
'update:open': [value: boolean];
|
|
31
33
|
}
|
|
32
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Props for the UiDropdownMenuTrigger component.
|
|
37
|
+
* The element that opens the menu when clicked.
|
|
38
|
+
*/
|
|
33
39
|
export interface UiDropdownMenuTriggerProps {
|
|
34
40
|
/**
|
|
35
41
|
* Accessible label for the trigger button.
|
|
@@ -52,6 +58,10 @@ export interface UiDropdownMenuTriggerProps {
|
|
|
52
58
|
asChild?: boolean;
|
|
53
59
|
}
|
|
54
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Props for the UiDropdownMenuContent component.
|
|
63
|
+
* The floating container for menu items.
|
|
64
|
+
*/
|
|
55
65
|
export interface UiDropdownMenuContentProps {
|
|
56
66
|
/**
|
|
57
67
|
* The preferred side of the trigger to render against when open.
|
|
@@ -72,6 +82,9 @@ export interface UiDropdownMenuContentProps {
|
|
|
72
82
|
align?: 'start' | 'center' | 'end';
|
|
73
83
|
}
|
|
74
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Emits for the UiDropdownMenuContent component.
|
|
87
|
+
*/
|
|
75
88
|
export interface UiDropdownMenuContentEmits {
|
|
76
89
|
/**
|
|
77
90
|
* Event emitted when the escape key is pressed.
|
|
@@ -80,6 +93,10 @@ export interface UiDropdownMenuContentEmits {
|
|
|
80
93
|
(e: 'escapeKeyDown', event: KeyboardEvent): void;
|
|
81
94
|
}
|
|
82
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Props for the UiDropdownMenuItem component.
|
|
98
|
+
* A clickable menu item that triggers an action.
|
|
99
|
+
*/
|
|
83
100
|
export interface UiDropdownMenuItemProps {
|
|
84
101
|
/**
|
|
85
102
|
* Visual variant of the menu item.
|
|
@@ -106,6 +123,10 @@ export interface UiDropdownMenuItemProps {
|
|
|
106
123
|
textValue?: string;
|
|
107
124
|
}
|
|
108
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Props for the UiDropdownMenuLabel component.
|
|
128
|
+
* A non-interactive label for grouping menu items.
|
|
129
|
+
*/
|
|
109
130
|
export interface UiDropdownMenuLabelProps {
|
|
110
131
|
/**
|
|
111
132
|
* Whether to add extra left padding (for items under a label).
|
|
@@ -114,6 +135,10 @@ export interface UiDropdownMenuLabelProps {
|
|
|
114
135
|
inset?: boolean;
|
|
115
136
|
}
|
|
116
137
|
|
|
138
|
+
/**
|
|
139
|
+
* Props for the UiDropdownMenuCheckboxItem component.
|
|
140
|
+
* A menu item with a checkbox for toggling options.
|
|
141
|
+
*/
|
|
117
142
|
export interface UiDropdownMenuCheckboxItemProps {
|
|
118
143
|
/**
|
|
119
144
|
* The controlled checked state of the checkbox item.
|
|
@@ -133,10 +158,18 @@ export interface UiDropdownMenuCheckboxItemProps {
|
|
|
133
158
|
textValue?: string;
|
|
134
159
|
}
|
|
135
160
|
|
|
161
|
+
/**
|
|
162
|
+
* Emits for the UiDropdownMenuCheckboxItem component.
|
|
163
|
+
*/
|
|
136
164
|
export interface UiDropdownMenuCheckboxItemEmits {
|
|
165
|
+
/** Emitted when the checked state changes. */
|
|
137
166
|
'update:checked': [value: boolean];
|
|
138
167
|
}
|
|
139
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Props for the UiDropdownMenuRadioGroup component.
|
|
171
|
+
* Container for a group of mutually exclusive radio items.
|
|
172
|
+
*/
|
|
140
173
|
export interface UiDropdownMenuRadioGroupProps {
|
|
141
174
|
/**
|
|
142
175
|
* The value of the selected radio item.
|
|
@@ -145,10 +178,18 @@ export interface UiDropdownMenuRadioGroupProps {
|
|
|
145
178
|
modelValue?: string;
|
|
146
179
|
}
|
|
147
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Emits for the UiDropdownMenuRadioGroup component.
|
|
183
|
+
*/
|
|
148
184
|
export interface UiDropdownMenuRadioGroupEmits {
|
|
185
|
+
/** Emitted when the selected radio item changes. */
|
|
149
186
|
'update:modelValue': [value: string];
|
|
150
187
|
}
|
|
151
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Props for the UiDropdownMenuRadioItem component.
|
|
191
|
+
* A radio option within a radio group.
|
|
192
|
+
*/
|
|
152
193
|
export interface UiDropdownMenuRadioItemProps {
|
|
153
194
|
/**
|
|
154
195
|
* The unique value of the radio item.
|
|
@@ -167,6 +208,10 @@ export interface UiDropdownMenuRadioItemProps {
|
|
|
167
208
|
textValue?: string;
|
|
168
209
|
}
|
|
169
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Props for the UiDropdownMenuSub component.
|
|
213
|
+
* A submenu container for nested menu items.
|
|
214
|
+
*/
|
|
170
215
|
export interface UiDropdownMenuSubProps {
|
|
171
216
|
/**
|
|
172
217
|
* The controlled open state of the submenu.
|
|
@@ -179,10 +224,18 @@ export interface UiDropdownMenuSubProps {
|
|
|
179
224
|
defaultOpen?: boolean;
|
|
180
225
|
}
|
|
181
226
|
|
|
227
|
+
/**
|
|
228
|
+
* Emits for the UiDropdownMenuSub component.
|
|
229
|
+
*/
|
|
182
230
|
export interface UiDropdownMenuSubEmits {
|
|
231
|
+
/** Emitted when the submenu open state changes. */
|
|
183
232
|
'update:open': [value: boolean];
|
|
184
233
|
}
|
|
185
234
|
|
|
235
|
+
/**
|
|
236
|
+
* Props for the UiDropdownMenuSubTrigger component.
|
|
237
|
+
* The element that opens a submenu when hovered or focused.
|
|
238
|
+
*/
|
|
186
239
|
export interface UiDropdownMenuSubTriggerProps {
|
|
187
240
|
/**
|
|
188
241
|
* Whether the sub trigger is disabled.
|
|
@@ -202,6 +255,10 @@ export interface UiDropdownMenuSubTriggerProps {
|
|
|
202
255
|
textValue?: string;
|
|
203
256
|
}
|
|
204
257
|
|
|
258
|
+
/**
|
|
259
|
+
* Props for the UiDropdownMenuSubContent component.
|
|
260
|
+
* The floating container for submenu items.
|
|
261
|
+
*/
|
|
205
262
|
export interface UiDropdownMenuSubContentProps {
|
|
206
263
|
/**
|
|
207
264
|
* The distance in pixels from the trigger.
|
|
@@ -210,6 +267,9 @@ export interface UiDropdownMenuSubContentProps {
|
|
|
210
267
|
sideOffset?: number;
|
|
211
268
|
}
|
|
212
269
|
|
|
270
|
+
/**
|
|
271
|
+
* Emits for the UiDropdownMenuSubContent component.
|
|
272
|
+
*/
|
|
213
273
|
export interface UiDropdownMenuSubContentEmits {
|
|
214
274
|
/**
|
|
215
275
|
* Event emitted when the escape key is pressed.
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import UiEmpty from './UiEmpty.vue';
|
|
3
|
+
import { UiButton } from '../UiButton';
|
|
4
|
+
import { UiIcon } from '../UiIcon';
|
|
5
|
+
|
|
6
|
+
const SearchIcon = {
|
|
7
|
+
components: { UiIcon },
|
|
8
|
+
template: '<UiIcon name="search" :size="48" />',
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const meta: Meta<typeof UiEmpty> = {
|
|
12
|
+
title: 'Components/UiEmpty',
|
|
13
|
+
component: UiEmpty,
|
|
14
|
+
argTypes: {
|
|
15
|
+
title: {
|
|
16
|
+
control: 'text',
|
|
17
|
+
description: 'The title text to display',
|
|
18
|
+
},
|
|
19
|
+
description: {
|
|
20
|
+
control: 'text',
|
|
21
|
+
description: 'The description text to display below the title',
|
|
22
|
+
},
|
|
23
|
+
icon: {
|
|
24
|
+
control: false,
|
|
25
|
+
description: 'Custom icon component to display',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
args: {
|
|
29
|
+
title: 'No items found',
|
|
30
|
+
description: 'There are no items to display at the moment.',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default meta;
|
|
35
|
+
|
|
36
|
+
type Story = StoryObj<typeof UiEmpty>;
|
|
37
|
+
|
|
38
|
+
const defaultTemplateSource = `<script setup lang="ts">
|
|
39
|
+
import { UiEmpty } from '@aleph-alpha/ui-library'
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<template>
|
|
43
|
+
<UiEmpty
|
|
44
|
+
title="No items found"
|
|
45
|
+
description="There are no items to display at the moment."
|
|
46
|
+
/>
|
|
47
|
+
</template>`;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Default empty state with title and description.
|
|
51
|
+
*/
|
|
52
|
+
export const Default: Story = {
|
|
53
|
+
render: (args) => ({
|
|
54
|
+
components: { UiEmpty },
|
|
55
|
+
setup() {
|
|
56
|
+
return { args };
|
|
57
|
+
},
|
|
58
|
+
template: `<UiEmpty :title="args.title" :description="args.description" />`,
|
|
59
|
+
}),
|
|
60
|
+
parameters: {
|
|
61
|
+
docs: {
|
|
62
|
+
source: {
|
|
63
|
+
code: defaultTemplateSource,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const titleOnlyTemplateSource = `<script setup lang="ts">
|
|
70
|
+
import { UiEmpty } from '@aleph-alpha/ui-library'
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<template>
|
|
74
|
+
<UiEmpty title="No data available" />
|
|
75
|
+
</template>`;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Empty state with title only.
|
|
79
|
+
*/
|
|
80
|
+
export const TitleOnly: Story = {
|
|
81
|
+
render: () => ({
|
|
82
|
+
components: { UiEmpty },
|
|
83
|
+
template: `<UiEmpty title="No data available" />`,
|
|
84
|
+
}),
|
|
85
|
+
parameters: {
|
|
86
|
+
docs: {
|
|
87
|
+
source: {
|
|
88
|
+
code: titleOnlyTemplateSource,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const withCustomIconTemplateSource = `<script setup lang="ts">
|
|
95
|
+
import { UiEmpty, UiIcon } from '@aleph-alpha/ui-library'
|
|
96
|
+
|
|
97
|
+
const SearchIcon = {
|
|
98
|
+
components: { UiIcon },
|
|
99
|
+
template: '<UiIcon name="search" :size="48" />',
|
|
100
|
+
}
|
|
101
|
+
</script>
|
|
102
|
+
|
|
103
|
+
<template>
|
|
104
|
+
<UiEmpty
|
|
105
|
+
:icon="SearchIcon"
|
|
106
|
+
title="No search results"
|
|
107
|
+
description="Try adjusting your search terms or filters."
|
|
108
|
+
/>
|
|
109
|
+
</template>`;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Empty state with a custom icon.
|
|
113
|
+
*/
|
|
114
|
+
export const WithCustomIcon: Story = {
|
|
115
|
+
render: () => ({
|
|
116
|
+
components: { UiEmpty },
|
|
117
|
+
setup() {
|
|
118
|
+
return { SearchIcon };
|
|
119
|
+
},
|
|
120
|
+
template: `
|
|
121
|
+
<UiEmpty
|
|
122
|
+
:icon="SearchIcon"
|
|
123
|
+
title="No search results"
|
|
124
|
+
description="Try adjusting your search terms or filters."
|
|
125
|
+
/>
|
|
126
|
+
`,
|
|
127
|
+
}),
|
|
128
|
+
parameters: {
|
|
129
|
+
docs: {
|
|
130
|
+
source: {
|
|
131
|
+
code: withCustomIconTemplateSource,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const withActionTemplateSource = `<script setup lang="ts">
|
|
138
|
+
import { UiEmpty, UiButton } from '@aleph-alpha/ui-library'
|
|
139
|
+
</script>
|
|
140
|
+
|
|
141
|
+
<template>
|
|
142
|
+
<UiEmpty
|
|
143
|
+
title="No projects yet"
|
|
144
|
+
description="Get started by creating your first project."
|
|
145
|
+
>
|
|
146
|
+
<UiButton>Create Project</UiButton>
|
|
147
|
+
</UiEmpty>
|
|
148
|
+
</template>`;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Empty state with an action button in the slot.
|
|
152
|
+
*/
|
|
153
|
+
export const WithAction: Story = {
|
|
154
|
+
render: () => ({
|
|
155
|
+
components: { UiEmpty, UiButton },
|
|
156
|
+
template: `
|
|
157
|
+
<UiEmpty
|
|
158
|
+
title="No projects yet"
|
|
159
|
+
description="Get started by creating your first project."
|
|
160
|
+
>
|
|
161
|
+
<UiButton>Create Project</UiButton>
|
|
162
|
+
</UiEmpty>
|
|
163
|
+
`,
|
|
164
|
+
}),
|
|
165
|
+
parameters: {
|
|
166
|
+
docs: {
|
|
167
|
+
source: {
|
|
168
|
+
code: withActionTemplateSource,
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
const withMultipleActionsTemplateSource = `<script setup lang="ts">
|
|
175
|
+
import { UiEmpty, UiButton } from '@aleph-alpha/ui-library'
|
|
176
|
+
</script>
|
|
177
|
+
|
|
178
|
+
<template>
|
|
179
|
+
<UiEmpty
|
|
180
|
+
title="No files uploaded"
|
|
181
|
+
description="Upload files to get started or import from another source."
|
|
182
|
+
>
|
|
183
|
+
<div class="flex gap-2">
|
|
184
|
+
<UiButton>Upload Files</UiButton>
|
|
185
|
+
<UiButton variant="outline">Import</UiButton>
|
|
186
|
+
</div>
|
|
187
|
+
</UiEmpty>
|
|
188
|
+
</template>`;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Empty state with multiple action buttons.
|
|
192
|
+
*/
|
|
193
|
+
export const WithMultipleActions: Story = {
|
|
194
|
+
render: () => ({
|
|
195
|
+
components: { UiEmpty, UiButton },
|
|
196
|
+
template: `
|
|
197
|
+
<UiEmpty
|
|
198
|
+
title="No files uploaded"
|
|
199
|
+
description="Upload files to get started or import from another source."
|
|
200
|
+
>
|
|
201
|
+
<div class="flex gap-2">
|
|
202
|
+
<UiButton>Upload Files</UiButton>
|
|
203
|
+
<UiButton variant="outline">Import</UiButton>
|
|
204
|
+
</div>
|
|
205
|
+
</UiEmpty>
|
|
206
|
+
`,
|
|
207
|
+
}),
|
|
208
|
+
parameters: {
|
|
209
|
+
docs: {
|
|
210
|
+
source: {
|
|
211
|
+
code: withMultipleActionsTemplateSource,
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
const minimalTemplateSource = `<script setup lang="ts">
|
|
218
|
+
import { UiEmpty } from '@aleph-alpha/ui-library'
|
|
219
|
+
</script>
|
|
220
|
+
|
|
221
|
+
<template>
|
|
222
|
+
<UiEmpty />
|
|
223
|
+
</template>`;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Minimal empty state with just the default icon.
|
|
227
|
+
*/
|
|
228
|
+
export const Minimal: Story = {
|
|
229
|
+
render: () => ({
|
|
230
|
+
components: { UiEmpty },
|
|
231
|
+
template: `<UiEmpty />`,
|
|
232
|
+
}),
|
|
233
|
+
parameters: {
|
|
234
|
+
docs: {
|
|
235
|
+
source: {
|
|
236
|
+
code: minimalTemplateSource,
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { UiIcon } from '@/components/UiIcon';
|
|
3
|
+
import type { UiEmptyProps } from './types';
|
|
4
|
+
|
|
5
|
+
defineOptions({
|
|
6
|
+
name: 'UiEmpty',
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
const props = withDefaults(defineProps<UiEmptyProps>(), {
|
|
10
|
+
title: undefined,
|
|
11
|
+
description: undefined,
|
|
12
|
+
icon: undefined,
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<template>
|
|
17
|
+
<div class="flex flex-col items-center justify-center py-12 text-center">
|
|
18
|
+
<div class="mb-4 text-muted-foreground" aria-hidden="true">
|
|
19
|
+
<component :is="props.icon" v-if="props.icon" class="size-12" />
|
|
20
|
+
<UiIcon v-else name="inbox" :size="48" />
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<h3 v-if="props.title" class="mb-2 text-lg font-semibold text-foreground">
|
|
24
|
+
{{ props.title }}
|
|
25
|
+
</h3>
|
|
26
|
+
|
|
27
|
+
<p v-if="props.description" class="max-w-sm text-sm text-muted-foreground">
|
|
28
|
+
{{ props.description }}
|
|
29
|
+
</p>
|
|
30
|
+
|
|
31
|
+
<div v-if="$slots.default" class="mt-6">
|
|
32
|
+
<slot />
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { render } from '@testing-library/vue';
|
|
2
|
+
import { describe, expect, test } from 'vitest';
|
|
3
|
+
import { MockIcon } from '@/__tests__/test-utils';
|
|
4
|
+
import UiEmpty from '../UiEmpty.vue';
|
|
5
|
+
|
|
6
|
+
describe('UiEmpty', () => {
|
|
7
|
+
test('renders with default icon when no icon prop provided', () => {
|
|
8
|
+
const { container } = render(UiEmpty);
|
|
9
|
+
// Should render with the default inbox icon (aria-hidden for decorative purposes)
|
|
10
|
+
const icon = container.querySelector('svg.lucide-inbox');
|
|
11
|
+
expect(icon).toBeInTheDocument();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('renders title when provided', () => {
|
|
15
|
+
const { getByText } = render(UiEmpty, {
|
|
16
|
+
props: { title: 'No items found' },
|
|
17
|
+
});
|
|
18
|
+
expect(getByText('No items found')).toBeInTheDocument();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test('renders description when provided', () => {
|
|
22
|
+
const { getByText } = render(UiEmpty, {
|
|
23
|
+
props: { description: 'There are no items to display.' },
|
|
24
|
+
});
|
|
25
|
+
expect(getByText('There are no items to display.')).toBeInTheDocument();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('renders both title and description', () => {
|
|
29
|
+
const { getByText } = render(UiEmpty, {
|
|
30
|
+
props: {
|
|
31
|
+
title: 'Empty State',
|
|
32
|
+
description: 'Nothing here yet.',
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
expect(getByText('Empty State')).toBeInTheDocument();
|
|
36
|
+
expect(getByText('Nothing here yet.')).toBeInTheDocument();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('renders custom icon when provided', () => {
|
|
40
|
+
const { getByTestId } = render(UiEmpty, {
|
|
41
|
+
props: { icon: MockIcon },
|
|
42
|
+
});
|
|
43
|
+
expect(getByTestId('mock-icon')).toBeInTheDocument();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test('renders slot content', () => {
|
|
47
|
+
const { getByText } = render(UiEmpty, {
|
|
48
|
+
props: { title: 'No data' },
|
|
49
|
+
slots: { default: '<button>Add Item</button>' },
|
|
50
|
+
});
|
|
51
|
+
expect(getByText('Add Item')).toBeInTheDocument();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('does not render title element when title is not provided', () => {
|
|
55
|
+
const { queryByRole } = render(UiEmpty, {
|
|
56
|
+
props: { description: 'Some description' },
|
|
57
|
+
});
|
|
58
|
+
expect(queryByRole('heading', { level: 3 })).not.toBeInTheDocument();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('does not render description element when description is not provided', () => {
|
|
62
|
+
const { getByText } = render(UiEmpty, {
|
|
63
|
+
props: { title: 'Some title' },
|
|
64
|
+
});
|
|
65
|
+
expect(getByText('Some title')).toBeInTheDocument();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Component } from 'vue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A component to display empty states when there is no content to show.
|
|
5
|
+
* @category Feedback
|
|
6
|
+
* @useCases no data available, empty list, empty search results, no items found
|
|
7
|
+
* @keywords empty, no data, placeholder, blank state, zero state
|
|
8
|
+
* @related UiSkeleton, UiSpinner
|
|
9
|
+
*/
|
|
10
|
+
export interface UiEmptyProps {
|
|
11
|
+
/**
|
|
12
|
+
* The title text to display.
|
|
13
|
+
*/
|
|
14
|
+
title?: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The description text to display below the title.
|
|
18
|
+
*/
|
|
19
|
+
description?: string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Custom icon component to display.
|
|
23
|
+
* If not provided, a default empty state icon will be shown.
|
|
24
|
+
*/
|
|
25
|
+
icon?: Component;
|
|
26
|
+
}
|
|
@@ -29,11 +29,10 @@ import { ref } from 'vue';
|
|
|
29
29
|
/**
|
|
30
30
|
* UiField composes label, description, and error messaging into a consistent form-field layout.
|
|
31
31
|
* Use it to keep spacing, typography, and validation feedback consistent across inputs.
|
|
32
|
-
*
|
|
33
32
|
* @slot default - Content of the field (typically UiFieldLabel and UiFieldContent).
|
|
34
33
|
*/
|
|
35
34
|
const meta: Meta<typeof UiField> = {
|
|
36
|
-
title: '
|
|
35
|
+
title: 'Components/UiField',
|
|
37
36
|
component: UiField,
|
|
38
37
|
tags: ['autodocs'],
|
|
39
38
|
argTypes: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { FieldError as ShadcnFieldError } from '@/
|
|
2
|
+
import { FieldError as ShadcnFieldError } from '@/components/core/field';
|
|
3
3
|
import { computed, useSlots } from 'vue';
|
|
4
4
|
import type { UiFieldErrorProps } from './types';
|
|
5
5
|
|
|
@@ -8,3 +8,4 @@ export { default as UiFieldLegend } from './UiFieldLegend.vue';
|
|
|
8
8
|
export { default as UiFieldSeparator } from './UiFieldSeparator.vue';
|
|
9
9
|
export { default as UiFieldSet } from './UiFieldSet.vue';
|
|
10
10
|
export { default as UiFieldTitle } from './UiFieldTitle.vue';
|
|
11
|
+
export type * from './types';
|
|
@@ -6,12 +6,17 @@ export type UiFieldOrientation = 'vertical' | 'horizontal' | 'responsive';
|
|
|
6
6
|
/**
|
|
7
7
|
* Error shape supported by `UiFieldError`.
|
|
8
8
|
*/
|
|
9
|
-
export type UiFieldErrorLike =
|
|
9
|
+
export type UiFieldErrorLike =
|
|
10
|
+
| string
|
|
11
|
+
| {
|
|
12
|
+
/** The error message text. */
|
|
13
|
+
message: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
| undefined;
|
|
10
16
|
|
|
11
17
|
/**
|
|
12
18
|
* A form field wrapper that groups label, input, description, and error messages.
|
|
13
19
|
* Provides consistent layout and accessibility for form controls.
|
|
14
|
-
*
|
|
15
20
|
* @category Form Inputs
|
|
16
21
|
* @useCases form layout, input wrapper, field grouping, validation display
|
|
17
22
|
* @keywords field, form, label, input, error, validation, wrapper
|