@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
@@ -1,28 +1,26 @@
1
+ import { getOperationVariablesFields } from '@/framework/document-introspection/get-document-structure.js';
2
+ import {
3
+ createFormSchemaFromFields,
4
+ getDefaultValuesFromFields,
5
+ } from '@/framework/form-engine/form-schema-tools.js';
6
+ import { useChannel } from '@/hooks/use-channel.js';
7
+ import { useServerConfig } from '@/hooks/use-server-config.js';
1
8
  import type { TypedDocumentNode } from '@graphql-typed-document-node/core';
2
9
  import { zodResolver } from '@hookform/resolvers/zod';
3
10
  import { VariablesOf } from 'gql.tada';
4
11
  import { FormEvent } from 'react';
5
12
  import { useForm } from 'react-hook-form';
6
- import { useChannel } from '../../hooks/use-channel.js';
7
- import { useServerConfig } from '../../hooks/use-server-config.js';
8
- import { getOperationVariablesFields } from '../document-introspection/get-document-structure.js';
9
- import { createFormSchemaFromFields, getDefaultValuesFromFields } from './form-schema-tools.js';
10
- import { transformRelationFields } from './utils.js';
11
13
 
12
14
  export interface GeneratedFormOptions<
13
15
  T extends TypedDocumentNode<any, any>,
14
- VarName extends keyof VariablesOf<T> | undefined = 'input',
16
+ VarName extends (keyof VariablesOf<T>) | undefined = 'input',
15
17
  E extends Record<string, any> = Record<string, any>,
16
18
  > {
17
19
  document?: T;
18
20
  varName?: VarName;
19
21
  entity: E | null | undefined;
20
- setValues: (
21
- entity: NonNullable<E>,
22
- ) => VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T>;
23
- onSubmit?: (
24
- values: VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T>,
25
- ) => void;
22
+ setValues: (entity: NonNullable<E>) => VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T>;
23
+ onSubmit?: (values: VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T>) => void;
26
24
  }
27
25
 
28
26
  /**
@@ -43,7 +41,7 @@ export function useGeneratedForm<
43
41
  const updateFields = document ? getOperationVariablesFields(document, varName) : [];
44
42
  const schema = createFormSchemaFromFields(updateFields);
45
43
  const defaultValues = getDefaultValuesFromFields(updateFields, activeChannel?.defaultLanguageCode);
46
- const processedEntity = ensureTranslationsForAllLanguages(entity, availableLanguages, defaultValues);
44
+ const processedEntity = ensureTranslationsForAllLanguages(entity, availableLanguages);
47
45
 
48
46
  const form = useForm({
49
47
  resolver: async (values, context, options) => {
@@ -55,9 +53,7 @@ export function useGeneratedForm<
55
53
  },
56
54
  mode: 'onChange',
57
55
  defaultValues,
58
- values: processedEntity
59
- ? transformRelationFields(updateFields, setValues(processedEntity))
60
- : defaultValues,
56
+ values: processedEntity ? setValues(processedEntity) : defaultValues,
61
57
  });
62
58
  let submitHandler = (event: FormEvent) => {
63
59
  event.preventDefault();
@@ -73,13 +69,11 @@ export function useGeneratedForm<
73
69
 
74
70
  /**
75
71
  * Ensures that an entity with translations has entries for all available languages.
76
- * If a language is missing, it creates an empty translation based on the structure of existing translations
77
- * and the expected form structure from defaultValues.
72
+ * If a language is missing, it creates an empty translation based on the structure of existing translations.
78
73
  */
