@vendure/dashboard 3.3.6-master-202507041203 → 3.4.0-minor-202506250934

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 (390) hide show
  1. package/README.md +4 -41
  2. package/dist/plugin/utils/config-loader.d.ts +1 -70
  3. package/dist/plugin/utils/config-loader.js +9 -33
  4. package/dist/plugin/vite-plugin-config-loader.js +1 -6
  5. package/dist/plugin/vite-plugin-config.js +7 -6
  6. package/dist/plugin/vite-plugin-dashboard-metadata.d.ts +3 -1
  7. package/dist/plugin/vite-plugin-dashboard-metadata.js +8 -1
  8. package/dist/plugin/vite-plugin-vendure-dashboard.d.ts +0 -41
  9. package/dist/plugin/vite-plugin-vendure-dashboard.js +2 -5
  10. package/package.json +131 -131
  11. package/src/app/app-providers.tsx +6 -6
  12. package/src/app/main.tsx +9 -9
  13. package/src/app/routes/__root.tsx +2 -1
  14. package/src/app/routes/_authenticated/_administrators/administrators.graphql.ts +1 -10
  15. package/src/app/routes/_authenticated/_administrators/administrators.tsx +8 -15
  16. package/src/app/routes/_authenticated/_administrators/administrators_.$id.tsx +12 -16
  17. package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +16 -16
  18. package/src/app/routes/_authenticated/_assets/assets.graphql.ts +2 -13
  19. package/src/app/routes/_authenticated/_assets/assets.tsx +4 -16
  20. package/src/app/routes/_authenticated/_assets/assets_.$id.tsx +38 -52
  21. package/src/app/routes/_authenticated/_channels/channels.graphql.ts +1 -10
  22. package/src/app/routes/_authenticated/_channels/channels.tsx +10 -17
  23. package/src/app/routes/_authenticated/_channels/channels_.$id.tsx +17 -21
  24. package/src/app/routes/_authenticated/_collections/collections.graphql.ts +3 -60
  25. package/src/app/routes/_authenticated/_collections/collections.tsx +124 -168
  26. package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +16 -20
  27. package/src/app/routes/_authenticated/_collections/components/collection-contents-preview-table.tsx +8 -7
  28. package/src/app/routes/_authenticated/_collections/components/collection-contents-sheet.tsx +5 -9
  29. package/src/app/routes/_authenticated/_collections/components/collection-contents-table.tsx +9 -10
  30. package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx +7 -7
  31. package/src/app/routes/_authenticated/_countries/countries.graphql.ts +2 -11
  32. package/src/app/routes/_authenticated/_countries/countries.tsx +6 -13
  33. package/src/app/routes/_authenticated/_countries/countries_.$id.tsx +17 -21
  34. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-sheet.tsx +5 -12
  35. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-table.tsx +17 -22
  36. package/src/app/routes/_authenticated/_customer-groups/customer-groups.graphql.ts +2 -11
  37. package/src/app/routes/_authenticated/_customer-groups/customer-groups.tsx +6 -13
  38. package/src/app/routes/_authenticated/_customer-groups/customer-groups_.$id.tsx +15 -18
  39. package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +19 -19
  40. package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +10 -10
  41. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +5 -5
  42. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history.tsx +7 -11
  43. package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +4 -4
  44. package/src/app/routes/_authenticated/_customers/components/customer-order-table.tsx +73 -75
  45. package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +4 -4
  46. package/src/app/routes/_authenticated/_customers/customers.graphql.ts +2 -10
  47. package/src/app/routes/_authenticated/_customers/customers.tsx +6 -13
  48. package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +15 -19
  49. package/src/app/routes/_authenticated/_facets/components/edit-facet-value.tsx +9 -9
  50. package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +4 -4
  51. package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +11 -15
  52. package/src/app/routes/_authenticated/_facets/facets.graphql.ts +1 -31
  53. package/src/app/routes/_authenticated/_facets/facets.tsx +7 -31
  54. package/src/app/routes/_authenticated/_facets/facets_.$id.tsx +13 -17
  55. package/src/app/routes/_authenticated/_global-settings/global-settings.graphql.ts +1 -1
  56. package/src/app/routes/_authenticated/_global-settings/global-settings.tsx +13 -13
  57. package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +14 -11
  58. package/src/app/routes/_authenticated/_orders/components/edit-order-table.tsx +55 -93
  59. package/src/app/routes/_authenticated/_orders/components/money-gross-net.tsx +9 -11
  60. package/src/app/routes/_authenticated/_orders/components/order-address.tsx +6 -5
  61. package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +62 -67
  62. package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +6 -11
  63. package/src/app/routes/_authenticated/_orders/components/order-history/use-order-history.ts +5 -9
  64. package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +7 -11
  65. package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +22 -39
  66. package/src/app/routes/_authenticated/_orders/components/order-table.tsx +4 -4
  67. package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +36 -37
  68. package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +33 -18
  69. package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +44 -43
  70. package/src/app/routes/_authenticated/_orders/orders.graphql.ts +3 -101
  71. package/src/app/routes/_authenticated/_orders/orders.tsx +20 -21
  72. package/src/app/routes/_authenticated/_orders/orders_.$id.tsx +16 -72
  73. package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +90 -188
  74. package/src/app/routes/_authenticated/_payment-methods/components/payment-eligibility-checker-selector.tsx +7 -10
  75. package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +11 -11
  76. package/src/app/routes/_authenticated/_payment-methods/payment-methods.graphql.ts +2 -29
  77. package/src/app/routes/_authenticated/_payment-methods/payment-methods.tsx +14 -36
  78. package/src/app/routes/_authenticated/_payment-methods/payment-methods_.$id.tsx +15 -22
  79. package/src/app/routes/_authenticated/_product-variants/components/variant-price-detail.tsx +6 -7
  80. package/src/app/routes/_authenticated/_product-variants/product-variants.graphql.ts +3 -64
  81. package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +9 -39
  82. package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +22 -33
  83. package/src/app/routes/_authenticated/_products/components/add-product-variant-dialog.tsx +10 -10
  84. package/src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx +41 -57
  85. package/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx +11 -11
  86. package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +14 -18
  87. package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +15 -21
  88. package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +34 -28
  89. package/src/app/routes/_authenticated/_products/components/product-variants-table.tsx +53 -84
  90. package/src/app/routes/_authenticated/_products/products.graphql.ts +2 -70
  91. package/src/app/routes/_authenticated/_products/products.tsx +7 -36
  92. package/src/app/routes/_authenticated/_products/products_.$id.tsx +24 -33
  93. package/src/app/routes/_authenticated/_profile/profile.graphql.ts +1 -1
  94. package/src/app/routes/_authenticated/_profile/profile.tsx +8 -8
  95. package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +11 -14
  96. package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx +11 -14
  97. package/src/app/routes/_authenticated/_promotions/promotions.graphql.ts +2 -27
  98. package/src/app/routes/_authenticated/_promotions/promotions.tsx +7 -31
  99. package/src/app/routes/_authenticated/_promotions/promotions_.$id.tsx +16 -20
  100. package/src/app/routes/_authenticated/_roles/components/expandable-permissions.tsx +5 -5
  101. package/src/app/routes/_authenticated/_roles/components/permissions-grid.tsx +17 -21
  102. package/src/app/routes/_authenticated/_roles/roles.graphql.ts +1 -10
  103. package/src/app/routes/_authenticated/_roles/roles.tsx +10 -17
  104. package/src/app/routes/_authenticated/_roles/roles_.$id.tsx +12 -16
  105. package/src/app/routes/_authenticated/_sellers/sellers.graphql.ts +1 -10
  106. package/src/app/routes/_authenticated/_sellers/sellers.tsx +6 -13
  107. package/src/app/routes/_authenticated/_sellers/sellers_.$id.tsx +13 -17
  108. package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx +6 -6
  109. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx +21 -23
  110. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-eligibility-checker-selector.tsx +21 -25
  111. package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-method-dialog.tsx +3 -3
  112. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.graphql.ts +2 -29
  113. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.tsx +6 -25
  114. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx +13 -17
  115. package/src/app/routes/_authenticated/_stock-locations/stock-locations.graphql.ts +1 -26
  116. package/src/app/routes/_authenticated/_stock-locations/stock-locations.tsx +6 -25
  117. package/src/app/routes/_authenticated/_stock-locations/stock-locations_.$id.tsx +12 -16
  118. package/src/app/routes/_authenticated/_system/components/payload-dialog.tsx +4 -4
  119. package/src/app/routes/_authenticated/_system/healthchecks.tsx +4 -4
  120. package/src/app/routes/_authenticated/_system/job-queue.graphql.ts +1 -1
  121. package/src/app/routes/_authenticated/_system/job-queue.tsx +6 -10
  122. package/src/app/routes/_authenticated/_system/scheduled-tasks.tsx +28 -34
  123. package/src/app/routes/_authenticated/_tax-categories/tax-categories.graphql.ts +2 -11
  124. package/src/app/routes/_authenticated/_tax-categories/tax-categories.tsx +7 -14
  125. package/src/app/routes/_authenticated/_tax-categories/tax-categories_.$id.tsx +16 -20
  126. package/src/app/routes/_authenticated/_tax-rates/tax-rates.graphql.ts +2 -11
  127. package/src/app/routes/_authenticated/_tax-rates/tax-rates.tsx +8 -15
  128. package/src/app/routes/_authenticated/_tax-rates/tax-rates_.$id.tsx +18 -22
  129. package/src/app/routes/_authenticated/_zones/components/zone-countries-sheet.tsx +4 -4
  130. package/src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx +8 -12
  131. package/src/app/routes/_authenticated/_zones/zones.graphql.ts +2 -11
  132. package/src/app/routes/_authenticated/_zones/zones.tsx +6 -13
  133. package/src/app/routes/_authenticated/_zones/zones_.$id.tsx +14 -18
  134. package/src/app/routes/_authenticated/index.tsx +4 -4
  135. package/src/app/routes/_authenticated.tsx +3 -3
  136. package/src/app/routes/login.tsx +2 -2
  137. package/src/app/styles.css +1 -4
  138. package/src/lib/components/data-display/boolean.tsx +1 -1
  139. package/src/lib/components/data-display/date-time.tsx +2 -2
  140. package/src/lib/components/data-display/json.tsx +1 -1
  141. package/src/lib/components/data-display/money.tsx +3 -2
  142. package/src/lib/components/data-input/affixed-input.tsx +8 -3
  143. package/src/lib/components/data-input/customer-group-input.tsx +2 -2
  144. package/src/lib/components/data-input/datetime-input.tsx +146 -129
  145. package/src/lib/components/data-input/facet-value-input.tsx +22 -30
  146. package/src/lib/components/data-input/money-input.tsx +12 -5
  147. package/src/lib/components/data-input/{rich-text-input.tsx → richt-text-input.tsx} +1 -1
  148. package/src/lib/components/data-table/add-filter-menu.tsx +18 -9
  149. package/src/lib/components/data-table/data-table-column-header.tsx +22 -4
  150. package/src/lib/components/data-table/data-table-faceted-filter.tsx +8 -8
  151. package/src/lib/components/data-table/data-table-filter-badge.tsx +8 -16
  152. package/src/lib/components/data-table/data-table-filter-dialog.tsx +8 -8
  153. package/src/lib/components/data-table/data-table-pagination.tsx +4 -4
  154. package/src/lib/components/data-table/data-table-view-options.tsx +21 -25
  155. package/src/lib/components/data-table/data-table.tsx +41 -85
  156. package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +8 -11
  157. package/src/lib/components/data-table/filters/data-table-datetime-filter.tsx +23 -14
  158. package/src/lib/components/data-table/filters/data-table-id-filter.tsx +10 -15
  159. package/src/lib/components/data-table/filters/data-table-number-filter.tsx +17 -18
  160. package/src/lib/components/data-table/filters/data-table-string-filter.tsx +12 -29
  161. package/src/lib/components/data-table/human-readable-operator.tsx +3 -3
  162. package/src/lib/components/data-table/refresh-button.tsx +15 -30
  163. package/src/lib/components/layout/app-layout.tsx +8 -8
  164. package/src/lib/components/layout/app-sidebar.tsx +5 -5
  165. package/src/lib/components/layout/channel-switcher.tsx +8 -8
  166. package/src/lib/components/layout/content-language-selector.tsx +10 -16
  167. package/src/lib/components/layout/generated-breadcrumbs.tsx +1 -1
  168. package/src/lib/components/layout/language-dialog.tsx +11 -5
  169. package/src/lib/components/layout/nav-main.tsx +4 -4
  170. package/src/lib/components/layout/nav-projects.tsx +2 -2
  171. package/src/lib/components/layout/nav-user.tsx +7 -7
  172. package/src/lib/components/layout/prerelease-popup.tsx +1 -1
  173. package/src/lib/components/login/login-form.tsx +5 -5
  174. package/src/lib/components/shared/alerts.tsx +3 -3
  175. package/src/lib/components/shared/animated-number.tsx +2 -2
  176. package/src/lib/components/shared/asset/asset-focal-point-editor.tsx +19 -29
  177. package/src/lib/components/shared/asset/asset-gallery.tsx +18 -23
  178. package/src/lib/components/shared/asset/asset-picker-dialog.tsx +66 -63
  179. package/src/lib/components/shared/asset/asset-preview-dialog.tsx +7 -3
  180. package/src/lib/components/shared/asset/asset-preview-selector.tsx +6 -4
  181. package/src/lib/components/shared/asset/asset-preview.tsx +15 -7
  182. package/src/lib/components/shared/asset/asset-properties.tsx +9 -7
  183. package/src/lib/components/shared/asset/focal-point-control.tsx +13 -5
  184. package/src/lib/components/shared/assigned-facet-values.tsx +5 -1
  185. package/src/lib/components/shared/channel-code-label.tsx +4 -3
  186. package/src/lib/components/shared/channel-selector.tsx +6 -6
  187. package/src/lib/components/shared/configurable-operation-arg-input.tsx +2 -2
  188. package/src/lib/components/shared/configurable-operation-input.tsx +16 -15
  189. package/src/lib/components/shared/confirmation-dialog.tsx +2 -2
  190. package/src/lib/components/shared/copyable-text.tsx +3 -2
  191. package/src/lib/components/shared/country-selector.tsx +18 -21
  192. package/src/lib/components/shared/currency-selector.tsx +5 -5
  193. package/src/lib/components/shared/custom-fields-form.tsx +51 -253
  194. package/src/lib/components/shared/customer-address-form.tsx +13 -18
  195. package/src/lib/components/shared/customer-group-selector.tsx +6 -6
  196. package/src/lib/components/shared/customer-selector.tsx +18 -24
  197. package/src/lib/components/shared/detail-page-button.tsx +1 -3
  198. package/src/lib/components/shared/entity-assets.tsx +34 -33
  199. package/src/lib/components/shared/error-page.tsx +6 -6
  200. package/src/lib/components/shared/facet-value-chip.tsx +5 -12
  201. package/src/lib/components/shared/facet-value-selector.tsx +63 -64
  202. package/src/lib/components/shared/form-field-wrapper.tsx +13 -22
  203. package/src/lib/components/shared/history-timeline/history-entry.tsx +6 -12
  204. package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +3 -3
  205. package/src/lib/components/shared/history-timeline/history-note-editor.tsx +4 -4
  206. package/src/lib/components/shared/history-timeline/history-note-input.tsx +3 -3
  207. package/src/lib/components/shared/history-timeline/history-timeline.tsx +8 -15
  208. package/src/lib/components/shared/language-selector.tsx +5 -5
  209. package/src/lib/components/shared/logo-mark.tsx +2 -2
  210. package/src/lib/components/shared/multi-select.tsx +5 -5
  211. package/src/lib/components/shared/navigation-confirmation.tsx +9 -24
  212. package/src/lib/components/shared/option-value-input.tsx +15 -17
  213. package/src/lib/components/shared/paginated-list-data-table.tsx +24 -100
  214. package/src/lib/components/shared/permission-guard.tsx +4 -4
  215. package/src/lib/components/shared/product-variant-selector.tsx +31 -32
  216. package/src/lib/components/shared/role-code-label.tsx +6 -10
  217. package/src/lib/components/shared/role-selector.tsx +4 -4
  218. package/src/lib/components/shared/seller-selector.tsx +17 -21
  219. package/src/lib/components/shared/stock-level-label.tsx +5 -5
  220. package/src/lib/components/shared/tax-category-selector.tsx +5 -5
  221. package/src/lib/components/shared/translatable-form-field.tsx +10 -5
  222. package/src/lib/components/shared/vendure-image.tsx +2 -31
  223. package/src/lib/components/shared/zone-selector.tsx +6 -5
  224. package/src/lib/components/ui/accordion.tsx +3 -3
  225. package/src/lib/components/ui/alert-dialog.tsx +10 -10
  226. package/src/lib/components/ui/alert.tsx +3 -3
  227. package/src/lib/components/ui/badge.tsx +2 -2
  228. package/src/lib/components/ui/breadcrumb.tsx +4 -4
  229. package/src/lib/components/ui/button.tsx +3 -10
  230. package/src/lib/components/ui/calendar.tsx +459 -392
  231. package/src/lib/components/ui/card.tsx +2 -2
  232. package/src/lib/components/ui/checkbox.tsx +2 -2
  233. package/src/lib/components/ui/command.tsx +6 -12
  234. package/src/lib/components/ui/dialog.tsx +2 -2
  235. package/src/lib/components/ui/dropdown-menu.tsx +7 -7
  236. package/src/lib/components/ui/form.tsx +4 -4
  237. package/src/lib/components/ui/hover-card.tsx +3 -3
  238. package/src/lib/components/ui/input.tsx +1 -1
  239. package/src/lib/components/ui/label.tsx +2 -2
  240. package/src/lib/components/ui/pagination.tsx +108 -87
  241. package/src/lib/components/ui/popover.tsx +3 -3
  242. package/src/lib/components/ui/scroll-area.tsx +2 -2
  243. package/src/lib/components/ui/select.tsx +129 -151
  244. package/src/lib/components/ui/separator.tsx +2 -2
  245. package/src/lib/components/ui/sheet.tsx +5 -5
  246. package/src/lib/components/ui/sidebar.tsx +10 -10
  247. package/src/lib/components/ui/skeleton.tsx +1 -1
  248. package/src/lib/components/ui/switch.tsx +2 -2
  249. package/src/lib/components/ui/table.tsx +2 -2
  250. package/src/lib/components/ui/tabs.tsx +3 -3
  251. package/src/lib/components/ui/textarea.tsx +1 -1
  252. package/src/lib/components/ui/tooltip.tsx +3 -3
  253. package/src/lib/framework/alert/alert-extensions.tsx +3 -2
  254. package/src/lib/framework/alert/alert-item.tsx +3 -5
  255. package/src/lib/framework/alert/types.ts +13 -0
  256. package/src/lib/framework/component-registry/component-registry.tsx +47 -33
  257. package/src/lib/framework/dashboard-widget/base-widget.tsx +13 -5
  258. package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +8 -8
  259. package/src/lib/framework/dashboard-widget/latest-orders-widget/latest-orders-widget.graphql.ts +1 -1
  260. package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +7 -6
  261. package/src/lib/framework/dashboard-widget/metrics-widget/metrics-widget.graphql.ts +1 -1
  262. package/src/lib/framework/dashboard-widget/orders-summary/index.tsx +6 -7
  263. package/src/lib/framework/dashboard-widget/orders-summary/order-summary-widget.graphql.ts +1 -1
  264. package/src/lib/framework/dashboard-widget/types.ts +22 -0
  265. package/src/lib/framework/dashboard-widget/widget-extensions.tsx +1 -1
  266. package/src/lib/framework/defaults.ts +1 -1
  267. package/src/lib/framework/document-introspection/add-custom-fields.ts +2 -50
  268. package/src/lib/framework/document-introspection/get-document-structure.ts +10 -43
  269. package/src/lib/framework/document-introspection/hooks.ts +1 -4
  270. package/src/lib/framework/extension-api/define-dashboard-extension.ts +49 -31
  271. package/src/lib/framework/extension-api/extension-api-types.ts +98 -25
  272. package/src/lib/framework/extension-api/use-dashboard-extensions.ts +1 -2
  273. package/src/lib/framework/form-engine/form-schema-tools.ts +1 -1
  274. package/src/lib/framework/form-engine/use-generated-form.tsx +18 -57
  275. package/src/lib/framework/layout-engine/location-wrapper.tsx +8 -11
  276. package/src/lib/framework/layout-engine/page-layout.tsx +48 -66
  277. package/src/lib/framework/page/detail-page-route-loader.tsx +7 -26
  278. package/src/lib/framework/page/detail-page.tsx +37 -122
  279. package/src/lib/framework/page/list-page.tsx +11 -9
  280. package/src/lib/framework/page/use-detail-page.ts +7 -38
  281. package/src/lib/framework/page/use-extended-router.tsx +5 -4
  282. package/src/lib/framework/registry/registry-types.ts +5 -15
  283. package/src/lib/graphql/{fragments.ts → fragments.tsx} +2 -1
  284. package/src/lib/graphql/graphql-env.d.ts +13 -16
  285. package/src/lib/hooks/use-auth.tsx +1 -1
  286. package/src/lib/hooks/use-channel.ts +1 -1
  287. package/src/lib/hooks/use-grouped-permissions.ts +2 -3
  288. package/src/lib/hooks/use-page.tsx +2 -2
  289. package/src/lib/hooks/use-permissions.ts +2 -3
  290. package/src/lib/hooks/use-server-config.ts +1 -1
  291. package/src/lib/hooks/use-theme.ts +1 -1
  292. package/src/lib/hooks/use-user-settings.tsx +1 -1
  293. package/src/lib/index.ts +6 -65
  294. package/src/lib/lib/trans.tsx +3 -3
  295. package/src/lib/lib/utils.ts +0 -49
  296. package/src/lib/providers/auth.tsx +14 -37
  297. package/src/lib/providers/channel-provider.tsx +4 -4
  298. package/src/lib/providers/server-config.tsx +11 -13
  299. package/src/lib/providers/theme-provider.tsx +3 -2
  300. package/vite/utils/config-loader.ts +10 -120
  301. package/vite/vite-plugin-config-loader.ts +1 -6
  302. package/vite/vite-plugin-config.ts +7 -6
  303. package/vite/vite-plugin-dashboard-metadata.ts +9 -1
  304. package/vite/vite-plugin-vendure-dashboard.ts +4 -48
  305. package/dist/plugin/tests/barrel-exports/my-plugin/index.d.ts +0 -1
  306. package/dist/plugin/tests/barrel-exports/my-plugin/index.js +0 -17
  307. package/dist/plugin/tests/barrel-exports/my-plugin/src/my.plugin.d.ts +0 -2
  308. package/dist/plugin/tests/barrel-exports/my-plugin/src/my.plugin.js +0 -20
  309. package/dist/plugin/tests/barrel-exports/vendure-config.d.ts +0 -2
  310. package/dist/plugin/tests/barrel-exports/vendure-config.js +0 -19
  311. package/dist/plugin/tests/barrel-exports.spec.d.ts +0 -1
  312. package/dist/plugin/tests/barrel-exports.spec.js +0 -14
  313. package/dist/plugin/vite-plugin-tailwind-source.d.ts +0 -7
  314. package/dist/plugin/vite-plugin-tailwind-source.js +0 -49
  315. package/src/app/common/delete-bulk-action.tsx +0 -148
  316. package/src/app/common/duplicate-bulk-action.tsx +0 -134
  317. package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx +0 -15
  318. package/src/app/routes/_authenticated/_assets/components/asset-bulk-actions.tsx +0 -45
  319. package/src/app/routes/_authenticated/_channels/components/channel-bulk-actions.tsx +0 -15
  320. package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +0 -123
  321. package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +0 -430
  322. package/src/app/routes/_authenticated/_collections/components/move-single-collection.tsx +0 -33
  323. package/src/app/routes/_authenticated/_countries/components/country-bulk-actions.tsx +0 -15
  324. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-bulk-actions.tsx +0 -15
  325. package/src/app/routes/_authenticated/_customers/components/customer-bulk-actions.tsx +0 -15
  326. package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +0 -104
  327. package/src/app/routes/_authenticated/_orders/components/add-manual-payment-dialog.tsx +0 -191
  328. package/src/app/routes/_authenticated/_orders/components/fulfill-order-dialog.tsx +0 -320
  329. package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +0 -173
  330. package/src/app/routes/_authenticated/_orders/utils/order-types.ts +0 -7
  331. package/src/app/routes/_authenticated/_orders/utils/order-utils.ts +0 -77
  332. package/src/app/routes/_authenticated/_payment-methods/components/payment-method-bulk-actions.tsx +0 -58
  333. package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx +0 -110
  334. package/src/app/routes/_authenticated/_products/components/assign-facet-values-dialog.tsx +0 -281
  335. package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +0 -123
  336. package/src/app/routes/_authenticated/_promotions/components/promotion-bulk-actions.tsx +0 -82
  337. package/src/app/routes/_authenticated/_roles/components/role-bulk-actions.tsx +0 -15
  338. package/src/app/routes/_authenticated/_sellers/components/seller-bulk-actions.tsx +0 -15
  339. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx +0 -61
  340. package/src/app/routes/_authenticated/_stock-locations/components/stock-location-bulk-actions.tsx +0 -58
  341. package/src/app/routes/_authenticated/_tax-categories/components/tax-category-bulk-actions.tsx +0 -15
  342. package/src/app/routes/_authenticated/_tax-rates/components/tax-rate-bulk-actions.tsx +0 -15
  343. package/src/app/routes/_authenticated/_zones/components/zone-bulk-actions.tsx +0 -15
  344. package/src/lib/components/data-input/index.ts +0 -11
  345. package/src/lib/components/data-input/relation-input.tsx +0 -153
  346. package/src/lib/components/data-input/relation-selector.tsx +0 -468
  347. package/src/lib/components/data-table/data-table-bulk-action-item.tsx +0 -101
  348. package/src/lib/components/data-table/data-table-bulk-actions.tsx +0 -95
  349. package/src/lib/components/labeled-data.tsx +0 -21
  350. package/src/lib/components/shared/asset/asset-bulk-actions.tsx +0 -94
  351. package/src/lib/components/shared/assign-to-channel-bulk-action.tsx +0 -71
  352. package/src/lib/components/shared/assign-to-channel-dialog.tsx +0 -155
  353. package/src/lib/components/shared/remove-from-channel-bulk-action.tsx +0 -90
  354. package/src/lib/framework/data-table/data-table-extensions.ts +0 -35
  355. package/src/lib/framework/document-extension/extend-detail-form-query.ts +0 -50
  356. package/src/lib/framework/document-extension/extend-document.spec.ts +0 -884
  357. package/src/lib/framework/document-extension/extend-document.ts +0 -159
  358. package/src/lib/framework/extension-api/display-component-extensions.tsx +0 -69
  359. package/src/lib/framework/extension-api/input-component-extensions.tsx +0 -69
  360. package/src/lib/framework/extension-api/logic/alerts.ts +0 -10
  361. package/src/lib/framework/extension-api/logic/data-table.ts +0 -60
  362. package/src/lib/framework/extension-api/logic/detail-forms.ts +0 -48
  363. package/src/lib/framework/extension-api/logic/form-components.ts +0 -13
  364. package/src/lib/framework/extension-api/logic/index.ts +0 -8
  365. package/src/lib/framework/extension-api/logic/layout.ts +0 -22
  366. package/src/lib/framework/extension-api/logic/navigation.ts +0 -37
  367. package/src/lib/framework/extension-api/logic/widgets.ts +0 -10
  368. package/src/lib/framework/extension-api/types/alerts.ts +0 -54
  369. package/src/lib/framework/extension-api/types/data-table.ts +0 -87
  370. package/src/lib/framework/extension-api/types/detail-forms.ts +0 -81
  371. package/src/lib/framework/extension-api/types/form-components.ts +0 -32
  372. package/src/lib/framework/extension-api/types/index.ts +0 -8
  373. package/src/lib/framework/extension-api/types/layout.ts +0 -78
  374. package/src/lib/framework/extension-api/types/navigation.ts +0 -19
  375. package/src/lib/framework/extension-api/types/widgets.ts +0 -97
  376. package/src/lib/framework/form-engine/custom-form-component-extensions.ts +0 -38
  377. package/src/lib/framework/form-engine/custom-form-component.tsx +0 -33
  378. package/src/lib/framework/form-engine/utils.ts +0 -58
  379. package/src/lib/framework/layout-engine/page-block-provider.tsx +0 -6
  380. package/src/lib/graphql/common-operations.ts +0 -18
  381. package/src/lib/hooks/use-extended-detail-query.ts +0 -37
  382. package/src/lib/hooks/use-extended-list-query.ts +0 -73
  383. package/src/lib/hooks/use-page-block.tsx +0 -10
  384. package/vite/tests/barrel-exports/my-plugin/index.ts +0 -1
  385. package/vite/tests/barrel-exports/my-plugin/src/my.plugin.ts +0 -8
  386. package/vite/tests/barrel-exports/package.json +0 -6
  387. package/vite/tests/barrel-exports/vendure-config.ts +0 -19
  388. package/vite/tests/barrel-exports.spec.ts +0 -21
  389. package/vite/vite-plugin-tailwind-source.ts +0 -65
  390. /package/src/lib/components/data-table/{types.ts → data-table-types.ts} +0 -0
