@vtex/faststore 0.0.8 → 0.0.11

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 (568) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.md +0 -1
  3. package/dist/actions.json +48 -1
  4. package/dist/catalog.json +1397 -1594
  5. package/dist/cli/index.d.ts +66 -28
  6. package/dist/cli/index.js +7371 -512
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/server-runtime.js +41 -60
  9. package/dist/cli/server-runtime.js.map +1 -1
  10. package/dist/client.d.ts +3 -3
  11. package/dist/client.js +2 -2
  12. package/dist/components.d.ts +67 -56
  13. package/dist/components.js +64 -53
  14. package/dist/content-types.json +5886 -555
  15. package/dist/core/dist/define-component.d.ts +7 -2
  16. package/dist/core/dist/define-content-type.d.ts +50 -2
  17. package/dist/core/dist/define-content-type.js +107 -3
  18. package/dist/core/dist/define-content-type.js.map +1 -1
  19. package/dist/core/dist/index.d.ts +2 -2
  20. package/dist/docs/access-code-field.md +1 -1
  21. package/dist/docs/access-code-sign-in.md +126 -77
  22. package/dist/docs/account-address-book.md +210 -95
  23. package/dist/docs/account-entry-point.md +4 -4
  24. package/dist/docs/account-menu.md +16 -17
  25. package/dist/docs/account-saved-cards.md +306 -0
  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 +157 -0
  30. package/dist/docs/buy-button.md +7 -8
  31. package/dist/docs/card-entry.md +42 -29
  32. package/dist/docs/card-summary.md +185 -0
  33. package/dist/docs/cardholder-document.md +5 -3
  34. package/dist/docs/carousel.md +5 -4
  35. package/dist/docs/cart-destination.md +251 -0
  36. package/dist/docs/cart-item.md +48 -15
  37. package/dist/docs/cart-totalizer.md +8 -6
  38. package/dist/docs/cart.md +240 -39
  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/footer-social.md +1 -1
  50. package/dist/docs/form.md +54 -18
  51. package/dist/docs/free-shipping-progress.md +18 -13
  52. package/dist/docs/identity-edit.md +8 -2
  53. package/dist/docs/identity-summary.md +18 -5
  54. package/dist/docs/incentives.md +2 -2
  55. package/dist/docs/installments.md +46 -32
  56. package/dist/docs/logo.md +1 -1
  57. package/dist/docs/my-account-profile.md +16 -11
  58. package/dist/docs/navigation-link.md +5 -3
  59. package/dist/docs/order-cancel.md +3 -1
  60. package/dist/docs/order-delivery-address.md +7 -5
  61. package/dist/docs/order-delivery-group.md +1 -3
  62. package/dist/docs/order-details-back.md +1 -1
  63. package/dist/docs/order-details-header.md +1 -4
  64. package/dist/docs/order-invoice-download.md +60 -0
  65. package/dist/docs/order-list-row.md +1 -1
  66. package/dist/docs/order-list-search.md +13 -20
  67. package/dist/docs/order-list-views.md +11 -17
  68. package/dist/docs/order-list.md +12 -5
  69. package/dist/docs/order-payment.md +9 -7
  70. package/dist/docs/order-placed-date.md +1 -1
  71. package/dist/docs/order-placed-payment-summary.md +28 -15
  72. package/dist/docs/order-placed.md +49 -14
  73. package/dist/docs/order-progress.md +1 -1
  74. package/dist/docs/order-status-badge.md +20 -9
  75. package/dist/docs/order-summary.md +2 -2
  76. package/dist/docs/order-tracking-link.md +58 -0
  77. package/dist/docs/payment-method-badges.md +32 -6
  78. package/dist/docs/payment-methods.md +2 -2
  79. package/dist/docs/payment.md +36 -17
  80. package/dist/docs/phone-field.md +4 -4
  81. package/dist/docs/place-order.md +84 -36
  82. package/dist/docs/postal-code-field.md +3 -1
  83. package/dist/docs/pricing.md +21 -23
  84. package/dist/docs/product-gallery.md +19 -20
  85. package/dist/docs/product-information.md +14 -10
  86. package/dist/docs/product-list.md +7 -6
  87. package/dist/docs/product-shelf.md +7 -1
  88. package/dist/docs/promotion.md +4 -2
  89. package/dist/docs/region.md +23 -15
  90. package/dist/docs/save-card.md +7 -6
  91. package/dist/docs/saved-cards.md +65 -36
  92. package/dist/docs/select.md +3 -4
  93. package/dist/docs/shipping-address.md +57 -21
  94. package/dist/docs/shipping-simulator.md +53 -15
  95. package/dist/docs/sign-in-disclosure.md +176 -0
  96. package/dist/docs/sign-in-form.md +78 -47
  97. package/dist/docs/sign-in-redirect.md +5 -3
  98. package/dist/docs/sign-in.md +173 -0
  99. package/dist/docs/toast.md +45 -16
  100. package/dist/docs/variant-selector.md +15 -11
  101. package/dist/graphql/types.d.ts +4 -14
  102. package/dist/index.d.ts +3 -2
  103. package/dist/internal/client.d.ts +4 -3
  104. package/dist/internal/client.js +5 -2
  105. package/dist/internal/server.d.ts +10 -5
  106. package/dist/internal/server.js +9 -4
  107. package/dist/matter/access-code-sign-in/access-code-sign-in.d.ts +250 -66
  108. package/dist/matter/access-code-sign-in/access-code-sign-in.js +459 -188
  109. package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -1
  110. package/dist/matter/account-address-book/account-address-book-delete.d.ts +78 -40
  111. package/dist/matter/account-address-book/account-address-book-delete.js +86 -50
  112. package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -1
  113. package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +21 -4
  114. package/dist/matter/account-address-book/account-address-book-deliverability.js +45 -17
  115. package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -1
  116. package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +74 -19
  117. package/dist/matter/account-address-book/account-address-book-form-parts.js +77 -26
  118. package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -1
  119. package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +27 -6
  120. package/dist/matter/account-address-book/account-address-book-profile-notice.js +55 -28
  121. package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -1
  122. package/dist/matter/account-address-book/account-address-book.d.ts +67 -14
  123. package/dist/matter/account-address-book/account-address-book.js +74 -33
  124. package/dist/matter/account-address-book/account-address-book.js.map +1 -1
  125. package/dist/matter/account-address-book/account-address-country-switch.js +3 -3
  126. package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -1
  127. package/dist/matter/account-address-book/account-address-country.d.ts +66 -20
  128. package/dist/matter/account-address-book/account-address-country.js +83 -49
  129. package/dist/matter/account-address-book/account-address-country.js.map +1 -1
  130. package/dist/matter/account-address-book/account-address-form-context.d.ts +8 -4
  131. package/dist/matter/account-address-book/account-address-form-context.js.map +1 -1
  132. package/dist/matter/account-address-book/account-address-form.d.ts +468 -45
  133. package/dist/matter/account-address-book/account-address-form.js +518 -155
  134. package/dist/matter/account-address-book/account-address-form.js.map +1 -1
  135. package/dist/matter/account-address-book/account-address-record.d.ts +27 -6
  136. package/dist/matter/account-address-book/account-address-record.js +32 -17
  137. package/dist/matter/account-address-book/account-address-record.js.map +1 -1
  138. package/dist/matter/account-menu/account-menu.d.ts +34 -17
  139. package/dist/matter/account-menu/account-menu.js +46 -54
  140. package/dist/matter/account-menu/account-menu.js.map +1 -1
  141. package/dist/matter/account-menu-identity/account-menu-identity.js +1 -1
  142. package/dist/matter/account-saved-cards/account-saved-cards.d.ts +463 -0
  143. package/dist/matter/account-saved-cards/account-saved-cards.js +1011 -0
  144. package/dist/matter/account-saved-cards/account-saved-cards.js.map +1 -0
  145. package/dist/matter/billing-address/billing-address.d.ts +156 -74
  146. package/dist/matter/billing-address/billing-address.js +227 -156
  147. package/dist/matter/billing-address/billing-address.js.map +1 -1
  148. package/dist/matter/breadcrumb/breadcrumb.d.ts +21 -3
  149. package/dist/matter/breadcrumb/breadcrumb.js +24 -9
  150. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
  151. package/dist/matter/buy-button/buy-button.d.ts +8 -11
  152. package/dist/matter/buy-button/buy-button.js +10 -19
  153. package/dist/matter/buy-button/buy-button.js.map +1 -1
  154. package/dist/matter/card-entry/card-capture.js +12 -4
  155. package/dist/matter/card-entry/card-capture.js.map +1 -1
  156. package/dist/matter/card-entry/card-entry.d.ts +123 -32
  157. package/dist/matter/card-entry/card-entry.js +348 -221
  158. package/dist/matter/card-entry/card-entry.js.map +1 -1
  159. package/dist/matter/cart/cart-namespace.d.ts +11 -1
  160. package/dist/matter/cart/cart-namespace.js +11 -1
  161. package/dist/matter/cart/cart-namespace.js.map +1 -1
  162. package/dist/matter/cart/cart.d.ts +416 -45
  163. package/dist/matter/cart/cart.js +782 -101
  164. package/dist/matter/cart/cart.js.map +1 -1
  165. package/dist/matter/cart-destination/cart-destination.d.ts +233 -0
  166. package/dist/matter/cart-destination/cart-destination.js +703 -0
  167. package/dist/matter/cart-destination/cart-destination.js.map +1 -0
  168. package/dist/matter/cart-item/cart-item.d.ts +145 -16
  169. package/dist/matter/cart-item/cart-item.js +230 -54
  170. package/dist/matter/cart-item/cart-item.js.map +1 -1
  171. package/dist/matter/cart-item-compositions/cart-item-compositions.js +1 -1
  172. package/dist/matter/cart-item-compositions/cart-item-compositions.js.map +1 -1
  173. package/dist/matter/cart-item-customizations/cart-item-customizations.js +1 -1
  174. package/dist/matter/cart-item-customizations/cart-item-customizations.js.map +1 -1
  175. package/dist/matter/cart-item-discounts/cart-item-discounts.js +1 -1
  176. package/dist/matter/cart-item-discounts/cart-item-discounts.js.map +1 -1
  177. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js +1 -1
  178. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js.map +1 -1
  179. package/dist/matter/cart-item-variations/cart-item-variations.js +1 -1
  180. package/dist/matter/cart-item-variations/cart-item-variations.js.map +1 -1
  181. package/dist/matter/cart-totalizer/cart-totalizer.d.ts +43 -9
  182. package/dist/matter/cart-totalizer/cart-totalizer.js +49 -19
  183. package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -1
  184. package/dist/matter/challenge-return/challenge-return.d.ts +62 -0
  185. package/dist/matter/challenge-return/challenge-return.js +241 -0
  186. package/dist/matter/challenge-return/challenge-return.js.map +1 -0
  187. package/dist/matter/client-preferences/client-preferences-fieldset.d.ts +86 -17
  188. package/dist/matter/client-preferences/client-preferences-fieldset.js +126 -54
  189. package/dist/matter/client-preferences/client-preferences-fieldset.js.map +1 -1
  190. package/dist/matter/client-preferences/client-preferences.d.ts +50 -7
  191. package/dist/matter/client-preferences/client-preferences.js +84 -15
  192. package/dist/matter/client-preferences/client-preferences.js.map +1 -1
  193. package/dist/matter/client-profile/client-profile.d.ts +44 -9
  194. package/dist/matter/client-profile/client-profile.js +64 -24
  195. package/dist/matter/client-profile/client-profile.js.map +1 -1
  196. package/dist/matter/client-profile-form/client-profile-fieldset.d.ts +119 -22
  197. package/dist/matter/client-profile-form/client-profile-fieldset.js +161 -73
  198. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
  199. package/dist/matter/delivery-options/delivery-options-accordion.d.ts +49 -4
  200. package/dist/matter/delivery-options/delivery-options-accordion.js +67 -14
  201. package/dist/matter/delivery-options/delivery-options-accordion.js.map +1 -1
  202. package/dist/matter/delivery-options/delivery-options-controller.d.ts +69 -9
  203. package/dist/matter/delivery-options/delivery-options-controller.js +80 -14
  204. package/dist/matter/delivery-options/delivery-options-controller.js.map +1 -1
  205. package/dist/matter/delivery-options/delivery-options.d.ts +37 -2
  206. package/dist/matter/delivery-options/delivery-options.js +75 -12
  207. package/dist/matter/delivery-options/delivery-options.js.map +1 -1
  208. package/dist/matter/delivery-options/use-delivery-option-selection.d.ts +1 -0
  209. package/dist/matter/delivery-options/use-delivery-option-selection.js +1 -1
  210. package/dist/matter/delivery-options/use-delivery-option-selection.js.map +1 -1
  211. package/dist/matter/email-identification/email-identification.d.ts +25 -3
  212. package/dist/matter/email-identification/email-identification.js +49 -12
  213. package/dist/matter/email-identification/email-identification.js.map +1 -1
  214. package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +85 -10
  215. package/dist/matter/free-shipping-progress/free-shipping-progress.js +153 -53
  216. package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -1
  217. package/dist/matter/identity-edit/identity-edit.d.ts +52 -10
  218. package/dist/matter/identity-edit/identity-edit.js +47 -19
  219. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  220. package/dist/matter/identity-summary/identity-summary.d.ts +76 -22
  221. package/dist/matter/identity-summary/identity-summary.js +95 -45
  222. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  223. package/dist/matter/installments/installments-select.d.ts +98 -16
  224. package/dist/matter/installments/installments-select.js +156 -48
  225. package/dist/matter/installments/installments-select.js.map +1 -1
  226. package/dist/matter/installments/installments.d.ts +96 -16
  227. package/dist/matter/installments/installments.js +115 -40
  228. package/dist/matter/installments/installments.js.map +1 -1
  229. package/dist/matter/installments/use-installments-selection.d.ts +1 -0
  230. package/dist/matter/installments/use-installments-selection.js +8 -3
  231. package/dist/matter/installments/use-installments-selection.js.map +1 -1
  232. package/dist/matter/my-account-profile/my-account-profile.d.ts +358 -103
  233. package/dist/matter/my-account-profile/my-account-profile.js +370 -174
  234. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  235. package/dist/matter/order-cancel/order-cancel.d.ts +65 -19
  236. package/dist/matter/order-cancel/order-cancel.js +118 -51
  237. package/dist/matter/order-cancel/order-cancel.js.map +1 -1
  238. package/dist/matter/order-delivery-address/order-delivery-address.d.ts +8 -18
  239. package/dist/matter/order-delivery-address/order-delivery-address.js +14 -23
  240. package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -1
  241. package/dist/matter/order-delivery-group/order-delivery-group.d.ts +40 -24
  242. package/dist/matter/order-delivery-group/order-delivery-group.js +64 -74
  243. package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -1
  244. package/dist/matter/order-details-header/order-details-header.d.ts +32 -15
  245. package/dist/matter/order-details-header/order-details-header.js +66 -58
  246. package/dist/matter/order-details-header/order-details-header.js.map +1 -1
  247. package/dist/matter/order-invoice-download/order-invoice-download.d.ts +78 -0
  248. package/dist/matter/order-invoice-download/order-invoice-download.js +173 -0
  249. package/dist/matter/order-invoice-download/order-invoice-download.js.map +1 -0
  250. package/dist/matter/order-list/order-list.d.ts +164 -19
  251. package/dist/matter/order-list/order-list.js +229 -87
  252. package/dist/matter/order-list/order-list.js.map +1 -1
  253. package/dist/matter/order-list-row/order-list-row.d.ts +6 -1
  254. package/dist/matter/order-list-row/order-list-row.js +3 -2
  255. package/dist/matter/order-list-row/order-list-row.js.map +1 -1
  256. package/dist/matter/order-list-search/order-list-search.d.ts +18 -26
  257. package/dist/matter/order-list-search/order-list-search.js +30 -69
  258. package/dist/matter/order-list-search/order-list-search.js.map +1 -1
  259. package/dist/matter/order-list-views/order-list-views.d.ts +15 -22
  260. package/dist/matter/order-list-views/order-list-views.js +22 -68
  261. package/dist/matter/order-list-views/order-list-views.js.map +1 -1
  262. package/dist/matter/order-payment/order-payment.d.ts +33 -10
  263. package/dist/matter/order-payment/order-payment.js +44 -39
  264. package/dist/matter/order-payment/order-payment.js.map +1 -1
  265. package/dist/matter/order-placed/order-placed-deliveries.d.ts +144 -12
  266. package/dist/matter/order-placed/order-placed-deliveries.js +115 -40
  267. package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -1
  268. package/dist/matter/order-placed/order-placed.d.ts +198 -31
  269. package/dist/matter/order-placed/order-placed.js +230 -139
  270. package/dist/matter/order-placed/order-placed.js.map +1 -1
  271. package/dist/matter/order-placed-date/order-placed-date.d.ts +5 -8
  272. package/dist/matter/order-placed-date/order-placed-date.js +7 -8
  273. package/dist/matter/order-placed-date/order-placed-date.js.map +1 -1
  274. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +90 -17
  275. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +93 -117
  276. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
  277. package/dist/matter/order-progress/order-progress.d.ts +19 -8
  278. package/dist/matter/order-progress/order-progress.js +37 -45
  279. package/dist/matter/order-progress/order-progress.js.map +1 -1
  280. package/dist/matter/order-summary/order-summary.d.ts +19 -9
  281. package/dist/matter/order-summary/order-summary.js +38 -44
  282. package/dist/matter/order-summary/order-summary.js.map +1 -1
  283. package/dist/matter/order-tracking-link/order-tracking-link.d.ts +43 -0
  284. package/dist/matter/order-tracking-link/order-tracking-link.js +107 -0
  285. package/dist/matter/order-tracking-link/order-tracking-link.js.map +1 -0
  286. package/dist/matter/payment/payment-card-capture.js +17 -10
  287. package/dist/matter/payment/payment-card-capture.js.map +1 -1
  288. package/dist/matter/payment/payment-controller.d.ts +4 -2
  289. package/dist/matter/payment/payment-controller.js +30 -9
  290. package/dist/matter/payment/payment-controller.js.map +1 -1
  291. package/dist/matter/payment/payment-method-badges.js +1 -1
  292. package/dist/matter/payment/payment.d.ts +69 -19
  293. package/dist/matter/payment/payment.js +101 -35
  294. package/dist/matter/payment/payment.js.map +1 -1
  295. package/dist/matter/payment/use-payment-method-selection.d.ts +25 -4
  296. package/dist/matter/payment/use-payment-method-selection.js +94 -32
  297. package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
  298. package/dist/matter/payment/use-payment-submit-gate.d.ts +14 -3
  299. package/dist/matter/payment/use-payment-submit-gate.js +47 -8
  300. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
  301. package/dist/matter/place-order/place-order.d.ts +171 -57
  302. package/dist/matter/place-order/place-order.js +376 -185
  303. package/dist/matter/place-order/place-order.js.map +1 -1
  304. package/dist/matter/pricing/pricing.d.ts +152 -13
  305. package/dist/matter/pricing/pricing.js +153 -52
  306. package/dist/matter/pricing/pricing.js.map +1 -1
  307. package/dist/matter/product-information/product-information.d.ts +27 -4
  308. package/dist/matter/product-information/product-information.js +32 -15
  309. package/dist/matter/product-information/product-information.js.map +1 -1
  310. package/dist/matter/product-list/product-list.d.ts +24 -6
  311. package/dist/matter/product-list/product-list.js +32 -26
  312. package/dist/matter/product-list/product-list.js.map +1 -1
  313. package/dist/matter/product-shelf/product-shelf.d.ts +8 -3
  314. package/dist/matter/product-shelf/product-shelf.js +111 -10
  315. package/dist/matter/product-shelf/product-shelf.js.map +1 -1
  316. package/dist/matter/region/region.d.ts +33 -16
  317. package/dist/matter/region/region.js +59 -52
  318. package/dist/matter/region/region.js.map +1 -1
  319. package/dist/matter/save-card/save-card.d.ts +43 -8
  320. package/dist/matter/save-card/save-card.js +61 -23
  321. package/dist/matter/save-card/save-card.js.map +1 -1
  322. package/dist/matter/saved-cards/saved-cards.d.ts +113 -21
  323. package/dist/matter/saved-cards/saved-cards.js +349 -77
  324. package/dist/matter/saved-cards/saved-cards.js.map +1 -1
  325. package/dist/matter/shipping-address/address-payload.js +25 -0
  326. package/dist/matter/shipping-address/address-payload.js.map +1 -0
  327. package/dist/matter/shipping-address/country-descriptors.js +71 -71
  328. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  329. package/dist/matter/shipping-address/library-country-descriptors.js +136 -0
  330. package/dist/matter/shipping-address/library-country-descriptors.js.map +1 -0
  331. package/dist/matter/shipping-address/shipping-address.d.ts +312 -45
  332. package/dist/matter/shipping-address/shipping-address.js +443 -188
  333. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  334. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +251 -25
  335. package/dist/matter/shipping-simulator/shipping-simulator.js +261 -51
  336. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
  337. package/dist/matter/sign-in/sign-in.d.ts +108 -0
  338. package/dist/matter/sign-in/sign-in.js +285 -0
  339. package/dist/matter/sign-in/sign-in.js.map +1 -0
  340. package/dist/matter/sign-in-disclosure/sign-in-disclosure.d.ts +81 -0
  341. package/dist/matter/sign-in-disclosure/sign-in-disclosure.js +232 -0
  342. package/dist/matter/sign-in-disclosure/sign-in-disclosure.js.map +1 -0
  343. package/dist/matter/sign-in-form/sign-in-form.d.ts +93 -62
  344. package/dist/matter/sign-in-form/sign-in-form.js +134 -144
  345. package/dist/matter/sign-in-form/sign-in-form.js.map +1 -1
  346. package/dist/particles/binding-switcher/binding-switcher.d.ts +59 -0
  347. package/dist/particles/binding-switcher/binding-switcher.js +194 -0
  348. package/dist/particles/binding-switcher/binding-switcher.js.map +1 -0
  349. package/dist/particles/card-summary/card-network.d.ts +17 -0
  350. package/dist/particles/card-summary/card-network.js +25 -0
  351. package/dist/particles/card-summary/card-network.js.map +1 -0
  352. package/dist/particles/card-summary/card-summary.d.ts +113 -0
  353. package/dist/particles/card-summary/card-summary.js +221 -0
  354. package/dist/particles/card-summary/card-summary.js.map +1 -0
  355. package/dist/particles/carousel/carousel.d.ts +99 -11
  356. package/dist/particles/carousel/carousel.js +103 -35
  357. package/dist/particles/carousel/carousel.js.map +1 -1
  358. package/dist/particles/copy-text/copy-text.js +5 -15
  359. package/dist/particles/copy-text/copy-text.js.map +1 -1
  360. package/dist/particles/dialog/dialog.d.ts +14 -6
  361. package/dist/particles/dialog/dialog.js +6 -3
  362. package/dist/particles/dialog/dialog.js.map +1 -1
  363. package/dist/particles/drawer/drawer.js +1 -1
  364. package/dist/particles/drawer/drawer.js.map +1 -1
  365. package/dist/particles/email-field/email-field.d.ts +2 -1
  366. package/dist/particles/email-field/email-field.js +2 -1
  367. package/dist/particles/email-field/email-field.js.map +1 -1
  368. package/dist/particles/footer-link-group/footer-link-group.js +1 -0
  369. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
  370. package/dist/particles/footer-social/footer-social.d.ts +1 -1
  371. package/dist/particles/footer-social/footer-social.js +1 -1
  372. package/dist/particles/footer-social/footer-social.js.map +1 -1
  373. package/dist/particles/form/form.d.ts +85 -13
  374. package/dist/particles/form/form.js +91 -42
  375. package/dist/particles/form/form.js.map +1 -1
  376. package/dist/particles/gallery/gallery.d.ts +129 -12
  377. package/dist/particles/gallery/gallery.js +121 -34
  378. package/dist/particles/gallery/gallery.js.map +1 -1
  379. package/dist/particles/incentives/incentives.d.ts +1 -1
  380. package/dist/particles/incentives/incentives.js +1 -1
  381. package/dist/particles/incentives/incentives.js.map +1 -1
  382. package/dist/particles/order-details-back/order-details-back.d.ts +5 -3
  383. package/dist/particles/order-details-back/order-details-back.js +8 -10
  384. package/dist/particles/order-details-back/order-details-back.js.map +1 -1
  385. package/dist/particles/order-status-badge/order-status-badge.d.ts +3 -3
  386. package/dist/particles/order-status-badge/order-status-badge.js +4 -20
  387. package/dist/particles/order-status-badge/order-status-badge.js.map +1 -1
  388. package/dist/particles/password-field/password-field.d.ts +1 -1
  389. package/dist/particles/password-field/password-field.js +2 -4
  390. package/dist/particles/password-field/password-field.js.map +1 -1
  391. package/dist/particles/payment-methods/payment-methods.d.ts +1 -1
  392. package/dist/particles/payment-methods/payment-methods.js +1 -1
  393. package/dist/particles/payment-methods/payment-methods.js.map +1 -1
  394. package/dist/particles/phone-field/phone-field.d.ts +4 -4
  395. package/dist/particles/phone-field/phone-field.js +8 -11
  396. package/dist/particles/phone-field/phone-field.js.map +1 -1
  397. package/dist/particles/spinner/spinner.d.ts +24 -4
  398. package/dist/particles/spinner/spinner.js +25 -9
  399. package/dist/particles/spinner/spinner.js.map +1 -1
  400. package/dist/particles/switch/switch.d.ts +4 -1
  401. package/dist/particles/switch/switch.js +3 -1
  402. package/dist/particles/switch/switch.js.map +1 -1
  403. package/dist/particles/toast/toast.d.ts +49 -9
  404. package/dist/particles/toast/toast.js +81 -15
  405. package/dist/particles/toast/toast.js.map +1 -1
  406. package/dist/schema.graphql +461 -89
  407. package/dist/sdk/actions/index.d.ts +3 -1
  408. package/dist/sdk/actions/index.js +3 -1
  409. package/dist/sdk/actions/locale-action-provider.d.ts +16 -0
  410. package/dist/sdk/actions/locale-action-provider.js +20 -0
  411. package/dist/sdk/actions/locale-action-provider.js.map +1 -0
  412. package/dist/sdk/actions/saved-card-action-provider.d.ts +12 -0
  413. package/dist/sdk/actions/saved-card-action-provider.js +16 -0
  414. package/dist/sdk/actions/saved-card-action-provider.js.map +1 -0
  415. package/dist/sdk/actions/types.d.ts +6 -2
  416. package/dist/sdk/address/address-fields.js +4 -4
  417. package/dist/sdk/address/address-fields.js.map +1 -1
  418. package/dist/sdk/address/constants.js +1 -6
  419. package/dist/sdk/address/constants.js.map +1 -1
  420. package/dist/sdk/address/messages.js +44 -44
  421. package/dist/sdk/address/messages.js.map +1 -1
  422. package/dist/sdk/address/postal-code.js +15 -2
  423. package/dist/sdk/address/postal-code.js.map +1 -1
  424. package/dist/sdk/address/types.d.ts +5 -3
  425. package/dist/sdk/address/validate-address.js +3 -3
  426. package/dist/sdk/address/validate-address.js.map +1 -1
  427. package/dist/sdk/analytics/use-analytics-actions.d.ts +1 -1
  428. package/dist/sdk/analytics/use-analytics-actions.js.map +1 -1
  429. package/dist/sdk/cache/storefront-cache.js +2 -1
  430. package/dist/sdk/cache/storefront-cache.js.map +1 -1
  431. package/dist/sdk/cart/operations.d.ts +2 -1
  432. package/dist/sdk/cart/operations.js +55 -1
  433. package/dist/sdk/cart/operations.js.map +1 -1
  434. package/dist/sdk/cart/optimistic.d.ts +30 -7
  435. package/dist/sdk/cart/optimistic.js +78 -41
  436. package/dist/sdk/cart/optimistic.js.map +1 -1
  437. package/dist/sdk/cart/use-cart-actions.d.ts +7 -0
  438. package/dist/sdk/cart/use-cart-actions.js +61 -15
  439. package/dist/sdk/cart/use-cart-actions.js.map +1 -1
  440. package/dist/sdk/cart/use-cart-sync-sales-channel.js +70 -0
  441. package/dist/sdk/cart/use-cart-sync-sales-channel.js.map +1 -0
  442. package/dist/sdk/data/index.js +2 -2
  443. package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
  444. package/dist/sdk/generated/gql.js +16 -12
  445. package/dist/sdk/generated/gql.js.map +1 -1
  446. package/dist/sdk/generated/graphql.d.ts +197 -51
  447. package/dist/sdk/generated/graphql.js +2318 -91
  448. package/dist/sdk/generated/graphql.js.map +1 -1
  449. package/dist/sdk/i18n/format-error-code.js +23 -0
  450. package/dist/sdk/i18n/format-error-code.js.map +1 -0
  451. package/dist/sdk/i18n/message-formatter.d.ts +22 -0
  452. package/dist/sdk/i18n/message-formatter.js +140 -0
  453. package/dist/sdk/i18n/message-formatter.js.map +1 -0
  454. package/dist/sdk/i18n/use-message-formatter.d.ts +8 -0
  455. package/dist/sdk/i18n/use-message-formatter.js +18 -0
  456. package/dist/sdk/i18n/use-message-formatter.js.map +1 -0
  457. package/dist/sdk/identity/use-identity-actions.js.map +1 -1
  458. package/dist/sdk/locale/binding-switch-provider.d.ts +13 -0
  459. package/dist/sdk/locale/binding-switch-provider.js +20 -0
  460. package/dist/sdk/locale/binding-switch-provider.js.map +1 -0
  461. package/dist/sdk/locale/use-locale-actions.d.ts +16 -0
  462. package/dist/sdk/locale/use-locale-actions.js +70 -0
  463. package/dist/sdk/locale/use-locale-actions.js.map +1 -0
  464. package/dist/sdk/navigation/binding-switch.d.ts +39 -0
  465. package/dist/sdk/navigation/binding-switch.js +129 -0
  466. package/dist/sdk/navigation/binding-switch.js.map +1 -0
  467. package/dist/sdk/navigation/decode-route-params.d.ts +11 -0
  468. package/dist/sdk/navigation/decode-route-params.js +32 -0
  469. package/dist/sdk/navigation/decode-route-params.js.map +1 -0
  470. package/dist/sdk/navigation/redirect.d.ts +2 -0
  471. package/dist/sdk/navigation/redirect.js +19 -1
  472. package/dist/sdk/navigation/redirect.js.map +1 -1
  473. package/dist/sdk/navigation/types.d.ts +13 -0
  474. package/dist/sdk/payment/bin-format.js +20 -0
  475. package/dist/sdk/payment/bin-format.js.map +1 -0
  476. package/dist/sdk/payment/challenge-return.js +37 -0
  477. package/dist/sdk/payment/challenge-return.js.map +1 -0
  478. package/dist/sdk/payment/confirmation-last-four.js +39 -0
  479. package/dist/sdk/payment/confirmation-last-four.js.map +1 -0
  480. package/dist/sdk/payment/gateway.d.ts +1 -1
  481. package/dist/sdk/payment/gateway.js +8 -2
  482. package/dist/sdk/payment/gateway.js.map +1 -1
  483. package/dist/sdk/payment/operations.d.ts +1 -0
  484. package/dist/sdk/payment/operations.js +28 -6
  485. package/dist/sdk/payment/operations.js.map +1 -1
  486. package/dist/sdk/payment/resumed-purchase.d.ts +1 -0
  487. package/dist/sdk/payment/resumed-purchase.js +119 -0
  488. package/dist/sdk/payment/resumed-purchase.js.map +1 -0
  489. package/dist/sdk/payment/security-code-mask.js +16 -23
  490. package/dist/sdk/payment/security-code-mask.js.map +1 -1
  491. package/dist/sdk/payment/submission-registry.js +6 -2
  492. package/dist/sdk/payment/submission-registry.js.map +1 -1
  493. package/dist/sdk/payment/use-payment-actions.d.ts +18 -3
  494. package/dist/sdk/payment/use-payment-actions.js +23 -3
  495. package/dist/sdk/payment/use-payment-actions.js.map +1 -1
  496. package/dist/sdk/payment/use-place-order.d.ts +10 -2
  497. package/dist/sdk/payment/use-place-order.js +138 -76
  498. package/dist/sdk/payment/use-place-order.js.map +1 -1
  499. package/dist/sdk/provider/storefront-provider.d.ts +1 -7
  500. package/dist/sdk/provider/storefront-provider.js +4 -11
  501. package/dist/sdk/provider/storefront-provider.js.map +1 -1
  502. package/dist/sdk/saved-cards/operations.d.ts +16 -0
  503. package/dist/sdk/saved-cards/operations.js +41 -0
  504. package/dist/sdk/saved-cards/operations.js.map +1 -0
  505. package/dist/sdk/saved-cards/use-saved-card-actions.d.ts +26 -0
  506. package/dist/sdk/saved-cards/use-saved-card-actions.js +86 -0
  507. package/dist/sdk/saved-cards/use-saved-card-actions.js.map +1 -0
  508. package/dist/sdk/seo/entity-landing.d.ts +24 -0
  509. package/dist/sdk/seo/entity-landing.js +30 -0
  510. package/dist/sdk/seo/entity-landing.js.map +1 -0
  511. package/dist/sdk/seo/page-alternates.d.ts +8 -5
  512. package/dist/sdk/seo/page-alternates.js +11 -14
  513. package/dist/sdk/seo/page-alternates.js.map +1 -1
  514. package/dist/sdk/seo/search-landing.d.ts +42 -0
  515. package/dist/sdk/seo/search-landing.js +85 -0
  516. package/dist/sdk/seo/search-landing.js.map +1 -0
  517. package/dist/sdk/session/mock-session.d.ts +9 -0
  518. package/dist/sdk/session/mock-session.js +31 -0
  519. package/dist/sdk/session/mock-session.js.map +1 -0
  520. package/dist/sdk/session/read-server-session.d.ts +3 -0
  521. package/dist/sdk/session/read-server-session.js +5 -0
  522. package/dist/sdk/session/read-server-session.js.map +1 -1
  523. package/dist/sdk/session/return-path-segment.d.ts +10 -0
  524. package/dist/sdk/session/return-path-segment.js +15 -0
  525. package/dist/sdk/session/return-path-segment.js.map +1 -0
  526. package/dist/sdk/session/use-session-actions.js.map +1 -1
  527. package/dist/sdk/shipping/shipping-operations.d.ts +1 -1
  528. package/dist/sdk/shipping/shipping-operations.js +13 -0
  529. package/dist/sdk/shipping/shipping-operations.js.map +1 -1
  530. package/dist/sdk/shipping/use-cart-shipping-simulation.js.map +1 -1
  531. package/dist/sdk/shipping/use-shipping-actions.js.map +1 -1
  532. package/dist/sdk/shipping/use-shipping-simulation.js.map +1 -1
  533. package/dist/sdk/state/cart.d.ts +9 -2
  534. package/dist/sdk/state/cart.js +9 -2
  535. package/dist/sdk/state/cart.js.map +1 -1
  536. package/dist/utils/safe-href.d.ts +2 -0
  537. package/package.json +4 -3
  538. package/skills/storefront-asset/SKILL.md +2 -2
  539. package/skills/storefront-asset/references/api-side.md +27 -14
  540. package/skills/storefront-asset/references/findings.md +5 -2
  541. package/src/styles/tailwind.css +9 -2
  542. package/dist/matter/shipping-address/country-descriptors.d.ts +0 -1
  543. package/dist/message-locales.json +0 -7
  544. package/dist/sdk/i18n/client.d.ts +0 -4
  545. package/dist/sdk/i18n/client.js +0 -4
  546. package/dist/sdk/i18n/locales.d.ts +0 -8
  547. package/dist/sdk/i18n/locales.js +0 -57
  548. package/dist/sdk/i18n/locales.js.map +0 -1
  549. package/dist/sdk/i18n/messages/en-US.js +0 -164
  550. package/dist/sdk/i18n/messages/en-US.js.map +0 -1
  551. package/dist/sdk/i18n/messages/en-US.json +0 -159
  552. package/dist/sdk/i18n/messages/en-US.json.d.ts +0 -163
  553. package/dist/sdk/i18n/messages/es-ES.js +0 -164
  554. package/dist/sdk/i18n/messages/es-ES.js.map +0 -1
  555. package/dist/sdk/i18n/messages/es-ES.json +0 -159
  556. package/dist/sdk/i18n/messages/pt-BR.js +0 -164
  557. package/dist/sdk/i18n/messages/pt-BR.js.map +0 -1
  558. package/dist/sdk/i18n/messages/pt-BR.json +0 -159
  559. package/dist/sdk/i18n/provider.d.ts +0 -1
  560. package/dist/sdk/i18n/provider.js +0 -30
  561. package/dist/sdk/i18n/provider.js.map +0 -1
  562. package/dist/sdk/i18n/server.d.ts +0 -28
  563. package/dist/sdk/i18n/server.js +0 -59
  564. package/dist/sdk/i18n/server.js.map +0 -1
  565. package/dist/utils/resolve-authored-copy.js +0 -18
  566. package/dist/utils/resolve-authored-copy.js.map +0 -1
  567. package/dist/utils/substitute-template.js +0 -33
  568. package/dist/utils/substitute-template.js.map +0 -1