79
74
  function ensureTranslationsForAllLanguages<E extends Record<string, any>>(
80
75
  entity: E | null | undefined,
81
76
  availableLanguages: string[] = [],
82
- expectedStructure?: Record<string, any>,
83
77
  ): E | null | undefined {
84
78
  if (
85
79
  !entity ||
@@ -97,56 +91,23 @@ function ensureTranslationsForAllLanguages<E extends Record<string, any>>(
97
91
  // Get existing language codes
98
92
  const existingLanguageCodes = new Set(translations.map((t: any) => t.languageCode));
99
93
 
100
- // Get the expected translation structure from defaultValues or existing translations
101
- const existingTemplate = translations[0] || {};
102
- const expectedTranslationStructure = expectedStructure?.translations?.[0] || {};
103
-
104
- // Merge the structures to ensure we have all expected fields
105
- const templateStructure = {
106
- ...expectedTranslationStructure,
107
- ...existingTemplate,
108
- };
109
-
110
94
  // Add missing language translations
111
95
  for (const langCode of availableLanguages) {
112
96
  if (!existingLanguageCodes.has(langCode)) {
97
+ // Find a translation to use as template for field structure
98
+ const template = translations[0] || {};
113
99
  const emptyTranslation: Record<string, any> = {
114
100
  languageCode: langCode,
115
101
  };
116
102
 
117
- // Add empty fields based on merged template structure (excluding languageCode)
118
- Object.keys(templateStructure).forEach(key => {
103
+ // Add empty fields based on template (excluding languageCode)
104
+ Object.keys(template).forEach(key => {
119
105
  if (key !== 'languageCode') {
120
- if (typeof templateStructure[key] === 'object' && templateStructure[key] !== null) {
121
- // For nested objects like customFields, create an empty object
122
- emptyTranslation[key] = Array.isArray(templateStructure[key]) ? [] : {};
123
- } else {
124
- // For primitive values, use empty string as default
125
- emptyTranslation[key] = '';
126
- }
106
+ emptyTranslation[key] = '';
127
107
  }
128
108
  });
129
109
 
130
110
  translations.push(emptyTranslation);
131
- } else {
132
- // For existing translations, ensure they have all expected fields
133
- const existingTranslation = translations.find((t: any) => t.languageCode === langCode);
134
- if (existingTranslation) {
135
- Object.keys(expectedTranslationStructure).forEach(key => {
136
- if (key !== 'languageCode' && !(key in existingTranslation)) {
137
- if (
138
- typeof expectedTranslationStructure[key] === 'object' &&
139
- expectedTranslationStructure[key] !== null
140
- ) {
141
- existingTranslation[key] = Array.isArray(expectedTranslationStructure[key])
142
- ? []
143
- : {};
144
- } else {
145
- existingTranslation[key] = '';
146
- }
147
- }
148
- });
149
- }
150
111
  }
151
112
  }
152
113
 
@@ -1,10 +1,10 @@
1
- import { CopyableText } from '@/vdb/components/shared/copyable-text.js';
2
- import { Button } from '@/vdb/components/ui/button.js';
3
- import { Popover, PopoverContent, PopoverTrigger } from '@/vdb/components/ui/popover.js';
4
- import { usePage } from '@/vdb/hooks/use-page.js';
5
- import { useUserSettings } from '@/vdb/hooks/use-user-settings.js';
6
- import { Trans } from '@/vdb/lib/trans.js';
7
- import { cn } from '@/vdb/lib/utils.js';
1
+ import { CopyableText } from '@/components/shared/copyable-text.js';
2
+ import { Button } from '@/components/ui/button.js';
3
+ import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover.js';
4
+ import { usePage } from '@/hooks/use-page.js';
5
+ import { useUserSettings } from '@/hooks/use-user-settings.js';
6
+ import { cn } from '@/lib/utils.js';
7
+ import { Trans } from '@/lib/trans.js';
8
8
  import { CodeXmlIcon, InfoIcon } from 'lucide-react';
9
9
  import { createContext, useContext, useState } from 'react';
10
10
 
@@ -18,10 +18,7 @@ const LocationWrapperContext = createContext<{
18
18
  setHoveredId: null,
19
19
  });
20
20
 
21
- export function LocationWrapper({
22
- children,
23
- blockId,
24
- }: Readonly<{ children: React.ReactNode; blockId?: string }>) {
21
+ export function LocationWrapper({ children, blockId }: { children: React.ReactNode; blockId?: string }) {
25
22
  const page = usePage();
26
23
  const { settings } = useUserSettings();
27
24
  const [isPopoverOpen, setIsPopoverOpen] = useState(false);
@@ -1,21 +1,20 @@
1
- import { CustomFieldsForm } from '@/vdb/components/shared/custom-fields-form.js';
2
- import { NavigationConfirmation } from '@/vdb/components/shared/navigation-confirmation.js';
3
- import { PermissionGuard } from '@/vdb/components/shared/permission-guard.js';
4
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/vdb/components/ui/card.js';
5
- import { Form } from '@/vdb/components/ui/form.js';
6
- import { useCustomFieldConfig } from '@/vdb/hooks/use-custom-field-config.js';
7
- import { usePage } from '@/vdb/hooks/use-page.js';
8
- import { cn } from '@/vdb/lib/utils.js';
1
+ import { CustomFieldsForm } from '@/components/shared/custom-fields-form.js';
2
+ import { PermissionGuard } from '@/components/shared/permission-guard.js';
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card.js';
4
+ import { Form } from '@/components/ui/form.js';
5
+ import { useCustomFieldConfig } from '@/hooks/use-custom-field-config.js';
6
+ import { usePage } from '@/hooks/use-page.js';
7
+ import { cn } from '@/lib/utils.js';
8
+ import { NavigationConfirmation } from '@/components/shared/navigation-confirmation.js';
9
9
  import { useMediaQuery } from '@uidotdev/usehooks';
10
10
  import React, { ComponentProps } from 'react';
11
11
  import { Control, UseFormReturn } from 'react-hook-form';
12
12
 
13
- import { DashboardActionBarItem } from '../extension-api/types/layout.js';
13
+ import { DashboardActionBarItem } from '../extension-api/extension-api-types.js';
14
14
 
15
- import { PageBlockContext } from '@/vdb/framework/layout-engine/page-block-provider.js';
16
- import { PageContext, PageContextValue } from '@/vdb/framework/layout-engine/page-provider.js';
17
15
  import { getDashboardActionBarItems, getDashboardPageBlocks } from './layout-extensions.js';
18
16
  import { LocationWrapper } from './location-wrapper.js';
17
+ import { PageContext, PageContextValue } from '@/framework/layout-engine/page-provider.js';
19
18
 
20
19
  export interface PageProps extends ComponentProps<'div'> {
21
20
  pageId?: string;
@@ -42,11 +41,13 @@ export interface PageProps extends ComponentProps<'div'> {
42
41
  * @docsWeight 0
43
42
  * @since 3.3.0
44
43
  */
45
- export function Page({ children, pageId, entity, form, submitHandler, ...props }: Readonly<PageProps>) {
44
+ export function Page({ children, pageId, entity, form, submitHandler, ...props }: PageProps) {
46
45
  const childArray = React.Children.toArray(children);
47
46
 
48
47
  const pageTitle = childArray.find(child => React.isValidElement(child) && child.type === PageTitle);
49
- const pageActionBar = childArray.find(child => isOfType(child, PageActionBar));
48
+ const pageActionBar = childArray.find(
49
+ child => isOfType(child, PageActionBar),
50
+ );
50
51
 
51
52
  const pageContent = childArray.filter(
52
53
  child => !isOfType(child, PageTitle) && !isOfType(child, PageActionBar),
@@ -72,13 +73,7 @@ export function Page({ children, pageId, entity, form, submitHandler, ...props }
72
73
  );
73
74
  }
74
75
 
75
- function PageContent({
76
- pageHeader,
77
- pageContent,
78
- form,
79
- submitHandler,
80
- ...props
81
- }: {
76
+ function PageContent({ pageHeader, pageContent, form, submitHandler, ...props }: {
82
77
  pageHeader: React.ReactNode;
83
78
  pageContent: React.ReactNode;
84
79
  form?: UseFormReturn<any>;
@@ -99,14 +94,9 @@ function PageContent({
99
94
  );
100
95
  }
101
96
 
102
- export function PageContentWithOptionalForm({
103
- form,
104
- pageHeader,
105
- pageContent,
106
- submitHandler,
107
- }: {
97
+ export function PageContentWithOptionalForm({ form, pageHeader, pageContent, submitHandler }: {
108
98
  form?: UseFormReturn<any>;
109
- pageHeader: React.ReactNode;
99
+ pageHeader: React.ReactNode
110
100
  pageContent: React.ReactNode;
111
101
  submitHandler?: any;
112
102
  }) {
@@ -164,7 +154,7 @@ function isPageBlock(child: unknown): child is React.ReactElement<PageBlockProps
164
154
  * @docsWeight 0
165
155
  * @since 3.3.0
166
156
  */
167
- export function PageLayout({ children, className }: Readonly<PageLayoutProps>) {
157
+ export function PageLayout({ children, className }: PageLayoutProps) {
168
158
  const page = usePage();
169
159
  const isDesktop = useMediaQuery('only screen and (min-width : 769px)');
170
160
  // Separate blocks into categories
@@ -194,7 +184,6 @@ export function PageLayout({ children, className }: Readonly<PageLayoutProps>) {
194
184
  if (extensionBlock) {
195
185
  const ExtensionBlock = (
196
186
  <PageBlock
197
- key={childBlock.key}
198
187
  column={extensionBlock.location.column}
199
188
  blockId={extensionBlock.id}
200
189
  title={extensionBlock.title}
@@ -238,7 +227,7 @@ export function PageLayout({ children, className }: Readonly<PageLayoutProps>) {
238
227
  );
239
228
  }
240
229
 
241
- export function DetailFormGrid({ children }: Readonly<{ children: React.ReactNode }>) {
230
+ export function DetailFormGrid({ children }: { children: React.ReactNode }) {
242
231
  return <div className="md:grid md:grid-cols-2 gap-4 items-start mb-4">{children}</div>;
243
232
  }
244
233
 
@@ -252,7 +241,7 @@ export function DetailFormGrid({ children }: Readonly<{ children: React.ReactNod
252
241
  * @docsPage PageTitle
253
242
  * @since 3.3.0
254
243
  */
255
- export function PageTitle({ children }: Readonly<{ children: React.ReactNode }>) {
244
+ export function PageTitle({ children }: { children: React.ReactNode }) {
256
245
  return <h1 className="text-2xl font-semibold">{children}</h1>;
257
246
  }
258
247
 
@@ -269,11 +258,15 @@ export function PageTitle({ children }: Readonly<{ children: React.ReactNode }>)
269
258
  * @docsWeight 0
270
259
  * @since 3.3.0
271
260
  */
272
- export function PageActionBar({ children }: Readonly<{ children: React.ReactNode }>) {
261
+ export function PageActionBar({ children }: { children: React.ReactNode }) {
273
262
  let childArray = React.Children.toArray(children);
274
263
 
275
- const leftContent = childArray.filter(child => isOfType(child, PageActionBarLeft));
276
- const rightContent = childArray.filter(child => isOfType(child, PageActionBarRight));
264
+ const leftContent = childArray.filter(
265
+ child => isOfType(child, PageActionBarLeft),
266
+ );
267
+ const rightContent = childArray.filter(
268
+ child => isOfType(child, PageActionBarRight),
269
+ );
277
270
 
278
271
  return (
279
272
  <div className={cn('flex gap-2', leftContent.length > 0 ? 'justify-between' : 'justify-end')}>
@@ -291,7 +284,7 @@ export function PageActionBar({ children }: Readonly<{ children: React.ReactNode
291
284
  * @docsPage PageActionBar
292
285
  * @since 3.3.0
293
286
  */
294
- export function PageActionBarLeft({ children }: Readonly<{ children: React.ReactNode }>) {
287
+ export function PageActionBarLeft({ children }: { children: React.ReactNode }) {
295
288
  return <div className="flex justify-start gap-2">{children}</div>;
296
289
  }
297
290
 
@@ -303,7 +296,7 @@ export function PageActionBarLeft({ children }: Readonly<{ children: React.React
303
296
  * @docsPage PageActionBar
304
297
  * @since 3.3.0
305
298
  */
306
- export function PageActionBarRight({ children }: Readonly<{ children: React.ReactNode }>) {
299
+ export function PageActionBarRight({ children }: { children: React.ReactNode }) {
307
300
  const page = usePage();
308
301
  const actionBarItems = page.pageId ? getDashboardActionBarItems(page.pageId) : [];
309
302
  return (
@@ -355,27 +348,18 @@ export type PageBlockProps = {
355
348
  * @docsWeight 0
356
349
  * @since 3.3.0
357
350
  */
358
- export function PageBlock({
359
- children,
360
- title,
361
- description,
362
- className,
363
- blockId,
364
- column,
365
- }: Readonly<PageBlockProps>) {
351
+ export function PageBlock({ children, title, description, className, blockId }: PageBlockProps) {
366
352
  return (
367
353
  <LocationWrapper blockId={blockId}>
368
- <PageBlockContext.Provider value={{ blockId, title, description, column }}>
369
- <Card className={cn('w-full', className)}>
370
- {title || description ? (
371
- <CardHeader>
372
- {title && <CardTitle>{title}</CardTitle>}
373
- {description && <CardDescription>{description}</CardDescription>}
374
- </CardHeader>
375
- ) : null}
376
- <CardContent className={cn(!title ? 'pt-6' : '')}>{children}</CardContent>
377
- </Card>
378
- </PageBlockContext.Provider>
354
+ <Card className={cn('w-full', className)}>
355
+ {title || description ? (
356
+ <CardHeader>
357
+ {title && <CardTitle>{title}</CardTitle>}
358
+ {description && <CardDescription>{description}</CardDescription>}
359
+ </CardHeader>
360
+ ) : null}
361
+ <CardContent className={cn(!title ? 'pt-6' : '')}>{children}</CardContent>
362
+ </Card>
379
363
  </LocationWrapper>
380
364
  );
381
365
  }
@@ -392,15 +376,13 @@ export function PageBlock({
392
376
  * @since 3.3.0
393
377
  */
394
378
  export function FullWidthPageBlock({
395
- children,
396
- className,
397
- blockId,
398
- }: Pick<PageBlockProps, 'children' | 'className' | 'blockId'>) {
379
+ children,
380
+ className,
381
+ blockId,
382
+ }: Pick<PageBlockProps, 'children' | 'className' | 'blockId'>) {
399
383
  return (
400
384
  <LocationWrapper blockId={blockId}>
401
- <PageBlockContext.Provider value={{ blockId, column: 'main' }}>
402
- <div className={cn('w-full', className)}>{children}</div>
403
- </PageBlockContext.Provider>
385
+ <div className={cn('w-full', className)}>{children}</div>
404
386
  </LocationWrapper>
405
387
  );
406
388
  }
@@ -416,10 +398,10 @@ export function FullWidthPageBlock({
416
398
  * @since 3.3.0
417
399
  */
418
400
  export function CustomFieldsPageBlock({
419
- column,
420
- entityType,
421
- control,
422
- }: {
401
+ column,
402
+ entityType,
403
+ control,
404
+ }: {
423
405
  column: 'main' | 'side';
424
406
  entityType: string;
425
407
  control: Control<any, any>;
@@ -1,55 +1,36 @@
1
- import { NEW_ENTITY_PATH } from '@/vdb/constants.js';
1
+ import { NEW_ENTITY_PATH } from '@/constants.js';
2
2
 
3
- import { PageBreadcrumb } from '@/vdb/components/layout/generated-breadcrumbs.js';
4
- import { extendDetailFormQuery } from '@/vdb/framework/document-extension/extend-detail-form-query.js';
3
+ import { PageBreadcrumb } from '@/components/layout/generated-breadcrumbs.js';
5
4
  import { TypedDocumentNode } from '@graphql-typed-document-node/core';
6
- import { FileBaseRouteOptions, ParsedLocation } from '@tanstack/react-router';
7
- import { addCustomFields } from '../document-introspection/add-custom-fields.js';
5
+ import { FileBaseRouteOptions } from '@tanstack/react-router';
8
6
  import { getQueryName, getQueryTypeFieldInfo } from '../document-introspection/get-document-structure.js';
9
7
  import { DetailEntity } from './page-types.js';
10
8
  import { getDetailQueryOptions } from './use-detail-page.js';
11
-
9
+ import { addCustomFields } from '../document-introspection/add-custom-fields.js';
12
10
  export interface DetailPageRouteLoaderConfig<T extends TypedDocumentNode<any, any>> {
13
- /**
14
- * @description
15
- * The pageId is used to ensure any detail form extensions (such as extensions to
16
- * the detail query document) get correctly applied at the route loader level.
17
- */
18
- pageId?: string;
19
11
  queryDocument: T;
20
- breadcrumb: (
21
- isNew: boolean,
22
- entity: DetailEntity<T>,
23
- location: ParsedLocation,
24
- ) => Array<PageBreadcrumb | undefined>;
12
+ breadcrumb: (isNew: boolean, entity: DetailEntity<T>) => Array<PageBreadcrumb | undefined>;
25
13
  }
26
14
 
27
15
  export function detailPageRouteLoader<T extends TypedDocumentNode<any, any>>({
28
- pageId,
29
16
  queryDocument,
30
17
  breadcrumb,
31
18
  }: DetailPageRouteLoaderConfig<T>) {
32
19
  const loader: FileBaseRouteOptions<any, any>['loader'] = async ({
33
20
  context,
34
21
  params,
35
- location,
36
22
  }: {
37
23
  context: any;
38
24
  params: any;
39
- location: ParsedLocation;
40
25
  }) => {
41
26
  if (!params.id) {
42
27
  throw new Error('ID param is required');
43
28
  }
44
29
  const isNew = params.id === NEW_ENTITY_PATH;
45
- const { extendedQuery: extendedQueryDocument } = extendDetailFormQuery(
46
- addCustomFields(queryDocument),
47
- pageId,
48
- );
49
30
  const result = isNew
50
31
  ? null
51
32
  : await context.queryClient.ensureQueryData(
52
- getDetailQueryOptions(extendedQueryDocument, { id: params.id }),
33
+ getDetailQueryOptions(addCustomFields(queryDocument), { id: params.id }),
53
34
  { id: params.id },
54
35
  );
55
36
 
@@ -60,7 +41,7 @@ export function detailPageRouteLoader<T extends TypedDocumentNode<any, any>>({
60
41
  throw new Error(`${entityName} with the ID ${params.id} was not found`);
61
42
  }
62
43
  return {
63
- breadcrumb: breadcrumb(isNew, result?.[entityField], location),
44
+ breadcrumb: breadcrumb(isNew, result?.[entityField]),
64
45
  };
65
46
  };
66
47
  return loader;