package/README.md CHANGED
@@ -1,50 +1,13 @@
1
1
  # Vendure Dashboard
2
2
 
3
- This is a React-based admin dashboard for Vendure. It is a standalone application that can be extended to suit the
4
- needs of any Vendure project.
3
+ This is an admin dashboard for managing Vendure applications. It is designed to supersede the existing Admin UI.
4
+
5
+ Current status: early work in progress
5
6
 
6
7
  ## Development
7
8
 
8
9
  Run `npx vite` to start Vite in dev mode.
9
10
 
10
- ### Note on internal `@/vdb` imports
11
-
12
- You will notice that the dashboard uses internal Vendure Dashboard imports prefixed with `@/vdb`. This is adapted from the
13
- convention of Shadcn which uses a `@/*` path alias for internal imports.
14
-
15
- **Why not just use relative imports?**
16
-
17
- The problem with using relative imports is that they are handled differently by Vite when compiling the dashboard. This
18
- manifests as things like React Context not working correctly. The underlying reason is that Vite will selectively
19
- pre-compile source code and mixing the imports between alias and relative can result in 2 "versions" of the same code
20
- being loaded, which causes issues with React Context and other things that rely on a single instance of a module.
21
-
22
- For this reason, try to use the `@/vdb` alias for all internal Vendure Dashboard imports to the "src/lib" directory.
23
-
24
- This is especially import for hooks (since many of them use React Context) and there is even a pre-commit hook
25
- that will run [a script](./scripts/check-internal-imports.js) to ensure that you are not using relative imports for
26
- internal Vendure Dashboard code.
27
-
28
- **Type Safety for Consumers**
29
-
30
- Because we ship source code in the npm package, consumers need to tell TypeScript how to resolve these internal
31
- imports by adding the path alias to _their_ `tsconfig.json` file.
32
-
33
- ```json
34
- {
35
- "compilerOptions": {
36
- "paths": {
37
- "@/vdb/*": [
38
- "./node_modules/@vendure/dashboard/src/lib/*"
39
- ]
40
- }
41
- }
42
- }
43
- ```
44
-
45
- Note: even without that path alias, the vite compilation will still work, but TypeScript types will not resolve correctly
46
- when developing dashboard extensions.
47
-
48
11
  ## Testing
