@groupteknology/vuno 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -27
- package/dist/module.d.mts +2 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +33 -12
- package/dist/runtime/app/assets/css/dialog.css +1 -1
- package/dist/runtime/app/assets/css/stylesheet.css +1 -0
- package/dist/runtime/app/assets/css/theme.css +1 -1
- package/dist/runtime/app/assets/css/tokens.css +1 -1
- package/dist/runtime/app/components/Alert/Alert.d.vue.ts +20 -0
- package/dist/runtime/app/components/Alert/Alert.theme.d.ts +13 -0
- package/dist/runtime/app/components/Alert/Alert.theme.js +13 -0
- package/dist/runtime/app/components/Alert/Alert.vue +59 -0
- package/dist/runtime/app/components/Alert/Alert.vue.d.ts +20 -0
- package/dist/runtime/app/components/{overlays → App}/App.d.vue.ts +4 -5
- package/dist/runtime/app/components/{overlays → App}/App.vue +8 -12
- package/dist/runtime/app/components/{overlays → App}/App.vue.d.ts +4 -5
- package/dist/runtime/app/components/App/internal/Overlay/Overlay.d.vue.ts +7 -0
- package/dist/runtime/app/components/{overlays → App/internal/Overlay}/Overlay.vue +5 -6
- package/dist/runtime/app/components/App/internal/Overlay/Overlay.vue.d.ts +7 -0
- package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.d.vue.ts +8 -0
- package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.vue +19 -0
- package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.vue.d.ts +8 -0
- package/dist/runtime/app/components/{overlays → App/internal/Toast}/Toast.d.vue.ts +3 -3
- package/dist/runtime/app/components/App/internal/Toast/Toast.theme.d.ts +13 -0
- package/dist/runtime/app/components/App/internal/Toast/Toast.theme.js +18 -0
- package/dist/runtime/app/components/{overlays → App/internal/Toast}/Toast.vue +3 -2
- package/dist/runtime/app/components/{overlays → App/internal/Toast}/Toast.vue.d.ts +3 -3
- package/dist/runtime/app/components/{overlays → App/internal/Toaster}/Toaster.d.vue.ts +3 -3
- package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.d.ts +15 -0
- package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.js +16 -0
- package/dist/runtime/app/components/{overlays → App/internal/Toaster}/Toaster.vue +3 -2
- package/dist/runtime/app/components/{overlays → App/internal/Toaster}/Toaster.vue.d.ts +3 -3
- package/dist/runtime/app/components/{actions → Avatar}/Avatar.d.vue.ts +9 -5
- package/dist/runtime/app/components/Avatar/Avatar.theme.d.ts +30 -0
- package/dist/runtime/app/components/Avatar/Avatar.theme.js +22 -0
- package/dist/runtime/app/components/{actions → Avatar}/Avatar.vue +7 -5
- package/dist/runtime/app/components/{actions → Avatar}/Avatar.vue.d.ts +9 -5
- package/dist/runtime/app/components/{actions → Badge}/Badge.d.vue.ts +9 -5
- package/dist/runtime/app/components/Badge/Badge.theme.d.ts +40 -0
- package/dist/runtime/app/components/Badge/Badge.theme.js +22 -0
- package/dist/runtime/app/components/{actions → Badge}/Badge.vue +3 -0
- package/dist/runtime/app/components/{actions → Badge}/Badge.vue.d.ts +9 -5
- package/dist/runtime/app/components/{actions → Button}/Button.d.vue.ts +10 -6
- package/dist/runtime/app/components/Button/Button.theme.d.ts +88 -0
- package/dist/runtime/app/components/Button/Button.theme.js +59 -0
- package/dist/runtime/app/components/{actions → Button}/Button.vue +10 -3
- package/dist/runtime/app/components/{actions → Button}/Button.vue.d.ts +10 -6
- package/dist/runtime/app/components/{structure → Card}/Card.d.vue.ts +9 -5
- package/dist/runtime/app/components/Card/Card.theme.d.ts +57 -0
- package/dist/runtime/app/components/Card/Card.theme.js +62 -0
- package/dist/runtime/app/components/{structure → Card}/Card.vue +3 -1
- package/dist/runtime/app/components/{structure → Card}/Card.vue.d.ts +9 -5
- package/dist/runtime/app/components/Code/Code.d.vue.ts +19 -0
- package/dist/runtime/app/components/Code/Code.theme.d.ts +11 -0
- package/dist/runtime/app/components/Code/Code.theme.js +12 -0
- package/dist/runtime/app/components/Code/Code.vue +109 -0
- package/dist/runtime/app/components/Code/Code.vue.d.ts +19 -0
- package/dist/runtime/app/components/{overlays → Confirm}/Confirm.d.vue.ts +2 -2
- package/dist/runtime/app/components/Confirm/Confirm.theme.d.ts +12 -0
- package/dist/runtime/app/components/Confirm/Confirm.theme.js +13 -0
- package/dist/runtime/app/components/{overlays → Confirm}/Confirm.vue +10 -5
- package/dist/runtime/app/components/{overlays → Confirm}/Confirm.vue.d.ts +2 -2
- package/dist/runtime/app/components/{structure → Container}/Container.d.vue.ts +5 -5
- package/dist/runtime/app/components/Container/Container.theme.d.ts +53 -0
- package/dist/runtime/app/components/Container/Container.theme.js +31 -0
- package/dist/runtime/app/components/{structure → Container}/Container.vue +2 -1
- package/dist/runtime/app/components/{structure → Container}/Container.vue.d.ts +5 -5
- package/dist/runtime/app/components/ControlGroup/ControlGroup.d.vue.ts +26 -0
- package/dist/runtime/app/components/ControlGroup/ControlGroup.theme.d.ts +16 -0
- package/dist/runtime/app/components/ControlGroup/ControlGroup.theme.js +13 -0
- package/dist/runtime/app/components/ControlGroup/ControlGroup.vue +26 -0
- package/dist/runtime/app/components/ControlGroup/ControlGroup.vue.d.ts +26 -0
- package/dist/runtime/app/components/FieldArray/FieldArray.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldArray/FieldArray.theme.d.ts +12 -0
- package/dist/runtime/app/components/FieldArray/FieldArray.theme.js +13 -0
- package/dist/runtime/app/components/FieldArray/FieldArray.vue +173 -0
- package/dist/runtime/app/components/FieldArray/FieldArray.vue.d.ts +13 -0
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.theme.js +2 -0
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue +39 -0
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue.d.ts +13 -0
- package/dist/runtime/app/components/{forms → FieldCheckbox/internal/Checkbox}/Checkbox.d.vue.ts +9 -4
- package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.theme.d.ts +30 -0
- package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.theme.js +10 -0
- package/dist/runtime/app/components/{forms → FieldCheckbox/internal/Checkbox}/Checkbox.vue +7 -4
- package/dist/runtime/app/components/{forms → FieldCheckbox/internal/Checkbox}/Checkbox.vue.d.ts +9 -4
- package/dist/runtime/app/components/FieldColor/FieldColor.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldColor/FieldColor.theme.d.ts +27 -0
- package/dist/runtime/app/components/FieldColor/FieldColor.theme.js +18 -0
- package/dist/runtime/app/components/{forms/fields → FieldColor}/FieldColor.vue +39 -32
- package/dist/runtime/app/components/FieldColor/FieldColor.vue.d.ts +13 -0
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.theme.js +2 -0
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue +51 -0
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue.d.ts +13 -0
- package/dist/runtime/app/components/{forms/fields → FieldFile}/FieldFile.d.vue.ts +10 -2
- package/dist/runtime/app/components/FieldFile/FieldFile.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldFile/FieldFile.theme.js +2 -0
- package/dist/runtime/app/components/FieldFile/FieldFile.vue +99 -0
- package/dist/runtime/app/components/{forms/fields → FieldFile}/FieldFile.vue.d.ts +10 -2
- package/dist/runtime/app/components/{forms → FieldFile/internal/FileUpload}/FileUpload.d.vue.ts +25 -20
- package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.d.ts +88 -0
- package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.js +55 -0
- package/dist/runtime/app/components/{forms → FieldFile/internal/FileUpload}/FileUpload.vue +21 -20
- package/dist/runtime/app/components/{forms → FieldFile/internal/FileUpload}/FileUpload.vue.d.ts +25 -20
- package/dist/runtime/app/components/FieldInput/FieldInput.d.vue.ts +24 -0
- package/dist/runtime/app/components/FieldInput/FieldInput.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldInput/FieldInput.theme.js +2 -0
- package/dist/runtime/app/components/FieldInput/FieldInput.vue +61 -0
- package/dist/runtime/app/components/FieldInput/FieldInput.vue.d.ts +24 -0
- package/dist/runtime/app/components/FieldNumber/FieldNumber.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldNumber/FieldNumber.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldNumber/FieldNumber.theme.js +2 -0
- package/dist/runtime/app/components/FieldNumber/FieldNumber.vue +47 -0
- package/dist/runtime/app/components/FieldNumber/FieldNumber.vue.d.ts +13 -0
- package/dist/runtime/app/components/FieldPassword/FieldPassword.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldPassword/FieldPassword.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldPassword/FieldPassword.theme.js +2 -0
- package/dist/runtime/app/components/FieldPassword/FieldPassword.vue +62 -0
- package/dist/runtime/app/components/FieldPassword/FieldPassword.vue.d.ts +13 -0
- package/dist/runtime/app/components/FieldRadio/FieldRadio.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldRadio/FieldRadio.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldRadio/FieldRadio.theme.js +2 -0
- package/dist/runtime/app/components/FieldRadio/FieldRadio.vue +41 -0
- package/dist/runtime/app/components/FieldRadio/FieldRadio.vue.d.ts +13 -0
- package/dist/runtime/app/components/{forms → FieldRadio/internal/RadioGroup}/RadioGroup.d.vue.ts +10 -8
- package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.theme.d.ts +54 -0
- package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.theme.js +31 -0
- package/dist/runtime/app/components/{forms → FieldRadio/internal/RadioGroup}/RadioGroup.vue +7 -4
- package/dist/runtime/app/components/{forms → FieldRadio/internal/RadioGroup}/RadioGroup.vue.d.ts +10 -8
- package/dist/runtime/app/components/FieldSearch/FieldSearch.d.vue.ts +17 -0
- package/dist/runtime/app/components/FieldSearch/FieldSearch.theme.d.ts +6 -0
- package/dist/runtime/app/components/FieldSearch/FieldSearch.theme.js +7 -0
- package/dist/runtime/app/components/FieldSearch/FieldSearch.vue +74 -0
- package/dist/runtime/app/components/FieldSearch/FieldSearch.vue.d.ts +17 -0
- package/dist/runtime/app/components/FieldSelect/FieldSelect.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldSelect/FieldSelect.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldSelect/FieldSelect.theme.js +2 -0
- package/dist/runtime/app/components/FieldSelect/FieldSelect.vue +45 -0
- package/dist/runtime/app/components/FieldSelect/FieldSelect.vue.d.ts +13 -0
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.d.vue.ts +97 -0
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.theme.d.ts +36 -0
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.theme.js +49 -0
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue +196 -0
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue.d.ts +97 -0
- package/dist/runtime/app/{utils → components/FieldSelect/internal/Select}/option.d.ts +3 -4
- package/dist/runtime/app/components/FieldSelect/internal/Select/useVunoSelectState.d.ts +30 -0
- package/dist/runtime/app/components/FieldSelect/internal/Select/useVunoSelectState.js +142 -0
- package/dist/runtime/app/components/FieldSlug/FieldSlug.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldSlug/FieldSlug.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldSlug/FieldSlug.theme.js +2 -0
- package/dist/runtime/app/components/{forms/fields → FieldSlug}/FieldSlug.vue +58 -47
- package/dist/runtime/app/components/FieldSlug/FieldSlug.vue.d.ts +13 -0
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.theme.js +2 -0
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue +37 -0
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue.d.ts +13 -0
- package/dist/runtime/app/components/{forms → FieldSwitch/internal/Switch}/Switch.d.vue.ts +9 -4
- package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.theme.d.ts +39 -0
- package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.theme.js +20 -0
- package/dist/runtime/app/components/{forms → FieldSwitch/internal/Switch}/Switch.vue +4 -2
- package/dist/runtime/app/components/{forms → FieldSwitch/internal/Switch}/Switch.vue.d.ts +9 -4
- package/dist/runtime/app/components/FieldTags/FieldTags.d.vue.ts +13 -0
- package/dist/runtime/app/components/FieldTags/FieldTags.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldTags/FieldTags.theme.js +2 -0
- package/dist/runtime/app/components/FieldTags/FieldTags.vue +41 -0
- package/dist/runtime/app/components/FieldTags/FieldTags.vue.d.ts +13 -0
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.d.vue.ts +26 -0
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.theme.d.ts +34 -0
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.theme.js +20 -0
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue +97 -0
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue.d.ts +26 -0
- package/dist/runtime/app/components/{forms/fields → FieldTextarea}/FieldTextarea.d.vue.ts +10 -2
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.theme.d.ts +5 -0
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.theme.js +2 -0
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.vue +45 -0
- package/dist/runtime/app/components/{forms/fields → FieldTextarea}/FieldTextarea.vue.d.ts +10 -2
- package/dist/runtime/app/components/{forms → FieldTextarea/internal/Textarea}/Textarea.d.vue.ts +9 -4
- package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.theme.d.ts +36 -0
- package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.theme.js +37 -0
- package/dist/runtime/app/components/{forms → FieldTextarea/internal/Textarea}/Textarea.vue +6 -4
- package/dist/runtime/app/components/{forms → FieldTextarea/internal/Textarea}/Textarea.vue.d.ts +9 -4
- package/dist/runtime/app/components/{forms → Form}/Form.d.vue.ts +3 -4
- package/dist/runtime/app/components/Form/Form.theme.d.ts +9 -0
- package/dist/runtime/app/components/Form/Form.theme.js +10 -0
- package/dist/runtime/app/components/{forms → Form}/Form.vue +7 -6
- package/dist/runtime/app/components/{forms → Form}/Form.vue.d.ts +3 -4
- package/dist/runtime/app/components/Form/internal/FormFieldRenderer/FormFieldRenderer.d.vue.ts +7 -0
- package/dist/runtime/app/components/Form/internal/FormFieldRenderer/FormFieldRenderer.vue +67 -0
- package/dist/runtime/app/components/Form/internal/FormFieldRenderer/FormFieldRenderer.vue.d.ts +7 -0
- package/dist/runtime/app/components/Form/internal/standard-schema.d.ts +29 -0
- package/dist/runtime/app/{internal → components/Form/internal}/useVunoFormState.d.ts +5 -3
- package/dist/runtime/app/{internal → components/Form/internal}/useVunoFormState.js +4 -3
- package/dist/runtime/app/components/{forms → FormField}/FormField.d.vue.ts +7 -4
- package/dist/runtime/app/components/FormField/FormField.theme.d.ts +62 -0
- package/dist/runtime/app/components/FormField/FormField.theme.js +28 -0
- package/dist/runtime/app/components/{forms → FormField}/FormField.vue +61 -42
- package/dist/runtime/app/components/{forms → FormField}/FormField.vue.d.ts +7 -4
- package/dist/runtime/app/components/{forms → FormModal}/FormModal.d.vue.ts +9 -7
- package/dist/runtime/app/components/FormModal/FormModal.theme.d.ts +8 -0
- package/dist/runtime/app/components/FormModal/FormModal.theme.js +9 -0
- package/dist/runtime/app/components/{forms → FormModal}/FormModal.vue +15 -12
- package/dist/runtime/app/components/{forms → FormModal}/FormModal.vue.d.ts +9 -7
- package/dist/runtime/app/components/FormSection/FormSection.d.vue.ts +15 -0
- package/dist/runtime/app/components/FormSection/FormSection.theme.d.ts +12 -0
- package/dist/runtime/app/components/FormSection/FormSection.theme.js +14 -0
- package/dist/runtime/app/components/{forms → FormSection}/FormSection.vue +5 -3
- package/dist/runtime/app/components/FormSection/FormSection.vue.d.ts +15 -0
- package/dist/runtime/app/components/Icon/Icon.d.vue.ts +6 -0
- package/dist/runtime/app/components/Icon/Icon.vue +32 -0
- package/dist/runtime/app/components/Icon/Icon.vue.d.ts +6 -0
- package/dist/runtime/app/components/{actions → Menu}/Menu.d.vue.ts +6 -4
- package/dist/runtime/app/components/Menu/Menu.theme.d.ts +17 -0
- package/dist/runtime/app/components/Menu/Menu.theme.js +20 -0
- package/dist/runtime/app/components/{actions → Menu}/Menu.vue +20 -27
- package/dist/runtime/app/components/{actions → Menu}/Menu.vue.d.ts +6 -4
- package/dist/runtime/app/components/Modal/Modal.d.vue.ts +43 -0
- package/dist/runtime/app/components/Modal/Modal.theme.d.ts +59 -0
- package/dist/runtime/app/components/Modal/Modal.theme.js +47 -0
- package/dist/runtime/app/components/{overlays → Modal}/Modal.vue +89 -32
- package/dist/runtime/app/components/Modal/Modal.vue.d.ts +43 -0
- package/dist/runtime/app/components/{structure → Navbar}/Navbar.d.vue.ts +14 -18
- package/dist/runtime/app/components/Navbar/Navbar.theme.d.ts +31 -0
- package/dist/runtime/app/components/Navbar/Navbar.theme.js +32 -0
- package/dist/runtime/app/components/{structure → Navbar}/Navbar.vue +1 -0
- package/dist/runtime/app/components/{structure → Navbar}/Navbar.vue.d.ts +14 -18
- package/dist/runtime/app/components/NavigationList/NavigationList.d.vue.ts +38 -0
- package/dist/runtime/app/components/NavigationList/NavigationList.theme.d.ts +32 -0
- package/dist/runtime/app/components/NavigationList/NavigationList.theme.js +35 -0
- package/dist/runtime/app/components/{structure/Navigation.vue → NavigationList/NavigationList.vue} +74 -34
- package/dist/runtime/app/components/NavigationList/NavigationList.vue.d.ts +38 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.d.vue.ts +31 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.theme.d.ts +26 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.theme.js +27 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue +236 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue.d.ts +31 -0
- package/dist/runtime/app/components/NavigationToc/NavigationToc.d.vue.ts +14 -0
- package/dist/runtime/app/components/NavigationToc/NavigationToc.theme.d.ts +9 -0
- package/dist/runtime/app/components/NavigationToc/NavigationToc.theme.js +10 -0
- package/dist/runtime/app/components/NavigationToc/NavigationToc.vue +81 -0
- package/dist/runtime/app/components/NavigationToc/NavigationToc.vue.d.ts +14 -0
- package/dist/runtime/app/components/{structure → Page}/Page.d.vue.ts +6 -5
- package/dist/runtime/app/components/Page/Page.theme.d.ts +32 -0
- package/dist/runtime/app/components/Page/Page.theme.js +31 -0
- package/dist/runtime/app/components/{structure → Page}/Page.vue +11 -3
- package/dist/runtime/app/components/{structure → Page}/Page.vue.d.ts +6 -5
- package/dist/runtime/app/components/{structure → Pagination}/Pagination.d.vue.ts +8 -7
- package/dist/runtime/app/components/Pagination/Pagination.theme.d.ts +13 -0
- package/dist/runtime/app/components/Pagination/Pagination.theme.js +14 -0
- package/dist/runtime/app/components/{structure → Pagination}/Pagination.vue +4 -2
- package/dist/runtime/app/components/{structure → Pagination}/Pagination.vue.d.ts +8 -7
- package/dist/runtime/app/components/{overlays/Modal.d.vue.ts → Slideover/Slideover.d.vue.ts} +10 -18
- package/dist/runtime/app/components/Slideover/Slideover.theme.d.ts +35 -0
- package/dist/runtime/app/components/Slideover/Slideover.theme.js +24 -0
- package/dist/runtime/app/components/Slideover/Slideover.vue +58 -0
- package/dist/runtime/app/components/{overlays/Modal.vue.d.ts → Slideover/Slideover.vue.d.ts} +10 -18
- package/dist/runtime/app/components/State/State.theme.d.ts +19 -0
- package/dist/runtime/app/components/State/State.theme.js +26 -0
- package/dist/runtime/app/components/{structure → State}/State.vue +8 -3
- package/dist/runtime/app/components/{structure → Table}/Table.d.vue.ts +5 -2
- package/dist/runtime/app/components/Table/Table.theme.d.ts +50 -0
- package/dist/runtime/app/components/Table/Table.theme.js +64 -0
- package/dist/runtime/app/components/{structure → Table}/Table.vue +62 -72
- package/dist/runtime/app/components/{structure → Table}/Table.vue.d.ts +5 -2
- package/dist/runtime/app/components/{structure/cells → Table/internal/CellBadge}/CellBadge.vue +2 -1
- package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.theme.d.ts +21 -0
- package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.theme.js +11 -0
- package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.vue +32 -0
- package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.theme.d.ts +5 -0
- package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.theme.js +4 -0
- package/dist/runtime/app/components/{structure/cells → Table/internal/CellCurrency}/CellCurrency.vue +1 -0
- package/dist/runtime/app/components/Table/internal/CellDate/CellDate.theme.d.ts +5 -0
- package/dist/runtime/app/components/Table/internal/CellDate/CellDate.theme.js +4 -0
- package/dist/runtime/app/components/{structure/cells → Table/internal/CellDate}/CellDate.vue +1 -0
- package/dist/runtime/app/components/{structure/cells → Table/internal/CellImage}/CellImage.vue +2 -1
- package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.theme.d.ts +5 -0
- package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.theme.js +4 -0
- package/dist/runtime/app/components/{structure/cells → Table/internal/CellNumber}/CellNumber.vue +1 -0
- package/dist/runtime/app/components/Table/internal/CellText/CellText.theme.d.ts +13 -0
- package/dist/runtime/app/components/Table/internal/CellText/CellText.theme.js +11 -0
- package/dist/runtime/app/components/{structure/cells → Table/internal/CellText}/CellText.vue +1 -0
- package/dist/runtime/app/components/{structure → Table/internal/TableCell}/TableCell.vue +9 -8
- package/dist/runtime/app/{utils → components/Table/internal}/column.js +1 -1
- package/dist/runtime/app/{internal → components/Table/internal}/useVunoTable.d.ts +23 -22
- package/dist/runtime/app/{internal → components/Table/internal}/useVunoTable.js +1 -1
- package/dist/runtime/app/components/Table/internal/useVunoTableSelection.d.ts +21 -0
- package/dist/runtime/app/components/Table/internal/useVunoTableSelection.js +29 -0
- package/dist/runtime/app/components/{structure → Tabs}/Tabs.d.vue.ts +8 -7
- package/dist/runtime/app/components/Tabs/Tabs.theme.d.ts +32 -0
- package/dist/runtime/app/components/Tabs/Tabs.theme.js +23 -0
- package/dist/runtime/app/components/{structure → Tabs}/Tabs.vue +13 -8
- package/dist/runtime/app/components/{structure → Tabs}/Tabs.vue.d.ts +8 -7
- package/dist/runtime/app/components/{actions → Tooltip}/Tooltip.d.vue.ts +6 -6
- package/dist/runtime/app/components/Tooltip/Tooltip.theme.d.ts +12 -0
- package/dist/runtime/app/components/Tooltip/Tooltip.theme.js +13 -0
- package/dist/runtime/app/components/{actions → Tooltip}/Tooltip.vue +10 -23
- package/dist/runtime/app/components/{actions → Tooltip}/Tooltip.vue.d.ts +6 -6
- package/dist/runtime/app/components/{forms → internal/ControlShell}/ControlShell.d.vue.ts +9 -5
- package/dist/runtime/app/components/internal/ControlShell/ControlShell.theme.d.ts +50 -0
- package/dist/runtime/app/components/internal/ControlShell/ControlShell.theme.js +38 -0
- package/dist/runtime/app/components/internal/ControlShell/ControlShell.vue +33 -0
- package/dist/runtime/app/components/{forms → internal/ControlShell}/ControlShell.vue.d.ts +9 -5
- package/dist/runtime/app/components/internal/FieldShell/FieldShell.d.vue.ts +23 -0
- package/dist/runtime/app/components/internal/FieldShell/FieldShell.vue +63 -0
- package/dist/runtime/app/components/internal/FieldShell/FieldShell.vue.d.ts +23 -0
- package/dist/runtime/app/components/{forms → internal/Input}/Input.d.vue.ts +15 -10
- package/dist/runtime/app/components/internal/Input/Input.theme.d.ts +30 -0
- package/dist/runtime/app/components/internal/Input/Input.theme.js +21 -0
- package/dist/runtime/app/components/{forms → internal/Input}/Input.vue +8 -6
- package/dist/runtime/app/components/{forms → internal/Input}/Input.vue.d.ts +15 -10
- package/dist/runtime/app/components/{forms → internal/NumberInput}/NumberInput.d.vue.ts +14 -8
- package/dist/runtime/app/components/internal/NumberInput/NumberInput.theme.d.ts +31 -0
- package/dist/runtime/app/components/internal/NumberInput/NumberInput.theme.js +26 -0
- package/dist/runtime/app/components/internal/NumberInput/NumberInput.vue +221 -0
- package/dist/runtime/app/components/{forms → internal/NumberInput}/NumberInput.vue.d.ts +14 -8
- package/dist/runtime/app/{utils → components/internal/NumberInput}/number.d.ts +7 -0
- package/dist/runtime/app/components/internal/NumberInput/number.js +64 -0
- package/dist/runtime/app/composables/defineShortcuts.d.ts +19 -0
- package/dist/runtime/app/composables/defineShortcuts.js +68 -0
- package/dist/runtime/app/{internal → composables/internal}/useVunoAnchor.d.ts +6 -4
- package/dist/runtime/app/{internal → composables/internal}/useVunoAnchor.js +3 -2
- package/dist/runtime/app/composables/internal/useVunoControlGroup.d.ts +17 -0
- package/dist/runtime/app/composables/internal/useVunoControlGroup.js +18 -0
- package/dist/runtime/app/{internal → composables/internal}/useVunoPortal.d.ts +3 -8
- package/dist/runtime/app/composables/internal/useVunoPortal.js +12 -0
- package/dist/runtime/app/composables/useCrud.js +5 -4
- package/dist/runtime/app/composables/useField.d.ts +3 -3
- package/dist/runtime/app/composables/useField.js +16 -8
- package/dist/runtime/app/composables/useForm.d.ts +3 -0
- package/dist/runtime/app/composables/useForm.js +2 -2
- package/dist/runtime/app/composables/useModal.js +1 -3
- package/dist/runtime/app/composables/useTableQuery.js +29 -13
- package/dist/runtime/app/composables/useTheme.d.ts +3 -2
- package/dist/runtime/app/composables/useTheme.js +4 -2
- package/dist/runtime/app/internal/keys.d.ts +11 -5
- package/dist/runtime/app/internal/keys.js +5 -2
- package/dist/runtime/app/internal/slots.d.ts +3 -0
- package/dist/runtime/app/internal/slots.js +13 -1
- package/dist/runtime/app/plugins/vue-query.d.ts +8 -0
- package/dist/runtime/app/plugins/vue-query.js +13 -0
- package/dist/runtime/app/theme/icons.js +4 -1
- package/dist/runtime/app/theme/index.d.ts +1158 -4
- package/dist/runtime/app/theme/index.js +116 -10
- package/dist/runtime/app/theme/messages.js +10 -3
- package/dist/runtime/app/theme/shared.d.ts +19 -3
- package/dist/runtime/app/theme/shared.js +15 -1
- package/dist/runtime/app/types/alert.d.ts +13 -0
- package/dist/runtime/app/types/base.d.ts +19 -1
- package/dist/runtime/app/types/field-type.d.ts +4 -0
- package/dist/runtime/app/types/field-type.js +0 -0
- package/dist/runtime/app/types/field.d.ts +132 -26
- package/dist/runtime/app/types/form.d.ts +27 -1
- package/dist/runtime/app/types/index.d.ts +15 -12
- package/dist/runtime/app/types/page.d.ts +9 -1
- package/dist/runtime/app/types/shortcuts.d.ts +44 -0
- package/dist/runtime/app/types/shortcuts.js +0 -0
- package/dist/runtime/app/types/slots.d.ts +30 -0
- package/dist/runtime/app/types/slots.js +0 -0
- package/dist/runtime/app/types/state.d.ts +3 -3
- package/dist/runtime/app/types/table.d.ts +3 -2
- package/dist/runtime/app/types/theme.d.ts +51 -13
- package/dist/runtime/app/utils/format.js +2 -2
- package/dist/runtime/app/utils/path.js +4 -2
- package/dist/runtime/app/utils/theme.d.ts +19 -1
- package/dist/runtime/app/utils/theme.js +21 -3
- package/package.json +18 -3
- package/dist/runtime/app/components/actions/Icon.d.vue.ts +0 -6
- package/dist/runtime/app/components/actions/Icon.vue +0 -32
- package/dist/runtime/app/components/actions/Icon.vue.d.ts +0 -6
- package/dist/runtime/app/components/forms/ControlShell.vue +0 -19
- package/dist/runtime/app/components/forms/FormFieldRenderer.d.vue.ts +0 -7
- package/dist/runtime/app/components/forms/FormFieldRenderer.vue +0 -88
- package/dist/runtime/app/components/forms/FormFieldRenderer.vue.d.ts +0 -7
- package/dist/runtime/app/components/forms/FormSection.d.vue.ts +0 -12
- package/dist/runtime/app/components/forms/FormSection.vue.d.ts +0 -12
- package/dist/runtime/app/components/forms/NumberInput.vue +0 -160
- package/dist/runtime/app/components/forms/Select.d.vue.ts +0 -61
- package/dist/runtime/app/components/forms/Select.vue +0 -336
- package/dist/runtime/app/components/forms/Select.vue.d.ts +0 -61
- package/dist/runtime/app/components/forms/fields/FieldArray.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldArray.vue +0 -129
- package/dist/runtime/app/components/forms/fields/FieldArray.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldCheckbox.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldCheckbox.vue +0 -31
- package/dist/runtime/app/components/forms/fields/FieldCheckbox.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldColor.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldColor.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldEmail.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldEmail.vue +0 -38
- package/dist/runtime/app/components/forms/fields/FieldEmail.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldFile.vue +0 -91
- package/dist/runtime/app/components/forms/fields/FieldNumber.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldNumber.vue +0 -39
- package/dist/runtime/app/components/forms/fields/FieldNumber.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldPassword.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldPassword.vue +0 -36
- package/dist/runtime/app/components/forms/fields/FieldPassword.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldRadio.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldRadio.vue +0 -33
- package/dist/runtime/app/components/forms/fields/FieldRadio.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldSelect.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldSelect.vue +0 -37
- package/dist/runtime/app/components/forms/fields/FieldSelect.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldSlug.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldSlug.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldSwitch.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldSwitch.vue +0 -29
- package/dist/runtime/app/components/forms/fields/FieldSwitch.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldText.d.vue.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldText.vue +0 -39
- package/dist/runtime/app/components/forms/fields/FieldText.vue.d.ts +0 -5
- package/dist/runtime/app/components/forms/fields/FieldTextarea.vue +0 -37
- package/dist/runtime/app/components/layouts/dashboard/DashboardAside.d.vue.ts +0 -56
- package/dist/runtime/app/components/layouts/dashboard/DashboardAside.vue +0 -96
- package/dist/runtime/app/components/layouts/dashboard/DashboardAside.vue.d.ts +0 -56
- package/dist/runtime/app/components/layouts/dashboard/DashboardLayout.d.vue.ts +0 -57
- package/dist/runtime/app/components/layouts/dashboard/DashboardLayout.vue +0 -164
- package/dist/runtime/app/components/layouts/dashboard/DashboardLayout.vue.d.ts +0 -57
- package/dist/runtime/app/components/layouts/dashboard/DashboardPage.d.vue.ts +0 -49
- package/dist/runtime/app/components/layouts/dashboard/DashboardPage.vue +0 -45
- package/dist/runtime/app/components/layouts/dashboard/DashboardPage.vue.d.ts +0 -49
- package/dist/runtime/app/components/layouts/public/PublicLayout.d.vue.ts +0 -50
- package/dist/runtime/app/components/layouts/public/PublicLayout.vue +0 -56
- package/dist/runtime/app/components/layouts/public/PublicLayout.vue.d.ts +0 -50
- package/dist/runtime/app/components/overlays/Context.d.vue.ts +0 -3
- package/dist/runtime/app/components/overlays/Context.vue +0 -7
- package/dist/runtime/app/components/overlays/Context.vue.d.ts +0 -3
- package/dist/runtime/app/components/overlays/Overlay.d.vue.ts +0 -7
- package/dist/runtime/app/components/overlays/Overlay.vue.d.ts +0 -7
- package/dist/runtime/app/components/structure/Navigation.d.vue.ts +0 -14
- package/dist/runtime/app/components/structure/Navigation.vue.d.ts +0 -14
- package/dist/runtime/app/components/structure/cells/CellBoolean.vue +0 -26
- package/dist/runtime/app/composables/useDashboard.d.ts +0 -14
- package/dist/runtime/app/composables/useDashboard.js +0 -9
- package/dist/runtime/app/internal/useVunoDashboard.d.ts +0 -15
- package/dist/runtime/app/internal/useVunoDashboard.js +0 -5
- package/dist/runtime/app/internal/useVunoPortal.js +0 -8
- package/dist/runtime/app/theme/actions.d.ts +0 -2
- package/dist/runtime/app/theme/actions.js +0 -123
- package/dist/runtime/app/theme/forms.d.ts +0 -2
- package/dist/runtime/app/theme/forms.js +0 -442
- package/dist/runtime/app/theme/layouts.d.ts +0 -2
- package/dist/runtime/app/theme/layouts.js +0 -76
- package/dist/runtime/app/theme/overlays.d.ts +0 -2
- package/dist/runtime/app/theme/overlays.js +0 -90
- package/dist/runtime/app/theme/structure.d.ts +0 -2
- package/dist/runtime/app/theme/structure.js +0 -351
- package/dist/runtime/app/types/dashboard.d.ts +0 -7
- package/dist/runtime/app/utils/number.js +0 -30
- package/dist/runtime/app/utils/standard-schema.d.ts +0 -62
- /package/dist/runtime/app/{utils → components/FieldSelect/internal/Select}/option.js +0 -0
- /package/dist/runtime/app/{utils → components/Form/internal}/grid.d.ts +0 -0
- /package/dist/runtime/app/{utils → components/Form/internal}/grid.js +0 -0
- /package/dist/runtime/app/{utils → components/Form/internal}/standard-schema.js +0 -0
- /package/dist/runtime/app/components/{structure → State}/State.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure → State}/State.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellBadge}/CellBadge.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellBadge}/CellBadge.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellBoolean}/CellBoolean.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellBoolean}/CellBoolean.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellCurrency}/CellCurrency.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellCurrency}/CellCurrency.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellDate}/CellDate.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellDate}/CellDate.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellImage}/CellImage.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellImage}/CellImage.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellNumber}/CellNumber.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellNumber}/CellNumber.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellText}/CellText.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure/cells → Table/internal/CellText}/CellText.vue.d.ts +0 -0
- /package/dist/runtime/app/components/{structure → Table/internal/TableCell}/TableCell.d.vue.ts +0 -0
- /package/dist/runtime/app/components/{structure → Table/internal/TableCell}/TableCell.vue.d.ts +0 -0
- /package/dist/runtime/app/{utils → components/Table/internal}/column.d.ts +0 -0
- /package/dist/runtime/app/{utils → components/Table/internal}/query.d.ts +0 -0
- /package/dist/runtime/app/{utils → components/Table/internal}/query.js +0 -0
- /package/dist/runtime/app/{utils → components/Table/internal}/selection.d.ts +0 -0
- /package/dist/runtime/app/{utils → components/Table/internal}/selection.js +0 -0
- /package/dist/runtime/app/types/{dashboard.js → alert.js} +0 -0
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Formularios, tablas y diálogos declarativos para Nuxt 4, con componentes propios y sin librería de interfaz por debajo.
|
|
4
4
|
|
|
5
|
-
El módulo **trae su propia estética, y se sobreescribe
|
|
5
|
+
El módulo **trae su propia estética, y se sobreescribe desde el proyecto**. Los colores, superficies y tipografía se derivan de variables CSS —los tokens `--vuno-*`—; la curvatura usa directamente la escala predeterminada de Tailwind. Lo que necesita comportamiento difícil —combobox, menú, pestañas, tooltip, campo numérico— lleva su patrón ARIA y su teclado escritos aquí, con [Floating UI](https://floating-ui.com) para colocar lo que flota y nada más; el resto son elementos nativos.
|
|
6
6
|
|
|
7
|
-
Un color
|
|
7
|
+
Un color literal dentro de un componente es un error: si algo no se puede cambiar desde los tokens, falta un token. Para radios se usan las utilidades estándar de Tailwind.
|
|
8
8
|
|
|
9
9
|
## Documentación
|
|
10
10
|
|
|
@@ -87,7 +87,28 @@ const definition = {
|
|
|
87
87
|
|
|
88
88
|
### Tipos de campo
|
|
89
89
|
|
|
90
|
-
`text` · `email` · `password` · `textarea` · `number` · `select` · `radio` · `checkbox` · `switch` · `color` · `slug` · `file` · `array`
|
|
90
|
+
`text` · `search` · `email` · `password` · `textarea` · `number` · `select` · `radio` · `checkbox` · `switch` · `color` · `slug` · `file` · `array`
|
|
91
|
+
|
|
92
|
+
Los mismos campos son componentes públicos y ya incluyen etiqueta, descripción, ayuda y error. Dentro de `VForm` leen y escriben por `name`; fuera usan su propio `v-model`:
|
|
93
|
+
|
|
94
|
+
```vue
|
|
95
|
+
<VFieldInput name="name" label="Nombre" />
|
|
96
|
+
|
|
97
|
+
<VFieldInput v-model="name" label="Nombre" />
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
La etiqueta va arriba por defecto. `orientation="horizontal"` la coloca al costado del control:
|
|
101
|
+
|
|
102
|
+
```vue
|
|
103
|
+
<VFieldSelect
|
|
104
|
+
v-model="role"
|
|
105
|
+
label="Rol"
|
|
106
|
+
orientation="horizontal"
|
|
107
|
+
:items="roles"
|
|
108
|
+
/>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Los controles básicos son implementación interna. Para campos propios, `VFormField` sigue disponible y puede envolver cualquier control; un `VField*` colocado dentro reconoce ese envoltorio y no crea uno duplicado.
|
|
91
112
|
|
|
92
113
|
`source` del campo `slug` es el **nombre** del campo del que deriva, no su valor.
|
|
93
114
|
|
|
@@ -296,18 +317,14 @@ key: () => productKeys.list(filtros) // solo refresca esa combinación de filtro
|
|
|
296
317
|
|
|
297
318
|
`useCrud` resuelve el listado durante el render en servidor, así que el HTML sale con las filas puestas y no aparecen al hidratar. Nuxt renderiza en servidor por defecto, de modo que esto no hay que activarlo.
|
|
298
319
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
```ts
|
|
302
|
-
// app/plugins/vue-query.ts
|
|
303
|
-
export default defineNuxtPlugin((nuxtApp) => {
|
|
304
|
-
const state = useState<DehydratedState | null>('vue-query', () => null)
|
|
305
|
-
const queryClient = new QueryClient()
|
|
320
|
+
Vuno registra TanStack Query y deshidrata su caché en el payload de Nuxt, de modo que el cliente hidrata lo resuelto en servidor sin repetir la primera consulta. No hace falta instalar ni configurar `@tanstack/vue-query` en el proyecto consumidor.
|
|
306
321
|
|
|
307
|
-
|
|
322
|
+
Si el proyecto ya aporta su propio `QueryClient`, desactiva el registro de Vuno y conserva esa configuración:
|
|
308
323
|
|
|
309
|
-
|
|
310
|
-
|
|
324
|
+
```ts [nuxt.config.ts]
|
|
325
|
+
export default defineNuxtConfig({
|
|
326
|
+
modules: ['@groupteknology/vuno'],
|
|
327
|
+
vuno: { vueQuery: false },
|
|
311
328
|
})
|
|
312
329
|
```
|
|
313
330
|
|
|
@@ -319,14 +336,6 @@ Con la clave incompleta no se espera nada: la consulta está suspendida y espera
|
|
|
319
336
|
|
|
320
337
|
Si compruebas esto con un test, **mira el HTML renderizado, no el payload**. El payload lleva la consulta resuelta aunque el prefetch esté apagado, porque la consulta se asienta después del render y el plugin deshidrata lo que encuentra: un assert sobre el payload pasa en las dos direcciones y no mide nada.
|
|
321
338
|
|
|
322
|
-
**`@tanstack/vue-query` lo instala el proyecto**, y solo hace falta si usas este composable:
|
|
323
|
-
|
|
324
|
-
```bash
|
|
325
|
-
pnpm add @tanstack/vue-query
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
No se declara como dependencia opcional del módulo a propósito. npm instala igualmente los `peerDependencies` marcados como opcionales, y como los de vue-query admiten Vue 2, acababa colocando `vue@2.6.14` en la raíz y chocando con el `vue@^3.5.0` que pide vuno: `npm install @groupteknology/vuno` fallaba con `ERESOLVE` en un proyecto Nuxt que no declarara `vue` por su cuenta. Con pnpm no ocurría, que es por lo que tardó en verse.
|
|
329
|
-
|
|
330
339
|
## Páginas
|
|
331
340
|
|
|
332
341
|
`VPage` pone la estructura que repite cualquier pantalla de mantenimiento:
|
|
@@ -461,6 +470,18 @@ Los dos estados existen además sueltos, para las pantallas que no son una tabla
|
|
|
461
470
|
<VState tone="failure" :failure="failure" />
|
|
462
471
|
```
|
|
463
472
|
|
|
473
|
+
Un aviso que acompaña contenido existente usa `VAlert`. Es persistente, toma los mismos colores semánticos del tema y usa `role="status"` por defecto; `role="alert"` queda para lo urgente:
|
|
474
|
+
|
|
475
|
+
```vue
|
|
476
|
+
<VAlert
|
|
477
|
+
color="warning"
|
|
478
|
+
title="Faltan datos de facturación"
|
|
479
|
+
description="Completa la dirección fiscal antes de emitir una factura."
|
|
480
|
+
>
|
|
481
|
+
<template #actions><VButton label="Completar datos" variant="outline" /></template>
|
|
482
|
+
</VAlert>
|
|
483
|
+
```
|
|
484
|
+
|
|
464
485
|
Tipos de columna: `text` · `number` · `currency` · `date` · `boolean` · `badge` · `image` · `custom` · `actions`. Trae búsqueda con antirrebote, paginación, selección múltiple, panel lateral de filtros y menú de acciones por fila.
|
|
465
486
|
|
|
466
487
|
## Diálogos de confirmación
|
|
@@ -519,15 +540,22 @@ Se pinta en `<VApp>` y no en la pantalla que lo abrió, así que navegar no lo d
|
|
|
519
540
|
| `useField` | Lee y escribe un campo por su ruta; para construir campos propios. |
|
|
520
541
|
| `useTheme` | Resuelve los slots de un componente cruzando tema, `app.config` y prop `ui`. |
|
|
521
542
|
| `useIcons` | Los iconos configurados en `vuno.icons`. |
|
|
543
|
+
| `useLocale` | El idioma configurado para fechas, números y monedas. |
|
|
522
544
|
| `useMessages` | Los textos configurados en `vuno.messages`. |
|
|
545
|
+
| `useToast` | Notificaciones globales que no interrumpen. |
|
|
546
|
+
| `useConfirm` | Confirmación global que devuelve la respuesta como promesa. |
|
|
547
|
+
| `useOverlay` | Abre componentes como capas globales desde código. |
|
|
548
|
+
| `useModal` | Resuelve y abre los modales del proyecto por nombre. |
|
|
549
|
+
| `useContext` | Acceso de bajo nivel al contexto provisto por `VApp`. |
|
|
550
|
+
| `defineShortcuts` | Declara atajos de teclado reactivos y ligados al ciclo de vida. |
|
|
523
551
|
|
|
524
|
-
|
|
552
|
+
`useTheme`, `useIcons`, `useLocale` y `useMessages` existen para que un componente tuyo pueda usar la misma configuración visual y regional que los de vuno sin duplicarla.
|
|
525
553
|
|
|
526
554
|
## Personalización
|
|
527
555
|
|
|
528
556
|
### Los tokens
|
|
529
557
|
|
|
530
|
-
**Es el primer sitio al que hay que ir, y casi siempre el único.**
|
|
558
|
+
**Es el primer sitio al que hay que ir, y casi siempre el único.** El color y la jerarquía de texto de vuno salen de variables CSS que se redefinen desde el proyecto. El caso mínimo, en cualquier hoja que cargue tu aplicación:
|
|
531
559
|
|
|
532
560
|
```css
|
|
533
561
|
:root {
|
|
@@ -548,11 +576,11 @@ Los que hay:
|
|
|
548
576
|
| `--vuno-surface` · `--vuno-surface-1` · `--vuno-surface-2` · `--vuno-surface-inverse` | La escala de elevación: **cada cosa sube un escalón sobre lo que la sostiene**. La página es la base —blanco en claro, negro en oscuro—, lo que se levanta de ella es el 1 y lo que se levanta dentro de algo ya levantado es el 2. |
|
|
549
577
|
| `--vuno-text-strong` · `-body` · `-muted` · `-subtle` · `-inverse` | El texto por jerarquía, no por color. |
|
|
550
578
|
| `--vuno-border` · `--vuno-border-strong` | El borde que decora y el que delimita un control. |
|
|
551
|
-
| `--vuno-radius` | La curvatura de todo. |
|
|
552
579
|
| `--vuno-backdrop` | El velo que oscurece detrás de un diálogo. |
|
|
553
580
|
|
|
554
581
|
Dos cosas que ahorran un rato:
|
|
555
582
|
|
|
583
|
+
- **La curvatura usa Tailwind directamente.** El tema predeterminado usa `rounded-sm` y la prop `radius` admite `xs`, `sm`, `md`, `lg`, `xl`, `2xl`, `3xl`, `4xl` y `full`.
|
|
556
584
|
- **El tema oscuro se redefine aparte**, bajo `.dark`. Si solo cambias `:root`, el modo oscuro se queda con el valor de serie.
|
|
557
585
|
- **Cada acento sólido necesita su contraste.** Un `--vuno-warning` claro con texto blanco no se lee; por eso el ámbar de serie trae texto oscuro.
|
|
558
586
|
|
|
@@ -593,14 +621,12 @@ En desarrollo.
|
|
|
593
621
|
|
|
594
622
|
### Nota sobre pruebas automatizadas
|
|
595
623
|
|
|
596
|
-
|
|
624
|
+
Dos trampas, las dos medidas aquí, que hacen que una comprobación afirme lo contrario de lo que pasa.
|
|
597
625
|
|
|
598
626
|
**Una pestaña oculta no pinta.** Con la ventana de fondo, `document.visibilityState` es `hidden`, `requestAnimationFrame` **no dispara nunca** y con él se paran las transiciones: un diálogo puede no llegar a abrirse y una captura caducar. El DOM y las medidas de disposición sí funcionan, así que se puede comprobar casi todo; lo que no se puede es dar por cerrado un componente porque su nodo siga ahí. Mira el estado (`opacity`, `data-state`) y no la existencia del nodo, o haz la prueba con la pestaña delante.
|
|
599
627
|
|
|
600
628
|
**`getComputedStyle` se queda con el valor viejo tras cambiar un token.** Si redefines `--vuno-primary` y vuelves a leer un elemento que ya existía, puede devolverte el color anterior aunque la variable ya valga otra cosa. Se nota porque el valor sale en `oklab` en vez de en `oklch`. Lee sobre un elemento **creado después** del cambio —o sobre un clon del que te interesa— y el valor es el nuevo.
|
|
601
629
|
|
|
602
|
-
**Un control de Reka no responde a un clic sintético.** Sus botones actúan en `pointerdown`, no en `click`, y las flechas necesitan foco de verdad: un `.click()` o un `.focus()` desde el script no disparan nada y parece que el componente está roto. Los controles nativos —casilla, interruptor, radio— sí responden a `click()`, así que ahí el clic sintético vale.
|
|
603
|
-
|
|
604
630
|
## Licencia
|
|
605
631
|
|
|
606
632
|
[MIT](./LICENSE) © Diego Otayza
|
package/dist/module.d.mts
CHANGED
|
@@ -5,6 +5,8 @@ interface ModuleOptions {
|
|
|
5
5
|
prefix?: string;
|
|
6
6
|
/** Registrar el compilador de Tailwind. Ponlo en `false` si ya lo monta el proyecto. */
|
|
7
7
|
tailwind?: boolean;
|
|
8
|
+
/** Registrar TanStack Query con hidratación SSR. Ponlo en `false` si el proyecto ya aporta su propio cliente. */
|
|
9
|
+
vueQuery?: boolean;
|
|
8
10
|
}
|
|
9
11
|
declare const module$1: NuxtModule<ModuleOptions>;
|
|
10
12
|
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import { defineNuxtModule, createResolver, addComponentsDir, addImportsDir, addTemplate, addVitePlugin } from '@nuxt/kit';
|
|
2
|
-
import { sep } from 'node:path';
|
|
1
|
+
import { defineNuxtModule, createResolver, addComponent, resolveModule, addTypeTemplate, addComponentsDir, addImportsDir, addPlugin, addTemplate, addVitePlugin } from '@nuxt/kit';
|
|
3
2
|
import tailwindcss from '@tailwindcss/vite';
|
|
3
|
+
import { sep } from 'node:path';
|
|
4
4
|
|
|
5
5
|
const module$1 = defineNuxtModule({
|
|
6
6
|
defaults: {
|
|
7
7
|
prefix: "V",
|
|
8
|
-
tailwind: true
|
|
8
|
+
tailwind: true,
|
|
9
|
+
vueQuery: true
|
|
9
10
|
},
|
|
10
11
|
meta: {
|
|
11
12
|
name: "vuno",
|
|
12
13
|
configKey: "vuno"
|
|
13
14
|
},
|
|
14
15
|
moduleDependencies: {
|
|
15
|
-
/*
|
|
16
|
-
* Los iconos del módulo se pintan con el componente global `Icon`, que
|
|
17
|
-
* trae `@nuxt/icon`. Hoy llega de rebote porque lo instala Nuxt UI, y
|
|
18
|
-
* eso no basta: `Base/Icon.vue` cae en un `<span>` vacío cuando el
|
|
19
|
-
* global no está registrado —que es lo correcto— y por tanto quedarse
|
|
20
|
-
* sin él no rompe nada, solo deja la interfaz sin iconos.
|
|
21
|
-
*/
|
|
22
16
|
"@nuxt/icon": {
|
|
23
17
|
defaults: {
|
|
24
18
|
clientBundle: {
|
|
@@ -29,10 +23,36 @@ const module$1 = defineNuxtModule({
|
|
|
29
23
|
},
|
|
30
24
|
setup(options, nuxt) {
|
|
31
25
|
const resolver = createResolver(import.meta.url);
|
|
32
|
-
|
|
26
|
+
const runtimeDir = resolver.resolve("./runtime/app");
|
|
27
|
+
addComponent({
|
|
28
|
+
name: "VunoIconRenderer",
|
|
29
|
+
filePath: resolveModule("@nuxt/icon/runtime/components/index", { url: new URL(import.meta.url) }),
|
|
30
|
+
global: true
|
|
31
|
+
});
|
|
32
|
+
nuxt.options.alias["#vuno"] = runtimeDir;
|
|
33
|
+
nuxt.hook("prepare:types", ({ nodeTsConfig }) => {
|
|
34
|
+
nodeTsConfig.compilerOptions ??= {};
|
|
35
|
+
nodeTsConfig.compilerOptions.paths ??= {};
|
|
36
|
+
nodeTsConfig.compilerOptions.paths["#vuno"] = [runtimeDir];
|
|
37
|
+
nodeTsConfig.compilerOptions.paths["#vuno/*"] = [`${runtimeDir}/*`];
|
|
38
|
+
});
|
|
39
|
+
addTypeTemplate({
|
|
40
|
+
filename: "types/vuno-page-meta.d.ts",
|
|
41
|
+
getContents: () => `declare module '#app' {
|
|
42
|
+
interface PageMeta {
|
|
43
|
+
/** T\xEDtulo de la p\xE1gina disponible tambi\xE9n mediante \`route.meta.title\`. */
|
|
44
|
+
title?: string
|
|
45
|
+
/** \xCDndice declarativo disponible durante el render del servidor. */
|
|
46
|
+
toc?: import('@groupteknology/vuno').VunoNavigationTocItem[]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export {}
|
|
51
|
+
`
|
|
52
|
+
});
|
|
33
53
|
addComponentsDir({
|
|
34
54
|
global: true,
|
|
35
|
-
ignore: ["
|
|
55
|
+
ignore: ["**/internal/**"],
|
|
36
56
|
path: resolver.resolve("./runtime/app/components"),
|
|
37
57
|
pathPrefix: false,
|
|
38
58
|
prefix: options.prefix
|
|
@@ -44,6 +64,7 @@ const module$1 = defineNuxtModule({
|
|
|
44
64
|
}
|
|
45
65
|
});
|
|
46
66
|
addImportsDir(resolver.resolve("./runtime/app/composables"));
|
|
67
|
+
if (options.vueQuery) addPlugin(resolver.resolve("./runtime/app/plugins/vue-query"));
|
|
47
68
|
addTemplate({
|
|
48
69
|
filename: "vuno.css",
|
|
49
70
|
write: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--vuno-modal-duration:180ms;--vuno-modal-ease:cubic-bezier(0.32,0.72,0,1);--vuno-backdrop:rgba(0,0,0,.5)}dialog{opacity:0;transform:scale(.97) translateY(.5rem);transition:opacity var(--vuno-modal-duration) var(--vuno-modal-ease),transform var(--vuno-modal-duration) var(--vuno-modal-ease),display var(--vuno-modal-duration) allow-discrete,overlay var(--vuno-modal-duration) allow-discrete}dialog[open]{opacity:1;transform:scale(1) translateY(0)}@starting-style{dialog[open]{opacity:0;transform:scale(.97) translateY(.5rem)}}dialog::backdrop{background-color:transparent;transition:background-color var(--vuno-modal-duration) var(--vuno-modal-ease),display var(--vuno-modal-duration) allow-discrete,overlay var(--vuno-modal-duration) allow-discrete}dialog[open]::backdrop{background-color:var(--vuno-backdrop)}@starting-style{dialog[open]::backdrop{background-color:transparent}}dialog[data-position=end],dialog[data-position=start]{transform:translateX(var(--vuno-panel-from))}dialog[data-position=end]{--vuno-panel-from:100%}[dir=rtl] dialog[data-position=end],dialog[data-position=start]{--vuno-panel-from:-100%}[dir=rtl] dialog[data-position=start]{--vuno-panel-from:100%}dialog[data-position=end][open],dialog[data-position=start][open]{transform:translateX(0)}@starting-style{dialog[data-position=end][open],dialog[data-position=start][open]{transform:translateX(var(--vuno-panel-from))}}dialog.vuno-overlay-behind::backdrop,dialog.vuno-overlay-behind[open]::backdrop{background-color:transparent}@media (prefers-reduced-motion:reduce){dialog,dialog::backdrop{transition-duration:1ms}dialog,dialog[data-position=end],dialog[data-position=end][open],dialog[data-position=start],dialog[data-position=start][open]{transform:none}}
|
|
1
|
+
:root{--vuno-modal-duration:180ms;--vuno-modal-ease:cubic-bezier(0.32,0.72,0,1);--vuno-backdrop:rgba(0,0,0,.5)}dialog[data-vuno-modal]{opacity:0;transform:scale(.97) translateY(.5rem);transition:opacity var(--vuno-modal-duration) var(--vuno-modal-ease),transform var(--vuno-modal-duration) var(--vuno-modal-ease),display var(--vuno-modal-duration) allow-discrete,overlay var(--vuno-modal-duration) allow-discrete}dialog[data-vuno-modal][open]{opacity:1;transform:scale(1) translateY(0)}@starting-style{dialog[data-vuno-modal][open]{opacity:0;transform:scale(.97) translateY(.5rem)}}dialog[data-vuno-modal]::backdrop{background-color:transparent;transition:background-color var(--vuno-modal-duration) var(--vuno-modal-ease),display var(--vuno-modal-duration) allow-discrete,overlay var(--vuno-modal-duration) allow-discrete}dialog[data-vuno-modal][open]::backdrop{background-color:var(--vuno-backdrop)}@starting-style{dialog[data-vuno-modal][open]::backdrop{background-color:transparent}}dialog[data-vuno-modal][data-position=end],dialog[data-vuno-modal][data-position=start]{transform:translateX(var(--vuno-panel-from))}dialog[data-vuno-modal][data-position=end]{--vuno-panel-from:100%}[dir=rtl] dialog[data-vuno-modal][data-position=end],dialog[data-vuno-modal][data-position=start]{--vuno-panel-from:-100%}[dir=rtl] dialog[data-vuno-modal][data-position=start]{--vuno-panel-from:100%}dialog[data-vuno-modal][data-position=end][open],dialog[data-vuno-modal][data-position=start][open]{transform:translateX(0)}@starting-style{dialog[data-vuno-modal][data-position=end][open],dialog[data-vuno-modal][data-position=start][open]{transform:translateX(var(--vuno-panel-from))}}dialog[data-vuno-modal].vuno-overlay-behind::backdrop,dialog[data-vuno-modal].vuno-overlay-behind[open]::backdrop{background-color:transparent}@media (prefers-reduced-motion:reduce){dialog[data-vuno-modal],dialog[data-vuno-modal]::backdrop{transition-duration:1ms}dialog[data-vuno-modal],dialog[data-vuno-modal][data-position=end],dialog[data-vuno-modal][data-position=end][open],dialog[data-vuno-modal][data-position=start],dialog[data-vuno-modal][data-position=start][open]{transform:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "tailwindcss";@import "./tokens.css";@import "./theme.css";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@theme inline{--color-vuno-primary:var(--vuno-primary);--color-vuno-primary-contrast:var(--vuno-primary-contrast);--color-vuno-secondary:var(--vuno-secondary);--color-vuno-secondary-contrast:var(--vuno-secondary-contrast);--color-vuno-neutral:var(--vuno-neutral);--color-vuno-neutral-contrast:var(--vuno-neutral-contrast);--color-vuno-surface:var(--vuno-surface);--color-vuno-surface-1:var(--vuno-surface-1);--color-vuno-surface-2:var(--vuno-surface-2);--color-vuno-surface-inverse:var(--vuno-surface-inverse);--color-vuno-strong:var(--vuno-text-strong);--color-vuno-body:var(--vuno-text-body);--color-vuno-muted:var(--vuno-text-muted);--color-vuno-subtle:var(--vuno-text-subtle);--color-vuno-inverse:var(--vuno-text-inverse);--font-sans:var(--vuno-font-sans);--font-mono:var(--vuno-font-mono);--color-vuno-border:var(--vuno-border);--color-vuno-border-strong:var(--vuno-border-strong);--color-vuno-success:var(--vuno-success);--color-vuno-success-contrast:var(--vuno-success-contrast);--color-vuno-info:var(--vuno-info);--color-vuno-info-contrast:var(--vuno-info-contrast);--color-vuno-warning:var(--vuno-warning);--color-vuno-warning-contrast:var(--vuno-warning-contrast);--color-vuno-error:var(--vuno-error);--color-vuno-error-contrast:var(--vuno-error-contrast);--
|
|
1
|
+
@theme inline{--color-vuno-primary:var(--vuno-primary);--color-vuno-primary-contrast:var(--vuno-primary-contrast);--color-vuno-secondary:var(--vuno-secondary);--color-vuno-secondary-contrast:var(--vuno-secondary-contrast);--color-vuno-neutral:var(--vuno-neutral);--color-vuno-neutral-contrast:var(--vuno-neutral-contrast);--color-vuno-surface:var(--vuno-surface);--color-vuno-surface-1:var(--vuno-surface-1);--color-vuno-surface-2:var(--vuno-surface-2);--color-vuno-surface-inverse:var(--vuno-surface-inverse);--color-vuno-strong:var(--vuno-text-strong);--color-vuno-body:var(--vuno-text-body);--color-vuno-muted:var(--vuno-text-muted);--color-vuno-subtle:var(--vuno-text-subtle);--color-vuno-inverse:var(--vuno-text-inverse);--font-sans:var(--vuno-font-sans);--font-mono:var(--vuno-font-mono);--color-vuno-border:var(--vuno-border);--color-vuno-border-strong:var(--vuno-border-strong);--color-vuno-success:var(--vuno-success);--color-vuno-success-contrast:var(--vuno-success-contrast);--color-vuno-info:var(--vuno-info);--color-vuno-info-contrast:var(--vuno-info-contrast);--color-vuno-warning:var(--vuno-warning);--color-vuno-warning-contrast:var(--vuno-warning-contrast);--color-vuno-error:var(--vuno-error);--color-vuno-error-contrast:var(--vuno-error-contrast);--container-8xl:96rem}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer base{:root{color-scheme:light;--vuno-color-white:oklch(100% 0 0);--vuno-color-slate-50:oklch(98.4% 0.003 247.858);--vuno-color-slate-100:oklch(96.8% 0.007 247.896);--vuno-color-slate-200:oklch(92.9% 0.013 255.508);--vuno-color-slate-300:oklch(86.9% 0.022 252.894);--vuno-color-slate-400:oklch(70.4% 0.04 256.788);--vuno-color-slate-500:oklch(55.4% 0.046 257.417);--vuno-color-slate-600:oklch(44.6% 0.043 257.281);--vuno-color-slate-700:oklch(37.2% 0.044 257.287);--vuno-color-slate-800:oklch(27.9% 0.041 260.031);--vuno-color-slate-900:oklch(20.8% 0.042 265.755);--vuno-color-slate-950:oklch(12.9% 0.042 264.695);--vuno-color-black:oklch(0% 0 0);--vuno-color-blue-400:oklch(70.7% 0.165 254.624);--vuno-color-blue-600:oklch(54.6% 0.245 262.881);--vuno-color-violet-400:oklch(70.2% 0.183 293.541);--vuno-color-violet-600:oklch(54.1% 0.281 293.009);--vuno-color-emerald-400:oklch(76.5% 0.177 163.223);--vuno-color-emerald-700:oklch(50.8% 0.118 165.612);--vuno-color-cyan-400:oklch(78.9% 0.154 211.53);--vuno-color-cyan-700:oklch(52% 0.105 223.128);--vuno-color-red-400:oklch(70.4% 0.191 22.216);--vuno-color-red-700:oklch(50.5% 0.213 27.518);--vuno-color-amber-300:oklch(87.9% 0.169 91.605);--vuno-color-amber-400:oklch(82.8% 0.189 84.429);--dashboard-navbar-height:64px;--dashboard-aside-width:384px;--vuno-
|
|
1
|
+
@layer base{:root{color-scheme:light;--vuno-color-white:oklch(100% 0 0);--vuno-color-slate-50:oklch(98.4% 0.003 247.858);--vuno-color-slate-100:oklch(96.8% 0.007 247.896);--vuno-color-slate-200:oklch(92.9% 0.013 255.508);--vuno-color-slate-300:oklch(86.9% 0.022 252.894);--vuno-color-slate-400:oklch(70.4% 0.04 256.788);--vuno-color-slate-500:oklch(55.4% 0.046 257.417);--vuno-color-slate-600:oklch(44.6% 0.043 257.281);--vuno-color-slate-700:oklch(37.2% 0.044 257.287);--vuno-color-slate-800:oklch(27.9% 0.041 260.031);--vuno-color-slate-900:oklch(20.8% 0.042 265.755);--vuno-color-slate-950:oklch(12.9% 0.042 264.695);--vuno-color-black:oklch(0% 0 0);--vuno-color-blue-400:oklch(70.7% 0.165 254.624);--vuno-color-blue-600:oklch(54.6% 0.245 262.881);--vuno-color-violet-400:oklch(70.2% 0.183 293.541);--vuno-color-violet-600:oklch(54.1% 0.281 293.009);--vuno-color-emerald-400:oklch(76.5% 0.177 163.223);--vuno-color-emerald-700:oklch(50.8% 0.118 165.612);--vuno-color-cyan-400:oklch(78.9% 0.154 211.53);--vuno-color-cyan-700:oklch(52% 0.105 223.128);--vuno-color-red-400:oklch(70.4% 0.191 22.216);--vuno-color-red-700:oklch(50.5% 0.213 27.518);--vuno-color-amber-300:oklch(87.9% 0.169 91.605);--vuno-color-amber-400:oklch(82.8% 0.189 84.429);--dashboard-navbar-height:64px;--dashboard-aside-width:384px;--vuno-font-sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--vuno-font-mono:"JetBrains Mono",ui-monospace,"Cascadia Code","Source Code Pro",Menlo,monospace;--vuno-primary:var(--vuno-color-blue-600);--vuno-primary-contrast:var(--vuno-color-white);--vuno-secondary:var(--vuno-color-violet-600);--vuno-secondary-contrast:var(--vuno-color-white);--vuno-neutral:var(--vuno-color-slate-600);--vuno-neutral-contrast:var(--vuno-color-white);--vuno-surface:var(--vuno-color-white);--vuno-surface-1:var(--vuno-color-slate-100);--vuno-surface-2:var(--vuno-color-slate-200);--vuno-surface-inverse:var(--vuno-color-slate-900);--vuno-text-strong:var(--vuno-color-slate-900);--vuno-text-body:var(--vuno-color-slate-700);--vuno-text-muted:var(--vuno-color-slate-600);--vuno-text-subtle:var(--vuno-color-slate-400);--vuno-text-inverse:var(--vuno-color-slate-50);--vuno-border:var(--vuno-color-slate-300);--vuno-border-strong:var(--vuno-color-slate-500);--vuno-success:var(--vuno-color-emerald-700);--vuno-success-contrast:var(--vuno-color-white);--vuno-info:var(--vuno-color-cyan-700);--vuno-info-contrast:var(--vuno-color-white);--vuno-warning:var(--vuno-color-amber-400);--vuno-warning-contrast:var(--vuno-color-slate-900);--vuno-error:var(--vuno-color-red-700);--vuno-error-contrast:var(--vuno-color-white)}.dark{color-scheme:dark;--vuno-primary:var(--vuno-color-blue-400);--vuno-primary-contrast:var(--vuno-color-slate-950);--vuno-secondary:var(--vuno-color-violet-400);--vuno-secondary-contrast:var(--vuno-color-slate-950);--vuno-neutral:var(--vuno-color-slate-400);--vuno-neutral-contrast:var(--vuno-color-slate-950);--vuno-surface:var(--vuno-color-black);--vuno-surface-1:var(--vuno-color-slate-900);--vuno-surface-2:var(--vuno-color-slate-800);--vuno-surface-inverse:var(--vuno-color-slate-50);--vuno-text-strong:var(--vuno-color-white);--vuno-text-body:var(--vuno-color-slate-200);--vuno-text-muted:var(--vuno-color-slate-400);--vuno-text-subtle:var(--vuno-color-slate-500);--vuno-text-inverse:var(--vuno-color-slate-900);--vuno-border:var(--vuno-color-slate-700);--vuno-border-strong:var(--vuno-color-slate-500);--vuno-success:var(--vuno-color-emerald-400);--vuno-success-contrast:var(--vuno-color-slate-950);--vuno-info:var(--vuno-color-cyan-400);--vuno-info-contrast:var(--vuno-color-slate-950);--vuno-warning:var(--vuno-color-amber-300);--vuno-warning-contrast:var(--vuno-color-slate-950);--vuno-error:var(--vuno-color-red-400);--vuno-error-contrast:var(--vuno-color-slate-950)}html{scrollbar-gutter:stable}body{background-color:var(--vuno-surface);color:var(--vuno-text-body);font-family:var(--vuno-font-sans);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { VunoAlertProps } from '#vuno/types/alert';
|
|
2
|
+
import type { VunoColor } from '#vuno/types/base';
|
|
3
|
+
type __VLS_Slots = {
|
|
4
|
+
/** Acciones relacionadas con el aviso. */
|
|
5
|
+
actions?: () => unknown;
|
|
6
|
+
/** Contenido que sustituye a `description`. */
|
|
7
|
+
default?: () => unknown;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_base: import("vue").DefineComponent<VunoAlertProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoAlertProps> & Readonly<{}>, {
|
|
10
|
+
color: VunoColor;
|
|
11
|
+
role: "alert" | "status";
|
|
12
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
14
|
+
declare const _default: typeof __VLS_export;
|
|
15
|
+
export default _default;
|
|
16
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
17
|
+
new (): {
|
|
18
|
+
$slots: S;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const alertTheme: Record<"alert", {
|
|
2
|
+
readonly slots: {
|
|
3
|
+
readonly actions: "mt-3 flex flex-wrap items-center gap-2 empty:hidden";
|
|
4
|
+
readonly body: "min-w-0 flex-1";
|
|
5
|
+
readonly description: "mt-1 text-sm text-vuno-body";
|
|
6
|
+
readonly icon: "size-5 shrink-0 self-center text-(--vuno-accent)";
|
|
7
|
+
readonly root: "flex w-full items-start gap-3 rounded-sm bg-(--vuno-accent)/10 p-4 ring-1 ring-(--vuno-accent)/25 ring-inset";
|
|
8
|
+
readonly title: "font-medium text-vuno-strong";
|
|
9
|
+
};
|
|
10
|
+
readonly variants: {
|
|
11
|
+
readonly color: Record<import("../../types/base.js").VunoColor, Record<"root", string>>;
|
|
12
|
+
};
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { accentByColor } from "#vuno/theme/shared";
|
|
2
|
+
import { defineTheme } from "#vuno/utils/theme";
|
|
3
|
+
export const alertTheme = defineTheme("alert", {
|
|
4
|
+
slots: {
|
|
5
|
+
actions: "mt-3 flex flex-wrap items-center gap-2 empty:hidden",
|
|
6
|
+
body: "min-w-0 flex-1",
|
|
7
|
+
description: "mt-1 text-sm text-vuno-body",
|
|
8
|
+
icon: "size-5 shrink-0 self-center text-(--vuno-accent)",
|
|
9
|
+
root: "flex w-full items-start gap-3 rounded-sm bg-(--vuno-accent)/10 p-4 ring-1 ring-(--vuno-accent)/25 ring-inset",
|
|
10
|
+
title: "font-medium text-vuno-strong"
|
|
11
|
+
},
|
|
12
|
+
variants: { color: accentByColor("root") }
|
|
13
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
import { useIcons, useTheme } from "#vuno/composables/useTheme";
|
|
4
|
+
import Icon from "#vuno/components/Icon/Icon.vue";
|
|
5
|
+
defineOptions({ name: "VunoAlert" });
|
|
6
|
+
const props = defineProps({
|
|
7
|
+
color: { type: String, required: false, default: "info" },
|
|
8
|
+
description: { type: String, required: false },
|
|
9
|
+
icon: { type: [null, String], required: false },
|
|
10
|
+
role: { type: String, required: false, default: "status" },
|
|
11
|
+
title: { type: String, required: true },
|
|
12
|
+
ui: { type: Object, required: false }
|
|
13
|
+
});
|
|
14
|
+
defineSlots();
|
|
15
|
+
const icons = useIcons();
|
|
16
|
+
const defaultIcons = {
|
|
17
|
+
error: icons.value.notifyError,
|
|
18
|
+
info: icons.value.notifyInfo,
|
|
19
|
+
neutral: icons.value.notifyInfo,
|
|
20
|
+
primary: icons.value.notifyInfo,
|
|
21
|
+
secondary: icons.value.notifyInfo,
|
|
22
|
+
success: icons.value.notifySuccess,
|
|
23
|
+
warning: icons.value.notifyWarning
|
|
24
|
+
};
|
|
25
|
+
const iconName = computed(() => props.icon === null ? void 0 : props.icon ?? defaultIcons[props.color]);
|
|
26
|
+
const ui = useTheme(
|
|
27
|
+
"alert",
|
|
28
|
+
() => props.ui,
|
|
29
|
+
() => ({ color: props.color })
|
|
30
|
+
);
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<div
|
|
35
|
+
:class="ui.root"
|
|
36
|
+
:role="props.role"
|
|
37
|
+
>
|
|
38
|
+
<Icon
|
|
39
|
+
v-if="iconName"
|
|
40
|
+
:class="ui.icon"
|
|
41
|
+
:name="iconName"
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
<div :class="ui.body">
|
|
45
|
+
<p :class="ui.title">{{ props.title }}</p>
|
|
46
|
+
|
|
47
|
+
<div
|
|
48
|
+
v-if="props.description || $slots.default"
|
|
49
|
+
:class="ui.description"
|
|
50
|
+
>
|
|
51
|
+
<slot>{{ props.description }}</slot>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div :class="ui.actions">
|
|
55
|
+
<slot name="actions" />
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</template>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { VunoAlertProps } from '#vuno/types/alert';
|
|
2
|
+
import type { VunoColor } from '#vuno/types/base';
|
|
3
|
+
type __VLS_Slots = {
|
|
4
|
+
/** Acciones relacionadas con el aviso. */
|
|
5
|
+
actions?: () => unknown;
|
|
6
|
+
/** Contenido que sustituye a `description`. */
|
|
7
|
+
default?: () => unknown;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_base: import("vue").DefineComponent<VunoAlertProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VunoAlertProps> & Readonly<{}>, {
|
|
10
|
+
color: VunoColor;
|
|
11
|
+
role: "alert" | "status";
|
|
12
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
14
|
+
declare const _default: typeof __VLS_export;
|
|
15
|
+
export default _default;
|
|
16
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
17
|
+
new (): {
|
|
18
|
+
$slots: S;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -4,10 +4,9 @@ import type { VunoAlertRequest, VunoConfirmRequest, VunoNotifyRequest } from '#v
|
|
|
4
4
|
* Raíz del módulo: provee el contexto global, aloja los overlays y la pila
|
|
5
5
|
* de notificaciones.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* Reka, que antes ponía `UApp`.
|
|
7
|
+
* Monta directamente todo lo que necesitan las piezas del módulo.
|
|
9
8
|
*/
|
|
10
|
-
type
|
|
9
|
+
type Props = {
|
|
11
10
|
/**
|
|
12
11
|
* Dirección de lectura.
|
|
13
12
|
*
|
|
@@ -33,14 +32,14 @@ declare var __VLS_1: {};
|
|
|
33
32
|
type __VLS_Slots = {} & {
|
|
34
33
|
default?: (props: typeof __VLS_1) => any;
|
|
35
34
|
};
|
|
36
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
35
|
+
declare const __VLS_base: import("vue").DefineComponent<Props, {
|
|
37
36
|
alert: (request: VunoAlertRequest) => Promise<void>;
|
|
38
37
|
closeAll: typeof closeAll;
|
|
39
38
|
confirm: (request: VunoConfirmRequest) => Promise<boolean>;
|
|
40
39
|
dismiss: typeof dismiss;
|
|
41
40
|
notify: typeof notify;
|
|
42
41
|
open: typeof open;
|
|
43
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<
|
|
42
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
44
43
|
dir: "ltr" | "rtl";
|
|
45
44
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
46
45
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { markRaw, onBeforeUnmount, provide, reactive, shallowReactive } from "vue";
|
|
3
|
-
import Confirm from "#vuno/components/overlays/Confirm.vue";
|
|
4
3
|
import { vunoContextInjectionKey, vunoDirectionInjectionKey } from "#vuno/internal/keys";
|
|
5
|
-
import Overlay from "#vuno/components/
|
|
6
|
-
import Toaster from "#vuno/components/
|
|
4
|
+
import Overlay from "#vuno/components/App/internal/Overlay/Overlay.vue";
|
|
5
|
+
import Toaster from "#vuno/components/App/internal/Toaster/Toaster.vue";
|
|
6
|
+
import Confirm from "#vuno/components/Confirm/Confirm.vue";
|
|
7
|
+
defineOptions({ name: "VunoApp" });
|
|
7
8
|
const props = defineProps({
|
|
8
9
|
dir: { type: String, required: false, default: "ltr" }
|
|
9
10
|
});
|
|
10
|
-
const overlays = reactive([]);
|
|
11
11
|
const notifications = shallowReactive([]);
|
|
12
|
+
const overlays = reactive([]);
|
|
12
13
|
let nextId = 0;
|
|
13
14
|
const EXIT_MS = 220;
|
|
14
15
|
function removeOverlay(id) {
|
|
@@ -128,14 +129,9 @@ defineExpose({ alert, closeAll, confirm, dismiss, notify, open });
|
|
|
128
129
|
|
|
129
130
|
<template>
|
|
130
131
|
<!--
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
Lo otro que daba era una fuente estable de `useId` para las piezas de
|
|
136
|
-
Reka. Eso lo resuelve ahora Vue: el `useId` de Nuxt coincide entre
|
|
137
|
-
servidor y cliente por sí solo, y es el que usan los componentes del
|
|
138
|
-
módulo desde que no hay ninguna pieza de Reka que dependa del contexto.
|
|
132
|
+
La dirección de lectura se pone en el elemento —de donde la lee el
|
|
133
|
+
navegador— y se provee además a los componentes que la necesitan.
|
|
134
|
+
Vue aporta un `useId` estable que Nuxt conserva entre servidor y cliente.
|
|
139
135
|
|
|
140
136
|
El `div` es la única forma de llevar el `dir` sin pedirle nada al
|
|
141
137
|
proyecto. No pinta: no tiene clase ni estilo, así que el hijo se
|
|
@@ -4,10 +4,9 @@ import type { VunoAlertRequest, VunoConfirmRequest, VunoNotifyRequest } from '#v
|
|
|
4
4
|
* Raíz del módulo: provee el contexto global, aloja los overlays y la pila
|
|
5
5
|
* de notificaciones.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* Reka, que antes ponía `UApp`.
|
|
7
|
+
* Monta directamente todo lo que necesitan las piezas del módulo.
|
|
9
8
|
*/
|
|
10
|
-
type
|
|
9
|
+
type Props = {
|
|
11
10
|
/**
|
|
12
11
|
* Dirección de lectura.
|
|
13
12
|
*
|
|
@@ -33,14 +32,14 @@ declare var __VLS_1: {};
|
|
|
33
32
|
type __VLS_Slots = {} & {
|
|
34
33
|
default?: (props: typeof __VLS_1) => any;
|
|
35
34
|
};
|
|
36
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
35
|
+
declare const __VLS_base: import("vue").DefineComponent<Props, {
|
|
37
36
|
alert: (request: VunoAlertRequest) => Promise<void>;
|
|
38
37
|
closeAll: typeof closeAll;
|
|
39
38
|
confirm: (request: VunoConfirmRequest) => Promise<boolean>;
|
|
40
39
|
dismiss: typeof dismiss;
|
|
41
40
|
notify: typeof notify;
|
|
42
41
|
open: typeof open;
|
|
43
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<
|
|
42
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
44
43
|
dir: "ltr" | "rtl";
|
|
45
44
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
46
45
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { VunoOverlayEntry } from '#vuno/types/app';
|
|
2
|
+
type Props = {
|
|
3
|
+
overlays: readonly VunoOverlayEntry[];
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
declare const _default: typeof __VLS_export;
|
|
7
|
+
export default _default;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed } from "vue";
|
|
3
|
+
import OverlayItem from "#vuno/components/App/internal/OverlayItem/OverlayItem.vue";
|
|
4
|
+
defineOptions({ name: "VunoOverlay" });
|
|
3
5
|
const props = defineProps({
|
|
4
6
|
overlays: { type: Array, required: true }
|
|
5
7
|
});
|
|
@@ -28,13 +30,10 @@ const isTopmost = (index) => index === topmost.value;
|
|
|
28
30
|
Tampoco lleva contenedor propio: cada diálogo se sale del flujo por su
|
|
29
31
|
cuenta, así que un elemento aquí solo añadiría un nodo vacío.
|
|
30
32
|
-->
|
|
31
|
-
<
|
|
32
|
-
:is="entry.component"
|
|
33
|
+
<OverlayItem
|
|
33
34
|
v-for="(entry, index) in props.overlays"
|
|
34
35
|
:key="entry.id"
|
|
35
|
-
|
|
36
|
-
:
|
|
37
|
-
:open="entry.open"
|
|
38
|
-
v-on="entry.listeners"
|
|
36
|
+
:behind="!isTopmost(index)"
|
|
37
|
+
:entry="entry"
|
|
39
38
|
/>
|
|
40
39
|
</template>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { VunoOverlayEntry } from '#vuno/types/app';
|
|
2
|
+
type Props = {
|
|
3
|
+
overlays: readonly VunoOverlayEntry[];
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
declare const _default: typeof __VLS_export;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VunoOverlayEntry } from '#vuno/types/app';
|
|
2
|
+
type Props = {
|
|
3
|
+
behind: boolean;
|
|
4
|
+
entry: VunoOverlayEntry;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { provide } from "vue";
|
|
3
|
+
import { vunoOverlayBehindInjectionKey } from "#vuno/internal/keys";
|
|
4
|
+
defineOptions({ name: "VunoOverlayItem" });
|
|
5
|
+
const props = defineProps({
|
|
6
|
+
behind: { type: Boolean, required: true },
|
|
7
|
+
entry: { type: Object, required: true }
|
|
8
|
+
});
|
|
9
|
+
provide(vunoOverlayBehindInjectionKey, () => props.behind);
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<component
|
|
14
|
+
:is="props.entry.component"
|
|
15
|
+
v-bind="props.entry.props"
|
|
16
|
+
:open="props.entry.open"
|
|
17
|
+
v-on="props.entry.listeners"
|
|
18
|
+
/>
|
|
19
|
+
</template>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VunoOverlayEntry } from '#vuno/types/app';
|
|
2
|
+
type Props = {
|
|
3
|
+
behind: boolean;
|
|
4
|
+
entry: VunoOverlayEntry;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
8
|
+
export default _default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { VunoNotification } from '#vuno/types/app';
|
|
2
|
-
type
|
|
2
|
+
type Props = {
|
|
3
3
|
notification: VunoNotification;
|
|
4
4
|
};
|
|
5
|
-
declare const __VLS_export: import("vue").DefineComponent<
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
6
|
dismiss: () => any;
|
|
7
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
7
|
+
}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
|
|
8
8
|
onDismiss?: (() => any) | undefined;
|
|
9
9
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
10
|
declare const _default: typeof __VLS_export;
|