@vtex/faststore 0.0.7 → 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 (411) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/actions.json +152 -1
  3. package/dist/catalog.json +1264 -142
  4. package/dist/cli/index.d.ts +512 -63
  5. package/dist/cli/index.js +2098 -686
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/cli/server-runtime.js +44 -24
  8. package/dist/cli/server-runtime.js.map +1 -1
  9. package/dist/client.d.ts +5 -1
  10. package/dist/client.js +5 -1
  11. package/dist/components.d.ts +34 -7
  12. package/dist/components.js +38 -11
  13. package/dist/content-types.json +523 -0
  14. package/dist/core/dist/define-component.d.ts +6 -1
  15. package/dist/docs/account-access-gate.md +4 -4
  16. package/dist/docs/account-address-book.md +519 -0
  17. package/dist/docs/account-entry-point.md +1 -1
  18. package/dist/docs/account-menu.md +5 -5
  19. package/dist/docs/alert-dialog.md +2 -2
  20. package/dist/docs/billing-address.md +17 -9
  21. package/dist/docs/card-entry.md +37 -6
  22. package/dist/docs/cardholder-document.md +16 -14
  23. package/dist/docs/cart-item.md +1 -1
  24. package/dist/docs/cart.md +8 -8
  25. package/dist/docs/client-profile-fieldset.md +7 -5
  26. package/dist/docs/copy-text.md +84 -0
  27. package/dist/docs/document-field.md +8 -8
  28. package/dist/docs/footer-link-group.md +2 -2
  29. package/dist/docs/header-root.md +1 -1
  30. package/dist/docs/incentives.md +2 -2
  31. package/dist/docs/logo.md +5 -5
  32. package/dist/docs/my-account-profile.md +4 -4
  33. package/dist/docs/navigation-link-list.md +2 -2
  34. package/dist/docs/navigation-link.md +3 -3
  35. package/dist/docs/order-cancel.md +52 -0
  36. package/dist/docs/order-delivery-address.md +63 -0
  37. package/dist/docs/order-delivery-group.md +83 -0
  38. package/dist/docs/order-details-back.md +41 -0
  39. package/dist/docs/order-details-header.md +48 -0
  40. package/dist/docs/order-list-row.md +46 -0
  41. package/dist/docs/order-list-search.md +101 -0
  42. package/dist/docs/order-list-views.md +97 -0
  43. package/dist/docs/order-list.md +94 -0
  44. package/dist/docs/order-payment.md +94 -0
  45. package/dist/docs/order-placed-date.md +49 -0
  46. package/dist/docs/order-placed-payment-summary.md +13 -15
  47. package/dist/docs/order-placed.md +225 -0
  48. package/dist/docs/order-progress.md +88 -0
  49. package/dist/docs/order-status-badge.md +91 -0
  50. package/dist/docs/order-summary.md +53 -0
  51. package/dist/docs/payment-method-badges.md +14 -3
  52. package/dist/docs/place-order.md +13 -9
  53. package/dist/docs/saved-cards.md +2 -2
  54. package/dist/docs/select.md +19 -6
  55. package/dist/docs/session.md +1 -1
  56. package/dist/docs/shipping-address.md +1 -1
  57. package/dist/docs/sign-in-redirect.md +6 -6
  58. package/dist/docs/toast.md +7 -3
  59. package/dist/index.d.ts +6 -2
  60. package/dist/index.js +2 -1
  61. package/dist/internal/client.d.ts +6 -1
  62. package/dist/internal/client.js +7 -2
  63. package/dist/internal/server.d.ts +6 -2
  64. package/dist/internal/server.js +6 -2
  65. package/dist/matter/account-access-gate/account-access-gate.d.ts +2 -1
  66. package/dist/matter/account-access-gate/account-access-gate.js +19 -16
  67. package/dist/matter/account-access-gate/account-access-gate.js.map +1 -1
  68. package/dist/matter/account-address-book/account-address-book-delete.d.ts +60 -0
  69. package/dist/matter/account-address-book/account-address-book-delete.js +184 -0
  70. package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -0
  71. package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +19 -0
  72. package/dist/matter/account-address-book/account-address-book-deliverability.js +50 -0
  73. package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -0
  74. package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +42 -0
  75. package/dist/matter/account-address-book/account-address-book-form-parts.js +146 -0
  76. package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -0
  77. package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +25 -0
  78. package/dist/matter/account-address-book/account-address-book-profile-notice.js +72 -0
  79. package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -0
  80. package/dist/matter/account-address-book/account-address-book.d.ts +120 -0
  81. package/dist/matter/account-address-book/account-address-book.js +469 -0
  82. package/dist/matter/account-address-book/account-address-book.js.map +1 -0
  83. package/dist/matter/account-address-book/account-address-country-switch.js +59 -0
  84. package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -0
  85. package/dist/matter/account-address-book/account-address-country.d.ts +36 -0
  86. package/dist/matter/account-address-book/account-address-country.js +151 -0
  87. package/dist/matter/account-address-book/account-address-country.js.map +1 -0
  88. package/dist/matter/account-address-book/account-address-first-line.js +11 -0
  89. package/dist/matter/account-address-book/account-address-first-line.js.map +1 -0
  90. package/dist/matter/account-address-book/account-address-form-context.d.ts +55 -0
  91. package/dist/matter/account-address-book/account-address-form-context.js +14 -0
  92. package/dist/matter/account-address-book/account-address-form-context.js.map +1 -0
  93. package/dist/matter/account-address-book/account-address-form.d.ts +85 -0
  94. package/dist/matter/account-address-book/account-address-form.js +946 -0
  95. package/dist/matter/account-address-book/account-address-form.js.map +1 -0
  96. package/dist/matter/account-address-book/account-address-postal-autofill.js +189 -0
  97. package/dist/matter/account-address-book/account-address-postal-autofill.js.map +1 -0
  98. package/dist/matter/account-address-book/account-address-record.d.ts +26 -0
  99. package/dist/matter/account-address-book/account-address-record.js +138 -0
  100. package/dist/matter/account-address-book/account-address-record.js.map +1 -0
  101. package/dist/matter/account-entry-point/account-entry-point.js +11 -11
  102. package/dist/matter/account-entry-point/account-entry-point.js.map +1 -1
  103. package/dist/matter/account-menu/account-menu.d.ts +7 -3
  104. package/dist/matter/account-menu/account-menu.js +69 -28
  105. package/dist/matter/account-menu/account-menu.js.map +1 -1
  106. package/dist/matter/billing-address/billing-address.d.ts +30 -17
  107. package/dist/matter/billing-address/billing-address.js +128 -33
  108. package/dist/matter/billing-address/billing-address.js.map +1 -1
  109. package/dist/matter/breadcrumb/breadcrumb.js +2 -2
  110. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
  111. package/dist/matter/card-entry/card-capture.js +4 -3
  112. package/dist/matter/card-entry/card-capture.js.map +1 -1
  113. package/dist/matter/card-entry/card-entry.d.ts +5 -3
  114. package/dist/matter/card-entry/card-entry.js +77 -27
  115. package/dist/matter/card-entry/card-entry.js.map +1 -1
  116. package/dist/matter/cardholder-document/cardholder-document.d.ts +10 -9
  117. package/dist/matter/cardholder-document/cardholder-document.js +36 -16
  118. package/dist/matter/cardholder-document/cardholder-document.js.map +1 -1
  119. package/dist/matter/cart/cart.d.ts +7 -2
  120. package/dist/matter/cart/cart.js +29 -26
  121. package/dist/matter/cart/cart.js.map +1 -1
  122. package/dist/matter/cart-item/cart-item.js +2 -2
  123. package/dist/matter/cart-item/cart-item.js.map +1 -1
  124. package/dist/matter/client-preferences/client-preferences-fieldset.js +1 -1
  125. package/dist/matter/client-profile-form/client-profile-fieldset.js +8 -5
  126. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
  127. package/dist/matter/identity-edit/identity-edit.js +3 -3
  128. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  129. package/dist/matter/identity-summary/identity-summary.js +2 -2
  130. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  131. package/dist/matter/my-account-profile/my-account-profile.d.ts +3 -3
  132. package/dist/matter/my-account-profile/my-account-profile.js +4 -4
  133. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  134. package/dist/matter/order-cancel/order-cancel.d.ts +110 -0
  135. package/dist/matter/order-cancel/order-cancel.js +344 -0
  136. package/dist/matter/order-cancel/order-cancel.js.map +1 -0
  137. package/dist/matter/order-delivery-address/order-delivery-address.d.ts +73 -0
  138. package/dist/matter/order-delivery-address/order-delivery-address.js +172 -0
  139. package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -0
  140. package/dist/matter/order-delivery-group/order-delivery-group.d.ts +128 -0
  141. package/dist/matter/order-delivery-group/order-delivery-group.js +408 -0
  142. package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -0
  143. package/dist/matter/order-details-header/order-details-header.d.ts +104 -0
  144. package/dist/matter/order-details-header/order-details-header.js +190 -0
  145. package/dist/matter/order-details-header/order-details-header.js.map +1 -0
  146. package/dist/matter/order-list/customer-orders-filter.d.ts +12 -0
  147. package/dist/matter/order-list/customer-orders-filter.js +30 -0
  148. package/dist/matter/order-list/customer-orders-filter.js.map +1 -0
  149. package/dist/matter/order-list/order-list.d.ts +121 -0
  150. package/dist/matter/order-list/order-list.js +395 -0
  151. package/dist/matter/order-list/order-list.js.map +1 -0
  152. package/dist/matter/order-list-row/order-list-row.d.ts +44 -0
  153. package/dist/matter/order-list-row/order-list-row.js +127 -0
  154. package/dist/matter/order-list-row/order-list-row.js.map +1 -0
  155. package/dist/matter/order-list-search/order-list-search.d.ts +72 -0
  156. package/dist/matter/order-list-search/order-list-search.js +296 -0
  157. package/dist/matter/order-list-search/order-list-search.js.map +1 -0
  158. package/dist/matter/order-list-views/order-list-views.d.ts +65 -0
  159. package/dist/matter/order-list-views/order-list-views.js +154 -0
  160. package/dist/matter/order-list-views/order-list-views.js.map +1 -0
  161. package/dist/matter/order-payment/order-payment.d.ts +83 -0
  162. package/dist/matter/order-payment/order-payment.js +258 -0
  163. package/dist/matter/order-payment/order-payment.js.map +1 -0
  164. package/dist/matter/order-placed/order-placed-deliveries.d.ts +145 -0
  165. package/dist/matter/order-placed/order-placed-deliveries.js +380 -0
  166. package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -0
  167. package/dist/matter/order-placed/order-placed.d.ts +122 -0
  168. package/dist/matter/order-placed/order-placed.js +452 -0
  169. package/dist/matter/order-placed/order-placed.js.map +1 -0
  170. package/dist/matter/order-placed-date/order-placed-date.d.ts +45 -0
  171. package/dist/matter/order-placed-date/order-placed-date.js +92 -0
  172. package/dist/matter/order-placed-date/order-placed-date.js.map +1 -0
  173. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +5 -8
  174. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +29 -81
  175. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
  176. package/dist/matter/order-progress/order-progress.d.ts +85 -0
  177. package/dist/matter/order-progress/order-progress.js +203 -0
  178. package/dist/matter/order-progress/order-progress.js.map +1 -0
  179. package/dist/matter/order-summary/order-summary.d.ts +81 -0
  180. package/dist/matter/order-summary/order-summary.js +192 -0
  181. package/dist/matter/order-summary/order-summary.js.map +1 -0
  182. package/dist/matter/payment/cardholder-document-rule.d.ts +35 -0
  183. package/dist/matter/payment/cardholder-document-rule.js +35 -0
  184. package/dist/matter/payment/cardholder-document-rule.js.map +1 -0
  185. package/dist/matter/payment/payment-card-capture.js +38 -23
  186. package/dist/matter/payment/payment-card-capture.js.map +1 -1
  187. package/dist/matter/payment/payment-controller.js +11 -0
  188. package/dist/matter/payment/payment-controller.js.map +1 -1
  189. package/dist/matter/payment/payment-method-badges.js +4 -2
  190. package/dist/matter/payment/payment-method-badges.js.map +1 -1
  191. package/dist/matter/payment/payment.js +11 -0
  192. package/dist/matter/payment/payment.js.map +1 -1
  193. package/dist/matter/payment/use-payment-method-selection.d.ts +39 -0
  194. package/dist/matter/payment/use-payment-method-selection.js +30 -2
  195. package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
  196. package/dist/matter/payment/use-payment-submit-gate.d.ts +16 -2
  197. package/dist/matter/payment/use-payment-submit-gate.js +42 -14
  198. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
  199. package/dist/matter/place-order/place-order.d.ts +12 -7
  200. package/dist/matter/place-order/place-order.js +126 -103
  201. package/dist/matter/place-order/place-order.js.map +1 -1
  202. package/dist/matter/pricing/pricing.js +5 -5
  203. package/dist/matter/pricing/pricing.js.map +1 -1
  204. package/dist/matter/region/region.js +1 -1
  205. package/dist/matter/saved-cards/saved-cards.js +26 -15
  206. package/dist/matter/saved-cards/saved-cards.js.map +1 -1
  207. package/dist/matter/session/session.js +2 -2
  208. package/dist/matter/session/session.js.map +1 -1
  209. package/dist/matter/shipping-address/country-descriptors.d.ts +1 -0
  210. package/dist/matter/shipping-address/country-descriptors.js +23 -1
  211. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  212. package/dist/matter/shipping-address/shipping-address.js +62 -14
  213. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  214. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +1 -1
  215. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
  216. package/dist/matter/sign-in-redirect/sign-in-redirect.js +48 -10
  217. package/dist/matter/sign-in-redirect/sign-in-redirect.js.map +1 -1
  218. package/dist/matter/variant-selector/variant-selector.js +2 -2
  219. package/dist/matter/variant-selector/variant-selector.js.map +1 -1
  220. package/dist/particles/address-summary/address-summary.js +2 -2
  221. package/dist/particles/address-summary/address-summary.js.map +1 -1
  222. package/dist/particles/alert-dialog/alert-dialog.d.ts +5 -1
  223. package/dist/particles/alert-dialog/alert-dialog.js +5 -2
  224. package/dist/particles/alert-dialog/alert-dialog.js.map +1 -1
  225. package/dist/particles/copy-text/copy-text.d.ts +28 -0
  226. package/dist/particles/copy-text/copy-text.js +140 -0
  227. package/dist/particles/copy-text/copy-text.js.map +1 -0
  228. package/dist/particles/document-field/document-field.d.ts +34 -5
  229. package/dist/particles/document-field/document-field.js +115 -19
  230. package/dist/particles/document-field/document-field.js.map +1 -1
  231. package/dist/particles/field/field.js +1 -1
  232. package/dist/particles/field/field.js.map +1 -1
  233. package/dist/particles/footer-link-group/footer-link-group.d.ts +6 -2
  234. package/dist/particles/footer-link-group/footer-link-group.js +18 -7
  235. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
  236. package/dist/particles/incentives/incentives.d.ts +6 -2
  237. package/dist/particles/incentives/incentives.js +7 -2
  238. package/dist/particles/incentives/incentives.js.map +1 -1
  239. package/dist/particles/logo/logo.d.ts +3 -2
  240. package/dist/particles/logo/logo.js +20 -8
  241. package/dist/particles/logo/logo.js.map +1 -1
  242. package/dist/particles/navigation-link/navigation-link.d.ts +2 -3
  243. package/dist/particles/navigation-link/navigation-link.js +4 -4
  244. package/dist/particles/navigation-link/navigation-link.js.map +1 -1
  245. package/dist/particles/navigation-link-list/navigation-link-list.d.ts +6 -2
  246. package/dist/particles/navigation-link-list/navigation-link-list.js +18 -7
  247. package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -1
  248. package/dist/particles/order-details-back/order-details-back.d.ts +28 -0
  249. package/dist/particles/order-details-back/order-details-back.js +52 -0
  250. package/dist/particles/order-details-back/order-details-back.js.map +1 -0
  251. package/dist/particles/order-status-badge/order-status-badge.d.ts +19 -0
  252. package/dist/particles/order-status-badge/order-status-badge.js +50 -0
  253. package/dist/particles/order-status-badge/order-status-badge.js.map +1 -0
  254. package/dist/particles/phone-field/phone-field.js +2 -2
  255. package/dist/particles/phone-field/phone-field.js.map +1 -1
  256. package/dist/particles/select/select.js +6 -6
  257. package/dist/particles/select/select.js.map +1 -1
  258. package/dist/particles/toast/toast.d.ts +1 -1
  259. package/dist/particles/toast/toast.js +32 -6
  260. package/dist/particles/toast/toast.js.map +1 -1
  261. package/dist/schema.graphql +1014 -28
  262. package/dist/sdk/actions/address-action-provider.d.ts +16 -0
  263. package/dist/sdk/actions/address-action-provider.js +20 -0
  264. package/dist/sdk/actions/address-action-provider.js.map +1 -0
  265. package/dist/sdk/actions/analytics-action-provider.js +1 -1
  266. package/dist/sdk/actions/index.d.ts +3 -1
  267. package/dist/sdk/actions/index.js +3 -1
  268. package/dist/sdk/actions/order-action-provider.d.ts +12 -0
  269. package/dist/sdk/actions/order-action-provider.js +16 -0
  270. package/dist/sdk/actions/order-action-provider.js.map +1 -0
  271. package/dist/sdk/actions/types.d.ts +6 -2
  272. package/dist/sdk/address/address-fields.js +38 -0
  273. package/dist/sdk/address/address-fields.js.map +1 -0
  274. package/dist/sdk/address/checkout-readiness.js +17 -0
  275. package/dist/sdk/address/checkout-readiness.js.map +1 -0
  276. package/dist/sdk/address/constants.js +60 -0
  277. package/dist/sdk/address/constants.js.map +1 -0
  278. package/dist/sdk/address/country-display.js +19 -0
  279. package/dist/sdk/address/country-display.js.map +1 -0
  280. package/dist/sdk/address/country-rules.js +30 -0
  281. package/dist/sdk/address/country-rules.js.map +1 -0
  282. package/dist/sdk/address/format-address.js +18 -0
  283. package/dist/sdk/address/format-address.js.map +1 -0
  284. package/dist/sdk/address/iso-countries.js +262 -0
  285. package/dist/sdk/address/iso-countries.js.map +1 -0
  286. package/dist/sdk/address/layouts.js +56 -0
  287. package/dist/sdk/address/layouts.js.map +1 -0
  288. package/dist/sdk/address/messages.js +97 -0
  289. package/dist/sdk/address/messages.js.map +1 -0
  290. package/dist/sdk/address/operations.d.ts +54 -0
  291. package/dist/sdk/address/operations.js +83 -0
  292. package/dist/sdk/address/operations.js.map +1 -0
  293. package/dist/sdk/address/postal-code-lookup-operations.js +23 -0
  294. package/dist/sdk/address/postal-code-lookup-operations.js.map +1 -0
  295. package/dist/sdk/address/postal-code.js +11 -0
  296. package/dist/sdk/address/postal-code.js.map +1 -0
  297. package/dist/sdk/address/schema.js +14 -0
  298. package/dist/sdk/address/schema.js.map +1 -0
  299. package/dist/sdk/address/server-fields.js +25 -0
  300. package/dist/sdk/address/server-fields.js.map +1 -0
  301. package/dist/sdk/address/switch-country.js +57 -0
  302. package/dist/sdk/address/switch-country.js.map +1 -0
  303. package/dist/sdk/address/types.d.ts +26 -0
  304. package/dist/sdk/address/use-address-actions.d.ts +29 -0
  305. package/dist/sdk/address/use-address-actions.js +247 -0
  306. package/dist/sdk/address/use-address-actions.js.map +1 -0
  307. package/dist/sdk/address/use-address-by-postal-code.js +57 -0
  308. package/dist/sdk/address/use-address-by-postal-code.js.map +1 -0
  309. package/dist/sdk/address/validate-address.js +62 -0
  310. package/dist/sdk/address/validate-address.js.map +1 -0
  311. package/dist/sdk/cache/storefront-cache.js +29 -4
  312. package/dist/sdk/cache/storefront-cache.js.map +1 -1
  313. package/dist/sdk/client/fetch-page-data.d.ts +11 -0
  314. package/dist/sdk/client/fetch-page-data.js +12 -1
  315. package/dist/sdk/client/fetch-page-data.js.map +1 -1
  316. package/dist/sdk/content/create-content-runtime.js +1 -8
  317. package/dist/sdk/content/create-content-runtime.js.map +1 -1
  318. package/dist/sdk/data/failed-fields.js +23 -0
  319. package/dist/sdk/data/failed-fields.js.map +1 -0
  320. package/dist/sdk/data/index.js +2 -2
  321. package/dist/sdk/data/page-reactive-data-root.d.ts +45 -7
  322. package/dist/sdk/data/page-reactive-data-root.js +88 -12
  323. package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
  324. package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
  325. package/dist/sdk/generated/fragment-types.js +2 -0
  326. package/dist/sdk/generated/fragment-types.js.map +1 -1
  327. package/dist/sdk/generated/gql.js +3 -1
  328. package/dist/sdk/generated/gql.js.map +1 -1
  329. package/dist/sdk/generated/graphql.d.ts +8 -0
  330. package/dist/sdk/generated/graphql.js +212 -1
  331. package/dist/sdk/generated/graphql.js.map +1 -1
  332. package/dist/sdk/i18n/messages/en-US.js +138 -1
  333. package/dist/sdk/i18n/messages/en-US.json +138 -1
  334. package/dist/sdk/i18n/messages/en-US.json.d.ts +137 -0
  335. package/dist/sdk/i18n/messages/es-ES.js +138 -1
  336. package/dist/sdk/i18n/messages/es-ES.json +138 -1
  337. package/dist/sdk/i18n/messages/pt-BR.js +138 -1
  338. package/dist/sdk/i18n/messages/pt-BR.json +138 -1
  339. package/dist/sdk/navigation/current-page.js +30 -0
  340. package/dist/sdk/navigation/current-page.js.map +1 -0
  341. package/dist/sdk/navigation/not-found-log.d.ts +28 -0
  342. package/dist/sdk/navigation/not-found-log.js +133 -0
  343. package/dist/sdk/navigation/not-found-log.js.map +1 -0
  344. package/dist/sdk/navigation/path.js +25 -0
  345. package/dist/sdk/navigation/path.js.map +1 -0
  346. package/dist/sdk/navigation/redirect.d.ts +11 -0
  347. package/dist/sdk/navigation/redirect.js +22 -0
  348. package/dist/sdk/navigation/redirect.js.map +1 -0
  349. package/dist/sdk/navigation/report.js +70 -0
  350. package/dist/sdk/navigation/report.js.map +1 -0
  351. package/dist/sdk/navigation/resolve-storefront-href.d.ts +12 -0
  352. package/dist/sdk/navigation/resolve-storefront-href.js +214 -0
  353. package/dist/sdk/navigation/resolve-storefront-href.js.map +1 -0
  354. package/dist/sdk/navigation/route-identity-provider.d.ts +11 -0
  355. package/dist/sdk/navigation/route-identity-provider.js +20 -0
  356. package/dist/sdk/navigation/route-identity-provider.js.map +1 -0
  357. package/dist/sdk/navigation/route-map-provider.d.ts +19 -0
  358. package/dist/sdk/navigation/route-map-provider.js +29 -0
  359. package/dist/sdk/navigation/route-map-provider.js.map +1 -0
  360. package/dist/sdk/navigation/storefront-link.d.ts +16 -0
  361. package/dist/sdk/navigation/storefront-link.js +66 -0
  362. package/dist/sdk/navigation/storefront-link.js.map +1 -0
  363. package/dist/sdk/navigation/types.d.ts +45 -0
  364. package/dist/sdk/navigation/use-storefront-navigation.d.ts +26 -0
  365. package/dist/sdk/navigation/use-storefront-navigation.js +73 -0
  366. package/dist/sdk/navigation/use-storefront-navigation.js.map +1 -0
  367. package/dist/sdk/navigation/use-storefront-route.d.ts +26 -0
  368. package/dist/sdk/navigation/use-storefront-route.js +87 -0
  369. package/dist/sdk/navigation/use-storefront-route.js.map +1 -0
  370. package/dist/sdk/navigation/use-storefront-search-params.d.ts +11 -0
  371. package/dist/sdk/navigation/use-storefront-search-params.js +16 -0
  372. package/dist/sdk/navigation/use-storefront-search-params.js.map +1 -0
  373. package/dist/sdk/orders/completion-badge.d.ts +8 -0
  374. package/dist/sdk/orders/completion-badge.js +47 -0
  375. package/dist/sdk/orders/completion-badge.js.map +1 -0
  376. package/dist/sdk/orders/order-operations.d.ts +19 -0
  377. package/dist/sdk/orders/order-operations.js +21 -0
  378. package/dist/sdk/orders/order-operations.js.map +1 -0
  379. package/dist/sdk/orders/use-order-actions.d.ts +23 -0
  380. package/dist/sdk/orders/use-order-actions.js +62 -0
  381. package/dist/sdk/orders/use-order-actions.js.map +1 -0
  382. package/dist/sdk/payment/gateway-origin.js +26 -13
  383. package/dist/sdk/payment/gateway-origin.js.map +1 -1
  384. package/dist/sdk/payment/gateway.d.ts +14 -2
  385. package/dist/sdk/payment/gateway.js +32 -14
  386. package/dist/sdk/payment/gateway.js.map +1 -1
  387. package/dist/sdk/payment/operations.js +11 -0
  388. package/dist/sdk/payment/operations.js.map +1 -1
  389. package/dist/sdk/payment/submission-registry.d.ts +2 -1
  390. package/dist/sdk/payment/submission-registry.js +12 -8
  391. package/dist/sdk/payment/submission-registry.js.map +1 -1
  392. package/dist/sdk/payment/use-payment-actions.d.ts +5 -3
  393. package/dist/sdk/payment/use-payment-actions.js +5 -2
  394. package/dist/sdk/payment/use-payment-actions.js.map +1 -1
  395. package/dist/sdk/payment/use-place-order.d.ts +6 -3
  396. package/dist/sdk/payment/use-place-order.js +333 -143
  397. package/dist/sdk/payment/use-place-order.js.map +1 -1
  398. package/dist/sdk/seo/page-alternates.d.ts +55 -0
  399. package/dist/sdk/seo/page-alternates.js +132 -0
  400. package/dist/sdk/seo/page-alternates.js.map +1 -0
  401. package/dist/utils/own-value.js +19 -0
  402. package/dist/utils/own-value.js.map +1 -0
  403. package/dist/utils/safe-href.d.ts +4 -4
  404. package/dist/utils/safe-href.js +31 -22
  405. package/dist/utils/safe-href.js.map +1 -1
  406. package/package.json +5 -1
  407. package/skills/storefront-asset/SKILL.md +111 -0
  408. package/skills/storefront-asset/references/api-side.md +153 -0
  409. package/skills/storefront-asset/references/findings.md +40 -0
  410. package/skills/storefront-asset/references/ui-side.md +94 -0
  411. 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"}