@vtex/faststore 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +0 -1
  3. package/dist/_virtual/_rolldown/runtime.js +4 -0
  4. package/dist/actions.json +6 -1
  5. package/dist/catalog.json +789 -1701
  6. package/dist/cli/index.d.ts +66 -28
  7. package/dist/cli/index.js +7371 -512
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/cli/server-runtime.js +41 -60
  10. package/dist/cli/server-runtime.js.map +1 -1
  11. package/dist/client.d.ts +3 -3
  12. package/dist/client.js +2 -2
  13. package/dist/components.d.ts +63 -57
  14. package/dist/components.js +60 -54
  15. package/dist/content-types.json +5785 -754
  16. package/dist/core/dist/define-component.d.ts +1 -1
  17. package/dist/core/dist/define-content-type.d.ts +50 -2
  18. package/dist/core/dist/define-content-type.js +107 -3
  19. package/dist/core/dist/define-content-type.js.map +1 -1
  20. package/dist/core/dist/index.d.ts +2 -2
  21. package/dist/docs/access-code-field.md +1 -1
  22. package/dist/docs/access-code-sign-in.md +126 -77
  23. package/dist/docs/account-address-book.md +210 -95
  24. package/dist/docs/account-menu.md +14 -15
  25. package/dist/docs/account-saved-cards.md +44 -39
  26. package/dist/docs/alert-dialog.md +3 -1
  27. package/dist/docs/avatar.md +4 -2
  28. package/dist/docs/billing-address.md +99 -30
  29. package/dist/docs/binding-switcher.md +5 -2
  30. package/dist/docs/buy-button.md +7 -8
  31. package/dist/docs/card-entry.md +39 -26
  32. package/dist/docs/card-summary.md +18 -8
  33. package/dist/docs/cardholder-document.md +5 -3
  34. package/dist/docs/carousel.md +5 -4
  35. package/dist/docs/cart-destination.md +39 -26
  36. package/dist/docs/cart-item.md +29 -14
  37. package/dist/docs/cart-totalizer.md +7 -5
  38. package/dist/docs/cart.md +135 -41
  39. package/dist/docs/challenge-return.md +135 -0
  40. package/dist/docs/client-preferences-fieldset.md +10 -5
  41. package/dist/docs/client-preferences.md +31 -8
  42. package/dist/docs/client-profile-fieldset.md +20 -6
  43. package/dist/docs/client-profile.md +12 -3
  44. package/dist/docs/copy-text.md +9 -7
  45. package/dist/docs/document-field.md +1 -1
  46. package/dist/docs/email-field.md +2 -1
  47. package/dist/docs/email-identification.md +12 -2
  48. package/dist/docs/footer-copyright.md +4 -2
  49. package/dist/docs/form.md +54 -18
  50. package/dist/docs/free-shipping-progress.md +6 -5
  51. package/dist/docs/identity-edit.md +8 -2
  52. package/dist/docs/identity-summary.md +18 -5
  53. package/dist/docs/installments.md +46 -32
  54. package/dist/docs/my-account-profile.md +16 -11
  55. package/dist/docs/navigation-link.md +5 -3
  56. package/dist/docs/order-cancel.md +3 -1
  57. package/dist/docs/order-delivery-address.md +7 -5
  58. package/dist/docs/order-delivery-group.md +1 -3
  59. package/dist/docs/order-details-back.md +1 -1
  60. package/dist/docs/order-details-header.md +1 -4
  61. package/dist/docs/order-invoice-download.md +60 -0
  62. package/dist/docs/order-list-row.md +1 -1
  63. package/dist/docs/order-list-search.md +13 -20
  64. package/dist/docs/order-list-views.md +11 -17
  65. package/dist/docs/order-list.md +12 -5
  66. package/dist/docs/order-payment.md +9 -7
  67. package/dist/docs/order-placed-date.md +1 -1
  68. package/dist/docs/order-placed-payment-summary.md +28 -15
  69. package/dist/docs/order-placed.md +49 -14
  70. package/dist/docs/order-progress.md +1 -1
  71. package/dist/docs/order-status-badge.md +20 -9
  72. package/dist/docs/order-summary.md +2 -2
  73. package/dist/docs/order-tracking-link.md +58 -0
  74. package/dist/docs/payment-method-badges.md +30 -4
  75. package/dist/docs/payment-methods.md +1 -1
  76. package/dist/docs/payment.md +36 -17
  77. package/dist/docs/phone-field.md +4 -4
  78. package/dist/docs/place-order.md +84 -36
  79. package/dist/docs/postal-code-field.md +3 -1
  80. package/dist/docs/pricing.md +21 -23
  81. package/dist/docs/product-gallery.md +19 -20
  82. package/dist/docs/product-information.md +13 -9
  83. package/dist/docs/product-list.md +7 -6
  84. package/dist/docs/product-shelf.md +0 -1
  85. package/dist/docs/promotion.md +4 -2
  86. package/dist/docs/region.md +23 -15
  87. package/dist/docs/save-card.md +7 -6
  88. package/dist/docs/saved-cards.md +65 -36
  89. package/dist/docs/shipping-address.md +57 -21
  90. package/dist/docs/shipping-simulator.md +53 -15
  91. package/dist/docs/sign-in-disclosure.md +176 -0
  92. package/dist/docs/sign-in-form.md +78 -47
  93. package/dist/docs/sign-in-redirect.md +4 -2
  94. package/dist/docs/sign-in.md +173 -0
  95. package/dist/docs/toast.md +15 -4
  96. package/dist/docs/variant-selector.md +15 -11
  97. package/dist/domain-logic/dist/checkout/rules.js +33 -0
  98. package/dist/domain-logic/dist/checkout/rules.js.map +1 -0
  99. package/dist/graphql/types.d.ts +4 -14
  100. package/dist/index.d.ts +2 -2
  101. package/dist/internal/client.d.ts +1 -3
  102. package/dist/internal/client.js +1 -1
  103. package/dist/internal/server.d.ts +7 -4
  104. package/dist/internal/server.js +7 -4
  105. package/dist/matter/access-code-sign-in/access-code-sign-in.d.ts +250 -66
  106. package/dist/matter/access-code-sign-in/access-code-sign-in.js +459 -188
  107. package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -1
  108. package/dist/matter/account-address-book/account-address-book-delete.d.ts +78 -40
  109. package/dist/matter/account-address-book/account-address-book-delete.js +86 -50
  110. package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -1
  111. package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +21 -4
  112. package/dist/matter/account-address-book/account-address-book-deliverability.js +45 -17
  113. package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -1
  114. package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +74 -19
  115. package/dist/matter/account-address-book/account-address-book-form-parts.js +77 -26
  116. package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -1
  117. package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +27 -6
  118. package/dist/matter/account-address-book/account-address-book-profile-notice.js +55 -28
  119. package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -1
  120. package/dist/matter/account-address-book/account-address-book.d.ts +67 -14
  121. package/dist/matter/account-address-book/account-address-book.js +74 -33
  122. package/dist/matter/account-address-book/account-address-book.js.map +1 -1
  123. package/dist/matter/account-address-book/account-address-country-switch.js +3 -3
  124. package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -1
  125. package/dist/matter/account-address-book/account-address-country.d.ts +66 -20
  126. package/dist/matter/account-address-book/account-address-country.js +83 -49
  127. package/dist/matter/account-address-book/account-address-country.js.map +1 -1
  128. package/dist/matter/account-address-book/account-address-form-context.d.ts +8 -4
  129. package/dist/matter/account-address-book/account-address-form-context.js.map +1 -1
  130. package/dist/matter/account-address-book/account-address-form.d.ts +468 -45
  131. package/dist/matter/account-address-book/account-address-form.js +518 -155
  132. package/dist/matter/account-address-book/account-address-form.js.map +1 -1
  133. package/dist/matter/account-address-book/account-address-record.d.ts +27 -6
  134. package/dist/matter/account-address-book/account-address-record.js +32 -17
  135. package/dist/matter/account-address-book/account-address-record.js.map +1 -1
  136. package/dist/matter/account-menu/account-menu.d.ts +34 -17
  137. package/dist/matter/account-menu/account-menu.js +46 -54
  138. package/dist/matter/account-menu/account-menu.js.map +1 -1
  139. package/dist/matter/account-menu-identity/account-menu-identity.js +1 -1
  140. package/dist/matter/account-saved-cards/account-saved-cards.d.ts +108 -28
  141. package/dist/matter/account-saved-cards/account-saved-cards.js +177 -122
  142. package/dist/matter/account-saved-cards/account-saved-cards.js.map +1 -1
  143. package/dist/matter/billing-address/billing-address.d.ts +156 -74
  144. package/dist/matter/billing-address/billing-address.js +227 -156
  145. package/dist/matter/billing-address/billing-address.js.map +1 -1
  146. package/dist/matter/breadcrumb/breadcrumb.d.ts +21 -3
  147. package/dist/matter/breadcrumb/breadcrumb.js +24 -9
  148. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
  149. package/dist/matter/buy-button/buy-button.d.ts +8 -11
  150. package/dist/matter/buy-button/buy-button.js +10 -19
  151. package/dist/matter/buy-button/buy-button.js.map +1 -1
  152. package/dist/matter/card-entry/card-capture.js +12 -4
  153. package/dist/matter/card-entry/card-capture.js.map +1 -1
  154. package/dist/matter/card-entry/card-entry.d.ts +123 -32
  155. package/dist/matter/card-entry/card-entry.js +348 -221
  156. package/dist/matter/card-entry/card-entry.js.map +1 -1
  157. package/dist/matter/cart/cart-namespace.d.ts +7 -1
  158. package/dist/matter/cart/cart-namespace.js +7 -1
  159. package/dist/matter/cart/cart-namespace.js.map +1 -1
  160. package/dist/matter/cart/cart.d.ts +402 -61
  161. package/dist/matter/cart/cart.js +624 -153
  162. package/dist/matter/cart/cart.js.map +1 -1
  163. package/dist/matter/cart-destination/cart-destination.d.ts +30 -19
  164. package/dist/matter/cart-destination/cart-destination.js +160 -70
  165. package/dist/matter/cart-destination/cart-destination.js.map +1 -1
  166. package/dist/matter/cart-item/cart-item.d.ts +144 -17
  167. package/dist/matter/cart-item/cart-item.js +166 -49
  168. package/dist/matter/cart-item/cart-item.js.map +1 -1
  169. package/dist/matter/cart-item-compositions/cart-item-compositions.js +1 -1
  170. package/dist/matter/cart-item-compositions/cart-item-compositions.js.map +1 -1
  171. package/dist/matter/cart-item-customizations/cart-item-customizations.js +1 -1
  172. package/dist/matter/cart-item-customizations/cart-item-customizations.js.map +1 -1
  173. package/dist/matter/cart-item-discounts/cart-item-discounts.js +1 -1
  174. package/dist/matter/cart-item-discounts/cart-item-discounts.js.map +1 -1
  175. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js +1 -1
  176. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js.map +1 -1
  177. package/dist/matter/cart-item-variations/cart-item-variations.js +1 -1
  178. package/dist/matter/cart-item-variations/cart-item-variations.js.map +1 -1
  179. package/dist/matter/cart-totalizer/cart-totalizer.d.ts +43 -9
  180. package/dist/matter/cart-totalizer/cart-totalizer.js +46 -17
  181. package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -1
  182. package/dist/matter/challenge-return/challenge-return.d.ts +62 -0
  183. package/dist/matter/challenge-return/challenge-return.js +241 -0
  184. package/dist/matter/challenge-return/challenge-return.js.map +1 -0
  185. package/dist/matter/client-preferences/client-preferences-fieldset.d.ts +86 -17
  186. package/dist/matter/client-preferences/client-preferences-fieldset.js +126 -54
  187. package/dist/matter/client-preferences/client-preferences-fieldset.js.map +1 -1
  188. package/dist/matter/client-preferences/client-preferences.d.ts +50 -7
  189. package/dist/matter/client-preferences/client-preferences.js +84 -15
  190. package/dist/matter/client-preferences/client-preferences.js.map +1 -1
  191. package/dist/matter/client-profile/client-profile.d.ts +44 -9
  192. package/dist/matter/client-profile/client-profile.js +64 -24
  193. package/dist/matter/client-profile/client-profile.js.map +1 -1
  194. package/dist/matter/client-profile-form/client-profile-fieldset.d.ts +119 -22
  195. package/dist/matter/client-profile-form/client-profile-fieldset.js +161 -73
  196. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
  197. package/dist/matter/delivery-options/delivery-options-accordion.d.ts +49 -4
  198. package/dist/matter/delivery-options/delivery-options-accordion.js +67 -14
  199. package/dist/matter/delivery-options/delivery-options-accordion.js.map +1 -1
  200. package/dist/matter/delivery-options/delivery-options-controller.d.ts +69 -9
  201. package/dist/matter/delivery-options/delivery-options-controller.js +80 -14
  202. package/dist/matter/delivery-options/delivery-options-controller.js.map +1 -1
  203. package/dist/matter/delivery-options/delivery-options.d.ts +37 -2
  204. package/dist/matter/delivery-options/delivery-options.js +75 -12
  205. package/dist/matter/delivery-options/delivery-options.js.map +1 -1
  206. package/dist/matter/delivery-options/use-delivery-option-selection.d.ts +1 -0
  207. package/dist/matter/delivery-options/use-delivery-option-selection.js +1 -1
  208. package/dist/matter/delivery-options/use-delivery-option-selection.js.map +1 -1
  209. package/dist/matter/email-identification/email-identification.d.ts +25 -3
  210. package/dist/matter/email-identification/email-identification.js +49 -12
  211. package/dist/matter/email-identification/email-identification.js.map +1 -1
  212. package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +79 -7
  213. package/dist/matter/free-shipping-progress/free-shipping-progress.js +77 -20
  214. package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -1
  215. package/dist/matter/identity-edit/identity-edit.d.ts +52 -10
  216. package/dist/matter/identity-edit/identity-edit.js +47 -19
  217. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  218. package/dist/matter/identity-summary/identity-summary.d.ts +76 -22
  219. package/dist/matter/identity-summary/identity-summary.js +95 -45
  220. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  221. package/dist/matter/installments/installments-select.d.ts +98 -16
  222. package/dist/matter/installments/installments-select.js +156 -48
  223. package/dist/matter/installments/installments-select.js.map +1 -1
  224. package/dist/matter/installments/installments.d.ts +96 -16
  225. package/dist/matter/installments/installments.js +115 -40
  226. package/dist/matter/installments/installments.js.map +1 -1
  227. package/dist/matter/installments/use-installments-selection.d.ts +1 -0
  228. package/dist/matter/installments/use-installments-selection.js +8 -3
  229. package/dist/matter/installments/use-installments-selection.js.map +1 -1
  230. package/dist/matter/my-account-profile/my-account-profile.d.ts +358 -103
  231. package/dist/matter/my-account-profile/my-account-profile.js +370 -174
  232. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  233. package/dist/matter/order-cancel/order-cancel.d.ts +65 -19
  234. package/dist/matter/order-cancel/order-cancel.js +118 -51
  235. package/dist/matter/order-cancel/order-cancel.js.map +1 -1
  236. package/dist/matter/order-delivery-address/order-delivery-address.d.ts +8 -18
  237. package/dist/matter/order-delivery-address/order-delivery-address.js +14 -23
  238. package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -1
  239. package/dist/matter/order-delivery-group/order-delivery-group.d.ts +40 -24
  240. package/dist/matter/order-delivery-group/order-delivery-group.js +64 -74
  241. package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -1
  242. package/dist/matter/order-details-header/order-details-header.d.ts +32 -15
  243. package/dist/matter/order-details-header/order-details-header.js +66 -58
  244. package/dist/matter/order-details-header/order-details-header.js.map +1 -1
  245. package/dist/matter/order-invoice-download/order-invoice-download.d.ts +78 -0
  246. package/dist/matter/order-invoice-download/order-invoice-download.js +173 -0
  247. package/dist/matter/order-invoice-download/order-invoice-download.js.map +1 -0
  248. package/dist/matter/order-list/order-list.d.ts +164 -19
  249. package/dist/matter/order-list/order-list.js +229 -87
  250. package/dist/matter/order-list/order-list.js.map +1 -1
  251. package/dist/matter/order-list-row/order-list-row.d.ts +6 -1
  252. package/dist/matter/order-list-row/order-list-row.js +3 -2
  253. package/dist/matter/order-list-row/order-list-row.js.map +1 -1
  254. package/dist/matter/order-list-search/order-list-search.d.ts +18 -26
  255. package/dist/matter/order-list-search/order-list-search.js +30 -69
  256. package/dist/matter/order-list-search/order-list-search.js.map +1 -1
  257. package/dist/matter/order-list-views/order-list-views.d.ts +15 -22
  258. package/dist/matter/order-list-views/order-list-views.js +22 -68
  259. package/dist/matter/order-list-views/order-list-views.js.map +1 -1
  260. package/dist/matter/order-payment/order-payment.d.ts +33 -10
  261. package/dist/matter/order-payment/order-payment.js +44 -39
  262. package/dist/matter/order-payment/order-payment.js.map +1 -1
  263. package/dist/matter/order-placed/order-placed-deliveries.d.ts +144 -12
  264. package/dist/matter/order-placed/order-placed-deliveries.js +115 -40
  265. package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -1
  266. package/dist/matter/order-placed/order-placed.d.ts +198 -31
  267. package/dist/matter/order-placed/order-placed.js +230 -139
  268. package/dist/matter/order-placed/order-placed.js.map +1 -1
  269. package/dist/matter/order-placed-date/order-placed-date.d.ts +5 -8
  270. package/dist/matter/order-placed-date/order-placed-date.js +7 -8
  271. package/dist/matter/order-placed-date/order-placed-date.js.map +1 -1
  272. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +90 -17
  273. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +93 -117
  274. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
  275. package/dist/matter/order-progress/order-progress.d.ts +19 -8
  276. package/dist/matter/order-progress/order-progress.js +37 -45
  277. package/dist/matter/order-progress/order-progress.js.map +1 -1
  278. package/dist/matter/order-summary/order-summary.d.ts +19 -9
  279. package/dist/matter/order-summary/order-summary.js +38 -44
  280. package/dist/matter/order-summary/order-summary.js.map +1 -1
  281. package/dist/matter/order-tracking-link/order-tracking-link.d.ts +43 -0
  282. package/dist/matter/order-tracking-link/order-tracking-link.js +107 -0
  283. package/dist/matter/order-tracking-link/order-tracking-link.js.map +1 -0
  284. package/dist/matter/payment/payment-card-capture.js +17 -10
  285. package/dist/matter/payment/payment-card-capture.js.map +1 -1
  286. package/dist/matter/payment/payment-controller.d.ts +4 -2
  287. package/dist/matter/payment/payment-controller.js +30 -9
  288. package/dist/matter/payment/payment-controller.js.map +1 -1
  289. package/dist/matter/payment/payment-method-badges.js +1 -1
  290. package/dist/matter/payment/payment.d.ts +69 -19
  291. package/dist/matter/payment/payment.js +101 -35
  292. package/dist/matter/payment/payment.js.map +1 -1
  293. package/dist/matter/payment/use-payment-method-selection.d.ts +25 -4
  294. package/dist/matter/payment/use-payment-method-selection.js +94 -32
  295. package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
  296. package/dist/matter/payment/use-payment-submit-gate.d.ts +14 -3
  297. package/dist/matter/payment/use-payment-submit-gate.js +47 -8
  298. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
  299. package/dist/matter/place-order/place-order.d.ts +171 -57
  300. package/dist/matter/place-order/place-order.js +376 -185
  301. package/dist/matter/place-order/place-order.js.map +1 -1
  302. package/dist/matter/pricing/pricing.d.ts +152 -13
  303. package/dist/matter/pricing/pricing.js +153 -52
  304. package/dist/matter/pricing/pricing.js.map +1 -1
  305. package/dist/matter/product-information/product-information.d.ts +27 -4
  306. package/dist/matter/product-information/product-information.js +32 -15
  307. package/dist/matter/product-information/product-information.js.map +1 -1
  308. package/dist/matter/product-list/product-list.d.ts +24 -6
  309. package/dist/matter/product-list/product-list.js +32 -26
  310. package/dist/matter/product-list/product-list.js.map +1 -1
  311. package/dist/matter/product-shelf/product-shelf.d.ts +1 -3
  312. package/dist/matter/product-shelf/product-shelf.js +2 -15
  313. package/dist/matter/product-shelf/product-shelf.js.map +1 -1
  314. package/dist/matter/region/region.d.ts +33 -16
  315. package/dist/matter/region/region.js +59 -52
  316. package/dist/matter/region/region.js.map +1 -1
  317. package/dist/matter/save-card/save-card.d.ts +43 -8
  318. package/dist/matter/save-card/save-card.js +61 -23
  319. package/dist/matter/save-card/save-card.js.map +1 -1
  320. package/dist/matter/saved-cards/saved-cards.d.ts +113 -21
  321. package/dist/matter/saved-cards/saved-cards.js +349 -77
  322. package/dist/matter/saved-cards/saved-cards.js.map +1 -1
  323. package/dist/matter/shipping-address/address-payload.js +25 -0
  324. package/dist/matter/shipping-address/address-payload.js.map +1 -0
  325. package/dist/matter/shipping-address/country-descriptors.js +71 -71
  326. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  327. package/dist/matter/shipping-address/library-country-descriptors.js +136 -0
  328. package/dist/matter/shipping-address/library-country-descriptors.js.map +1 -0
  329. package/dist/matter/shipping-address/shipping-address.d.ts +312 -45
  330. package/dist/matter/shipping-address/shipping-address.js +443 -188
  331. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  332. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +250 -24
  333. package/dist/matter/shipping-simulator/shipping-simulator.js +257 -51
  334. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
  335. package/dist/matter/sign-in/sign-in.d.ts +108 -0
  336. package/dist/matter/sign-in/sign-in.js +285 -0
  337. package/dist/matter/sign-in/sign-in.js.map +1 -0
  338. package/dist/matter/sign-in-disclosure/sign-in-disclosure.d.ts +81 -0
  339. package/dist/matter/sign-in-disclosure/sign-in-disclosure.js +232 -0
  340. package/dist/matter/sign-in-disclosure/sign-in-disclosure.js.map +1 -0
  341. package/dist/matter/sign-in-form/sign-in-form.d.ts +93 -62
  342. package/dist/matter/sign-in-form/sign-in-form.js +134 -144
  343. package/dist/matter/sign-in-form/sign-in-form.js.map +1 -1
  344. package/dist/particles/binding-switcher/binding-switcher.d.ts +29 -8
  345. package/dist/particles/binding-switcher/binding-switcher.js +37 -26
  346. package/dist/particles/binding-switcher/binding-switcher.js.map +1 -1
  347. package/dist/particles/card-summary/card-summary.d.ts +38 -8
  348. package/dist/particles/card-summary/card-summary.js +55 -22
  349. package/dist/particles/card-summary/card-summary.js.map +1 -1
  350. package/dist/particles/carousel/carousel.d.ts +99 -11
  351. package/dist/particles/carousel/carousel.js +103 -35
  352. package/dist/particles/carousel/carousel.js.map +1 -1
  353. package/dist/particles/copy-text/copy-text.js +5 -15
  354. package/dist/particles/copy-text/copy-text.js.map +1 -1
  355. package/dist/particles/dialog/dialog.d.ts +14 -6
  356. package/dist/particles/dialog/dialog.js +6 -3
  357. package/dist/particles/dialog/dialog.js.map +1 -1
  358. package/dist/particles/drawer/drawer.js +1 -1
  359. package/dist/particles/drawer/drawer.js.map +1 -1
  360. package/dist/particles/email-field/email-field.d.ts +2 -1
  361. package/dist/particles/email-field/email-field.js +2 -1
  362. package/dist/particles/email-field/email-field.js.map +1 -1
  363. package/dist/particles/footer-link-group/footer-link-group.js +1 -0
  364. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
  365. package/dist/particles/form/form.d.ts +85 -13
  366. package/dist/particles/form/form.js +91 -42
  367. package/dist/particles/form/form.js.map +1 -1
  368. package/dist/particles/gallery/gallery.d.ts +129 -12
  369. package/dist/particles/gallery/gallery.js +121 -34
  370. package/dist/particles/gallery/gallery.js.map +1 -1
  371. package/dist/particles/order-details-back/order-details-back.d.ts +5 -3
  372. package/dist/particles/order-details-back/order-details-back.js +8 -10
  373. package/dist/particles/order-details-back/order-details-back.js.map +1 -1
  374. package/dist/particles/order-status-badge/order-status-badge.d.ts +3 -3
  375. package/dist/particles/order-status-badge/order-status-badge.js +4 -20
  376. package/dist/particles/order-status-badge/order-status-badge.js.map +1 -1
  377. package/dist/particles/password-field/password-field.d.ts +1 -1
  378. package/dist/particles/password-field/password-field.js +2 -4
  379. package/dist/particles/password-field/password-field.js.map +1 -1
  380. package/dist/particles/phone-field/phone-field.d.ts +4 -4
  381. package/dist/particles/phone-field/phone-field.js +8 -11
  382. package/dist/particles/phone-field/phone-field.js.map +1 -1
  383. package/dist/particles/spinner/spinner.d.ts +24 -4
  384. package/dist/particles/spinner/spinner.js +25 -9
  385. package/dist/particles/spinner/spinner.js.map +1 -1
  386. package/dist/particles/switch/switch.d.ts +4 -1
  387. package/dist/particles/switch/switch.js +3 -1
  388. package/dist/particles/switch/switch.js.map +1 -1
  389. package/dist/particles/toast/toast.d.ts +29 -3
  390. package/dist/particles/toast/toast.js +34 -10
  391. package/dist/particles/toast/toast.js.map +1 -1
  392. package/dist/schema.graphql +164 -56
  393. package/dist/sdk/address/address-fields.js +4 -4
  394. package/dist/sdk/address/address-fields.js.map +1 -1
  395. package/dist/sdk/address/constants.js +1 -6
  396. package/dist/sdk/address/constants.js.map +1 -1
  397. package/dist/sdk/address/messages.js +44 -44
  398. package/dist/sdk/address/messages.js.map +1 -1
  399. package/dist/sdk/address/postal-code.js +15 -2
  400. package/dist/sdk/address/postal-code.js.map +1 -1
  401. package/dist/sdk/address/types.d.ts +5 -3
  402. package/dist/sdk/address/validate-address.js +3 -3
  403. package/dist/sdk/address/validate-address.js.map +1 -1
  404. package/dist/sdk/analytics/use-analytics-actions.d.ts +1 -1
  405. package/dist/sdk/analytics/use-analytics-actions.js.map +1 -1
  406. package/dist/sdk/cart/use-cart-actions.js.map +1 -1
  407. package/dist/sdk/data/index.js +2 -2
  408. package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
  409. package/dist/sdk/generated/gql.js +1 -1
  410. package/dist/sdk/generated/gql.js.map +1 -1
  411. package/dist/sdk/generated/graphql.d.ts +20 -5
  412. package/dist/sdk/generated/graphql.js +6 -0
  413. package/dist/sdk/generated/graphql.js.map +1 -1
  414. package/dist/sdk/i18n/format-error-code.js +23 -0
  415. package/dist/sdk/i18n/format-error-code.js.map +1 -0
  416. package/dist/sdk/i18n/message-formatter.d.ts +22 -0
  417. package/dist/sdk/i18n/message-formatter.js +140 -0
  418. package/dist/sdk/i18n/message-formatter.js.map +1 -0
  419. package/dist/sdk/i18n/use-message-formatter.d.ts +8 -0
  420. package/dist/sdk/i18n/use-message-formatter.js +18 -0
  421. package/dist/sdk/i18n/use-message-formatter.js.map +1 -0
  422. package/dist/sdk/identity/use-identity-actions.js.map +1 -1
  423. package/dist/sdk/navigation/redirect.d.ts +2 -0
  424. package/dist/sdk/navigation/redirect.js +19 -1
  425. package/dist/sdk/navigation/redirect.js.map +1 -1
  426. package/dist/sdk/navigation/types.d.ts +13 -0
  427. package/dist/sdk/payment/bin-format.js +21 -0
  428. package/dist/sdk/payment/bin-format.js.map +1 -0
  429. package/dist/sdk/payment/challenge-return.js +37 -0
  430. package/dist/sdk/payment/challenge-return.js.map +1 -0
  431. package/dist/sdk/payment/confirmation-last-four.js +39 -0
  432. package/dist/sdk/payment/confirmation-last-four.js.map +1 -0
  433. package/dist/sdk/payment/gateway.d.ts +1 -1
  434. package/dist/sdk/payment/gateway.js +8 -2
  435. package/dist/sdk/payment/gateway.js.map +1 -1
  436. package/dist/sdk/payment/operations.d.ts +1 -0
  437. package/dist/sdk/payment/operations.js +28 -6
  438. package/dist/sdk/payment/operations.js.map +1 -1
  439. package/dist/sdk/payment/resumed-purchase.d.ts +1 -0
  440. package/dist/sdk/payment/resumed-purchase.js +119 -0
  441. package/dist/sdk/payment/resumed-purchase.js.map +1 -0
  442. package/dist/sdk/payment/security-code-mask.js +16 -23
  443. package/dist/sdk/payment/security-code-mask.js.map +1 -1
  444. package/dist/sdk/payment/submission-registry.js +6 -2
  445. package/dist/sdk/payment/submission-registry.js.map +1 -1
  446. package/dist/sdk/payment/use-payment-actions.d.ts +18 -3
  447. package/dist/sdk/payment/use-payment-actions.js +23 -4
  448. package/dist/sdk/payment/use-payment-actions.js.map +1 -1
  449. package/dist/sdk/payment/use-place-order.d.ts +10 -2
  450. package/dist/sdk/payment/use-place-order.js +138 -76
  451. package/dist/sdk/payment/use-place-order.js.map +1 -1
  452. package/dist/sdk/provider/storefront-provider.d.ts +1 -7
  453. package/dist/sdk/provider/storefront-provider.js +4 -11
  454. package/dist/sdk/provider/storefront-provider.js.map +1 -1
  455. package/dist/sdk/seo/entity-landing.d.ts +24 -0
  456. package/dist/sdk/seo/entity-landing.js +30 -0
  457. package/dist/sdk/seo/entity-landing.js.map +1 -0
  458. package/dist/sdk/seo/page-alternates.d.ts +3 -2
  459. package/dist/sdk/seo/page-alternates.js +4 -2
  460. package/dist/sdk/seo/page-alternates.js.map +1 -1
  461. package/dist/sdk/seo/search-landing.d.ts +42 -0
  462. package/dist/sdk/seo/search-landing.js +85 -0
  463. package/dist/sdk/seo/search-landing.js.map +1 -0
  464. package/dist/sdk/session/mock-session.d.ts +9 -0
  465. package/dist/sdk/session/mock-session.js +31 -0
  466. package/dist/sdk/session/mock-session.js.map +1 -0
  467. package/dist/sdk/session/read-server-session.d.ts +3 -0
  468. package/dist/sdk/session/read-server-session.js +5 -0
  469. package/dist/sdk/session/read-server-session.js.map +1 -1
  470. package/dist/sdk/session/return-path-segment.d.ts +10 -0
  471. package/dist/sdk/session/return-path-segment.js +15 -0
  472. package/dist/sdk/session/return-path-segment.js.map +1 -0
  473. package/dist/sdk/session/use-session-actions.js.map +1 -1
  474. package/dist/sdk/shipping/use-cart-shipping-simulation.js.map +1 -1
  475. package/dist/sdk/shipping/use-shipping-actions.js.map +1 -1
  476. package/dist/sdk/shipping/use-shipping-simulation.js.map +1 -1
  477. package/dist/utils/safe-href.d.ts +2 -0
  478. package/package.json +4 -3
  479. package/skills/storefront-asset/SKILL.md +2 -2
  480. package/skills/storefront-asset/references/api-side.md +27 -14
  481. package/skills/storefront-asset/references/findings.md +5 -2
  482. package/src/styles/tailwind.css +8 -0
  483. package/dist/matter/shipping-address/country-descriptors.d.ts +0 -1
  484. package/dist/message-locales.json +0 -7
  485. package/dist/sdk/i18n/client.d.ts +0 -4
  486. package/dist/sdk/i18n/client.js +0 -4
  487. package/dist/sdk/i18n/locales.d.ts +0 -8
  488. package/dist/sdk/i18n/locales.js +0 -57
  489. package/dist/sdk/i18n/locales.js.map +0 -1
  490. package/dist/sdk/i18n/messages/en-US.js +0 -183
  491. package/dist/sdk/i18n/messages/en-US.js.map +0 -1
  492. package/dist/sdk/i18n/messages/en-US.json +0 -178
  493. package/dist/sdk/i18n/messages/en-US.json.d.ts +0 -182
  494. package/dist/sdk/i18n/messages/es-ES.js +0 -183
  495. package/dist/sdk/i18n/messages/es-ES.js.map +0 -1
  496. package/dist/sdk/i18n/messages/es-ES.json +0 -178
  497. package/dist/sdk/i18n/messages/pt-BR.js +0 -183
  498. package/dist/sdk/i18n/messages/pt-BR.js.map +0 -1
  499. package/dist/sdk/i18n/messages/pt-BR.json +0 -178
  500. package/dist/sdk/i18n/provider.d.ts +0 -1
  501. package/dist/sdk/i18n/provider.js +0 -30
  502. package/dist/sdk/i18n/provider.js.map +0 -1
  503. package/dist/sdk/i18n/server.d.ts +0 -28
  504. package/dist/sdk/i18n/server.js +0 -59
  505. package/dist/sdk/i18n/server.js.map +0 -1
  506. package/dist/utils/resolve-authored-copy.js +0 -18
  507. package/dist/utils/resolve-authored-copy.js.map +0 -1
  508. package/dist/utils/substitute-template.js +0 -33
  509. package/dist/utils/substitute-template.js.map +0 -1
