@vendure-platform/create 0.4.0 → 0.5.1

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 (334) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +39 -39
  3. package/dist/add-to-existing.js +1 -1
  4. package/dist/assets/demo-data/initial-data.json +663 -663
  5. package/dist/assets/storefront/components.json +20 -20
  6. package/dist/assets/storefront/eslint.config.mjs +10 -10
  7. package/dist/assets/storefront/graphql.config.yml +1 -1
  8. package/dist/assets/storefront/messages/de.json +2 -0
  9. package/dist/assets/storefront/messages/en.json +2 -0
  10. package/dist/assets/storefront/next.config.ts +5 -4
  11. package/dist/assets/storefront/package.json +1 -1
  12. package/dist/assets/storefront/postcss.config.mjs +1 -1
  13. package/dist/assets/storefront/src/app/[locale]/(catalog)/catalog/page.tsx +17 -21
  14. package/dist/assets/storefront/src/app/[locale]/(catalog)/collection/[slug]/page.tsx +64 -42
  15. package/dist/assets/storefront/src/app/[locale]/(catalog)/layout.tsx +1 -5
  16. package/dist/assets/storefront/src/app/[locale]/(catalog)/product/[slug]/actions.ts +69 -65
  17. package/dist/assets/storefront/src/app/[locale]/(catalog)/product/[slug]/page.tsx +68 -37
  18. package/dist/assets/storefront/src/app/[locale]/(catalog)/search/page.tsx +24 -27
  19. package/dist/assets/storefront/src/app/[locale]/(catalog)/search/search-results.tsx +11 -9
  20. package/dist/assets/storefront/src/app/[locale]/(catalog)/search/search-term.tsx +4 -4
  21. package/dist/assets/storefront/src/app/[locale]/(scenario)/[...path]/page.tsx +1 -1
  22. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/accept-invitation-client.tsx +8 -13
  23. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/actions.ts +11 -14
  24. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/page.tsx +30 -33
  25. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/sign-out-and-retry.tsx +6 -6
  26. package/dist/assets/storefront/src/app/[locale]/account/addresses/actions.ts +30 -45
  27. package/dist/assets/storefront/src/app/[locale]/account/addresses/address-form.tsx +166 -159
  28. package/dist/assets/storefront/src/app/[locale]/account/addresses/addresses-client.tsx +35 -26
  29. package/dist/assets/storefront/src/app/[locale]/account/addresses/loading.tsx +1 -3
  30. package/dist/assets/storefront/src/app/[locale]/account/addresses/page.tsx +16 -18
  31. package/dist/assets/storefront/src/app/[locale]/account/approvals/actions.ts +5 -8
  32. package/dist/assets/storefront/src/app/[locale]/account/approvals/page.tsx +77 -69
  33. package/dist/assets/storefront/src/app/[locale]/account/company/actions.ts +10 -11
  34. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/actions.ts +6 -15
  35. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/address-form.tsx +57 -49
  36. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/addresses-client.tsx +23 -25
  37. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/page.tsx +30 -30
  38. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/actions.ts +20 -29
  39. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/business-unit-form.tsx +32 -37
  40. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/business-units-client.tsx +32 -25
  41. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/page.tsx +24 -24
  42. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/types.ts +7 -4
  43. package/dist/assets/storefront/src/app/[locale]/account/company/edit-company-form.tsx +11 -21
  44. package/dist/assets/storefront/src/app/[locale]/account/company/page.tsx +23 -28
  45. package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/page.tsx +24 -24
  46. package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/payment-methods-client.tsx +5 -7
  47. package/dist/assets/storefront/src/app/[locale]/account/company/roles/page.tsx +22 -25
  48. package/dist/assets/storefront/src/app/[locale]/account/company/roles/roles-client.tsx +11 -26
  49. package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/actions.ts +6 -10
  50. package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/page.tsx +18 -16
  51. package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/tax-ids-client.tsx +74 -67
  52. package/dist/assets/storefront/src/app/[locale]/account/company/users/actions.ts +16 -25
  53. package/dist/assets/storefront/src/app/[locale]/account/company/users/edit-user-form.tsx +27 -25
  54. package/dist/assets/storefront/src/app/[locale]/account/company/users/invite-user-form.tsx +27 -19
  55. package/dist/assets/storefront/src/app/[locale]/account/company/users/page.tsx +32 -29
  56. package/dist/assets/storefront/src/app/[locale]/account/company/users/users-client.tsx +35 -38
  57. package/dist/assets/storefront/src/app/[locale]/account/error.tsx +1 -3
  58. package/dist/assets/storefront/src/app/[locale]/account/layout.tsx +16 -22
  59. package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/page.tsx +151 -103
  60. package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/reorder-actions.ts +6 -7
  61. package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/reorder-dialog.tsx +22 -48
  62. package/dist/assets/storefront/src/app/[locale]/account/orders/loading.tsx +8 -8
  63. package/dist/assets/storefront/src/app/[locale]/account/orders/page.tsx +101 -61
  64. package/dist/assets/storefront/src/app/[locale]/account/profile/actions.ts +32 -23
  65. package/dist/assets/storefront/src/app/[locale]/account/profile/change-password-form.tsx +6 -16
  66. package/dist/assets/storefront/src/app/[locale]/account/profile/edit-email-form.tsx +7 -17
  67. package/dist/assets/storefront/src/app/[locale]/account/profile/edit-profile-form.tsx +6 -16
  68. package/dist/assets/storefront/src/app/[locale]/account/profile/loading.tsx +12 -18
  69. package/dist/assets/storefront/src/app/[locale]/account/profile/page.tsx +15 -15
  70. package/dist/assets/storefront/src/app/[locale]/account/quick-order/file-upload-tab.tsx +2 -6
  71. package/dist/assets/storefront/src/app/[locale]/account/quick-order/manual-entry-tab.tsx +18 -15
  72. package/dist/assets/storefront/src/app/[locale]/account/quick-order/page.tsx +3 -6
  73. package/dist/assets/storefront/src/app/[locale]/account/quick-order/preview-table.tsx +10 -2
  74. package/dist/assets/storefront/src/app/[locale]/account/quick-order/save-to-list-dialog.tsx +24 -26
  75. package/dist/assets/storefront/src/app/[locale]/account/quick-order/sku-autocomplete.tsx +19 -10
  76. package/dist/assets/storefront/src/app/[locale]/account/quick-order/text-input-tab.tsx +3 -8
  77. package/dist/assets/storefront/src/app/[locale]/account/quotes/[id]/page.tsx +86 -59
  78. package/dist/assets/storefront/src/app/[locale]/account/quotes/actions.ts +38 -45
  79. package/dist/assets/storefront/src/app/[locale]/account/quotes/new/new-quote-form.tsx +3 -5
  80. package/dist/assets/storefront/src/app/[locale]/account/quotes/new/page.tsx +6 -6
  81. package/dist/assets/storefront/src/app/[locale]/account/quotes/page.tsx +92 -59
  82. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/activity-feed.tsx +152 -0
  83. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/add-item-search.tsx +132 -0
  84. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/add-member-form.tsx +140 -0
  85. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/members-panel.tsx +259 -0
  86. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/page.tsx +55 -0
  87. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/rename-dialog.tsx +117 -0
  88. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/shared-cart-detail-client.tsx +555 -0
  89. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/actions.ts +305 -0
  90. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/new/new-shared-cart-form.tsx +84 -0
  91. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/new/page.tsx +47 -0
  92. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/page.tsx +276 -0
  93. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/[id]/page.tsx +22 -8
  94. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/[id]/shopping-list-detail-client.tsx +62 -49
  95. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/actions.ts +9 -4
  96. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/create-shopping-list-form.tsx +5 -11
  97. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/loading.tsx +1 -1
  98. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/page.tsx +32 -42
  99. package/dist/assets/storefront/src/app/[locale]/account/store-credits/actions.ts +8 -8
  100. package/dist/assets/storefront/src/app/[locale]/account/store-credits/claim-form.tsx +6 -10
  101. package/dist/assets/storefront/src/app/[locale]/account/store-credits/page.tsx +76 -55
  102. package/dist/assets/storefront/src/app/[locale]/account/store-credits/reveal-code.tsx +10 -6
  103. package/dist/assets/storefront/src/app/[locale]/account/verify-email/page.tsx +32 -39
  104. package/dist/assets/storefront/src/app/[locale]/cart/actions.ts +29 -23
  105. package/dist/assets/storefront/src/app/[locale]/cart/cart-items.tsx +111 -40
  106. package/dist/assets/storefront/src/app/[locale]/cart/cart-line-actions.tsx +9 -9
  107. package/dist/assets/storefront/src/app/[locale]/cart/cart-quantity-control.tsx +61 -48
  108. package/dist/assets/storefront/src/app/[locale]/cart/cart-remove-button.tsx +15 -9
  109. package/dist/assets/storefront/src/app/[locale]/cart/cart.tsx +38 -41
  110. package/dist/assets/storefront/src/app/[locale]/cart/code-input.tsx +8 -8
  111. package/dist/assets/storefront/src/app/[locale]/cart/order-summary.tsx +70 -29
  112. package/dist/assets/storefront/src/app/[locale]/cart/page.tsx +11 -11
  113. package/dist/assets/storefront/src/app/[locale]/cart/promotion-code.tsx +48 -42
  114. package/dist/assets/storefront/src/app/[locale]/cart/reapproval-confirm.tsx +22 -20
  115. package/dist/assets/storefront/src/app/[locale]/cart/request-quote-button.tsx +7 -16
  116. package/dist/assets/storefront/src/app/[locale]/checkout/actions.ts +39 -65
  117. package/dist/assets/storefront/src/app/[locale]/checkout/cancel-quote-checkout-button.tsx +5 -5
  118. package/dist/assets/storefront/src/app/[locale]/checkout/checkout-flow.tsx +202 -202
  119. package/dist/assets/storefront/src/app/[locale]/checkout/checkout-provider.tsx +142 -142
  120. package/dist/assets/storefront/src/app/[locale]/checkout/order-summary.tsx +158 -139
  121. package/dist/assets/storefront/src/app/[locale]/checkout/page.tsx +56 -47
  122. package/dist/assets/storefront/src/app/[locale]/checkout/steps/delivery-step.tsx +86 -88
  123. package/dist/assets/storefront/src/app/[locale]/checkout/steps/payment-step.tsx +90 -91
  124. package/dist/assets/storefront/src/app/[locale]/checkout/steps/review-step.tsx +166 -161
  125. package/dist/assets/storefront/src/app/[locale]/checkout/steps/shipping-address-step.tsx +573 -494
  126. package/dist/assets/storefront/src/app/[locale]/error.tsx +3 -5
  127. package/dist/assets/storefront/src/app/[locale]/forgot-password/actions.ts +10 -7
  128. package/dist/assets/storefront/src/app/[locale]/forgot-password/forgot-password-form.tsx +10 -25
  129. package/dist/assets/storefront/src/app/[locale]/forgot-password/page.tsx +5 -5
  130. package/dist/assets/storefront/src/app/[locale]/globals.css +48 -48
  131. package/dist/assets/storefront/src/app/[locale]/layout.tsx +53 -47
  132. package/dist/assets/storefront/src/app/[locale]/not-found.tsx +3 -5
  133. package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/order-confirmation.tsx +71 -44
  134. package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/page.tsx +7 -5
  135. package/dist/assets/storefront/src/app/[locale]/page.tsx +33 -35
  136. package/dist/assets/storefront/src/app/[locale]/register/actions.ts +7 -7
  137. package/dist/assets/storefront/src/app/[locale]/register/page.tsx +22 -16
  138. package/dist/assets/storefront/src/app/[locale]/register/registration-form.tsx +22 -34
  139. package/dist/assets/storefront/src/app/[locale]/register-company/actions.ts +15 -19
  140. package/dist/assets/storefront/src/app/[locale]/register-company/page.tsx +17 -15
  141. package/dist/assets/storefront/src/app/[locale]/register-company/registration-form.tsx +9 -15
  142. package/dist/assets/storefront/src/app/[locale]/reset-password/actions.ts +7 -8
  143. package/dist/assets/storefront/src/app/[locale]/reset-password/page.tsx +18 -12
  144. package/dist/assets/storefront/src/app/[locale]/reset-password/reset-password-form.tsx +8 -16
  145. package/dist/assets/storefront/src/app/[locale]/shopping-list/[code]/add-to-cart-button.tsx +10 -4
  146. package/dist/assets/storefront/src/app/[locale]/shopping-list/[code]/page.tsx +62 -30
  147. package/dist/assets/storefront/src/app/[locale]/sign-in/actions.ts +14 -16
  148. package/dist/assets/storefront/src/app/[locale]/sign-in/login-form.tsx +17 -30
  149. package/dist/assets/storefront/src/app/[locale]/sign-in/page.tsx +35 -30
  150. package/dist/assets/storefront/src/app/[locale]/verify/actions.ts +8 -8
  151. package/dist/assets/storefront/src/app/[locale]/verify/page.tsx +18 -14
  152. package/dist/assets/storefront/src/app/[locale]/verify/verify-content.tsx +25 -27
  153. package/dist/assets/storefront/src/app/[locale]/verify-pending/page.tsx +23 -23
  154. package/dist/assets/storefront/src/app/api/clear-company-context/route.ts +6 -3
  155. package/dist/assets/storefront/src/app/api/revalidate/route.ts +19 -28
  156. package/dist/assets/storefront/src/app/api/search-analytics/route.ts +1 -1
  157. package/dist/assets/storefront/src/components/commerce/account-nav-items.ts +44 -17
  158. package/dist/assets/storefront/src/components/commerce/account-sidebar.tsx +30 -22
  159. package/dist/assets/storefront/src/components/commerce/active-filters.tsx +1 -1
  160. package/dist/assets/storefront/src/components/commerce/add-to-shared-cart.tsx +247 -0
  161. package/dist/assets/storefront/src/components/commerce/approval-decision-form.tsx +9 -13
  162. package/dist/assets/storefront/src/components/commerce/approval-status-badge.tsx +23 -15
  163. package/dist/assets/storefront/src/components/commerce/business-unit-switcher.tsx +11 -11
  164. package/dist/assets/storefront/src/components/commerce/catalog-search-bar.tsx +2 -2
  165. package/dist/assets/storefront/src/components/commerce/category-product-section.tsx +28 -16
  166. package/dist/assets/storefront/src/components/commerce/category-sidebar.tsx +31 -18
  167. package/dist/assets/storefront/src/components/commerce/collection-hero-banner.tsx +2 -4
  168. package/dist/assets/storefront/src/components/commerce/company-state-badge.tsx +10 -16
  169. package/dist/assets/storefront/src/components/commerce/company-switcher.tsx +12 -12
  170. package/dist/assets/storefront/src/components/commerce/configurator-form.tsx +188 -79
  171. package/dist/assets/storefront/src/components/commerce/facet-filters.tsx +29 -49
  172. package/dist/assets/storefront/src/components/commerce/gift-card-pdp.tsx +4 -4
  173. package/dist/assets/storefront/src/components/commerce/gift-card-product-info.tsx +20 -30
  174. package/dist/assets/storefront/src/components/commerce/instant-search-dropdown.tsx +258 -227
  175. package/dist/assets/storefront/src/components/commerce/order-status-badge.tsx +27 -19
  176. package/dist/assets/storefront/src/components/commerce/packaging-unit-selector.tsx +27 -26
  177. package/dist/assets/storefront/src/components/commerce/permission-gate.tsx +4 -4
  178. package/dist/assets/storefront/src/components/commerce/price-range-filter.tsx +5 -5
  179. package/dist/assets/storefront/src/components/commerce/price-tiers.tsx +38 -21
  180. package/dist/assets/storefront/src/components/commerce/price.tsx +3 -3
  181. package/dist/assets/storefront/src/components/commerce/product-card-list.tsx +35 -14
  182. package/dist/assets/storefront/src/components/commerce/product-card.tsx +31 -16
  183. package/dist/assets/storefront/src/components/commerce/product-carousel.tsx +20 -12
  184. package/dist/assets/storefront/src/components/commerce/product-grid.tsx +14 -13
  185. package/dist/assets/storefront/src/components/commerce/product-image-carousel.tsx +10 -8
  186. package/dist/assets/storefront/src/components/commerce/product-info.tsx +129 -72
  187. package/dist/assets/storefront/src/components/commerce/product-list-expansion.tsx +102 -74
  188. package/dist/assets/storefront/src/components/commerce/product-list-view.tsx +1 -1
  189. package/dist/assets/storefront/src/components/commerce/product-sidebar.tsx +36 -11
  190. package/dist/assets/storefront/src/components/commerce/product-view-switcher.tsx +33 -21
  191. package/dist/assets/storefront/src/components/commerce/quote-action-buttons.tsx +54 -36
  192. package/dist/assets/storefront/src/components/commerce/quote-activity-timeline.tsx +126 -50
  193. package/dist/assets/storefront/src/components/commerce/quote-comment-form.tsx +9 -13
  194. package/dist/assets/storefront/src/components/commerce/quote-csv-export-button.tsx +6 -6
  195. package/dist/assets/storefront/src/components/commerce/quote-product-search.tsx +22 -18
  196. package/dist/assets/storefront/src/components/commerce/quote-request-form.tsx +28 -27
  197. package/dist/assets/storefront/src/components/commerce/quote-status-badge.tsx +26 -18
  198. package/dist/assets/storefront/src/components/commerce/quote-validity-indicator.tsx +7 -7
  199. package/dist/assets/storefront/src/components/commerce/quote-version-comparison.tsx +50 -30
  200. package/dist/assets/storefront/src/components/commerce/related-products.tsx +37 -28
  201. package/dist/assets/storefront/src/components/commerce/shared-cart-role.ts +39 -0
  202. package/dist/assets/storefront/src/components/commerce/shared-cart-status-badge.tsx +28 -0
  203. package/dist/assets/storefront/src/components/commerce/shop-by-category.tsx +8 -7
  204. package/dist/assets/storefront/src/components/commerce/shopping-list-toggle.tsx +14 -20
  205. package/dist/assets/storefront/src/components/commerce/sort-dropdown.tsx +9 -16
  206. package/dist/assets/storefront/src/components/commerce/store-credit-summary.tsx +30 -32
  207. package/dist/assets/storefront/src/components/commerce/subcollection-tiles.tsx +11 -13
  208. package/dist/assets/storefront/src/components/layout/auth-page-shell.tsx +2 -2
  209. package/dist/assets/storefront/src/components/layout/draft-mode-indicator.tsx +2 -7
  210. package/dist/assets/storefront/src/components/layout/draft-mode-link.tsx +4 -2
  211. package/dist/assets/storefront/src/components/layout/footer.tsx +70 -28
  212. package/dist/assets/storefront/src/components/layout/navbar/actions.ts +9 -12
  213. package/dist/assets/storefront/src/components/layout/navbar/cart-icon.tsx +9 -9
  214. package/dist/assets/storefront/src/components/layout/navbar/channel-picker-wrapper.tsx +4 -9
  215. package/dist/assets/storefront/src/components/layout/navbar/channel-picker.tsx +13 -8
  216. package/dist/assets/storefront/src/components/layout/navbar/currency-picker-wrapper.tsx +4 -4
  217. package/dist/assets/storefront/src/components/layout/navbar/currency-picker.tsx +11 -6
  218. package/dist/assets/storefront/src/components/layout/navbar/language-picker.tsx +7 -7
  219. package/dist/assets/storefront/src/components/layout/navbar/login-button.tsx +24 -21
  220. package/dist/assets/storefront/src/components/layout/navbar/mobile-nav.tsx +8 -8
  221. package/dist/assets/storefront/src/components/layout/navbar/nav-menu-items.tsx +4 -6
  222. package/dist/assets/storefront/src/components/layout/navbar/navbar-cart.tsx +1 -1
  223. package/dist/assets/storefront/src/components/layout/navbar/navbar-collections.tsx +41 -42
  224. package/dist/assets/storefront/src/components/layout/navbar/navbar-link.tsx +7 -10
  225. package/dist/assets/storefront/src/components/layout/navbar/navbar-user.tsx +18 -23
  226. package/dist/assets/storefront/src/components/layout/navbar/theme-switcher.tsx +9 -9
  227. package/dist/assets/storefront/src/components/layout/navbar.tsx +36 -31
  228. package/dist/assets/storefront/src/components/layout/search-input.tsx +35 -32
  229. package/dist/assets/storefront/src/components/providers/awaiting-approval-banner.tsx +12 -10
  230. package/dist/assets/storefront/src/components/providers/cart-count-server.tsx +14 -12
  231. package/dist/assets/storefront/src/components/providers/company-context-guard.tsx +4 -4
  232. package/dist/assets/storefront/src/components/providers/company-permissions-server.tsx +2 -6
  233. package/dist/assets/storefront/src/components/providers/theme-provider.tsx +3 -3
  234. package/dist/assets/storefront/src/components/shared/breadcrumbs.tsx +4 -1
  235. package/dist/assets/storefront/src/components/shared/country-select.tsx +63 -67
  236. package/dist/assets/storefront/src/components/shared/pagination.tsx +15 -28
  237. package/dist/assets/storefront/src/components/shared/prefetch-link.tsx +1 -1
  238. package/dist/assets/storefront/src/components/shared/skeletons/search-input-skeleton.tsx +1 -3
  239. package/dist/assets/storefront/src/components/ui/accordion.tsx +46 -51
  240. package/dist/assets/storefront/src/components/ui/alert-dialog.tsx +94 -121
  241. package/dist/assets/storefront/src/components/ui/alert.tsx +48 -54
  242. package/dist/assets/storefront/src/components/ui/aspect-ratio.tsx +5 -7
  243. package/dist/assets/storefront/src/components/ui/avatar.tsx +29 -44
  244. package/dist/assets/storefront/src/components/ui/badge.tsx +28 -37
  245. package/dist/assets/storefront/src/components/ui/breadcrumb.tsx +82 -89
  246. package/dist/assets/storefront/src/components/ui/button.tsx +43 -49
  247. package/dist/assets/storefront/src/components/ui/calendar.tsx +157 -198
  248. package/dist/assets/storefront/src/components/ui/card.tsx +53 -76
  249. package/dist/assets/storefront/src/components/ui/carousel.tsx +194 -212
  250. package/dist/assets/storefront/src/components/ui/chart.tsx +274 -317
  251. package/dist/assets/storefront/src/components/ui/checkbox.tsx +24 -27
  252. package/dist/assets/storefront/src/components/ui/collapsible.tsx +9 -21
  253. package/dist/assets/storefront/src/components/ui/command.tsx +114 -159
  254. package/dist/assets/storefront/src/components/ui/context-menu.tsx +167 -199
  255. package/dist/assets/storefront/src/components/ui/dialog.tsx +97 -114
  256. package/dist/assets/storefront/src/components/ui/drawer.tsx +93 -107
  257. package/dist/assets/storefront/src/components/ui/dropdown-menu.tsx +171 -206
  258. package/dist/assets/storefront/src/components/ui/empty-state.tsx +5 -5
  259. package/dist/assets/storefront/src/components/ui/field.tsx +196 -208
  260. package/dist/assets/storefront/src/components/ui/form.tsx +115 -139
  261. package/dist/assets/storefront/src/components/ui/hover-card.tsx +27 -33
  262. package/dist/assets/storefront/src/components/ui/input-otp.tsx +50 -59
  263. package/dist/assets/storefront/src/components/ui/input.tsx +17 -17
  264. package/dist/assets/storefront/src/components/ui/kbd-shortcut.tsx +3 -1
  265. package/dist/assets/storefront/src/components/ui/label.tsx +16 -19
  266. package/dist/assets/storefront/src/components/ui/menubar.tsx +193 -223
  267. package/dist/assets/storefront/src/components/ui/navigation-menu.tsx +123 -130
  268. package/dist/assets/storefront/src/components/ui/pagination.tsx +87 -108
  269. package/dist/assets/storefront/src/components/ui/popover.tsx +29 -35
  270. package/dist/assets/storefront/src/components/ui/progress.tsx +19 -26
  271. package/dist/assets/storefront/src/components/ui/radio-group.tsx +32 -38
  272. package/dist/assets/storefront/src/components/ui/resizable.tsx +37 -42
  273. package/dist/assets/storefront/src/components/ui/scroll-area.tsx +41 -47
  274. package/dist/assets/storefront/src/components/ui/select.tsx +130 -152
  275. package/dist/assets/storefront/src/components/ui/separator.tsx +21 -21
  276. package/dist/assets/storefront/src/components/ui/sheet.tsx +90 -111
  277. package/dist/assets/storefront/src/components/ui/sidebar.tsx +611 -649
  278. package/dist/assets/storefront/src/components/ui/skeleton.tsx +10 -10
  279. package/dist/assets/storefront/src/components/ui/slider.tsx +50 -55
  280. package/dist/assets/storefront/src/components/ui/sonner.tsx +20 -20
  281. package/dist/assets/storefront/src/components/ui/switch.tsx +23 -26
  282. package/dist/assets/storefront/src/components/ui/table.tsx +65 -97
  283. package/dist/assets/storefront/src/components/ui/tabs.tsx +39 -55
  284. package/dist/assets/storefront/src/components/ui/textarea.tsx +14 -14
  285. package/dist/assets/storefront/src/components/ui/toggle-group.tsx +56 -62
  286. package/dist/assets/storefront/src/components/ui/toggle.tsx +37 -38
  287. package/dist/assets/storefront/src/components/ui/tooltip.tsx +38 -46
  288. package/dist/assets/storefront/src/config/scenario-meta.ts +2 -2
  289. package/dist/assets/storefront/src/config/scenario.ts +14 -16
  290. package/dist/assets/storefront/src/contexts/auth-context.tsx +5 -6
  291. package/dist/assets/storefront/src/graphql-env.d.ts +18 -5
  292. package/dist/assets/storefront/src/graphql.ts +5 -5
  293. package/dist/assets/storefront/src/hooks/use-mobile.ts +13 -13
  294. package/dist/assets/storefront/src/i18n/locale-utils.ts +3 -3
  295. package/dist/assets/storefront/src/i18n/navigation.ts +4 -4
  296. package/dist/assets/storefront/src/i18n/request.ts +4 -4
  297. package/dist/assets/storefront/src/i18n/routing.ts +5 -5
  298. package/dist/assets/storefront/src/i18n/server.ts +3 -3
  299. package/dist/assets/storefront/src/lib/actions/switch-channel.ts +9 -9
  300. package/dist/assets/storefront/src/lib/actions/switch-currency.ts +7 -7
  301. package/dist/assets/storefront/src/lib/auth.ts +1 -1
  302. package/dist/assets/storefront/src/lib/backend-health.ts +3 -3
  303. package/dist/assets/storefront/src/lib/cart-count-context.tsx +10 -4
  304. package/dist/assets/storefront/src/lib/cart-guard-utils.ts +2 -1
  305. package/dist/assets/storefront/src/lib/cart-guard.ts +7 -6
  306. package/dist/assets/storefront/src/lib/channel-server.ts +4 -4
  307. package/dist/assets/storefront/src/lib/company-context.ts +1 -1
  308. package/dist/assets/storefront/src/lib/company-permissions-context.tsx +1 -5
  309. package/dist/assets/storefront/src/lib/currency-server.ts +4 -4
  310. package/dist/assets/storefront/src/lib/format.ts +16 -7
  311. package/dist/assets/storefront/src/lib/metadata.ts +39 -44
  312. package/dist/assets/storefront/src/lib/quantity.ts +2 -4
  313. package/dist/assets/storefront/src/lib/search-bar-context.tsx +7 -4
  314. package/dist/assets/storefront/src/lib/use-recent-searches.ts +8 -6
  315. package/dist/assets/storefront/src/lib/utils.ts +3 -3
  316. package/dist/assets/storefront/src/lib/vendure/actions.ts +18 -16
  317. package/dist/assets/storefront/src/lib/vendure/api.ts +44 -27
  318. package/dist/assets/storefront/src/lib/vendure/approval-utils.ts +9 -8
  319. package/dist/assets/storefront/src/lib/vendure/cached.ts +20 -15
  320. package/dist/assets/storefront/src/lib/vendure/mutations.ts +96 -0
  321. package/dist/assets/storefront/src/lib/vendure/queries.ts +157 -5
  322. package/dist/assets/storefront/src/middleware.ts +1 -1
  323. package/dist/assets/storefront/src/scenarios/customer/hero.tsx +2 -2
  324. package/dist/assets/storefront/src/scenarios/customer/meta.ts +1 -1
  325. package/dist/assets/storefront/src/schema.graphql +134 -0
  326. package/dist/bin/run.js +1 -1
  327. package/dist/cli.d.ts +1 -1
  328. package/dist/index.d.ts +5 -5
  329. package/dist/index.js +1 -1
  330. package/dist/plugin-registry.js +1 -1
  331. package/dist/scaffold-storefront-only.js +1 -1
  332. package/dist/scaffolder.js +1 -1
  333. package/dist/template-renderer.js +1 -1
  334. package/package.json +2 -2
