@vendure-platform/create 0.5.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 (325) hide show
  1. package/CHANGELOG.md +4 -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/next.config.ts +5 -4
  9. package/dist/assets/storefront/package.json +1 -1
  10. package/dist/assets/storefront/postcss.config.mjs +1 -1
  11. package/dist/assets/storefront/src/app/[locale]/(catalog)/catalog/page.tsx +17 -21
  12. package/dist/assets/storefront/src/app/[locale]/(catalog)/collection/[slug]/page.tsx +64 -42
  13. package/dist/assets/storefront/src/app/[locale]/(catalog)/layout.tsx +1 -5
  14. package/dist/assets/storefront/src/app/[locale]/(catalog)/product/[slug]/actions.ts +69 -65
  15. package/dist/assets/storefront/src/app/[locale]/(catalog)/product/[slug]/page.tsx +64 -38
  16. package/dist/assets/storefront/src/app/[locale]/(catalog)/search/page.tsx +24 -27
  17. package/dist/assets/storefront/src/app/[locale]/(catalog)/search/search-results.tsx +11 -9
  18. package/dist/assets/storefront/src/app/[locale]/(catalog)/search/search-term.tsx +4 -4
  19. package/dist/assets/storefront/src/app/[locale]/(scenario)/[...path]/page.tsx +1 -1
  20. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/accept-invitation-client.tsx +8 -13
  21. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/actions.ts +11 -14
  22. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/page.tsx +30 -33
  23. package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/sign-out-and-retry.tsx +6 -6
  24. package/dist/assets/storefront/src/app/[locale]/account/addresses/actions.ts +30 -45
  25. package/dist/assets/storefront/src/app/[locale]/account/addresses/address-form.tsx +166 -159
  26. package/dist/assets/storefront/src/app/[locale]/account/addresses/addresses-client.tsx +35 -26
  27. package/dist/assets/storefront/src/app/[locale]/account/addresses/loading.tsx +1 -3
  28. package/dist/assets/storefront/src/app/[locale]/account/addresses/page.tsx +16 -18
  29. package/dist/assets/storefront/src/app/[locale]/account/approvals/actions.ts +5 -8
  30. package/dist/assets/storefront/src/app/[locale]/account/approvals/page.tsx +77 -69
  31. package/dist/assets/storefront/src/app/[locale]/account/company/actions.ts +10 -11
  32. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/actions.ts +6 -15
  33. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/address-form.tsx +57 -49
  34. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/addresses-client.tsx +23 -25
  35. package/dist/assets/storefront/src/app/[locale]/account/company/addresses/page.tsx +30 -30
  36. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/actions.ts +20 -29
  37. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/business-unit-form.tsx +32 -37
  38. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/business-units-client.tsx +32 -25
  39. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/page.tsx +24 -24
  40. package/dist/assets/storefront/src/app/[locale]/account/company/business-units/types.ts +7 -4
  41. package/dist/assets/storefront/src/app/[locale]/account/company/edit-company-form.tsx +11 -21
  42. package/dist/assets/storefront/src/app/[locale]/account/company/page.tsx +23 -28
  43. package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/page.tsx +24 -24
  44. package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/payment-methods-client.tsx +5 -7
  45. package/dist/assets/storefront/src/app/[locale]/account/company/roles/page.tsx +22 -25
  46. package/dist/assets/storefront/src/app/[locale]/account/company/roles/roles-client.tsx +11 -26
  47. package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/actions.ts +6 -10
  48. package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/page.tsx +18 -16
  49. package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/tax-ids-client.tsx +74 -67
  50. package/dist/assets/storefront/src/app/[locale]/account/company/users/actions.ts +16 -25
  51. package/dist/assets/storefront/src/app/[locale]/account/company/users/edit-user-form.tsx +27 -25
  52. package/dist/assets/storefront/src/app/[locale]/account/company/users/invite-user-form.tsx +27 -19
  53. package/dist/assets/storefront/src/app/[locale]/account/company/users/page.tsx +32 -29
  54. package/dist/assets/storefront/src/app/[locale]/account/company/users/users-client.tsx +35 -38
  55. package/dist/assets/storefront/src/app/[locale]/account/error.tsx +1 -3
  56. package/dist/assets/storefront/src/app/[locale]/account/layout.tsx +16 -22
  57. package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/page.tsx +151 -103
  58. package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/reorder-actions.ts +6 -7
  59. package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/reorder-dialog.tsx +22 -48
  60. package/dist/assets/storefront/src/app/[locale]/account/orders/loading.tsx +8 -8
  61. package/dist/assets/storefront/src/app/[locale]/account/orders/page.tsx +101 -61
  62. package/dist/assets/storefront/src/app/[locale]/account/profile/actions.ts +32 -23
  63. package/dist/assets/storefront/src/app/[locale]/account/profile/change-password-form.tsx +6 -16
  64. package/dist/assets/storefront/src/app/[locale]/account/profile/edit-email-form.tsx +7 -17
  65. package/dist/assets/storefront/src/app/[locale]/account/profile/edit-profile-form.tsx +6 -16
  66. package/dist/assets/storefront/src/app/[locale]/account/profile/loading.tsx +12 -18
  67. package/dist/assets/storefront/src/app/[locale]/account/profile/page.tsx +15 -15
  68. package/dist/assets/storefront/src/app/[locale]/account/quick-order/file-upload-tab.tsx +2 -6
  69. package/dist/assets/storefront/src/app/[locale]/account/quick-order/manual-entry-tab.tsx +18 -15
  70. package/dist/assets/storefront/src/app/[locale]/account/quick-order/page.tsx +3 -6
  71. package/dist/assets/storefront/src/app/[locale]/account/quick-order/preview-table.tsx +10 -2
  72. package/dist/assets/storefront/src/app/[locale]/account/quick-order/save-to-list-dialog.tsx +24 -26
  73. package/dist/assets/storefront/src/app/[locale]/account/quick-order/sku-autocomplete.tsx +19 -10
  74. package/dist/assets/storefront/src/app/[locale]/account/quick-order/text-input-tab.tsx +3 -8
  75. package/dist/assets/storefront/src/app/[locale]/account/quotes/[id]/page.tsx +86 -59
  76. package/dist/assets/storefront/src/app/[locale]/account/quotes/actions.ts +38 -45
  77. package/dist/assets/storefront/src/app/[locale]/account/quotes/new/new-quote-form.tsx +3 -5
  78. package/dist/assets/storefront/src/app/[locale]/account/quotes/new/page.tsx +6 -6
  79. package/dist/assets/storefront/src/app/[locale]/account/quotes/page.tsx +92 -59
  80. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/add-item-search.tsx +11 -9
  81. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/add-member-form.tsx +31 -15
  82. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/members-panel.tsx +52 -33
  83. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/page.tsx +22 -14
  84. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/rename-dialog.tsx +34 -13
  85. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/actions.ts +117 -72
  86. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/new/new-shared-cart-form.tsx +21 -14
  87. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/new/page.tsx +10 -10
  88. package/dist/assets/storefront/src/app/[locale]/account/shared-carts/page.tsx +54 -41
  89. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/[id]/page.tsx +22 -8
  90. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/[id]/shopping-list-detail-client.tsx +62 -49
  91. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/actions.ts +9 -4
  92. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/create-shopping-list-form.tsx +5 -11
  93. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/loading.tsx +1 -1
  94. package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/page.tsx +32 -42
  95. package/dist/assets/storefront/src/app/[locale]/account/store-credits/actions.ts +8 -8
  96. package/dist/assets/storefront/src/app/[locale]/account/store-credits/claim-form.tsx +6 -10
  97. package/dist/assets/storefront/src/app/[locale]/account/store-credits/page.tsx +76 -55
  98. package/dist/assets/storefront/src/app/[locale]/account/store-credits/reveal-code.tsx +10 -6
  99. package/dist/assets/storefront/src/app/[locale]/account/verify-email/page.tsx +32 -39
  100. package/dist/assets/storefront/src/app/[locale]/cart/actions.ts +29 -23
  101. package/dist/assets/storefront/src/app/[locale]/cart/cart-items.tsx +111 -40
  102. package/dist/assets/storefront/src/app/[locale]/cart/cart-line-actions.tsx +9 -9
  103. package/dist/assets/storefront/src/app/[locale]/cart/cart-quantity-control.tsx +61 -48
  104. package/dist/assets/storefront/src/app/[locale]/cart/cart-remove-button.tsx +15 -9
  105. package/dist/assets/storefront/src/app/[locale]/cart/cart.tsx +38 -41
  106. package/dist/assets/storefront/src/app/[locale]/cart/code-input.tsx +8 -8
  107. package/dist/assets/storefront/src/app/[locale]/cart/order-summary.tsx +50 -32
  108. package/dist/assets/storefront/src/app/[locale]/cart/page.tsx +11 -11
  109. package/dist/assets/storefront/src/app/[locale]/cart/promotion-code.tsx +48 -42
  110. package/dist/assets/storefront/src/app/[locale]/cart/reapproval-confirm.tsx +22 -20
  111. package/dist/assets/storefront/src/app/[locale]/cart/request-quote-button.tsx +7 -16
  112. package/dist/assets/storefront/src/app/[locale]/checkout/actions.ts +39 -65
  113. package/dist/assets/storefront/src/app/[locale]/checkout/cancel-quote-checkout-button.tsx +5 -5
  114. package/dist/assets/storefront/src/app/[locale]/checkout/checkout-flow.tsx +202 -202
  115. package/dist/assets/storefront/src/app/[locale]/checkout/checkout-provider.tsx +142 -142
  116. package/dist/assets/storefront/src/app/[locale]/checkout/order-summary.tsx +158 -139
  117. package/dist/assets/storefront/src/app/[locale]/checkout/page.tsx +56 -47
  118. package/dist/assets/storefront/src/app/[locale]/checkout/steps/delivery-step.tsx +86 -88
  119. package/dist/assets/storefront/src/app/[locale]/checkout/steps/payment-step.tsx +90 -91
  120. package/dist/assets/storefront/src/app/[locale]/checkout/steps/review-step.tsx +166 -161
  121. package/dist/assets/storefront/src/app/[locale]/checkout/steps/shipping-address-step.tsx +573 -494
  122. package/dist/assets/storefront/src/app/[locale]/error.tsx +3 -5
  123. package/dist/assets/storefront/src/app/[locale]/forgot-password/actions.ts +10 -7
  124. package/dist/assets/storefront/src/app/[locale]/forgot-password/forgot-password-form.tsx +10 -25
  125. package/dist/assets/storefront/src/app/[locale]/forgot-password/page.tsx +5 -5
  126. package/dist/assets/storefront/src/app/[locale]/globals.css +48 -48
  127. package/dist/assets/storefront/src/app/[locale]/layout.tsx +53 -47
  128. package/dist/assets/storefront/src/app/[locale]/not-found.tsx +3 -5
  129. package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/order-confirmation.tsx +71 -44
  130. package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/page.tsx +7 -5
  131. package/dist/assets/storefront/src/app/[locale]/page.tsx +33 -35
  132. package/dist/assets/storefront/src/app/[locale]/register/actions.ts +7 -7
  133. package/dist/assets/storefront/src/app/[locale]/register/page.tsx +22 -16
  134. package/dist/assets/storefront/src/app/[locale]/register/registration-form.tsx +22 -34
  135. package/dist/assets/storefront/src/app/[locale]/register-company/actions.ts +15 -19
  136. package/dist/assets/storefront/src/app/[locale]/register-company/page.tsx +17 -15
  137. package/dist/assets/storefront/src/app/[locale]/register-company/registration-form.tsx +9 -15
  138. package/dist/assets/storefront/src/app/[locale]/reset-password/actions.ts +7 -8
  139. package/dist/assets/storefront/src/app/[locale]/reset-password/page.tsx +18 -12
  140. package/dist/assets/storefront/src/app/[locale]/reset-password/reset-password-form.tsx +8 -16
  141. package/dist/assets/storefront/src/app/[locale]/shopping-list/[code]/add-to-cart-button.tsx +10 -4
  142. package/dist/assets/storefront/src/app/[locale]/shopping-list/[code]/page.tsx +62 -30
  143. package/dist/assets/storefront/src/app/[locale]/sign-in/actions.ts +14 -16
  144. package/dist/assets/storefront/src/app/[locale]/sign-in/login-form.tsx +17 -30
  145. package/dist/assets/storefront/src/app/[locale]/sign-in/page.tsx +35 -30
  146. package/dist/assets/storefront/src/app/[locale]/verify/actions.ts +8 -8
  147. package/dist/assets/storefront/src/app/[locale]/verify/page.tsx +18 -14
  148. package/dist/assets/storefront/src/app/[locale]/verify/verify-content.tsx +25 -27
  149. package/dist/assets/storefront/src/app/[locale]/verify-pending/page.tsx +23 -23
  150. package/dist/assets/storefront/src/app/api/clear-company-context/route.ts +6 -3
  151. package/dist/assets/storefront/src/app/api/revalidate/route.ts +19 -28
  152. package/dist/assets/storefront/src/app/api/search-analytics/route.ts +1 -1
  153. package/dist/assets/storefront/src/components/commerce/account-nav-items.ts +43 -18
  154. package/dist/assets/storefront/src/components/commerce/account-sidebar.tsx +30 -22
  155. package/dist/assets/storefront/src/components/commerce/active-filters.tsx +1 -1
  156. package/dist/assets/storefront/src/components/commerce/add-to-shared-cart.tsx +49 -27
  157. package/dist/assets/storefront/src/components/commerce/approval-decision-form.tsx +9 -13
  158. package/dist/assets/storefront/src/components/commerce/approval-status-badge.tsx +23 -15
  159. package/dist/assets/storefront/src/components/commerce/business-unit-switcher.tsx +11 -11
  160. package/dist/assets/storefront/src/components/commerce/catalog-search-bar.tsx +2 -2
  161. package/dist/assets/storefront/src/components/commerce/category-product-section.tsx +28 -16
  162. package/dist/assets/storefront/src/components/commerce/category-sidebar.tsx +31 -18
  163. package/dist/assets/storefront/src/components/commerce/collection-hero-banner.tsx +2 -4
  164. package/dist/assets/storefront/src/components/commerce/company-state-badge.tsx +10 -16
  165. package/dist/assets/storefront/src/components/commerce/company-switcher.tsx +12 -12
  166. package/dist/assets/storefront/src/components/commerce/configurator-form.tsx +188 -79
  167. package/dist/assets/storefront/src/components/commerce/facet-filters.tsx +29 -49
  168. package/dist/assets/storefront/src/components/commerce/gift-card-pdp.tsx +4 -4
  169. package/dist/assets/storefront/src/components/commerce/gift-card-product-info.tsx +20 -30
  170. package/dist/assets/storefront/src/components/commerce/instant-search-dropdown.tsx +258 -227
  171. package/dist/assets/storefront/src/components/commerce/order-status-badge.tsx +27 -19
  172. package/dist/assets/storefront/src/components/commerce/packaging-unit-selector.tsx +27 -26
  173. package/dist/assets/storefront/src/components/commerce/permission-gate.tsx +4 -4
  174. package/dist/assets/storefront/src/components/commerce/price-range-filter.tsx +5 -5
  175. package/dist/assets/storefront/src/components/commerce/price-tiers.tsx +38 -21
  176. package/dist/assets/storefront/src/components/commerce/price.tsx +3 -3
  177. package/dist/assets/storefront/src/components/commerce/product-card-list.tsx +35 -14
  178. package/dist/assets/storefront/src/components/commerce/product-card.tsx +31 -16
  179. package/dist/assets/storefront/src/components/commerce/product-carousel.tsx +20 -12
  180. package/dist/assets/storefront/src/components/commerce/product-grid.tsx +14 -13
  181. package/dist/assets/storefront/src/components/commerce/product-image-carousel.tsx +10 -8
  182. package/dist/assets/storefront/src/components/commerce/product-info.tsx +118 -74
  183. package/dist/assets/storefront/src/components/commerce/product-list-expansion.tsx +102 -74
  184. package/dist/assets/storefront/src/components/commerce/product-list-view.tsx +1 -1
  185. package/dist/assets/storefront/src/components/commerce/product-sidebar.tsx +36 -11
  186. package/dist/assets/storefront/src/components/commerce/product-view-switcher.tsx +33 -21
  187. package/dist/assets/storefront/src/components/commerce/quote-action-buttons.tsx +54 -36
  188. package/dist/assets/storefront/src/components/commerce/quote-activity-timeline.tsx +126 -50
  189. package/dist/assets/storefront/src/components/commerce/quote-comment-form.tsx +9 -13
  190. package/dist/assets/storefront/src/components/commerce/quote-csv-export-button.tsx +6 -6
  191. package/dist/assets/storefront/src/components/commerce/quote-product-search.tsx +22 -18
  192. package/dist/assets/storefront/src/components/commerce/quote-request-form.tsx +28 -27
  193. package/dist/assets/storefront/src/components/commerce/quote-status-badge.tsx +26 -18
  194. package/dist/assets/storefront/src/components/commerce/quote-validity-indicator.tsx +7 -7
  195. package/dist/assets/storefront/src/components/commerce/quote-version-comparison.tsx +50 -30
  196. package/dist/assets/storefront/src/components/commerce/related-products.tsx +37 -28
  197. package/dist/assets/storefront/src/components/commerce/shared-cart-status-badge.tsx +12 -8
  198. package/dist/assets/storefront/src/components/commerce/shop-by-category.tsx +8 -7
  199. package/dist/assets/storefront/src/components/commerce/shopping-list-toggle.tsx +14 -20
  200. package/dist/assets/storefront/src/components/commerce/sort-dropdown.tsx +9 -16
  201. package/dist/assets/storefront/src/components/commerce/store-credit-summary.tsx +30 -32
  202. package/dist/assets/storefront/src/components/commerce/subcollection-tiles.tsx +11 -13
  203. package/dist/assets/storefront/src/components/layout/auth-page-shell.tsx +2 -2
  204. package/dist/assets/storefront/src/components/layout/draft-mode-indicator.tsx +2 -7
  205. package/dist/assets/storefront/src/components/layout/draft-mode-link.tsx +4 -2
  206. package/dist/assets/storefront/src/components/layout/footer.tsx +70 -28
  207. package/dist/assets/storefront/src/components/layout/navbar/actions.ts +9 -12
  208. package/dist/assets/storefront/src/components/layout/navbar/cart-icon.tsx +9 -9
  209. package/dist/assets/storefront/src/components/layout/navbar/channel-picker-wrapper.tsx +4 -9
  210. package/dist/assets/storefront/src/components/layout/navbar/channel-picker.tsx +13 -8
  211. package/dist/assets/storefront/src/components/layout/navbar/currency-picker-wrapper.tsx +4 -4
  212. package/dist/assets/storefront/src/components/layout/navbar/currency-picker.tsx +11 -6
  213. package/dist/assets/storefront/src/components/layout/navbar/language-picker.tsx +7 -7
  214. package/dist/assets/storefront/src/components/layout/navbar/login-button.tsx +24 -21
  215. package/dist/assets/storefront/src/components/layout/navbar/mobile-nav.tsx +8 -8
  216. package/dist/assets/storefront/src/components/layout/navbar/nav-menu-items.tsx +4 -6
  217. package/dist/assets/storefront/src/components/layout/navbar/navbar-cart.tsx +1 -1
  218. package/dist/assets/storefront/src/components/layout/navbar/navbar-collections.tsx +41 -42
  219. package/dist/assets/storefront/src/components/layout/navbar/navbar-link.tsx +7 -10
  220. package/dist/assets/storefront/src/components/layout/navbar/navbar-user.tsx +18 -23
  221. package/dist/assets/storefront/src/components/layout/navbar/theme-switcher.tsx +9 -9
  222. package/dist/assets/storefront/src/components/layout/navbar.tsx +36 -31
  223. package/dist/assets/storefront/src/components/layout/search-input.tsx +35 -32
  224. package/dist/assets/storefront/src/components/providers/awaiting-approval-banner.tsx +12 -10
  225. package/dist/assets/storefront/src/components/providers/cart-count-server.tsx +14 -12
  226. package/dist/assets/storefront/src/components/providers/company-context-guard.tsx +4 -4
  227. package/dist/assets/storefront/src/components/providers/company-permissions-server.tsx +2 -6
  228. package/dist/assets/storefront/src/components/providers/theme-provider.tsx +3 -3
  229. package/dist/assets/storefront/src/components/shared/breadcrumbs.tsx +4 -1
  230. package/dist/assets/storefront/src/components/shared/country-select.tsx +63 -67
  231. package/dist/assets/storefront/src/components/shared/pagination.tsx +15 -28
  232. package/dist/assets/storefront/src/components/shared/prefetch-link.tsx +1 -1
  233. package/dist/assets/storefront/src/components/shared/skeletons/search-input-skeleton.tsx +1 -3
  234. package/dist/assets/storefront/src/components/ui/accordion.tsx +46 -51
  235. package/dist/assets/storefront/src/components/ui/alert-dialog.tsx +94 -121
  236. package/dist/assets/storefront/src/components/ui/alert.tsx +48 -54
  237. package/dist/assets/storefront/src/components/ui/aspect-ratio.tsx +5 -7
  238. package/dist/assets/storefront/src/components/ui/avatar.tsx +29 -44
  239. package/dist/assets/storefront/src/components/ui/badge.tsx +28 -37
  240. package/dist/assets/storefront/src/components/ui/breadcrumb.tsx +82 -89
  241. package/dist/assets/storefront/src/components/ui/button.tsx +43 -49
  242. package/dist/assets/storefront/src/components/ui/calendar.tsx +157 -198
  243. package/dist/assets/storefront/src/components/ui/card.tsx +53 -76
  244. package/dist/assets/storefront/src/components/ui/carousel.tsx +194 -212
  245. package/dist/assets/storefront/src/components/ui/chart.tsx +274 -317
  246. package/dist/assets/storefront/src/components/ui/checkbox.tsx +24 -27
  247. package/dist/assets/storefront/src/components/ui/collapsible.tsx +9 -21
  248. package/dist/assets/storefront/src/components/ui/command.tsx +114 -159
  249. package/dist/assets/storefront/src/components/ui/context-menu.tsx +167 -199
  250. package/dist/assets/storefront/src/components/ui/dialog.tsx +97 -114
  251. package/dist/assets/storefront/src/components/ui/drawer.tsx +93 -107
  252. package/dist/assets/storefront/src/components/ui/dropdown-menu.tsx +171 -206
  253. package/dist/assets/storefront/src/components/ui/empty-state.tsx +5 -5
  254. package/dist/assets/storefront/src/components/ui/field.tsx +196 -208
  255. package/dist/assets/storefront/src/components/ui/form.tsx +115 -139
  256. package/dist/assets/storefront/src/components/ui/hover-card.tsx +27 -33
  257. package/dist/assets/storefront/src/components/ui/input-otp.tsx +50 -59
  258. package/dist/assets/storefront/src/components/ui/input.tsx +17 -17
  259. package/dist/assets/storefront/src/components/ui/kbd-shortcut.tsx +3 -1
  260. package/dist/assets/storefront/src/components/ui/label.tsx +16 -19
  261. package/dist/assets/storefront/src/components/ui/menubar.tsx +193 -223
  262. package/dist/assets/storefront/src/components/ui/navigation-menu.tsx +123 -130
  263. package/dist/assets/storefront/src/components/ui/pagination.tsx +87 -108
  264. package/dist/assets/storefront/src/components/ui/popover.tsx +29 -35
  265. package/dist/assets/storefront/src/components/ui/progress.tsx +19 -26
  266. package/dist/assets/storefront/src/components/ui/radio-group.tsx +32 -38
  267. package/dist/assets/storefront/src/components/ui/resizable.tsx +37 -42
  268. package/dist/assets/storefront/src/components/ui/scroll-area.tsx +41 -47
  269. package/dist/assets/storefront/src/components/ui/select.tsx +130 -152
  270. package/dist/assets/storefront/src/components/ui/separator.tsx +21 -21
  271. package/dist/assets/storefront/src/components/ui/sheet.tsx +90 -111
  272. package/dist/assets/storefront/src/components/ui/sidebar.tsx +611 -649
  273. package/dist/assets/storefront/src/components/ui/skeleton.tsx +10 -10
  274. package/dist/assets/storefront/src/components/ui/slider.tsx +50 -55
  275. package/dist/assets/storefront/src/components/ui/sonner.tsx +20 -20
  276. package/dist/assets/storefront/src/components/ui/switch.tsx +23 -26
  277. package/dist/assets/storefront/src/components/ui/table.tsx +65 -97
  278. package/dist/assets/storefront/src/components/ui/tabs.tsx +39 -55
  279. package/dist/assets/storefront/src/components/ui/textarea.tsx +14 -14
  280. package/dist/assets/storefront/src/components/ui/toggle-group.tsx +56 -62
  281. package/dist/assets/storefront/src/components/ui/toggle.tsx +37 -38
  282. package/dist/assets/storefront/src/components/ui/tooltip.tsx +38 -46
  283. package/dist/assets/storefront/src/config/scenario-meta.ts +2 -2
  284. package/dist/assets/storefront/src/config/scenario.ts +14 -16
  285. package/dist/assets/storefront/src/contexts/auth-context.tsx +5 -6
  286. package/dist/assets/storefront/src/graphql.ts +5 -5
  287. package/dist/assets/storefront/src/hooks/use-mobile.ts +13 -13
  288. package/dist/assets/storefront/src/i18n/locale-utils.ts +3 -3
  289. package/dist/assets/storefront/src/i18n/navigation.ts +4 -4
  290. package/dist/assets/storefront/src/i18n/request.ts +4 -4
  291. package/dist/assets/storefront/src/i18n/routing.ts +5 -5
  292. package/dist/assets/storefront/src/i18n/server.ts +3 -3
  293. package/dist/assets/storefront/src/lib/actions/switch-channel.ts +9 -9
  294. package/dist/assets/storefront/src/lib/actions/switch-currency.ts +7 -7
  295. package/dist/assets/storefront/src/lib/auth.ts +1 -1
  296. package/dist/assets/storefront/src/lib/backend-health.ts +3 -3
  297. package/dist/assets/storefront/src/lib/cart-count-context.tsx +10 -4
  298. package/dist/assets/storefront/src/lib/cart-guard-utils.ts +2 -1
  299. package/dist/assets/storefront/src/lib/cart-guard.ts +7 -6
  300. package/dist/assets/storefront/src/lib/channel-server.ts +4 -4
  301. package/dist/assets/storefront/src/lib/company-context.ts +1 -1
  302. package/dist/assets/storefront/src/lib/company-permissions-context.tsx +1 -5
  303. package/dist/assets/storefront/src/lib/currency-server.ts +4 -4
  304. package/dist/assets/storefront/src/lib/format.ts +16 -7
  305. package/dist/assets/storefront/src/lib/metadata.ts +39 -44
  306. package/dist/assets/storefront/src/lib/quantity.ts +2 -4
  307. package/dist/assets/storefront/src/lib/search-bar-context.tsx +7 -4
  308. package/dist/assets/storefront/src/lib/use-recent-searches.ts +8 -6
  309. package/dist/assets/storefront/src/lib/utils.ts +3 -3
  310. package/dist/assets/storefront/src/lib/vendure/actions.ts +18 -16
  311. package/dist/assets/storefront/src/lib/vendure/api.ts +36 -23
  312. package/dist/assets/storefront/src/lib/vendure/approval-utils.ts +9 -8
  313. package/dist/assets/storefront/src/lib/vendure/cached.ts +20 -15
  314. package/dist/assets/storefront/src/lib/vendure/queries.ts +15 -5
  315. package/dist/assets/storefront/src/middleware.ts +1 -1
  316. package/dist/assets/storefront/src/scenarios/customer/hero.tsx +2 -2
  317. package/dist/assets/storefront/src/scenarios/customer/meta.ts +1 -1
  318. package/dist/bin/run.js +1 -1
  319. package/dist/cli.d.ts +1 -1
  320. package/dist/index.d.ts +5 -5
  321. package/dist/index.js +1 -1
  322. package/dist/scaffold-storefront-only.js +1 -1
  323. package/dist/scaffolder.js +1 -1
  324. package/dist/template-renderer.js +1 -1
  325. package/package.json +2 -2