@@ -30,7 +30,7 @@ Use `AccountAddressBook` and `AccountAddressForm` (not `ShippingAddress` or `Bil
30
30
  ## When NOT to use
31
31
 
32
32
  - Changing the country of a saved address — an edit keeps its country.
33
- - Giving an address a name of its own — a saved address has no name field. The SDK's field model (`AccountFieldName`, `fs/address.field.name`) still lists `name`, so adding it later does not change the model, but no component renders or saves it.
33
+ - Giving an address a name of its own — a saved address has no name field. The SDK's field model (`AccountFieldName`) still lists `name`, so adding it later does not change the model, but no component renders or saves it.
34
34
  - The address a shopper picks or types during checkout — use `ShippingAddress` / `BillingAddress`.
35
35
  - A single address summary with no saved list behind it — compose `AddressSummary` directly.
36
36
  - The signed-out prompt — compose `SignInForm` next to a `SessionGuard`. The root renders nothing for a shopper who is not logged in.
@@ -60,7 +60,7 @@ SessionRoot (required ancestor; must resolve t
60
60
  ├── AccountAddressBookDeleteConfirm (optional; the one alert dialog every delete trigger opens)
61
61
  ├── AccountAddressBookAddTrigger (optional; opens the form in add mode; shown in every state)
62
62
  └── AccountAddressBookFormSlot (or AccountAddressBookFormDialog; shows the form while one is open)
63
- └── AccountAddressFormRoot (the form; with no children it renders the parts below in this order)
63
+ └── AccountAddressFormRoot (the form; renders only its children, composed in this order)
64
64
  ├── AddressCountryControl (own data; the country list, or the country as text)
65
65
  ├── AccountAddressCountryNotice (what a country change left behind)
66
66
  ├── AccountAddressFormRecipientName
@@ -88,7 +88,7 @@ The form opens where you place it. `AccountAddressBookFormSlot` shows it in plac
88
88
 
89
89
  Deleting needs two parts: an `AccountAddressBookDeleteTrigger` inside each entry, and one `AccountAddressBookDeleteConfirm` under the root. The confirmation is an alert dialog, so wherever you place it, it shows over the page.
90
90
 
91
- To let the shopper choose the country of a new address, compose `AddressCountryControl` explicitly under `AccountAddressFormRoot`, with `AccountAddressCountryNotice` right after it. The control reads where the store ships through its own fragment, and that fragment joins the page query only when the control is in the schema. In the root's default composition the control gets no list, so it shows the root's `defaultCountry` as text.
91
+ To let the shopper choose the country of a new address, compose `AddressCountryControl` explicitly under `AccountAddressFormRoot`, with `AccountAddressCountryNotice` right after it. The control reads where the store ships through its own fragment, and that fragment joins the page query only when the control is in the schema.
92
92
 
93
93
  ---
94
94
 
@@ -112,7 +112,7 @@ To let the shopper choose the country of a new address, compose `AddressCountryC
112
112
  - **The notice says what stayed behind.** After a change, `AccountAddressCountryNotice` names the fields the new country left out, with the labels the old country showed, and says they come back on switching back. It is a polite live region that stays mounted, and it is empty when the change carried everything. It changes only with the next country change, never on typing or a blocked save.
113
113
  - **The whole address is checked on every save.** The server checks the whole record, so an untouched gap in a saved address blocks the save too. A saved address with gaps shows them when the form opens, without moving focus.
114
114
  - **A blocked save names the fields.** The form marks each field in error, moves focus to the first one in form order, keeps what was typed, and announces "Address not saved" and how many fields need attention through a polite status region that stays mounted.
115
- - **The server's refusal lands on the field it names.** Its message is never shown; the field shows the catalog message for its code (`This field is required.` or `Check this field.`). A refusal that names a field the form does not show, no field at all, or a country, shows an error about the whole form, so a save never fails silently. Each of `NOT_FOUND`, `UNAUTHORIZED`, `UNSUPPORTED_COUNTRY` (the store does not deliver to the country), and the rest has its own message.
115
+ - **The server's refusal lands on the field it names.** Its message is never shown; the field shows its part's `requiredError` or `invalidError` message for the code. A refusal that names a field the form does not show, no field at all, or a country, shows an error about the whole form, so a save never fails silently. Each of `NOT_FOUND`, `UNAUTHORIZED`, `UNSUPPORTED_COUNTRY` (the store does not deliver to the country), and the rest has its own message.
116
116
  - **What is sent.** An add sends the country and every field on screen that has text; the values kept for another country are never sent. An edit sends the address id and only the fields that changed; a field the shopper cleared goes as an empty string, which erases it. An edit with no change closes without a call. A second submit while one is in flight does nothing.
117
117
  - **Only Save submits.** Enter in a text field does not save, so a shopper who presses it mid-address is not sent a half-typed one. Enter on the Save button still saves.
118
118
  - **On success.** A toast confirms, the form closes, and the list shows the result with no reload.
@@ -127,6 +127,8 @@ To let the shopper choose the country of a new address, compose `AddressCountryC
127
127
 
128
128
  ## Components
129
129
 
130
+ Each part with copy reads it only from its own `$content`, whose fields are ICU messages; no part takes a copy prop. A missing message renders empty and logs an error. `AccountAddressFormRoot` has no default parts, since a part it rendered itself would have no `$content`: compose them.
131
+
130
132
  ### AccountAddressBookRoot
131
133
 
132
134
  No props beyond `className`. Fetches `customerAddressBook` (the address ids) with `fetchStrategy: 'reactive'`, requires `session`, provides `account-address-book`, and declares a skeleton.
@@ -145,39 +147,49 @@ No props beyond `className`. Renders one `<p>` per address line.
145
147
 
146
148
  ### AccountAddressBookLoading
147
149
 
148
- | Prop | Type | Default | Notes |
149
- |------|------|---------|-------|
150
- | `message` | string | catalog copy | Loading message. A blank value falls back to the catalog. |
150
+ Content type `account-address-book-loading`:
151
+
152
+ | Content field | Description |
153
+ |---|---|
154
+ | message | Loading message |
151
155
 
152
156
  ### AccountAddressBookEmpty
153
157
 
154
- | Prop | Type | Default | Notes |
155
- |------|------|---------|-------|
156
- | `message` | string | catalog copy | Empty message. A blank value falls back to the catalog. |
158
+ Content type `account-address-book-empty`:
159
+
160
+ | Content field | Description |
161
+ |---|---|
162
+ | message | Empty message |
157
163
 
158
164
  ### AccountAddressBookError
159
165
 
160
- | Prop | Type | Default | Notes |
161
- |------|------|---------|-------|
162
- | `message` | string | catalog copy | Error message. A blank value falls back to the catalog. |
163
- | `retryLabel` | string | catalog copy | Retry button label. A blank value falls back to the catalog. |
166
+ Content type `account-address-book-error`:
164
167
 
165
- ### AccountAddressBookAddTrigger
168
+ | Content field | Description |
169
+ |---|---|
170
+ | message | Error message |
171
+ | retryLabel | Retry button label |
166
172
 
167
- | Prop | Type | Default | Notes |
168
- |------|------|---------|-------|
169
- | `label` | string | catalog copy | Button text. A blank value falls back to the catalog. |
173
+ ### AccountAddressBookAddTrigger
170
174
 
171
175
  A button that opens the form in add mode. It shows in every state of the book, the empty one too.
172
176
 
173
- ### AccountAddressBookEditTrigger
177
+ Content type `account-address-book-add-trigger`:
174
178
 
175
- | Prop | Type | Default | Notes |
176
- |------|------|---------|-------|
177
- | `label` | string | catalog copy | Visible text. A blank value falls back to the catalog. |
179
+ | Content field | Description |
180
+ |---|---|
181
+ | label | Button text |
182
+
183
+ ### AccountAddressBookEditTrigger
178
184
 
179
185
  A button inside `AccountAddressBookItem` that opens the form in edit mode for that entry. Its accessible name is the visible text followed by the address's first line, so each button in a list is told apart.
180
186
 
187
+ Content type `account-address-book-edit-trigger`:
188
+
189
+ | Content field | Description |
190
+ |---|---|
191
+ | label | Visible text |
192
+
181
193
  ### AccountAddressBookFormSlot
182
194
 
183
195
  No props of its own; `className` and the other `div` attributes land on its element. Shows its children in place while a form is open, and nothing otherwise. Each open starts a new draft.
@@ -186,49 +198,70 @@ No props of its own; `className` and the other `div` attributes land on its elem
186
198
 
187
199
  | Prop | Type | Default | Notes |
188
200
  |------|------|---------|-------|
189
- | `title` | string | catalog copy for the mode | Dialog title. A blank value falls back to the catalog. |
190
201
  | `className` | string | none | Goes on the dialog's popup. The dialog renders in a portal outside the page, so this is the element a store sizes and places. |
191
202
 
192
203
  Shows its children in a modal dialog while a form is open. Escape and the close button cancel the form.
193
204
 
194
- ### AccountAddressBookDeleteTrigger
205
+ Content type `account-address-book-form-dialog`:
195
206
 
196
- | Prop | Type | Default | Notes |
197
- |------|------|---------|-------|
198
- | `label` | string | catalog copy | Visible text. A blank value falls back to the catalog. |
207
+ | Content field | Description |
208
+ |---|---|
209
+ | titleAdd | Title in add mode |
210
+ | titleEdit | Title in edit mode |
211
+ | closeLabel | Close button's accessible name |
212
+
213
+ ### AccountAddressBookDeleteTrigger
199
214
 
200
215
  A button inside `AccountAddressBookItem` that asks to delete that entry's address. It deletes nothing by itself. Its accessible name is the visible text followed by the address's first line, so each button in a list is told apart.
201
216
 
217
+ Content type `account-address-book-delete-trigger`:
218
+
219
+ | Content field | Description |
220
+ |---|---|
221
+ | label | Visible text |
222
+
202
223
  ### AccountAddressBookDeleteConfirm
203
224
 
204
225
  | Prop | Type | Default | Notes |
205
226
  |------|------|---------|-------|
206
- | `title` | string | catalog copy | The question. |
207
- | `description` | string | catalog copy | What deleting means. The address's first line always shows before it. |
208
- | `cancelLabel` | string | catalog copy | The control that backs out. |
209
- | `confirmLabel` | string | catalog copy | The control that deletes. |
210
- | `deletedMessage` | string | catalog copy | Toast after the address is deleted. |
211
- | `failedMessage` | string | catalog copy | Shown in the dialog when the address was not deleted. |
212
- | `unauthorizedMessage` | string | catalog copy | Shown in the dialog when the session expired. |
213
227
  | `className` | string | none | Goes on the dialog's popup. The dialog renders in a portal outside the page, so this is the element a store sizes and places. |
214
228
 
215
229
  One per address book, under `AccountAddressBookRoot`. It opens for the entry whose trigger was activated, and it needs a `ToastProvider` ancestor.
216
230
 
231
+ Content type `account-address-book-delete-confirm`:
232
+
233
+ | Content field | Description |
234
+ |---|---|
235
+ | title | The question |
236
+ | description | What deleting means. The address's first line always shows before it. |
237
+ | cancelLabel | The control that backs out |
238
+ | confirmLabel | The control that deletes |
239
+ | deletedMessage | Toast after the address is deleted |
240
+ | failedMessage | Shown when the address was not deleted |
241
+ | unauthorizedMessage | Shown when the session expired |
242
+
217
243
  ### AccountAddressFormRoot
218
244
 
219
245
  | Prop | Type | Default | Notes |
220
246
  |------|------|---------|-------|
221
247
  | `defaultCountry` | string | `BRA` | ISO 3166-1 alpha-3 code of the country a new address prefers: taken when the store ships there or its list is unknown. A blank value falls back to `BRA`. |
222
- | `addedMessage` | string | catalog copy | Toast after an address is added. |
223
- | `savedMessage` | string | catalog copy | Toast after an address is saved. |
224
- | `blockedMessage` | string | catalog copy | What the status region announces when a save is blocked. |
225
248
  | `returnHref` | link | `{ standard: 'address' }` | Where leaving the form goes on its own page: a page reference, or a site-relative string (an off-site string is refused). Ignored under an address book. |
226
249
 
227
- Requires `session`, provides `account-address-form`, and declares `actions: { address: ['create', 'update'] }`. Needs a `ToastProvider` ancestor. With no children it renders its parts in the default order.
250
+ Requires `session`, provides `account-address-form`, and declares `actions: { address: ['create', 'update'] }`. Needs a `ToastProvider` ancestor. It renders only its children; with none, the form is empty.
228
251
 
229
252
  The address to edit comes from the book's open edit form, else from an `AccountAddressRecord` above it, else the form opens empty to add.
230
253
 
231
- It renders the shared `FormRoot` and registers itself as the form's only fieldset, so react-hook-form holds the draft. Each field part registers under the `accountAddress` namespace while it is on screen. The address rules still decide what is valid and what is sent: the root checks the draft with the country's rules on Save and never hands a rule to react-hook-form. The form particle's `FormClear`, `FormReset` and `FormError` are not part of this anatomy; `AccountAddressFormCancel` and `AccountAddressFormError` cover them.
254
+ It renders the shared `FormRoot` and registers itself as the form's only fieldset, so react-hook-form holds the draft. Each field part registers under the `accountAddress` namespace while it is on screen. The address rules still decide what is valid and what is sent: the root checks the draft with the country's rules on Save and never hands a rule to react-hook-form. The form particle's `FormClear`, `FormReset` and `FormError` are not part of this anatomy; `AccountAddressFormCancel` and `AccountAddressFormError` cover them. A `FormError` composed anyway shows this form's own status message (`statusFields` or `statusFailed`) for a blocked or refused save, never the server's text.
255
+
256
+ Content type `account-address-form`:
257
+
258
+ | Content field | Description |
259
+ |---|---|
260
+ | addedMessage | Toast after an address is added |
261
+ | savedMessage | Toast after an address is saved |
262
+ | statusFilled | Announces the fields a postal code filled, a plural on `count` |
263
+ | statusFields | Announces a save blocked by fields, a plural on `count` |
264
+ | statusFailed | Announces a save that failed |
232
265
 
233
266
  ### AccountAddressRecord
234
267
 
@@ -238,81 +271,147 @@ An id that is not the shopper's and an id that never existed are the same respon
238
271
 
239
272
  ### AccountAddressRecordError
240
273
 
241
- | Prop | Type | Default | Notes |
242
- |------|------|---------|-------|
243
- | `message` | string | catalog copy | Shown when the address could not be read. |
244
- | `retryLabel` | string | catalog copy | The retry control's text. Retry reloads the page. |
245
-
246
274
  Visible only when the read failed and no address resolved, as an alert. Must be inside `AccountAddressRecord`.
247
275
 
248
- ### AddressCountryControl
276
+ Content type `account-address-record-error`:
249
277
 
250
- | Prop | Type | Default | Notes |
251
- |------|------|---------|-------|
252
- | `label` | string | catalog copy | The list's label. A blank value falls back to the catalog. |
278
+ | Content field | Description |
279
+ |---|---|
280
+ | message | Shown when the address could not be read |
281
+ | retryLabel | The retry control's text. Retry reloads the page. |
282
+
283
+ ### AddressCountryControl
253
284
 
254
285
  Fetches `shippingCountries` (`countries` and `source`) with `fetchStrategy: 'reactive'`, requires `account-address-form`, and declares a skeleton. In add mode with two or more countries it renders a list; with one it renders nothing; in edit mode, or with no list, it renders the country as text.
255
286
 
287
+ Content type `address-country-control`:
288
+
289
+ | Content field | Description |
290
+ |---|---|
291
+ | label | The list's label |
292
+
256
293
  ### AccountAddressCountryNotice
257
294
 
258
- | Prop | Type | Default | Notes |
259
- |------|------|---------|-------|
260
- | `message` | string | catalog copy | Replaces the whole sentence. Takes the ICU arguments `count`, `country`, `previous`, and `fields`. A blank or malformed value falls back to the catalog. |
295
+ Requires `account-address-form`. An `<output aria-live="polite">` that stays mounted, empty until a country change leaves fields behind. Its `fields` argument lists the left-behind fields with the labels of `AccountAddressFormFields`' content; with no Fields part mounted it is empty.
261
296
 
262
- Requires `account-address-form`. An `<output aria-live="polite">` that stays mounted, empty until a country change leaves fields behind.
297
+ Content type `account-address-country-notice`:
263
298
 
264
- ### AccountAddressFormRecipientName and AccountAddressFormReference
299
+ | Content field | Description |
300
+ |---|---|
301
+ | message | The sentence, with the `count`, `country`, `fields` and `previous` arguments |
265
302
 
266
- | Prop | Type | Default | Notes |
267
- |------|------|---------|-------|
268
- | `label` | string | catalog copy | Field label. A blank value falls back to the catalog. |
303
+ ### AccountAddressFormRecipientName and AccountAddressFormReference
269
304
 
270
305
  The recipient name is required for every country. The reference is optional.
271
306
 
307
+ Content type `account-address-form-recipient-name` (AccountAddressFormRecipientName):
308
+
309
+ | Content field | Description |
310
+ |---|---|
311
+ | label | Field label |
312
+ | requiredError | Error when the field is empty |
313
+ | invalidError | Error when the value is refused |
314
+ | tooLongError | Error past the length limit, with the `maxLength` argument |
315
+
316
+ Content type `account-address-form-reference` (AccountAddressFormReference):
317
+
318
+ | Content field | Description |
319
+ |---|---|
320
+ | label | Field label |
321
+ | requiredError | Error when the field is empty |
322
+ | invalidError | Error when the value is refused |
323
+ | tooLongError | Error past the length limit, with the `maxLength` argument |
324
+
272
325
  ### AccountAddressFormFields
273
326
 
274
327
  No props beyond `className`, which goes on every field's wrapper. One field per field the country asks for, in the country's order.
275
328
 
276
- ### AccountAddressFormError
329
+ Content type `account-address-form-fields`:
330
+
331
+ | Content field | Description |
332
+ |---|---|
333
+ | cepLabel | Label of the `cep` field |
334
+ | cityLabel | Label of the `city` field |
335
+ | communeLabel | Label of the `commune` field |
336
+ | complementLabel | Label of the `complement` field |
337
+ | countyLabel | Label of the `county` field |
338
+ | departmentLabel | Label of the `department` field |
339
+ | districtLabel | Label of the `district` field |
340
+ | municipalityLabel | Label of the `municipality` field |
341
+ | neighborhoodLabel | Label of the `neighborhood` field |
342
+ | numberLabel | Label of the `number` field |
343
+ | postalCodeLabel | Label of the `postalCode` field |
344
+ | postcodeLabel | Label of the `postcode` field |
345
+ | provinceLabel | Label of the `province` field |
346
+ | regionLabel | Label of the `region` field |
347
+ | stateLabel | Label of the `state` field |
348
+ | streetLabel | Label of the `street` field |
349
+ | townLabel | Label of the `town` field |
350
+ | postalCodePlaceholder | Postal code hint, with the `example` argument |
351
+ | streetPlaceholder | Street hint |
352
+ | cepError | Invalid CEP error, with the `example` argument |
353
+ | postalCodeError | Invalid postal code error, with the `example` argument |
354
+ | requiredError | Error when the field is empty |
355
+ | invalidError | Error when the value is refused |
356
+ | tooLongError | Error past the length limit, with the `maxLength` argument |
277
357
 
278
- | Prop | Type | Default | Notes |
279
- |------|------|---------|-------|
280
- | `unrenderedFieldMessage` | string | catalog copy | A refusal on a field the form does not show. |
281
- | `notFoundMessage` | string | catalog copy | The address no longer exists. |
282
- | `unauthorizedMessage` | string | catalog copy | The session expired. |
283
- | `saveFailedMessage` | string | catalog copy | The save failed for any other reason. |
284
- | `rulesFailedMessage` | string | catalog copy | The country's rules did not load. |
285
- | `countrySwitchFailedMessage` | string | catalog copy | A country change could not load. |
286
- | `unsupportedCountryMessage` | string | catalog copy | The store does not deliver to the country. |
358
+ ### AccountAddressFormError
287
359
 
288
360
  An alert for the whole form. Renders nothing when there is no error.
289
361
 
290
- ### AccountAddressFormSubmit and AccountAddressFormCancel
362
+ Content type `account-address-form-error`:
291
363
 
292
- | Prop | Type | Default | Notes |
293
- |------|------|---------|-------|
294
- | `label` | string | catalog copy | Button text. A blank value falls back to the catalog. |
364
+ | Content field | Description |
365
+ |---|---|
366
+ | unrenderedFieldMessage | A refusal on a field the form does not show |
367
+ | notFoundMessage | The address no longer exists |
368
+ | unauthorizedMessage | The session expired |
369
+ | saveFailedMessage | The save failed for any other reason |
370
+ | rulesFailedMessage | The country's rules did not load |
371
+ | countrySwitchFailedMessage | A country change could not load |
372
+ | unsupportedCountryMessage | The store does not deliver to the country |
373
+
374
+ ### AccountAddressFormSubmit and AccountAddressFormCancel
295
375
 
296
376
  Submit is disabled until the rules load, while a country change loads, and while a save is in flight, and is marked busy then. Cancel closes the form, or, on its own page, goes to the form root's `returnHref`. Cancel is disabled while a save is in flight, and under a book's `AccountAddressBookFormDialog` Escape and the close control wait for the save to settle, so a refusal is never lost.
297
377
 
378
+ Content type `account-address-form-submit` (AccountAddressFormSubmit):
379
+
380
+ | Content field | Description |
381
+ |---|---|
382
+ | label | Button text |
383
+
384
+ Content type `account-address-form-cancel` (AccountAddressFormCancel):
385
+
386
+ | Content field | Description |
387
+ |---|---|
388
+ | label | Button text |
389
+
298
390
  ### AccountAddressBookProfileNotice
299
391
 
300
392
  | Prop | Type | Default | Notes |
301
393
  |------|------|---------|-------|
302
394
  | `href` | link | `{ standard: 'profile' }` | Where the link goes: a page reference, or a site-relative string. |
303
- | `message` | string | catalog copy | Notice text. |
304
- | `linkLabel` | string | catalog copy | Link label. |
305
395
 
306
396
  Fetches `customerProfile` with `fetchStrategy: 'reactive'` and requires `session`.
307
397
 
308
- ### AccountAddressBookItemDeliverability
398
+ Content type `account-address-book-profile-notice`:
309
399
 
310
- | Prop | Type | Default | Notes |
311
- |------|------|---------|-------|
312
- | `message` | string | catalog copy | Marker text. A blank value falls back to the catalog. |
400
+ | Content field | Description |
401
+ |---|---|
402
+ | message | Notice text |
403
+ | linkLabel | Link label |
404
+
405
+ ### AccountAddressBookItemDeliverability
313
406
 
314
407
  Fetches `shippingCountries` with `fetchStrategy: 'reactive'` and requires `account-address-book-item`. Renders one `<p>` when it marks an address, and nothing otherwise.
315
408
 
409
+ Content type `account-address-book-deliverability`:
410
+
411
+ | Content field | Description |
412
+ |---|---|
413
+ | message | Marker text |
414
+
316
415
  ---
317
416
 
318
417
  ## Canonical schema example
@@ -335,7 +434,7 @@ Fetches `shippingCountries` with `fetchStrategy: 'reactive'` and requires `accou
335
434
 
336
435
  `address-item` appears once in the schema and renders once per saved address. Do not repeat it.
337
436
 
338
- With the form, the same book adds an add trigger, an edit trigger inside the item, and a slot holding the form root. A root with no children renders the default form:
437
+ With the form, the same book adds an add trigger, an edit trigger inside the item, and a slot holding the form root. The root renders only its children, which the next example defines:
339
438
 
340
439
  ```json
341
440
  {
@@ -356,13 +455,26 @@ With the form, the same book adds an add trigger, an edit trigger inside the ite
356
455
  "address-country": { "type": "AddressSummaryCountry", "children": [] },
357
456
  "address-edit": { "type": "AccountAddressBookEditTrigger", "children": [] },
358
457
  "address-form-slot": { "type": "AccountAddressBookFormSlot", "children": ["address-form"] },
359
- "address-form": { "type": "AccountAddressFormRoot", "props": { "defaultCountry": "BRA" }, "children": [] }
458
+ "address-form": {
459
+ "type": "AccountAddressFormRoot",
460
+ "props": { "defaultCountry": "BRA" },
461
+ "children": [
462
+ "form-country",
463
+ "form-country-notice",
464
+ "form-recipient",
465
+ "form-fields",
466
+ "form-reference",
467
+ "form-error",
468
+ "form-submit",
469
+ "form-cancel"
470
+ ]
471
+ }
360
472
  }
361
473
  ```
362
474
 
363
475
  To open the form in a dialog, swap `AccountAddressBookFormSlot` for `AccountAddressBookFormDialog`. The page needs a `ToastProvider` above it.
364
476
 
365
- To offer the country choice, give the form root its parts, with the control first:
477
+ The form root's parts, with the country control first so the shopper can choose the country:
366
478
 
367
479
  ```json
368
480
  {
@@ -447,7 +559,7 @@ To mark the addresses the store does not ship to, add an `AccountAddressBookItem
447
559
  - **Placing `AccountAddressBookItemDeliverability` outside `AccountAddressBookItem`.** It needs the country that the entry hands it, and throws without it.
448
560
  - **Expecting the marker to appear when the store ships to one country.** Under the single-country fallback it renders nothing on purpose: one guessed country cannot tell a deliverable address from an undeliverable one.
449
561
  - **Listing the form's fields in the schema.** `AccountAddressFormFields` renders the ones the country asks for. Do not compose a field per country.
450
- - **Expecting the default form to offer a country choice.** A childless `AccountAddressFormRoot` shows `defaultCountry` as text. Compose `AddressCountryControl` explicitly to offer the countries the store ships to.
562
+ - **Leaving `AccountAddressFormRoot` with no children.** It has no default parts, so the form renders empty. Compose its parts, with `AddressCountryControl` first to offer the countries the store ships to.
451
563
  - **Placing `AddressCountryControl` or `AccountAddressCountryNotice` outside `AccountAddressFormRoot`.** Both need the form; the hook throws without it.
452
564
  - **Using `ShippingAddress*` for the account form.** Those parts are the checkout form.
453
565
 
@@ -459,27 +571,27 @@ To mark the addresses the store does not ship to, add an `AccountAddressBookItem
459
571
  |---|---|---|
460
572
  | `AccountAddressBookRoot` | `[data-fs-account-address-book]`; carries `-state` | `flex flex-col gap-4` |
461
573
  | `AccountAddressBookList` | `[data-fs-account-address-book-list]`, items via `[data-fs-account-address-book-list-item]` | `flex flex-col gap-4` |
462
- | `AccountAddressBookItem` | `[data-fs-account-address-book-item]` | `flex flex-col gap-1 rounded-md border border-[#D4D4D4] p-4` |
463
- | `AccountAddressBookItemLines` | each line `[data-fs-account-address-book-line]` | `text-[14px] text-[#404040]` |
574
+ | `AccountAddressBookItem` | `[data-fs-account-address-book-item]` | `flex flex-col gap-1 rounded-md border border-[var(--color-border-strong)] p-4` |
575
+ | `AccountAddressBookItemLines` | each line `[data-fs-account-address-book-line]` | `text-[14px] text-[var(--color-text-secondary)]` |
464
576
  | `AccountAddressBookLoading` | `[data-fs-account-address-book-loading]`, message via `-loading-message` | Leave the message as is: it is already `sr-only` |
465
577
  | `AccountAddressBookSkeleton` | `[data-fs-account-address-book-skeleton]`, lines via `-skeleton-line` | `animate-pulse` |
466
578
  | `AccountAddressBookEmpty` | `[data-fs-account-address-book-empty]` | `text-[14px] text-[#737373]` |
467
- | `AccountAddressBookError` | `[data-fs-account-address-book-error]`, message via `-error-message`, button via `[data-fs-account-address-book-retry]` | `flex flex-col gap-2 text-[#B91C1C]` |
468
- | `AccountAddressBookAddTrigger` | `[data-fs-account-address-book-add]` | `rounded-md bg-[#2563EB] px-4 py-2 font-semibold text-white` |
469
- | `AccountAddressBookEditTrigger` | `[data-fs-account-address-book-edit]` | `text-[14px] font-semibold text-[#2563EB]` |
470
- | `AccountAddressBookFormSlot` | `[data-fs-account-address-book-form-slot]` | `rounded-md border border-[#D4D4D4] p-4` |
579
+ | `AccountAddressBookError` | `[data-fs-account-address-book-error]`, message via `-error-message`, button via `[data-fs-account-address-book-retry]` | `flex flex-col gap-2 text-[var(--color-feedback-danger)]` |
580
+ | `AccountAddressBookAddTrigger` | `[data-fs-account-address-book-add]` | `rounded-md bg-[var(--color-blue-surface)] px-4 py-2 font-semibold text-white` |
581
+ | `AccountAddressBookEditTrigger` | `[data-fs-account-address-book-edit]` | `text-[14px] font-semibold text-[var(--color-blue-surface)]` |
582
+ | `AccountAddressBookFormSlot` | `[data-fs-account-address-book-form-slot]` | `rounded-md border border-[var(--color-border-strong)] p-4` |
471
583
  | `AccountAddressBookFormDialog` | popup via `[data-fs-account-address-book-form-dialog]`, with the `Dialog` particle's own `data-fs-dialog-*` attributes | `w-full max-w-md rounded-md bg-white p-6` |
472
- | `AccountAddressBookDeleteTrigger` | `[data-fs-account-address-book-delete]` | `text-[14px] font-semibold text-[#B91C1C]` |
584
+ | `AccountAddressBookDeleteTrigger` | `[data-fs-account-address-book-delete]` | `text-[14px] font-semibold text-[var(--color-feedback-danger)]` |
473
585
  | `AccountAddressBookDeleteConfirm` | popup via `[data-fs-account-address-book-delete-confirm]`, with the `AlertDialog` particle's own `data-fs-alert-dialog-*` attributes; the address via `-delete-address`; the refusal via `-delete-error`; the confirming button via `-delete-submit` | `w-full max-w-md rounded-md bg-white p-6` |
474
586
  | `AccountAddressFormRoot` | `[data-fs-account-address-form]`, with the form particle's own `data-fs-form` and `data-fs-form-pending`; carries `-mode` (`add` or `edit`); status region via `-status` | `flex flex-col gap-3` |
475
- | `AddressCountryControl` | `[data-fs-address-country-control]`; carries `-mode` (`select` or `text`) and `-pending` while a change loads; the text via `-text`; the list's trigger via `[data-fs-account-address-form-control]` | `flex flex-col gap-1 text-[14px] text-[#404040]` |
476
- | `AccountAddressCountryNotice` | `[data-fs-account-address-country-notice]` | `text-[14px] text-[#404040]` |
587
+ | `AddressCountryControl` | `[data-fs-address-country-control]`; carries `-mode` (`select` or `text`) and `-pending` while a change loads; the text via `-text`; the list's trigger via `[data-fs-account-address-form-control]` | `flex flex-col gap-1 text-[14px] text-[var(--color-text-secondary)]` |
588
+ | `AccountAddressCountryNotice` | `[data-fs-account-address-country-notice]` | `text-[14px] text-[var(--color-text-secondary)]` |
477
589
  | `AccountAddressFormRecipientName`, `AccountAddressFormFields`, `AccountAddressFormReference` | each field's wrapper `[data-fs-account-address-form-field="<name>"]`; a list field's error via `-field-error` | `flex flex-col gap-1` |
478
- | `AccountAddressFormError` | `[data-fs-account-address-form-error]`, whose value is the kind of error | `text-[14px] text-[#B91C1C]` |
479
- | `AccountAddressFormSubmit` | `[data-fs-account-address-form-submit]` | `rounded-md bg-[#2563EB] px-4 py-2 font-semibold text-white` |
480
- | `AccountAddressFormCancel` | `[data-fs-account-address-form-cancel]` | `rounded-md border border-[#D4D4D4] px-4 py-2` |
590
+ | `AccountAddressFormError` | `[data-fs-account-address-form-error]`, whose value is the kind of error | `text-[14px] text-[var(--color-feedback-danger)]` |
591
+ | `AccountAddressFormSubmit` | `[data-fs-account-address-form-submit]` | `rounded-md bg-[var(--color-blue-surface)] px-4 py-2 font-semibold text-white` |
592
+ | `AccountAddressFormCancel` | `[data-fs-account-address-form-cancel]` | `rounded-md border border-[var(--color-border-strong)] px-4 py-2` |
481
593
  | `AccountAddressBookProfileNotice` | `[data-fs-account-address-book-profile-notice]`, text via `-message`, link via `-link` | `rounded-md border border-[#FBBF24] bg-[#FFFBEB] p-3 text-[14px]` |
482
- | `AccountAddressBookItemDeliverability` | `[data-fs-account-address-book-item-deliverability]` | `text-[14px] text-[#B45309]` |
594
+ | `AccountAddressBookItemDeliverability` | `[data-fs-account-address-book-item-deliverability]` | `text-[14px] text-[var(--color-feedback-warning)]` |
483
595
 
484
596
  ```json
485
597
  {
@@ -490,19 +602,22 @@ To mark the addresses the store does not ship to, add an `AccountAddressBookItem
490
602
  },
491
603
  "address-item": {
492
604
  "type": "AccountAddressBookItem",
493
- "style": ["flex", "flex-col", "gap-[4px]", "rounded-[6px]", "border", "border-[#D4D4D4]", "p-[16px]"],
605
+ "style": ["flex", "flex-col", "gap-[4px]", "rounded-[6px]", "border", "border-[var(--color-border-strong)]", "p-[16px]"],
494
606
  "children": []
495
607
  }
496
608
  }
