@vtex/faststore 0.0.7 → 0.0.8

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 (411) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/actions.json +152 -1
  3. package/dist/catalog.json +1264 -142
  4. package/dist/cli/index.d.ts +512 -63
  5. package/dist/cli/index.js +2098 -686
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/cli/server-runtime.js +44 -24
  8. package/dist/cli/server-runtime.js.map +1 -1
  9. package/dist/client.d.ts +5 -1
  10. package/dist/client.js +5 -1
  11. package/dist/components.d.ts +34 -7
  12. package/dist/components.js +38 -11
  13. package/dist/content-types.json +523 -0
  14. package/dist/core/dist/define-component.d.ts +6 -1
  15. package/dist/docs/account-access-gate.md +4 -4
  16. package/dist/docs/account-address-book.md +519 -0
  17. package/dist/docs/account-entry-point.md +1 -1
  18. package/dist/docs/account-menu.md +5 -5
  19. package/dist/docs/alert-dialog.md +2 -2
  20. package/dist/docs/billing-address.md +17 -9
  21. package/dist/docs/card-entry.md +37 -6
  22. package/dist/docs/cardholder-document.md +16 -14
  23. package/dist/docs/cart-item.md +1 -1
  24. package/dist/docs/cart.md +8 -8
  25. package/dist/docs/client-profile-fieldset.md +7 -5
  26. package/dist/docs/copy-text.md +84 -0
  27. package/dist/docs/document-field.md +8 -8
  28. package/dist/docs/footer-link-group.md +2 -2
  29. package/dist/docs/header-root.md +1 -1
  30. package/dist/docs/incentives.md +2 -2
  31. package/dist/docs/logo.md +5 -5
  32. package/dist/docs/my-account-profile.md +4 -4
  33. package/dist/docs/navigation-link-list.md +2 -2
  34. package/dist/docs/navigation-link.md +3 -3
  35. package/dist/docs/order-cancel.md +52 -0
  36. package/dist/docs/order-delivery-address.md +63 -0
  37. package/dist/docs/order-delivery-group.md +83 -0
  38. package/dist/docs/order-details-back.md +41 -0
  39. package/dist/docs/order-details-header.md +48 -0
  40. package/dist/docs/order-list-row.md +46 -0
  41. package/dist/docs/order-list-search.md +101 -0
  42. package/dist/docs/order-list-views.md +97 -0
  43. package/dist/docs/order-list.md +94 -0
  44. package/dist/docs/order-payment.md +94 -0
  45. package/dist/docs/order-placed-date.md +49 -0
  46. package/dist/docs/order-placed-payment-summary.md +13 -15
  47. package/dist/docs/order-placed.md +225 -0
  48. package/dist/docs/order-progress.md +88 -0
  49. package/dist/docs/order-status-badge.md +91 -0
  50. package/dist/docs/order-summary.md +53 -0
  51. package/dist/docs/payment-method-badges.md +14 -3
  52. package/dist/docs/place-order.md +13 -9
  53. package/dist/docs/saved-cards.md +2 -2
  54. package/dist/docs/select.md +19 -6
  55. package/dist/docs/session.md +1 -1
  56. package/dist/docs/shipping-address.md +1 -1
  57. package/dist/docs/sign-in-redirect.md +6 -6
  58. package/dist/docs/toast.md +7 -3
  59. package/dist/index.d.ts +6 -2
  60. package/dist/index.js +2 -1
  61. package/dist/internal/client.d.ts +6 -1
  62. package/dist/internal/client.js +7 -2
  63. package/dist/internal/server.d.ts +6 -2
  64. package/dist/internal/server.js +6 -2
  65. package/dist/matter/account-access-gate/account-access-gate.d.ts +2 -1
  66. package/dist/matter/account-access-gate/account-access-gate.js +19 -16
  67. package/dist/matter/account-access-gate/account-access-gate.js.map +1 -1
  68. package/dist/matter/account-address-book/account-address-book-delete.d.ts +60 -0
  69. package/dist/matter/account-address-book/account-address-book-delete.js +184 -0
  70. package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -0
  71. package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +19 -0
  72. package/dist/matter/account-address-book/account-address-book-deliverability.js +50 -0
  73. package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -0
  74. package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +42 -0
  75. package/dist/matter/account-address-book/account-address-book-form-parts.js +146 -0
  76. package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -0
  77. package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +25 -0
  78. package/dist/matter/account-address-book/account-address-book-profile-notice.js +72 -0
  79. package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -0
  80. package/dist/matter/account-address-book/account-address-book.d.ts +120 -0
  81. package/dist/matter/account-address-book/account-address-book.js +469 -0
  82. package/dist/matter/account-address-book/account-address-book.js.map +1 -0
  83. package/dist/matter/account-address-book/account-address-country-switch.js +59 -0
  84. package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -0
  85. package/dist/matter/account-address-book/account-address-country.d.ts +36 -0
  86. package/dist/matter/account-address-book/account-address-country.js +151 -0
  87. package/dist/matter/account-address-book/account-address-country.js.map +1 -0
  88. package/dist/matter/account-address-book/account-address-first-line.js +11 -0
  89. package/dist/matter/account-address-book/account-address-first-line.js.map +1 -0
  90. package/dist/matter/account-address-book/account-address-form-context.d.ts +55 -0
  91. package/dist/matter/account-address-book/account-address-form-context.js +14 -0
  92. package/dist/matter/account-address-book/account-address-form-context.js.map +1 -0
  93. package/dist/matter/account-address-book/account-address-form.d.ts +85 -0
  94. package/dist/matter/account-address-book/account-address-form.js +946 -0
  95. package/dist/matter/account-address-book/account-address-form.js.map +1 -0
  96. package/dist/matter/account-address-book/account-address-postal-autofill.js +189 -0
  97. package/dist/matter/account-address-book/account-address-postal-autofill.js.map +1 -0
  98. package/dist/matter/account-address-book/account-address-record.d.ts +26 -0
  99. package/dist/matter/account-address-book/account-address-record.js +138 -0
  100. package/dist/matter/account-address-book/account-address-record.js.map +1 -0
  101. package/dist/matter/account-entry-point/account-entry-point.js +11 -11
  102. package/dist/matter/account-entry-point/account-entry-point.js.map +1 -1
  103. package/dist/matter/account-menu/account-menu.d.ts +7 -3
  104. package/dist/matter/account-menu/account-menu.js +69 -28
  105. package/dist/matter/account-menu/account-menu.js.map +1 -1
  106. package/dist/matter/billing-address/billing-address.d.ts +30 -17
  107. package/dist/matter/billing-address/billing-address.js +128 -33
  108. package/dist/matter/billing-address/billing-address.js.map +1 -1
  109. package/dist/matter/breadcrumb/breadcrumb.js +2 -2
  110. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
  111. package/dist/matter/card-entry/card-capture.js +4 -3
  112. package/dist/matter/card-entry/card-capture.js.map +1 -1
  113. package/dist/matter/card-entry/card-entry.d.ts +5 -3
  114. package/dist/matter/card-entry/card-entry.js +77 -27
  115. package/dist/matter/card-entry/card-entry.js.map +1 -1
  116. package/dist/matter/cardholder-document/cardholder-document.d.ts +10 -9
  117. package/dist/matter/cardholder-document/cardholder-document.js +36 -16
  118. package/dist/matter/cardholder-document/cardholder-document.js.map +1 -1
  119. package/dist/matter/cart/cart.d.ts +7 -2
  120. package/dist/matter/cart/cart.js +29 -26
  121. package/dist/matter/cart/cart.js.map +1 -1
  122. package/dist/matter/cart-item/cart-item.js +2 -2
  123. package/dist/matter/cart-item/cart-item.js.map +1 -1
  124. package/dist/matter/client-preferences/client-preferences-fieldset.js +1 -1
  125. package/dist/matter/client-profile-form/client-profile-fieldset.js +8 -5
  126. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
  127. package/dist/matter/identity-edit/identity-edit.js +3 -3
  128. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  129. package/dist/matter/identity-summary/identity-summary.js +2 -2
  130. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  131. package/dist/matter/my-account-profile/my-account-profile.d.ts +3 -3
  132. package/dist/matter/my-account-profile/my-account-profile.js +4 -4
  133. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  134. package/dist/matter/order-cancel/order-cancel.d.ts +110 -0
  135. package/dist/matter/order-cancel/order-cancel.js +344 -0
  136. package/dist/matter/order-cancel/order-cancel.js.map +1 -0
  137. package/dist/matter/order-delivery-address/order-delivery-address.d.ts +73 -0
  138. package/dist/matter/order-delivery-address/order-delivery-address.js +172 -0
  139. package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -0
  140. package/dist/matter/order-delivery-group/order-delivery-group.d.ts +128 -0
  141. package/dist/matter/order-delivery-group/order-delivery-group.js +408 -0
  142. package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -0
  143. package/dist/matter/order-details-header/order-details-header.d.ts +104 -0
  144. package/dist/matter/order-details-header/order-details-header.js +190 -0
  145. package/dist/matter/order-details-header/order-details-header.js.map +1 -0
  146. package/dist/matter/order-list/customer-orders-filter.d.ts +12 -0
  147. package/dist/matter/order-list/customer-orders-filter.js +30 -0
  148. package/dist/matter/order-list/customer-orders-filter.js.map +1 -0
  149. package/dist/matter/order-list/order-list.d.ts +121 -0
  150. package/dist/matter/order-list/order-list.js +395 -0
  151. package/dist/matter/order-list/order-list.js.map +1 -0
  152. package/dist/matter/order-list-row/order-list-row.d.ts +44 -0
  153. package/dist/matter/order-list-row/order-list-row.js +127 -0
  154. package/dist/matter/order-list-row/order-list-row.js.map +1 -0
  155. package/dist/matter/order-list-search/order-list-search.d.ts +72 -0
  156. package/dist/matter/order-list-search/order-list-search.js +296 -0
  157. package/dist/matter/order-list-search/order-list-search.js.map +1 -0
  158. package/dist/matter/order-list-views/order-list-views.d.ts +65 -0
  159. package/dist/matter/order-list-views/order-list-views.js +154 -0
  160. package/dist/matter/order-list-views/order-list-views.js.map +1 -0
  161. package/dist/matter/order-payment/order-payment.d.ts +83 -0
  162. package/dist/matter/order-payment/order-payment.js +258 -0
  163. package/dist/matter/order-payment/order-payment.js.map +1 -0
  164. package/dist/matter/order-placed/order-placed-deliveries.d.ts +145 -0
  165. package/dist/matter/order-placed/order-placed-deliveries.js +380 -0
  166. package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -0
  167. package/dist/matter/order-placed/order-placed.d.ts +122 -0
  168. package/dist/matter/order-placed/order-placed.js +452 -0
  169. package/dist/matter/order-placed/order-placed.js.map +1 -0
  170. package/dist/matter/order-placed-date/order-placed-date.d.ts +45 -0
  171. package/dist/matter/order-placed-date/order-placed-date.js +92 -0
  172. package/dist/matter/order-placed-date/order-placed-date.js.map +1 -0
  173. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +5 -8
  174. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +29 -81
  175. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
  176. package/dist/matter/order-progress/order-progress.d.ts +85 -0
  177. package/dist/matter/order-progress/order-progress.js +203 -0
  178. package/dist/matter/order-progress/order-progress.js.map +1 -0
  179. package/dist/matter/order-summary/order-summary.d.ts +81 -0
  180. package/dist/matter/order-summary/order-summary.js +192 -0
  181. package/dist/matter/order-summary/order-summary.js.map +1 -0
  182. package/dist/matter/payment/cardholder-document-rule.d.ts +35 -0
  183. package/dist/matter/payment/cardholder-document-rule.js +35 -0
  184. package/dist/matter/payment/cardholder-document-rule.js.map +1 -0
  185. package/dist/matter/payment/payment-card-capture.js +38 -23
  186. package/dist/matter/payment/payment-card-capture.js.map +1 -1
  187. package/dist/matter/payment/payment-controller.js +11 -0
  188. package/dist/matter/payment/payment-controller.js.map +1 -1
  189. package/dist/matter/payment/payment-method-badges.js +4 -2
  190. package/dist/matter/payment/payment-method-badges.js.map +1 -1
  191. package/dist/matter/payment/payment.js +11 -0
  192. package/dist/matter/payment/payment.js.map +1 -1
  193. package/dist/matter/payment/use-payment-method-selection.d.ts +39 -0
  194. package/dist/matter/payment/use-payment-method-selection.js +30 -2
  195. package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
  196. package/dist/matter/payment/use-payment-submit-gate.d.ts +16 -2
  197. package/dist/matter/payment/use-payment-submit-gate.js +42 -14
  198. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
  199. package/dist/matter/place-order/place-order.d.ts +12 -7
  200. package/dist/matter/place-order/place-order.js +126 -103
  201. package/dist/matter/place-order/place-order.js.map +1 -1
  202. package/dist/matter/pricing/pricing.js +5 -5
  203. package/dist/matter/pricing/pricing.js.map +1 -1
  204. package/dist/matter/region/region.js +1 -1
  205. package/dist/matter/saved-cards/saved-cards.js +26 -15
  206. package/dist/matter/saved-cards/saved-cards.js.map +1 -1
  207. package/dist/matter/session/session.js +2 -2
  208. package/dist/matter/session/session.js.map +1 -1
  209. package/dist/matter/shipping-address/country-descriptors.d.ts +1 -0
  210. package/dist/matter/shipping-address/country-descriptors.js +23 -1
  211. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  212. package/dist/matter/shipping-address/shipping-address.js +62 -14
  213. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  214. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +1 -1
  215. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
  216. package/dist/matter/sign-in-redirect/sign-in-redirect.js +48 -10
  217. package/dist/matter/sign-in-redirect/sign-in-redirect.js.map +1 -1
  218. package/dist/matter/variant-selector/variant-selector.js +2 -2
  219. package/dist/matter/variant-selector/variant-selector.js.map +1 -1
  220. package/dist/particles/address-summary/address-summary.js +2 -2
  221. package/dist/particles/address-summary/address-summary.js.map +1 -1
  222. package/dist/particles/alert-dialog/alert-dialog.d.ts +5 -1
  223. package/dist/particles/alert-dialog/alert-dialog.js +5 -2
  224. package/dist/particles/alert-dialog/alert-dialog.js.map +1 -1
  225. package/dist/particles/copy-text/copy-text.d.ts +28 -0
  226. package/dist/particles/copy-text/copy-text.js +140 -0
  227. package/dist/particles/copy-text/copy-text.js.map +1 -0
  228. package/dist/particles/document-field/document-field.d.ts +34 -5
  229. package/dist/particles/document-field/document-field.js +115 -19
  230. package/dist/particles/document-field/document-field.js.map +1 -1
  231. package/dist/particles/field/field.js +1 -1
  232. package/dist/particles/field/field.js.map +1 -1
  233. package/dist/particles/footer-link-group/footer-link-group.d.ts +6 -2
  234. package/dist/particles/footer-link-group/footer-link-group.js +18 -7
  235. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
  236. package/dist/particles/incentives/incentives.d.ts +6 -2
  237. package/dist/particles/incentives/incentives.js +7 -2
  238. package/dist/particles/incentives/incentives.js.map +1 -1
  239. package/dist/particles/logo/logo.d.ts +3 -2
  240. package/dist/particles/logo/logo.js +20 -8
  241. package/dist/particles/logo/logo.js.map +1 -1
  242. package/dist/particles/navigation-link/navigation-link.d.ts +2 -3
  243. package/dist/particles/navigation-link/navigation-link.js +4 -4
  244. package/dist/particles/navigation-link/navigation-link.js.map +1 -1
  245. package/dist/particles/navigation-link-list/navigation-link-list.d.ts +6 -2
  246. package/dist/particles/navigation-link-list/navigation-link-list.js +18 -7
  247. package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -1
  248. package/dist/particles/order-details-back/order-details-back.d.ts +28 -0
  249. package/dist/particles/order-details-back/order-details-back.js +52 -0
  250. package/dist/particles/order-details-back/order-details-back.js.map +1 -0
  251. package/dist/particles/order-status-badge/order-status-badge.d.ts +19 -0
  252. package/dist/particles/order-status-badge/order-status-badge.js +50 -0
  253. package/dist/particles/order-status-badge/order-status-badge.js.map +1 -0
  254. package/dist/particles/phone-field/phone-field.js +2 -2
  255. package/dist/particles/phone-field/phone-field.js.map +1 -1
  256. package/dist/particles/select/select.js +6 -6
  257. package/dist/particles/select/select.js.map +1 -1
  258. package/dist/particles/toast/toast.d.ts +1 -1
  259. package/dist/particles/toast/toast.js +32 -6
  260. package/dist/particles/toast/toast.js.map +1 -1
  261. package/dist/schema.graphql +1014 -28
  262. package/dist/sdk/actions/address-action-provider.d.ts +16 -0
  263. package/dist/sdk/actions/address-action-provider.js +20 -0
  264. package/dist/sdk/actions/address-action-provider.js.map +1 -0
  265. package/dist/sdk/actions/analytics-action-provider.js +1 -1
  266. package/dist/sdk/actions/index.d.ts +3 -1
  267. package/dist/sdk/actions/index.js +3 -1
  268. package/dist/sdk/actions/order-action-provider.d.ts +12 -0
  269. package/dist/sdk/actions/order-action-provider.js +16 -0
  270. package/dist/sdk/actions/order-action-provider.js.map +1 -0
  271. package/dist/sdk/actions/types.d.ts +6 -2
  272. package/dist/sdk/address/address-fields.js +38 -0
  273. package/dist/sdk/address/address-fields.js.map +1 -0
  274. package/dist/sdk/address/checkout-readiness.js +17 -0
  275. package/dist/sdk/address/checkout-readiness.js.map +1 -0
  276. package/dist/sdk/address/constants.js +60 -0
  277. package/dist/sdk/address/constants.js.map +1 -0
  278. package/dist/sdk/address/country-display.js +19 -0
  279. package/dist/sdk/address/country-display.js.map +1 -0
  280. package/dist/sdk/address/country-rules.js +30 -0
  281. package/dist/sdk/address/country-rules.js.map +1 -0
  282. package/dist/sdk/address/format-address.js +18 -0
  283. package/dist/sdk/address/format-address.js.map +1 -0
  284. package/dist/sdk/address/iso-countries.js +262 -0
  285. package/dist/sdk/address/iso-countries.js.map +1 -0
  286. package/dist/sdk/address/layouts.js +56 -0
  287. package/dist/sdk/address/layouts.js.map +1 -0
  288. package/dist/sdk/address/messages.js +97 -0
  289. package/dist/sdk/address/messages.js.map +1 -0
  290. package/dist/sdk/address/operations.d.ts +54 -0
  291. package/dist/sdk/address/operations.js +83 -0
  292. package/dist/sdk/address/operations.js.map +1 -0
  293. package/dist/sdk/address/postal-code-lookup-operations.js +23 -0
  294. package/dist/sdk/address/postal-code-lookup-operations.js.map +1 -0
  295. package/dist/sdk/address/postal-code.js +11 -0
  296. package/dist/sdk/address/postal-code.js.map +1 -0
  297. package/dist/sdk/address/schema.js +14 -0
  298. package/dist/sdk/address/schema.js.map +1 -0
  299. package/dist/sdk/address/server-fields.js +25 -0
  300. package/dist/sdk/address/server-fields.js.map +1 -0
  301. package/dist/sdk/address/switch-country.js +57 -0
  302. package/dist/sdk/address/switch-country.js.map +1 -0
  303. package/dist/sdk/address/types.d.ts +26 -0
  304. package/dist/sdk/address/use-address-actions.d.ts +29 -0
  305. package/dist/sdk/address/use-address-actions.js +247 -0
  306. package/dist/sdk/address/use-address-actions.js.map +1 -0
  307. package/dist/sdk/address/use-address-by-postal-code.js +57 -0
  308. package/dist/sdk/address/use-address-by-postal-code.js.map +1 -0
  309. package/dist/sdk/address/validate-address.js +62 -0
  310. package/dist/sdk/address/validate-address.js.map +1 -0
  311. package/dist/sdk/cache/storefront-cache.js +29 -4
  312. package/dist/sdk/cache/storefront-cache.js.map +1 -1
  313. package/dist/sdk/client/fetch-page-data.d.ts +11 -0
  314. package/dist/sdk/client/fetch-page-data.js +12 -1
  315. package/dist/sdk/client/fetch-page-data.js.map +1 -1
  316. package/dist/sdk/content/create-content-runtime.js +1 -8
  317. package/dist/sdk/content/create-content-runtime.js.map +1 -1
  318. package/dist/sdk/data/failed-fields.js +23 -0
  319. package/dist/sdk/data/failed-fields.js.map +1 -0
  320. package/dist/sdk/data/index.js +2 -2
  321. package/dist/sdk/data/page-reactive-data-root.d.ts +45 -7
  322. package/dist/sdk/data/page-reactive-data-root.js +88 -12
  323. package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
  324. package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
  325. package/dist/sdk/generated/fragment-types.js +2 -0
  326. package/dist/sdk/generated/fragment-types.js.map +1 -1
  327. package/dist/sdk/generated/gql.js +3 -1
  328. package/dist/sdk/generated/gql.js.map +1 -1
  329. package/dist/sdk/generated/graphql.d.ts +8 -0
  330. package/dist/sdk/generated/graphql.js +212 -1
  331. package/dist/sdk/generated/graphql.js.map +1 -1
  332. package/dist/sdk/i18n/messages/en-US.js +138 -1
  333. package/dist/sdk/i18n/messages/en-US.json +138 -1
  334. package/dist/sdk/i18n/messages/en-US.json.d.ts +137 -0
  335. package/dist/sdk/i18n/messages/es-ES.js +138 -1
  336. package/dist/sdk/i18n/messages/es-ES.json +138 -1
  337. package/dist/sdk/i18n/messages/pt-BR.js +138 -1
  338. package/dist/sdk/i18n/messages/pt-BR.json +138 -1
  339. package/dist/sdk/navigation/current-page.js +30 -0
  340. package/dist/sdk/navigation/current-page.js.map +1 -0
  341. package/dist/sdk/navigation/not-found-log.d.ts +28 -0
  342. package/dist/sdk/navigation/not-found-log.js +133 -0
  343. package/dist/sdk/navigation/not-found-log.js.map +1 -0
  344. package/dist/sdk/navigation/path.js +25 -0
  345. package/dist/sdk/navigation/path.js.map +1 -0
  346. package/dist/sdk/navigation/redirect.d.ts +11 -0
  347. package/dist/sdk/navigation/redirect.js +22 -0
  348. package/dist/sdk/navigation/redirect.js.map +1 -0
  349. package/dist/sdk/navigation/report.js +70 -0
  350. package/dist/sdk/navigation/report.js.map +1 -0
  351. package/dist/sdk/navigation/resolve-storefront-href.d.ts +12 -0
  352. package/dist/sdk/navigation/resolve-storefront-href.js +214 -0
  353. package/dist/sdk/navigation/resolve-storefront-href.js.map +1 -0
  354. package/dist/sdk/navigation/route-identity-provider.d.ts +11 -0
  355. package/dist/sdk/navigation/route-identity-provider.js +20 -0
  356. package/dist/sdk/navigation/route-identity-provider.js.map +1 -0
  357. package/dist/sdk/navigation/route-map-provider.d.ts +19 -0
  358. package/dist/sdk/navigation/route-map-provider.js +29 -0
  359. package/dist/sdk/navigation/route-map-provider.js.map +1 -0
  360. package/dist/sdk/navigation/storefront-link.d.ts +16 -0
  361. package/dist/sdk/navigation/storefront-link.js +66 -0
  362. package/dist/sdk/navigation/storefront-link.js.map +1 -0
  363. package/dist/sdk/navigation/types.d.ts +45 -0
  364. package/dist/sdk/navigation/use-storefront-navigation.d.ts +26 -0
  365. package/dist/sdk/navigation/use-storefront-navigation.js +73 -0
  366. package/dist/sdk/navigation/use-storefront-navigation.js.map +1 -0
  367. package/dist/sdk/navigation/use-storefront-route.d.ts +26 -0
  368. package/dist/sdk/navigation/use-storefront-route.js +87 -0
  369. package/dist/sdk/navigation/use-storefront-route.js.map +1 -0
  370. package/dist/sdk/navigation/use-storefront-search-params.d.ts +11 -0
  371. package/dist/sdk/navigation/use-storefront-search-params.js +16 -0
  372. package/dist/sdk/navigation/use-storefront-search-params.js.map +1 -0
  373. package/dist/sdk/orders/completion-badge.d.ts +8 -0
  374. package/dist/sdk/orders/completion-badge.js +47 -0
  375. package/dist/sdk/orders/completion-badge.js.map +1 -0
  376. package/dist/sdk/orders/order-operations.d.ts +19 -0
  377. package/dist/sdk/orders/order-operations.js +21 -0
  378. package/dist/sdk/orders/order-operations.js.map +1 -0
  379. package/dist/sdk/orders/use-order-actions.d.ts +23 -0
  380. package/dist/sdk/orders/use-order-actions.js +62 -0
  381. package/dist/sdk/orders/use-order-actions.js.map +1 -0
  382. package/dist/sdk/payment/gateway-origin.js +26 -13
  383. package/dist/sdk/payment/gateway-origin.js.map +1 -1
  384. package/dist/sdk/payment/gateway.d.ts +14 -2
  385. package/dist/sdk/payment/gateway.js +32 -14
  386. package/dist/sdk/payment/gateway.js.map +1 -1
  387. package/dist/sdk/payment/operations.js +11 -0
  388. package/dist/sdk/payment/operations.js.map +1 -1
  389. package/dist/sdk/payment/submission-registry.d.ts +2 -1
  390. package/dist/sdk/payment/submission-registry.js +12 -8
  391. package/dist/sdk/payment/submission-registry.js.map +1 -1
  392. package/dist/sdk/payment/use-payment-actions.d.ts +5 -3
  393. package/dist/sdk/payment/use-payment-actions.js +5 -2
  394. package/dist/sdk/payment/use-payment-actions.js.map +1 -1
  395. package/dist/sdk/payment/use-place-order.d.ts +6 -3
  396. package/dist/sdk/payment/use-place-order.js +333 -143
  397. package/dist/sdk/payment/use-place-order.js.map +1 -1
  398. package/dist/sdk/seo/page-alternates.d.ts +55 -0
  399. package/dist/sdk/seo/page-alternates.js +132 -0
  400. package/dist/sdk/seo/page-alternates.js.map +1 -0
  401. package/dist/utils/own-value.js +19 -0
  402. package/dist/utils/own-value.js.map +1 -0
  403. package/dist/utils/safe-href.d.ts +4 -4
  404. package/dist/utils/safe-href.js +31 -22
  405. package/dist/utils/safe-href.js.map +1 -1
  406. package/package.json +5 -1
  407. package/skills/storefront-asset/SKILL.md +111 -0
  408. package/skills/storefront-asset/references/api-side.md +153 -0
  409. package/skills/storefront-asset/references/findings.md +40 -0
  410. package/skills/storefront-asset/references/ui-side.md +94 -0
  411. package/src/styles/tailwind.css +27 -0