@@ -1,48 +1,43 @@
1
- import type {Metadata} from 'next';
2
- import {Suspense} from 'react';
3
- import {ChevronLeft, MessageSquare} from 'lucide-react';
4
- import {client} from '@/lib/vendure/api';
5
- import {GetOrderDetailQuery} from '@/lib/vendure/queries';
6
- import {getLatestApprovalForOrder} from '@/lib/vendure/approval-utils';
7
- import {Badge} from '@/components/ui/badge';
8
- import {Button} from '@/components/ui/button';
9
- import {Card, CardContent, CardHeader, CardTitle} from '@/components/ui/card';
10
- import {ErrorState} from '@/components/shared/error-state';
11
- import {Separator} from '@/components/ui/separator';
1
+ import { ApprovalStatusBadge } from '@/components/commerce/approval-status-badge';
2
+ import { OrderStatusBadge } from '@/components/commerce/order-status-badge';
3
+ import { Price } from '@/components/commerce/price';
4
+ import { ErrorState } from '@/components/shared/error-state';
5
+ import { Badge } from '@/components/ui/badge';
6
+ import { Button } from '@/components/ui/button';
7
+ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
8
+ import { Separator } from '@/components/ui/separator';
9
+ import { Link, redirect } from '@/i18n/navigation';
10
+ import { formatDate, maskCode } from '@/lib/format';
11
+ import { client } from '@/lib/vendure/api';
12
+ import { getLatestApprovalForOrder } from '@/lib/vendure/approval-utils';
13
+ import { GetOrderDetailQuery } from '@/lib/vendure/queries';
14
+ import { ChevronLeft, MessageSquare, ShoppingCart } from 'lucide-react';
15
+ import type { Metadata } from 'next';
16
+ import { getTranslations, setRequestLocale } from 'next-intl/server';
12
17
  import Image from 'next/image';
