@vtex/faststore 0.0.7 → 0.0.10

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 (498) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/dist/actions.json +194 -1
  3. package/dist/catalog.json +3449 -1612
  4. package/dist/cli/index.d.ts +512 -63
  5. package/dist/cli/index.js +2098 -686
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/cli/server-runtime.js +44 -24
  8. package/dist/cli/server-runtime.js.map +1 -1
  9. package/dist/client.d.ts +5 -1
  10. package/dist/client.js +5 -1
  11. package/dist/components.d.ts +42 -10
  12. package/dist/components.js +47 -15
  13. package/dist/content-types.json +823 -0
  14. package/dist/core/dist/define-component.d.ts +12 -2
  15. package/dist/docs/account-access-gate.md +4 -4
  16. package/dist/docs/account-address-book.md +519 -0
  17. package/dist/docs/account-entry-point.md +5 -5
  18. package/dist/docs/account-menu.md +7 -7
  19. package/dist/docs/account-saved-cards.md +301 -0
  20. package/dist/docs/alert-dialog.md +2 -2
  21. package/dist/docs/billing-address.md +17 -9
  22. package/dist/docs/binding-switcher.md +154 -0
  23. package/dist/docs/card-entry.md +38 -7
  24. package/dist/docs/card-summary.md +175 -0
  25. package/dist/docs/cardholder-document.md +16 -14
  26. package/dist/docs/cart-destination.md +238 -0
  27. package/dist/docs/cart-item.md +22 -4
  28. package/dist/docs/cart-totalizer.md +1 -1
  29. package/dist/docs/cart.md +126 -19
  30. package/dist/docs/client-profile-fieldset.md +7 -5
  31. package/dist/docs/copy-text.md +84 -0
  32. package/dist/docs/document-field.md +8 -8
  33. package/dist/docs/footer-link-group.md +2 -2
  34. package/dist/docs/footer-social.md +1 -1
  35. package/dist/docs/free-shipping-progress.md +13 -9
  36. package/dist/docs/header-root.md +1 -1
  37. package/dist/docs/incentives.md +4 -4
  38. package/dist/docs/logo.md +6 -6
  39. package/dist/docs/my-account-profile.md +4 -4
  40. package/dist/docs/navigation-link-list.md +2 -2
  41. package/dist/docs/navigation-link.md +3 -3
  42. package/dist/docs/order-cancel.md +52 -0
  43. package/dist/docs/order-delivery-address.md +63 -0
  44. package/dist/docs/order-delivery-group.md +83 -0
  45. package/dist/docs/order-details-back.md +41 -0
  46. package/dist/docs/order-details-header.md +48 -0
  47. package/dist/docs/order-list-row.md +46 -0
  48. package/dist/docs/order-list-search.md +101 -0
  49. package/dist/docs/order-list-views.md +97 -0
  50. package/dist/docs/order-list.md +94 -0
  51. package/dist/docs/order-payment.md +94 -0
  52. package/dist/docs/order-placed-date.md +49 -0
  53. package/dist/docs/order-placed-payment-summary.md +13 -15
  54. package/dist/docs/order-placed.md +225 -0
  55. package/dist/docs/order-progress.md +88 -0
  56. package/dist/docs/order-status-badge.md +91 -0
  57. package/dist/docs/order-summary.md +53 -0
  58. package/dist/docs/payment-method-badges.md +16 -5
  59. package/dist/docs/payment-methods.md +1 -1
  60. package/dist/docs/place-order.md +13 -9
  61. package/dist/docs/product-information.md +2 -2
  62. package/dist/docs/product-shelf.md +7 -0
  63. package/dist/docs/saved-cards.md +2 -2
  64. package/dist/docs/select.md +22 -10
  65. package/dist/docs/session.md +1 -1
  66. package/dist/docs/shipping-address.md +1 -1
  67. package/dist/docs/sign-in-redirect.md +7 -7
  68. package/dist/docs/toast.md +35 -13
  69. package/dist/index.d.ts +7 -2
  70. package/dist/index.js +2 -1
  71. package/dist/internal/client.d.ts +9 -1
  72. package/dist/internal/client.js +10 -2
  73. package/dist/internal/server.d.ts +8 -2
  74. package/dist/internal/server.js +8 -2
  75. package/dist/matter/account-access-gate/account-access-gate.d.ts +2 -1
  76. package/dist/matter/account-access-gate/account-access-gate.js +19 -16
  77. package/dist/matter/account-access-gate/account-access-gate.js.map +1 -1
  78. package/dist/matter/account-address-book/account-address-book-delete.d.ts +60 -0
  79. package/dist/matter/account-address-book/account-address-book-delete.js +184 -0
  80. package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -0
  81. package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +19 -0
  82. package/dist/matter/account-address-book/account-address-book-deliverability.js +50 -0
  83. package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -0
  84. package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +42 -0
  85. package/dist/matter/account-address-book/account-address-book-form-parts.js +146 -0
  86. package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -0
  87. package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +25 -0
  88. package/dist/matter/account-address-book/account-address-book-profile-notice.js +72 -0
  89. package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -0
  90. package/dist/matter/account-address-book/account-address-book.d.ts +120 -0
  91. package/dist/matter/account-address-book/account-address-book.js +469 -0
  92. package/dist/matter/account-address-book/account-address-book.js.map +1 -0
  93. package/dist/matter/account-address-book/account-address-country-switch.js +59 -0
  94. package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -0
  95. package/dist/matter/account-address-book/account-address-country.d.ts +36 -0
  96. package/dist/matter/account-address-book/account-address-country.js +151 -0
  97. package/dist/matter/account-address-book/account-address-country.js.map +1 -0
  98. package/dist/matter/account-address-book/account-address-first-line.js +11 -0
  99. package/dist/matter/account-address-book/account-address-first-line.js.map +1 -0
  100. package/dist/matter/account-address-book/account-address-form-context.d.ts +55 -0
  101. package/dist/matter/account-address-book/account-address-form-context.js +14 -0
  102. package/dist/matter/account-address-book/account-address-form-context.js.map +1 -0
  103. package/dist/matter/account-address-book/account-address-form.d.ts +85 -0
  104. package/dist/matter/account-address-book/account-address-form.js +946 -0
  105. package/dist/matter/account-address-book/account-address-form.js.map +1 -0
  106. package/dist/matter/account-address-book/account-address-postal-autofill.js +189 -0
  107. package/dist/matter/account-address-book/account-address-postal-autofill.js.map +1 -0
  108. package/dist/matter/account-address-book/account-address-record.d.ts +26 -0
  109. package/dist/matter/account-address-book/account-address-record.js +138 -0
  110. package/dist/matter/account-address-book/account-address-record.js.map +1 -0
  111. package/dist/matter/account-entry-point/account-entry-point.js +11 -11
  112. package/dist/matter/account-entry-point/account-entry-point.js.map +1 -1
  113. package/dist/matter/account-menu/account-menu.d.ts +7 -3
  114. package/dist/matter/account-menu/account-menu.js +69 -28
  115. package/dist/matter/account-menu/account-menu.js.map +1 -1
  116. package/dist/matter/account-saved-cards/account-saved-cards.d.ts +383 -0
  117. package/dist/matter/account-saved-cards/account-saved-cards.js +956 -0
  118. package/dist/matter/account-saved-cards/account-saved-cards.js.map +1 -0
  119. package/dist/matter/billing-address/billing-address.d.ts +30 -17
  120. package/dist/matter/billing-address/billing-address.js +128 -33
  121. package/dist/matter/billing-address/billing-address.js.map +1 -1
  122. package/dist/matter/breadcrumb/breadcrumb.js +2 -2
  123. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
  124. package/dist/matter/card-entry/card-capture.js +4 -3
  125. package/dist/matter/card-entry/card-capture.js.map +1 -1
  126. package/dist/matter/card-entry/card-entry.d.ts +5 -3
  127. package/dist/matter/card-entry/card-entry.js +77 -27
  128. package/dist/matter/card-entry/card-entry.js.map +1 -1
  129. package/dist/matter/cardholder-document/cardholder-document.d.ts +10 -9
  130. package/dist/matter/cardholder-document/cardholder-document.js +36 -16
  131. package/dist/matter/cardholder-document/cardholder-document.js.map +1 -1
  132. package/dist/matter/cart/cart-namespace.d.ts +5 -1
  133. package/dist/matter/cart/cart-namespace.js +5 -1
  134. package/dist/matter/cart/cart-namespace.js.map +1 -1
  135. package/dist/matter/cart/cart.d.ts +41 -6
  136. package/dist/matter/cart/cart.js +267 -54
  137. package/dist/matter/cart/cart.js.map +1 -1
  138. package/dist/matter/cart-destination/cart-destination.d.ts +222 -0
  139. package/dist/matter/cart-destination/cart-destination.js +613 -0
  140. package/dist/matter/cart-destination/cart-destination.js.map +1 -0
  141. package/dist/matter/cart-item/cart-item.d.ts +4 -2
  142. package/dist/matter/cart-item/cart-item.js +76 -17
  143. package/dist/matter/cart-item/cart-item.js.map +1 -1
  144. package/dist/matter/cart-totalizer/cart-totalizer.js +3 -2
  145. package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -1
  146. package/dist/matter/client-preferences/client-preferences-fieldset.js +1 -1
  147. package/dist/matter/client-profile-form/client-profile-fieldset.js +8 -5
  148. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
  149. package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +6 -3
  150. package/dist/matter/free-shipping-progress/free-shipping-progress.js +76 -33
  151. package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -1
  152. package/dist/matter/identity-edit/identity-edit.js +3 -3
  153. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  154. package/dist/matter/identity-summary/identity-summary.js +2 -2
  155. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  156. package/dist/matter/my-account-profile/my-account-profile.d.ts +3 -3
  157. package/dist/matter/my-account-profile/my-account-profile.js +4 -4
  158. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  159. package/dist/matter/order-cancel/order-cancel.d.ts +110 -0
  160. package/dist/matter/order-cancel/order-cancel.js +344 -0
  161. package/dist/matter/order-cancel/order-cancel.js.map +1 -0
  162. package/dist/matter/order-delivery-address/order-delivery-address.d.ts +73 -0
  163. package/dist/matter/order-delivery-address/order-delivery-address.js +172 -0
  164. package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -0
  165. package/dist/matter/order-delivery-group/order-delivery-group.d.ts +128 -0
  166. package/dist/matter/order-delivery-group/order-delivery-group.js +408 -0
  167. package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -0
  168. package/dist/matter/order-details-header/order-details-header.d.ts +104 -0
  169. package/dist/matter/order-details-header/order-details-header.js +190 -0
  170. package/dist/matter/order-details-header/order-details-header.js.map +1 -0
  171. package/dist/matter/order-list/customer-orders-filter.d.ts +12 -0
  172. package/dist/matter/order-list/customer-orders-filter.js +30 -0
  173. package/dist/matter/order-list/customer-orders-filter.js.map +1 -0
  174. package/dist/matter/order-list/order-list.d.ts +121 -0
  175. package/dist/matter/order-list/order-list.js +395 -0
  176. package/dist/matter/order-list/order-list.js.map +1 -0
  177. package/dist/matter/order-list-row/order-list-row.d.ts +44 -0
  178. package/dist/matter/order-list-row/order-list-row.js +127 -0
  179. package/dist/matter/order-list-row/order-list-row.js.map +1 -0
  180. package/dist/matter/order-list-search/order-list-search.d.ts +72 -0
  181. package/dist/matter/order-list-search/order-list-search.js +296 -0
  182. package/dist/matter/order-list-search/order-list-search.js.map +1 -0
  183. package/dist/matter/order-list-views/order-list-views.d.ts +65 -0
  184. package/dist/matter/order-list-views/order-list-views.js +154 -0
  185. package/dist/matter/order-list-views/order-list-views.js.map +1 -0
  186. package/dist/matter/order-payment/order-payment.d.ts +83 -0
  187. package/dist/matter/order-payment/order-payment.js +258 -0
  188. package/dist/matter/order-payment/order-payment.js.map +1 -0
  189. package/dist/matter/order-placed/order-placed-deliveries.d.ts +145 -0
  190. package/dist/matter/order-placed/order-placed-deliveries.js +380 -0
  191. package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -0
  192. package/dist/matter/order-placed/order-placed.d.ts +122 -0
  193. package/dist/matter/order-placed/order-placed.js +452 -0
  194. package/dist/matter/order-placed/order-placed.js.map +1 -0
  195. package/dist/matter/order-placed-date/order-placed-date.d.ts +45 -0
  196. package/dist/matter/order-placed-date/order-placed-date.js +92 -0
  197. package/dist/matter/order-placed-date/order-placed-date.js.map +1 -0
  198. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +5 -8
  199. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +29 -81
  200. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
  201. package/dist/matter/order-progress/order-progress.d.ts +85 -0
  202. package/dist/matter/order-progress/order-progress.js +203 -0
  203. package/dist/matter/order-progress/order-progress.js.map +1 -0
  204. package/dist/matter/order-summary/order-summary.d.ts +81 -0
  205. package/dist/matter/order-summary/order-summary.js +192 -0
  206. package/dist/matter/order-summary/order-summary.js.map +1 -0
  207. package/dist/matter/payment/cardholder-document-rule.d.ts +35 -0
  208. package/dist/matter/payment/cardholder-document-rule.js +35 -0
  209. package/dist/matter/payment/cardholder-document-rule.js.map +1 -0
  210. package/dist/matter/payment/payment-card-capture.js +38 -23
  211. package/dist/matter/payment/payment-card-capture.js.map +1 -1
  212. package/dist/matter/payment/payment-controller.js +11 -0
  213. package/dist/matter/payment/payment-controller.js.map +1 -1
  214. package/dist/matter/payment/payment-method-badges.js +4 -2
  215. package/dist/matter/payment/payment-method-badges.js.map +1 -1
  216. package/dist/matter/payment/payment.js +11 -0
  217. package/dist/matter/payment/payment.js.map +1 -1
  218. package/dist/matter/payment/use-payment-method-selection.d.ts +39 -0
  219. package/dist/matter/payment/use-payment-method-selection.js +30 -2
  220. package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
  221. package/dist/matter/payment/use-payment-submit-gate.d.ts +16 -2
  222. package/dist/matter/payment/use-payment-submit-gate.js +42 -14
  223. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
  224. package/dist/matter/place-order/place-order.d.ts +12 -7
  225. package/dist/matter/place-order/place-order.js +126 -103
  226. package/dist/matter/place-order/place-order.js.map +1 -1
  227. package/dist/matter/pricing/pricing.js +5 -5
  228. package/dist/matter/pricing/pricing.js.map +1 -1
  229. package/dist/matter/product-shelf/product-shelf.d.ts +7 -0
  230. package/dist/matter/product-shelf/product-shelf.js +115 -1
  231. package/dist/matter/product-shelf/product-shelf.js.map +1 -1
  232. package/dist/matter/region/region.js +1 -1
  233. package/dist/matter/saved-cards/saved-cards.js +26 -15
  234. package/dist/matter/saved-cards/saved-cards.js.map +1 -1
  235. package/dist/matter/session/session.js +2 -2
  236. package/dist/matter/session/session.js.map +1 -1
  237. package/dist/matter/shipping-address/country-descriptors.d.ts +1 -0
  238. package/dist/matter/shipping-address/country-descriptors.js +23 -1
  239. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  240. package/dist/matter/shipping-address/shipping-address.js +62 -14
  241. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  242. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +2 -2
  243. package/dist/matter/shipping-simulator/shipping-simulator.js +6 -2
  244. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
  245. package/dist/matter/sign-in-redirect/sign-in-redirect.js +48 -10
  246. package/dist/matter/sign-in-redirect/sign-in-redirect.js.map +1 -1
  247. package/dist/matter/variant-selector/variant-selector.js +2 -2
  248. package/dist/matter/variant-selector/variant-selector.js.map +1 -1
  249. package/dist/particles/address-summary/address-summary.js +2 -2
  250. package/dist/particles/address-summary/address-summary.js.map +1 -1
  251. package/dist/particles/alert-dialog/alert-dialog.d.ts +5 -1
  252. package/dist/particles/alert-dialog/alert-dialog.js +5 -2
  253. package/dist/particles/alert-dialog/alert-dialog.js.map +1 -1
  254. package/dist/particles/binding-switcher/binding-switcher.d.ts +38 -0
  255. package/dist/particles/binding-switcher/binding-switcher.js +183 -0
  256. package/dist/particles/binding-switcher/binding-switcher.js.map +1 -0
  257. package/dist/particles/card-summary/card-network.d.ts +17 -0
  258. package/dist/particles/card-summary/card-network.js +25 -0
  259. package/dist/particles/card-summary/card-network.js.map +1 -0
  260. package/dist/particles/card-summary/card-summary.d.ts +83 -0
  261. package/dist/particles/card-summary/card-summary.js +188 -0
  262. package/dist/particles/card-summary/card-summary.js.map +1 -0
  263. package/dist/particles/copy-text/copy-text.d.ts +28 -0
  264. package/dist/particles/copy-text/copy-text.js +140 -0
  265. package/dist/particles/copy-text/copy-text.js.map +1 -0
  266. package/dist/particles/document-field/document-field.d.ts +34 -5
  267. package/dist/particles/document-field/document-field.js +115 -19
  268. package/dist/particles/document-field/document-field.js.map +1 -1
  269. package/dist/particles/field/field.js +1 -1
  270. package/dist/particles/field/field.js.map +1 -1
  271. package/dist/particles/footer-link-group/footer-link-group.d.ts +6 -2
  272. package/dist/particles/footer-link-group/footer-link-group.js +18 -7
  273. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
  274. package/dist/particles/footer-social/footer-social.d.ts +1 -1
  275. package/dist/particles/footer-social/footer-social.js +1 -1
  276. package/dist/particles/footer-social/footer-social.js.map +1 -1
  277. package/dist/particles/incentives/incentives.d.ts +7 -3
  278. package/dist/particles/incentives/incentives.js +8 -3
  279. package/dist/particles/incentives/incentives.js.map +1 -1
  280. package/dist/particles/logo/logo.d.ts +3 -2
  281. package/dist/particles/logo/logo.js +20 -8
  282. package/dist/particles/logo/logo.js.map +1 -1
  283. package/dist/particles/navigation-link/navigation-link.d.ts +2 -3
  284. package/dist/particles/navigation-link/navigation-link.js +4 -4
  285. package/dist/particles/navigation-link/navigation-link.js.map +1 -1
  286. package/dist/particles/navigation-link-list/navigation-link-list.d.ts +6 -2
  287. package/dist/particles/navigation-link-list/navigation-link-list.js +18 -7
  288. package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -1
  289. package/dist/particles/order-details-back/order-details-back.d.ts +28 -0
  290. package/dist/particles/order-details-back/order-details-back.js +52 -0
  291. package/dist/particles/order-details-back/order-details-back.js.map +1 -0
  292. package/dist/particles/order-status-badge/order-status-badge.d.ts +19 -0
  293. package/dist/particles/order-status-badge/order-status-badge.js +50 -0
  294. package/dist/particles/order-status-badge/order-status-badge.js.map +1 -0
  295. package/dist/particles/payment-methods/payment-methods.d.ts +1 -1
  296. package/dist/particles/payment-methods/payment-methods.js +1 -1
  297. package/dist/particles/payment-methods/payment-methods.js.map +1 -1
  298. package/dist/particles/phone-field/phone-field.js +2 -2
  299. package/dist/particles/phone-field/phone-field.js.map +1 -1
  300. package/dist/particles/select/select.js +6 -6
  301. package/dist/particles/select/select.js.map +1 -1
  302. package/dist/particles/toast/toast.d.ts +21 -7
  303. package/dist/particles/toast/toast.js +76 -8
  304. package/dist/particles/toast/toast.js.map +1 -1
  305. package/dist/schema.graphql +1376 -126
  306. package/dist/sdk/actions/address-action-provider.d.ts +16 -0
  307. package/dist/sdk/actions/address-action-provider.js +20 -0
  308. package/dist/sdk/actions/address-action-provider.js.map +1 -0
  309. package/dist/sdk/actions/analytics-action-provider.js +1 -1
  310. package/dist/sdk/actions/index.d.ts +5 -1
  311. package/dist/sdk/actions/index.js +5 -1
  312. package/dist/sdk/actions/locale-action-provider.d.ts +16 -0
  313. package/dist/sdk/actions/locale-action-provider.js +20 -0
  314. package/dist/sdk/actions/locale-action-provider.js.map +1 -0
  315. package/dist/sdk/actions/order-action-provider.d.ts +12 -0
  316. package/dist/sdk/actions/order-action-provider.js +16 -0
  317. package/dist/sdk/actions/order-action-provider.js.map +1 -0
  318. package/dist/sdk/actions/saved-card-action-provider.d.ts +12 -0
  319. package/dist/sdk/actions/saved-card-action-provider.js +16 -0
  320. package/dist/sdk/actions/saved-card-action-provider.js.map +1 -0
  321. package/dist/sdk/actions/types.d.ts +10 -2
  322. package/dist/sdk/address/address-fields.js +38 -0
  323. package/dist/sdk/address/address-fields.js.map +1 -0
  324. package/dist/sdk/address/checkout-readiness.js +17 -0
  325. package/dist/sdk/address/checkout-readiness.js.map +1 -0
  326. package/dist/sdk/address/constants.js +60 -0
  327. package/dist/sdk/address/constants.js.map +1 -0
  328. package/dist/sdk/address/country-display.js +19 -0
  329. package/dist/sdk/address/country-display.js.map +1 -0
  330. package/dist/sdk/address/country-rules.js +30 -0
  331. package/dist/sdk/address/country-rules.js.map +1 -0
  332. package/dist/sdk/address/format-address.js +18 -0
  333. package/dist/sdk/address/format-address.js.map +1 -0
  334. package/dist/sdk/address/iso-countries.js +262 -0
  335. package/dist/sdk/address/iso-countries.js.map +1 -0
  336. package/dist/sdk/address/layouts.js +56 -0
  337. package/dist/sdk/address/layouts.js.map +1 -0
  338. package/dist/sdk/address/messages.js +97 -0
  339. package/dist/sdk/address/messages.js.map +1 -0
  340. package/dist/sdk/address/operations.d.ts +54 -0
  341. package/dist/sdk/address/operations.js +83 -0
  342. package/dist/sdk/address/operations.js.map +1 -0
  343. package/dist/sdk/address/postal-code-lookup-operations.js +23 -0
  344. package/dist/sdk/address/postal-code-lookup-operations.js.map +1 -0
  345. package/dist/sdk/address/postal-code.js +11 -0
  346. package/dist/sdk/address/postal-code.js.map +1 -0
  347. package/dist/sdk/address/schema.js +14 -0
  348. package/dist/sdk/address/schema.js.map +1 -0
  349. package/dist/sdk/address/server-fields.js +25 -0
  350. package/dist/sdk/address/server-fields.js.map +1 -0
  351. package/dist/sdk/address/switch-country.js +57 -0
  352. package/dist/sdk/address/switch-country.js.map +1 -0
  353. package/dist/sdk/address/types.d.ts +26 -0
  354. package/dist/sdk/address/use-address-actions.d.ts +29 -0
  355. package/dist/sdk/address/use-address-actions.js +247 -0
  356. package/dist/sdk/address/use-address-actions.js.map +1 -0
  357. package/dist/sdk/address/use-address-by-postal-code.js +57 -0
  358. package/dist/sdk/address/use-address-by-postal-code.js.map +1 -0
  359. package/dist/sdk/address/validate-address.js +62 -0
  360. package/dist/sdk/address/validate-address.js.map +1 -0
  361. package/dist/sdk/cache/storefront-cache.js +30 -4
  362. package/dist/sdk/cache/storefront-cache.js.map +1 -1
  363. package/dist/sdk/cart/operations.d.ts +2 -1
  364. package/dist/sdk/cart/operations.js +55 -1
  365. package/dist/sdk/cart/operations.js.map +1 -1
  366. package/dist/sdk/cart/optimistic.d.ts +30 -7
  367. package/dist/sdk/cart/optimistic.js +78 -41
  368. package/dist/sdk/cart/optimistic.js.map +1 -1
  369. package/dist/sdk/cart/use-cart-actions.d.ts +7 -0
  370. package/dist/sdk/cart/use-cart-actions.js +61 -15
  371. package/dist/sdk/cart/use-cart-actions.js.map +1 -1
  372. package/dist/sdk/cart/use-cart-sync-sales-channel.js +70 -0
  373. package/dist/sdk/cart/use-cart-sync-sales-channel.js.map +1 -0
  374. package/dist/sdk/client/fetch-page-data.d.ts +11 -0
  375. package/dist/sdk/client/fetch-page-data.js +12 -1
  376. package/dist/sdk/client/fetch-page-data.js.map +1 -1
  377. package/dist/sdk/content/create-content-runtime.js +1 -8
  378. package/dist/sdk/content/create-content-runtime.js.map +1 -1
  379. package/dist/sdk/data/failed-fields.js +23 -0
  380. package/dist/sdk/data/failed-fields.js.map +1 -0
  381. package/dist/sdk/data/index.js +2 -2
  382. package/dist/sdk/data/page-reactive-data-root.d.ts +45 -7
  383. package/dist/sdk/data/page-reactive-data-root.js +88 -12
  384. package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
  385. package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
  386. package/dist/sdk/generated/fragment-types.js +2 -0
  387. package/dist/sdk/generated/fragment-types.js.map +1 -1
  388. package/dist/sdk/generated/gql.js +17 -11
  389. package/dist/sdk/generated/gql.js.map +1 -1
  390. package/dist/sdk/generated/graphql.d.ts +185 -46
  391. package/dist/sdk/generated/graphql.js +2587 -155
  392. package/dist/sdk/generated/graphql.js.map +1 -1
  393. package/dist/sdk/i18n/messages/en-US.js +157 -1
  394. package/dist/sdk/i18n/messages/en-US.json +157 -1
  395. package/dist/sdk/i18n/messages/en-US.json.d.ts +156 -0
  396. package/dist/sdk/i18n/messages/es-ES.js +157 -1
  397. package/dist/sdk/i18n/messages/es-ES.json +157 -1
  398. package/dist/sdk/i18n/messages/pt-BR.js +157 -1
  399. package/dist/sdk/i18n/messages/pt-BR.json +157 -1
  400. package/dist/sdk/i18n/provider.js +1 -1
  401. package/dist/sdk/i18n/provider.js.map +1 -1
  402. package/dist/sdk/locale/binding-switch-provider.d.ts +13 -0
  403. package/dist/sdk/locale/binding-switch-provider.js +20 -0
  404. package/dist/sdk/locale/binding-switch-provider.js.map +1 -0
  405. package/dist/sdk/locale/use-locale-actions.d.ts +16 -0
  406. package/dist/sdk/locale/use-locale-actions.js +70 -0
  407. package/dist/sdk/locale/use-locale-actions.js.map +1 -0
  408. package/dist/sdk/navigation/binding-switch.d.ts +39 -0
  409. package/dist/sdk/navigation/binding-switch.js +129 -0
  410. package/dist/sdk/navigation/binding-switch.js.map +1 -0
  411. package/dist/sdk/navigation/current-page.js +30 -0
  412. package/dist/sdk/navigation/current-page.js.map +1 -0
  413. package/dist/sdk/navigation/decode-route-params.d.ts +11 -0
  414. package/dist/sdk/navigation/decode-route-params.js +32 -0
  415. package/dist/sdk/navigation/decode-route-params.js.map +1 -0
  416. package/dist/sdk/navigation/not-found-log.d.ts +28 -0
  417. package/dist/sdk/navigation/not-found-log.js +133 -0
  418. package/dist/sdk/navigation/not-found-log.js.map +1 -0
  419. package/dist/sdk/navigation/path.js +25 -0
  420. package/dist/sdk/navigation/path.js.map +1 -0
  421. package/dist/sdk/navigation/redirect.d.ts +11 -0
  422. package/dist/sdk/navigation/redirect.js +22 -0
  423. package/dist/sdk/navigation/redirect.js.map +1 -0
  424. package/dist/sdk/navigation/report.js +70 -0
  425. package/dist/sdk/navigation/report.js.map +1 -0
  426. package/dist/sdk/navigation/resolve-storefront-href.d.ts +12 -0
  427. package/dist/sdk/navigation/resolve-storefront-href.js +214 -0
  428. package/dist/sdk/navigation/resolve-storefront-href.js.map +1 -0
  429. package/dist/sdk/navigation/route-identity-provider.d.ts +11 -0
  430. package/dist/sdk/navigation/route-identity-provider.js +20 -0
  431. package/dist/sdk/navigation/route-identity-provider.js.map +1 -0
  432. package/dist/sdk/navigation/route-map-provider.d.ts +19 -0
  433. package/dist/sdk/navigation/route-map-provider.js +29 -0
  434. package/dist/sdk/navigation/route-map-provider.js.map +1 -0
  435. package/dist/sdk/navigation/storefront-link.d.ts +16 -0
  436. package/dist/sdk/navigation/storefront-link.js +66 -0
  437. package/dist/sdk/navigation/storefront-link.js.map +1 -0
  438. package/dist/sdk/navigation/types.d.ts +45 -0
  439. package/dist/sdk/navigation/use-storefront-navigation.d.ts +26 -0
  440. package/dist/sdk/navigation/use-storefront-navigation.js +73 -0
  441. package/dist/sdk/navigation/use-storefront-navigation.js.map +1 -0
  442. package/dist/sdk/navigation/use-storefront-route.d.ts +26 -0
  443. package/dist/sdk/navigation/use-storefront-route.js +87 -0
  444. package/dist/sdk/navigation/use-storefront-route.js.map +1 -0
  445. package/dist/sdk/navigation/use-storefront-search-params.d.ts +11 -0
  446. package/dist/sdk/navigation/use-storefront-search-params.js +16 -0
  447. package/dist/sdk/navigation/use-storefront-search-params.js.map +1 -0
  448. package/dist/sdk/orders/completion-badge.d.ts +8 -0
  449. package/dist/sdk/orders/completion-badge.js +47 -0
  450. package/dist/sdk/orders/completion-badge.js.map +1 -0
  451. package/dist/sdk/orders/order-operations.d.ts +19 -0
  452. package/dist/sdk/orders/order-operations.js +21 -0
  453. package/dist/sdk/orders/order-operations.js.map +1 -0
  454. package/dist/sdk/orders/use-order-actions.d.ts +23 -0
  455. package/dist/sdk/orders/use-order-actions.js +62 -0
  456. package/dist/sdk/orders/use-order-actions.js.map +1 -0
  457. package/dist/sdk/payment/gateway-origin.js +26 -13
  458. package/dist/sdk/payment/gateway-origin.js.map +1 -1
  459. package/dist/sdk/payment/gateway.d.ts +14 -2
  460. package/dist/sdk/payment/gateway.js +32 -14
  461. package/dist/sdk/payment/gateway.js.map +1 -1
  462. package/dist/sdk/payment/operations.js +11 -0
  463. package/dist/sdk/payment/operations.js.map +1 -1
  464. package/dist/sdk/payment/submission-registry.d.ts +2 -1
  465. package/dist/sdk/payment/submission-registry.js +12 -8
  466. package/dist/sdk/payment/submission-registry.js.map +1 -1
  467. package/dist/sdk/payment/use-payment-actions.d.ts +5 -3
  468. package/dist/sdk/payment/use-payment-actions.js +5 -2
  469. package/dist/sdk/payment/use-payment-actions.js.map +1 -1
  470. package/dist/sdk/payment/use-place-order.d.ts +6 -3
  471. package/dist/sdk/payment/use-place-order.js +333 -143
  472. package/dist/sdk/payment/use-place-order.js.map +1 -1
  473. package/dist/sdk/saved-cards/operations.d.ts +16 -0
  474. package/dist/sdk/saved-cards/operations.js +41 -0
  475. package/dist/sdk/saved-cards/operations.js.map +1 -0
  476. package/dist/sdk/saved-cards/use-saved-card-actions.d.ts +26 -0
  477. package/dist/sdk/saved-cards/use-saved-card-actions.js +86 -0
  478. package/dist/sdk/saved-cards/use-saved-card-actions.js.map +1 -0
  479. package/dist/sdk/seo/page-alternates.d.ts +57 -0
  480. package/dist/sdk/seo/page-alternates.js +127 -0
  481. package/dist/sdk/seo/page-alternates.js.map +1 -0
  482. package/dist/sdk/shipping/shipping-operations.d.ts +1 -1
  483. package/dist/sdk/shipping/shipping-operations.js +13 -0
  484. package/dist/sdk/shipping/shipping-operations.js.map +1 -1
  485. package/dist/sdk/state/cart.d.ts +9 -2
  486. package/dist/sdk/state/cart.js +9 -2
  487. package/dist/sdk/state/cart.js.map +1 -1
  488. package/dist/utils/own-value.js +19 -0
  489. package/dist/utils/own-value.js.map +1 -0
  490. package/dist/utils/safe-href.d.ts +4 -4
  491. package/dist/utils/safe-href.js +31 -22
  492. package/dist/utils/safe-href.js.map +1 -1
  493. package/package.json +5 -1
  494. package/skills/storefront-asset/SKILL.md +111 -0
  495. package/skills/storefront-asset/references/api-side.md +153 -0
  496. package/skills/storefront-asset/references/findings.md +40 -0
  497. package/skills/storefront-asset/references/ui-side.md +94 -0
  498. package/src/styles/tailwind.css +28 -2