package/dist/docs/logo.md CHANGED
@@ -40,7 +40,7 @@ Logo
40
40
  |------|------|---------|-------|
41
41
  | `src` | string | — | Brand logo asset URL. Optional, so an element can be authored from the CMS alone. |
42
42
  | `alt` | string | — | Accessible alt text for the logo image. Optional for the same reason. |
43
- | `href` | string | `/` | Navigation destination (configured home). |
43
+ | `href` | page reference or string | `{ "standard": "home" }` | A page reference or a logical path. The default names the home page. A store whose home page declares no `standard` authors `{ "page": "home" }`. |
44
44
  | `loading` | `'lazy' \| 'eager'` | `'eager'` | Set `lazy` below the fold; the default suits the header. |
45
45
 
46
46
  Content model (`logo`) fields, edited in the CMS:
@@ -49,13 +49,13 @@ Content model (`logo`) fields, edited in the CMS:
49
49
  |-------|------|----------|-------|
50
50
  | `src` | string | no | Picked via the media gallery widget. Cleared or absent keeps the authored `src` |
51
51
  | `alt` | string | yes | Accessible alt text |
52
- | `href` | string | no | Cleared or absent keeps the authored `href` |
52
+ | `href` | string | no | A `uri-reference` string. Cleared or absent keeps the authored `href`. A safe string receives the binding prefix at render |
53
53
 
