@wilshop/dashboard 3.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (697) hide show
  1. package/README.md +116 -0
  2. package/dist/plugin/api/api-extensions.d.ts +1 -0
  3. package/dist/plugin/api/api-extensions.js +35 -0
  4. package/dist/plugin/api/metrics.resolver.d.ts +8 -0
  5. package/dist/plugin/api/metrics.resolver.js +40 -0
  6. package/dist/plugin/config/metrics-strategies.d.ts +39 -0
  7. package/dist/plugin/config/metrics-strategies.js +74 -0
  8. package/dist/plugin/constants.d.ts +8 -0
  9. package/dist/plugin/constants.js +31 -0
  10. package/dist/plugin/dashboard.plugin.d.ts +115 -0
  11. package/dist/plugin/dashboard.plugin.js +339 -0
  12. package/dist/plugin/default-page.html +193 -0
  13. package/dist/plugin/index.d.ts +2 -0
  14. package/dist/plugin/index.js +18 -0
  15. package/dist/plugin/package.json +3 -0
  16. package/dist/plugin/service/metrics.service.d.ts +15 -0
  17. package/dist/plugin/service/metrics.service.js +129 -0
  18. package/dist/plugin/types.d.ts +20 -0
  19. package/dist/plugin/types.js +9 -0
  20. package/dist/vite/constants.d.ts +5 -0
  21. package/dist/vite/constants.js +278 -0
  22. package/dist/vite/index.d.ts +1 -0
  23. package/dist/vite/index.js +1 -0
  24. package/dist/vite/types.d.ts +79 -0
  25. package/dist/vite/types.js +1 -0
  26. package/dist/vite/utils/ast-utils.d.ts +5 -0
  27. package/dist/vite/utils/ast-utils.js +29 -0
  28. package/dist/vite/utils/ast-utils.spec.d.ts +1 -0
  29. package/dist/vite/utils/ast-utils.spec.js +45 -0
  30. package/dist/vite/utils/compiler.d.ts +23 -0
  31. package/dist/vite/utils/compiler.js +165 -0
  32. package/dist/vite/utils/get-dashboard-paths.d.ts +5 -0
  33. package/dist/vite/utils/get-dashboard-paths.js +20 -0
  34. package/dist/vite/utils/logger.d.ts +3 -0
  35. package/dist/vite/utils/logger.js +39 -0
  36. package/dist/vite/utils/plugin-discovery.d.ts +27 -0
  37. package/dist/vite/utils/plugin-discovery.js +398 -0
  38. package/dist/vite/utils/schema-generator.d.ts +10 -0
  39. package/dist/vite/utils/schema-generator.js +35 -0
  40. package/dist/vite/utils/tsconfig-utils.d.ts +9 -0
  41. package/dist/vite/utils/tsconfig-utils.js +51 -0
  42. package/dist/vite/utils/ui-config.d.ts +3 -0
  43. package/dist/vite/utils/ui-config.js +30 -0
  44. package/dist/vite/vite-plugin-admin-api-schema.d.ts +24 -0
  45. package/dist/vite/vite-plugin-admin-api-schema.js +82 -0
  46. package/dist/vite/vite-plugin-config-loader.d.ts +16 -0
  47. package/dist/vite/vite-plugin-config-loader.js +70 -0
  48. package/dist/vite/vite-plugin-config.d.ts +4 -0
  49. package/dist/vite/vite-plugin-config.js +60 -0
  50. package/dist/vite/vite-plugin-dashboard-metadata.d.ts +7 -0
  51. package/dist/vite/vite-plugin-dashboard-metadata.js +61 -0
  52. package/dist/vite/vite-plugin-gql-tada.d.ts +6 -0
  53. package/dist/vite/vite-plugin-gql-tada.js +51 -0
  54. package/dist/vite/vite-plugin-hmr.d.ts +8 -0
  55. package/dist/vite/vite-plugin-hmr.js +34 -0
  56. package/dist/vite/vite-plugin-lingui-babel.d.ts +27 -0
  57. package/dist/vite/vite-plugin-lingui-babel.js +86 -0
  58. package/dist/vite/vite-plugin-tailwind-source.d.ts +7 -0
  59. package/dist/vite/vite-plugin-tailwind-source.js +48 -0
  60. package/dist/vite/vite-plugin-theme.d.ts +55 -0
  61. package/dist/vite/vite-plugin-theme.js +130 -0
  62. package/dist/vite/vite-plugin-transform-index.d.ts +11 -0
  63. package/dist/vite/vite-plugin-transform-index.js +40 -0
  64. package/dist/vite/vite-plugin-translations.d.ts +31 -0
  65. package/dist/vite/vite-plugin-translations.js +177 -0
  66. package/dist/vite/vite-plugin-ui-config.d.ts +150 -0
  67. package/dist/vite/vite-plugin-ui-config.js +36 -0
  68. package/dist/vite/vite-plugin-vendure-dashboard.d.ts +142 -0
  69. package/dist/vite/vite-plugin-vendure-dashboard.js +170 -0
  70. package/index.html +14 -0
  71. package/lingui.config.js +37 -0
  72. package/package.json +178 -0
  73. package/src/app/app-providers.tsx +31 -0
  74. package/src/app/common/delete-bulk-action.tsx +149 -0
  75. package/src/app/common/duplicate-bulk-action.tsx +147 -0
  76. package/src/app/common/duplicate-entity-dialog.tsx +117 -0
  77. package/src/app/common/map-faceted-filter-fields.ts +21 -0
  78. package/src/app/common/set-document-direction.ts +7 -0
  79. package/src/app/common/use-page-title.test.ts +263 -0
  80. package/src/app/common/use-page-title.ts +86 -0
  81. package/src/app/main.tsx +134 -0
  82. package/src/app/routeTree.gen.ts +1284 -0
  83. package/src/app/routes/__root.tsx +23 -0
  84. package/src/app/routes/_authenticated/_administrators/administrators.graphql.ts +88 -0
  85. package/src/app/routes/_authenticated/_administrators/administrators.tsx +104 -0
  86. package/src/app/routes/_authenticated/_administrators/administrators_.$id.tsx +160 -0
  87. package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx +15 -0
  88. package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +133 -0
  89. package/src/app/routes/_authenticated/_assets/assets.graphql.ts +76 -0
  90. package/src/app/routes/_authenticated/_assets/assets.tsx +48 -0
  91. package/src/app/routes/_authenticated/_assets/assets_.$id.tsx +181 -0
  92. package/src/app/routes/_authenticated/_assets/components/asset-bulk-actions.tsx +47 -0
  93. package/src/app/routes/_authenticated/_assets/components/asset-tag-filter.tsx +206 -0
  94. package/src/app/routes/_authenticated/_assets/components/asset-tags-editor.tsx +226 -0
  95. package/src/app/routes/_authenticated/_assets/components/manage-tags-dialog.tsx +212 -0
  96. package/src/app/routes/_authenticated/_channels/channels.graphql.ts +102 -0
  97. package/src/app/routes/_authenticated/_channels/channels.tsx +81 -0
  98. package/src/app/routes/_authenticated/_channels/channels_.$id.tsx +251 -0
  99. package/src/app/routes/_authenticated/_channels/components/channel-bulk-actions.tsx +15 -0
  100. package/src/app/routes/_authenticated/_collections/collections.graphql.ts +193 -0
  101. package/src/app/routes/_authenticated/_collections/collections.tsx +337 -0
  102. package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +236 -0
  103. package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +130 -0
  104. package/src/app/routes/_authenticated/_collections/components/collection-contents-preview-table.tsx +153 -0
  105. package/src/app/routes/_authenticated/_collections/components/collection-contents-sheet.tsx +50 -0
  106. package/src/app/routes/_authenticated/_collections/components/collection-contents-table.tsx +83 -0
  107. package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx +24 -0
  108. package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +433 -0
  109. package/src/app/routes/_authenticated/_countries/components/country-bulk-actions.tsx +15 -0
  110. package/src/app/routes/_authenticated/_countries/countries.graphql.ts +82 -0
  111. package/src/app/routes/_authenticated/_countries/countries.tsx +72 -0
  112. package/src/app/routes/_authenticated/_countries/countries_.$id.tsx +123 -0
  113. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-bulk-actions.tsx +15 -0
  114. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-sheet.tsx +51 -0
  115. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-table.tsx +134 -0
  116. package/src/app/routes/_authenticated/_customer-groups/customer-groups.graphql.ts +80 -0
  117. package/src/app/routes/_authenticated/_customer-groups/customer-groups.tsx +72 -0
  118. package/src/app/routes/_authenticated/_customer-groups/customer-groups_.$id.tsx +121 -0
  119. package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +155 -0
  120. package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +347 -0
  121. package/src/app/routes/_authenticated/_customers/components/customer-bulk-actions.tsx +15 -0
  122. package/src/app/routes/_authenticated/_customers/components/customer-group-controls.tsx +4 -0
  123. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +78 -0
  124. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-types.ts +5 -0
  125. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-utils.tsx +124 -0
  126. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history.tsx +113 -0
  127. package/src/app/routes/_authenticated/_customers/components/customer-history/default-customer-history-components.tsx +176 -0
  128. package/src/app/routes/_authenticated/_customers/components/customer-history/index.ts +4 -0
  129. package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +169 -0
  130. package/src/app/routes/_authenticated/_customers/components/customer-order-table.tsx +90 -0
  131. package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +33 -0
  132. package/src/app/routes/_authenticated/_customers/customers.graphql.ts +218 -0
  133. package/src/app/routes/_authenticated/_customers/customers.tsx +104 -0
  134. package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +280 -0
  135. package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +99 -0
  136. package/src/app/routes/_authenticated/_facets/components/facet-value-bulk-actions.tsx +16 -0
  137. package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +49 -0
  138. package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +139 -0
  139. package/src/app/routes/_authenticated/_facets/facets.graphql.ts +182 -0
  140. package/src/app/routes/_authenticated/_facets/facets.tsx +121 -0
  141. package/src/app/routes/_authenticated/_facets/facets_.$facetId.values_.$id.tsx +158 -0
  142. package/src/app/routes/_authenticated/_facets/facets_.$id.tsx +152 -0
  143. package/src/app/routes/_authenticated/_global-settings/global-settings.graphql.ts +28 -0
  144. package/src/app/routes/_authenticated/_global-settings/global-settings.tsx +161 -0
  145. package/src/app/routes/_authenticated/_orders/components/add-manual-payment-dialog.tsx +189 -0
  146. package/src/app/routes/_authenticated/_orders/components/add-surcharge-form.tsx +139 -0
  147. package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +100 -0
  148. package/src/app/routes/_authenticated/_orders/components/edit-order-table.tsx +287 -0
  149. package/src/app/routes/_authenticated/_orders/components/fulfill-order-dialog.tsx +320 -0
  150. package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +159 -0
  151. package/src/app/routes/_authenticated/_orders/components/money-gross-net.tsx +20 -0
  152. package/src/app/routes/_authenticated/_orders/components/order-address.tsx +65 -0
  153. package/src/app/routes/_authenticated/_orders/components/order-detail-shared.tsx +307 -0
  154. package/src/app/routes/_authenticated/_orders/components/order-history/default-order-history-components.tsx +98 -0
  155. package/src/app/routes/_authenticated/_orders/components/order-history/index.ts +3 -0
  156. package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +80 -0
  157. package/src/app/routes/_authenticated/_orders/components/order-history/order-history-types.ts +5 -0
  158. package/src/app/routes/_authenticated/_orders/components/order-history/order-history-utils.tsx +173 -0
  159. package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +104 -0
  160. package/src/app/routes/_authenticated/_orders/components/order-history/use-order-history.ts +175 -0
  161. package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +53 -0
  162. package/src/app/routes/_authenticated/_orders/components/order-modification-preview-dialog.tsx +365 -0
  163. package/src/app/routes/_authenticated/_orders/components/order-modification-summary.tsx +261 -0
  164. package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +100 -0
  165. package/src/app/routes/_authenticated/_orders/components/order-table.tsx +194 -0
  166. package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +40 -0
  167. package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +293 -0
  168. package/src/app/routes/_authenticated/_orders/components/seller-orders-card.tsx +63 -0
  169. package/src/app/routes/_authenticated/_orders/components/settle-refund-dialog.tsx +80 -0
  170. package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +64 -0
  171. package/src/app/routes/_authenticated/_orders/components/state-transition-control.tsx +99 -0
  172. package/src/app/routes/_authenticated/_orders/components/use-transition-order-to-state.tsx +151 -0
  173. package/src/app/routes/_authenticated/_orders/orders.graphql.ts +775 -0
  174. package/src/app/routes/_authenticated/_orders/orders.tsx +120 -0
  175. package/src/app/routes/_authenticated/_orders/orders_.$aggregateOrderId_.seller-orders.$sellerOrderId.tsx +50 -0
  176. package/src/app/routes/_authenticated/_orders/orders_.$id.tsx +30 -0
  177. package/src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx +298 -0
  178. package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +495 -0
  179. package/src/app/routes/_authenticated/_orders/utils/order-detail-loaders.tsx +134 -0
  180. package/src/app/routes/_authenticated/_orders/utils/order-types.ts +10 -0
  181. package/src/app/routes/_authenticated/_orders/utils/order-utils.ts +159 -0
  182. package/src/app/routes/_authenticated/_orders/utils/use-modify-order.ts +335 -0
  183. package/src/app/routes/_authenticated/_payment-methods/components/payment-eligibility-checker-selector.tsx +37 -0
  184. package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +33 -0
  185. package/src/app/routes/_authenticated/_payment-methods/components/payment-method-bulk-actions.tsx +58 -0
  186. package/src/app/routes/_authenticated/_payment-methods/payment-methods.graphql.ts +110 -0
  187. package/src/app/routes/_authenticated/_payment-methods/payment-methods.tsx +88 -0
  188. package/src/app/routes/_authenticated/_payment-methods/payment-methods_.$id.tsx +197 -0
  189. package/src/app/routes/_authenticated/_product-variants/components/add-currency-dropdown.tsx +49 -0
  190. package/src/app/routes/_authenticated/_product-variants/components/add-stock-location-dropdown.tsx +56 -0
  191. package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx +110 -0
  192. package/src/app/routes/_authenticated/_product-variants/components/variant-price-detail.tsx +88 -0
  193. package/src/app/routes/_authenticated/_product-variants/product-variants.graphql.ts +207 -0
  194. package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +98 -0
  195. package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +471 -0
  196. package/src/app/routes/_authenticated/_products/components/add-option-group-dialog.tsx +127 -0
  197. package/src/app/routes/_authenticated/_products/components/add-product-variant-dialog.tsx +372 -0
  198. package/src/app/routes/_authenticated/_products/components/assign-facet-values-dialog.tsx +282 -0
  199. package/src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx +416 -0
  200. package/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx +190 -0
  201. package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +370 -0
  202. package/src/app/routes/_authenticated/_products/components/option-groups-editor.tsx +180 -0
  203. package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +72 -0
  204. package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +117 -0
  205. package/src/app/routes/_authenticated/_products/components/product-option-group-badge.tsx +19 -0
  206. package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +111 -0
  207. package/src/app/routes/_authenticated/_products/components/product-options-table.tsx +114 -0
  208. package/src/app/routes/_authenticated/_products/components/product-variants-table.tsx +120 -0
  209. package/src/app/routes/_authenticated/_products/product-option-groups.graphql.ts +103 -0
  210. package/src/app/routes/_authenticated/_products/products.graphql.ts +352 -0
  211. package/src/app/routes/_authenticated/_products/products.tsx +121 -0
  212. package/src/app/routes/_authenticated/_products/products_.$id.tsx +258 -0
  213. package/src/app/routes/_authenticated/_products/products_.$id_.variants.tsx +405 -0
  214. package/src/app/routes/_authenticated/_products/products_.$productId.option-groups.$id.tsx +177 -0
  215. package/src/app/routes/_authenticated/_products/products_.$productId.option-groups.$productOptionGroupId.options_.$id.tsx +204 -0
  216. package/src/app/routes/_authenticated/_profile/profile.graphql.ts +23 -0
  217. package/src/app/routes/_authenticated/_profile/profile.tsx +119 -0
  218. package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +35 -0
  219. package/src/app/routes/_authenticated/_promotions/components/promotion-bulk-actions.tsx +72 -0
  220. package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx +35 -0
  221. package/src/app/routes/_authenticated/_promotions/promotions.graphql.ts +121 -0
  222. package/src/app/routes/_authenticated/_promotions/promotions.tsx +94 -0
  223. package/src/app/routes/_authenticated/_promotions/promotions_.$id.tsx +245 -0
  224. package/src/app/routes/_authenticated/_roles/components/expandable-permissions.tsx +54 -0
  225. package/src/app/routes/_authenticated/_roles/components/permissions-table-grid.tsx +251 -0
  226. package/src/app/routes/_authenticated/_roles/components/role-bulk-actions.tsx +15 -0
  227. package/src/app/routes/_authenticated/_roles/roles.graphql.ts +76 -0
  228. package/src/app/routes/_authenticated/_roles/roles.tsx +99 -0
  229. package/src/app/routes/_authenticated/_roles/roles_.$id.tsx +146 -0
  230. package/src/app/routes/_authenticated/_sellers/components/seller-bulk-actions.tsx +15 -0
  231. package/src/app/routes/_authenticated/_sellers/sellers.graphql.ts +70 -0
  232. package/src/app/routes/_authenticated/_sellers/sellers.tsx +56 -0
  233. package/src/app/routes/_authenticated/_sellers/sellers_.$id.tsx +112 -0
  234. package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx +56 -0
  235. package/src/app/routes/_authenticated/_shipping-methods/components/metadata-badges.tsx +15 -0
  236. package/src/app/routes/_authenticated/_shipping-methods/components/price-display.tsx +21 -0
  237. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx +33 -0
  238. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-eligibility-checker-selector.tsx +36 -0
  239. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx +61 -0
  240. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-test-result-wrapper.tsx +87 -0
  241. package/src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx +256 -0
  242. package/src/app/routes/_authenticated/_shipping-methods/components/test-order-builder.tsx +244 -0
  243. package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods-result.tsx +97 -0
  244. package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods-sheet.tsx +41 -0
  245. package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods.tsx +74 -0
  246. package/src/app/routes/_authenticated/_shipping-methods/components/test-single-method-result.tsx +90 -0
  247. package/src/app/routes/_authenticated/_shipping-methods/components/test-single-shipping-method-sheet.tsx +56 -0
  248. package/src/app/routes/_authenticated/_shipping-methods/components/test-single-shipping-method.tsx +82 -0
  249. package/src/app/routes/_authenticated/_shipping-methods/components/use-shipping-method-test-state.ts +67 -0
  250. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.graphql.ts +137 -0
  251. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.tsx +76 -0
  252. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx +197 -0
  253. package/src/app/routes/_authenticated/_stock-locations/components/stock-location-bulk-actions.tsx +58 -0
  254. package/src/app/routes/_authenticated/_stock-locations/stock-locations.graphql.ts +87 -0
  255. package/src/app/routes/_authenticated/_stock-locations/stock-locations.tsx +65 -0
  256. package/src/app/routes/_authenticated/_stock-locations/stock-locations_.$id.tsx +126 -0
  257. package/src/app/routes/_authenticated/_system/components/payload-dialog.tsx +41 -0
  258. package/src/app/routes/_authenticated/_system/healthchecks.tsx +99 -0
  259. package/src/app/routes/_authenticated/_system/job-queue.graphql.ts +54 -0
  260. package/src/app/routes/_authenticated/_system/job-queue.tsx +265 -0
  261. package/src/app/routes/_authenticated/_system/scheduled-tasks.tsx +249 -0
  262. package/src/app/routes/_authenticated/_tax-categories/components/tax-category-bulk-actions.tsx +15 -0
  263. package/src/app/routes/_authenticated/_tax-categories/tax-categories.graphql.ts +72 -0
  264. package/src/app/routes/_authenticated/_tax-categories/tax-categories.tsx +69 -0
  265. package/src/app/routes/_authenticated/_tax-categories/tax-categories_.$id.tsx +127 -0
  266. package/src/app/routes/_authenticated/_tax-rates/components/tax-rate-bulk-actions.tsx +15 -0
  267. package/src/app/routes/_authenticated/_tax-rates/tax-rates.graphql.ts +84 -0
  268. package/src/app/routes/_authenticated/_tax-rates/tax-rates.tsx +119 -0
  269. package/src/app/routes/_authenticated/_tax-rates/tax-rates_.$id.tsx +149 -0
  270. package/src/app/routes/_authenticated/_zones/components/zone-bulk-actions.tsx +63 -0
  271. package/src/app/routes/_authenticated/_zones/components/zone-countries-add.tsx +0 -0
  272. package/src/app/routes/_authenticated/_zones/components/zone-countries-sheet.tsx +34 -0
  273. package/src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx +94 -0
  274. package/src/app/routes/_authenticated/_zones/zones.graphql.ts +105 -0
  275. package/src/app/routes/_authenticated/_zones/zones.tsx +64 -0
  276. package/src/app/routes/_authenticated/_zones/zones_.$id.tsx +110 -0
  277. package/src/app/routes/_authenticated/index.tsx +233 -0
  278. package/src/app/routes/_authenticated.tsx +35 -0
  279. package/src/app/routes/login.tsx +49 -0
  280. package/src/app/styles.css +100 -0
  281. package/src/app/tailwindcss-animate.css +275 -0
  282. package/src/i18n/common-strings.ts +111 -0
  283. package/src/i18n/locales/ar.po +4972 -0
  284. package/src/i18n/locales/bg.po +3436 -0
  285. package/src/i18n/locales/cs.po +4972 -0
  286. package/src/i18n/locales/de.po +4972 -0
  287. package/src/i18n/locales/en.po +4972 -0
  288. package/src/i18n/locales/es.po +4972 -0
  289. package/src/i18n/locales/fa.po +4972 -0
  290. package/src/i18n/locales/fr.po +4972 -0
  291. package/src/i18n/locales/he.po +4972 -0
  292. package/src/i18n/locales/hr.po +4972 -0
  293. package/src/i18n/locales/it.po +4972 -0
  294. package/src/i18n/locales/ja.po +4972 -0
  295. package/src/i18n/locales/ko.po +4628 -0
  296. package/src/i18n/locales/nb.po +4972 -0
  297. package/src/i18n/locales/ne.po +4972 -0
  298. package/src/i18n/locales/nl.po +4628 -0
  299. package/src/i18n/locales/pl.po +4972 -0
  300. package/src/i18n/locales/pt_BR.po +4972 -0
  301. package/src/i18n/locales/pt_PT.po +4972 -0
  302. package/src/i18n/locales/ru.po +4972 -0
  303. package/src/i18n/locales/sv.po +4972 -0
  304. package/src/i18n/locales/tr.po +4972 -0
  305. package/src/i18n/locales/uk.po +4972 -0
  306. package/src/i18n/locales/zh_Hans.po +4972 -0
  307. package/src/i18n/locales/zh_Hant.po +4972 -0
  308. package/src/lib/components/data-display/boolean.tsx +23 -0
  309. package/src/lib/components/data-display/date-time.tsx +19 -0
  310. package/src/lib/components/data-display/json.tsx +20 -0
  311. package/src/lib/components/data-display/money.tsx +14 -0
  312. package/src/lib/components/data-input/affixed-input.stories.tsx +93 -0
  313. package/src/lib/components/data-input/affixed-input.tsx +79 -0
  314. package/src/lib/components/data-input/boolean-input.stories.tsx +102 -0
  315. package/src/lib/components/data-input/boolean-input.tsx +16 -0
  316. package/src/lib/components/data-input/checkbox-input.stories.tsx +61 -0
  317. package/src/lib/components/data-input/checkbox-input.tsx +15 -0
  318. package/src/lib/components/data-input/combination-mode-input.tsx +61 -0
  319. package/src/lib/components/data-input/configurable-operation-list-input.tsx +58 -0
  320. package/src/lib/components/data-input/custom-field-list-input.tsx +294 -0
  321. package/src/lib/components/data-input/customer-group-input.tsx +61 -0
  322. package/src/lib/components/data-input/datetime-input.stories.tsx +62 -0
  323. package/src/lib/components/data-input/datetime-input.tsx +192 -0
  324. package/src/lib/components/data-input/default-relation-input.tsx +626 -0
  325. package/src/lib/components/data-input/facet-value-input.tsx +78 -0
  326. package/src/lib/components/data-input/index.ts +23 -0
  327. package/src/lib/components/data-input/money-input.stories.tsx +88 -0
  328. package/src/lib/components/data-input/money-input.tsx +122 -0
  329. package/src/lib/components/data-input/number-input.stories.tsx +103 -0
  330. package/src/lib/components/data-input/number-input.tsx +85 -0
  331. package/src/lib/components/data-input/password-form-input.stories.tsx +65 -0
  332. package/src/lib/components/data-input/password-form-input.tsx +23 -0
  333. package/src/lib/components/data-input/product-multi-selector-input.tsx +416 -0
  334. package/src/lib/components/data-input/relation-input.tsx +165 -0
  335. package/src/lib/components/data-input/relation-selector.tsx +476 -0
  336. package/src/lib/components/data-input/rich-text-input.stories.tsx +92 -0
  337. package/src/lib/components/data-input/rich-text-input.tsx +16 -0
  338. package/src/lib/components/data-input/select-with-options.tsx +96 -0
  339. package/src/lib/components/data-input/slug-input.stories.tsx +232 -0
  340. package/src/lib/components/data-input/slug-input.tsx +289 -0
  341. package/src/lib/components/data-input/string-list-input.tsx +268 -0
  342. package/src/lib/components/data-input/struct-form-input.tsx +320 -0
  343. package/src/lib/components/data-input/text-input.stories.tsx +52 -0
  344. package/src/lib/components/data-input/text-input.tsx +16 -0
  345. package/src/lib/components/data-input/textarea-input.stories.tsx +55 -0
  346. package/src/lib/components/data-input/textarea-input.tsx +23 -0
  347. package/src/lib/components/data-table/add-filter-menu.tsx +64 -0
  348. package/src/lib/components/data-table/column-header-wrapper.tsx +106 -0
  349. package/src/lib/components/data-table/data-table-bulk-action-item.tsx +141 -0
  350. package/src/lib/components/data-table/data-table-bulk-actions.tsx +99 -0
  351. package/src/lib/components/data-table/data-table-column-header.tsx +50 -0
  352. package/src/lib/components/data-table/data-table-context.tsx +106 -0
  353. package/src/lib/components/data-table/data-table-faceted-filter.tsx +195 -0
  354. package/src/lib/components/data-table/data-table-filter-badge-editable.tsx +35 -0
  355. package/src/lib/components/data-table/data-table-filter-badge.tsx +101 -0
  356. package/src/lib/components/data-table/data-table-filter-dialog.tsx +92 -0
  357. package/src/lib/components/data-table/data-table-pagination.tsx +103 -0
  358. package/src/lib/components/data-table/data-table-utils.ts +291 -0
  359. package/src/lib/components/data-table/data-table-view-options.tsx +130 -0
  360. package/src/lib/components/data-table/data-table.stories.tsx +249 -0
  361. package/src/lib/components/data-table/data-table.tsx +508 -0
  362. package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +60 -0
  363. package/src/lib/components/data-table/filters/data-table-datetime-filter.tsx +159 -0
  364. package/src/lib/components/data-table/filters/data-table-id-filter.tsx +63 -0
  365. package/src/lib/components/data-table/filters/data-table-number-filter.tsx +123 -0
  366. package/src/lib/components/data-table/filters/data-table-string-filter.tsx +79 -0
  367. package/src/lib/components/data-table/global-views-bar.tsx +97 -0
  368. package/src/lib/components/data-table/global-views-sheet.tsx +11 -0
  369. package/src/lib/components/data-table/human-readable-operator.tsx +65 -0
  370. package/src/lib/components/data-table/manage-global-views-button.tsx +26 -0
  371. package/src/lib/components/data-table/my-views-button.tsx +47 -0
  372. package/src/lib/components/data-table/refresh-button.tsx +49 -0
  373. package/src/lib/components/data-table/save-view-button.tsx +45 -0
  374. package/src/lib/components/data-table/save-view-dialog.tsx +134 -0
  375. package/src/lib/components/data-table/types.ts +40 -0
  376. package/src/lib/components/data-table/use-all-bulk-actions.ts +19 -0
  377. package/src/lib/components/data-table/use-generated-columns.tsx +411 -0
  378. package/src/lib/components/data-table/user-views-sheet.tsx +11 -0
  379. package/src/lib/components/data-table/views-sheet.tsx +305 -0
  380. package/src/lib/components/date-range-picker.tsx +186 -0
  381. package/src/lib/components/labeled-data.tsx +21 -0
  382. package/src/lib/components/layout/app-layout.tsx +35 -0
  383. package/src/lib/components/layout/app-sidebar.tsx +37 -0
  384. package/src/lib/components/layout/channel-switcher.tsx +229 -0
  385. package/src/lib/components/layout/content-language-selector.tsx +46 -0
  386. package/src/lib/components/layout/dev-mode-indicator.tsx +18 -0
  387. package/src/lib/components/layout/generated-breadcrumbs.tsx +136 -0
  388. package/src/lib/components/layout/language-dialog.tsx +133 -0
  389. package/src/lib/components/layout/manage-languages-dialog.tsx +386 -0
  390. package/src/lib/components/layout/nav-item-wrapper.tsx +107 -0
  391. package/src/lib/components/layout/nav-main.tsx +331 -0
  392. package/src/lib/components/layout/nav-projects.tsx +81 -0
  393. package/src/lib/components/layout/nav-user.tsx +180 -0
  394. package/src/lib/components/login/login-form.tsx +124 -0
  395. package/src/lib/components/shared/alerts.tsx +52 -0
  396. package/src/lib/components/shared/animated-number.tsx +49 -0
  397. package/src/lib/components/shared/asset/asset-bulk-actions.tsx +109 -0
  398. package/src/lib/components/shared/asset/asset-focal-point-editor.tsx +103 -0
  399. package/src/lib/components/shared/asset/asset-gallery.stories.tsx +76 -0
  400. package/src/lib/components/shared/asset/asset-gallery.tsx +623 -0
  401. package/src/lib/components/shared/asset/asset-picker-dialog.stories.tsx +58 -0
  402. package/src/lib/components/shared/asset/asset-picker-dialog.tsx +109 -0
  403. package/src/lib/components/shared/asset/asset-preview-dialog.tsx +38 -0
  404. package/src/lib/components/shared/asset/asset-preview-selector.tsx +32 -0
  405. package/src/lib/components/shared/asset/asset-preview.tsx +114 -0
  406. package/src/lib/components/shared/asset/asset-properties.tsx +44 -0
  407. package/src/lib/components/shared/assign-to-channel-bulk-action.tsx +71 -0
  408. package/src/lib/components/shared/assign-to-channel-dialog.tsx +156 -0
  409. package/src/lib/components/shared/assigned-channels.tsx +108 -0
  410. package/src/lib/components/shared/assigned-facet-values.tsx +61 -0
  411. package/src/lib/components/shared/channel-chip.tsx +43 -0
  412. package/src/lib/components/shared/channel-code-label.tsx +6 -0
  413. package/src/lib/components/shared/channel-selector.tsx +51 -0
  414. package/src/lib/components/shared/configurable-operation-arg-input.tsx +29 -0
  415. package/src/lib/components/shared/configurable-operation-input.tsx +167 -0
  416. package/src/lib/components/shared/configurable-operation-multi-selector.tsx +263 -0
  417. package/src/lib/components/shared/configurable-operation-selector.tsx +156 -0
  418. package/src/lib/components/shared/confirmation-dialog.tsx +58 -0
  419. package/src/lib/components/shared/copyable-text.tsx +30 -0
  420. package/src/lib/components/shared/country-selector.tsx +108 -0
  421. package/src/lib/components/shared/currency-selector.tsx +33 -0
  422. package/src/lib/components/shared/custom-fields-form.tsx +296 -0
  423. package/src/lib/components/shared/customer-address-form.tsx +338 -0
  424. package/src/lib/components/shared/customer-group-chip.tsx +30 -0
  425. package/src/lib/components/shared/customer-group-selector.tsx +65 -0
  426. package/src/lib/components/shared/customer-selector.tsx +112 -0
  427. package/src/lib/components/shared/detail-page-button.stories.tsx +52 -0
  428. package/src/lib/components/shared/detail-page-button.tsx +59 -0
  429. package/src/lib/components/shared/entity-assets.tsx +411 -0
  430. package/src/lib/components/shared/error-page.tsx +31 -0
  431. package/src/lib/components/shared/facet-value-chip.tsx +59 -0
  432. package/src/lib/components/shared/facet-value-selector.stories.tsx +48 -0
  433. package/src/lib/components/shared/facet-value-selector.tsx +458 -0
  434. package/src/lib/components/shared/form-field-wrapper.tsx +111 -0
  435. package/src/lib/components/shared/history-timeline/history-entry-date.tsx +37 -0
  436. package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +28 -0
  437. package/src/lib/components/shared/history-timeline/history-note-editor.tsx +60 -0
  438. package/src/lib/components/shared/history-timeline/history-note-entry.tsx +65 -0
  439. package/src/lib/components/shared/history-timeline/history-note-input.tsx +39 -0
  440. package/src/lib/components/shared/history-timeline/history-timeline-with-grouping.tsx +141 -0
  441. package/src/lib/components/shared/history-timeline/history-timeline.tsx +16 -0
  442. package/src/lib/components/shared/history-timeline/use-history-note-editor.ts +26 -0
  443. package/src/lib/components/shared/icon-mark.tsx +18 -0
  444. package/src/lib/components/shared/language-selector.tsx +56 -0
  445. package/src/lib/components/shared/logo-mark.tsx +24 -0
  446. package/src/lib/components/shared/multi-select.tsx +159 -0
  447. package/src/lib/components/shared/navigation-confirmation.tsx +64 -0
  448. package/src/lib/components/shared/option-value-input.tsx +97 -0
  449. package/src/lib/components/shared/paginated-list-data-table.stories.tsx +212 -0
  450. package/src/lib/components/shared/paginated-list-data-table.tsx +523 -0
  451. package/src/lib/components/shared/permission-guard.stories.tsx +46 -0
  452. package/src/lib/components/shared/permission-guard.tsx +51 -0
  453. package/src/lib/components/shared/product-variant-selector.tsx +136 -0
  454. package/src/lib/components/shared/remove-from-channel-bulk-action.tsx +93 -0
  455. package/src/lib/components/shared/rich-text-editor/image-dialog.tsx +223 -0
  456. package/src/lib/components/shared/rich-text-editor/link-dialog.tsx +151 -0
  457. package/src/lib/components/shared/rich-text-editor/responsive-toolbar.tsx +443 -0
  458. package/src/lib/components/shared/rich-text-editor/rich-text-editor.tsx +339 -0
  459. package/src/lib/components/shared/rich-text-editor/table-delete-menu.tsx +104 -0
  460. package/src/lib/components/shared/rich-text-editor/table-edit-icons.tsx +225 -0
  461. package/src/lib/components/shared/role-code-label.tsx +12 -0
  462. package/src/lib/components/shared/role-selector.tsx +56 -0
  463. package/src/lib/components/shared/seller-selector.tsx +111 -0
  464. package/src/lib/components/shared/stock-level-label.tsx +22 -0
  465. package/src/lib/components/shared/table-cell/order-table-cell-components.tsx +80 -0
  466. package/src/lib/components/shared/tax-category-selector.tsx +65 -0
  467. package/src/lib/components/shared/translatable-form-field.tsx +149 -0
  468. package/src/lib/components/shared/vendure-image.stories.tsx +167 -0
  469. package/src/lib/components/shared/vendure-image.tsx +307 -0
  470. package/src/lib/components/shared/zone-selector.tsx +65 -0
  471. package/src/lib/components/ui/accordion.stories.tsx +33 -0
  472. package/src/lib/components/ui/accordion.tsx +59 -0
  473. package/src/lib/components/ui/alert-dialog.stories.tsx +48 -0
  474. package/src/lib/components/ui/alert-dialog.tsx +128 -0
  475. package/src/lib/components/ui/alert.stories.tsx +35 -0
  476. package/src/lib/components/ui/alert.tsx +60 -0
  477. package/src/lib/components/ui/aspect-ratio.stories.tsx +28 -0
  478. package/src/lib/components/ui/aspect-ratio.tsx +9 -0
  479. package/src/lib/components/ui/badge.stories.tsx +28 -0
  480. package/src/lib/components/ui/badge.tsx +38 -0
  481. package/src/lib/components/ui/breadcrumb.stories.tsx +41 -0
  482. package/src/lib/components/ui/breadcrumb.tsx +102 -0
  483. package/src/lib/components/ui/button.stories.tsx +38 -0
  484. package/src/lib/components/ui/button.tsx +58 -0
  485. package/src/lib/components/ui/calendar.stories.tsx +22 -0
  486. package/src/lib/components/ui/calendar.tsx +447 -0
  487. package/src/lib/components/ui/card.stories.tsx +28 -0
  488. package/src/lib/components/ui/card.tsx +47 -0
  489. package/src/lib/components/ui/carousel.stories.tsx +34 -0
  490. package/src/lib/components/ui/carousel.tsx +241 -0
  491. package/src/lib/components/ui/chart.tsx +351 -0
  492. package/src/lib/components/ui/checkbox.stories.tsx +31 -0
  493. package/src/lib/components/ui/checkbox.tsx +27 -0
  494. package/src/lib/components/ui/collapsible.stories.tsx +39 -0
  495. package/src/lib/components/ui/collapsible.tsx +33 -0
  496. package/src/lib/components/ui/command.stories.tsx +44 -0
  497. package/src/lib/components/ui/command.tsx +139 -0
  498. package/src/lib/components/ui/context-menu.stories.tsx +38 -0
  499. package/src/lib/components/ui/context-menu.tsx +252 -0
  500. package/src/lib/components/ui/dialog.stories.tsx +52 -0
  501. package/src/lib/components/ui/dialog.tsx +116 -0
  502. package/src/lib/components/ui/drawer.stories.tsx +50 -0
  503. package/src/lib/components/ui/drawer.tsx +133 -0
  504. package/src/lib/components/ui/dropdown-menu.stories.tsx +41 -0
  505. package/src/lib/components/ui/dropdown-menu.tsx +223 -0
  506. package/src/lib/components/ui/form.tsx +141 -0
  507. package/src/lib/components/ui/grid-layout.tsx +376 -0
  508. package/src/lib/components/ui/hover-card.stories.tsx +38 -0
  509. package/src/lib/components/ui/hover-card.tsx +36 -0
  510. package/src/lib/components/ui/input-group.tsx +149 -0
  511. package/src/lib/components/ui/input-otp.stories.tsx +30 -0
  512. package/src/lib/components/ui/input-otp.tsx +77 -0
  513. package/src/lib/components/ui/input.stories.tsx +38 -0
  514. package/src/lib/components/ui/input.tsx +19 -0
  515. package/src/lib/components/ui/label.stories.tsx +24 -0
  516. package/src/lib/components/ui/label.tsx +21 -0
  517. package/src/lib/components/ui/menubar.stories.tsx +53 -0
  518. package/src/lib/components/ui/menubar.tsx +274 -0
  519. package/src/lib/components/ui/navigation-menu.stories.tsx +54 -0
  520. package/src/lib/components/ui/navigation-menu.tsx +168 -0
  521. package/src/lib/components/ui/pagination.stories.tsx +51 -0
  522. package/src/lib/components/ui/pagination.tsx +106 -0
  523. package/src/lib/components/ui/password-input.stories.tsx +32 -0
  524. package/src/lib/components/ui/password-input.tsx +29 -0
  525. package/src/lib/components/ui/popover.stories.tsx +33 -0
  526. package/src/lib/components/ui/popover.tsx +40 -0
  527. package/src/lib/components/ui/progress.stories.tsx +27 -0
  528. package/src/lib/components/ui/progress.tsx +29 -0
  529. package/src/lib/components/ui/radio-group.stories.tsx +34 -0
  530. package/src/lib/components/ui/radio-group.tsx +45 -0
  531. package/src/lib/components/ui/resizable.stories.tsx +32 -0
  532. package/src/lib/components/ui/resizable.tsx +54 -0
  533. package/src/lib/components/ui/scroll-area.stories.tsx +31 -0
  534. package/src/lib/components/ui/scroll-area.tsx +50 -0
  535. package/src/lib/components/ui/select.stories.tsx +36 -0
  536. package/src/lib/components/ui/select.tsx +183 -0
  537. package/src/lib/components/ui/separator.stories.tsx +35 -0
  538. package/src/lib/components/ui/separator.tsx +26 -0
  539. package/src/lib/components/ui/sheet.stories.tsx +50 -0
  540. package/src/lib/components/ui/sheet.tsx +118 -0
  541. package/src/lib/components/ui/sidebar-context.ts +16 -0
  542. package/src/lib/components/ui/sidebar.tsx +686 -0
  543. package/src/lib/components/ui/skeleton.stories.tsx +26 -0
  544. package/src/lib/components/ui/skeleton.tsx +13 -0
  545. package/src/lib/components/ui/slider.stories.tsx +37 -0
  546. package/src/lib/components/ui/slider.tsx +63 -0
  547. package/src/lib/components/ui/sonner.tsx +27 -0
  548. package/src/lib/components/ui/switch.stories.tsx +31 -0
  549. package/src/lib/components/ui/switch.tsx +26 -0
  550. package/src/lib/components/ui/table.stories.tsx +52 -0
  551. package/src/lib/components/ui/table.tsx +82 -0
  552. package/src/lib/components/ui/tabs.stories.tsx +29 -0
  553. package/src/lib/components/ui/tabs.tsx +48 -0
  554. package/src/lib/components/ui/textarea.stories.tsx +32 -0
  555. package/src/lib/components/ui/textarea.tsx +18 -0
  556. package/src/lib/components/ui/toggle-group.stories.tsx +31 -0
  557. package/src/lib/components/ui/toggle-group.tsx +73 -0
  558. package/src/lib/components/ui/toggle.stories.tsx +39 -0
  559. package/src/lib/components/ui/toggle.tsx +45 -0
  560. package/src/lib/components/ui/tooltip.stories.tsx +30 -0
  561. package/src/lib/components/ui/tooltip.tsx +51 -0
  562. package/src/lib/constants.ts +336 -0
  563. package/src/lib/framework/alert/alert-extensions.tsx +19 -0
  564. package/src/lib/framework/alert/alert-item.tsx +44 -0
  565. package/src/lib/framework/alert/alerts-indicator.tsx +22 -0
  566. package/src/lib/framework/alert/search-index-buffer-alert/search-index-buffer-alert.ts +41 -0
  567. package/src/lib/framework/component-registry/component-registry.tsx +18 -0
  568. package/src/lib/framework/component-registry/display-component.tsx +28 -0
  569. package/src/lib/framework/dashboard-widget/base-widget.tsx +101 -0
  570. package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +152 -0
  571. package/src/lib/framework/dashboard-widget/latest-orders-widget/latest-orders-widget.graphql.ts +35 -0
  572. package/src/lib/framework/dashboard-widget/metrics-widget/chart.tsx +40 -0
  573. package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +96 -0
  574. package/src/lib/framework/dashboard-widget/metrics-widget/metrics-widget.graphql.ts +20 -0
  575. package/src/lib/framework/dashboard-widget/orders-summary/index.tsx +113 -0
  576. package/src/lib/framework/dashboard-widget/orders-summary/order-summary-widget.graphql.ts +14 -0
  577. package/src/lib/framework/dashboard-widget/widget-extensions.tsx +19 -0
  578. package/src/lib/framework/dashboard-widget/widget-filters-context.tsx +36 -0
  579. package/src/lib/framework/data-table/data-table-extensions.ts +35 -0
  580. package/src/lib/framework/defaults.ts +270 -0
  581. package/src/lib/framework/document-extension/extend-detail-form-query.ts +50 -0
  582. package/src/lib/framework/document-extension/extend-document.spec.ts +884 -0
  583. package/src/lib/framework/document-extension/extend-document.ts +159 -0
  584. package/src/lib/framework/document-introspection/add-custom-fields.spec.ts +1458 -0
  585. package/src/lib/framework/document-introspection/add-custom-fields.ts +452 -0
  586. package/src/lib/framework/document-introspection/get-document-structure.spec.ts +581 -0
  587. package/src/lib/framework/document-introspection/get-document-structure.ts +669 -0
  588. package/src/lib/framework/document-introspection/hooks.ts +13 -0
  589. package/src/lib/framework/document-introspection/include-only-selected-list-fields.spec.ts +1840 -0
  590. package/src/lib/framework/document-introspection/include-only-selected-list-fields.ts +940 -0
  591. package/src/lib/framework/document-introspection/testing-utils.ts +161 -0
  592. package/src/lib/framework/extension-api/define-dashboard-extension.ts +99 -0
  593. package/src/lib/framework/extension-api/display-component-extensions.tsx +58 -0
  594. package/src/lib/framework/extension-api/extension-api-types.ts +92 -0
  595. package/src/lib/framework/extension-api/input-component-extensions.tsx +96 -0
  596. package/src/lib/framework/extension-api/logic/alerts.ts +11 -0
  597. package/src/lib/framework/extension-api/logic/data-table.ts +37 -0
  598. package/src/lib/framework/extension-api/logic/detail-forms.ts +35 -0
  599. package/src/lib/framework/extension-api/logic/form-components.ts +14 -0
  600. package/src/lib/framework/extension-api/logic/history-entries.ts +24 -0
  601. package/src/lib/framework/extension-api/logic/index.ts +10 -0
  602. package/src/lib/framework/extension-api/logic/layout.ts +22 -0
  603. package/src/lib/framework/extension-api/logic/login.ts +17 -0
  604. package/src/lib/framework/extension-api/logic/navigation.ts +41 -0
  605. package/src/lib/framework/extension-api/logic/widgets.ts +10 -0
  606. package/src/lib/framework/extension-api/types/alerts.ts +59 -0
  607. package/src/lib/framework/extension-api/types/data-table.ts +159 -0
  608. package/src/lib/framework/extension-api/types/detail-forms.ts +58 -0
  609. package/src/lib/framework/extension-api/types/form-components.ts +41 -0
  610. package/src/lib/framework/extension-api/types/history-entries.ts +120 -0
  611. package/src/lib/framework/extension-api/types/index.ts +10 -0
  612. package/src/lib/framework/extension-api/types/layout.ts +141 -0
  613. package/src/lib/framework/extension-api/types/login.ts +76 -0
  614. package/src/lib/framework/extension-api/types/navigation.ts +105 -0
  615. package/src/lib/framework/extension-api/types/widgets.ts +101 -0
  616. package/src/lib/framework/extension-api/use-dashboard-extensions.ts +27 -0
  617. package/src/lib/framework/extension-api/use-login-extensions.ts +26 -0
  618. package/src/lib/framework/form-engine/custom-form-component-extensions.ts +15 -0
  619. package/src/lib/framework/form-engine/custom-form-component.tsx +16 -0
  620. package/src/lib/framework/form-engine/default-input-for-type.tsx +35 -0
  621. package/src/lib/framework/form-engine/form-control-adapter.tsx +193 -0
  622. package/src/lib/framework/form-engine/form-engine-types.ts +169 -0
  623. package/src/lib/framework/form-engine/form-schema-tools.spec.ts +610 -0
  624. package/src/lib/framework/form-engine/form-schema-tools.ts +417 -0
  625. package/src/lib/framework/form-engine/overridden-form-component.tsx +51 -0
  626. package/src/lib/framework/form-engine/use-generated-form.tsx +226 -0
  627. package/src/lib/framework/form-engine/utils.spec.ts +37 -0
  628. package/src/lib/framework/form-engine/utils.ts +356 -0
  629. package/src/lib/framework/form-engine/value-transformers.ts +150 -0
  630. package/src/lib/framework/history-entry/history-entry-extensions.ts +11 -0
  631. package/src/lib/framework/history-entry/history-entry.tsx +129 -0
  632. package/src/lib/framework/layout-engine/custom-form-page.stories.tsx +344 -0
  633. package/src/lib/framework/layout-engine/dev-mode-button.tsx +24 -0
  634. package/src/lib/framework/layout-engine/layout-extensions.ts +27 -0
  635. package/src/lib/framework/layout-engine/location-wrapper.tsx +122 -0
  636. package/src/lib/framework/layout-engine/page-block-provider.tsx +6 -0
  637. package/src/lib/framework/layout-engine/page-layout.spec.tsx +138 -0
  638. package/src/lib/framework/layout-engine/page-layout.tsx +700 -0
  639. package/src/lib/framework/layout-engine/page-provider.tsx +10 -0
  640. package/src/lib/framework/layout-engine/page.stories.tsx +275 -0
  641. package/src/lib/framework/nav-menu/nav-menu-extensions.ts +112 -0
  642. package/src/lib/framework/page/detail-page-route-loader.tsx +67 -0
  643. package/src/lib/framework/page/detail-page.stories.tsx +151 -0
  644. package/src/lib/framework/page/detail-page.tsx +255 -0
  645. package/src/lib/framework/page/list-page.stories.tsx +217 -0
  646. package/src/lib/framework/page/list-page.tsx +613 -0
  647. package/src/lib/framework/page/page-api.ts +9 -0
  648. package/src/lib/framework/page/page-types.ts +51 -0
  649. package/src/lib/framework/page/use-detail-page.ts +341 -0
  650. package/src/lib/framework/page/use-extended-router.tsx +139 -0
  651. package/src/lib/framework/registry/global-registry.ts +50 -0
  652. package/src/lib/framework/registry/registry-types.ts +32 -0
  653. package/src/lib/graphql/api.ts +123 -0
  654. package/src/lib/graphql/common-operations.ts +37 -0
  655. package/src/lib/graphql/fragments.ts +71 -0
  656. package/src/lib/graphql/graphql-env.d.ts +523 -0
  657. package/src/lib/graphql/graphql.ts +15 -0
  658. package/src/lib/graphql/settings-store-operations.ts +17 -0
  659. package/src/lib/hooks/use-alerts.ts +84 -0
  660. package/src/lib/hooks/use-auth.tsx +21 -0
  661. package/src/lib/hooks/use-channel.ts +27 -0
  662. package/src/lib/hooks/use-custom-field-config.ts +27 -0
  663. package/src/lib/hooks/use-display-locale.ts +40 -0
  664. package/src/lib/hooks/use-drag-and-drop.ts +86 -0
  665. package/src/lib/hooks/use-dynamic-translations.ts +46 -0
  666. package/src/lib/hooks/use-extended-detail-query.ts +37 -0
  667. package/src/lib/hooks/use-extended-list-query.ts +80 -0
  668. package/src/lib/hooks/use-floating-bulk-actions.ts +83 -0
  669. package/src/lib/hooks/use-grouped-permissions.ts +55 -0
  670. package/src/lib/hooks/use-local-format.ts +186 -0
  671. package/src/lib/hooks/use-mobile.ts +19 -0
  672. package/src/lib/hooks/use-page-block.tsx +27 -0
  673. package/src/lib/hooks/use-page.tsx +10 -0
  674. package/src/lib/hooks/use-permissions.ts +40 -0
  675. package/src/lib/hooks/use-saved-views.ts +238 -0
  676. package/src/lib/hooks/use-server-config.ts +4 -0
  677. package/src/lib/hooks/use-sorted-languages.ts +41 -0
  678. package/src/lib/hooks/use-theme.ts +10 -0
  679. package/src/lib/hooks/use-ui-language-loader.ts +30 -0
  680. package/src/lib/hooks/use-user-settings.tsx +12 -0
  681. package/src/lib/index.ts +293 -0
  682. package/src/lib/lib/load-i18n-messages.ts +20 -0
  683. package/src/lib/lib/trans.tsx +20 -0
  684. package/src/lib/lib/utils.ts +111 -0
  685. package/src/lib/providers/alerts-provider.tsx +60 -0
  686. package/src/lib/providers/auth.tsx +232 -0
  687. package/src/lib/providers/channel-provider.tsx +245 -0
  688. package/src/lib/providers/i18n-provider.tsx +21 -0
  689. package/src/lib/providers/server-config.tsx +289 -0
  690. package/src/lib/providers/theme-provider.tsx +56 -0
  691. package/src/lib/providers/user-settings.tsx +244 -0
  692. package/src/lib/types/saved-views.ts +42 -0
  693. package/src/lib/utils/config-utils.ts +19 -0
  694. package/src/lib/utils/global-languages.ts +268 -0
  695. package/src/lib/utils/saved-views-utils.ts +40 -0
  696. package/src/lib/virtual.d.ts +39 -0
  697. package/src/vite-env.d.ts +2 -0
