@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.
- package/CHANGELOG.md +43 -0
- package/dist/actions.json +152 -1
- package/dist/catalog.json +1264 -142
- package/dist/cli/index.d.ts +512 -63
- package/dist/cli/index.js +2098 -686
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/server-runtime.js +44 -24
- package/dist/cli/server-runtime.js.map +1 -1
- package/dist/client.d.ts +5 -1
- package/dist/client.js +5 -1
- package/dist/components.d.ts +34 -7
- package/dist/components.js +38 -11
- package/dist/content-types.json +523 -0
- package/dist/core/dist/define-component.d.ts +6 -1
- package/dist/docs/account-access-gate.md +4 -4
- package/dist/docs/account-address-book.md +519 -0
- package/dist/docs/account-entry-point.md +1 -1
- package/dist/docs/account-menu.md +5 -5
- package/dist/docs/alert-dialog.md +2 -2
- package/dist/docs/billing-address.md +17 -9
- package/dist/docs/card-entry.md +37 -6
- package/dist/docs/cardholder-document.md +16 -14
- package/dist/docs/cart-item.md +1 -1
- package/dist/docs/cart.md +8 -8
- package/dist/docs/client-profile-fieldset.md +7 -5
- package/dist/docs/copy-text.md +84 -0
- package/dist/docs/document-field.md +8 -8
- package/dist/docs/footer-link-group.md +2 -2
- package/dist/docs/header-root.md +1 -1
- package/dist/docs/incentives.md +2 -2
- package/dist/docs/logo.md +5 -5
- package/dist/docs/my-account-profile.md +4 -4
- package/dist/docs/navigation-link-list.md +2 -2
- package/dist/docs/navigation-link.md +3 -3
- package/dist/docs/order-cancel.md +52 -0
- package/dist/docs/order-delivery-address.md +63 -0
- package/dist/docs/order-delivery-group.md +83 -0
- package/dist/docs/order-details-back.md +41 -0
- package/dist/docs/order-details-header.md +48 -0
- package/dist/docs/order-list-row.md +46 -0
- package/dist/docs/order-list-search.md +101 -0
- package/dist/docs/order-list-views.md +97 -0
- package/dist/docs/order-list.md +94 -0
- package/dist/docs/order-payment.md +94 -0
- package/dist/docs/order-placed-date.md +49 -0
- package/dist/docs/order-placed-payment-summary.md +13 -15
- package/dist/docs/order-placed.md +225 -0
- package/dist/docs/order-progress.md +88 -0
- package/dist/docs/order-status-badge.md +91 -0
- package/dist/docs/order-summary.md +53 -0
- package/dist/docs/payment-method-badges.md +14 -3
- package/dist/docs/place-order.md +13 -9
- package/dist/docs/saved-cards.md +2 -2
- package/dist/docs/select.md +19 -6
- package/dist/docs/session.md +1 -1
- package/dist/docs/shipping-address.md +1 -1
- package/dist/docs/sign-in-redirect.md +6 -6
- package/dist/docs/toast.md +7 -3
- package/dist/index.d.ts +6 -2
- package/dist/index.js +2 -1
- package/dist/internal/client.d.ts +6 -1
- package/dist/internal/client.js +7 -2
- package/dist/internal/server.d.ts +6 -2
- package/dist/internal/server.js +6 -2
- package/dist/matter/account-access-gate/account-access-gate.d.ts +2 -1
- package/dist/matter/account-access-gate/account-access-gate.js +19 -16
- package/dist/matter/account-access-gate/account-access-gate.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book-delete.d.ts +60 -0
- package/dist/matter/account-address-book/account-address-book-delete.js +184 -0
- package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +19 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.js +50 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +42 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.js +146 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +25 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.js +72 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book.d.ts +120 -0
- package/dist/matter/account-address-book/account-address-book.js +469 -0
- package/dist/matter/account-address-book/account-address-book.js.map +1 -0
- package/dist/matter/account-address-book/account-address-country-switch.js +59 -0
- package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -0
- package/dist/matter/account-address-book/account-address-country.d.ts +36 -0
- package/dist/matter/account-address-book/account-address-country.js +151 -0
- package/dist/matter/account-address-book/account-address-country.js.map +1 -0
- package/dist/matter/account-address-book/account-address-first-line.js +11 -0
- package/dist/matter/account-address-book/account-address-first-line.js.map +1 -0
- package/dist/matter/account-address-book/account-address-form-context.d.ts +55 -0
- package/dist/matter/account-address-book/account-address-form-context.js +14 -0
- package/dist/matter/account-address-book/account-address-form-context.js.map +1 -0
- package/dist/matter/account-address-book/account-address-form.d.ts +85 -0
- package/dist/matter/account-address-book/account-address-form.js +946 -0
- package/dist/matter/account-address-book/account-address-form.js.map +1 -0
- package/dist/matter/account-address-book/account-address-postal-autofill.js +189 -0
- package/dist/matter/account-address-book/account-address-postal-autofill.js.map +1 -0
- package/dist/matter/account-address-book/account-address-record.d.ts +26 -0
- package/dist/matter/account-address-book/account-address-record.js +138 -0
- package/dist/matter/account-address-book/account-address-record.js.map +1 -0
- package/dist/matter/account-entry-point/account-entry-point.js +11 -11
- package/dist/matter/account-entry-point/account-entry-point.js.map +1 -1
- package/dist/matter/account-menu/account-menu.d.ts +7 -3
- package/dist/matter/account-menu/account-menu.js +69 -28
- package/dist/matter/account-menu/account-menu.js.map +1 -1
- package/dist/matter/billing-address/billing-address.d.ts +30 -17
- package/dist/matter/billing-address/billing-address.js +128 -33
- package/dist/matter/billing-address/billing-address.js.map +1 -1
- package/dist/matter/breadcrumb/breadcrumb.js +2 -2
- package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/matter/card-entry/card-capture.js +4 -3
- package/dist/matter/card-entry/card-capture.js.map +1 -1
- package/dist/matter/card-entry/card-entry.d.ts +5 -3
- package/dist/matter/card-entry/card-entry.js +77 -27
- package/dist/matter/card-entry/card-entry.js.map +1 -1
- package/dist/matter/cardholder-document/cardholder-document.d.ts +10 -9
- package/dist/matter/cardholder-document/cardholder-document.js +36 -16
- package/dist/matter/cardholder-document/cardholder-document.js.map +1 -1
- package/dist/matter/cart/cart.d.ts +7 -2
- package/dist/matter/cart/cart.js +29 -26
- package/dist/matter/cart/cart.js.map +1 -1
- package/dist/matter/cart-item/cart-item.js +2 -2
- package/dist/matter/cart-item/cart-item.js.map +1 -1
- package/dist/matter/client-preferences/client-preferences-fieldset.js +1 -1
- package/dist/matter/client-profile-form/client-profile-fieldset.js +8 -5
- package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
- package/dist/matter/identity-edit/identity-edit.js +3 -3
- package/dist/matter/identity-edit/identity-edit.js.map +1 -1
- package/dist/matter/identity-summary/identity-summary.js +2 -2
- package/dist/matter/identity-summary/identity-summary.js.map +1 -1
- package/dist/matter/my-account-profile/my-account-profile.d.ts +3 -3
- package/dist/matter/my-account-profile/my-account-profile.js +4 -4
- package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
- package/dist/matter/order-cancel/order-cancel.d.ts +110 -0
- package/dist/matter/order-cancel/order-cancel.js +344 -0
- package/dist/matter/order-cancel/order-cancel.js.map +1 -0
- package/dist/matter/order-delivery-address/order-delivery-address.d.ts +73 -0
- package/dist/matter/order-delivery-address/order-delivery-address.js +172 -0
- package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -0
- package/dist/matter/order-delivery-group/order-delivery-group.d.ts +128 -0
- package/dist/matter/order-delivery-group/order-delivery-group.js +408 -0
- package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -0
- package/dist/matter/order-details-header/order-details-header.d.ts +104 -0
- package/dist/matter/order-details-header/order-details-header.js +190 -0
- package/dist/matter/order-details-header/order-details-header.js.map +1 -0
- package/dist/matter/order-list/customer-orders-filter.d.ts +12 -0
- package/dist/matter/order-list/customer-orders-filter.js +30 -0
- package/dist/matter/order-list/customer-orders-filter.js.map +1 -0
- package/dist/matter/order-list/order-list.d.ts +121 -0
- package/dist/matter/order-list/order-list.js +395 -0
- package/dist/matter/order-list/order-list.js.map +1 -0
- package/dist/matter/order-list-row/order-list-row.d.ts +44 -0
- package/dist/matter/order-list-row/order-list-row.js +127 -0
- package/dist/matter/order-list-row/order-list-row.js.map +1 -0
- package/dist/matter/order-list-search/order-list-search.d.ts +72 -0
- package/dist/matter/order-list-search/order-list-search.js +296 -0
- package/dist/matter/order-list-search/order-list-search.js.map +1 -0
- package/dist/matter/order-list-views/order-list-views.d.ts +65 -0
- package/dist/matter/order-list-views/order-list-views.js +154 -0
- package/dist/matter/order-list-views/order-list-views.js.map +1 -0
- package/dist/matter/order-payment/order-payment.d.ts +83 -0
- package/dist/matter/order-payment/order-payment.js +258 -0
- package/dist/matter/order-payment/order-payment.js.map +1 -0
- package/dist/matter/order-placed/order-placed-deliveries.d.ts +145 -0
- package/dist/matter/order-placed/order-placed-deliveries.js +380 -0
- package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -0
- package/dist/matter/order-placed/order-placed.d.ts +122 -0
- package/dist/matter/order-placed/order-placed.js +452 -0
- package/dist/matter/order-placed/order-placed.js.map +1 -0
- package/dist/matter/order-placed-date/order-placed-date.d.ts +45 -0
- package/dist/matter/order-placed-date/order-placed-date.js +92 -0
- package/dist/matter/order-placed-date/order-placed-date.js.map +1 -0
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +5 -8
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +29 -81
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
- package/dist/matter/order-progress/order-progress.d.ts +85 -0
- package/dist/matter/order-progress/order-progress.js +203 -0
- package/dist/matter/order-progress/order-progress.js.map +1 -0
- package/dist/matter/order-summary/order-summary.d.ts +81 -0
- package/dist/matter/order-summary/order-summary.js +192 -0
- package/dist/matter/order-summary/order-summary.js.map +1 -0
- package/dist/matter/payment/cardholder-document-rule.d.ts +35 -0
- package/dist/matter/payment/cardholder-document-rule.js +35 -0
- package/dist/matter/payment/cardholder-document-rule.js.map +1 -0
- package/dist/matter/payment/payment-card-capture.js +38 -23
- package/dist/matter/payment/payment-card-capture.js.map +1 -1
- package/dist/matter/payment/payment-controller.js +11 -0
- package/dist/matter/payment/payment-controller.js.map +1 -1
- package/dist/matter/payment/payment-method-badges.js +4 -2
- package/dist/matter/payment/payment-method-badges.js.map +1 -1
- package/dist/matter/payment/payment.js +11 -0
- package/dist/matter/payment/payment.js.map +1 -1
- package/dist/matter/payment/use-payment-method-selection.d.ts +39 -0
- package/dist/matter/payment/use-payment-method-selection.js +30 -2
- package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
- package/dist/matter/payment/use-payment-submit-gate.d.ts +16 -2
- package/dist/matter/payment/use-payment-submit-gate.js +42 -14
- package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
- package/dist/matter/place-order/place-order.d.ts +12 -7
- package/dist/matter/place-order/place-order.js +126 -103
- package/dist/matter/place-order/place-order.js.map +1 -1
- package/dist/matter/pricing/pricing.js +5 -5
- package/dist/matter/pricing/pricing.js.map +1 -1
- package/dist/matter/region/region.js +1 -1
- package/dist/matter/saved-cards/saved-cards.js +26 -15
- package/dist/matter/saved-cards/saved-cards.js.map +1 -1
- package/dist/matter/session/session.js +2 -2
- package/dist/matter/session/session.js.map +1 -1
- package/dist/matter/shipping-address/country-descriptors.d.ts +1 -0
- package/dist/matter/shipping-address/country-descriptors.js +23 -1
- package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
- package/dist/matter/shipping-address/shipping-address.js +62 -14
- package/dist/matter/shipping-address/shipping-address.js.map +1 -1
- package/dist/matter/shipping-simulator/shipping-simulator.d.ts +1 -1
- package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
- package/dist/matter/sign-in-redirect/sign-in-redirect.js +48 -10
- package/dist/matter/sign-in-redirect/sign-in-redirect.js.map +1 -1
- package/dist/matter/variant-selector/variant-selector.js +2 -2
- package/dist/matter/variant-selector/variant-selector.js.map +1 -1
- package/dist/particles/address-summary/address-summary.js +2 -2
- package/dist/particles/address-summary/address-summary.js.map +1 -1
- package/dist/particles/alert-dialog/alert-dialog.d.ts +5 -1
- package/dist/particles/alert-dialog/alert-dialog.js +5 -2
- package/dist/particles/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/particles/copy-text/copy-text.d.ts +28 -0
- package/dist/particles/copy-text/copy-text.js +140 -0
- package/dist/particles/copy-text/copy-text.js.map +1 -0
- package/dist/particles/document-field/document-field.d.ts +34 -5
- package/dist/particles/document-field/document-field.js +115 -19
- package/dist/particles/document-field/document-field.js.map +1 -1
- package/dist/particles/field/field.js +1 -1
- package/dist/particles/field/field.js.map +1 -1
- package/dist/particles/footer-link-group/footer-link-group.d.ts +6 -2
- package/dist/particles/footer-link-group/footer-link-group.js +18 -7
- package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
- package/dist/particles/incentives/incentives.d.ts +6 -2
- package/dist/particles/incentives/incentives.js +7 -2
- package/dist/particles/incentives/incentives.js.map +1 -1
- package/dist/particles/logo/logo.d.ts +3 -2
- package/dist/particles/logo/logo.js +20 -8
- package/dist/particles/logo/logo.js.map +1 -1
- package/dist/particles/navigation-link/navigation-link.d.ts +2 -3
- package/dist/particles/navigation-link/navigation-link.js +4 -4
- package/dist/particles/navigation-link/navigation-link.js.map +1 -1
- package/dist/particles/navigation-link-list/navigation-link-list.d.ts +6 -2
- package/dist/particles/navigation-link-list/navigation-link-list.js +18 -7
- package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -1
- package/dist/particles/order-details-back/order-details-back.d.ts +28 -0
- package/dist/particles/order-details-back/order-details-back.js +52 -0
- package/dist/particles/order-details-back/order-details-back.js.map +1 -0
- package/dist/particles/order-status-badge/order-status-badge.d.ts +19 -0
- package/dist/particles/order-status-badge/order-status-badge.js +50 -0
- package/dist/particles/order-status-badge/order-status-badge.js.map +1 -0
- package/dist/particles/phone-field/phone-field.js +2 -2
- package/dist/particles/phone-field/phone-field.js.map +1 -1
- package/dist/particles/select/select.js +6 -6
- package/dist/particles/select/select.js.map +1 -1
- package/dist/particles/toast/toast.d.ts +1 -1
- package/dist/particles/toast/toast.js +32 -6
- package/dist/particles/toast/toast.js.map +1 -1
- package/dist/schema.graphql +1014 -28
- package/dist/sdk/actions/address-action-provider.d.ts +16 -0
- package/dist/sdk/actions/address-action-provider.js +20 -0
- package/dist/sdk/actions/address-action-provider.js.map +1 -0
- package/dist/sdk/actions/analytics-action-provider.js +1 -1
- package/dist/sdk/actions/index.d.ts +3 -1
- package/dist/sdk/actions/index.js +3 -1
- package/dist/sdk/actions/order-action-provider.d.ts +12 -0
- package/dist/sdk/actions/order-action-provider.js +16 -0
- package/dist/sdk/actions/order-action-provider.js.map +1 -0
- package/dist/sdk/actions/types.d.ts +6 -2
- package/dist/sdk/address/address-fields.js +38 -0
- package/dist/sdk/address/address-fields.js.map +1 -0
- package/dist/sdk/address/checkout-readiness.js +17 -0
- package/dist/sdk/address/checkout-readiness.js.map +1 -0
- package/dist/sdk/address/constants.js +60 -0
- package/dist/sdk/address/constants.js.map +1 -0
- package/dist/sdk/address/country-display.js +19 -0
- package/dist/sdk/address/country-display.js.map +1 -0
- package/dist/sdk/address/country-rules.js +30 -0
- package/dist/sdk/address/country-rules.js.map +1 -0
- package/dist/sdk/address/format-address.js +18 -0
- package/dist/sdk/address/format-address.js.map +1 -0
- package/dist/sdk/address/iso-countries.js +262 -0
- package/dist/sdk/address/iso-countries.js.map +1 -0
- package/dist/sdk/address/layouts.js +56 -0
- package/dist/sdk/address/layouts.js.map +1 -0
- package/dist/sdk/address/messages.js +97 -0
- package/dist/sdk/address/messages.js.map +1 -0
- package/dist/sdk/address/operations.d.ts +54 -0
- package/dist/sdk/address/operations.js +83 -0
- package/dist/sdk/address/operations.js.map +1 -0
- package/dist/sdk/address/postal-code-lookup-operations.js +23 -0
- package/dist/sdk/address/postal-code-lookup-operations.js.map +1 -0
- package/dist/sdk/address/postal-code.js +11 -0
- package/dist/sdk/address/postal-code.js.map +1 -0
- package/dist/sdk/address/schema.js +14 -0
- package/dist/sdk/address/schema.js.map +1 -0
- package/dist/sdk/address/server-fields.js +25 -0
- package/dist/sdk/address/server-fields.js.map +1 -0
- package/dist/sdk/address/switch-country.js +57 -0
- package/dist/sdk/address/switch-country.js.map +1 -0
- package/dist/sdk/address/types.d.ts +26 -0
- package/dist/sdk/address/use-address-actions.d.ts +29 -0
- package/dist/sdk/address/use-address-actions.js +247 -0
- package/dist/sdk/address/use-address-actions.js.map +1 -0
- package/dist/sdk/address/use-address-by-postal-code.js +57 -0
- package/dist/sdk/address/use-address-by-postal-code.js.map +1 -0
- package/dist/sdk/address/validate-address.js +62 -0
- package/dist/sdk/address/validate-address.js.map +1 -0
- package/dist/sdk/cache/storefront-cache.js +29 -4
- package/dist/sdk/cache/storefront-cache.js.map +1 -1
- package/dist/sdk/client/fetch-page-data.d.ts +11 -0
- package/dist/sdk/client/fetch-page-data.js +12 -1
- package/dist/sdk/client/fetch-page-data.js.map +1 -1
- package/dist/sdk/content/create-content-runtime.js +1 -8
- package/dist/sdk/content/create-content-runtime.js.map +1 -1
- package/dist/sdk/data/failed-fields.js +23 -0
- package/dist/sdk/data/failed-fields.js.map +1 -0
- package/dist/sdk/data/index.js +2 -2
- package/dist/sdk/data/page-reactive-data-root.d.ts +45 -7
- package/dist/sdk/data/page-reactive-data-root.js +88 -12
- package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
- package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
- package/dist/sdk/generated/fragment-types.js +2 -0
- package/dist/sdk/generated/fragment-types.js.map +1 -1
- package/dist/sdk/generated/gql.js +3 -1
- package/dist/sdk/generated/gql.js.map +1 -1
- package/dist/sdk/generated/graphql.d.ts +8 -0
- package/dist/sdk/generated/graphql.js +212 -1
- package/dist/sdk/generated/graphql.js.map +1 -1
- package/dist/sdk/i18n/messages/en-US.js +138 -1
- package/dist/sdk/i18n/messages/en-US.json +138 -1
- package/dist/sdk/i18n/messages/en-US.json.d.ts +137 -0
- package/dist/sdk/i18n/messages/es-ES.js +138 -1
- package/dist/sdk/i18n/messages/es-ES.json +138 -1
- package/dist/sdk/i18n/messages/pt-BR.js +138 -1
- package/dist/sdk/i18n/messages/pt-BR.json +138 -1
- package/dist/sdk/navigation/current-page.js +30 -0
- package/dist/sdk/navigation/current-page.js.map +1 -0
- package/dist/sdk/navigation/not-found-log.d.ts +28 -0
- package/dist/sdk/navigation/not-found-log.js +133 -0
- package/dist/sdk/navigation/not-found-log.js.map +1 -0
- package/dist/sdk/navigation/path.js +25 -0
- package/dist/sdk/navigation/path.js.map +1 -0
- package/dist/sdk/navigation/redirect.d.ts +11 -0
- package/dist/sdk/navigation/redirect.js +22 -0
- package/dist/sdk/navigation/redirect.js.map +1 -0
- package/dist/sdk/navigation/report.js +70 -0
- package/dist/sdk/navigation/report.js.map +1 -0
- package/dist/sdk/navigation/resolve-storefront-href.d.ts +12 -0
- package/dist/sdk/navigation/resolve-storefront-href.js +214 -0
- package/dist/sdk/navigation/resolve-storefront-href.js.map +1 -0
- package/dist/sdk/navigation/route-identity-provider.d.ts +11 -0
- package/dist/sdk/navigation/route-identity-provider.js +20 -0
- package/dist/sdk/navigation/route-identity-provider.js.map +1 -0
- package/dist/sdk/navigation/route-map-provider.d.ts +19 -0
- package/dist/sdk/navigation/route-map-provider.js +29 -0
- package/dist/sdk/navigation/route-map-provider.js.map +1 -0
- package/dist/sdk/navigation/storefront-link.d.ts +16 -0
- package/dist/sdk/navigation/storefront-link.js +66 -0
- package/dist/sdk/navigation/storefront-link.js.map +1 -0
- package/dist/sdk/navigation/types.d.ts +45 -0
- package/dist/sdk/navigation/use-storefront-navigation.d.ts +26 -0
- package/dist/sdk/navigation/use-storefront-navigation.js +73 -0
- package/dist/sdk/navigation/use-storefront-navigation.js.map +1 -0
- package/dist/sdk/navigation/use-storefront-route.d.ts +26 -0
- package/dist/sdk/navigation/use-storefront-route.js +87 -0
- package/dist/sdk/navigation/use-storefront-route.js.map +1 -0
- package/dist/sdk/navigation/use-storefront-search-params.d.ts +11 -0
- package/dist/sdk/navigation/use-storefront-search-params.js +16 -0
- package/dist/sdk/navigation/use-storefront-search-params.js.map +1 -0
- package/dist/sdk/orders/completion-badge.d.ts +8 -0
- package/dist/sdk/orders/completion-badge.js +47 -0
- package/dist/sdk/orders/completion-badge.js.map +1 -0
- package/dist/sdk/orders/order-operations.d.ts +19 -0
- package/dist/sdk/orders/order-operations.js +21 -0
- package/dist/sdk/orders/order-operations.js.map +1 -0
- package/dist/sdk/orders/use-order-actions.d.ts +23 -0
- package/dist/sdk/orders/use-order-actions.js +62 -0
- package/dist/sdk/orders/use-order-actions.js.map +1 -0
- package/dist/sdk/payment/gateway-origin.js +26 -13
- package/dist/sdk/payment/gateway-origin.js.map +1 -1
- package/dist/sdk/payment/gateway.d.ts +14 -2
- package/dist/sdk/payment/gateway.js +32 -14
- package/dist/sdk/payment/gateway.js.map +1 -1
- package/dist/sdk/payment/operations.js +11 -0
- package/dist/sdk/payment/operations.js.map +1 -1
- package/dist/sdk/payment/submission-registry.d.ts +2 -1
- package/dist/sdk/payment/submission-registry.js +12 -8
- package/dist/sdk/payment/submission-registry.js.map +1 -1
- package/dist/sdk/payment/use-payment-actions.d.ts +5 -3
- package/dist/sdk/payment/use-payment-actions.js +5 -2
- package/dist/sdk/payment/use-payment-actions.js.map +1 -1
- package/dist/sdk/payment/use-place-order.d.ts +6 -3
- package/dist/sdk/payment/use-place-order.js +333 -143
- package/dist/sdk/payment/use-place-order.js.map +1 -1
- package/dist/sdk/seo/page-alternates.d.ts +55 -0
- package/dist/sdk/seo/page-alternates.js +132 -0
- package/dist/sdk/seo/page-alternates.js.map +1 -0
- package/dist/utils/own-value.js +19 -0
- package/dist/utils/own-value.js.map +1 -0
- package/dist/utils/safe-href.d.ts +4 -4
- package/dist/utils/safe-href.js +31 -22
- package/dist/utils/safe-href.js.map +1 -1
- package/package.json +5 -1
- package/skills/storefront-asset/SKILL.md +111 -0
- package/skills/storefront-asset/references/api-side.md +153 -0
- package/skills/storefront-asset/references/findings.md +40 -0
- package/skills/storefront-asset/references/ui-side.md +94 -0
- 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 |
|
|
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.**
|
|
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
|
|
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
|
|
97
|
-
- **Self-gate**: `TaxIdControl` renders nothing when the Root's `activeDocumentType` is undefined or unsupported
|
|
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
|
|
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 |
|
|
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
|
|
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` |
|
|
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.
|