54
54
  **Props and content both work.** The props stay the authoring surface, and a CMS entry overrides them field by field, so a merchant can swap the brand mark for a campaign without a deploy. A store with no CMS binding receives no `$content` and renders from the props alone. The `logo` model puts no `format` on `src`, because a store's logo is usually a root-relative path served from `public/` (`/logo.svg`), which JSON Schema's `uri` format rejects. `href` carries `uri-reference` and the same destination pattern the link-bearing footer models declare, which admits a root-relative path.
55
55
 
56
56
  **Nothing renders without a resolved `src` and `alt`.** Both props are optional and only `alt` is required in the model, so an element can author nothing and take everything from the CMS. Presence is enforced once, at render, on the resolved values: an unconfigured logo renders no element at all rather than a broken image. An optional field that arrives blank reads as unauthored and falls through to the prop; a blank `alt` renders nothing, since an unnamed link is worse than no link.
57
57
 
58
- **A destination that is not a plain web address is dropped.** The resolved `href` is checked at render, and only `http:`, `https:`, `mailto:`, `tel:`, and single-slash site-relative paths are kept. Anything else — a `javascript:` URL, a protocol-relative `//host`, a scheme-less relative path — renders the image with no link around it and logs the reason. No read-time validator enforces a URL pattern, so this is the only gate on a destination the CMS supplied.
58
+ **A string destination that is not a plain web address is dropped.** A CMS `href` is a `uri-reference` string. It is checked at render, and a safe one receives the binding's base path. A page reference, including the default `{ "standard": "home" }`, is not checked as a string. Only `http:`, `https:`, `mailto:`, `tel:`, and single-slash site-relative paths are kept. Anything else — a `javascript:` URL, a protocol-relative `//host`, a scheme-less relative path — renders the image with no link around it and logs the reason, and does not fall back to the prop. No read-time validator enforces a URL pattern, so this is the only gate on a destination the CMS supplied.
59
59
 
