@deenruv/react-ui-devkit 1.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/LICENSE +23 -0
- package/README.md +767 -0
- package/dist/DeenruvAdminPanelSettingsTypes.d.ts +37 -0
- package/dist/DeenruvAdminPanelSettingsTypes.js +2 -0
- package/dist/DeenruvAdminPanelSettingsTypes.js.map +1 -0
- package/dist/components/atoms/accordion.d.ts +9 -0
- package/dist/components/atoms/accordion.js +27 -0
- package/dist/components/atoms/accordion.js.map +1 -0
- package/dist/components/atoms/alert-dialog.d.ts +20 -0
- package/dist/components/atoms/alert-dialog.js +53 -0
- package/dist/components/atoms/alert-dialog.js.map +1 -0
- package/dist/components/atoms/aspect-ratio.d.ts +4 -0
- package/dist/components/atoms/aspect-ratio.js +4 -0
- package/dist/components/atoms/aspect-ratio.js.map +1 -0
- package/dist/components/atoms/asset-upload-button.d.ts +11 -0
- package/dist/components/atoms/asset-upload-button.js +70 -0
- package/dist/components/atoms/asset-upload-button.js.map +1 -0
- package/dist/components/atoms/badge.d.ts +10 -0
- package/dist/components/atoms/badge.js +32 -0
- package/dist/components/atoms/badge.js.map +1 -0
- package/dist/components/atoms/breadcrumb.d.ts +19 -0
- package/dist/components/atoms/breadcrumb.js +45 -0
- package/dist/components/atoms/breadcrumb.js.map +1 -0
- package/dist/components/atoms/button.d.ts +9 -0
- package/dist/components/atoms/button.js +13 -0
- package/dist/components/atoms/button.js.map +1 -0
- package/dist/components/atoms/calendar.d.ts +8 -0
- package/dist/components/atoms/calendar.js +12 -0
- package/dist/components/atoms/calendar.js.map +1 -0
- package/dist/components/atoms/card.d.ts +8 -0
- package/dist/components/atoms/card.js +35 -0
- package/dist/components/atoms/card.js.map +1 -0
- package/dist/components/atoms/chart.d.ts +63 -0
- package/dist/components/atoms/chart.js +154 -0
- package/dist/components/atoms/chart.js.map +1 -0
- package/dist/components/atoms/checkbox.d.ts +4 -0
- package/dist/components/atoms/checkbox.js +14 -0
- package/dist/components/atoms/checkbox.js.map +1 -0
- package/dist/components/atoms/command.d.ts +84 -0
- package/dist/components/atoms/command.js +53 -0
- package/dist/components/atoms/command.js.map +1 -0
- package/dist/components/atoms/dialog.d.ts +19 -0
- package/dist/components/atoms/dialog.js +47 -0
- package/dist/components/atoms/dialog.js.map +1 -0
- package/dist/components/atoms/drawer.d.ts +22 -0
- package/dist/components/atoms/drawer.js +48 -0
- package/dist/components/atoms/drawer.js.map +1 -0
- package/dist/components/atoms/dropdown-menu.d.ts +27 -0
- package/dist/components/atoms/dropdown-menu.js +72 -0
- package/dist/components/atoms/dropdown-menu.js.map +1 -0
- package/dist/components/atoms/faceted-filter.d.ts +58 -0
- package/dist/components/atoms/faceted-filter.js +37 -0
- package/dist/components/atoms/faceted-filter.js.map +1 -0
- package/dist/components/atoms/form.d.ts +23 -0
- package/dist/components/atoms/form.js +64 -0
- package/dist/components/atoms/form.js.map +1 -0
- package/dist/components/atoms/hover-card.d.ts +6 -0
- package/dist/components/atoms/hover-card.js +13 -0
- package/dist/components/atoms/hover-card.js.map +1 -0
- package/dist/components/atoms/image-placeholder.d.ts +6 -0
- package/dist/components/atoms/image-placeholder.js +9 -0
- package/dist/components/atoms/image-placeholder.js.map +1 -0
- package/dist/components/atoms/index.d.ts +42 -0
- package/dist/components/atoms/index.js +43 -0
- package/dist/components/atoms/index.js.map +1 -0
- package/dist/components/atoms/input.d.ts +12 -0
- package/dist/components/atoms/input.js +76 -0
- package/dist/components/atoms/input.js.map +1 -0
- package/dist/components/atoms/label.d.ts +5 -0
- package/dist/components/atoms/label.js +13 -0
- package/dist/components/atoms/label.js.map +1 -0
- package/dist/components/atoms/language-picker.d.ts +8 -0
- package/dist/components/atoms/language-picker.js +38 -0
- package/dist/components/atoms/language-picker.js.map +1 -0
- package/dist/components/atoms/multiple-selector.d.ts +76 -0
- package/dist/components/atoms/multiple-selector.js +375 -0
- package/dist/components/atoms/multiple-selector.js.map +1 -0
- package/dist/components/atoms/pagination.d.ts +36 -0
- package/dist/components/atoms/pagination.js +59 -0
- package/dist/components/atoms/pagination.js.map +1 -0
- package/dist/components/atoms/popover.d.ts +6 -0
- package/dist/components/atoms/popover.js +14 -0
- package/dist/components/atoms/popover.js.map +1 -0
- package/dist/components/atoms/progress.d.ts +4 -0
- package/dist/components/atoms/progress.js +12 -0
- package/dist/components/atoms/progress.js.map +1 -0
- package/dist/components/atoms/radio-group.d.ts +5 -0
- package/dist/components/atoms/radio-group.js +19 -0
- package/dist/components/atoms/radio-group.js.map +1 -0
- package/dist/components/atoms/scroll-area.d.ts +5 -0
- package/dist/components/atoms/scroll-area.js +22 -0
- package/dist/components/atoms/scroll-area.js.map +1 -0
- package/dist/components/atoms/select.d.ts +16 -0
- package/dist/components/atoms/select.js +61 -0
- package/dist/components/atoms/select.js.map +1 -0
- package/dist/components/atoms/separator.d.ts +4 -0
- package/dist/components/atoms/separator.js +12 -0
- package/dist/components/atoms/separator.js.map +1 -0
- package/dist/components/atoms/sheet.d.ts +25 -0
- package/dist/components/atoms/sheet.js +61 -0
- package/dist/components/atoms/sheet.js.map +1 -0
- package/dist/components/atoms/skeleton.d.ts +3 -0
- package/dist/components/atoms/skeleton.js +9 -0
- package/dist/components/atoms/skeleton.js.map +1 -0
- package/dist/components/atoms/sonner.d.ts +7 -0
- package/dist/components/atoms/sonner.js +16 -0
- package/dist/components/atoms/sonner.js.map +1 -0
- package/dist/components/atoms/sortable.d.ts +53 -0
- package/dist/components/atoms/sortable.js +279 -0
- package/dist/components/atoms/sortable.js.map +1 -0
- package/dist/components/atoms/spinner.d.ts +6 -0
- package/dist/components/atoms/spinner.js +17 -0
- package/dist/components/atoms/spinner.js.map +1 -0
- package/dist/components/atoms/switch.d.ts +4 -0
- package/dist/components/atoms/switch.js +12 -0
- package/dist/components/atoms/switch.js.map +1 -0
- package/dist/components/atoms/table.d.ts +15 -0
- package/dist/components/atoms/table.js +49 -0
- package/dist/components/atoms/table.js.map +1 -0
- package/dist/components/atoms/tabs.d.ts +7 -0
- package/dist/components/atoms/tabs.js +26 -0
- package/dist/components/atoms/tabs.js.map +1 -0
- package/dist/components/atoms/textarea.d.ts +5 -0
- package/dist/components/atoms/textarea.js +10 -0
- package/dist/components/atoms/textarea.js.map +1 -0
- package/dist/components/atoms/timeline.d.ts +39 -0
- package/dist/components/atoms/timeline.js +104 -0
- package/dist/components/atoms/timeline.js.map +1 -0
- package/dist/components/atoms/toggle-group.d.ts +12 -0
- package/dist/components/atoms/toggle-group.js +26 -0
- package/dist/components/atoms/toggle-group.js.map +1 -0
- package/dist/components/atoms/toggle.d.ts +12 -0
- package/dist/components/atoms/toggle.js +29 -0
- package/dist/components/atoms/toggle.js.map +1 -0
- package/dist/components/atoms/tooltip.d.ts +7 -0
- package/dist/components/atoms/tooltip.js +14 -0
- package/dist/components/atoms/tooltip.js.map +1 -0
- package/dist/components/core/DetailViewMarker.d.ts +6 -0
- package/dist/components/core/DetailViewMarker.js +35 -0
- package/dist/components/core/DetailViewMarker.js.map +1 -0
- package/dist/components/core/EntityCustomFields.d.ts +31 -0
- package/dist/components/core/EntityCustomFields.js +321 -0
- package/dist/components/core/EntityCustomFields.js.map +1 -0
- package/dist/components/core/ListViewMarker.d.ts +7 -0
- package/dist/components/core/ListViewMarker.js +36 -0
- package/dist/components/core/ListViewMarker.js.map +1 -0
- package/dist/components/core/Renderer.d.ts +6 -0
- package/dist/components/core/Renderer.js +16 -0
- package/dist/components/core/Renderer.js.map +1 -0
- package/dist/components/core/index.d.ts +4 -0
- package/dist/components/core/index.js +5 -0
- package/dist/components/core/index.js.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/molecules/ContextMenu.d.ts +6 -0
- package/dist/components/molecules/ContextMenu.js +14 -0
- package/dist/components/molecules/ContextMenu.js.map +1 -0
- package/dist/components/molecules/CustomFieldsModal.d.ts +22 -0
- package/dist/components/molecules/CustomFieldsModal.js +90 -0
- package/dist/components/molecules/CustomFieldsModal.js.map +1 -0
- package/dist/components/molecules/ErrorMessage.d.ts +7 -0
- package/dist/components/molecules/ErrorMessage.js +7 -0
- package/dist/components/molecules/ErrorMessage.js.map +1 -0
- package/dist/components/molecules/ImageWithPreview.d.ts +7 -0
- package/dist/components/molecules/ImageWithPreview.js +16 -0
- package/dist/components/molecules/ImageWithPreview.js.map +1 -0
- package/dist/components/molecules/ListBadge.d.ts +4 -0
- package/dist/components/molecules/ListBadge.js +8 -0
- package/dist/components/molecules/ListBadge.js.map +1 -0
- package/dist/components/molecules/ListTable.d.ts +13 -0
- package/dist/components/molecules/ListTable.js +137 -0
- package/dist/components/molecules/ListTable.js.map +1 -0
- package/dist/components/molecules/OrderStateBadge.d.ts +6 -0
- package/dist/components/molecules/OrderStateBadge.js +80 -0
- package/dist/components/molecules/OrderStateBadge.js.map +1 -0
- package/dist/components/molecules/PaymentMethodImage.d.ts +4 -0
- package/dist/components/molecules/PaymentMethodImage.js +22 -0
- package/dist/components/molecules/PaymentMethodImage.js.map +1 -0
- package/dist/components/molecules/SearchInput.d.ts +8 -0
- package/dist/components/molecules/SearchInput.js +10 -0
- package/dist/components/molecules/SearchInput.js.map +1 -0
- package/dist/components/molecules/SimpleSelect.d.ts +14 -0
- package/dist/components/molecules/SimpleSelect.js +15 -0
- package/dist/components/molecules/SimpleSelect.js.map +1 -0
- package/dist/components/molecules/SimpleTooltip.d.ts +6 -0
- package/dist/components/molecules/SimpleTooltip.js +10 -0
- package/dist/components/molecules/SimpleTooltip.js.map +1 -0
- package/dist/components/molecules/SortButton.d.ts +7 -0
- package/dist/components/molecules/SortButton.js +11 -0
- package/dist/components/molecules/SortButton.js.map +1 -0
- package/dist/components/molecules/TranslationSelect.d.ts +2 -0
- package/dist/components/molecules/TranslationSelect.js +20 -0
- package/dist/components/molecules/TranslationSelect.js.map +1 -0
- package/dist/components/molecules/index.d.ts +13 -0
- package/dist/components/molecules/index.js +14 -0
- package/dist/components/molecules/index.js.map +1 -0
- package/dist/components/templates/DetailList/DetailList.d.ts +60 -0
- package/dist/components/templates/DetailList/DetailList.js +523 -0
- package/dist/components/templates/DetailList/DetailList.js.map +1 -0
- package/dist/components/templates/DetailList/DetailListColumns/ActionsDropdown.d.ts +5 -0
- package/dist/components/templates/DetailList/DetailListColumns/ActionsDropdown.js +103 -0
- package/dist/components/templates/DetailList/DetailListColumns/ActionsDropdown.js.map +1 -0
- package/dist/components/templates/DetailList/DetailListColumns/BooleanCell.d.ts +4 -0
- package/dist/components/templates/DetailList/DetailListColumns/BooleanCell.js +8 -0
- package/dist/components/templates/DetailList/DetailListColumns/BooleanCell.js.map +1 -0
- package/dist/components/templates/DetailList/DetailListColumns/SelectIDColumn.d.ts +4 -0
- package/dist/components/templates/DetailList/DetailListColumns/SelectIDColumn.js +43 -0
- package/dist/components/templates/DetailList/DetailListColumns/SelectIDColumn.js.map +1 -0
- package/dist/components/templates/DetailList/DetailListColumns/index.d.ts +3 -0
- package/dist/components/templates/DetailList/DetailListColumns/index.js +4 -0
- package/dist/components/templates/DetailList/DetailListColumns/index.js.map +1 -0
- package/dist/components/templates/DetailList/_components/DeleteDialog.d.ts +11 -0
- package/dist/components/templates/DetailList/_components/DeleteDialog.js +23 -0
- package/dist/components/templates/DetailList/_components/DeleteDialog.js.map +1 -0
- package/dist/components/templates/DetailList/_components/TableLabel.d.ts +3 -0
- package/dist/components/templates/DetailList/_components/TableLabel.js +7 -0
- package/dist/components/templates/DetailList/_components/TableLabel.js.map +1 -0
- package/dist/components/templates/DetailList/_components/index.d.ts +2 -0
- package/dist/components/templates/DetailList/_components/index.js +3 -0
- package/dist/components/templates/DetailList/_components/index.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/ArrayInput.d.ts +6 -0
- package/dist/components/templates/DetailList/_components/operators/ArrayInput.js +42 -0
- package/dist/components/templates/DetailList/_components/operators/ArrayInput.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/BooleanOperator.d.ts +9 -0
- package/dist/components/templates/DetailList/_components/operators/BooleanOperator.js +33 -0
- package/dist/components/templates/DetailList/_components/operators/BooleanOperator.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/DateOperator.d.ts +9 -0
- package/dist/components/templates/DetailList/_components/operators/DateOperator.js +88 -0
- package/dist/components/templates/DetailList/_components/operators/DateOperator.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/IDOperator.d.ts +9 -0
- package/dist/components/templates/DetailList/_components/operators/IDOperator.js +43 -0
- package/dist/components/templates/DetailList/_components/operators/IDOperator.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/NumberOperator.d.ts +10 -0
- package/dist/components/templates/DetailList/_components/operators/NumberOperator.js +81 -0
- package/dist/components/templates/DetailList/_components/operators/NumberOperator.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/RenderOperators.d.ts +19 -0
- package/dist/components/templates/DetailList/_components/operators/RenderOperators.js +64 -0
- package/dist/components/templates/DetailList/_components/operators/RenderOperators.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/StringOperator.d.ts +9 -0
- package/dist/components/templates/DetailList/_components/operators/StringOperator.js +57 -0
- package/dist/components/templates/DetailList/_components/operators/StringOperator.js.map +1 -0
- package/dist/components/templates/DetailList/_components/operators/index.d.ts +1 -0
- package/dist/components/templates/DetailList/_components/operators/index.js +2 -0
- package/dist/components/templates/DetailList/_components/operators/index.js.map +1 -0
- package/dist/components/templates/DetailList/_components/types.d.ts +81 -0
- package/dist/components/templates/DetailList/_components/types.js +122 -0
- package/dist/components/templates/DetailList/_components/types.js.map +1 -0
- package/dist/components/templates/DetailList/index.d.ts +9 -0
- package/dist/components/templates/DetailList/index.js +10 -0
- package/dist/components/templates/DetailList/index.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailList.d.ts +12 -0
- package/dist/components/templates/DetailList/useDetailList.js +19 -0
- package/dist/components/templates/DetailList/useDetailList.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/ColumnView.d.ts +8 -0
- package/dist/components/templates/DetailList/useDetailListHook/ColumnView.js +102 -0
- package/dist/components/templates/DetailList/useDetailListHook/ColumnView.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/FiltersDialog.d.ts +117 -0
- package/dist/components/templates/DetailList/useDetailListHook/FiltersDialog.js +139 -0
- package/dist/components/templates/DetailList/useDetailListHook/FiltersDialog.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/OperatorSelect.d.ts +15 -0
- package/dist/components/templates/DetailList/useDetailListHook/OperatorSelect.js +74 -0
- package/dist/components/templates/DetailList/useDetailListHook/OperatorSelect.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/OperatorValue.d.ts +15 -0
- package/dist/components/templates/DetailList/useDetailListHook/OperatorValue.js +38 -0
- package/dist/components/templates/DetailList/useDetailListHook/OperatorValue.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/Paginate.d.ts +11 -0
- package/dist/components/templates/DetailList/useDetailListHook/Paginate.js +71 -0
- package/dist/components/templates/DetailList/useDetailListHook/Paginate.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/Search.d.ts +11 -0
- package/dist/components/templates/DetailList/useDetailListHook/Search.js +31 -0
- package/dist/components/templates/DetailList/useDetailListHook/Search.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/SortSelect.d.ts +9 -0
- package/dist/components/templates/DetailList/useDetailListHook/SortSelect.js +35 -0
- package/dist/components/templates/DetailList/useDetailListHook/SortSelect.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/constants.d.ts +3 -0
- package/dist/components/templates/DetailList/useDetailListHook/constants.js +13 -0
- package/dist/components/templates/DetailList/useDetailListHook/constants.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/index.d.ts +82 -0
- package/dist/components/templates/DetailList/useDetailListHook/index.js +212 -0
- package/dist/components/templates/DetailList/useDetailListHook/index.js.map +1 -0
- package/dist/components/templates/DetailList/useDetailListHook/types.d.ts +113 -0
- package/dist/components/templates/DetailList/useDetailListHook/types.js +36 -0
- package/dist/components/templates/DetailList/useDetailListHook/types.js.map +1 -0
- package/dist/components/templates/DetailView/DetailView.d.ts +64 -0
- package/dist/components/templates/DetailView/DetailView.js +134 -0
- package/dist/components/templates/DetailView/DetailView.js.map +1 -0
- package/dist/components/templates/DetailView/_components/LoadingMask.d.ts +4 -0
- package/dist/components/templates/DetailView/_components/LoadingMask.js +19 -0
- package/dist/components/templates/DetailView/_components/LoadingMask.js.map +1 -0
- package/dist/components/templates/DetailView/formChangeDetection.d.ts +3 -0
- package/dist/components/templates/DetailView/formChangeDetection.js +119 -0
- package/dist/components/templates/DetailView/formChangeDetection.js.map +1 -0
- package/dist/components/templates/DetailView/index.d.ts +4 -0
- package/dist/components/templates/DetailView/index.js +5 -0
- package/dist/components/templates/DetailView/index.js.map +1 -0
- package/dist/components/templates/DetailView/types.d.ts +70 -0
- package/dist/components/templates/DetailView/types.js +2 -0
- package/dist/components/templates/DetailView/types.js.map +1 -0
- package/dist/components/templates/DetailView/useDetailView.d.ts +563 -0
- package/dist/components/templates/DetailView/useDetailView.js +244 -0
- package/dist/components/templates/DetailView/useDetailView.js.map +1 -0
- package/dist/components/templates/index.d.ts +2 -0
- package/dist/components/templates/index.js +3 -0
- package/dist/components/templates/index.js.map +1 -0
- package/dist/consts/defaultChannel.d.ts +1 -0
- package/dist/consts/defaultChannel.js +2 -0
- package/dist/consts/defaultChannel.js.map +1 -0
- package/dist/consts/icons.d.ts +20 -0
- package/dist/consts/icons.js +21 -0
- package/dist/consts/icons.js.map +1 -0
- package/dist/consts/index.d.ts +2 -0
- package/dist/consts/index.js +3 -0
- package/dist/consts/index.js.map +1 -0
- package/dist/consts/localStorageVersion.d.ts +1 -0
- package/dist/consts/localStorageVersion.js +4 -0
- package/dist/consts/localStorageVersion.js.map +1 -0
- package/dist/custom_fields/ArgumentFieldsComponent.d.ts +24 -0
- package/dist/custom_fields/ArgumentFieldsComponent.js +84 -0
- package/dist/custom_fields/ArgumentFieldsComponent.js.map +1 -0
- package/dist/custom_fields/CustomFieldsComponent.d.ts +12 -0
- package/dist/custom_fields/CustomFieldsComponent.js +53 -0
- package/dist/custom_fields/CustomFieldsComponent.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultCheckbox.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultCheckbox.js +14 -0
- package/dist/custom_fields/DefaultInputs/DefaultCheckbox.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultCurrencyInput.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultCurrencyInput.js +17 -0
- package/dist/custom_fields/DefaultInputs/DefaultCurrencyInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultFloatInput.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultFloatInput.js +16 -0
- package/dist/custom_fields/DefaultInputs/DefaultFloatInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultIntInput.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultIntInput.js +15 -0
- package/dist/custom_fields/DefaultInputs/DefaultIntInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultRichText.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultRichText.js +14 -0
- package/dist/custom_fields/DefaultInputs/DefaultRichText.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultSimpleListInput.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultSimpleListInput.js +55 -0
- package/dist/custom_fields/DefaultInputs/DefaultSimpleListInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultTextInput.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultTextInput.js +15 -0
- package/dist/custom_fields/DefaultInputs/DefaultTextInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultTextarea.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultTextarea.js +13 -0
- package/dist/custom_fields/DefaultInputs/DefaultTextarea.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/DefaultTimeSelect.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/DefaultTimeSelect.js +29 -0
- package/dist/custom_fields/DefaultInputs/DefaultTimeSelect.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/Relations/DefaultRelationInput.d.ts +2 -0
- package/dist/custom_fields/DefaultInputs/Relations/DefaultRelationInput.js +25 -0
- package/dist/custom_fields/DefaultInputs/Relations/DefaultRelationInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/Relations/ListRelationInput.d.ts +4 -0
- package/dist/custom_fields/DefaultInputs/Relations/ListRelationInput.js +167 -0
- package/dist/custom_fields/DefaultInputs/Relations/ListRelationInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/Relations/RelationInput.d.ts +4 -0
- package/dist/custom_fields/DefaultInputs/Relations/RelationInput.js +66 -0
- package/dist/custom_fields/DefaultInputs/Relations/RelationInput.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/Relations/index.d.ts +1 -0
- package/dist/custom_fields/DefaultInputs/Relations/index.js +2 -0
- package/dist/custom_fields/DefaultInputs/Relations/index.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/index.d.ts +9 -0
- package/dist/custom_fields/DefaultInputs/index.js +10 -0
- package/dist/custom_fields/DefaultInputs/index.js.map +1 -0
- package/dist/custom_fields/DefaultInputs/types.d.ts +6 -0
- package/dist/custom_fields/DefaultInputs/types.js +2 -0
- package/dist/custom_fields/DefaultInputs/types.js.map +1 -0
- package/dist/custom_fields/InputFieldComponent.d.ts +11 -0
- package/dist/custom_fields/InputFieldComponent.js +23 -0
- package/dist/custom_fields/InputFieldComponent.js.map +1 -0
- package/dist/custom_fields/context.d.ts +29 -0
- package/dist/custom_fields/context.js +29 -0
- package/dist/custom_fields/context.js.map +1 -0
- package/dist/custom_fields/index.d.ts +6 -0
- package/dist/custom_fields/index.js +7 -0
- package/dist/custom_fields/index.js.map +1 -0
- package/dist/custom_fields/logic.d.ts +6 -0
- package/dist/custom_fields/logic.js +57 -0
- package/dist/custom_fields/logic.js.map +1 -0
- package/dist/hooks/index.d.ts +9 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAssets.d.ts +39 -0
- package/dist/hooks/useAssets.js +88 -0
- package/dist/hooks/useAssets.js.map +1 -0
- package/dist/hooks/useCustomSearchParams.d.ts +5 -0
- package/dist/hooks/useCustomSearchParams.js +45 -0
- package/dist/hooks/useCustomSearchParams.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +1 -0
- package/dist/hooks/useDebounce.js +12 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useErrorHandler.d.ts +4 -0
- package/dist/hooks/useErrorHandler.js +35 -0
- package/dist/hooks/useErrorHandler.js.map +1 -0
- package/dist/hooks/useGFFLP.d.ts +35 -0
- package/dist/hooks/useGFFLP.js +160 -0
- package/dist/hooks/useGFFLP.js.map +1 -0
- package/dist/hooks/useList.d.ts +52 -0
- package/dist/hooks/useList.js +267 -0
- package/dist/hooks/useList.js.map +1 -0
- package/dist/hooks/useLocalStorage.d.ts +2 -0
- package/dist/hooks/useLocalStorage.js +26 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/useRouteGuard.d.ts +5 -0
- package/dist/hooks/useRouteGuard.js +20 -0
- package/dist/hooks/useRouteGuard.js.map +1 -0
- package/dist/hooks/useTranslation.d.ts +9 -0
- package/dist/hooks/useTranslation.js +27 -0
- package/dist/hooks/useTranslation.js.map +1 -0
- package/dist/hooks/useValidators.d.ts +33 -0
- package/dist/hooks/useValidators.js +90 -0
- package/dist/hooks/useValidators.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/composition.d.ts +25 -0
- package/dist/lib/composition.js +59 -0
- package/dist/lib/composition.js.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/utils.d.ts +8 -0
- package/dist/lib/utils.js +47 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/notifications/context.d.ts +2 -0
- package/dist/notifications/context.js +3 -0
- package/dist/notifications/context.js.map +1 -0
- package/dist/notifications/index.d.ts +5 -0
- package/dist/notifications/index.js +6 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/provider.d.ts +3 -0
- package/dist/notifications/provider.js +13 -0
- package/dist/notifications/provider.js.map +1 -0
- package/dist/notifications/state.d.ts +5 -0
- package/dist/notifications/state.js +47 -0
- package/dist/notifications/state.js.map +1 -0
- package/dist/notifications/types.d.ts +37 -0
- package/dist/notifications/types.js +2 -0
- package/dist/notifications/types.js.map +1 -0
- package/dist/notifications/useNotifications.d.ts +2 -0
- package/dist/notifications/useNotifications.js +10 -0
- package/dist/notifications/useNotifications.js.map +1 -0
- package/dist/plugins/create-plugin.d.ts +2 -0
- package/dist/plugins/create-plugin.js +2 -0
- package/dist/plugins/create-plugin.js.map +1 -0
- package/dist/plugins/default-input-components.d.ts +7 -0
- package/dist/plugins/default-input-components.js +35 -0
- package/dist/plugins/default-input-components.js.map +1 -0
- package/dist/plugins/index.d.ts +5 -0
- package/dist/plugins/index.js +6 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/plugin-context.d.ts +46 -0
- package/dist/plugins/plugin-context.js +75 -0
- package/dist/plugins/plugin-context.js.map +1 -0
- package/dist/plugins/plugin-store.d.ts +46 -0
- package/dist/plugins/plugin-store.js +283 -0
- package/dist/plugins/plugin-store.js.map +1 -0
- package/dist/plugins/types.d.ts +135 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/routes.d.ts +124 -0
- package/dist/routes.js +139 -0
- package/dist/routes.js.map +1 -0
- package/dist/selectors/AssetsSelector.d.ts +17 -0
- package/dist/selectors/AssetsSelector.js +14 -0
- package/dist/selectors/AssetsSelector.js.map +1 -0
- package/dist/selectors/BaseSelectors.d.ts +258 -0
- package/dist/selectors/BaseSelectors.js +74 -0
- package/dist/selectors/BaseSelectors.js.map +1 -0
- package/dist/selectors/CustomFieldSelectors.d.ts +74 -0
- package/dist/selectors/CustomFieldSelectors.js +42 -0
- package/dist/selectors/CustomFieldSelectors.js.map +1 -0
- package/dist/selectors/CustomerSearchSelector.d.ts +9 -0
- package/dist/selectors/CustomerSearchSelector.js +9 -0
- package/dist/selectors/CustomerSearchSelector.js.map +1 -0
- package/dist/selectors/DialogProductPickerSelector.d.ts +45 -0
- package/dist/selectors/DialogProductPickerSelector.js +29 -0
- package/dist/selectors/DialogProductPickerSelector.js.map +1 -0
- package/dist/selectors/FacetValueSelector.d.ts +16 -0
- package/dist/selectors/FacetValueSelector.js +11 -0
- package/dist/selectors/FacetValueSelector.js.map +1 -0
- package/dist/selectors/ModifyOrderSelector.d.ts +418 -0
- package/dist/selectors/ModifyOrderSelector.js +57 -0
- package/dist/selectors/ModifyOrderSelector.js.map +1 -0
- package/dist/selectors/OrderHistorySelector.d.ts +15 -0
- package/dist/selectors/OrderHistorySelector.js +11 -0
- package/dist/selectors/OrderHistorySelector.js.map +1 -0
- package/dist/selectors/OrderListSelector.d.ts +183 -0
- package/dist/selectors/OrderListSelector.js +138 -0
- package/dist/selectors/OrderListSelector.js.map +1 -0
- package/dist/selectors/OrderPaymentSelector.d.ts +12 -0
- package/dist/selectors/OrderPaymentSelector.js +12 -0
- package/dist/selectors/OrderPaymentSelector.js.map +1 -0
- package/dist/selectors/PaymentMethodsSelector.d.ts +16 -0
- package/dist/selectors/PaymentMethodsSelector.js +16 -0
- package/dist/selectors/PaymentMethodsSelector.js.map +1 -0
- package/dist/selectors/PromotionsSelector.d.ts +26 -0
- package/dist/selectors/PromotionsSelector.js +25 -0
- package/dist/selectors/PromotionsSelector.js.map +1 -0
- package/dist/selectors/details/AdminDetailSelector.d.ts +24 -0
- package/dist/selectors/details/AdminDetailSelector.js +12 -0
- package/dist/selectors/details/AdminDetailSelector.js.map +1 -0
- package/dist/selectors/details/ChannelDetailSelector.d.ts +26 -0
- package/dist/selectors/details/ChannelDetailSelector.js +26 -0
- package/dist/selectors/details/ChannelDetailSelector.js.map +1 -0
- package/dist/selectors/details/CollectionDetailSelector.d.ts +45 -0
- package/dist/selectors/details/CollectionDetailSelector.js +40 -0
- package/dist/selectors/details/CollectionDetailSelector.js.map +1 -0
- package/dist/selectors/details/CountryDetailSelector.d.ts +14 -0
- package/dist/selectors/details/CountryDetailSelector.js +14 -0
- package/dist/selectors/details/CountryDetailSelector.js.map +1 -0
- package/dist/selectors/details/CustomerDetailSelector.d.ts +82 -0
- package/dist/selectors/details/CustomerDetailSelector.js +56 -0
- package/dist/selectors/details/CustomerDetailSelector.js.map +1 -0
- package/dist/selectors/details/CustomerGroupDetailSelector.d.ts +8 -0
- package/dist/selectors/details/CustomerGroupDetailSelector.js +8 -0
- package/dist/selectors/details/CustomerGroupDetailSelector.js.map +1 -0
- package/dist/selectors/details/FacetDetailSelector.d.ts +22 -0
- package/dist/selectors/details/FacetDetailSelector.js +23 -0
- package/dist/selectors/details/FacetDetailSelector.js.map +1 -0
- package/dist/selectors/details/GlobalSettingsDetailSelector.d.ts +10 -0
- package/dist/selectors/details/GlobalSettingsDetailSelector.js +10 -0
- package/dist/selectors/details/GlobalSettingsDetailSelector.js.map +1 -0
- package/dist/selectors/details/OrderDetailSelector.d.ts +265 -0
- package/dist/selectors/details/OrderDetailSelector.js +147 -0
- package/dist/selectors/details/OrderDetailSelector.js.map +1 -0
- package/dist/selectors/details/PaymentMethodDetailSelector.d.ts +29 -0
- package/dist/selectors/details/PaymentMethodDetailSelector.js +29 -0
- package/dist/selectors/details/PaymentMethodDetailSelector.js.map +1 -0
- package/dist/selectors/details/ProductDetailSelector.d.ts +81 -0
- package/dist/selectors/details/ProductDetailSelector.js +34 -0
- package/dist/selectors/details/ProductDetailSelector.js.map +1 -0
- package/dist/selectors/details/PromotionDetailSelector.d.ts +34 -0
- package/dist/selectors/details/PromotionDetailSelector.js +34 -0
- package/dist/selectors/details/PromotionDetailSelector.js.map +1 -0
- package/dist/selectors/details/RoleDetailSelector.d.ts +14 -0
- package/dist/selectors/details/RoleDetailSelector.js +14 -0
- package/dist/selectors/details/RoleDetailSelector.js.map +1 -0
- package/dist/selectors/details/SellerDetailSelector.d.ts +8 -0
- package/dist/selectors/details/SellerDetailSelector.js +8 -0
- package/dist/selectors/details/SellerDetailSelector.js.map +1 -0
- package/dist/selectors/details/ShippingMethodDetailSelector.d.ts +30 -0
- package/dist/selectors/details/ShippingMethodDetailSelector.js +30 -0
- package/dist/selectors/details/ShippingMethodDetailSelector.js.map +1 -0
- package/dist/selectors/details/StockLocationDetailSelector.d.ts +9 -0
- package/dist/selectors/details/StockLocationDetailSelector.js +9 -0
- package/dist/selectors/details/StockLocationDetailSelector.js.map +1 -0
- package/dist/selectors/details/TaxCategoryDetailSelector.d.ts +9 -0
- package/dist/selectors/details/TaxCategoryDetailSelector.js +9 -0
- package/dist/selectors/details/TaxCategoryDetailSelector.js.map +1 -0
- package/dist/selectors/details/TaxRateDetailSelector.d.ts +22 -0
- package/dist/selectors/details/TaxRateDetailSelector.js +22 -0
- package/dist/selectors/details/TaxRateDetailSelector.js.map +1 -0
- package/dist/selectors/details/ZoneDetailSelector.d.ts +16 -0
- package/dist/selectors/details/ZoneDetailSelector.js +16 -0
- package/dist/selectors/details/ZoneDetailSelector.js.map +1 -0
- package/dist/selectors/details/index.d.ts +19 -0
- package/dist/selectors/details/index.js +20 -0
- package/dist/selectors/details/index.js.map +1 -0
- package/dist/selectors/index.d.ts +9 -0
- package/dist/selectors/index.js +10 -0
- package/dist/selectors/index.js.map +1 -0
- package/dist/selectors/lists/AdminListSelector.d.ts +15 -0
- package/dist/selectors/lists/AdminListSelector.js +15 -0
- package/dist/selectors/lists/AdminListSelector.js.map +1 -0
- package/dist/selectors/lists/AssetListSelector.d.ts +23 -0
- package/dist/selectors/lists/AssetListSelector.js +17 -0
- package/dist/selectors/lists/AssetListSelector.js.map +1 -0
- package/dist/selectors/lists/ChannelListSelector.d.ts +9 -0
- package/dist/selectors/lists/ChannelListSelector.js +9 -0
- package/dist/selectors/lists/ChannelListSelector.js.map +1 -0
- package/dist/selectors/lists/CollectionListSelector.d.ts +42 -0
- package/dist/selectors/lists/CollectionListSelector.js +29 -0
- package/dist/selectors/lists/CollectionListSelector.js.map +1 -0
- package/dist/selectors/lists/CountryListSelector.d.ts +10 -0
- package/dist/selectors/lists/CountryListSelector.js +10 -0
- package/dist/selectors/lists/CountryListSelector.js.map +1 -0
- package/dist/selectors/lists/CustomerGroupListSelector.d.ts +8 -0
- package/dist/selectors/lists/CustomerGroupListSelector.js +8 -0
- package/dist/selectors/lists/CustomerGroupListSelector.js.map +1 -0
- package/dist/selectors/lists/CustomerListSelector.d.ts +16 -0
- package/dist/selectors/lists/CustomerListSelector.js +16 -0
- package/dist/selectors/lists/CustomerListSelector.js.map +1 -0
- package/dist/selectors/lists/FacetListSelector.d.ts +10 -0
- package/dist/selectors/lists/FacetListSelector.js +10 -0
- package/dist/selectors/lists/FacetListSelector.js.map +1 -0
- package/dist/selectors/lists/FacetValueListSelector.d.ts +7 -0
- package/dist/selectors/lists/FacetValueListSelector.js +7 -0
- package/dist/selectors/lists/FacetValueListSelector.js.map +1 -0
- package/dist/selectors/lists/OrderListSelector.d.ts +31 -0
- package/dist/selectors/lists/OrderListSelector.js +31 -0
- package/dist/selectors/lists/OrderListSelector.js.map +1 -0
- package/dist/selectors/lists/PaymentMethodListSelector.d.ts +10 -0
- package/dist/selectors/lists/PaymentMethodListSelector.js +10 -0
- package/dist/selectors/lists/PaymentMethodListSelector.js.map +1 -0
- package/dist/selectors/lists/ProductListSelector.d.ts +26 -0
- package/dist/selectors/lists/ProductListSelector.js +16 -0
- package/dist/selectors/lists/ProductListSelector.js.map +1 -0
- package/dist/selectors/lists/ProductVariantListSelector.d.ts +19 -0
- package/dist/selectors/lists/ProductVariantListSelector.js +16 -0
- package/dist/selectors/lists/ProductVariantListSelector.js.map +1 -0
- package/dist/selectors/lists/PromotionListSelector.d.ts +9 -0
- package/dist/selectors/lists/PromotionListSelector.js +9 -0
- package/dist/selectors/lists/PromotionListSelector.js.map +1 -0
- package/dist/selectors/lists/RoleListSelector.d.ts +13 -0
- package/dist/selectors/lists/RoleListSelector.js +13 -0
- package/dist/selectors/lists/RoleListSelector.js.map +1 -0
- package/dist/selectors/lists/SellerListSelector.d.ts +8 -0
- package/dist/selectors/lists/SellerListSelector.js +8 -0
- package/dist/selectors/lists/SellerListSelector.js.map +1 -0
- package/dist/selectors/lists/ShippingMethodListSelector.d.ts +9 -0
- package/dist/selectors/lists/ShippingMethodListSelector.js +9 -0
- package/dist/selectors/lists/ShippingMethodListSelector.js.map +1 -0
- package/dist/selectors/lists/StockLocationListSelector copy.d.ts +9 -0
- package/dist/selectors/lists/StockLocationListSelector copy.js +9 -0
- package/dist/selectors/lists/StockLocationListSelector copy.js.map +1 -0
- package/dist/selectors/lists/StockLocationListSelector.d.ts +9 -0
- package/dist/selectors/lists/StockLocationListSelector.js +9 -0
- package/dist/selectors/lists/StockLocationListSelector.js.map +1 -0
- package/dist/selectors/lists/TaxCategoryListSelector.d.ts +9 -0
- package/dist/selectors/lists/TaxCategoryListSelector.js +9 -0
- package/dist/selectors/lists/TaxCategoryListSelector.js.map +1 -0
- package/dist/selectors/lists/TaxRateListSelector.d.ts +19 -0
- package/dist/selectors/lists/TaxRateListSelector.js +13 -0
- package/dist/selectors/lists/TaxRateListSelector.js.map +1 -0
- package/dist/selectors/lists/ZoneListSelector.d.ts +11 -0
- package/dist/selectors/lists/ZoneListSelector.js +9 -0
- package/dist/selectors/lists/ZoneListSelector.js.map +1 -0
- package/dist/selectors/lists/index.d.ts +21 -0
- package/dist/selectors/lists/index.js +22 -0
- package/dist/selectors/lists/index.js.map +1 -0
- package/dist/state/global-search.d.ts +8 -0
- package/dist/state/global-search.js +8 -0
- package/dist/state/global-search.js.map +1 -0
- package/dist/state/global.d.ts +7 -0
- package/dist/state/global.js +35 -0
- package/dist/state/global.js.map +1 -0
- package/dist/state/guard.d.ts +11 -0
- package/dist/state/guard.js +25 -0
- package/dist/state/guard.js.map +1 -0
- package/dist/state/index.d.ts +6 -0
- package/dist/state/index.js +7 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/order.d.ts +137 -0
- package/dist/state/order.js +747 -0
- package/dist/state/order.js.map +1 -0
- package/dist/state/server.d.ts +80 -0
- package/dist/state/server.js +166 -0
- package/dist/state/server.js.map +1 -0
- package/dist/state/settings.d.ts +34 -0
- package/dist/state/settings.js +46 -0
- package/dist/state/settings.js.map +1 -0
- package/dist/tailwind.config.d.ts +88 -0
- package/dist/tailwind.config.js +89 -0
- package/dist/tailwind.config.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/models.d.ts +35 -0
- package/dist/types/models.js +2 -0
- package/dist/types/models.js.map +1 -0
- package/dist/types/types.d.ts +1391 -0
- package/dist/types/types.js +194 -0
- package/dist/types/types.js.map +1 -0
- package/dist/types/utility.d.ts +3 -0
- package/dist/types/utility.js +2 -0
- package/dist/types/utility.js.map +1 -0
- package/dist/universal_components/AssetsModalInput.d.ts +23 -0
- package/dist/universal_components/AssetsModalInput.js +132 -0
- package/dist/universal_components/AssetsModalInput.js.map +1 -0
- package/dist/universal_components/ConfirmationDialog.d.ts +18 -0
- package/dist/universal_components/ConfirmationDialog.js +31 -0
- package/dist/universal_components/ConfirmationDialog.js.map +1 -0
- package/dist/universal_components/CustomCard.d.ts +17 -0
- package/dist/universal_components/CustomCard.js +55 -0
- package/dist/universal_components/CustomCard.js.map +1 -0
- package/dist/universal_components/CustomCardHeader.d.ts +19 -0
- package/dist/universal_components/CustomCardHeader.js +24 -0
- package/dist/universal_components/CustomCardHeader.js.map +1 -0
- package/dist/universal_components/CustomerSearch.d.ts +32 -0
- package/dist/universal_components/CustomerSearch.js +357 -0
- package/dist/universal_components/CustomerSearch.js.map +1 -0
- package/dist/universal_components/DateTimeInput.d.ts +16 -0
- package/dist/universal_components/DateTimeInput.js +351 -0
- package/dist/universal_components/DateTimeInput.js.map +1 -0
- package/dist/universal_components/DateTimePicker.d.ts +83 -0
- package/dist/universal_components/DateTimePicker.js +504 -0
- package/dist/universal_components/DateTimePicker.js.map +1 -0
- package/dist/universal_components/DialogProductPicker.d.ts +26 -0
- package/dist/universal_components/DialogProductPicker.js +182 -0
- package/dist/universal_components/DialogProductPicker.js.map +1 -0
- package/dist/universal_components/DraggableSelect.d.ts +13 -0
- package/dist/universal_components/DraggableSelect.js +64 -0
- package/dist/universal_components/DraggableSelect.js.map +1 -0
- package/dist/universal_components/EmptyState.d.ts +23 -0
- package/dist/universal_components/EmptyState.js +33 -0
- package/dist/universal_components/EmptyState.js.map +1 -0
- package/dist/universal_components/EntityChannelManager.d.ts +25 -0
- package/dist/universal_components/EntityChannelManager.js +198 -0
- package/dist/universal_components/EntityChannelManager.js.map +1 -0
- package/dist/universal_components/FacetIdsSelector.d.ts +11 -0
- package/dist/universal_components/FacetIdsSelector.js +70 -0
- package/dist/universal_components/FacetIdsSelector.js.map +1 -0
- package/dist/universal_components/PageBlock.d.ts +14 -0
- package/dist/universal_components/PageBlock.js +15 -0
- package/dist/universal_components/PageBlock.js.map +1 -0
- package/dist/universal_components/RichTextEditor/Buttons.d.ts +12 -0
- package/dist/universal_components/RichTextEditor/Buttons.js +15 -0
- package/dist/universal_components/RichTextEditor/Buttons.js.map +1 -0
- package/dist/universal_components/RichTextEditor/EditorToolbar.d.ts +5 -0
- package/dist/universal_components/RichTextEditor/EditorToolbar.js +54 -0
- package/dist/universal_components/RichTextEditor/EditorToolbar.js.map +1 -0
- package/dist/universal_components/RichTextEditor/RichTextEditor.d.ts +17 -0
- package/dist/universal_components/RichTextEditor/RichTextEditor.js +48 -0
- package/dist/universal_components/RichTextEditor/RichTextEditor.js.map +1 -0
- package/dist/universal_components/RichTextEditor/index.d.ts +1 -0
- package/dist/universal_components/RichTextEditor/index.js +2 -0
- package/dist/universal_components/RichTextEditor/index.js.map +1 -0
- package/dist/universal_components/SimpleTimePicker.d.ts +16 -0
- package/dist/universal_components/SimpleTimePicker.js +297 -0
- package/dist/universal_components/SimpleTimePicker.js.map +1 -0
- package/dist/universal_components/index.d.ts +15 -0
- package/dist/universal_components/index.js +16 -0
- package/dist/universal_components/index.js.map +1 -0
- package/dist/universal_table_actions/DeleteEntityFromChannelsDialog.d.ts +10 -0
- package/dist/universal_table_actions/DeleteEntityFromChannelsDialog.js +121 -0
- package/dist/universal_table_actions/DeleteEntityFromChannelsDialog.js.map +1 -0
- package/dist/universal_table_actions/EntityChannelManagementBulkAction.d.ts +21 -0
- package/dist/universal_table_actions/EntityChannelManagementBulkAction.js +237 -0
- package/dist/universal_table_actions/EntityChannelManagementBulkAction.js.map +1 -0
- package/dist/universal_table_actions/EntityChannelManagementRowAction.d.ts +5 -0
- package/dist/universal_table_actions/EntityChannelManagementRowAction.js +52 -0
- package/dist/universal_table_actions/EntityChannelManagementRowAction.js.map +1 -0
- package/dist/universal_table_actions/EntityFacetManagementBulkAction.d.ts +21 -0
- package/dist/universal_table_actions/EntityFacetManagementBulkAction.js +88 -0
- package/dist/universal_table_actions/EntityFacetManagementBulkAction.js.map +1 -0
- package/dist/universal_table_actions/ManageEntityFacetsDialog.d.ts +22 -0
- package/dist/universal_table_actions/ManageEntityFacetsDialog.js +180 -0
- package/dist/universal_table_actions/ManageEntityFacetsDialog.js.map +1 -0
- package/dist/universal_table_actions/ManageEntityToChannelsDialog.d.ts +14 -0
- package/dist/universal_table_actions/ManageEntityToChannelsDialog.js +231 -0
- package/dist/universal_table_actions/ManageEntityToChannelsDialog.js.map +1 -0
- package/dist/universal_table_actions/index.d.ts +5 -0
- package/dist/universal_table_actions/index.js +6 -0
- package/dist/universal_table_actions/index.js.map +1 -0
- package/dist/universal_utils/createDialogFromComponentFunction.d.ts +18 -0
- package/dist/universal_utils/createDialogFromComponentFunction.js +41 -0
- package/dist/universal_utils/createDialogFromComponentFunction.js.map +1 -0
- package/dist/universal_utils/createDialogFunction.d.ts +15 -0
- package/dist/universal_utils/createDialogFunction.js +40 -0
- package/dist/universal_utils/createDialogFunction.js.map +1 -0
- package/dist/universal_utils/index.d.ts +2 -0
- package/dist/universal_utils/index.js +3 -0
- package/dist/universal_utils/index.js.map +1 -0
- package/dist/utils/camel-case-to-spaces.d.ts +1 -0
- package/dist/utils/camel-case-to-spaces.js +7 -0
- package/dist/utils/camel-case-to-spaces.js.map +1 -0
- package/dist/utils/capitalizeFirstLetter.d.ts +1 -0
- package/dist/utils/capitalizeFirstLetter.js +4 -0
- package/dist/utils/capitalizeFirstLetter.js.map +1 -0
- package/dist/utils/dashCaseToCamelCase.d.ts +1 -0
- package/dist/utils/dashCaseToCamelCase.js +4 -0
- package/dist/utils/dashCaseToCamelCase.js.map +1 -0
- package/dist/utils/deepSortArray.d.ts +1 -0
- package/dist/utils/deepSortArray.js +18 -0
- package/dist/utils/deepSortArray.js.map +1 -0
- package/dist/utils/formatFileSize.d.ts +1 -0
- package/dist/utils/formatFileSize.js +9 -0
- package/dist/utils/formatFileSize.js.map +1 -0
- package/dist/utils/formatPrice.d.ts +1 -0
- package/dist/utils/formatPrice.js +7 -0
- package/dist/utils/formatPrice.js.map +1 -0
- package/dist/utils/getGraphqlError.d.ts +1 -0
- package/dist/utils/getGraphqlError.js +9 -0
- package/dist/utils/getGraphqlError.js.map +1 -0
- package/dist/utils/getMutation.d.ts +28367 -0
- package/dist/utils/getMutation.js +27 -0
- package/dist/utils/getMutation.js.map +1 -0
- package/dist/utils/getPermissions.d.ts +6 -0
- package/dist/utils/getPermissions.js +7 -0
- package/dist/utils/getPermissions.js.map +1 -0
- package/dist/utils/index.d.ts +14 -0
- package/dist/utils/index.js +15 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/object-compare.d.ts +2 -0
- package/dist/utils/object-compare.js +152 -0
- package/dist/utils/object-compare.js.map +1 -0
- package/dist/utils/order_state.d.ts +15 -0
- package/dist/utils/order_state.js +17 -0
- package/dist/utils/order_state.js.map +1 -0
- package/dist/utils/price-formatter.d.ts +9 -0
- package/dist/utils/price-formatter.js +54 -0
- package/dist/utils/price-formatter.js.map +1 -0
- package/dist/utils/styles.d.ts +4 -0
- package/dist/utils/styles.js +26 -0
- package/dist/utils/styles.js.map +1 -0
- package/dist/utils/utils.d.ts +2 -0
- package/dist/utils/utils.js +5 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/utils/zeus-utils.d.ts +3 -0
- package/dist/utils/zeus-utils.js +48 -0
- package/dist/utils/zeus-utils.js.map +1 -0
- package/dist/widgets/DashboardWidgets.d.ts +21 -0
- package/dist/widgets/DashboardWidgets.js +126 -0
- package/dist/widgets/DashboardWidgets.js.map +1 -0
- package/dist/widgets/WidgetsEmptyState.d.ts +2 -0
- package/dist/widgets/WidgetsEmptyState.js +73 -0
- package/dist/widgets/WidgetsEmptyState.js.map +1 -0
- package/dist/widgets/index.d.ts +3 -0
- package/dist/widgets/index.js +4 -0
- package/dist/widgets/index.js.map +1 -0
- package/dist/widgets/widgets-context.d.ts +37 -0
- package/dist/widgets/widgets-context.js +81 -0
- package/dist/widgets/widgets-context.js.map +1 -0
- package/dist/zeus_client/customFieldsForQuery.d.ts +4 -0
- package/dist/zeus_client/customFieldsForQuery.js +58 -0
- package/dist/zeus_client/customFieldsForQuery.js.map +1 -0
- package/dist/zeus_client/deenruvAPICall.d.ts +79 -0
- package/dist/zeus_client/deenruvAPICall.js +178 -0
- package/dist/zeus_client/deenruvAPICall.js.map +1 -0
- package/dist/zeus_client/index.d.ts +4 -0
- package/dist/zeus_client/index.js +5 -0
- package/dist/zeus_client/index.js.map +1 -0
- package/dist/zeus_client/useLazyQuery.d.ts +9 -0
- package/dist/zeus_client/useLazyQuery.js +36 -0
- package/dist/zeus_client/useLazyQuery.js.map +1 -0
- package/dist/zeus_client/useMutation.d.ts +7 -0
- package/dist/zeus_client/useMutation.js +36 -0
- package/dist/zeus_client/useMutation.js.map +1 -0
- package/dist/zeus_client/useQuery.d.ts +13 -0
- package/dist/zeus_client/useQuery.js +53 -0
- package/dist/zeus_client/useQuery.js.map +1 -0
- package/dist/zeus_client/utils.d.ts +11 -0
- package/dist/zeus_client/utils.js +24 -0
- package/dist/zeus_client/utils.js.map +1 -0
- package/package.json +111 -0
package/README.md
ADDED
|
@@ -0,0 +1,767 @@
|
|
|
1
|
+
# @deenruv/react-ui-devkit
|
|
2
|
+
|
|
3
|
+
The official UI plugin development kit for Deenruv Admin Panel. Build type-safe plugins that extend the admin dashboard with custom pages, components, navigation, widgets, notifications, and more.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`@deenruv/react-ui-devkit` provides everything you need to build Deenruv admin UI plugins:
|
|
8
|
+
|
|
9
|
+
- **Plugin System** — Type-safe plugin definition with 15 extension points
|
|
10
|
+
- **Location-Based Injection** — 21 list locations, 20 detail locations, and modal locations
|
|
11
|
+
- **GraphQL Client** — Zeus Thunder client with automatic `customFields` injection
|
|
12
|
+
- **Form Management** — `useGFFLP` for type-safe forms driven by GraphQL `ModelTypes`
|
|
13
|
+
- **Component Library** — 40+ shadcn/ui atoms, molecules, templates, and universal components
|
|
14
|
+
- **State Management** — Zustand stores for settings, server state, orders, and global search
|
|
15
|
+
- **Navigation & Routing** — Type-safe route helpers and customizable admin navigation
|
|
16
|
+
- **i18n** — Built-in translation system with per-plugin namespaces
|
|
17
|
+
- **Notifications** — Polling-based notification system with configurable placements
|
|
18
|
+
- **Dashboard Widgets** — Resizable, configurable dashboard widgets
|
|
19
|
+
- **Tailwind Config** — Shared Deenruv theme with dark mode support
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pnpm add @deenruv/react-ui-devkit
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Peer dependency:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm add @deenruv/core
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
Create a minimal plugin with a custom page and navigation link:
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
// src/plugin-ui/index.tsx
|
|
39
|
+
import { createDeenruvUIPlugin } from '@deenruv/react-ui-devkit';
|
|
40
|
+
import { ListIcon } from 'lucide-react';
|
|
41
|
+
import { MyPage } from './pages/MyPage';
|
|
42
|
+
import en from './locales/en';
|
|
43
|
+
import pl from './locales/pl';
|
|
44
|
+
|
|
45
|
+
const PLUGIN_NAME = 'my-plugin-ui';
|
|
46
|
+
|
|
47
|
+
export const MyPlugin = createDeenruvUIPlugin({
|
|
48
|
+
name: PLUGIN_NAME,
|
|
49
|
+
version: '1.0.0',
|
|
50
|
+
translations: {
|
|
51
|
+
ns: 'my-plugin',
|
|
52
|
+
data: { en, pl },
|
|
53
|
+
},
|
|
54
|
+
pages: [
|
|
55
|
+
{ path: '', element: <MyPage /> },
|
|
56
|
+
{ path: ':id', element: <MyPage /> },
|
|
57
|
+
],
|
|
58
|
+
navMenuLinks: [
|
|
59
|
+
{
|
|
60
|
+
id: 'my-plugin-link',
|
|
61
|
+
labelId: 'nav.myPlugin', // Resolved as: my-plugin.nav.myPlugin
|
|
62
|
+
href: '',
|
|
63
|
+
groupId: 'assortment-group', // BASE_GROUP_ID.ASSORTMENT
|
|
64
|
+
icon: ListIcon,
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
> Plugin pages are auto-prefixed with `admin-ui/extensions/{plugin-name}/`.
|
|
71
|
+
> Nav link `labelId` is auto-prefixed with `{translations.ns}.{labelId}`.
|
|
72
|
+
|
|
73
|
+
## Plugin System
|
|
74
|
+
|
|
75
|
+
### `createDeenruvUIPlugin`
|
|
76
|
+
|
|
77
|
+
An identity function that provides TypeScript type safety for your plugin definition:
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { createDeenruvUIPlugin } from '@deenruv/react-ui-devkit';
|
|
81
|
+
|
|
82
|
+
export const MyPlugin = createDeenruvUIPlugin({
|
|
83
|
+
name: 'my-plugin-ui',
|
|
84
|
+
version: '1.0.0',
|
|
85
|
+
// ...extension points
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Extension Points
|
|
90
|
+
|
|
91
|
+
The `DeenruvUIPlugin<T>` type supports the following extension points:
|
|
92
|
+
|
|
93
|
+
| Extension Point | Type | Description |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| `name` | `string` | Plugin name (required) |
|
|
96
|
+
| `version` | `string` | Plugin version (required) |
|
|
97
|
+
| `config` | `T` | Custom plugin configuration object |
|
|
98
|
+
| `pages` | `PluginPage[]` | Custom routes (auto-prefixed: `admin-ui/extensions/{name}/{path}`) |
|
|
99
|
+
| `tables` | `DeenruvUITable[]` | List view columns, row actions, bulk actions with `externalSelector` |
|
|
100
|
+
| `tabs` | `DeenruvTabs[]` | Detail view tabs with `hideSidebar`, `sidebarReplacement`, `disabled` |
|
|
101
|
+
| `actions` | `{ inline?, dropdown? }` | Detail view action buttons (inline and dropdown) |
|
|
102
|
+
| `components` | `DeenruvUIDetailComponent[]` | Inject into detail views/sidebars (supports `tab` filtering, `${KEY}-sidebar` IDs) |
|
|
103
|
+
| `modals` | `DeenruvUIModalComponent[]` | Inject into modals |
|
|
104
|
+
| `widgets` | `Widget[]` | Dashboard widgets with `size` and `sizes` |
|
|
105
|
+
| `inputs` | `PluginComponent[]` | Custom field input overrides |
|
|
106
|
+
| `navMenuGroups` | `PluginNavigationGroup[]` | Navigation menu groups with `placement` |
|
|
107
|
+
| `navMenuLinks` | `PluginNavigationLink[]` | Navigation links with `groupId`, `icon`, `placement` |
|
|
108
|
+
| `topNavigationComponents` | `PluginComponent[]` | Top navigation bar components |
|
|
109
|
+
| `topNavigationActionsMenu` | `NavigationAction[]` | Top navigation action menu items |
|
|
110
|
+
| `notifications` | `Notification[]` | Polling notifications with `fetch`, `interval`, `placements` |
|
|
111
|
+
| `translations` | `{ ns, data }` | i18n bundles as `{ ns: string, data: Record<string, Array<object>> }` |
|
|
112
|
+
|
|
113
|
+
### Location IDs
|
|
114
|
+
|
|
115
|
+
Plugins use location IDs to target specific admin panel views.
|
|
116
|
+
|
|
117
|
+
#### List Locations (21)
|
|
118
|
+
|
|
119
|
+
Used with `tables` to extend list views:
|
|
120
|
+
|
|
121
|
+
| Location ID | Entity Type |
|
|
122
|
+
|---|---|
|
|
123
|
+
| `assets-list-view` | Asset |
|
|
124
|
+
| `admins-list-view` | Administrator |
|
|
125
|
+
| `channels-list-view` | Channel |
|
|
126
|
+
| `collections-list-view` | Collection |
|
|
127
|
+
| `countries-list-view` | Country |
|
|
128
|
+
| `customerGroups-list-view` | CustomerGroup |
|
|
129
|
+
| `customers-list-view` | Customer |
|
|
130
|
+
| `facets-list-view` | Facet |
|
|
131
|
+
| `facet-values-list` | FacetValue |
|
|
132
|
+
| `orders-list-view` | Order |
|
|
133
|
+
| `paymentMethods-list-view` | PaymentMethod |
|
|
134
|
+
| `products-list-view` | Product |
|
|
135
|
+
| `productVariants-list-view` | ProductVariant |
|
|
136
|
+
| `promotions-list-view` | Promotion |
|
|
137
|
+
| `roles-list-view` | Role |
|
|
138
|
+
| `sellers-list-view` | Seller |
|
|
139
|
+
| `shippingMethods-list-view` | ShippingMethod |
|
|
140
|
+
| `stockLocations-list` | StockLocation |
|
|
141
|
+
| `stockLocations-list-view` | StockLocation |
|
|
142
|
+
| `taxCategories-list-view` | TaxCategory |
|
|
143
|
+
| `taxRates-list-view` | TaxRate |
|
|
144
|
+
| `zones-list-view` | Zone |
|
|
145
|
+
|
|
146
|
+
#### Detail Locations (20)
|
|
147
|
+
|
|
148
|
+
Used with `tabs`, `actions`, and `components` to extend detail views:
|
|
149
|
+
|
|
150
|
+
| Location ID | Entity Type |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `admins-detail-view` | Administrator |
|
|
153
|
+
| `channels-detail-view` | Channel |
|
|
154
|
+
| `collections-detail-view` | Collection |
|
|
155
|
+
| `countries-detail-view` | Country |
|
|
156
|
+
| `customerGroups-detail-view` | CustomerGroup |
|
|
157
|
+
| `customers-detail-view` | Customer |
|
|
158
|
+
| `facets-detail-view` | Facet |
|
|
159
|
+
| `globalSettings-detail-view` | GlobalSettings |
|
|
160
|
+
| `orders-detail-view` | Order |
|
|
161
|
+
| `orders-summary` | Order |
|
|
162
|
+
| `paymentMethods-detail-view` | PaymentMethod |
|
|
163
|
+
| `products-detail-view` | Product |
|
|
164
|
+
| `promotions-detail-view` | Promotion |
|
|
165
|
+
| `roles-detail-view` | Role |
|
|
166
|
+
| `sellers-detail-view` | Seller |
|
|
167
|
+
| `shippingMethods-detail-view` | ShippingMethod |
|
|
168
|
+
| `stockLocations-detail-view` | StockLocation |
|
|
169
|
+
| `taxCategories-detail-view` | TaxCategory |
|
|
170
|
+
| `taxRates-detail-view` | TaxRate |
|
|
171
|
+
| `zones-detail-view` | Zone |
|
|
172
|
+
|
|
173
|
+
To inject into the sidebar of a detail view, append `-sidebar` to the location ID:
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
components: [
|
|
177
|
+
{
|
|
178
|
+
id: 'products-detail-view-sidebar',
|
|
179
|
+
tab: 'product',
|
|
180
|
+
component: MyProductSidebar,
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
#### Modal Locations
|
|
186
|
+
|
|
187
|
+
| Location ID | Type |
|
|
188
|
+
|---|---|
|
|
189
|
+
| `manual-order-state` | Order state transition modal |
|
|
190
|
+
|
|
191
|
+
#### Navigation Group IDs (`BASE_GROUP_ID`)
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
enum BASE_GROUP_ID {
|
|
195
|
+
SHOP = 'shop-group',
|
|
196
|
+
ASSORTMENT = 'assortment-group',
|
|
197
|
+
USERS = 'users-group',
|
|
198
|
+
PROMOTIONS = 'promotions-group',
|
|
199
|
+
SHIPPING = 'shipping-group',
|
|
200
|
+
SETTINGS = 'settings-group',
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Plugin View Markers
|
|
205
|
+
|
|
206
|
+
Press **Ctrl+Q** in the admin panel to toggle plugin view markers. This highlights the injection points where plugin components are rendered, useful for debugging plugin placement.
|
|
207
|
+
|
|
208
|
+
## Hooks
|
|
209
|
+
|
|
210
|
+
### `useGFFLP`
|
|
211
|
+
|
|
212
|
+
Type-safe form state management driven by GraphQL `ModelTypes`. Creates form fields for specific properties of a GraphQL type with built-in validation.
|
|
213
|
+
|
|
214
|
+
```ts
|
|
215
|
+
import { useGFFLP } from '@deenruv/react-ui-devkit';
|
|
216
|
+
|
|
217
|
+
// Pick specific fields from a GraphQL model type
|
|
218
|
+
const { state, setField, setState, checkIfAllFieldsAreValid, haveValidFields, clearErrors, clearAllForm } =
|
|
219
|
+
useGFFLP('Product', 'name', 'slug', 'description')({
|
|
220
|
+
name: {
|
|
221
|
+
initialValue: '',
|
|
222
|
+
validate: (value) => (!value ? ['Name is required'] : undefined),
|
|
223
|
+
},
|
|
224
|
+
slug: { initialValue: '' },
|
|
225
|
+
description: { initialValue: '' },
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Access field values
|
|
229
|
+
const name = state.name?.value;
|
|
230
|
+
const nameErrors = state.name?.errors;
|
|
231
|
+
|
|
232
|
+
// Update a field
|
|
233
|
+
setField('name', 'My Product');
|
|
234
|
+
|
|
235
|
+
// Validate all fields
|
|
236
|
+
const allValid = checkIfAllFieldsAreValid();
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Returns:**
|
|
240
|
+
|
|
241
|
+
| Property | Type | Description |
|
|
242
|
+
|---|---|---|
|
|
243
|
+
| `state` | `Partial<Record<K, GFFLPFormField<T>>>` | Current form state with `value`, `initialValue`, `errors`, `validatedValue` |
|
|
244
|
+
| `setField` | `(field, value) => void` | Update a single field (supports dot notation for nested fields) |
|
|
245
|
+
| `setState` | `(value) => void` | Set all fields at once |
|
|
246
|
+
| `checkIfAllFieldsAreValid` | `() => boolean` | Run all validators and return validity |
|
|
247
|
+
| `haveValidFields` | `boolean` | Whether all validated fields currently have valid values |
|
|
248
|
+
| `clearErrors` | `() => void` | Clear all validation errors |
|
|
249
|
+
| `clearAllForm` | `() => void` | Reset form to initial values |
|
|
250
|
+
|
|
251
|
+
### `useFFLP`
|
|
252
|
+
|
|
253
|
+
Lower-level form hook used by `useGFFLP`. Use directly when you need form state without GraphQL `ModelTypes` binding:
|
|
254
|
+
|
|
255
|
+
```ts
|
|
256
|
+
import { useFFLP } from '@deenruv/react-ui-devkit';
|
|
257
|
+
|
|
258
|
+
const { state, setField } = useFFLP<{ email: string; age: number }>({
|
|
259
|
+
email: {
|
|
260
|
+
initialValue: '',
|
|
261
|
+
validate: (v) => (!v.includes('@') ? ['Invalid email'] : undefined),
|
|
262
|
+
},
|
|
263
|
+
age: { initialValue: 0 },
|
|
264
|
+
});
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### `useList`
|
|
268
|
+
|
|
269
|
+
Paginated list management with URL search params for sorting, filtering, and pagination. Returns a pre-built `Paginate` JSX element.
|
|
270
|
+
|
|
271
|
+
```ts
|
|
272
|
+
import { useList, apiClient } from '@deenruv/react-ui-devkit';
|
|
273
|
+
|
|
274
|
+
const {
|
|
275
|
+
Paginate, // Pre-built pagination JSX component
|
|
276
|
+
objects, // Current page items
|
|
277
|
+
total, // Total item count
|
|
278
|
+
setSort, // Set sort column
|
|
279
|
+
setFilter, // Set filter object
|
|
280
|
+
setFilterField, // Set individual filter field
|
|
281
|
+
removeFilterField, // Remove individual filter field
|
|
282
|
+
resetFilter, // Clear all filters
|
|
283
|
+
optionInfo, // Current { page, perPage, sort, filter, filterOperator }
|
|
284
|
+
refetch, // Manual refetch
|
|
285
|
+
isFilterOn, // Whether any filters are active
|
|
286
|
+
} = useList({
|
|
287
|
+
route: (options) =>
|
|
288
|
+
apiClient('query')({
|
|
289
|
+
products: [
|
|
290
|
+
{
|
|
291
|
+
options: {
|
|
292
|
+
take: options.perPage,
|
|
293
|
+
skip: (options.page - 1) * options.perPage,
|
|
294
|
+
sort: options.sort
|
|
295
|
+
? { [options.sort.key]: options.sort.sortDir }
|
|
296
|
+
: undefined,
|
|
297
|
+
filter: options.filter,
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
{ totalItems: true, items: { id: true, name: true } },
|
|
301
|
+
],
|
|
302
|
+
}).then((r) => r.products),
|
|
303
|
+
listType: 'products',
|
|
304
|
+
});
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### `useTranslation`
|
|
308
|
+
|
|
309
|
+
Wrapper around `react-i18next` that uses the Deenruv i18n instance from `window.__DEENRUV_SETTINGS__.i18n`.
|
|
310
|
+
|
|
311
|
+
```ts
|
|
312
|
+
import { useTranslation } from '@deenruv/react-ui-devkit';
|
|
313
|
+
|
|
314
|
+
const { t, tEntity, i18n } = useTranslation('my-plugin-namespace');
|
|
315
|
+
|
|
316
|
+
// Standard translation
|
|
317
|
+
t('my.key');
|
|
318
|
+
|
|
319
|
+
// Entity-aware translation with pluralization
|
|
320
|
+
tEntity('entity.title', 'Product', 'one'); // singular
|
|
321
|
+
tEntity('entity.title', 'Product', 'many'); // plural
|
|
322
|
+
tEntity('entity.title', 'Product', 5); // count-based
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
> **Important:** Never import `react-i18next` directly. Always use `useTranslation` from `@deenruv/react-ui-devkit` to ensure the correct i18n instance is used.
|
|
326
|
+
|
|
327
|
+
### `useAssets`
|
|
328
|
+
|
|
329
|
+
Asset management hook with pagination, search, and tag filtering:
|
|
330
|
+
|
|
331
|
+
```ts
|
|
332
|
+
import { useAssets } from '@deenruv/react-ui-devkit';
|
|
333
|
+
|
|
334
|
+
const {
|
|
335
|
+
assets, // Current page of assets
|
|
336
|
+
isPending, // Loading state
|
|
337
|
+
error, // Error message
|
|
338
|
+
totalItems, // Total asset count
|
|
339
|
+
refetchData, // Manual refetch
|
|
340
|
+
page, setPage, // Pagination
|
|
341
|
+
perPage, setPerPage,
|
|
342
|
+
searchTerm, setSearchTerm, // Text search
|
|
343
|
+
searchTags, setSearchTags, // Tag filter
|
|
344
|
+
totalPages,
|
|
345
|
+
} = useAssets();
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### `useDebounce`
|
|
349
|
+
|
|
350
|
+
Re-exported from `use-debounce`. Debounces a value with a configurable delay.
|
|
351
|
+
|
|
352
|
+
### `useLocalStorage`
|
|
353
|
+
|
|
354
|
+
Persistent state management using browser localStorage.
|
|
355
|
+
|
|
356
|
+
### `useValidators`
|
|
357
|
+
|
|
358
|
+
Common validation functions for form fields.
|
|
359
|
+
|
|
360
|
+
### `useErrorHandler`
|
|
361
|
+
|
|
362
|
+
Centralized error handling for GraphQL and API errors.
|
|
363
|
+
|
|
364
|
+
### `useRouteGuard`
|
|
365
|
+
|
|
366
|
+
> **Note:** This hook is currently **disabled**. The internal `useBlocker` callback always returns `false`. Route guard blocking logic is commented out in the source.
|
|
367
|
+
|
|
368
|
+
### `useCustomSearchParams`
|
|
369
|
+
|
|
370
|
+
Helper for managing URL search parameters in list views.
|
|
371
|
+
|
|
372
|
+
## Components
|
|
373
|
+
|
|
374
|
+
### Templates
|
|
375
|
+
|
|
376
|
+
High-level page layout components:
|
|
377
|
+
|
|
378
|
+
| Component | Description |
|
|
379
|
+
|---|---|
|
|
380
|
+
| `DetailList` | Full-featured list page with table, pagination, filtering, sorting, bulk actions |
|
|
381
|
+
| `DetailView` | Detail page layout with tabs, sidebar, actions, and plugin injection points |
|
|
382
|
+
|
|
383
|
+
### Core Components
|
|
384
|
+
|
|
385
|
+
| Component | Description |
|
|
386
|
+
|---|---|
|
|
387
|
+
| `DetailViewMarker` | Plugin injection marker for detail views (toggle with Ctrl+Q) |
|
|
388
|
+
| `ListViewMarker` | Plugin injection marker for list views (toggle with Ctrl+Q) |
|
|
389
|
+
| `Renderer` | Dynamic component renderer for plugin-injected content |
|
|
390
|
+
| `EntityCustomFields` | Renders custom field inputs for any entity |
|
|
391
|
+
|
|
392
|
+
### Molecule Components (13)
|
|
393
|
+
|
|
394
|
+
Higher-level composed components:
|
|
395
|
+
|
|
396
|
+
| Component | Description |
|
|
397
|
+
|---|---|
|
|
398
|
+
| `PaymentMethodImage` | Payment method icon/image display |
|
|
399
|
+
| `OrderStateBadge` | Color-coded order state badge |
|
|
400
|
+
| `SimpleSelect` | Simplified select dropdown |
|
|
401
|
+
| `SimpleTooltip` | Simplified tooltip wrapper |
|
|
402
|
+
| `SortButton` | Column sort toggle button |
|
|
403
|
+
| `TranslationSelect` | Language/translation picker |
|
|
404
|
+
| `ListTable` | Data table for list views |
|
|
405
|
+
| `SearchInput` | Search input with debounce |
|
|
406
|
+
| `CustomFieldsModal` | Modal for editing custom fields |
|
|
407
|
+
| `ImageWithPreview` | Image thumbnail with lightbox preview |
|
|
408
|
+
| `ErrorMessage` | Styled error message display |
|
|
409
|
+
| `ListBadge` | Badge for list item status |
|
|
410
|
+
| `ContextMenu` | Right-click context menu |
|
|
411
|
+
|
|
412
|
+
### Atom Components (42)
|
|
413
|
+
|
|
414
|
+
shadcn/ui-based primitive components, all styled with the Deenruv theme:
|
|
415
|
+
|
|
416
|
+
`Accordion` `AlertDialog` `AssetUploadButton` `AspectRatio` `Badge` `Breadcrumb` `Button` `Calendar` `Card` `Chart` `Checkbox` `Command` `Dialog` `Drawer` `DropdownMenu` `FacetedFilter` `Form` `HoverCard` `ImagePlaceholder` `Input` `Label` `LanguagePicker` `MultipleSelector` `Pagination` `Popover` `Progress` `RadioGroup` `ScrollArea` `Select` `Separator` `Sheet` `Skeleton` `Sonner` `Spinner` `Switch` `Table` `Tabs` `Textarea` `Timeline` `Toggle` `ToggleGroup` `Tooltip`
|
|
417
|
+
|
|
418
|
+
### Universal Components (15)
|
|
419
|
+
|
|
420
|
+
Reusable business-logic components for common admin patterns:
|
|
421
|
+
|
|
422
|
+
| Component | Description |
|
|
423
|
+
|---|---|
|
|
424
|
+
| `DialogProductPicker` | Product selection dialog with search |
|
|
425
|
+
| `RichTextEditor` | Tiptap-based rich text editor |
|
|
426
|
+
| `AssetsModalInput` | Asset picker with modal browser |
|
|
427
|
+
| `ConfirmationDialog` | Confirmation dialog with customizable actions |
|
|
428
|
+
| `PageBlock` | Page section wrapper with title and description |
|
|
429
|
+
| `CustomCard` | Styled card with consistent admin theme |
|
|
430
|
+
| `CustomCardHeader` | Card header with title, description, and actions |
|
|
431
|
+
| `EmptyState` | Empty state placeholder with icon and message |
|
|
432
|
+
| `FacetIdsSelector` | Facet value multi-selector |
|
|
433
|
+
| `DraggableSelect` | Drag-and-drop reorderable select |
|
|
434
|
+
| `SimpleTimePicker` | Time-only picker |
|
|
435
|
+
| `DateTimePicker` | Combined date and time picker |
|
|
436
|
+
| `DateTimeInput` | Date/time input field |
|
|
437
|
+
| `EntityChannelManager` | Channel assignment manager for entities |
|
|
438
|
+
| `CustomerSearch` | Customer search with autocomplete |
|
|
439
|
+
|
|
440
|
+
### Universal Table Actions (5)
|
|
441
|
+
|
|
442
|
+
Pre-built table actions for common entity operations:
|
|
443
|
+
|
|
444
|
+
| Component | Description |
|
|
445
|
+
|---|---|
|
|
446
|
+
| `ManageEntityToChannelsDialog` | Dialog for assigning entities to channels |
|
|
447
|
+
| `DeleteEntityFromChannelsDialog` | Dialog for removing entities from channels |
|
|
448
|
+
| `EntityChannelManagementRowAction` | Row-level channel management action |
|
|
449
|
+
| `EntityChannelManagementBulkAction` | Bulk channel management action |
|
|
450
|
+
| `EntityFacetManagementBulkAction` | Bulk facet assignment action |
|
|
451
|
+
|
|
452
|
+
### Universal Utilities
|
|
453
|
+
|
|
454
|
+
| Function | Description |
|
|
455
|
+
|---|---|
|
|
456
|
+
| `createDialogFunction` | Create a dialog trigger function from a dialog component |
|
|
457
|
+
| `createDialogFromComponentFunction` | Create a dialog from an existing component |
|
|
458
|
+
|
|
459
|
+
## GraphQL Client
|
|
460
|
+
|
|
461
|
+
### `apiClient`
|
|
462
|
+
|
|
463
|
+
Zeus Thunder client for standard GraphQL queries and mutations. Automatically injects `customFields` into queries via GraphQL AST manipulation.
|
|
464
|
+
|
|
465
|
+
```ts
|
|
466
|
+
import { apiClient } from '@deenruv/react-ui-devkit';
|
|
467
|
+
|
|
468
|
+
// Query
|
|
469
|
+
const result = await apiClient('query')({
|
|
470
|
+
product: [
|
|
471
|
+
{ id: 'product-123' },
|
|
472
|
+
{
|
|
473
|
+
id: true,
|
|
474
|
+
name: true,
|
|
475
|
+
slug: true,
|
|
476
|
+
description: true,
|
|
477
|
+
// customFields are automatically injected!
|
|
478
|
+
},
|
|
479
|
+
],
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
// Mutation
|
|
483
|
+
const updated = await apiClient('mutation')({
|
|
484
|
+
updateProduct: [
|
|
485
|
+
{ input: { id: 'product-123', translations: [] } },
|
|
486
|
+
{ id: true, name: true },
|
|
487
|
+
],
|
|
488
|
+
});
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
### `apiUploadClient`
|
|
492
|
+
|
|
493
|
+
Zeus Thunder client for file upload mutations (multipart form data):
|
|
494
|
+
|
|
495
|
+
```ts
|
|
496
|
+
import { apiUploadClient } from '@deenruv/react-ui-devkit';
|
|
497
|
+
|
|
498
|
+
const result = await apiUploadClient('mutation')({
|
|
499
|
+
createAssets: [
|
|
500
|
+
{ input: [{ file: myFile }] },
|
|
501
|
+
{ ... on Asset: { id: true, source: true } },
|
|
502
|
+
],
|
|
503
|
+
});
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
### `useQuery`
|
|
507
|
+
|
|
508
|
+
React hook for declarative GraphQL queries with automatic execution:
|
|
509
|
+
|
|
510
|
+
```ts
|
|
511
|
+
import { useQuery } from '@deenruv/react-ui-devkit';
|
|
512
|
+
import { MyQueryDocument } from './graphql/queries';
|
|
513
|
+
|
|
514
|
+
const { data, loading, error, runQuery } = useQuery(MyQueryDocument, {
|
|
515
|
+
initialVariables: { id: 'product-123' },
|
|
516
|
+
onSuccess: (data) => console.log('Loaded:', data),
|
|
517
|
+
stopRefetchOnChannelChange: false, // Re-fetches when channel changes by default
|
|
518
|
+
});
|
|
519
|
+
|
|
520
|
+
// Manual re-fetch with different variables
|
|
521
|
+
await runQuery({ id: 'product-456' });
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### `useMutation`
|
|
525
|
+
|
|
526
|
+
React hook for GraphQL mutations.
|
|
527
|
+
|
|
528
|
+
### `useLazyQuery`
|
|
529
|
+
|
|
530
|
+
React hook for on-demand GraphQL queries (not executed automatically).
|
|
531
|
+
|
|
532
|
+
### `deenruvAPICall`
|
|
533
|
+
|
|
534
|
+
Low-level API call function used internally by `apiClient` and `apiUploadClient`. Handles:
|
|
535
|
+
|
|
536
|
+
- Authentication via `Bearer` token from settings store
|
|
537
|
+
- Channel token injection
|
|
538
|
+
- Language code parameters
|
|
539
|
+
- Custom fields AST injection
|
|
540
|
+
- GraphQL error handling
|
|
541
|
+
|
|
542
|
+
## State Management
|
|
543
|
+
|
|
544
|
+
Zustand-based global stores:
|
|
545
|
+
|
|
546
|
+
### `useSettings`
|
|
547
|
+
|
|
548
|
+
Persisted settings store for the admin panel:
|
|
549
|
+
|
|
550
|
+
```ts
|
|
551
|
+
import { useSettings } from '@deenruv/react-ui-devkit';
|
|
552
|
+
|
|
553
|
+
const token = useSettings((s) => s.token);
|
|
554
|
+
const selectedChannel = useSettings((s) => s.selectedChannel);
|
|
555
|
+
const translationsLanguage = useSettings((s) => s.translationsLanguage);
|
|
556
|
+
const logIn = useSettings((s) => s.logIn);
|
|
557
|
+
const logOut = useSettings((s) => s.logOut);
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
### `useServer`
|
|
561
|
+
|
|
562
|
+
Server connection and status state.
|
|
563
|
+
|
|
564
|
+
### `useOrder`
|
|
565
|
+
|
|
566
|
+
Order-specific state management for the order detail view.
|
|
567
|
+
|
|
568
|
+
### `useGlobalSearch`
|
|
569
|
+
|
|
570
|
+
Global search state across the admin panel.
|
|
571
|
+
|
|
572
|
+
### `useRouteGuardStore`
|
|
573
|
+
|
|
574
|
+
Route guard state (currently disabled - see `useRouteGuard` hook note).
|
|
575
|
+
|
|
576
|
+
### `GlobalStoreProvider` / `useGlobalStore`
|
|
577
|
+
|
|
578
|
+
Context-based global store provider for app-wide state.
|
|
579
|
+
|
|
580
|
+
## Types
|
|
581
|
+
|
|
582
|
+
### Key Exports
|
|
583
|
+
|
|
584
|
+
```ts
|
|
585
|
+
import {
|
|
586
|
+
// Location types
|
|
587
|
+
ListLocations, // 21 list location definitions
|
|
588
|
+
DetailLocations, // 20 detail location definitions
|
|
589
|
+
ModalLocations, // Modal location definitions
|
|
590
|
+
BASE_GROUP_ID, // Navigation group enum
|
|
591
|
+
|
|
592
|
+
// Plugin types
|
|
593
|
+
DeenruvUIPlugin, // Main plugin type
|
|
594
|
+
DeenruvUITable, // Table extension type
|
|
595
|
+
DeenruvTabs, // Tab extension type
|
|
596
|
+
DeenruvUIDetailComponent, // Detail component type
|
|
597
|
+
DeenruvUIModalComponent, // Modal component type
|
|
598
|
+
PluginPage, // Page definition type
|
|
599
|
+
PluginComponent, // Generic component type
|
|
600
|
+
PluginNavigationGroup, // Nav group type
|
|
601
|
+
PluginNavigationLink, // Nav link type
|
|
602
|
+
NavigationAction, // Action menu item type
|
|
603
|
+
Widget, // Dashboard widget type
|
|
604
|
+
Notification, // Notification type
|
|
605
|
+
|
|
606
|
+
// Form types
|
|
607
|
+
GFFLPFormField, // Form field with value/errors/validatedValue
|
|
608
|
+
|
|
609
|
+
// Location key types
|
|
610
|
+
LocationKeys, // Union of all list location IDs
|
|
611
|
+
DetailKeys, // Union of all detail location IDs
|
|
612
|
+
ModalLocationsKeys, // Union of all modal location IDs
|
|
613
|
+
} from '@deenruv/react-ui-devkit';
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
## Routes
|
|
617
|
+
|
|
618
|
+
Type-safe route helpers for navigating to admin panel pages:
|
|
619
|
+
|
|
620
|
+
```ts
|
|
621
|
+
import { Routes, buildURL } from '@deenruv/react-ui-devkit';
|
|
622
|
+
|
|
623
|
+
// Navigate to product detail
|
|
624
|
+
const url = Routes.products.to('product-123');
|
|
625
|
+
// => "/admin-ui/products/product-123"
|
|
626
|
+
|
|
627
|
+
// Available routes:
|
|
628
|
+
Routes.dashboard // /admin-ui
|
|
629
|
+
Routes.products.list // /admin-ui/products
|
|
630
|
+
Routes.products.new // /admin-ui/products/new
|
|
631
|
+
Routes.products.route // /admin-ui/products/:id
|
|
632
|
+
Routes.products.to(id) // /admin-ui/products/{id}
|
|
633
|
+
// ...and more for: orders, customers, collections, facets,
|
|
634
|
+
// channels, admins, roles, sellers, promotions, countries,
|
|
635
|
+
// paymentMethods, shippingMethods, taxCategories, taxRates,
|
|
636
|
+
// zones, stockLocations, customerGroups, productVariants, assets
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
## Tailwind Configuration
|
|
640
|
+
|
|
641
|
+
Export the shared Deenruv Tailwind config for your plugin:
|
|
642
|
+
|
|
643
|
+
```ts
|
|
644
|
+
// tailwind.config.ts
|
|
645
|
+
import { TailwindConfig } from '@deenruv/react-ui-devkit';
|
|
646
|
+
|
|
647
|
+
export default TailwindConfig;
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
The config includes:
|
|
651
|
+
|
|
652
|
+
- Dark mode support (class-based)
|
|
653
|
+
- Deenruv color palette and design tokens
|
|
654
|
+
- Content paths for the devkit components
|
|
655
|
+
- `tailwindcss-animate` plugin
|
|
656
|
+
|
|
657
|
+
## Notifications
|
|
658
|
+
|
|
659
|
+
Plugins can register polling-based notifications:
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
import { createDeenruvUIPlugin } from '@deenruv/react-ui-devkit';
|
|
663
|
+
|
|
664
|
+
export const MyPlugin = createDeenruvUIPlugin({
|
|
665
|
+
name: 'my-plugin',
|
|
666
|
+
version: '1.0.0',
|
|
667
|
+
notifications: [
|
|
668
|
+
{
|
|
669
|
+
id: 'my-notification',
|
|
670
|
+
fetch: async () => {
|
|
671
|
+
// Fetch notification data
|
|
672
|
+
return { count: 5, items: [...] };
|
|
673
|
+
},
|
|
674
|
+
interval: 30000, // Poll every 30 seconds
|
|
675
|
+
placements: {
|
|
676
|
+
main: (data) => ({
|
|
677
|
+
name: 'my-notification',
|
|
678
|
+
title: 'New Items',
|
|
679
|
+
description: `${data.count} new items`,
|
|
680
|
+
icon: <BellIcon />,
|
|
681
|
+
when: (data) => data.count > 0,
|
|
682
|
+
}),
|
|
683
|
+
navigation: [
|
|
684
|
+
{
|
|
685
|
+
id: 'my-plugin-link',
|
|
686
|
+
component: (data) => <Badge>{data.count}</Badge>,
|
|
687
|
+
},
|
|
688
|
+
],
|
|
689
|
+
},
|
|
690
|
+
},
|
|
691
|
+
],
|
|
692
|
+
});
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
## Development
|
|
696
|
+
|
|
697
|
+
### Plugin UI Folder Structure
|
|
698
|
+
|
|
699
|
+
Follow this convention for plugin UI code (based on existing plugins like `reviews-plugin`, `dashboard-widgets-plugin`, etc.):
|
|
700
|
+
|
|
701
|
+
```
|
|
702
|
+
plugins/my-plugin/
|
|
703
|
+
src/
|
|
704
|
+
plugin-ui/
|
|
705
|
+
index.tsx # createDeenruvUIPlugin() call + plugin definition
|
|
706
|
+
constants.ts # Plugin constants (name, namespace, routes)
|
|
707
|
+
tsconfig.json # TypeScript config for the plugin UI
|
|
708
|
+
components/ # React components
|
|
709
|
+
index.tsx
|
|
710
|
+
MyComponent.tsx
|
|
711
|
+
pages/ # Page components for plugin routes
|
|
712
|
+
MyList.tsx
|
|
713
|
+
MyDetail.tsx
|
|
714
|
+
locales/ # i18n translation files
|
|
715
|
+
en/
|
|
716
|
+
index.ts
|
|
717
|
+
my-plugin.json
|
|
718
|
+
pl/
|
|
719
|
+
index.ts
|
|
720
|
+
my-plugin.json
|
|
721
|
+
graphql/ # GraphQL queries, mutations, selectors
|
|
722
|
+
index.ts
|
|
723
|
+
queries.ts
|
|
724
|
+
mutations.ts
|
|
725
|
+
selectors.ts
|
|
726
|
+
scalars.ts
|
|
727
|
+
zeus/ # Zeus-generated types (if using custom schema)
|
|
728
|
+
index.ts
|
|
729
|
+
const.ts
|
|
730
|
+
typedDocumentNode.ts
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
### Plugin Routes Convention
|
|
734
|
+
|
|
735
|
+
Define your plugin routes relative to the auto-prefixed base path:
|
|
736
|
+
|
|
737
|
+
```ts
|
|
738
|
+
const PLUGIN_NAME = 'my-plugin-ui';
|
|
739
|
+
|
|
740
|
+
export const MY_PLUGIN_ROUTES = {
|
|
741
|
+
route: ['/admin-ui', 'extensions', PLUGIN_NAME, ':id'].join('/'),
|
|
742
|
+
new: ['/admin-ui', 'extensions', PLUGIN_NAME, 'new'].join('/'),
|
|
743
|
+
list: ['/admin-ui', 'extensions', PLUGIN_NAME].join('/'),
|
|
744
|
+
to: (id: string) => ['/admin-ui', 'extensions', PLUGIN_NAME, id].join('/'),
|
|
745
|
+
};
|
|
746
|
+
```
|
|
747
|
+
|
|
748
|
+
## Important Rules
|
|
749
|
+
|
|
750
|
+
1. **Never import `react-i18next` directly** — Always use `useTranslation` from `@deenruv/react-ui-devkit`. The hook binds to the global Deenruv i18n instance via `window.__DEENRUV_SETTINGS__.i18n`.
|
|
751
|
+
|
|
752
|
+
2. **Custom fields are auto-injected** — The `apiClient` automatically adds `customFields` selection to all queries via GraphQL AST manipulation. You don't need to manually request them.
|
|
753
|
+
|
|
754
|
+
3. **Use location IDs for injection** — Plugin components, tabs, and actions target specific admin views using location ID strings (e.g., `products-detail-view`, `orders-list-view`).
|
|
755
|
+
|
|
756
|
+
4. **Sidebar injection** — To inject into a detail view sidebar, append `-sidebar` to the location ID and optionally filter by `tab`:
|
|
757
|
+
```ts
|
|
758
|
+
{ id: 'products-detail-view-sidebar', tab: 'product', component: MySidebar }
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
5. **Translation namespacing** — Plugin translations use the `ns` field from the `translations` config. Nav link labels are auto-prefixed with `{ns}.{labelId}`.
|
|
762
|
+
|
|
763
|
+
6. **Page auto-prefixing** — Plugin page paths are auto-prefixed with `admin-ui/extensions/{plugin-name}/`.
|
|
764
|
+
|
|
765
|
+
## License
|
|
766
|
+
|
|
767
|
+
MIT
|