13
- import {redirect} from "@/i18n/navigation";
14
- import {Price} from '@/components/commerce/price';
15
- import {maskCode} from '@/lib/format';
16
- import {OrderStatusBadge} from '@/components/commerce/order-status-badge';
17
- import {ApprovalStatusBadge} from '@/components/commerce/approval-status-badge';
18
- import {formatDate} from '@/lib/format';
19
- import {getTranslations, setRequestLocale} from 'next-intl/server';
20
- import {Link} from "@/i18n/navigation";
21
- import {ShoppingCart} from "lucide-react";
22
- import {ReorderDialog} from './reorder-dialog';
18
+ import { Suspense } from 'react';
19
+ import { ReorderDialog } from './reorder-dialog';
23
20
 
24
- type OrderDetailPageProps = {params: Promise<{locale: string; code: string}>};
21
+ type OrderDetailPageProps = { params: Promise<{ locale: string; code: string }> };
25
22
 
26
- export async function generateMetadata({params}: OrderDetailPageProps): Promise<Metadata> {
27
- const {code} = await params;
23
+ export async function generateMetadata({ params }: OrderDetailPageProps): Promise<Metadata> {
24
+ const { code } = await params;
28
25
  return {
29
26
  title: `Order ${code}`,
30
27
  };
31
28
  }
32
29
 
33
- async function OrderDetailContent({params}: {params: Promise<{locale: string; code: string}>}) {
34
- const {locale, code} = await params;
30
+ async function OrderDetailContent({ params }: { params: Promise<{ locale: string; code: string }> }) {
31
+ const { locale, code } = await params;
35
32
  setRequestLocale(locale);
36
33
  const [t, [result, error]] = await Promise.all([
37
34
  getTranslations('Account'),
38
- client.query(GetOrderDetailQuery, {code}),
35
+ client.query(GetOrderDetailQuery, { code }),
39
36
  ]);
40
37
  if (error) {
41
- return (
42
- <ErrorState message="We couldn't load this page. Please try again later." />
43
- );
38
+ return <ErrorState message="We couldn't load this page. Please try again later." />;
44
39
  }
45
- const {data} = result;
40
+ const { data } = result;
46
41
 
47
42
  if (!data.orderByCode) {
48
43
  return await redirect('/account/orders');
@@ -68,22 +63,22 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
68
63
  <div className="mb-6">
69
64
  <Button variant="ghost" size="sm" asChild className="mb-4">
70
65
  <Link href="/account/orders">
71
- <ChevronLeft className="h-4 w-4 mr-2"/>
66
+ <ChevronLeft className="h-4 w-4 mr-2" />
72
67
  {t('backToOrders')}
73
68
  </Link>
74
69
  </Button>
75
70
  <div className="flex items-center justify-between">
76
71
  <div>
77
- <h1 className="text-3xl font-bold">{t('order', {code: order.code})}</h1>
72
+ <h1 className="text-3xl font-bold">{t('order', { code: order.code })}</h1>
78
73
  <p className="text-muted-foreground mt-1">
79
- {t('placedOn', {date: formatDate(order.createdAt, locale, 'long')})}
74
+ {t('placedOn', { date: formatDate(order.createdAt, locale, 'long') })}
80
75
  </p>
81
76
  </div>
82
77
  <div className="flex items-center gap-3">
83
78
  {canReorder && (
84
79
  <ReorderDialog sourceOrderId={order.id} sourceOrderCode={order.code} />
85
80
  )}
86
- <OrderStatusBadge state={order.state}/>
81
+ <OrderStatusBadge state={order.state} />
87
82
  </div>
88
83
  </div>
89
84
  </div>
@@ -91,12 +86,13 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
91
86
  {changesRequested && (
92
87
  <div className="rounded-lg border border-orange-200 bg-orange-50 p-4 mb-6">
93
88
  <div className="flex gap-3">
94
- <MessageSquare className="h-5 w-5 text-orange-600 flex-shrink-0 mt-0.5"/>
89
+ <MessageSquare className="h-5 w-5 text-orange-600 flex-shrink-0 mt-0.5" />
95
90
  <div>
96
91
  <h3 className="font-medium text-orange-900">Changes Requested</h3>
97
92
  <p className="text-sm text-orange-800 mt-1">
98
93
  A reviewer has requested changes to this order.
99
- {order.state === 'AddingItems' && ' You can modify the order and re-submit it for approval.'}
94
+ {order.state === 'AddingItems' &&
95
+ ' You can modify the order and re-submit it for approval.'}
100
96
  </p>
101
97
  {changesComment && (
102
98
  <blockquote className="mt-2 border-l-2 border-orange-300 pl-3 text-sm text-orange-800 italic">
@@ -108,24 +104,28 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
108
104
  </div>
109
105
  )}
110
106
 
111
- {order.state === 'AddingItems' && !changesRequested && (order.lines.length > 0 || order.surcharges.length > 0) && (
112
- <div className="rounded-lg border border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950 p-4 mb-6">
113
- <div className="flex items-center justify-between gap-4">
114
- <div>
115
- <h3 className="font-medium text-blue-900 dark:text-blue-100">Ready to Complete</h3>
116
- <p className="text-sm text-blue-800 dark:text-blue-200 mt-1">
117
- This order needs shipping and payment details to be completed.
118
- </p>
107
+ {order.state === 'AddingItems' &&
108
+ !changesRequested &&
109
+ (order.lines.length > 0 || order.surcharges.length > 0) && (
110
+ <div className="rounded-lg border border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950 p-4 mb-6">
111
+ <div className="flex items-center justify-between gap-4">
112
+ <div>
113
+ <h3 className="font-medium text-blue-900 dark:text-blue-100">
114
+ Ready to Complete
115
+ </h3>
116
+ <p className="text-sm text-blue-800 dark:text-blue-200 mt-1">
117
+ This order needs shipping and payment details to be completed.
118
+ </p>
119
+ </div>
120
+ <Button asChild>
121
+ <Link href="/checkout">
122
+ <ShoppingCart className="h-4 w-4 mr-2" />
123
+ Complete Checkout
124
+ </Link>
125
+ </Button>
119
126
  </div>
120
- <Button asChild>
121
- <Link href="/checkout">
122
- <ShoppingCart className="h-4 w-4 mr-2"/>
123
- Complete Checkout
124
- </Link>
125
- </Button>
126
127
  </div>
127
- </div>
128
- )}
128
+ )}
129
129
 
130
130
  <div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
131
131
  <div className="lg:col-span-2 space-y-6">
@@ -137,8 +137,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
137
137
  <div className="space-y-4">
138
138
  {order.lines.map((line) => (
139
139
  <div key={line.id} className="flex gap-4">
140
- <div
141
- className="relative h-20 w-20 rounded-md overflow-hidden bg-gray-100 flex-shrink-0">
140
+ <div className="relative h-20 w-20 rounded-md overflow-hidden bg-gray-100 flex-shrink-0">
142
141
  {line.productVariant.product.featuredAsset && (
143
142
  <Image
144
143
  src={line.productVariant.product.featuredAsset.preview}
@@ -159,16 +158,22 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
159
158
  {line.productVariant.name}
160
159
  </p>
161
160
  <p className="text-sm text-muted-foreground">
162
- {t('skuLabel', {sku: line.productVariant.sku})}
161
+ {t('skuLabel', { sku: line.productVariant.sku })}
163
162
  </p>
164
163
  </div>
165
164
  <div className="text-right">
166
165
  <p className="font-medium">
167
- <Price value={line.linePrice} currencyCode={order.currencyCode}/>
166
+ <Price
167
+ value={line.linePrice}
168
+ currencyCode={order.currencyCode}
169
+ />
168
170
  </p>
169
171
  <p className="text-sm text-muted-foreground">
170
- {t('qty', {quantity: line.quantity})} × <Price value={line.unitPrice}
171
- currencyCode={order.currencyCode}/>
172
+ {t('qty', { quantity: line.quantity })} ×{' '}
173
+ <Price
174
+ value={line.unitPrice}
175
+ currencyCode={order.currencyCode}
176
+ />
172
177
  </p>
173
178
  </div>
174
179
  </div>
@@ -189,11 +194,16 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
189
194
  <div>
190
195
  <p className="font-medium">{surcharge.description}</p>
191
196
  {surcharge.sku && (
192
- <p className="text-sm text-muted-foreground">SKU: {surcharge.sku}</p>
197
+ <p className="text-sm text-muted-foreground">
198
+ SKU: {surcharge.sku}
199
+ </p>
193
200
  )}
194
201
  </div>
195
202
  <p className="font-medium">
196
- <Price value={surcharge.price} currencyCode={order.currencyCode}/>
203
+ <Price
204
+ value={surcharge.price}
205
+ currencyCode={order.currencyCode}
206
+ />
197
207
  </p>
198
208
  </div>
199
209
  ))}
@@ -209,14 +219,18 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
209
219
  <CardContent>
210
220
  <div className="space-y-2">
211
221
  <div className="flex justify-between text-sm">
212
- <span className="text-muted-foreground">{t('subtotal')} <span className="text-[10px]">(excl. tax)</span></span>
213
- <span><Price value={order.subTotal}
214
- currencyCode={order.currencyCode}/></span>
222
+ <span className="text-muted-foreground">
223
+ {t('subtotal')} <span className="text-[10px]">(excl. tax)</span>
224
+ </span>
225
+ <span>
226
+ <Price value={order.subTotal} currencyCode={order.currencyCode} />
227
+ </span>
215
228
  </div>
216
229
  <div className="flex justify-between text-sm">
217
230
  <span className="text-muted-foreground">{t('shipping')}</span>
218
- <span><Price value={order.shipping}
219
- currencyCode={order.currencyCode}/></span>
231
+ <span>
232
+ <Price value={order.shipping} currencyCode={order.currencyCode} />
233
+ </span>
220
234
  </div>
221
235
  {order.discounts.length > 0 && (
222
236
  <>
@@ -226,8 +240,11 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
226
240
  {discount.description}
227
241
  </span>
228
242
  <span className="text-green-600">
229
- -<Price value={discount.amount}
230
- currencyCode={order.currencyCode}/>
243
+ -
244
+ <Price
245
+ value={discount.amount}
246
+ currencyCode={order.currencyCode}
247
+ />
231
248
  </span>
232
249
  </div>
233
250
  ))}
@@ -239,23 +256,36 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
239
256
  <span className="text-muted-foreground">
240
257
  {tax.description} ({tax.taxRate}%)
241
258
  </span>
242
- <span><Price value={tax.taxTotal}
243
- currencyCode={order.currencyCode}/></span>
259
+ <span>
260
+ <Price
261
+ value={tax.taxTotal}
262
+ currencyCode={order.currencyCode}
263
+ />
264
+ </span>
244
265
  </div>
245
266
  ))
246
267
  ) : (
247
268
  <div className="flex justify-between text-sm">
248
269
  <span className="text-muted-foreground">Tax</span>
249
- <span><Price value={order.totalWithTax - order.total}
250
- currencyCode={order.currencyCode}/></span>
270
+ <span>
271
+ <Price
272
+ value={order.totalWithTax - order.total}
273
+ currencyCode={order.currencyCode}
274
+ />
275
+ </span>
251
276
  </div>
252
277
  )}
253
278
  {hasCreditsApplied && (
254
279
  <>
255
- <Separator className="my-2"/>
280
+ <Separator className="my-2" />
256
281
  <div className="flex justify-between text-sm font-medium">
257
282
  <span>Subtotal</span>
258
- <span><Price value={order.totalWithTax} currencyCode={order.currencyCode}/></span>
283
+ <span>
284
+ <Price
285
+ value={order.totalWithTax}
286
+ currencyCode={order.currencyCode}
287
+ />
288
+ </span>
259
289
  </div>
260
290
  {order.storeCreditsApplied.map((credit) => (
261
291
  <div key={credit.code} className="flex justify-between text-sm">
@@ -263,20 +293,26 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
263
293
  Store Credit ({maskCode(credit.code)})
264
294
  </span>
265
295
  <span className="text-green-600">
266
- -<Price value={credit.amountDeducted} currencyCode={order.currencyCode}/>
296
+ -
297
+ <Price
298
+ value={credit.amountDeducted}
299
+ currencyCode={order.currencyCode}
300
+ />
267
301
  </span>
268
302
  </div>
269
303
  ))}
270
304
  </>
271
305
  )}
272
- <Separator className="my-2"/>
306
+ <Separator className="my-2" />
273
307
  <div className="flex justify-between font-bold text-lg">
274
- <span>
275
- {hasCreditsApplied ? 'Amount Paid' : t('total')}
276
- </span>
308
+ <span>{hasCreditsApplied ? 'Amount Paid' : t('total')}</span>
277
309
  <span>
278
310
  <Price
279
- value={hasCreditsApplied ? order.totalWithTaxAfterStoreCredit : order.totalWithTax}
311
+ value={
312
+ hasCreditsApplied
313
+ ? order.totalWithTaxAfterStoreCredit
314
+ : order.totalWithTax
315
+ }
280
316
  currencyCode={order.currencyCode}
281
317
  taxLabel="incl"
282
318
  />
@@ -295,9 +331,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
295
331
  </CardHeader>
296
332
  <CardContent className="text-sm">
297
333
  <p className="font-medium">{order.shippingAddress.fullName}</p>
298
- {order.shippingAddress.company && (
299
- <p>{order.shippingAddress.company}</p>
300
- )}
334
+ {order.shippingAddress.company && <p>{order.shippingAddress.company}</p>}
301
335
  <p>{order.shippingAddress.streetLine1}</p>
302
336
  {order.shippingAddress.streetLine2 && (
303
337
  <p>{order.shippingAddress.streetLine2}</p>
@@ -321,9 +355,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
321
355
  </CardHeader>
322
356
  <CardContent className="text-sm">
323
357
  <p className="font-medium">{order.billingAddress.fullName}</p>
324
- {order.billingAddress.company && (
325
- <p>{order.billingAddress.company}</p>
326
- )}
358
+ {order.billingAddress.company && <p>{order.billingAddress.company}</p>}
327
359
  <p>{order.billingAddress.streetLine1}</p>
328
360
  {order.billingAddress.streetLine2 && (
329
361
  <p>{order.billingAddress.streetLine2}</p>
@@ -354,18 +386,26 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
354
386
  </div>
355
387
  <div className="flex justify-between">
356
388
  <span className="text-muted-foreground">{t('amount')}</span>
357
- <span><Price value={payment.amount}
358
- currencyCode={order.currencyCode}/></span>
389
+ <span>
390
+ <Price
391
+ value={payment.amount}
392
+ currencyCode={order.currencyCode}
393
+ />
394
+ </span>
359
395
  </div>
360
396
  <div className="flex justify-between">
361
- <span className="text-muted-foreground">{t('paymentStatus')}</span>
397
+ <span className="text-muted-foreground">
398
+ {t('paymentStatus')}
399
+ </span>
362
400
  <Badge variant="secondary" className="text-xs">
363
401
  {payment.state}
364
402
  </Badge>
365
403
  </div>
366
404
  {payment.transactionId && (
367
405
  <div className="flex justify-between">
368
- <span className="text-muted-foreground">{t('transactionId')}</span>
406
+ <span className="text-muted-foreground">
407
+ {t('transactionId')}
408
+ </span>
369
409
  <span className="font-mono text-xs">
370
410
  {payment.transactionId}
371
411
  </span>
@@ -392,7 +432,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
392
432
  </p>
393
433
  )}
394
434
  <p className="font-medium">
395
- <Price value={line.price} currencyCode={order.currencyCode}/>
435
+ <Price value={line.price} currencyCode={order.currencyCode} />
396
436
  </p>
397
437
  </div>
398
438
  ))}
@@ -408,12 +448,14 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
408
448
  <CardContent className="space-y-3">
409
449
  <div className="flex items-center gap-2">
410
450
  <span className="text-sm text-muted-foreground">Status:</span>
411
- <ApprovalStatusBadge status={latestApproval.status}/>
451
+ <ApprovalStatusBadge status={latestApproval.status} />
412
452
  </div>
413
453
  {latestApproval.decisions && latestApproval.decisions.length > 0 && (
414
454
  <div className="space-y-2">
415
- <Separator/>
416
- <p className="text-xs font-medium text-muted-foreground">Decision History</p>
455
+ <Separator />
456
+ <p className="text-xs font-medium text-muted-foreground">
457
+ Decision History
458
+ </p>
417
459
  {latestApproval.decisions
418
460
  .filter((d) => d.decision !== 'PENDING')
419
461
  .map((d) => (
@@ -424,13 +466,17 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
424
466
  ? `${d.customer.firstName} ${d.customer.lastName}`
425
467
  : 'Admin'}
426
468
  </span>
427
- <ApprovalStatusBadge status={d.decision}/>
469
+ <ApprovalStatusBadge status={d.decision} />
428
470
  </div>
429
471
  {d.comment && (
430
- <p className="text-muted-foreground italic">&ldquo;{d.comment}&rdquo;</p>
472
+ <p className="text-muted-foreground italic">
473
+ &ldquo;{d.comment}&rdquo;
474
+ </p>
431
475
  )}
432
476
  {d.decidedAt && (
433
- <p className="text-muted-foreground">{formatDate(d.decidedAt, locale)}</p>
477
+ <p className="text-muted-foreground">
478
+ {formatDate(d.decidedAt, locale)}
479
+ </p>
434
480
  )}
435
481
  </div>
436
482
  ))}
@@ -450,13 +496,15 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
450
496
  );
451
497
  }
452
498
 
453
- export default function OrderDetailPage({params}: OrderDetailPageProps) {
499
+ export default function OrderDetailPage({ params }: OrderDetailPageProps) {
454
500
  return (
455
- <Suspense fallback={
456
- <div className="text-center py-12">
457
- <p className="text-sm text-muted-foreground">Loading...</p>
458
- </div>
459
- }>
501
+ <Suspense
502
+ fallback={
503
+ <div className="text-center py-12">
504
+ <p className="text-sm text-muted-foreground">Loading...</p>
505
+ </div>
506
+ }
507
+ >
460
508
  <OrderDetailContent params={params} />
461
509
  </Suspense>
462
510
  );
@@ -2,10 +2,10 @@
2
2
 
3
3
  import { updateTag } from 'next/cache';
4
4
 
5
+ import type { ResultOf } from '@/graphql';
5
6
  import { client } from '@/lib/vendure/api';
6
7
  import { AddReorderToActiveOrderMutation } from '@/lib/vendure/mutations';
7
8
  import { PreviewReorderQuery } from '@/lib/vendure/queries';
8
- import type { ResultOf } from '@/graphql';
9
9
 
10
10
  // Guard against pathological payloads. The server enforces its own limits too,
11
11
  // but failing fast here means we don't spend an HTTP round-trip to discover.
@@ -71,7 +71,7 @@ export async function previewReorder(
71
71
  return {
72
72
  success: true,
73
73
  data: {
74
- lines: preview.lines.map(line => ({
74
+ lines: preview.lines.map((line) => ({
75
75
  sourceLineId: line.sourceLineId,
76
76
  productVariantId: line.productVariant?.id ?? null,
77
77
  productName: line.productVariant?.product?.name ?? null,
@@ -83,9 +83,8 @@ export async function previewReorder(
83
83
  status: line.status as ReorderLineStatus,
84
84
  originalUnitPriceWithTax: line.originalUnitPriceWithTax,
85
85
  currentCatalogUnitPriceWithTax: line.currentCatalogUnitPriceWithTax,
86
- priceChanged:
87
- line.originalUnitPriceWithTax !== line.currentCatalogUnitPriceWithTax,
88
- messages: line.messages.map(m => ({
86
+ priceChanged: line.originalUnitPriceWithTax !== line.currentCatalogUnitPriceWithTax,
87
+ messages: line.messages.map((m) => ({
89
88
  type: m.type as 'ERROR' | 'WARNING' | 'INFO',
90
89
  message: m.message,
91
90
  })),
@@ -146,12 +145,12 @@ export async function commitReorder(
146
145
  filteredCount: response.filteredCount,
147
146
  failedCount: response.failedCount,
148
147
  orderCode: response.order.code,
149
- lines: response.lines.map(l => ({
148
+ lines: response.lines.map((l) => ({
150
149
  sourceLineId: l.sourceLineId,
151
150
  status: l.status as ReorderLineStatus,
152
151
  message: l.message ?? null,
153
152
  })),
154
- messages: response.messages.map(m => ({
153
+ messages: response.messages.map((m) => ({
155
154
  type: m.type as 'ERROR' | 'WARNING' | 'INFO',
156
155
  message: m.message,
157
156
  })),