@@ -1,23 +1,130 @@
1
1
  "use client";
2
2
  import { defineComponent } from "../../core/dist/define-component.js";
3
+ import { defineContentType } from "../../core/dist/define-content-type.js";
3
4
  import "../../core/dist/index.js";
4
5
  import { resolveSafeHref } from "../../utils/safe-href.js";
5
6
  import { useStorefrontContext } from "../../sdk/context/storefront-context.js";
7
+ import { useMessageFormatter } from "../../sdk/i18n/use-message-formatter.js";
6
8
  import { graphql } from "../../sdk/generated/gql.js";
7
9
  import { useActionsOverride } from "../../sdk/actions/actions-override-context.js";
8
10
  import { useDataOverride } from "../../sdk/data/data-override-context.js";
11
+ import { loggableErrorName } from "../../utils/loggable-error-name.js";
9
12
  import { NavigationLink } from "../../particles/navigation-link/navigation-link.js";
10
- import { formatPrice } from "../cart/cart.js";
11
- import { createContext, useContext, useState } from "react";
13
+ import { useOptionalToast } from "../../particles/toast/toast.js";
14
+ import { formatPrice, isFiniteAmount } from "../cart/cart.js";
15
+ import { createContext, useCallback, useContext, useRef, useState } from "react";
12
16
  import { jsx, jsxs } from "react/jsx-runtime";