60
60
  ---
61
61
 
@@ -68,7 +68,7 @@ Content model (`logo`) fields, edited in the CMS:
68
68
  "props": {
69
69
  "src": "https://store.example/logo.svg",
70
70
  "alt": "Acme Store",
71
- "href": "/"
71
+ "href": { "standard": "home" }
72
72
  },
73
73
  "style": ["$logo"]
74
74
  }
@@ -110,7 +110,7 @@ Bound to a CMS entry, the element authors no content props at all — the entry
110
110
  {
111
111
  "header-logo": {
112
112
  "type": "Logo",
113
- "props": { "src": "https://store.example/logo.svg", "alt": "Acme Store", "href": "/" },
113
+ "props": { "src": "https://store.example/logo.svg", "alt": "Acme Store", "href": { "standard": "home" } },
114
114
  "style": ["w-[140px]", "md:w-[220px]"]
115
115
  }
116
116
  }
@@ -78,7 +78,7 @@ A field Control is absent from the composition means absent from both states and
78
78
 
79
79
  **`.PhoneControl`** — `field` (`'homePhone' | 'mobilePhone'`, default `'mobilePhone'`; compose the Control twice to expose both numbers), `country` (`'US' | 'BR'`, default `'US'`), `label`, `invalidMessage`.
80
80
 
