@wilshop/dashboard 3.5.2
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 +116 -0
- package/dist/plugin/api/api-extensions.d.ts +1 -0
- package/dist/plugin/api/api-extensions.js +35 -0
- package/dist/plugin/api/metrics.resolver.d.ts +8 -0
- package/dist/plugin/api/metrics.resolver.js +40 -0
- package/dist/plugin/config/metrics-strategies.d.ts +39 -0
- package/dist/plugin/config/metrics-strategies.js +74 -0
- package/dist/plugin/constants.d.ts +8 -0
- package/dist/plugin/constants.js +31 -0
- package/dist/plugin/dashboard.plugin.d.ts +115 -0
- package/dist/plugin/dashboard.plugin.js +339 -0
- package/dist/plugin/default-page.html +193 -0
- package/dist/plugin/index.d.ts +2 -0
- package/dist/plugin/index.js +18 -0
- package/dist/plugin/package.json +3 -0
- package/dist/plugin/service/metrics.service.d.ts +15 -0
- package/dist/plugin/service/metrics.service.js +129 -0
- package/dist/plugin/types.d.ts +20 -0
- package/dist/plugin/types.js +9 -0
- package/dist/vite/constants.d.ts +5 -0
- package/dist/vite/constants.js +278 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.js +1 -0
- package/dist/vite/types.d.ts +79 -0
- package/dist/vite/types.js +1 -0
- package/dist/vite/utils/ast-utils.d.ts +5 -0
- package/dist/vite/utils/ast-utils.js +29 -0
- package/dist/vite/utils/ast-utils.spec.d.ts +1 -0
- package/dist/vite/utils/ast-utils.spec.js +45 -0
- package/dist/vite/utils/compiler.d.ts +23 -0
- package/dist/vite/utils/compiler.js +165 -0
- package/dist/vite/utils/get-dashboard-paths.d.ts +5 -0
- package/dist/vite/utils/get-dashboard-paths.js +20 -0
- package/dist/vite/utils/logger.d.ts +3 -0
- package/dist/vite/utils/logger.js +39 -0
- package/dist/vite/utils/plugin-discovery.d.ts +27 -0
- package/dist/vite/utils/plugin-discovery.js +398 -0
- package/dist/vite/utils/schema-generator.d.ts +10 -0
- package/dist/vite/utils/schema-generator.js +35 -0
- package/dist/vite/utils/tsconfig-utils.d.ts +9 -0
- package/dist/vite/utils/tsconfig-utils.js +51 -0
- package/dist/vite/utils/ui-config.d.ts +3 -0
- package/dist/vite/utils/ui-config.js +30 -0
- package/dist/vite/vite-plugin-admin-api-schema.d.ts +24 -0
- package/dist/vite/vite-plugin-admin-api-schema.js +82 -0
- package/dist/vite/vite-plugin-config-loader.d.ts +16 -0
- package/dist/vite/vite-plugin-config-loader.js +70 -0
- package/dist/vite/vite-plugin-config.d.ts +4 -0
- package/dist/vite/vite-plugin-config.js +60 -0
- package/dist/vite/vite-plugin-dashboard-metadata.d.ts +7 -0
- package/dist/vite/vite-plugin-dashboard-metadata.js +61 -0
- package/dist/vite/vite-plugin-gql-tada.d.ts +6 -0
- package/dist/vite/vite-plugin-gql-tada.js +51 -0
- package/dist/vite/vite-plugin-hmr.d.ts +8 -0
- package/dist/vite/vite-plugin-hmr.js +34 -0
- package/dist/vite/vite-plugin-lingui-babel.d.ts +27 -0
- package/dist/vite/vite-plugin-lingui-babel.js +86 -0
- package/dist/vite/vite-plugin-tailwind-source.d.ts +7 -0
- package/dist/vite/vite-plugin-tailwind-source.js +48 -0
- package/dist/vite/vite-plugin-theme.d.ts +55 -0
- package/dist/vite/vite-plugin-theme.js +130 -0
- package/dist/vite/vite-plugin-transform-index.d.ts +11 -0
- package/dist/vite/vite-plugin-transform-index.js +40 -0
- package/dist/vite/vite-plugin-translations.d.ts +31 -0
- package/dist/vite/vite-plugin-translations.js +177 -0
- package/dist/vite/vite-plugin-ui-config.d.ts +150 -0
- package/dist/vite/vite-plugin-ui-config.js +36 -0
- package/dist/vite/vite-plugin-vendure-dashboard.d.ts +142 -0
- package/dist/vite/vite-plugin-vendure-dashboard.js +170 -0
- package/index.html +14 -0
- package/lingui.config.js +37 -0
- package/package.json +178 -0
- package/src/app/app-providers.tsx +31 -0
- package/src/app/common/delete-bulk-action.tsx +149 -0
- package/src/app/common/duplicate-bulk-action.tsx +147 -0
- package/src/app/common/duplicate-entity-dialog.tsx +117 -0
- package/src/app/common/map-faceted-filter-fields.ts +21 -0
- package/src/app/common/set-document-direction.ts +7 -0
- package/src/app/common/use-page-title.test.ts +263 -0
- package/src/app/common/use-page-title.ts +86 -0
- package/src/app/main.tsx +134 -0
- package/src/app/routeTree.gen.ts +1284 -0
- package/src/app/routes/__root.tsx +23 -0
- package/src/app/routes/_authenticated/_administrators/administrators.graphql.ts +88 -0
- package/src/app/routes/_authenticated/_administrators/administrators.tsx +104 -0
- package/src/app/routes/_authenticated/_administrators/administrators_.$id.tsx +160 -0
- package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +133 -0
- package/src/app/routes/_authenticated/_assets/assets.graphql.ts +76 -0
- package/src/app/routes/_authenticated/_assets/assets.tsx +48 -0
- package/src/app/routes/_authenticated/_assets/assets_.$id.tsx +181 -0
- package/src/app/routes/_authenticated/_assets/components/asset-bulk-actions.tsx +47 -0
- package/src/app/routes/_authenticated/_assets/components/asset-tag-filter.tsx +206 -0
- package/src/app/routes/_authenticated/_assets/components/asset-tags-editor.tsx +226 -0
- package/src/app/routes/_authenticated/_assets/components/manage-tags-dialog.tsx +212 -0
- package/src/app/routes/_authenticated/_channels/channels.graphql.ts +102 -0
- package/src/app/routes/_authenticated/_channels/channels.tsx +81 -0
- package/src/app/routes/_authenticated/_channels/channels_.$id.tsx +251 -0
- package/src/app/routes/_authenticated/_channels/components/channel-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_collections/collections.graphql.ts +193 -0
- package/src/app/routes/_authenticated/_collections/collections.tsx +337 -0
- package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +236 -0
- package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +130 -0
- package/src/app/routes/_authenticated/_collections/components/collection-contents-preview-table.tsx +153 -0
- package/src/app/routes/_authenticated/_collections/components/collection-contents-sheet.tsx +50 -0
- package/src/app/routes/_authenticated/_collections/components/collection-contents-table.tsx +83 -0
- package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx +24 -0
- package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +433 -0
- package/src/app/routes/_authenticated/_countries/components/country-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_countries/countries.graphql.ts +82 -0
- package/src/app/routes/_authenticated/_countries/countries.tsx +72 -0
- package/src/app/routes/_authenticated/_countries/countries_.$id.tsx +123 -0
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-sheet.tsx +51 -0
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-table.tsx +134 -0
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.graphql.ts +80 -0
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.tsx +72 -0
- package/src/app/routes/_authenticated/_customer-groups/customer-groups_.$id.tsx +121 -0
- package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +155 -0
- package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +347 -0
- package/src/app/routes/_authenticated/_customers/components/customer-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_customers/components/customer-group-controls.tsx +4 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +78 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-types.ts +5 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-utils.tsx +124 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history.tsx +113 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/default-customer-history-components.tsx +176 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/index.ts +4 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +169 -0
- package/src/app/routes/_authenticated/_customers/components/customer-order-table.tsx +90 -0
- package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +33 -0
- package/src/app/routes/_authenticated/_customers/customers.graphql.ts +218 -0
- package/src/app/routes/_authenticated/_customers/customers.tsx +104 -0
- package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +280 -0
- package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +99 -0
- package/src/app/routes/_authenticated/_facets/components/facet-value-bulk-actions.tsx +16 -0
- package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +49 -0
- package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +139 -0
- package/src/app/routes/_authenticated/_facets/facets.graphql.ts +182 -0
- package/src/app/routes/_authenticated/_facets/facets.tsx +121 -0
- package/src/app/routes/_authenticated/_facets/facets_.$facetId.values_.$id.tsx +158 -0
- package/src/app/routes/_authenticated/_facets/facets_.$id.tsx +152 -0
- package/src/app/routes/_authenticated/_global-settings/global-settings.graphql.ts +28 -0
- package/src/app/routes/_authenticated/_global-settings/global-settings.tsx +161 -0
- package/src/app/routes/_authenticated/_orders/components/add-manual-payment-dialog.tsx +189 -0
- package/src/app/routes/_authenticated/_orders/components/add-surcharge-form.tsx +139 -0
- package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +100 -0
- package/src/app/routes/_authenticated/_orders/components/edit-order-table.tsx +287 -0
- package/src/app/routes/_authenticated/_orders/components/fulfill-order-dialog.tsx +320 -0
- package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +159 -0
- package/src/app/routes/_authenticated/_orders/components/money-gross-net.tsx +20 -0
- package/src/app/routes/_authenticated/_orders/components/order-address.tsx +65 -0
- package/src/app/routes/_authenticated/_orders/components/order-detail-shared.tsx +307 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/default-order-history-components.tsx +98 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/index.ts +3 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +80 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history-types.ts +5 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history-utils.tsx +173 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +104 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/use-order-history.ts +175 -0
- package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +53 -0
- package/src/app/routes/_authenticated/_orders/components/order-modification-preview-dialog.tsx +365 -0
- package/src/app/routes/_authenticated/_orders/components/order-modification-summary.tsx +261 -0
- package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +100 -0
- package/src/app/routes/_authenticated/_orders/components/order-table.tsx +194 -0
- package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +40 -0
- package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +293 -0
- package/src/app/routes/_authenticated/_orders/components/seller-orders-card.tsx +63 -0
- package/src/app/routes/_authenticated/_orders/components/settle-refund-dialog.tsx +80 -0
- package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +64 -0
- package/src/app/routes/_authenticated/_orders/components/state-transition-control.tsx +99 -0
- package/src/app/routes/_authenticated/_orders/components/use-transition-order-to-state.tsx +151 -0
- package/src/app/routes/_authenticated/_orders/orders.graphql.ts +775 -0
- package/src/app/routes/_authenticated/_orders/orders.tsx +120 -0
- package/src/app/routes/_authenticated/_orders/orders_.$aggregateOrderId_.seller-orders.$sellerOrderId.tsx +50 -0
- package/src/app/routes/_authenticated/_orders/orders_.$id.tsx +30 -0
- package/src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx +298 -0
- package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +495 -0
- package/src/app/routes/_authenticated/_orders/utils/order-detail-loaders.tsx +134 -0
- package/src/app/routes/_authenticated/_orders/utils/order-types.ts +10 -0
- package/src/app/routes/_authenticated/_orders/utils/order-utils.ts +159 -0
- package/src/app/routes/_authenticated/_orders/utils/use-modify-order.ts +335 -0
- package/src/app/routes/_authenticated/_payment-methods/components/payment-eligibility-checker-selector.tsx +37 -0
- package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +33 -0
- package/src/app/routes/_authenticated/_payment-methods/components/payment-method-bulk-actions.tsx +58 -0
- package/src/app/routes/_authenticated/_payment-methods/payment-methods.graphql.ts +110 -0
- package/src/app/routes/_authenticated/_payment-methods/payment-methods.tsx +88 -0
- package/src/app/routes/_authenticated/_payment-methods/payment-methods_.$id.tsx +197 -0
- package/src/app/routes/_authenticated/_product-variants/components/add-currency-dropdown.tsx +49 -0
- package/src/app/routes/_authenticated/_product-variants/components/add-stock-location-dropdown.tsx +56 -0
- package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx +110 -0
- package/src/app/routes/_authenticated/_product-variants/components/variant-price-detail.tsx +88 -0
- package/src/app/routes/_authenticated/_product-variants/product-variants.graphql.ts +207 -0
- package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +98 -0
- package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +471 -0
- package/src/app/routes/_authenticated/_products/components/add-option-group-dialog.tsx +127 -0
- package/src/app/routes/_authenticated/_products/components/add-product-variant-dialog.tsx +372 -0
- package/src/app/routes/_authenticated/_products/components/assign-facet-values-dialog.tsx +282 -0
- package/src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx +416 -0
- package/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx +190 -0
- package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +370 -0
- package/src/app/routes/_authenticated/_products/components/option-groups-editor.tsx +180 -0
- package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +72 -0
- package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +117 -0
- package/src/app/routes/_authenticated/_products/components/product-option-group-badge.tsx +19 -0
- package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +111 -0
- package/src/app/routes/_authenticated/_products/components/product-options-table.tsx +114 -0
- package/src/app/routes/_authenticated/_products/components/product-variants-table.tsx +120 -0
- package/src/app/routes/_authenticated/_products/product-option-groups.graphql.ts +103 -0
- package/src/app/routes/_authenticated/_products/products.graphql.ts +352 -0
- package/src/app/routes/_authenticated/_products/products.tsx +121 -0
- package/src/app/routes/_authenticated/_products/products_.$id.tsx +258 -0
- package/src/app/routes/_authenticated/_products/products_.$id_.variants.tsx +405 -0
- package/src/app/routes/_authenticated/_products/products_.$productId.option-groups.$id.tsx +177 -0
- package/src/app/routes/_authenticated/_products/products_.$productId.option-groups.$productOptionGroupId.options_.$id.tsx +204 -0
- package/src/app/routes/_authenticated/_profile/profile.graphql.ts +23 -0
- package/src/app/routes/_authenticated/_profile/profile.tsx +119 -0
- package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +35 -0
- package/src/app/routes/_authenticated/_promotions/components/promotion-bulk-actions.tsx +72 -0
- package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx +35 -0
- package/src/app/routes/_authenticated/_promotions/promotions.graphql.ts +121 -0
- package/src/app/routes/_authenticated/_promotions/promotions.tsx +94 -0
- package/src/app/routes/_authenticated/_promotions/promotions_.$id.tsx +245 -0
- package/src/app/routes/_authenticated/_roles/components/expandable-permissions.tsx +54 -0
- package/src/app/routes/_authenticated/_roles/components/permissions-table-grid.tsx +251 -0
- package/src/app/routes/_authenticated/_roles/components/role-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_roles/roles.graphql.ts +76 -0
- package/src/app/routes/_authenticated/_roles/roles.tsx +99 -0
- package/src/app/routes/_authenticated/_roles/roles_.$id.tsx +146 -0
- package/src/app/routes/_authenticated/_sellers/components/seller-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_sellers/sellers.graphql.ts +70 -0
- package/src/app/routes/_authenticated/_sellers/sellers.tsx +56 -0
- package/src/app/routes/_authenticated/_sellers/sellers_.$id.tsx +112 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx +56 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/metadata-badges.tsx +15 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/price-display.tsx +21 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx +33 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-eligibility-checker-selector.tsx +36 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx +61 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-test-result-wrapper.tsx +87 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx +256 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-order-builder.tsx +244 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods-result.tsx +97 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods-sheet.tsx +41 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods.tsx +74 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-single-method-result.tsx +90 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-single-shipping-method-sheet.tsx +56 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-single-shipping-method.tsx +82 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/use-shipping-method-test-state.ts +67 -0
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.graphql.ts +137 -0
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.tsx +76 -0
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx +197 -0
- package/src/app/routes/_authenticated/_stock-locations/components/stock-location-bulk-actions.tsx +58 -0
- package/src/app/routes/_authenticated/_stock-locations/stock-locations.graphql.ts +87 -0
- package/src/app/routes/_authenticated/_stock-locations/stock-locations.tsx +65 -0
- package/src/app/routes/_authenticated/_stock-locations/stock-locations_.$id.tsx +126 -0
- package/src/app/routes/_authenticated/_system/components/payload-dialog.tsx +41 -0
- package/src/app/routes/_authenticated/_system/healthchecks.tsx +99 -0
- package/src/app/routes/_authenticated/_system/job-queue.graphql.ts +54 -0
- package/src/app/routes/_authenticated/_system/job-queue.tsx +265 -0
- package/src/app/routes/_authenticated/_system/scheduled-tasks.tsx +249 -0
- package/src/app/routes/_authenticated/_tax-categories/components/tax-category-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_tax-categories/tax-categories.graphql.ts +72 -0
- package/src/app/routes/_authenticated/_tax-categories/tax-categories.tsx +69 -0
- package/src/app/routes/_authenticated/_tax-categories/tax-categories_.$id.tsx +127 -0
- package/src/app/routes/_authenticated/_tax-rates/components/tax-rate-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_tax-rates/tax-rates.graphql.ts +84 -0
- package/src/app/routes/_authenticated/_tax-rates/tax-rates.tsx +119 -0
- package/src/app/routes/_authenticated/_tax-rates/tax-rates_.$id.tsx +149 -0
- package/src/app/routes/_authenticated/_zones/components/zone-bulk-actions.tsx +63 -0
- package/src/app/routes/_authenticated/_zones/components/zone-countries-add.tsx +0 -0
- package/src/app/routes/_authenticated/_zones/components/zone-countries-sheet.tsx +34 -0
- package/src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx +94 -0
- package/src/app/routes/_authenticated/_zones/zones.graphql.ts +105 -0
- package/src/app/routes/_authenticated/_zones/zones.tsx +64 -0
- package/src/app/routes/_authenticated/_zones/zones_.$id.tsx +110 -0
- package/src/app/routes/_authenticated/index.tsx +233 -0
- package/src/app/routes/_authenticated.tsx +35 -0
- package/src/app/routes/login.tsx +49 -0
- package/src/app/styles.css +100 -0
- package/src/app/tailwindcss-animate.css +275 -0
- package/src/i18n/common-strings.ts +111 -0
- package/src/i18n/locales/ar.po +4972 -0
- package/src/i18n/locales/bg.po +3436 -0
- package/src/i18n/locales/cs.po +4972 -0
- package/src/i18n/locales/de.po +4972 -0
- package/src/i18n/locales/en.po +4972 -0
- package/src/i18n/locales/es.po +4972 -0
- package/src/i18n/locales/fa.po +4972 -0
- package/src/i18n/locales/fr.po +4972 -0
- package/src/i18n/locales/he.po +4972 -0
- package/src/i18n/locales/hr.po +4972 -0
- package/src/i18n/locales/it.po +4972 -0
- package/src/i18n/locales/ja.po +4972 -0
- package/src/i18n/locales/ko.po +4628 -0
- package/src/i18n/locales/nb.po +4972 -0
- package/src/i18n/locales/ne.po +4972 -0
- package/src/i18n/locales/nl.po +4628 -0
- package/src/i18n/locales/pl.po +4972 -0
- package/src/i18n/locales/pt_BR.po +4972 -0
- package/src/i18n/locales/pt_PT.po +4972 -0
- package/src/i18n/locales/ru.po +4972 -0
- package/src/i18n/locales/sv.po +4972 -0
- package/src/i18n/locales/tr.po +4972 -0
- package/src/i18n/locales/uk.po +4972 -0
- package/src/i18n/locales/zh_Hans.po +4972 -0
- package/src/i18n/locales/zh_Hant.po +4972 -0
- package/src/lib/components/data-display/boolean.tsx +23 -0
- package/src/lib/components/data-display/date-time.tsx +19 -0
- package/src/lib/components/data-display/json.tsx +20 -0
- package/src/lib/components/data-display/money.tsx +14 -0
- package/src/lib/components/data-input/affixed-input.stories.tsx +93 -0
- package/src/lib/components/data-input/affixed-input.tsx +79 -0
- package/src/lib/components/data-input/boolean-input.stories.tsx +102 -0
- package/src/lib/components/data-input/boolean-input.tsx +16 -0
- package/src/lib/components/data-input/checkbox-input.stories.tsx +61 -0
- package/src/lib/components/data-input/checkbox-input.tsx +15 -0
- package/src/lib/components/data-input/combination-mode-input.tsx +61 -0
- package/src/lib/components/data-input/configurable-operation-list-input.tsx +58 -0
- package/src/lib/components/data-input/custom-field-list-input.tsx +294 -0
- package/src/lib/components/data-input/customer-group-input.tsx +61 -0
- package/src/lib/components/data-input/datetime-input.stories.tsx +62 -0
- package/src/lib/components/data-input/datetime-input.tsx +192 -0
- package/src/lib/components/data-input/default-relation-input.tsx +626 -0
- package/src/lib/components/data-input/facet-value-input.tsx +78 -0
- package/src/lib/components/data-input/index.ts +23 -0
- package/src/lib/components/data-input/money-input.stories.tsx +88 -0
- package/src/lib/components/data-input/money-input.tsx +122 -0
- package/src/lib/components/data-input/number-input.stories.tsx +103 -0
- package/src/lib/components/data-input/number-input.tsx +85 -0
- package/src/lib/components/data-input/password-form-input.stories.tsx +65 -0
- package/src/lib/components/data-input/password-form-input.tsx +23 -0
- package/src/lib/components/data-input/product-multi-selector-input.tsx +416 -0
- package/src/lib/components/data-input/relation-input.tsx +165 -0
- package/src/lib/components/data-input/relation-selector.tsx +476 -0
- package/src/lib/components/data-input/rich-text-input.stories.tsx +92 -0
- package/src/lib/components/data-input/rich-text-input.tsx +16 -0
- package/src/lib/components/data-input/select-with-options.tsx +96 -0
- package/src/lib/components/data-input/slug-input.stories.tsx +232 -0
- package/src/lib/components/data-input/slug-input.tsx +289 -0
- package/src/lib/components/data-input/string-list-input.tsx +268 -0
- package/src/lib/components/data-input/struct-form-input.tsx +320 -0
- package/src/lib/components/data-input/text-input.stories.tsx +52 -0
- package/src/lib/components/data-input/text-input.tsx +16 -0
- package/src/lib/components/data-input/textarea-input.stories.tsx +55 -0
- package/src/lib/components/data-input/textarea-input.tsx +23 -0
- package/src/lib/components/data-table/add-filter-menu.tsx +64 -0
- package/src/lib/components/data-table/column-header-wrapper.tsx +106 -0
- package/src/lib/components/data-table/data-table-bulk-action-item.tsx +141 -0
- package/src/lib/components/data-table/data-table-bulk-actions.tsx +99 -0
- package/src/lib/components/data-table/data-table-column-header.tsx +50 -0
- package/src/lib/components/data-table/data-table-context.tsx +106 -0
- package/src/lib/components/data-table/data-table-faceted-filter.tsx +195 -0
- package/src/lib/components/data-table/data-table-filter-badge-editable.tsx +35 -0
- package/src/lib/components/data-table/data-table-filter-badge.tsx +101 -0
- package/src/lib/components/data-table/data-table-filter-dialog.tsx +92 -0
- package/src/lib/components/data-table/data-table-pagination.tsx +103 -0
- package/src/lib/components/data-table/data-table-utils.ts +291 -0
- package/src/lib/components/data-table/data-table-view-options.tsx +130 -0
- package/src/lib/components/data-table/data-table.stories.tsx +249 -0
- package/src/lib/components/data-table/data-table.tsx +508 -0
- package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +60 -0
- package/src/lib/components/data-table/filters/data-table-datetime-filter.tsx +159 -0
- package/src/lib/components/data-table/filters/data-table-id-filter.tsx +63 -0
- package/src/lib/components/data-table/filters/data-table-number-filter.tsx +123 -0
- package/src/lib/components/data-table/filters/data-table-string-filter.tsx +79 -0
- package/src/lib/components/data-table/global-views-bar.tsx +97 -0
- package/src/lib/components/data-table/global-views-sheet.tsx +11 -0
- package/src/lib/components/data-table/human-readable-operator.tsx +65 -0
- package/src/lib/components/data-table/manage-global-views-button.tsx +26 -0
- package/src/lib/components/data-table/my-views-button.tsx +47 -0
- package/src/lib/components/data-table/refresh-button.tsx +49 -0
- package/src/lib/components/data-table/save-view-button.tsx +45 -0
- package/src/lib/components/data-table/save-view-dialog.tsx +134 -0
- package/src/lib/components/data-table/types.ts +40 -0
- package/src/lib/components/data-table/use-all-bulk-actions.ts +19 -0
- package/src/lib/components/data-table/use-generated-columns.tsx +411 -0
- package/src/lib/components/data-table/user-views-sheet.tsx +11 -0
- package/src/lib/components/data-table/views-sheet.tsx +305 -0
- package/src/lib/components/date-range-picker.tsx +186 -0
- package/src/lib/components/labeled-data.tsx +21 -0
- package/src/lib/components/layout/app-layout.tsx +35 -0
- package/src/lib/components/layout/app-sidebar.tsx +37 -0
- package/src/lib/components/layout/channel-switcher.tsx +229 -0
- package/src/lib/components/layout/content-language-selector.tsx +46 -0
- package/src/lib/components/layout/dev-mode-indicator.tsx +18 -0
- package/src/lib/components/layout/generated-breadcrumbs.tsx +136 -0
- package/src/lib/components/layout/language-dialog.tsx +133 -0
- package/src/lib/components/layout/manage-languages-dialog.tsx +386 -0
- package/src/lib/components/layout/nav-item-wrapper.tsx +107 -0
- package/src/lib/components/layout/nav-main.tsx +331 -0
- package/src/lib/components/layout/nav-projects.tsx +81 -0
- package/src/lib/components/layout/nav-user.tsx +180 -0
- package/src/lib/components/login/login-form.tsx +124 -0
- package/src/lib/components/shared/alerts.tsx +52 -0
- package/src/lib/components/shared/animated-number.tsx +49 -0
- package/src/lib/components/shared/asset/asset-bulk-actions.tsx +109 -0
- package/src/lib/components/shared/asset/asset-focal-point-editor.tsx +103 -0
- package/src/lib/components/shared/asset/asset-gallery.stories.tsx +76 -0
- package/src/lib/components/shared/asset/asset-gallery.tsx +623 -0
- package/src/lib/components/shared/asset/asset-picker-dialog.stories.tsx +58 -0
- package/src/lib/components/shared/asset/asset-picker-dialog.tsx +109 -0
- package/src/lib/components/shared/asset/asset-preview-dialog.tsx +38 -0
- package/src/lib/components/shared/asset/asset-preview-selector.tsx +32 -0
- package/src/lib/components/shared/asset/asset-preview.tsx +114 -0
- package/src/lib/components/shared/asset/asset-properties.tsx +44 -0
- package/src/lib/components/shared/assign-to-channel-bulk-action.tsx +71 -0
- package/src/lib/components/shared/assign-to-channel-dialog.tsx +156 -0
- package/src/lib/components/shared/assigned-channels.tsx +108 -0
- package/src/lib/components/shared/assigned-facet-values.tsx +61 -0
- package/src/lib/components/shared/channel-chip.tsx +43 -0
- package/src/lib/components/shared/channel-code-label.tsx +6 -0
- package/src/lib/components/shared/channel-selector.tsx +51 -0
- package/src/lib/components/shared/configurable-operation-arg-input.tsx +29 -0
- package/src/lib/components/shared/configurable-operation-input.tsx +167 -0
- package/src/lib/components/shared/configurable-operation-multi-selector.tsx +263 -0
- package/src/lib/components/shared/configurable-operation-selector.tsx +156 -0
- package/src/lib/components/shared/confirmation-dialog.tsx +58 -0
- package/src/lib/components/shared/copyable-text.tsx +30 -0
- package/src/lib/components/shared/country-selector.tsx +108 -0
- package/src/lib/components/shared/currency-selector.tsx +33 -0
- package/src/lib/components/shared/custom-fields-form.tsx +296 -0
- package/src/lib/components/shared/customer-address-form.tsx +338 -0
- package/src/lib/components/shared/customer-group-chip.tsx +30 -0
- package/src/lib/components/shared/customer-group-selector.tsx +65 -0
- package/src/lib/components/shared/customer-selector.tsx +112 -0
- package/src/lib/components/shared/detail-page-button.stories.tsx +52 -0
- package/src/lib/components/shared/detail-page-button.tsx +59 -0
- package/src/lib/components/shared/entity-assets.tsx +411 -0
- package/src/lib/components/shared/error-page.tsx +31 -0
- package/src/lib/components/shared/facet-value-chip.tsx +59 -0
- package/src/lib/components/shared/facet-value-selector.stories.tsx +48 -0
- package/src/lib/components/shared/facet-value-selector.tsx +458 -0
- package/src/lib/components/shared/form-field-wrapper.tsx +111 -0
- package/src/lib/components/shared/history-timeline/history-entry-date.tsx +37 -0
- package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +28 -0
- package/src/lib/components/shared/history-timeline/history-note-editor.tsx +60 -0
- package/src/lib/components/shared/history-timeline/history-note-entry.tsx +65 -0
- package/src/lib/components/shared/history-timeline/history-note-input.tsx +39 -0
- package/src/lib/components/shared/history-timeline/history-timeline-with-grouping.tsx +141 -0
- package/src/lib/components/shared/history-timeline/history-timeline.tsx +16 -0
- package/src/lib/components/shared/history-timeline/use-history-note-editor.ts +26 -0
- package/src/lib/components/shared/icon-mark.tsx +18 -0
- package/src/lib/components/shared/language-selector.tsx +56 -0
- package/src/lib/components/shared/logo-mark.tsx +24 -0
- package/src/lib/components/shared/multi-select.tsx +159 -0
- package/src/lib/components/shared/navigation-confirmation.tsx +64 -0
- package/src/lib/components/shared/option-value-input.tsx +97 -0
- package/src/lib/components/shared/paginated-list-data-table.stories.tsx +212 -0
- package/src/lib/components/shared/paginated-list-data-table.tsx +523 -0
- package/src/lib/components/shared/permission-guard.stories.tsx +46 -0
- package/src/lib/components/shared/permission-guard.tsx +51 -0
- package/src/lib/components/shared/product-variant-selector.tsx +136 -0
- package/src/lib/components/shared/remove-from-channel-bulk-action.tsx +93 -0
- package/src/lib/components/shared/rich-text-editor/image-dialog.tsx +223 -0
- package/src/lib/components/shared/rich-text-editor/link-dialog.tsx +151 -0
- package/src/lib/components/shared/rich-text-editor/responsive-toolbar.tsx +443 -0
- package/src/lib/components/shared/rich-text-editor/rich-text-editor.tsx +339 -0
- package/src/lib/components/shared/rich-text-editor/table-delete-menu.tsx +104 -0
- package/src/lib/components/shared/rich-text-editor/table-edit-icons.tsx +225 -0
- package/src/lib/components/shared/role-code-label.tsx +12 -0
- package/src/lib/components/shared/role-selector.tsx +56 -0
- package/src/lib/components/shared/seller-selector.tsx +111 -0
- package/src/lib/components/shared/stock-level-label.tsx +22 -0
- package/src/lib/components/shared/table-cell/order-table-cell-components.tsx +80 -0
- package/src/lib/components/shared/tax-category-selector.tsx +65 -0
- package/src/lib/components/shared/translatable-form-field.tsx +149 -0
- package/src/lib/components/shared/vendure-image.stories.tsx +167 -0
- package/src/lib/components/shared/vendure-image.tsx +307 -0
- package/src/lib/components/shared/zone-selector.tsx +65 -0
- package/src/lib/components/ui/accordion.stories.tsx +33 -0
- package/src/lib/components/ui/accordion.tsx +59 -0
- package/src/lib/components/ui/alert-dialog.stories.tsx +48 -0
- package/src/lib/components/ui/alert-dialog.tsx +128 -0
- package/src/lib/components/ui/alert.stories.tsx +35 -0
- package/src/lib/components/ui/alert.tsx +60 -0
- package/src/lib/components/ui/aspect-ratio.stories.tsx +28 -0
- package/src/lib/components/ui/aspect-ratio.tsx +9 -0
- package/src/lib/components/ui/badge.stories.tsx +28 -0
- package/src/lib/components/ui/badge.tsx +38 -0
- package/src/lib/components/ui/breadcrumb.stories.tsx +41 -0
- package/src/lib/components/ui/breadcrumb.tsx +102 -0
- package/src/lib/components/ui/button.stories.tsx +38 -0
- package/src/lib/components/ui/button.tsx +58 -0
- package/src/lib/components/ui/calendar.stories.tsx +22 -0
- package/src/lib/components/ui/calendar.tsx +447 -0
- package/src/lib/components/ui/card.stories.tsx +28 -0
- package/src/lib/components/ui/card.tsx +47 -0
- package/src/lib/components/ui/carousel.stories.tsx +34 -0
- package/src/lib/components/ui/carousel.tsx +241 -0
- package/src/lib/components/ui/chart.tsx +351 -0
- package/src/lib/components/ui/checkbox.stories.tsx +31 -0
- package/src/lib/components/ui/checkbox.tsx +27 -0
- package/src/lib/components/ui/collapsible.stories.tsx +39 -0
- package/src/lib/components/ui/collapsible.tsx +33 -0
- package/src/lib/components/ui/command.stories.tsx +44 -0
- package/src/lib/components/ui/command.tsx +139 -0
- package/src/lib/components/ui/context-menu.stories.tsx +38 -0
- package/src/lib/components/ui/context-menu.tsx +252 -0
- package/src/lib/components/ui/dialog.stories.tsx +52 -0
- package/src/lib/components/ui/dialog.tsx +116 -0
- package/src/lib/components/ui/drawer.stories.tsx +50 -0
- package/src/lib/components/ui/drawer.tsx +133 -0
- package/src/lib/components/ui/dropdown-menu.stories.tsx +41 -0
- package/src/lib/components/ui/dropdown-menu.tsx +223 -0
- package/src/lib/components/ui/form.tsx +141 -0
- package/src/lib/components/ui/grid-layout.tsx +376 -0
- package/src/lib/components/ui/hover-card.stories.tsx +38 -0
- package/src/lib/components/ui/hover-card.tsx +36 -0
- package/src/lib/components/ui/input-group.tsx +149 -0
- package/src/lib/components/ui/input-otp.stories.tsx +30 -0
- package/src/lib/components/ui/input-otp.tsx +77 -0
- package/src/lib/components/ui/input.stories.tsx +38 -0
- package/src/lib/components/ui/input.tsx +19 -0
- package/src/lib/components/ui/label.stories.tsx +24 -0
- package/src/lib/components/ui/label.tsx +21 -0
- package/src/lib/components/ui/menubar.stories.tsx +53 -0
- package/src/lib/components/ui/menubar.tsx +274 -0
- package/src/lib/components/ui/navigation-menu.stories.tsx +54 -0
- package/src/lib/components/ui/navigation-menu.tsx +168 -0
- package/src/lib/components/ui/pagination.stories.tsx +51 -0
- package/src/lib/components/ui/pagination.tsx +106 -0
- package/src/lib/components/ui/password-input.stories.tsx +32 -0
- package/src/lib/components/ui/password-input.tsx +29 -0
- package/src/lib/components/ui/popover.stories.tsx +33 -0
- package/src/lib/components/ui/popover.tsx +40 -0
- package/src/lib/components/ui/progress.stories.tsx +27 -0
- package/src/lib/components/ui/progress.tsx +29 -0
- package/src/lib/components/ui/radio-group.stories.tsx +34 -0
- package/src/lib/components/ui/radio-group.tsx +45 -0
- package/src/lib/components/ui/resizable.stories.tsx +32 -0
- package/src/lib/components/ui/resizable.tsx +54 -0
- package/src/lib/components/ui/scroll-area.stories.tsx +31 -0
- package/src/lib/components/ui/scroll-area.tsx +50 -0
- package/src/lib/components/ui/select.stories.tsx +36 -0
- package/src/lib/components/ui/select.tsx +183 -0
- package/src/lib/components/ui/separator.stories.tsx +35 -0
- package/src/lib/components/ui/separator.tsx +26 -0
- package/src/lib/components/ui/sheet.stories.tsx +50 -0
- package/src/lib/components/ui/sheet.tsx +118 -0
- package/src/lib/components/ui/sidebar-context.ts +16 -0
- package/src/lib/components/ui/sidebar.tsx +686 -0
- package/src/lib/components/ui/skeleton.stories.tsx +26 -0
- package/src/lib/components/ui/skeleton.tsx +13 -0
- package/src/lib/components/ui/slider.stories.tsx +37 -0
- package/src/lib/components/ui/slider.tsx +63 -0
- package/src/lib/components/ui/sonner.tsx +27 -0
- package/src/lib/components/ui/switch.stories.tsx +31 -0
- package/src/lib/components/ui/switch.tsx +26 -0
- package/src/lib/components/ui/table.stories.tsx +52 -0
- package/src/lib/components/ui/table.tsx +82 -0
- package/src/lib/components/ui/tabs.stories.tsx +29 -0
- package/src/lib/components/ui/tabs.tsx +48 -0
- package/src/lib/components/ui/textarea.stories.tsx +32 -0
- package/src/lib/components/ui/textarea.tsx +18 -0
- package/src/lib/components/ui/toggle-group.stories.tsx +31 -0
- package/src/lib/components/ui/toggle-group.tsx +73 -0
- package/src/lib/components/ui/toggle.stories.tsx +39 -0
- package/src/lib/components/ui/toggle.tsx +45 -0
- package/src/lib/components/ui/tooltip.stories.tsx +30 -0
- package/src/lib/components/ui/tooltip.tsx +51 -0
- package/src/lib/constants.ts +336 -0
- package/src/lib/framework/alert/alert-extensions.tsx +19 -0
- package/src/lib/framework/alert/alert-item.tsx +44 -0
- package/src/lib/framework/alert/alerts-indicator.tsx +22 -0
- package/src/lib/framework/alert/search-index-buffer-alert/search-index-buffer-alert.ts +41 -0
- package/src/lib/framework/component-registry/component-registry.tsx +18 -0
- package/src/lib/framework/component-registry/display-component.tsx +28 -0
- package/src/lib/framework/dashboard-widget/base-widget.tsx +101 -0
- package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +152 -0
- package/src/lib/framework/dashboard-widget/latest-orders-widget/latest-orders-widget.graphql.ts +35 -0
- package/src/lib/framework/dashboard-widget/metrics-widget/chart.tsx +40 -0
- package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +96 -0
- package/src/lib/framework/dashboard-widget/metrics-widget/metrics-widget.graphql.ts +20 -0
- package/src/lib/framework/dashboard-widget/orders-summary/index.tsx +113 -0
- package/src/lib/framework/dashboard-widget/orders-summary/order-summary-widget.graphql.ts +14 -0
- package/src/lib/framework/dashboard-widget/widget-extensions.tsx +19 -0
- package/src/lib/framework/dashboard-widget/widget-filters-context.tsx +36 -0
- package/src/lib/framework/data-table/data-table-extensions.ts +35 -0
- package/src/lib/framework/defaults.ts +270 -0
- package/src/lib/framework/document-extension/extend-detail-form-query.ts +50 -0
- package/src/lib/framework/document-extension/extend-document.spec.ts +884 -0
- package/src/lib/framework/document-extension/extend-document.ts +159 -0
- package/src/lib/framework/document-introspection/add-custom-fields.spec.ts +1458 -0
- package/src/lib/framework/document-introspection/add-custom-fields.ts +452 -0
- package/src/lib/framework/document-introspection/get-document-structure.spec.ts +581 -0
- package/src/lib/framework/document-introspection/get-document-structure.ts +669 -0
- package/src/lib/framework/document-introspection/hooks.ts +13 -0
- package/src/lib/framework/document-introspection/include-only-selected-list-fields.spec.ts +1840 -0
- package/src/lib/framework/document-introspection/include-only-selected-list-fields.ts +940 -0
- package/src/lib/framework/document-introspection/testing-utils.ts +161 -0
- package/src/lib/framework/extension-api/define-dashboard-extension.ts +99 -0
- package/src/lib/framework/extension-api/display-component-extensions.tsx +58 -0
- package/src/lib/framework/extension-api/extension-api-types.ts +92 -0
- package/src/lib/framework/extension-api/input-component-extensions.tsx +96 -0
- package/src/lib/framework/extension-api/logic/alerts.ts +11 -0
- package/src/lib/framework/extension-api/logic/data-table.ts +37 -0
- package/src/lib/framework/extension-api/logic/detail-forms.ts +35 -0
- package/src/lib/framework/extension-api/logic/form-components.ts +14 -0
- package/src/lib/framework/extension-api/logic/history-entries.ts +24 -0
- package/src/lib/framework/extension-api/logic/index.ts +10 -0
- package/src/lib/framework/extension-api/logic/layout.ts +22 -0
- package/src/lib/framework/extension-api/logic/login.ts +17 -0
- package/src/lib/framework/extension-api/logic/navigation.ts +41 -0
- package/src/lib/framework/extension-api/logic/widgets.ts +10 -0
- package/src/lib/framework/extension-api/types/alerts.ts +59 -0
- package/src/lib/framework/extension-api/types/data-table.ts +159 -0
- package/src/lib/framework/extension-api/types/detail-forms.ts +58 -0
- package/src/lib/framework/extension-api/types/form-components.ts +41 -0
- package/src/lib/framework/extension-api/types/history-entries.ts +120 -0
- package/src/lib/framework/extension-api/types/index.ts +10 -0
- package/src/lib/framework/extension-api/types/layout.ts +141 -0
- package/src/lib/framework/extension-api/types/login.ts +76 -0
- package/src/lib/framework/extension-api/types/navigation.ts +105 -0
- package/src/lib/framework/extension-api/types/widgets.ts +101 -0
- package/src/lib/framework/extension-api/use-dashboard-extensions.ts +27 -0
- package/src/lib/framework/extension-api/use-login-extensions.ts +26 -0
- package/src/lib/framework/form-engine/custom-form-component-extensions.ts +15 -0
- package/src/lib/framework/form-engine/custom-form-component.tsx +16 -0
- package/src/lib/framework/form-engine/default-input-for-type.tsx +35 -0
- package/src/lib/framework/form-engine/form-control-adapter.tsx +193 -0
- package/src/lib/framework/form-engine/form-engine-types.ts +169 -0
- package/src/lib/framework/form-engine/form-schema-tools.spec.ts +610 -0
- package/src/lib/framework/form-engine/form-schema-tools.ts +417 -0
- package/src/lib/framework/form-engine/overridden-form-component.tsx +51 -0
- package/src/lib/framework/form-engine/use-generated-form.tsx +226 -0
- package/src/lib/framework/form-engine/utils.spec.ts +37 -0
- package/src/lib/framework/form-engine/utils.ts +356 -0
- package/src/lib/framework/form-engine/value-transformers.ts +150 -0
- package/src/lib/framework/history-entry/history-entry-extensions.ts +11 -0
- package/src/lib/framework/history-entry/history-entry.tsx +129 -0
- package/src/lib/framework/layout-engine/custom-form-page.stories.tsx +344 -0
- package/src/lib/framework/layout-engine/dev-mode-button.tsx +24 -0
- package/src/lib/framework/layout-engine/layout-extensions.ts +27 -0
- package/src/lib/framework/layout-engine/location-wrapper.tsx +122 -0
- package/src/lib/framework/layout-engine/page-block-provider.tsx +6 -0
- package/src/lib/framework/layout-engine/page-layout.spec.tsx +138 -0
- package/src/lib/framework/layout-engine/page-layout.tsx +700 -0
- package/src/lib/framework/layout-engine/page-provider.tsx +10 -0
- package/src/lib/framework/layout-engine/page.stories.tsx +275 -0
- package/src/lib/framework/nav-menu/nav-menu-extensions.ts +112 -0
- package/src/lib/framework/page/detail-page-route-loader.tsx +67 -0
- package/src/lib/framework/page/detail-page.stories.tsx +151 -0
- package/src/lib/framework/page/detail-page.tsx +255 -0
- package/src/lib/framework/page/list-page.stories.tsx +217 -0
- package/src/lib/framework/page/list-page.tsx +613 -0
- package/src/lib/framework/page/page-api.ts +9 -0
- package/src/lib/framework/page/page-types.ts +51 -0
- package/src/lib/framework/page/use-detail-page.ts +341 -0
- package/src/lib/framework/page/use-extended-router.tsx +139 -0
- package/src/lib/framework/registry/global-registry.ts +50 -0
- package/src/lib/framework/registry/registry-types.ts +32 -0
- package/src/lib/graphql/api.ts +123 -0
- package/src/lib/graphql/common-operations.ts +37 -0
- package/src/lib/graphql/fragments.ts +71 -0
- package/src/lib/graphql/graphql-env.d.ts +523 -0
- package/src/lib/graphql/graphql.ts +15 -0
- package/src/lib/graphql/settings-store-operations.ts +17 -0
- package/src/lib/hooks/use-alerts.ts +84 -0
- package/src/lib/hooks/use-auth.tsx +21 -0
- package/src/lib/hooks/use-channel.ts +27 -0
- package/src/lib/hooks/use-custom-field-config.ts +27 -0
- package/src/lib/hooks/use-display-locale.ts +40 -0
- package/src/lib/hooks/use-drag-and-drop.ts +86 -0
- package/src/lib/hooks/use-dynamic-translations.ts +46 -0
- package/src/lib/hooks/use-extended-detail-query.ts +37 -0
- package/src/lib/hooks/use-extended-list-query.ts +80 -0
- package/src/lib/hooks/use-floating-bulk-actions.ts +83 -0
- package/src/lib/hooks/use-grouped-permissions.ts +55 -0
- package/src/lib/hooks/use-local-format.ts +186 -0
- package/src/lib/hooks/use-mobile.ts +19 -0
- package/src/lib/hooks/use-page-block.tsx +27 -0
- package/src/lib/hooks/use-page.tsx +10 -0
- package/src/lib/hooks/use-permissions.ts +40 -0
- package/src/lib/hooks/use-saved-views.ts +238 -0
- package/src/lib/hooks/use-server-config.ts +4 -0
- package/src/lib/hooks/use-sorted-languages.ts +41 -0
- package/src/lib/hooks/use-theme.ts +10 -0
- package/src/lib/hooks/use-ui-language-loader.ts +30 -0
- package/src/lib/hooks/use-user-settings.tsx +12 -0
- package/src/lib/index.ts +293 -0
- package/src/lib/lib/load-i18n-messages.ts +20 -0
- package/src/lib/lib/trans.tsx +20 -0
- package/src/lib/lib/utils.ts +111 -0
- package/src/lib/providers/alerts-provider.tsx +60 -0
- package/src/lib/providers/auth.tsx +232 -0
- package/src/lib/providers/channel-provider.tsx +245 -0
- package/src/lib/providers/i18n-provider.tsx +21 -0
- package/src/lib/providers/server-config.tsx +289 -0
- package/src/lib/providers/theme-provider.tsx +56 -0
- package/src/lib/providers/user-settings.tsx +244 -0
- package/src/lib/types/saved-views.ts +42 -0
- package/src/lib/utils/config-utils.ts +19 -0
- package/src/lib/utils/global-languages.ts +268 -0
- package/src/lib/utils/saved-views-utils.ts +40 -0
- package/src/lib/virtual.d.ts +39 -0
- package/src/vite-env.d.ts +2 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { globalRegistry } from '../../registry/global-registry.js';
|
|
2
|
+
import { DashboardLoginExtensions } from '../types/login.js';
|
|
3
|
+
|
|
4
|
+
export function registerLoginExtensions(loginExtensions?: DashboardLoginExtensions) {
|
|
5
|
+
if (!loginExtensions) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const registryKey = 'loginExtensions';
|
|
10
|
+
|
|
11
|
+
globalRegistry.set(registryKey, (oldValue: DashboardLoginExtensions) => {
|
|
12
|
+
return {
|
|
13
|
+
...oldValue,
|
|
14
|
+
...loginExtensions,
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { addNavMenuItem, addNavMenuSection, NavMenuItem } from '../../nav-menu/nav-menu-extensions.js';
|
|
2
|
+
import { registerRoute } from '../../page/page-api.js';
|
|
3
|
+
import { DashboardNavSectionDefinition, DashboardRouteDefinition } from '../types/navigation.js';
|
|
4
|
+
|
|
5
|
+
export function registerNavigationExtensions(
|
|
6
|
+
navSections?: DashboardNavSectionDefinition[],
|
|
7
|
+
routes?: DashboardRouteDefinition[],
|
|
8
|
+
) {
|
|
9
|
+
if (navSections) {
|
|
10
|
+
for (const section of navSections) {
|
|
11
|
+
addNavMenuSection({
|
|
12
|
+
...section,
|
|
13
|
+
placement: section.placement ?? 'top',
|
|
14
|
+
order: section.order ?? 999,
|
|
15
|
+
items: [],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (routes) {
|
|
21
|
+
for (const route of routes) {
|
|
22
|
+
if (route.navMenuItem) {
|
|
23
|
+
// Add the nav menu item
|
|
24
|
+
const item: NavMenuItem = {
|
|
25
|
+
url: route.navMenuItem.url ?? route.path,
|
|
26
|
+
id: route.navMenuItem.id ?? route.path,
|
|
27
|
+
title: route.navMenuItem.title ?? route.path,
|
|
28
|
+
order: route.navMenuItem.order,
|
|
29
|
+
requiresPermission: route.navMenuItem.requiresPermission,
|
|
30
|
+
icon: route.navMenuItem.icon,
|
|
31
|
+
placement: route.navMenuItem.placement,
|
|
32
|
+
};
|
|
33
|
+
addNavMenuItem(item, route.navMenuItem.sectionId);
|
|
34
|
+
}
|
|
35
|
+
if (route.path) {
|
|
36
|
+
// Configure a list page
|
|
37
|
+
registerRoute(route);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { registerDashboardWidget } from '../../dashboard-widget/widget-extensions.js';
|
|
2
|
+
import { DashboardWidgetDefinition } from '../types/index.js';
|
|
3
|
+
|
|
4
|
+
export function registerWidgetExtensions(widgets?: DashboardWidgetDefinition[]) {
|
|
5
|
+
if (widgets) {
|
|
6
|
+
for (const widget of widgets) {
|
|
7
|
+
registerDashboardWidget(widget);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type AlertSeverity = 'info' | 'warning' | 'error';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* Allows you to define custom alerts that can be displayed in the dashboard.
|
|
6
|
+
*
|
|
7
|
+
* @docsCategory extensions-api
|
|
8
|
+
* @docsPage Alerts
|
|
9
|
+
* @since 3.3.0
|
|
10
|
+
*/
|
|
11
|
+
export interface DashboardAlertDefinition<TResponse = any> {
|
|
12
|
+
/**
|
|
13
|
+
* @description
|
|
14
|
+
* A unique identifier for the alert.
|
|
15
|
+
*/
|
|
16
|
+
id: string;
|
|
17
|
+
/**
|
|
18
|
+
* @description
|
|
19
|
+
* The title of the alert. Can be a string or a function that returns a string based on the response data.
|
|
20
|
+
*/
|
|
21
|
+
title: string | ((data: TResponse) => string);
|
|
22
|
+
/**
|
|
23
|
+
* @description
|
|
24
|
+
* The description of the alert. Can be a string or a function that returns a string based on the response data.
|
|
25
|
+
*/
|
|
26
|
+
description?: string | ((data: TResponse) => string);
|
|
27
|
+
/**
|
|
28
|
+
* @description
|
|
29
|
+
* The severity level of the alert.
|
|
30
|
+
*/
|
|
31
|
+
severity: AlertSeverity | ((data: TResponse) => AlertSeverity);
|
|
32
|
+
/**
|
|
33
|
+
* @description
|
|
34
|
+
* A function that checks the condition and returns the response data.
|
|
35
|
+
*/
|
|
36
|
+
check: () => Promise<TResponse> | TResponse;
|
|
37
|
+
/**
|
|
38
|
+
* @description
|
|
39
|
+
* A function that determines whether the alert should be rendered based on the response data.
|
|
40
|
+
*/
|
|
41
|
+
shouldShow: (data: TResponse) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* @description
|
|
44
|
+
* The interval in milliseconds to recheck the condition.
|
|
45
|
+
*/
|
|
46
|
+
recheckInterval?: number;
|
|
47
|
+
/**
|
|
48
|
+
* @description
|
|
49
|
+
* Optional actions that can be performed when the alert is shown.
|
|
50
|
+
*
|
|
51
|
+
* The `onClick()` handler will receive the data returned by the `check` function,
|
|
52
|
+
* as well as a `dismiss()` function that can be used to immediately dismiss the
|
|
53
|
+
* current alert.
|
|
54
|
+
*/
|
|
55
|
+
actions?: Array<{
|
|
56
|
+
label: string;
|
|
57
|
+
onClick: (args: { data: TResponse; dismiss: () => void }) => void | Promise<any>;
|
|
58
|
+
}>;
|
|
59
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { DataDisplayComponent } from '@/vdb/framework/component-registry/component-registry.js';
|
|
2
|
+
import { Table } from '@tanstack/react-table';
|
|
3
|
+
import { CellContext } from '@tanstack/table-core';
|
|
4
|
+
import { DocumentNode } from 'graphql';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
|
|
7
|
+
export type DataTableDisplayComponent = DataDisplayComponent<CellContext<any, any>>;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @description
|
|
11
|
+
* Allows you to define custom display components for specific columns in data tables.
|
|
12
|
+
* The pageId is already defined in the data table extension, so only the column name is needed.
|
|
13
|
+
*
|
|
14
|
+
* @docsCategory extensions-api
|
|
15
|
+
* @docsPage DataTable
|
|
16
|
+
* @since 3.4.0
|
|
17
|
+
*/
|
|
18
|
+
export interface DashboardDataTableDisplayComponent {
|
|
19
|
+
/**
|
|
20
|
+
* @description
|
|
21
|
+
* The name of the column where this display component should be used.
|
|
22
|
+
*/
|
|
23
|
+
column: string;
|
|
24
|
+
/**
|
|
25
|
+
* @description
|
|
26
|
+
* The React component that will be rendered as the display.
|
|
27
|
+
* It should accept `value` and other standard display props.
|
|
28
|
+
*/
|
|
29
|
+
component: DataTableDisplayComponent;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type BulkActionContext<Item extends { id: string } & Record<string, any>> = {
|
|
33
|
+
selection: Item[];
|
|
34
|
+
table: Table<Item>;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type BulkActionComponent<Item extends { id: string } & Record<string, any>> = React.FunctionComponent<
|
|
38
|
+
BulkActionContext<Item>
|
|
39
|
+
>;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @description
|
|
43
|
+
* A bulk action is a component that will be rendered in the bulk actions dropdown.
|
|
44
|
+
*
|
|
45
|
+
* The component receives the following props:
|
|
46
|
+
*
|
|
47
|
+
* - `selection`: The selected row or rows
|
|
48
|
+
* - `table`: A reference to the Tanstack table instance powering the list
|
|
49
|
+
*
|
|
50
|
+
* The `table` object has
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```tsx
|
|
54
|
+
* import { BulkActionComponent, DataTableBulkActionItem, usePaginatedList } from '\@vendure/dashboard';
|
|
55
|
+
*
|
|
56
|
+
* // This is an example of a bulk action that shows some typical
|
|
57
|
+
* // uses of the provided props
|
|
58
|
+
* export const MyBulkAction: BulkActionComponent<any> = ({ selection, table }) => {
|
|
59
|
+
* const { refetchPaginatedList } = usePaginatedList();
|
|
60
|
+
*
|
|
61
|
+
* const doTheAction = async () => {
|
|
62
|
+
* // Actual logic of the action
|
|
63
|
+
* // goes here...
|
|
64
|
+
*
|
|
65
|
+
* // On success, we refresh the list
|
|
66
|
+
* refetchPaginatedList();
|
|
67
|
+
* // and un-select any selected rows in the table
|
|
68
|
+
* table.resetRowSelection();
|
|
69
|
+
* };
|
|
70
|
+
*
|
|
71
|
+
* return (
|
|
72
|
+
* <DataTableBulkActionItem
|
|
73
|
+
* onClick={doTheAction}
|
|
74
|
+
* label={<Trans>Delete</Trans>}
|
|
75
|
+
* confirmationText={<Trans>Are you sure?</Trans>}
|
|
76
|
+
* icon={Check}
|
|
77
|
+
* className="text-destructive"
|
|
78
|
+
* />
|
|
79
|
+
* );
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* For the common action of deletion, we provide a ready-made helper component:
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```tsx
|
|
87
|
+
* import { BulkActionComponent, DeleteProductsBulkAction } from '\@vendure/dashboard';
|
|
88
|
+
*
|
|
89
|
+
* // Define the BulkAction component. This one uses
|
|
90
|
+
* // a built-in wrapper for "delete" actions, which includes
|
|
91
|
+
* // a confirmation dialog.
|
|
92
|
+
* export const DeleteProductsBulkAction: BulkActionComponent<any> = ({ selection, table }) => {
|
|
93
|
+
* return (
|
|
94
|
+
* <DeleteBulkAction
|
|
95
|
+
* mutationDocument={deleteProductsDocument}
|
|
96
|
+
* entityName="products"
|
|
97
|
+
* requiredPermissions={['DeleteCatalog', 'DeleteProduct']}
|
|
98
|
+
* selection={selection}
|
|
99
|
+
* table={table}
|
|
100
|
+
* />
|
|
101
|
+
* );
|
|
102
|
+
* };
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @docsCategory list-views
|
|
106
|
+
* @docsPage bulk-actions
|
|
107
|
+
* @since 3.4.0
|
|
108
|
+
*/
|
|
109
|
+
export type BulkAction = {
|
|
110
|
+
/**
|
|
111
|
+
* @description
|
|
112
|
+
* Optional order number to control the position of this bulk action in the dropdown.
|
|
113
|
+
* A larger number will appear lower in the list.
|
|
114
|
+
*/
|
|
115
|
+
order?: number;
|
|
116
|
+
/**
|
|
117
|
+
* @description
|
|
118
|
+
* The React component that will be rendered as the bulk action item.
|
|
119
|
+
*/
|
|
120
|
+
component: BulkActionComponent<any>;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* @description
|
|
125
|
+
* This allows you to customize aspects of existing data tables in the dashboard.
|
|
126
|
+
*
|
|
127
|
+
* @docsCategory extensions-api
|
|
128
|
+
* @docsPage DataTables
|
|
129
|
+
* @since 3.4.0
|
|
130
|
+
*/
|
|
131
|
+
export interface DashboardDataTableExtensionDefinition {
|
|
132
|
+
/**
|
|
133
|
+
* @description
|
|
134
|
+
* The ID of the page where the data table is located, e.g. `'product-list'`, `'order-list'`.
|
|
135
|
+
*/
|
|
136
|
+
pageId: string;
|
|
137
|
+
/**
|
|
138
|
+
* @description
|
|
139
|
+
* The ID of the data table block. Defaults to `'list-table'`, which is the default blockId
|
|
140
|
+
* for the standard list pages. However, some other pages may use a different blockId,
|
|
141
|
+
* such as `'product-variants-table'` on the `'product-detail'` page.
|
|
142
|
+
*/
|
|
143
|
+
blockId?: string;
|
|
144
|
+
/**
|
|
145
|
+
* @description
|
|
146
|
+
* An array of additional bulk actions that will be available on the data table.
|
|
147
|
+
*/
|
|
148
|
+
bulkActions?: BulkAction[];
|
|
149
|
+
/**
|
|
150
|
+
* @description
|
|
151
|
+
* Allows you to extend the list document for the data table.
|
|
152
|
+
*/
|
|
153
|
+
extendListDocument?: string | DocumentNode | (() => DocumentNode | string);
|
|
154
|
+
/**
|
|
155
|
+
* @description
|
|
156
|
+
* Custom display components for specific columns in the data table.
|
|
157
|
+
*/
|
|
158
|
+
displayComponents?: DashboardDataTableDisplayComponent[];
|
|
159
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { DashboardFormComponent } from '@/vdb/framework/form-engine/form-engine-types.js';
|
|
2
|
+
import { DocumentNode } from 'graphql';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @description
|
|
6
|
+
* Allows you to define custom input components for specific fields in detail forms.
|
|
7
|
+
* The pageId is already defined in the detail form extension, so only the blockId and field are needed.
|
|
8
|
+
*
|
|
9
|
+
* @docsCategory extensions-api
|
|
10
|
+
* @docsPage DetailForms
|
|
11
|
+
* @since 3.4.0
|
|
12
|
+
*/
|
|
13
|
+
export interface DashboardDetailFormInputComponent {
|
|
14
|
+
/**
|
|
15
|
+
* @description
|
|
16
|
+
* The ID of the block where this input component should be used.
|
|
17
|
+
*/
|
|
18
|
+
blockId: string;
|
|
19
|
+
/**
|
|
20
|
+
* @description
|
|
21
|
+
* The name of the field where this input component should be used.
|
|
22
|
+
*/
|
|
23
|
+
field: string;
|
|
24
|
+
/**
|
|
25
|
+
* @description
|
|
26
|
+
* The React component that will be rendered as the input.
|
|
27
|
+
* It should accept `value`, `onChange`, and other standard input props.
|
|
28
|
+
*/
|
|
29
|
+
component: DashboardFormComponent;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @description
|
|
34
|
+
* Allows you to extend existing detail forms (e.g. on the product detail or customer detail pages)
|
|
35
|
+
* with custom GraphQL queries, input components, and display components.
|
|
36
|
+
*
|
|
37
|
+
* @since 3.4.0
|
|
38
|
+
* @docsPage DetailForms
|
|
39
|
+
* @docsCategory extensions-api
|
|
40
|
+
*/
|
|
41
|
+
export interface DashboardDetailFormExtensionDefinition {
|
|
42
|
+
/**
|
|
43
|
+
* @description
|
|
44
|
+
* The ID of the page where the detail form is located, e.g. `'product-detail'`, `'order-detail'`.
|
|
45
|
+
*/
|
|
46
|
+
pageId: string;
|
|
47
|
+
/**
|
|
48
|
+
* @description
|
|
49
|
+
* Extends the GraphQL query used to fetch data for the detail page, allowing you to add additional
|
|
50
|
+
* fields that can be used by custom input or display components.
|
|
51
|
+
*/
|
|
52
|
+
extendDetailDocument?: string | DocumentNode | (() => DocumentNode | string);
|
|
53
|
+
/**
|
|
54
|
+
* @description
|
|
55
|
+
* Custom input components for specific fields in the detail form.
|
|
56
|
+
*/
|
|
57
|
+
inputs?: DashboardDetailFormInputComponent[];
|
|
58
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { DashboardFormComponent } from '@/vdb/framework/form-engine/form-engine-types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* Allows you to define custom form components for custom fields in the dashboard.
|
|
6
|
+
*
|
|
7
|
+
* @docsCategory extensions-api
|
|
8
|
+
* @docsPage FormComponents
|
|
9
|
+
* @since 3.4.0
|
|
10
|
+
*/
|
|
11
|
+
export interface DashboardCustomFormComponent {
|
|
12
|
+
/**
|
|
13
|
+
* @description
|
|
14
|
+
* A unique identifier for the custom form component. It is a good practice to namespace
|
|
15
|
+
* these IDs to avoid naming collisions, for example `"my-plugin.markdown-editor"`.
|
|
16
|
+
*/
|
|
17
|
+
id: string;
|
|
18
|
+
/**
|
|
19
|
+
* @description
|
|
20
|
+
* The React component that will be rendered as the custom form input.
|
|
21
|
+
*/
|
|
22
|
+
component: DashboardFormComponent;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @description
|
|
27
|
+
* Interface for registering custom field components in the dashboard.
|
|
28
|
+
* For input and display components, use the co-located approach with detailForms.
|
|
29
|
+
*
|
|
30
|
+
* @docsCategory extensions-api
|
|
31
|
+
* @docsPage FormComponents
|
|
32
|
+
* @since 3.4.0
|
|
33
|
+
*/
|
|
34
|
+
export interface DashboardCustomFormComponents {
|
|
35
|
+
/**
|
|
36
|
+
* @description
|
|
37
|
+
* Custom form components for custom fields. These are used when rendering
|
|
38
|
+
* custom fields in forms.
|
|
39
|
+
*/
|
|
40
|
+
customFields?: DashboardCustomFormComponent[];
|
|
41
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { CustomerHistoryCustomerDetail } from '../../../../app/routes/_authenticated/_customers/components/customer-history/customer-history-types.js';
|
|
4
|
+
import { OrderHistoryOrderDetail } from '../../../../app/routes/_authenticated/_orders/components/order-history/order-history-types.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @description
|
|
8
|
+
* This object contains the information about the history entry.
|
|
9
|
+
*
|
|
10
|
+
* @docsCategory extensions-api
|
|
11
|
+
* @docsPage HistoryEntries
|
|
12
|
+
* @since 3.4.3
|
|
13
|
+
*/
|
|
14
|
+
export interface HistoryEntryItem {
|
|
15
|
+
id: string;
|
|
16
|
+
/**
|
|
17
|
+
* @description
|
|
18
|
+
* The `HistoryEntryType`, such as `ORDER_STATE_TRANSITION`.
|
|
19
|
+
*/
|
|
20
|
+
type: string;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
/**
|
|
23
|
+
* @description
|
|
24
|
+
* Whether this entry is visible to customers via the Shop API
|
|
25
|
+
*/
|
|
26
|
+
isPublic: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* @description
|
|
29
|
+
* If an Administrator created this entry, their details will
|
|
30
|
+
* be available here.
|
|
31
|
+
*/
|
|
32
|
+
administrator?: {
|
|
33
|
+
id: string;
|
|
34
|
+
firstName: string;
|
|
35
|
+
lastName: string;
|
|
36
|
+
} | null;
|
|
37
|
+
/**
|
|
38
|
+
* @description
|
|
39
|
+
* The entry payload data. This will be an object, which is different
|
|
40
|
+
* for each type of history entry.
|
|
41
|
+
*
|
|
42
|
+
* For example, the `CUSTOMER_ADDED_TO_GROUP` data looks like this:
|
|
43
|
+
* ```json
|
|
44
|
+
* {
|
|
45
|
+
* groupName: 'Some Group',
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* and the `ORDER_STATE_TRANSITION` data looks like this:
|
|
50
|
+
* ```json
|
|
51
|
+
* {
|
|
52
|
+
* from: 'ArrangingPayment',
|
|
53
|
+
* to: 'PaymentSettled',
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
data: any;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @description
|
|
62
|
+
* A definition of a custom component that will be used to render the given
|
|
63
|
+
* type of history entry.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```tsx
|
|
67
|
+
* import { defineDashboardExtension, HistoryEntry } from '\@vendure/dashboard';
|
|
68
|
+
* import { IdCard } from 'lucide-react';
|
|
69
|
+
*
|
|
70
|
+
* defineDashboardExtension({
|
|
71
|
+
* historyEntries: [
|
|
72
|
+
* {
|
|
73
|
+
* type: 'CUSTOMER_TAX_ID_APPROVAL',
|
|
74
|
+
* component: ({ entry, entity }) => {
|
|
75
|
+
* return (
|
|
76
|
+
* <HistoryEntry
|
|
77
|
+
* entry={entry}
|
|
78
|
+
* title={'Tax ID verified'}
|
|
79
|
+
* timelineIconClassName={'bg-success text-success-foreground'}
|
|
80
|
+
* timelineIcon={<IdCard />}
|
|
81
|
+
* >
|
|
82
|
+
* <div className="text-xs">Approval reference: {entry.data.ref}</div>
|
|
83
|
+
* </HistoryEntry>
|
|
84
|
+
* );
|
|
85
|
+
* },
|
|
86
|
+
* },
|
|
87
|
+
* ],
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @docsCategory extensions-api
|
|
92
|
+
* @docsPage HistoryEntries
|
|
93
|
+
* @since 3.4.3
|
|
94
|
+
* @docsWeight 0
|
|
95
|
+
*/
|
|
96
|
+
export interface DashboardHistoryEntryComponent {
|
|
97
|
+
/**
|
|
98
|
+
* @description
|
|
99
|
+
* The `type` should correspond to a valid `HistoryEntryType`, such as
|
|
100
|
+
*
|
|
101
|
+
* - `CUSTOMER_REGISTERED`
|
|
102
|
+
* - `ORDER_STATE_TRANSITION`
|
|
103
|
+
* - some custom type - see the {@link HistoryService} docs for a guide on
|
|
104
|
+
* how to define custom history entry types.
|
|
105
|
+
*/
|
|
106
|
+
type: string;
|
|
107
|
+
/**
|
|
108
|
+
* @description
|
|
109
|
+
* The component which is used to render the timeline entry. It should use the
|
|
110
|
+
* {@link HistoryEntry} component and pass the appropriate props to configure
|
|
111
|
+
* how it will be displayed.
|
|
112
|
+
*
|
|
113
|
+
* The `entity` prop will be a subset of the Order object for Order history entries,
|
|
114
|
+
* or a subset of the Customer object for customer history entries.
|
|
115
|
+
*/
|
|
116
|
+
component: React.ComponentType<{
|
|
117
|
+
entry: HistoryEntryItem;
|
|
118
|
+
entity: OrderHistoryOrderDetail | CustomerHistoryCustomerDetail;
|
|
119
|
+
}>;
|
|
120
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Re-export all domain-specific types
|
|
2
|
+
export * from './alerts.js';
|
|
3
|
+
export * from './data-table.js';
|
|
4
|
+
export * from './detail-forms.js';
|
|
5
|
+
export * from './form-components.js';
|
|
6
|
+
export * from './history-entries.js';
|
|
7
|
+
export * from './layout.js';
|
|
8
|
+
export * from './login.js';
|
|
9
|
+
export * from './navigation.js';
|
|
10
|
+
export * from './widgets.js';
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
|
|
3
|
+
import { PageContextValue } from '../../layout-engine/page-provider.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @description
|
|
7
|
+
* Allows you to define custom action bar items for any page in the dashboard, which is the
|
|
8
|
+
* top bar that normally contains the main call-to-action buttons such as "update" or "create".
|
|
9
|
+
*
|
|
10
|
+
* This API also allows you to specify dropdown menu items, which when defined, will appear in
|
|
11
|
+
* a context menu to the very right of the ActionBar.
|
|
12
|
+
*
|
|
13
|
+
* @docsCategory extensions-api
|
|
14
|
+
* @docsPage ActionBar
|
|
15
|
+
* @since 3.3.0
|
|
16
|
+
*/
|
|
17
|
+
export interface DashboardActionBarItem {
|
|
18
|
+
/**
|
|
19
|
+
* @description
|
|
20
|
+
* The ID of the page where the action bar item should be displayed.
|
|
21
|
+
*/
|
|
22
|
+
pageId: string;
|
|
23
|
+
/**
|
|
24
|
+
* @description
|
|
25
|
+
* A React component that will be rendered in the action bar. Typically, you would use
|
|
26
|
+
* the default Shadcn `<Button>` component.
|
|
27
|
+
*/
|
|
28
|
+
component: React.FunctionComponent<{ context: PageContextValue }>;
|
|
29
|
+
/**
|
|
30
|
+
* @description
|
|
31
|
+
* The type of action bar item to display. Defaults to `button`.
|
|
32
|
+
* The 'dropdown' type is used to display the action bar item as a dropdown menu item.
|
|
33
|
+
*
|
|
34
|
+
* When using the dropdown type, use a suitable [dropdown item](https://ui.shadcn.com/docs/components/dropdown-menu)
|
|
35
|
+
* component, such as:
|
|
36
|
+
*
|
|
37
|
+
* ```tsx
|
|
38
|
+
* import { DropdownMenuItem } from '\@vendure/dashboard';
|
|
39
|
+
*
|
|
40
|
+
* // ...
|
|
41
|
+
*
|
|
42
|
+
* {
|
|
43
|
+
* component: () => <DropdownMenuItem>My Item</DropdownMenuItem>
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @default 'button'
|
|
48
|
+
*/
|
|
49
|
+
type?: 'button' | 'dropdown';
|
|
50
|
+
/**
|
|
51
|
+
* @description
|
|
52
|
+
* Any permissions that are required to display this action bar item.
|
|
53
|
+
*/
|
|
54
|
+
requiresPermission?: string | string[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @description
|
|
59
|
+
* The relative position of a PageBlock. This is determined by finding an existing
|
|
60
|
+
* block, and then specifying whether your custom block should come before, after,
|
|
61
|
+
* or completely replace that block.
|
|
62
|
+
*
|
|
63
|
+
* @docsCategory extensions-api
|
|
64
|
+
* @docsPage page-blocks
|
|
65
|
+
* @since 3.3.0
|
|
66
|
+
*/
|
|
67
|
+
export type PageBlockPosition = { blockId: string; order: 'before' | 'after' | 'replace' };
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @description
|
|
71
|
+
* The location of a page block in the dashboard. The location can be found by turning on
|
|
72
|
+
* "developer mode" in the dashboard user menu (bottom left corner) and then
|
|
73
|
+
* clicking the `< />` icon when hovering over a page block.
|
|
74
|
+
*
|
|
75
|
+
* @docsCategory extensions-api
|
|
76
|
+
* @docsPage page-blocks
|
|
77
|
+
* @since 3.3.0
|
|
78
|
+
*/
|
|
79
|
+
export type PageBlockLocation = {
|
|
80
|
+
pageId: string;
|
|
81
|
+
position: PageBlockPosition;
|
|
82
|
+
column: 'main' | 'side' | 'full';
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @description
|
|
87
|
+
* This allows you to insert a custom component into a specific location
|
|
88
|
+
* on any page in the dashboard.
|
|
89
|
+
*
|
|
90
|
+
* @docsCategory extensions-api
|
|
91
|
+
* @docsPage page-blocks
|
|
92
|
+
* @docsWeight 0
|
|
93
|
+
* @since 3.3.0
|
|
94
|
+
*/
|
|
95
|
+
export interface DashboardPageBlockDefinition {
|
|
96
|
+
/**
|
|
97
|
+
* @description
|
|
98
|
+
* An ID for the page block. Should be unique at least
|
|
99
|
+
* to the page in which it appears.
|
|
100
|
+
*/
|
|
101
|
+
id: string;
|
|
102
|
+
/**
|
|
103
|
+
* @description
|
|
104
|
+
* An optional title for the page block
|
|
105
|
+
*/
|
|
106
|
+
title?: React.ReactNode;
|
|
107
|
+
/**
|
|
108
|
+
* @description
|
|
109
|
+
* The location of the page block. It specifies the pageId, and then the
|
|
110
|
+
* relative location compared to another existing block.
|
|
111
|
+
*/
|
|
112
|
+
location: PageBlockLocation;
|
|
113
|
+
/**
|
|
114
|
+
* @description
|
|
115
|
+
* The component to be rendered inside the page block.
|
|
116
|
+
*/
|
|
117
|
+
component?: React.FunctionComponent<{ context: PageContextValue }>;
|
|
118
|
+
/**
|
|
119
|
+
* @description
|
|
120
|
+
* Control whether to render the page block depending on your custom
|
|
121
|
+
* logic.
|
|
122
|
+
*
|
|
123
|
+
* This can also be used to disable any built-in blocks you
|
|
124
|
+
* do not need to display.
|
|
125
|
+
*
|
|
126
|
+
* If you need to query aspects about the current context not immediately
|
|
127
|
+
* provided in the `PageContextValue`, you can also use hooks such as
|
|
128
|
+
* `useChannel` in this function.
|
|
129
|
+
*
|
|
130
|
+
* @since 3.5.0
|
|
131
|
+
*/
|
|
132
|
+
shouldRender?: (context: PageContextValue) => boolean;
|
|
133
|
+
/**
|
|
134
|
+
* @description
|
|
135
|
+
* If provided, the logged-in user must have one or more of the specified
|
|
136
|
+
* permissions in order for the block to render.
|
|
137
|
+
*
|
|
138
|
+
* For more advanced control over rendering, use the `shouldRender` function.
|
|
139
|
+
*/
|
|
140
|
+
requiresPermission?: string | string[];
|
|
141
|
+
}
|