@vendure/dashboard 3.4.0-minor-202506250934 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -3
- package/dist/plugin/api/api-extensions.d.ts +1 -0
- package/dist/plugin/api/api-extensions.js +38 -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 +4 -3
- package/dist/plugin/constants.js +10 -277
- package/dist/plugin/dashboard.plugin.d.ts +95 -0
- package/dist/plugin/dashboard.plugin.js +168 -0
- package/dist/plugin/index.d.ts +2 -1
- package/dist/plugin/index.js +18 -1
- package/dist/plugin/package.json +3 -0
- package/dist/plugin/service/metrics.service.d.ts +15 -0
- package/dist/plugin/service/metrics.service.js +145 -0
- package/dist/plugin/types.d.ts +23 -0
- package/dist/plugin/types.js +13 -0
- package/dist/vite/constants.d.ts +5 -0
- package/dist/vite/constants.js +277 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.js +1 -0
- package/dist/vite/types.d.ts +40 -0
- package/dist/{plugin → vite}/utils/ast-utils.d.ts +0 -5
- 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 +22 -0
- package/dist/vite/utils/compiler.js +162 -0
- package/dist/vite/utils/config-loader.d.ts +1 -0
- package/dist/vite/utils/config-loader.js +1 -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 +387 -0
- package/dist/vite/utils/tsconfig-utils.d.ts +9 -0
- package/dist/vite/utils/tsconfig-utils.js +50 -0
- package/dist/vite/utils/ui-config.d.ts +3 -0
- package/dist/vite/utils/ui-config.js +30 -0
- package/dist/{plugin → vite}/vite-plugin-config-loader.d.ts +3 -3
- package/dist/{plugin → vite}/vite-plugin-config-loader.js +18 -13
- package/dist/{plugin → vite}/vite-plugin-config.js +6 -7
- package/dist/{plugin → vite}/vite-plugin-dashboard-metadata.d.ts +1 -3
- package/dist/{plugin → vite}/vite-plugin-dashboard-metadata.js +20 -10
- package/dist/vite/vite-plugin-tailwind-source.d.ts +7 -0
- package/dist/vite/vite-plugin-tailwind-source.js +61 -0
- package/dist/vite/vite-plugin-theme.js +130 -0
- package/dist/vite/vite-plugin-ui-config.d.ts +123 -0
- package/dist/{plugin → vite}/vite-plugin-ui-config.js +3 -11
- package/dist/vite/vite-plugin-vendure-dashboard.d.ts +85 -0
- package/dist/{plugin → vite}/vite-plugin-vendure-dashboard.js +10 -7
- package/index.html +1 -1
- package/package.json +56 -31
- package/src/app/app-providers.tsx +7 -7
- package/src/app/common/delete-bulk-action.tsx +148 -0
- package/src/app/common/duplicate-bulk-action.tsx +134 -0
- package/src/app/main.tsx +9 -9
- package/src/app/routes/__root.tsx +1 -2
- package/src/app/routes/_authenticated/_administrators/administrators.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_administrators/administrators.tsx +15 -8
- package/src/app/routes/_authenticated/_administrators/administrators_.$id.tsx +16 -12
- package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +16 -16
- package/src/app/routes/_authenticated/_assets/assets.graphql.ts +13 -2
- package/src/app/routes/_authenticated/_assets/assets.tsx +16 -4
- package/src/app/routes/_authenticated/_assets/assets_.$id.tsx +52 -38
- package/src/app/routes/_authenticated/_assets/components/asset-bulk-actions.tsx +45 -0
- package/src/app/routes/_authenticated/_channels/channels.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_channels/channels.tsx +17 -10
- package/src/app/routes/_authenticated/_channels/channels_.$id.tsx +21 -17
- package/src/app/routes/_authenticated/_channels/components/channel-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_collections/collections.graphql.ts +60 -3
- package/src/app/routes/_authenticated/_collections/collections.tsx +168 -124
- package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +21 -17
- package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +123 -0
- package/src/app/routes/_authenticated/_collections/components/collection-contents-preview-table.tsx +8 -9
- package/src/app/routes/_authenticated/_collections/components/collection-contents-sheet.tsx +9 -5
- package/src/app/routes/_authenticated/_collections/components/collection-contents-table.tsx +10 -9
- package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx +12 -79
- package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +430 -0
- package/src/app/routes/_authenticated/_collections/components/move-single-collection.tsx +33 -0
- package/src/app/routes/_authenticated/_countries/components/country-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_countries/countries.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_countries/countries.tsx +13 -6
- package/src/app/routes/_authenticated/_countries/countries_.$id.tsx +21 -17
- 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 +12 -5
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-table.tsx +22 -17
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_customer-groups/customer-groups.tsx +13 -6
- package/src/app/routes/_authenticated/_customer-groups/customer-groups_.$id.tsx +18 -15
- package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +19 -19
- package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +10 -10
- package/src/app/routes/_authenticated/_customers/components/customer-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +5 -5
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history.tsx +11 -7
- package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +4 -4
- package/src/app/routes/_authenticated/_customers/components/customer-order-table.tsx +75 -73
- package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +4 -4
- package/src/app/routes/_authenticated/_customers/customers.graphql.ts +10 -2
- package/src/app/routes/_authenticated/_customers/customers.tsx +13 -6
- package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +19 -15
- package/src/app/routes/_authenticated/_facets/components/edit-facet-value.tsx +9 -9
- package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +104 -0
- package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +4 -4
- package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +76 -65
- package/src/app/routes/_authenticated/_facets/facets.graphql.ts +80 -1
- package/src/app/routes/_authenticated/_facets/facets.tsx +31 -7
- package/src/app/routes/_authenticated/_facets/facets_.$facetId.values_.$id.tsx +147 -0
- package/src/app/routes/_authenticated/_facets/facets_.$id.tsx +17 -13
- package/src/app/routes/_authenticated/_global-settings/global-settings.graphql.ts +1 -1
- package/src/app/routes/_authenticated/_global-settings/global-settings.tsx +26 -18
- package/src/app/routes/_authenticated/_orders/components/add-manual-payment-dialog.tsx +191 -0
- package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +11 -15
- package/src/app/routes/_authenticated/_orders/components/edit-order-table.tsx +111 -80
- package/src/app/routes/_authenticated/_orders/components/fulfill-order-dialog.tsx +320 -0
- package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +153 -0
- package/src/app/routes/_authenticated/_orders/components/money-gross-net.tsx +11 -9
- package/src/app/routes/_authenticated/_orders/components/order-address.tsx +19 -13
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +67 -62
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +391 -39
- package/src/app/routes/_authenticated/_orders/components/order-history/use-order-history.ts +9 -5
- package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +28 -13
- package/src/app/routes/_authenticated/_orders/components/order-modification-preview-dialog.tsx +364 -0
- package/src/app/routes/_authenticated/_orders/components/order-modification-summary.tsx +222 -0
- package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +39 -22
- package/src/app/routes/_authenticated/_orders/components/order-table.tsx +148 -87
- package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +37 -36
- package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +274 -48
- package/src/app/routes/_authenticated/_orders/components/settle-refund-dialog.tsx +80 -0
- package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +43 -44
- package/src/app/routes/_authenticated/_orders/components/state-transition-control.tsx +102 -0
- package/src/app/routes/_authenticated/_orders/components/use-transition-order-to-state.tsx +144 -0
- package/src/app/routes/_authenticated/_orders/orders.graphql.ts +219 -5
- package/src/app/routes/_authenticated/_orders/orders.tsx +23 -22
- package/src/app/routes/_authenticated/_orders/orders_.$id.tsx +190 -42
- package/src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx +550 -0
- package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +187 -107
- package/src/app/routes/_authenticated/_orders/utils/order-types.ts +10 -0
- package/src/app/routes/_authenticated/_orders/utils/order-utils.ts +78 -0
- package/src/app/routes/_authenticated/_payment-methods/components/payment-eligibility-checker-selector.tsx +12 -79
- package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +12 -79
- 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 +29 -2
- package/src/app/routes/_authenticated/_payment-methods/payment-methods.tsx +36 -14
- package/src/app/routes/_authenticated/_payment-methods/payment-methods_.$id.tsx +22 -15
- 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 +7 -6
- package/src/app/routes/_authenticated/_product-variants/product-variants.graphql.ts +64 -3
- package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +39 -9
- package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +33 -22
- package/src/app/routes/_authenticated/_products/components/add-product-variant-dialog.tsx +10 -10
- package/src/app/routes/_authenticated/_products/components/assign-facet-values-dialog.tsx +281 -0
- package/src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx +57 -41
- package/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx +11 -11
- package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +18 -14
- package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +23 -17
- package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +123 -0
- package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +28 -34
- package/src/app/routes/_authenticated/_products/components/product-variants-table.tsx +84 -53
- package/src/app/routes/_authenticated/_products/products.graphql.ts +70 -2
- package/src/app/routes/_authenticated/_products/products.tsx +36 -7
- package/src/app/routes/_authenticated/_products/products_.$id.tsx +34 -26
- package/src/app/routes/_authenticated/_profile/profile.graphql.ts +1 -1
- package/src/app/routes/_authenticated/_profile/profile.tsx +8 -8
- package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +14 -86
- package/src/app/routes/_authenticated/_promotions/components/promotion-bulk-actions.tsx +82 -0
- package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx +14 -86
- package/src/app/routes/_authenticated/_promotions/promotions.graphql.ts +27 -2
- package/src/app/routes/_authenticated/_promotions/promotions.tsx +31 -7
- package/src/app/routes/_authenticated/_promotions/promotions_.$id.tsx +20 -16
- package/src/app/routes/_authenticated/_roles/components/expandable-permissions.tsx +5 -5
- package/src/app/routes/_authenticated/_roles/components/permissions-grid.tsx +21 -17
- package/src/app/routes/_authenticated/_roles/components/role-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_roles/roles.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_roles/roles.tsx +17 -10
- package/src/app/routes/_authenticated/_roles/roles_.$id.tsx +16 -12
- package/src/app/routes/_authenticated/_sellers/components/seller-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_sellers/sellers.graphql.ts +10 -1
- package/src/app/routes/_authenticated/_sellers/sellers.tsx +13 -6
- package/src/app/routes/_authenticated/_sellers/sellers_.$id.tsx +17 -13
- package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx +6 -6
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx +12 -80
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-eligibility-checker-selector.tsx +15 -80
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx +61 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-method-dialog.tsx +3 -3
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.graphql.ts +29 -2
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.tsx +25 -6
- package/src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx +25 -19
- 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 +26 -1
- package/src/app/routes/_authenticated/_stock-locations/stock-locations.tsx +25 -6
- package/src/app/routes/_authenticated/_stock-locations/stock-locations_.$id.tsx +16 -12
- package/src/app/routes/_authenticated/_system/components/payload-dialog.tsx +5 -5
- package/src/app/routes/_authenticated/_system/healthchecks.tsx +5 -5
- package/src/app/routes/_authenticated/_system/job-queue.graphql.ts +12 -1
- package/src/app/routes/_authenticated/_system/job-queue.tsx +110 -11
- package/src/app/routes/_authenticated/_system/scheduled-tasks.tsx +34 -28
- 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 +11 -2
- package/src/app/routes/_authenticated/_tax-categories/tax-categories.tsx +14 -7
- package/src/app/routes/_authenticated/_tax-categories/tax-categories_.$id.tsx +20 -16
- 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 +11 -2
- package/src/app/routes/_authenticated/_tax-rates/tax-rates.tsx +15 -8
- package/src/app/routes/_authenticated/_tax-rates/tax-rates_.$id.tsx +22 -18
- package/src/app/routes/_authenticated/_zones/components/zone-bulk-actions.tsx +15 -0
- package/src/app/routes/_authenticated/_zones/components/zone-countries-sheet.tsx +4 -4
- package/src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx +12 -15
- package/src/app/routes/_authenticated/_zones/zones.graphql.ts +11 -2
- package/src/app/routes/_authenticated/_zones/zones.tsx +13 -6
- package/src/app/routes/_authenticated/_zones/zones_.$id.tsx +18 -14
- package/src/app/routes/_authenticated/index.tsx +6 -6
- package/src/app/routes/_authenticated.tsx +4 -4
- package/src/app/routes/login.tsx +2 -2
- package/src/app/styles.css +5 -2
- package/src/lib/components/data-display/boolean.tsx +1 -1
- package/src/lib/components/data-display/date-time.tsx +9 -3
- package/src/lib/components/data-display/json.tsx +1 -1
- package/src/lib/components/data-display/money.tsx +2 -3
- package/src/lib/components/data-input/affixed-input.tsx +3 -8
- package/src/lib/components/data-input/combination-mode-input.tsx +52 -0
- package/src/lib/components/data-input/configurable-operation-list-input.tsx +433 -0
- package/src/lib/components/data-input/custom-field-list-input.tsx +297 -0
- package/src/lib/components/data-input/customer-group-input.tsx +2 -2
- package/src/lib/components/data-input/datetime-input.tsx +132 -146
- package/src/lib/components/data-input/default-relation-input.tsx +599 -0
- package/src/lib/components/data-input/facet-value-input.tsx +30 -22
- package/src/lib/components/data-input/index.ts +17 -0
- package/src/lib/components/data-input/money-input.tsx +5 -12
- package/src/lib/components/data-input/product-multi-selector.tsx +426 -0
- package/src/lib/components/data-input/relation-input.tsx +164 -0
- package/src/lib/components/data-input/relation-selector.tsx +476 -0
- package/src/lib/components/data-input/{richt-text-input.tsx → rich-text-input.tsx} +15 -9
- package/src/lib/components/data-input/select-with-options.tsx +84 -0
- package/src/lib/components/data-input/struct-form-input.tsx +324 -0
- package/src/lib/components/data-table/add-filter-menu.tsx +9 -18
- package/src/lib/components/data-table/data-table-bulk-action-item.tsx +101 -0
- package/src/lib/components/data-table/data-table-bulk-actions.tsx +108 -0
- package/src/lib/components/data-table/data-table-column-header.tsx +4 -22
- package/src/lib/components/data-table/data-table-faceted-filter.tsx +8 -8
- package/src/lib/components/data-table/data-table-filter-badge.tsx +16 -8
- package/src/lib/components/data-table/data-table-filter-dialog.tsx +8 -8
- package/src/lib/components/data-table/data-table-pagination.tsx +4 -4
- package/src/lib/components/data-table/data-table-utils.ts +34 -0
- package/src/lib/components/data-table/data-table-view-options.tsx +27 -23
- package/src/lib/components/data-table/data-table.tsx +90 -43
- package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +11 -8
- package/src/lib/components/data-table/filters/data-table-datetime-filter.tsx +14 -23
- package/src/lib/components/data-table/filters/data-table-id-filter.tsx +15 -10
- package/src/lib/components/data-table/filters/data-table-number-filter.tsx +18 -17
- package/src/lib/components/data-table/filters/data-table-string-filter.tsx +29 -12
- package/src/lib/components/data-table/human-readable-operator.tsx +3 -3
- package/src/lib/components/data-table/refresh-button.tsx +30 -15
- package/src/lib/components/data-table/use-generated-columns.tsx +322 -0
- package/src/lib/components/labeled-data.tsx +21 -0
- package/src/lib/components/layout/app-layout.tsx +8 -13
- package/src/lib/components/layout/app-sidebar.tsx +5 -5
- package/src/lib/components/layout/channel-switcher.tsx +171 -62
- package/src/lib/components/layout/content-language-selector.tsx +16 -10
- package/src/lib/components/layout/dev-mode-indicator.tsx +18 -0
- package/src/lib/components/layout/generated-breadcrumbs.tsx +1 -1
- package/src/lib/components/layout/language-dialog.tsx +7 -12
- package/src/lib/components/layout/manage-languages-dialog.tsx +405 -0
- package/src/lib/components/layout/nav-item-wrapper.tsx +107 -0
- package/src/lib/components/layout/nav-main.tsx +200 -111
- package/src/lib/components/layout/nav-projects.tsx +2 -2
- package/src/lib/components/layout/nav-user.tsx +7 -7
- package/src/lib/components/layout/prerelease-popup.tsx +1 -1
- package/src/lib/components/login/login-form.tsx +85 -50
- package/src/lib/components/shared/alerts.tsx +3 -3
- package/src/lib/components/shared/animated-number.tsx +2 -2
- package/src/lib/components/shared/asset/asset-bulk-actions.tsx +109 -0
- package/src/lib/components/shared/asset/asset-focal-point-editor.tsx +29 -19
- package/src/lib/components/shared/asset/asset-gallery.tsx +25 -20
- package/src/lib/components/shared/asset/asset-picker-dialog.tsx +63 -66
- package/src/lib/components/shared/asset/asset-preview-dialog.tsx +3 -7
- package/src/lib/components/shared/asset/asset-preview-selector.tsx +4 -6
- package/src/lib/components/shared/asset/asset-preview.tsx +7 -21
- package/src/lib/components/shared/asset/asset-properties.tsx +7 -9
- package/src/lib/components/shared/asset/focal-point-control.tsx +5 -13
- package/src/lib/components/shared/assign-to-channel-bulk-action.tsx +71 -0
- package/src/lib/components/shared/assign-to-channel-dialog.tsx +155 -0
- package/src/lib/components/shared/assigned-facet-values.tsx +1 -5
- package/src/lib/components/shared/channel-code-label.tsx +3 -4
- package/src/lib/components/shared/channel-selector.tsx +6 -6
- package/src/lib/components/shared/configurable-operation-arg-input.tsx +367 -23
- package/src/lib/components/shared/configurable-operation-input.tsx +87 -48
- package/src/lib/components/shared/configurable-operation-multi-selector.tsx +260 -0
- package/src/lib/components/shared/configurable-operation-selector.tsx +156 -0
- package/src/lib/components/shared/confirmation-dialog.tsx +2 -2
- package/src/lib/components/shared/copyable-text.tsx +3 -4
- package/src/lib/components/shared/country-selector.tsx +21 -18
- package/src/lib/components/shared/currency-selector.tsx +5 -5
- package/src/lib/components/shared/custom-fields-form.tsx +423 -50
- package/src/lib/components/shared/customer-address-form.tsx +18 -13
- package/src/lib/components/shared/customer-group-selector.tsx +6 -6
- package/src/lib/components/shared/customer-selector.tsx +24 -18
- package/src/lib/components/shared/detail-page-button.tsx +45 -1
- package/src/lib/components/shared/entity-assets.tsx +33 -34
- package/src/lib/components/shared/error-page.tsx +6 -6
- package/src/lib/components/shared/facet-value-chip.tsx +12 -5
- package/src/lib/components/shared/facet-value-selector.tsx +64 -63
- package/src/lib/components/shared/form-field-wrapper.tsx +47 -24
- package/src/lib/components/shared/history-timeline/history-entry-date.tsx +37 -0
- package/src/lib/components/shared/history-timeline/history-entry.tsx +146 -70
- package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +3 -3
- package/src/lib/components/shared/history-timeline/history-note-editor.tsx +4 -4
- package/src/lib/components/shared/history-timeline/history-note-input.tsx +7 -7
- package/src/lib/components/shared/history-timeline/history-timeline.tsx +8 -48
- package/src/lib/components/shared/language-selector.tsx +5 -5
- package/src/lib/components/shared/logo-mark.tsx +2 -2
- package/src/lib/components/shared/multi-select.tsx +6 -6
- package/src/lib/components/shared/navigation-confirmation.tsx +24 -9
- package/src/lib/components/shared/option-value-input.tsx +18 -16
- package/src/lib/components/shared/paginated-list-data-table.tsx +35 -230
- package/src/lib/components/shared/permission-guard.tsx +4 -4
- package/src/lib/components/shared/product-variant-selector.tsx +59 -34
- package/src/lib/components/shared/remove-from-channel-bulk-action.tsx +90 -0
- package/src/lib/components/shared/role-code-label.tsx +10 -6
- package/src/lib/components/shared/role-selector.tsx +4 -4
- package/src/lib/components/shared/seller-selector.tsx +21 -17
- package/src/lib/components/shared/stock-level-label.tsx +5 -5
- package/src/lib/components/shared/tax-category-selector.tsx +5 -5
- package/src/lib/components/shared/translatable-form-field.tsx +46 -23
- package/src/lib/components/shared/vendure-image.tsx +31 -2
- package/src/lib/components/shared/zone-selector.tsx +5 -6
- package/src/lib/components/ui/accordion.tsx +3 -3
- package/src/lib/components/ui/alert-dialog.tsx +10 -10
- package/src/lib/components/ui/alert.tsx +3 -3
- package/src/lib/components/ui/aspect-ratio.tsx +9 -0
- package/src/lib/components/ui/badge.tsx +2 -2
- package/src/lib/components/ui/breadcrumb.tsx +4 -4
- package/src/lib/components/ui/button.tsx +10 -3
- package/src/lib/components/ui/calendar.tsx +392 -459
- package/src/lib/components/ui/card.tsx +2 -2
- package/src/lib/components/ui/carousel.tsx +241 -0
- package/src/lib/components/ui/chart.tsx +351 -0
- package/src/lib/components/ui/checkbox.tsx +2 -2
- package/src/lib/components/ui/command.tsx +12 -6
- package/src/lib/components/ui/context-menu.tsx +252 -0
- package/src/lib/components/ui/dialog.tsx +2 -2
- package/src/lib/components/ui/drawer.tsx +133 -0
- package/src/lib/components/ui/dropdown-menu.tsx +7 -7
- package/src/lib/components/ui/form.tsx +8 -8
- package/src/lib/components/ui/hover-card.tsx +3 -3
- package/src/lib/components/ui/input-otp.tsx +77 -0
- package/src/lib/components/ui/input.tsx +1 -1
- package/src/lib/components/ui/label.tsx +2 -2
- package/src/lib/components/ui/menubar.tsx +274 -0
- package/src/lib/components/ui/navigation-menu.tsx +168 -0
- package/src/lib/components/ui/pagination.tsx +87 -108
- package/src/lib/components/ui/popover.tsx +3 -3
- package/src/lib/components/ui/progress.tsx +29 -0
- package/src/lib/components/ui/radio-group.tsx +45 -0
- package/src/lib/components/ui/resizable.tsx +54 -0
- package/src/lib/components/ui/scroll-area.tsx +2 -2
- package/src/lib/components/ui/select.tsx +151 -129
- package/src/lib/components/ui/separator.tsx +2 -2
- package/src/lib/components/ui/sheet.tsx +5 -5
- package/src/lib/components/ui/sidebar.tsx +10 -10
- package/src/lib/components/ui/skeleton.tsx +1 -1
- package/src/lib/components/ui/slider.tsx +63 -0
- package/src/lib/components/ui/switch.tsx +2 -2
- package/src/lib/components/ui/table.tsx +2 -2
- package/src/lib/components/ui/tabs.tsx +3 -3
- package/src/lib/components/ui/textarea.tsx +1 -1
- package/src/lib/components/ui/toggle-group.tsx +73 -0
- package/src/lib/components/ui/toggle.tsx +45 -0
- package/src/lib/components/ui/tooltip.tsx +3 -3
- package/src/lib/framework/alert/alert-extensions.tsx +2 -3
- package/src/lib/framework/alert/alert-item.tsx +5 -3
- package/src/lib/framework/component-registry/component-registry.tsx +33 -47
- package/src/lib/framework/component-registry/dynamic-component.tsx +3 -3
- package/src/lib/framework/dashboard-widget/base-widget.tsx +5 -13
- package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +8 -8
- package/src/lib/framework/dashboard-widget/latest-orders-widget/latest-orders-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +7 -8
- package/src/lib/framework/dashboard-widget/metrics-widget/metrics-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/orders-summary/index.tsx +7 -8
- package/src/lib/framework/dashboard-widget/orders-summary/order-summary-widget.graphql.ts +1 -1
- package/src/lib/framework/dashboard-widget/widget-extensions.tsx +1 -1
- package/src/lib/framework/data-table/data-table-extensions.ts +35 -0
- package/src/lib/framework/defaults.ts +5 -11
- 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.ts +50 -2
- package/src/lib/framework/document-introspection/get-document-structure.spec.ts +321 -2
- package/src/lib/framework/document-introspection/get-document-structure.ts +187 -36
- package/src/lib/framework/document-introspection/hooks.ts +4 -1
- package/src/lib/framework/extension-api/define-dashboard-extension.ts +35 -49
- package/src/lib/framework/extension-api/display-component-extensions.tsx +69 -0
- package/src/lib/framework/extension-api/extension-api-types.ts +34 -98
- package/src/lib/framework/extension-api/input-component-extensions.tsx +73 -0
- package/src/lib/framework/extension-api/logic/alerts.ts +10 -0
- package/src/lib/framework/extension-api/logic/data-table.ts +60 -0
- package/src/lib/framework/extension-api/logic/detail-forms.ts +48 -0
- package/src/lib/framework/extension-api/logic/form-components.ts +13 -0
- package/src/lib/framework/extension-api/logic/index.ts +9 -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 +38 -0
- package/src/lib/framework/extension-api/logic/widgets.ts +10 -0
- package/src/lib/framework/extension-api/types/alerts.ts +54 -0
- package/src/lib/framework/extension-api/types/data-table.ts +96 -0
- package/src/lib/framework/extension-api/types/detail-forms.ts +94 -0
- package/src/lib/framework/extension-api/types/form-components.ts +43 -0
- package/src/lib/framework/extension-api/types/index.ts +9 -0
- package/src/lib/framework/extension-api/types/layout.ts +90 -0
- package/src/lib/framework/extension-api/types/login.ts +96 -0
- package/src/lib/framework/extension-api/types/navigation.ts +76 -0
- package/src/lib/framework/extension-api/types/widgets.ts +93 -0
- package/src/lib/framework/extension-api/use-dashboard-extensions.ts +2 -1
- package/src/lib/framework/extension-api/use-login-extensions.ts +26 -0
- package/src/lib/framework/form-engine/custom-form-component-extensions.ts +38 -0
- package/src/lib/framework/form-engine/custom-form-component.tsx +33 -0
- package/src/lib/framework/form-engine/form-schema-tools.spec.ts +472 -0
- package/src/lib/framework/form-engine/form-schema-tools.ts +341 -6
- package/src/lib/framework/form-engine/overridden-form-component.tsx +51 -0
- package/src/lib/framework/form-engine/use-generated-form.tsx +82 -24
- package/src/lib/framework/form-engine/utils.spec.ts +37 -0
- package/src/lib/framework/form-engine/utils.ts +99 -0
- package/src/lib/framework/layout-engine/dev-mode-button.tsx +24 -0
- package/src/lib/framework/layout-engine/layout-extensions.ts +1 -4
- package/src/lib/framework/layout-engine/location-wrapper.tsx +98 -72
- package/src/lib/framework/layout-engine/page-block-provider.tsx +6 -0
- package/src/lib/framework/layout-engine/page-layout.tsx +135 -58
- package/src/lib/framework/page/detail-page-route-loader.tsx +26 -7
- package/src/lib/framework/page/detail-page.tsx +94 -37
- package/src/lib/framework/page/list-page.tsx +18 -11
- package/src/lib/framework/page/use-detail-page.ts +47 -13
- package/src/lib/framework/page/use-extended-router.tsx +4 -5
- package/src/lib/framework/registry/global-registry.ts +4 -0
- package/src/lib/framework/registry/registry-types.ts +17 -5
- package/src/lib/graphql/api.ts +25 -3
- package/src/lib/graphql/common-operations.ts +18 -0
- package/src/lib/graphql/{fragments.tsx → fragments.ts} +1 -2
- package/src/lib/graphql/graphql-env.d.ts +27 -24
- package/src/lib/graphql/settings-store-operations.ts +17 -0
- package/src/lib/hooks/use-auth.tsx +1 -1
- package/src/lib/hooks/use-channel.ts +1 -1
- package/src/lib/hooks/use-extended-detail-query.ts +37 -0
- package/src/lib/hooks/use-extended-list-query.ts +75 -0
- package/src/lib/hooks/use-floating-bulk-actions.ts +82 -0
- package/src/lib/hooks/use-grouped-permissions.ts +3 -2
- package/src/lib/hooks/use-local-format.ts +20 -5
- package/src/lib/hooks/use-page-block.tsx +18 -0
- package/src/lib/hooks/use-page.tsx +2 -2
- package/src/lib/hooks/use-permissions.ts +3 -2
- package/src/lib/hooks/use-server-config.ts +1 -1
- package/src/lib/hooks/use-theme.ts +1 -1
- package/src/lib/hooks/use-user-settings.tsx +1 -1
- package/src/lib/index.ts +85 -7
- package/src/lib/lib/trans.tsx +3 -3
- package/src/lib/lib/utils.ts +52 -1
- package/src/lib/providers/auth.tsx +37 -14
- package/src/lib/providers/channel-provider.tsx +17 -15
- package/src/lib/providers/server-config.tsx +13 -11
- package/src/lib/providers/theme-provider.tsx +2 -3
- package/src/lib/providers/user-settings.tsx +78 -3
- package/src/lib/virtual.d.ts +26 -2
- package/src/vite-env.d.ts +2 -0
- package/vite/tests/barrel-exports.spec.ts +30 -0
- package/vite/tests/fixtures-barrel-exports/my-plugin/index.ts +1 -0
- package/vite/tests/fixtures-barrel-exports/my-plugin/src/my.plugin.ts +8 -0
- package/vite/tests/fixtures-barrel-exports/package.json +6 -0
- package/vite/tests/fixtures-barrel-exports/vendure-config.ts +19 -0
- package/vite/tests/fixtures-npm-plugin/fake_node_modules/test-plugin/index.js +20 -0
- package/vite/tests/fixtures-npm-plugin/fake_node_modules/test-plugin/package.json +8 -0
- package/vite/tests/fixtures-npm-plugin/package.json +6 -0
- package/vite/tests/fixtures-npm-plugin/vendure-config.ts +18 -0
- package/vite/tests/fixtures-path-alias/js-aliased/index.ts +1 -0
- package/vite/tests/fixtures-path-alias/js-aliased/src/js-aliased.plugin.ts +8 -0
- package/vite/tests/fixtures-path-alias/package.json +6 -0
- package/vite/tests/fixtures-path-alias/star-aliased/index.ts +1 -0
- package/vite/tests/fixtures-path-alias/star-aliased/src/star-aliased.plugin.ts +8 -0
- package/vite/tests/fixtures-path-alias/ts-aliased/index.ts +1 -0
- package/vite/tests/fixtures-path-alias/ts-aliased/src/ts-aliased.plugin.ts +8 -0
- package/vite/tests/fixtures-path-alias/vendure-config.ts +20 -0
- package/vite/tests/npm-plugin.spec.ts +46 -0
- package/vite/tests/path-alias.spec.ts +61 -0
- package/vite/tests/tsconfig.json +21 -0
- package/vite/types.ts +44 -0
- package/vite/utils/ast-utils.spec.ts +1 -80
- package/vite/utils/ast-utils.ts +0 -86
- package/vite/utils/compiler.ts +244 -0
- package/vite/utils/config-loader.ts +0 -445
- package/vite/utils/logger.ts +43 -0
- package/vite/utils/plugin-discovery.ts +494 -0
- package/vite/utils/tsconfig-utils.ts +79 -0
- package/vite/utils/ui-config.ts +30 -42
- package/vite/vite-plugin-config-loader.ts +25 -17
- package/vite/vite-plugin-config.ts +6 -7
- package/vite/vite-plugin-dashboard-metadata.ts +27 -16
- package/vite/vite-plugin-tailwind-source.ts +81 -0
- package/vite/vite-plugin-theme.ts +69 -69
- package/vite/vite-plugin-ui-config.ts +119 -17
- package/vite/vite-plugin-vendure-dashboard.ts +60 -16
- package/dist/plugin/utils/ast-utils.js +0 -96
- package/dist/plugin/utils/ast-utils.spec.js +0 -120
- package/dist/plugin/utils/config-loader.d.ts +0 -52
- package/dist/plugin/utils/config-loader.js +0 -343
- package/dist/plugin/utils/ui-config.d.ts +0 -3
- package/dist/plugin/utils/ui-config.js +0 -34
- package/dist/plugin/vite-plugin-theme.js +0 -130
- package/dist/plugin/vite-plugin-ui-config.d.ts +0 -15
- package/dist/plugin/vite-plugin-vendure-dashboard.d.ts +0 -44
- package/src/lib/components/shared/rich-text-editor.tsx +0 -0
- package/src/lib/framework/alert/types.ts +0 -13
- package/src/lib/framework/dashboard-widget/types.ts +0 -22
- /package/dist/{plugin/utils/ast-utils.spec.d.ts → vite/types.js} +0 -0
- /package/dist/{plugin → vite}/utils/schema-generator.d.ts +0 -0
- /package/dist/{plugin → vite}/utils/schema-generator.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-admin-api-schema.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-admin-api-schema.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-config.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-gql-tada.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-gql-tada.js +0 -0
- /package/dist/{plugin → vite}/vite-plugin-theme.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-transform-index.d.ts +0 -0
- /package/dist/{plugin → vite}/vite-plugin-transform-index.js +0 -0
- /package/src/lib/components/data-table/{data-table-types.ts → types.ts} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { compile, CompileResult, CompilerOptions } from './utils/compiler.js';
|
|
4
|
+
import { debugLogger } from './utils/logger.js';
|
|
4
5
|
|
|
5
6
|
export interface ConfigLoaderApi {
|
|
6
|
-
getVendureConfig(): Promise<
|
|
7
|
+
getVendureConfig(): Promise<CompileResult>;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
export const configLoaderName = 'vendure:config-loader';
|
|
@@ -12,8 +13,8 @@ export const configLoaderName = 'vendure:config-loader';
|
|
|
12
13
|
* This Vite plugin loads the VendureConfig from the specified file path, and
|
|
13
14
|
* makes it available to other plugins via the `ConfigLoaderApi`.
|
|
14
15
|
*/
|
|
15
|
-
export function configLoaderPlugin(options:
|
|
16
|
-
let result:
|
|
16
|
+
export function configLoaderPlugin(options: CompilerOptions): Plugin {
|
|
17
|
+
let result: CompileResult;
|
|
17
18
|
const onConfigLoaded: Array<() => void> = [];
|
|
18
19
|
return {
|
|
19
20
|
name: configLoaderName,
|
|
@@ -23,36 +24,43 @@ export function configLoaderPlugin(options: ConfigLoaderOptions): Plugin {
|
|
|
23
24
|
);
|
|
24
25
|
try {
|
|
25
26
|
const startTime = Date.now();
|
|
26
|
-
result = await
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
result = await compile({
|
|
28
|
+
...options,
|
|
29
|
+
logger: process.env.LOG
|
|
30
|
+
? debugLogger
|
|
31
|
+
: {
|
|
32
|
+
info: (message: string) => this.info(message),
|
|
33
|
+
warn: (message: string) => this.warn(message),
|
|
34
|
+
debug: (message: string) => this.debug(message),
|
|
35
|
+
error: (message: string) => this.error(message),
|
|
36
|
+
},
|
|
35
37
|
});
|
|
36
38
|
const endTime = Date.now();
|
|
37
39
|
const duration = endTime - startTime;
|
|
38
|
-
const pluginNames = result.pluginInfo
|
|
40
|
+
const pluginNames = result.pluginInfo
|
|
41
|
+
.map(p => `${p.name} ${p.sourcePluginPath ? '(local)' : '(npm)'}`)
|
|
42
|
+
.join(', ');
|
|
39
43
|
this.info(`Found ${result.pluginInfo.length} plugins: ${pluginNames}`);
|
|
40
44
|
this.info(
|
|
41
45
|
`Vendure config loaded (using export "${result.exportedSymbolName}") in ${duration}ms`,
|
|
42
46
|
);
|
|
43
47
|
} catch (e: unknown) {
|
|
44
48
|
if (e instanceof Error) {
|
|
45
|
-
|
|
49
|
+
const message = [
|
|
50
|
+
e.message,
|
|
51
|
+
`If you are using a monorepo, you may need to provide a custom pathAdapter to resolve the paths correctly.`,
|
|
52
|
+
].join('\n');
|
|
53
|
+
this.error(`Error loading Vendure config: ${message}`);
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
onConfigLoaded.forEach(fn => fn());
|
|
49
57
|
},
|
|
50
58
|
api: {
|
|
51
|
-
getVendureConfig(): Promise<
|
|
59
|
+
getVendureConfig(): Promise<CompileResult> {
|
|
52
60
|
if (result) {
|
|
53
61
|
return Promise.resolve(result);
|
|
54
62
|
} else {
|
|
55
|
-
return new Promise<
|
|
63
|
+
return new Promise<CompileResult>(resolve => {
|
|
56
64
|
onConfigLoaded.push(() => {
|
|
57
65
|
resolve(result);
|
|
58
66
|
});
|
|
@@ -8,7 +8,7 @@ export function viteConfigPlugin({ packageRoot }: { packageRoot: string }): Plug
|
|
|
8
8
|
// Only set the vite `root` to the dashboard package when running the dev server.
|
|
9
9
|
// During a production build we still need to reference the dashboard source which
|
|
10
10
|
// lives in `node_modules`, but we don't want the build output to be emitted in there.
|
|
11
|
-
// Therefore we set `root` only for `serve` and, for `build`, we instead make sure that
|
|
11
|
+
// Therefore, we set `root` only for `serve` and, for `build`, we instead make sure that
|
|
12
12
|
// an `outDir` **outside** of `node_modules` is used (defaulting to the current working
|
|
13
13
|
// directory if the user did not provide one already).
|
|
14
14
|
config.root = packageRoot;
|
|
@@ -37,7 +37,9 @@ export function viteConfigPlugin({ packageRoot }: { packageRoot: string }): Plug
|
|
|
37
37
|
config.resolve = {
|
|
38
38
|
alias: {
|
|
39
39
|
...(config.resolve?.alias ?? {}),
|
|
40
|
-
|
|
40
|
+
// See the readme for an explanation of this alias.
|
|
41
|
+
'@/vdb': path.resolve(packageRoot, './src/lib'),
|
|
42
|
+
'@/graphql': path.resolve(packageRoot, './src/lib/graphql'),
|
|
41
43
|
},
|
|
42
44
|
};
|
|
43
45
|
// This is required to prevent Vite from pre-bundling the
|
|
@@ -47,11 +49,7 @@ export function viteConfigPlugin({ packageRoot }: { packageRoot: string }): Plug
|
|
|
47
49
|
exclude: [
|
|
48
50
|
...(config.optimizeDeps?.exclude || []),
|
|
49
51
|
'@vendure/dashboard',
|
|
50
|
-
'@/
|
|
51
|
-
'@/framework',
|
|
52
|
-
'@/lib',
|
|
53
|
-
'@/components',
|
|
54
|
-
'@/hooks',
|
|
52
|
+
'@/vdb',
|
|
55
53
|
'virtual:vendure-ui-config',
|
|
56
54
|
'virtual:admin-api-schema',
|
|
57
55
|
'virtual:dashboard-extensions',
|
|
@@ -63,6 +61,7 @@ export function viteConfigPlugin({ packageRoot }: { packageRoot: string }): Plug
|
|
|
63
61
|
...(config.optimizeDeps?.include || []),
|
|
64
62
|
'@/components > recharts',
|
|
65
63
|
'@/components > react-dropzone',
|
|
64
|
+
'@vendure/common/lib/generated-types',
|
|
66
65
|
],
|
|
67
66
|
};
|
|
68
67
|
return config;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { Plugin } from 'vite';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { CompileResult } from './utils/compiler.js';
|
|
5
5
|
import { ConfigLoaderApi, getConfigLoaderApi } from './vite-plugin-config-loader.js';
|
|
6
6
|
|
|
7
7
|
const virtualModuleId = 'virtual:dashboard-extensions';
|
|
@@ -12,9 +12,9 @@ const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
|
12
12
|
* generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
|
|
13
13
|
* function which can then be imported and executed in the Dashboard app.
|
|
14
14
|
*/
|
|
15
|
-
export function dashboardMetadataPlugin(
|
|
15
|
+
export function dashboardMetadataPlugin(): Plugin {
|
|
16
16
|
let configLoaderApi: ConfigLoaderApi;
|
|
17
|
-
let loadVendureConfigResult:
|
|
17
|
+
let loadVendureConfigResult: CompileResult;
|
|
18
18
|
return {
|
|
19
19
|
name: 'vendure:dashboard-extensions-metadata',
|
|
20
20
|
configResolved({ plugins }) {
|
|
@@ -27,19 +27,38 @@ export function dashboardMetadataPlugin(options: { rootDir: string }): Plugin {
|
|
|
27
27
|
},
|
|
28
28
|
async load(id) {
|
|
29
29
|
if (id === resolvedVirtualModuleId) {
|
|
30
|
+
const startTime = Date.now();
|
|
31
|
+
this.debug('Loading dashboard extensions...');
|
|
32
|
+
|
|
30
33
|
if (!loadVendureConfigResult) {
|
|
34
|
+
const configStart = Date.now();
|
|
31
35
|
loadVendureConfigResult = await configLoaderApi.getVendureConfig();
|
|
36
|
+
this.debug(`Loaded Vendure config in ${Date.now() - configStart}ms`);
|
|
32
37
|
}
|
|
38
|
+
|
|
33
39
|
const { pluginInfo } = loadVendureConfigResult;
|
|
40
|
+
const resolveStart = Date.now();
|
|
34
41
|
const pluginsWithExtensions =
|
|
35
42
|
pluginInfo
|
|
36
|
-
?.map(
|
|
37
|
-
(
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
?.map(({ dashboardEntryPath, pluginPath, sourcePluginPath }) => {
|
|
44
|
+
if (!dashboardEntryPath) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
// For local plugins, use the sourcePluginPath to resolve the dashboard extension
|
|
48
|
+
const basePath = sourcePluginPath
|
|
49
|
+
? path.dirname(sourcePluginPath)
|
|
50
|
+
: path.dirname(pluginPath);
|
|
51
|
+
const resolved = path.resolve(basePath, dashboardEntryPath);
|
|
52
|
+
this.debug(`Resolved extension path: ${resolved}`);
|
|
53
|
+
return resolved;
|
|
54
|
+
})
|
|
40
55
|
.filter(x => x != null) ?? [];
|
|
41
56
|
|
|
42
|
-
this.info(
|
|
57
|
+
this.info(
|
|
58
|
+
`Found ${pluginsWithExtensions.length} Dashboard extensions in ${Date.now() - resolveStart}ms`,
|
|
59
|
+
);
|
|
60
|
+
this.debug(`Total dashboard extension loading completed in ${Date.now() - startTime}ms`);
|
|
61
|
+
|
|
43
62
|
return `
|
|
44
63
|
export async function runDashboardExtensions() {
|
|
45
64
|
${pluginsWithExtensions
|
|
@@ -52,11 +71,3 @@ export function dashboardMetadataPlugin(options: { rootDir: string }): Plugin {
|
|
|
52
71
|
},
|
|
53
72
|
};
|
|
54
73
|
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Converts an import path to a normalized path relative to the rootDir.
|
|
58
|
-
*/
|
|
59
|
-
function normalizeImportPath(rootDir: string, importPath: string): string {
|
|
60
|
-
const relativePath = path.relative(rootDir, importPath).replace(/\\/g, '/');
|
|
61
|
-
return relativePath.replace(/\.tsx?$/, '.js');
|
|
62
|
-
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { Plugin } from 'vite';
|
|
3
|
+
|
|
4
|
+
import { CompileResult } from './utils/compiler.js';
|
|
5
|
+
import { ConfigLoaderApi, getConfigLoaderApi } from './vite-plugin-config-loader.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This Vite plugin transforms the `app/styles.css` file to include a `@source` directive
|
|
9
|
+
* for each dashboard extension's source directory. This allows Tailwind CSS to
|
|
10
|
+
* include styles from these extensions when processing the CSS.
|
|
11
|
+
*/
|
|
12
|
+
export function dashboardTailwindSourcePlugin(): Plugin {
|
|
13
|
+
let configLoaderApi: ConfigLoaderApi;
|
|
14
|
+
let loadVendureConfigResult: CompileResult;
|
|
15
|
+
return {
|
|
16
|
+
name: 'vendure:dashboard-tailwind-source',
|
|
17
|
+
// Ensure this plugin runs before Tailwind CSS processing
|
|
18
|
+
enforce: 'pre',
|
|
19
|
+
configResolved({ plugins }) {
|
|
20
|
+
configLoaderApi = getConfigLoaderApi(plugins);
|
|
21
|
+
},
|
|
22
|
+
async transform(src, id) {
|
|
23
|
+
if (/app\/styles.css$/.test(id)) {
|
|
24
|
+
if (!loadVendureConfigResult) {
|
|
25
|
+
loadVendureConfigResult = await configLoaderApi.getVendureConfig();
|
|
26
|
+
}
|
|
27
|
+
const { pluginInfo } = loadVendureConfigResult;
|
|
28
|
+
const dashboardExtensionDirs =
|
|
29
|
+
pluginInfo
|
|
30
|
+
?.flatMap(({ dashboardEntryPath, sourcePluginPath, pluginPath }) => {
|
|
31
|
+
if (!dashboardEntryPath) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
const sourcePaths = [];
|
|
35
|
+
if (sourcePluginPath) {
|
|
36
|
+
sourcePaths.push(
|
|
37
|
+
path.join(
|
|
38
|
+
path.dirname(sourcePluginPath),
|
|
39
|
+
path.dirname(dashboardEntryPath),
|
|
40
|
+
),
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
if (pluginPath) {
|
|
44
|
+
sourcePaths.push(
|
|
45
|
+
path.join(path.dirname(pluginPath), path.dirname(dashboardEntryPath)),
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
return sourcePaths;
|
|
49
|
+
})
|
|
50
|
+
.filter(x => x != null) ?? [];
|
|
51
|
+
const sources = dashboardExtensionDirs
|
|
52
|
+
.map(extension => {
|
|
53
|
+
return `@source '${extension}';`;
|
|
54
|
+
})
|
|
55
|
+
.join('\n');
|
|
56
|
+
|
|
57
|
+
// Find the line with the specific comment and insert sources after it
|
|
58
|
+
const lines = src.split('\n');
|
|
59
|
+
const sourceCommentIndex = lines.findIndex(line =>
|
|
60
|
+
line.includes(
|
|
61
|
+
'/* @source rules from extensions will be added here by the dashboardTailwindSourcePlugin */',
|
|
62
|
+
),
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
if (sourceCommentIndex !== -1) {
|
|
66
|
+
// Insert the sources after the comment line
|
|
67
|
+
lines.splice(sourceCommentIndex + 1, 0, sources);
|
|
68
|
+
const modifiedSrc = lines.join('\n');
|
|
69
|
+
return {
|
|
70
|
+
code: modifiedSrc,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// If the comment is not found, append sources at the end
|
|
75
|
+
return {
|
|
76
|
+
code: src + '\n' + sources,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
@@ -53,91 +53,91 @@ export interface ThemeVariables {
|
|
|
53
53
|
|
|
54
54
|
const defaultVariables: ThemeVariables = {
|
|
55
55
|
light: {
|
|
56
|
-
background: '
|
|
57
|
-
foreground: '
|
|
58
|
-
card: '
|
|
59
|
-
'card-foreground': '
|
|
60
|
-
popover: '
|
|
61
|
-
'popover-foreground': '
|
|
62
|
-
primary: '
|
|
63
|
-
'primary-foreground': '
|
|
64
|
-
secondary: '
|
|
65
|
-
'secondary-foreground': '
|
|
66
|
-
muted: '
|
|
67
|
-
'muted-foreground': '
|
|
68
|
-
accent: '
|
|
69
|
-
'accent-foreground': '
|
|
70
|
-
destructive: '
|
|
71
|
-
'destructive-foreground': '
|
|
56
|
+
background: 'oklch(1.0000 0 0)',
|
|
57
|
+
foreground: 'oklch(0.2103 0.0059 285.8852)',
|
|
58
|
+
card: 'oklch(1.0000 0 0)',
|
|
59
|
+
'card-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
60
|
+
popover: 'oklch(1.0000 0 0)',
|
|
61
|
+
'popover-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
62
|
+
primary: 'oklch(0.7613 0.1503 231.1314)',
|
|
63
|
+
'primary-foreground': 'oklch(0.1408 0.0044 285.8229)',
|
|
64
|
+
secondary: 'oklch(0.9674 0.0013 286.3752)',
|
|
65
|
+
'secondary-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
66
|
+
muted: 'oklch(0.9674 0.0013 286.3752)',
|
|
67
|
+
'muted-foreground': 'oklch(0.5517 0.0138 285.9385)',
|
|
68
|
+
accent: 'oklch(0.9674 0.0013 286.3752)',
|
|
69
|
+
'accent-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
70
|
+
destructive: 'oklch(0.5771 0.2152 27.3250)',
|
|
71
|
+
'destructive-foreground': 'oklch(0.9851 0 0)',
|
|
72
72
|
success: 'hsl(100, 81%, 35%)',
|
|
73
73
|
'success-foreground': 'hsl(0 0% 98%)',
|
|
74
74
|
'dev-mode': 'hsl(204, 76%, 62%)',
|
|
75
75
|
'dev-mode-foreground': 'hsl(0 0% 98%)',
|
|
76
|
-
border: '
|
|
77
|
-
input: '
|
|
78
|
-
ring: '
|
|
79
|
-
'chart-1': '
|
|
80
|
-
'chart-2': '
|
|
81
|
-
'chart-3': '
|
|
82
|
-
'chart-4': '
|
|
83
|
-
'chart-5': '
|
|
84
|
-
radius: '0.
|
|
85
|
-
sidebar: '
|
|
86
|
-
'sidebar-foreground': '
|
|
87
|
-
'sidebar-primary': '
|
|
88
|
-
'sidebar-primary-foreground': '
|
|
89
|
-
'sidebar-accent': '
|
|
90
|
-
'sidebar-accent-foreground': '
|
|
91
|
-
'sidebar-border': '
|
|
92
|
-
'sidebar-ring': '
|
|
76
|
+
border: 'oklch(0.9197 0.0040 286.3202)',
|
|
77
|
+
input: 'oklch(0.9197 0.0040 286.3202)',
|
|
78
|
+
ring: 'oklch(0.7613 0.1503 231.1314)',
|
|
79
|
+
'chart-1': 'oklch(0.7613 0.1503 231.1314)',
|
|
80
|
+
'chart-2': 'oklch(0.5575 0.2525 302.3212)',
|
|
81
|
+
'chart-3': 'oklch(0.5858 0.2220 17.5846)',
|
|
82
|
+
'chart-4': 'oklch(0.6658 0.1574 58.3183)',
|
|
83
|
+
'chart-5': 'oklch(0.6271 0.1699 149.2138)',
|
|
84
|
+
radius: '0.375rem',
|
|
85
|
+
sidebar: 'oklch(0.9674 0.0013 286.3752)',
|
|
86
|
+
'sidebar-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
87
|
+
'sidebar-primary': 'oklch(0.7613 0.1503 231.1314)',
|
|
88
|
+
'sidebar-primary-foreground': 'oklch(0.1408 0.0044 285.8229)',
|
|
89
|
+
'sidebar-accent': 'oklch(1.0000 0 0)',
|
|
90
|
+
'sidebar-accent-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
91
|
+
'sidebar-border': 'oklch(0.9197 0.0040 286.3202)',
|
|
92
|
+
'sidebar-ring': 'oklch(0.7613 0.1503 231.1314)',
|
|
93
93
|
brand: '#17c1ff',
|
|
94
94
|
'brand-lighter': '#e6f9ff',
|
|
95
95
|
'brand-darker': '#0099ff',
|
|
96
|
-
'font-sans':
|
|
97
|
-
'font-mono':
|
|
96
|
+
'font-sans': 'Inter, sans-serif',
|
|
97
|
+
'font-mono': 'Geist Mono, monospace',
|
|
98
98
|
},
|
|
99
99
|
dark: {
|
|
100
|
-
background: '
|
|
101
|
-
foreground: '
|
|
102
|
-
card: '
|
|
103
|
-
'card-foreground': '
|
|
104
|
-
popover: '
|
|
105
|
-
'popover-foreground': '
|
|
106
|
-
primary: '
|
|
107
|
-
'primary-foreground': '
|
|
108
|
-
secondary: '
|
|
109
|
-
'secondary-foreground': '
|
|
110
|
-
muted: '
|
|
111
|
-
'muted-foreground': '
|
|
112
|
-
accent: '
|
|
113
|
-
'accent-foreground': '
|
|
114
|
-
destructive: '
|
|
115
|
-
'destructive-foreground': '
|
|
100
|
+
background: 'oklch(0.1408 0.0044 285.8229)',
|
|
101
|
+
foreground: 'oklch(0.9851 0 0)',
|
|
102
|
+
card: 'oklch(0.2103 0.0059 285.8852)',
|
|
103
|
+
'card-foreground': 'oklch(0.9851 0 0)',
|
|
104
|
+
popover: 'oklch(0.2103 0.0059 285.8852)',
|
|
105
|
+
'popover-foreground': 'oklch(0.9851 0 0)',
|
|
106
|
+
primary: 'oklch(0.7613 0.1503 231.1314)',
|
|
107
|
+
'primary-foreground': 'oklch(0.1408 0.0044 285.8229)',
|
|
108
|
+
secondary: 'oklch(0.2739 0.0055 286.0326)',
|
|
109
|
+
'secondary-foreground': 'oklch(0.9851 0 0)',
|
|
110
|
+
muted: 'oklch(0.2739 0.0055 286.0326)',
|
|
111
|
+
'muted-foreground': 'oklch(0.7118 0.0129 286.0665)',
|
|
112
|
+
accent: 'oklch(0.2739 0.0055 286.0326)',
|
|
113
|
+
'accent-foreground': 'oklch(0.9851 0 0)',
|
|
114
|
+
destructive: 'oklch(0.6368 0.2078 25.3313)',
|
|
115
|
+
'destructive-foreground': 'oklch(0.9851 0 0)',
|
|
116
116
|
success: 'hsl(100, 100%, 35%)',
|
|
117
117
|
'success-foreground': 'hsl(0 0% 98%)',
|
|
118
118
|
'dev-mode': 'hsl(204, 86%, 53%)',
|
|
119
119
|
'dev-mode-foreground': 'hsl(0 0% 98%)',
|
|
120
|
-
border: '
|
|
121
|
-
input: '
|
|
122
|
-
ring: '
|
|
123
|
-
'chart-1': '
|
|
124
|
-
'chart-2': '
|
|
125
|
-
'chart-3': '
|
|
126
|
-
'chart-4': '
|
|
127
|
-
'chart-5': '
|
|
128
|
-
sidebar: '
|
|
129
|
-
'sidebar-foreground': '
|
|
130
|
-
'sidebar-primary': '
|
|
131
|
-
'sidebar-primary-foreground': '
|
|
132
|
-
'sidebar-accent': '
|
|
133
|
-
'sidebar-accent-foreground': '
|
|
134
|
-
'sidebar-border': '
|
|
135
|
-
'sidebar-ring': '
|
|
120
|
+
border: 'oklch(0.2739 0.0055 286.0326)',
|
|
121
|
+
input: 'oklch(0.2739 0.0055 286.0326)',
|
|
122
|
+
ring: 'oklch(0.7613 0.1503 231.1314)',
|
|
123
|
+
'chart-1': 'oklch(0.7613 0.1503 231.1314)',
|
|
124
|
+
'chart-2': 'oklch(0.6268 0.2325 303.9004)',
|
|
125
|
+
'chart-3': 'oklch(0.6450 0.2154 16.4393)',
|
|
126
|
+
'chart-4': 'oklch(0.7686 0.1647 70.0804)',
|
|
127
|
+
'chart-5': 'oklch(0.7227 0.1920 149.5793)',
|
|
128
|
+
sidebar: 'oklch(0.1408 0.0044 285.8229)',
|
|
129
|
+
'sidebar-foreground': 'oklch(0.9851 0 0)',
|
|
130
|
+
'sidebar-primary': 'oklch(0.7613 0.1503 231.1314)',
|
|
131
|
+
'sidebar-primary-foreground': 'oklch(0.1408 0.0044 285.8229)',
|
|
132
|
+
'sidebar-accent': 'oklch(0.2739 0.0055 286.0326)',
|
|
133
|
+
'sidebar-accent-foreground': 'oklch(0.9851 0 0)',
|
|
134
|
+
'sidebar-border': 'oklch(0.2739 0.0055 286.0326)',
|
|
135
|
+
'sidebar-ring': 'oklch(0.7613 0.1503 231.1314)',
|
|
136
136
|
brand: '#17c1ff',
|
|
137
137
|
'brand-lighter': '#e6f9ff',
|
|
138
138
|
'brand-darker': '#0099ff',
|
|
139
|
-
'font-sans':
|
|
140
|
-
'font-mono':
|
|
139
|
+
'font-sans': 'Inter, sans-serif',
|
|
140
|
+
'font-mono': 'Geist Mono, monospace',
|
|
141
141
|
},
|
|
142
142
|
};
|
|
143
143
|
|
|
@@ -1,27 +1,137 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import path from 'path';
|
|
1
|
+
import { LanguageCode, VendureConfig } from '@vendure/core';
|
|
3
2
|
import { Plugin } from 'vite';
|
|
4
3
|
|
|
5
|
-
import {
|
|
4
|
+
import { getUiConfig } from './utils/ui-config.js';
|
|
6
5
|
import { ConfigLoaderApi, getConfigLoaderApi } from './vite-plugin-config-loader.js';
|
|
7
6
|
|
|
8
7
|
const virtualModuleId = 'virtual:vendure-ui-config';
|
|
9
8
|
const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
10
9
|
|
|
11
|
-
export
|
|
10
|
+
export interface ApiConfig {
|
|
12
11
|
/**
|
|
13
12
|
* @description
|
|
14
|
-
* The admin UI
|
|
13
|
+
* The hostname of the Vendure server which the admin UI will be making API calls
|
|
14
|
+
* to. If set to "auto", the Admin UI app will determine the hostname from the
|
|
15
|
+
* current location (i.e. `window.location.hostname`).
|
|
16
|
+
*
|
|
17
|
+
* @default 'auto'
|
|
15
18
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
host?: string | 'auto';
|
|
20
|
+
/**
|
|
21
|
+
* @description
|
|
22
|
+
* The port of the Vendure server which the admin UI will be making API calls
|
|
23
|
+
* to. If set to "auto", the Admin UI app will determine the port from the
|
|
24
|
+
* current location (i.e. `window.location.port`).
|
|
25
|
+
*
|
|
26
|
+
* @default 'auto'
|
|
27
|
+
*/
|
|
28
|
+
port?: number | 'auto';
|
|
29
|
+
/**
|
|
30
|
+
* @description
|
|
31
|
+
* The path to the GraphQL Admin API.
|
|
32
|
+
*
|
|
33
|
+
* @default 'admin-api'
|
|
34
|
+
*/
|
|
35
|
+
adminApiPath?: string;
|
|
36
|
+
/**
|
|
37
|
+
* @description
|
|
38
|
+
* Whether to use cookies or bearer tokens to track sessions.
|
|
39
|
+
* Should match the setting of in the server's `tokenMethod` config
|
|
40
|
+
* option.
|
|
41
|
+
*
|
|
42
|
+
* @default 'cookie'
|
|
43
|
+
*/
|
|
44
|
+
tokenMethod?: 'cookie' | 'bearer';
|
|
45
|
+
/**
|
|
46
|
+
* @description
|
|
47
|
+
* The header used when using the 'bearer' auth method. Should match the
|
|
48
|
+
* setting of the server's `authOptions.authTokenHeaderKey` config option.
|
|
49
|
+
*
|
|
50
|
+
* @default 'vendure-auth-token'
|
|
51
|
+
*/
|
|
52
|
+
authTokenHeaderKey?: string;
|
|
53
|
+
/**
|
|
54
|
+
* @description
|
|
55
|
+
* The name of the header which contains the channel token. Should match the
|
|
56
|
+
* setting of the server's `apiOptions.channelTokenKey` config option.
|
|
57
|
+
*
|
|
58
|
+
* @default 'vendure-token'
|
|
59
|
+
*/
|
|
60
|
+
channelTokenKey?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface I18nConfig {
|
|
64
|
+
/**
|
|
65
|
+
* @description
|
|
66
|
+
* The default language for the Admin UI. Must be one of the
|
|
67
|
+
* items specified in the `availableLanguages` property.
|
|
68
|
+
*
|
|
69
|
+
* @default LanguageCode.en
|
|
70
|
+
*/
|
|
71
|
+
defaultLanguage?: LanguageCode;
|
|
72
|
+
/**
|
|
73
|
+
* @description
|
|
74
|
+
* The default locale for the Admin UI. The locale affects the formatting of
|
|
75
|
+
* currencies & dates. Must be one of the items specified
|
|
76
|
+
* in the `availableLocales` property.
|
|
77
|
+
*
|
|
78
|
+
* If not set, the browser default locale will be used.
|
|
79
|
+
*
|
|
80
|
+
* @since 2.2.0
|
|
81
|
+
*/
|
|
82
|
+
defaultLocale?: string;
|
|
83
|
+
/**
|
|
84
|
+
* @description
|
|
85
|
+
* An array of languages for which translations exist for the Admin UI.
|
|
86
|
+
*/
|
|
87
|
+
availableLanguages?: LanguageCode[];
|
|
88
|
+
/**
|
|
89
|
+
* @description
|
|
90
|
+
* An array of locales to be used on Admin UI.
|
|
91
|
+
*
|
|
92
|
+
* @since 2.2.0
|
|
93
|
+
*/
|
|
94
|
+
availableLocales?: string[];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface UiConfigPluginOptions {
|
|
98
|
+
/**
|
|
99
|
+
* @description
|
|
100
|
+
* Configuration for API connection settings
|
|
101
|
+
*/
|
|
102
|
+
api?: ApiConfig;
|
|
103
|
+
/**
|
|
104
|
+
* @description
|
|
105
|
+
* Configuration for internationalization settings
|
|
106
|
+
*/
|
|
107
|
+
i18n?: I18nConfig;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @description
|
|
112
|
+
* The resolved UI configuration with all defaults applied.
|
|
113
|
+
* This is the type of the configuration object available at runtime.
|
|
114
|
+
*/
|
|
115
|
+
export interface ResolvedUiConfig {
|
|
116
|
+
/**
|
|
117
|
+
* @description
|
|
118
|
+
* API connection settings with all defaults applied
|
|
119
|
+
*/
|
|
120
|
+
api: Required<ApiConfig>;
|
|
121
|
+
/**
|
|
122
|
+
* @description
|
|
123
|
+
* Internationalization settings with all defaults applied.
|
|
124
|
+
* Note: defaultLocale remains optional as it can be undefined.
|
|
125
|
+
*/
|
|
126
|
+
i18n: Required<Omit<I18nConfig, 'defaultLocale'>> & Pick<I18nConfig, 'defaultLocale'>;
|
|
127
|
+
}
|
|
18
128
|
|
|
19
129
|
/**
|
|
20
130
|
* This Vite plugin scans the configured plugins for any dashboard extensions and dynamically
|
|
21
131
|
* generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
|
|
22
132
|
* function which can then be imported and executed in the Dashboard app.
|
|
23
133
|
*/
|
|
24
|
-
export function uiConfigPlugin(
|
|
134
|
+
export function uiConfigPlugin(options: UiConfigPluginOptions = {}): Plugin {
|
|
25
135
|
let configLoaderApi: ConfigLoaderApi;
|
|
26
136
|
let vendureConfig: VendureConfig;
|
|
27
137
|
|
|
@@ -42,7 +152,7 @@ export function uiConfigPlugin({ adminUiConfig }: UiConfigPluginOptions): Plugin
|
|
|
42
152
|
vendureConfig = result.vendureConfig;
|
|
43
153
|
}
|
|
44
154
|
|
|
45
|
-
const config =
|
|
155
|
+
const config = getUiConfig(vendureConfig, options);
|
|
46
156
|
|
|
47
157
|
return `
|
|
48
158
|
export const uiConfig = ${JSON.stringify(config)}
|
|
@@ -51,11 +161,3 @@ export function uiConfigPlugin({ adminUiConfig }: UiConfigPluginOptions): Plugin
|
|
|
51
161
|
},
|
|
52
162
|
};
|
|
53
163
|
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Converts an import path to a normalized path relative to the rootDir.
|
|
57
|
-
*/
|
|
58
|
-
function normalizeImportPath(rootDir: string, importPath: string): string {
|
|
59
|
-
const relativePath = path.relative(rootDir, importPath).replace(/\\/g, '/');
|
|
60
|
-
return relativePath.replace(/\.tsx?$/, '.js');
|
|
61
|
-
}
|