49
12
 
50
- Run `npm run test` to run tests once, or `npx vitest` to run tests in watch mode
13
+ Run `npm run test` to run tests once, or `npx vitest` to run tests in watch mode
@@ -9,77 +9,9 @@ export type PluginInfo = {
9
9
  pluginPath: string;
10
10
  dashboardEntryPath: string | undefined;
11
11
  };
12
- /**
13
- * @description
14
- * The PathAdapter interface allows customization of how paths are handled
15
- * when compiling the Vendure config and its imports.
16
- *
17
- * This is particularly useful in complex project structures, such as monorepos,
18
- * where the Vendure config file may not be in the root directory,
19
- * or when you need to transform TypeScript path mappings.
20
- */
21
- export interface PathAdapter {
22
- /**
23
- * @description
24
- * A function to determine the path to the compiled Vendure config file. The default implementation
25
- * simple joins the output directory with the config file name:
26
- *
27
- * ```ts
28
- * return path.join(outputPath, configFileName)
29
- * ```
30
- *
31
- * However, in some cases with more complex project structures, you may need to
32
- * provide a custom implementation to ensure the compiled config file is
33
- * correctly located.
34
- *
35
- * @example
36
- * ```ts
37
- * getCompiledConfigPath: ({ inputRootDir, outputPath, configFileName }) => {
38
- * const projectName = inputRootDir.split('/libs/')[1].split('/')[0];
39
- * const pathAfterProject = inputRootDir.split(`/libs/${projectName}`)[1];
40
- * const compiledConfigFilePath = `${outputPath}/${projectName}${pathAfterProject}`;
41
- * return path.join(compiledConfigFilePath, configFileName);
42
- * },
43
- * ```
44
- */
45
- getCompiledConfigPath?: (params: {
46
- inputRootDir: string;
47
- outputPath: string;
48
- configFileName: string;
49
- }) => string;
50
- /**
51
- * If your project makes use of the TypeScript `paths` configuration, the compiler will
52
- * attempt to use these paths when compiling the Vendure config and its imports.
53
- *
54
- * In certain cases, you may need to transform these paths before they are used. For instance,
55
- * if your project is a monorepo and the paths are defined relative to the root of the monorepo,
56
- * you may need to adjust them to be relative to the output directory where the compiled files are located.
57
- *
58
- * @example
59
- * ```ts
60
- * transformTsConfigPathMappings: ({ phase, patterns }) => {
61
- * // "loading" phase is when the compiled Vendure code is being loaded by
62
- * // the plugin, in order to introspect the configuration of your app.
63
- * if (phase === 'loading') {
64
- * return patterns.map((p) =>
65
- * p.replace('libs/', '').replace(/.ts$/, '.js'),
66
- * );
67
- * }
68
- * return patterns;
69
- * },
70
- * ```
71
- * @param params
72
- */
73
- transformTsConfigPathMappings?: (params: {
74
- phase: 'compiling' | 'loading';
75
- alias: string;
76
- patterns: string[];
77
- }) => string[];
78
- }
79
12
  export interface ConfigLoaderOptions {
80
13
  vendureConfigPath: string;
81
14
  tempDir: string;
82
- pathAdapter?: PathAdapter;
83
15
  vendureConfigExport?: string;
84
16
  logger?: Logger;
85
17
  reportCompilationErrors?: boolean;
@@ -110,12 +42,11 @@ type CompileFileOptions = {
110
42
  inputRootDir: string;
111
43
  inputPath: string;
112
44
  outputDir: string;
113
- transformTsConfigPathMappings: Required<PathAdapter>['transformTsConfigPathMappings'];
114
45
  logger?: Logger;
115
46
  compiledFiles?: Set<string>;
116
47
  isRoot?: boolean;
117
48
  pluginInfo?: PluginInfo[];
118
49
  reportCompilationErrors?: boolean;
119
50
  };
120
- export declare function compileFile({ inputRootDir, inputPath, outputDir, transformTsConfigPathMappings, logger, compiledFiles, isRoot, pluginInfo, reportCompilationErrors, }: CompileFileOptions): Promise<PluginInfo[]>;
51
+ export declare function compileFile({ inputRootDir, inputPath, outputDir, logger, compiledFiles, isRoot, pluginInfo, reportCompilationErrors, }: CompileFileOptions): Promise<PluginInfo[]>;
121
52
  export {};
@@ -15,10 +15,6 @@ const defaultLogger = {
15
15
  /* noop */
16
16
  },
17
17
  };
