@vtex/faststore 0.0.6 → 0.0.8

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 (488) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/dist/actions.json +152 -1
  3. package/dist/catalog.json +2541 -1278
  4. package/dist/cli/UnreachableCaseError-Crd168Vu.js +10 -0
  5. package/dist/cli/UnreachableCaseError-Crd168Vu.js.map +1 -0
  6. package/dist/cli/cacheControl-CEojH_TM.js +158 -0
  7. package/dist/cli/cacheControl-CEojH_TM.js.map +1 -0
  8. package/dist/cli/cachePolicy-m2vASMRW.js +26 -0
  9. package/dist/cli/cachePolicy-m2vASMRW.js.map +1 -0
  10. package/dist/cli/computeCoreSchemaHash-DPJZj-qJ.js +10 -0
  11. package/dist/cli/computeCoreSchemaHash-DPJZj-qJ.js.map +1 -0
  12. package/dist/cli/default-BCQHcwbL.js +253 -0
  13. package/dist/cli/default-BCQHcwbL.js.map +1 -0
  14. package/dist/cli/disableSuggestions-yO9UqiWn.js +21 -0
  15. package/dist/cli/disableSuggestions-yO9UqiWn.js.map +1 -0
  16. package/dist/cli/dist-C1JhdHfo.js +2001 -0
  17. package/dist/cli/dist-C1JhdHfo.js.map +1 -0
  18. package/dist/cli/graphql-DG9thCDG.js +14589 -0
  19. package/dist/cli/graphql-DG9thCDG.js.map +1 -0
  20. package/dist/cli/index.d.ts +799 -0
  21. package/dist/cli/index.js +36459 -0
  22. package/dist/cli/index.js.map +1 -0
  23. package/dist/cli/index.min-BsIHDfFK.js +613 -0
  24. package/dist/cli/index.min-BsIHDfFK.js.map +1 -0
  25. package/dist/cli/inlineTrace-uLgOJ3TH.js +52 -0
  26. package/dist/cli/inlineTrace-uLgOJ3TH.js.map +1 -0
  27. package/dist/cli/internalPlugin-DnuwN4_4.js +11 -0
  28. package/dist/cli/internalPlugin-DnuwN4_4.js.map +1 -0
  29. package/dist/cli/packageVersion-DQAnIEil.js +6 -0
  30. package/dist/cli/packageVersion-DQAnIEil.js.map +1 -0
  31. package/dist/cli/rolldown-runtime-BMI-E3GI.js +44 -0
  32. package/dist/cli/schemaIsSubgraph-DoGh3OYj.js +17 -0
  33. package/dist/cli/schemaIsSubgraph-DoGh3OYj.js.map +1 -0
  34. package/dist/cli/schemaReporting-K-me-3-v.js +199 -0
  35. package/dist/cli/schemaReporting-K-me-3-v.js.map +1 -0
  36. package/dist/cli/server-runtime.js +49879 -0
  37. package/dist/cli/server-runtime.js.map +1 -0
  38. package/dist/cli/traceTreeBuilder-BIcV2U7b.js +9118 -0
  39. package/dist/cli/traceTreeBuilder-BIcV2U7b.js.map +1 -0
  40. package/dist/cli/usageReporting-Bpl8vSZX.js +10201 -0
  41. package/dist/cli/usageReporting-Bpl8vSZX.js.map +1 -0
  42. package/dist/cli/v4-CBhFvC49.js +42 -0
  43. package/dist/cli/v4-CBhFvC49.js.map +1 -0
  44. package/dist/client.d.ts +5 -1
  45. package/dist/client.js +5 -1
  46. package/dist/components.d.ts +38 -9
  47. package/dist/components.js +42 -13
  48. package/dist/content-types.json +616 -0
  49. package/dist/core/dist/define-component.d.ts +43 -1
  50. package/dist/core/dist/index.d.ts +2 -2
  51. package/dist/docs/account-access-gate.md +4 -4
  52. package/dist/docs/account-address-book.md +519 -0
  53. package/dist/docs/account-entry-point.md +1 -1
  54. package/dist/docs/account-menu-identity.md +160 -0
  55. package/dist/docs/account-menu.md +107 -24
  56. package/dist/docs/alert-dialog.md +2 -2
  57. package/dist/docs/avatar.md +103 -0
  58. package/dist/docs/billing-address.md +17 -9
  59. package/dist/docs/card-entry.md +37 -6
  60. package/dist/docs/cardholder-document.md +16 -14
  61. package/dist/docs/cart-item.md +1 -1
  62. package/dist/docs/cart.md +8 -8
  63. package/dist/docs/client-profile-fieldset.md +7 -5
  64. package/dist/docs/copy-text.md +84 -0
  65. package/dist/docs/document-field.md +8 -8
  66. package/dist/docs/footer-link-group.md +2 -2
  67. package/dist/docs/header-root.md +1 -1
  68. package/dist/docs/incentives.md +2 -2
  69. package/dist/docs/logo.md +5 -5
  70. package/dist/docs/my-account-profile.md +5 -5
  71. package/dist/docs/navigation-link-list.md +2 -2
  72. package/dist/docs/navigation-link.md +3 -3
  73. package/dist/docs/order-cancel.md +52 -0
  74. package/dist/docs/order-delivery-address.md +63 -0
  75. package/dist/docs/order-delivery-group.md +83 -0
  76. package/dist/docs/order-details-back.md +41 -0
  77. package/dist/docs/order-details-header.md +48 -0
  78. package/dist/docs/order-list-row.md +46 -0
  79. package/dist/docs/order-list-search.md +101 -0
  80. package/dist/docs/order-list-views.md +97 -0
  81. package/dist/docs/order-list.md +94 -0
  82. package/dist/docs/order-payment.md +94 -0
  83. package/dist/docs/order-placed-date.md +49 -0
  84. package/dist/docs/order-placed-payment-summary.md +13 -15
  85. package/dist/docs/order-placed.md +225 -0
  86. package/dist/docs/order-progress.md +88 -0
  87. package/dist/docs/order-status-badge.md +91 -0
  88. package/dist/docs/order-summary.md +53 -0
  89. package/dist/docs/payment-method-badges.md +14 -3
  90. package/dist/docs/place-order.md +13 -9
  91. package/dist/docs/product-shelf.md +20 -13
  92. package/dist/docs/saved-cards.md +2 -2
  93. package/dist/docs/select.md +19 -6
  94. package/dist/docs/session.md +1 -1
  95. package/dist/docs/shipping-address.md +1 -1
  96. package/dist/docs/sign-in-redirect.md +6 -6
  97. package/dist/docs/toast.md +7 -3
  98. package/dist/index.d.ts +7 -3
  99. package/dist/index.js +2 -1
  100. package/dist/internal/client.d.ts +6 -1
  101. package/dist/internal/client.js +8 -3
  102. package/dist/internal/content.d.ts +2 -2
  103. package/dist/internal/server.d.ts +8 -1
  104. package/dist/internal/server.js +8 -1
  105. package/dist/matter/account-access-gate/account-access-gate.d.ts +2 -1
  106. package/dist/matter/account-access-gate/account-access-gate.js +19 -16
  107. package/dist/matter/account-access-gate/account-access-gate.js.map +1 -1
  108. package/dist/matter/account-address-book/account-address-book-delete.d.ts +60 -0
  109. package/dist/matter/account-address-book/account-address-book-delete.js +184 -0
  110. package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -0
  111. package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +19 -0
  112. package/dist/matter/account-address-book/account-address-book-deliverability.js +50 -0
  113. package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -0
  114. package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +42 -0
  115. package/dist/matter/account-address-book/account-address-book-form-parts.js +146 -0
  116. package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -0
  117. package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +25 -0
  118. package/dist/matter/account-address-book/account-address-book-profile-notice.js +72 -0
  119. package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -0
  120. package/dist/matter/account-address-book/account-address-book.d.ts +120 -0
  121. package/dist/matter/account-address-book/account-address-book.js +469 -0
  122. package/dist/matter/account-address-book/account-address-book.js.map +1 -0
  123. package/dist/matter/account-address-book/account-address-country-switch.js +59 -0
  124. package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -0
  125. package/dist/matter/account-address-book/account-address-country.d.ts +36 -0
  126. package/dist/matter/account-address-book/account-address-country.js +151 -0
  127. package/dist/matter/account-address-book/account-address-country.js.map +1 -0
  128. package/dist/matter/account-address-book/account-address-first-line.js +11 -0
  129. package/dist/matter/account-address-book/account-address-first-line.js.map +1 -0
  130. package/dist/matter/account-address-book/account-address-form-context.d.ts +55 -0
  131. package/dist/matter/account-address-book/account-address-form-context.js +14 -0
  132. package/dist/matter/account-address-book/account-address-form-context.js.map +1 -0
  133. package/dist/matter/account-address-book/account-address-form.d.ts +85 -0
  134. package/dist/matter/account-address-book/account-address-form.js +946 -0
  135. package/dist/matter/account-address-book/account-address-form.js.map +1 -0
  136. package/dist/matter/account-address-book/account-address-postal-autofill.js +189 -0
  137. package/dist/matter/account-address-book/account-address-postal-autofill.js.map +1 -0
  138. package/dist/matter/account-address-book/account-address-record.d.ts +26 -0
  139. package/dist/matter/account-address-book/account-address-record.js +138 -0
  140. package/dist/matter/account-address-book/account-address-record.js.map +1 -0
  141. package/dist/matter/account-entry-point/account-entry-point.js +11 -11
  142. package/dist/matter/account-entry-point/account-entry-point.js.map +1 -1
  143. package/dist/matter/account-menu/account-menu.d.ts +77 -3
  144. package/dist/matter/account-menu/account-menu.js +252 -19
  145. package/dist/matter/account-menu/account-menu.js.map +1 -1
  146. package/dist/matter/account-menu/sign-out-failure.js +50 -0
  147. package/dist/matter/account-menu/sign-out-failure.js.map +1 -0
  148. package/dist/matter/account-menu-identity/account-menu-identity.d.ts +21 -0
  149. package/dist/matter/account-menu-identity/account-menu-identity.js +88 -0
  150. package/dist/matter/account-menu-identity/account-menu-identity.js.map +1 -0
  151. package/dist/matter/billing-address/billing-address.d.ts +30 -17
  152. package/dist/matter/billing-address/billing-address.js +128 -33
  153. package/dist/matter/billing-address/billing-address.js.map +1 -1
  154. package/dist/matter/breadcrumb/breadcrumb.js +2 -2
  155. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
  156. package/dist/matter/card-entry/card-capture.js +4 -3
  157. package/dist/matter/card-entry/card-capture.js.map +1 -1
  158. package/dist/matter/card-entry/card-entry.d.ts +5 -3
  159. package/dist/matter/card-entry/card-entry.js +78 -27
  160. package/dist/matter/card-entry/card-entry.js.map +1 -1
  161. package/dist/matter/cardholder-document/cardholder-document.d.ts +10 -9
  162. package/dist/matter/cardholder-document/cardholder-document.js +36 -16
  163. package/dist/matter/cardholder-document/cardholder-document.js.map +1 -1
  164. package/dist/matter/cart/cart.d.ts +7 -2
  165. package/dist/matter/cart/cart.js +29 -26
  166. package/dist/matter/cart/cart.js.map +1 -1
  167. package/dist/matter/cart-item/cart-item.js +2 -2
  168. package/dist/matter/cart-item/cart-item.js.map +1 -1
  169. package/dist/matter/client-preferences/client-preferences-fieldset.js +2 -2
  170. package/dist/matter/client-profile-form/client-profile-fieldset.js +9 -6
  171. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
  172. package/dist/matter/identity-edit/identity-edit.js +3 -3
  173. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  174. package/dist/matter/identity-summary/identity-summary.js +4 -3
  175. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  176. package/dist/matter/my-account-profile/my-account-profile.d.ts +6 -3
  177. package/dist/matter/my-account-profile/my-account-profile.js +6 -5
  178. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  179. package/dist/matter/order-cancel/order-cancel.d.ts +110 -0
  180. package/dist/matter/order-cancel/order-cancel.js +344 -0
  181. package/dist/matter/order-cancel/order-cancel.js.map +1 -0
  182. package/dist/matter/order-delivery-address/order-delivery-address.d.ts +73 -0
  183. package/dist/matter/order-delivery-address/order-delivery-address.js +172 -0
  184. package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -0
  185. package/dist/matter/order-delivery-group/order-delivery-group.d.ts +128 -0
  186. package/dist/matter/order-delivery-group/order-delivery-group.js +408 -0
  187. package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -0
  188. package/dist/matter/order-details-header/order-details-header.d.ts +104 -0
  189. package/dist/matter/order-details-header/order-details-header.js +190 -0
  190. package/dist/matter/order-details-header/order-details-header.js.map +1 -0
  191. package/dist/matter/order-list/customer-orders-filter.d.ts +12 -0
  192. package/dist/matter/order-list/customer-orders-filter.js +30 -0
  193. package/dist/matter/order-list/customer-orders-filter.js.map +1 -0
  194. package/dist/matter/order-list/order-list.d.ts +121 -0
  195. package/dist/matter/order-list/order-list.js +395 -0
  196. package/dist/matter/order-list/order-list.js.map +1 -0
  197. package/dist/matter/order-list-row/order-list-row.d.ts +44 -0
  198. package/dist/matter/order-list-row/order-list-row.js +127 -0
  199. package/dist/matter/order-list-row/order-list-row.js.map +1 -0
  200. package/dist/matter/order-list-search/order-list-search.d.ts +72 -0
  201. package/dist/matter/order-list-search/order-list-search.js +296 -0
  202. package/dist/matter/order-list-search/order-list-search.js.map +1 -0
  203. package/dist/matter/order-list-views/order-list-views.d.ts +65 -0
  204. package/dist/matter/order-list-views/order-list-views.js +154 -0
  205. package/dist/matter/order-list-views/order-list-views.js.map +1 -0
  206. package/dist/matter/order-payment/order-payment.d.ts +83 -0
  207. package/dist/matter/order-payment/order-payment.js +258 -0
  208. package/dist/matter/order-payment/order-payment.js.map +1 -0
  209. package/dist/matter/order-placed/order-placed-deliveries.d.ts +145 -0
  210. package/dist/matter/order-placed/order-placed-deliveries.js +380 -0
  211. package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -0
  212. package/dist/matter/order-placed/order-placed.d.ts +122 -0
  213. package/dist/matter/order-placed/order-placed.js +452 -0
  214. package/dist/matter/order-placed/order-placed.js.map +1 -0
  215. package/dist/matter/order-placed-date/order-placed-date.d.ts +45 -0
  216. package/dist/matter/order-placed-date/order-placed-date.js +92 -0
  217. package/dist/matter/order-placed-date/order-placed-date.js.map +1 -0
  218. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +5 -8
  219. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +29 -81
  220. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
  221. package/dist/matter/order-progress/order-progress.d.ts +85 -0
  222. package/dist/matter/order-progress/order-progress.js +203 -0
  223. package/dist/matter/order-progress/order-progress.js.map +1 -0
  224. package/dist/matter/order-summary/order-summary.d.ts +81 -0
  225. package/dist/matter/order-summary/order-summary.js +192 -0
  226. package/dist/matter/order-summary/order-summary.js.map +1 -0
  227. package/dist/matter/payment/cardholder-document-rule.d.ts +35 -0
  228. package/dist/matter/payment/cardholder-document-rule.js +35 -0
  229. package/dist/matter/payment/cardholder-document-rule.js.map +1 -0
  230. package/dist/matter/payment/payment-card-capture.js +38 -23
  231. package/dist/matter/payment/payment-card-capture.js.map +1 -1
  232. package/dist/matter/payment/payment-controller.js +12 -0
  233. package/dist/matter/payment/payment-controller.js.map +1 -1
  234. package/dist/matter/payment/payment-method-badges.js +4 -2
  235. package/dist/matter/payment/payment-method-badges.js.map +1 -1
  236. package/dist/matter/payment/payment.js +12 -0
  237. package/dist/matter/payment/payment.js.map +1 -1
  238. package/dist/matter/payment/use-payment-method-selection.d.ts +39 -0
  239. package/dist/matter/payment/use-payment-method-selection.js +30 -2
  240. package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
  241. package/dist/matter/payment/use-payment-submit-gate.d.ts +16 -2
  242. package/dist/matter/payment/use-payment-submit-gate.js +42 -14
  243. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
  244. package/dist/matter/place-order/place-order.d.ts +12 -7
  245. package/dist/matter/place-order/place-order.js +126 -103
  246. package/dist/matter/place-order/place-order.js.map +1 -1
  247. package/dist/matter/pricing/pricing.js +5 -5
  248. package/dist/matter/pricing/pricing.js.map +1 -1
  249. package/dist/matter/product-shelf/product-shelf.d.ts +61 -31
  250. package/dist/matter/product-shelf/product-shelf.js +157 -57
  251. package/dist/matter/product-shelf/product-shelf.js.map +1 -1
  252. package/dist/matter/region/region.js +1 -1
  253. package/dist/matter/saved-cards/saved-cards.js +27 -15
  254. package/dist/matter/saved-cards/saved-cards.js.map +1 -1
  255. package/dist/matter/session/session.js +2 -2
  256. package/dist/matter/session/session.js.map +1 -1
  257. package/dist/matter/shipping-address/country-descriptors.d.ts +1 -0
  258. package/dist/matter/shipping-address/country-descriptors.js +23 -1
  259. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  260. package/dist/matter/shipping-address/shipping-address.js +63 -15
  261. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  262. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +1 -1
  263. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
  264. package/dist/matter/sign-in-redirect/sign-in-redirect.js +48 -10
  265. package/dist/matter/sign-in-redirect/sign-in-redirect.js.map +1 -1
  266. package/dist/matter/variant-selector/variant-selector.js +2 -2
  267. package/dist/matter/variant-selector/variant-selector.js.map +1 -1
  268. package/dist/particles/address-summary/address-summary.js +2 -2
  269. package/dist/particles/address-summary/address-summary.js.map +1 -1
  270. package/dist/particles/alert-dialog/alert-dialog.d.ts +5 -1
  271. package/dist/particles/alert-dialog/alert-dialog.js +5 -2
  272. package/dist/particles/alert-dialog/alert-dialog.js.map +1 -1
  273. package/dist/particles/avatar/avatar.d.ts +17 -0
  274. package/dist/particles/avatar/avatar.js +65 -0
  275. package/dist/particles/avatar/avatar.js.map +1 -0
  276. package/dist/particles/copy-text/copy-text.d.ts +28 -0
  277. package/dist/particles/copy-text/copy-text.js +140 -0
  278. package/dist/particles/copy-text/copy-text.js.map +1 -0
  279. package/dist/particles/document-field/document-field.d.ts +34 -5
  280. package/dist/particles/document-field/document-field.js +115 -19
  281. package/dist/particles/document-field/document-field.js.map +1 -1
  282. package/dist/particles/field/field.js +1 -1
  283. package/dist/particles/field/field.js.map +1 -1
  284. package/dist/particles/footer-link-group/footer-link-group.d.ts +6 -2
  285. package/dist/particles/footer-link-group/footer-link-group.js +18 -7
  286. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
  287. package/dist/particles/incentives/incentives.d.ts +6 -2
  288. package/dist/particles/incentives/incentives.js +7 -2
  289. package/dist/particles/incentives/incentives.js.map +1 -1
  290. package/dist/particles/logo/logo.d.ts +3 -2
  291. package/dist/particles/logo/logo.js +20 -8
  292. package/dist/particles/logo/logo.js.map +1 -1
  293. package/dist/particles/navigation-link/navigation-link.d.ts +2 -3
  294. package/dist/particles/navigation-link/navigation-link.js +4 -4
  295. package/dist/particles/navigation-link/navigation-link.js.map +1 -1
  296. package/dist/particles/navigation-link-list/navigation-link-list.d.ts +6 -2
  297. package/dist/particles/navigation-link-list/navigation-link-list.js +18 -7
  298. package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -1
  299. package/dist/particles/order-details-back/order-details-back.d.ts +28 -0
  300. package/dist/particles/order-details-back/order-details-back.js +52 -0
  301. package/dist/particles/order-details-back/order-details-back.js.map +1 -0
  302. package/dist/particles/order-status-badge/order-status-badge.d.ts +19 -0
  303. package/dist/particles/order-status-badge/order-status-badge.js +50 -0
  304. package/dist/particles/order-status-badge/order-status-badge.js.map +1 -0
  305. package/dist/particles/phone-field/phone-field.js +2 -2
  306. package/dist/particles/phone-field/phone-field.js.map +1 -1
  307. package/dist/particles/select/select.js +6 -6
  308. package/dist/particles/select/select.js.map +1 -1
  309. package/dist/particles/toast/toast.d.ts +1 -1
  310. package/dist/particles/toast/toast.js +32 -6
  311. package/dist/particles/toast/toast.js.map +1 -1
  312. package/dist/schema.graphql +1079 -54
  313. package/dist/sdk/actions/address-action-provider.d.ts +16 -0
  314. package/dist/sdk/actions/address-action-provider.js +20 -0
  315. package/dist/sdk/actions/address-action-provider.js.map +1 -0
  316. package/dist/sdk/actions/analytics-action-provider.js +1 -1
  317. package/dist/sdk/actions/index.d.ts +3 -1
  318. package/dist/sdk/actions/index.js +3 -1
  319. package/dist/sdk/actions/order-action-provider.d.ts +12 -0
  320. package/dist/sdk/actions/order-action-provider.js +16 -0
  321. package/dist/sdk/actions/order-action-provider.js.map +1 -0
  322. package/dist/sdk/actions/types.d.ts +6 -2
  323. package/dist/sdk/address/address-fields.js +38 -0
  324. package/dist/sdk/address/address-fields.js.map +1 -0
  325. package/dist/sdk/address/checkout-readiness.js +17 -0
  326. package/dist/sdk/address/checkout-readiness.js.map +1 -0
  327. package/dist/sdk/address/constants.js +60 -0
  328. package/dist/sdk/address/constants.js.map +1 -0
  329. package/dist/sdk/address/country-display.js +19 -0
  330. package/dist/sdk/address/country-display.js.map +1 -0
  331. package/dist/sdk/address/country-rules.js +30 -0
  332. package/dist/sdk/address/country-rules.js.map +1 -0
  333. package/dist/sdk/address/format-address.js +18 -0
  334. package/dist/sdk/address/format-address.js.map +1 -0
  335. package/dist/sdk/address/iso-countries.js +262 -0
  336. package/dist/sdk/address/iso-countries.js.map +1 -0
  337. package/dist/sdk/address/layouts.js +56 -0
  338. package/dist/sdk/address/layouts.js.map +1 -0
  339. package/dist/sdk/address/messages.js +97 -0
  340. package/dist/sdk/address/messages.js.map +1 -0
  341. package/dist/sdk/address/operations.d.ts +54 -0
  342. package/dist/sdk/address/operations.js +83 -0
  343. package/dist/sdk/address/operations.js.map +1 -0
  344. package/dist/sdk/address/postal-code-lookup-operations.js +23 -0
  345. package/dist/sdk/address/postal-code-lookup-operations.js.map +1 -0
  346. package/dist/sdk/address/postal-code.js +11 -0
  347. package/dist/sdk/address/postal-code.js.map +1 -0
  348. package/dist/sdk/address/schema.js +14 -0
  349. package/dist/sdk/address/schema.js.map +1 -0
  350. package/dist/sdk/address/server-fields.js +25 -0
  351. package/dist/sdk/address/server-fields.js.map +1 -0
  352. package/dist/sdk/address/switch-country.js +57 -0
  353. package/dist/sdk/address/switch-country.js.map +1 -0
  354. package/dist/sdk/address/types.d.ts +26 -0
  355. package/dist/sdk/address/use-address-actions.d.ts +29 -0
  356. package/dist/sdk/address/use-address-actions.js +247 -0
  357. package/dist/sdk/address/use-address-actions.js.map +1 -0
  358. package/dist/sdk/address/use-address-by-postal-code.js +57 -0
  359. package/dist/sdk/address/use-address-by-postal-code.js.map +1 -0
  360. package/dist/sdk/address/validate-address.js +62 -0
  361. package/dist/sdk/address/validate-address.js.map +1 -0
  362. package/dist/sdk/analytics/use-analytics-actions.js +2 -1
  363. package/dist/sdk/analytics/use-analytics-actions.js.map +1 -1
  364. package/dist/sdk/cache/storefront-cache.js +29 -4
  365. package/dist/sdk/cache/storefront-cache.js.map +1 -1
  366. package/dist/sdk/cart/use-cart-actions.js +9 -8
  367. package/dist/sdk/cart/use-cart-actions.js.map +1 -1
  368. package/dist/sdk/cart/use-cart-validate-on-open.js +2 -1
  369. package/dist/sdk/cart/use-cart-validate-on-open.js.map +1 -1
  370. package/dist/sdk/client/fetch-page-data.d.ts +11 -0
  371. package/dist/sdk/client/fetch-page-data.js +12 -1
  372. package/dist/sdk/client/fetch-page-data.js.map +1 -1
  373. package/dist/sdk/content/create-content-runtime.d.ts +22 -1
  374. package/dist/sdk/content/create-content-runtime.js +90 -9
  375. package/dist/sdk/content/create-content-runtime.js.map +1 -1
  376. package/dist/sdk/data/empty-content-value.js +16 -0
  377. package/dist/sdk/data/empty-content-value.js.map +1 -0
  378. package/dist/sdk/data/failed-fields.js +23 -0
  379. package/dist/sdk/data/failed-fields.js.map +1 -0
  380. package/dist/sdk/data/hot-data-provider.js +2 -1
  381. package/dist/sdk/data/hot-data-provider.js.map +1 -1
  382. package/dist/sdk/data/index.js +1 -1
  383. package/dist/sdk/data/page-reactive-data-root.d.ts +45 -7
  384. package/dist/sdk/data/page-reactive-data-root.js +88 -12
  385. package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
  386. package/dist/sdk/data/variables-from-content.d.ts +43 -0
  387. package/dist/sdk/data/variables-from-content.js +57 -0
  388. package/dist/sdk/data/variables-from-content.js.map +1 -0
  389. package/dist/sdk/generated/fragment-types.js +2 -0
  390. package/dist/sdk/generated/fragment-types.js.map +1 -1
  391. package/dist/sdk/generated/gql.js +4 -1
  392. package/dist/sdk/generated/gql.js.map +1 -1
  393. package/dist/sdk/generated/graphql.d.ts +8 -0
  394. package/dist/sdk/generated/graphql.js +296 -1
  395. package/dist/sdk/generated/graphql.js.map +1 -1
  396. package/dist/sdk/i18n/messages/en-US.js +138 -1
  397. package/dist/sdk/i18n/messages/en-US.json +138 -1
  398. package/dist/sdk/i18n/messages/en-US.json.d.ts +137 -0
  399. package/dist/sdk/i18n/messages/es-ES.js +138 -1
  400. package/dist/sdk/i18n/messages/es-ES.json +138 -1
  401. package/dist/sdk/i18n/messages/pt-BR.js +138 -1
  402. package/dist/sdk/i18n/messages/pt-BR.json +138 -1
  403. package/dist/sdk/identity/use-identity-actions.js +5 -4
  404. package/dist/sdk/identity/use-identity-actions.js.map +1 -1
  405. package/dist/sdk/navigation/current-page.js +30 -0
  406. package/dist/sdk/navigation/current-page.js.map +1 -0
  407. package/dist/sdk/navigation/not-found-log.d.ts +28 -0
  408. package/dist/sdk/navigation/not-found-log.js +133 -0
  409. package/dist/sdk/navigation/not-found-log.js.map +1 -0
  410. package/dist/sdk/navigation/path.js +25 -0
  411. package/dist/sdk/navigation/path.js.map +1 -0
  412. package/dist/sdk/navigation/redirect.d.ts +11 -0
  413. package/dist/sdk/navigation/redirect.js +22 -0
  414. package/dist/sdk/navigation/redirect.js.map +1 -0
  415. package/dist/sdk/navigation/report.js +70 -0
  416. package/dist/sdk/navigation/report.js.map +1 -0
  417. package/dist/sdk/navigation/resolve-storefront-href.d.ts +12 -0
  418. package/dist/sdk/navigation/resolve-storefront-href.js +214 -0
  419. package/dist/sdk/navigation/resolve-storefront-href.js.map +1 -0
  420. package/dist/sdk/navigation/route-identity-provider.d.ts +11 -0
  421. package/dist/sdk/navigation/route-identity-provider.js +20 -0
  422. package/dist/sdk/navigation/route-identity-provider.js.map +1 -0
  423. package/dist/sdk/navigation/route-map-provider.d.ts +19 -0
  424. package/dist/sdk/navigation/route-map-provider.js +29 -0
  425. package/dist/sdk/navigation/route-map-provider.js.map +1 -0
  426. package/dist/sdk/navigation/storefront-link.d.ts +16 -0
  427. package/dist/sdk/navigation/storefront-link.js +66 -0
  428. package/dist/sdk/navigation/storefront-link.js.map +1 -0
  429. package/dist/sdk/navigation/types.d.ts +45 -0
  430. package/dist/sdk/navigation/use-storefront-navigation.d.ts +26 -0
  431. package/dist/sdk/navigation/use-storefront-navigation.js +73 -0
  432. package/dist/sdk/navigation/use-storefront-navigation.js.map +1 -0
  433. package/dist/sdk/navigation/use-storefront-route.d.ts +26 -0
  434. package/dist/sdk/navigation/use-storefront-route.js +87 -0
  435. package/dist/sdk/navigation/use-storefront-route.js.map +1 -0
  436. package/dist/sdk/navigation/use-storefront-search-params.d.ts +11 -0
  437. package/dist/sdk/navigation/use-storefront-search-params.js +16 -0
  438. package/dist/sdk/navigation/use-storefront-search-params.js.map +1 -0
  439. package/dist/sdk/orders/completion-badge.d.ts +8 -0
  440. package/dist/sdk/orders/completion-badge.js +47 -0
  441. package/dist/sdk/orders/completion-badge.js.map +1 -0
  442. package/dist/sdk/orders/order-operations.d.ts +19 -0
  443. package/dist/sdk/orders/order-operations.js +21 -0
  444. package/dist/sdk/orders/order-operations.js.map +1 -0
  445. package/dist/sdk/orders/use-order-actions.d.ts +23 -0
  446. package/dist/sdk/orders/use-order-actions.js +62 -0
  447. package/dist/sdk/orders/use-order-actions.js.map +1 -0
  448. package/dist/sdk/payment/gateway-origin.js +26 -13
  449. package/dist/sdk/payment/gateway-origin.js.map +1 -1
  450. package/dist/sdk/payment/gateway.d.ts +14 -2
  451. package/dist/sdk/payment/gateway.js +32 -14
  452. package/dist/sdk/payment/gateway.js.map +1 -1
  453. package/dist/sdk/payment/operations.js +11 -0
  454. package/dist/sdk/payment/operations.js.map +1 -1
  455. package/dist/sdk/payment/submission-registry.d.ts +2 -1
  456. package/dist/sdk/payment/submission-registry.js +12 -8
  457. package/dist/sdk/payment/submission-registry.js.map +1 -1
  458. package/dist/sdk/payment/use-payment-actions.d.ts +5 -3
  459. package/dist/sdk/payment/use-payment-actions.js +6 -3
  460. package/dist/sdk/payment/use-payment-actions.js.map +1 -1
  461. package/dist/sdk/payment/use-place-order.d.ts +6 -3
  462. package/dist/sdk/payment/use-place-order.js +334 -144
  463. package/dist/sdk/payment/use-place-order.js.map +1 -1
  464. package/dist/sdk/region/use-region-actions.js +2 -1
  465. package/dist/sdk/region/use-region-actions.js.map +1 -1
  466. package/dist/sdk/seo/page-alternates.d.ts +55 -0
  467. package/dist/sdk/seo/page-alternates.js +132 -0
  468. package/dist/sdk/seo/page-alternates.js.map +1 -0
  469. package/dist/sdk/session/read-server-session.d.ts +21 -0
  470. package/dist/sdk/session/read-server-session.js +61 -0
  471. package/dist/sdk/session/read-server-session.js.map +1 -0
  472. package/dist/sdk/session/use-session-actions.js +5 -4
  473. package/dist/sdk/session/use-session-actions.js.map +1 -1
  474. package/dist/sdk/session/use-session-revalidation.js +2 -1
  475. package/dist/sdk/session/use-session-revalidation.js.map +1 -1
  476. package/dist/sdk/shipping/use-shipping-actions.js +3 -2
  477. package/dist/sdk/shipping/use-shipping-actions.js.map +1 -1
  478. package/dist/utils/own-value.js +19 -0
  479. package/dist/utils/own-value.js.map +1 -0
  480. package/dist/utils/safe-href.d.ts +11 -0
  481. package/dist/utils/safe-href.js +31 -22
  482. package/dist/utils/safe-href.js.map +1 -1
  483. package/package.json +17 -2
  484. package/skills/storefront-asset/SKILL.md +111 -0
  485. package/skills/storefront-asset/references/api-side.md +153 -0
  486. package/skills/storefront-asset/references/findings.md +40 -0
  487. package/skills/storefront-asset/references/ui-side.md +94 -0
  488. package/src/styles/tailwind.css +27 -0