497
609
  ```
498
610
 
611
+ The role colors above are the foundation's `visualIdentity` roles (`--color-feedback-danger`, `--color-feedback-warning`), so they follow the store when it changes them.
612
+
613
+ The colors that several elements share are variables of the page or layout `theme`, which declares them: `{"--color-border-strong": "#D4D4D4", "--color-text-secondary": "#404040", "--color-blue-surface": "#2563EB"}`. A color used once stays a hex.
614
+
499
615
  ---
500
616
 
501
617
  ## Known gaps
502
618
 
503
619
  - **A failed profile read fails the whole book.** The notice and the book share one page query, and both roots are non-null. If the profile read fails, the list also goes to its error state. The same limit applies to any later part that joins the page query.
504
620
  - **The deliverability marker reads the store's shipping countries when the page loads.** It does not refresh until the page loads again, and it stays silent if that first read failed.
505
- - **The default form offers no country choice.** A childless form root shows `defaultCountry` as text, because only a control placed in the schema joins the page query. Compose `AddressCountryControl` to offer the choice.
506
621
  - **The shipping countries are read once per page.** The list comes with the page; a store that changes where it ships shows the change on the next page load.
507
622
  - **The postal code has no mask.** It is a plain text field. After the shopper stops typing for 400 ms, a complete code fills the state, city, neighborhood and street the country shows (Argentina, Brazil, Canada, France, Mexico, Spain and the United States). A field the shopper typed or saved is never changed, and a select the shopper's own city depends on is left alone. A field an earlier code filled and the new code does not cover is cleared. A reply for a code or country that changed meanwhile is dropped. A code the platform does not know and a lookup that fails change nothing and say nothing. The merchant cannot turn the fill off.
508
623
  - **The fill remembers only the last code asked.** Typing the same code again after another one asks again.
@@ -72,9 +72,11 @@ Two kinds of entry are excluded from the match entirely: one marked `external`,
72
72
 
73
73
  ### AccountMenuList
74
74
 
75
- | Prop | Type | Default | Notes |
76
- |------|------|---------|-------|
77
- | `label` | string | `'Account'` | Accessible name of the navigation landmark. |
75
+ Content model (`account-menu-list`) field, an ICU message with no package default:
76
+
77
+ | Field | Type | Source (English) | Notes |
78
+ |-------|------|------------------|-------|
79
+ | `label` | message | `Account` | Accessible name of the navigation landmark. |
78
80
 
79
81
  It takes no children: one `<li>` per resolved section is what it renders. With no sections to render it renders nothing at all, rather than an empty landmark for a screen-reader user to land in.
80
82
 
@@ -89,15 +91,14 @@ Exposed as `AccountMenu.IndexRedirect`. The account's root has no section of its
89
91
  | Prop | Type | Default | Notes |
90
92
  |------|------|---------|-------|
91
93
  | `loadingLabel` | string | — | Announced while the first section opens. |
92
- | `emptyMessage` | string | `'No account section is configured.'` | What the root says when there is no section to open. |
93
94
  | `className` | string | — | Applied to whichever element renders. |
94
95
 
95
- Content model (`account-menu-index-redirect`) fields, edited in the CMS, each winning over its prop when published; a blank field falls through:
96
+ Content model (`account-menu-index-redirect`) fields, edited in the CMS:
96
97
 
97
98
  | Field | Type | Required | Notes |
98
99
  |-------|------|----------|-------|
99
- | `loadingLabel` | string | no | The waiting announcement |
100
- | `emptyMessage` | string | no | The no-section message |
100
+ | `loadingLabel` | string | no | The waiting announcement; wins over its prop when published, and a blank field falls through |
101
+ | `emptyMessage` | message | no | The no-section message (source `No account section is configured.`); no package default |
101
102
 
102
103
  **It replaces the current history entry with the first section that stays in the account.** It reads the Root's resolved list and skips, in order: an entry marked `external`, a destination the allowlist refused, a destination that is not site-relative even though the merchant did not flag it, and the root itself in any spelling that matches it. Replace, never push: back from the section leaves the account instead of bouncing through its root.
103
104
 
@@ -113,16 +114,14 @@ Exposed as `AccountMenu.SignOut`. A button that ends the session and leaves the
113
114
 
114
115
  | Prop | Type | Default | Notes |
115
116
  |------|------|---------|-------|
116
- | `label` | string | `'Sign out'` | The button's text. |
117
- | `errorMessage` | string | `"We couldn't sign you out. Please try again."` | Shown when the sign-out did not happen. |
118
117
  | `className` | string | — | Applied to the wrapper. |
119
118
 
120
- Content model (`account-menu-sign-out`) fields, edited in the CMS, each winning over its prop when published; a blank field falls through:
119
+ Content model (`account-menu-sign-out`) fields, ICU messages with no package default:
121
120
 
122
- | Field | Type | Required | Notes |
123
- |-------|------|----------|-------|
124
- | `label` | string | no | The button's text |
125
- | `errorMessage` | string | no | The failure message |
121
+ | Field | Type | Source (English) | Notes |
122
+ |-------|------|------------------|-------|
123
+ | `label` | message | `Sign out` | The button's text |
124
+ | `errorMessage` | message | `We couldn't sign you out. Please try again.` | The failure message |
126
125
 