18
- const defaultPathAdapter = {
19
- getCompiledConfigPath: ({ outputPath, configFileName }) => path.join(outputPath, configFileName),
20
- transformTsConfigPathMappings: ({ patterns }) => patterns,
21
- };
22
18
  /**
23
19
  * @description
24
20
  * This function compiles the given Vendure config file and any imported relative files (i.e.
@@ -36,10 +32,7 @@ const defaultPathAdapter = {
36
32
  * to handle the compiled JavaScript output.
37
33
  */
38
34
  export async function loadVendureConfig(options) {
39
- var _a, _b;
40
- const { vendureConfigPath, vendureConfigExport, tempDir, pathAdapter } = options;
41
- const getCompiledConfigPath = (_a = pathAdapter === null || pathAdapter === void 0 ? void 0 : pathAdapter.getCompiledConfigPath) !== null && _a !== void 0 ? _a : defaultPathAdapter.getCompiledConfigPath;
42
- const transformTsConfigPathMappings = (_b = pathAdapter === null || pathAdapter === void 0 ? void 0 : pathAdapter.transformTsConfigPathMappings) !== null && _b !== void 0 ? _b : defaultPathAdapter.transformTsConfigPathMappings;
35
+ const { vendureConfigPath, vendureConfigExport, tempDir } = options;
43
36
  const logger = options.logger || defaultLogger;
44
37
  const outputPath = tempDir;
45
38
  const configFileName = path.basename(vendureConfigPath);
@@ -50,13 +43,8 @@ export async function loadVendureConfig(options) {
50
43
  inputPath: vendureConfigPath,
51
44
  outputDir: outputPath,
52
45
  logger,
53
- transformTsConfigPathMappings,
54
46
  });
