@vtex/faststore 0.0.10 → 0.0.12

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 (509) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +0 -1
  3. package/dist/_virtual/_rolldown/runtime.js +4 -0
  4. package/dist/actions.json +6 -1
  5. package/dist/catalog.json +789 -1701
  6. package/dist/cli/index.d.ts +66 -28
  7. package/dist/cli/index.js +7371 -512
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/cli/server-runtime.js +41 -60
  10. package/dist/cli/server-runtime.js.map +1 -1
  11. package/dist/client.d.ts +3 -3
  12. package/dist/client.js +2 -2
  13. package/dist/components.d.ts +63 -57
  14. package/dist/components.js +60 -54
  15. package/dist/content-types.json +5785 -754
  16. package/dist/core/dist/define-component.d.ts +1 -1
  17. package/dist/core/dist/define-content-type.d.ts +50 -2
  18. package/dist/core/dist/define-content-type.js +107 -3
  19. package/dist/core/dist/define-content-type.js.map +1 -1
  20. package/dist/core/dist/index.d.ts +2 -2
  21. package/dist/docs/access-code-field.md +1 -1
  22. package/dist/docs/access-code-sign-in.md +126 -77
  23. package/dist/docs/account-address-book.md +210 -95
  24. package/dist/docs/account-menu.md +14 -15
  25. package/dist/docs/account-saved-cards.md +44 -39
  26. package/dist/docs/alert-dialog.md +3 -1
  27. package/dist/docs/avatar.md +4 -2
  28. package/dist/docs/billing-address.md +99 -30
  29. package/dist/docs/binding-switcher.md +5 -2
  30. package/dist/docs/buy-button.md +7 -8
  31. package/dist/docs/card-entry.md +39 -26
  32. package/dist/docs/card-summary.md +18 -8
  33. package/dist/docs/cardholder-document.md +5 -3
  34. package/dist/docs/carousel.md +5 -4
  35. package/dist/docs/cart-destination.md +39 -26
  36. package/dist/docs/cart-item.md +29 -14
  37. package/dist/docs/cart-totalizer.md +7 -5
  38. package/dist/docs/cart.md +135 -41
  39. package/dist/docs/challenge-return.md +135 -0
  40. package/dist/docs/client-preferences-fieldset.md +10 -5
  41. package/dist/docs/client-preferences.md +31 -8
  42. package/dist/docs/client-profile-fieldset.md +20 -6
  43. package/dist/docs/client-profile.md +12 -3
  44. package/dist/docs/copy-text.md +9 -7
  45. package/dist/docs/document-field.md +1 -1
  46. package/dist/docs/email-field.md +2 -1
  47. package/dist/docs/email-identification.md +12 -2
  48. package/dist/docs/footer-copyright.md +4 -2
  49. package/dist/docs/form.md +54 -18
  50. package/dist/docs/free-shipping-progress.md +6 -5
  51. package/dist/docs/identity-edit.md +8 -2
  52. package/dist/docs/identity-summary.md +18 -5
  53. package/dist/docs/installments.md +46 -32
  54. package/dist/docs/my-account-profile.md +16 -11
  55. package/dist/docs/navigation-link.md +5 -3
  56. package/dist/docs/order-cancel.md +3 -1
  57. package/dist/docs/order-delivery-address.md +7 -5
  58. package/dist/docs/order-delivery-group.md +1 -3
  59. package/dist/docs/order-details-back.md +1 -1
  60. package/dist/docs/order-details-header.md +1 -4
  61. package/dist/docs/order-invoice-download.md +60 -0
  62. package/dist/docs/order-list-row.md +1 -1
  63. package/dist/docs/order-list-search.md +13 -20
  64. package/dist/docs/order-list-views.md +11 -17
  65. package/dist/docs/order-list.md +12 -5
  66. package/dist/docs/order-payment.md +9 -7
  67. package/dist/docs/order-placed-date.md +1 -1
  68. package/dist/docs/order-placed-payment-summary.md +28 -15
  69. package/dist/docs/order-placed.md +49 -14
  70. package/dist/docs/order-progress.md +1 -1
  71. package/dist/docs/order-status-badge.md +20 -9
  72. package/dist/docs/order-summary.md +2 -2
  73. package/dist/docs/order-tracking-link.md +58 -0
  74. package/dist/docs/payment-method-badges.md +30 -4
  75. package/dist/docs/payment-methods.md +1 -1
  76. package/dist/docs/payment.md +36 -17
  77. package/dist/docs/phone-field.md +4 -4
  78. package/dist/docs/place-order.md +84 -36
  79. package/dist/docs/postal-code-field.md +3 -1
  80. package/dist/docs/pricing.md +21 -23
  81. package/dist/docs/product-gallery.md +19 -20
  82. package/dist/docs/product-information.md +13 -9
  83. package/dist/docs/product-list.md +7 -6
  84. package/dist/docs/product-shelf.md +0 -1
  85. package/dist/docs/promotion.md +4 -2
  86. package/dist/docs/region.md +23 -15
  87. package/dist/docs/save-card.md +7 -6
  88. package/dist/docs/saved-cards.md +65 -36
  89. package/dist/docs/shipping-address.md +57 -21
  90. package/dist/docs/shipping-simulator.md +53 -15
  91. package/dist/docs/sign-in-disclosure.md +176 -0
  92. package/dist/docs/sign-in-form.md +78 -47
  93. package/dist/docs/sign-in-redirect.md +4 -2
  94. package/dist/docs/sign-in.md +173 -0
  95. package/dist/docs/toast.md +15 -4
  96. package/dist/docs/variant-selector.md +15 -11
  97. package/dist/domain-logic/dist/checkout/rules.js +33 -0
  98. package/dist/domain-logic/dist/checkout/rules.js.map +1 -0
  99. package/dist/graphql/types.d.ts +4 -14
  100. package/dist/index.d.ts +2 -2
  101. package/dist/internal/client.d.ts +1 -3
  102. package/dist/internal/client.js +1 -1
  103. package/dist/internal/server.d.ts +7 -4
  104. package/dist/internal/server.js +7 -4
  105. package/dist/matter/access-code-sign-in/access-code-sign-in.d.ts +250 -66
  106. package/dist/matter/access-code-sign-in/access-code-sign-in.js +459 -188
  107. package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -1
  108. package/dist/matter/account-address-book/account-address-book-delete.d.ts +78 -40
  109. package/dist/matter/account-address-book/account-address-book-delete.js +86 -50
  110. package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -1
  111. package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +21 -4
  112. package/dist/matter/account-address-book/account-address-book-deliverability.js +45 -17
  113. package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -1
  114. package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +74 -19
  115. package/dist/matter/account-address-book/account-address-book-form-parts.js +77 -26
  116. package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -1
  117. package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +27 -6
  118. package/dist/matter/account-address-book/account-address-book-profile-notice.js +55 -28
  119. package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -1
  120. package/dist/matter/account-address-book/account-address-book.d.ts +67 -14
  121. package/dist/matter/account-address-book/account-address-book.js +74 -33
  122. package/dist/matter/account-address-book/account-address-book.js.map +1 -1
  123. package/dist/matter/account-address-book/account-address-country-switch.js +3 -3
  124. package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -1
  125. package/dist/matter/account-address-book/account-address-country.d.ts +66 -20
  126. package/dist/matter/account-address-book/account-address-country.js +83 -49
  127. package/dist/matter/account-address-book/account-address-country.js.map +1 -1
  128. package/dist/matter/account-address-book/account-address-form-context.d.ts +8 -4
  129. package/dist/matter/account-address-book/account-address-form-context.js.map +1 -1
  130. package/dist/matter/account-address-book/account-address-form.d.ts +468 -45
  131. package/dist/matter/account-address-book/account-address-form.js +518 -155
  132. package/dist/matter/account-address-book/account-address-form.js.map +1 -1
  133. package/dist/matter/account-address-book/account-address-record.d.ts +27 -6
  134. package/dist/matter/account-address-book/account-address-record.js +32 -17
  135. package/dist/matter/account-address-book/account-address-record.js.map +1 -1
  136. package/dist/matter/account-menu/account-menu.d.ts +34 -17
  137. package/dist/matter/account-menu/account-menu.js +46 -54
  138. package/dist/matter/account-menu/account-menu.js.map +1 -1
  139. package/dist/matter/account-menu-identity/account-menu-identity.js +1 -1
  140. package/dist/matter/account-saved-cards/account-saved-cards.d.ts +108 -28
  141. package/dist/matter/account-saved-cards/account-saved-cards.js +177 -122
  142. package/dist/matter/account-saved-cards/account-saved-cards.js.map +1 -1
  143. package/dist/matter/billing-address/billing-address.d.ts +156 -74
  144. package/dist/matter/billing-address/billing-address.js +227 -156
  145. package/dist/matter/billing-address/billing-address.js.map +1 -1
  146. package/dist/matter/breadcrumb/breadcrumb.d.ts +21 -3
  147. package/dist/matter/breadcrumb/breadcrumb.js +24 -9
  148. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
  149. package/dist/matter/buy-button/buy-button.d.ts +8 -11
  150. package/dist/matter/buy-button/buy-button.js +10 -19
  151. package/dist/matter/buy-button/buy-button.js.map +1 -1
  152. package/dist/matter/card-entry/card-capture.js +12 -4
  153. package/dist/matter/card-entry/card-capture.js.map +1 -1
  154. package/dist/matter/card-entry/card-entry.d.ts +123 -32
  155. package/dist/matter/card-entry/card-entry.js +348 -221
  156. package/dist/matter/card-entry/card-entry.js.map +1 -1
  157. package/dist/matter/cart/cart-namespace.d.ts +7 -1
  158. package/dist/matter/cart/cart-namespace.js +7 -1
  159. package/dist/matter/cart/cart-namespace.js.map +1 -1
  160. package/dist/matter/cart/cart.d.ts +402 -61
  161. package/dist/matter/cart/cart.js +624 -153
  162. package/dist/matter/cart/cart.js.map +1 -1
  163. package/dist/matter/cart-destination/cart-destination.d.ts +30 -19
  164. package/dist/matter/cart-destination/cart-destination.js +160 -70
  165. package/dist/matter/cart-destination/cart-destination.js.map +1 -1
  166. package/dist/matter/cart-item/cart-item.d.ts +144 -17
  167. package/dist/matter/cart-item/cart-item.js +166 -49
  168. package/dist/matter/cart-item/cart-item.js.map +1 -1
  169. package/dist/matter/cart-item-compositions/cart-item-compositions.js +1 -1
  170. package/dist/matter/cart-item-compositions/cart-item-compositions.js.map +1 -1
  171. package/dist/matter/cart-item-customizations/cart-item-customizations.js +1 -1
  172. package/dist/matter/cart-item-customizations/cart-item-customizations.js.map +1 -1
  173. package/dist/matter/cart-item-discounts/cart-item-discounts.js +1 -1
  174. package/dist/matter/cart-item-discounts/cart-item-discounts.js.map +1 -1
  175. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js +1 -1
  176. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js.map +1 -1
  177. package/dist/matter/cart-item-variations/cart-item-variations.js +1 -1
  178. package/dist/matter/cart-item-variations/cart-item-variations.js.map +1 -1
  179. package/dist/matter/cart-totalizer/cart-totalizer.d.ts +43 -9
  180. package/dist/matter/cart-totalizer/cart-totalizer.js +46 -17
  181. package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -1
  182. package/dist/matter/challenge-return/challenge-return.d.ts +62 -0
  183. package/dist/matter/challenge-return/challenge-return.js +241 -0
  184. package/dist/matter/challenge-return/challenge-return.js.map +1 -0
  185. package/dist/matter/client-preferences/client-preferences-fieldset.d.ts +86 -17
  186. package/dist/matter/client-preferences/client-preferences-fieldset.js +126 -54
  187. package/dist/matter/client-preferences/client-preferences-fieldset.js.map +1 -1
  188. package/dist/matter/client-preferences/client-preferences.d.ts +50 -7
  189. package/dist/matter/client-preferences/client-preferences.js +84 -15
  190. package/dist/matter/client-preferences/client-preferences.js.map +1 -1
  191. package/dist/matter/client-profile/client-profile.d.ts +44 -9
  192. package/dist/matter/client-profile/client-profile.js +64 -24
  193. package/dist/matter/client-profile/client-profile.js.map +1 -1
  194. package/dist/matter/client-profile-form/client-profile-fieldset.d.ts +119 -22
  195. package/dist/matter/client-profile-form/client-profile-fieldset.js +161 -73
  196. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
  197. package/dist/matter/delivery-options/delivery-options-accordion.d.ts +49 -4
  198. package/dist/matter/delivery-options/delivery-options-accordion.js +67 -14
  199. package/dist/matter/delivery-options/delivery-options-accordion.js.map +1 -1
  200. package/dist/matter/delivery-options/delivery-options-controller.d.ts +69 -9
  201. package/dist/matter/delivery-options/delivery-options-controller.js +80 -14
  202. package/dist/matter/delivery-options/delivery-options-controller.js.map +1 -1
  203. package/dist/matter/delivery-options/delivery-options.d.ts +37 -2
  204. package/dist/matter/delivery-options/delivery-options.js +75 -12
  205. package/dist/matter/delivery-options/delivery-options.js.map +1 -1
  206. package/dist/matter/delivery-options/use-delivery-option-selection.d.ts +1 -0
  207. package/dist/matter/delivery-options/use-delivery-option-selection.js +1 -1
  208. package/dist/matter/delivery-options/use-delivery-option-selection.js.map +1 -1
  209. package/dist/matter/email-identification/email-identification.d.ts +25 -3
  210. package/dist/matter/email-identification/email-identification.js +49 -12
  211. package/dist/matter/email-identification/email-identification.js.map +1 -1
  212. package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +79 -7
  213. package/dist/matter/free-shipping-progress/free-shipping-progress.js +77 -20
  214. package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -1
  215. package/dist/matter/identity-edit/identity-edit.d.ts +52 -10
  216. package/dist/matter/identity-edit/identity-edit.js +47 -19
  217. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  218. package/dist/matter/identity-summary/identity-summary.d.ts +76 -22
  219. package/dist/matter/identity-summary/identity-summary.js +95 -45
  220. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  221. package/dist/matter/installments/installments-select.d.ts +98 -16
  222. package/dist/matter/installments/installments-select.js +156 -48
  223. package/dist/matter/installments/installments-select.js.map +1 -1
  224. package/dist/matter/installments/installments.d.ts +96 -16
  225. package/dist/matter/installments/installments.js +115 -40
  226. package/dist/matter/installments/installments.js.map +1 -1
  227. package/dist/matter/installments/use-installments-selection.d.ts +1 -0
  228. package/dist/matter/installments/use-installments-selection.js +8 -3
  229. package/dist/matter/installments/use-installments-selection.js.map +1 -1
  230. package/dist/matter/my-account-profile/my-account-profile.d.ts +358 -103
  231. package/dist/matter/my-account-profile/my-account-profile.js +370 -174
  232. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  233. package/dist/matter/order-cancel/order-cancel.d.ts +65 -19
  234. package/dist/matter/order-cancel/order-cancel.js +118 -51
  235. package/dist/matter/order-cancel/order-cancel.js.map +1 -1
  236. package/dist/matter/order-delivery-address/order-delivery-address.d.ts +8 -18
  237. package/dist/matter/order-delivery-address/order-delivery-address.js +14 -23
  238. package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -1
  239. package/dist/matter/order-delivery-group/order-delivery-group.d.ts +40 -24
  240. package/dist/matter/order-delivery-group/order-delivery-group.js +64 -74
  241. package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -1
  242. package/dist/matter/order-details-header/order-details-header.d.ts +32 -15
  243. package/dist/matter/order-details-header/order-details-header.js +66 -58
  244. package/dist/matter/order-details-header/order-details-header.js.map +1 -1
  245. package/dist/matter/order-invoice-download/order-invoice-download.d.ts +78 -0
  246. package/dist/matter/order-invoice-download/order-invoice-download.js +173 -0
  247. package/dist/matter/order-invoice-download/order-invoice-download.js.map +1 -0
  248. package/dist/matter/order-list/order-list.d.ts +164 -19
  249. package/dist/matter/order-list/order-list.js +229 -87
  250. package/dist/matter/order-list/order-list.js.map +1 -1
  251. package/dist/matter/order-list-row/order-list-row.d.ts +6 -1
  252. package/dist/matter/order-list-row/order-list-row.js +3 -2
  253. package/dist/matter/order-list-row/order-list-row.js.map +1 -1
  254. package/dist/matter/order-list-search/order-list-search.d.ts +18 -26
  255. package/dist/matter/order-list-search/order-list-search.js +30 -69
  256. package/dist/matter/order-list-search/order-list-search.js.map +1 -1
  257. package/dist/matter/order-list-views/order-list-views.d.ts +15 -22
  258. package/dist/matter/order-list-views/order-list-views.js +22 -68
  259. package/dist/matter/order-list-views/order-list-views.js.map +1 -1
  260. package/dist/matter/order-payment/order-payment.d.ts +33 -10
  261. package/dist/matter/order-payment/order-payment.js +44 -39
  262. package/dist/matter/order-payment/order-payment.js.map +1 -1
  263. package/dist/matter/order-placed/order-placed-deliveries.d.ts +144 -12
  264. package/dist/matter/order-placed/order-placed-deliveries.js +115 -40
  265. package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -1
  266. package/dist/matter/order-placed/order-placed.d.ts +198 -31
  267. package/dist/matter/order-placed/order-placed.js +230 -139
  268. package/dist/matter/order-placed/order-placed.js.map +1 -1
  269. package/dist/matter/order-placed-date/order-placed-date.d.ts +5 -8
  270. package/dist/matter/order-placed-date/order-placed-date.js +7 -8
  271. package/dist/matter/order-placed-date/order-placed-date.js.map +1 -1
  272. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +90 -17
  273. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +93 -117
  274. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
  275. package/dist/matter/order-progress/order-progress.d.ts +19 -8
  276. package/dist/matter/order-progress/order-progress.js +37 -45
  277. package/dist/matter/order-progress/order-progress.js.map +1 -1
  278. package/dist/matter/order-summary/order-summary.d.ts +19 -9
  279. package/dist/matter/order-summary/order-summary.js +38 -44
  280. package/dist/matter/order-summary/order-summary.js.map +1 -1
  281. package/dist/matter/order-tracking-link/order-tracking-link.d.ts +43 -0
  282. package/dist/matter/order-tracking-link/order-tracking-link.js +107 -0
  283. package/dist/matter/order-tracking-link/order-tracking-link.js.map +1 -0
  284. package/dist/matter/payment/payment-card-capture.js +17 -10
  285. package/dist/matter/payment/payment-card-capture.js.map +1 -1
  286. package/dist/matter/payment/payment-controller.d.ts +4 -2
  287. package/dist/matter/payment/payment-controller.js +30 -9
  288. package/dist/matter/payment/payment-controller.js.map +1 -1
  289. package/dist/matter/payment/payment-method-badges.js +1 -1
  290. package/dist/matter/payment/payment.d.ts +69 -19
  291. package/dist/matter/payment/payment.js +101 -35
  292. package/dist/matter/payment/payment.js.map +1 -1
  293. package/dist/matter/payment/use-payment-method-selection.d.ts +25 -4
  294. package/dist/matter/payment/use-payment-method-selection.js +94 -32
  295. package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
  296. package/dist/matter/payment/use-payment-submit-gate.d.ts +14 -3
  297. package/dist/matter/payment/use-payment-submit-gate.js +47 -8
  298. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
  299. package/dist/matter/place-order/place-order.d.ts +171 -57
  300. package/dist/matter/place-order/place-order.js +376 -185
  301. package/dist/matter/place-order/place-order.js.map +1 -1
  302. package/dist/matter/pricing/pricing.d.ts +152 -13
  303. package/dist/matter/pricing/pricing.js +153 -52
  304. package/dist/matter/pricing/pricing.js.map +1 -1
  305. package/dist/matter/product-information/product-information.d.ts +27 -4
  306. package/dist/matter/product-information/product-information.js +32 -15
  307. package/dist/matter/product-information/product-information.js.map +1 -1
  308. package/dist/matter/product-list/product-list.d.ts +24 -6
  309. package/dist/matter/product-list/product-list.js +32 -26
  310. package/dist/matter/product-list/product-list.js.map +1 -1
  311. package/dist/matter/product-shelf/product-shelf.d.ts +1 -3
  312. package/dist/matter/product-shelf/product-shelf.js +2 -15
  313. package/dist/matter/product-shelf/product-shelf.js.map +1 -1
  314. package/dist/matter/region/region.d.ts +33 -16
  315. package/dist/matter/region/region.js +59 -52
  316. package/dist/matter/region/region.js.map +1 -1
  317. package/dist/matter/save-card/save-card.d.ts +43 -8
  318. package/dist/matter/save-card/save-card.js +61 -23
  319. package/dist/matter/save-card/save-card.js.map +1 -1
  320. package/dist/matter/saved-cards/saved-cards.d.ts +113 -21
  321. package/dist/matter/saved-cards/saved-cards.js +349 -77
  322. package/dist/matter/saved-cards/saved-cards.js.map +1 -1
  323. package/dist/matter/shipping-address/address-payload.js +25 -0
  324. package/dist/matter/shipping-address/address-payload.js.map +1 -0
  325. package/dist/matter/shipping-address/country-descriptors.js +71 -71
  326. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  327. package/dist/matter/shipping-address/library-country-descriptors.js +136 -0
  328. package/dist/matter/shipping-address/library-country-descriptors.js.map +1 -0
  329. package/dist/matter/shipping-address/shipping-address.d.ts +312 -45
  330. package/dist/matter/shipping-address/shipping-address.js +443 -188
  331. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  332. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +250 -24
  333. package/dist/matter/shipping-simulator/shipping-simulator.js +257 -51
  334. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
  335. package/dist/matter/sign-in/sign-in.d.ts +108 -0
  336. package/dist/matter/sign-in/sign-in.js +285 -0
  337. package/dist/matter/sign-in/sign-in.js.map +1 -0
  338. package/dist/matter/sign-in-disclosure/sign-in-disclosure.d.ts +81 -0
  339. package/dist/matter/sign-in-disclosure/sign-in-disclosure.js +232 -0
  340. package/dist/matter/sign-in-disclosure/sign-in-disclosure.js.map +1 -0
  341. package/dist/matter/sign-in-form/sign-in-form.d.ts +93 -62
  342. package/dist/matter/sign-in-form/sign-in-form.js +134 -144
  343. package/dist/matter/sign-in-form/sign-in-form.js.map +1 -1
  344. package/dist/particles/binding-switcher/binding-switcher.d.ts +29 -8
  345. package/dist/particles/binding-switcher/binding-switcher.js +37 -26
  346. package/dist/particles/binding-switcher/binding-switcher.js.map +1 -1
  347. package/dist/particles/card-summary/card-summary.d.ts +38 -8
  348. package/dist/particles/card-summary/card-summary.js +55 -22
  349. package/dist/particles/card-summary/card-summary.js.map +1 -1
  350. package/dist/particles/carousel/carousel.d.ts +99 -11
  351. package/dist/particles/carousel/carousel.js +103 -35
  352. package/dist/particles/carousel/carousel.js.map +1 -1
  353. package/dist/particles/copy-text/copy-text.js +5 -15
  354. package/dist/particles/copy-text/copy-text.js.map +1 -1
  355. package/dist/particles/dialog/dialog.d.ts +14 -6
  356. package/dist/particles/dialog/dialog.js +6 -3
  357. package/dist/particles/dialog/dialog.js.map +1 -1
  358. package/dist/particles/drawer/drawer.js +1 -1
  359. package/dist/particles/drawer/drawer.js.map +1 -1
  360. package/dist/particles/email-field/email-field.d.ts +2 -1
  361. package/dist/particles/email-field/email-field.js +2 -1
  362. package/dist/particles/email-field/email-field.js.map +1 -1
  363. package/dist/particles/footer-link-group/footer-link-group.js +1 -0
  364. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
  365. package/dist/particles/form/form.d.ts +85 -13
  366. package/dist/particles/form/form.js +91 -42
  367. package/dist/particles/form/form.js.map +1 -1
  368. package/dist/particles/gallery/gallery.d.ts +129 -12
  369. package/dist/particles/gallery/gallery.js +121 -34
  370. package/dist/particles/gallery/gallery.js.map +1 -1
  371. package/dist/particles/order-details-back/order-details-back.d.ts +5 -3
  372. package/dist/particles/order-details-back/order-details-back.js +8 -10
  373. package/dist/particles/order-details-back/order-details-back.js.map +1 -1
  374. package/dist/particles/order-status-badge/order-status-badge.d.ts +3 -3
  375. package/dist/particles/order-status-badge/order-status-badge.js +4 -20
  376. package/dist/particles/order-status-badge/order-status-badge.js.map +1 -1
  377. package/dist/particles/password-field/password-field.d.ts +1 -1
  378. package/dist/particles/password-field/password-field.js +2 -4
  379. package/dist/particles/password-field/password-field.js.map +1 -1
  380. package/dist/particles/phone-field/phone-field.d.ts +4 -4
  381. package/dist/particles/phone-field/phone-field.js +8 -11
  382. package/dist/particles/phone-field/phone-field.js.map +1 -1
  383. package/dist/particles/spinner/spinner.d.ts +24 -4
  384. package/dist/particles/spinner/spinner.js +25 -9
  385. package/dist/particles/spinner/spinner.js.map +1 -1
  386. package/dist/particles/switch/switch.d.ts +4 -1
  387. package/dist/particles/switch/switch.js +3 -1
  388. package/dist/particles/switch/switch.js.map +1 -1
  389. package/dist/particles/toast/toast.d.ts +29 -3
  390. package/dist/particles/toast/toast.js +34 -10
  391. package/dist/particles/toast/toast.js.map +1 -1
  392. package/dist/schema.graphql +164 -56
  393. package/dist/sdk/address/address-fields.js +4 -4
  394. package/dist/sdk/address/address-fields.js.map +1 -1
  395. package/dist/sdk/address/constants.js +1 -6
  396. package/dist/sdk/address/constants.js.map +1 -1
  397. package/dist/sdk/address/messages.js +44 -44
  398. package/dist/sdk/address/messages.js.map +1 -1
  399. package/dist/sdk/address/postal-code.js +15 -2
  400. package/dist/sdk/address/postal-code.js.map +1 -1
  401. package/dist/sdk/address/types.d.ts +5 -3
  402. package/dist/sdk/address/validate-address.js +3 -3
  403. package/dist/sdk/address/validate-address.js.map +1 -1
  404. package/dist/sdk/analytics/use-analytics-actions.d.ts +1 -1
  405. package/dist/sdk/analytics/use-analytics-actions.js.map +1 -1
  406. package/dist/sdk/cart/use-cart-actions.js.map +1 -1
  407. package/dist/sdk/data/index.js +2 -2
  408. package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
  409. package/dist/sdk/generated/gql.js +1 -1
  410. package/dist/sdk/generated/gql.js.map +1 -1
  411. package/dist/sdk/generated/graphql.d.ts +20 -5
  412. package/dist/sdk/generated/graphql.js +6 -0
  413. package/dist/sdk/generated/graphql.js.map +1 -1
  414. package/dist/sdk/i18n/format-error-code.js +23 -0
  415. package/dist/sdk/i18n/format-error-code.js.map +1 -0
  416. package/dist/sdk/i18n/message-formatter.d.ts +22 -0
  417. package/dist/sdk/i18n/message-formatter.js +140 -0
  418. package/dist/sdk/i18n/message-formatter.js.map +1 -0
  419. package/dist/sdk/i18n/use-message-formatter.d.ts +8 -0
  420. package/dist/sdk/i18n/use-message-formatter.js +18 -0
  421. package/dist/sdk/i18n/use-message-formatter.js.map +1 -0
  422. package/dist/sdk/identity/use-identity-actions.js.map +1 -1
  423. package/dist/sdk/navigation/redirect.d.ts +2 -0
  424. package/dist/sdk/navigation/redirect.js +19 -1
  425. package/dist/sdk/navigation/redirect.js.map +1 -1
  426. package/dist/sdk/navigation/types.d.ts +13 -0
  427. package/dist/sdk/payment/bin-format.js +21 -0
  428. package/dist/sdk/payment/bin-format.js.map +1 -0
  429. package/dist/sdk/payment/challenge-return.js +37 -0
  430. package/dist/sdk/payment/challenge-return.js.map +1 -0
  431. package/dist/sdk/payment/confirmation-last-four.js +39 -0
  432. package/dist/sdk/payment/confirmation-last-four.js.map +1 -0
  433. package/dist/sdk/payment/gateway.d.ts +1 -1
  434. package/dist/sdk/payment/gateway.js +8 -2
  435. package/dist/sdk/payment/gateway.js.map +1 -1
  436. package/dist/sdk/payment/operations.d.ts +1 -0
  437. package/dist/sdk/payment/operations.js +28 -6
  438. package/dist/sdk/payment/operations.js.map +1 -1
  439. package/dist/sdk/payment/resumed-purchase.d.ts +1 -0
  440. package/dist/sdk/payment/resumed-purchase.js +119 -0
  441. package/dist/sdk/payment/resumed-purchase.js.map +1 -0
  442. package/dist/sdk/payment/security-code-mask.js +16 -23
  443. package/dist/sdk/payment/security-code-mask.js.map +1 -1
  444. package/dist/sdk/payment/submission-registry.js +6 -2
  445. package/dist/sdk/payment/submission-registry.js.map +1 -1
  446. package/dist/sdk/payment/use-payment-actions.d.ts +18 -3
  447. package/dist/sdk/payment/use-payment-actions.js +23 -4
  448. package/dist/sdk/payment/use-payment-actions.js.map +1 -1
  449. package/dist/sdk/payment/use-place-order.d.ts +10 -2
  450. package/dist/sdk/payment/use-place-order.js +138 -76
  451. package/dist/sdk/payment/use-place-order.js.map +1 -1
  452. package/dist/sdk/provider/storefront-provider.d.ts +1 -7
  453. package/dist/sdk/provider/storefront-provider.js +4 -11
  454. package/dist/sdk/provider/storefront-provider.js.map +1 -1
  455. package/dist/sdk/seo/entity-landing.d.ts +24 -0
  456. package/dist/sdk/seo/entity-landing.js +30 -0
  457. package/dist/sdk/seo/entity-landing.js.map +1 -0
  458. package/dist/sdk/seo/page-alternates.d.ts +3 -2
  459. package/dist/sdk/seo/page-alternates.js +4 -2
  460. package/dist/sdk/seo/page-alternates.js.map +1 -1
  461. package/dist/sdk/seo/search-landing.d.ts +42 -0
  462. package/dist/sdk/seo/search-landing.js +85 -0
  463. package/dist/sdk/seo/search-landing.js.map +1 -0
  464. package/dist/sdk/session/mock-session.d.ts +9 -0
  465. package/dist/sdk/session/mock-session.js +31 -0
  466. package/dist/sdk/session/mock-session.js.map +1 -0
  467. package/dist/sdk/session/read-server-session.d.ts +3 -0
  468. package/dist/sdk/session/read-server-session.js +5 -0
  469. package/dist/sdk/session/read-server-session.js.map +1 -1
  470. package/dist/sdk/session/return-path-segment.d.ts +10 -0
  471. package/dist/sdk/session/return-path-segment.js +15 -0
  472. package/dist/sdk/session/return-path-segment.js.map +1 -0
  473. package/dist/sdk/session/use-session-actions.js.map +1 -1
  474. package/dist/sdk/shipping/use-cart-shipping-simulation.js.map +1 -1
  475. package/dist/sdk/shipping/use-shipping-actions.js.map +1 -1
  476. package/dist/sdk/shipping/use-shipping-simulation.js.map +1 -1
  477. package/dist/utils/safe-href.d.ts +2 -0
  478. package/package.json +4 -3
  479. package/skills/storefront-asset/SKILL.md +2 -2
  480. package/skills/storefront-asset/references/api-side.md +27 -14
  481. package/skills/storefront-asset/references/findings.md +5 -2
  482. package/src/styles/tailwind.css +8 -0
  483. package/dist/matter/shipping-address/country-descriptors.d.ts +0 -1
  484. package/dist/message-locales.json +0 -7
  485. package/dist/sdk/i18n/client.d.ts +0 -4
  486. package/dist/sdk/i18n/client.js +0 -4
  487. package/dist/sdk/i18n/locales.d.ts +0 -8
  488. package/dist/sdk/i18n/locales.js +0 -57
  489. package/dist/sdk/i18n/locales.js.map +0 -1
  490. package/dist/sdk/i18n/messages/en-US.js +0 -183
  491. package/dist/sdk/i18n/messages/en-US.js.map +0 -1
  492. package/dist/sdk/i18n/messages/en-US.json +0 -178
  493. package/dist/sdk/i18n/messages/en-US.json.d.ts +0 -182
  494. package/dist/sdk/i18n/messages/es-ES.js +0 -183
  495. package/dist/sdk/i18n/messages/es-ES.js.map +0 -1
  496. package/dist/sdk/i18n/messages/es-ES.json +0 -178
  497. package/dist/sdk/i18n/messages/pt-BR.js +0 -183
  498. package/dist/sdk/i18n/messages/pt-BR.js.map +0 -1
  499. package/dist/sdk/i18n/messages/pt-BR.json +0 -178
  500. package/dist/sdk/i18n/provider.d.ts +0 -1
  501. package/dist/sdk/i18n/provider.js +0 -30
  502. package/dist/sdk/i18n/provider.js.map +0 -1
  503. package/dist/sdk/i18n/server.d.ts +0 -28
  504. package/dist/sdk/i18n/server.js +0 -59
  505. package/dist/sdk/i18n/server.js.map +0 -1
  506. package/dist/utils/resolve-authored-copy.js +0 -18
  507. package/dist/utils/resolve-authored-copy.js.map +0 -1
  508. package/dist/utils/substitute-template.js +0 -33
  509. package/dist/utils/substitute-template.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { ContentValue } from "../../core/dist/define-content-type.js";
