@leandrosk/dashboard 3.5.5-fork.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 +118 -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 +35 -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 +280 -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 +191 -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/path-transformer.d.ts +20 -0
- package/dist/vite/utils/path-transformer.js +116 -0
- package/dist/vite/utils/plugin-discovery.d.ts +27 -0
- package/dist/vite/utils/plugin-discovery.js +399 -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 +44 -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 +40 -0
- package/dist/vite/vite-plugin-lingui-babel.js +168 -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 +181 -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 +39 -0
- package/package.json +184 -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 +191 -0
- package/src/app/routes/_authenticated/_collections/collections.tsx +458 -0
- package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +267 -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 +30 -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 +178 -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 +219 -0
- package/src/app/routes/_authenticated/_customers/customers.tsx +107 -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 +115 -0
- package/src/app/routes/_authenticated/_orders/components/draft-order-status.tsx +48 -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 +323 -0
- package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +181 -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 +332 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/default-order-history-components.tsx +138 -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 +189 -0
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +117 -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 +60 -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 +277 -0
- package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +100 -0
- package/src/app/routes/_authenticated/_orders/components/order-table.tsx +216 -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/refund-order-dialog.tsx +372 -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/hooks/use-refund-order.ts +345 -0
- package/src/app/routes/_authenticated/_orders/orders.graphql.ts +817 -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 +312 -0
- package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +513 -0
- package/src/app/routes/_authenticated/_orders/utils/order-detail-loaders.tsx +140 -0
- package/src/app/routes/_authenticated/_orders/utils/order-types.ts +10 -0
- package/src/app/routes/_authenticated/_orders/utils/order-utils.ts +219 -0
- package/src/app/routes/_authenticated/_orders/utils/refund-utils.ts +100 -0
- package/src/app/routes/_authenticated/_orders/utils/use-modify-order.ts +350 -0
- package/src/app/routes/_authenticated/_payment-methods/components/payment-eligibility-checker-selector.tsx +40 -0
- package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +39 -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 +213 -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 +92 -0
- package/src/app/routes/_authenticated/_product-variants/product-variants.graphql.ts +213 -0
- package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +115 -0
- package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +490 -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 +138 -0
- package/src/app/routes/_authenticated/_products/products_.$id.tsx +258 -0
- package/src/app/routes/_authenticated/_products/products_.$id_.variants.tsx +430 -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 +30 -0
- package/src/app/routes/_authenticated/_profile/profile.tsx +143 -0
- package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +41 -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 +41 -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 +261 -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 +39 -0
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-eligibility-checker-selector.tsx +39 -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 +209 -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 +100 -0
- package/src/app/routes/_authenticated/_system/job-queue.graphql.ts +54 -0
- package/src/app/routes/_authenticated/_system/job-queue.tsx +266 -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 +123 -0
- package/src/i18n/locales/ar.po +5250 -0
- package/src/i18n/locales/bg.po +5287 -0
- package/src/i18n/locales/cs.po +5250 -0
- package/src/i18n/locales/de.po +5250 -0
- package/src/i18n/locales/el.po +5311 -0
- package/src/i18n/locales/en.po +5285 -0
- package/src/i18n/locales/es.po +5250 -0
- package/src/i18n/locales/fa.po +5250 -0
- package/src/i18n/locales/fr.po +5250 -0
- package/src/i18n/locales/he.po +5250 -0
- package/src/i18n/locales/hr.po +5250 -0
- package/src/i18n/locales/it.po +5250 -0
- package/src/i18n/locales/ja.po +5250 -0
- package/src/i18n/locales/ko.po +4628 -0
- package/src/i18n/locales/nb.po +5250 -0
- package/src/i18n/locales/ne.po +5250 -0
- package/src/i18n/locales/nl.po +4628 -0
- package/src/i18n/locales/pl.po +5250 -0
- package/src/i18n/locales/pt_BR.po +5250 -0
- package/src/i18n/locales/pt_PT.po +5250 -0
- package/src/i18n/locales/ru.po +5250 -0
- package/src/i18n/locales/sv.po +5250 -0
- package/src/i18n/locales/tr.po +5250 -0
- package/src/i18n/locales/uk.po +5250 -0
- package/src/i18n/locales/zh_Hans.po +5250 -0
- package/src/i18n/locales/zh_Hant.po +5250 -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 +64 -0
- package/src/lib/components/data-input/configurable-operation-list-input.tsx +59 -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 +210 -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 +24 -0
- package/src/lib/components/data-input/money-input.stories.tsx +88 -0
- package/src/lib/components/data-input/money-input.tsx +117 -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 +112 -0
- package/src/lib/components/data-input/slug-input.stories.tsx +232 -0
- package/src/lib/components/data-input/slug-input.tsx +290 -0
- package/src/lib/components/data-input/string-list-input.tsx +268 -0
- package/src/lib/components/data-input/struct-form-input.tsx +352 -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 +100 -0
- package/src/lib/components/data-table/data-table-column-header.tsx +50 -0
- package/src/lib/components/data-table/data-table-context.tsx +98 -0
- package/src/lib/components/data-table/data-table-facet-value-faceted-filter.tsx +308 -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 +115 -0
- package/src/lib/components/data-table/data-table-filter-dialog.tsx +92 -0
- package/src/lib/components/data-table/data-table-pagination.tsx +105 -0
- package/src/lib/components/data-table/data-table-utils.ts +313 -0
- package/src/lib/components/data-table/data-table-view-options.tsx +132 -0
- package/src/lib/components/data-table/data-table.stories.tsx +249 -0
- package/src/lib/components/data-table/data-table.tsx +554 -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 +418 -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 +228 -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 +387 -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 +190 -0
- package/src/lib/components/shared/configurable-operation-multi-selector.tsx +308 -0
- package/src/lib/components/shared/configurable-operation-selector.tsx +161 -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 +305 -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 +274 -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 +144 -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-context.ts +10 -0
- package/src/lib/components/shared/paginated-list-data-table.stories.tsx +212 -0
- package/src/lib/components/shared/paginated-list-data-table.tsx +497 -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 +62 -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 +24 -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 +92 -0
- package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +153 -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 +50 -0
- package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +108 -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 +18 -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 +100 -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 +26 -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 +167 -0
- package/src/lib/framework/form-engine/form-schema-tools.spec.ts +683 -0
- package/src/lib/framework/form-engine/form-schema-tools.ts +440 -0
- package/src/lib/framework/form-engine/overridden-form-component.tsx +51 -0
- package/src/lib/framework/form-engine/use-generated-form.tsx +242 -0
- package/src/lib/framework/form-engine/utils.spec.ts +419 -0
- package/src/lib/framework/form-engine/utils.ts +457 -0
- package/src/lib/framework/form-engine/value-transformers.ts +156 -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 +69 -0
- package/src/lib/framework/page/detail-page.stories.tsx +151 -0
- package/src/lib/framework/page/detail-page.tsx +240 -0
- package/src/lib/framework/page/list-page.stories.tsx +256 -0
- package/src/lib/framework/page/list-page.tsx +621 -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 +540 -0
- package/src/lib/graphql/graphql.ts +15 -0
- package/src/lib/graphql/schema-enums.ts +13 -0
- package/src/lib/graphql/settings-store-operations.ts +17 -0
- package/src/lib/hooks/use-alerts-context.ts +10 -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-data-table-context.ts +11 -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 +53 -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-facet-value-browser.ts +292 -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-job-queue-polling.ts +160 -0
- package/src/lib/hooks/use-local-format.ts +175 -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-paginated-list.ts +28 -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/hooks/use-widget-dimensions.ts +12 -0
- package/src/lib/hooks/use-widget-filters.ts +21 -0
- package/src/lib/index.ts +307 -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 +52 -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/saved-views-utils.ts +40 -0
- package/src/lib/virtual.d.ts +44 -0
- package/src/vite-env.d.ts +2 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
const defaultVariables = {
|
|
2
|
+
light: {
|
|
3
|
+
background: 'oklch(1.0000 0 0)',
|
|
4
|
+
foreground: 'oklch(0.2103 0.0059 285.8852)',
|
|
5
|
+
card: 'oklch(1.0000 0 0)',
|
|
6
|
+
'card-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
7
|
+
popover: 'oklch(1.0000 0 0)',
|
|
8
|
+
'popover-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
9
|
+
primary: 'oklch(0.7613 0.1503 231.1314)',
|
|
10
|
+
'primary-foreground': 'oklch(0.261 0.043 218.379)',
|
|
11
|
+
secondary: 'oklch(0.9674 0.0013 286.3752)',
|
|
12
|
+
'secondary-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
13
|
+
muted: 'oklch(0.9674 0.0013 286.3752)',
|
|
14
|
+
'muted-foreground': 'oklch(0.5517 0.0138 285.9385)',
|
|
15
|
+
accent: 'oklch(0.9674 0.0013 286.3752)',
|
|
16
|
+
'accent-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
17
|
+
destructive: 'oklch(0.505 0.188 27.325)',
|
|
18
|
+
'destructive-foreground': 'oklch(0.9851 0 0)',
|
|
19
|
+
success: 'hsl(99deg 67.25% 33.2%)',
|
|
20
|
+
'success-foreground': 'hsl(0 0% 98%)',
|
|
21
|
+
'dev-mode': 'hsl(204, 76%, 62%)',
|
|
22
|
+
'dev-mode-foreground': 'hsl(0 0% 98%)',
|
|
23
|
+
border: 'oklch(0.9197 0.0040 286.3202)',
|
|
24
|
+
input: 'oklch(0.9197 0.0040 286.3202)',
|
|
25
|
+
ring: 'oklch(0.7613 0.1503 231.1314)',
|
|
26
|
+
'chart-1': 'oklch(0.7613 0.1503 231.1314)',
|
|
27
|
+
'chart-2': 'oklch(0.5575 0.2525 302.3212)',
|
|
28
|
+
'chart-3': 'oklch(0.5858 0.2220 17.5846)',
|
|
29
|
+
'chart-4': 'oklch(0.6658 0.1574 58.3183)',
|
|
30
|
+
'chart-5': 'oklch(0.6271 0.1699 149.2138)',
|
|
31
|
+
radius: '0.375rem',
|
|
32
|
+
sidebar: 'oklch(0.9674 0.0013 286.3752)',
|
|
33
|
+
'sidebar-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
34
|
+
'sidebar-primary': 'oklch(0.7613 0.1503 231.1314)',
|
|
35
|
+
'sidebar-primary-foreground': 'oklch(0.1408 0.0044 285.8229)',
|
|
36
|
+
'sidebar-accent': 'oklch(1.0000 0 0)',
|
|
37
|
+
'sidebar-accent-foreground': 'oklch(0.2103 0.0059 285.8852)',
|
|
38
|
+
'sidebar-border': 'oklch(0.9197 0.0040 286.3202)',
|
|
39
|
+
'sidebar-ring': 'oklch(0.7613 0.1503 231.1314)',
|
|
40
|
+
brand: '#17c1ff',
|
|
41
|
+
'brand-lighter': '#e6f9ff',
|
|
42
|
+
'brand-darker': '#0099ff',
|
|
43
|
+
'font-sans': 'Inter, sans-serif',
|
|
44
|
+
'font-mono': 'Geist Mono, monospace',
|
|
45
|
+
},
|
|
46
|
+
dark: {
|
|
47
|
+
background: 'oklch(0.1408 0.0044 285.8229)',
|
|
48
|
+
foreground: 'oklch(0.9851 0 0)',
|
|
49
|
+
card: 'oklch(0.2103 0.0059 285.8852)',
|
|
50
|
+
'card-foreground': 'oklch(0.9851 0 0)',
|
|
51
|
+
popover: 'oklch(0.2103 0.0059 285.8852)',
|
|
52
|
+
'popover-foreground': 'oklch(0.9851 0 0)',
|
|
53
|
+
primary: 'oklch(0.7613 0.1503 231.1314)',
|
|
54
|
+
'primary-foreground': 'oklch(0.1408 0.0044 285.8229)',
|
|
55
|
+
secondary: 'oklch(0.2739 0.0055 286.0326)',
|
|
56
|
+
'secondary-foreground': 'oklch(0.9851 0 0)',
|
|
57
|
+
muted: 'oklch(0.2739 0.0055 286.0326)',
|
|
58
|
+
'muted-foreground': 'oklch(0.7118 0.0129 286.0665)',
|
|
59
|
+
accent: 'oklch(0.2739 0.0055 286.0326)',
|
|
60
|
+
'accent-foreground': 'oklch(0.9851 0 0)',
|
|
61
|
+
destructive: 'oklch(0.4 0.15 27.11)',
|
|
62
|
+
'destructive-foreground': 'oklch(0.9851 0 0)',
|
|
63
|
+
success: 'hsl(100 76.42% 22.21%)',
|
|
64
|
+
'success-foreground': 'hsl(0 0% 98%)',
|
|
65
|
+
'dev-mode': 'hsl(204, 86%, 53%)',
|
|
66
|
+
'dev-mode-foreground': 'hsl(0 0% 98%)',
|
|
67
|
+
border: 'oklch(0.2739 0.0055 286.0326)',
|
|
68
|
+
input: 'oklch(0.2739 0.0055 286.0326)',
|
|
69
|
+
ring: 'oklch(0.7613 0.1503 231.1314)',
|
|
70
|
+
'chart-1': 'oklch(0.7613 0.1503 231.1314)',
|
|
71
|
+
'chart-2': 'oklch(0.6268 0.2325 303.9004)',
|
|
72
|
+
'chart-3': 'oklch(0.6450 0.2154 16.4393)',
|
|
73
|
+
'chart-4': 'oklch(0.7686 0.1647 70.0804)',
|
|
74
|
+
'chart-5': 'oklch(0.7227 0.1920 149.5793)',
|
|
75
|
+
sidebar: 'oklch(0.2 0 0)',
|
|
76
|
+
'sidebar-foreground': 'oklch(0.9851 0 0)',
|
|
77
|
+
'sidebar-primary': 'oklch(0.7613 0.1503 231.1314)',
|
|
78
|
+
'sidebar-primary-foreground': 'oklch(0.1408 0.0044 285.8229)',
|
|
79
|
+
'sidebar-accent': 'oklch(0.2739 0.0055 286.0326)',
|
|
80
|
+
'sidebar-accent-foreground': 'oklch(0.9851 0 0)',
|
|
81
|
+
'sidebar-border': 'oklch(0.2739 0.0055 286.0326)',
|
|
82
|
+
'sidebar-ring': 'oklch(0.7613 0.1503 231.1314)',
|
|
83
|
+
brand: '#17c1ff',
|
|
84
|
+
'brand-lighter': '#e6f9ff',
|
|
85
|
+
'brand-darker': '#0099ff',
|
|
86
|
+
'font-sans': 'Inter, sans-serif',
|
|
87
|
+
'font-mono': 'Geist Mono, monospace',
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
export function themeVariablesPlugin(options) {
|
|
91
|
+
const virtualModuleId = 'virtual:admin-theme';
|
|
92
|
+
const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
93
|
+
return {
|
|
94
|
+
name: 'vendure:admin-theme',
|
|
95
|
+
enforce: 'pre', // This ensures our plugin runs before other CSS processors
|
|
96
|
+
transform(code, id) {
|
|
97
|
+
var _a, _b;
|
|
98
|
+
// Only transform CSS files
|
|
99
|
+
if (!id.endsWith('styles.css')) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
// Replace the @import 'virtual:admin-theme'; with our theme variables
|
|
103
|
+
if (code.includes('@import "virtual:admin-theme";') ||
|
|
104
|
+
code.includes("@import 'virtual:admin-theme';")) {
|
|
105
|
+
const lightTheme = ((_a = options.theme) === null || _a === void 0 ? void 0 : _a.light) || {};
|
|
106
|
+
const darkTheme = ((_b = options.theme) === null || _b === void 0 ? void 0 : _b.dark) || {};
|
|
107
|
+
// Merge default themes with custom themes
|
|
108
|
+
const mergedLightTheme = Object.assign(Object.assign({}, defaultVariables.light), lightTheme);
|
|
109
|
+
const mergedDarkTheme = Object.assign(Object.assign({}, defaultVariables.dark), darkTheme);
|
|
110
|
+
const themeCSS = `
|
|
111
|
+
:root {
|
|
112
|
+
${Object.entries(mergedLightTheme)
|
|
113
|
+
.filter(([key, value]) => value !== undefined)
|
|
114
|
+
.map(([key, value]) => `--${key}: ${value};`)
|
|
115
|
+
.join('\n')}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.dark {
|
|
119
|
+
${Object.entries(mergedDarkTheme)
|
|
120
|
+
.filter(([key, value]) => value !== undefined)
|
|
121
|
+
.map(([key, value]) => `--${key}: ${value};`)
|
|
122
|
+
.join('\n')}
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
125
|
+
return code.replace(/@import ['"]virtual:admin-theme['"];?/, themeCSS);
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Plugin } from 'vite';
|
|
2
|
+
/**
|
|
3
|
+
* @description
|
|
4
|
+
* This Vite plugin handles the scenario where the `base` path is set in the Vite config.
|
|
5
|
+
* The default Vite behavior is to prepend the `base` path to all `href` and `src` attributes in the HTML,
|
|
6
|
+
* but this causes the Vendure Dashboard not to load its assets correctly.
|
|
7
|
+
*
|
|
8
|
+
* This plugin removes the `base` path from all `href` and `src` attributes in the HTML,
|
|
9
|
+
* and adds a `<base>` tag to the `<head>` of the HTML document.
|
|
10
|
+
*/
|
|
11
|
+
export declare function transformIndexHtmlPlugin(): Plugin;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description
|
|
3
|
+
* This Vite plugin handles the scenario where the `base` path is set in the Vite config.
|
|
4
|
+
* The default Vite behavior is to prepend the `base` path to all `href` and `src` attributes in the HTML,
|
|
5
|
+
* but this causes the Vendure Dashboard not to load its assets correctly.
|
|
6
|
+
*
|
|
7
|
+
* This plugin removes the `base` path from all `href` and `src` attributes in the HTML,
|
|
8
|
+
* and adds a `<base>` tag to the `<head>` of the HTML document.
|
|
9
|
+
*/
|
|
10
|
+
export function transformIndexHtmlPlugin() {
|
|
11
|
+
let config;
|
|
12
|
+
return {
|
|
13
|
+
name: 'vendure:vite-config-transform-index-html',
|
|
14
|
+
configResolved(resolvedConfig) {
|
|
15
|
+
// store the resolved config
|
|
16
|
+
config = resolvedConfig;
|
|
17
|
+
},
|
|
18
|
+
// Only apply this plugin during the build phase
|
|
19
|
+
apply: 'build',
|
|
20
|
+
transformIndexHtml(html, ctx) {
|
|
21
|
+
// Don't transform Storybook HTML files
|
|
22
|
+
if (ctx.filename &&
|
|
23
|
+
(ctx.filename.includes('iframe.html') || ctx.filename.includes('storybook'))) {
|
|
24
|
+
return html;
|
|
25
|
+
}
|
|
26
|
+
if (config.base && config.base !== '/') {
|
|
27
|
+
// Remove the base path from hrefs and srcs
|
|
28
|
+
const basePath = config.base.replace(/\/$/, ''); // Remove trailing slash
|
|
29
|
+
// Single regex to handle both href and src attributes with any quote type
|
|
30
|
+
const attributeRegex = new RegExp(`(href|src)=(["'])${basePath}/?`, 'g');
|
|
31
|
+
let transformedHtml = html.replace(attributeRegex, '$1=$2');
|
|
32
|
+
// Add base tag to head
|
|
33
|
+
const baseTag = ` <base href="${config.base}">\n`;
|
|
34
|
+
transformedHtml = transformedHtml.replace(/<head>/, `<head>\n${baseTag}`);
|
|
35
|
+
return transformedHtml;
|
|
36
|
+
}
|
|
37
|
+
return html;
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
export interface TranslationsPluginOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Array of paths to .po files to merge with built-in translations
|
|
5
|
+
*/
|
|
6
|
+
externalPoFiles?: string[];
|
|
7
|
+
/**
|
|
8
|
+
* Path to the built-in locales directory
|
|
9
|
+
*/
|
|
10
|
+
localesDir?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Output path for merged translations within the build output (e.g., 'i18n')
|
|
13
|
+
*/
|
|
14
|
+
outputPath?: string;
|
|
15
|
+
packageRoot: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @description
|
|
19
|
+
* This Vite plugin compiles the source .po files into JS bundles that can be loaded statically.
|
|
20
|
+
*
|
|
21
|
+
* It handles 2 modes: dev and build.
|
|
22
|
+
*
|
|
23
|
+
* - The dev case is handled in the `load` function using Vite virtual
|
|
24
|
+
* modules to compile and return translations from plugins _only_, which then get merged with the built-in
|
|
25
|
+
* translations in the `loadI18nMessages` function
|
|
26
|
+
* - The build case loads both built-in and plugin translations, merges them, and outputs the compiled
|
|
27
|
+
* files as .js files that can be statically consumed by the built app.
|
|
28
|
+
*
|
|
29
|
+
* @param options
|
|
30
|
+
*/
|
|
31
|
+
export declare function translationsPlugin(options: TranslationsPluginOptions): Plugin;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { createCompilationErrorMessage, createCompiledCatalog, getCatalogForFile, getCatalogs, } from '@lingui/cli/api';
|
|
2
|
+
import { getConfig } from '@lingui/conf';
|
|
3
|
+
import glob from 'fast-glob';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { getDashboardPaths } from './utils/get-dashboard-paths.js';
|
|
7
|
+
import { getConfigLoaderApi } from './vite-plugin-config-loader.js';
|
|
8
|
+
const virtualModuleId = 'virtual:plugin-translations';
|
|
9
|
+
const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
10
|
+
/**
|
|
11
|
+
* @description
|
|
12
|
+
* This Vite plugin compiles the source .po files into JS bundles that can be loaded statically.
|
|
13
|
+
*
|
|
14
|
+
* It handles 2 modes: dev and build.
|
|
15
|
+
*
|
|
16
|
+
* - The dev case is handled in the `load` function using Vite virtual
|
|
17
|
+
* modules to compile and return translations from plugins _only_, which then get merged with the built-in
|
|
18
|
+
* translations in the `loadI18nMessages` function
|
|
19
|
+
* - The build case loads both built-in and plugin translations, merges them, and outputs the compiled
|
|
20
|
+
* files as .js files that can be statically consumed by the built app.
|
|
21
|
+
*
|
|
22
|
+
* @param options
|
|
23
|
+
*/
|
|
24
|
+
export function translationsPlugin(options) {
|
|
25
|
+
let configLoaderApi;
|
|
26
|
+
let loadVendureConfigResult;
|
|
27
|
+
return {
|
|
28
|
+
name: 'vendure:compile-translations',
|
|
29
|
+
configResolved({ plugins }) {
|
|
30
|
+
configLoaderApi = getConfigLoaderApi(plugins);
|
|
31
|
+
},
|
|
32
|
+
resolveId(id) {
|
|
33
|
+
if (id === virtualModuleId) {
|
|
34
|
+
return resolvedVirtualModuleId;
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
async load(id) {
|
|
38
|
+
if (id === resolvedVirtualModuleId) {
|
|
39
|
+
this.debug('Loading plugin translations...');
|
|
40
|
+
if (!loadVendureConfigResult) {
|
|
41
|
+
loadVendureConfigResult = await configLoaderApi.getVendureConfig();
|
|
42
|
+
}
|
|
43
|
+
const { pluginInfo } = loadVendureConfigResult;
|
|
44
|
+
const pluginTranslations = await getPluginTranslations(pluginInfo);
|
|
45
|
+
const linguiConfig = getConfig({
|
|
46
|
+
configPath: path.join(options.packageRoot, 'lingui.config.js'),
|
|
47
|
+
});
|
|
48
|
+
const catalogs = await getLinguiCatalogs(linguiConfig, pluginTranslations);
|
|
49
|
+
const pluginFiles = pluginTranslations.flatMap(translation => translation.translations);
|
|
50
|
+
const mergedMessageMap = await createMergedMessageMap({
|
|
51
|
+
files: pluginFiles,
|
|
52
|
+
packageRoot: options.packageRoot,
|
|
53
|
+
catalogs,
|
|
54
|
+
sourceLocale: linguiConfig.sourceLocale,
|
|
55
|
+
});
|
|
56
|
+
return `
|
|
57
|
+
const translations = {
|
|
58
|
+
${[...mergedMessageMap.entries()]
|
|
59
|
+
.map(([locale, messages]) => {
|
|
60
|
+
const safeLocale = locale.replace(/-/g, '_');
|
|
61
|
+
return `${safeLocale}: ${JSON.stringify(messages)}`;
|
|
62
|
+
})
|
|
63
|
+
.join(',\n')}
|
|
64
|
+
};
|
|
65
|
+
export default translations;
|
|
66
|
+
`;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
// This runs at build-time only
|
|
70
|
+
async generateBundle() {
|
|
71
|
+
// This runs during the bundle generation phase - emit files directly to build output
|
|
72
|
+
try {
|
|
73
|
+
const { pluginInfo } = await configLoaderApi.getVendureConfig();
|
|
74
|
+
// Get any plugin-provided .po files
|
|
75
|
+
const pluginTranslations = await getPluginTranslations(pluginInfo);
|
|
76
|
+
const pluginTranslationFiles = pluginTranslations.flatMap(p => p.translations);
|
|
77
|
+
this.info(`Found ${pluginTranslationFiles.length} translation files from plugins`);
|
|
78
|
+
this.debug(pluginTranslationFiles.join('\n'));
|
|
79
|
+
await compileTranslations(options, pluginTranslations, this.emitFile);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
this.error(`Translation plugin error: ${error instanceof Error ? error.message : String(error)}`);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async function getPluginTranslations(pluginInfo) {
|
|
88
|
+
const dashboardPaths = getDashboardPaths(pluginInfo);
|
|
89
|
+
const pluginTranslations = [];
|
|
90
|
+
for (const dashboardPath of dashboardPaths) {
|
|
91
|
+
const poPatterns = path.join(dashboardPath, '**/*.po');
|
|
92
|
+
const translations = await glob(poPatterns, {
|
|
93
|
+
ignore: [
|
|
94
|
+
// Skip nested node_modules (transitive deps) but not .pnpm or .bun directories.
|
|
95
|
+
'**/node_modules/[!.]*/**/node_modules/**',
|
|
96
|
+
'**/*.spec.js',
|
|
97
|
+
'**/*.test.js',
|
|
98
|
+
],
|
|
99
|
+
onlyFiles: true,
|
|
100
|
+
absolute: true,
|
|
101
|
+
followSymbolicLinks: false,
|
|
102
|
+
stats: false,
|
|
103
|
+
});
|
|
104
|
+
pluginTranslations.push({
|
|
105
|
+
pluginRootPath: dashboardPath,
|
|
106
|
+
translations,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return pluginTranslations;
|
|
110
|
+
}
|
|
111
|
+
async function compileTranslations(options, pluginTranslations, emitFile) {
|
|
112
|
+
const { localesDir = 'src/i18n/locales', outputPath = 'assets/i18n' } = options;
|
|
113
|
+
const linguiConfig = getConfig({ configPath: path.join(options.packageRoot, 'lingui.config.js') });
|
|
114
|
+
const resolvedLocalesDir = path.resolve(options.packageRoot, localesDir);
|
|
115
|
+
const catalogs = await getLinguiCatalogs(linguiConfig, pluginTranslations);
|
|
116
|
+
// Get all built-in .po files
|
|
117
|
+
const builtInFiles = fs
|
|
118
|
+
.readdirSync(resolvedLocalesDir)
|
|
119
|
+
.filter(file => file.endsWith('.po'))
|
|
120
|
+
.map(file => path.join(resolvedLocalesDir, file));
|
|
121
|
+
const pluginFiles = pluginTranslations.flatMap(translation => translation.translations);
|
|
122
|
+
const mergedMessageMap = await createMergedMessageMap({
|
|
123
|
+
files: [...builtInFiles, ...pluginFiles],
|
|
124
|
+
packageRoot: options.packageRoot,
|
|
125
|
+
catalogs,
|
|
126
|
+
sourceLocale: linguiConfig.sourceLocale,
|
|
127
|
+
});
|
|
128
|
+
for (const [locale, messages] of mergedMessageMap.entries()) {
|
|
129
|
+
const { source: code, errors } = createCompiledCatalog(locale, messages, {
|
|
130
|
+
namespace: 'es',
|
|
131
|
+
pseudoLocale: linguiConfig.pseudoLocale,
|
|
132
|
+
});
|
|
133
|
+
if (errors.length) {
|
|
134
|
+
const message = createCompilationErrorMessage(locale, errors);
|
|
135
|
+
throw new Error(message +
|
|
136
|
+
`These errors fail build because \`failOnCompileError=true\` in Lingui Vite plugin configuration.`);
|
|
137
|
+
}
|
|
138
|
+
// Emit the compiled JavaScript file to the build output
|
|
139
|
+
const outputFileName = path.posix.join(outputPath, `${locale}.js`);
|
|
140
|
+
emitFile({
|
|
141
|
+
type: 'asset',
|
|
142
|
+
fileName: outputFileName,
|
|
143
|
+
source: code,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async function getLinguiCatalogs(linguiConfig, pluginTranslations) {
|
|
148
|
+
var _a, _b, _c;
|
|
149
|
+
for (const pluginTranslation of pluginTranslations) {
|
|
150
|
+
if (pluginTranslation.translations.length === 0) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
(_a = linguiConfig.catalogs) === null || _a === void 0 ? void 0 : _a.push({
|
|
154
|
+
path: (_c = (_b = pluginTranslation.translations[0]) === null || _b === void 0 ? void 0 : _b.replace(/[a-z_-]+\.po$/, '{locale}')) !== null && _c !== void 0 ? _c : '',
|
|
155
|
+
include: [],
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
return getCatalogs(linguiConfig);
|
|
159
|
+
}
|
|
160
|
+
async function createMergedMessageMap({ files, packageRoot, catalogs, sourceLocale, }) {
|
|
161
|
+
var _a;
|
|
162
|
+
const mergedMessageMap = new Map();
|
|
163
|
+
for (const file of files) {
|
|
164
|
+
const catalogRelativePath = path.relative(packageRoot, file);
|
|
165
|
+
const fileCatalog = getCatalogForFile(catalogRelativePath, catalogs);
|
|
166
|
+
const { locale, catalog } = fileCatalog;
|
|
167
|
+
const { messages } = await catalog.getTranslations(locale, {
|
|
168
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
169
|
+
fallbackLocales: { default: sourceLocale },
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
171
|
+
sourceLocale: sourceLocale,
|
|
172
|
+
});
|
|
173
|
+
const mergedMessages = (_a = mergedMessageMap.get(locale)) !== null && _a !== void 0 ? _a : {};
|
|
174
|
+
mergedMessageMap.set(locale, Object.assign(Object.assign({}, mergedMessages), messages));
|
|
175
|
+
}
|
|
176
|
+
return mergedMessageMap;
|
|
177
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { LanguageCode } from '@vendure/core';
|
|
2
|
+
import { Plugin } from 'vite';
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* Options used by the {@link vendureDashboardPlugin} to configure how the Dashboard
|
|
6
|
+
* connects to the Vendure Admin API
|
|
7
|
+
*
|
|
8
|
+
* @docsCategory vite-plugin
|
|
9
|
+
* @docsPage vendureDashboardPlugin
|
|
10
|
+
* @since 3.4.0
|
|
11
|
+
*/
|
|
12
|
+
export interface ApiConfig {
|
|
13
|
+
/**
|
|
14
|
+
* @description
|
|
15
|
+
* The hostname of the Vendure server which the admin UI will be making API calls
|
|
16
|
+
* to. If set to "auto", the Admin UI app will determine the hostname from the
|
|
17
|
+
* current location (i.e. `window.location.hostname`).
|
|
18
|
+
*
|
|
19
|
+
* @default 'auto'
|
|
20
|
+
*/
|
|
21
|
+
host?: string | 'auto';
|
|
22
|
+
/**
|
|
23
|
+
* @description
|
|
24
|
+
* The port of the Vendure server which the admin UI will be making API calls
|
|
25
|
+
* to. If set to "auto", the Admin UI app will determine the port from the
|
|
26
|
+
* current location (i.e. `window.location.port`).
|
|
27
|
+
*
|
|
28
|
+
* @default 'auto'
|
|
29
|
+
*/
|
|
30
|
+
port?: number | 'auto';
|
|
31
|
+
/**
|
|
32
|
+
* @description
|
|
33
|
+
* The path to the GraphQL Admin API.
|
|
34
|
+
*
|
|
35
|
+
* @default 'admin-api'
|
|
36
|
+
*/
|
|
37
|
+
adminApiPath?: string;
|
|
38
|
+
/**
|
|
39
|
+
* @description
|
|
40
|
+
* Whether to use cookies or bearer tokens to track sessions.
|
|
41
|
+
* Should match the setting of in the server's `tokenMethod` config
|
|
42
|
+
* option.
|
|
43
|
+
*
|
|
44
|
+
* @default 'cookie'
|
|
45
|
+
*/
|
|
46
|
+
tokenMethod?: 'cookie' | 'bearer';
|
|
47
|
+
/**
|
|
48
|
+
* @description
|
|
49
|
+
* The header used when using the 'bearer' auth method. Should match the
|
|
50
|
+
* setting of the server's `authOptions.authTokenHeaderKey` config option.
|
|
51
|
+
*
|
|
52
|
+
* @default 'vendure-auth-token'
|
|
53
|
+
*/
|
|
54
|
+
authTokenHeaderKey?: string;
|
|
55
|
+
/**
|
|
56
|
+
* @description
|
|
57
|
+
* The name of the header which contains the channel token. Should match the
|
|
58
|
+
* setting of the server's `apiOptions.channelTokenKey` config option.
|
|
59
|
+
*
|
|
60
|
+
* @default 'vendure-token'
|
|
61
|
+
*/
|
|
62
|
+
channelTokenKey?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* @description
|
|
66
|
+
* Options used by the {@link vendureDashboardPlugin} to configure aspects of the
|
|
67
|
+
* Dashboard UI behaviour.
|
|
68
|
+
*
|
|
69
|
+
* @docsCategory vite-plugin
|
|
70
|
+
* @docsPage vendureDashboardPlugin
|
|
71
|
+
* @since 3.4.0
|
|
72
|
+
*/
|
|
73
|
+
export interface I18nConfig {
|
|
74
|
+
/**
|
|
75
|
+
* @description
|
|
76
|
+
* The default language for the Admin UI. Must be one of the
|
|
77
|
+
* items specified in the `availableLanguages` property.
|
|
78
|
+
*
|
|
79
|
+
* @default LanguageCode.en
|
|
80
|
+
*/
|
|
81
|
+
defaultLanguage?: LanguageCode;
|
|
82
|
+
/**
|
|
83
|
+
* @description
|
|
84
|
+
* The default locale for the Admin UI. The locale affects the formatting of
|
|
85
|
+
* currencies & dates. Must be one of the items specified
|
|
86
|
+
* in the `availableLocales` property.
|
|
87
|
+
*
|
|
88
|
+
* If not set, the browser default locale will be used.
|
|
89
|
+
*
|
|
90
|
+
* @since 2.2.0
|
|
91
|
+
*/
|
|
92
|
+
defaultLocale?: string;
|
|
93
|
+
/**
|
|
94
|
+
* @description
|
|
95
|
+
* An array of languages for which translations exist for the Admin UI.
|
|
96
|
+
*/
|
|
97
|
+
availableLanguages?: LanguageCode[];
|
|
98
|
+
/**
|
|
99
|
+
* @description
|
|
100
|
+
* An array of locales to be used on Admin UI.
|
|
101
|
+
*
|
|
102
|
+
* @since 2.2.0
|
|
103
|
+
*/
|
|
104
|
+
availableLocales?: string[];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* @description
|
|
108
|
+
* Options used by the {@link vendureDashboardPlugin} to configure order-related
|
|
109
|
+
* Dashboard UI behaviour.
|
|
110
|
+
*
|
|
111
|
+
* @docsCategory vite-plugin
|
|
112
|
+
* @docsPage vendureDashboardPlugin
|
|
113
|
+
* @since 3.4.0
|
|
114
|
+
*/
|
|
115
|
+
export interface OrdersConfig {
|
|
116
|
+
/**
|
|
117
|
+
* @description
|
|
118
|
+
* An array of refund reasons to display in the refund order dialog.
|
|
119
|
+
* Each reason has a `value` (used as the identifier) and a `label` (displayed to the user).
|
|
120
|
+
* If not provided, default reasons will be used.
|
|
121
|
+
*/
|
|
122
|
+
refundReasons?: Array<{
|
|
123
|
+
value: string;
|
|
124
|
+
label: string;
|
|
125
|
+
}>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @description
|
|
129
|
+
* Options used by the {@link vendureDashboardPlugin} to configure aspects of the
|
|
130
|
+
* Dashboard UI behaviour.
|
|
131
|
+
*
|
|
132
|
+
* @docsCategory vite-plugin
|
|
133
|
+
* @docsPage vendureDashboardPlugin
|
|
134
|
+
* @since 3.4.0
|
|
135
|
+
*/
|
|
136
|
+
export interface UiConfigPluginOptions {
|
|
137
|
+
/**
|
|
138
|
+
* @description
|
|
139
|
+
* Configuration for API connection settings
|
|
140
|
+
*/
|
|
141
|
+
api?: ApiConfig;
|
|
142
|
+
/**
|
|
143
|
+
* @description
|
|
144
|
+
* Configuration for internationalization settings
|
|
145
|
+
*/
|
|
146
|
+
i18n?: I18nConfig;
|
|
147
|
+
/**
|
|
148
|
+
* @description
|
|
149
|
+
* Configuration for order-related settings
|
|
150
|
+
*/
|
|
151
|
+
orders?: OrdersConfig;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* @description
|
|
155
|
+
* The resolved UI configuration with all defaults applied.
|
|
156
|
+
* This is the type of the configuration object available at runtime.
|
|
157
|
+
*/
|
|
158
|
+
export interface ResolvedUiConfig {
|
|
159
|
+
/**
|
|
160
|
+
* @description
|
|
161
|
+
* API connection settings with all defaults applied
|
|
162
|
+
*/
|
|
163
|
+
api: Required<ApiConfig>;
|
|
164
|
+
/**
|
|
165
|
+
* @description
|
|
166
|
+
* Internationalization settings with all defaults applied.
|
|
167
|
+
* Note: defaultLocale remains optional as it can be undefined.
|
|
168
|
+
*/
|
|
169
|
+
i18n: Required<Omit<I18nConfig, 'defaultLocale'>> & Pick<I18nConfig, 'defaultLocale'>;
|
|
170
|
+
/**
|
|
171
|
+
* @description
|
|
172
|
+
* Order-related settings with all defaults applied
|
|
173
|
+
*/
|
|
174
|
+
orders: Required<OrdersConfig>;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* This Vite plugin scans the configured plugins for any dashboard extensions and dynamically
|
|
178
|
+
* generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
|
|
179
|
+
* function which can then be imported and executed in the Dashboard app.
|
|
180
|
+
*/
|
|
181
|
+
export declare function uiConfigPlugin(options?: UiConfigPluginOptions): Plugin;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { getUiConfig } from './utils/ui-config.js';
|
|
2
|
+
import { getConfigLoaderApi } from './vite-plugin-config-loader.js';
|
|
3
|
+
const virtualModuleId = 'virtual:vendure-ui-config';
|
|
4
|
+
const resolvedVirtualModuleId = `\0${virtualModuleId}`;
|
|
5
|
+
/**
|
|
6
|
+
* This Vite plugin scans the configured plugins for any dashboard extensions and dynamically
|
|
7
|
+
* generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
|
|
8
|
+
* function which can then be imported and executed in the Dashboard app.
|
|
9
|
+
*/
|
|
10
|
+
export function uiConfigPlugin(options = {}) {
|
|
11
|
+
let configLoaderApi;
|
|
12
|
+
let vendureConfig;
|
|
13
|
+
return {
|
|
14
|
+
name: 'vendure:dashboard-ui-config',
|
|
15
|
+
configResolved({ plugins }) {
|
|
16
|
+
configLoaderApi = getConfigLoaderApi(plugins);
|
|
17
|
+
},
|
|
18
|
+
resolveId(id) {
|
|
19
|
+
if (id === virtualModuleId) {
|
|
20
|
+
return resolvedVirtualModuleId;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
async load(id) {
|
|
24
|
+
if (id === resolvedVirtualModuleId) {
|
|
25
|
+
if (!vendureConfig) {
|
|
26
|
+
const result = await configLoaderApi.getVendureConfig();
|
|
27
|
+
vendureConfig = result.vendureConfig;
|
|
28
|
+
}
|
|
29
|
+
const config = getUiConfig(vendureConfig, options);
|
|
30
|
+
return `
|
|
31
|
+
export const uiConfig = ${JSON.stringify(config)}
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|