@@ -1,14 +1,21 @@
1
1
  'use client';
2
2
 
3
- import {useState, useTransition} from 'react';
4
- import {toast} from 'sonner';
5
- import {Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle} from '@/components/ui/dialog';
6
- import {Button} from '@/components/ui/button';
7
- import {Input} from '@/components/ui/input';
8
- import {Textarea} from '@/components/ui/textarea';
9
- import {Label} from '@/components/ui/label';
10
- import {Loader2} from 'lucide-react';
11
- import {renameSharedCart} from '../actions';
3
+ import { Button } from '@/components/ui/button';
4
+ import {
5
+ Dialog,
6
+ DialogContent,
7
+ DialogDescription,
8
+ DialogFooter,
9
+ DialogHeader,
10
+ DialogTitle,
11
+ } from '@/components/ui/dialog';
12
+ import { Input } from '@/components/ui/input';
13
+ import { Label } from '@/components/ui/label';
14
+ import { Textarea } from '@/components/ui/textarea';
15
+ import { Loader2 } from 'lucide-react';
16
+ import { useState, useTransition } from 'react';
17
+ import { toast } from 'sonner';
18
+ import { renameSharedCart } from '../actions';
12
19
 
13
20
  export function RenameSharedCartDialog({
14
21
  open,
@@ -62,26 +69,40 @@ export function RenameSharedCartDialog({
62
69
  <form onSubmit={handleSubmit}>
63
70
  <DialogHeader>
64
71
  <DialogTitle>Rename shared cart</DialogTitle>
65
- <DialogDescription>Update the name and description your colleagues see.</DialogDescription>
72
+ <DialogDescription>
73
+ Update the name and description your colleagues see.
74
+ </DialogDescription>
66
75
  </DialogHeader>
67
76
  <div className="space-y-4 py-4">
68
77
  <div className="space-y-2">
69
78
  <Label htmlFor="rename-name">Name</Label>
70
- <Input id="rename-name" value={name} onChange={e => setName(e.target.value)} maxLength={255} required autoFocus />
79
+ <Input
80
+ id="rename-name"
81
+ value={name}
82
+ onChange={(e) => setName(e.target.value)}
83
+ maxLength={255}
84
+ required
85
+ autoFocus
86
+ />
71
87
  </div>
72
88
  <div className="space-y-2">
73
89
  <Label htmlFor="rename-description">Description</Label>
74
90
  <Textarea
75
91
  id="rename-description"
76
92
  value={description}
77
- onChange={e => setDescription(e.target.value)}
93
+ onChange={(e) => setDescription(e.target.value)}
78
94
  rows={3}
79
95
  maxLength={1000}
80
96
  />
81
97
  </div>
82
98
  </div>
83
99
  <DialogFooter>
84
- <Button type="button" variant="ghost" onClick={() => onOpenChange(false)} disabled={isPending}>
100
+ <Button
101
+ type="button"
102
+ variant="ghost"
103
+ onClick={() => onOpenChange(false)}
104
+ disabled={isPending}
105
+ >
85
106
  Cancel
86
107
  </Button>
87
108
  <Button type="submit" disabled={!name.trim() || isPending}>
@@ -1,28 +1,33 @@
1
1
  'use server';
2
2
 
3
- import {client} from '@/lib/vendure/api';
3
+ import { roleAtLeast } from '@/components/commerce/shared-cart-role';
4
+ import { readFragment, type ResultOf } from '@/graphql';
5
+ import { getActiveCustomer } from '@/lib/vendure/actions';
6
+ import { client } from '@/lib/vendure/api';
7
+ import { CompanyUserFragment } from '@/lib/vendure/fragments';
4
8
  import {
5
- CreateSharedCartMutation,
6
- UpdateSharedCartMutation,
7
- DeleteSharedCartMutation,
8
9
  AddItemToSharedCartMutation,
10
+ AddSharedCartMemberMutation,
9
11
  AdjustSharedCartLineMutation,
12
+ CreateSharedCartMutation,
13
+ DeleteSharedCartMutation,
14
+ InitiateSharedCartCheckoutMutation,
10
15
  RemoveSharedCartLineMutation,
11
- AddSharedCartMemberMutation,
12
16
  RemoveSharedCartMemberMutation,
13
17
  SetSharedCartMemberRoleMutation,
14
18
  TransferSharedCartOwnershipMutation,
15
- InitiateSharedCartCheckoutMutation,
19
+ UpdateSharedCartMutation,
16
20
  } from '@/lib/vendure/mutations';
17
- import {GetSharedCartQuery, GetMySharedCartsQuery, SearchVariantsQuery, GetShopCompanyUsersQuery} from '@/lib/vendure/queries';
18
- import {CompanyUserFragment} from '@/lib/vendure/fragments';
19
- import {getActiveCustomer} from '@/lib/vendure/actions';
20
- import {roleAtLeast} from '@/components/commerce/shared-cart-role';
21
- import {readFragment, type ResultOf} from '@/graphql';
22
- import {revalidatePath, updateTag} from 'next/cache';
21
+ import {
22
+ GetMySharedCartsQuery,
23
+ GetSharedCartQuery,
24
+ GetShopCompanyUsersQuery,
25
+ SearchVariantsQuery,
26
+ } from '@/lib/vendure/queries';
27
+ import { revalidatePath, updateTag } from 'next/cache';
23
28
 
24
29
  export type SharedCartRole = 'view' | 'edit' | 'checkout';
25
- type ActionResult = {success: boolean; message?: string; id?: string};
30
+ type ActionResult = { success: boolean; message?: string; id?: string };
26
31
 
27
32
  function invalidateCart() {
28
33
  updateTag('cart');
@@ -39,7 +44,7 @@ function revalidateCart(id: string) {
39
44
  export type SharedCartData = NonNullable<ResultOf<typeof GetSharedCartQuery>['sharedCart']>;
40
45
 
41
46
  export async function fetchSharedCart(id: string): Promise<SharedCartData | null> {
42
- const [result, error] = await client.query(GetSharedCartQuery, {id});
47
+ const [result, error] = await client.query(GetSharedCartQuery, { id });
43
48
  if (error) return null;
44
49
  return result.data.sharedCart ?? null;
45
50
  }
@@ -48,11 +53,11 @@ export async function fetchSharedCart(id: string): Promise<SharedCartData | null
48
53
 
49
54
  export async function createSharedCart(name: string, description?: string): Promise<ActionResult> {
50
55
  const [result, error] = await client.mutate(CreateSharedCartMutation, {
51
- input: {name, description: description || undefined},
56
+ input: { name, description: description || undefined },
52
57
  });
53
- if (error) return {success: false, message: error.message};
58
+ if (error) return { success: false, message: error.message };
54
59
  revalidatePath('/account/shared-carts');
55
- return {success: true, id: result.data.createSharedCart.id};
60
+ return { success: true, id: result.data.createSharedCart.id };
56
61
  }
57
62
 
58
63
  /**
@@ -64,7 +69,7 @@ export async function createSharedCart(name: string, description?: string): Prom
64
69
  export async function shareMyCart(
65
70
  name: string,
66
71
  description: string | undefined,
67
- lines: Array<{productVariantId: string; quantity: number}>,
72
+ lines: Array<{ productVariantId: string; quantity: number }>,
68
73
  ): Promise<ActionResult> {
69
74
  const created = await createSharedCart(name, description);
70
75
  if (!created.success || !created.id) return created;
@@ -75,36 +80,52 @@ export async function shareMyCart(
75
80
  quantity: line.quantity,
76
81
  });
77
82
  if (err) {
78
- return {success: false, message: `Cart created, but an item couldn't be copied: ${err.message}`, id: created.id};
83
+ return {
84
+ success: false,
85
+ message: `Cart created, but an item couldn't be copied: ${err.message}`,
86
+ id: created.id,
87
+ };
79
88
  }
80
89
  }
81
90
  revalidatePath('/account/shared-carts');
82
- return {success: true, id: created.id};
91
+ return { success: true, id: created.id };
83
92
  }
84
93
 
85
- export async function renameSharedCart(id: string, name: string, description?: string): Promise<ActionResult> {
94
+ export async function renameSharedCart(
95
+ id: string,
96
+ name: string,
97
+ description?: string,
98
+ ): Promise<ActionResult> {
86
99
  const [, error] = await client.mutate(UpdateSharedCartMutation, {
87
- input: {id, name, description: description || undefined},
100
+ input: { id, name, description: description || undefined },
88
101
  });
89
- if (error) return {success: false, message: error.message};
102
+ if (error) return { success: false, message: error.message };
90
103
  revalidateCart(id);
91
- return {success: true};
104
+ return { success: true };
92
105
  }
93
106
 
94
107
  export async function deleteSharedCart(id: string): Promise<ActionResult> {
95
- const [, error] = await client.mutate(DeleteSharedCartMutation, {id});
96
- if (error) return {success: false, message: error.message};
108
+ const [, error] = await client.mutate(DeleteSharedCartMutation, { id });
109
+ if (error) return { success: false, message: error.message };
97
110
  revalidatePath('/account/shared-carts');
98
- return {success: true};
111
+ return { success: true };
99
112
  }
100
113
 
101
114
  // --- Lines (role >= edit; server enforces) ---------------------------------
102
115
 
103
- export async function addItemToSharedCart(sharedCartId: string, productVariantId: string, quantity: number): Promise<ActionResult> {
104
- const [, error] = await client.mutate(AddItemToSharedCartMutation, {sharedCartId, productVariantId, quantity});
105
- if (error) return {success: false, message: error.message};
116
+ export async function addItemToSharedCart(
117
+ sharedCartId: string,
118
+ productVariantId: string,
119
+ quantity: number,
120
+ ): Promise<ActionResult> {
121
+ const [, error] = await client.mutate(AddItemToSharedCartMutation, {
122
+ sharedCartId,
123
+ productVariantId,
124
+ quantity,
125
+ });
126
+ if (error) return { success: false, message: error.message };
106
127
  revalidateCart(sharedCartId);
107
- return {success: true};
128
+ return { success: true };
108
129
  }
109
130
 
110
131
  /**
@@ -115,7 +136,7 @@ export async function addItemToSharedCart(sharedCartId: string, productVariantId
115
136
  */
116
137
  export async function addItemsToSharedCart(
117
138
  sharedCartId: string,
118
- lines: Array<{productVariantId: string; quantity: number}>,
139
+ lines: Array<{ productVariantId: string; quantity: number }>,
119
140
  ): Promise<ActionResult> {
120
141
  for (const line of lines) {
121
142
  const [, error] = await client.mutate(AddItemToSharedCartMutation, {
@@ -123,27 +144,31 @@ export async function addItemsToSharedCart(
123
144
  productVariantId: line.productVariantId,
124
145
  quantity: line.quantity,
125
146
  });
126
- if (error) return {success: false, message: error.message};
147
+ if (error) return { success: false, message: error.message };
127
148
  }
128
149
  revalidateCart(sharedCartId);
129
- return {success: true};
150
+ return { success: true };
130
151
  }
131
152
 
132
- export async function adjustSharedCartLine(sharedCartId: string, lineId: string, quantity: number): Promise<ActionResult> {
133
- const [, error] = await client.mutate(AdjustSharedCartLineMutation, {sharedCartId, lineId, quantity});
134
- if (error) return {success: false, message: error.message};
153
+ export async function adjustSharedCartLine(
154
+ sharedCartId: string,
155
+ lineId: string,
156
+ quantity: number,
157
+ ): Promise<ActionResult> {
158
+ const [, error] = await client.mutate(AdjustSharedCartLineMutation, { sharedCartId, lineId, quantity });
159
+ if (error) return { success: false, message: error.message };
135
160
  revalidateCart(sharedCartId);
136
- return {success: true};
161
+ return { success: true };
137
162
  }
138
163
 
139
164
  export async function removeSharedCartLine(sharedCartId: string, lineId: string): Promise<ActionResult> {
140
- const [, error] = await client.mutate(RemoveSharedCartLineMutation, {sharedCartId, lineId});
141
- if (error) return {success: false, message: error.message};
165
+ const [, error] = await client.mutate(RemoveSharedCartLineMutation, { sharedCartId, lineId });
166
+ if (error) return { success: false, message: error.message };
142
167
  revalidateCart(sharedCartId);
143
- return {success: true};
168
+ return { success: true };
144
169
  }
145
170
 
146
- export type EditableSharedCart = {id: string; name: string};
171
+ export type EditableSharedCart = { id: string; name: string };
147
172
 
148
173
  /**
149
174
  * Open carts the viewer can add items to (owner, or member with role >= edit).
@@ -152,15 +177,15 @@ export type EditableSharedCart = {id: string; name: string};
152
177
  export async function fetchEditableOpenSharedCarts(): Promise<EditableSharedCart[]> {
153
178
  const [customer, [result, error]] = await Promise.all([
154
179
  getActiveCustomer(),
155
- client.query(GetMySharedCartsQuery, {options: {take: 100, filter: {status: {eq: 'Open'}}}}),
180
+ client.query(GetMySharedCartsQuery, { options: { take: 100, filter: { status: { eq: 'Open' } } } }),
156
181
  ]);
157
182
  if (!customer || error) return [];
158
183
  return result.data.mySharedCarts.items
159
- .filter(cart => {
184
+ .filter((cart) => {
160
185
  if (cart.owner.id === customer.id) return true;
161
- return roleAtLeast(cart.members.find(m => m.customer.id === customer.id)?.role, 'edit');
186
+ return roleAtLeast(cart.members.find((m) => m.customer.id === customer.id)?.role, 'edit');
162
187
  })
163
- .map(cart => ({id: cart.id, name: cart.name}));
188
+ .map((cart) => ({ id: cart.id, name: cart.name }));
164
189
  }
165
190
 
166
191
  export type VariantSearchResult = {
@@ -176,18 +201,18 @@ export type VariantSearchResult = {
176
201
 
177
202
  export async function searchVariantsForSharedCart(term: string): Promise<VariantSearchResult[]> {
178
203
  const [result, error] = await client.query(SearchVariantsQuery, {
179
- input: {term: term.trim(), take: 10, groupByProduct: false},
204
+ input: { term: term.trim(), take: 10, groupByProduct: false },
180
205
  });
181
206
  if (error) return [];
182
207
  return result.data.search.items
183
- .filter(item => item.price.__typename === 'SinglePrice')
184
- .map(item => ({
208
+ .filter((item) => item.price.__typename === 'SinglePrice')
209
+ .map((item) => ({
185
210
  productVariantId: item.productVariantId,
186
211
  productName: item.productName,
187
212
  variantName: item.productVariantName,
188
213
  sku: item.sku,
189
214
  imageUrl: item.productAsset?.preview ?? undefined,
190
- price: (item.price as {__typename: 'SinglePrice'; value: number}).value,
215
+ price: (item.price as { __typename: 'SinglePrice'; value: number }).value,
191
216
  currencyCode: item.currencyCode,
192
217
  inStock: item.inStock,
193
218
  }));
@@ -206,8 +231,8 @@ export async function fetchCompanyMembers(): Promise<CompanyMemberOption[]> {
206
231
  const [result, error] = await client.query(GetShopCompanyUsersQuery, {});
207
232
  if (error) return [];
208
233
  return result.data.shopCompanyUsers
209
- .map(user => readFragment(CompanyUserFragment, user))
210
- .map(user => ({
234
+ .map((user) => readFragment(CompanyUserFragment, user))
235
+ .map((user) => ({
211
236
  customerId: user.customer.id,
212
237
  firstName: user.customer.firstName,
213
238
  lastName: user.customer.lastName,
@@ -215,33 +240,53 @@ export async function fetchCompanyMembers(): Promise<CompanyMemberOption[]> {
215
240
  }));
216
241
  }
217
242
 
218
-
219
- export async function addSharedCartMember(sharedCartId: string, customerId: string, role: SharedCartRole): Promise<ActionResult> {
220
- const [, error] = await client.mutate(AddSharedCartMemberMutation, {input: {sharedCartId, customerId, role}});
221
- if (error) return {success: false, message: error.message};
243
+ export async function addSharedCartMember(
244
+ sharedCartId: string,
245
+ customerId: string,
246
+ role: SharedCartRole,
247
+ ): Promise<ActionResult> {
248
+ const [, error] = await client.mutate(AddSharedCartMemberMutation, {
249
+ input: { sharedCartId, customerId, role },
250
+ });
251
+ if (error) return { success: false, message: error.message };
222
252
  revalidateCart(sharedCartId);
223
- return {success: true};
253
+ return { success: true };
224
254
  }
225
255
 
226
- export async function removeSharedCartMember(sharedCartId: string, customerId: string): Promise<ActionResult> {
227
- const [, error] = await client.mutate(RemoveSharedCartMemberMutation, {sharedCartId, customerId});
228
- if (error) return {success: false, message: error.message};
256
+ export async function removeSharedCartMember(
257
+ sharedCartId: string,
258
+ customerId: string,
259
+ ): Promise<ActionResult> {
260
+ const [, error] = await client.mutate(RemoveSharedCartMemberMutation, { sharedCartId, customerId });
261
+ if (error) return { success: false, message: error.message };
229
262
  revalidateCart(sharedCartId);
230
- return {success: true};
263
+ return { success: true };
231
264
  }
232
265
 
233
- export async function setSharedCartMemberRole(sharedCartId: string, customerId: string, role: SharedCartRole): Promise<ActionResult> {
234
- const [, error] = await client.mutate(SetSharedCartMemberRoleMutation, {input: {sharedCartId, customerId, role}});
235
- if (error) return {success: false, message: error.message};
266
+ export async function setSharedCartMemberRole(
267
+ sharedCartId: string,
268
+ customerId: string,
269
+ role: SharedCartRole,
270
+ ): Promise<ActionResult> {
271
+ const [, error] = await client.mutate(SetSharedCartMemberRoleMutation, {
272
+ input: { sharedCartId, customerId, role },
273
+ });
274
+ if (error) return { success: false, message: error.message };
236
275
  revalidateCart(sharedCartId);
237
- return {success: true};
276
+ return { success: true };
238
277
  }
239
278
 
240
- export async function transferSharedCartOwnership(sharedCartId: string, newOwnerCustomerId: string): Promise<ActionResult> {
241
- const [, error] = await client.mutate(TransferSharedCartOwnershipMutation, {sharedCartId, newOwnerCustomerId});
242
- if (error) return {success: false, message: error.message};
279
+ export async function transferSharedCartOwnership(
280
+ sharedCartId: string,
281
+ newOwnerCustomerId: string,
282
+ ): Promise<ActionResult> {
283
+ const [, error] = await client.mutate(TransferSharedCartOwnershipMutation, {
284
+ sharedCartId,
285
+ newOwnerCustomerId,
286
+ });
287
+ if (error) return { success: false, message: error.message };
243
288
  revalidateCart(sharedCartId);
244
- return {success: true};
289
+ return { success: true };
245
290
  }
246
291
 
247
292
  // --- Checkout hand-off (role >= checkout; server enforces) -----------------
@@ -252,9 +297,9 @@ export async function transferSharedCartOwnership(sharedCartId: string, newOwner
252
297
  * company requires it, runs through the existing approval UI.
253
298
  */
254
299
  export async function initiateSharedCartCheckout(sharedCartId: string): Promise<ActionResult> {
255
- const [, error] = await client.mutate(InitiateSharedCartCheckoutMutation, {sharedCartId});
256
- if (error) return {success: false, message: error.message};
300
+ const [, error] = await client.mutate(InitiateSharedCartCheckoutMutation, { sharedCartId });
301
+ if (error) return { success: false, message: error.message };
257
302
  invalidateCart();
258
303
  revalidateCart(sharedCartId);
259
- return {success: true};
304
+ return { success: true };
260
305
  }
@@ -1,20 +1,20 @@
1
1
  'use client';
2
2
 
3
- import {useState, useTransition} from 'react';
4
- import {useRouter} from '@/i18n/navigation';
5
- import {toast} from 'sonner';
6
- import {Button} from '@/components/ui/button';
7
- import {Input} from '@/components/ui/input';
8
- import {Textarea} from '@/components/ui/textarea';
9
- import {Label} from '@/components/ui/label';
10
- import {Loader2} from 'lucide-react';
11
- import {createSharedCart} from '../actions';
3
+ import { Button } from '@/components/ui/button';
4
+ import { Input } from '@/components/ui/input';
5
+ import { Label } from '@/components/ui/label';
6
+ import { Textarea } from '@/components/ui/textarea';
7
+ import { useRouter } from '@/i18n/navigation';
8
+ import { Loader2 } from 'lucide-react';
9
+ import { useState, useTransition } from 'react';
10
+ import { toast } from 'sonner';
11
+ import { createSharedCart } from '../actions';
12
12
 
13
13
  interface NewSharedCartFormProps {
14
14
  defaultName: string;
15
15
  }
16
16
 
17
- export function NewSharedCartForm({defaultName}: NewSharedCartFormProps) {
17
+ export function NewSharedCartForm({ defaultName }: NewSharedCartFormProps) {
18
18
  const router = useRouter();
19
19
  const [name, setName] = useState(defaultName);
20
20
  const [description, setDescription] = useState('');
@@ -42,13 +42,15 @@ export function NewSharedCartForm({defaultName}: NewSharedCartFormProps) {
42
42
  <Input
43
43
  id="shared-cart-name"
44
44
  value={name}
45
- onChange={e => setName(e.target.value)}
45
+ onChange={(e) => setName(e.target.value)}
46
46
  placeholder="e.g. Q3 office supplies"
47
47
  autoFocus
48
48
  maxLength={255}
49
49
  required
50
50
  />
51
- <p className="text-xs text-muted-foreground">Give the cart a name your colleagues will recognise.</p>
51
+ <p className="text-xs text-muted-foreground">
52
+ Give the cart a name your colleagues will recognise.
53
+ </p>
52
54
  </div>
53
55
 
54
56
  <div className="space-y-2">
@@ -56,7 +58,7 @@ export function NewSharedCartForm({defaultName}: NewSharedCartFormProps) {
56
58
  <Textarea
57
59
  id="shared-cart-description"
58
60
  value={description}
59
- onChange={e => setDescription(e.target.value)}
61
+ onChange={(e) => setDescription(e.target.value)}
60
62
  placeholder="What is this cart for?"
61
63
  rows={3}
62
64
  maxLength={1000}
@@ -68,7 +70,12 @@ export function NewSharedCartForm({defaultName}: NewSharedCartFormProps) {
68
70
  {isPending && <Loader2 className="h-4 w-4 mr-2 animate-spin" />}
69
71
  Create shared cart
70
72
  </Button>
71
- <Button type="button" variant="ghost" onClick={() => router.push('/account/shared-carts')} disabled={isPending}>
73
+ <Button
74
+ type="button"
75
+ variant="ghost"
76
+ onClick={() => router.push('/account/shared-carts')}
77
+ disabled={isPending}
78
+ >
72
79
  Cancel
73
80
  </Button>
74
81
  </div>
@@ -1,13 +1,13 @@
1
- import type {Metadata} from 'next';
2
- import {client} from '@/lib/vendure/api';
3
- import {readFragment} from '@/graphql';
4
- import {GetActiveCustomerQuery} from '@/lib/vendure/queries';
5
- import {ActiveCustomerFragment} from '@/lib/vendure/fragments';
6
- import {getCompanyAccount} from '@/lib/vendure/actions';
7
- import {canCreateSharedCarts} from '@/components/commerce/shared-cart-role';
8
- import {redirect, Link} from '@/i18n/navigation';
9
- import {ArrowLeft} from 'lucide-react';
10
- import {NewSharedCartForm} from './new-shared-cart-form';
1
+ import { canCreateSharedCarts } from '@/components/commerce/shared-cart-role';
2
+ import { readFragment } from '@/graphql';
3
+ import { Link, redirect } from '@/i18n/navigation';
4
+ import { getCompanyAccount } from '@/lib/vendure/actions';
5
+ import { client } from '@/lib/vendure/api';
6
+ import { ActiveCustomerFragment } from '@/lib/vendure/fragments';
7
+ import { GetActiveCustomerQuery } from '@/lib/vendure/queries';
8
+ import { ArrowLeft } from 'lucide-react';
9
+ import type { Metadata } from 'next';
10
+ import { NewSharedCartForm } from './new-shared-cart-form';
11
11
 
12
12
  export const metadata: Metadata = {
13
13
  title: 'New Shared Cart',