@vtex/faststore 0.0.1

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 (538) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE +21 -0
  3. package/README.md +95 -0
  4. package/dist/actions.json +334 -0
  5. package/dist/catalog.json +6615 -0
  6. package/dist/client.d.ts +17 -0
  7. package/dist/client.js +8 -0
  8. package/dist/components.d.ts +87 -0
  9. package/dist/components.js +87 -0
  10. package/dist/content-types.json +684 -0
  11. package/dist/core/dist/actions/mock-action.d.ts +24 -0
  12. package/dist/core/dist/actions/mock-action.js +28 -0
  13. package/dist/core/dist/actions/mock-action.js.map +1 -0
  14. package/dist/core/dist/actions/registry.d.ts +24 -0
  15. package/dist/core/dist/actions/registry.js +28 -0
  16. package/dist/core/dist/actions/registry.js.map +1 -0
  17. package/dist/core/dist/define-component.d.ts +100 -0
  18. package/dist/core/dist/define-component.js +8 -0
  19. package/dist/core/dist/define-component.js.map +1 -0
  20. package/dist/core/dist/define-content-type.d.ts +95 -0
  21. package/dist/core/dist/define-content-type.js +283 -0
  22. package/dist/core/dist/define-content-type.js.map +1 -0
  23. package/dist/core/dist/index.d.ts +7 -0
  24. package/dist/core/dist/index.js +5 -0
  25. package/dist/core/dist/schema/generated/schema.d.ts +28 -0
  26. package/dist/core/dist/types.d.ts +1 -0
  27. package/dist/docs/access-code-field.md +100 -0
  28. package/dist/docs/access-code-sign-in.md +174 -0
  29. package/dist/docs/account-entry-point.md +155 -0
  30. package/dist/docs/address-summary.md +50 -0
  31. package/dist/docs/buy-button.md +162 -0
  32. package/dist/docs/carousel.md +105 -0
  33. package/dist/docs/cart-item.md +162 -0
  34. package/dist/docs/cart-totalizer.md +197 -0
  35. package/dist/docs/cart.md +495 -0
  36. package/dist/docs/client-preferences.md +184 -0
  37. package/dist/docs/client-profile-form.md +192 -0
  38. package/dist/docs/client-profile.md +117 -0
  39. package/dist/docs/container.md +97 -0
  40. package/dist/docs/document-field.md +97 -0
  41. package/dist/docs/email-field.md +93 -0
  42. package/dist/docs/email-identification.md +102 -0
  43. package/dist/docs/footer-copyright.md +112 -0
  44. package/dist/docs/footer-link-group.md +162 -0
  45. package/dist/docs/footer-root.md +145 -0
  46. package/dist/docs/footer-social.md +151 -0
  47. package/dist/docs/free-shipping-progress.md +87 -0
  48. package/dist/docs/gallery.md +84 -0
  49. package/dist/docs/header-root.md +150 -0
  50. package/dist/docs/identity-edit.md +88 -0
  51. package/dist/docs/identity-summary.md +106 -0
  52. package/dist/docs/incentives.md +151 -0
  53. package/dist/docs/logo.md +135 -0
  54. package/dist/docs/meter.md +67 -0
  55. package/dist/docs/navigation-link-list.md +171 -0
  56. package/dist/docs/navigation-link.md +163 -0
  57. package/dist/docs/navigation-menu.md +264 -0
  58. package/dist/docs/payment-methods.md +139 -0
  59. package/dist/docs/phone-field.md +106 -0
  60. package/dist/docs/postal-code-field.md +126 -0
  61. package/dist/docs/pricing.md +499 -0
  62. package/dist/docs/product-gallery.md +409 -0
  63. package/dist/docs/product-information.md +295 -0
  64. package/dist/docs/product-list.md +170 -0
  65. package/dist/docs/product-quantity.md +88 -0
  66. package/dist/docs/product-shelf.md +141 -0
  67. package/dist/docs/promotion.md +109 -0
  68. package/dist/docs/region.md +225 -0
  69. package/dist/docs/session.md +123 -0
  70. package/dist/docs/shipping-address.md +390 -0
  71. package/dist/docs/shipping-simulator.md +147 -0
  72. package/dist/docs/sign-in-form.md +117 -0
  73. package/dist/docs/tabs.md +176 -0
  74. package/dist/docs/toast.md +124 -0
  75. package/dist/docs/variant-selector.md +450 -0
  76. package/dist/graphql/define-subgraph.d.ts +12 -0
  77. package/dist/graphql/define-subgraph.js +15 -0
  78. package/dist/graphql/define-subgraph.js.map +1 -0
  79. package/dist/graphql/gql.d.ts +10 -0
  80. package/dist/graphql/gql.js +16 -0
  81. package/dist/graphql/gql.js.map +1 -0
  82. package/dist/graphql/types.d.ts +88 -0
  83. package/dist/graphql.d.ts +4 -0
  84. package/dist/graphql.js +3 -0
  85. package/dist/index.d.ts +19 -0
  86. package/dist/index.js +5 -0
  87. package/dist/internal/client.d.ts +24 -0
  88. package/dist/internal/client.js +23 -0
  89. package/dist/internal/content.d.ts +2 -0
  90. package/dist/internal/content.js +2 -0
  91. package/dist/internal/server.d.ts +7 -0
  92. package/dist/internal/server.js +6 -0
  93. package/dist/matter/access-code-sign-in/access-code-sign-in.d.ts +111 -0
  94. package/dist/matter/access-code-sign-in/access-code-sign-in.js +387 -0
  95. package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -0
  96. package/dist/matter/account-entry-point/account-entry-point.d.ts +64 -0
  97. package/dist/matter/account-entry-point/account-entry-point.js +151 -0
  98. package/dist/matter/account-entry-point/account-entry-point.js.map +1 -0
  99. package/dist/matter/breadcrumb/breadcrumb.d.ts +40 -0
  100. package/dist/matter/breadcrumb/breadcrumb.js +155 -0
  101. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -0
  102. package/dist/matter/buy-button/buy-button.d.ts +95 -0
  103. package/dist/matter/buy-button/buy-button.js +259 -0
  104. package/dist/matter/buy-button/buy-button.js.map +1 -0
  105. package/dist/matter/cart/cart-namespace.d.ts +48 -0
  106. package/dist/matter/cart/cart-namespace.js +50 -0
  107. package/dist/matter/cart/cart-namespace.js.map +1 -0
  108. package/dist/matter/cart/cart.d.ts +312 -0
  109. package/dist/matter/cart/cart.js +1034 -0
  110. package/dist/matter/cart/cart.js.map +1 -0
  111. package/dist/matter/cart-item/cart-item.d.ts +103 -0
  112. package/dist/matter/cart-item/cart-item.js +672 -0
  113. package/dist/matter/cart-item/cart-item.js.map +1 -0
  114. package/dist/matter/cart-item-compositions/cart-item-compositions.d.ts +49 -0
  115. package/dist/matter/cart-item-compositions/cart-item-compositions.js +165 -0
  116. package/dist/matter/cart-item-compositions/cart-item-compositions.js.map +1 -0
  117. package/dist/matter/cart-item-customizations/cart-item-customizations.d.ts +28 -0
  118. package/dist/matter/cart-item-customizations/cart-item-customizations.js +73 -0
  119. package/dist/matter/cart-item-customizations/cart-item-customizations.js.map +1 -0
  120. package/dist/matter/cart-item-discounts/cart-item-discounts.d.ts +33 -0
  121. package/dist/matter/cart-item-discounts/cart-item-discounts.js +70 -0
  122. package/dist/matter/cart-item-discounts/cart-item-discounts.js.map +1 -0
  123. package/dist/matter/cart-item-seller-info/cart-item-seller-info.d.ts +24 -0
  124. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js +54 -0
  125. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js.map +1 -0
  126. package/dist/matter/cart-item-variations/cart-item-variations.d.ts +27 -0
  127. package/dist/matter/cart-item-variations/cart-item-variations.js +69 -0
  128. package/dist/matter/cart-item-variations/cart-item-variations.js.map +1 -0
  129. package/dist/matter/cart-totalizer/cart-totalizer.d.ts +78 -0
  130. package/dist/matter/cart-totalizer/cart-totalizer.js +220 -0
  131. package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -0
  132. package/dist/matter/client-preferences/client-preferences.d.ts +50 -0
  133. package/dist/matter/client-preferences/client-preferences.js +206 -0
  134. package/dist/matter/client-preferences/client-preferences.js.map +1 -0
  135. package/dist/matter/client-profile/client-profile.d.ts +59 -0
  136. package/dist/matter/client-profile/client-profile.js +185 -0
  137. package/dist/matter/client-profile/client-profile.js.map +1 -0
  138. package/dist/matter/client-profile-form/client-profile-form.d.ts +126 -0
  139. package/dist/matter/client-profile-form/client-profile-form.js +660 -0
  140. package/dist/matter/client-profile-form/client-profile-form.js.map +1 -0
  141. package/dist/matter/delivery-options/delivery-options-accordion.d.ts +30 -0
  142. package/dist/matter/delivery-options/delivery-options-accordion.js +189 -0
  143. package/dist/matter/delivery-options/delivery-options-accordion.js.map +1 -0
  144. package/dist/matter/delivery-options/delivery-options-controller.d.ts +49 -0
  145. package/dist/matter/delivery-options/delivery-options-controller.js +203 -0
  146. package/dist/matter/delivery-options/delivery-options-controller.js.map +1 -0
  147. package/dist/matter/delivery-options/delivery-options.d.ts +31 -0
  148. package/dist/matter/delivery-options/delivery-options.js +103 -0
  149. package/dist/matter/delivery-options/delivery-options.js.map +1 -0
  150. package/dist/matter/delivery-options/use-delivery-option-selection.d.ts +9 -0
  151. package/dist/matter/delivery-options/use-delivery-option-selection.js +76 -0
  152. package/dist/matter/delivery-options/use-delivery-option-selection.js.map +1 -0
  153. package/dist/matter/email-identification/email-identification.d.ts +37 -0
  154. package/dist/matter/email-identification/email-identification.js +111 -0
  155. package/dist/matter/email-identification/email-identification.js.map +1 -0
  156. package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +44 -0
  157. package/dist/matter/free-shipping-progress/free-shipping-progress.js +170 -0
  158. package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -0
  159. package/dist/matter/identity-edit/identity-edit.d.ts +52 -0
  160. package/dist/matter/identity-edit/identity-edit.js +148 -0
  161. package/dist/matter/identity-edit/identity-edit.js.map +1 -0
  162. package/dist/matter/identity-summary/identity-summary.d.ts +128 -0
  163. package/dist/matter/identity-summary/identity-summary.js +344 -0
  164. package/dist/matter/identity-summary/identity-summary.js.map +1 -0
  165. package/dist/matter/pricing/pricing.d.ts +162 -0
  166. package/dist/matter/pricing/pricing.js +793 -0
  167. package/dist/matter/pricing/pricing.js.map +1 -0
  168. package/dist/matter/product-gallery/product-gallery.d.ts +23 -0
  169. package/dist/matter/product-gallery/product-gallery.js +188 -0
  170. package/dist/matter/product-gallery/product-gallery.js.map +1 -0
  171. package/dist/matter/product-information/product-information.d.ts +61 -0
  172. package/dist/matter/product-information/product-information.js +355 -0
  173. package/dist/matter/product-information/product-information.js.map +1 -0
  174. package/dist/matter/product-list/product-list.d.ts +86 -0
  175. package/dist/matter/product-list/product-list.js +342 -0
  176. package/dist/matter/product-list/product-list.js.map +1 -0
  177. package/dist/matter/product-quantity/product-quantity.d.ts +50 -0
  178. package/dist/matter/product-quantity/product-quantity.js +111 -0
  179. package/dist/matter/product-quantity/product-quantity.js.map +1 -0
  180. package/dist/matter/product-shelf/product-shelf.d.ts +125 -0
  181. package/dist/matter/product-shelf/product-shelf.js +376 -0
  182. package/dist/matter/product-shelf/product-shelf.js.map +1 -0
  183. package/dist/matter/region/region.d.ts +211 -0
  184. package/dist/matter/region/region.js +579 -0
  185. package/dist/matter/region/region.js.map +1 -0
  186. package/dist/matter/session/session.d.ts +58 -0
  187. package/dist/matter/session/session.js +112 -0
  188. package/dist/matter/session/session.js.map +1 -0
  189. package/dist/matter/shipping-address/country-descriptors.js +101 -0
  190. package/dist/matter/shipping-address/country-descriptors.js.map +1 -0
  191. package/dist/matter/shipping-address/shipping-address.d.ts +284 -0
  192. package/dist/matter/shipping-address/shipping-address.js +1036 -0
  193. package/dist/matter/shipping-address/shipping-address.js.map +1 -0
  194. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +143 -0
  195. package/dist/matter/shipping-simulator/shipping-simulator.js +644 -0
  196. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -0
  197. package/dist/matter/sign-in-form/sign-in-form.d.ts +79 -0
  198. package/dist/matter/sign-in-form/sign-in-form.js +226 -0
  199. package/dist/matter/sign-in-form/sign-in-form.js.map +1 -0
  200. package/dist/matter/variant-selector/variant-selector.d.ts +183 -0
  201. package/dist/matter/variant-selector/variant-selector.js +840 -0
  202. package/dist/matter/variant-selector/variant-selector.js.map +1 -0
  203. package/dist/message-locales.json +7 -0
  204. package/dist/particles/access-code-field/access-code-field.d.ts +33 -0
  205. package/dist/particles/access-code-field/access-code-field.js +95 -0
  206. package/dist/particles/access-code-field/access-code-field.js.map +1 -0
  207. package/dist/particles/accordion/accordion.d.ts +45 -0
  208. package/dist/particles/accordion/accordion.js +156 -0
  209. package/dist/particles/accordion/accordion.js.map +1 -0
  210. package/dist/particles/address-summary/address-summary.d.ts +50 -0
  211. package/dist/particles/address-summary/address-summary.js +129 -0
  212. package/dist/particles/address-summary/address-summary.js.map +1 -0
  213. package/dist/particles/badge/badge.d.ts +10 -0
  214. package/dist/particles/badge/badge.js +27 -0
  215. package/dist/particles/badge/badge.js.map +1 -0
  216. package/dist/particles/button/button.d.ts +18 -0
  217. package/dist/particles/button/button.js +37 -0
  218. package/dist/particles/button/button.js.map +1 -0
  219. package/dist/particles/carousel/carousel.d.ts +60 -0
  220. package/dist/particles/carousel/carousel.js +335 -0
  221. package/dist/particles/carousel/carousel.js.map +1 -0
  222. package/dist/particles/checkbox/checkbox.d.ts +40 -0
  223. package/dist/particles/checkbox/checkbox.js +82 -0
  224. package/dist/particles/checkbox/checkbox.js.map +1 -0
  225. package/dist/particles/container/container.d.ts +20 -0
  226. package/dist/particles/container/container.js +36 -0
  227. package/dist/particles/container/container.js.map +1 -0
  228. package/dist/particles/dialog/dialog.d.ts +54 -0
  229. package/dist/particles/dialog/dialog.js +192 -0
  230. package/dist/particles/dialog/dialog.js.map +1 -0
  231. package/dist/particles/document-field/document-field.d.ts +61 -0
  232. package/dist/particles/document-field/document-field.js +146 -0
  233. package/dist/particles/document-field/document-field.js.map +1 -0
  234. package/dist/particles/drawer/drawer.d.ts +52 -0
  235. package/dist/particles/drawer/drawer.js +183 -0
  236. package/dist/particles/drawer/drawer.js.map +1 -0
  237. package/dist/particles/email-field/email-field.d.ts +37 -0
  238. package/dist/particles/email-field/email-field.js +106 -0
  239. package/dist/particles/email-field/email-field.js.map +1 -0
  240. package/dist/particles/field/field.d.ts +50 -0
  241. package/dist/particles/field/field.js +133 -0
  242. package/dist/particles/field/field.js.map +1 -0
  243. package/dist/particles/fieldset/fieldset.d.ts +16 -0
  244. package/dist/particles/fieldset/fieldset.js +52 -0
  245. package/dist/particles/fieldset/fieldset.js.map +1 -0
  246. package/dist/particles/footer-copyright/footer-copyright.d.ts +32 -0
  247. package/dist/particles/footer-copyright/footer-copyright.js +50 -0
  248. package/dist/particles/footer-copyright/footer-copyright.js.map +1 -0
  249. package/dist/particles/footer-link-group/footer-link-group.d.ts +66 -0
  250. package/dist/particles/footer-link-group/footer-link-group.js +154 -0
  251. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -0
  252. package/dist/particles/footer-root/footer-root.d.ts +21 -0
  253. package/dist/particles/footer-root/footer-root.js +38 -0
  254. package/dist/particles/footer-root/footer-root.js.map +1 -0
  255. package/dist/particles/footer-social/footer-social.d.ts +79 -0
  256. package/dist/particles/footer-social/footer-social.js +176 -0
  257. package/dist/particles/footer-social/footer-social.js.map +1 -0
  258. package/dist/particles/gallery/gallery.d.ts +181 -0
  259. package/dist/particles/gallery/gallery.js +920 -0
  260. package/dist/particles/gallery/gallery.js.map +1 -0
  261. package/dist/particles/header-root/header-root.d.ts +21 -0
  262. package/dist/particles/header-root/header-root.js +38 -0
  263. package/dist/particles/header-root/header-root.js.map +1 -0
  264. package/dist/particles/icon/icon.d.ts +22 -0
  265. package/dist/particles/icon/icon.js +48 -0
  266. package/dist/particles/icon/icon.js.map +1 -0
  267. package/dist/particles/image/image.d.ts +13 -0
  268. package/dist/particles/image/image.js +59 -0
  269. package/dist/particles/image/image.js.map +1 -0
  270. package/dist/particles/incentives/incentives.d.ts +85 -0
  271. package/dist/particles/incentives/incentives.js +200 -0
  272. package/dist/particles/incentives/incentives.js.map +1 -0
  273. package/dist/particles/input/input.d.ts +9 -0
  274. package/dist/particles/input/input.js +28 -0
  275. package/dist/particles/input/input.js.map +1 -0
  276. package/dist/particles/logo/logo.d.ts +55 -0
  277. package/dist/particles/logo/logo.js +96 -0
  278. package/dist/particles/logo/logo.js.map +1 -0
  279. package/dist/particles/menu/menu.d.ts +103 -0
  280. package/dist/particles/menu/menu.js +409 -0
  281. package/dist/particles/menu/menu.js.map +1 -0
  282. package/dist/particles/menubar/menubar.d.ts +18 -0
  283. package/dist/particles/menubar/menubar.js +42 -0
  284. package/dist/particles/menubar/menubar.js.map +1 -0
  285. package/dist/particles/meter/meter.d.ts +36 -0
  286. package/dist/particles/meter/meter.js +132 -0
  287. package/dist/particles/meter/meter.js.map +1 -0
  288. package/dist/particles/navigation-link/navigation-link.d.ts +43 -0
  289. package/dist/particles/navigation-link/navigation-link.js +82 -0
  290. package/dist/particles/navigation-link/navigation-link.js.map +1 -0
  291. package/dist/particles/navigation-link-list/navigation-link-list.d.ts +59 -0
  292. package/dist/particles/navigation-link-list/navigation-link-list.js +103 -0
  293. package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -0
  294. package/dist/particles/navigation-menu/navigation-menu.d.ts +78 -0
  295. package/dist/particles/navigation-menu/navigation-menu.js +295 -0
  296. package/dist/particles/navigation-menu/navigation-menu.js.map +1 -0
  297. package/dist/particles/number-field/number-field.d.ts +46 -0
  298. package/dist/particles/number-field/number-field.js +169 -0
  299. package/dist/particles/number-field/number-field.js.map +1 -0
  300. package/dist/particles/password-field/password-field.d.ts +31 -0
  301. package/dist/particles/password-field/password-field.js +109 -0
  302. package/dist/particles/password-field/password-field.js.map +1 -0
  303. package/dist/particles/payment-methods/payment-methods.d.ts +72 -0
  304. package/dist/particles/payment-methods/payment-methods.js +151 -0
  305. package/dist/particles/payment-methods/payment-methods.js.map +1 -0
  306. package/dist/particles/phone-field/phone-field.d.ts +67 -0
  307. package/dist/particles/phone-field/phone-field.js +250 -0
  308. package/dist/particles/phone-field/phone-field.js.map +1 -0
  309. package/dist/particles/popover/popover.d.ts +68 -0
  310. package/dist/particles/popover/popover.js +284 -0
  311. package/dist/particles/popover/popover.js.map +1 -0
  312. package/dist/particles/postal-code-field/postal-code-field.d.ts +75 -0
  313. package/dist/particles/postal-code-field/postal-code-field.js +169 -0
  314. package/dist/particles/postal-code-field/postal-code-field.js.map +1 -0
  315. package/dist/particles/promotion/promotion.d.ts +46 -0
  316. package/dist/particles/promotion/promotion.js +78 -0
  317. package/dist/particles/promotion/promotion.js.map +1 -0
  318. package/dist/particles/quantity-selector/quantity-selector.d.ts +30 -0
  319. package/dist/particles/quantity-selector/quantity-selector.js +116 -0
  320. package/dist/particles/quantity-selector/quantity-selector.js.map +1 -0
  321. package/dist/particles/radio/radio.d.ts +36 -0
  322. package/dist/particles/radio/radio.js +76 -0
  323. package/dist/particles/radio/radio.js.map +1 -0
  324. package/dist/particles/scroll-area/scroll-area.d.ts +36 -0
  325. package/dist/particles/scroll-area/scroll-area.js +145 -0
  326. package/dist/particles/scroll-area/scroll-area.js.map +1 -0
  327. package/dist/particles/select/select.d.ts +125 -0
  328. package/dist/particles/select/select.js +478 -0
  329. package/dist/particles/select/select.js.map +1 -0
  330. package/dist/particles/separator/separator.d.ts +12 -0
  331. package/dist/particles/separator/separator.js +33 -0
  332. package/dist/particles/separator/separator.js.map +1 -0
  333. package/dist/particles/shared/input-mask.d.ts +5 -0
  334. package/dist/particles/shared/input-mask.js +58 -0
  335. package/dist/particles/shared/input-mask.js.map +1 -0
  336. package/dist/particles/spinner/spinner.d.ts +13 -0
  337. package/dist/particles/spinner/spinner.js +31 -0
  338. package/dist/particles/spinner/spinner.js.map +1 -0
  339. package/dist/particles/switch/switch.d.ts +27 -0
  340. package/dist/particles/switch/switch.js +59 -0
  341. package/dist/particles/switch/switch.js.map +1 -0
  342. package/dist/particles/tabs/tabs.d.ts +45 -0
  343. package/dist/particles/tabs/tabs.js +164 -0
  344. package/dist/particles/tabs/tabs.js.map +1 -0
  345. package/dist/particles/text/text.d.ts +24 -0
  346. package/dist/particles/text/text.js +40 -0
  347. package/dist/particles/text/text.js.map +1 -0
  348. package/dist/particles/toast/toast.d.ts +83 -0
  349. package/dist/particles/toast/toast.js +194 -0
  350. package/dist/particles/toast/toast.js.map +1 -0
  351. package/dist/particles/toggle/toggle.d.ts +26 -0
  352. package/dist/particles/toggle/toggle.js +61 -0
  353. package/dist/particles/toggle/toggle.js.map +1 -0
  354. package/dist/particles/tooltip/tooltip.d.ts +61 -0
  355. package/dist/particles/tooltip/tooltip.js +240 -0
  356. package/dist/particles/tooltip/tooltip.js.map +1 -0
  357. package/dist/schema.graphql +2953 -0
  358. package/dist/sdk/actions/cart-action-provider.d.ts +19 -0
  359. package/dist/sdk/actions/cart-action-provider.js +23 -0
  360. package/dist/sdk/actions/cart-action-provider.js.map +1 -0
  361. package/dist/sdk/actions/identity-action-provider.d.ts +15 -0
  362. package/dist/sdk/actions/identity-action-provider.js +19 -0
  363. package/dist/sdk/actions/identity-action-provider.js.map +1 -0
  364. package/dist/sdk/actions/index.d.ts +7 -0
  365. package/dist/sdk/actions/index.js +6 -0
  366. package/dist/sdk/actions/inject-actions.d.ts +14 -0
  367. package/dist/sdk/actions/inject-actions.js +36 -0
  368. package/dist/sdk/actions/inject-actions.js.map +1 -0
  369. package/dist/sdk/actions/region-action-provider.d.ts +15 -0
  370. package/dist/sdk/actions/region-action-provider.js +19 -0
  371. package/dist/sdk/actions/region-action-provider.js.map +1 -0
  372. package/dist/sdk/actions/session-action-provider.d.ts +15 -0
  373. package/dist/sdk/actions/session-action-provider.js +19 -0
  374. package/dist/sdk/actions/session-action-provider.js.map +1 -0
  375. package/dist/sdk/actions/shipping-action-provider.d.ts +15 -0
  376. package/dist/sdk/actions/shipping-action-provider.js +19 -0
  377. package/dist/sdk/actions/shipping-action-provider.js.map +1 -0
  378. package/dist/sdk/actions/types.d.ts +21 -0
  379. package/dist/sdk/cache/storefront-cache.js +35 -0
  380. package/dist/sdk/cache/storefront-cache.js.map +1 -0
  381. package/dist/sdk/cart/operations.d.ts +31 -0
  382. package/dist/sdk/cart/operations.js +215 -0
  383. package/dist/sdk/cart/operations.js.map +1 -0
  384. package/dist/sdk/cart/optimistic.d.ts +24 -0
  385. package/dist/sdk/cart/optimistic.js +164 -0
  386. package/dist/sdk/cart/optimistic.js.map +1 -0
  387. package/dist/sdk/cart/use-cart-actions.d.ts +56 -0
  388. package/dist/sdk/cart/use-cart-actions.js +348 -0
  389. package/dist/sdk/cart/use-cart-actions.js.map +1 -0
  390. package/dist/sdk/cart/use-cart-validate-on-open.js +50 -0
  391. package/dist/sdk/cart/use-cart-validate-on-open.js.map +1 -0
  392. package/dist/sdk/cart/write-gate.js +54 -0
  393. package/dist/sdk/cart/write-gate.js.map +1 -0
  394. package/dist/sdk/client/assert-api-url.js +20 -0
  395. package/dist/sdk/client/assert-api-url.js.map +1 -0
  396. package/dist/sdk/client/create-client.d.ts +23 -0
  397. package/dist/sdk/client/create-client.js +46 -0
  398. package/dist/sdk/client/create-client.js.map +1 -0
  399. package/dist/sdk/client/fetch-page-data.d.ts +39 -0
  400. package/dist/sdk/client/fetch-page-data.js +33 -0
  401. package/dist/sdk/client/fetch-page-data.js.map +1 -0
  402. package/dist/sdk/client/register-preload-query.d.ts +24 -0
  403. package/dist/sdk/client/register-preload-query.js +33 -0
  404. package/dist/sdk/client/register-preload-query.js.map +1 -0
  405. package/dist/sdk/content/create-content-runtime.d.ts +68 -0
  406. package/dist/sdk/content/create-content-runtime.js +503 -0
  407. package/dist/sdk/content/create-content-runtime.js.map +1 -0
  408. package/dist/sdk/context/headers.d.ts +15 -0
  409. package/dist/sdk/context/headers.js +21 -0
  410. package/dist/sdk/context/headers.js.map +1 -0
  411. package/dist/sdk/context/storefront-context.d.ts +11 -0
  412. package/dist/sdk/context/storefront-context.js +29 -0
  413. package/dist/sdk/context/storefront-context.js.map +1 -0
  414. package/dist/sdk/data/data-override-context.d.ts +12 -0
  415. package/dist/sdk/data/data-override-context.js +19 -0
  416. package/dist/sdk/data/data-override-context.js.map +1 -0
  417. package/dist/sdk/data/entity-subscriber.js +28 -0
  418. package/dist/sdk/data/entity-subscriber.js.map +1 -0
  419. package/dist/sdk/data/hot-data-provider.d.ts +19 -0
  420. package/dist/sdk/data/hot-data-provider.js +33 -0
  421. package/dist/sdk/data/hot-data-provider.js.map +1 -0
  422. package/dist/sdk/data/index.d.ts +8 -0
  423. package/dist/sdk/data/index.js +8 -0
  424. package/dist/sdk/data/list-item-ref-context.d.ts +20 -0
  425. package/dist/sdk/data/list-item-ref-context.js +11 -0
  426. package/dist/sdk/data/list-item-ref-context.js.map +1 -0
  427. package/dist/sdk/data/multiple-reactive-data-provider.d.ts +32 -0
  428. package/dist/sdk/data/multiple-reactive-data-provider.js +20 -0
  429. package/dist/sdk/data/multiple-reactive-data-provider.js.map +1 -0
  430. package/dist/sdk/data/page-reactive-data-root.d.ts +53 -0
  431. package/dist/sdk/data/page-reactive-data-root.js +153 -0
  432. package/dist/sdk/data/page-reactive-data-root.js.map +1 -0
  433. package/dist/sdk/data/reactive-data-provider.d.ts +25 -0
  434. package/dist/sdk/data/reactive-data-provider.js +24 -0
  435. package/dist/sdk/data/reactive-data-provider.js.map +1 -0
  436. package/dist/sdk/data/reactive-list-item-data-provider.d.ts +26 -0
  437. package/dist/sdk/data/reactive-list-item-data-provider.js +42 -0
  438. package/dist/sdk/data/reactive-list-item-data-provider.js.map +1 -0
  439. package/dist/sdk/data/use-reactive-entity.js +40 -0
  440. package/dist/sdk/data/use-reactive-entity.js.map +1 -0
  441. package/dist/sdk/format/client.d.ts +12 -0
  442. package/dist/sdk/format/client.js +20 -0
  443. package/dist/sdk/format/client.js.map +1 -0
  444. package/dist/sdk/format/formatters.d.ts +32 -0
  445. package/dist/sdk/format/formatters.js +45 -0
  446. package/dist/sdk/format/formatters.js.map +1 -0
  447. package/dist/sdk/generated/fragment-types.js +23 -0
  448. package/dist/sdk/generated/fragment-types.js.map +1 -0
  449. package/dist/sdk/generated/gql.js +51 -0
  450. package/dist/sdk/generated/gql.js.map +1 -0
  451. package/dist/sdk/generated/graphql.d.ts +622 -0
  452. package/dist/sdk/generated/graphql.js +11917 -0
  453. package/dist/sdk/generated/graphql.js.map +1 -0
  454. package/dist/sdk/graphql-tag.d.ts +10 -0
  455. package/dist/sdk/graphql-tag.js +21 -0
  456. package/dist/sdk/graphql-tag.js.map +1 -0
  457. package/dist/sdk/i18n/client.d.ts +4 -0
  458. package/dist/sdk/i18n/client.js +4 -0
  459. package/dist/sdk/i18n/locales.d.ts +8 -0
  460. package/dist/sdk/i18n/locales.js +57 -0
  461. package/dist/sdk/i18n/locales.js.map +1 -0
  462. package/dist/sdk/i18n/messages/en-US.js +24 -0
  463. package/dist/sdk/i18n/messages/en-US.js.map +1 -0
  464. package/dist/sdk/i18n/messages/en-US.json +19 -0
  465. package/dist/sdk/i18n/messages/en-US.json.d.ts +23 -0
  466. package/dist/sdk/i18n/messages/es-ES.js +24 -0
  467. package/dist/sdk/i18n/messages/es-ES.js.map +1 -0
  468. package/dist/sdk/i18n/messages/es-ES.json +19 -0
  469. package/dist/sdk/i18n/messages/pt-BR.js +24 -0
  470. package/dist/sdk/i18n/messages/pt-BR.js.map +1 -0
  471. package/dist/sdk/i18n/messages/pt-BR.json +19 -0
  472. package/dist/sdk/i18n/provider.d.ts +1 -0
  473. package/dist/sdk/i18n/provider.js +30 -0
  474. package/dist/sdk/i18n/provider.js.map +1 -0
  475. package/dist/sdk/i18n/server.d.ts +28 -0
  476. package/dist/sdk/i18n/server.js +59 -0
  477. package/dist/sdk/i18n/server.js.map +1 -0
  478. package/dist/sdk/identity/operations.d.ts +34 -0
  479. package/dist/sdk/identity/operations.js +78 -0
  480. package/dist/sdk/identity/operations.js.map +1 -0
  481. package/dist/sdk/identity/use-identity-actions.d.ts +62 -0
  482. package/dist/sdk/identity/use-identity-actions.js +180 -0
  483. package/dist/sdk/identity/use-identity-actions.js.map +1 -0
  484. package/dist/sdk/provider/index.d.ts +2 -0
  485. package/dist/sdk/provider/index.js +2 -0
  486. package/dist/sdk/provider/storefront-provider.d.ts +32 -0
  487. package/dist/sdk/provider/storefront-provider.js +111 -0
  488. package/dist/sdk/provider/storefront-provider.js.map +1 -0
  489. package/dist/sdk/region/operations.d.ts +6 -0
  490. package/dist/sdk/region/region-operations.d.ts +30 -0
  491. package/dist/sdk/region/region-operations.js +23 -0
  492. package/dist/sdk/region/region-operations.js.map +1 -0
  493. package/dist/sdk/region/use-region-actions.d.ts +23 -0
  494. package/dist/sdk/region/use-region-actions.js +66 -0
  495. package/dist/sdk/region/use-region-actions.js.map +1 -0
  496. package/dist/sdk/seller.js +11 -0
  497. package/dist/sdk/seller.js.map +1 -0
  498. package/dist/sdk/session/auth-operations.d.ts +47 -0
  499. package/dist/sdk/session/auth-operations.js +79 -0
  500. package/dist/sdk/session/auth-operations.js.map +1 -0
  501. package/dist/sdk/session/operations.d.ts +6 -0
  502. package/dist/sdk/session/use-session-actions.d.ts +27 -0
  503. package/dist/sdk/session/use-session-actions.js +126 -0
  504. package/dist/sdk/session/use-session-actions.js.map +1 -0
  505. package/dist/sdk/shipping/cart-operations.d.ts +3 -0
  506. package/dist/sdk/shipping/cart-operations.js +33 -0
  507. package/dist/sdk/shipping/cart-operations.js.map +1 -0
  508. package/dist/sdk/shipping/operations.d.ts +3 -0
  509. package/dist/sdk/shipping/operations.js +33 -0
  510. package/dist/sdk/shipping/operations.js.map +1 -0
  511. package/dist/sdk/shipping/option-select-operations.d.ts +24 -0
  512. package/dist/sdk/shipping/option-select-operations.js +45 -0
  513. package/dist/sdk/shipping/option-select-operations.js.map +1 -0
  514. package/dist/sdk/shipping/request-timeout.js +41 -0
  515. package/dist/sdk/shipping/request-timeout.js.map +1 -0
  516. package/dist/sdk/shipping/shipping-operations.d.ts +38 -0
  517. package/dist/sdk/shipping/shipping-operations.js +77 -0
  518. package/dist/sdk/shipping/shipping-operations.js.map +1 -0
  519. package/dist/sdk/shipping/use-cart-shipping-simulation.d.ts +7 -0
  520. package/dist/sdk/shipping/use-cart-shipping-simulation.js +72 -0
  521. package/dist/sdk/shipping/use-cart-shipping-simulation.js.map +1 -0
  522. package/dist/sdk/shipping/use-shipping-actions.d.ts +27 -0
  523. package/dist/sdk/shipping/use-shipping-actions.js +113 -0
  524. package/dist/sdk/shipping/use-shipping-actions.js.map +1 -0
  525. package/dist/sdk/shipping/use-shipping-simulation.d.ts +7 -0
  526. package/dist/sdk/shipping/use-shipping-simulation.js +72 -0
  527. package/dist/sdk/shipping/use-shipping-simulation.js.map +1 -0
  528. package/dist/sdk/state/cart.d.ts +42 -0
  529. package/dist/sdk/state/cart.js +64 -0
  530. package/dist/sdk/state/cart.js.map +1 -0
  531. package/dist/sdk/state/index.js +3 -0
  532. package/dist/sdk/state/variant-selector.d.ts +17 -0
  533. package/dist/sdk/state/variant-selector.js +14 -0
  534. package/dist/sdk/state/variant-selector.js.map +1 -0
  535. package/dist/utils/safe-href.js +63 -0
  536. package/dist/utils/safe-href.js.map +1 -0
  537. package/package.json +84 -0
  538. package/src/styles/tailwind.css +32 -0