81
- **`.TaxIdControl`** — `label` (default `'National tax ID'`), `invalidMessage`, `lockedReason` (the inline copy shown beside the disabled input when a CPF is already saved).
81
+ **`.TaxIdControl`** — `label` (default `'National tax ID'`), `invalidMessage`, `lockedReason` (the inline copy shown beside the disabled input when a document is already saved). The control masks, validates and normalizes with the active document type: CPF, SSN, SIN or RFC. It sends `document` only (never `documentType`): digits for CPF, SSN and SIN, letters kept for RFC.
82
82
 
83
83
  **`.BirthDateControl`** — `label` (default `'Birth date'`).
84
84
 
@@ -93,8 +93,8 @@ Each Control is a thin binding over an existing presentational particle — it a
93
93
  - **Registration**: in a mount effect, a Control calls `registerField({ key, validate?, normalize? })` and returns the unregister function from the effect. `firstName`/`lastName` register a validator that rejects an empty draft value; every other Control either registers a format-only validator (a present value must be well-formed; empty is always valid) or no validator at all.
94
94
  - **Rendering**: `mode === 'view'` renders `savedValues[key]` as plain text (empty, never a placeholder, when the key was never saved); `mode === 'edit'` renders the bound particle over `draft[key]`, writing through `setField(key, value)`.
95
95
  - **Normalization**: `PhoneControl` registers `normalize = (v) => v ? toE164(v, country) : v`; `BirthDateControl` registers the native `yyyy-mm-dd` ↔ stored-format identity map. Normalization runs once, on Save, only for a field the shopper actually changed.
96
- - **The locked tax ID**: when a saved CPF exists, `TaxIdControl`'s edit branch renders a **disabled** input carrying the saved (masked) value, a `data-fs-my-account-profile-tax-id-readonly` hook, and `lockedReason` — never plain text, never omitted. It registers no validator in this branch and is never dirty. With no saved document, it renders an editable, optional `DocumentField` instead.
97
- - **Self-gate**: `TaxIdControl` renders nothing when the Root's `activeDocumentType` is undefined or unsupported (V0 supports CPF only).
96
+ - **The locked tax ID**: when a saved document exists, `TaxIdControl`'s edit branch renders a **disabled** input carrying the saved (masked) value, a `data-fs-my-account-profile-tax-id-readonly` hook, and `lockedReason` — never plain text, never omitted. It registers no validator in this branch and is never dirty. With no saved document, it renders an editable, optional `DocumentField` instead.
97
+ - **Self-gate**: `TaxIdControl` renders nothing when the Root's `activeDocumentType` is undefined or unsupported. The supported types are CPF, SSN, SIN and RFC; a saved `documentType` of any of them (any casing) wins over the Root's `documentType` prop.
98
98
  - **One phone Control, two bindings**: `PhoneControl`'s `field` prop selects which draft key an instance binds; composing it twice (once per `field` value) exposes both `homePhone` and `mobilePhone` as independent, independently-erasable fields.
99
99
 
100
100
  ---
@@ -172,7 +172,7 @@ Add each field Control id to `profile-root`'s `children` array for the fields th
172
172
  - **Reading `draft` in the view state, or `savedValues` in the edit state.** Each Control must branch on `mode` itself (Decision 2); the Root does not hide this for you.
173
173
  - **Rendering a frame part or field Control outside `MyAccountProfileRoot`.** Every part except `Skeleton` `requiresContext: 'my-account-profile'` and throws otherwise.
174
174
  - **Giving a required Control's native input a `required` HTML attribute.** Requiredness is expressed only through the registered `validate` function (Decision 2 of SFS-3288/3289/3290); a native `required` attribute makes the browser block the form's `submit` event before the Root's own validation and focus logic ever runs.
175
- - **Hiding the `TaxIdControl` in the edit state when a CPF is already saved.** It must render a disabled, locked input instead — a field disappearing between view and edit reads as a bug (product-confirmed, 2026-09-03).
175
+ - **Hiding the `TaxIdControl` in the edit state when a document is already saved.** It must render a disabled, locked input instead — a field disappearing between view and edit reads as a bug (product-confirmed, 2026-09-03).
176
176
  - **Composing only the `mobilePhone` Control on a store whose shoppers check out.** The checkout reads its phone from `homePhone`, and it treats a profile without one as incomplete: a new cart imports only the email and drops the shopper's saved addresses. Compose a `PhoneControl` with `field: "homePhone"` whenever the store sells, alongside the mobile one if the page shows both.
177
177
  - **Adding a `showPhone`/`visible` boolean prop to a Control.** Presence is composition; a boolean visibility prop contradicts compose-or-omit and is out of scope for every Control in this group.
178
178
 
@@ -67,7 +67,7 @@ layout-header
67
67
 
68
68
  | Prop | Type | Required | Notes |
69
69
  |-------|------|----------|-------|
70
- | `links` | array | no | Authored fallback list of `{ label, href, target? }`. Ignored when a CMS entry supplies `links` |
70
+ | `links` | array | no | Authored fallback list of `{ label, href, target? }`. An item `href` may be a page reference or a logical path. Ignored when a CMS entry supplies `links` |
71
71
 
72
72
  Content model (`navigation-link-list`) fields, edited in the CMS:
73
73
 
@@ -75,7 +75,7 @@ Content model (`navigation-link-list`) fields, edited in the CMS:
75
75
  |-------|------|----------|-------|
76
76
  | `links` | array | no | Ordered links. Adding, removing or reordering here changes the navigation with no deployment. Optional so an unfilled entry falls back to the authored list |
77
77
  | `links[].label` | string | yes | Link text. A blank label drops that link — an anchor with no name is unusable |
78
- | `links[].href` | string | yes | Destination. `http:`, `https:`, `mailto:`, `tel:`, or a path starting with a single `/` |
78
+ | `links[].href` | string | yes | A `uri-reference` string: `http:`, `https:`, `mailto:`, `tel:`, or a path starting with a single `/`. The binding prefix is applied at render |
79
79
  | `links[].target` | `_self` \| `_blank` | no | `_blank` opens a new tab and adds `rel="noopener noreferrer"` automatically. Write an "(opens in new tab)" cue into the label — the component announces nothing on its own |
80
80
 
81
81
  ---
@@ -1,7 +1,7 @@
1
1
  # NavigationLink
2
2
 
3
3
  **Category:** navigation
4
- **Purpose:** Client-side navigation link built on Next.js Link. Renders a single `<a>` and moves the shopper between routes without a full-page reload. Carries no commerce data of its own.
4
+ **Purpose:** Client-side navigation link that renders `StorefrontLink`. `href` is a page reference or a logical path. Renders a single `<a>` and moves the shopper between routes without a full-page reload. Carries no commerce data of its own.
5
5
 
6
6
  ---
7
7
 
@@ -57,7 +57,7 @@ Sibling links share the same `children` array on the parent, and their order ref
57
57
 
58
58
  | Prop | Type | Default | Notes |
59
59
  |------|------|---------|-------|
60
- | `href` | `string` | — | Destination. An internal path (`/collection/sale`) keeps client-side navigation; an absolute URL (`https://…`) leaves the store. |
60
+ | `href` | page reference or string | — | A page reference (`{ page }` or `{ standard }`) or a logical path (`/collection/sale`). An absolute URL (`https://…`) leaves the store. The binding prefix is applied at render. |
61
61
  | `target` | `_self` \| `_blank` | `_self` | `_blank` opens the destination in a new tab. The component then adds `noopener` and `noreferrer` to the anchor's `rel` on its own. |
