@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,8 +1,8 @@
1
1
  'use server';
2
2
 
3
- import {client} from '@/lib/vendure/api';
4
- import {ClaimStoreCreditMutation} from '@/lib/vendure/mutations';
5
- import {revalidatePath} from 'next/cache';
3
+ import { client } from '@/lib/vendure/api';
4
+ import { ClaimStoreCreditMutation } from '@/lib/vendure/mutations';
5
+ import { revalidatePath } from 'next/cache';
6
6
 
7
7
  export async function claimStoreCreditAction(
8
8
  prevState: { error?: string; success?: string } | undefined,
@@ -10,22 +10,22 @@ export async function claimStoreCreditAction(
10
10
  ) {
11
11
  const code = formData.get('code') as string;
12
12
  if (!code?.trim()) {
13
- return {error: 'Please enter a code'};
13
+ return { error: 'Please enter a code' };
14
14
  }
15
15
 
16
- const [result, error] = await client.mutate(ClaimStoreCreditMutation, {code: code.trim()});
16
+ const [result, error] = await client.mutate(ClaimStoreCreditMutation, { code: code.trim() });
17
17
 
18
18
  if (error) {
19
- return {error: 'An unexpected error occurred. Please try again.'};
19
+ return { error: 'An unexpected error occurred. Please try again.' };
20
20
  }
21
21
 
22
22
  const data = result.data.claimStoreCredit;
23
23
 
24
24
  if (data.__typename !== 'StoreCredit') {
25
- return {error: data.message};
25
+ return { error: data.message };
26
26
  }
27
27
 
28
28
  revalidatePath('/account/store-credits');
29
29
  const label = data.type === 'GiftCard' ? 'Gift card' : 'Store credit';
30
- return {success: `${label} claimed successfully!`};
30
+ return { success: `${label} claimed successfully!` };
31
31
  }
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
- import {useActionState, useRef, useEffect} from 'react';
4
- import {claimStoreCreditAction} from './actions';
5
- import {Button} from '@/components/ui/button';
6
- import {Input} from '@/components/ui/input';
3
+ import { Button } from '@/components/ui/button';
4
+ import { Input } from '@/components/ui/input';
5
+ import { useActionState, useEffect, useRef } from 'react';
6
+ import { claimStoreCreditAction } from './actions';
7
7
 
8
8
  export function ClaimStoreCreditForm() {
9
9
  const [state, formAction, isPending] = useActionState(claimStoreCreditAction, undefined);
@@ -30,12 +30,8 @@ export function ClaimStoreCreditForm() {
30
30
  {isPending ? 'Claiming...' : 'Claim'}
31
31
  </Button>
32
32
  </form>
33
- {state?.error && (
34
- <p className="text-sm text-destructive">{state.error}</p>
35
- )}
36
- {state?.success && (
37
- <p className="text-sm text-green-600">{state.success}</p>
38
- )}
33
+ {state?.error && <p className="text-sm text-destructive">{state.error}</p>}
34
+ {state?.success && <p className="text-sm text-green-600">{state.success}</p>}
39
35
  </div>
40
36
  );
41
37
  }
@@ -1,20 +1,7 @@
1
- import type {Metadata} from 'next';
2
- import {Suspense} from 'react';
3
- import {client} from '@/lib/vendure/api';
4
- import {GetMyStoreCreditsQuery} from '@/lib/vendure/queries';
5
- import {getActiveCustomer} from '@/lib/vendure/actions';
6
- import {redirect} from '@/i18n/navigation';
7
- import {ErrorState} from '@/components/shared/error-state';
8
- import {Badge} from '@/components/ui/badge';
9
- import {Card, CardContent, CardHeader, CardTitle} from '@/components/ui/card';
10
- import {
11
- Table,
12
- TableBody,
13
- TableCell,
14
- TableHead,
15
- TableHeader,
16
- TableRow,
17
- } from '@/components/ui/table';
1
+ import { Price } from '@/components/commerce/price';
2
+ import { ErrorState } from '@/components/shared/error-state';
3
+ import { Badge } from '@/components/ui/badge';
4
+ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
18
5
  import {
19
6
  Pagination,
20
7
  PaginationContent,
@@ -24,12 +11,18 @@ import {
24
11
  PaginationNext,
25
12
  PaginationPrevious,
26
13
  } from '@/components/ui/pagination';
27
- import {Price} from '@/components/commerce/price';
28
- import {formatDate} from '@/lib/format';
29
- import {getTranslations, setRequestLocale} from 'next-intl/server';
30
- import {noIndexRobots} from '@/lib/metadata';
31
- import {RevealCode} from './reveal-code';
32
- import {ClaimStoreCreditForm} from './claim-form';
14
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
15
+ import { redirect } from '@/i18n/navigation';
16
+ import { formatDate } from '@/lib/format';
17
+ import { noIndexRobots } from '@/lib/metadata';
18
+ import { getActiveCustomer } from '@/lib/vendure/actions';
19
+ import { client } from '@/lib/vendure/api';
20
+ import { GetMyStoreCreditsQuery } from '@/lib/vendure/queries';
21
+ import type { Metadata } from 'next';
22
+ import { getTranslations, setRequestLocale } from 'next-intl/server';
23
+ import { Suspense } from 'react';
24
+ import { ClaimStoreCreditForm } from './claim-form';
25
+ import { RevealCode } from './reveal-code';
33
26
 
34
27
  export const metadata: Metadata = {
35
28
  title: 'Store Credits',
@@ -38,25 +31,34 @@ export const metadata: Metadata = {
38
31
 
39
32
  const ITEMS_PER_PAGE = 10;
40
33
 
41
- export default async function StoreCreditsPage(
42
- props: {params: Promise<{locale: string}>; searchParams: Promise<Record<string, string | string[] | undefined>>},
43
- ) {
34
+ export default async function StoreCreditsPage(props: {
35
+ params: Promise<{ locale: string }>;
36
+ searchParams: Promise<Record<string, string | string[] | undefined>>;
37
+ }) {
44
38
  return (
45
- <Suspense fallback={<div><h1 className="text-3xl font-bold mb-6">Store Credits</h1><p className="text-sm text-muted-foreground">Loading...</p></div>}>
39
+ <Suspense
40
+ fallback={
41
+ <div>
42
+ <h1 className="text-3xl font-bold mb-6">Store Credits</h1>
43
+ <p className="text-sm text-muted-foreground">Loading...</p>
44
+ </div>
45
+ }
46
+ >
46
47
  <StoreCreditsContent params={props.params} searchParamsPromise={props.searchParams} />
47
48
  </Suspense>
48
49
  );
49
50
  }
50
51
 
51
- async function StoreCreditsContent(
52
- {params, searchParamsPromise}: {params: Promise<{locale: string}>; searchParamsPromise: Promise<Record<string, string | string[] | undefined>>},
53
- ) {
54
- const {locale} = await params;
52
+ async function StoreCreditsContent({
53
+ params,
54
+ searchParamsPromise,
55
+ }: {
56
+ params: Promise<{ locale: string }>;
57
+ searchParamsPromise: Promise<Record<string, string | string[] | undefined>>;
58
+ }) {
59
+ const { locale } = await params;
55
60
  setRequestLocale(locale);
56
- const [t, activeCustomer] = await Promise.all([
57
- getTranslations('StoreCredits'),
58
- getActiveCustomer(),
59
- ]);
61
+ const [t, activeCustomer] = await Promise.all([getTranslations('StoreCredits'), getActiveCustomer()]);
60
62
  if (!activeCustomer) {
61
63
  await redirect('/sign-in');
62
64
  }
@@ -66,20 +68,17 @@ async function StoreCreditsContent(
66
68
  const currentPage = parseInt(Array.isArray(pageParam) ? pageParam[0] : pageParam || '1', 10);
67
69
  const skip = (currentPage - 1) * ITEMS_PER_PAGE;
68
70
 
69
- const [result, error] = await client.query(
70
- GetMyStoreCreditsQuery,
71
- {options: {take: ITEMS_PER_PAGE, skip, sort: {createdAt: 'DESC'}}},
72
- );
71
+ const [result, error] = await client.query(GetMyStoreCreditsQuery, {
72
+ options: { take: ITEMS_PER_PAGE, skip, sort: { createdAt: 'DESC' } },
73
+ });
73
74
  if (error) {
74
- return (
75
- <ErrorState message="We couldn't load your store credits. Please try again later." />
76
- );
75
+ return <ErrorState message="We couldn't load your store credits. Please try again later." />;
77
76
  }
78
- const {data} = result;
77
+ const { data } = result;
79
78
  const credits = data.myStoreCredits?.items ?? [];
80
79
  const totalItems = data.myStoreCredits?.totalItems ?? 0;
81
80
  const totalPages = Math.ceil(totalItems / ITEMS_PER_PAGE);
82
- const hasCompanyCredits = credits.some(c => c.issuedTo?.id !== activeCustomer?.id);
81
+ const hasCompanyCredits = credits.some((c) => c.issuedTo?.id !== activeCustomer?.id);
83
82
 
84
83
  return (
85
84
  <div>
@@ -119,7 +118,9 @@ async function StoreCreditsContent(
119
118
  </TableCell>
120
119
  <TableCell>
121
120
  <Badge variant={credit.type === 'GiftCard' ? 'default' : 'secondary'}>
122
- {credit.type === 'GiftCard' ? t('typeGiftCard') : t('typeStoreCredit')}
121
+ {credit.type === 'GiftCard'
122
+ ? t('typeGiftCard')
123
+ : t('typeStoreCredit')}
123
124
  </Badge>
124
125
  </TableCell>
125
126
  {hasCompanyCredits && (
@@ -127,12 +128,15 @@ async function StoreCreditsContent(
127
128
  {credit.issuedTo?.id === activeCustomer?.id
128
129
  ? t('ownerYou')
129
130
  : credit.issuedTo
130
- ? `${credit.issuedTo.firstName} ${credit.issuedTo.lastName}`
131
- : '—'}
131
+ ? `${credit.issuedTo.firstName} ${credit.issuedTo.lastName}`
132
+ : '—'}
132
133
  </TableCell>
133
134
  )}
134
135
  <TableCell className="text-right">
135
- <Price value={credit.initialValue} currencyCode={credit.currencyCode} />
136
+ <Price
137
+ value={credit.initialValue}
138
+ currencyCode={credit.currencyCode}
139
+ />
136
140
  </TableCell>
137
141
  <TableCell className="text-right font-medium">
138
142
  <Price value={credit.balance} currencyCode={credit.currencyCode} />
@@ -153,15 +157,26 @@ async function StoreCreditsContent(
153
157
  <PaginationContent>
154
158
  <PaginationItem>
155
159
  <PaginationPrevious
156
- href={currentPage > 1 ? `/account/store-credits?page=${currentPage - 1}` : '#'}
160
+ href={
161
+ currentPage > 1
162
+ ? `/account/store-credits?page=${currentPage - 1}`
163
+ : '#'
164
+ }
157
165
  className={currentPage === 1 ? 'pointer-events-none opacity-50' : ''}
158
166
  />
159
167
  </PaginationItem>
160
- {Array.from({length: totalPages}, (_, i) => i + 1).map((page) => {
161
- if (page === 1 || page === totalPages || (page >= currentPage - 1 && page <= currentPage + 1)) {
168
+ {Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => {
169
+ if (
170
+ page === 1 ||
171
+ page === totalPages ||
172
+ (page >= currentPage - 1 && page <= currentPage + 1)
173
+ ) {
162
174
  return (
163
175
  <PaginationItem key={page}>
164
- <PaginationLink href={`/account/store-credits?page=${page}`} isActive={page === currentPage}>
176
+ <PaginationLink
177
+ href={`/account/store-credits?page=${page}`}
178
+ isActive={page === currentPage}
179
+ >
165
180
  {page}
166
181
  </PaginationLink>
167
182
  </PaginationItem>
@@ -169,7 +184,7 @@ async function StoreCreditsContent(
169
184
  } else if (page === currentPage - 2 || page === currentPage + 2) {
170
185
  return (
171
186
  <PaginationItem key={page}>
172
- <PaginationEllipsis/>
187
+ <PaginationEllipsis />
173
188
  </PaginationItem>
174
189
  );
175
190
  }
@@ -177,8 +192,14 @@ async function StoreCreditsContent(
177
192
  })}
178
193
  <PaginationItem>
179
194
  <PaginationNext
180
- href={currentPage < totalPages ? `/account/store-credits?page=${currentPage + 1}` : '#'}
181
- className={currentPage === totalPages ? 'pointer-events-none opacity-50' : ''}
195
+ href={
196
+ currentPage < totalPages
197
+ ? `/account/store-credits?page=${currentPage + 1}`
198
+ : '#'
199
+ }
200
+ className={
201
+ currentPage === totalPages ? 'pointer-events-none opacity-50' : ''
202
+ }
182
203
  />
183
204
  </PaginationItem>
184
205
  </PaginationContent>
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
 
3
- import {useState} from 'react';
4
- import {Eye, Copy, Check} from 'lucide-react';
5
- import {Button} from '@/components/ui/button';
6
- import {maskCode} from '@/lib/format';
3
+ import { Button } from '@/components/ui/button';
4
+ import { maskCode } from '@/lib/format';
5
+ import { Check, Copy, Eye } from 'lucide-react';
6
+ import { useState } from 'react';
7
7
 
8
- export function RevealCode({code}: { code: string }) {
8
+ export function RevealCode({ code }: { code: string }) {
9
9
  const [revealed, setRevealed] = useState(false);
10
10
  const [copied, setCopied] = useState(false);
11
11
 
@@ -30,7 +30,11 @@ export function RevealCode({code}: { code: string }) {
30
30
  </Button>
31
31
  ) : (
32
32
  <Button variant="ghost" size="icon" className="h-6 w-6" onClick={handleCopy}>
33
- {copied ? <Check className="h-3.5 w-3.5 text-green-600" /> : <Copy className="h-3.5 w-3.5" />}
33
+ {copied ? (
34
+ <Check className="h-3.5 w-3.5 text-green-600" />
35
+ ) : (
36
+ <Copy className="h-3.5 w-3.5" />
37
+ )}
34
38
  </Button>
35
39
  )}
36
40
  </span>
@@ -1,13 +1,16 @@
1
- import { Suspense } from 'react';
2
- import { redirect } from '@/i18n/navigation';
1
+ import { Button } from '@/components/ui/button';
2
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
3
+ import { Link } from '@/i18n/navigation';
3
4
  import { client } from '@/lib/vendure/api';
4
5
  import { UpdateCustomerEmailAddressMutation } from '@/lib/vendure/mutations';
5
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
6
- import { Button } from '@/components/ui/button';
7
- import {Link} from '@/i18n/navigation';
8
- import {getTranslations} from 'next-intl/server';
6
+ import { getTranslations } from 'next-intl/server';
7
+ import { Suspense } from 'react';
9
8
 
10
- async function VerifyEmailContent({searchParams}: {searchParams: Promise<Record<string, string | string[] | undefined>>}) {
9
+ async function VerifyEmailContent({
10
+ searchParams,
11
+ }: {
12
+ searchParams: Promise<Record<string, string | string[] | undefined>>;
13
+ }) {
11
14
  const t = await getTranslations('Account');
12
15
  const resolvedParams = await searchParams;
13
16
  const tokenParam = resolvedParams.token;
@@ -18,14 +21,10 @@ async function VerifyEmailContent({searchParams}: {searchParams: Promise<Record<
18
21
  <Card className="max-w-md mx-auto">
19
22
  <CardHeader>
20
23
  <CardTitle>{t('verifyEmail.invalidLink')}</CardTitle>
21
- <CardDescription>
22
- {t('verifyEmail.invalidLinkDesc')}
23
- </CardDescription>
24
+ <CardDescription>{t('verifyEmail.invalidLinkDesc')}</CardDescription>
24
25
  </CardHeader>
25
26
  <CardContent>
26
- <p className="text-sm text-muted-foreground mb-4">
27
- {t('verifyEmail.checkEmail')}
28
- </p>
27
+ <p className="text-sm text-muted-foreground mb-4">{t('verifyEmail.checkEmail')}</p>
29
28
  <Button asChild>
30
29
  <Link href="/account/profile">{t('verifyEmail.goToProfile')}</Link>
31
30
  </Button>
@@ -41,14 +40,10 @@ async function VerifyEmailContent({searchParams}: {searchParams: Promise<Record<
41
40
  <Card className="max-w-md mx-auto">
42
41
  <CardHeader>
43
42
  <CardTitle>{t('verifyEmail.error')}</CardTitle>
44
- <CardDescription>
45
- {t('verifyEmail.errorDesc')}
46
- </CardDescription>
43
+ <CardDescription>{t('verifyEmail.errorDesc')}</CardDescription>
47
44
  </CardHeader>
48
45
  <CardContent>
49
- <p className="text-sm text-muted-foreground mb-4">
50
- {t('verifyEmail.errorMessage')}
51
- </p>
46
+ <p className="text-sm text-muted-foreground mb-4">{t('verifyEmail.errorMessage')}</p>
52
47
  <Button asChild>
53
48
  <Link href="/account/profile">{t('verifyEmail.goToProfile')}</Link>
54
49
  </Button>
@@ -64,14 +59,10 @@ async function VerifyEmailContent({searchParams}: {searchParams: Promise<Record<
64
59
  <Card className="max-w-md mx-auto">
65
60
  <CardHeader>
66
61
  <CardTitle>{t('verifyEmail.success')}</CardTitle>
67
- <CardDescription>
68
- {t('verifyEmail.successDesc')}
69
- </CardDescription>
62
+ <CardDescription>{t('verifyEmail.successDesc')}</CardDescription>
70
63
  </CardHeader>
71
64
  <CardContent>
72
- <p className="text-sm text-muted-foreground mb-4">
73
- {t('verifyEmail.successMessage')}
74
- </p>
65
+ <p className="text-sm text-muted-foreground mb-4">{t('verifyEmail.successMessage')}</p>
75
66
  <Button asChild>
76
67
  <Link href="/account/profile">{t('verifyEmail.goToProfile')}</Link>
77
68
  </Button>
@@ -84,14 +75,10 @@ async function VerifyEmailContent({searchParams}: {searchParams: Promise<Record<
84
75
  <Card className="max-w-md mx-auto">
85
76
  <CardHeader>
86
77
  <CardTitle>{t('verifyEmail.failed')}</CardTitle>
87
- <CardDescription>
88
- {updateResult.message || t('verifyEmail.failedDefault')}
89
- </CardDescription>
78
+ <CardDescription>{updateResult.message || t('verifyEmail.failedDefault')}</CardDescription>
90
79
  </CardHeader>
91
80
  <CardContent>
92
- <p className="text-sm text-muted-foreground mb-4">
93
- {t('verifyEmail.failedMessage')}
94
- </p>
81
+ <p className="text-sm text-muted-foreground mb-4">{t('verifyEmail.failedMessage')}</p>
95
82
  <Button asChild>
96
83
  <Link href="/account/profile">{t('verifyEmail.goToProfile')}</Link>
97
84
  </Button>
@@ -100,16 +87,22 @@ async function VerifyEmailContent({searchParams}: {searchParams: Promise<Record<
100
87
  );
101
88
  }
102
89
 
103
- export default async function VerifyEmailPage({searchParams}: {searchParams: Promise<Record<string, string | string[] | undefined>>}) {
90
+ export default async function VerifyEmailPage({
91
+ searchParams,
92
+ }: {
93
+ searchParams: Promise<Record<string, string | string[] | undefined>>;
94
+ }) {
104
95
  return (
105
96
  <div className="container mx-auto px-4 py-8 mt-[var(--page-top-offset)]">
106
- <Suspense fallback={
107
- <Card className="max-w-md mx-auto">
108
- <CardHeader>
109
- <CardTitle>Verifying Email...</CardTitle>
110
- </CardHeader>
111
- </Card>
112
- }>
97
+ <Suspense
98
+ fallback={
99
+ <Card className="max-w-md mx-auto">
100
+ <CardHeader>
101
+ <CardTitle>Verifying Email...</CardTitle>
102
+ </CardHeader>
103
+ </Card>
104
+ }
105
+ >
113
106
  <VerifyEmailContent searchParams={searchParams} />
114
107
  </Suspense>
115
108
  </div>
@@ -1,19 +1,19 @@
1
1
  'use server';
2
2
 
3
- import {client} from '@/lib/vendure/api';
3
+ import { cartGuard } from '@/lib/cart-guard';
4
+ import { getGuardError } from '@/lib/cart-guard-utils';
5
+ import { normalizeQuantity } from '@/lib/quantity';
6
+ import { client } from '@/lib/vendure/api';
4
7
  import {
5
- RemoveFromCartMutation,
6
8
  AdjustCartItemMutation,
7
9
  ApplyPromotionCodeMutation,
8
- RemovePromotionCodeMutation,
9
10
  ApplyStoreCreditToOrderMutation,
10
- RemoveStoreCreditFromOrderMutation,
11
11
  RemoveConfigurationFromOrderMutation,
12
+ RemoveFromCartMutation,
13
+ RemovePromotionCodeMutation,
14
+ RemoveStoreCreditFromOrderMutation,
12
15
  } from '@/lib/vendure/mutations';
13
- import {normalizeQuantity} from '@/lib/quantity';
14
- import {updateTag} from 'next/cache';
15
- import {cartGuard} from '@/lib/cart-guard';
16
- import {getGuardError} from '@/lib/cart-guard-utils';
16
+ import { updateTag } from 'next/cache';
17
17
 
18
18
  function invalidateCart() {
19
19
  updateTag('cart');
@@ -25,7 +25,7 @@ export async function removeFromCart(lineId: string) {
25
25
  const guardError = getGuardError(guard);
26
26
  if (guardError) return { success: false, error: guardError };
27
27
 
28
- const [result, error] = await client.mutate(RemoveFromCartMutation, {lineId});
28
+ const [result, error] = await client.mutate(RemoveFromCartMutation, { lineId });
29
29
  if (error) {
30
30
  return { success: false, error: 'Failed to remove item from cart' };
31
31
  }
@@ -33,9 +33,12 @@ export async function removeFromCart(lineId: string) {
33
33
  const data = result.data.removeOrderLine;
34
34
  return {
35
35
  success: false,
36
- error: 'interceptorError' in data ? data.interceptorError
37
- : 'message' in data ? data.message
38
- : 'Failed to remove item',
36
+ error:
37
+ 'interceptorError' in data
38
+ ? data.interceptorError
39
+ : 'message' in data
40
+ ? data.message
41
+ : 'Failed to remove item',
39
42
  };
40
43
  }
41
44
  invalidateCart();
@@ -52,7 +55,7 @@ export async function removeConfigurationFromCart(productConfigurationId: string
52
55
  const guardError = getGuardError(guard);
53
56
  if (guardError) return { success: false, error: guardError };
54
57
 
55
- const [, error] = await client.mutate(RemoveConfigurationFromOrderMutation, {productConfigurationId});
58
+ const [, error] = await client.mutate(RemoveConfigurationFromOrderMutation, { productConfigurationId });
56
59
  if (error) {
57
60
  return { success: false, error: error.message || 'Failed to remove configuration from cart' };
58
61
  }
@@ -67,7 +70,7 @@ export async function adjustQuantity(lineId: string, quantity: number) {
67
70
 
68
71
  const nextQuantity = normalizeQuantity(quantity);
69
72
 
70
- const [result, error] = await client.mutate(AdjustCartItemMutation, {lineId, quantity: nextQuantity});
73
+ const [result, error] = await client.mutate(AdjustCartItemMutation, { lineId, quantity: nextQuantity });
71
74
 
72
75
  if (error) {
73
76
  return {
@@ -80,15 +83,18 @@ export async function adjustQuantity(lineId: string, quantity: number) {
80
83
  const data = result.data.adjustOrderLine;
81
84
  return {
82
85
  success: false,
83
- error: 'interceptorError' in data ? data.interceptorError
84
- : 'message' in data ? data.message
85
- : 'Failed to update cart quantity',
86
+ error:
87
+ 'interceptorError' in data
88
+ ? data.interceptorError
89
+ : 'message' in data
90
+ ? data.message
91
+ : 'Failed to update cart quantity',
86
92
  };
87
93
  }
88
94
 
89
95
  invalidateCart();
90
96
 
91
- return {success: true};
97
+ return { success: true };
92
98
  }
93
99
 
94
100
  export async function applyCode(code: string): Promise<{ success: boolean; error?: string }> {
@@ -98,14 +104,14 @@ export async function applyCode(code: string): Promise<{ success: boolean; error
98
104
  if (guardError) return { success: false, error: guardError };
99
105
 
100
106
  // Try coupon code first
101
- const [couponRes, couponError] = await client.mutate(ApplyPromotionCodeMutation, {couponCode: code});
107
+ const [couponRes, couponError] = await client.mutate(ApplyPromotionCodeMutation, { couponCode: code });
102
108
  if (!couponError && couponRes.data.applyCouponCode.__typename === 'Order') {
103
109
  invalidateCart();
104
110
  return { success: true };
105
111
  }
106
112
 
107
113
  // Fall back to store credit / gift card
108
- const [creditRes, creditError] = await client.mutate(ApplyStoreCreditToOrderMutation, {code});
114
+ const [creditRes, creditError] = await client.mutate(ApplyStoreCreditToOrderMutation, { code });
109
115
  if (creditError) {
110
116
  return { success: false, error: 'Invalid code. Please check and try again.' };
111
117
  }
@@ -122,7 +128,7 @@ export async function removePromotionCode(formData: FormData): Promise<void> {
122
128
  const guard = await cartGuard();
123
129
  if (getGuardError(guard)) return;
124
130
 
125
- await client.mutate(RemovePromotionCodeMutation, {couponCode: code});
131
+ await client.mutate(RemovePromotionCodeMutation, { couponCode: code });
126
132
  invalidateCart();
127
133
  }
128
134
 
@@ -132,7 +138,7 @@ export async function applyStoreCredit(formData: FormData): Promise<void> {
132
138
  const guard = await cartGuard();
133
139
  if (getGuardError(guard)) return;
134
140
 
135
- await client.mutate(ApplyStoreCreditToOrderMutation, {code});
141
+ await client.mutate(ApplyStoreCreditToOrderMutation, { code });
136
142
  invalidateCart();
137
143
  }
138
144
 
@@ -142,6 +148,6 @@ export async function removeStoreCredit(formData: FormData): Promise<void> {
142
148
  const guard = await cartGuard();
143
149
  if (getGuardError(guard)) return;
144
150
 
145
- await client.mutate(RemoveStoreCreditFromOrderMutation, {code});
151
+ await client.mutate(RemoveStoreCreditFromOrderMutation, { code });
146
152
  invalidateCart();
147
153
  }