@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,183 +1,161 @@
1
- import * as React from "react"
2
- import * as SelectPrimitive from "@radix-ui/react-select"
3
- import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"
1
+ import * as React from 'react';
2
+ import * as SelectPrimitive from '@radix-ui/react-select';
3
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';
4
4
 
5
- import { cn } from "@/vdb/lib/utils"
5
+ import { cn } from '@/lib/utils.js';
6
6
 
7
- function Select({
8
- ...props
9
- }: React.ComponentProps<typeof SelectPrimitive.Root>) {
10
- return <SelectPrimitive.Root data-slot="select" {...props} />
7
+ function Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {
8
+ return <SelectPrimitive.Root data-slot="select" {...props} />;
11
9
  }
12
10
 
13
- function SelectGroup({
14
- ...props
15
- }: React.ComponentProps<typeof SelectPrimitive.Group>) {
16
- return <SelectPrimitive.Group data-slot="select-group" {...props} />
11
+ function SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {
12
+ return <SelectPrimitive.Group data-slot="select-group" {...props} />;
17
13
  }
18
14
 
19
- function SelectValue({
20
- ...props
21
- }: React.ComponentProps<typeof SelectPrimitive.Value>) {
22
- return <SelectPrimitive.Value data-slot="select-value" {...props} />
15
+ function SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {
16
+ return <SelectPrimitive.Value data-slot="select-value" {...props} />;
23
17
  }
24
18
 
25
19
  function SelectTrigger({
26
- className,
27
- size = "default",
28
- children,
29
- ...props
20
+ className,
21
+ size = 'default',
22
+ children,
23
+ ...props
30
24
  }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
31
- size?: "sm" | "default"
25
+ size?: 'sm' | 'default';
32
26
  }) {
33
- return (
34
- <SelectPrimitive.Trigger
35
- data-slot="select-trigger"
36
- data-size={size}
37
- className={cn(
38
- "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
39
- className
40
- )}
41
- {...props}
42
- >
43
- {children}
44
- <SelectPrimitive.Icon asChild>
45
- <ChevronDownIcon className="size-4 opacity-50" />
46
- </SelectPrimitive.Icon>
47
- </SelectPrimitive.Trigger>
48
- )
27
+ return (
28
+ <SelectPrimitive.Trigger
29
+ data-slot="select-trigger"
30
+ data-size={size}
31
+ className={cn(
32
+ "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
33
+ className,
34
+ )}
35
+ {...props}
36
+ >
37
+ {children}
38
+ <SelectPrimitive.Icon asChild>
39
+ <ChevronDownIcon className="size-4 opacity-50" />
40
+ </SelectPrimitive.Icon>
41
+ </SelectPrimitive.Trigger>
42
+ );
49
43
  }
50
44
 
51
45
  function SelectContent({
52
- className,
53
- children,
54
- position = "popper",
55
- ...props
46
+ className,
47
+ children,
48
+ position = 'popper',
49
+ ...props
56
50
  }: React.ComponentProps<typeof SelectPrimitive.Content>) {
57
- return (
58
- <SelectPrimitive.Portal>
59
- <SelectPrimitive.Content
60
- data-slot="select-content"
61
- className={cn(
62
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
63
- position === "popper" &&
64
- "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
65
- className
66
- )}
67
- position={position}
68
- {...props}
69
- >
70
- <SelectScrollUpButton />
71
- <SelectPrimitive.Viewport
72
- className={cn(
73
- "p-1",
74
- position === "popper" &&
75
- "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
76
- )}
77
- >
78
- {children}
79
- </SelectPrimitive.Viewport>
80
- <SelectScrollDownButton />
81
- </SelectPrimitive.Content>
82
- </SelectPrimitive.Portal>
83
- )
51
+ return (
52
+ <SelectPrimitive.Portal>
53
+ <SelectPrimitive.Content
54
+ data-slot="select-content"
55
+ className={cn(
56
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md',
57
+ position === 'popper' &&
58
+ 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
59
+ className,
60
+ )}
61
+ position={position}
62
+ {...props}
63
+ >
64
+ <SelectScrollUpButton />
65
+ <SelectPrimitive.Viewport
66
+ className={cn(
67
+ 'p-1',
68
+ position === 'popper' &&
69
+ 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1',
70
+ )}
71
+ >
72
+ {children}
73
+ </SelectPrimitive.Viewport>
74
+ <SelectScrollDownButton />
75
+ </SelectPrimitive.Content>
76
+ </SelectPrimitive.Portal>
77
+ );
84
78
  }
85
79
 
86
- function SelectLabel({
87
- className,
88
- ...props
89
- }: React.ComponentProps<typeof SelectPrimitive.Label>) {
90
- return (
91
- <SelectPrimitive.Label
92
- data-slot="select-label"
93
- className={cn("text-muted-foreground px-2 py-1.5 text-xs", className)}
94
- {...props}
95
- />
96
- )
80
+ function SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {
81
+ return (
82
+ <SelectPrimitive.Label
83
+ data-slot="select-label"
84
+ className={cn('px-2 py-1.5 text-sm font-medium', className)}
85
+ {...props}
86
+ />
87
+ );
97
88
  }
98
89
 
99
- function SelectItem({
100
- className,
101
- children,
102
- ...props
103
- }: React.ComponentProps<typeof SelectPrimitive.Item>) {
104
- return (
105
- <SelectPrimitive.Item
106
- data-slot="select-item"
107
- className={cn(
108
- "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
109
- className
110
- )}
111
- {...props}
112
- >
113
- <span className="absolute right-2 flex size-3.5 items-center justify-center">
114
- <SelectPrimitive.ItemIndicator>
115
- <CheckIcon className="size-4" />
116
- </SelectPrimitive.ItemIndicator>
117
- </span>
118
- <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
119
- </SelectPrimitive.Item>
120
- )
90
+ function SelectItem({ className, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Item>) {
91
+ return (
92
+ <SelectPrimitive.Item
93
+ data-slot="select-item"
94
+ className={cn(
95
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
96
+ className,
97
+ )}
98
+ {...props}
99
+ >
100
+ <span className="absolute right-2 flex size-3.5 items-center justify-center">
101
+ <SelectPrimitive.ItemIndicator>
102
+ <CheckIcon className="size-4" />
103
+ </SelectPrimitive.ItemIndicator>
104
+ </span>
105
+ <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
106
+ </SelectPrimitive.Item>
107
+ );
121
108
  }
122
109
 
123
- function SelectSeparator({
124
- className,
125
- ...props
126
- }: React.ComponentProps<typeof SelectPrimitive.Separator>) {
127
- return (
128
- <SelectPrimitive.Separator
129
- data-slot="select-separator"
130
- className={cn("bg-border pointer-events-none -mx-1 my-1 h-px", className)}
131
- {...props}
132
- />
133
- )
110
+ function SelectSeparator({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Separator>) {
111
+ return (
112
+ <SelectPrimitive.Separator
113
+ data-slot="select-separator"
114
+ className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}
115
+ {...props}
116
+ />
117
+ );
134
118
  }
135
119
 
136
120
  function SelectScrollUpButton({
137
- className,
138
- ...props
121
+ className,
122
+ ...props
139
123
  }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {
140
- return (
141
- <SelectPrimitive.ScrollUpButton
142
- data-slot="select-scroll-up-button"
143
- className={cn(
144
- "flex cursor-default items-center justify-center py-1",
145
- className
146
- )}
147
- {...props}
148
- >
149
- <ChevronUpIcon className="size-4" />
150
- </SelectPrimitive.ScrollUpButton>
151
- )
124
+ return (
125
+ <SelectPrimitive.ScrollUpButton
126
+ data-slot="select-scroll-up-button"
127
+ className={cn('flex cursor-default items-center justify-center py-1', className)}
128
+ {...props}
129
+ >
130
+ <ChevronUpIcon className="size-4" />
131
+ </SelectPrimitive.ScrollUpButton>
132
+ );
152
133
  }
153
134
 
154
135
  function SelectScrollDownButton({
155
- className,
156
- ...props
136
+ className,
137
+ ...props
157
138
  }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {
158
- return (
159
- <SelectPrimitive.ScrollDownButton
160
- data-slot="select-scroll-down-button"
161
- className={cn(
162
- "flex cursor-default items-center justify-center py-1",
163
- className
164
- )}
165
- {...props}
166
- >
167
- <ChevronDownIcon className="size-4" />
168
- </SelectPrimitive.ScrollDownButton>
169
- )
139
+ return (
140
+ <SelectPrimitive.ScrollDownButton
141
+ data-slot="select-scroll-down-button"
142
+ className={cn('flex cursor-default items-center justify-center py-1', className)}
143
+ {...props}
144
+ >
145
+ <ChevronDownIcon className="size-4" />
146
+ </SelectPrimitive.ScrollDownButton>
147
+ );
170
148
  }
171
149
 
172
150
  export {
173
- Select,
174
- SelectContent,
175
- SelectGroup,
176
- SelectItem,
177
- SelectLabel,
178
- SelectScrollDownButton,
179
- SelectScrollUpButton,
180
- SelectSeparator,
181
- SelectTrigger,
182
- SelectValue,
183
- }
151
+ Select,
152
+ SelectContent,
153
+ SelectGroup,
154
+ SelectItem,
155
+ SelectLabel,
156
+ SelectScrollDownButton,
157
+ SelectScrollUpButton,
158
+ SelectSeparator,
159
+ SelectTrigger,
160
+ SelectValue,
161
+ };
@@ -1,7 +1,7 @@
1
- import * as SeparatorPrimitive from '@radix-ui/react-separator';
2
1
  import * as React from 'react';
2
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
3
3
 
4
- import { cn } from '@/vdb/lib/utils.js';
4
+ import { cn } from '@/lib/utils.js';
5
5
 
6
6
  function Separator({
7
7
  className,
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
+ import * as React from 'react';
3
4
  import * as SheetPrimitive from '@radix-ui/react-dialog';
4
5
  import { XIcon } from 'lucide-react';
5
- import * as React from 'react';
6
6
 
7
- import { cn } from '@/vdb/lib/utils.js';
7
+ import { cn } from '@/lib/utils.js';
8
8
 
9
9
  function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
10
10
  return <SheetPrimitive.Root data-slot="sheet" {...props} />;
@@ -108,11 +108,11 @@ function SheetDescription({ className, ...props }: React.ComponentProps<typeof S
108
108
 
109
109
  export {
110
110
  Sheet,
111
+ SheetTrigger,
111
112
  SheetClose,
112
113
  SheetContent,
113
- SheetDescription,
114
- SheetFooter,
115
114
  SheetHeader,
115
+ SheetFooter,
116
116
  SheetTitle,
117
- SheetTrigger,
117
+ SheetDescription,
118
118
  };
@@ -1,19 +1,19 @@
1
1
  'use client';
2
2
 
3
+ import { MouseEvent } from 'react';
4
+ import * as React from 'react';
3
5
  import { Slot } from '@radix-ui/react-slot';
4
6
  import { VariantProps, cva } from 'class-variance-authority';
5
7
  import { PanelLeftIcon } from 'lucide-react';
6
- import * as React from 'react';
7
- import { MouseEvent } from 'react';
8
8
 
9
- import { Button } from '@/vdb/components/ui/button.js';
10
- import { Input } from '@/vdb/components/ui/input.js';
11
- import { Separator } from '@/vdb/components/ui/separator.js';
12
- import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/vdb/components/ui/sheet.js';
13
- import { Skeleton } from '@/vdb/components/ui/skeleton.js';
14
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/vdb/components/ui/tooltip.js';
15
- import { useIsMobile } from '@/vdb/hooks/use-mobile.js';
16
- import { cn } from '@/vdb/lib/utils.js';
9
+ import { useIsMobile } from '@/hooks/use-mobile.js';
10
+ import { cn } from '@/lib/utils.js';
11
+ import { Button } from '@/components/ui/button.js';
12
+ import { Input } from '@/components/ui/input.js';
13
+ import { Separator } from '@/components/ui/separator.js';
14
+ import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet.js';
15
+ import { Skeleton } from '@/components/ui/skeleton.js';
16
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip.js';
17
17
 
18
18
  const SIDEBAR_COOKIE_NAME = 'sidebar_state';
19
19
  const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
@@ -1,4 +1,4 @@
1
- import { cn } from '@/vdb/lib/utils.js';
1
+ import { cn } from '@/lib/utils.js';
2
2
 
3
3
  function Skeleton({ className, ...props }: React.ComponentProps<'div'>) {
4
4
  return (
@@ -1,7 +1,7 @@
1
- import * as SwitchPrimitive from '@radix-ui/react-switch';
2
1
  import * as React from 'react';
2
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
3
3
 
4
- import { cn } from '@/vdb/lib/utils.js';
4
+ import { cn } from '@/lib/utils.js';
5
5
 
6
6
  function Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {
7
7
  return (
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- import { cn } from '@/vdb/lib/utils.js';
3
+ import { cn } from '@/lib/utils.js';
4
4
 
5
5
  function Table({ className, ...props }: React.ComponentProps<'table'>) {
6
6
  return (
@@ -79,4 +79,4 @@ function TableCaption({ className, ...props }: React.ComponentProps<'caption'>)
79
79
  );
80
80
  }
81
81
 
82
- export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
82
+ export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };
@@ -1,7 +1,7 @@
1
- import * as TabsPrimitive from '@radix-ui/react-tabs';
2
1
  import * as React from 'react';
2
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
3
3
 
4
- import { cn } from '@/vdb/lib/utils.js';
4
+ import { cn } from '@/lib/utils.js';
5
5
 
6
6
  function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {
7
7
  return (
@@ -45,4 +45,4 @@ function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPr
45
45
  );
46
46
  }
47
47
 
48
- export { Tabs, TabsContent, TabsList, TabsTrigger };
48
+ export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- import { cn } from '@/vdb/lib/utils.js';
3
+ import { cn } from '@/lib/utils.js';
4
4
 
5
5
  function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {
6
6
  return (
@@ -1,7 +1,7 @@
1
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
2
1
  import * as React from 'react';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
3
 
4
- import { cn } from '@/vdb/lib/utils.js';
4
+ import { cn } from '@/lib/utils.js';
5
5
 
6
6
  function TooltipProvider({
7
7
  delayDuration = 0,
@@ -48,4 +48,4 @@ function TooltipContent({
48
48
  );
49
49
  }
50
50
 
51
- export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
51
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
@@ -1,6 +1,7 @@
1
- import { useEffect, useState } from 'react';
2
- import { DashboardAlertDefinition } from '../extension-api/types/alerts.js';
1
+ import { useEffect } from 'react';
2
+ import { useState } from 'react';
3
3
  import { globalRegistry } from '../registry/global-registry.js';
4
+ import { DashboardAlertDefinition } from './types.js';
4
5
 
5
6
  globalRegistry.register('dashboardAlertRegistry', new Map<string, DashboardAlertDefinition>());
6
7
 
@@ -1,10 +1,8 @@
1
- import { Button } from '@/vdb/components/ui/button.js';
2
- import { cn } from '@/vdb/lib/utils.js';
1
+ import { Button } from '@/components/ui/button.js';
3
2
  import { useQuery } from '@tanstack/react-query';
4
3
  import { ComponentProps } from 'react';
5
-
6
- import { DashboardAlertDefinition } from '../extension-api/types/alerts.js';
7
-
4
+ import { DashboardAlertDefinition } from './types.js';
5
+ import { cn } from '@/lib/utils.js';
8
6
  interface AlertItemProps extends ComponentProps<'div'> {
9
7
  alert: DashboardAlertDefinition;
10
8
  }
@@ -0,0 +1,13 @@
1
+ export interface DashboardAlertDefinition<TResponse = any> {
2
+ id: string;
3
+ title: string | ((data: TResponse) => string);
4
+ description?: string | ((data: TResponse) => string);
5
+ severity: 'info' | 'warning' | 'error';
6
+ check: () => Promise<TResponse> | TResponse;
7
+ recheckInterval?: number;
8
+ shouldShow?: (data: TResponse) => boolean;
9
+ actions?: Array<{
10
+ label: string;
11
+ onClick: (data: TResponse) => void;
12
+ }>;
13
+ }
@@ -1,56 +1,70 @@
1
+ import { BooleanDisplayBadge, BooleanDisplayCheckbox } from '@/components/data-display/boolean.js';
2
+ import { DateTime } from '@/components/data-display/date-time.js';
3
+ import { Money } from '@/components/data-display/money.js';
4
+ import { DateTimeInput } from '@/components/data-input/datetime-input.js';
5
+ import { FacetValueInput } from '@/components/data-input/facet-value-input.js';
6
+ import { MoneyInput } from '@/components/data-input/money-input.js';
7
+ import { VendureImage } from '@/components/shared/vendure-image.js';
8
+ import { Checkbox } from '@/components/ui/checkbox.js';
9
+ import { Input } from '@/components/ui/input.js';
1
10
  import * as React from 'react';
2
- import { ControllerRenderProps, FieldPath, FieldValues } from 'react-hook-form';
3
- import { addDisplayComponent, getDisplayComponent } from '../extension-api/display-component-extensions.js';
4
- import { addInputComponent, getInputComponent } from '../extension-api/input-component-extensions.js';
5
11
 
6
12
  export interface ComponentRegistryEntry<Props extends Record<string, any>> {
7
13
  component: React.ComponentType<Props>;
8
14
  }
9
15
 
10
16
  // Basic component types
17
+ export type DataDisplayComponent = React.ComponentType<{ value: any; [key: string]: any }>;
18
+ export type DataInputComponent = React.ComponentType<{ value: any; onChange: (value: any) => void; [key: string]: any }>;
11
19
 
12
- export interface DataDisplayComponentProps {
13
- value: any;
14
- [key: string]: any;
20
+ // Simple component registry
21
+ interface ComponentRegistry {
22
+ dataDisplay: Record<string, DataDisplayComponent>;
23
+ dataInput: Record<string, DataInputComponent>;
15
24
  }
16
25
 
17
- export interface DataInputComponentProps<
18
- TFieldValues extends FieldValues = FieldValues,
19
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
20
- > extends ControllerRenderProps<TFieldValues, TName> {
21
- [key: string]: any;
22
- }
23
-
24
- export type DataDisplayComponent = React.ComponentType<DataDisplayComponentProps>;
25
- export type DataInputComponent = React.ComponentType<DataInputComponentProps>;
26
+ export const COMPONENT_REGISTRY: ComponentRegistry = {
27
+ dataDisplay: {
28
+ 'vendure:booleanCheckbox': BooleanDisplayCheckbox,
29
+ 'vendure:booleanBadge': BooleanDisplayBadge,
30
+ 'vendure:dateTime': DateTime,
31
+ 'vendure:asset': ({value}) => <VendureImage asset={value} preset="tiny" />,
32
+ 'vendure:money': Money,
33
+ },
34
+ dataInput: {
35
+ 'vendure:moneyInput': MoneyInput,
36
+ 'vendure:textInput': (props) => <Input {...props} onChange={e => props.onChange(e.target.value)} />,
37
+ 'vendure:numberInput': (props) => <Input {...props} onChange={e => props.onChange(e.target.value)} type="number" />,
38
+ 'vendure:dateTimeInput': DateTimeInput,
39
+ 'vendure:checkboxInput': (props) => <Checkbox {...props} checked={props.value === 'true' || props.value === true} onCheckedChange={value => props.onChange(value)} />,
40
+ 'vendure:facetValueInput': FacetValueInput,
41
+ }
42
+ };
26
43
 
27
- // Component registry hook that uses the global registry
44
+ // Simplified implementation - replace with actual implementation
28
45
  export function useComponentRegistry() {
29
46
  return {
30
47
  getDisplayComponent: (id: string): DataDisplayComponent | undefined => {
31
- return getDisplayComponent(id);
48
+ // This is a placeholder implementation
49
+ return COMPONENT_REGISTRY.dataDisplay[id];
32
50
  },
33
51
  getInputComponent: (id: string): DataInputComponent | undefined => {
34
- return getInputComponent(id);
52
+ // This is a placeholder implementation
53
+ return COMPONENT_REGISTRY.dataInput[id];
35
54
  },
36
55
  };
37
56
  }
38
57
 
39
- // Legacy registration functions - these now delegate to the global registry
40
- export function registerInputComponent(
41
- pageId: string,
42
- blockId: string,
43
- field: string,
44
- component: DataInputComponent,
45
- ) {
46
- addInputComponent({ pageId, blockId, field, component });
58
+ export function registerInputComponent(id: string, component: DataInputComponent) {
59
+ if (COMPONENT_REGISTRY.dataInput[id]) {
60
+ throw new Error(`Input component with id ${id} already registered`);
61
+ }
62
+ COMPONENT_REGISTRY.dataInput[id] = component;
47
63
  }
48
64
 
49
- export function registerDisplayComponent(
50
- pageId: string,
51
- blockId: string,
52
- field: string,
53
- component: DataDisplayComponent,
54
- ) {
55
- addDisplayComponent({ pageId, blockId, field, component });
65
+ export function registerDisplayComponent(id: string, component: DataDisplayComponent) {
66
+ if (COMPONENT_REGISTRY.dataDisplay[id]) {
67
+ throw new Error(`Display component with id ${id} already registered`);
68
+ }
69
+ COMPONENT_REGISTRY.dataDisplay[id] = component;
56
70
  }
@@ -1,8 +1,8 @@
1
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/vdb/components/ui/card.js';
2
- import { DashboardBaseWidgetProps } from '@/vdb/framework/extension-api/types/index.js';
3
- import { Trans } from '@/vdb/lib/trans.js';
4
- import { cn } from '@/vdb/lib/utils.js';
5
- import { createContext, useContext, useEffect, useRef, useState } from 'react';
1
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card.js';
2
+ import { cn } from '@/lib/utils.js';
3
+ import { Trans } from '@/lib/trans.js';
4
+ import { PropsWithChildren, useRef, useEffect, useState, createContext, useContext } from 'react';
5
+ import type React from 'react';
6
6
 
7
7
  type WidgetDimensions = {
8
8
  width: number;
@@ -19,6 +19,14 @@ export const useWidgetDimensions = () => {
19
19
  return context;
20
20
  };
21
21
 
22
+ export type DashboardBaseWidgetProps = PropsWithChildren<{
23
+ id: string;
24
+ title?: string;
25
+ description?: string;
26
+ config?: Record<string, unknown>;
27
+ actions?: React.ReactNode;
28
+ }>;
29
+
22
30
  export function DashboardBaseWidget({
23
31
  id,
24
32
  config,