@@ -0,0 +1,946 @@
1
+ "use client";
2
+ import { defineComponent } from "../../core/dist/define-component.js";
3
+ import "../../core/dist/index.js";
4
+ import { resolveSiteRelativeHref } from "../../utils/safe-href.js";
5
+ import { useIntl } from "../../sdk/i18n/client.js";
6
+ import { useStorefrontNavigation } from "../../sdk/navigation/use-storefront-navigation.js";
7
+ import { Field, FieldsetFieldContext, TEXT_FIELD_VALUE, useBoundField, useFieldsetField, useFieldsetFieldNames } from "../../particles/field/field.js";
8
+ import { useActionsOverride } from "../../sdk/actions/actions-override-context.js";
9
+ import { resolveAuthoredCopy } from "../../utils/resolve-authored-copy.js";
10
+ import { useSession } from "../session/session.js";
11
+ import { loggableErrorName } from "../../utils/loggable-error-name.js";
12
+ import { Button } from "../../particles/button/button.js";
13
+ import { ACCOUNT_FIELD_LABELS, ACCOUNT_MAX_LENGTH } from "../../sdk/address/constants.js";
14
+ import { useOptionalAccountAddressBook } from "./account-address-book.js";
15
+ import { useToast } from "../../particles/toast/toast.js";
16
+ import { Select } from "../../particles/select/select.js";
17
+ import { AccountAddressFormContext, useAccountAddressForm } from "./account-address-form-context.js";
18
+ import { AccountAddressCountryNotice, AddressCountryControl } from "./account-address-country.js";
19
+ import { FormRoot, useFormRegistry } from "../../particles/form/form.js";
20
+ import { addressFields } from "../../sdk/address/address-fields.js";
21
+ import { loadCountryRules } from "../../sdk/address/country-rules.js";
22
+ import { toAddressFieldName } from "../../sdk/address/server-fields.js";
23
+ import { validateAddress } from "../../sdk/address/validate-address.js";
24
+ import { applyCountrySwitch, initialAddressCountry } from "./account-address-country-switch.js";
25
+ import { dependentsOf, usePostalCodeAutofill } from "./account-address-postal-autofill.js";
26
+ import { useOptionalAccountAddressRecord } from "./account-address-record.js";
27
+ import { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
28
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
29
+ import { useFormContext, useWatch } from "react-hook-form";
30
+ //#region src/matter/account-address-book/account-address-form.tsx
31
+ const DEFAULT_COUNTRY = "BRA";
32
+ const DEFAULT_RETURN_PAGE = { standard: "address" };
33
+ /** The react-hook-form namespace every field of the form registers under. */
34
+ const ADDRESS_NAMESPACE = "accountAddress";
35
+ /** What `dispatch` hands `FormRoot` when it writes nothing because a write or a switch is in flight. */
36
+ const BUSY = [{
37
+ code: "ADDRESS_FORM_BUSY",
38
+ message: ""
39
+ }];
40
+ const EDITABLE_FIELDS = [
41
+ "recipientName",
42
+ "street",
43
+ "number",
44
+ "complement",
45
+ "neighborhood",
46
+ "city",
47
+ "state",
48
+ "postalCode",
49
+ "reference"
50
+ ];
51
+ const SERVER_REQUIRED = {
52
+ code: "required",
53
+ messageId: "fs/address.error.required"
54
+ };
55
+ const SERVER_INVALID = {
56
+ code: "invalid",
57
+ messageId: "fs/address.error.invalid"
58
+ };
59
+ const ERROR_MESSAGE_IDS = {
60
+ unrenderedField: "fs/address-form.error.unrendered-field",
61
+ notFound: "fs/address-form.error.not-found",
62
+ unauthorized: "fs/address-form.error.unauthorized",
63
+ saveFailed: "fs/address-form.error.save-failed",
64
+ rulesFailed: "fs/address-form.error.rules-failed",
65
+ countrySwitchFailed: "fs/address-form.error.country-switch-failed",
66
+ unsupportedCountry: "fs/address-form.error.unsupported-country"
67
+ };
68
+ function toDraft(address) {
69
+ if (!address) return {};
70
+ return Object.fromEntries(EDITABLE_FIELDS.map((field) => [field, address[field] ?? ""]));
71
+ }
72
+ function isBlankDraft(draft) {
73
+ return EDITABLE_FIELDS.every((field) => (draft[field] ?? "").trim() === "");
74
+ }
75
+ function toCountry(code) {
76
+ return resolveAuthoredCopy(code, DEFAULT_COUNTRY).trim().toUpperCase();
77
+ }
78
+ /** A refusal's code decides the message when it names no field on screen; a named field reads as unrendered. */
79
+ function toFormError({ code, field }) {
80
+ if (code === "UNSUPPORTED_COUNTRY") return "unsupportedCountry";
81
+ if (code === "NOT_FOUND") return "notFound";
82
+ if (code === "UNAUTHORIZED") return "unauthorized";
83
+ return field === null ? "saveFailed" : "unrenderedField";
84
+ }
85
+ function fieldPath(name) {
86
+ return `${ADDRESS_NAMESPACE}.${name}`;
87
+ }
88
+ /** The editable fields react-hook-form holds a value for, out of the namespace's raw values. */
89
+ function pickEditable(values) {
90
+ if (typeof values !== "object" || values === null) return {};
91
+ const raw = values;
92
+ return Object.fromEntries(EDITABLE_FIELDS.flatMap((field) => typeof raw[field] === "string" ? [[field, raw[field]]] : []));
93
+ }
94
+ function pick(draft, fields) {
95
+ return Object.fromEntries(fields.map((field) => [field, draft[field] ?? ""]));
96
+ }
97
+ function changedFields(draft, seedDraft) {
98
+ return EDITABLE_FIELDS.filter((field) => (draft[field] ?? "") !== (seedDraft[field] ?? ""));
99
+ }
100
+ function typedFields(draft) {
101
+ return EDITABLE_FIELDS.filter((field) => (draft[field] ?? "").trim() !== "");
102
+ }
103
+ /** The write a save sends, or `undefined` when the provider chain never delivered its action. */
104
+ function resolveWrite(actions, edit) {
105
+ if (edit) {
106
+ const update = actions?.address?.update;
107
+ return update ? (payload) => update(payload) : void 0;
108
+ }
109
+ const create = actions?.address?.create;
110
+ return create ? (payload) => create(payload) : void 0;
111
+ }
112
+ /** Splits the draft's errors into those a control on screen can show, and a form-level error for any with none. */
113
+ function splitByScreen(found, controls) {
114
+ const onScreen = {};
115
+ let offScreen = false;
116
+ for (const [name, error] of Object.entries(found)) if (controls.has(name)) onScreen[name] = error;
117
+ else offScreen = true;
118
+ return {
119
+ onScreen,
120
+ formLevel: offScreen ? "unrenderedField" : null
121
+ };
122
+ }
123
+ function successTitle({ edited, addedMessage, savedMessage, intl }) {
124
+ if (edited) return resolveAuthoredCopy(savedMessage, intl.formatMessage({ id: "fs/address-form.saved" }));
125
+ return resolveAuthoredCopy(addedMessage, intl.formatMessage({ id: "fs/address-form.added" }));
126
+ }
127
+ function describeStatus(status, blockedMessage, intl) {
128
+ if (status === null) return "";
129
+ if (status.kind === "filled") return intl.formatMessage({ id: "fs/address-form.status.filled" }, { count: status.count });
130
+ const fallback = status.kind === "fields" ? intl.formatMessage({ id: "fs/address-form.status.fields" }, { count: status.count }) : intl.formatMessage({ id: "fs/address-form.status.failed" });
131
+ return resolveAuthoredCopy(blockedMessage, fallback);
132
+ }
133
+ function focusFirstInvalid(form, errors) {
134
+ if (!form) return;
135
+ for (const wrapper of form.querySelectorAll("[data-fs-account-address-form-field]")) {
136
+ const name = wrapper.dataset.fsAccountAddressFormField;
137
+ if (name && errors[name]) {
138
+ wrapper.querySelector("[data-fs-account-address-form-control]")?.focus();
139
+ return;
140
+ }
141
+ }
142
+ }
143
+ /** Where the form stands decides its seed: the book's open edit form, then the record the page names, then nothing. */
144
+ function useFormPlacement() {
145
+ const book = useOptionalAccountAddressBook();
146
+ const record = useOptionalAccountAddressRecord();
147
+ const openForm = book?.openForm ?? null;
148
+ const seed = (openForm?.mode === "edit" ? openForm.address : null) ?? record?.address ?? null;
149
+ return {
150
+ book,
151
+ record,
152
+ seed,
153
+ mode: seed ? "edit" : "add"
154
+ };
155
+ }
156
+ function AccountAddressFormRoot({ defaultCountry, addedMessage, savedMessage, blockedMessage, returnHref, $actions, className, children, ...props }) {
157
+ const { state: sessionState } = useSession();
158
+ useToast();
159
+ const { book, record, mode } = useFormPlacement();
160
+ const [writing, setWriting] = useState(false);
161
+ const setBookFormPending = book?.setFormPending;
162
+ useEffect(() => {
163
+ setBookFormPending?.(writing);
164
+ return () => setBookFormPending?.(false);
165
+ }, [writing, setBookFormPending]);
166
+ const [switchTarget, setSwitchTarget] = useState(null);
167
+ if (sessionState !== "loggedIn") return null;
168
+ if (!book && record && !record.address) return null;
169
+ return /* @__PURE__ */ jsx(FormRoot, {
170
+ ...props,
171
+ className,
172
+ "aria-busy": writing || switchTarget !== null || void 0,
173
+ "data-fs-account-address-form": "",
174
+ "data-fs-account-address-form-mode": mode,
175
+ children: /* @__PURE__ */ jsx(AccountAddressFieldset, {
176
+ defaultCountry,
177
+ addedMessage,
178
+ savedMessage,
179
+ blockedMessage,
180
+ returnHref,
181
+ $actions,
182
+ writing,
183
+ setWriting,
184
+ switchTarget,
185
+ setSwitchTarget,
186
+ children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
187
+ /* @__PURE__ */ jsx(AddressCountryControl, {}),
188
+ /* @__PURE__ */ jsx(AccountAddressCountryNotice, {}),
189
+ /* @__PURE__ */ jsx(AccountAddressFormRecipientName, {}),
190
+ /* @__PURE__ */ jsx(AccountAddressFormFields, {}),
191
+ /* @__PURE__ */ jsx(AccountAddressFormReference, {}),
192
+ /* @__PURE__ */ jsx(AccountAddressFormError, {}),
193
+ /* @__PURE__ */ jsx(AccountAddressFormSubmit, {}),
194
+ /* @__PURE__ */ jsx(AccountAddressFormCancel, {})
195
+ ] })
196
+ })
197
+ });
198
+ }
199
+ /**
200
+ * The form's one fieldset under its FormRoot. It reads and writes the draft through react-hook-form,
201
+ * and owns the rules, the errors, the country switch, the postal-code fill and the write.
202
+ */
203
+ function AccountAddressFieldset({ defaultCountry, addedMessage, savedMessage, blockedMessage, returnHref, $actions: $actionsProp, writing, setWriting, switchTarget, setSwitchTarget, children }) {
204
+ const { registerFieldset } = useFormRegistry();
205
+ const { getValues, setValue, subscribe } = useFormContext();
206
+ const toast = useToast();
207
+ const intl = useIntl();
208
+ const $actions = useActionsOverride($actionsProp);
209
+ const { push } = useStorefrontNavigation();
210
+ const { book, seed, mode } = useFormPlacement();
211
+ const preferredCountry = toCountry(seed?.country ?? defaultCountry);
212
+ const seedDraft = useMemo(() => toDraft(seed), [seed]);
213
+ const close = book?.close;
214
+ const [offered, setOffered] = useState(void 0);
215
+ const [chosenCountry, setChosenCountry] = useState(null);
216
+ const [lastChange, setLastChange] = useState(null);
217
+ const [rules, setRules] = useState(null);
218
+ const [fieldErrors, setFieldErrors] = useState({});
219
+ const [formError, setFormError] = useState(null);
220
+ const [status, setStatus] = useState(null);
221
+ const pendingRef = useRef(false);
222
+ const mountedRef = useRef(true);
223
+ useEffect(() => {
224
+ mountedRef.current = true;
225
+ return () => {
226
+ mountedRef.current = false;
227
+ };
228
+ }, []);
229
+ const dispatched = useRef(false);
230
+ const statusRef = useRef(null);
231
+ const offers = useRef(0);
232
+ const switchedRef = useRef(false);
233
+ const switchToken = useRef(0);
234
+ const asideRef = useRef({});
235
+ const { registry, getFieldNames } = useFieldsetFieldNames(ADDRESS_NAMESPACE);
236
+ const watched = useWatch({ name: ADDRESS_NAMESPACE });
237
+ const draft = useMemo(() => ({
238
+ ...seedDraft,
239
+ ...pickEditable(watched)
240
+ }), [seedDraft, watched]);
241
+ const country = mode === "edit" ? preferredCountry : chosenCountry ?? "";
242
+ const latest = useRef({
243
+ mode,
244
+ country,
245
+ rules,
246
+ seedDraft
247
+ });
248
+ useLayoutEffect(() => {
249
+ latest.current = {
250
+ mode,
251
+ country,
252
+ rules,
253
+ seedDraft
254
+ };
255
+ });
256
+ /** The draft as react-hook-form holds it now, not as the last render saw it. */
257
+ const readDraft = useCallback(() => ({
258
+ ...latest.current.seedDraft,
259
+ ...pickEditable(getValues(ADDRESS_NAMESPACE))
260
+ }), [getValues]);
261
+ /** Writes each field whose value changes. The country switch and the postal-code fill both write through here. */
262
+ const writeDraft = useCallback((values) => {
263
+ const current = readDraft();
264
+ for (const [name, value] of Object.entries(values)) if ((current[name] ?? "") !== value) setValue(fieldPath(name), value, { shouldDirty: true });
265
+ }, [readDraft, setValue]);
266
+ const mountedFields = useCallback(() => new Set(getFieldNames().map((name) => name.slice(15))), [getFieldNames]);
267
+ /**
268
+ * Loads `next`'s rules and applies the switch to the draft as it is then; only the latest call applies.
269
+ * A `silent` switch is one the shopper did not ask for, so its failure shows no error.
270
+ */
271
+ const startSwitch = useCallback((next, silent = false) => {
272
+ const to = toCountry(next);
273
+ if (latest.current.mode !== "add") return;
274
+ const token = ++switchToken.current;
275
+ if (to === latest.current.country) {
276
+ setSwitchTarget(null);
277
+ return;
278
+ }
279
+ setSwitchTarget(to);
280
+ loadCountryRules(to).then((toRules) => {
281
+ if (token !== switchToken.current) return;
282
+ const { rules: fromRules } = latest.current;
283
+ if (fromRules) {
284
+ const result = applyCountrySwitch({
285
+ draft: readDraft(),
286
+ aside: asideRef.current,
287
+ from: fromRules,
288
+ to: toRules
289
+ });
290
+ asideRef.current = result.aside;
291
+ writeDraft(Object.fromEntries(EDITABLE_FIELDS.map((field) => [field, result.draft[field] ?? ""])));
292
+ setLastChange(result.change);
293
+ }
294
+ setRules(toRules);
295
+ setChosenCountry(to);
296
+ setSwitchTarget(null);
297
+ setFieldErrors({});
298
+ setFormError(null);
299
+ setStatus(null);
300
+ }, () => {
301
+ if (token !== switchToken.current) return;
302
+ setSwitchTarget(null);
303
+ if (!silent) setFormError("countrySwitchFailed");
304
+ });
305
+ }, [
306
+ readDraft,
307
+ writeDraft,
308
+ setSwitchTarget
309
+ ]);
310
+ useEffect(() => () => {
311
+ switchToken.current += 1;
312
+ }, []);
313
+ const change = useCallback((to) => {
314
+ if (pendingRef.current) return;
315
+ switchedRef.current = true;
316
+ startSwitch(to);
317
+ }, [startSwitch]);
318
+ const offer = useCallback((countries) => {
319
+ offers.current += 1;
320
+ setOffered(countries);
321
+ return () => {
322
+ offers.current -= 1;
323
+ if (offers.current === 0) setOffered(void 0);
324
+ };
325
+ }, []);
326
+ useEffect(() => {
327
+ if (mode !== "add") return;
328
+ if (offered === void 0) {
329
+ if (offers.current === 0) setChosenCountry((current) => current ?? preferredCountry);
330
+ return;
331
+ }
332
+ const initial = initialAddressCountry(offered, preferredCountry);
333
+ if (chosenCountry === null) setChosenCountry(initial);
334
+ else if (!switchedRef.current && initial !== chosenCountry && isBlankDraft(readDraft())) startSwitch(initial, true);
335
+ }, [
336
+ mode,
337
+ offered,
338
+ preferredCountry,
339
+ chosenCountry,
340
+ startSwitch,
341
+ readDraft
342
+ ]);
343
+ useEffect(() => {
344
+ if (!country) return;
345
+ let current = true;
346
+ loadCountryRules(country).then((loaded) => {
347
+ if (!current) return;
348
+ setRules(loaded);
349
+ if (seed) setFieldErrors(validateAddress(seedDraft, loaded));
350
+ }, () => {
351
+ if (current) setFormError("rulesFailed");
352
+ });
353
+ return () => {
354
+ current = false;
355
+ };
356
+ }, [
357
+ country,
358
+ seed,
359
+ seedDraft
360
+ ]);
361
+ const registerField = useCallback((name) => registry.registerFieldName(fieldPath(name)), [registry]);
362
+ const applyFill = useCallback((filled) => {
363
+ writeDraft(filled);
364
+ setFieldErrors((previous) => {
365
+ const next = Object.fromEntries(Object.entries(previous).filter(([name]) => !(name in filled)));
366
+ return Object.keys(next).length === Object.keys(previous).length ? previous : next;
367
+ });
368
+ const count = Object.values(filled).filter((value) => value !== "").length;
369
+ if (count > 0) setStatus({
370
+ kind: "filled",
371
+ count
372
+ });
373
+ }, [writeDraft]);
374
+ const { fieldChanged, postalCodeChanged } = usePostalCodeAutofill({
375
+ country,
376
+ rules,
377
+ draft,
378
+ onFill: applyFill
379
+ });
380
+ const setField = useCallback((name, value) => {
381
+ fieldChanged(name);
382
+ if (name === "postalCode") postalCodeChanged(value);
383
+ setValue(fieldPath(name), value, { shouldDirty: true });
384
+ setFieldErrors((previous) => {
385
+ if (!previous[name]) return previous;
386
+ const { [name]: _cleared, ...rest } = previous;
387
+ return rest;
388
+ });
389
+ setFormError((previous) => previous === "rulesFailed" ? previous : null);
390
+ setStatus(null);
391
+ }, [
392
+ fieldChanged,
393
+ postalCodeChanged,
394
+ setValue
395
+ ]);
396
+ const destination = typeof returnHref === "string" && returnHref.trim().length === 0 ? void 0 : returnHref;
397
+ const closeForm = useCallback(() => {
398
+ if (book) {
399
+ close?.();
400
+ return;
401
+ }
402
+ if (destination === void 0) push(DEFAULT_RETURN_PAGE);
403
+ else if (typeof destination === "string") {
404
+ const target = resolveSiteRelativeHref(destination);
405
+ if (target.safe) push(target.href);
406
+ else console.warn(`[AccountAddressFormRoot] returnHref refused (${target.reason}): ${destination}`);
407
+ } else push(destination);
408
+ }, [
409
+ book,
410
+ close,
411
+ destination,
412
+ push
413
+ ]);
414
+ function block(errors, formLevel) {
415
+ const count = Object.keys(errors).length;
416
+ const blocked = count > 0 ? {
417
+ kind: "fields",
418
+ count
419
+ } : { kind: "failed" };
420
+ setFieldErrors(errors);
421
+ setFormError(formLevel);
422
+ setStatus(blocked);
423
+ focusFirstInvalid(statusRef.current?.closest("form") ?? null, errors);
424
+ return blocked;
425
+ }
426
+ /** Blocks on the draft's errors and returns what `dispatch` hands `FormRoot`, or `null` when the draft passes. */
427
+ function blockInvalid(current, currentRules) {
428
+ const { onScreen, formLevel } = splitByScreen(validateAddress(current, currentRules), mountedFields());
429
+ if (formLevel === null && Object.keys(onScreen).length === 0) return null;
430
+ return [{
431
+ code: "ADDRESS_FORM_BLOCKED",
432
+ message: describeStatus(block(onScreen, formLevel), blockedMessage, intl)
433
+ }];
434
+ }
435
+ /** Puts each refusal on the field it names, and the rest on the form: a save never fails silently. */
436
+ function refuse(userErrors) {
437
+ const errors = {};
438
+ const controls = mountedFields();
439
+ let formLevel = null;
440
+ for (const userError of userErrors) {
441
+ const name = toAddressFieldName(userError.field);
442
+ const onField = userError.code !== "NOT_FOUND" && userError.code !== "UNSUPPORTED_COUNTRY";
443
+ if (name && controls.has(name) && onField) errors[name] ??= userError.code === "MISSING_REQUIRED_FIELD" ? SERVER_REQUIRED : SERVER_INVALID;
444
+ else formLevel ??= toFormError(userError);
445
+ }
446
+ block(errors, formLevel);
447
+ }
448
+ function toPayload(values) {
449
+ const current = {
450
+ ...seedDraft,
451
+ ...pickEditable(values)
452
+ };
453
+ if (seed) return {
454
+ id: seed.id,
455
+ ...pick(current, changedFields(current, seedDraft))
456
+ };
457
+ return {
458
+ country,
459
+ ...pick(current, typedFields(current))
460
+ };
461
+ }
462
+ /** The form's only path to a write: FormRoot calls it when a mounted field is dirty, `settleUnsent` otherwise. */
463
+ async function dispatch(payload) {
464
+ if (!rules || pendingRef.current || switchTarget !== null) return BUSY;
465
+ const current = readDraft();
466
+ const blocked = blockInvalid(current, rules);
467
+ if (blocked) return blocked;
468
+ if (seed && changedFields(current, seedDraft).length === 0) {
469
+ setFieldErrors({});
470
+ closeForm();
471
+ return [];
472
+ }
473
+ setFieldErrors({});
474
+ setFormError(null);
475
+ setStatus(null);
476
+ const write = resolveWrite($actions, seed !== null);
477
+ if (!write) {
478
+ block({}, "saveFailed");
479
+ throw new Error("AccountAddressFormRoot requires $actions.address.");
480
+ }
481
+ pendingRef.current = true;
482
+ setWriting(true);
483
+ try {
484
+ const userErrors = await write(payload);
485
+ if (userErrors.length > 0) {
486
+ refuse(userErrors);
487
+ return userErrors;
488
+ }
489
+ toast.add({
490
+ title: successTitle({
491
+ edited: seed !== null,
492
+ addedMessage,
493
+ savedMessage,
494
+ intl
495
+ }),
496
+ type: "success"
497
+ });
498
+ if (mountedRef.current) closeForm();
499
+ return [];
500
+ } catch (error) {
501
+ console.error("[AccountAddressFormRoot] address write failed", loggableErrorName(error));
502
+ block({}, "saveFailed");
503
+ throw error;
504
+ } finally {
505
+ pendingRef.current = false;
506
+ setWriting(false);
507
+ }
508
+ }
509
+ /**
510
+ * A submit FormRoot settled without calling `dispatch`, because no mounted field is dirty. The draft
511
+ * can still differ from what was saved: a value written before its control mounted is that control's
512
+ * dirty baseline. So the save takes the same path, which writes only what changed.
513
+ */
514
+ function settleUnsent() {
515
+ dispatch(toPayload(getValues(ADDRESS_NAMESPACE) ?? {})).catch(() => void 0);
516
+ }
517
+ const handlers = useRef({
518
+ toPayload,
519
+ dispatch,
520
+ settleUnsent
521
+ });
522
+ useLayoutEffect(() => {
523
+ handlers.current = {
524
+ toPayload,
525
+ dispatch,
526
+ settleUnsent
527
+ };
528
+ });
529
+ useEffect(() => registerFieldset({
530
+ namespace: ADDRESS_NAMESPACE,
531
+ getFieldNames,
532
+ toPayload: (values) => handlers.current.toPayload(values),
533
+ dispatch: (payload) => {
534
+ dispatched.current = true;
535
+ return handlers.current.dispatch(payload);
536
+ },
537
+ label: "account-address"
538
+ }), [registerFieldset, getFieldNames]);
539
+ useEffect(() => {
540
+ let seen = 0;
541
+ return subscribe({
542
+ formState: { submitCount: true },
543
+ callback: ({ submitCount = 0 }) => {
544
+ if (submitCount === seen) return;
545
+ seen = submitCount;
546
+ if (dispatched.current) dispatched.current = false;
547
+ else handlers.current.settleUnsent();
548
+ }
549
+ });
550
+ }, [subscribe]);
551
+ const selected = switchTarget ?? country;
552
+ const countryChoice = useMemo(() => ({
553
+ offer,
554
+ selected,
555
+ change,
556
+ lastChange
557
+ }), [
558
+ offer,
559
+ selected,
560
+ change,
561
+ lastChange
562
+ ]);
563
+ const value = useMemo(() => ({
564
+ mode,
565
+ country,
566
+ rules,
567
+ draft,
568
+ fieldErrors,
569
+ formError,
570
+ pending: writing,
571
+ setField,
572
+ registerField,
573
+ close: closeForm,
574
+ countryChoice
575
+ }), [
576
+ mode,
577
+ country,
578
+ rules,
579
+ draft,
580
+ fieldErrors,
581
+ formError,
582
+ writing,
583
+ setField,
584
+ registerField,
585
+ closeForm,
586
+ countryChoice
587
+ ]);
588
+ return /* @__PURE__ */ jsx(FieldsetFieldContext, {
589
+ value: registry,
590
+ children: /* @__PURE__ */ jsxs(AccountAddressFormContext, {
591
+ value,
592
+ children: [children, /* @__PURE__ */ jsx("output", {
593
+ ref: statusRef,
594
+ "aria-live": "polite",
595
+ "data-fs-account-address-form-status": "",
596
+ "data-fs-sr-only": "",
597
+ className: "sr-only",
598
+ children: describeStatus(status, blockedMessage, intl)
599
+ })]
600
+ })
601
+ });
602
+ }
603
+ function fieldErrorText(error, intl) {
604
+ return intl.formatMessage({ id: error.messageId }, error.values);
605
+ }
606
+ /** Registers the field with the form while it is on screen and returns its value. */
607
+ function useAddressFieldValue(name) {
608
+ const { draft } = useAccountAddressForm();
609
+ const { getValues } = useFormContext();
610
+ const path = useFieldsetField(ADDRESS_NAMESPACE, name);
611
+ const [seed] = useState(() => {
612
+ const live = getValues(path);
613
+ return typeof live === "string" ? live : draft[name] ?? "";
614
+ });
615
+ return useBoundField({
616
+ name: path,
617
+ defaultValue: seed
618
+ }, TEXT_FIELD_VALUE).value;
619
+ }
620
+ /** Sets a list's option and empties the fields that read their options from it. The form's only dependent reset. */
621
+ function chooseOption(setField, name, value, descriptors) {
622
+ setField(name, value);
623
+ for (const dependent of dependentsOf(name, descriptors)) setField(dependent, "");
624
+ }
625
+ function AddressTextField({ name, label, maxLength, inputMode, placeholder, className }) {
626
+ const { fieldErrors, setField } = useAccountAddressForm();
627
+ const value = useAddressFieldValue(name);
628
+ const intl = useIntl();
629
+ const error = fieldErrors[name];
630
+ return /* @__PURE__ */ jsxs(Field.Root, {
631
+ className,
632
+ invalid: !!error,
633
+ "data-fs-account-address-form-field": name,
634
+ children: [
635
+ /* @__PURE__ */ jsx(Field.Label, { children: label }),
636
+ /* @__PURE__ */ jsx(Field.Control, {
637
+ value,
638
+ onChange: (event) => setField(name, event.target.value),
639
+ maxLength,
640
+ inputMode,
641
+ placeholder,
642
+ "data-fs-account-address-form-control": ""
643
+ }),
644
+ error ? /* @__PURE__ */ jsx(Field.Error, {
645
+ match: true,
646
+ children: fieldErrorText(error, intl)
647
+ }) : null
648
+ ]
649
+ });
650
+ }
651
+ function AddressSelectField({ name, label, options, placeholder, className, onChange }) {
652
+ const { fieldErrors } = useAccountAddressForm();
653
+ const value = useAddressFieldValue(name);
654
+ const intl = useIntl();
655
+ const errorId = useId();
656
+ const error = fieldErrors[name];
657
+ return /* @__PURE__ */ jsxs("div", {
658
+ className,
659
+ "data-fs-account-address-form-field": name,
660
+ ...error ? { "data-invalid": "" } : {},
661
+ children: [/* @__PURE__ */ jsxs(Select.Root, {
662
+ value,
663
+ onValueChange: (next) => onChange(next ?? ""),
664
+ children: [
665
+ /* @__PURE__ */ jsx(Select.Label, { children: label }),
666
+ /* @__PURE__ */ jsxs(Select.Trigger, {
667
+ "aria-invalid": error ? true : void 0,
668
+ "aria-describedby": error ? errorId : void 0,
669
+ "data-fs-account-address-form-control": "",
670
+ children: [/* @__PURE__ */ jsx(Select.Value, {
671
+ placeholder,
672
+ children: (value) => options.find((option) => option.value === value)?.label ?? placeholder
673
+ }), /* @__PURE__ */ jsx(Select.Icon, {})]
674
+ }),
675
+ /* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsx(Select.Positioner, { children: /* @__PURE__ */ jsx(Select.Popup, { children: /* @__PURE__ */ jsx(Select.List, { children: options.map((option) => /* @__PURE__ */ jsx(Select.Item, {
676
+ value: option.value,
677
+ label: option.label,
678
+ children: /* @__PURE__ */ jsx(Select.ItemText, { children: option.label })
679
+ }, option.value)) }) }) }) })
680
+ ]
681
+ }), error ? /* @__PURE__ */ jsx("p", {
682
+ id: errorId,
683
+ "data-fs-account-address-form-field-error": "",
684
+ children: fieldErrorText(error, intl)
685
+ }) : null]
686
+ });
687
+ }
688
+ function AccountAddressFormRecipientName({ label, className }) {
689
+ const { rules } = useAccountAddressForm();
690
+ const intl = useIntl();
691
+ if (!rules) return null;
692
+ return /* @__PURE__ */ jsx(AddressTextField, {
693
+ name: "recipientName",
694
+ label: resolveAuthoredCopy(label, intl.formatMessage({ id: ACCOUNT_FIELD_LABELS.recipientName })),
695
+ maxLength: ACCOUNT_MAX_LENGTH.recipientName,
696
+ className
697
+ });
698
+ }
699
+ function AccountAddressFormReference({ label, className }) {
700
+ const { rules } = useAccountAddressForm();
701
+ const intl = useIntl();
702
+ if (!rules) return null;
703
+ return /* @__PURE__ */ jsx(AddressTextField, {
704
+ name: "reference",
705
+ label: resolveAuthoredCopy(label, intl.formatMessage({ id: ACCOUNT_FIELD_LABELS.reference })),
706
+ maxLength: ACCOUNT_MAX_LENGTH.reference,
707
+ className
708
+ });
709
+ }
710
+ /**
711
+ * One field per descriptor the country's rules give for the draft, in the order the country's form lists them.
712
+ * A complete postal code fills the empty state, city, neighborhood and street the shopper has not typed;
713
+ * the fill is announced once.
714
+ */
715
+ function AccountAddressFormFields({ className }) {
716
+ const { rules, draft, setField } = useAccountAddressForm();
717
+ const intl = useIntl();
718
+ if (!rules) return null;
719
+ const descriptors = addressFields(rules, draft);
720
+ return descriptors.map((descriptor) => {
721
+ const { name, control, labelId, maxLength, inputMode, options, placeholder } = descriptor;
722
+ const label = intl.formatMessage({ id: labelId });
723
+ const hint = placeholder ? intl.formatMessage({ id: placeholder.id }, placeholder.values) : void 0;
724
+ if (control === "select") return /* @__PURE__ */ jsx(AddressSelectField, {
725
+ name,
726
+ label,
727
+ options: options ?? [],
728
+ placeholder: hint,
729
+ className,
730
+ onChange: (value) => chooseOption(setField, name, value, descriptors)
731
+ }, name);
732
+ return /* @__PURE__ */ jsx(AddressTextField, {
733
+ name,
734
+ label,
735
+ maxLength,
736
+ inputMode,
737
+ placeholder: hint,
738
+ className
739
+ }, name);
740
+ });
741
+ }
742
+ function AccountAddressFormError({ unrenderedFieldMessage, notFoundMessage, unauthorizedMessage, saveFailedMessage, rulesFailedMessage, countrySwitchFailedMessage, unsupportedCountryMessage, className, ...props }) {
743
+ const { formError } = useAccountAddressForm();
744
+ const intl = useIntl();
745
+ if (!formError) return null;
746
+ const authored = {
747
+ unrenderedField: unrenderedFieldMessage,
748
+ notFound: notFoundMessage,
749
+ unauthorized: unauthorizedMessage,
750
+ saveFailed: saveFailedMessage,
751
+ rulesFailed: rulesFailedMessage,
752
+ countrySwitchFailed: countrySwitchFailedMessage,
753
+ unsupportedCountry: unsupportedCountryMessage
754
+ };
755
+ return /* @__PURE__ */ jsx("div", {
756
+ ...props,
757
+ role: "alert",
758
+ className,
759
+ "data-fs-account-address-form-error": formError,
760
+ children: resolveAuthoredCopy(authored[formError], intl.formatMessage({ id: ERROR_MESSAGE_IDS[formError] }))
761
+ });
762
+ }
763
+ function AccountAddressFormSubmit({ label, className, children, ...props }) {
764
+ const { country, rules, formError, pending, countryChoice } = useAccountAddressForm();
765
+ const intl = useIntl();
766
+ const switching = countryChoice.selected !== country;
767
+ return /* @__PURE__ */ jsx(Button, {
768
+ ...props,
769
+ type: "submit",
770
+ className,
771
+ disabled: rules === null || formError === "rulesFailed" || pending || switching,
772
+ "aria-busy": pending || void 0,
773
+ "data-fs-account-address-form-submit": "",
774
+ children: children ?? resolveAuthoredCopy(label, intl.formatMessage({ id: "fs/address-form.submit" }))
775
+ });
776
+ }
777
+ function AccountAddressFormCancel({ label, className, children, onClick, ...props }) {
778
+ const { close, pending } = useAccountAddressForm();
779
+ const intl = useIntl();
780
+ return /* @__PURE__ */ jsx(Button, {
781
+ ...props,
782
+ type: "button",
783
+ disabled: pending || props.disabled,
784
+ className,
785
+ onClick: (event) => {
786
+ onClick?.(event);
787
+ close();
788
+ },
789
+ "data-fs-account-address-form-cancel": "",
790
+ children: children ?? resolveAuthoredCopy(label, intl.formatMessage({ id: "fs/address-form.cancel" }))
791
+ });
792
+ }
793
+ const AccountAddressFormRootDefinition = defineComponent({
794
+ name: "AccountAddressFormRoot",
795
+ importPath: "@vtex/faststore/components",
796
+ component: AccountAddressFormRoot,
797
+ requiresContext: "session",
798
+ providesContext: "account-address-form",
799
+ actions: { address: ["create", "update"] },
800
+ editor: {
801
+ label: "Account Address Form",
802
+ category: "identity"
803
+ },
804
+ schema: {
805
+ defaultCountry: {
806
+ type: "string",
807
+ default: "BRA",
808
+ label: "Preferred country (ISO-3)"
809
+ },
810
+ addedMessage: {
811
+ type: "string",
812
+ label: "Address added message"
813
+ },
814
+ savedMessage: {
815
+ type: "string",
816
+ label: "Address saved message"
817
+ },
818
+ blockedMessage: {
819
+ type: "string",
820
+ label: "Save blocked message"
821
+ },
822
+ returnHref: {
823
+ type: "link",
824
+ default: { standard: "address" },
825
+ label: "Return page"
826
+ }
827
+ },
828
+ guideline: "The form that adds an address or corrects a saved one, with the fields, order and options of the address's country. Opens through AccountAddressBookAddTrigger and AccountAddressBookEditTrigger, placed by AccountAddressBookFormSlot or AccountAddressBookFormDialog. Requires a SessionRoot and a mounted ToastProvider ancestor: saving shows a toast and closes the form. On its own page (add: no ancestor; edit: inside AccountAddressRecord) leaving the form, by a save, a save with no changes or Cancel, goes to returnHref instead, so mount the ToastProvider in the layout for the toast to outlive the navigation. A new address takes defaultCountry when the store ships there or the list is unknown, else the first country the store ships to; the shopper picks another through AddressCountryControl. A saved address keeps its own country, shown as text. A save the form or the server blocks marks each field, moves focus to the first one and announces it, and keeps what was typed. With no children it renders AddressCountryControl, AccountAddressCountryNotice, RecipientName, Fields, Reference, Error, Submit and Cancel; that control gets no list there and shows defaultCountry as text, so compose AddressCountryControl explicitly to offer the choice. See account-address-book.md."
829
+ });
830
+ const AccountAddressFormRecipientNameDefinition = defineComponent({
831
+ name: "AccountAddressFormRecipientName",
832
+ importPath: "@vtex/faststore/components",
833
+ component: AccountAddressFormRecipientName,
834
+ requiresContext: "account-address-form",
835
+ editor: {
836
+ label: "Account Address Form Recipient Name",
837
+ category: "input"
838
+ },
839
+ schema: { label: {
840
+ type: "string",
841
+ label: "Field label"
842
+ } },
843
+ guideline: "The name of the person who receives the order. Required for every country. Place it first, before AccountAddressFormFields. Shown once the country's rules have loaded. Must be inside AccountAddressFormRoot."
844
+ });
845
+ const AccountAddressFormFieldsDefinition = defineComponent({
846
+ name: "AccountAddressFormFields",
847
+ importPath: "@vtex/faststore/components",
848
+ component: AccountAddressFormFields,
849
+ requiresContext: "account-address-form",
850
+ editor: {
851
+ label: "Account Address Form Fields",
852
+ category: "input"
853
+ },
854
+ schema: {},
855
+ guideline: "One field per field the address's country asks for, in the order that country's form lists them, with its labels, limits and lists: Brazil's city is a list that follows its state. Changing a list clears the fields that depend on it. Shown once the country's rules have loaded. Must be inside AccountAddressFormRoot."
856
+ });
857
+ const AccountAddressFormReferenceDefinition = defineComponent({
858
+ name: "AccountAddressFormReference",
859
+ importPath: "@vtex/faststore/components",
860
+ component: AccountAddressFormReference,
861
+ requiresContext: "account-address-form",
862
+ editor: {
863
+ label: "Account Address Form Reference",
864
+ category: "input"
865
+ },
866
+ schema: { label: {
867
+ type: "string",
868
+ label: "Field label"
869
+ } },
870
+ guideline: "A landmark that helps the carrier find the address. Optional. Place it after AccountAddressFormFields. Shown once the country's rules have loaded. Must be inside AccountAddressFormRoot."
871
+ });
872
+ const AccountAddressFormErrorDefinition = defineComponent({
873
+ name: "AccountAddressFormError",
874
+ importPath: "@vtex/faststore/components",
875
+ component: AccountAddressFormError,
876
+ requiresContext: "account-address-form",
877
+ editor: {
878
+ label: "Account Address Form Error",
879
+ category: "content"
880
+ },
881
+ schema: {
882
+ unrenderedFieldMessage: {
883
+ type: "string",
884
+ label: "Field not shown message"
885
+ },
886
+ notFoundMessage: {
887
+ type: "string",
888
+ label: "Address gone message"
889
+ },
890
+ unauthorizedMessage: {
891
+ type: "string",
892
+ label: "Session expired message"
893
+ },
894
+ saveFailedMessage: {
895
+ type: "string",
896
+ label: "Save failed message"
897
+ },
898
+ rulesFailedMessage: {
899
+ type: "string",
900
+ label: "Form failed to load message"
901
+ },
902
+ countrySwitchFailedMessage: {
903
+ type: "string",
904
+ label: "Country change failed message"
905
+ },
906
+ unsupportedCountryMessage: {
907
+ type: "string",
908
+ label: "Country not delivered message"
909
+ }
910
+ },
911
+ guideline: "The error about the whole form, as an alert: a refusal on a field this form does not show, an address that no longer exists, an expired session, a failed save, a form that could not load, a country change that could not load, or a country the store doesn't deliver to. Renders nothing when there is none. Must be inside AccountAddressFormRoot."
912
+ });
913
+ const AccountAddressFormSubmitDefinition = defineComponent({
914
+ name: "AccountAddressFormSubmit",
915
+ importPath: "@vtex/faststore/components",
916
+ component: AccountAddressFormSubmit,
917
+ requiresContext: "account-address-form",
918
+ editor: {
919
+ label: "Account Address Form Submit",
920
+ category: "action"
921
+ },
922
+ schema: { label: {
923
+ type: "string",
924
+ label: "Button label"
925
+ } },
926
+ guideline: "Saves the form. Disabled until the country's rules have loaded, while a country change loads, and while a save is in flight, and marked busy then. Must be inside AccountAddressFormRoot."
927
+ });
928
+ const AccountAddressFormCancelDefinition = defineComponent({
929
+ name: "AccountAddressFormCancel",
930
+ importPath: "@vtex/faststore/components",
931
+ component: AccountAddressFormCancel,
932
+ requiresContext: "account-address-form",
933
+ editor: {
934
+ label: "Account Address Form Cancel",
935
+ category: "action"
936
+ },
937
+ schema: { label: {
938
+ type: "string",
939
+ label: "Button label"
940
+ } },
941
+ guideline: "Closes the form and drops what was typed. On its own page it goes to the returnHref of its root. Must be inside AccountAddressFormRoot."
942
+ });
943
+ //#endregion
944
+ export { AccountAddressFormCancel, AccountAddressFormCancelDefinition, AccountAddressFormError, AccountAddressFormErrorDefinition, AccountAddressFormFields, AccountAddressFormFieldsDefinition, AccountAddressFormRecipientName, AccountAddressFormRecipientNameDefinition, AccountAddressFormReference, AccountAddressFormReferenceDefinition, AccountAddressFormRoot, AccountAddressFormRootDefinition, AccountAddressFormSubmit, AccountAddressFormSubmitDefinition };
945
+
946
+ //# sourceMappingURL=account-address-form.js.map