@@ -0,0 +1,1036 @@
1
+ "use client";
2
+ import { defineComponent } from "../../core/dist/define-component.js";
3
+ import "../../core/dist/index.js";
4
+ import { Field } from "../../particles/field/field.js";
5
+ import { useDataOverride } from "../../sdk/data/data-override-context.js";
6
+ import { AddressSummary, AddressSummaryRoot } from "../../particles/address-summary/address-summary.js";
7
+ import { Select } from "../../particles/select/select.js";
8
+ import "../../sdk/shipping/shipping-operations.js";
9
+ import { getAvailableCountries, getCountryDescriptor } from "./country-descriptors.js";
10
+ import { cloneElement, createContext, isValidElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
11
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
+ //#region src/matter/shipping-address/shipping-address.tsx
13
+ /**
14
+ * Shipping address step (T2 — Enter and save the delivery address).
15
+ * Single-file matter per ADR-0001; batches form state and writes once via shipping.setAddress.
16
+ * Controls are thin context-bound components that read/write draft state (specs/shipping-address-step.md).
17
+ */
18
+ const fragment = `
19
+ fragment ShippingAddressData on Query {
20
+ shipping {
21
+ __typename
22
+ id
23
+ address {
24
+ __typename
25
+ id
26
+ recipientName
27
+ postalCode
28
+ country
29
+ street
30
+ number
31
+ complement
32
+ neighborhood
33
+ city
34
+ state
35
+ }
36
+ savedAddresses {
37
+ __typename
38
+ id
39
+ recipientName
40
+ postalCode
41
+ country
42
+ street
43
+ number
44
+ complement
45
+ neighborhood
46
+ city
47
+ state
48
+ }
49
+ }
50
+ clientProfile {
51
+ __typename
52
+ firstName
53
+ lastName
54
+ }
55
+ }
56
+ `;
57
+ const SHIPPING_ADDRESS_CONTEXT_UNSET = Symbol("ShippingAddressContextUnset");
58
+ const ShippingAddressContext = createContext(SHIPPING_ADDRESS_CONTEXT_UNSET);
59
+ function useShippingAddressContext() {
60
+ const ctx = useContext(ShippingAddressContext);
61
+ if (ctx === SHIPPING_ADDRESS_CONTEXT_UNSET) throw new Error("ShippingAddress components must be used inside ShippingAddressRoot.");
62
+ return ctx;
63
+ }
64
+ const SHIPPING_ADDRESS_DRAWER_CONTEXT_UNSET = Symbol("ShippingAddressDrawerContextUnset");
65
+ const ShippingAddressDrawerContext = createContext(SHIPPING_ADDRESS_DRAWER_CONTEXT_UNSET);
66
+ function useShippingAddressDrawerContext() {
67
+ const ctx = useContext(ShippingAddressDrawerContext);
68
+ if (ctx === SHIPPING_ADDRESS_DRAWER_CONTEXT_UNSET) throw new Error("ShippingAddressSavedAddressDrawerController and ShippingAddressSavedAddressSubmit must be used inside ShippingAddressRoot.");
69
+ return ctx;
70
+ }
71
+ const SHIPPING_ADDRESS_SECTION_CONTEXT_UNSET = Symbol("ShippingAddressSectionContextUnset");
72
+ const ShippingAddressSectionContext = createContext(SHIPPING_ADDRESS_SECTION_CONTEXT_UNSET);
73
+ function useShippingAddressSectionContext() {
74
+ const ctx = useContext(ShippingAddressSectionContext);
75
+ if (ctx === SHIPPING_ADDRESS_SECTION_CONTEXT_UNSET) throw new Error("ShippingAddressSummaryView, ShippingAddressEditForm, ShippingAddressEditButton and ShippingAddressCancelButton must be used inside ShippingAddressEditController.");
76
+ return ctx;
77
+ }
78
+ const ShippingAddressRootDefinition = defineComponent({
79
+ name: "ShippingAddressRoot",
80
+ importPath: "@vtex/faststore/components",
81
+ component: ShippingAddressRoot,
82
+ fragment,
83
+ fetchStrategy: "reactive",
84
+ providesContext: "shipping-address",
85
+ actions: { shipping: ["setAddress"] },
86
+ editor: {
87
+ label: "Shipping Address Root",
88
+ category: "content"
89
+ },
90
+ schema: { defaultCountry: {
91
+ type: "string",
92
+ default: "BRA",
93
+ label: "Default country (ISO-3)"
94
+ } },
95
+ guideline: "Country-adaptive single-address delivery form; batches all fields and writes once via shipping.setAddress. See shipping-address.md."
96
+ });
97
+ const ShippingAddressRecipientNameControlDefinition = defineComponent({
98
+ name: "ShippingAddressRecipientNameControl",
99
+ importPath: "@vtex/faststore/components",
100
+ component: ShippingAddressRecipientNameControl,
101
+ requiresContext: "shipping-address",
102
+ editor: {
103
+ label: "Recipient Name Control",
104
+ category: "action"
105
+ },
106
+ schema: {},
107
+ guideline: "Recipient-name input field; required for submit. Must be a descendant of ShippingAddressRoot."
108
+ });
109
+ const ShippingAddressStreetControlDefinition = defineComponent({
110
+ name: "ShippingAddressStreetControl",
111
+ importPath: "@vtex/faststore/components",
112
+ component: ShippingAddressStreetControl,
113
+ requiresContext: "shipping-address",
114
+ editor: {
115
+ label: "Street Control",
116
+ category: "action"
117
+ },
118
+ schema: {},
119
+ guideline: "Street name input field. Must be a descendant of ShippingAddressRoot."
120
+ });
121
+ const ShippingAddressNumberControlDefinition = defineComponent({
122
+ name: "ShippingAddressNumberControl",
123
+ importPath: "@vtex/faststore/components",
124
+ component: ShippingAddressNumberControl,
125
+ requiresContext: "shipping-address",
126
+ editor: {
127
+ label: "Number Control",
128
+ category: "action"
129
+ },
130
+ schema: {},
131
+ guideline: "Street number input field. Must be a descendant of ShippingAddressRoot."
132
+ });
133
+ const ShippingAddressCityControlDefinition = defineComponent({
134
+ name: "ShippingAddressCityControl",
135
+ importPath: "@vtex/faststore/components",
136
+ component: ShippingAddressCityControl,
137
+ requiresContext: "shipping-address",
138
+ editor: {
139
+ label: "City Control",
140
+ category: "action"
141
+ },
142
+ schema: {},
143
+ guideline: "City name input field. Must be a descendant of ShippingAddressRoot."
144
+ });
145
+ const ShippingAddressStateControlDefinition = defineComponent({
146
+ name: "ShippingAddressStateControl",
147
+ importPath: "@vtex/faststore/components",
148
+ component: ShippingAddressStateControl,
149
+ requiresContext: "shipping-address",
150
+ editor: {
151
+ label: "State Control",
152
+ category: "action"
153
+ },
154
+ schema: {},
155
+ guideline: "State/province input field. Must be a descendant of ShippingAddressRoot."
156
+ });
157
+ const ShippingAddressPostalCodeControlDefinition = defineComponent({
158
+ name: "ShippingAddressPostalCodeControl",
159
+ importPath: "@vtex/faststore/components",
160
+ component: ShippingAddressPostalCodeControl,
161
+ requiresContext: "shipping-address",
162
+ editor: {
163
+ label: "Postal Code Control",
164
+ category: "action"
165
+ },
166
+ schema: {},
167
+ guideline: "Postal code input field. Must be a descendant of ShippingAddressRoot."
168
+ });
169
+ const ShippingAddressComplementControlDefinition = defineComponent({
170
+ name: "ShippingAddressComplementControl",
171
+ importPath: "@vtex/faststore/components",
172
+ component: ShippingAddressComplementControl,
173
+ requiresContext: "shipping-address",
174
+ editor: {
175
+ label: "Complement Control",
176
+ category: "action"
177
+ },
178
+ schema: {},
179
+ guideline: "Complement (apartment, suite, etc.) input field. Must be a descendant of ShippingAddressRoot."
180
+ });
181
+ const ShippingAddressNeighborhoodControlDefinition = defineComponent({
182
+ name: "ShippingAddressNeighborhoodControl",
183
+ importPath: "@vtex/faststore/components",
184
+ component: ShippingAddressNeighborhoodControl,
185
+ requiresContext: "shipping-address",
186
+ editor: {
187
+ label: "Neighborhood Control",
188
+ category: "action"
189
+ },
190
+ schema: {},
191
+ guideline: "Neighborhood (bairro) input field; shown only for countries that have this field (BR in v1). Must be a descendant of ShippingAddressRoot."
192
+ });
193
+ const ShippingAddressCountryControlDefinition = defineComponent({
194
+ name: "ShippingAddressCountryControl",
195
+ importPath: "@vtex/faststore/components",
196
+ component: ShippingAddressCountryControl,
197
+ requiresContext: "shipping-address",
198
+ editor: {
199
+ label: "Country Control",
200
+ category: "action"
201
+ },
202
+ schema: { label: {
203
+ type: "string",
204
+ default: "país",
205
+ label: "Field label"
206
+ } },
207
+ guideline: "Country selector; lists only countries with an implemented descriptor. Must be a descendant of ShippingAddressRoot."
208
+ });
209
+ const ShippingAddressSavedListDefinition = defineComponent({
210
+ name: "ShippingAddressSavedList",
211
+ importPath: "@vtex/faststore/components",
212
+ component: ShippingAddressSavedList,
213
+ requiresContext: "shipping-address",
214
+ editor: {
215
+ label: "Saved Address List",
216
+ category: "commerce"
217
+ },
218
+ schema: {},
219
+ guideline: "List of saved addresses for logged-in shoppers; renders only if savedAddresses is non-empty. Must be a descendant of ShippingAddressRoot."
220
+ });
221
+ const ShippingAddressSavedOptionDefinition = defineComponent({
222
+ name: "ShippingAddressSavedOption",
223
+ importPath: "@vtex/faststore/components",
224
+ component: ShippingAddressSavedOption,
225
+ requiresContext: "shipping-address",
226
+ editor: {
227
+ label: "Saved Address Option",
228
+ category: "commerce"
229
+ },
230
+ schema: { id: {
231
+ type: "string",
232
+ label: "Saved address ID"
233
+ } },
234
+ guideline: "A single saved address option; renders its address via the same AddressSummary particle (through its own AddressSummaryRoot) used by ShippingAddressSelectedSummary, so both share one formatting implementation. Must be a descendant of ShippingAddressSavedList."
235
+ });
236
+ const ShippingAddressSubmitDefinition = defineComponent({
237
+ name: "ShippingAddressSubmit",
238
+ importPath: "@vtex/faststore/components",
239
+ component: ShippingAddressSubmit,
240
+ requiresContext: "shipping-address",
241
+ editor: {
242
+ label: "Shipping Address Submit",
243
+ category: "action"
244
+ },
245
+ schema: {
246
+ label: {
247
+ type: "string",
248
+ default: "salvar endereço",
249
+ label: "Button label"
250
+ },
251
+ pendingLabel: {
252
+ type: "string",
253
+ default: "salvando...",
254
+ label: "Pending label"
255
+ }
256
+ },
257
+ guideline: "Submit button; dispatches the batched address write. Disabled until recipient name is non-blank. Must be a descendant of ShippingAddressRoot."
258
+ });
259
+ const ShippingAddressErrorDefinition = defineComponent({
260
+ name: "ShippingAddressError",
261
+ importPath: "@vtex/faststore/components",
262
+ component: ShippingAddressError,
263
+ requiresContext: "shipping-address",
264
+ editor: {
265
+ label: "Shipping Address Error",
266
+ category: "commerce"
267
+ },
268
+ schema: {},
269
+ guideline: "Error banner; shows domain validation errors inline or a generic upstream-error state. Must be a descendant of ShippingAddressRoot."
270
+ });
271
+ const ShippingAddressSavedAddressDrawerControllerDefinition = defineComponent({
272
+ name: "ShippingAddressSavedAddressDrawerController",
273
+ importPath: "@vtex/faststore/components",
274
+ component: ShippingAddressSavedAddressDrawerController,
275
+ requiresContext: "shipping-address",
276
+ editor: {
277
+ label: "Saved Address Drawer Controller",
278
+ category: "action"
279
+ },
280
+ schema: {},
281
+ guideline: "Wraps a single DrawerRoot child (the saved-address selection drawer) and makes it controlled by the shipping-address drawer state: open state and blocked-dismissal-while-submitting are handled here, so do not set raw open/onOpenChange on the wrapped DrawerRoot. Compose as the parent of DrawerRoot, with the drawer trigger and popup as DrawerRoot descendants, same pattern as CartOpenOnAdd wrapping the mini-cart DrawerRoot. Must be inside ShippingAddressRoot."
282
+ });
283
+ const ShippingAddressSavedAddressSubmitDefinition = defineComponent({
284
+ name: "ShippingAddressSavedAddressSubmit",
285
+ importPath: "@vtex/faststore/components",
286
+ component: ShippingAddressSavedAddressSubmit,
287
+ requiresContext: "shipping-address",
288
+ editor: {
289
+ label: "Saved Address Submit",
290
+ category: "action"
291
+ },
292
+ schema: {
293
+ label: {
294
+ type: "string",
295
+ default: "selecionar",
296
+ label: "Button label"
297
+ },
298
+ pendingLabel: {
299
+ type: "string",
300
+ default: "selecionando...",
301
+ label: "Pending label"
302
+ }
303
+ },
304
+ guideline: "The drawer's \"selecionar\" submit button; independent submitting state from the main form's Submit (Decision 7); no-ops when the selected saved address is already the current one (Decision 8). Must be inside the saved-address drawer's DrawerPopup and inside ShippingAddressRoot."
305
+ });
306
+ const ShippingAddressSelectedSummaryDefinition = defineComponent({
307
+ name: "ShippingAddressSelectedSummary",
308
+ importPath: "@vtex/faststore/components",
309
+ component: ShippingAddressSelectedSummary,
310
+ requiresContext: "shipping-address",
311
+ providesContext: "address-summary",
312
+ editor: {
313
+ label: "Selected Address Summary",
314
+ category: "commerce"
315
+ },
316
+ schema: {},
317
+ guideline: "Provides the current delivery address to the generic AddressSummary particle via AddressSummaryRoot context, and renders the default AddressSummary when composed with no children. Compose AddressSummaryRecipient / Street / Locality directly to choose the order or drop a line. Self-gates to null when there is no current address yet. Must be a descendant of ShippingAddressRoot."
318
+ });
319
+ const ShippingAddressEditControllerDefinition = defineComponent({
320
+ name: "ShippingAddressEditController",
321
+ importPath: "@vtex/faststore/components",
322
+ component: ShippingAddressEditController,
323
+ requiresContext: "shipping-address",
324
+ providesContext: "shipping-address-section",
325
+ editor: {
326
+ label: "Shipping Address Edit Controller",
327
+ category: "commerce"
328
+ },
329
+ schema: {},
330
+ guideline: "Owns the view/edit toggle for the delivery address section: defaults to view when a current address exists, edit otherwise; switches back to view automatically whenever setAddress succeeds (main form submit or saved-address drawer submit), without ShippingAddressSubmit/ShippingAddressSavedAddressSubmit needing to know about this mode. Compose a ShippingAddressSummaryView holding SelectedSummary + EditButton and a ShippingAddressEditForm holding the form Controls/Submit/Error. Self-contained: it decides from its own data and the shopper's own presses, so no other section opens it and finishing it opens nothing. Must be inside ShippingAddressRoot."
331
+ });
332
+ const ShippingAddressSummaryViewDefinition = defineComponent({
333
+ name: "ShippingAddressSummaryView",
334
+ importPath: "@vtex/faststore/components",
335
+ component: ShippingAddressSummaryView,
336
+ requiresContext: "shipping-address-section",
337
+ editor: {
338
+ label: "Shipping Address Summary View",
339
+ category: "commerce"
340
+ },
341
+ schema: {},
342
+ guideline: "Renders its children only while the delivery section shows the saved-address summary, and nothing while it shows the form. Compose SelectedSummary and a ShippingAddressEditButton inside. Takes no props: which state it gates is which component it is. Must be inside a ShippingAddressEditController."
343
+ });
344
+ const ShippingAddressEditFormDefinition = defineComponent({
345
+ name: "ShippingAddressEditForm",
346
+ importPath: "@vtex/faststore/components",
347
+ component: ShippingAddressEditForm,
348
+ requiresContext: "shipping-address-section",
349
+ editor: {
350
+ label: "Shipping Address Edit Form",
351
+ category: "commerce"
352
+ },
353
+ schema: {},
354
+ guideline: "Renders its children only while the delivery section shows the address form, and nothing while it shows the summary. Compose the Controls, Submit and Error parts inside. Must be inside a ShippingAddressEditController."
355
+ });
356
+ const ShippingAddressEditButtonDefinition = defineComponent({
357
+ name: "ShippingAddressEditButton",
358
+ importPath: "@vtex/faststore/components",
359
+ component: ShippingAddressEditButton,
360
+ requiresContext: "shipping-address-section",
361
+ editor: {
362
+ label: "Shipping Address Edit Button",
363
+ category: "action"
364
+ },
365
+ schema: { label: {
366
+ type: "string",
367
+ default: "editar",
368
+ label: "Button label"
369
+ } },
370
+ guideline: "CTA that switches the view/edit mode to edit. Typically placed inside a ShippingAddressSummaryView, next to SelectedSummary. Must be inside ShippingAddressEditController."
371
+ });
372
+ const ShippingAddressCancelButtonDefinition = defineComponent({
373
+ name: "ShippingAddressCancelButton",
374
+ importPath: "@vtex/faststore/components",
375
+ component: ShippingAddressCancelButton,
376
+ requiresContext: "shipping-address-section",
377
+ editor: {
378
+ label: "Shipping Address Cancel Button",
379
+ category: "action"
380
+ },
381
+ schema: { label: {
382
+ type: "string",
383
+ default: "cancelar",
384
+ label: "Button label"
385
+ } },
386
+ guideline: "Returns the delivery section to its summary without saving. Place it inside a ShippingAddressEditForm so a shopper who opened the form has a way back that does not depend on a successful write. Must be inside ShippingAddressEditController."
387
+ });
388
+ /**
389
+ * ShippingAddressRoot owns the batched form state, manages the current descriptor,
390
+ * and provides context to child Controls. It handles submit dispatch and error tracking.
391
+ */
392
+ function ShippingAddressRoot({ defaultCountry = "BRA", className, children, $data: $dataProp, $actions }) {
393
+ const $data = useDataOverride($dataProp);
394
+ const currentAddress = $data?.shipping?.address;
395
+ const savedAddresses = $data?.shipping?.savedAddresses ?? [];
396
+ const clientProfile = $data?.clientProfile;
397
+ const joinedProfileName = [clientProfile?.firstName, clientProfile?.lastName].filter(Boolean).join(" ");
398
+ const seedDraft = useCallback(() => ({
399
+ recipientName: currentAddress?.recipientName ?? joinedProfileName,
400
+ postalCode: currentAddress?.postalCode ?? "",
401
+ country: currentAddress?.country ?? defaultCountry,
402
+ street: currentAddress?.street ?? "",
403
+ number: currentAddress?.number ?? "",
404
+ complement: currentAddress?.complement ?? "",
405
+ neighborhood: currentAddress?.neighborhood ?? "",
406
+ city: currentAddress?.city ?? "",
407
+ state: currentAddress?.state ?? ""
408
+ }), [
409
+ currentAddress,
410
+ joinedProfileName,
411
+ defaultCountry
412
+ ]);
413
+ const [draft, setDraft] = useState(seedDraft);
414
+ const [submitting, setSubmitting] = useState(false);
415
+ const [errors, setErrors] = useState([]);
416
+ const [upstreamError, setUpstreamError] = useState(false);
417
+ const [selectedSavedId, setSelectedSavedId] = useState();
418
+ const [savedAddressDrawerOpen, setSavedAddressDrawerOpen] = useState(false);
419
+ const [drawerSubmitting, setDrawerSubmitting] = useState(false);
420
+ const [submitSuccessSignal, setSubmitSuccessSignal] = useState(0);
421
+ const [touchedFields, setTouchedFields] = useState(() => /* @__PURE__ */ new Set());
422
+ const discardDraft = useCallback(() => {
423
+ setTouchedFields(/* @__PURE__ */ new Set());
424
+ setDraft(seedDraft());
425
+ setErrors([]);
426
+ setUpstreamError(false);
427
+ }, [seedDraft]);
428
+ const currentAddressSnapshot = JSON.stringify(currentAddress ?? null);
429
+ const clientProfileSnapshot = JSON.stringify(clientProfile ?? null);
430
+ useEffect(() => {
431
+ setDraft((prev) => {
432
+ return {
433
+ recipientName: touchedFields.has("recipientName") ? prev.recipientName : currentAddress?.recipientName ?? (joinedProfileName || prev.recipientName),
434
+ postalCode: touchedFields.has("postalCode") ? prev.postalCode : currentAddress?.postalCode ?? prev.postalCode,
435
+ country: touchedFields.has("country") ? prev.country : currentAddress?.country ?? prev.country,
436
+ street: touchedFields.has("street") ? prev.street : currentAddress?.street ?? prev.street,
437
+ number: touchedFields.has("number") ? prev.number : currentAddress?.number ?? prev.number,
438
+ complement: touchedFields.has("complement") ? prev.complement : currentAddress?.complement ?? prev.complement,
439
+ neighborhood: touchedFields.has("neighborhood") ? prev.neighborhood : currentAddress?.neighborhood ?? prev.neighborhood,
440
+ city: touchedFields.has("city") ? prev.city : currentAddress?.city ?? prev.city,
441
+ state: touchedFields.has("state") ? prev.state : currentAddress?.state ?? prev.state
442
+ };
443
+ });
444
+ }, [
445
+ currentAddressSnapshot,
446
+ clientProfileSnapshot,
447
+ touchedFields
448
+ ]);
449
+ const currentAddressId = currentAddress?.id ?? void 0;
450
+ const formattedCurrentAddress = useMemo(() => {
451
+ if (!currentAddress) return void 0;
452
+ return {
453
+ recipientName: currentAddress.recipientName ?? "",
454
+ postalCode: currentAddress.postalCode ?? "",
455
+ country: currentAddress.country ?? "",
456
+ street: currentAddress.street ?? "",
457
+ number: currentAddress.number ?? "",
458
+ complement: currentAddress.complement ?? "",
459
+ neighborhood: currentAddress.neighborhood ?? "",
460
+ city: currentAddress.city ?? "",
461
+ state: currentAddress.state ?? ""
462
+ };
463
+ }, [currentAddress]);
464
+ const descriptor = getCountryDescriptor(draft.country);
465
+ const mappedSavedAddresses = useMemo(() => savedAddresses.map((saved) => ({
466
+ id: saved.id ?? "",
467
+ address: {
468
+ recipientName: saved.recipientName ?? "",
469
+ postalCode: saved.postalCode ?? "",
470
+ country: saved.country ?? "",
471
+ street: saved.street ?? "",
472
+ number: saved.number ?? "",
473
+ complement: saved.complement ?? "",
474
+ neighborhood: saved.neighborhood ?? "",
475
+ city: saved.city ?? "",
476
+ state: saved.state ?? ""
477
+ }
478
+ })), [savedAddresses]);
479
+ const setDraftField = useCallback((field, value) => {
480
+ setTouchedFields((prev) => prev.has(field) ? prev : new Set(prev).add(field));
481
+ setDraft((prev) => ({
482
+ ...prev,
483
+ [field]: value
484
+ }));
485
+ }, []);
486
+ const selectSavedAddress = useCallback((id) => {
487
+ setSelectedSavedId(id);
488
+ if (id) {
489
+ const saved = mappedSavedAddresses.find((s) => s.id === id);
490
+ if (saved?.address) {
491
+ setTouchedFields((prev) => /* @__PURE__ */ new Set([...prev, ...Object.keys(saved.address)]));
492
+ setDraft((prev) => ({
493
+ ...prev,
494
+ ...saved.address,
495
+ recipientName: saved.address.recipientName || joinedProfileName
496
+ }));
497
+ }
498
+ }
499
+ }, [mappedSavedAddresses, joinedProfileName]);
500
+ const isFormValid = draft.recipientName.trim().length > 0;
501
+ const handleSubmit = useCallback(async () => {
502
+ if (!isFormValid || submitting) return;
503
+ if (!$actions?.shipping?.setAddress) return;
504
+ setSubmitting(true);
505
+ setErrors([]);
506
+ setUpstreamError(false);
507
+ try {
508
+ const isFieldActive = (field) => descriptor?.fields.some((f) => f.name === field) ?? false;
509
+ const addressFields = {
510
+ recipientName: draft.recipientName.trim(),
511
+ postalCode: draft.postalCode,
512
+ country: draft.country,
513
+ ...isFieldActive("street") ? { street: draft.street } : {},
514
+ ...isFieldActive("number") ? { number: draft.number } : {},
515
+ ...isFieldActive("complement") ? { complement: draft.complement } : {},
516
+ ...isFieldActive("neighborhood") ? { neighborhood: draft.neighborhood } : {},
517
+ ...isFieldActive("city") ? { city: draft.city } : {},
518
+ ...isFieldActive("state") ? { state: draft.state } : {}
519
+ };
520
+ const input = selectedSavedId ? {
521
+ savedAddressId: selectedSavedId,
522
+ ...addressFields
523
+ } : addressFields;
524
+ const userErrors = await $actions.shipping.setAddress(input);
525
+ if (userErrors.length === 0) {
526
+ setErrors([]);
527
+ setSubmitSuccessSignal((n) => n + 1);
528
+ } else if (userErrors.some((e) => e.code === "NETWORK_ERROR")) {
529
+ setErrors([]);
530
+ setUpstreamError(true);
531
+ } else setErrors(userErrors);
532
+ } catch (error) {
533
+ console.error("[ShippingAddress] setAddress failed:", error);
534
+ setUpstreamError(true);
535
+ setErrors([]);
536
+ } finally {
537
+ setSubmitting(false);
538
+ }
539
+ }, [
540
+ isFormValid,
541
+ submitting,
542
+ $actions?.shipping?.setAddress,
543
+ draft,
544
+ selectedSavedId,
545
+ descriptor
546
+ ]);
547
+ const handleDrawerSubmit = useCallback(async () => {
548
+ if (!selectedSavedId) return;
549
+ if (currentAddressId !== void 0 && selectedSavedId === currentAddressId) {
550
+ setSavedAddressDrawerOpen(false);
551
+ return;
552
+ }
553
+ const selectedAddress = mappedSavedAddresses.find((s) => s.id === selectedSavedId);
554
+ if (!selectedAddress) return;
555
+ if (!selectedAddress.address.recipientName?.trim()) {
556
+ setSavedAddressDrawerOpen(false);
557
+ return;
558
+ }
559
+ if (!$actions?.shipping?.setAddress) return;
560
+ setDrawerSubmitting(true);
561
+ setErrors([]);
562
+ setUpstreamError(false);
563
+ try {
564
+ const input = {
565
+ savedAddressId: selectedSavedId,
566
+ recipientName: selectedAddress.address.recipientName || "",
567
+ postalCode: selectedAddress.address.postalCode || "",
568
+ country: selectedAddress.address.country || "",
569
+ street: selectedAddress.address.street || "",
570
+ number: selectedAddress.address.number || "",
571
+ complement: selectedAddress.address.complement || "",
572
+ neighborhood: selectedAddress.address.neighborhood || "",
573
+ city: selectedAddress.address.city || "",
574
+ state: selectedAddress.address.state || ""
575
+ };
576
+ const userErrors = await $actions.shipping.setAddress(input);
577
+ if (userErrors.length === 0) {
578
+ setErrors([]);
579
+ setSavedAddressDrawerOpen(false);
580
+ setSubmitSuccessSignal((n) => n + 1);
581
+ } else if (userErrors.some((e) => e.code === "NETWORK_ERROR")) {
582
+ setErrors([]);
583
+ setUpstreamError(true);
584
+ } else setErrors(userErrors);
585
+ } catch (error) {
586
+ console.error("[ShippingAddress] drawer submit failed:", error);
587
+ setUpstreamError(true);
588
+ setErrors([]);
589
+ } finally {
590
+ setDrawerSubmitting(false);
591
+ }
592
+ }, [
593
+ selectedSavedId,
594
+ currentAddressId,
595
+ mappedSavedAddresses,
596
+ $actions?.shipping?.setAddress
597
+ ]);
598
+ const contextValue = {
599
+ draft,
600
+ setDraftField,
601
+ descriptor,
602
+ savedAddresses: mappedSavedAddresses,
603
+ selectedSavedId,
604
+ setSelectedSavedId: selectSavedAddress,
605
+ submitting,
606
+ errors,
607
+ upstreamError,
608
+ handleSubmit,
609
+ currentAddressId,
610
+ currentAddress: formattedCurrentAddress,
611
+ submitSuccessSignal,
612
+ isFormValid,
613
+ discardDraft
614
+ };
615
+ const drawerContextValue = {
616
+ savedAddressDrawerOpen,
617
+ setSavedAddressDrawerOpen,
618
+ drawerSubmitting,
619
+ handleDrawerSubmit
620
+ };
621
+ return /* @__PURE__ */ jsx(ShippingAddressContext.Provider, {
622
+ value: contextValue,
623
+ children: /* @__PURE__ */ jsx(ShippingAddressDrawerContext.Provider, {
624
+ value: drawerContextValue,
625
+ children: /* @__PURE__ */ jsx("div", {
626
+ className,
627
+ "data-fs-shipping-address": "",
628
+ children
629
+ })
630
+ })
631
+ });
632
+ }
633
+ /**
634
+ * RecipientNameControl — the only client-validated field (US-4, US-6).
635
+ * Pre-filled from clientProfile, editable, required.
636
+ */
637
+ function ShippingAddressRecipientNameControl({ className }) {
638
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
639
+ if (!descriptor?.fields.some((f) => f.name === "recipientName")) return null;
640
+ const label = (descriptor?.fields.find((f) => f.name === "recipientName"))?.label ?? "nome do destinatário";
641
+ return /* @__PURE__ */ jsxs(Field.Root, {
642
+ className,
643
+ "data-fs-shipping-address-field": "recipient-name",
644
+ disabled: submitting,
645
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: label }), /* @__PURE__ */ jsx(Field.Control, {
646
+ value: draft.recipientName,
647
+ onChange: (e) => setDraftField("recipientName", e.currentTarget.value)
648
+ })]
649
+ });
650
+ }
651
+ /** StreetControl */
652
+ function ShippingAddressStreetControl({ className }) {
653
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
654
+ const fieldDescriptor = descriptor?.fields.find((f) => f.name === "street");
655
+ if (!fieldDescriptor) return null;
656
+ return /* @__PURE__ */ jsxs(Field.Root, {
657
+ className,
658
+ "data-fs-shipping-address-field": "street",
659
+ disabled: submitting,
660
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: fieldDescriptor.label }), /* @__PURE__ */ jsx(Field.Control, {
661
+ value: draft.street,
662
+ onChange: (e) => setDraftField("street", e.currentTarget.value)
663
+ })]
664
+ });
665
+ }
666
+ /** NumberControl */
667
+ function ShippingAddressNumberControl({ className }) {
668
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
669
+ const fieldDescriptor = descriptor?.fields.find((f) => f.name === "number");
670
+ if (!fieldDescriptor) return null;
671
+ return /* @__PURE__ */ jsxs(Field.Root, {
672
+ className,
673
+ "data-fs-shipping-address-field": "number",
674
+ disabled: submitting,
675
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: fieldDescriptor.label }), /* @__PURE__ */ jsx(Field.Control, {
676
+ value: draft.number,
677
+ onChange: (e) => setDraftField("number", e.currentTarget.value)
678
+ })]
679
+ });
680
+ }
681
+ /** CityControl */
682
+ function ShippingAddressCityControl({ className }) {
683
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
684
+ const fieldDescriptor = descriptor?.fields.find((f) => f.name === "city");
685
+ if (!fieldDescriptor) return null;
686
+ return /* @__PURE__ */ jsxs(Field.Root, {
687
+ className,
688
+ "data-fs-shipping-address-field": "city",
689
+ disabled: submitting,
690
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: fieldDescriptor.label }), /* @__PURE__ */ jsx(Field.Control, {
691
+ value: draft.city,
692
+ onChange: (e) => setDraftField("city", e.currentTarget.value)
693
+ })]
694
+ });
695
+ }
696
+ /** StateControl */
697
+ function ShippingAddressStateControl({ className }) {
698
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
699
+ const fieldDescriptor = descriptor?.fields.find((f) => f.name === "state");
700
+ if (!fieldDescriptor) return null;
701
+ return /* @__PURE__ */ jsxs(Field.Root, {
702
+ className,
703
+ "data-fs-shipping-address-field": "state",
704
+ disabled: submitting,
705
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: fieldDescriptor.label }), /* @__PURE__ */ jsx(Field.Control, {
706
+ value: draft.state,
707
+ onChange: (e) => setDraftField("state", e.currentTarget.value)
708
+ })]
709
+ });
710
+ }
711
+ /** PostalCodeControl */
712
+ function ShippingAddressPostalCodeControl({ className }) {
713
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
714
+ const fieldDescriptor = descriptor?.fields.find((f) => f.name === "postalCode");
715
+ if (!fieldDescriptor) return null;
716
+ return /* @__PURE__ */ jsxs(Field.Root, {
717
+ className,
718
+ "data-fs-shipping-address-field": "postal-code",
719
+ disabled: submitting,
720
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: fieldDescriptor.label }), /* @__PURE__ */ jsx(Field.Control, {
721
+ value: draft.postalCode,
722
+ onChange: (e) => setDraftField("postalCode", e.currentTarget.value)
723
+ })]
724
+ });
725
+ }
726
+ /** ComplementControl */
727
+ function ShippingAddressComplementControl({ className }) {
728
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
729
+ const fieldDescriptor = descriptor?.fields.find((f) => f.name === "complement");
730
+ if (!fieldDescriptor) return null;
731
+ return /* @__PURE__ */ jsxs(Field.Root, {
732
+ className,
733
+ "data-fs-shipping-address-field": "complement",
734
+ disabled: submitting,
735
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: fieldDescriptor.label }), /* @__PURE__ */ jsx(Field.Control, {
736
+ value: draft.complement,
737
+ onChange: (e) => setDraftField("complement", e.currentTarget.value)
738
+ })]
739
+ });
740
+ }
741
+ /** NeighborhoodControl (BR-specific in v1) */
742
+ function ShippingAddressNeighborhoodControl({ className }) {
743
+ const { draft, setDraftField, descriptor, submitting } = useShippingAddressContext();
744
+ const fieldDescriptor = descriptor?.fields.find((f) => f.name === "neighborhood");
745
+ if (!fieldDescriptor) return null;
746
+ return /* @__PURE__ */ jsxs(Field.Root, {
747
+ className,
748
+ "data-fs-shipping-address-field": "neighborhood",
749
+ disabled: submitting,
750
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: fieldDescriptor.label }), /* @__PURE__ */ jsx(Field.Control, {
751
+ value: draft.neighborhood,
752
+ onChange: (e) => setDraftField("neighborhood", e.currentTarget.value)
753
+ })]
754
+ });
755
+ }
756
+ /** CountryControl — lists only countries with a descriptor (US-2, first criterion) */
757
+ function ShippingAddressCountryControl({ className, label = "país" }) {
758
+ const { draft, setDraftField, setSelectedSavedId, submitting } = useShippingAddressContext();
759
+ const countryOptions = getAvailableCountries().map((iso) => {
760
+ return {
761
+ value: iso,
762
+ label: getCountryDescriptor(iso)?.label ?? iso
763
+ };
764
+ });
765
+ const handleCountryChange = (value) => {
766
+ if (!value) return;
767
+ if (getCountryDescriptor(value)) {
768
+ setDraftField("country", value);
769
+ setSelectedSavedId(void 0);
770
+ }
771
+ };
772
+ return /* @__PURE__ */ jsxs(Field.Root, {
773
+ className,
774
+ "data-fs-shipping-address-field": "country",
775
+ disabled: submitting,
776
+ children: [/* @__PURE__ */ jsx(Field.Label, { children: label }), /* @__PURE__ */ jsxs(Select.Root, {
777
+ value: draft.country,
778
+ onValueChange: handleCountryChange,
779
+ disabled: submitting,
780
+ children: [/* @__PURE__ */ jsxs(Select.Trigger, { children: [/* @__PURE__ */ jsx(Select.Value, { children: (value) => value ? getCountryDescriptor(value)?.label ?? value : value }), /* @__PURE__ */ jsx(Select.Icon, { children: "▾" })] }), /* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsx(Select.Positioner, { children: /* @__PURE__ */ jsx(Select.Popup, { children: /* @__PURE__ */ jsx(Select.List, { children: countryOptions.map((option) => /* @__PURE__ */ jsx(Select.Item, {
781
+ value: option.value,
782
+ label: option.label,
783
+ children: option.label
784
+ }, option.value)) }) }) }) })]
785
+ })]
786
+ });
787
+ }
788
+ /**
789
+ * ShippingAddressSavedList — renders only when savedAddresses is non-empty (logged-in signal).
790
+ */
791
+ function ShippingAddressSavedList({ className }) {
792
+ const { savedAddresses } = useShippingAddressContext();
793
+ if (savedAddresses.length === 0) return null;
794
+ return /* @__PURE__ */ jsx("div", {
795
+ className,
796
+ "data-fs-shipping-address-saved-list": "",
797
+ children: savedAddresses.map((saved) => /* @__PURE__ */ jsx(ShippingAddressSavedOption, { id: saved.id }, saved.id))
798
+ });
799
+ }
800
+ /**
801
+ * ShippingAddressSavedOption — selectable saved address; populates draft on selection.
802
+ * Includes isCurrent visual variant to mark the address matching the current cart address (Decision 8).
803
+ */
804
+ function ShippingAddressSavedOption({ id, className }) {
805
+ const { savedAddresses, selectedSavedId, setSelectedSavedId, currentAddressId } = useShippingAddressContext();
806
+ const saved = savedAddresses.find((s) => s.id === id);
807
+ if (!saved) return null;
808
+ const isSelected = selectedSavedId === id;
809
+ const isCurrent = currentAddressId !== void 0 && currentAddressId === id;
810
+ const hasAddressContent = Boolean(saved.address.recipientName || saved.address.street || saved.address.city || saved.address.neighborhood);
811
+ const inputId = `saved-address-${id}`;
812
+ return /* @__PURE__ */ jsxs("div", {
813
+ className,
814
+ "data-fs-shipping-address-saved-option": "",
815
+ ...isSelected ? { "data-fs-shipping-address-saved-option-selected": "" } : {},
816
+ ...isCurrent ? { "data-fs-shipping-address-saved-option-current": "" } : {},
817
+ children: [/* @__PURE__ */ jsx("input", {
818
+ id: inputId,
819
+ type: "radio",
820
+ name: "saved-address",
821
+ value: id,
822
+ checked: isSelected,
823
+ onChange: () => setSelectedSavedId(id)
824
+ }), /* @__PURE__ */ jsx("label", {
825
+ htmlFor: inputId,
826
+ children: hasAddressContent ? /* @__PURE__ */ jsx(AddressSummaryRoot, {
827
+ address: saved.address,
828
+ children: /* @__PURE__ */ jsx(AddressSummary, {})
829
+ }) : `Endereço ${id}`
830
+ })]
831
+ });
832
+ }
833
+ /**
834
+ * ShippingAddressSubmit — dispatches the batched submit; reflects pending state.
835
+ */
836
+ function ShippingAddressSubmit({ className, label = "salvar endereço", pendingLabel = "salvando..." }) {
837
+ const { submitting, handleSubmit, isFormValid } = useShippingAddressContext();
838
+ return /* @__PURE__ */ jsx("button", {
839
+ type: "button",
840
+ onClick: handleSubmit,
841
+ disabled: submitting || !isFormValid,
842
+ className,
843
+ "data-fs-shipping-address-submit": "",
844
+ ...submitting ? { "data-fs-shipping-address-submit-pending": "" } : {},
845
+ children: submitting ? pendingLabel : label
846
+ });
847
+ }
848
+ /**
849
+ * ShippingAddressSavedAddressDrawerController — makes the wrapped DrawerRoot controlled by the
850
+ * shipping-address context's savedAddressDrawerOpen state, and blocks dismissal (Escape, backdrop
851
+ * click, close button) while drawerSubmitting is true by simply not forwarding the close request
852
+ * to the setter. Mirrors CartOpenOnAdd's cloneElement mechanism. Expects a single DrawerRoot child.
853
+ */
854
+ function ShippingAddressSavedAddressDrawerController({ children }) {
855
+ const { savedAddressDrawerOpen, setSavedAddressDrawerOpen, drawerSubmitting } = useShippingAddressDrawerContext();
856
+ if (!isValidElement(children)) return children;
857
+ return cloneElement(children, {
858
+ open: savedAddressDrawerOpen,
859
+ onOpenChange: (next) => {
860
+ if (!next && drawerSubmitting) return;
861
+ setSavedAddressDrawerOpen(next);
862
+ }
863
+ });
864
+ }
865
+ /**
866
+ * ShippingAddressSavedAddressSubmit — the drawer's "selecionar" submit button; independent
867
+ * submitting state from the main form's Submit (Decision 7); no-ops when the selected saved
868
+ * address is already the current one (Decision 8).
869
+ */
870
+ function ShippingAddressSavedAddressSubmit({ className, label = "selecionar", pendingLabel = "selecionando..." }) {
871
+ const { selectedSavedId } = useShippingAddressContext();
872
+ const { drawerSubmitting, handleDrawerSubmit } = useShippingAddressDrawerContext();
873
+ return /* @__PURE__ */ jsx("button", {
874
+ type: "button",
875
+ onClick: handleDrawerSubmit,
876
+ disabled: drawerSubmitting || !selectedSavedId,
877
+ className,
878
+ "data-fs-shipping-address-saved-address-submit": "",
879
+ ...drawerSubmitting ? { "data-fs-shipping-address-saved-address-submit-pending": "" } : {},
880
+ children: drawerSubmitting ? pendingLabel : label
881
+ });
882
+ }
883
+ /**
884
+ * ShippingAddressSelectedSummary — provides the current delivery address via AddressSummaryRoot's
885
+ * context and renders it through AddressSummary. Composed lines go through that same wrapper rather
886
+ * than replacing it, because AddressSummaryRoot renders no DOM and `className` would have nowhere to
887
+ * land. Self-gating on currentAddress: renders null when there is none yet, rather than an empty
888
+ * provider with nothing meaningful to show.
889
+ */
890
+ function ShippingAddressSelectedSummary({ className, children }) {
891
+ const { currentAddress } = useShippingAddressContext();
892
+ if (!currentAddress) return null;
893
+ return /* @__PURE__ */ jsx(AddressSummaryRoot, {
894
+ address: currentAddress,
895
+ children: /* @__PURE__ */ jsx(AddressSummary, {
896
+ className,
897
+ children
898
+ })
899
+ });
900
+ }
901
+ /**
902
+ * ShippingAddressEditController — owns the view/edit mode. Defaults to 'view' when a current
903
+ * address exists, 'edit' otherwise (derived reactively from currentAddressId, so it self-corrects
904
+ * if the address arrives asynchronously after mount, same issue as the draft-sync effect above).
905
+ * Once the shopper explicitly toggles (via ShippingAddressEditButton) or a submit succeeds, the
906
+ * explicit mode takes over. Does not render any DOM itself; provides ShippingAddressSectionContext
907
+ * to ShippingAddressSummaryView/ShippingAddressEditForm/ShippingAddressEditButton descendants.
908
+ */
909
+ function ShippingAddressEditController({ children }) {
910
+ const { currentAddressId, submitSuccessSignal } = useShippingAddressContext();
911
+ const [explicitMode, setExplicitMode] = useState(void 0);
912
+ const lastHandledSignal = useRef(submitSuccessSignal);
913
+ useEffect(() => {
914
+ if (submitSuccessSignal !== lastHandledSignal.current) {
915
+ lastHandledSignal.current = submitSuccessSignal;
916
+ setExplicitMode("view");
917
+ }
918
+ }, [submitSuccessSignal]);
919
+ const mode = explicitMode ?? (currentAddressId !== void 0 ? "view" : "edit");
920
+ const modeContextValue = useMemo(() => ({
921
+ mode,
922
+ setMode: setExplicitMode
923
+ }), [mode]);
924
+ return /* @__PURE__ */ jsx(ShippingAddressSectionContext.Provider, {
925
+ value: modeContextValue,
926
+ children
927
+ });
928
+ }
929
+ /** Renders its children only while the section shows the saved-address summary. */
930
+ function ShippingAddressSummaryView({ children }) {
931
+ const { mode } = useShippingAddressSectionContext();
932
+ if (mode !== "view") return null;
933
+ return /* @__PURE__ */ jsx(Fragment, { children });
934
+ }
935
+ /** Renders its children only while the section shows the address form. */
936
+ function ShippingAddressEditForm({ children }) {
937
+ const { mode } = useShippingAddressSectionContext();
938
+ if (mode !== "edit") return null;
939
+ return /* @__PURE__ */ jsx(Fragment, { children });
940
+ }
941
+ /**
942
+ * ShippingAddressEditButton — CTA that switches the mode to 'edit'. Has no knowledge of why the
943
+ * mode might currently be 'view' (a current address, or a just-completed submit) — it only writes
944
+ * the mode forward.
945
+ */
946
+ function ShippingAddressEditButton({ className, label = "editar", children }) {
947
+ const { setMode } = useShippingAddressSectionContext();
948
+ return /* @__PURE__ */ jsx("button", {
949
+ type: "button",
950
+ onClick: () => setMode("edit"),
951
+ className,
952
+ "data-fs-shipping-address-edit-button": "",
953
+ children: children ?? label
954
+ });
955
+ }
956
+ /**
957
+ * ShippingAddressCancelButton — returns the section to its summary without writing. Without it a
958
+ * shopper who opens the form can only leave through a successful `setAddress`, and blanking the
959
+ * recipient disables Submit, which leaves the section stuck open over the summary it replaced.
960
+ */
961
+ function ShippingAddressCancelButton({ className, label = "cancelar", children }) {
962
+ const { setMode } = useShippingAddressSectionContext();
963
+ const { discardDraft } = useShippingAddressContext();
964
+ return /* @__PURE__ */ jsx("button", {
965
+ type: "button",
966
+ onClick: () => {
967
+ discardDraft();
968
+ setMode("view");
969
+ },
970
+ className,
971
+ "data-fs-shipping-address-cancel-button": "",
972
+ children: children ?? label
973
+ });
974
+ }
975
+ /**
976
+ * ShippingAddressError — renders domain userErrors inline, or generic upstream error state.
977
+ */
978
+ function ShippingAddressError({ className }) {
979
+ const { errors, upstreamError } = useShippingAddressContext();
980
+ if (errors.length === 0 && !upstreamError) return null;
981
+ return /* @__PURE__ */ jsx("div", {
982
+ className,
983
+ "data-fs-shipping-address-error": "",
984
+ children: upstreamError ? /* @__PURE__ */ jsx("div", { children: "Não foi possível salvar este endereço. Revise os dados e tente novamente." }) : /* @__PURE__ */ jsx("ul", { children: errors.map((error, idx) => /* @__PURE__ */ jsx("li", { children: error.message }, idx)) })
985
+ });
986
+ }
987
+ const ShippingAddress = {
988
+ Root: ShippingAddressRoot,
989
+ RootDefinition: ShippingAddressRootDefinition,
990
+ RecipientNameControl: ShippingAddressRecipientNameControl,
991
+ RecipientNameControlDefinition: ShippingAddressRecipientNameControlDefinition,
992
+ StreetControl: ShippingAddressStreetControl,
993
+ StreetControlDefinition: ShippingAddressStreetControlDefinition,
994
+ NumberControl: ShippingAddressNumberControl,
995
+ NumberControlDefinition: ShippingAddressNumberControlDefinition,
996
+ CityControl: ShippingAddressCityControl,
997
+ CityControlDefinition: ShippingAddressCityControlDefinition,
998
+ StateControl: ShippingAddressStateControl,
999
+ StateControlDefinition: ShippingAddressStateControlDefinition,
1000
+ PostalCodeControl: ShippingAddressPostalCodeControl,
1001
+ PostalCodeControlDefinition: ShippingAddressPostalCodeControlDefinition,
1002
+ ComplementControl: ShippingAddressComplementControl,
1003
+ ComplementControlDefinition: ShippingAddressComplementControlDefinition,
1004
+ NeighborhoodControl: ShippingAddressNeighborhoodControl,
1005
+ NeighborhoodControlDefinition: ShippingAddressNeighborhoodControlDefinition,
1006
+ CountryControl: ShippingAddressCountryControl,
1007
+ CountryControlDefinition: ShippingAddressCountryControlDefinition,
1008
+ SavedList: ShippingAddressSavedList,
1009
+ SavedListDefinition: ShippingAddressSavedListDefinition,
1010
+ SavedOption: ShippingAddressSavedOption,
1011
+ SavedOptionDefinition: ShippingAddressSavedOptionDefinition,
1012
+ Submit: ShippingAddressSubmit,
1013
+ SubmitDefinition: ShippingAddressSubmitDefinition,
1014
+ SavedAddressDrawerController: ShippingAddressSavedAddressDrawerController,
1015
+ SavedAddressDrawerControllerDefinition: ShippingAddressSavedAddressDrawerControllerDefinition,
1016
+ SavedAddressSubmit: ShippingAddressSavedAddressSubmit,
1017
+ SavedAddressSubmitDefinition: ShippingAddressSavedAddressSubmitDefinition,
1018
+ SelectedSummary: ShippingAddressSelectedSummary,
1019
+ SelectedSummaryDefinition: ShippingAddressSelectedSummaryDefinition,
1020
+ EditController: ShippingAddressEditController,
1021
+ EditControllerDefinition: ShippingAddressEditControllerDefinition,
1022
+ SummaryView: ShippingAddressSummaryView,
1023
+ SummaryViewDefinition: ShippingAddressSummaryViewDefinition,
1024
+ EditForm: ShippingAddressEditForm,
1025
+ EditFormDefinition: ShippingAddressEditFormDefinition,
1026
+ EditButton: ShippingAddressEditButton,
1027
+ EditButtonDefinition: ShippingAddressEditButtonDefinition,
1028
+ CancelButton: ShippingAddressCancelButton,
1029
+ CancelButtonDefinition: ShippingAddressCancelButtonDefinition,
1030
+ Error: ShippingAddressError,
1031
+ ErrorDefinition: ShippingAddressErrorDefinition
1032
+ };
1033
+ //#endregion
1034
+ export { ShippingAddress, ShippingAddressCancelButton, ShippingAddressCancelButtonDefinition, ShippingAddressCityControl, ShippingAddressCityControlDefinition, ShippingAddressComplementControl, ShippingAddressComplementControlDefinition, ShippingAddressCountryControl, ShippingAddressCountryControlDefinition, ShippingAddressEditButton, ShippingAddressEditButtonDefinition, ShippingAddressEditController, ShippingAddressEditControllerDefinition, ShippingAddressEditForm, ShippingAddressEditFormDefinition, ShippingAddressError, ShippingAddressErrorDefinition, ShippingAddressNeighborhoodControl, ShippingAddressNeighborhoodControlDefinition, ShippingAddressNumberControl, ShippingAddressNumberControlDefinition, ShippingAddressPostalCodeControl, ShippingAddressPostalCodeControlDefinition, ShippingAddressRecipientNameControl, ShippingAddressRecipientNameControlDefinition, ShippingAddressRoot, ShippingAddressRootDefinition, ShippingAddressSavedAddressDrawerController, ShippingAddressSavedAddressDrawerControllerDefinition, ShippingAddressSavedAddressSubmit, ShippingAddressSavedAddressSubmitDefinition, ShippingAddressSavedList, ShippingAddressSavedListDefinition, ShippingAddressSavedOption, ShippingAddressSavedOptionDefinition, ShippingAddressSelectedSummary, ShippingAddressSelectedSummaryDefinition, ShippingAddressStateControl, ShippingAddressStateControlDefinition, ShippingAddressStreetControl, ShippingAddressStreetControlDefinition, ShippingAddressSubmit, ShippingAddressSubmitDefinition, ShippingAddressSummaryView, ShippingAddressSummaryViewDefinition };
1035
+
1036
+ //# sourceMappingURL=shipping-address.js.map