1
+ import { ContentValue, MessageLocaleProp } from "../../core/dist/define-content-type.js";
2
2
  import { ComponentDefinition } from "../../core/dist/define-component.js";
3
3
  import "../../core/dist/index.js";
4
4
  import { ComponentPropsWithRef, ReactNode, Ref } from "react";
@@ -6,7 +6,7 @@ import { ComponentPropsWithRef, ReactNode, Ref } from "react";
6
6
  export declare const OrderDeliveryGroupContent: {
7
7
  readonly id: "order-delivery-group";
8
8
  readonly title: "Order Delivery Group";
9
- readonly description: "The labels of a delivery group. The item-count sentences keep {count}: one for a single item, the other for the rest.";
9
+ readonly description: "The labels of a delivery group.";
10
10
  readonly schema: {
11
11
  readonly type: "object";
12
12
  readonly additionalProperties: false;
@@ -14,52 +14,79 @@ export declare const OrderDeliveryGroupContent: {
14
14
  readonly label: {
15
15
  readonly type: "string";
16
16
  readonly title: "Accessible name";
17
+ readonly format: "icu-message";
18
+ readonly messageSource: "Deliveries";
17
19
  };
18
20
  readonly delivery: {
19
21
  readonly type: "string";
20
22
  readonly title: "Delivery";
23
+ readonly format: "icu-message";
24
+ readonly messageSource: "Delivery";
21
25
  };
22
26
  readonly pickup: {
23
27
  readonly type: "string";
24
28
  readonly title: "Pickup";
29
+ readonly format: "icu-message";
30
+ readonly messageSource: "Pickup";
25
31
  };
26
32
  readonly estimate: {
27
33
  readonly type: "string";
28
34
  readonly title: "Estimated delivery";
35
+ readonly format: "icu-message";
36
+ readonly messageSource: "Estimated delivery";
29
37
  };
30
- readonly itemsOne: {
38
+ readonly items: {
31
39
  readonly type: "string";
32
- readonly title: "One item";
33
- readonly description: "Keep the placeholder {count}.";
34
- };
35
- readonly itemsOther: {
36
- readonly type: "string";
37
- readonly title: "Many items";
38
- readonly description: "Keep the placeholder {count}.";
40
+ readonly title: "Item count";
41
+ readonly format: "icu-message";
42
+ readonly messageSource: "{count, plural, one {# item} other {# items}}";
43
+ readonly messageArguments: {
44
+ readonly type: "object";
45
+ readonly properties: {
46
+ readonly count: {
47
+ readonly type: "integer";
48
+ };
49
+ };
50
+ };
51
+ readonly messageExample: {
52
+ readonly count: 2;
53
+ };
39
54
  };
40
55
  readonly subtotal: {
41
56
  readonly type: "string";
42
57
  readonly title: "Subtotal";
58
+ readonly format: "icu-message";
59
+ readonly messageSource: "Subtotal";
43
60
  };
44
61
  readonly quantity: {
45
62
  readonly type: "string";
46
63
  readonly title: "Quantity";
64
+ readonly format: "icu-message";
65
+ readonly messageSource: "Quantity";
47
66
  };
48
67
  readonly unitPrice: {
49
68
  readonly type: "string";
50
69
  readonly title: "Unit price";
70
+ readonly format: "icu-message";
71
+ readonly messageSource: "Unit price";
51
72
  };
52
73
  readonly listPrice: {
53
74
  readonly type: "string";
54
75
  readonly title: "List price";
76
+ readonly format: "icu-message";
77
+ readonly messageSource: "List price";
55
78
  };
56
79
  readonly total: {
57
80
  readonly type: "string";
58
81
  readonly title: "Total";
82
+ readonly format: "icu-message";
83
+ readonly messageSource: "Total";
59
84
  };
60
85
  readonly tax: {
61
86
  readonly type: "string";
62
87
  readonly title: "Tax";
88
+ readonly format: "icu-message";
89
+ readonly messageSource: "Tax";
63
90
  };
64
91
  };
65
92
  };
@@ -96,9 +123,7 @@ export type OrderDeliveryOptionData = {
96
123
  export type OrderDeliveryGroupData = {
97
124
  deliveryOptions: OrderDeliveryOptionData[];
98
125
  } | null;
99
- export type OrderDeliveryGroupProps = Readonly<{
100
- /** Accessible name of the section. Content wins, then this prop, then the catalogue. */
101
- label?: string;
126
+ export type OrderDeliveryGroupProps = MessageLocaleProp & Readonly<{
102
127
  $content?: OrderDeliveryGroupContentValue;
103
128
  $data?: OrderDeliveryGroupData;
104
129
  /** Rendered once per option, after its rows, inside the `order-delivery-option` context. */
@@ -112,17 +137,8 @@ export type OrderDeliveryOptionContextValue = Readonly<{
112
137
  }>;
113
138
  /** The option index published by the enclosing `OrderDeliveryGroup`, or null outside one. */
114
139
  export declare function useOrderDeliveryOption(): OrderDeliveryOptionContextValue | null;
115
- export declare const OrderDeliveryGroupDefinition: ComponentDefinition<Readonly<{
116
- /** Accessible name of the section. Content wins, then this prop, then the catalogue. */
117
- label?: string;
118
- $content?: OrderDeliveryGroupContentValue;
119
- $data?: OrderDeliveryGroupData;
120
- /** Rendered once per option, after its rows, inside the `order-delivery-option` context. */
121
- children?: ReactNode;
122
- className?: string;
123
- ref?: Ref<HTMLElement>;
124
- }>>;
140
+ export declare const OrderDeliveryGroupDefinition: ComponentDefinition<OrderDeliveryGroupProps>;
125
141
  export declare function OrderDeliveryGroupSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>): import("react/jsx-runtime").JSX.Element;
126
- export declare function OrderDeliveryGroup({ label, $content, $data, children, className, ref }: OrderDeliveryGroupProps): import("react/jsx-runtime").JSX.Element | null;
142
+ export declare function OrderDeliveryGroup({ $content, $data, children, className, ref }: OrderDeliveryGroupProps): import("react/jsx-runtime").JSX.Element | null;
127
143
  //#endregion
128
144
  //# sourceMappingURL=order-delivery-group.d.ts.map
@@ -3,7 +3,7 @@ import { defineComponent } from "../../core/dist/define-component.js";
3
3
  import { defineContentType } from "../../core/dist/define-content-type.js";
4
4
  import "../../core/dist/index.js";
5
5
  import { useStorefrontFormatters } from "../../sdk/format/client.js";
6
- import { useIntl } from "../../sdk/i18n/client.js";
6
+ import { useMessageFormatter } from "../../sdk/i18n/use-message-formatter.js";
7
7
  import { AccordionHeader, AccordionItem, AccordionPanel, AccordionRoot, AccordionTrigger } from "../../particles/accordion/accordion.js";
8
8
  import { createContext, useContext, useMemo } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -51,60 +51,81 @@ const fragment = `
51
51
  const OrderDeliveryGroupContent = defineContentType({
52
52
  id: "order-delivery-group",
53
53
  title: "Order Delivery Group",
54
- description: "The labels of a delivery group. The item-count sentences keep {count}: one for a single item, the other for the rest.",
54
+ description: "The labels of a delivery group.",
55
55
  schema: {
56
56
  type: "object",
57
57
  additionalProperties: false,
58
58
  properties: {
59
59
  label: {
60
60
  type: "string",
61
- title: "Accessible name"
61
+ title: "Accessible name",
62
+ format: "icu-message",
63
+ messageSource: "Deliveries"
62
64
  },
63
65
  delivery: {
64
66
  type: "string",
65
- title: "Delivery"
67
+ title: "Delivery",
68
+ format: "icu-message",
69
+ messageSource: "Delivery"
66
70
  },
67
71
  pickup: {
68
72
  type: "string",
69
- title: "Pickup"
73
+ title: "Pickup",
74
+ format: "icu-message",
75
+ messageSource: "Pickup"
70
76
  },
71
77
  estimate: {
72
78
  type: "string",
73
- title: "Estimated delivery"
79
+ title: "Estimated delivery",
80
+ format: "icu-message",
81
+ messageSource: "Estimated delivery"
74
82
  },
75
- itemsOne: {
83
+ items: {
76
84
  type: "string",
77
- title: "One item",
78
- description: "Keep the placeholder {count}."
79
- },
80
- itemsOther: {
81
- type: "string",
82
- title: "Many items",
83
- description: "Keep the placeholder {count}."
85
+ title: "Item count",
86
+ format: "icu-message",
87
+ messageSource: "{count, plural, one {# item} other {# items}}",
88
+ messageArguments: {
89
+ type: "object",
90
+ properties: { count: { type: "integer" } }
91
+ },
92
+ messageExample: { count: 2 }
84
93
  },
85
94
  subtotal: {
86
95
  type: "string",
87
- title: "Subtotal"
96
+ title: "Subtotal",
97
+ format: "icu-message",
98
+ messageSource: "Subtotal"
88
99
  },
89
100
  quantity: {
90
101
  type: "string",
91
- title: "Quantity"
102
+ title: "Quantity",
103
+ format: "icu-message",
104
+ messageSource: "Quantity"
92
105
  },
93
106
  unitPrice: {
94
107
  type: "string",
95
- title: "Unit price"
108
+ title: "Unit price",
109
+ format: "icu-message",
110
+ messageSource: "Unit price"
96
111
  },
97
112
  listPrice: {
98
113
  type: "string",
99
- title: "List price"
114
+ title: "List price",
115
+ format: "icu-message",
116
+ messageSource: "List price"
100
117
  },
101
118
  total: {
102
119
  type: "string",
103
- title: "Total"
120
+ title: "Total",
121
+ format: "icu-message",
122
+ messageSource: "Total"
104
123
  },
105
124
  tax: {
106
125
  type: "string",
107
- title: "Tax"
126
+ title: "Tax",
127
+ format: "icu-message",
128
+ messageSource: "Tax"
108
129
  }
109
130
  }
110
131
  }
@@ -126,12 +147,6 @@ function estimateInstant(value) {
126
147
  const date = new Date(value);
127
148
  return Number.isNaN(date.getTime()) ? null : date;
128
149
  }
129
- function authored(value) {
130
- return value?.trim() || void 0;
131
- }
132
- function sentence(value, fallback) {
133
- return authored(value) ?? fallback;
134
- }
135
150
  const OrderDeliveryGroupDefinition = defineComponent({
136
151
  name: "OrderDeliveryGroup",
137
152
  importPath: "@vtex/faststore/components",
@@ -144,12 +159,9 @@ const OrderDeliveryGroupDefinition = defineComponent({
144
159
  label: "Order Delivery Group",
145
160
  category: "content"
146
161
  },
147
- schema: { label: {
148
- type: "string",
149
- label: "Accessible name"
150
- } },
162
+ schema: {},
151
163
  providesContext: "order-delivery-option",
152
- guideline: "The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content; a blank field keeps the catalogue. A single option arrives open; two or more arrive closed. Reads customerOrder by the orderId route segment; place it once on the order details page. Children such as OrderDeliveryAddress render once per option, after its rows."
164
+ guideline: "The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content. A single option arrives open; two or more arrive closed. Reads customerOrder by the orderId route segment; place it once on the order details page. Children such as OrderDeliveryAddress render once per option, after its rows."
153
165
  });
154
166
  function moneyAmount(money) {
155
167
  if (!money || typeof money.amount === "string" && money.amount.trim() === "") return null;
@@ -190,35 +202,13 @@ function OrderDeliveryGroupSkeleton({ className, ...props }) {
190
202
  children: [/* @__PURE__ */ jsx("span", { "data-fs-order-delivery-group-skeleton-option": "" }), /* @__PURE__ */ jsx("span", { "data-fs-order-delivery-group-skeleton-option": "" })]
191
203
  });
192
204
  }
193
- function deliveryLabels(content, label, intl) {
194
- const itemsOne = authored(content?.itemsOne);
195
- const itemsOther = authored(content?.itemsOther);
196
- return {
197
- region: authored(content?.label) ?? (label?.trim() || intl.formatMessage({ id: "fs/order-delivery-group.label" })),
198
- delivery: sentence(content?.delivery, intl.formatMessage({ id: "fs/order-delivery-group.channel.delivery" })),
199
- pickup: sentence(content?.pickup, intl.formatMessage({ id: "fs/order-delivery-group.channel.pickup-in-point" })),
200
- estimate: sentence(content?.estimate, intl.formatMessage({ id: "fs/order-delivery-group.estimate" })),
201
- subtotal: sentence(content?.subtotal, intl.formatMessage({ id: "fs/order-delivery-group.subtotal" })),
202
- quantity: sentence(content?.quantity, intl.formatMessage({ id: "fs/order-delivery-group.quantity" })),
203
- unitPrice: sentence(content?.unitPrice, intl.formatMessage({ id: "fs/order-delivery-group.unit-price" })),
204
- listPrice: sentence(content?.listPrice, intl.formatMessage({ id: "fs/order-delivery-group.list-price" })),
205
- total: sentence(content?.total, intl.formatMessage({ id: "fs/order-delivery-group.total" })),
206
- tax: sentence(content?.tax, intl.formatMessage({ id: "fs/order-delivery-group.tax" })),
207
- items(count) {
208
- const template = count === 1 ? itemsOne : itemsOther;
209
- if (template) return template.replaceAll("{count}", String(count));
210
- return intl.formatMessage({ id: "fs/order-delivery-group.items" }, { count });
211
- }
212
- };
213
- }
214
- function OrderDeliveryGroup({ label, $content, $data, children, className, ref }) {
215
- const intl = useIntl();
205
+ function OrderDeliveryGroup({ $content, $data, children, className, ref }) {
206
+ const messages = useMessageFormatter(OrderDeliveryGroupContent, $content);
216
207
  const options = $data?.deliveryOptions ?? [];
217
- const labels = deliveryLabels($content, label, intl);
218
208
  if (options.length === 0) return null;
219
209
  return /* @__PURE__ */ jsx("section", {
220
210
  ref,
221
- "aria-label": labels.region,
211
+ "aria-label": messages.format("label"),
222
212
  className,
223
213
  "data-fs-order-delivery-group": "",
224
214
  "data-fs-order-delivery-group-count": options.length,
@@ -229,20 +219,20 @@ function OrderDeliveryGroup({ label, $content, $data, children, className, ref }
229
219
  value: optionValue(index),
230
220
  index,
231
221
  option,
232
- labels,
222
+ messages,
233
223
  children
234
224
  }, optionValue(index)))
235
225
  })
236
226
  });
237
227
  }
238
- function channelName(channel, labels) {
239
- if (channel === "delivery") return labels.delivery;
240
- if (channel === "pickup-in-point") return labels.pickup;
228
+ function channelName(channel, messages) {
229
+ if (channel === "delivery") return messages.format("delivery");
230
+ if (channel === "pickup-in-point") return messages.format("pickup");
241
231
  return null;
242
232
  }
243
- function DeliveryOption({ value, index, option, labels, children }) {
233
+ function DeliveryOption({ value, index, option, messages, children }) {
244
234
  const { formatMoney, formatDate } = useStorefrontFormatters();
245
- const name = option.selectedSla?.trim() || channelName(option.deliveryChannel, labels);
235
+ const name = option.selectedSla?.trim() || channelName(option.deliveryChannel, messages);
246
236
  const total = subtotal(option.items);
247
237
  const estimate = estimateInstant(option.shippingEstimateDate);
248
238
  const optionContext = useMemo(() => ({ index }), [index]);
@@ -261,7 +251,7 @@ function DeliveryOption({ value, index, option, labels, children }) {
261
251
  }) : null,
262
252
  estimate ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
263
253
  "data-fs-order-delivery-group-option-estimate-label": "",
264
- children: labels.estimate
254
+ children: messages.format("estimate")
265
255
  }), /* @__PURE__ */ jsx("time", {
266
256
  dateTime: option.shippingEstimateDate ?? void 0,
267
257
  "data-fs-order-delivery-group-option-estimate": "",
@@ -269,11 +259,11 @@ function DeliveryOption({ value, index, option, labels, children }) {
269
259
  })] }) : null,
270
260
  /* @__PURE__ */ jsx("span", {
271
261
  "data-fs-order-delivery-group-option-items": "",
272
- children: labels.items(itemCount(option.items))
262
+ children: messages.format("items", { count: itemCount(option.items) })
273
263
  }),
274
264
  total ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
275
265
  "data-fs-order-delivery-group-option-subtotal-label": "",
276
- children: labels.subtotal
266
+ children: messages.format("subtotal")
277
267
  }), /* @__PURE__ */ jsx("span", {
278
268
  "data-fs-order-delivery-group-option-subtotal": "",
279
269
  children: formatMoney(total.amount, { currency: total.currencyCode })
@@ -286,7 +276,7 @@ function DeliveryOption({ value, index, option, labels, children }) {
286
276
  "data-fs-order-delivery-group-rows": "",
287
277
  children: option.items.map((line) => /* @__PURE__ */ jsx(DeliveryRow, {
288
278
  line,
289
- labels
279
+ messages
290
280
  }, line.id))
291
281
  }), children ? /* @__PURE__ */ jsx(OrderDeliveryOptionContext.Provider, {
292
282
  value: optionContext,
@@ -317,20 +307,20 @@ const MONEY_FACTS = {
317
307
  value: { "data-fs-order-delivery-group-row-tax": "" }
318
308
  }
319
309
  };
320
- function MoneyFact({ kind, money, labels }) {
310
+ function MoneyFact({ kind, money, messages }) {
321
311
  const { formatMoney } = useStorefrontFormatters();
322
312
  const amount = moneyAmount(money);
323
313
  if (amount == null) return null;
324
314
  const fact = MONEY_FACTS[kind];
325
315
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
326
316
  ...fact.label,
327
- children: labels[fact.field]
317
+ children: messages.format(fact.field)
328
318
  }), /* @__PURE__ */ jsx("span", {
329
319
  ...fact.value,
330
320
  children: formatMoney(amount, { currency: money.currencyCode })
331
321
  })] });
332
322
  }
333
- function DeliveryRow({ line, labels }) {
323
+ function DeliveryRow({ line, messages }) {
334
324
  const listPrice = moneyAmount(line.listPrice) === moneyAmount(line.sellingPrice) ? null : line.listPrice;
335
325
  return /* @__PURE__ */ jsxs("li", {
336
326
  "data-fs-order-delivery-group-row": "",
@@ -362,7 +352,7 @@ function DeliveryRow({ line, labels }) {
362
352
  "data-fs-order-delivery-group-row-fact": "",
363
353
  children: [/* @__PURE__ */ jsx("span", {
364
354
  "data-fs-order-delivery-group-row-quantity-label": "",
365
- children: labels.quantity
355
+ children: messages.format("quantity")
366
356
  }), /* @__PURE__ */ jsx("span", {
367
357
  "data-fs-order-delivery-group-row-quantity": "",
368
358
  children: line.quantity
@@ -371,17 +361,17 @@ function DeliveryRow({ line, labels }) {
371
361
  line.sellingPrice ? /* @__PURE__ */ jsx(FactLine, { children: /* @__PURE__ */ jsx(MoneyFact, {
372
362
  kind: "unit-price",
373
363
  money: line.sellingPrice,
374
- labels
364
+ messages
375
365
  }) }) : null,
376
366
  listPrice ? /* @__PURE__ */ jsx(FactLine, { children: /* @__PURE__ */ jsx(MoneyFact, {
377
367
  kind: "list-price",
378
368
  money: listPrice,
379
- labels
369
+ messages
380
370
  }) }) : null,
381
371
  line.tax ? /* @__PURE__ */ jsx(FactLine, { children: /* @__PURE__ */ jsx(MoneyFact, {
382
372
  kind: "tax",
383
373
  money: line.tax,
384
- labels
374
+ messages
385
375
  }) }) : null
386
376
  ]
387
377
  }),
@@ -390,7 +380,7 @@ function DeliveryRow({ line, labels }) {
390
380
  children: /* @__PURE__ */ jsx(MoneyFact, {
391
381
  kind: "total",
392
382
  money: line.total,
393
- labels
383
+ messages
394
384
  })
395
385
  }) : null
396
386
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"order-delivery-group.js","names":[],"sources":["../../../src/matter/order-delivery-group/order-delivery-group.tsx"],"sourcesContent":["'use client';\n\nimport { type ContentValue, defineComponent, defineContentType } from '@vtex/fs-core';\nimport { type ComponentPropsWithRef, createContext, type ReactNode, type Ref, useContext, useMemo } from 'react';\nimport {\n AccordionHeader,\n AccordionItem,\n AccordionPanel,\n AccordionRoot,\n AccordionTrigger,\n} from '../../particles/accordion/accordion.js';\nimport { useStorefrontFormatters } from '../../sdk/format/client.js';\nimport { useIntl } from '../../sdk/i18n/client.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderDeliveryGroupData on Query {\n customerOrder(id: $orderId) {\n deliveryOptions {\n selectedSla\n deliveryChannel\n shippingEstimateDate\n items {\n id\n name\n quantity\n image {\n url\n altText\n }\n sellingPrice {\n amount\n currencyCode\n }\n listPrice {\n amount\n currencyCode\n }\n total {\n amount\n currencyCode\n }\n tax {\n amount\n currencyCode\n }\n customFields {\n name\n value\n }\n }\n }\n }\n }\n`;\n\nexport const OrderDeliveryGroupContent = defineContentType({\n id: 'order-delivery-group',\n title: 'Order Delivery Group',\n description:\n 'The labels of a delivery group. The item-count sentences keep {count}: one for a single item, the other for the rest.',\n schema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n label: { type: 'string', title: 'Accessible name' },\n delivery: { type: 'string', title: 'Delivery' },\n pickup: { type: 'string', title: 'Pickup' },\n estimate: { type: 'string', title: 'Estimated delivery' },\n itemsOne: { type: 'string', title: 'One item', description: 'Keep the placeholder {count}.' },\n itemsOther: { type: 'string', title: 'Many items', description: 'Keep the placeholder {count}.' },\n subtotal: { type: 'string', title: 'Subtotal' },\n quantity: { type: 'string', title: 'Quantity' },\n unitPrice: { type: 'string', title: 'Unit price' },\n listPrice: { type: 'string', title: 'List price' },\n total: { type: 'string', title: 'Total' },\n tax: { type: 'string', title: 'Tax' },\n },\n },\n});\n\nexport type OrderDeliveryGroupContentValue = ContentValue<typeof OrderDeliveryGroupContent>;\n\nexport type OrderDeliveryMoney = { amount: string | number; currencyCode: string };\n\nexport type OrderDeliveryItemData = {\n id: string;\n name: string;\n quantity: number;\n image: { url: string; altText: string | null } | null;\n sellingPrice: OrderDeliveryMoney | null;\n listPrice: OrderDeliveryMoney | null;\n total: OrderDeliveryMoney | null;\n tax: OrderDeliveryMoney | null;\n customFields: Array<{ name: string; value: string }>;\n};\n\nexport type OrderDeliveryOptionData = {\n selectedSla: string | null;\n deliveryChannel: string | null;\n shippingEstimateDate: string | null;\n items: OrderDeliveryItemData[];\n};\n\n/** Unwrapped `CustomerOrder` slice. Null when the id does not resolve to the shopper's order. */\nexport type OrderDeliveryGroupData = {\n deliveryOptions: OrderDeliveryOptionData[];\n} | null;\n\nexport type OrderDeliveryGroupProps = Readonly<{\n /** Accessible name of the section. Content wins, then this prop, then the catalogue. */\n label?: string;\n $content?: OrderDeliveryGroupContentValue;\n $data?: OrderDeliveryGroupData;\n /** Rendered once per option, after its rows, inside the `order-delivery-option` context. */\n children?: ReactNode;\n className?: string;\n ref?: Ref<HTMLElement>;\n}>;\n\n/** Which delivery option the children of `OrderDeliveryGroup` are rendering inside. */\nexport type OrderDeliveryOptionContextValue = Readonly<{ index: number }>;\n\nconst OrderDeliveryOptionContext = createContext<OrderDeliveryOptionContextValue | null>(null);\n\n/** The option index published by the enclosing `OrderDeliveryGroup`, or null outside one. */\nexport function useOrderDeliveryOption(): OrderDeliveryOptionContextValue | null {\n return useContext(OrderDeliveryOptionContext);\n}\n\nconst ESTIMATE_FORMAT: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n};\n\nfunction estimateInstant(value: string | null | undefined): Date | null {\n if (!value?.trim()) {\n return null;\n }\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\ntype DeliveryLabels = {\n region: string;\n delivery: string;\n pickup: string;\n estimate: string;\n subtotal: string;\n quantity: string;\n unitPrice: string;\n listPrice: string;\n total: string;\n tax: string;\n items: (count: number) => string;\n};\n\nfunction authored(value: string | undefined): string | undefined {\n const trimmed = value?.trim();\n return trimmed || undefined;\n}\n\nfunction sentence(value: string | undefined, fallback: string): string {\n return authored(value) ?? fallback;\n}\n\nexport const OrderDeliveryGroupDefinition = defineComponent<OrderDeliveryGroupProps>({\n name: 'OrderDeliveryGroup',\n importPath: '@vtex/faststore/components',\n component: OrderDeliveryGroup,\n content: OrderDeliveryGroupContent,\n fragment,\n fetchStrategy: 'static',\n skeleton: OrderDeliveryGroupSkeleton,\n editor: { label: 'Order Delivery Group', category: 'content' },\n schema: {\n label: { type: 'string', label: 'Accessible name' },\n },\n providesContext: 'order-delivery-option',\n guideline:\n 'The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content; a blank field keeps the catalogue. A single option arrives open; two or more arrive closed. Reads customerOrder by the orderId route segment; place it once on the order details page. Children such as OrderDeliveryAddress render once per option, after its rows.',\n});\n\nfunction moneyAmount(money: OrderDeliveryMoney | null): number | null {\n // Number('') and Number(' ') are 0, which would print a blank upstream amount as a real zero.\n if (!money || (typeof money.amount === 'string' && money.amount.trim() === '')) {\n return null;\n }\n const value = typeof money.amount === 'number' ? money.amount : Number(money.amount);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction optionValue(index: number): string {\n return `option-${index}`;\n}\n\nfunction initialOpen(options: OrderDeliveryOptionData[]): string[] {\n return options.length === 1 ? [optionValue(0)] : [];\n}\n\nfunction itemCount(items: OrderDeliveryItemData[]): number {\n return items.reduce((sum, line) => sum + line.quantity, 0);\n}\n\n/** The sum of the line totals the API returned, in cents, in the currency of the first total. */\nfunction subtotal(items: OrderDeliveryItemData[]): { amount: number; currencyCode: string } | null {\n let cents = 0;\n let currencyCode: string | null = null;\n for (const line of items) {\n if (!line.total) {\n continue;\n }\n const amount = moneyAmount(line.total);\n if (amount == null) {\n continue;\n }\n cents += Math.round(amount * 100);\n currencyCode ??= line.total.currencyCode;\n }\n return currencyCode ? { amount: cents / 100, currencyCode } : null;\n}\n\nexport function OrderDeliveryGroupSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-delivery-group-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n </div>\n );\n}\n\nfunction deliveryLabels(\n content: OrderDeliveryGroupContentValue | undefined,\n label: string | undefined,\n intl: ReturnType<typeof useIntl>,\n): DeliveryLabels {\n const itemsOne = authored(content?.itemsOne);\n const itemsOther = authored(content?.itemsOther);\n return {\n region: authored(content?.label) ?? (label?.trim() || intl.formatMessage({ id: 'fs/order-delivery-group.label' })),\n delivery: sentence(content?.delivery, intl.formatMessage({ id: 'fs/order-delivery-group.channel.delivery' })),\n pickup: sentence(content?.pickup, intl.formatMessage({ id: 'fs/order-delivery-group.channel.pickup-in-point' })),\n estimate: sentence(content?.estimate, intl.formatMessage({ id: 'fs/order-delivery-group.estimate' })),\n subtotal: sentence(content?.subtotal, intl.formatMessage({ id: 'fs/order-delivery-group.subtotal' })),\n quantity: sentence(content?.quantity, intl.formatMessage({ id: 'fs/order-delivery-group.quantity' })),\n unitPrice: sentence(content?.unitPrice, intl.formatMessage({ id: 'fs/order-delivery-group.unit-price' })),\n listPrice: sentence(content?.listPrice, intl.formatMessage({ id: 'fs/order-delivery-group.list-price' })),\n total: sentence(content?.total, intl.formatMessage({ id: 'fs/order-delivery-group.total' })),\n tax: sentence(content?.tax, intl.formatMessage({ id: 'fs/order-delivery-group.tax' })),\n items(count: number) {\n const template = count === 1 ? itemsOne : itemsOther;\n if (template) {\n return template.replaceAll('{count}', String(count));\n }\n return intl.formatMessage({ id: 'fs/order-delivery-group.items' }, { count });\n },\n };\n}\n\nexport function OrderDeliveryGroup({ label, $content, $data, children, className, ref }: OrderDeliveryGroupProps) {\n const intl = useIntl();\n const options = $data?.deliveryOptions ?? [];\n const labels = deliveryLabels($content, label, intl);\n\n if (options.length === 0) {\n return null;\n }\n\n return (\n <section\n ref={ref}\n aria-label={labels.region}\n className={className}\n data-fs-order-delivery-group=\"\"\n data-fs-order-delivery-group-count={options.length}\n >\n <AccordionRoot openMultiple defaultValue={initialOpen(options)}>\n {options.map((option, index) => (\n <DeliveryOption\n key={optionValue(index)}\n value={optionValue(index)}\n index={index}\n option={option}\n labels={labels}\n >\n {children}\n </DeliveryOption>\n ))}\n </AccordionRoot>\n </section>\n );\n}\n\ntype DeliveryOptionProps = Readonly<{\n value: string;\n index: number;\n option: OrderDeliveryOptionData;\n labels: DeliveryLabels;\n children?: ReactNode;\n}>;\n\nfunction channelName(channel: string | null, labels: DeliveryLabels): string | null {\n if (channel === 'delivery') {\n return labels.delivery;\n }\n if (channel === 'pickup-in-point') {\n return labels.pickup;\n }\n return null;\n}\n\nfunction DeliveryOption({ value, index, option, labels, children }: DeliveryOptionProps) {\n const { formatMoney, formatDate } = useStorefrontFormatters();\n const name = option.selectedSla?.trim() || channelName(option.deliveryChannel, labels);\n const total = subtotal(option.items);\n const estimate = estimateInstant(option.shippingEstimateDate);\n const optionContext = useMemo(() => ({ index }), [index]);\n\n return (\n <AccordionItem\n value={value}\n data-fs-order-delivery-group-option=\"\"\n data-fs-order-delivery-group-option-channel={option.deliveryChannel ?? undefined}\n >\n <AccordionHeader data-fs-order-delivery-group-option-header=\"\">\n <AccordionTrigger data-fs-order-delivery-group-option-trigger=\"\">\n {name ? <span data-fs-order-delivery-group-option-name=\"\">{name}</span> : null}\n {estimate ? (\n <>\n <span data-fs-order-delivery-group-option-estimate-label=\"\">{labels.estimate}</span>\n <time dateTime={option.shippingEstimateDate ?? undefined} data-fs-order-delivery-group-option-estimate=\"\">\n {formatDate(estimate, ESTIMATE_FORMAT)}\n </time>\n </>\n ) : null}\n <span data-fs-order-delivery-group-option-items=\"\">{labels.items(itemCount(option.items))}</span>\n {total ? (\n <>\n <span data-fs-order-delivery-group-option-subtotal-label=\"\">{labels.subtotal}</span>\n <span data-fs-order-delivery-group-option-subtotal=\"\">\n {formatMoney(total.amount, { currency: total.currencyCode })}\n </span>\n </>\n ) : null}\n </AccordionTrigger>\n </AccordionHeader>\n <AccordionPanel data-fs-order-delivery-group-option-panel=\"\">\n <ul data-fs-order-delivery-group-rows=\"\">\n {option.items.map((line) => (\n <DeliveryRow key={line.id} line={line} labels={labels} />\n ))}\n </ul>\n {children ? (\n <OrderDeliveryOptionContext.Provider value={optionContext}>{children}</OrderDeliveryOptionContext.Provider>\n ) : null}\n </AccordionPanel>\n </AccordionItem>\n );\n}\n\ntype MoneyLabel = 'unitPrice' | 'listPrice' | 'total' | 'tax';\n\nconst MONEY_FACTS = {\n 'unit-price': {\n field: 'unitPrice',\n label: { 'data-fs-order-delivery-group-row-unit-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-unit-price': '' },\n },\n 'list-price': {\n field: 'listPrice',\n label: { 'data-fs-order-delivery-group-row-list-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-list-price': '' },\n },\n total: {\n field: 'total',\n label: { 'data-fs-order-delivery-group-row-total-label': '' },\n value: { 'data-fs-order-delivery-group-row-total': '' },\n },\n tax: {\n field: 'tax',\n label: { 'data-fs-order-delivery-group-row-tax-label': '' },\n value: { 'data-fs-order-delivery-group-row-tax': '' },\n },\n} as const satisfies Record<string, { field: MoneyLabel; label: object; value: object }>;\n\ntype MoneyFactProps = Readonly<{\n kind: keyof typeof MONEY_FACTS;\n money: OrderDeliveryMoney;\n labels: DeliveryLabels;\n}>;\n\nfunction MoneyFact({ kind, money, labels }: MoneyFactProps) {\n const { formatMoney } = useStorefrontFormatters();\n const amount = moneyAmount(money);\n if (amount == null) {\n return null;\n }\n const fact = MONEY_FACTS[kind];\n\n return (\n <>\n <span {...fact.label}>{labels[fact.field]}</span>\n <span {...fact.value}>{formatMoney(amount, { currency: money.currencyCode })}</span>\n </>\n );\n}\n\nfunction DeliveryRow({ line, labels }: Readonly<{ line: OrderDeliveryItemData; labels: DeliveryLabels }>) {\n const listPrice = moneyAmount(line.listPrice) === moneyAmount(line.sellingPrice) ? null : line.listPrice;\n\n return (\n <li data-fs-order-delivery-group-row=\"\">\n {line.image ? (\n // biome-ignore lint/performance/noImgElement: order line image URL is dynamic; matter stays Next-agnostic.\n <img\n src={line.image.url}\n alt={line.image.altText ?? line.name}\n data-fs-order-delivery-group-row-image=\"\"\n data-fs-image=\"\"\n />\n ) : null}\n <span data-fs-order-delivery-group-row-details=\"\">\n <span data-fs-order-delivery-group-row-name=\"\">{line.name}</span>\n {line.customFields.map((field) => (\n <span key={field.name} data-fs-order-delivery-group-row-custom-field=\"\">\n <span data-fs-order-delivery-group-row-custom-field-name=\"\">{field.name}</span>\n <span data-fs-order-delivery-group-row-custom-field-value=\"\">{field.value}</span>\n </span>\n ))}\n <span data-fs-order-delivery-group-row-fact=\"\">\n <span data-fs-order-delivery-group-row-quantity-label=\"\">{labels.quantity}</span>\n <span data-fs-order-delivery-group-row-quantity=\"\">{line.quantity}</span>\n </span>\n {line.sellingPrice ? (\n <FactLine>\n <MoneyFact kind=\"unit-price\" money={line.sellingPrice} labels={labels} />\n </FactLine>\n ) : null}\n {listPrice ? (\n <FactLine>\n <MoneyFact kind=\"list-price\" money={listPrice} labels={labels} />\n </FactLine>\n ) : null}\n {line.tax ? (\n <FactLine>\n <MoneyFact kind=\"tax\" money={line.tax} labels={labels} />\n </FactLine>\n ) : null}\n </span>\n {line.total ? (\n <span data-fs-order-delivery-group-row-aside=\"\">\n <MoneyFact kind=\"total\" money={line.total} labels={labels} />\n </span>\n ) : null}\n </li>\n );\n}\n\nfunction FactLine({ children }: Readonly<{ children: ReactNode }>) {\n return <span data-fs-order-delivery-group-row-fact=\"\">{children}</span>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"order-delivery-group.js","names":[],"sources":["../../../src/matter/order-delivery-group/order-delivery-group.tsx"],"sourcesContent":["'use client';\n\nimport { type ContentValue, defineComponent, defineContentType, type MessageLocaleProp } from '@vtex/fs-core';\nimport { type ComponentPropsWithRef, createContext, type ReactNode, type Ref, useContext, useMemo } from 'react';\nimport {\n AccordionHeader,\n AccordionItem,\n AccordionPanel,\n AccordionRoot,\n AccordionTrigger,\n} from '../../particles/accordion/accordion.js';\nimport { useStorefrontFormatters } from '../../sdk/format/client.js';\nimport type { MessageFormatter } from '../../sdk/i18n/message-formatter.js';\nimport { useMessageFormatter } from '../../sdk/i18n/use-message-formatter.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderDeliveryGroupData on Query {\n customerOrder(id: $orderId) {\n deliveryOptions {\n selectedSla\n deliveryChannel\n shippingEstimateDate\n items {\n id\n name\n quantity\n image {\n url\n altText\n }\n sellingPrice {\n amount\n currencyCode\n }\n listPrice {\n amount\n currencyCode\n }\n total {\n amount\n currencyCode\n }\n tax {\n amount\n currencyCode\n }\n customFields {\n name\n value\n }\n }\n }\n }\n }\n`;\n\nexport const OrderDeliveryGroupContent = defineContentType({\n id: 'order-delivery-group',\n title: 'Order Delivery Group',\n description: 'The labels of a delivery group.',\n schema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n label: { type: 'string', title: 'Accessible name', format: 'icu-message', messageSource: 'Deliveries' },\n delivery: { type: 'string', title: 'Delivery', format: 'icu-message', messageSource: 'Delivery' },\n pickup: { type: 'string', title: 'Pickup', format: 'icu-message', messageSource: 'Pickup' },\n estimate: {\n type: 'string',\n title: 'Estimated delivery',\n format: 'icu-message',\n messageSource: 'Estimated delivery',\n },\n items: {\n type: 'string',\n title: 'Item count',\n format: 'icu-message',\n messageSource: '{count, plural, one {# item} other {# items}}',\n messageArguments: { type: 'object', properties: { count: { type: 'integer' } } },\n messageExample: { count: 2 },\n },\n subtotal: { type: 'string', title: 'Subtotal', format: 'icu-message', messageSource: 'Subtotal' },\n quantity: { type: 'string', title: 'Quantity', format: 'icu-message', messageSource: 'Quantity' },\n unitPrice: { type: 'string', title: 'Unit price', format: 'icu-message', messageSource: 'Unit price' },\n listPrice: { type: 'string', title: 'List price', format: 'icu-message', messageSource: 'List price' },\n total: { type: 'string', title: 'Total', format: 'icu-message', messageSource: 'Total' },\n tax: { type: 'string', title: 'Tax', format: 'icu-message', messageSource: 'Tax' },\n },\n },\n});\n\nexport type OrderDeliveryGroupContentValue = ContentValue<typeof OrderDeliveryGroupContent>;\n\nexport type OrderDeliveryMoney = { amount: string | number; currencyCode: string };\n\nexport type OrderDeliveryItemData = {\n id: string;\n name: string;\n quantity: number;\n image: { url: string; altText: string | null } | null;\n sellingPrice: OrderDeliveryMoney | null;\n listPrice: OrderDeliveryMoney | null;\n total: OrderDeliveryMoney | null;\n tax: OrderDeliveryMoney | null;\n customFields: Array<{ name: string; value: string }>;\n};\n\nexport type OrderDeliveryOptionData = {\n selectedSla: string | null;\n deliveryChannel: string | null;\n shippingEstimateDate: string | null;\n items: OrderDeliveryItemData[];\n};\n\n/** Unwrapped `CustomerOrder` slice. Null when the id does not resolve to the shopper's order. */\nexport type OrderDeliveryGroupData = {\n deliveryOptions: OrderDeliveryOptionData[];\n} | null;\n\nexport type OrderDeliveryGroupProps = MessageLocaleProp &\n Readonly<{\n $content?: OrderDeliveryGroupContentValue;\n $data?: OrderDeliveryGroupData;\n /** Rendered once per option, after its rows, inside the `order-delivery-option` context. */\n children?: ReactNode;\n className?: string;\n ref?: Ref<HTMLElement>;\n }>;\n\n/** Which delivery option the children of `OrderDeliveryGroup` are rendering inside. */\nexport type OrderDeliveryOptionContextValue = Readonly<{ index: number }>;\n\nconst OrderDeliveryOptionContext = createContext<OrderDeliveryOptionContextValue | null>(null);\n\n/** The option index published by the enclosing `OrderDeliveryGroup`, or null outside one. */\nexport function useOrderDeliveryOption(): OrderDeliveryOptionContextValue | null {\n return useContext(OrderDeliveryOptionContext);\n}\n\nconst ESTIMATE_FORMAT: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n};\n\nfunction estimateInstant(value: string | null | undefined): Date | null {\n if (!value?.trim()) {\n return null;\n }\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\ntype DeliveryMessages = MessageFormatter<typeof OrderDeliveryGroupContent>;\n\nexport const OrderDeliveryGroupDefinition = defineComponent<OrderDeliveryGroupProps>({\n name: 'OrderDeliveryGroup',\n importPath: '@vtex/faststore/components',\n component: OrderDeliveryGroup,\n content: OrderDeliveryGroupContent,\n fragment,\n fetchStrategy: 'static',\n skeleton: OrderDeliveryGroupSkeleton,\n editor: { label: 'Order Delivery Group', category: 'content' },\n schema: {},\n providesContext: 'order-delivery-option',\n guideline:\n 'The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content. A single option arrives open; two or more arrive closed. Reads customerOrder by the orderId route segment; place it once on the order details page. Children such as OrderDeliveryAddress render once per option, after its rows.',\n});\n\nfunction moneyAmount(money: OrderDeliveryMoney | null): number | null {\n // Number('') and Number(' ') are 0, which would print a blank upstream amount as a real zero.\n if (!money || (typeof money.amount === 'string' && money.amount.trim() === '')) {\n return null;\n }\n const value = typeof money.amount === 'number' ? money.amount : Number(money.amount);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction optionValue(index: number): string {\n return `option-${index}`;\n}\n\nfunction initialOpen(options: OrderDeliveryOptionData[]): string[] {\n return options.length === 1 ? [optionValue(0)] : [];\n}\n\nfunction itemCount(items: OrderDeliveryItemData[]): number {\n return items.reduce((sum, line) => sum + line.quantity, 0);\n}\n\n/** The sum of the line totals the API returned, in cents, in the currency of the first total. */\nfunction subtotal(items: OrderDeliveryItemData[]): { amount: number; currencyCode: string } | null {\n let cents = 0;\n let currencyCode: string | null = null;\n for (const line of items) {\n if (!line.total) {\n continue;\n }\n const amount = moneyAmount(line.total);\n if (amount == null) {\n continue;\n }\n cents += Math.round(amount * 100);\n currencyCode ??= line.total.currencyCode;\n }\n return currencyCode ? { amount: cents / 100, currencyCode } : null;\n}\n\nexport function OrderDeliveryGroupSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-delivery-group-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n </div>\n );\n}\n\nexport function OrderDeliveryGroup({ $content, $data, children, className, ref }: OrderDeliveryGroupProps) {\n const messages = useMessageFormatter(OrderDeliveryGroupContent, $content);\n const options = $data?.deliveryOptions ?? [];\n\n if (options.length === 0) {\n return null;\n }\n\n return (\n <section\n ref={ref}\n aria-label={messages.format('label')}\n className={className}\n data-fs-order-delivery-group=\"\"\n data-fs-order-delivery-group-count={options.length}\n >\n <AccordionRoot openMultiple defaultValue={initialOpen(options)}>\n {options.map((option, index) => (\n <DeliveryOption\n key={optionValue(index)}\n value={optionValue(index)}\n index={index}\n option={option}\n messages={messages}\n >\n {children}\n </DeliveryOption>\n ))}\n </AccordionRoot>\n </section>\n );\n}\n\ntype DeliveryOptionProps = Readonly<{\n value: string;\n index: number;\n option: OrderDeliveryOptionData;\n messages: DeliveryMessages;\n children?: ReactNode;\n}>;\n\nfunction channelName(channel: string | null, messages: DeliveryMessages): string | null {\n if (channel === 'delivery') {\n return messages.format('delivery');\n }\n if (channel === 'pickup-in-point') {\n return messages.format('pickup');\n }\n return null;\n}\n\nfunction DeliveryOption({ value, index, option, messages, children }: DeliveryOptionProps) {\n const { formatMoney, formatDate } = useStorefrontFormatters();\n const name = option.selectedSla?.trim() || channelName(option.deliveryChannel, messages);\n const total = subtotal(option.items);\n const estimate = estimateInstant(option.shippingEstimateDate);\n const optionContext = useMemo(() => ({ index }), [index]);\n\n return (\n <AccordionItem\n value={value}\n data-fs-order-delivery-group-option=\"\"\n data-fs-order-delivery-group-option-channel={option.deliveryChannel ?? undefined}\n >\n <AccordionHeader data-fs-order-delivery-group-option-header=\"\">\n <AccordionTrigger data-fs-order-delivery-group-option-trigger=\"\">\n {name ? <span data-fs-order-delivery-group-option-name=\"\">{name}</span> : null}\n {estimate ? (\n <>\n <span data-fs-order-delivery-group-option-estimate-label=\"\">{messages.format('estimate')}</span>\n <time dateTime={option.shippingEstimateDate ?? undefined} data-fs-order-delivery-group-option-estimate=\"\">\n {formatDate(estimate, ESTIMATE_FORMAT)}\n </time>\n </>\n ) : null}\n <span data-fs-order-delivery-group-option-items=\"\">\n {messages.format('items', { count: itemCount(option.items) })}\n </span>\n {total ? (\n <>\n <span data-fs-order-delivery-group-option-subtotal-label=\"\">{messages.format('subtotal')}</span>\n <span data-fs-order-delivery-group-option-subtotal=\"\">\n {formatMoney(total.amount, { currency: total.currencyCode })}\n </span>\n </>\n ) : null}\n </AccordionTrigger>\n </AccordionHeader>\n <AccordionPanel data-fs-order-delivery-group-option-panel=\"\">\n <ul data-fs-order-delivery-group-rows=\"\">\n {option.items.map((line) => (\n <DeliveryRow key={line.id} line={line} messages={messages} />\n ))}\n </ul>\n {children ? (\n <OrderDeliveryOptionContext.Provider value={optionContext}>{children}</OrderDeliveryOptionContext.Provider>\n ) : null}\n </AccordionPanel>\n </AccordionItem>\n );\n}\n\ntype MoneyLabel = 'unitPrice' | 'listPrice' | 'total' | 'tax';\n\nconst MONEY_FACTS = {\n 'unit-price': {\n field: 'unitPrice',\n label: { 'data-fs-order-delivery-group-row-unit-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-unit-price': '' },\n },\n 'list-price': {\n field: 'listPrice',\n label: { 'data-fs-order-delivery-group-row-list-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-list-price': '' },\n },\n total: {\n field: 'total',\n label: { 'data-fs-order-delivery-group-row-total-label': '' },\n value: { 'data-fs-order-delivery-group-row-total': '' },\n },\n tax: {\n field: 'tax',\n label: { 'data-fs-order-delivery-group-row-tax-label': '' },\n value: { 'data-fs-order-delivery-group-row-tax': '' },\n },\n} as const satisfies Record<string, { field: MoneyLabel; label: object; value: object }>;\n\ntype MoneyFactProps = Readonly<{\n kind: keyof typeof MONEY_FACTS;\n money: OrderDeliveryMoney;\n messages: DeliveryMessages;\n}>;\n\nfunction MoneyFact({ kind, money, messages }: MoneyFactProps) {\n const { formatMoney } = useStorefrontFormatters();\n const amount = moneyAmount(money);\n if (amount == null) {\n return null;\n }\n const fact = MONEY_FACTS[kind];\n\n return (\n <>\n <span {...fact.label}>{messages.format(fact.field)}</span>\n <span {...fact.value}>{formatMoney(amount, { currency: money.currencyCode })}</span>\n </>\n );\n}\n\nfunction DeliveryRow({ line, messages }: Readonly<{ line: OrderDeliveryItemData; messages: DeliveryMessages }>) {\n const listPrice = moneyAmount(line.listPrice) === moneyAmount(line.sellingPrice) ? null : line.listPrice;\n\n return (\n <li data-fs-order-delivery-group-row=\"\">\n {line.image ? (\n // biome-ignore lint/performance/noImgElement: order line image URL is dynamic; matter stays Next-agnostic.\n <img\n src={line.image.url}\n alt={line.image.altText ?? line.name}\n data-fs-order-delivery-group-row-image=\"\"\n data-fs-image=\"\"\n />\n ) : null}\n <span data-fs-order-delivery-group-row-details=\"\">\n <span data-fs-order-delivery-group-row-name=\"\">{line.name}</span>\n {line.customFields.map((field) => (\n <span key={field.name} data-fs-order-delivery-group-row-custom-field=\"\">\n <span data-fs-order-delivery-group-row-custom-field-name=\"\">{field.name}</span>\n <span data-fs-order-delivery-group-row-custom-field-value=\"\">{field.value}</span>\n </span>\n ))}\n <span data-fs-order-delivery-group-row-fact=\"\">\n <span data-fs-order-delivery-group-row-quantity-label=\"\">{messages.format('quantity')}</span>\n <span data-fs-order-delivery-group-row-quantity=\"\">{line.quantity}</span>\n </span>\n {line.sellingPrice ? (\n <FactLine>\n <MoneyFact kind=\"unit-price\" money={line.sellingPrice} messages={messages} />\n </FactLine>\n ) : null}\n {listPrice ? (\n <FactLine>\n <MoneyFact kind=\"list-price\" money={listPrice} messages={messages} />\n </FactLine>\n ) : null}\n {line.tax ? (\n <FactLine>\n <MoneyFact kind=\"tax\" money={line.tax} messages={messages} />\n </FactLine>\n ) : null}\n </span>\n {line.total ? (\n <span data-fs-order-delivery-group-row-aside=\"\">\n <MoneyFact kind=\"total\" money={line.total} messages={messages} />\n </span>\n ) : null}\n </li>\n );\n}\n\nfunction FactLine({ children }: Readonly<{ children: ReactNode }>) {\n return <span data-fs-order-delivery-group-row-fact=\"\">{children}</span>;\n}\n"],"mappings":"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"}