55
- const compiledConfigFilePath = pathToFileURL(getCompiledConfigPath({
56
- inputRootDir,
57
- outputPath,
58
- configFileName,
59
- })).href.replace(/.ts$/, '.js');
47
+ const compiledConfigFilePath = pathToFileURL(path.join(outputPath, configFileName)).href.replace(/.ts$/, '.js');
60
48
  // create package.json with type commonjs and save it to the output dir
61
49
  await fs.writeFile(path.join(outputPath, 'package.json'), JSON.stringify({ type: 'commonjs' }, null, 2));
62
50
  // We need to figure out the symbol exported by the config file by
@@ -68,7 +56,7 @@ export async function loadVendureConfig(options) {
68
56
  throw new Error(`Could not find a variable exported as VendureConfig. Please specify the name of the exported variable using the "vendureConfigExport" option.`);
69
57
  }
70
58
  // Register path aliases from tsconfig before importing
71
- const tsConfigInfo = await findTsConfigPaths(vendureConfigPath, logger, 'loading', transformTsConfigPathMappings);
59
+ const tsConfigInfo = await findTsConfigPaths(vendureConfigPath, logger);
72
60
  if (tsConfigInfo) {
73
61
  tsConfigPaths.register({
74
62
  baseUrl: outputPath,
@@ -85,7 +73,7 @@ export async function loadVendureConfig(options) {
85
73
  * Finds and parses tsconfig files in the given directory and its parent directories.
86
74
  * Returns the paths configuration if found.
87
75
  */
88
- async function findTsConfigPaths(configPath, logger, phase, transformTsConfigPathMappings) {
76
+ async function findTsConfigPaths(configPath, logger) {
89
77
  const configDir = path.dirname(configPath);
90
78
  let currentDir = configDir;
91
79
  while (currentDir !== path.parse(currentDir).root) {
@@ -106,14 +94,9 @@ async function findTsConfigPaths(configPath, logger, phase, transformTsConfigPat
106
94
  const paths = {};
107
95
  for (const [alias, patterns] of Object.entries(compilerOptions.paths)) {
108
96
  // Store paths as defined in tsconfig, they will be relative to baseUrl
109
- const normalizedPatterns = patterns.map(pattern =>
97
+ paths[alias] = patterns.map(pattern =>
110
98
  // Normalize slashes for consistency, keep relative
111
99
  pattern.replace(/\\/g, '/'));
112
- paths[alias] = transformTsConfigPathMappings({
113
- phase,
114
- alias,
115
- patterns: normalizedPatterns,
116
- });
117
100
  }
118
101
  logger.debug(`Found tsconfig paths in ${tsConfigPath}: ${JSON.stringify({
119
102
  baseUrl: tsConfigBaseUrl,
@@ -136,7 +119,7 @@ async function findTsConfigPaths(configPath, logger, phase, transformTsConfigPat
136
119
  logger.debug(`No tsconfig paths found traversing up from ${configDir}`);
137
120
  return undefined;
138
121
  }
139
- export async function compileFile({ inputRootDir, inputPath, outputDir, transformTsConfigPathMappings, logger = defaultLogger, compiledFiles = new Set(), isRoot = true, pluginInfo = [], reportCompilationErrors = false, }) {
122
+ export async function compileFile({ inputRootDir, inputPath, outputDir, logger = defaultLogger, compiledFiles = new Set(), isRoot = true, pluginInfo = [], reportCompilationErrors = false, }) {
140
123
  const absoluteInputPath = path.resolve(inputPath);
141
124
  if (compiledFiles.has(absoluteInputPath)) {
142
125
  return pluginInfo;
@@ -151,20 +134,17 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
151
134
  const importPaths = new Set();
152
135
  let tsConfigInfo;
153
136
  if (isRoot) {
154
- tsConfigInfo = await findTsConfigPaths(absoluteInputPath, logger, 'compiling', transformTsConfigPathMappings);
137
+ tsConfigInfo = await findTsConfigPaths(absoluteInputPath, logger);
155
138
  if (tsConfigInfo) {
156
139
  logger === null || logger === void 0 ? void 0 : logger.debug(`Using TypeScript configuration: ${JSON.stringify(tsConfigInfo, null, 2)}`);
157
140
  }
158
141
  }
159
142
  async function collectImports(node) {
160
- if ((ts.isExportDeclaration(node) || ts.isImportDeclaration(node)) &&
161
- node.moduleSpecifier &&
162
- ts.isStringLiteral(node.moduleSpecifier)) {
143
+ if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
163
144
  const importPath = node.moduleSpecifier.text;
164
145
  // Handle relative imports
165
146
  if (importPath.startsWith('.')) {
166
147
  const resolvedPath = path.resolve(path.dirname(absoluteInputPath), importPath);
167
- // TODO: does this handle index files correctly?
168
148
  let resolvedTsPath = resolvedPath + '.ts';
169
149
  // Also check for .tsx if .ts doesn't exist
170
150
  if (!(await fs.pathExists(resolvedTsPath))) {
@@ -212,9 +192,7 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
212
192
  continue;
213
193
  const potentialPathBase = path.resolve(tsConfigInfo.baseUrl, patternPrefix);
214
194
  const resolvedPath = path.join(potentialPathBase, remainingImportPath);
215
- let resolvedTsPath = resolvedPath.endsWith('.ts')
216
- ? resolvedPath
217
- : resolvedPath + '.ts';
195
+ let resolvedTsPath = resolvedPath + '.ts';
218
196
  // Similar existence checks as relative paths
219
197
  if (!(await fs.pathExists(resolvedTsPath))) {
220
198
  const resolvedTsxPath = resolvedPath + '.tsx';
@@ -263,7 +241,6 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
263
241
  ts.isModuleBlock(child) ||
264
242
  ts.isModuleDeclaration(child) ||
265
243
  ts.isImportDeclaration(child) ||
266
- ts.isExportDeclaration(child) ||
267
244
  child.kind === ts.SyntaxKind.SyntaxList) {
268
245
  await collectImports(child);
269
246
  }
@@ -286,7 +263,6 @@ export async function compileFile({ inputRootDir, inputPath, outputDir, transfor
286
263
  inputPath: importPath,
287
264
  outputDir,
288
265
  logger,
289
- transformTsConfigPathMappings,
290
266
  compiledFiles,
291
267
  isRoot: false,
292
268
  pluginInfo,
@@ -14,7 +14,6 @@ export function configLoaderPlugin(options) {
14
14
  try {
15
15
  const startTime = Date.now();
16
16
  result = await loadVendureConfig({
17
- pathAdapter: options.pathAdapter,
18
17
  tempDir: options.tempDir,
19
18
  vendureConfigPath: options.vendureConfigPath,
20
19
  vendureConfigExport: options.vendureConfigExport,
@@ -32,11 +31,7 @@ export function configLoaderPlugin(options) {
32
31
  }
33
32
  catch (e) {
34
33
  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}`);
34
+ this.error(`Error loading Vendure config: ${e.message}`);
40
35
  }
41
36
  }
42
37
  onConfigLoaded.forEach(fn => fn());
@@ -7,7 +7,7 @@ export function viteConfigPlugin({ packageRoot }) {
7
7
  // Only set the vite `root` to the dashboard package when running the dev server.
8
8
  // During a production build we still need to reference the dashboard source which
9
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
10
+ // Therefore we set `root` only for `serve` and, for `build`, we instead make sure that
11
11
  // an `outDir` **outside** of `node_modules` is used (defaulting to the current working
12
12
  // directory if the user did not provide one already).
13
13
  config.root = packageRoot;
@@ -26,16 +26,18 @@ export function viteConfigPlugin({ packageRoot }) {
26
26
  config.build = Object.assign(Object.assign({}, buildConfig), { outDir: normalizedOutDir });
27
27
  }
28
28
  config.resolve = {
29
- alias: Object.assign(Object.assign({}, ((_c = (_b = config.resolve) === null || _b === void 0 ? void 0 : _b.alias) !== null && _c !== void 0 ? _c : {})), {
30
- // See the readme for an explanation of this alias.
31
- '@/vdb': path.resolve(packageRoot, './src/lib'), '@/graphql': path.resolve(packageRoot, './src/lib/graphql') }),
29
+ alias: Object.assign(Object.assign({}, ((_c = (_b = config.resolve) === null || _b === void 0 ? void 0 : _b.alias) !== null && _c !== void 0 ? _c : {})), { '@': path.resolve(packageRoot, './src/lib') }),
32
30
  };
33
31
  // This is required to prevent Vite from pre-bundling the
34
32
  // dashboard source when it resides in node_modules.
35
33
  config.optimizeDeps = Object.assign(Object.assign({}, config.optimizeDeps), { exclude: [
36
34
  ...(((_d = config.optimizeDeps) === null || _d === void 0 ? void 0 : _d.exclude) || []),
37
35
  '@vendure/dashboard',
38
- '@/vdb',
36
+ '@/providers',
37
+ '@/framework',
38
+ '@/lib',
39
+ '@/components',
40
+ '@/hooks',
39
41
  'virtual:vendure-ui-config',
40
42
  'virtual:admin-api-schema',
41
43
  'virtual:dashboard-extensions',
@@ -47,7 +49,6 @@ export function viteConfigPlugin({ packageRoot }) {
47
49
  ...(((_e = config.optimizeDeps) === null || _e === void 0 ? void 0 : _e.include) || []),
48
50
  '@/components > recharts',
49
51
  '@/components > react-dropzone',
50
- '@vendure/common/lib/generated-types',
51
52
  ] });
52
53
  return config;
53
54
  },
@@ -4,4 +4,6 @@ import { Plugin } from 'vite';
4
4
  * generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
5
5
  * function which can then be imported and executed in the Dashboard app.
6
6
  */
7
- export declare function dashboardMetadataPlugin(): Plugin;
7
+ export declare function dashboardMetadataPlugin(options: {
8
+ rootDir: string;
9
+ }): Plugin;
@@ -7,7 +7,7 @@ const resolvedVirtualModuleId = `\0${virtualModuleId}`;
7
7
  * generates an import statement for each one, wrapped up in a `runDashboardExtensions()`
8
8
  * function which can then be imported and executed in the Dashboard app.
9
9
  */
10
- export function dashboardMetadataPlugin() {
10
+ export function dashboardMetadataPlugin(options) {
11
11
  let configLoaderApi;
12
12
  let loadVendureConfigResult;
13
13
  return {
@@ -41,3 +41,10 @@ export function dashboardMetadataPlugin() {
41
41
  },
42
42
  };
43
43
  }
44
+ /**
45
+ * Converts an import path to a normalized path relative to the rootDir.
46
+ */
47
+ function normalizeImportPath(rootDir, importPath) {
48
+ const relativePath = path.relative(rootDir, importPath).replace(/\\/g, '/');
49
+ return relativePath.replace(/\.tsx?$/, '.js');
50
+ }
@@ -1,5 +1,4 @@
1
1
  import { PluginOption } from 'vite';
2
- import { PathAdapter } from './utils/config-loader.js';
3
2
  import { ThemeVariablesPluginOptions } from './vite-plugin-theme.js';
4
3
  import { UiConfigPluginOptions } from './vite-plugin-ui-config.js';
5
4
  /**
@@ -12,46 +11,6 @@ export type VitePluginVendureDashboardOptions = {
12
11
  * The path to the Vendure server configuration file.
13
12
  */
14
13
  vendureConfigPath: string | URL;
15
- /**
16
- * @description
17
- * The {@link PathAdapter} allows you to customize the resolution of paths
18
- * in the compiled Vendure source code which is used as part of the
19
- * introspection step of building the dashboard.
20
- *
21
- * It enables support for more complex repository structures, such as
22
- * monorepos, where the Vendure server configuration file may not
23
- * be located in the root directory of the project.
24
- *
25
- * If you get compilation errors like "Error loading Vendure config: Cannot find module",
26
- * you probably need to provide a custom `pathAdapter` to resolve the paths correctly.
27
- *
28
- * @example
29
- * ```ts
30
- * vendureDashboardPlugin({
31
- * tempCompilationDir: join(__dirname, './__vendure-dashboard-temp'),
32
- * pathAdapter: {
33
- * getCompiledConfigPath: ({ inputRootDir, outputPath, configFileName }) => {
34
- * const projectName = inputRootDir.split('/libs/')[1].split('/')[0];
35
- * const pathAfterProject = inputRootDir.split(`/libs/${projectName}`)[1];
36
- * const compiledConfigFilePath = `${outputPath}/${projectName}${pathAfterProject}`;
37
- * return path.join(compiledConfigFilePath, configFileName);
38
- * },
39
- * transformTsConfigPathMappings: ({ phase, patterns }) => {
40
- * // "loading" phase is when the compiled Vendure code is being loaded by
41
- * // the plugin, in order to introspect the configuration of your app.
42
- * if (phase === 'loading') {
43
- * return patterns.map((p) =>
44
- * p.replace('libs/', '').replace(/.ts$/, '.js'),
45
- * );
46
- * }
47
- * return patterns;
48
- * },
49
- * },
50
- * // ...
51
- * }),
52
- * ```
53
- */
54
- pathAdapter?: PathAdapter;
55
14
  /**
56
15
  * @description
57
16
  * The name of the exported variable from the Vendure server configuration file.
@@ -7,7 +7,6 @@ import { configLoaderPlugin } from './vite-plugin-config-loader.js';
7
7
  import { viteConfigPlugin } from './vite-plugin-config.js';
8
8
  import { dashboardMetadataPlugin } from './vite-plugin-dashboard-metadata.js';
9
9
  import { gqlTadaPlugin } from './vite-plugin-gql-tada.js';
10
- import { dashboardTailwindSourcePlugin } from './vite-plugin-tailwind-source.js';
11
10
  import { themeVariablesPlugin } from './vite-plugin-theme.js';
12
11
  import { transformIndexHtmlPlugin } from './vite-plugin-transform-index.js';
13
12
  import { uiConfigPlugin } from './vite-plugin-ui-config.js';
@@ -32,7 +31,7 @@ export function vendureDashboardPlugin(options) {
32
31
  : [
33
32
  TanStackRouterVite({
34
33
  autoCodeSplitting: true,
35
- routeFileIgnorePattern: '.graphql.ts|components|hooks|utils',
34
+ routeFileIgnorePattern: '.graphql.ts|components',
36
35
  routesDirectory: path.join(packageRoot, 'src/app/routes'),
37
36
  generatedRouteTree: path.join(packageRoot, 'src/app/routeTree.gen.ts'),
38
37
  }),
@@ -43,17 +42,15 @@ export function vendureDashboardPlugin(options) {
43
42
  // },
44
43
  }),
45
44
  themeVariablesPlugin({ theme: options.theme }),
46
- dashboardTailwindSourcePlugin(),
47
45
  tailwindcss(),
48
46
  configLoaderPlugin({
49
47
  vendureConfigPath: normalizedVendureConfigPath,
50
48
  tempDir,
51
49
  reportCompilationErrors: options.reportCompilationErrors,
52
- pathAdapter: options.pathAdapter,
53
50
  }),
54
51
  viteConfigPlugin({ packageRoot }),
55
52
  adminApiSchemaPlugin(),
56
- dashboardMetadataPlugin(),
53
+ dashboardMetadataPlugin({ rootDir: tempDir }),
57
54
  uiConfigPlugin({ adminUiConfig: options.adminUiConfig }),
58
55
  ...(options.gqlTadaOutputPath
59
56
  ? [gqlTadaPlugin({ gqlTadaOutputPath: options.gqlTadaOutputPath, tempDir, packageRoot })]