62
62
  | `children` | `string` | — | The link text. This is also the link's accessible name, so it has to describe the destination on its own. |
63
63
 
@@ -68,7 +68,7 @@ Content model (`navigation-link`) fields, edited in the CMS:
68
68
  | Field | Type | Required | Notes |
69
69
  |-------|------|----------|-------|
70
70
  | `text` | string | yes | The link label |
71
- | `href` | string | no | Cleared, absent, or outside the allowlist keeps the authored `href` |
71
+ | `href` | string | no | A `uri-reference` string. Cleared, absent, or outside the allowlist keeps the authored `href`. A safe string receives the binding prefix at render |
72
72
  | `target` | `_self` \| `_blank` | no | Absent keeps the authored `target` |
73
73
 
74
74
  **Props and content both work.** The props stay the authoring surface, and a CMS entry overrides them field by field, so a merchant can retitle a link or repoint it without a deploy. A store with no CMS binding receives no `$content` and renders from the props alone. The safety `rel` follows the *resolved* target, so a `_blank` that arrives from the CMS is defended exactly like an authored one — but the "(opens in new tab)" cue lives in the label, which means a merchant who switches a link to `_blank` has to write that cue into `text` themselves.
@@ -0,0 +1,52 @@
1
+ # OrderCancel
2
+
3
+ **Category:** action
4
+ **Purpose:** Confirms and cancels one eligible order.
5
+
6
+ ---
7
+
8
+ ## Visual cues (how to identify in an image)
9
+
10
+ - A "Cancel order" button on the order page.
11
+ - A confirmation dialog with a reason list, an Other entry, and confirm and dismiss actions.
12
+ - After a successful cancel, the button is gone and a short confirmation sentence remains.
13
+
14
+ The image is the source of truth for layout.
15
+
16
+ ## When to use
17
+
18
+ - On the order details page, for a shopper who may cancel that order.
19
+
20
+ ## When NOT to use
21
+
22
+ - For a toast or a dialog that closes on an outside click.
23
+ - For cancelling a single item.
24
+
25
+ ---
26
+
27
+ ## Composition
28
+
29
+ ```text
30
+ OrderCancel
31
+ ```
32
+
33
+ The dialog, the reason list, and the acknowledgement are inside this matter.
34
+
35
+ ## Components
36
+
37
+ ### OrderCancel
38
+
39
+ No authoring props. The page query passes the order. Reasons and sentences come from the `order-cancel` content model.
40
+
41
+ ## Styling
42
+
43
+ - `data-fs-order-cancel` — the root. `data-fs-order-cancel-outcome` is `idle`, `success`, or `failure`.
44
+ - `data-fs-order-cancel-action` — the button that opens the dialog.
45
+ - `data-fs-alert-dialog-backdrop`, `data-fs-alert-dialog-viewport`, `data-fs-alert-dialog-popup`, `data-fs-alert-dialog-title`, `data-fs-alert-dialog-description` — the overlay. It portals into this root so these hooks stay reachable.
46
+ - `data-fs-order-cancel-reasons` — the reason list. `data-fs-radio-root`, `data-fs-radio-indicator`, and `data-fs-order-cancel-mark` are one option.
47
+ - `data-fs-order-cancel-actions` — the confirm and dismiss row.
48
+ - `data-fs-order-cancel-other` — the free-text field, only while Other is selected.
49
+ - `data-fs-order-cancel-confirm` — the confirm button. Disabled while the write is in flight.
50
+ - `data-fs-order-cancel-dismiss` — the dismiss button.
51
+ - `data-fs-order-cancel-message` — the success or failure acknowledgement.
52
+ - `data-fs-order-cancel-skeleton` — the loading placeholder.
@@ -0,0 +1,63 @@
1
+ # OrderDeliveryAddress
2
+
3
+ **Category:** content
4
+ **Purpose:** The address the order recorded for one delivery option, inside its delivery group.
5
+
6
+ ---
7
+
8
+ ## Visual cues (how to identify in an image)
9
+
10
+ - A short address block under the products of a delivery group on an order details page. It starts with a caption such as "Delivery address" or "Store address".
11
+ - Under a delivery caption, a person's name comes first, then street, number, complement, neighborhood, reference, city, state, postal code, and country code. Fields the order did not store are absent.
12
+ - Under a store caption there is no person's name: the block is the pickup point's address.
13
+
14
+ The image is the source of truth for layout.
15
+
16
+ ## When to use
17
+
18
+ - The order details page, inside each `OrderDeliveryGroup`, after the product rows.
19
+
20
+ ## When NOT to use
21
+
22
+ - For the products of each delivery → use `OrderDeliveryGroup`.
23
+ - For the shopper's saved addresses or an address form → use the address book components.
24
+ - For the billing address of a payment → use the payment components.
25
+
26
+ ---
27
+
28
+ ## Composition
29
+
30
+ `OrderDeliveryAddress` is a leaf. Place it as a child of `OrderDeliveryGroup`; the group renders it once per delivery option and tells it which option it sits in. Outside a group it renders one block per option that has an address.
31
+
32
+ ```text
33
+ OrderDeliveryGroup
34
+ └── OrderDeliveryAddress
35
+ ```
36
+
37
+ ## Components
38
+
39
+ ### OrderDeliveryAddress
40
+
41
+ | Prop | Type | Default | Description |
42
+ |---|---|---|---|
43
+ | deliveryLabel | string | catalogue `fs/order-delivery-address.delivery` | Caption above a delivery address |
44
+ | storeLabel | string | catalogue `fs/order-delivery-address.store` | Caption above a pickup store address |
45
+
46
+ Content model `order-delivery-address` with `deliveryLabel` and `storeLabel`. Content wins over the prop, and the prop wins over the catalogue. A blank value falls through.
47
+
48
+ ## Data
49
+
50
+ The fragment reads `customerOrder(id: $orderId).deliveryOptions` with `addressId`, `deliveryChannel`, and `address`. `$orderId` is the `orderId` route segment. The address carries `receiverName`, `street`, `number`, `complement`, `neighborhood`, `reference`, `city`, `state`, `postalCode`, and `country`.
51
+
52
+ A pickup is an option whose `deliveryChannel` is `pickup-in-point`: it shows the store caption and no recipient. Everything else is a delivery: it shows the delivery caption and the recipient when the order stored one. The values are the order record. The component does not format them with country rules and shows the country as the code the order stored.
53
+
54
+ ## Styling
55
+
56
+ - `data-fs-order-delivery-address` — one address block (an `address` element). `flex flex-wrap gap-x-[4px] gap-y-[2px] px-[16px] pb-[16px] text-[14px] not-italic`.
57
+ - `data-fs-order-delivery-address-channel` — `delivery` or `pickup-in-point`.
58
+ - `data-fs-order-delivery-address-option` — the index of the delivery option.
59
+ - `data-fs-order-delivery-address-label` — the caption. `basis-full font-medium text-[#666666]`.
60
+ - `data-fs-order-delivery-address-recipient` — the recipient name. `basis-full`.
61
+ - `data-fs-order-delivery-address-street`, `-number`, `-complement`, `-neighborhood`, `-reference`, `-city`, `-state`, `-postal-code`, `-country` — one field each, in that order.
62
+ - `data-fs-order-delivery-address-list` — the wrapper when the component renders outside a group. `flex flex-col gap-[16px]`.
63
+ - `data-fs-order-delivery-address-skeleton`, `data-fs-order-delivery-address-skeleton-line` — the pending look.
@@ -0,0 +1,83 @@
1
+ # OrderDeliveryGroup
2
+
3
+ **Category:** content
4
+ **Purpose:** The products of one order grouped by delivery option, one collapsible group per option.
5
+
6
+ ---
7
+
8
+ ## Visual cues (how to identify in an image)
9
+
10
+ - One or more collapsible rows on an order details page. Each row header carries a delivery name such as "Normal" or "Pickup", a delivery estimate when the order has one, a count such as "3 items", and a money amount labeled "Subtotal".
11
+ - An open row lists products: a small image, the name, sometimes a detail such as "Size M" next to the name, a quantity, a unit price, sometimes a struck list price, a line tax when the order recorded one, and a line total.
12
+ - When the page shows a single delivery, the row arrives open. Two or more arrive closed.
13
+
14
+ The image is the source of truth for layout.
15
+
16
+ ## When to use
17
+
18
+ - The order details page, for the products of the order.
19
+
20
+ ## When NOT to use
21
+
22
+ - For the address of each delivery → use `OrderDeliveryAddress`.
23
+ - For the order total, discounts, and shipping lines → use the order summary.
24
+ - For a generic collapsible section → use `Accordion`.
25
+ - For the live cart → use `CartItem`.
26
+
27
+ ---
28
+
29
+ ## Composition
30
+
31
+ `OrderDeliveryGroup` renders the accordion and the rows itself. Do not place `Accordion` or product rows as children. Its children render once per option, after that option's rows, inside the `order-delivery-option` context that carries the option index. `OrderDeliveryAddress` is the child that reads it.
32
+
33
+ ```text
34
+ OrderDeliveryGroup
35
+ └── OrderDeliveryAddress
36
+ ```
37
+
38
+ The group order is the order of `deliveryOptions`.
39
+
40
+ ## Components
41
+
42
+ ### OrderDeliveryGroup
43
+
44
+ | Prop | Type | Default | Description |
45
+ |---|---|---|---|
46
+ | label | string | content, then catalogue `fs/order-delivery-group.label` | Accessible name of the section. The other fixed labels are content too (`order-delivery-group`). Item counts keep `{count}`. |
47
+
48
+ The initial open state is not a prop. One option opens; two or more start closed.
49
+
50
+ ## Data
51
+
52
+ The fragment reads `customerOrder(id: $orderId).deliveryOptions`. `$orderId` is the `orderId` route segment. Each option reads `selectedSla`, `deliveryChannel`, `shippingEstimateDate`, and its `items` with `id`, `name`, `quantity`, `image`, `sellingPrice`, `listPrice`, `total`, `tax`, and `customFields`. The address is not selected. The header shows the estimate when the instant is valid, and nothing when it is missing. A row shows `tax` when the line recorded one, including zero, and omits it when the value is absent.
53
+
54
+ The header count is the sum of the item quantities. The subtotal is the sum of the line totals the order carries. The component never multiplies a price by a quantity.
55
+
56
+ ## Styling
57
+
58
+ - `data-fs-order-delivery-group` — the section. `flex flex-col gap-[16px]`.
59
+ - `data-fs-order-delivery-group-count` — the number of options.
60
+ - `data-fs-order-delivery-group-option` — one group. `rounded-[8px] border border-[#E5E5E5]`.
61
+ - `data-fs-order-delivery-group-option-channel` — `delivery` or `pickup-in-point`.
62
+ - `data-fs-order-delivery-group-option-header`, `data-fs-order-delivery-group-option-trigger` — the group header and its button. `flex items-center justify-between p-[16px]`.
63
+ - `data-fs-order-delivery-group-option-panel` — the collapsible body.
64
+ - `data-fs-order-delivery-group-option-name` — the delivery name. `text-[16px] font-medium`.
65
+ - `data-fs-order-delivery-group-option-estimate-label`, `data-fs-order-delivery-group-option-estimate` — the delivery estimate caption and instant. The value is a `time`.
66
+ - `data-fs-order-delivery-group-option-items` — the count sentence. `text-[14px] text-[#666666]`.
67
+ - `data-fs-order-delivery-group-option-subtotal-label`, `data-fs-order-delivery-group-option-subtotal` — the subtotal caption and amount.
68
+ - `data-fs-order-delivery-group-rows` — the list of products. `flex flex-col gap-[12px] p-[16px]`.
69
+ - `data-fs-order-delivery-group-row` — one product. `grid grid-cols-[64px_1fr_auto] gap-[12px]`.
70
+ - `data-fs-order-delivery-group-row-image` — the product image. `size-[64px] object-contain`.
71
+ - `data-fs-order-delivery-group-row-details` — the name and the facts under it.
72
+ - `data-fs-order-delivery-group-row-name` — the product name.
73
+ - `data-fs-order-delivery-group-row-fact` — one fact line (quantity, unit price, list price, or tax).
74
+ - `data-fs-order-delivery-group-row-custom-field`, `-custom-field-name`, `-custom-field-value` — a custom value next to the name.
75
+ - `data-fs-order-delivery-group-row-quantity-label`, `data-fs-order-delivery-group-row-quantity` — the quantity caption and value.
76
+ - `data-fs-order-delivery-group-row-unit-price-label`, `data-fs-order-delivery-group-row-unit-price` — the unit price.
77
+ - `data-fs-order-delivery-group-row-list-price-label`, `data-fs-order-delivery-group-row-list-price` — the list price, only when it differs. `line-through`.
78
+ - `data-fs-order-delivery-group-row-tax-label`, `data-fs-order-delivery-group-row-tax` — the line tax, only when the order recorded one.
79
+ - `data-fs-order-delivery-group-row-aside` — the line total, aligned to the end of the row.
80
+ - `data-fs-order-delivery-group-row-total-label`, `data-fs-order-delivery-group-row-total` — the line total.
81
+ - `data-fs-order-delivery-group-skeleton`, `data-fs-order-delivery-group-skeleton-option` — the pending look.
82
+
83
+ The accordion particle adds `data-fs-accordion-*` and Base UI adds `data-open` and `data-closed`.
@@ -0,0 +1,41 @@
1
+ # OrderDetailsBack
2
+
3
+ **Category:** action
4
+ **Purpose:** Returns from one order to the order list.
5
+
6
+ ---
7
+
8
+ ## Visual cues (how to identify in an image)
9
+
10
+ A single text link above the order heading, reading as a return to the orders list. The image is the source of truth for layout.
11
+
12
+ ## When to use
13
+
14
+ The first element of an order details page whose account layout does not already show a breadcrumb.
15
+
16
+ ## When NOT to use
17
+
18
+ - A layout that already composes the account breadcrumb. Leave this element out of that page.
19
+ - The order list itself.
20
+
21
+ ---
22
+
23
+ ## Composition
24
+
25
+ ```
26
+ OrderDetailsBack
27
+ ```
28
+
29
+ `OrderDetailsBack` is one element. It has no schema props and no children.
30
+
31
+ ## Components
32
+
33
+ ### OrderDetailsBack
34
+
35
+ | Prop | Type | Default | Purpose |
36
+ |---|---|---|---|
37
+ | — | — | — | No schema props. The label is content (`order-details-back`); a blank field keeps `fs/order.back-to-orders`. The href is `/pvt/orders`. |
38
+
39
+ ## Styling hooks
40
+
41
+ `data-fs-order-details-back`.
@@ -0,0 +1,48 @@
1
+ # OrderDetailsHeader
2
+
3
+ **Category:** content
4
+ **Purpose:** The top of an order page: the order number, a copy action for that number, and the status badge.
5
+
6
+ ---
7
+
8
+ ## Visual cues (how to identify in an image)
9
+
10
+ A page heading with a short prefix and an order number, a copy action beside it, and a status badge. The image is the source of truth for layout.
11
+
12
+ ## When to use
13
+
14
+ The first section of an order details page, once.
15
+
16
+ ## When NOT to use
17
+
18
+ - Building the copy control. Compose `CopyText`.
19
+ - Building the status sentence. Compose `OrderStatusBadge`.
20
+ - Mapping an OMS status code. The header reads `completion` from the order.
21
+
22
+ ---
23
+
24
+ ## Composition
25
+
26
+ ```
27
+ OrderDetailsHeader
28
+ ├── heading (prefix + number)
29
+ ├── CopyText
30
+ └── OrderStatusBadge
31
+ ```
32
+
33
+ ## Components
34
+
35
+ ### OrderDetailsHeader
36
+
37
+ | Prop | Type | Default | Purpose |
38
+ |---|---|---|---|
39
+ | `$data` | `{ id, completion } \| null` | — | The `customerOrder` the generator passes. Null renders nothing. |
40
+ | `prefix` | string | `Order #` | Copy before the number. Content wins. An empty string, with no content, omits the prefix. |
41
+ | `copyLabel` | string | `Copy` | Visible label of the copy action. Content wins. |
42
+ | `copyAccessibleName` | string | `Copy order number` | Accessible name of the copy action. Content wins. |
43
+
44
+ Content id `order-details-header` also carries the copy acknowledgement (`copyCopied`, `copyFailure`, `copyDismiss`) and one field per status sentence (`statusInProgress`, `statusCancellationRequested`, `statusCancelled`, `statusDelivered`, `statusShipped`, `statusReadyForPickup`, `statusCollected`, `statusPlaceholder`). A blank field keeps the catalogue. The list page does not read this entry.
45
+
46
+ ## Styling hooks
47
+
48
+ `data-fs-order-details-header`, `data-fs-order-details-header-heading`, `data-fs-order-details-header-prefix`, `data-fs-order-details-header-number`, `data-fs-order-details-header-copy`, `data-fs-order-details-header-status`.
@@ -0,0 +1,46 @@
1
+ # OrderListRow
2
+
3
+ **Category:** content
4
+ **Purpose:** One order in the list, as a link to that order.
5
+
6
+ ---
7
+
8
+ ## Visual cues (how to identify in an image)
9
+
10
+ - One clickable row with an order number, a date, a money amount, a small count, and a status label.
11
+ - An ongoing row may also show a delivery date. A completed or cancelled row does not.
12
+
13
+ The image is the source of truth for layout.
14
+
15
+ ## When to use
16
+
17
+ - Inside `OrderList`, which renders one row per order. Do not place this component in a page schema.
18
+
19
+ ## When NOT to use
20
+
21
+ - For the whole page of orders → use `OrderList`.
22
+ - For the status sentence alone → use `OrderStatusBadge`.
23
+
24
+ ---
25
+
26
+ ## Composition
27
+
28
+ `OrderList` owns the rows. There is no page-schema child relationship.
29
+
30
+ ```text
31
+ OrderList
32
+ ```
33
+
34
+ ## Components
35
+
36
+ ### OrderListRow
37
+
38
+ No props. The list passes the order.
39
+
40
+ ## Styling
41
+
42
+ - `data-fs-order-list-row` — the link. `flex flex-col gap-[4px]`.
43
+ - `data-fs-order-list-row-state` — `ongoing`, `completed`, or `cancelled`.
44
+ - `data-fs-order-list-row-id` — the order number. `text-[16px] font-medium`.
45
+ - `data-fs-order-list-row-placed`, `data-fs-order-list-row-total`, `data-fs-order-list-row-count` — the facts.
46
+ - `data-fs-order-list-row-estimate` — the delivery estimate, only while the order is ongoing.
@@ -0,0 +1,101 @@
1
+ # OrderListSearch
2
+
3
+ **Category:** action
4
+ **Purpose:** A text field and a placed-date range that ask the orders page for a term and a period.
5
+
6
+ ---
7
+
8
+ ## Visual cues (how to identify in an image)
9
+
10
+ - A text field whose label names the order number.
11
+ - Two date fields, a start and an end, for the date the order was placed.
12
+ - A submit button, and a clear link when a term or a date is already in the URL.
13
+
14
+ The image is the source of truth for layout.
15
+
16
+ ## When to use
17
+
18
+ - On the orders page, as the control that narrows the list by a term and by the dates an order was placed.
19
+
20
+ ## When NOT to use
21
+
22
+ - For the rows, the empty sentences, or the page controls → those belong to the list, which reads the params this form writes.
23
+ - For the four view choices → that is `OrderListViews`, which writes `view`.
24
+ - For a filter of the orders already on screen → this form loads the page again.
25
+ - For a product search of its own → the term is the route's text search.
26
+
27
+ ---
28
+
29
+ ## Composition
30
+
31
+ `OrderListSearch` is a leaf element in the PageSchema. It renders its own fields and takes no children. The list is a sibling on the page, not a child of this element.
32
+
33
+ ```text
34
+ OrderListSearch
35
+ ```
36
+
37
+ ## Components
38
+
39
+ ### OrderListSearch
40
+
41
+ | Prop | Type | Default | Notes |
42
+ |------|------|---------|-------|
43
+ | `label` | string | `Order number` | Visible label of the text field. |
44
+ | `fromLabel` | string | `Placed from` | Visible label of the from day. |
45
+ | `toLabel` | string | `Placed to` | Visible label of the to day. |
46
+ | `submitLabel` | string | `Search` | Submit button. |
47
+ | `clearLabel` | string | `Clear search` | Clear link. Rendered only when the URL already has a criterion. |
48
+ | `invalidRangeMessage` | string | `The start date is after the end date.` | Shown when the from day is after the to day. |
49
+
50
+ Content model (`order-list-search`) fields, edited in the CMS. A non-blank field wins over the matching prop. A blank field falls through to the prop, then to the default. A blank field does not remove a control.
51
+
52
+ | Field | Type | Required | Notes |
53
+ |-------|------|----------|-------|
54
+ | `label` | string | no | Maps to `label`. |
55
+ | `from` | string | no | Maps to `fromLabel`. |
56
+ | `to` | string | no | Maps to `toLabel`. |
57
+ | `submit` | string | no | Maps to `submitLabel`. |
58
+ | `clear` | string | no | Maps to `clearLabel`. |
59
+ | `invalidRange` | string | no | Maps to `invalidRangeMessage`. |
60
+
61
+ **The param keys are fixed.** The term is `search`. The days are `placedFrom` and `placedTo`, as RFC 3339 UTC instants of the local start and the local end of the picked days. Renaming a label does not change the keys. Submit and clear delete `after` and keep `view`.
62
+
63
+ **An inverted range is not written.** The message is shown and the URL stays. One empty day is an open range. Render does not replace the URL. A `YYYY-MM-DD` value in `placedFrom` or `placedTo` is not an instant, so that input stays empty.
64
+
65
+ **No fragment.** This matter does not read `customerOrders` and does not decide which orders match.
66
+
67
+ ---
68
+
69
+ ## Canonical schema example
70
+
71
+ ```json
72
+ {
73
+ "order-search": {
74
+ "type": "OrderListSearch",
75
+ "props": {
76
+ "label": "Order number",
77
+ "fromLabel": "Placed from",
78
+ "toLabel": "Placed to",
79
+ "submitLabel": "Search",
80
+ "clearLabel": "Clear search",
81
+ "invalidRangeMessage": "The start date is after the end date."
82
+ },
83
+ "children": [],
84
+ "style": ["flex flex-wrap items-end gap-[12px]"]
85
+ }
86
+ }
87
+ ```
88
+
89
+ ## Common mistakes
90
+
91
+ - Filtering the orders already rendered in the browser. The route narrows the list.
92
+ - Sending the calendar day `YYYY-MM-DD` as `placedFrom`. The value is the local start of that day, as an RFC 3339 instant.
93
+ - Dropping `view` on submit. A search narrows the view the shopper already chose.
94
+ - Keeping `after`. A new term or range starts at the first page.
95
+ - Building the empty sentence here. The list says that nothing matched. This form shows the criteria and clears them.
96
+
97
+ ## Styling
98
+
99
+ No CSS file. The form carries `data-fs-order-list-search`. While the range is invalid it also carries `data-fs-order-list-search-invalid`. The text field carries `data-fs-order-list-search-term`. The days carry `data-fs-order-list-search-from` and `data-fs-order-list-search-to`. The clear link carries `data-fs-order-list-search-clear`.
100
+
101
+ A row of the field, the two days, and the button is `flex flex-wrap items-end gap-[12px]` on the form. The invalid message is typically `text-[14px]` on the paragraph.