127
126
  The component declares `actions: { session: ['logout'] }` and writes only through `$actions.session.logout()`.
128
127
 
@@ -178,7 +177,7 @@ The account root's page, whose only content is the redirect:
178
177
 
179
178
  - **Placing the Root beside the slot instead of around it.** The layout's own consumers would be satisfied and the page's would not: a context reaches only descendants. Context-constraint validation reports it as a build error rather than as an empty menu at runtime.
180
179
  - **Putting the `<nav>` around the section's content.** That is what the two-part split exists to prevent; do not wrap the slot in `AccountMenuList`.
181
- - **Leaving `label` unauthored.** The default is `Account`; a store with its own wording should say so, because a landmark's name is how a screen-reader user tells it from every other one.
180
+ - **Leaving `label` unauthored.** There is no package default: an unauthored label leaves the landmark nameless, and a landmark's name is how a screen-reader user tells it from every other one.
182
181
  - **Styling the current item and nothing else.** The hook exists beside `aria-current`, never instead of it. Removing the programmatic signal leaves position conveyed by appearance alone.
183
182
  - **Publishing an empty list and expecting the defaults.** Empty is a configuration, not an absence. The account's root then has no section to open, and says so.
184
183
  - **Placing `AccountMenuIndexRedirect` on a section's page.** It navigates away from whatever page hosts it; it belongs on the account page alone.