@groupteknology/vuno 2.0.0 → 3.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 +193 -175
- package/dist/module.json +1 -1
- package/dist/module.mjs +7 -1
- package/dist/runtime/app/assets/css/dialog.css +1 -1
- package/dist/runtime/app/assets/css/main.css +1 -1
- 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 +2 -2
- package/dist/runtime/app/components/Alert/Alert.theme.d.ts +7 -6
- package/dist/runtime/app/components/Alert/Alert.theme.js +7 -6
- package/dist/runtime/app/components/Alert/Alert.types.d.ts +10 -0
- package/dist/runtime/app/components/Alert/Alert.vue +17 -8
- package/dist/runtime/app/components/Alert/Alert.vue.d.ts +2 -2
- package/dist/runtime/app/components/App/App.d.vue.ts +3 -19
- package/dist/runtime/app/components/App/App.types.d.ts +4 -0
- package/dist/runtime/app/components/App/App.vue +48 -29
- package/dist/runtime/app/components/App/App.vue.d.ts +3 -19
- package/dist/runtime/app/components/App/internal/OverlayItem/OverlayItem.vue +2 -3
- package/dist/runtime/app/components/App/internal/Toast/Toast.theme.d.ts +5 -5
- package/dist/runtime/app/components/App/internal/Toast/Toast.theme.js +7 -9
- package/dist/runtime/app/components/App/internal/Toast/Toast.vue +27 -36
- package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.d.ts +3 -3
- package/dist/runtime/app/components/App/internal/Toaster/Toaster.theme.js +3 -3
- package/dist/runtime/app/components/Avatar/Avatar.d.vue.ts +5 -22
- package/dist/runtime/app/components/Avatar/Avatar.types.d.ts +10 -0
- package/dist/runtime/app/components/Avatar/Avatar.types.js +0 -0
- package/dist/runtime/app/components/Avatar/Avatar.vue.d.ts +5 -22
- package/dist/runtime/app/components/Badge/Badge.d.vue.ts +7 -26
- package/dist/runtime/app/components/Badge/Badge.types.d.ts +12 -0
- package/dist/runtime/app/components/Badge/Badge.types.js +0 -0
- package/dist/runtime/app/components/Badge/Badge.vue.d.ts +7 -26
- package/dist/runtime/app/components/Breadcrumb/Breadcrumb.d.vue.ts +7 -0
- package/dist/runtime/app/components/Breadcrumb/Breadcrumb.theme.d.ts +15 -0
- package/dist/runtime/app/components/Breadcrumb/Breadcrumb.theme.js +16 -0
- package/dist/runtime/app/components/Breadcrumb/Breadcrumb.types.d.ts +7 -0
- package/dist/runtime/app/components/Breadcrumb/Breadcrumb.types.js +0 -0
- package/dist/runtime/app/components/Breadcrumb/Breadcrumb.vue +109 -0
- package/dist/runtime/app/components/Breadcrumb/Breadcrumb.vue.d.ts +7 -0
- package/dist/runtime/app/components/Button/Button.d.vue.ts +11 -31
- package/dist/runtime/app/components/Button/Button.theme.d.ts +36 -22
- package/dist/runtime/app/components/Button/Button.theme.js +28 -20
- package/dist/runtime/app/components/Button/Button.types.d.ts +24 -0
- package/dist/runtime/app/components/Button/Button.types.js +0 -0
- package/dist/runtime/app/components/Button/Button.vue +84 -33
- package/dist/runtime/app/components/Button/Button.vue.d.ts +11 -31
- package/dist/runtime/app/components/Card/Card.d.vue.ts +7 -69
- package/dist/runtime/app/components/Card/Card.theme.d.ts +56 -13
- package/dist/runtime/app/components/Card/Card.theme.js +39 -19
- package/dist/runtime/app/components/Card/Card.types.d.ts +12 -0
- package/dist/runtime/app/components/Card/Card.types.js +0 -0
- package/dist/runtime/app/components/Card/Card.vue +17 -11
- package/dist/runtime/app/components/Card/Card.vue.d.ts +7 -69
- package/dist/runtime/app/components/Code/Code.d.vue.ts +3 -13
- package/dist/runtime/app/components/Code/Code.theme.d.ts +1 -1
- package/dist/runtime/app/components/Code/Code.theme.js +1 -1
- package/dist/runtime/app/components/Code/Code.types.d.ts +8 -0
- package/dist/runtime/app/components/Code/Code.types.js +0 -0
- package/dist/runtime/app/components/Code/Code.vue +12 -5
- package/dist/runtime/app/components/Code/Code.vue.d.ts +3 -13
- package/dist/runtime/app/components/Collapsible/Collapsible.d.vue.ts +31 -0
- package/dist/runtime/app/components/Collapsible/Collapsible.theme.d.ts +6 -0
- package/dist/runtime/app/components/Collapsible/Collapsible.theme.js +7 -0
- package/dist/runtime/app/components/Collapsible/Collapsible.types.d.ts +4 -0
- package/dist/runtime/app/components/Collapsible/Collapsible.types.js +0 -0
- package/dist/runtime/app/components/Collapsible/Collapsible.vue +72 -0
- package/dist/runtime/app/components/Collapsible/Collapsible.vue.d.ts +31 -0
- package/dist/runtime/app/components/ColorModeButton/ColorModeButton.d.vue.ts +12 -0
- package/dist/runtime/app/components/ColorModeButton/ColorModeButton.types.d.ts +13 -0
- package/dist/runtime/app/components/ColorModeButton/ColorModeButton.types.js +0 -0
- package/dist/runtime/app/components/ColorModeButton/ColorModeButton.vue +55 -0
- package/dist/runtime/app/components/ColorModeButton/ColorModeButton.vue.d.ts +12 -0
- package/dist/runtime/app/components/Confirm/Confirm.d.vue.ts +2 -6
- package/dist/runtime/app/components/Confirm/Confirm.types.d.ts +6 -0
- package/dist/runtime/app/components/Confirm/Confirm.types.js +0 -0
- package/dist/runtime/app/components/Confirm/Confirm.vue.d.ts +2 -6
- package/dist/runtime/app/components/Container/Container.d.vue.ts +4 -28
- package/dist/runtime/app/components/Container/Container.types.d.ts +9 -0
- package/dist/runtime/app/components/Container/Container.types.js +0 -0
- package/dist/runtime/app/components/Container/Container.vue +1 -1
- package/dist/runtime/app/components/Container/Container.vue.d.ts +4 -28
- package/dist/runtime/app/components/ControlGroup/ControlGroup.d.vue.ts +5 -14
- package/dist/runtime/app/components/ControlGroup/ControlGroup.types.d.ts +9 -0
- package/dist/runtime/app/components/ControlGroup/ControlGroup.types.js +0 -0
- package/dist/runtime/app/components/ControlGroup/ControlGroup.vue.d.ts +5 -14
- package/dist/runtime/app/components/DataTable/DataTable.d.vue.ts +64 -0
- package/dist/runtime/app/components/DataTable/DataTable.theme.d.ts +17 -0
- package/dist/runtime/app/components/DataTable/DataTable.theme.js +19 -0
- package/dist/runtime/app/components/DataTable/DataTable.types.d.ts +13 -0
- package/dist/runtime/app/components/DataTable/DataTable.types.js +0 -0
- package/dist/runtime/app/components/DataTable/DataTable.vue +356 -0
- package/dist/runtime/app/components/DataTable/DataTable.vue.d.ts +64 -0
- package/dist/runtime/app/components/{Table/internal/useVunoTable.d.ts → DataTable/internal/useVunoDataTable.d.ts} +6 -29
- package/dist/runtime/app/components/{Table/internal/useVunoTable.js → DataTable/internal/useVunoDataTable.js} +2 -29
- package/dist/runtime/app/components/FieldArray/FieldArray.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldArray/FieldArray.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldArray/FieldArray.types.js +0 -0
- package/dist/runtime/app/components/FieldArray/FieldArray.vue +12 -5
- package/dist/runtime/app/components/FieldArray/FieldArray.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.types.js +0 -0
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue +1 -1
- package/dist/runtime/app/components/FieldCheckbox/FieldCheckbox.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.d.vue.ts +4 -3
- package/dist/runtime/app/components/FieldCheckbox/internal/Checkbox/Checkbox.vue.d.ts +4 -3
- package/dist/runtime/app/components/FieldColor/FieldColor.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldColor/FieldColor.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldColor/FieldColor.types.js +0 -0
- package/dist/runtime/app/components/FieldColor/FieldColor.vue +3 -3
- package/dist/runtime/app/components/FieldColor/FieldColor.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.types.js +0 -0
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue +3 -3
- package/dist/runtime/app/components/FieldCurrency/FieldCurrency.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldFile/FieldFile.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldFile/FieldFile.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldFile/FieldFile.types.js +0 -0
- package/dist/runtime/app/components/FieldFile/FieldFile.vue +1 -1
- package/dist/runtime/app/components/FieldFile/FieldFile.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.d.vue.ts +4 -3
- package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.d.ts +1 -0
- package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.theme.js +1 -0
- package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.vue +26 -5
- package/dist/runtime/app/components/FieldFile/internal/FileUpload/FileUpload.vue.d.ts +4 -3
- package/dist/runtime/app/components/FieldInput/FieldInput.d.vue.ts +4 -4
- package/dist/runtime/app/components/FieldInput/FieldInput.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldInput/FieldInput.types.js +0 -0
- package/dist/runtime/app/components/FieldInput/FieldInput.vue +3 -3
- package/dist/runtime/app/components/FieldInput/FieldInput.vue.d.ts +4 -4
- package/dist/runtime/app/components/FieldNumber/FieldNumber.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldNumber/FieldNumber.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldNumber/FieldNumber.types.js +0 -0
- package/dist/runtime/app/components/FieldNumber/FieldNumber.vue +3 -3
- package/dist/runtime/app/components/FieldNumber/FieldNumber.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldPassword/FieldPassword.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldPassword/FieldPassword.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldPassword/FieldPassword.types.js +0 -0
- package/dist/runtime/app/components/FieldPassword/FieldPassword.vue +4 -4
- package/dist/runtime/app/components/FieldPassword/FieldPassword.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldRadio/FieldRadio.d.vue.ts +3 -2
- package/dist/runtime/app/components/FieldRadio/FieldRadio.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldRadio/FieldRadio.types.js +0 -0
- package/dist/runtime/app/components/FieldRadio/FieldRadio.vue +1 -1
- package/dist/runtime/app/components/FieldRadio/FieldRadio.vue.d.ts +3 -2
- package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.d.vue.ts +4 -4
- package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.vue +6 -2
- package/dist/runtime/app/components/FieldRadio/internal/RadioGroup/RadioGroup.vue.d.ts +4 -4
- package/dist/runtime/app/components/FieldSearch/FieldSearch.d.vue.ts +3 -3
- package/dist/runtime/app/components/FieldSearch/FieldSearch.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldSearch/FieldSearch.types.js +0 -0
- package/dist/runtime/app/components/FieldSearch/FieldSearch.vue +4 -4
- package/dist/runtime/app/components/FieldSearch/FieldSearch.vue.d.ts +3 -3
- package/dist/runtime/app/components/FieldSelect/FieldSelect.d.vue.ts +3 -2
- package/dist/runtime/app/components/FieldSelect/FieldSelect.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldSelect/FieldSelect.types.js +0 -0
- package/dist/runtime/app/components/FieldSelect/FieldSelect.vue +1 -1
- package/dist/runtime/app/components/FieldSelect/FieldSelect.vue.d.ts +3 -2
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.d.vue.ts +7 -7
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue +16 -6
- package/dist/runtime/app/components/FieldSelect/internal/Select/Select.vue.d.ts +7 -7
- package/dist/runtime/app/components/FieldSlug/FieldSlug.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldSlug/FieldSlug.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldSlug/FieldSlug.types.js +0 -0
- package/dist/runtime/app/components/FieldSlug/FieldSlug.vue +4 -4
- package/dist/runtime/app/components/FieldSlug/FieldSlug.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.types.js +0 -0
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue +1 -1
- package/dist/runtime/app/components/FieldSwitch/FieldSwitch.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.d.vue.ts +4 -3
- package/dist/runtime/app/components/FieldSwitch/internal/Switch/Switch.vue.d.ts +4 -3
- package/dist/runtime/app/components/FieldTags/FieldTags.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldTags/FieldTags.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldTags/FieldTags.types.js +0 -0
- package/dist/runtime/app/components/FieldTags/FieldTags.vue +1 -1
- package/dist/runtime/app/components/FieldTags/FieldTags.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.d.vue.ts +4 -4
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue +16 -6
- package/dist/runtime/app/components/FieldTags/internal/TagsInput/TagsInput.vue.d.ts +4 -4
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.d.vue.ts +2 -2
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.types.d.ts +2 -0
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.types.js +0 -0
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.vue +1 -1
- package/dist/runtime/app/components/FieldTextarea/FieldTextarea.vue.d.ts +2 -2
- package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.d.vue.ts +4 -3
- package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.vue +4 -4
- package/dist/runtime/app/components/FieldTextarea/internal/Textarea/Textarea.vue.d.ts +4 -3
- package/dist/runtime/app/components/Form/Form.d.vue.ts +3 -19
- package/dist/runtime/app/components/Form/Form.types.d.ts +8 -0
- package/dist/runtime/app/components/Form/Form.types.js +0 -0
- package/dist/runtime/app/components/Form/Form.vue +3 -3
- package/dist/runtime/app/components/Form/Form.vue.d.ts +3 -19
- package/dist/runtime/app/components/FormField/FormField.d.vue.ts +4 -18
- package/dist/runtime/app/components/FormField/FormField.types.d.ts +14 -0
- package/dist/runtime/app/components/FormField/FormField.types.js +0 -0
- package/dist/runtime/app/components/FormField/FormField.vue +26 -10
- package/dist/runtime/app/components/FormField/FormField.vue.d.ts +4 -18
- package/dist/runtime/app/components/{internal → FormField/internal}/FieldShell/FieldShell.d.vue.ts +2 -3
- package/dist/runtime/app/components/{internal → FormField/internal}/FieldShell/FieldShell.vue.d.ts +2 -3
- package/dist/runtime/app/components/FormModal/FormModal.d.vue.ts +6 -25
- package/dist/runtime/app/components/FormModal/FormModal.types.d.ts +14 -0
- package/dist/runtime/app/components/FormModal/FormModal.types.js +0 -0
- package/dist/runtime/app/components/FormModal/FormModal.vue +12 -2
- package/dist/runtime/app/components/FormModal/FormModal.vue.d.ts +6 -25
- package/dist/runtime/app/components/FormSection/FormSection.d.vue.ts +2 -13
- package/dist/runtime/app/components/FormSection/FormSection.types.d.ts +7 -0
- package/dist/runtime/app/components/FormSection/FormSection.types.js +0 -0
- package/dist/runtime/app/components/FormSection/FormSection.vue +11 -4
- package/dist/runtime/app/components/FormSection/FormSection.vue.d.ts +2 -13
- package/dist/runtime/app/components/Icon/Icon.d.vue.ts +2 -4
- package/dist/runtime/app/components/Icon/Icon.types.d.ts +3 -0
- package/dist/runtime/app/components/Icon/Icon.types.js +0 -0
- package/dist/runtime/app/components/Icon/Icon.vue.d.ts +2 -4
- package/dist/runtime/app/components/Menu/Menu.d.vue.ts +4 -21
- package/dist/runtime/app/components/Menu/Menu.types.d.ts +7 -0
- package/dist/runtime/app/components/Menu/Menu.types.js +0 -0
- package/dist/runtime/app/components/Menu/Menu.vue +18 -110
- package/dist/runtime/app/components/Menu/Menu.vue.d.ts +4 -21
- package/dist/runtime/app/components/Menu/internal/MenuLevel/MenuLevel.d.vue.ts +26 -0
- package/dist/runtime/app/components/Menu/internal/MenuLevel/MenuLevel.vue +167 -0
- package/dist/runtime/app/components/Menu/internal/MenuLevel/MenuLevel.vue.d.ts +26 -0
- package/dist/runtime/app/components/Modal/Modal.d.vue.ts +6 -18
- package/dist/runtime/app/components/Modal/Modal.theme.d.ts +18 -14
- package/dist/runtime/app/components/Modal/Modal.theme.js +17 -21
- package/dist/runtime/app/components/Modal/Modal.types.d.ts +12 -0
- package/dist/runtime/app/components/Modal/Modal.types.js +0 -0
- package/dist/runtime/app/components/Modal/Modal.vue +99 -65
- package/dist/runtime/app/components/Modal/Modal.vue.d.ts +6 -18
- package/dist/runtime/app/components/Navbar/Navbar.d.vue.ts +3 -28
- package/dist/runtime/app/components/Navbar/Navbar.theme.d.ts +2 -3
- package/dist/runtime/app/components/Navbar/Navbar.theme.js +2 -3
- package/dist/runtime/app/components/Navbar/Navbar.types.d.ts +4 -0
- package/dist/runtime/app/components/Navbar/Navbar.types.js +0 -0
- package/dist/runtime/app/components/Navbar/Navbar.vue.d.ts +3 -28
- package/dist/runtime/app/components/NavigationList/NavigationList.d.vue.ts +4 -33
- package/dist/runtime/app/components/NavigationList/NavigationList.keys.d.ts +3 -0
- package/dist/runtime/app/components/NavigationList/NavigationList.keys.js +1 -0
- package/dist/runtime/app/components/NavigationList/NavigationList.types.d.ts +9 -0
- package/dist/runtime/app/components/NavigationList/NavigationList.types.js +0 -0
- package/dist/runtime/app/components/NavigationList/NavigationList.vue +65 -19
- package/dist/runtime/app/components/NavigationList/NavigationList.vue.d.ts +4 -33
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.d.vue.ts +3 -24
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.keys.d.ts +7 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.keys.js +3 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.types.d.ts +10 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.types.js +0 -0
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue +45 -13
- package/dist/runtime/app/components/NavigationMenu/NavigationMenu.vue.d.ts +3 -24
- package/dist/runtime/app/components/NavigationToc/NavigationToc.d.vue.ts +3 -10
- package/dist/runtime/app/components/NavigationToc/NavigationToc.types.d.ts +7 -0
- package/dist/runtime/app/components/NavigationToc/NavigationToc.types.js +0 -0
- package/dist/runtime/app/components/NavigationToc/NavigationToc.vue +8 -1
- package/dist/runtime/app/components/NavigationToc/NavigationToc.vue.d.ts +3 -10
- package/dist/runtime/app/components/Pagination/Pagination.d.vue.ts +5 -23
- package/dist/runtime/app/components/Pagination/Pagination.types.d.ts +11 -0
- package/dist/runtime/app/components/Pagination/Pagination.types.js +0 -0
- package/dist/runtime/app/components/Pagination/Pagination.vue +6 -2
- package/dist/runtime/app/components/Pagination/Pagination.vue.d.ts +5 -23
- package/dist/runtime/app/components/Slideover/Slideover.d.vue.ts +4 -13
- package/dist/runtime/app/components/Slideover/Slideover.types.d.ts +12 -0
- package/dist/runtime/app/components/Slideover/Slideover.types.js +0 -0
- package/dist/runtime/app/components/Slideover/Slideover.vue.d.ts +4 -13
- package/dist/runtime/app/components/State/State.d.vue.ts +2 -2
- package/dist/runtime/app/components/State/State.types.d.ts +15 -0
- package/dist/runtime/app/components/State/State.types.js +0 -0
- package/dist/runtime/app/components/State/State.vue +13 -3
- package/dist/runtime/app/components/State/State.vue.d.ts +2 -2
- package/dist/runtime/app/components/Table/Table.d.vue.ts +8 -55
- package/dist/runtime/app/components/Table/Table.theme.d.ts +17 -35
- package/dist/runtime/app/components/Table/Table.theme.js +15 -48
- package/dist/runtime/app/components/Table/Table.types.d.ts +9 -0
- package/dist/runtime/app/components/Table/Table.types.js +0 -0
- package/dist/runtime/app/components/Table/Table.vue +143 -415
- package/dist/runtime/app/components/Table/Table.vue.d.ts +8 -55
- package/dist/runtime/app/components/Table/internal/CellBoolean/CellBoolean.vue +13 -3
- package/dist/runtime/app/components/Table/internal/CellCurrency/CellCurrency.vue +8 -1
- package/dist/runtime/app/components/Table/internal/CellDate/CellDate.vue +8 -1
- package/dist/runtime/app/components/Table/internal/CellNumber/CellNumber.vue +8 -1
- package/dist/runtime/app/components/Table/internal/CellText/CellText.vue +8 -1
- package/dist/runtime/app/components/Table/internal/TableCell/TableCell.d.vue.ts +2 -2
- package/dist/runtime/app/components/Table/internal/TableCell/TableCell.vue.d.ts +2 -2
- package/dist/runtime/app/components/Table/internal/column.d.ts +9 -0
- package/dist/runtime/app/components/Table/internal/column.js +15 -0
- package/dist/runtime/app/components/Table/internal/useVunoTableSelection.d.ts +1 -1
- package/dist/runtime/app/components/Tabs/Tabs.d.vue.ts +5 -24
- package/dist/runtime/app/components/Tabs/Tabs.theme.d.ts +15 -6
- package/dist/runtime/app/components/Tabs/Tabs.theme.js +15 -6
- package/dist/runtime/app/components/Tabs/Tabs.types.d.ts +10 -0
- package/dist/runtime/app/components/Tabs/Tabs.types.js +0 -0
- package/dist/runtime/app/components/Tabs/Tabs.vue +91 -17
- package/dist/runtime/app/components/Tabs/Tabs.vue.d.ts +5 -24
- package/dist/runtime/app/components/Text/Text.d.vue.ts +19 -0
- package/dist/runtime/app/components/Text/Text.theme.d.ts +55 -0
- package/dist/runtime/app/components/Text/Text.theme.js +28 -0
- package/dist/runtime/app/components/Text/Text.types.d.ts +9 -0
- package/dist/runtime/app/components/Text/Text.types.js +0 -0
- package/dist/runtime/app/components/Text/Text.vue +37 -0
- package/dist/runtime/app/components/Text/Text.vue.d.ts +19 -0
- package/dist/runtime/app/components/Toolbar/Toolbar.d.vue.ts +17 -0
- package/dist/runtime/app/components/Toolbar/Toolbar.theme.d.ts +5 -0
- package/dist/runtime/app/components/Toolbar/Toolbar.theme.js +6 -0
- package/dist/runtime/app/components/Toolbar/Toolbar.types.d.ts +9 -0
- package/dist/runtime/app/components/Toolbar/Toolbar.types.js +0 -0
- package/dist/runtime/app/components/Toolbar/Toolbar.vue +76 -0
- package/dist/runtime/app/components/Toolbar/Toolbar.vue.d.ts +17 -0
- package/dist/runtime/app/components/Tooltip/Tooltip.d.vue.ts +5 -26
- package/dist/runtime/app/components/Tooltip/Tooltip.types.d.ts +11 -0
- package/dist/runtime/app/components/Tooltip/Tooltip.types.js +0 -0
- package/dist/runtime/app/components/Tooltip/Tooltip.vue +1 -1
- package/dist/runtime/app/components/Tooltip/Tooltip.vue.d.ts +5 -26
- package/dist/runtime/app/composables/internal/useVunoContext.d.ts +5 -0
- package/dist/runtime/app/composables/internal/useVunoContext.js +8 -0
- package/dist/runtime/app/composables/internal/useVunoControlGroup.d.ts +3 -4
- package/dist/runtime/app/composables/internal/useVunoDirection.d.ts +5 -0
- package/dist/runtime/app/composables/internal/useVunoDirection.js +8 -0
- package/dist/runtime/app/composables/internal/useVunoFormContext.d.ts +5 -0
- package/dist/runtime/app/composables/internal/useVunoFormContext.js +8 -0
- package/dist/runtime/app/composables/internal/useVunoOverlayBehind.d.ts +6 -0
- package/dist/runtime/app/composables/internal/useVunoOverlayBehind.js +8 -0
- package/dist/runtime/app/composables/useContext.js +2 -3
- package/dist/runtime/app/composables/useForm.js +2 -3
- package/dist/runtime/app/composables/useTableQuery.d.ts +1 -1
- package/dist/runtime/app/composables/useTheme.js +6 -3
- package/dist/runtime/app/{components/internal/ControlShell/ControlShell.vue.d.ts → primitives/PrimitiveControl/PrimitiveControl.d.vue.ts} +4 -3
- package/dist/runtime/app/{components/internal/ControlShell/ControlShell.theme.d.ts → primitives/PrimitiveControl/PrimitiveControl.theme.d.ts} +1 -1
- package/dist/runtime/app/{components/internal/ControlShell/ControlShell.vue → primitives/PrimitiveControl/PrimitiveControl.vue} +1 -1
- package/dist/runtime/app/{components/internal/ControlShell/ControlShell.d.vue.ts → primitives/PrimitiveControl/PrimitiveControl.vue.d.ts} +4 -3
- package/dist/runtime/app/{components/internal/Input/Input.d.vue.ts → primitives/PrimitiveInput/PrimitiveInput.d.vue.ts} +4 -3
- package/dist/runtime/app/{components/internal/Input/Input.vue → primitives/PrimitiveInput/PrimitiveInput.vue} +4 -4
- package/dist/runtime/app/{components/internal/Input/Input.vue.d.ts → primitives/PrimitiveInput/PrimitiveInput.vue.d.ts} +4 -3
- package/dist/runtime/app/{components/internal/NumberInput/NumberInput.d.vue.ts → primitives/PrimitiveNumberInput/PrimitiveNumberInput.d.vue.ts} +3 -4
- package/dist/runtime/app/{components/internal/NumberInput/NumberInput.theme.d.ts → primitives/PrimitiveNumberInput/PrimitiveNumberInput.theme.d.ts} +3 -0
- package/dist/runtime/app/{components/internal/NumberInput/NumberInput.theme.js → primitives/PrimitiveNumberInput/PrimitiveNumberInput.theme.js} +4 -1
- package/dist/runtime/app/{components/internal/NumberInput/NumberInput.vue → primitives/PrimitiveNumberInput/PrimitiveNumberInput.vue} +7 -5
- package/dist/runtime/app/{components/internal/NumberInput/NumberInput.vue.d.ts → primitives/PrimitiveNumberInput/PrimitiveNumberInput.vue.d.ts} +3 -4
- package/dist/runtime/app/theme/index.d.ts +254 -96
- package/dist/runtime/app/theme/index.js +13 -5
- package/dist/runtime/app/theme/messages.js +1 -0
- package/dist/runtime/app/theme/shared.d.ts +3 -2
- package/dist/runtime/app/theme/shared.js +2 -1
- package/dist/runtime/app/types/app.d.ts +4 -2
- package/dist/runtime/app/types/base.d.ts +5 -23
- package/dist/runtime/app/types/field.d.ts +3 -1
- package/dist/runtime/app/types/form.d.ts +3 -4
- package/dist/runtime/app/types/index.d.ts +55 -7
- package/dist/runtime/app/types/menu.d.ts +22 -0
- package/dist/runtime/app/types/menu.js +0 -0
- package/dist/runtime/app/types/page.d.ts +6 -10
- package/dist/runtime/app/types/slots.d.ts +8 -4
- package/dist/runtime/app/types/table.d.ts +28 -28
- package/dist/runtime/app/types/text.d.ts +6 -0
- package/dist/runtime/app/types/text.js +0 -0
- package/dist/runtime/app/types/theme.d.ts +15 -6
- package/dist/runtime/app/utils/format.js +3 -2
- package/dist/runtime/app/utils/path.js +1 -1
- package/dist/runtime/app/{internal → utils}/slots.d.ts +2 -2
- package/dist/runtime/app/utils/theme.d.ts +8 -41
- package/dist/runtime/app/utils/theme.js +31 -29
- package/package.json +9 -9
- package/dist/runtime/app/components/Page/Page.d.vue.ts +0 -40
- package/dist/runtime/app/components/Page/Page.theme.d.ts +0 -32
- package/dist/runtime/app/components/Page/Page.theme.js +0 -31
- package/dist/runtime/app/components/Page/Page.vue +0 -132
- package/dist/runtime/app/components/Page/Page.vue.d.ts +0 -40
- package/dist/runtime/app/internal/keys.d.ts +0 -43
- package/dist/runtime/app/internal/keys.js +0 -8
- package/dist/runtime/app/types/alert.d.ts +0 -13
- package/dist/runtime/app/types/state.d.ts +0 -35
- /package/dist/runtime/app/{types/alert.js → components/Alert/Alert.types.js} +0 -0
- /package/dist/runtime/app/{types/state.js → components/App/App.types.js} +0 -0
- /package/dist/runtime/app/components/{Table → DataTable}/internal/query.d.ts +0 -0
- /package/dist/runtime/app/components/{Table → DataTable}/internal/query.js +0 -0
- /package/dist/runtime/app/components/{internal → FormField/internal}/FieldShell/FieldShell.vue +0 -0
- /package/dist/runtime/app/{components/internal/ControlShell/ControlShell.theme.js → primitives/PrimitiveControl/PrimitiveControl.theme.js} +0 -0
- /package/dist/runtime/app/{components/internal/Input/Input.theme.d.ts → primitives/PrimitiveInput/PrimitiveInput.theme.d.ts} +0 -0
- /package/dist/runtime/app/{components/internal/Input/Input.theme.js → primitives/PrimitiveInput/PrimitiveInput.theme.js} +0 -0
- /package/dist/runtime/app/{components/internal/NumberInput → primitives/PrimitiveNumberInput}/number.d.ts +0 -0
- /package/dist/runtime/app/{components/internal/NumberInput → primitives/PrimitiveNumberInput}/number.js +0 -0
- /package/dist/runtime/app/{internal → utils}/slots.js +0 -0
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ pnpm add @groupteknology/vuno
|
|
|
21
21
|
```ts
|
|
22
22
|
// nuxt.config.ts
|
|
23
23
|
export default defineNuxtConfig({
|
|
24
|
-
|
|
24
|
+
modules: ['@groupteknology/vuno'],
|
|
25
25
|
})
|
|
26
26
|
```
|
|
27
27
|
|
|
@@ -37,8 +37,8 @@ Si tu proyecto ya monta Tailwind, se detecta y no se duplica. Y si prefieres lle
|
|
|
37
37
|
|
|
38
38
|
```ts
|
|
39
39
|
export default defineNuxtConfig({
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
modules: ['@groupteknology/vuno'],
|
|
41
|
+
vuno: { tailwind: false },
|
|
42
42
|
})
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -48,40 +48,53 @@ Un formulario se declara como datos y se renderiza solo. El estado vive en un ú
|
|
|
48
48
|
|
|
49
49
|
```vue
|
|
50
50
|
<script setup lang="ts">
|
|
51
|
-
import type { VunoFormDefinition } from '@groupteknology/vuno'
|
|
52
|
-
import * as z from 'zod'
|
|
53
|
-
|
|
54
|
-
const schema = z.object({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
const state = ref({ sku: '', name: '', slug: '' })
|
|
60
|
-
|
|
61
|
-
const definition = {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
} satisfies VunoFormDefinition
|
|
51
|
+
import type { VunoFormDefinition } from '@groupteknology/vuno'
|
|
52
|
+
import * as z from 'zod'
|
|
53
|
+
|
|
54
|
+
const schema = z.object({
|
|
55
|
+
sku: z.string().min(1, 'El SKU es requerido'),
|
|
56
|
+
name: z.string().min(1, 'El nombre es requerido'),
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
const state = ref({ sku: '', name: '', slug: '' })
|
|
60
|
+
|
|
61
|
+
const definition = {
|
|
62
|
+
layout: 'tabs', // 'sections' (por defecto) | 'tabs'
|
|
63
|
+
sections: [
|
|
64
|
+
{
|
|
65
|
+
id: 'general',
|
|
66
|
+
title: 'Datos generales',
|
|
67
|
+
icon: 'lucide:info',
|
|
68
|
+
fields: [
|
|
69
|
+
{ name: 'sku', type: 'text', label: 'SKU', columns: { xs: 12, lg: 6 }, required: true },
|
|
70
|
+
{ name: 'name', type: 'text', label: 'Nombre', columns: { xs: 12, lg: 6 }, required: true },
|
|
71
|
+
{ name: 'slug', type: 'slug', label: 'Slug', source: 'name' },
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
} satisfies VunoFormDefinition
|
|
76
76
|
</script>
|
|
77
77
|
|
|
78
78
|
<template>
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
<VForm
|
|
80
|
+
v-model:state="state"
|
|
81
|
+
:definition="definition"
|
|
82
|
+
:schema="schema"
|
|
83
|
+
@submit="guardar"
|
|
84
|
+
>
|
|
85
|
+
<template #footer="{ dirty, reset }">
|
|
86
|
+
<VButton
|
|
87
|
+
:disabled="!dirty"
|
|
88
|
+
label="Descartar"
|
|
89
|
+
variant="ghost"
|
|
90
|
+
@click="reset"
|
|
91
|
+
/>
|
|
92
|
+
<VButton
|
|
93
|
+
label="Guardar"
|
|
94
|
+
type="submit"
|
|
95
|
+
/>
|
|
96
|
+
</template>
|
|
97
|
+
</VForm>
|
|
85
98
|
</template>
|
|
86
99
|
```
|
|
87
100
|
|
|
@@ -100,12 +113,7 @@ Los mismos campos son componentes públicos y ya incluyen etiqueta, descripción
|
|
|
100
113
|
La etiqueta va arriba por defecto. `orientation="horizontal"` la coloca al costado del control:
|
|
101
114
|
|
|
102
115
|
```vue
|
|
103
|
-
<VFieldSelect
|
|
104
|
-
v-model="role"
|
|
105
|
-
label="Rol"
|
|
106
|
-
orientation="horizontal"
|
|
107
|
-
:items="roles"
|
|
108
|
-
/>
|
|
116
|
+
<VFieldSelect v-model="role" label="Rol" orientation="horizontal" :items="roles" />
|
|
109
117
|
```
|
|
110
118
|
|
|
111
119
|
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.
|
|
@@ -171,65 +179,59 @@ La regla que lo resume: **el componente decide cómo es el formulario; quien lo
|
|
|
171
179
|
```vue
|
|
172
180
|
<!-- app/components/Product/ProductForm.vue -->
|
|
173
181
|
<script setup lang="ts">
|
|
174
|
-
import type { VunoFormDefinition } from '@groupteknology/vuno'
|
|
175
|
-
import * as z from 'zod'
|
|
182
|
+
import type { VunoFormDefinition } from '@groupteknology/vuno'
|
|
183
|
+
import * as z from 'zod'
|
|
176
184
|
|
|
177
|
-
const props = defineProps<{
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}>()
|
|
185
|
+
const props = defineProps<{
|
|
186
|
+
/** La fila en edición. Sin ella, el formulario es de alta. */
|
|
187
|
+
product?: null | Product
|
|
188
|
+
loading?: boolean
|
|
189
|
+
}>()
|
|
182
190
|
|
|
183
|
-
const emit = defineEmits<{ submit: [] }>()
|
|
191
|
+
const emit = defineEmits<{ submit: [] }>()
|
|
184
192
|
|
|
185
|
-
const open = defineModel<boolean>('open', { default: false })
|
|
186
|
-
const state = defineModel<ProductFormState>('state', { required: true })
|
|
193
|
+
const open = defineModel<boolean>('open', { default: false })
|
|
194
|
+
const state = defineModel<ProductFormState>('state', { required: true })
|
|
187
195
|
|
|
188
|
-
// Lo propio del formulario: su forma, sus reglas y sus textos.
|
|
189
|
-
const schema = z.object({ sku: z.string().min(1, 'El SKU es requerido') })
|
|
196
|
+
// Lo propio del formulario: su forma, sus reglas y sus textos.
|
|
197
|
+
const schema = z.object({ sku: z.string().min(1, 'El SKU es requerido') })
|
|
190
198
|
|
|
191
|
-
const title = computed(() => (props.product ? `Editar ${props.product.sku}` : 'Nuevo producto'))
|
|
199
|
+
const title = computed(() => (props.product ? `Editar ${props.product.sku}` : 'Nuevo producto'))
|
|
192
200
|
|
|
193
|
-
const definition = {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
} satisfies VunoFormDefinition
|
|
201
|
+
const definition = {
|
|
202
|
+
layout: 'tabs',
|
|
203
|
+
sections: [/* ... */],
|
|
204
|
+
} satisfies VunoFormDefinition
|
|
197
205
|
</script>
|
|
198
206
|
|
|
199
207
|
<template>
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
208
|
+
<VFormModal
|
|
209
|
+
v-model:open="open"
|
|
210
|
+
v-model:state="state"
|
|
211
|
+
:definition="definition"
|
|
212
|
+
:loading="props.loading"
|
|
213
|
+
:schema="schema"
|
|
214
|
+
:title="title"
|
|
215
|
+
@submit="emit('submit')"
|
|
216
|
+
/>
|
|
209
217
|
</template>
|
|
210
218
|
```
|
|
211
219
|
|
|
212
220
|
Y la página queda sin saber nada de los campos:
|
|
213
221
|
|
|
214
222
|
```vue
|
|
215
|
-
<ProductForm
|
|
216
|
-
v-model:open="formOpen"
|
|
217
|
-
v-model:state="state"
|
|
218
|
-
:loading="isSaving"
|
|
219
|
-
:product="editing"
|
|
220
|
-
@submit="submit"
|
|
221
|
-
/>
|
|
223
|
+
<ProductForm v-model:open="formOpen" v-model:state="state" :loading="isSaving" :product="editing" @submit="submit" />
|
|
222
224
|
```
|
|
223
225
|
|
|
224
226
|
#### Qué expone
|
|
225
227
|
|
|
226
|
-
|
|
|
227
|
-
|
|
228
|
-
| `v-model:state`
|
|
229
|
-
| `v-model:open`
|
|
230
|
-
| `:loading`
|
|
228
|
+
| | |
|
|
229
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------- |
|
|
230
|
+
| `v-model:state` | El estado del formulario. Obligatorio: lo posee quien lo usa, no el formulario. |
|
|
231
|
+
| `v-model:open` | Solo si es modal. |
|
|
232
|
+
| `:loading` | Si se está guardando, para bloquear el botón. |
|
|
231
233
|
| La fila en edición | Un prop —`product`, `brand`, lo que sea— que vale `null` en el alta. De él salen el título y la etiqueta del botón. |
|
|
232
|
-
| `@submit`
|
|
234
|
+
| `@submit` | Significa «el usuario confirmó», nada más. Sin datos: ya están en `state`. |
|
|
233
235
|
|
|
234
236
|
No es casualidad que encaje: son exactamente `state`, `formOpen`, `isSaving`, `editing` y `submit` de `useCrud`.
|
|
235
237
|
|
|
@@ -247,23 +249,21 @@ El estado tampoco se queda dentro. Si el formulario declara su propio `ref` en v
|
|
|
247
249
|
|
|
248
250
|
```vue
|
|
249
251
|
<script setup lang="ts">
|
|
250
|
-
// En SSR, `$fetch` no reenvía la cookie de la petición y una ruta con sesión
|
|
251
|
-
// responde 401 durante el render. `useRequestFetch()` sí la lleva.
|
|
252
|
-
const request = useRequestFetch()
|
|
253
|
-
|
|
254
|
-
const query = useTableQuery({ sort: 'sku', url: true })
|
|
255
|
-
|
|
256
|
-
const { items, total, failure, isPending, isSaving, isDeleting,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
remove: (row) => $fetch(`/api/products/${row.id}`, { method: 'DELETE' }),
|
|
266
|
-
})
|
|
252
|
+
// En SSR, `$fetch` no reenvía la cookie de la petición y una ruta con sesión
|
|
253
|
+
// responde 401 durante el render. `useRequestFetch()` sí la lleva.
|
|
254
|
+
const request = useRequestFetch()
|
|
255
|
+
|
|
256
|
+
const query = useTableQuery({ sort: 'sku', url: true })
|
|
257
|
+
|
|
258
|
+
const { items, total, failure, isPending, isSaving, isDeleting, formOpen, editing, state, submit, openCreate, openEdit, confirmOpen, deleting, askDelete, confirmDelete } = useCrud<Product, ProductForm>({
|
|
259
|
+
key: 'products',
|
|
260
|
+
query,
|
|
261
|
+
emptyForm: () => ({ name: '', sku: '' }),
|
|
262
|
+
list: (q) => request('/api/products', { query: q }),
|
|
263
|
+
create: (form) => $fetch('/api/products', { body: form, method: 'POST' }),
|
|
264
|
+
update: (id, form) => $fetch(`/api/products/${id}`, { body: form, method: 'PATCH' }),
|
|
265
|
+
remove: (row) => $fetch(`/api/products/${row.id}`, { method: 'DELETE' }),
|
|
266
|
+
})
|
|
267
267
|
</script>
|
|
268
268
|
```
|
|
269
269
|
|
|
@@ -277,8 +277,8 @@ La consulta forma parte de la clave de caché, así que cada página, filtro y o
|
|
|
277
277
|
|
|
278
278
|
```ts
|
|
279
279
|
const crud = useCrud({
|
|
280
|
-
|
|
281
|
-
|
|
280
|
+
key: () => ['products', selectedCompanyId.value],
|
|
281
|
+
// ...
|
|
282
282
|
})
|
|
283
283
|
```
|
|
284
284
|
|
|
@@ -301,7 +301,7 @@ Mientras la clave está incompleta, `isPending` sigue en `true`: la pantalla est
|
|
|
301
301
|
Para lo que no se deduce de la clave —un permiso, una pestaña que no está a la vista— está la opción `enabled`, que se suma a la condición anterior.
|
|
302
302
|
|
|
303
303
|
```ts
|
|
304
|
-
useCrud({ key: () => ['products', companyId.value], enabled: () => canRead.value
|
|
304
|
+
useCrud({ key: () => ['products', companyId.value], enabled: () => canRead.value /* ... */ })
|
|
305
305
|
```
|
|
306
306
|
|
|
307
307
|
### La clave de invalidación
|
|
@@ -309,7 +309,7 @@ useCrud({ key: () => ['products', companyId.value], enabled: () => canRead.value
|
|
|
309
309
|
`invalidate()` invalida **por prefijo**, usando la clave base que le des. Pásale el prefijo más ancho del dominio y deja que vuno añada el estado de consulta como último segmento:
|
|
310
310
|
|
|
311
311
|
```ts
|
|
312
|
-
key: () => productKeys.all()
|
|
312
|
+
key: () => productKeys.all() // un alta refresca todo el dominio
|
|
313
313
|
key: () => productKeys.list(filtros) // solo refresca esa combinación de filtros
|
|
314
314
|
```
|
|
315
315
|
|
|
@@ -323,8 +323,8 @@ Si el proyecto ya aporta su propio `QueryClient`, desactiva el registro de Vuno
|
|
|
323
323
|
|
|
324
324
|
```ts [nuxt.config.ts]
|
|
325
325
|
export default defineNuxtConfig({
|
|
326
|
-
|
|
327
|
-
|
|
326
|
+
modules: ['@groupteknology/vuno'],
|
|
327
|
+
vuno: { vueQuery: false },
|
|
328
328
|
})
|
|
329
329
|
```
|
|
330
330
|
|
|
@@ -336,37 +336,39 @@ Con la clave incompleta no se espera nada: la consulta está suspendida y espera
|
|
|
336
336
|
|
|
337
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.
|
|
338
338
|
|
|
339
|
-
##
|
|
339
|
+
## Migas de pan
|
|
340
340
|
|
|
341
|
-
`
|
|
341
|
+
`VBreadcrumb` pinta la ruta de navegación sin imponer la cabecera ni el cuerpo de la pantalla:
|
|
342
342
|
|
|
343
343
|
```vue
|
|
344
|
-
<
|
|
345
|
-
<template #actions>
|
|
346
|
-
<VButton icon="lucide:plus" label="Nuevo producto" @click="openCreate" />
|
|
347
|
-
</template>
|
|
348
|
-
|
|
349
|
-
<VTable ... />
|
|
350
|
-
</VPage>
|
|
344
|
+
<VBreadcrumb :items="[{ label: 'Inicio', to: '/' }, { label: 'Productos' }]" />
|
|
351
345
|
```
|
|
352
346
|
|
|
347
|
+
En rutas largas oculta los segmentos más antiguos antes de `sm`; con `loading` conserva el nombre accesible del segmento actual y muestra un esqueleto.
|
|
348
|
+
|
|
353
349
|
## Tablas
|
|
354
350
|
|
|
355
|
-
`VTable`
|
|
351
|
+
`VTable` se limita a renderizar filas y columnas. `VDataTable` lo compone con búsqueda, filtros, estados y `VPagination` para trabajar en modo servidor: emite el estado de consulta y tú devuelves la página.
|
|
356
352
|
|
|
357
353
|
**`query` es obligatorio.** No es un `v-model` opcional: sin él la tabla no compila, y el error de tipos que sale encabeza con el objeto `definition`, así que manda a mirar el sitio equivocado.
|
|
358
354
|
|
|
359
355
|
```vue
|
|
360
356
|
<script setup lang="ts">
|
|
361
|
-
const query = useTableQuery({ sort: 'sku', url: true, history: 'push', filterKeys: ['status'] })
|
|
357
|
+
const query = useTableQuery({ sort: 'sku', url: true, history: 'push', filterKeys: ['status'] })
|
|
362
358
|
|
|
363
|
-
const { data, status } = await useFetch('/api/products', {
|
|
364
|
-
|
|
365
|
-
})
|
|
359
|
+
const { data, status } = await useFetch('/api/products', {
|
|
360
|
+
query: computed(() => ({ page: query.value.page, sort: query.value.sort?.column, ...query.value.filters })),
|
|
361
|
+
})
|
|
366
362
|
</script>
|
|
367
363
|
|
|
368
364
|
<template>
|
|
369
|
-
|
|
365
|
+
<VDataTable
|
|
366
|
+
v-model:query="query"
|
|
367
|
+
:definition="definition"
|
|
368
|
+
:data="data?.data ?? []"
|
|
369
|
+
:total="data?.total ?? 0"
|
|
370
|
+
:loading="status === 'pending'"
|
|
371
|
+
/>
|
|
370
372
|
</template>
|
|
371
373
|
```
|
|
372
374
|
|
|
@@ -380,16 +382,33 @@ Cada uno declara sus propios props en una unión discriminada por `type`, igual
|
|
|
380
382
|
|
|
381
383
|
```ts
|
|
382
384
|
const definition = {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
385
|
+
searchable: false, // el endpoint no busca: no se pinta la barra
|
|
386
|
+
paginated: false, // ni pagina: el pie dice cuántos hay y nada más
|
|
387
|
+
columns: [
|
|
388
|
+
{ key: 'sku', label: 'SKU', type: 'text', sortable: true },
|
|
389
|
+
{ key: 'price', label: 'Precio', type: 'currency', currency: 'EUR', align: 'end' },
|
|
390
|
+
{ key: 'createdAt', label: 'Alta', type: 'date' },
|
|
391
|
+
],
|
|
392
|
+
} satisfies VunoDataTableDefinition<Product>
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
La misma definición controla las capacidades de disposición que dependen del caso real:
|
|
396
|
+
|
|
397
|
+
```ts
|
|
398
|
+
const definition = {
|
|
399
|
+
caption: 'Inventario disponible',
|
|
400
|
+
density: 'compact',
|
|
401
|
+
interactive: true,
|
|
402
|
+
stickyHeader: true,
|
|
403
|
+
columns: [
|
|
404
|
+
{ key: 'sku', label: 'SKU', type: 'text', sticky: 'start' },
|
|
405
|
+
{ key: 'stock', label: 'Stock', type: 'number', sticky: 'end' },
|
|
406
|
+
],
|
|
390
407
|
} satisfies VunoTableDefinition<Product>
|
|
391
408
|
```
|
|
392
409
|
|
|
410
|
+
`caption` nombra la tabla con HTML nativo; si el título ya existe fuera, usa `labelledBy` con su `id` en vez de repetirlo. `stickyHeader` necesita una altura limitada en `ui.tableRoot`. Las columnas usan bordes lógicos (`start` y `end`) para conservar el comportamiento en interfaces RTL. Cuando `interactive` está activo, una fila emite `rowClick` tanto con puntero como con Enter o Espacio y recibe un nombre accesible a partir de `rowLabel`.
|
|
411
|
+
|
|
393
412
|
#### Traducir un valor a una etiqueta
|
|
394
413
|
|
|
395
414
|
La columna `badge` tiene `map`, que convierte el valor crudo que llega del servidor en la etiqueta y el color que ve el usuario. Es lo que evita enseñar `user` o `published` en pantalla:
|
|
@@ -434,7 +453,7 @@ Y un aviso al ordenar: `sortable` ordena **en servidor por `key`**, y el servido
|
|
|
434
453
|
`map` es solo de `badge`. Para traducir en otro tipo de columna, o para componer algo que no es una etiqueta, está `type: 'custom'` con su slot:
|
|
435
454
|
|
|
436
455
|
```vue
|
|
437
|
-
<VTable v-model:
|
|
456
|
+
<VTable v-model:sort="sort" :definition="definition" :data="rows">
|
|
438
457
|
<template #cell-stock="{ row, value }">
|
|
439
458
|
<span class="tabular-nums">{{ value }} uds.</span>
|
|
440
459
|
<VBadge v-if="row.stock === 0" color="error" label="Agotado" />
|
|
@@ -449,9 +468,7 @@ El slot se llama `cell-<key>` y recibe `value` —el valor de esa columna, ya re
|
|
|
449
468
|
Son dos estados distintos y se pintan distinto. Sin separarlos, una consulta que falla se normaliza a lista vacía (`data ?? []`) y la tabla dice «No hay resultados»: afirma que no hay nada cuando lo cierto es que no se pudo saber.
|
|
450
469
|
|
|
451
470
|
```ts
|
|
452
|
-
const failure = computed(() => isError.value
|
|
453
|
-
? { title: 'No pudimos cargar los productos', hint: 'Puede ser algo temporal.', retry: () => void refetch() }
|
|
454
|
-
: undefined)
|
|
471
|
+
const failure = computed(() => (isError.value ? { title: 'No pudimos cargar los productos', hint: 'Puede ser algo temporal.', retry: () => void refetch() } : undefined))
|
|
455
472
|
```
|
|
456
473
|
|
|
457
474
|
Con `useCrud` no hace falta escribirlo: el objeto lo construye él, y el título y la pista se declaran en `messages` con `listFailed` y `listFailedHint`.
|
|
@@ -473,11 +490,7 @@ Los dos estados existen además sueltos, para las pantallas que no son una tabla
|
|
|
473
490
|
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
491
|
|
|
475
492
|
```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
|
-
>
|
|
493
|
+
<VAlert color="warning" title="Faltan datos de facturación" description="Completa la dirección fiscal antes de emitir una factura.">
|
|
481
494
|
<template #actions><VButton label="Completar datos" variant="outline" /></template>
|
|
482
495
|
</VAlert>
|
|
483
496
|
```
|
|
@@ -518,13 +531,13 @@ El componente recibe `open` y los props que le pases, y resuelve la promesa emit
|
|
|
518
531
|
|
|
519
532
|
```vue
|
|
520
533
|
<script setup lang="ts">
|
|
521
|
-
const emit = defineEmits<{ close: [guardado: boolean] }>()
|
|
522
|
-
const open = defineModel<boolean>('open', { default: false })
|
|
534
|
+
const emit = defineEmits<{ close: [guardado: boolean] }>()
|
|
535
|
+
const open = defineModel<boolean>('open', { default: false })
|
|
523
536
|
|
|
524
|
-
function guardar() {
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
}
|
|
537
|
+
function guardar() {
|
|
538
|
+
open.value = false
|
|
539
|
+
emit('close', true)
|
|
540
|
+
}
|
|
528
541
|
</script>
|
|
529
542
|
```
|
|
530
543
|
|
|
@@ -532,22 +545,22 @@ Se pinta en `<VApp>` y no en la pantalla que lo abrió, así que navegar no lo d
|
|
|
532
545
|
|
|
533
546
|
## Composables
|
|
534
547
|
|
|
535
|
-
| Composable
|
|
536
|
-
|
|
537
|
-
| `useCrud`
|
|
538
|
-
| `useTableQuery`
|
|
539
|
-
| `useForm`
|
|
540
|
-
| `useField`
|
|
541
|
-
| `useTheme`
|
|
542
|
-
| `useIcons`
|
|
543
|
-
| `useLocale`
|
|
544
|
-
| `useMessages`
|
|
545
|
-
| `useToast`
|
|
546
|
-
| `useConfirm`
|
|
547
|
-
| `useOverlay`
|
|
548
|
-
| `useModal`
|
|
549
|
-
| `useContext`
|
|
550
|
-
| `defineShortcuts` | Declara atajos de teclado reactivos y ligados al ciclo de vida.
|
|
548
|
+
| Composable | Para qué |
|
|
549
|
+
| ----------------- | -------------------------------------------------------------------------------- |
|
|
550
|
+
| `useCrud` | El ciclo de mantenimiento entero sobre TanStack Query. |
|
|
551
|
+
| `useTableQuery` | Estado de consulta de una tabla, opcionalmente sincronizado con la query string. |
|
|
552
|
+
| `useForm` | Contexto del `VForm` que envuelve al componente: estado, `dirty`, `reset`. |
|
|
553
|
+
| `useField` | Lee y escribe un campo por su ruta; para construir campos propios. |
|
|
554
|
+
| `useTheme` | Resuelve los slots de un componente cruzando tema, `app.config` y prop `ui`. |
|
|
555
|
+
| `useIcons` | Los iconos configurados en `vuno.icons`. |
|
|
556
|
+
| `useLocale` | El idioma configurado para fechas, números y monedas. |
|
|
557
|
+
| `useMessages` | Los textos configurados en `vuno.messages`. |
|
|
558
|
+
| `useToast` | Notificaciones globales que no interrumpen. |
|
|
559
|
+
| `useConfirm` | Confirmación global que devuelve la respuesta como promesa. |
|
|
560
|
+
| `useOverlay` | Abre componentes como capas globales desde código. |
|
|
561
|
+
| `useModal` | Resuelve y abre los modales del proyecto por nombre. |
|
|
562
|
+
| `useContext` | Acceso de bajo nivel al contexto provisto por `VApp`. |
|
|
563
|
+
| `defineShortcuts` | Declara atajos de teclado reactivos y ligados al ciclo de vida. |
|
|
551
564
|
|
|
552
565
|
`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.
|
|
553
566
|
|
|
@@ -559,7 +572,7 @@ Se pinta en `<VApp>` y no en la pantalla que lo abrió, así que navegar no lo d
|
|
|
559
572
|
|
|
560
573
|
```css
|
|
561
574
|
:root {
|
|
562
|
-
|
|
575
|
+
--vuno-primary: var(--color-indigo-600);
|
|
563
576
|
}
|
|
564
577
|
```
|
|
565
578
|
|
|
@@ -567,16 +580,16 @@ Con esa línea cambian los botones sólidos, el anillo de foco de todos los camp
|
|
|
567
580
|
|
|
568
581
|
Los que hay:
|
|
569
582
|
|
|
570
|
-
| Token
|
|
571
|
-
|
|
|
572
|
-
| `--vuno-primary` · `--vuno-secondary` · `--vuno-neutral`
|
|
573
|
-
| `--vuno-success` · `--vuno-info` · `--vuno-warning` · `--vuno-error`
|
|
574
|
-
| `--vuno-*-contrast`
|
|
575
|
-
| `--vuno-font-sans` · `--vuno-font-mono`
|
|
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.
|
|
577
|
-
| `--vuno-text-strong` · `-body` · `-muted` · `-subtle` · `-inverse`
|
|
578
|
-
| `--vuno-border` · `--vuno-border-strong`
|
|
579
|
-
| `--vuno-backdrop`
|
|
583
|
+
| Token | Para qué |
|
|
584
|
+
| ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
585
|
+
| `--vuno-primary` · `--vuno-secondary` · `--vuno-neutral` | Los tres acentos de marca. |
|
|
586
|
+
| `--vuno-success` · `--vuno-info` · `--vuno-warning` · `--vuno-error` | Los cuatro de estado. |
|
|
587
|
+
| `--vuno-*-contrast` | El texto que va **encima** de cada acento en su variante sólida. |
|
|
588
|
+
| `--vuno-font-sans` · `--vuno-font-mono` | La tipografía. El módulo **nombra** la familia y no la carga: un `@import` a un servidor de fuentes convertiría cada visita de tu proyecto en una petición a un tercero. Cárgala tú —con `@nuxt/fonts` o con tu propio `@font-face`—; si no está, la pila de respaldo se encarga. |
|
|
589
|
+
| `--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. |
|
|
590
|
+
| `--vuno-text-strong` · `-body` · `-muted` · `-subtle` · `-inverse` | El texto por jerarquía, no por color. |
|
|
591
|
+
| `--vuno-border` · `--vuno-border-strong` | El borde que decora y el que delimita un control. |
|
|
592
|
+
| `--vuno-backdrop` | El velo que oscurece detrás de un diálogo. |
|
|
580
593
|
|
|
581
594
|
Dos cosas que ahorran un rato:
|
|
582
595
|
|
|
@@ -586,23 +599,28 @@ Dos cosas que ahorran un rato:
|
|
|
586
599
|
|
|
587
600
|
```css
|
|
588
601
|
.dark {
|
|
589
|
-
|
|
602
|
+
--vuno-primary: var(--color-indigo-400);
|
|
590
603
|
}
|
|
591
604
|
```
|
|
592
605
|
|
|
593
|
-
### Los
|
|
606
|
+
### Los niveles de configuración
|
|
594
607
|
|
|
595
|
-
|
|
608
|
+
Los defaults visuales compartidos viven en `vuno.theme`; las entradas de cada
|
|
609
|
+
componente, en `vuno.components`. Los iconos, textos e idioma permanecen al
|
|
610
|
+
nivel de `vuno` porque no son temas de un componente.
|
|
596
611
|
|
|
597
612
|
```ts
|
|
598
613
|
// app.config.ts — para toda la aplicación
|
|
599
614
|
export default defineAppConfig({
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
615
|
+
vuno: {
|
|
616
|
+
components: {
|
|
617
|
+
formSection: { slots: { root: 'border-dashed' } },
|
|
618
|
+
},
|
|
619
|
+
icons: { slugEdit: 'lucide:wand-sparkles' },
|
|
620
|
+
locale: 'es-ES',
|
|
621
|
+
messages: { selectPlaceholder: 'Elige una opción' },
|
|
622
|
+
theme: { radius: 'md' },
|
|
623
|
+
},
|
|
606
624
|
})
|
|
607
625
|
```
|
|
608
626
|
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -19,6 +19,12 @@ const module$1 = defineNuxtModule({
|
|
|
19
19
|
scan: true
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
+
},
|
|
23
|
+
"@nuxtjs/color-mode": {
|
|
24
|
+
defaults: {
|
|
25
|
+
storage: "cookie",
|
|
26
|
+
storageKey: "vuno-theme"
|
|
27
|
+
}
|
|
22
28
|
}
|
|
23
29
|
},
|
|
24
30
|
setup(options, nuxt) {
|
|
@@ -59,7 +65,7 @@ export {}
|
|
|
59
65
|
});
|
|
60
66
|
nuxt.hook("components:extend", (components) => {
|
|
61
67
|
for (const component of components) {
|
|
62
|
-
const path = component.filePath.
|
|
68
|
+
const path = component.filePath.replaceAll("\\", "/");
|
|
63
69
|
if (path.includes("/components/modal/")) component.global = true;
|
|
64
70
|
}
|
|
65
71
|
});
|
|
@@ -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[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}}
|
|
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)}}@media (width < 40rem){dialog[data-vuno-modal]:not([data-position]){transform:translateY(100%)}dialog[data-vuno-modal]:not([data-position])[open]{transform:translateY(0)}@starting-style{dialog[data-vuno-modal]:not([data-position])[open]{transform:translateY(100%)}}}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}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@import "tailwindcss";@import "#build/vuno.css";@import "./tokens.css";@import "./theme.css";@import "./dialog.css";@source "../../**/*";
|
|
1
|
+
@import "tailwindcss";@import "#build/vuno.css";@import "./tokens.css";@import "./theme.css";@import "./dialog.css";@custom-variant dark (&:where(.dark, .dark *));@source "../../**/*";
|
|
@@ -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);--container-8xl:96rem}
|
|
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-brand:var(--vuno-brand);--color-vuno-brand-hover:var(--vuno-brand-hover);--color-vuno-brand-contrast:var(--vuno-brand-contrast);--color-vuno-control:var(--vuno-control);--color-vuno-tint:var(--vuno-tint);--color-vuno-line:var(--vuno-line);--color-vuno-focus:var(--vuno-focus);--color-vuno-danger-solid:var(--vuno-danger-solid);--color-vuno-danger-solid-hover:var(--vuno-danger-solid-hover);--color-vuno-danger-solid-contrast:var(--vuno-danger-solid-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}
|