@@ -0,0 +1,395 @@
1
+ "use client";
2
+ import { defineComponent } from "../../core/dist/define-component.js";
3
+ import { defineContentType } from "../../core/dist/define-content-type.js";
4
+ import "../../core/dist/index.js";
5
+ import { resolveSafeHref } from "../../utils/safe-href.js";
6
+ import { useIntl } from "../../sdk/i18n/client.js";
7
+ import { StorefrontLink } from "../../sdk/navigation/storefront-link.js";
8
+ import { useStorefrontRoute } from "../../sdk/navigation/use-storefront-route.js";
9
+ import { useStorefrontSearchParams } from "../../sdk/navigation/use-storefront-search-params.js";
10
+ import { currentPageWith } from "../../sdk/navigation/current-page.js";
11
+ import { OrderListRow } from "../order-list-row/order-list-row.js";
12
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
+ //#region src/matter/order-list/order-list.tsx
14
+ const fragment = `
15
+ fragment OrderListData on Query {
16
+ customerOrders(first: 25, after: $after, filter: $filter) {
17
+ edges {
18
+ node {
19
+ ...OrderListRowData
20
+ }
21
+ }
22
+ pageInfo {
23
+ hasNextPage
24
+ endCursor
25
+ }
26
+ totalCount
27
+ totalIncomplete
28
+ }
29
+ }
30
+
31
+ fragment OrderListRowData on CustomerOrderListItem {
32
+ id
33
+ placedAt
34
+ total {
35
+ amount
36
+ currencyCode
37
+ }
38
+ itemCount
39
+ completion {
40
+ view
41
+ label
42
+ }
43
+ shippingEstimatedDateMin
44
+ shippingEstimatedDateMax
45
+ }
46
+ `;
47
+ const OrderListContent = defineContentType({
48
+ id: "order-list",
49
+ title: "Order List",
50
+ description: "The count, empty, error, and advance sentences for the orders list.",
51
+ schema: {
52
+ type: "object",
53
+ additionalProperties: false,
54
+ properties: {
55
+ label: {
56
+ type: "string",
57
+ title: "Accessible name"
58
+ },
59
+ count: {
60
+ type: "string",
61
+ title: "Count"
62
+ },
63
+ countIncomplete: {
64
+ type: "string",
65
+ title: "Incomplete count"
66
+ },
67
+ emptyAccount: {
68
+ type: "string",
69
+ title: "Empty account"
70
+ },
71
+ emptyView: {
72
+ type: "string",
73
+ title: "Empty view"
74
+ },
75
+ emptySearch: {
76
+ type: "string",
77
+ title: "Empty search"
78
+ },
79
+ pastEnd: {
80
+ type: "string",
81
+ title: "Past the end"
82
+ },
83
+ walkStopped: {
84
+ type: "string",
85
+ title: "Walk stopped"
86
+ },
87
+ error: {
88
+ type: "string",
89
+ title: "Error"
90
+ },
91
+ retry: {
92
+ type: "string",
93
+ title: "Retry"
94
+ },
95
+ next: {
96
+ type: "string",
97
+ title: "Next page"
98
+ },
99
+ loadMore: {
100
+ type: "string",
101
+ title: "Load more"
102
+ },
103
+ firstPage: {
104
+ type: "string",
105
+ title: "First page"
106
+ },
107
+ clear: {
108
+ type: "string",
109
+ title: "Clear search"
110
+ },
111
+ startShopping: {
112
+ type: "string",
113
+ title: "Start shopping"
114
+ }
115
+ }
116
+ }
117
+ });
118
+ const DEFAULTS = {
119
+ label: "Orders",
120
+ count: "{count} of {total}",
121
+ countIncomplete: "{count} of {total}, count incomplete",
122
+ emptyAccount: "You have no orders yet",
123
+ emptyView: "No orders in this view",
124
+ emptySearch: "No orders match this search",
125
+ pastEnd: "This page has no orders",
126
+ walkStopped: "More orders may exist",
127
+ error: "Could not load orders",
128
+ retry: "Try again",
129
+ next: "Next page",
130
+ loadMore: "Load more",
131
+ firstPage: "First page",
132
+ clear: "Clear search",
133
+ startShopping: "Start shopping"
134
+ };
135
+ const COLUMNS = [
136
+ ["id", "fs/order-list.column.id"],
137
+ ["placed", "fs/order-list.column.placed"],
138
+ ["total", "fs/order-list.column.total"],
139
+ ["items", "fs/order-list.column.items"],
140
+ ["status", "fs/order-list.column.status"],
141
+ ["estimate", "fs/order-list.column.estimate"]
142
+ ];
143
+ const CRITERIA = [
144
+ "search",
145
+ "placedFrom",
146
+ "placedTo"
147
+ ];
148
+ const OrderListDefinition = defineComponent({
149
+ name: "OrderList",
150
+ importPath: "@vtex/faststore/components",
151
+ component: OrderList,
152
+ content: OrderListContent,
153
+ fragment,
154
+ fetchStrategy: "static",
155
+ skeleton: OrderListSkeleton,
156
+ editor: {
157
+ label: "Order List",
158
+ category: "content"
159
+ },
160
+ schema: {
161
+ label: {
162
+ type: "string",
163
+ default: "Orders",
164
+ label: "Accessible name"
165
+ },
166
+ advance: {
167
+ type: ["pages", "load-more"],
168
+ default: "pages",
169
+ label: "Advance"
170
+ },
171
+ startShoppingHref: {
172
+ type: "link",
173
+ default: { standard: "home" },
174
+ label: "Start shopping link"
175
+ },
176
+ orderHref: {
177
+ type: "link",
178
+ default: { standard: "order" },
179
+ fills: ["orderId"],
180
+ label: "Order link"
181
+ }
182
+ },
183
+ guideline: "One page of the shopper orders. The read is fixed at 25 and the cursor, view, search, and placed dates come from the page URL. Pages and load-more both link to the next cursor and load that page again."
184
+ });
185
+ function copy(value, fallback) {
186
+ return value?.trim() || fallback;
187
+ }
188
+ function advanceMode(value) {
189
+ return value === "load-more" ? "load-more" : "pages";
190
+ }
191
+ function listView(value) {
192
+ if (value === "ongoing" || value === "completed" || value === "cancelled") return value;
193
+ return null;
194
+ }
195
+ function appliedCriteria(params) {
196
+ const found = [];
197
+ for (const key of CRITERIA) {
198
+ const value = params.get(key)?.trim() ?? "";
199
+ if (value.length > 0) found.push({
200
+ key,
201
+ value
202
+ });
203
+ }
204
+ return found;
205
+ }
206
+ function withParams(route, params, edit) {
207
+ const next = new URLSearchParams(params);
208
+ edit?.(next);
209
+ return currentPageWith(route, next);
210
+ }
211
+ function fillCount(template, count, total) {
212
+ return template.replaceAll("{count}", String(count)).replaceAll("{total}", String(total));
213
+ }
214
+ const HOME_PAGE = { standard: "home" };
215
+ const ORDER_PAGE = { standard: "order" };
216
+ function shoppingHref(value) {
217
+ if (typeof value !== "string") return value ?? HOME_PAGE;
218
+ const authored = value.trim();
219
+ const destination = resolveSafeHref(authored);
220
+ return authored.length > 0 && destination.safe ? destination.href : HOME_PAGE;
221
+ }
222
+ function connectionOf(data) {
223
+ if (!data || !Array.isArray(data.edges) || data.pageInfo == null) return null;
224
+ if (typeof data.totalCount !== "number" || typeof data.totalIncomplete !== "boolean") return null;
225
+ return data;
226
+ }
227
+ function emptyKind(data, params) {
228
+ if (data.totalIncomplete) return "walk-stopped";
229
+ if (data.totalCount > 0) return "past-end";
230
+ if (appliedCriteria(params).length > 0) return "search";
231
+ if (listView(params.get("view"))) return "view";
232
+ return "account";
233
+ }
234
+ function OrderListSkeleton({ className, ...props }) {
235
+ return /* @__PURE__ */ jsxs("div", {
236
+ ...props,
237
+ className,
238
+ "data-fs-order-list-skeleton": "",
239
+ "aria-hidden": "true",
240
+ children: [
241
+ /* @__PURE__ */ jsx("span", { "data-fs-order-list-skeleton-row": "" }),
242
+ /* @__PURE__ */ jsx("span", { "data-fs-order-list-skeleton-row": "" }),
243
+ /* @__PURE__ */ jsx("span", { "data-fs-order-list-skeleton-row": "" })
244
+ ]
245
+ });
246
+ }
247
+ function listLinks(route, searchParams, connection, mode, content) {
248
+ const nextCursor = connection?.pageInfo.hasNextPage ? connection.pageInfo.endCursor : null;
249
+ return {
250
+ nextHref: nextCursor && nextCursor.length > 0 ? withParams(route, searchParams, (next) => {
251
+ next.set("after", nextCursor);
252
+ }) : null,
253
+ firstHref: (searchParams.get("after") ?? "").trim().length > 0 ? withParams(route, searchParams, (next) => {
254
+ next.delete("after");
255
+ }) : null,
256
+ clearHref: withParams(route, searchParams, (next) => {
257
+ next.delete("search");
258
+ next.delete("placedFrom");
259
+ next.delete("placedTo");
260
+ next.delete("after");
261
+ }),
262
+ retryHref: withParams(route, searchParams),
263
+ advanceLabel: copy(mode === "load-more" ? content?.loadMore : content?.next, mode === "load-more" ? DEFAULTS.loadMore : DEFAULTS.next)
264
+ };
265
+ }
266
+ function countSentence(connection, content) {
267
+ return copy(connection.totalIncomplete ? content?.countIncomplete : content?.count, connection.totalIncomplete ? DEFAULTS.countIncomplete : DEFAULTS.count);
268
+ }
269
+ function OrderList({ label, advance, startShoppingHref, orderHref = ORDER_PAGE, $content, $data, className, ref }) {
270
+ const route = useStorefrontRoute();
271
+ const searchParams = useStorefrontSearchParams();
272
+ const mode = advanceMode(advance);
273
+ const regionLabel = copy($content?.label, copy(label, DEFAULTS.label));
274
+ const connection = connectionOf($data);
275
+ const links = listLinks(route, searchParams, connection, mode, $content);
276
+ return /* @__PURE__ */ jsx("section", {
277
+ ref,
278
+ "aria-label": regionLabel,
279
+ className,
280
+ "data-fs-order-list": "",
281
+ "data-fs-order-list-advance": mode,
282
+ children: connection && connection.edges.length > 0 ? /* @__PURE__ */ jsx(OrderPage, {
283
+ connection,
284
+ countLabel: countSentence(connection, $content),
285
+ advanceLabel: links.advanceLabel,
286
+ firstLabel: copy($content?.firstPage, DEFAULTS.firstPage),
287
+ nextHref: links.nextHref,
288
+ firstHref: links.firstHref,
289
+ orderHref
290
+ }) : /* @__PURE__ */ jsx(OrderEmpty, {
291
+ kind: connection ? emptyKind(connection, searchParams) : "error",
292
+ content: $content,
293
+ criteria: appliedCriteria(searchParams),
294
+ advanceLabel: links.advanceLabel,
295
+ nextHref: links.nextHref,
296
+ firstHref: links.firstHref,
297
+ clearHref: links.clearHref,
298
+ retryHref: links.retryHref,
299
+ startHref: shoppingHref(startShoppingHref)
300
+ })
301
+ });
302
+ }
303
+ function OrderColumns() {
304
+ const intl = useIntl();
305
+ return /* @__PURE__ */ jsx("div", {
306
+ "data-fs-order-list-columns": "",
307
+ children: COLUMNS.map(([name, id]) => /* @__PURE__ */ jsx("span", {
308
+ "data-fs-order-list-column": name,
309
+ children: intl.formatMessage({ id })
310
+ }, name))
311
+ });
312
+ }
313
+ function OrderPage({ connection, countLabel, advanceLabel, firstLabel, nextHref, firstHref, orderHref }) {
314
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
315
+ /* @__PURE__ */ jsx("p", {
316
+ "data-fs-order-list-count": "",
317
+ "data-fs-order-list-count-incomplete": connection.totalIncomplete ? "" : void 0,
318
+ children: fillCount(countLabel, connection.edges.length, connection.totalCount)
319
+ }),
320
+ /* @__PURE__ */ jsx(OrderColumns, {}),
321
+ connection.edges.map((edge) => /* @__PURE__ */ jsx(OrderListRow, {
322
+ $data: edge.node,
323
+ href: orderHref
324
+ }, edge.node.id)),
325
+ firstHref ? /* @__PURE__ */ jsx(StorefrontLink, {
326
+ href: firstHref,
327
+ "data-fs-order-list-first": "",
328
+ children: firstLabel
329
+ }) : null,
330
+ nextHref ? /* @__PURE__ */ jsx(StorefrontLink, {
331
+ href: nextHref,
332
+ "data-fs-order-list-next": "",
333
+ children: advanceLabel
334
+ }) : null
335
+ ] });
336
+ }
337
+ function OrderEmpty({ kind, content, criteria, advanceLabel, nextHref, firstHref, clearHref, retryHref, startHref }) {
338
+ if (kind === "error") return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
339
+ "data-fs-order-list-error": "",
340
+ children: copy(content?.error, DEFAULTS.error)
341
+ }), /* @__PURE__ */ jsx(StorefrontLink, {
342
+ href: retryHref,
343
+ "data-fs-order-list-retry": "",
344
+ children: copy(content?.retry, DEFAULTS.retry)
345
+ })] });
346
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
347
+ /* @__PURE__ */ jsx("p", {
348
+ "data-fs-order-list-empty": kind,
349
+ children: emptySentence(kind, content)
350
+ }),
351
+ kind === "search" ? /* @__PURE__ */ jsx(Criteria, { criteria }) : null,
352
+ kind === "search" ? /* @__PURE__ */ jsx(StorefrontLink, {
353
+ href: clearHref,
354
+ "data-fs-order-list-clear": "",
355
+ children: copy(content?.clear, DEFAULTS.clear)
356
+ }) : null,
357
+ kind === "account" ? /* @__PURE__ */ jsx(StorefrontLink, {
358
+ href: startHref,
359
+ "data-fs-order-list-start": "",
360
+ children: copy(content?.startShopping, DEFAULTS.startShopping)
361
+ }) : null,
362
+ kind === "past-end" && firstHref ? /* @__PURE__ */ jsx(StorefrontLink, {
363
+ href: firstHref,
364
+ "data-fs-order-list-first": "",
365
+ children: copy(content?.firstPage, DEFAULTS.firstPage)
366
+ }) : null,
367
+ kind === "walk-stopped" && nextHref ? /* @__PURE__ */ jsx(StorefrontLink, {
368
+ href: nextHref,
369
+ "data-fs-order-list-next": "",
370
+ children: advanceLabel
371
+ }) : null
372
+ ] });
373
+ }
374
+ function emptySentence(kind, content) {
375
+ switch (kind) {
376
+ case "account": return copy(content?.emptyAccount, DEFAULTS.emptyAccount);
377
+ case "view": return copy(content?.emptyView, DEFAULTS.emptyView);
378
+ case "search": return copy(content?.emptySearch, DEFAULTS.emptySearch);
379
+ case "past-end": return copy(content?.pastEnd, DEFAULTS.pastEnd);
380
+ case "walk-stopped": return copy(content?.walkStopped, DEFAULTS.walkStopped);
381
+ }
382
+ }
383
+ function Criteria({ criteria }) {
384
+ return /* @__PURE__ */ jsx("ul", {
385
+ "data-fs-order-list-criteria": "",
386
+ children: criteria.map((item) => /* @__PURE__ */ jsx("li", {
387
+ "data-fs-order-list-criterion": item.key,
388
+ children: item.value
389
+ }, item.key))
390
+ });
391
+ }
392
+ //#endregion
393
+ export { OrderList, OrderListContent, OrderListDefinition, OrderListSkeleton };
394
+
395
+ //# sourceMappingURL=order-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-list.js","names":[],"sources":["../../../src/matter/order-list/order-list.tsx"],"sourcesContent":["'use client';\n\nimport { type ContentValue, defineComponent, defineContentType } from '@vtex/fs-core';\nimport type { ComponentPropsWithRef, ReactNode, Ref } from 'react';\nimport { useIntl } from '../../sdk/i18n/client.js';\nimport type { MessageId } from '../../sdk/i18n/locales.js';\nimport { type CurrentRoute, currentPageWith } from '../../sdk/navigation/current-page.js';\nimport { StorefrontLink } from '../../sdk/navigation/storefront-link.js';\nimport type { PageRef } from '../../sdk/navigation/types.js';\nimport { useStorefrontRoute } from '../../sdk/navigation/use-storefront-route.js';\nimport { useStorefrontSearchParams } from '../../sdk/navigation/use-storefront-search-params.js';\nimport { resolveSafeHref } from '../../utils/safe-href.js';\nimport { type OrderListItemData, OrderListRow } from '../order-list-row/order-list-row.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderListData on Query {\n customerOrders(first: 25, after: $after, filter: $filter) {\n edges {\n node {\n ...OrderListRowData\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n totalCount\n totalIncomplete\n }\n }\n\n fragment OrderListRowData on CustomerOrderListItem {\n id\n placedAt\n total {\n amount\n currencyCode\n }\n itemCount\n completion {\n view\n label\n }\n shippingEstimatedDateMin\n shippingEstimatedDateMax\n }\n`;\n\nexport const OrderListContent = defineContentType({\n id: 'order-list',\n title: 'Order List',\n description: 'The count, empty, error, and advance sentences for the orders list.',\n schema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n label: { type: 'string', title: 'Accessible name' },\n count: { type: 'string', title: 'Count' },\n countIncomplete: { type: 'string', title: 'Incomplete count' },\n emptyAccount: { type: 'string', title: 'Empty account' },\n emptyView: { type: 'string', title: 'Empty view' },\n emptySearch: { type: 'string', title: 'Empty search' },\n pastEnd: { type: 'string', title: 'Past the end' },\n walkStopped: { type: 'string', title: 'Walk stopped' },\n error: { type: 'string', title: 'Error' },\n retry: { type: 'string', title: 'Retry' },\n next: { type: 'string', title: 'Next page' },\n loadMore: { type: 'string', title: 'Load more' },\n firstPage: { type: 'string', title: 'First page' },\n clear: { type: 'string', title: 'Clear search' },\n startShopping: { type: 'string', title: 'Start shopping' },\n },\n },\n});\n\nexport type OrderListAdvance = 'pages' | 'load-more';\n\nexport type OrderListContentValue = ContentValue<typeof OrderListContent>;\n\nexport type OrderListData = {\n edges: Array<{ node: OrderListItemData }>;\n pageInfo: { hasNextPage: boolean; endCursor: string | null };\n totalCount: number;\n totalIncomplete: boolean;\n};\n\nexport type OrderListProps = Readonly<{\n /** Accessible name of the list region. */\n label?: string;\n advance?: OrderListAdvance;\n /** Link offered when the account has no orders. */\n startShoppingHref?: PageRef | string;\n /** The order page each row links to; the row fills `orderId`, or appends it to a string path. */\n orderHref?: PageRef | string;\n $content?: OrderListContentValue;\n $data?: OrderListData | null;\n className?: string;\n ref?: Ref<HTMLElement>;\n}>;\n\nconst DEFAULTS = {\n label: 'Orders',\n count: '{count} of {total}',\n countIncomplete: '{count} of {total}, count incomplete',\n emptyAccount: 'You have no orders yet',\n emptyView: 'No orders in this view',\n emptySearch: 'No orders match this search',\n pastEnd: 'This page has no orders',\n walkStopped: 'More orders may exist',\n error: 'Could not load orders',\n retry: 'Try again',\n next: 'Next page',\n loadMore: 'Load more',\n firstPage: 'First page',\n clear: 'Clear search',\n startShopping: 'Start shopping',\n} as const;\n\nconst COLUMNS = [\n ['id', 'fs/order-list.column.id'],\n ['placed', 'fs/order-list.column.placed'],\n ['total', 'fs/order-list.column.total'],\n ['items', 'fs/order-list.column.items'],\n ['status', 'fs/order-list.column.status'],\n ['estimate', 'fs/order-list.column.estimate'],\n] as const satisfies ReadonlyArray<readonly [string, MessageId]>;\n\nconst CRITERIA = ['search', 'placedFrom', 'placedTo'] as const;\n\ntype CriterionKey = (typeof CRITERIA)[number];\n\ntype EmptyKind = 'account' | 'view' | 'search' | 'past-end' | 'walk-stopped';\n\nexport const OrderListDefinition = defineComponent<OrderListProps>({\n name: 'OrderList',\n importPath: '@vtex/faststore/components',\n component: OrderList,\n content: OrderListContent,\n fragment,\n fetchStrategy: 'static',\n skeleton: OrderListSkeleton,\n editor: { label: 'Order List', category: 'content' },\n schema: {\n label: { type: 'string', default: 'Orders', label: 'Accessible name' },\n advance: { type: ['pages', 'load-more'] as const, default: 'pages', label: 'Advance' },\n startShoppingHref: { type: 'link', default: { standard: 'home' }, label: 'Start shopping link' },\n orderHref: { type: 'link', default: { standard: 'order' }, fills: ['orderId'], label: 'Order link' },\n },\n guideline:\n 'One page of the shopper orders. The read is fixed at 25 and the cursor, view, search, and placed dates come from the page URL. Pages and load-more both link to the next cursor and load that page again.',\n});\n\nfunction copy(value: string | undefined, fallback: string): string {\n const trimmed = value?.trim();\n return trimmed || fallback;\n}\n\nfunction advanceMode(value: string | undefined): OrderListAdvance {\n return value === 'load-more' ? 'load-more' : 'pages';\n}\n\nfunction listView(value: string | null): 'ongoing' | 'completed' | 'cancelled' | null {\n if (value === 'ongoing' || value === 'completed' || value === 'cancelled') {\n return value;\n }\n return null;\n}\n\nfunction appliedCriteria(params: URLSearchParams): Array<{ key: CriterionKey; value: string }> {\n const found: Array<{ key: CriterionKey; value: string }> = [];\n for (const key of CRITERIA) {\n const value = params.get(key)?.trim() ?? '';\n if (value.length > 0) {\n found.push({ key, value });\n }\n }\n return found;\n}\n\nfunction withParams(\n route: CurrentRoute,\n params: URLSearchParams,\n edit?: (next: URLSearchParams) => void,\n): PageRef | string {\n const next = new URLSearchParams(params);\n edit?.(next);\n return currentPageWith(route, next);\n}\n\nfunction fillCount(template: string, count: number, total: number): string {\n return template.replaceAll('{count}', String(count)).replaceAll('{total}', String(total));\n}\n\nconst HOME_PAGE: PageRef = { standard: 'home' };\nconst ORDER_PAGE: PageRef = { standard: 'order' };\n\nfunction shoppingHref(value: PageRef | string | undefined): PageRef | string {\n if (typeof value !== 'string') {\n return value ?? HOME_PAGE;\n }\n const authored = value.trim();\n const destination = resolveSafeHref(authored);\n return authored.length > 0 && destination.safe ? destination.href : HOME_PAGE;\n}\n\nfunction connectionOf(data: OrderListData | null | undefined): OrderListData | null {\n if (!data || !Array.isArray(data.edges) || data.pageInfo == null) {\n return null;\n }\n if (typeof data.totalCount !== 'number' || typeof data.totalIncomplete !== 'boolean') {\n return null;\n }\n return data;\n}\n\nfunction emptyKind(data: OrderListData, params: URLSearchParams): EmptyKind {\n if (data.totalIncomplete) {\n return 'walk-stopped';\n }\n if (data.totalCount > 0) {\n return 'past-end';\n }\n if (appliedCriteria(params).length > 0) {\n return 'search';\n }\n if (listView(params.get('view'))) {\n return 'view';\n }\n return 'account';\n}\n\nexport function OrderListSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-list-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-list-skeleton-row=\"\" />\n <span data-fs-order-list-skeleton-row=\"\" />\n <span data-fs-order-list-skeleton-row=\"\" />\n </div>\n );\n}\n\ntype ListLinks = {\n nextHref: PageRef | string | null;\n firstHref: PageRef | string | null;\n clearHref: PageRef | string;\n retryHref: PageRef | string;\n advanceLabel: string;\n};\n\nfunction listLinks(\n route: CurrentRoute,\n searchParams: URLSearchParams,\n connection: OrderListData | null,\n mode: OrderListAdvance,\n content: OrderListContentValue | undefined,\n): ListLinks {\n const nextCursor = connection?.pageInfo.hasNextPage ? connection.pageInfo.endCursor : null;\n const nextHref =\n nextCursor && nextCursor.length > 0\n ? withParams(route, searchParams, (next) => {\n next.set('after', nextCursor);\n })\n : null;\n const showFirst = (searchParams.get('after') ?? '').trim().length > 0;\n const firstHref = showFirst\n ? withParams(route, searchParams, (next) => {\n next.delete('after');\n })\n : null;\n const clearHref = withParams(route, searchParams, (next) => {\n next.delete('search');\n next.delete('placedFrom');\n next.delete('placedTo');\n next.delete('after');\n });\n return {\n nextHref,\n firstHref,\n clearHref,\n retryHref: withParams(route, searchParams),\n advanceLabel: copy(\n mode === 'load-more' ? content?.loadMore : content?.next,\n mode === 'load-more' ? DEFAULTS.loadMore : DEFAULTS.next,\n ),\n };\n}\n\nfunction countSentence(connection: OrderListData, content: OrderListContentValue | undefined): string {\n return copy(\n connection.totalIncomplete ? content?.countIncomplete : content?.count,\n connection.totalIncomplete ? DEFAULTS.countIncomplete : DEFAULTS.count,\n );\n}\n\nexport function OrderList({\n label,\n advance,\n startShoppingHref,\n orderHref = ORDER_PAGE,\n $content,\n $data,\n className,\n ref,\n}: OrderListProps) {\n const route = useStorefrontRoute();\n const searchParams = useStorefrontSearchParams();\n const mode = advanceMode(advance);\n const regionLabel = copy($content?.label, copy(label, DEFAULTS.label));\n const connection = connectionOf($data);\n const links = listLinks(route, searchParams, connection, mode, $content);\n\n return (\n <section\n ref={ref}\n aria-label={regionLabel}\n className={className}\n data-fs-order-list=\"\"\n data-fs-order-list-advance={mode}\n >\n {connection && connection.edges.length > 0 ? (\n <OrderPage\n connection={connection}\n countLabel={countSentence(connection, $content)}\n advanceLabel={links.advanceLabel}\n firstLabel={copy($content?.firstPage, DEFAULTS.firstPage)}\n nextHref={links.nextHref}\n firstHref={links.firstHref}\n orderHref={orderHref}\n />\n ) : (\n <OrderEmpty\n kind={connection ? emptyKind(connection, searchParams) : 'error'}\n content={$content}\n criteria={appliedCriteria(searchParams)}\n advanceLabel={links.advanceLabel}\n nextHref={links.nextHref}\n firstHref={links.firstHref}\n clearHref={links.clearHref}\n retryHref={links.retryHref}\n startHref={shoppingHref(startShoppingHref)}\n />\n )}\n </section>\n );\n}\n\ntype OrderPageProps = Readonly<{\n connection: OrderListData;\n countLabel: string;\n advanceLabel: string;\n firstLabel: string;\n nextHref: PageRef | string | null;\n firstHref: PageRef | string | null;\n orderHref: PageRef | string;\n}>;\n\nfunction OrderColumns() {\n const intl = useIntl();\n\n return (\n <div data-fs-order-list-columns=\"\">\n {COLUMNS.map(([name, id]) => (\n <span key={name} data-fs-order-list-column={name}>\n {intl.formatMessage({ id })}\n </span>\n ))}\n </div>\n );\n}\n\nfunction OrderPage({\n connection,\n countLabel,\n advanceLabel,\n firstLabel,\n nextHref,\n firstHref,\n orderHref,\n}: OrderPageProps) {\n return (\n <>\n <p data-fs-order-list-count=\"\" data-fs-order-list-count-incomplete={connection.totalIncomplete ? '' : undefined}>\n {fillCount(countLabel, connection.edges.length, connection.totalCount)}\n </p>\n <OrderColumns />\n {connection.edges.map((edge) => (\n <OrderListRow key={edge.node.id} $data={edge.node} href={orderHref} />\n ))}\n {firstHref ? (\n <StorefrontLink href={firstHref} data-fs-order-list-first=\"\">\n {firstLabel}\n </StorefrontLink>\n ) : null}\n {nextHref ? (\n <StorefrontLink href={nextHref} data-fs-order-list-next=\"\">\n {advanceLabel}\n </StorefrontLink>\n ) : null}\n </>\n );\n}\n\ntype OrderEmptyProps = Readonly<{\n kind: EmptyKind | 'error';\n content: OrderListContentValue | undefined;\n criteria: Array<{ key: CriterionKey; value: string }>;\n advanceLabel: string;\n nextHref: PageRef | string | null;\n firstHref: PageRef | string | null;\n clearHref: PageRef | string;\n retryHref: PageRef | string;\n startHref: PageRef | string;\n}>;\n\nfunction OrderEmpty({\n kind,\n content,\n criteria,\n advanceLabel,\n nextHref,\n firstHref,\n clearHref,\n retryHref,\n startHref,\n}: OrderEmptyProps) {\n if (kind === 'error') {\n return (\n <>\n <p data-fs-order-list-error=\"\">{copy(content?.error, DEFAULTS.error)}</p>\n <StorefrontLink href={retryHref} data-fs-order-list-retry=\"\">\n {copy(content?.retry, DEFAULTS.retry)}\n </StorefrontLink>\n </>\n );\n }\n\n return (\n <>\n <p data-fs-order-list-empty={kind}>{emptySentence(kind, content)}</p>\n {kind === 'search' ? <Criteria criteria={criteria} /> : null}\n {kind === 'search' ? (\n <StorefrontLink href={clearHref} data-fs-order-list-clear=\"\">\n {copy(content?.clear, DEFAULTS.clear)}\n </StorefrontLink>\n ) : null}\n {kind === 'account' ? (\n <StorefrontLink href={startHref} data-fs-order-list-start=\"\">\n {copy(content?.startShopping, DEFAULTS.startShopping)}\n </StorefrontLink>\n ) : null}\n {kind === 'past-end' && firstHref ? (\n <StorefrontLink href={firstHref} data-fs-order-list-first=\"\">\n {copy(content?.firstPage, DEFAULTS.firstPage)}\n </StorefrontLink>\n ) : null}\n {kind === 'walk-stopped' && nextHref ? (\n <StorefrontLink href={nextHref} data-fs-order-list-next=\"\">\n {advanceLabel}\n </StorefrontLink>\n ) : null}\n </>\n );\n}\n\nfunction emptySentence(kind: EmptyKind, content: OrderListContentValue | undefined): string {\n switch (kind) {\n case 'account':\n return copy(content?.emptyAccount, DEFAULTS.emptyAccount);\n case 'view':\n return copy(content?.emptyView, DEFAULTS.emptyView);\n case 'search':\n return copy(content?.emptySearch, DEFAULTS.emptySearch);\n case 'past-end':\n return copy(content?.pastEnd, DEFAULTS.pastEnd);\n case 'walk-stopped':\n return copy(content?.walkStopped, DEFAULTS.walkStopped);\n }\n}\n\nfunction Criteria({ criteria }: Readonly<{ criteria: Array<{ key: CriterionKey; value: string }> }>): ReactNode {\n return (\n <ul data-fs-order-list-criteria=\"\">\n {criteria.map((item) => (\n <li key={item.key} data-fs-order-list-criterion={item.key}>\n {item.value}\n </li>\n ))}\n </ul>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { ComponentDefinition } from "../../core/dist/define-component.js";
2
+ import "../../core/dist/index.js";
3
+ import { PageRef } from "../../sdk/navigation/types.js";
4
+ import { ComponentPropsWithRef, Ref } from "react";
5
+ //#region src/matter/order-list-row/order-list-row.d.ts
6
+ export type OrderListItemData = {
7
+ id: string;
8
+ placedAt: string | null;
9
+ total: {
10
+ amount: string | number;
11
+ currencyCode: string;
12
+ } | null;
13
+ itemCount: number | null;
14
+ completion: {
15
+ view: string;
16
+ label: string;
17
+ };
18
+ shippingEstimatedDateMin: string | null;
19
+ shippingEstimatedDateMax: string | null;
20
+ };
21
+ export type OrderListRowProps = Readonly<{
22
+ $data: OrderListItemData;
23
+ /**
24
+ * The order page; the row fills `orderId`. A string is the path the orders live under, and the row
25
+ * appends its id. `OrderList` passes its `orderHref`.
26
+ */
27
+ href?: PageRef | string;
28
+ className?: string;
29
+ ref?: Ref<HTMLAnchorElement>;
30
+ }>;
31
+ export declare const OrderListRowDefinition: ComponentDefinition<Readonly<{
32
+ $data: OrderListItemData;
33
+ /**
34
+ * The order page; the row fills `orderId`. A string is the path the orders live under, and the row
35
+ * appends its id. `OrderList` passes its `orderHref`.
36
+ */
37
+ href?: PageRef | string;
38
+ className?: string;
39
+ ref?: Ref<HTMLAnchorElement>;
40
+ }>>;
41
+ export declare function OrderListRowSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>): import("react/jsx-runtime").JSX.Element;
42
+ export declare function OrderListRow({ $data, href, className, ref }: OrderListRowProps): import("react/jsx-runtime").JSX.Element;
43
+ //#endregion
44
+ //# sourceMappingURL=order-list-row.d.ts.map
@@ -0,0 +1,127 @@
1
+ "use client";
2
+ import { defineComponent } from "../../core/dist/define-component.js";
3
+ import "../../core/dist/index.js";
4
+ import { useStorefrontFormatters } from "../../sdk/format/client.js";
5
+ import { StorefrontLink } from "../../sdk/navigation/storefront-link.js";
6
+ import { OrderStatusBadge } from "../../particles/order-status-badge/order-status-badge.js";
7
+ import { completionBadgeModel } from "../../sdk/orders/completion-badge.js";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ const OrderListRowDefinition = defineComponent({
10
+ name: "OrderListRow",
11
+ importPath: "@vtex/faststore/components",
12
+ component: OrderListRow,
13
+ fragment: `
14
+ fragment OrderListRowData on CustomerOrderListItem {
15
+ id
16
+ placedAt
17
+ total {
18
+ amount
19
+ currencyCode
20
+ }
21
+ itemCount
22
+ completion {
23
+ view
24
+ label
25
+ }
26
+ shippingEstimatedDateMin
27
+ shippingEstimatedDateMax
28
+ }
29
+ `,
30
+ skeleton: OrderListRowSkeleton,
31
+ editor: {
32
+ label: "Order List Row",
33
+ category: "content"
34
+ },
35
+ schema: {},
36
+ guideline: "One order as a link to that order, showing its number, placed date, total, item count, and status badge, plus a delivery estimate while it is ongoing. The list renders it; do not place it on a page alone."
37
+ });
38
+ function instant(value) {
39
+ if (!value) return null;
40
+ const date = new Date(value);
41
+ return Number.isNaN(date.getTime()) ? null : date;
42
+ }
43
+ function moneyAmount(amount) {
44
+ const value = typeof amount === "number" ? amount : Number(amount);
45
+ return Number.isFinite(value) ? value : null;
46
+ }
47
+ function estimateValue(item) {
48
+ if (item.completion.view !== "ONGOING") return null;
49
+ const max = item.shippingEstimatedDateMax?.trim();
50
+ if (max) return max;
51
+ return item.shippingEstimatedDateMin?.trim() || null;
52
+ }
53
+ function OrderListRowSkeleton({ className, ...props }) {
54
+ return /* @__PURE__ */ jsxs("div", {
55
+ ...props,
56
+ className,
57
+ "data-fs-order-list-row-skeleton": "",
58
+ "aria-hidden": "true",
59
+ children: [/* @__PURE__ */ jsx("span", { "data-fs-order-list-row-skeleton-fact": "" }), /* @__PURE__ */ jsx("span", { "data-fs-order-list-row-skeleton-fact": "" })]
60
+ });
61
+ }
62
+ const ORDER_PAGE = { standard: "order" };
63
+ /**
64
+ * The row's own order: a reference gets `orderId` as a param, and a string is the path the orders
65
+ * live under, which gets the encoded id as its last segment (before any query or hash).
66
+ */
67
+ function orderTarget(href, orderId) {
68
+ if (typeof href !== "string") return {
69
+ ...href,
70
+ params: {
71
+ ...href.params,
72
+ orderId
73
+ }
74
+ };
75
+ const cut = href.search(/[?#]/);
76
+ const path = cut === -1 ? href : href.slice(0, cut);
77
+ const tail = cut === -1 ? "" : href.slice(cut);
78
+ return `${path.replace(/\/+$/, "")}/${encodeURIComponent(orderId)}${tail}`;
79
+ }
80
+ function OrderListRow({ $data, href = ORDER_PAGE, className, ref }) {
81
+ const { formatMoney, formatDate } = useStorefrontFormatters();
82
+ const badge = completionBadgeModel($data.completion);
83
+ const placed = instant($data.placedAt);
84
+ const amount = $data.total ? moneyAmount($data.total.amount) : null;
85
+ const estimate = instant(estimateValue($data));
86
+ return /* @__PURE__ */ jsxs(StorefrontLink, {
87
+ ref,
88
+ href: orderTarget(href, $data.id),
89
+ "aria-label": $data.id,
90
+ className,
91
+ "data-fs-order-list-row": "",
92
+ "data-fs-order-list-row-state": badge?.state,
93
+ children: [
94
+ /* @__PURE__ */ jsx("span", {
95
+ "data-fs-order-list-row-id": "",
96
+ children: $data.id
97
+ }),
98
+ placed ? /* @__PURE__ */ jsx("time", {
99
+ dateTime: $data.placedAt ?? void 0,
100
+ "data-fs-order-list-row-placed": "",
101
+ children: formatDate(placed)
102
+ }) : null,
103
+ amount != null && $data.total ? /* @__PURE__ */ jsx("span", {
104
+ "data-fs-order-list-row-total": "",
105
+ children: formatMoney(amount, { currency: $data.total.currencyCode })
106
+ }) : null,
107
+ $data.itemCount == null ? null : /* @__PURE__ */ jsx("span", {
108
+ "data-fs-order-list-row-count": "",
109
+ children: $data.itemCount
110
+ }),
111
+ badge ? /* @__PURE__ */ jsx(OrderStatusBadge, {
112
+ state: badge.state,
113
+ tone: badge.tone,
114
+ label: badge.label
115
+ }) : null,
116
+ estimate ? /* @__PURE__ */ jsx("time", {
117
+ dateTime: estimateValue($data) ?? void 0,
118
+ "data-fs-order-list-row-estimate": "",
119
+ children: formatDate(estimate)
120
+ }) : null
121
+ ]
122
+ });
123
+ }
124
+ //#endregion
125
+ export { OrderListRow, OrderListRowDefinition, OrderListRowSkeleton };
126
+
127
+ //# sourceMappingURL=order-list-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-list-row.js","names":[],"sources":["../../../src/matter/order-list-row/order-list-row.tsx"],"sourcesContent":["'use client';\n\nimport { defineComponent } from '@vtex/fs-core';\nimport type { ComponentPropsWithRef, Ref } from 'react';\nimport { OrderStatusBadge } from '../../particles/order-status-badge/order-status-badge.js';\nimport { useStorefrontFormatters } from '../../sdk/format/client.js';\nimport { StorefrontLink } from '../../sdk/navigation/storefront-link.js';\nimport type { PageRef } from '../../sdk/navigation/types.js';\nimport { completionBadgeModel } from '../../sdk/orders/completion-badge.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderListRowData on CustomerOrderListItem {\n id\n placedAt\n total {\n amount\n currencyCode\n }\n itemCount\n completion {\n view\n label\n }\n shippingEstimatedDateMin\n shippingEstimatedDateMax\n }\n`;\n\nexport type OrderListItemData = {\n id: string;\n placedAt: string | null;\n total: { amount: string | number; currencyCode: string } | null;\n itemCount: number | null;\n completion: { view: string; label: string };\n shippingEstimatedDateMin: string | null;\n shippingEstimatedDateMax: string | null;\n};\n\nexport type OrderListRowProps = Readonly<{\n $data: OrderListItemData;\n /**\n * The order page; the row fills `orderId`. A string is the path the orders live under, and the row\n * appends its id. `OrderList` passes its `orderHref`.\n */\n href?: PageRef | string;\n className?: string;\n ref?: Ref<HTMLAnchorElement>;\n}>;\n\nexport const OrderListRowDefinition = defineComponent<OrderListRowProps>({\n name: 'OrderListRow',\n importPath: '@vtex/faststore/components',\n component: OrderListRow,\n fragment,\n skeleton: OrderListRowSkeleton,\n editor: { label: 'Order List Row', category: 'content' },\n schema: {},\n guideline:\n 'One order as a link to that order, showing its number, placed date, total, item count, and status badge, plus a delivery estimate while it is ongoing. The list renders it; do not place it on a page alone.',\n});\n\nfunction instant(value: string | null): Date | null {\n if (!value) {\n return null;\n }\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\nfunction moneyAmount(amount: string | number): number | null {\n const value = typeof amount === 'number' ? amount : Number(amount);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction estimateValue(item: OrderListItemData): string | null {\n if (item.completion.view !== 'ONGOING') {\n return null;\n }\n const max = item.shippingEstimatedDateMax?.trim();\n if (max) {\n return max;\n }\n const min = item.shippingEstimatedDateMin?.trim();\n return min || null;\n}\n\nexport function OrderListRowSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-list-row-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-list-row-skeleton-fact=\"\" />\n <span data-fs-order-list-row-skeleton-fact=\"\" />\n </div>\n );\n}\n\nconst ORDER_PAGE: PageRef = { standard: 'order' };\n\n/**\n * The row's own order: a reference gets `orderId` as a param, and a string is the path the orders\n * live under, which gets the encoded id as its last segment (before any query or hash).\n */\nfunction orderTarget(href: PageRef | string, orderId: string): PageRef | string {\n if (typeof href !== 'string') return { ...href, params: { ...href.params, orderId } };\n const cut = href.search(/[?#]/);\n const path = cut === -1 ? href : href.slice(0, cut);\n const tail = cut === -1 ? '' : href.slice(cut);\n return `${path.replace(/\\/+$/, '')}/${encodeURIComponent(orderId)}${tail}`;\n}\n\nexport function OrderListRow({ $data, href = ORDER_PAGE, className, ref }: OrderListRowProps) {\n const { formatMoney, formatDate } = useStorefrontFormatters();\n const badge = completionBadgeModel($data.completion);\n const placed = instant($data.placedAt);\n const amount = $data.total ? moneyAmount($data.total.amount) : null;\n const estimate = instant(estimateValue($data));\n\n return (\n <StorefrontLink\n ref={ref}\n href={orderTarget(href, $data.id)}\n aria-label={$data.id}\n className={className}\n data-fs-order-list-row=\"\"\n data-fs-order-list-row-state={badge?.state}\n >\n <span data-fs-order-list-row-id=\"\">{$data.id}</span>\n {placed ? (\n <time dateTime={$data.placedAt ?? undefined} data-fs-order-list-row-placed=\"\">\n {formatDate(placed)}\n </time>\n ) : null}\n {amount != null && $data.total ? (\n <span data-fs-order-list-row-total=\"\">{formatMoney(amount, { currency: $data.total.currencyCode })}</span>\n ) : null}\n {$data.itemCount == null ? null : <span data-fs-order-list-row-count=\"\">{$data.itemCount}</span>}\n {badge ? <OrderStatusBadge state={badge.state} tone={badge.tone} label={badge.label} /> : null}\n {estimate ? (\n <time dateTime={estimateValue($data) ?? undefined} data-fs-order-list-row-estimate=\"\">\n {formatDate(estimate)}\n </time>\n ) : null}\n </StorefrontLink>\n );\n}\n"],"mappings":";;;;;;;;AAiDA,MAAa,yBAAyB,gBAAmC;CACvE,MAAM;CACN,YAAY;CACZ,WAAW;CACX;;;;;;;;;;;;;;;;;CACA,UAAU;CACV,QAAQ;EAAE,OAAO;EAAkB,UAAU;CAAU;CACvD,QAAQ,CAAC;CACT,WACE;AACJ,CAAC;AAED,SAAS,QAAQ,OAAmC;CAClD,IAAI,CAAC,OACH,OAAO;CAET,MAAM,OAAO,IAAI,KAAK,KAAK;CAC3B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,OAAO;AAC/C;AAEA,SAAS,YAAY,QAAwC;CAC3D,MAAM,QAAQ,OAAO,WAAW,WAAW,SAAS,OAAO,MAAM;CACjE,OAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAEA,SAAS,cAAc,MAAwC;CAC7D,IAAI,KAAK,WAAW,SAAS,WAC3B,OAAO;CAET,MAAM,MAAM,KAAK,0BAA0B,KAAK;CAChD,IAAI,KACF,OAAO;CAGT,OADY,KAAK,0BAA0B,KAAK,KAClC;AAChB;AAEA,SAAgB,qBAAqB,EAAE,WAAW,GAAG,SAAuC;CAC1F,OACE,qBAAC,OAAD;EAAK,GAAI;EAAkB;EAAW,mCAAgC;EAAG,eAAY;EAArF,UAAA,CACE,oBAAC,QAAD,EAAM,wCAAqC,GAAI,CAAA,GAC/C,oBAAC,QAAD,EAAM,wCAAqC,GAAI,CAAA,CAC5C;;AAET;AAEA,MAAM,aAAsB,EAAE,UAAU,QAAQ;;;;;AAMhD,SAAS,YAAY,MAAwB,SAAmC;CAC9E,IAAI,OAAO,SAAS,UAAU,OAAO;EAAE,GAAG;EAAM,QAAQ;GAAE,GAAG,KAAK;GAAQ;EAAQ;CAAE;CACpF,MAAM,MAAM,KAAK,OAAO,MAAM;CAC9B,MAAM,OAAO,QAAQ,KAAK,OAAO,KAAK,MAAM,GAAG,GAAG;CAClD,MAAM,OAAO,QAAQ,KAAK,KAAK,KAAK,MAAM,GAAG;CAC7C,OAAO,GAAG,KAAK,QAAQ,QAAQ,EAAE,EAAE,GAAG,mBAAmB,OAAO,IAAI;AACtE;AAEA,SAAgB,aAAa,EAAE,OAAO,OAAO,YAAY,WAAW,OAA0B;CAC5F,MAAM,EAAE,aAAa,eAAe,wBAAwB;CAC5D,MAAM,QAAQ,qBAAqB,MAAM,UAAU;CACnD,MAAM,SAAS,QAAQ,MAAM,QAAQ;CACrC,MAAM,SAAS,MAAM,QAAQ,YAAY,MAAM,MAAM,MAAM,IAAI;CAC/D,MAAM,WAAW,QAAQ,cAAc,KAAK,CAAC;CAE7C,OACE,qBAAC,gBAAD;EACO;EACL,MAAM,YAAY,MAAM,MAAM,EAAE;EAChC,cAAY,MAAM;EACP;EACX,0BAAuB;EACvB,gCAA8B,OAAO;EANvC,UAAA;GAQE,oBAAC,QAAD;IAAM,6BAA0B;IAAI,UAAA,MAAM;GAAS,CAAA;GAClD,SACC,oBAAC,QAAD;IAAM,UAAU,MAAM,YAAY,KAAA;IAAW,iCAA8B;IACxE,UAAA,WAAW,MAAM;GACd,CAAA,IACJ;GACH,UAAU,QAAQ,MAAM,QACvB,oBAAC,QAAD;IAAM,gCAA6B;IAAI,UAAA,YAAY,QAAQ,EAAE,UAAU,MAAM,MAAM,aAAa,CAAC;GAAQ,CAAA,IACvG;GACH,MAAM,aAAa,OAAO,OAAO,oBAAC,QAAD;IAAM,gCAA6B;IAAI,UAAA,MAAM;GAAgB,CAAA;GAC9F,QAAQ,oBAAC,kBAAD;IAAkB,OAAO,MAAM;IAAO,MAAM,MAAM;IAAM,OAAO,MAAM;GAAQ,CAAA,IAAI;GACzF,WACC,oBAAC,QAAD;IAAM,UAAU,cAAc,KAAK,KAAK,KAAA;IAAW,mCAAgC;IAChF,UAAA,WAAW,QAAQ;GAChB,CAAA,IACJ;EACU;;AAEpB"}