@@ -0,0 +1,35 @@
1
+ import { GraphQLTypesLoader } from '@nestjs/graphql';
2
+ import { getConfig, getFinalVendureSchema, resetConfig, runPluginConfigurations, setConfig, VENDURE_ADMIN_API_TYPE_PATHS, } from '@vendure/core';
3
+ import { buildSchema } from 'graphql';
4
+ let schemaPromise;
5
+ /**
6
+ * @description
7
+ * This function generates a GraphQL schema from the Vendure config.
8
+ * It is used to generate the schema for the dashboard.
9
+ */
10
+ export async function generateSchema({ vendureConfig, }) {
11
+ if (!schemaPromise) {
12
+ /* eslint-disable-next-line @typescript-eslint/no-misused-promises */
13
+ schemaPromise = new Promise(async (resolve, reject) => {
14
+ resetConfig();
15
+ try {
16
+ await setConfig(vendureConfig !== null && vendureConfig !== void 0 ? vendureConfig : {});
17
+ const runtimeConfig = await runPluginConfigurations(getConfig());
18
+ const typesLoader = new GraphQLTypesLoader();
19
+ const finalSchema = await getFinalVendureSchema({
20
+ config: runtimeConfig,
21
+ typePaths: VENDURE_ADMIN_API_TYPE_PATHS,
22
+ typesLoader,
23
+ apiType: 'admin',
24
+ output: 'sdl',
25
+ });
26
+ const safeSchema = buildSchema(finalSchema);
27
+ resolve(safeSchema);
28
+ }
29
+ catch (e) {
30
+ reject(e);
31
+ }
32
+ });
33
+ }
34
+ return schemaPromise;
35
+ }
@@ -0,0 +1,9 @@
1
+ import { Logger, TransformTsConfigPathMappingsFn } from '../types.js';
2
+ export interface TsConfigPathsConfig {
3
+ baseUrl: string;
4
+ paths: Record<string, string[]>;
5
+ }
6
+ /**
7
+ * Finds and parses tsconfig files in the given directory and its parent directories.
8
+ */
9
+ export declare function findTsConfigPaths(configPath: string, logger: Logger, phase: 'compiling' | 'loading', transformTsConfigPathMappings: TransformTsConfigPathMappingsFn): Promise<TsConfigPathsConfig | undefined>;
@@ -0,0 +1,51 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import stripJsonComments from 'strip-json-comments';
4
+ /**
5
+ * Finds and parses tsconfig files in the given directory and its parent directories.
6
+ */
7
+ export async function findTsConfigPaths(configPath, logger, phase, transformTsConfigPathMappings) {
8
+ let currentDir = path.dirname(configPath);
9
+ while (currentDir !== path.parse(currentDir).root) {
10
+ try {
11
+ const files = await fs.readdir(currentDir);
12
+ const tsConfigFiles = files.filter(file => /^tsconfig(\..*)?\.json$/.test(file));
13
+ for (const fileName of tsConfigFiles) {
14
+ const tsConfigFilePath = path.join(currentDir, fileName);
15
+ try {
16
+ const { paths, baseUrl } = await getCompilerOptionsFromFile(tsConfigFilePath);
17
+ if (paths) {
18
+ const tsConfigBaseUrl = path.resolve(currentDir, baseUrl || '.');
19
+ const pathMappings = getTransformedPathMappings(paths, phase, transformTsConfigPathMappings);
20
+ return { baseUrl: tsConfigBaseUrl, paths: pathMappings };
21
+ }
22
+ }
23
+ catch (e) {
24
+ logger.warn(`Could not read or parse tsconfig file ${tsConfigFilePath}: ${e instanceof Error ? e.message : String(e)}`);
25
+ }
26
+ }
27
+ }
28
+ catch (e) {
29
+ logger.warn(`Could not read directory ${currentDir}: ${e instanceof Error ? e.message : String(e)}`);
30
+ }
31
+ currentDir = path.dirname(currentDir);
32
+ }
33
+ return undefined;
34
+ }
35
+ async function getCompilerOptionsFromFile(tsConfigFilePath) {
36
+ const tsConfigContent = await fs.readFile(tsConfigFilePath, 'utf-8');
37
+ const tsConfig = JSON.parse(stripJsonComments(tsConfigContent));
38
+ return tsConfig.compilerOptions || {};
39
+ }
40
+ function getTransformedPathMappings(paths, phase, transformTsConfigPathMappings) {
41
+ const pathMappings = {};
42
+ for (const [alias, patterns] of Object.entries(paths)) {
43
+ const normalizedPatterns = patterns.map(pattern => pattern.replace(/\\/g, '/'));
44
+ pathMappings[alias] = transformTsConfigPathMappings({
45
+ phase,
46
+ alias,
47
+ patterns: normalizedPatterns,
48
+ });
49
+ }
50
+ return pathMappings;
51
+ }
@@ -0,0 +1,3 @@
1
+ import { VendureConfig } from '@vendure/core';
2
+ import { ResolvedUiConfig, UiConfigPluginOptions } from '../vite-plugin-ui-config.js';
3
+ export declare function getUiConfig(config: VendureConfig, pluginOptions: UiConfigPluginOptions): ResolvedUiConfig;
@@ -0,0 +1,30 @@
1
+ import { ADMIN_API_PATH, DEFAULT_AUTH_TOKEN_HEADER_KEY, DEFAULT_CHANNEL_TOKEN_KEY, } from '@vendure/common/lib/shared-constants';
2
+ import { defaultAvailableLanguages, defaultAvailableLocales, defaultLanguage, defaultLocale, } from '../constants.js';
3
+ export function getUiConfig(config, pluginOptions) {
4
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
5
+ const { authOptions, apiOptions } = config;
6
+ // Merge API configuration with defaults
7
+ const api = {
8
+ adminApiPath: (_c = (_b = (_a = pluginOptions.api) === null || _a === void 0 ? void 0 : _a.adminApiPath) !== null && _b !== void 0 ? _b : apiOptions.adminApiPath) !== null && _c !== void 0 ? _c : ADMIN_API_PATH,
9
+ host: (_e = (_d = pluginOptions.api) === null || _d === void 0 ? void 0 : _d.host) !== null && _e !== void 0 ? _e : 'auto',
10
+ port: (_g = (_f = pluginOptions.api) === null || _f === void 0 ? void 0 : _f.port) !== null && _g !== void 0 ? _g : 'auto',
11
+ tokenMethod: (_j = (_h = pluginOptions.api) === null || _h === void 0 ? void 0 : _h.tokenMethod) !== null && _j !== void 0 ? _j : (authOptions.tokenMethod === 'bearer' ? 'bearer' : 'cookie'),
12
+ authTokenHeaderKey: (_m = (_l = (_k = pluginOptions.api) === null || _k === void 0 ? void 0 : _k.authTokenHeaderKey) !== null && _l !== void 0 ? _l : authOptions.authTokenHeaderKey) !== null && _m !== void 0 ? _m : DEFAULT_AUTH_TOKEN_HEADER_KEY,
13
+ channelTokenKey: (_q = (_p = (_o = pluginOptions.api) === null || _o === void 0 ? void 0 : _o.channelTokenKey) !== null && _p !== void 0 ? _p : apiOptions.channelTokenKey) !== null && _q !== void 0 ? _q : DEFAULT_CHANNEL_TOKEN_KEY,
14
+ };
15
+ // Merge i18n configuration with defaults
16
+ const i18n = {
17
+ defaultLanguage: (_s = (_r = pluginOptions.i18n) === null || _r === void 0 ? void 0 : _r.defaultLanguage) !== null && _s !== void 0 ? _s : defaultLanguage,
18
+ defaultLocale: (_u = (_t = pluginOptions.i18n) === null || _t === void 0 ? void 0 : _t.defaultLocale) !== null && _u !== void 0 ? _u : defaultLocale,
19
+ availableLanguages: ((_v = pluginOptions.i18n) === null || _v === void 0 ? void 0 : _v.availableLanguages) && pluginOptions.i18n.availableLanguages.length > 0
20
+ ? pluginOptions.i18n.availableLanguages
21
+ : defaultAvailableLanguages,
22
+ availableLocales: ((_w = pluginOptions.i18n) === null || _w === void 0 ? void 0 : _w.availableLocales) && pluginOptions.i18n.availableLocales.length > 0
23
+ ? pluginOptions.i18n.availableLocales
24
+ : defaultAvailableLocales,
25
+ };
26
+ return {
27
+ api,
28
+ i18n,
29
+ };
30
+ }
@@ -0,0 +1,24 @@
1
+ import { Plugin } from 'vite';
2
+ export type FieldInfoTuple = readonly [
3
+ type: string,
4
+ nullable: boolean,
5
+ list: boolean,
6
+ isPaginatedList: boolean
7
+ ];
8
+ export interface SchemaInfo {
9
+ types: {
10
+ [typename: string]: {
11
+ [fieldname: string]: FieldInfoTuple;
12
+ };
13
+ };
14
+ inputs: {
15
+ [typename: string]: {
16
+ [fieldname: string]: FieldInfoTuple;
17
+ };
18
+ };
19
+ scalars: string[];
20
+ enums: {
21
+ [typename: string]: string[];
22
+ };
23
+ }
24
+ export declare function adminApiSchemaPlugin(): Plugin;
@@ -0,0 +1,82 @@
1
+ import { GraphQLList, GraphQLNonNull, GraphQLObjectType, isEnumType, isInputObjectType, isObjectType, isScalarType, } from 'graphql';
2
+ import { generateSchema } from './utils/schema-generator.js';
3
+ import { getConfigLoaderApi } from './vite-plugin-config-loader.js';
4
+ const virtualModuleId = 'virtual:admin-api-schema';
5
+ const resolvedVirtualModuleId = `\0${virtualModuleId}`;
6
+ export function adminApiSchemaPlugin() {
7
+ let configLoaderApi;
8
+ let schemaInfo;
9
+ return {
10
+ name: 'vendure:admin-api-schema',
11
+ configResolved({ plugins }) {
12
+ configLoaderApi = getConfigLoaderApi(plugins);
13
+ },
14
+ async buildStart() {
15
+ const { vendureConfig } = await configLoaderApi.getVendureConfig();
16
+ if (!schemaInfo) {
17
+ const safeSchema = await generateSchema({ vendureConfig });
18
+ schemaInfo = generateSchemaInfo(safeSchema);
19
+ }
20
+ },
21
+ resolveId(id) {
22
+ if (id === virtualModuleId) {
23
+ return resolvedVirtualModuleId;
24
+ }
25
+ },
26
+ load(id) {
27
+ if (id === resolvedVirtualModuleId) {
28
+ return `
29
+ export const schemaInfo = ${JSON.stringify(schemaInfo)};
30
+ `;
31
+ }
32
+ },
33
+ };
34
+ }
35
+ function getTypeInfo(type) {
36
+ let nullable = true;
37
+ let list = false;
38
+ let isPaginatedList = false;
39
+ // Unwrap NonNull
40
+ if (type instanceof GraphQLNonNull) {
41
+ nullable = false;
42
+ type = type.ofType;
43
+ }
44
+ // Unwrap List
45
+ if (type instanceof GraphQLList) {
46
+ list = true;
47
+ type = type.ofType;
48
+ }
49
+ if (type instanceof GraphQLObjectType) {
50
+ if (type.getInterfaces().some(i => i.name === 'PaginatedList')) {
51
+ isPaginatedList = true;
52
+ }
53
+ }
54
+ return [type.toString().replace(/!$/, ''), nullable, list, isPaginatedList];
55
+ }
56
+ function generateSchemaInfo(schema) {
57
+ const types = schema.getTypeMap();
58
+ const result = { types: {}, inputs: {}, scalars: [], enums: {} };
59
+ Object.values(types).forEach(type => {
60
+ if (isObjectType(type)) {
61
+ const fields = type.getFields();
62
+ result.types[type.name] = {};
63
+ Object.entries(fields).forEach(([fieldName, field]) => {
64
+ result.types[type.name][fieldName] = getTypeInfo(field.type);
65
+ });
66
+ }
67
+ if (isInputObjectType(type)) {
68
+ const fields = type.getFields();
69
+ result.inputs[type.name] = {};
70
+ Object.entries(fields).forEach(([fieldName, field]) => {
71
+ result.inputs[type.name][fieldName] = getTypeInfo(field.type);
72
+ });
73
+ }
74
+ if (isScalarType(type)) {
75
+ result.scalars.push(type.name);
76
+ }
77
+ if (isEnumType(type)) {
78
+ result.enums[type.name] = type.getValues().map(v => v.value);
79
+ }
80
+ });
81
+ return result;
82
+ }
@@ -0,0 +1,16 @@
1
+ import { Plugin } from 'vite';
2
+ import { CompileResult, CompilerOptions } from './utils/compiler.js';
3
+ export interface ConfigLoaderApi {
4
+ getVendureConfig(): Promise<CompileResult>;
5
+ }
6
+ export declare const configLoaderName = "vendure:config-loader";
7
+ /**
8
+ * This Vite plugin loads the VendureConfig from the specified file path, and
9
+ * makes it available to other plugins via the `ConfigLoaderApi`.
10
+ */
11
+ export declare function configLoaderPlugin(options: CompilerOptions): Plugin;
12
+ /**
13
+ * Inter-plugin dependencies implemented following the pattern given here:
14
+ * https://rollupjs.org/plugin-development/#direct-plugin-communication
15
+ */
16
+ export declare function getConfigLoaderApi(plugins: readonly Plugin[]): ConfigLoaderApi;
@@ -0,0 +1,70 @@
1
+ import { compile } from './utils/compiler.js';
2
+ import { debugLogger } from './utils/logger.js';
3
+ export const configLoaderName = 'vendure:config-loader';
4
+ /**
5
+ * This Vite plugin loads the VendureConfig from the specified file path, and
6
+ * makes it available to other plugins via the `ConfigLoaderApi`.
7
+ */
8
+ export function configLoaderPlugin(options) {
9
+ let result;
10
+ const onConfigLoaded = [];
11
+ return {
12
+ name: configLoaderName,
13
+ async buildStart() {
14
+ this.info(`Loading Vendure config. This can take a short while depending on the size of your project...`);
15
+ try {
16
+ const startTime = Date.now();
17
+ result = await compile(Object.assign(Object.assign({}, options), { logger: process.env.LOG
18
+ ? debugLogger
19
+ : {
20
+ info: (message) => this.info(message),
21
+ warn: (message) => this.warn(message),
22
+ debug: (message) => this.debug(message),
23
+ error: (message) => this.error(message),
24
+ } }));
25
+ const endTime = Date.now();
26
+ const duration = endTime - startTime;
27
+ const pluginNames = result.pluginInfo
28
+ .map(p => `${p.name} ${p.sourcePluginPath ? '(local)' : '(npm)'}`)
29
+ .join(', ');
30
+ this.info(`Found ${result.pluginInfo.length} plugins: ${pluginNames}`);
31
+ this.info(`Vendure config loaded (using export "${result.exportedSymbolName}") in ${duration}ms`);
32
+ }
33
+ catch (e) {
34
+ if (e instanceof Error) {
35
+ const message = [
36
+ e.message,
37
+ `If you are using a monorepo, you may need to provide a custom pathAdapter to resolve the paths correctly.`,
38
+ ].join('\n');
39
+ this.error(`Error loading Vendure config: ${message}`);
40
+ }
41
+ }
42
+ onConfigLoaded.forEach(fn => fn());
43
+ },
44
+ api: {
45
+ getVendureConfig() {
46
+ if (result) {
47
+ return Promise.resolve(result);
48
+ }
49
+ else {
50
+ return new Promise(resolve => {
51
+ onConfigLoaded.push(() => {
52
+ resolve(result);
53
+ });
54
+ });
55
+ }
56
+ },
57
+ },
58
+ };
59
+ }
60
+ /**
61
+ * Inter-plugin dependencies implemented following the pattern given here:
62
+ * https://rollupjs.org/plugin-development/#direct-plugin-communication
63
+ */
64
+ export function getConfigLoaderApi(plugins) {
65
+ const parentPlugin = plugins.find(plugin => plugin.name === configLoaderName);
66
+ if (!parentPlugin) {
67
+ throw new Error(`This plugin depends on the "${configLoaderName}" plugin.`);
68
+ }
69
+ return parentPlugin.api;
70
+ }
@@ -0,0 +1,4 @@
1
+ import { Plugin } from 'vite';
2
+ export declare function viteConfigPlugin({ packageRoot }: {
3
+ packageRoot: string;
4
+ }): Plugin;
@@ -0,0 +1,60 @@
1
+ import path from 'path';
2
+ export function viteConfigPlugin({ packageRoot }) {
3
+ return {
4
+ name: 'vendure:vite-config-plugin',
5
+ config: (config, env) => {
6
+ var _a, _b, _c, _d, _e, _f;
7
+ // Only set the vite `root` to the dashboard package when running the dev server.
8
+ // During a production build we still need to reference the dashboard source which
9
+ // lives in `node_modules`, but we don't want the build output to be emitted in there.
10
+ // Therefore, we set `root` only for `serve` and, for `build`, we instead make sure that
11
+ // an `outDir` **outside** of `node_modules` is used (defaulting to the current working
12
+ // directory if the user did not provide one already).
13
+ config.root = packageRoot;
14
+ config.publicDir = (_a = config.publicDir) !== null && _a !== void 0 ? _a : path.join(packageRoot, 'public');
15
+ // If we are building and no explicit outDir has been provided (or it is a relative path),
16
+ // set it to an **absolute** path relative to the cwd so that the output never ends up in
17
+ // `node_modules`.
18
+ if (env.command === 'build') {
19
+ const buildConfig = (_b = config.build) !== null && _b !== void 0 ? _b : {};
20
+ const outDir = buildConfig.outDir;
21
+ const hasOutDir = typeof outDir === 'string' && outDir.length > 0;
22
+ const outDirIsAbsolute = hasOutDir && path.isAbsolute(outDir);
23
+ const normalizedOutDir = hasOutDir
24
+ ? outDirIsAbsolute
25
+ ? outDir
26
+ : path.resolve(process.cwd(), outDir)
27
+ : path.resolve(process.cwd(), 'dist');
28
+ config.build = Object.assign(Object.assign({}, buildConfig), { outDir: normalizedOutDir });
29
+ }
30
+ config.resolve = {
31
+ alias: Object.assign(Object.assign({}, ((_d = (_c = config.resolve) === null || _c === void 0 ? void 0 : _c.alias) !== null && _d !== void 0 ? _d : {})), {
32
+ // See the readme for an explanation of this alias.
33
+ '@/vdb': path.resolve(packageRoot, './src/lib'), '@/graphql': path.resolve(packageRoot, './src/lib/graphql') }),
34
+ };
35
+ // This is required to prevent Vite from pre-bundling the
36
+ // dashboard source when it resides in node_modules.
37
+ config.optimizeDeps = Object.assign(Object.assign({}, config.optimizeDeps), { exclude: [
38
+ ...(((_e = config.optimizeDeps) === null || _e === void 0 ? void 0 : _e.exclude) || []),
39
+ '@wilshop/dashboard',
40
+ '@/vdb',
41
+ 'virtual:vendure-ui-config',
42
+ 'virtual:admin-api-schema',
43
+ 'virtual:dashboard-extensions',
44
+ ],
45
+ // We however do want to pre-bundle recharts, as it depends
46
+ // on lodash which is a CJS packages and _does_ require
47
+ // pre-bundling.
48
+ include: [
49
+ ...(((_f = config.optimizeDeps) === null || _f === void 0 ? void 0 : _f.include) || []),
50
+ '@/components > recharts',
51
+ '@/components > react-dropzone',
52
+ '@/components > @tiptap/react', // https://github.com/fawmi/vue-google-maps/issues/148#issuecomment-1235143844
53
+ '@vendure/common/lib/generated-types',
54
+ '@radix-ui/react-portal > react-dom',
55
+ '@messageformat/parser',
56
+ ] });
57
+ return config;
58
+ },
59
+ };
60
+ }
@@ -0,0 +1,7 @@
1
+ import { Plugin } from 'vite';
2
+ /**
3
+ * This Vite plugin scans the configured plugins for any dashboard extensions and dynamically
4
+ * generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
5
+ * function which can then be imported and executed in the Dashboard app.
6
+ */
7
+ export declare function dashboardMetadataPlugin(): Plugin;
@@ -0,0 +1,61 @@
1
+ import path from 'path';
2
+ import { pathToFileURL } from 'node:url';
3
+ import { getConfigLoaderApi } from './vite-plugin-config-loader.js';
4
+ const virtualModuleId = 'virtual:dashboard-extensions';
5
+ const resolvedVirtualModuleId = `\0${virtualModuleId}`;
6
+ /**
7
+ * This Vite plugin scans the configured plugins for any dashboard extensions and dynamically
8
+ * generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
9
+ * function which can then be imported and executed in the Dashboard app.
10
+ */
11
+ export function dashboardMetadataPlugin() {
12
+ let configLoaderApi;
13
+ let loadVendureConfigResult;
14
+ return {
15
+ name: 'vendure:dashboard-extensions-metadata',
16
+ configResolved({ plugins }) {
17
+ configLoaderApi = getConfigLoaderApi(plugins);
18
+ },
19
+ resolveId(id) {
20
+ if (id === virtualModuleId) {
21
+ return resolvedVirtualModuleId;
22
+ }
23
+ },
24
+ async load(id) {
25
+ var _a;
26
+ if (id === resolvedVirtualModuleId) {
27
+ const startTime = Date.now();
28
+ this.debug('Loading dashboard extensions...');
29
+ if (!loadVendureConfigResult) {
30
+ const configStart = Date.now();
31
+ loadVendureConfigResult = await configLoaderApi.getVendureConfig();
32
+ this.debug(`Loaded Vendure config in ${Date.now() - configStart}ms`);
33
+ }
34
+ const { pluginInfo } = loadVendureConfigResult;
35
+ const resolveStart = Date.now();
36
+ const pluginsWithExtensions = (_a = pluginInfo === null || pluginInfo === void 0 ? void 0 : pluginInfo.map(({ dashboardEntryPath, pluginPath, sourcePluginPath }) => {
37
+ if (!dashboardEntryPath) {
38
+ return null;
39
+ }
40
+ // For local plugins, use the sourcePluginPath to resolve the dashboard extension
41
+ const basePath = sourcePluginPath
42
+ ? path.dirname(sourcePluginPath)
43
+ : path.dirname(pluginPath);
44
+ const resolved = path.resolve(basePath, dashboardEntryPath);
45
+ this.debug(`Resolved extension path: ${resolved}`);
46
+ return resolved;
47
+ }).filter(x => x != null)) !== null && _a !== void 0 ? _a : [];
48
+ this.info(`Found ${pluginsWithExtensions.length} Dashboard extensions in ${Date.now() - resolveStart}ms`);
49
+ this.debug(`Total dashboard extension loading completed in ${Date.now() - startTime}ms`);
50
+ return `
51
+ export async function runDashboardExtensions() {
52
+ ${pluginsWithExtensions
53
+ .map(extension => {
54
+ return `await import(\`${pathToFileURL(extension)}\`);`;
55
+ })
56
+ .join('\n')}
57
+ }`;
58
+ }
59
+ },
60
+ };
61
+ }
@@ -0,0 +1,6 @@
1
+ import { Plugin } from 'vite';
2
+ export declare function gqlTadaPlugin(options: {
3
+ gqlTadaOutputPath: string;
4
+ tempDir: string;
5
+ packageRoot: string;
6
+ }): Plugin;
@@ -0,0 +1,51 @@
1
+ import { generateOutput } from '@gql.tada/cli-utils';
2
+ import * as fs from 'fs/promises';
3
+ import { printSchema } from 'graphql';
4
+ import * as path from 'path';
5
+ import { generateSchema } from './utils/schema-generator.js';
6
+ import { getConfigLoaderApi } from './vite-plugin-config-loader.js';
7
+ export function gqlTadaPlugin(options) {
8
+ let configLoaderApi;
9
+ return {
10
+ name: 'vendure:gql-tada',
11
+ configResolved({ plugins }) {
12
+ configLoaderApi = getConfigLoaderApi(plugins);
13
+ },
14
+ async buildStart() {
15
+ const { vendureConfig } = await configLoaderApi.getVendureConfig();
16
+ const safeSchema = await generateSchema({ vendureConfig });
17
+ const tsConfigContent = {
18
+ compilerOptions: {
19
+ plugins: [
20
+ {
21
+ name: 'gql.tada/ts-plugin',
22
+ schema: './schema.graphql',
23
+ },
24
+ ],
25
+ },
26
+ };
27
+ const tsConfigPath = path.join(options.tempDir, 'tsconfig.json');
28
+ await fs.writeFile(tsConfigPath, JSON.stringify(tsConfigContent, null, 2));
29
+ const schemaPath = path.join(options.tempDir, 'schema.graphql');
30
+ await fs.writeFile(schemaPath, printSchema(safeSchema));
31
+ await generateOutput({
32
+ output: path.join(options.gqlTadaOutputPath, 'graphql-env.d.ts'),
33
+ tsconfig: tsConfigPath,
34
+ });
35
+ // Copy the graphql.ts file to the output path
36
+ const graphqlTsPath = path.join(options.packageRoot, 'src/lib/graphql/graphql.ts');
37
+ try {
38
+ await fs.copyFile(graphqlTsPath, path.join(options.gqlTadaOutputPath, 'graphql.ts'));
39
+ }
40
+ catch (error) {
41
+ if (error instanceof Error) {
42
+ this.error(error.message);
43
+ }
44
+ else {
45
+ this.error('Failed to copy graphql.ts file');
46
+ }
47
+ }
48
+ this.info('graphql introspection files output to ' + options.gqlTadaOutputPath);
49
+ },
50
+ };
51
+ }
@@ -0,0 +1,8 @@
1
+ import { Plugin } from 'vite';
2
+ /**
3
+ * @description
4
+ * This plugin enables kind-of HMR for when dashboard extension files change.
5
+ * It is not true HMR because it triggers a page reload. Making real HMR work is very
6
+ * tricky in this case due to the way we load extension files via virtual modules.
7
+ */
8
+ export declare function hmrPlugin(): Plugin;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @description
3
+ * This plugin enables kind-of HMR for when dashboard extension files change.
4
+ * It is not true HMR because it triggers a page reload. Making real HMR work is very
5
+ * tricky in this case due to the way we load extension files via virtual modules.
6
+ */
7
+ export function hmrPlugin() {
8
+ let viteRoot;
9
+ return {
10
+ name: 'vendure:hmr',
11
+ configResolved(config) {
12
+ viteRoot = config.root;
13
+ },
14
+ handleHotUpdate({ server, modules, timestamp, file }) {
15
+ const invalidatedModules = new Set();
16
+ for (const mod of modules) {
17
+ server.moduleGraph.invalidateModule(mod, invalidatedModules, timestamp, true);
18
+ // Check if this is a file outside the Vite root (e.g., dashboard extensions)
19
+ const isOutsideRoot = mod.file && !mod.file.startsWith(viteRoot);
20
+ if (isOutsideRoot) {
21
+ // For files outside root, trigger a full page reload
22
+ // This ensures all extension code is fresh
23
+ server.ws.send({
24
+ type: 'full-reload',
25
+ path: '*',
26
+ });
27
+ return [];
28
+ }
29
+ }
30
+ // Let Vite handle normal HMR for files inside root
31
+ return undefined;
32
+ },
33
+ };
34
+ }
@@ -0,0 +1,27 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * @description
4
+ * A custom Vite plugin that transforms Lingui macros in files using Babel instead of SWC.
5
+ *
6
+ * This plugin solves a critical compatibility issue with SWC plugins:
7
+ * - SWC plugins are compiled Wasm binaries that require exact version matching with `@swc/core`
8
+ * - When users have different SWC versions in their projects (e.g., from Next.js, Nx, etc.),
9
+ * the Lingui SWC plugin fails with "failed to invoke plugin" errors
10
+ * - Babel has no such binary compatibility issues, making it much more reliable for library code
11
+ *
12
+ * The plugin runs BEFORE `@vitejs/plugin-react` and transforms files containing Lingui macros
13
+ * (imports from `@lingui/core/macro` or `@lingui/react/macro`) using the Babel-based
14
+ * `@lingui/babel-plugin-lingui-macro`.
15
+ *
16
+ * Files processed:
17
+ * - `@vendure/dashboard/src` files (in node_modules for external projects)
18
+ * - `packages/dashboard/src` files (in monorepo development)
19
+ * - User's dashboard extension files (e.g., custom plugins using Lingui)
20
+ *
21
+ * Files NOT processed:
22
+ * - Other node_modules packages (they shouldn't contain Lingui macros)
23
+ *
24
+ * @see https://github.com/vendurehq/vendure/issues/3929
25
+ * @see https://github.com/lingui/swc-plugin/issues/179
26
+ */
27
+ export declare function linguiBabelPlugin(): Plugin;