13
17
  import { NumberField } from "@base-ui/react/number-field";
14
18
  //#region src/matter/cart-item/cart-item.tsx
19
+ const CartItemDiscountPercentageContent = defineContentType({
20
+ id: "cart-item-discount-percentage",
21
+ title: "Cart Item Discount Percentage",
22
+ description: "The per-line discount badge.",
23
+ schema: {
24
+ type: "object",
25
+ additionalProperties: false,
26
+ properties: { template: {
27
+ type: "string",
28
+ title: "Badge text",
29
+ description: "percentage is the integer percent off the list price.",
30
+ format: "icu-message",
31
+ messageSource: "-{percentage}%",
32
+ messageArguments: {
33
+ type: "object",
34
+ properties: { percentage: { type: "integer" } }
35
+ },
36
+ messageExample: { percentage: 20 }
37
+ } }
38
+ }
39
+ });
40
+ const CartItemQuantityContent = defineContentType({
41
+ id: "cart-item-quantity",
42
+ title: "Cart Item Quantity",
43
+ description: "The notice shown when a typed quantity is corrected.",
44
+ schema: {
45
+ type: "object",
46
+ additionalProperties: false,
47
+ properties: { validationMessage: {
48
+ type: "string",
49
+ title: "Adjusted quantity notice",
50
+ description: "value is the corrected amount, in the unit shown to the shopper.",
51
+ format: "icu-message",
52
+ messageSource: "Quantity adjusted to {value}.",
53
+ messageArguments: {
54
+ type: "object",
55
+ properties: { value: { type: "number" } }
56
+ },
57
+ messageExample: { value: 3 }
58
+ } }
59
+ }
60
+ });
61
+ const CartItemRemoveContent = defineContentType({
62
+ id: "cart-item-remove",
63
+ title: "Cart Item Remove",
64
+ description: "The toast raised after a line is removed.",
65
+ schema: {
66
+ type: "object",
67
+ additionalProperties: false,
68
+ properties: { removedMessage: {
69
+ type: "string",
70
+ title: "Removed message",
71
+ format: "icu-message",
72
+ messageSource: "Item removed"
73
+ } }
74
+ }
75
+ });
76
+ const CartItemUnavailableContent = defineContentType({
77
+ id: "cart-item-unavailable",
78
+ title: "Cart Item Unavailable",
79
+ description: "The status label of a line that cannot be bought, one per availability state.",
80
+ schema: {
81
+ type: "object",
82
+ additionalProperties: false,
83
+ properties: {
84
+ outOfStockLabel: {
85
+ type: "string",
86
+ title: "Out of stock label",
87
+ format: "icu-message",
88
+ messageSource: "Out of stock"
89
+ },
90
+ cannotBeDeliveredLabel: {
91
+ type: "string",
92
+ title: "Cannot be delivered label",
93
+ format: "icu-message",
94
+ messageSource: "Cannot be delivered"
95
+ },
96
+ unavailableLabel: {
97
+ type: "string",
98
+ title: "Unavailable label",
99
+ description: "Any other state the line cannot be bought in.",
100
+ format: "icu-message",
101
+ messageSource: "Unavailable"
102
+ }
103
+ }
104
+ }
105
+ });
106
+ const CartItemGiftContent = defineContentType({
107
+ id: "cart-item-gift",
108
+ title: "Cart Item Gift",
109
+ description: "The marker of a promotional gift line.",
110
+ schema: {
111
+ type: "object",
112
+ additionalProperties: false,
113
+ properties: { label: {
114
+ type: "string",
115
+ title: "Gift label",
116
+ format: "icu-message",
117
+ messageSource: "Free"
118
+ } }
119
+ }
120
+ });
15
121
  const fragment = graphql(`
16
122
  fragment CartItemRootData on Query {
17
123
  cart {
18
124
  items {
19
125
  __typename
20
126
  id
127
+ lineId
21
128
  quantity
22
129
  price {
23
130
  amount
@@ -100,7 +207,7 @@ const CartItemRootDefinition = defineComponent({
100
207
  category: "commerce"
101
208
  },
102
209
  schema: {},
103
- guideline: "Per-line data provider for the cart line-item template: place it directly inside CartList, wrapping the CartItem* particles (CartItemImage, CartItemName, CartItemPrice, the CartItemQuantity stepper, CartItemRemove, …). It owns the core per-item fields and delivers each line its own slice, so the core particles must sit inside it. Must be inside CartList. See cart-item.md."
210
+ guideline: "Per-line data provider for the cart line-item template: place it directly inside CartList, CartAvailableItems or CartUnavailableItems, wrapping the CartItem* particles (CartItemImage, CartItemName, CartItemPrice, the CartItemQuantity stepper, CartItemRemove, …). It owns the core per-item fields and delivers each line its own slice, so the core particles must sit inside it. Must be inside CartList, CartAvailableItems or CartUnavailableItems. See cart-item.md."
104
211
  });
105
212
  const CartItemImageDefinition = defineComponent({
106
213
  name: "CartItemImage",
@@ -121,7 +228,7 @@ const CartItemImageDefinition = defineComponent({
121
228
  default: "contain",
122
229
  label: "Object Fit"
123
230
  } },
124
- guideline: "Renders the product image from the cart item. Must be inside CartItemRoot."
231
+ guideline: "Renders the product image from the cart item. When the line has no image, or the image fails to load, it renders a decorative placeholder span in the same slot (same className and style, hidden from assistive technology) carrying data-fs-cart-item-image-broken for a swatch to style. The placeholder keeps the inline-level display of the image (inline-block) so width and height apply, and adds no color, border or background. Must be inside CartItemRoot."
125
232
  });
126
233
  const CartItemProductLinkDefinition = defineComponent({
127
234
  name: "CartItemProductLink",
@@ -133,7 +240,7 @@ const CartItemProductLinkDefinition = defineComponent({
133
240
  category: "commerce"
134
241
  },
135
242
  schema: {},
136
- guideline: "Links the cart line image to its product page, using the product URL the line already carries: place it inside CartItemRoot wrapping CartItemImage. Whether a line links is decided by placing this element, so there is no prop to toggle it — a checkout line simply omits it. Renders its children unwrapped when the line has no image or no usable product URL, so it never leaves an empty or unsafe link. Navigation is same-tab, and the leaf adds no fields to the page query. Must be inside CartItemRoot. See cart-item.md."
243
+ guideline: "Links the cart line image to its product page, using the product URL the line already carries: place it inside CartItemRoot wrapping CartItemImage. Whether a line links is decided by placing this element, so there is no prop to toggle it — a checkout line simply omits it. Renders its children unwrapped when the line has no image or no usable product URL, so it never leaves an empty or unsafe link. The link names itself with an aria-label taken from the image alt text (or the variant name), so it stays named when the image shows the placeholder; an aria-label passed to the link wins. Navigation is same-tab, and the leaf adds no fields to the page query. Must be inside CartItemRoot. See cart-item.md."
137
244
  });
138
245
  const CartItemNameDefinition = defineComponent({
139
246
  name: "CartItemName",
@@ -199,17 +306,14 @@ const CartItemDiscountPercentageDefinition = defineComponent({
199
306
  name: "CartItemDiscountPercentage",
200
307
  importPath: "@vtex/faststore/components",
201
308
  component: CartItemDiscountPercentage,
309
+ content: CartItemDiscountPercentageContent,
202
310
  requiresContext: "cart-item-data",
203
311
  editor: {
204
312
  label: "Cart Item Discount %",
205
313
  category: "commerce"
206
314
  },
207
- schema: { template: {
208
- type: "string",
209
- default: "-{percentage}%",
210
- label: "Template"
211
- } },
212
- guideline: "Per-line discount badge showing the integer listPrice-vs-sellingPrice percentage (e.g. \"-20%\"); use the template prop to customize the format ({percentage} is the integer percent). Renders null when the line has no discount (sellingPrice >= listPrice), so it only appears on promotional lines. Place alongside CartItemPrice/CartItemListPrice. Must be inside CartItemRoot."
315
+ schema: {},
316
+ guideline: "Per-line discount badge showing the integer listPrice-vs-sellingPrice percentage (e.g. \"-20%\"); the $content field template is an ICU message whose percentage argument is the integer percent. Renders null when the line has no discount (sellingPrice >= listPrice), so it only appears on promotional lines. Place alongside CartItemPrice/CartItemListPrice. Must be inside CartItemRoot."
213
317
  });
214
318
  const CartItemLineTotalDefinition = defineComponent({
215
319
  name: "CartItemLineTotal",
@@ -251,6 +355,7 @@ const CartItemQuantityDefinition = defineComponent({
251
355
  name: "CartItemQuantity",
252
356
  importPath: "@vtex/faststore/components",
253
357
  component: CartItemQuantity,
358
+ content: CartItemQuantityContent,
254
359
  fragment: cartItemQuantityFragment,
255
360
  fetchStrategy: "reactive-list-item",
256
361
  requiresContext: "cart-item-data",
@@ -277,11 +382,6 @@ const CartItemQuantityDefinition = defineComponent({
277
382
  type: "boolean",
278
383
  default: false,
279
384
  label: "Remove On Decrement"
280
- },
281
- validationMessage: {
282
- type: "string",
283
- default: "Quantity adjusted to {value}.",
284
- label: "Validation Message"
285
385
  }
286
386
  },
287
387
  actions: { cart: [
@@ -289,7 +389,7 @@ const CartItemQuantityDefinition = defineComponent({
289
389
  "decreaseQuantity",
290
390
  "removeItem"
291
391
  ] },
292
- guideline: "Quantity stepper for a cart item, shown in the unit the merchant sells in: the displayed amount is the line's quantity times its unit multiplier, so a SKU sold in 500 g portions reads 1.5 rather than 3. min, max, and step are configured in purchasable units and converted for display, so one template serves SKUs with different multipliers. A typed amount that is out of bounds or off the multiplier grid snaps to the nearest valid value on commit and renders validationMessage. Set removeOnDecrement=true to remove the item when quantity reaches the minimum. Renders nothing on a gift line — a gift's quantity is promotion-controlled and cannot be stepped or removed, so use CartItemQuantityValue to show a gift's fixed quantity. Must be inside CartItemRoot. See cart-item.md."
392
+ guideline: "Quantity stepper for a cart item, shown in the unit the merchant sells in: the displayed amount is the line's quantity times its unit multiplier, so a SKU sold in 500 g portions reads 1.5 rather than 3. min, max, and step are configured in purchasable units and converted for display, so one template serves SKUs with different multipliers. A typed amount that is out of bounds or off the multiplier grid snaps to the nearest valid value on commit and renders the $content field validationMessage, which also shows when the platform stores a lower quantity than the stepper asked for, such as when stock runs out. Set removeOnDecrement=true to remove the item when quantity reaches the minimum. Renders nothing on a gift line — a gift's quantity is promotion-controlled and cannot be stepped or removed, so use CartItemQuantityValue to show a gift's fixed quantity. Must be inside CartItemRoot. See cart-item.md."
293
393
  });
294
394
  const CartItemQuantityValueDefinition = defineComponent({
295
395
  name: "CartItemQuantityValue",
@@ -307,6 +407,7 @@ const CartItemRemoveDefinition = defineComponent({
307
407
  name: "CartItemRemove",
308
408
  importPath: "@vtex/faststore/components",
309
409
  component: CartItemRemove,
410
+ content: CartItemRemoveContent,
310
411
  requiresContext: "cart-item-data",
311
412
  editor: {
312
413
  label: "Cart Item Remove",
@@ -314,7 +415,7 @@ const CartItemRemoveDefinition = defineComponent({
314
415
  },
315
416
  schema: {},
316
417
  actions: { cart: ["removeItem"] },
317
- guideline: "Button that removes the current line item from the cart. Must be inside CartItemRoot. Also composes inside CartItemUnavailable as a remove-on-alert control. See cart-item.md."
418
+ guideline: "Button that removes the current line item from the cart. Disabled while the removal is in flight; when the removal returns no errors it raises a toast titled by the $content field removedMessage (needs a ToastProvider with a ToastList in the layout; with none, no toast shows and removal still works). Must be inside CartItemRoot. Also composes inside CartItemUnavailable as a remove-on-alert control. See cart-item.md."
318
419
  });
319
420
  const CartItemAvailableDefinition = defineComponent({
320
421
  name: "CartItemAvailable",
@@ -332,25 +433,27 @@ const CartItemUnavailableDefinition = defineComponent({
332
433
  name: "CartItemUnavailable",
333
434
  importPath: "@vtex/faststore/components",
334
435
  component: CartItemUnavailable,
436
+ content: CartItemUnavailableContent,
335
437
  requiresContext: "cart-item-data",
336
438
  editor: {
337
439
  label: "Cart Item Unavailable",
338
440
  category: "commerce"
339
441
  },
340
442
  schema: {},
341
- guideline: "Status badge shown only when the current cart item is NOT available. Renders a built-in English label per state (OUT_OF_STOCK → \"Out of stock\", UNAVAILABLE → \"Cannot be delivered\", otherwise \"Unavailable\"); pass children to override the text — children REPLACE the label, so a remove-on-alert composition nests an explicit label plus a CartItemRemove. Emits data-fs-cart-item-unavailable-state for per-state styling. Must be inside CartItemRoot. See cart-item.md."
443
+ guideline: "Status badge shown only when the current cart item is NOT available. Renders one $content message per state (OUT_OF_STOCK → outOfStockLabel, UNAVAILABLE → cannotBeDeliveredLabel, otherwise unavailableLabel); pass children to override the text — children REPLACE the label, so a remove-on-alert composition nests an explicit label plus a CartItemRemove. Emits data-fs-cart-item-unavailable-state for per-state styling. Must be inside CartItemRoot. See cart-item.md."
342
444
  });
343
445
  const CartItemGiftDefinition = defineComponent({
344
446
  name: "CartItemGift",
345
447
  importPath: "@vtex/faststore/components",
346
448
  component: CartItemGift,
449
+ content: CartItemGiftContent,
347
450
  requiresContext: "cart-item-data",
348
451
  editor: {
349
452
  label: "Cart Item Gift",
350
453
  category: "commerce"
351
454
  },
352
455
  schema: {},
353
- guideline: "Free marker for a promotional gift line: renders only when the current cart item is a gift, showing a built-in \"Free\" label; pass children to override the text — children REPLACE the label. Place it beside CartItemPrice/CartItemListPrice, whose struck-through list price it complements. It is an inline marker, not a wrapper for a gift-only subtree. On a gift line CartItemRemove suppresses itself and CartItemRoot marks the row with data-fs-cart-item-gift-line, so neither needs composing differently. Must be inside CartItemRoot. See cart-item.md."
456
+ guideline: "Free marker for a promotional gift line: renders only when the current cart item is a gift, showing the $content field label; pass children to override the text — children REPLACE the label. Place it beside CartItemPrice/CartItemListPrice, whose struck-through list price it complements. It is an inline marker, not a wrapper for a gift-only subtree. On a gift line CartItemRemove suppresses itself and CartItemRoot marks the row with data-fs-cart-item-gift-line, so neither needs composing differently. Must be inside CartItemRoot. See cart-item.md."
354
457
  });
355
458
  function CartItemRoot({ $data: $dataProp, className, children, ...props }) {
356
459
  const slice = useDataOverride($dataProp) ?? null;
@@ -365,12 +468,39 @@ function CartItemRoot({ $data: $dataProp, className, children, ...props }) {
365
468
  })
366
469
  });
367
470
  }
368
- function CartItemImage({ className, objectFit = "contain", ...props }) {
471
+ function CartItemImage({ className, objectFit = "contain", ref, onError, ...props }) {
369
472
  const item = useCartItem();
370
473
  const image = item.variant.image;
371
- if (!image) return null;
474
+ const url = image?.url ?? "";
475
+ const [failedUrl, setFailedUrl] = useState(null);
476
+ if (failedUrl !== null && failedUrl !== url) setFailedUrl(null);
477
+ const setImageRef = useCallback((node) => {
478
+ if (node?.complete && node.naturalWidth === 0) setFailedUrl(url);
479
+ if (typeof ref === "function") return ref(node);
480
+ if (ref) {
481
+ ref.current = node;
482
+ return () => {
483
+ ref.current = null;
484
+ };
485
+ }
486
+ }, [ref, url]);
487
+ if (!image || !url.trim() || failedUrl === url) return /* @__PURE__ */ jsx("span", {
488
+ className,
489
+ style: {
490
+ display: "inline-block",
491
+ ...props.style
492
+ },
493
+ "aria-hidden": "true",
494
+ "data-fs-cart-item-image": "",
495
+ "data-fs-cart-item-image-broken": ""
496
+ });
497
+ function handleError(event) {
498
+ setFailedUrl(url);
499
+ onError?.(event);
500
+ }
372
501
  return /* @__PURE__ */ jsx("img", {
373
502
  ...props,
503
+ ref: setImageRef,
374
504
  src: image.url,
375
505
  alt: image.altText ?? item.variant.name,
376
506
  className,
@@ -378,6 +508,7 @@ function CartItemImage({ className, objectFit = "contain", ...props }) {
378
508
  objectFit,
379
509
  ...props.style
380
510
  },
511
+ onError: handleError,
381
512
  "data-fs-cart-item-image": "",
382
513
  "data-fs-image": ""
383
514
  });
@@ -390,8 +521,10 @@ function CartItemProductLink({ className, children, ...props }) {
390
521
  return children;
391
522
  }
392
523
  const image = item.variant.image;
393
- if (!image || !(image.altText ?? item.variant.name ?? "").trim()) return children;
524
+ const name = (image?.altText ?? item.variant.name ?? "").trim();
525
+ if (!image || !name) return children;
394
526
  return /* @__PURE__ */ jsx(NavigationLink, {
527
+ "aria-label": name,
395
528
  ...props,
396
529
  href: destination.href,
397
530
  className,
@@ -437,34 +570,36 @@ function CartItemPrice({ className, children, ...props }) {
437
570
  className,
438
571
  "data-fs-cart-item-price": "",
439
572
  "data-fs-text": "",
440
- children: children ?? formatPrice(item.sellingPrice.amount, locale, currency)
573
+ children: children ?? formatPrice(Number(item.sellingPrice.amount), locale, currency)
441
574
  });
442
575
  }
443
576
  function CartItemListPrice({ className, children, ...props }) {
444
577
  const item = useCartItem();
445
578
  const { locale, currency } = useStorefrontContext();
446
- if (Number(item.listPrice.amount) <= Number(item.sellingPrice.amount)) return null;
579
+ if (!isFiniteAmount(item.listPrice.amount) || !isFiniteAmount(item.sellingPrice.amount)) return null;
580
+ const listPrice = Number(item.listPrice.amount);
581
+ if (listPrice <= Number(item.sellingPrice.amount)) return null;
447
582
  return /* @__PURE__ */ jsx("span", {
448
583
  ...props,
449
584
  className,
450
585
  "data-fs-cart-item-list-price": "",
451
586
  "data-fs-text": "",
452
- children: children ?? formatPrice(item.listPrice.amount, locale, currency)
587
+ children: children ?? formatPrice(listPrice, locale, currency)
453
588
  });
454
589
  }
455
- function CartItemDiscountPercentage({ template = "-{percentage}%", className, children, ...props }) {
590
+ function CartItemDiscountPercentage({ $content, $locale, className, children, ...props }) {
456
591
  const item = useCartItem();
592
+ const { format } = useMessageFormatter(CartItemDiscountPercentageContent, $content);
457
593
  const listPrice = Number(item.listPrice.amount);
458
594
  const sellingPrice = Number(item.sellingPrice.amount);
459
595
  if (listPrice <= sellingPrice) return null;
460
596
  const percent = Math.round((listPrice - sellingPrice) / listPrice * 100);
461
- const text = template.replaceAll("{percentage}", String(percent));
462
597
  return /* @__PURE__ */ jsx("span", {
463
598
  ...props,
464
599
  className,
465
600
  "data-fs-cart-item-discount-percentage": "",
466
601
  "data-fs-text": "",
467
- children: children ?? text
602
+ children: children ?? format("template", { percentage: percent })
468
603
  });
469
604
  }
470
605
  function CartItemLineTotal({ className, children, ...props }) {
@@ -474,7 +609,7 @@ function CartItemLineTotal({ className, children, ...props }) {
474
609
  ...props,
475
610
  className,
476
611
  "data-fs-cart-item-line-total": "",
477
- children: children ?? formatPrice(item.sellingPrice.amount * item.quantity, locale, currency)
612
+ children: children ?? formatPrice(Number(item.sellingPrice.amount) * item.quantity, locale, currency)
478
613
  });
479
614
  }
480
615
  function CartItemOwnTotal({ className, children, ...props }) {
@@ -539,11 +674,14 @@ function resolveAdjustment(entered, snappedDisplay, multiplier, minDisplay, maxD
539
674
  };
540
675
  return null;
541
676
  }
542
- function CartItemQuantity({ className, children, min = 1, max, step, removeOnDecrement, validationMessage = "Quantity adjusted to {value}.", $data: $dataProp, $actions: $actionsProp, ...props }) {
677
+ function CartItemQuantity({ className, children, min = 1, max, step, removeOnDecrement, $data: $dataProp, $actions: $actionsProp, $content, $locale, ...props }) {
543
678
  const item = useCartItem();
544
679
  const slice = useDataOverride($dataProp);
545
680
  const $actions = useActionsOverride($actionsProp);
546
681
  const [adjustment, setAdjustment] = useState(null);
682
+ const [requestedUnits, setRequestedUnits] = useState(null);
683
+ const latestRequest = useRef(0);
684
+ const { format } = useMessageFormatter(CartItemQuantityContent, $content);
547
685
  if (item.gift) return null;
548
686
  const cart = $actions?.cart;
549
687
  const multiplier = effectiveMultiplier(slice);
@@ -556,6 +694,9 @@ function CartItemQuantity({ className, children, min = 1, max, step, removeOnDec
556
694
  const maxDisplay = maxUnits == null ? void 0 : roundTo(maxUnits * multiplier, decimals);
557
695
  function handleValueCommitted(value) {
558
696
  if (value == null) return;
697
+ latestRequest.current += 1;
698
+ const request = latestRequest.current;
699
+ setRequestedUnits(null);
559
700
  if (removeOnDecrement && value < minDisplay) {
560
701
  setAdjustment(null);
561
702
  cart?.removeItem?.({ id: item.id });
@@ -565,15 +706,23 @@ function CartItemQuantity({ className, children, min = 1, max, step, removeOnDec
565
706
  const snappedDisplay = roundTo(snapped * multiplier, decimals);
566
707
  setAdjustment(resolveAdjustment(value, snappedDisplay, multiplier, minDisplay, maxDisplay));
567
708
  const delta = snapped - item.quantity;
568
- if (delta > 0) cart?.increaseQuantity?.({
709
+ let write;
710
+ if (delta > 0) write = cart?.increaseQuantity?.({
569
711
  id: item.id,
570
712
  by: delta
571
713
  });
572
- else if (delta < 0) cart?.decreaseQuantity?.({
714
+ else if (delta < 0) write = cart?.decreaseQuantity?.({
573
715
  id: item.id,
574
716
  by: -delta
575
717
  });
718
+ write?.then((errors) => {
719
+ if (errors.length === 0 && latestRequest.current === request) setRequestedUnits(snapped);
720
+ });
576
721
  }
722
+ const shown = requestedUnits != null && item.quantity < requestedUnits ? {
723
+ reason: "platform",
724
+ value: roundTo(item.quantity * multiplier, decimals)
725
+ } : adjustment;
577
726
  const effectiveMin = removeOnDecrement ? 0 : minDisplay;
578
727
  const computedClassName = removeOnDecrement ? className ? `group ${className}` : "group" : className;
579
728
  return /* @__PURE__ */ jsxs(NumberField.Root, {
@@ -581,7 +730,11 @@ function CartItemQuantity({ className, children, min = 1, max, step, removeOnDec
581
730
  value: roundTo(item.quantity * multiplier, decimals),
582
731
  onValueCommitted: handleValueCommitted,
583
732
  onValueChange: (_value, details) => {
584
- if (details.reason === "input-change" || details.reason === "input-paste" || details.reason === "input-clear") setAdjustment(null);
733
+ if (details.reason === "input-change" || details.reason === "input-paste" || details.reason === "input-clear") {
734
+ latestRequest.current += 1;
735
+ setAdjustment(null);
736
+ setRequestedUnits(null);
737
+ }
585
738
  },
586
739
  min: effectiveMin,
587
740
  max: maxDisplay,
@@ -593,15 +746,15 @@ function CartItemQuantity({ className, children, min = 1, max, step, removeOnDec
593
746
  className: computedClassName,
594
747
  "data-fs-cart-item-quantity": "",
595
748
  ...multiplier === 1 ? {} : { "data-fs-cart-item-quantity-multiplier": String(multiplier) },
596
- ...adjustment ? {
749
+ ...shown ? {
597
750
  "data-fs-cart-item-quantity-adjusted": "",
598
- "data-fs-cart-item-quantity-adjusted-reason": adjustment.reason
751
+ "data-fs-cart-item-quantity-adjusted-reason": shown.reason
599
752
  } : {},
600
753
  ...removeOnDecrement && item.quantity <= minUnits ? { "data-fs-cart-item-at-min": "" } : {},
601
- children: [children, adjustment ? /* @__PURE__ */ jsx("div", {
754
+ children: [children, shown ? /* @__PURE__ */ jsx("div", {
602
755
  role: "alert",
603
756
  "data-fs-cart-item-quantity-validation": "",
604
- children: validationMessage.replaceAll("{value}", String(adjustment.value))
757
+ children: format("validationMessage", { value: shown.value })
605
758
  }) : null]
606
759
  });
607
760
  }
@@ -614,30 +767,49 @@ function CartItemQuantityValue({ className, children, ...props }) {
614
767
  children: children ?? String(item.quantity)
615
768
  });
616
769
  }
617
- function CartItemRemove({ className, children, onClick, $actions: $actionsProp, ...props }) {
770
+ function CartItemRemove({ className, children, onClick, disabled, $actions: $actionsProp, $content, $locale, ...props }) {
618
771
  const $actions = useActionsOverride($actionsProp);
619
772
  const item = useCartItem();
773
+ const toast = useOptionalToast();
774
+ const [pending, setPending] = useState(false);
775
+ const { format } = useMessageFormatter(CartItemRemoveContent, $content);
620
776
  if (item.gift) return null;
621
- function handleClick(e) {
622
- $actions?.cart?.removeItem?.({ id: item.id });
777
+ async function handleClick(e) {
778
+ if (pending) return;
779
+ const removeItem = $actions?.cart?.removeItem;
780
+ if (typeof removeItem !== "function") {
781
+ onClick?.(e);
782
+ return;
783
+ }
784
+ setPending(true);
623
785
  onClick?.(e);
786
+ try {
787
+ const userErrors = await removeItem({ id: item.id });
788
+ if (Array.isArray(userErrors) && userErrors.length === 0) toast?.add({
789
+ title: format("removedMessage"),
790
+ type: "success"
791
+ });
792
+ } catch (error) {
793
+ console.error("[CartItemRemove] removeItem failed", loggableErrorName(error));
794
+ } finally {
795
+ setPending(false);
796
+ }
624
797
  }
625
798
  return /* @__PURE__ */ jsx("button", {
626
799
  ...props,
627
800
  type: "button",
628
801
  className,
802
+ disabled: pending || disabled,
629
803
  onClick: handleClick,
630
804
  "data-fs-cart-item-remove": "",
631
805
  "data-fs-button": "",
632
806
  children
633
807
  });
634
808
  }
635
- const UNAVAILABLE_LABELS = {
636
- OUT_OF_STOCK: "Out of stock",
637
- UNAVAILABLE: "Cannot be delivered"
638
- };
639
- function unavailableLabel(availability) {
640
- return UNAVAILABLE_LABELS[availability] ?? "Unavailable";
809
+ function unavailableField(availability) {
810
+ if (availability === "OUT_OF_STOCK") return "outOfStockLabel";
811
+ if (availability === "UNAVAILABLE") return "cannotBeDeliveredLabel";
812
+ return "unavailableLabel";
641
813
  }
642
814
  function CartItemAvailable({ className, children, ...props }) {
643
815
  if (useCartItem().variant.availability !== "AVAILABLE") return null;
@@ -648,28 +820,32 @@ function CartItemAvailable({ className, children, ...props }) {
648
820
  children
649
821
  });
650
822
  }
651
- function CartItemUnavailable({ className, children, ...props }) {
652
- const { availability } = useCartItem().variant;
823
+ function CartItemUnavailable({ $content, $locale, className, children, ...props }) {
824
+ const item = useCartItem();
825
+ const { format } = useMessageFormatter(CartItemUnavailableContent, $content);
826
+ const { availability } = item.variant;
653
827
  if (availability === "AVAILABLE") return null;
654
828
  return /* @__PURE__ */ jsx("div", {
655
829
  ...props,
656
830
  className,
657
831
  "data-fs-cart-item-unavailable": "",
658
832
  "data-fs-cart-item-unavailable-state": availability.toLowerCase(),
659
- children: children ?? unavailableLabel(availability)
833
+ children: children ?? format(unavailableField(availability))
660
834
  });
661
835
  }
662
- function CartItemGift({ className, children, ...props }) {
663
- if (!useCartItem().gift) return null;
836
+ function CartItemGift({ $content, $locale, className, children, ...props }) {
837
+ const item = useCartItem();
838
+ const { format } = useMessageFormatter(CartItemGiftContent, $content);
839
+ if (!item.gift) return null;
664
840
  return /* @__PURE__ */ jsx("span", {
665
841
  ...props,
666
842
  className,
667
843
  "data-fs-cart-item-gift": "",
668
844
  "data-fs-text": "",
669
- children: children ?? "Free"
845
+ children: children ?? format("label")
670
846
  });
671
847
  }
672
848
  //#endregion
673
- export { CartItemAggregateTotal, CartItemAggregateTotalDefinition, CartItemAvailable, CartItemAvailableDefinition, CartItemDiscountPercentage, CartItemDiscountPercentageDefinition, CartItemGift, CartItemGiftDefinition, CartItemImage, CartItemImageDefinition, CartItemLineTotal, CartItemLineTotalDefinition, CartItemListPrice, CartItemListPriceDefinition, CartItemName, CartItemNameDefinition, CartItemOwnTotal, CartItemOwnTotalDefinition, CartItemPrice, CartItemPriceDefinition, CartItemProductLink, CartItemProductLinkDefinition, CartItemQuantity, CartItemQuantityDefinition, CartItemQuantityValue, CartItemQuantityValueDefinition, CartItemRemove, CartItemRemoveDefinition, CartItemRoot, CartItemRootDefinition, CartItemSku, CartItemSkuDefinition, CartItemUnavailable, CartItemUnavailableDefinition, CartItemVariant, CartItemVariantDefinition };
849
+ export { CartItemAggregateTotal, CartItemAggregateTotalDefinition, CartItemAvailable, CartItemAvailableDefinition, CartItemDiscountPercentage, CartItemDiscountPercentageContent, CartItemDiscountPercentageDefinition, CartItemGift, CartItemGiftContent, CartItemGiftDefinition, CartItemImage, CartItemImageDefinition, CartItemLineTotal, CartItemLineTotalDefinition, CartItemListPrice, CartItemListPriceDefinition, CartItemName, CartItemNameDefinition, CartItemOwnTotal, CartItemOwnTotalDefinition, CartItemPrice, CartItemPriceDefinition, CartItemProductLink, CartItemProductLinkDefinition, CartItemQuantity, CartItemQuantityContent, CartItemQuantityDefinition, CartItemQuantityValue, CartItemQuantityValueDefinition, CartItemRemove, CartItemRemoveContent, CartItemRemoveDefinition, CartItemRoot, CartItemRootDefinition, CartItemSku, CartItemSkuDefinition, CartItemUnavailable, CartItemUnavailableContent, CartItemUnavailableDefinition, CartItemVariant, CartItemVariantDefinition };
674
850
 
675
851
  //# sourceMappingURL=cart-item.js.map