@vtex/faststore 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/README.md +0 -1
- package/dist/_virtual/_rolldown/runtime.js +4 -0
- package/dist/actions.json +6 -1
- package/dist/catalog.json +789 -1701
- package/dist/cli/index.d.ts +66 -28
- package/dist/cli/index.js +7371 -512
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/server-runtime.js +41 -60
- package/dist/cli/server-runtime.js.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.js +2 -2
- package/dist/components.d.ts +63 -57
- package/dist/components.js +60 -54
- package/dist/content-types.json +5785 -754
- package/dist/core/dist/define-component.d.ts +1 -1
- package/dist/core/dist/define-content-type.d.ts +50 -2
- package/dist/core/dist/define-content-type.js +107 -3
- package/dist/core/dist/define-content-type.js.map +1 -1
- package/dist/core/dist/index.d.ts +2 -2
- package/dist/docs/access-code-field.md +1 -1
- package/dist/docs/access-code-sign-in.md +126 -77
- package/dist/docs/account-address-book.md +210 -95
- package/dist/docs/account-menu.md +14 -15
- package/dist/docs/account-saved-cards.md +44 -39
- package/dist/docs/alert-dialog.md +3 -1
- package/dist/docs/avatar.md +4 -2
- package/dist/docs/billing-address.md +99 -30
- package/dist/docs/binding-switcher.md +5 -2
- package/dist/docs/buy-button.md +7 -8
- package/dist/docs/card-entry.md +39 -26
- package/dist/docs/card-summary.md +18 -8
- package/dist/docs/cardholder-document.md +5 -3
- package/dist/docs/carousel.md +5 -4
- package/dist/docs/cart-destination.md +39 -26
- package/dist/docs/cart-item.md +29 -14
- package/dist/docs/cart-totalizer.md +7 -5
- package/dist/docs/cart.md +135 -41
- package/dist/docs/challenge-return.md +135 -0
- package/dist/docs/client-preferences-fieldset.md +10 -5
- package/dist/docs/client-preferences.md +31 -8
- package/dist/docs/client-profile-fieldset.md +20 -6
- package/dist/docs/client-profile.md +12 -3
- package/dist/docs/copy-text.md +9 -7
- package/dist/docs/document-field.md +1 -1
- package/dist/docs/email-field.md +2 -1
- package/dist/docs/email-identification.md +12 -2
- package/dist/docs/footer-copyright.md +4 -2
- package/dist/docs/form.md +54 -18
- package/dist/docs/free-shipping-progress.md +6 -5
- package/dist/docs/identity-edit.md +8 -2
- package/dist/docs/identity-summary.md +18 -5
- package/dist/docs/installments.md +46 -32
- package/dist/docs/my-account-profile.md +16 -11
- package/dist/docs/navigation-link.md +5 -3
- package/dist/docs/order-cancel.md +3 -1
- package/dist/docs/order-delivery-address.md +7 -5
- package/dist/docs/order-delivery-group.md +1 -3
- package/dist/docs/order-details-back.md +1 -1
- package/dist/docs/order-details-header.md +1 -4
- package/dist/docs/order-invoice-download.md +60 -0
- package/dist/docs/order-list-row.md +1 -1
- package/dist/docs/order-list-search.md +13 -20
- package/dist/docs/order-list-views.md +11 -17
- package/dist/docs/order-list.md +12 -5
- package/dist/docs/order-payment.md +9 -7
- package/dist/docs/order-placed-date.md +1 -1
- package/dist/docs/order-placed-payment-summary.md +28 -15
- package/dist/docs/order-placed.md +49 -14
- package/dist/docs/order-progress.md +1 -1
- package/dist/docs/order-status-badge.md +20 -9
- package/dist/docs/order-summary.md +2 -2
- package/dist/docs/order-tracking-link.md +58 -0
- package/dist/docs/payment-method-badges.md +30 -4
- package/dist/docs/payment-methods.md +1 -1
- package/dist/docs/payment.md +36 -17
- package/dist/docs/phone-field.md +4 -4
- package/dist/docs/place-order.md +84 -36
- package/dist/docs/postal-code-field.md +3 -1
- package/dist/docs/pricing.md +21 -23
- package/dist/docs/product-gallery.md +19 -20
- package/dist/docs/product-information.md +13 -9
- package/dist/docs/product-list.md +7 -6
- package/dist/docs/product-shelf.md +0 -1
- package/dist/docs/promotion.md +4 -2
- package/dist/docs/region.md +23 -15
- package/dist/docs/save-card.md +7 -6
- package/dist/docs/saved-cards.md +65 -36
- package/dist/docs/shipping-address.md +57 -21
- package/dist/docs/shipping-simulator.md +53 -15
- package/dist/docs/sign-in-disclosure.md +176 -0
- package/dist/docs/sign-in-form.md +78 -47
- package/dist/docs/sign-in-redirect.md +4 -2
- package/dist/docs/sign-in.md +173 -0
- package/dist/docs/toast.md +15 -4
- package/dist/docs/variant-selector.md +15 -11
- package/dist/domain-logic/dist/checkout/rules.js +33 -0
- package/dist/domain-logic/dist/checkout/rules.js.map +1 -0
- package/dist/graphql/types.d.ts +4 -14
- package/dist/index.d.ts +2 -2
- package/dist/internal/client.d.ts +1 -3
- package/dist/internal/client.js +1 -1
- package/dist/internal/server.d.ts +7 -4
- package/dist/internal/server.js +7 -4
- package/dist/matter/access-code-sign-in/access-code-sign-in.d.ts +250 -66
- package/dist/matter/access-code-sign-in/access-code-sign-in.js +459 -188
- package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book-delete.d.ts +78 -40
- package/dist/matter/account-address-book/account-address-book-delete.js +86 -50
- package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +21 -4
- package/dist/matter/account-address-book/account-address-book-deliverability.js +45 -17
- package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +74 -19
- package/dist/matter/account-address-book/account-address-book-form-parts.js +77 -26
- package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +27 -6
- package/dist/matter/account-address-book/account-address-book-profile-notice.js +55 -28
- package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book.d.ts +67 -14
- package/dist/matter/account-address-book/account-address-book.js +74 -33
- package/dist/matter/account-address-book/account-address-book.js.map +1 -1
- package/dist/matter/account-address-book/account-address-country-switch.js +3 -3
- package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -1
- package/dist/matter/account-address-book/account-address-country.d.ts +66 -20
- package/dist/matter/account-address-book/account-address-country.js +83 -49
- package/dist/matter/account-address-book/account-address-country.js.map +1 -1
- package/dist/matter/account-address-book/account-address-form-context.d.ts +8 -4
- package/dist/matter/account-address-book/account-address-form-context.js.map +1 -1
- package/dist/matter/account-address-book/account-address-form.d.ts +468 -45
- package/dist/matter/account-address-book/account-address-form.js +518 -155
- package/dist/matter/account-address-book/account-address-form.js.map +1 -1
- package/dist/matter/account-address-book/account-address-record.d.ts +27 -6
- package/dist/matter/account-address-book/account-address-record.js +32 -17
- package/dist/matter/account-address-book/account-address-record.js.map +1 -1
- package/dist/matter/account-menu/account-menu.d.ts +34 -17
- package/dist/matter/account-menu/account-menu.js +46 -54
- package/dist/matter/account-menu/account-menu.js.map +1 -1
- package/dist/matter/account-menu-identity/account-menu-identity.js +1 -1
- package/dist/matter/account-saved-cards/account-saved-cards.d.ts +108 -28
- package/dist/matter/account-saved-cards/account-saved-cards.js +177 -122
- package/dist/matter/account-saved-cards/account-saved-cards.js.map +1 -1
- package/dist/matter/billing-address/billing-address.d.ts +156 -74
- package/dist/matter/billing-address/billing-address.js +227 -156
- package/dist/matter/billing-address/billing-address.js.map +1 -1
- package/dist/matter/breadcrumb/breadcrumb.d.ts +21 -3
- package/dist/matter/breadcrumb/breadcrumb.js +24 -9
- package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/matter/buy-button/buy-button.d.ts +8 -11
- package/dist/matter/buy-button/buy-button.js +10 -19
- package/dist/matter/buy-button/buy-button.js.map +1 -1
- package/dist/matter/card-entry/card-capture.js +12 -4
- package/dist/matter/card-entry/card-capture.js.map +1 -1
- package/dist/matter/card-entry/card-entry.d.ts +123 -32
- package/dist/matter/card-entry/card-entry.js +348 -221
- package/dist/matter/card-entry/card-entry.js.map +1 -1
- package/dist/matter/cart/cart-namespace.d.ts +7 -1
- package/dist/matter/cart/cart-namespace.js +7 -1
- package/dist/matter/cart/cart-namespace.js.map +1 -1
- package/dist/matter/cart/cart.d.ts +402 -61
- package/dist/matter/cart/cart.js +624 -153
- package/dist/matter/cart/cart.js.map +1 -1
- package/dist/matter/cart-destination/cart-destination.d.ts +30 -19
- package/dist/matter/cart-destination/cart-destination.js +160 -70
- package/dist/matter/cart-destination/cart-destination.js.map +1 -1
- package/dist/matter/cart-item/cart-item.d.ts +144 -17
- package/dist/matter/cart-item/cart-item.js +166 -49
- package/dist/matter/cart-item/cart-item.js.map +1 -1
- package/dist/matter/cart-item-compositions/cart-item-compositions.js +1 -1
- package/dist/matter/cart-item-compositions/cart-item-compositions.js.map +1 -1
- package/dist/matter/cart-item-customizations/cart-item-customizations.js +1 -1
- package/dist/matter/cart-item-customizations/cart-item-customizations.js.map +1 -1
- package/dist/matter/cart-item-discounts/cart-item-discounts.js +1 -1
- package/dist/matter/cart-item-discounts/cart-item-discounts.js.map +1 -1
- package/dist/matter/cart-item-seller-info/cart-item-seller-info.js +1 -1
- package/dist/matter/cart-item-seller-info/cart-item-seller-info.js.map +1 -1
- package/dist/matter/cart-item-variations/cart-item-variations.js +1 -1
- package/dist/matter/cart-item-variations/cart-item-variations.js.map +1 -1
- package/dist/matter/cart-totalizer/cart-totalizer.d.ts +43 -9
- package/dist/matter/cart-totalizer/cart-totalizer.js +46 -17
- package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -1
- package/dist/matter/challenge-return/challenge-return.d.ts +62 -0
- package/dist/matter/challenge-return/challenge-return.js +241 -0
- package/dist/matter/challenge-return/challenge-return.js.map +1 -0
- package/dist/matter/client-preferences/client-preferences-fieldset.d.ts +86 -17
- package/dist/matter/client-preferences/client-preferences-fieldset.js +126 -54
- package/dist/matter/client-preferences/client-preferences-fieldset.js.map +1 -1
- package/dist/matter/client-preferences/client-preferences.d.ts +50 -7
- package/dist/matter/client-preferences/client-preferences.js +84 -15
- package/dist/matter/client-preferences/client-preferences.js.map +1 -1
- package/dist/matter/client-profile/client-profile.d.ts +44 -9
- package/dist/matter/client-profile/client-profile.js +64 -24
- package/dist/matter/client-profile/client-profile.js.map +1 -1
- package/dist/matter/client-profile-form/client-profile-fieldset.d.ts +119 -22
- package/dist/matter/client-profile-form/client-profile-fieldset.js +161 -73
- package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
- package/dist/matter/delivery-options/delivery-options-accordion.d.ts +49 -4
- package/dist/matter/delivery-options/delivery-options-accordion.js +67 -14
- package/dist/matter/delivery-options/delivery-options-accordion.js.map +1 -1
- package/dist/matter/delivery-options/delivery-options-controller.d.ts +69 -9
- package/dist/matter/delivery-options/delivery-options-controller.js +80 -14
- package/dist/matter/delivery-options/delivery-options-controller.js.map +1 -1
- package/dist/matter/delivery-options/delivery-options.d.ts +37 -2
- package/dist/matter/delivery-options/delivery-options.js +75 -12
- package/dist/matter/delivery-options/delivery-options.js.map +1 -1
- package/dist/matter/delivery-options/use-delivery-option-selection.d.ts +1 -0
- package/dist/matter/delivery-options/use-delivery-option-selection.js +1 -1
- package/dist/matter/delivery-options/use-delivery-option-selection.js.map +1 -1
- package/dist/matter/email-identification/email-identification.d.ts +25 -3
- package/dist/matter/email-identification/email-identification.js +49 -12
- package/dist/matter/email-identification/email-identification.js.map +1 -1
- package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +79 -7
- package/dist/matter/free-shipping-progress/free-shipping-progress.js +77 -20
- package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -1
- package/dist/matter/identity-edit/identity-edit.d.ts +52 -10
- package/dist/matter/identity-edit/identity-edit.js +47 -19
- package/dist/matter/identity-edit/identity-edit.js.map +1 -1
- package/dist/matter/identity-summary/identity-summary.d.ts +76 -22
- package/dist/matter/identity-summary/identity-summary.js +95 -45
- package/dist/matter/identity-summary/identity-summary.js.map +1 -1
- package/dist/matter/installments/installments-select.d.ts +98 -16
- package/dist/matter/installments/installments-select.js +156 -48
- package/dist/matter/installments/installments-select.js.map +1 -1
- package/dist/matter/installments/installments.d.ts +96 -16
- package/dist/matter/installments/installments.js +115 -40
- package/dist/matter/installments/installments.js.map +1 -1
- package/dist/matter/installments/use-installments-selection.d.ts +1 -0
- package/dist/matter/installments/use-installments-selection.js +8 -3
- package/dist/matter/installments/use-installments-selection.js.map +1 -1
- package/dist/matter/my-account-profile/my-account-profile.d.ts +358 -103
- package/dist/matter/my-account-profile/my-account-profile.js +370 -174
- package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
- package/dist/matter/order-cancel/order-cancel.d.ts +65 -19
- package/dist/matter/order-cancel/order-cancel.js +118 -51
- package/dist/matter/order-cancel/order-cancel.js.map +1 -1
- package/dist/matter/order-delivery-address/order-delivery-address.d.ts +8 -18
- package/dist/matter/order-delivery-address/order-delivery-address.js +14 -23
- package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -1
- package/dist/matter/order-delivery-group/order-delivery-group.d.ts +40 -24
- package/dist/matter/order-delivery-group/order-delivery-group.js +64 -74
- package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -1
- package/dist/matter/order-details-header/order-details-header.d.ts +32 -15
- package/dist/matter/order-details-header/order-details-header.js +66 -58
- package/dist/matter/order-details-header/order-details-header.js.map +1 -1
- package/dist/matter/order-invoice-download/order-invoice-download.d.ts +78 -0
- package/dist/matter/order-invoice-download/order-invoice-download.js +173 -0
- package/dist/matter/order-invoice-download/order-invoice-download.js.map +1 -0
- package/dist/matter/order-list/order-list.d.ts +164 -19
- package/dist/matter/order-list/order-list.js +229 -87
- package/dist/matter/order-list/order-list.js.map +1 -1
- package/dist/matter/order-list-row/order-list-row.d.ts +6 -1
- package/dist/matter/order-list-row/order-list-row.js +3 -2
- package/dist/matter/order-list-row/order-list-row.js.map +1 -1
- package/dist/matter/order-list-search/order-list-search.d.ts +18 -26
- package/dist/matter/order-list-search/order-list-search.js +30 -69
- package/dist/matter/order-list-search/order-list-search.js.map +1 -1
- package/dist/matter/order-list-views/order-list-views.d.ts +15 -22
- package/dist/matter/order-list-views/order-list-views.js +22 -68
- package/dist/matter/order-list-views/order-list-views.js.map +1 -1
- package/dist/matter/order-payment/order-payment.d.ts +33 -10
- package/dist/matter/order-payment/order-payment.js +44 -39
- package/dist/matter/order-payment/order-payment.js.map +1 -1
- package/dist/matter/order-placed/order-placed-deliveries.d.ts +144 -12
- package/dist/matter/order-placed/order-placed-deliveries.js +115 -40
- package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -1
- package/dist/matter/order-placed/order-placed.d.ts +198 -31
- package/dist/matter/order-placed/order-placed.js +230 -139
- package/dist/matter/order-placed/order-placed.js.map +1 -1
- package/dist/matter/order-placed-date/order-placed-date.d.ts +5 -8
- package/dist/matter/order-placed-date/order-placed-date.js +7 -8
- package/dist/matter/order-placed-date/order-placed-date.js.map +1 -1
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +90 -17
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +93 -117
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
- package/dist/matter/order-progress/order-progress.d.ts +19 -8
- package/dist/matter/order-progress/order-progress.js +37 -45
- package/dist/matter/order-progress/order-progress.js.map +1 -1
- package/dist/matter/order-summary/order-summary.d.ts +19 -9
- package/dist/matter/order-summary/order-summary.js +38 -44
- package/dist/matter/order-summary/order-summary.js.map +1 -1
- package/dist/matter/order-tracking-link/order-tracking-link.d.ts +43 -0
- package/dist/matter/order-tracking-link/order-tracking-link.js +107 -0
- package/dist/matter/order-tracking-link/order-tracking-link.js.map +1 -0
- package/dist/matter/payment/payment-card-capture.js +17 -10
- package/dist/matter/payment/payment-card-capture.js.map +1 -1
- package/dist/matter/payment/payment-controller.d.ts +4 -2
- package/dist/matter/payment/payment-controller.js +30 -9
- package/dist/matter/payment/payment-controller.js.map +1 -1
- package/dist/matter/payment/payment-method-badges.js +1 -1
- package/dist/matter/payment/payment.d.ts +69 -19
- package/dist/matter/payment/payment.js +101 -35
- package/dist/matter/payment/payment.js.map +1 -1
- package/dist/matter/payment/use-payment-method-selection.d.ts +25 -4
- package/dist/matter/payment/use-payment-method-selection.js +94 -32
- package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
- package/dist/matter/payment/use-payment-submit-gate.d.ts +14 -3
- package/dist/matter/payment/use-payment-submit-gate.js +47 -8
- package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
- package/dist/matter/place-order/place-order.d.ts +171 -57
- package/dist/matter/place-order/place-order.js +376 -185
- package/dist/matter/place-order/place-order.js.map +1 -1
- package/dist/matter/pricing/pricing.d.ts +152 -13
- package/dist/matter/pricing/pricing.js +153 -52
- package/dist/matter/pricing/pricing.js.map +1 -1
- package/dist/matter/product-information/product-information.d.ts +27 -4
- package/dist/matter/product-information/product-information.js +32 -15
- package/dist/matter/product-information/product-information.js.map +1 -1
- package/dist/matter/product-list/product-list.d.ts +24 -6
- package/dist/matter/product-list/product-list.js +32 -26
- package/dist/matter/product-list/product-list.js.map +1 -1
- package/dist/matter/product-shelf/product-shelf.d.ts +1 -3
- package/dist/matter/product-shelf/product-shelf.js +2 -15
- package/dist/matter/product-shelf/product-shelf.js.map +1 -1
- package/dist/matter/region/region.d.ts +33 -16
- package/dist/matter/region/region.js +59 -52
- package/dist/matter/region/region.js.map +1 -1
- package/dist/matter/save-card/save-card.d.ts +43 -8
- package/dist/matter/save-card/save-card.js +61 -23
- package/dist/matter/save-card/save-card.js.map +1 -1
- package/dist/matter/saved-cards/saved-cards.d.ts +113 -21
- package/dist/matter/saved-cards/saved-cards.js +349 -77
- package/dist/matter/saved-cards/saved-cards.js.map +1 -1
- package/dist/matter/shipping-address/address-payload.js +25 -0
- package/dist/matter/shipping-address/address-payload.js.map +1 -0
- package/dist/matter/shipping-address/country-descriptors.js +71 -71
- package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
- package/dist/matter/shipping-address/library-country-descriptors.js +136 -0
- package/dist/matter/shipping-address/library-country-descriptors.js.map +1 -0
- package/dist/matter/shipping-address/shipping-address.d.ts +312 -45
- package/dist/matter/shipping-address/shipping-address.js +443 -188
- package/dist/matter/shipping-address/shipping-address.js.map +1 -1
- package/dist/matter/shipping-simulator/shipping-simulator.d.ts +250 -24
- package/dist/matter/shipping-simulator/shipping-simulator.js +257 -51
- package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
- package/dist/matter/sign-in/sign-in.d.ts +108 -0
- package/dist/matter/sign-in/sign-in.js +285 -0
- package/dist/matter/sign-in/sign-in.js.map +1 -0
- package/dist/matter/sign-in-disclosure/sign-in-disclosure.d.ts +81 -0
- package/dist/matter/sign-in-disclosure/sign-in-disclosure.js +232 -0
- package/dist/matter/sign-in-disclosure/sign-in-disclosure.js.map +1 -0
- package/dist/matter/sign-in-form/sign-in-form.d.ts +93 -62
- package/dist/matter/sign-in-form/sign-in-form.js +134 -144
- package/dist/matter/sign-in-form/sign-in-form.js.map +1 -1
- package/dist/particles/binding-switcher/binding-switcher.d.ts +29 -8
- package/dist/particles/binding-switcher/binding-switcher.js +37 -26
- package/dist/particles/binding-switcher/binding-switcher.js.map +1 -1
- package/dist/particles/card-summary/card-summary.d.ts +38 -8
- package/dist/particles/card-summary/card-summary.js +55 -22
- package/dist/particles/card-summary/card-summary.js.map +1 -1
- package/dist/particles/carousel/carousel.d.ts +99 -11
- package/dist/particles/carousel/carousel.js +103 -35
- package/dist/particles/carousel/carousel.js.map +1 -1
- package/dist/particles/copy-text/copy-text.js +5 -15
- package/dist/particles/copy-text/copy-text.js.map +1 -1
- package/dist/particles/dialog/dialog.d.ts +14 -6
- package/dist/particles/dialog/dialog.js +6 -3
- package/dist/particles/dialog/dialog.js.map +1 -1
- package/dist/particles/drawer/drawer.js +1 -1
- package/dist/particles/drawer/drawer.js.map +1 -1
- package/dist/particles/email-field/email-field.d.ts +2 -1
- package/dist/particles/email-field/email-field.js +2 -1
- package/dist/particles/email-field/email-field.js.map +1 -1
- package/dist/particles/footer-link-group/footer-link-group.js +1 -0
- package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
- package/dist/particles/form/form.d.ts +85 -13
- package/dist/particles/form/form.js +91 -42
- package/dist/particles/form/form.js.map +1 -1
- package/dist/particles/gallery/gallery.d.ts +129 -12
- package/dist/particles/gallery/gallery.js +121 -34
- package/dist/particles/gallery/gallery.js.map +1 -1
- package/dist/particles/order-details-back/order-details-back.d.ts +5 -3
- package/dist/particles/order-details-back/order-details-back.js +8 -10
- package/dist/particles/order-details-back/order-details-back.js.map +1 -1
- package/dist/particles/order-status-badge/order-status-badge.d.ts +3 -3
- package/dist/particles/order-status-badge/order-status-badge.js +4 -20
- package/dist/particles/order-status-badge/order-status-badge.js.map +1 -1
- package/dist/particles/password-field/password-field.d.ts +1 -1
- package/dist/particles/password-field/password-field.js +2 -4
- package/dist/particles/password-field/password-field.js.map +1 -1
- package/dist/particles/phone-field/phone-field.d.ts +4 -4
- package/dist/particles/phone-field/phone-field.js +8 -11
- package/dist/particles/phone-field/phone-field.js.map +1 -1
- package/dist/particles/spinner/spinner.d.ts +24 -4
- package/dist/particles/spinner/spinner.js +25 -9
- package/dist/particles/spinner/spinner.js.map +1 -1
- package/dist/particles/switch/switch.d.ts +4 -1
- package/dist/particles/switch/switch.js +3 -1
- package/dist/particles/switch/switch.js.map +1 -1
- package/dist/particles/toast/toast.d.ts +29 -3
- package/dist/particles/toast/toast.js +34 -10
- package/dist/particles/toast/toast.js.map +1 -1
- package/dist/schema.graphql +164 -56
- package/dist/sdk/address/address-fields.js +4 -4
- package/dist/sdk/address/address-fields.js.map +1 -1
- package/dist/sdk/address/constants.js +1 -6
- package/dist/sdk/address/constants.js.map +1 -1
- package/dist/sdk/address/messages.js +44 -44
- package/dist/sdk/address/messages.js.map +1 -1
- package/dist/sdk/address/postal-code.js +15 -2
- package/dist/sdk/address/postal-code.js.map +1 -1
- package/dist/sdk/address/types.d.ts +5 -3
- package/dist/sdk/address/validate-address.js +3 -3
- package/dist/sdk/address/validate-address.js.map +1 -1
- package/dist/sdk/analytics/use-analytics-actions.d.ts +1 -1
- package/dist/sdk/analytics/use-analytics-actions.js.map +1 -1
- package/dist/sdk/cart/use-cart-actions.js.map +1 -1
- package/dist/sdk/data/index.js +2 -2
- package/dist/sdk/data/reactive-list-item-data-provider.js +2 -2
- package/dist/sdk/generated/gql.js +1 -1
- package/dist/sdk/generated/gql.js.map +1 -1
- package/dist/sdk/generated/graphql.d.ts +20 -5
- package/dist/sdk/generated/graphql.js +6 -0
- package/dist/sdk/generated/graphql.js.map +1 -1
- package/dist/sdk/i18n/format-error-code.js +23 -0
- package/dist/sdk/i18n/format-error-code.js.map +1 -0
- package/dist/sdk/i18n/message-formatter.d.ts +22 -0
- package/dist/sdk/i18n/message-formatter.js +140 -0
- package/dist/sdk/i18n/message-formatter.js.map +1 -0
- package/dist/sdk/i18n/use-message-formatter.d.ts +8 -0
- package/dist/sdk/i18n/use-message-formatter.js +18 -0
- package/dist/sdk/i18n/use-message-formatter.js.map +1 -0
- package/dist/sdk/identity/use-identity-actions.js.map +1 -1
- package/dist/sdk/navigation/redirect.d.ts +2 -0
- package/dist/sdk/navigation/redirect.js +19 -1
- package/dist/sdk/navigation/redirect.js.map +1 -1
- package/dist/sdk/navigation/types.d.ts +13 -0
- package/dist/sdk/payment/bin-format.js +21 -0
- package/dist/sdk/payment/bin-format.js.map +1 -0
- package/dist/sdk/payment/challenge-return.js +37 -0
- package/dist/sdk/payment/challenge-return.js.map +1 -0
- package/dist/sdk/payment/confirmation-last-four.js +39 -0
- package/dist/sdk/payment/confirmation-last-four.js.map +1 -0
- package/dist/sdk/payment/gateway.d.ts +1 -1
- package/dist/sdk/payment/gateway.js +8 -2
- package/dist/sdk/payment/gateway.js.map +1 -1
- package/dist/sdk/payment/operations.d.ts +1 -0
- package/dist/sdk/payment/operations.js +28 -6
- package/dist/sdk/payment/operations.js.map +1 -1
- package/dist/sdk/payment/resumed-purchase.d.ts +1 -0
- package/dist/sdk/payment/resumed-purchase.js +119 -0
- package/dist/sdk/payment/resumed-purchase.js.map +1 -0
- package/dist/sdk/payment/security-code-mask.js +16 -23
- package/dist/sdk/payment/security-code-mask.js.map +1 -1
- package/dist/sdk/payment/submission-registry.js +6 -2
- package/dist/sdk/payment/submission-registry.js.map +1 -1
- package/dist/sdk/payment/use-payment-actions.d.ts +18 -3
- package/dist/sdk/payment/use-payment-actions.js +23 -4
- package/dist/sdk/payment/use-payment-actions.js.map +1 -1
- package/dist/sdk/payment/use-place-order.d.ts +10 -2
- package/dist/sdk/payment/use-place-order.js +138 -76
- package/dist/sdk/payment/use-place-order.js.map +1 -1
- package/dist/sdk/provider/storefront-provider.d.ts +1 -7
- package/dist/sdk/provider/storefront-provider.js +4 -11
- package/dist/sdk/provider/storefront-provider.js.map +1 -1
- package/dist/sdk/seo/entity-landing.d.ts +24 -0
- package/dist/sdk/seo/entity-landing.js +30 -0
- package/dist/sdk/seo/entity-landing.js.map +1 -0
- package/dist/sdk/seo/page-alternates.d.ts +3 -2
- package/dist/sdk/seo/page-alternates.js +4 -2
- package/dist/sdk/seo/page-alternates.js.map +1 -1
- package/dist/sdk/seo/search-landing.d.ts +42 -0
- package/dist/sdk/seo/search-landing.js +85 -0
- package/dist/sdk/seo/search-landing.js.map +1 -0
- package/dist/sdk/session/mock-session.d.ts +9 -0
- package/dist/sdk/session/mock-session.js +31 -0
- package/dist/sdk/session/mock-session.js.map +1 -0
- package/dist/sdk/session/read-server-session.d.ts +3 -0
- package/dist/sdk/session/read-server-session.js +5 -0
- package/dist/sdk/session/read-server-session.js.map +1 -1
- package/dist/sdk/session/return-path-segment.d.ts +10 -0
- package/dist/sdk/session/return-path-segment.js +15 -0
- package/dist/sdk/session/return-path-segment.js.map +1 -0
- package/dist/sdk/session/use-session-actions.js.map +1 -1
- package/dist/sdk/shipping/use-cart-shipping-simulation.js.map +1 -1
- package/dist/sdk/shipping/use-shipping-actions.js.map +1 -1
- package/dist/sdk/shipping/use-shipping-simulation.js.map +1 -1
- package/dist/utils/safe-href.d.ts +2 -0
- package/package.json +4 -3
- package/skills/storefront-asset/SKILL.md +2 -2
- package/skills/storefront-asset/references/api-side.md +27 -14
- package/skills/storefront-asset/references/findings.md +5 -2
- package/src/styles/tailwind.css +8 -0
- package/dist/matter/shipping-address/country-descriptors.d.ts +0 -1
- package/dist/message-locales.json +0 -7
- package/dist/sdk/i18n/client.d.ts +0 -4
- package/dist/sdk/i18n/client.js +0 -4
- package/dist/sdk/i18n/locales.d.ts +0 -8
- package/dist/sdk/i18n/locales.js +0 -57
- package/dist/sdk/i18n/locales.js.map +0 -1
- package/dist/sdk/i18n/messages/en-US.js +0 -183
- package/dist/sdk/i18n/messages/en-US.js.map +0 -1
- package/dist/sdk/i18n/messages/en-US.json +0 -178
- package/dist/sdk/i18n/messages/en-US.json.d.ts +0 -182
- package/dist/sdk/i18n/messages/es-ES.js +0 -183
- package/dist/sdk/i18n/messages/es-ES.js.map +0 -1
- package/dist/sdk/i18n/messages/es-ES.json +0 -178
- package/dist/sdk/i18n/messages/pt-BR.js +0 -183
- package/dist/sdk/i18n/messages/pt-BR.js.map +0 -1
- package/dist/sdk/i18n/messages/pt-BR.json +0 -178
- package/dist/sdk/i18n/provider.d.ts +0 -1
- package/dist/sdk/i18n/provider.js +0 -30
- package/dist/sdk/i18n/provider.js.map +0 -1
- package/dist/sdk/i18n/server.d.ts +0 -28
- package/dist/sdk/i18n/server.js +0 -59
- package/dist/sdk/i18n/server.js.map +0 -1
- package/dist/utils/resolve-authored-copy.js +0 -18
- package/dist/utils/resolve-authored-copy.js.map +0 -1
- package/dist/utils/substitute-template.js +0 -33
- package/dist/utils/substitute-template.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ContentValue } from "../../core/dist/define-content-type.js";
|
|
1
|
+
import { ContentValue, MessageLocaleProp } from "../../core/dist/define-content-type.js";
|
|
2
2
|
import { ComponentDefinition } from "../../core/dist/define-component.js";
|
|
3
3
|
import "../../core/dist/index.js";
|
|
4
4
|
import { ComponentPropsWithRef, ReactNode, Ref } from "react";
|
|
@@ -6,7 +6,7 @@ import { ComponentPropsWithRef, ReactNode, Ref } from "react";
|
|
|
6
6
|
export declare const OrderDeliveryGroupContent: {
|
|
7
7
|
readonly id: "order-delivery-group";
|
|
8
8
|
readonly title: "Order Delivery Group";
|
|
9
|
-
readonly description: "The labels of a delivery group.
|
|
9
|
+
readonly description: "The labels of a delivery group.";
|
|
10
10
|
readonly schema: {
|
|
11
11
|
readonly type: "object";
|
|
12
12
|
readonly additionalProperties: false;
|
|
@@ -14,52 +14,79 @@ export declare const OrderDeliveryGroupContent: {
|
|
|
14
14
|
readonly label: {
|
|
15
15
|
readonly type: "string";
|
|
16
16
|
readonly title: "Accessible name";
|
|
17
|
+
readonly format: "icu-message";
|
|
18
|
+
readonly messageSource: "Deliveries";
|
|
17
19
|
};
|
|
18
20
|
readonly delivery: {
|
|
19
21
|
readonly type: "string";
|
|
20
22
|
readonly title: "Delivery";
|
|
23
|
+
readonly format: "icu-message";
|
|
24
|
+
readonly messageSource: "Delivery";
|
|
21
25
|
};
|
|
22
26
|
readonly pickup: {
|
|
23
27
|
readonly type: "string";
|
|
24
28
|
readonly title: "Pickup";
|
|
29
|
+
readonly format: "icu-message";
|
|
30
|
+
readonly messageSource: "Pickup";
|
|
25
31
|
};
|
|
26
32
|
readonly estimate: {
|
|
27
33
|
readonly type: "string";
|
|
28
34
|
readonly title: "Estimated delivery";
|
|
35
|
+
readonly format: "icu-message";
|
|
36
|
+
readonly messageSource: "Estimated delivery";
|
|
29
37
|
};
|
|
30
|
-
readonly
|
|
38
|
+
readonly items: {
|
|
31
39
|
readonly type: "string";
|
|
32
|
-
readonly title: "
|
|
33
|
-
readonly
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
readonly title: "Item count";
|
|
41
|
+
readonly format: "icu-message";
|
|
42
|
+
readonly messageSource: "{count, plural, one {# item} other {# items}}";
|
|
43
|
+
readonly messageArguments: {
|
|
44
|
+
readonly type: "object";
|
|
45
|
+
readonly properties: {
|
|
46
|
+
readonly count: {
|
|
47
|
+
readonly type: "integer";
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
readonly messageExample: {
|
|
52
|
+
readonly count: 2;
|
|
53
|
+
};
|
|
39
54
|
};
|
|
40
55
|
readonly subtotal: {
|
|
41
56
|
readonly type: "string";
|
|
42
57
|
readonly title: "Subtotal";
|
|
58
|
+
readonly format: "icu-message";
|
|
59
|
+
readonly messageSource: "Subtotal";
|
|
43
60
|
};
|
|
44
61
|
readonly quantity: {
|
|
45
62
|
readonly type: "string";
|
|
46
63
|
readonly title: "Quantity";
|
|
64
|
+
readonly format: "icu-message";
|
|
65
|
+
readonly messageSource: "Quantity";
|
|
47
66
|
};
|
|
48
67
|
readonly unitPrice: {
|
|
49
68
|
readonly type: "string";
|
|
50
69
|
readonly title: "Unit price";
|
|
70
|
+
readonly format: "icu-message";
|
|
71
|
+
readonly messageSource: "Unit price";
|
|
51
72
|
};
|
|
52
73
|
readonly listPrice: {
|
|
53
74
|
readonly type: "string";
|
|
54
75
|
readonly title: "List price";
|
|
76
|
+
readonly format: "icu-message";
|
|
77
|
+
readonly messageSource: "List price";
|
|
55
78
|
};
|
|
56
79
|
readonly total: {
|
|
57
80
|
readonly type: "string";
|
|
58
81
|
readonly title: "Total";
|
|
82
|
+
readonly format: "icu-message";
|
|
83
|
+
readonly messageSource: "Total";
|
|
59
84
|
};
|
|
60
85
|
readonly tax: {
|
|
61
86
|
readonly type: "string";
|
|
62
87
|
readonly title: "Tax";
|
|
88
|
+
readonly format: "icu-message";
|
|
89
|
+
readonly messageSource: "Tax";
|
|
63
90
|
};
|
|
64
91
|
};
|
|
65
92
|
};
|
|
@@ -96,9 +123,7 @@ export type OrderDeliveryOptionData = {
|
|
|
96
123
|
export type OrderDeliveryGroupData = {
|
|
97
124
|
deliveryOptions: OrderDeliveryOptionData[];
|
|
98
125
|
} | null;
|
|
99
|
-
export type OrderDeliveryGroupProps = Readonly<{
|
|
100
|
-
/** Accessible name of the section. Content wins, then this prop, then the catalogue. */
|
|
101
|
-
label?: string;
|
|
126
|
+
export type OrderDeliveryGroupProps = MessageLocaleProp & Readonly<{
|
|
102
127
|
$content?: OrderDeliveryGroupContentValue;
|
|
103
128
|
$data?: OrderDeliveryGroupData;
|
|
104
129
|
/** Rendered once per option, after its rows, inside the `order-delivery-option` context. */
|
|
@@ -112,17 +137,8 @@ export type OrderDeliveryOptionContextValue = Readonly<{
|
|
|
112
137
|
}>;
|
|
113
138
|
/** The option index published by the enclosing `OrderDeliveryGroup`, or null outside one. */
|
|
114
139
|
export declare function useOrderDeliveryOption(): OrderDeliveryOptionContextValue | null;
|
|
115
|
-
export declare const OrderDeliveryGroupDefinition: ComponentDefinition<
|
|
116
|
-
/** Accessible name of the section. Content wins, then this prop, then the catalogue. */
|
|
117
|
-
label?: string;
|
|
118
|
-
$content?: OrderDeliveryGroupContentValue;
|
|
119
|
-
$data?: OrderDeliveryGroupData;
|
|
120
|
-
/** Rendered once per option, after its rows, inside the `order-delivery-option` context. */
|
|
121
|
-
children?: ReactNode;
|
|
122
|
-
className?: string;
|
|
123
|
-
ref?: Ref<HTMLElement>;
|
|
124
|
-
}>>;
|
|
140
|
+
export declare const OrderDeliveryGroupDefinition: ComponentDefinition<OrderDeliveryGroupProps>;
|
|
125
141
|
export declare function OrderDeliveryGroupSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
126
|
-
export declare function OrderDeliveryGroup({
|
|
142
|
+
export declare function OrderDeliveryGroup({ $content, $data, children, className, ref }: OrderDeliveryGroupProps): import("react/jsx-runtime").JSX.Element | null;
|
|
127
143
|
//#endregion
|
|
128
144
|
//# sourceMappingURL=order-delivery-group.d.ts.map
|
|
@@ -3,7 +3,7 @@ import { defineComponent } from "../../core/dist/define-component.js";
|
|
|
3
3
|
import { defineContentType } from "../../core/dist/define-content-type.js";
|
|
4
4
|
import "../../core/dist/index.js";
|
|
5
5
|
import { useStorefrontFormatters } from "../../sdk/format/client.js";
|
|
6
|
-
import {
|
|
6
|
+
import { useMessageFormatter } from "../../sdk/i18n/use-message-formatter.js";
|
|
7
7
|
import { AccordionHeader, AccordionItem, AccordionPanel, AccordionRoot, AccordionTrigger } from "../../particles/accordion/accordion.js";
|
|
8
8
|
import { createContext, useContext, useMemo } from "react";
|
|
9
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -51,60 +51,81 @@ const fragment = `
|
|
|
51
51
|
const OrderDeliveryGroupContent = defineContentType({
|
|
52
52
|
id: "order-delivery-group",
|
|
53
53
|
title: "Order Delivery Group",
|
|
54
|
-
description: "The labels of a delivery group.
|
|
54
|
+
description: "The labels of a delivery group.",
|
|
55
55
|
schema: {
|
|
56
56
|
type: "object",
|
|
57
57
|
additionalProperties: false,
|
|
58
58
|
properties: {
|
|
59
59
|
label: {
|
|
60
60
|
type: "string",
|
|
61
|
-
title: "Accessible name"
|
|
61
|
+
title: "Accessible name",
|
|
62
|
+
format: "icu-message",
|
|
63
|
+
messageSource: "Deliveries"
|
|
62
64
|
},
|
|
63
65
|
delivery: {
|
|
64
66
|
type: "string",
|
|
65
|
-
title: "Delivery"
|
|
67
|
+
title: "Delivery",
|
|
68
|
+
format: "icu-message",
|
|
69
|
+
messageSource: "Delivery"
|
|
66
70
|
},
|
|
67
71
|
pickup: {
|
|
68
72
|
type: "string",
|
|
69
|
-
title: "Pickup"
|
|
73
|
+
title: "Pickup",
|
|
74
|
+
format: "icu-message",
|
|
75
|
+
messageSource: "Pickup"
|
|
70
76
|
},
|
|
71
77
|
estimate: {
|
|
72
78
|
type: "string",
|
|
73
|
-
title: "Estimated delivery"
|
|
79
|
+
title: "Estimated delivery",
|
|
80
|
+
format: "icu-message",
|
|
81
|
+
messageSource: "Estimated delivery"
|
|
74
82
|
},
|
|
75
|
-
|
|
83
|
+
items: {
|
|
76
84
|
type: "string",
|
|
77
|
-
title: "
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
title: "Item count",
|
|
86
|
+
format: "icu-message",
|
|
87
|
+
messageSource: "{count, plural, one {# item} other {# items}}",
|
|
88
|
+
messageArguments: {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: { count: { type: "integer" } }
|
|
91
|
+
},
|
|
92
|
+
messageExample: { count: 2 }
|
|
84
93
|
},
|
|
85
94
|
subtotal: {
|
|
86
95
|
type: "string",
|
|
87
|
-
title: "Subtotal"
|
|
96
|
+
title: "Subtotal",
|
|
97
|
+
format: "icu-message",
|
|
98
|
+
messageSource: "Subtotal"
|
|
88
99
|
},
|
|
89
100
|
quantity: {
|
|
90
101
|
type: "string",
|
|
91
|
-
title: "Quantity"
|
|
102
|
+
title: "Quantity",
|
|
103
|
+
format: "icu-message",
|
|
104
|
+
messageSource: "Quantity"
|
|
92
105
|
},
|
|
93
106
|
unitPrice: {
|
|
94
107
|
type: "string",
|
|
95
|
-
title: "Unit price"
|
|
108
|
+
title: "Unit price",
|
|
109
|
+
format: "icu-message",
|
|
110
|
+
messageSource: "Unit price"
|
|
96
111
|
},
|
|
97
112
|
listPrice: {
|
|
98
113
|
type: "string",
|
|
99
|
-
title: "List price"
|
|
114
|
+
title: "List price",
|
|
115
|
+
format: "icu-message",
|
|
116
|
+
messageSource: "List price"
|
|
100
117
|
},
|
|
101
118
|
total: {
|
|
102
119
|
type: "string",
|
|
103
|
-
title: "Total"
|
|
120
|
+
title: "Total",
|
|
121
|
+
format: "icu-message",
|
|
122
|
+
messageSource: "Total"
|
|
104
123
|
},
|
|
105
124
|
tax: {
|
|
106
125
|
type: "string",
|
|
107
|
-
title: "Tax"
|
|
126
|
+
title: "Tax",
|
|
127
|
+
format: "icu-message",
|
|
128
|
+
messageSource: "Tax"
|
|
108
129
|
}
|
|
109
130
|
}
|
|
110
131
|
}
|
|
@@ -126,12 +147,6 @@ function estimateInstant(value) {
|
|
|
126
147
|
const date = new Date(value);
|
|
127
148
|
return Number.isNaN(date.getTime()) ? null : date;
|
|
128
149
|
}
|
|
129
|
-
function authored(value) {
|
|
130
|
-
return value?.trim() || void 0;
|
|
131
|
-
}
|
|
132
|
-
function sentence(value, fallback) {
|
|
133
|
-
return authored(value) ?? fallback;
|
|
134
|
-
}
|
|
135
150
|
const OrderDeliveryGroupDefinition = defineComponent({
|
|
136
151
|
name: "OrderDeliveryGroup",
|
|
137
152
|
importPath: "@vtex/faststore/components",
|
|
@@ -144,12 +159,9 @@ const OrderDeliveryGroupDefinition = defineComponent({
|
|
|
144
159
|
label: "Order Delivery Group",
|
|
145
160
|
category: "content"
|
|
146
161
|
},
|
|
147
|
-
schema: {
|
|
148
|
-
type: "string",
|
|
149
|
-
label: "Accessible name"
|
|
150
|
-
} },
|
|
162
|
+
schema: {},
|
|
151
163
|
providesContext: "order-delivery-option",
|
|
152
|
-
guideline: "The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content
|
|
164
|
+
guideline: "The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content. A single option arrives open; two or more arrive closed. Reads customerOrder by the orderId route segment; place it once on the order details page. Children such as OrderDeliveryAddress render once per option, after its rows."
|
|
153
165
|
});
|
|
154
166
|
function moneyAmount(money) {
|
|
155
167
|
if (!money || typeof money.amount === "string" && money.amount.trim() === "") return null;
|
|
@@ -190,35 +202,13 @@ function OrderDeliveryGroupSkeleton({ className, ...props }) {
|
|
|
190
202
|
children: [/* @__PURE__ */ jsx("span", { "data-fs-order-delivery-group-skeleton-option": "" }), /* @__PURE__ */ jsx("span", { "data-fs-order-delivery-group-skeleton-option": "" })]
|
|
191
203
|
});
|
|
192
204
|
}
|
|
193
|
-
function
|
|
194
|
-
const
|
|
195
|
-
const itemsOther = authored(content?.itemsOther);
|
|
196
|
-
return {
|
|
197
|
-
region: authored(content?.label) ?? (label?.trim() || intl.formatMessage({ id: "fs/order-delivery-group.label" })),
|
|
198
|
-
delivery: sentence(content?.delivery, intl.formatMessage({ id: "fs/order-delivery-group.channel.delivery" })),
|
|
199
|
-
pickup: sentence(content?.pickup, intl.formatMessage({ id: "fs/order-delivery-group.channel.pickup-in-point" })),
|
|
200
|
-
estimate: sentence(content?.estimate, intl.formatMessage({ id: "fs/order-delivery-group.estimate" })),
|
|
201
|
-
subtotal: sentence(content?.subtotal, intl.formatMessage({ id: "fs/order-delivery-group.subtotal" })),
|
|
202
|
-
quantity: sentence(content?.quantity, intl.formatMessage({ id: "fs/order-delivery-group.quantity" })),
|
|
203
|
-
unitPrice: sentence(content?.unitPrice, intl.formatMessage({ id: "fs/order-delivery-group.unit-price" })),
|
|
204
|
-
listPrice: sentence(content?.listPrice, intl.formatMessage({ id: "fs/order-delivery-group.list-price" })),
|
|
205
|
-
total: sentence(content?.total, intl.formatMessage({ id: "fs/order-delivery-group.total" })),
|
|
206
|
-
tax: sentence(content?.tax, intl.formatMessage({ id: "fs/order-delivery-group.tax" })),
|
|
207
|
-
items(count) {
|
|
208
|
-
const template = count === 1 ? itemsOne : itemsOther;
|
|
209
|
-
if (template) return template.replaceAll("{count}", String(count));
|
|
210
|
-
return intl.formatMessage({ id: "fs/order-delivery-group.items" }, { count });
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
function OrderDeliveryGroup({ label, $content, $data, children, className, ref }) {
|
|
215
|
-
const intl = useIntl();
|
|
205
|
+
function OrderDeliveryGroup({ $content, $data, children, className, ref }) {
|
|
206
|
+
const messages = useMessageFormatter(OrderDeliveryGroupContent, $content);
|
|
216
207
|
const options = $data?.deliveryOptions ?? [];
|
|
217
|
-
const labels = deliveryLabels($content, label, intl);
|
|
218
208
|
if (options.length === 0) return null;
|
|
219
209
|
return /* @__PURE__ */ jsx("section", {
|
|
220
210
|
ref,
|
|
221
|
-
"aria-label":
|
|
211
|
+
"aria-label": messages.format("label"),
|
|
222
212
|
className,
|
|
223
213
|
"data-fs-order-delivery-group": "",
|
|
224
214
|
"data-fs-order-delivery-group-count": options.length,
|
|
@@ -229,20 +219,20 @@ function OrderDeliveryGroup({ label, $content, $data, children, className, ref }
|
|
|
229
219
|
value: optionValue(index),
|
|
230
220
|
index,
|
|
231
221
|
option,
|
|
232
|
-
|
|
222
|
+
messages,
|
|
233
223
|
children
|
|
234
224
|
}, optionValue(index)))
|
|
235
225
|
})
|
|
236
226
|
});
|
|
237
227
|
}
|
|
238
|
-
function channelName(channel,
|
|
239
|
-
if (channel === "delivery") return
|
|
240
|
-
if (channel === "pickup-in-point") return
|
|
228
|
+
function channelName(channel, messages) {
|
|
229
|
+
if (channel === "delivery") return messages.format("delivery");
|
|
230
|
+
if (channel === "pickup-in-point") return messages.format("pickup");
|
|
241
231
|
return null;
|
|
242
232
|
}
|
|
243
|
-
function DeliveryOption({ value, index, option,
|
|
233
|
+
function DeliveryOption({ value, index, option, messages, children }) {
|
|
244
234
|
const { formatMoney, formatDate } = useStorefrontFormatters();
|
|
245
|
-
const name = option.selectedSla?.trim() || channelName(option.deliveryChannel,
|
|
235
|
+
const name = option.selectedSla?.trim() || channelName(option.deliveryChannel, messages);
|
|
246
236
|
const total = subtotal(option.items);
|
|
247
237
|
const estimate = estimateInstant(option.shippingEstimateDate);
|
|
248
238
|
const optionContext = useMemo(() => ({ index }), [index]);
|
|
@@ -261,7 +251,7 @@ function DeliveryOption({ value, index, option, labels, children }) {
|
|
|
261
251
|
}) : null,
|
|
262
252
|
estimate ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
263
253
|
"data-fs-order-delivery-group-option-estimate-label": "",
|
|
264
|
-
children:
|
|
254
|
+
children: messages.format("estimate")
|
|
265
255
|
}), /* @__PURE__ */ jsx("time", {
|
|
266
256
|
dateTime: option.shippingEstimateDate ?? void 0,
|
|
267
257
|
"data-fs-order-delivery-group-option-estimate": "",
|
|
@@ -269,11 +259,11 @@ function DeliveryOption({ value, index, option, labels, children }) {
|
|
|
269
259
|
})] }) : null,
|
|
270
260
|
/* @__PURE__ */ jsx("span", {
|
|
271
261
|
"data-fs-order-delivery-group-option-items": "",
|
|
272
|
-
children:
|
|
262
|
+
children: messages.format("items", { count: itemCount(option.items) })
|
|
273
263
|
}),
|
|
274
264
|
total ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
275
265
|
"data-fs-order-delivery-group-option-subtotal-label": "",
|
|
276
|
-
children:
|
|
266
|
+
children: messages.format("subtotal")
|
|
277
267
|
}), /* @__PURE__ */ jsx("span", {
|
|
278
268
|
"data-fs-order-delivery-group-option-subtotal": "",
|
|
279
269
|
children: formatMoney(total.amount, { currency: total.currencyCode })
|
|
@@ -286,7 +276,7 @@ function DeliveryOption({ value, index, option, labels, children }) {
|
|
|
286
276
|
"data-fs-order-delivery-group-rows": "",
|
|
287
277
|
children: option.items.map((line) => /* @__PURE__ */ jsx(DeliveryRow, {
|
|
288
278
|
line,
|
|
289
|
-
|
|
279
|
+
messages
|
|
290
280
|
}, line.id))
|
|
291
281
|
}), children ? /* @__PURE__ */ jsx(OrderDeliveryOptionContext.Provider, {
|
|
292
282
|
value: optionContext,
|
|
@@ -317,20 +307,20 @@ const MONEY_FACTS = {
|
|
|
317
307
|
value: { "data-fs-order-delivery-group-row-tax": "" }
|
|
318
308
|
}
|
|
319
309
|
};
|
|
320
|
-
function MoneyFact({ kind, money,
|
|
310
|
+
function MoneyFact({ kind, money, messages }) {
|
|
321
311
|
const { formatMoney } = useStorefrontFormatters();
|
|
322
312
|
const amount = moneyAmount(money);
|
|
323
313
|
if (amount == null) return null;
|
|
324
314
|
const fact = MONEY_FACTS[kind];
|
|
325
315
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
326
316
|
...fact.label,
|
|
327
|
-
children:
|
|
317
|
+
children: messages.format(fact.field)
|
|
328
318
|
}), /* @__PURE__ */ jsx("span", {
|
|
329
319
|
...fact.value,
|
|
330
320
|
children: formatMoney(amount, { currency: money.currencyCode })
|
|
331
321
|
})] });
|
|
332
322
|
}
|
|
333
|
-
function DeliveryRow({ line,
|
|
323
|
+
function DeliveryRow({ line, messages }) {
|
|
334
324
|
const listPrice = moneyAmount(line.listPrice) === moneyAmount(line.sellingPrice) ? null : line.listPrice;
|
|
335
325
|
return /* @__PURE__ */ jsxs("li", {
|
|
336
326
|
"data-fs-order-delivery-group-row": "",
|
|
@@ -362,7 +352,7 @@ function DeliveryRow({ line, labels }) {
|
|
|
362
352
|
"data-fs-order-delivery-group-row-fact": "",
|
|
363
353
|
children: [/* @__PURE__ */ jsx("span", {
|
|
364
354
|
"data-fs-order-delivery-group-row-quantity-label": "",
|
|
365
|
-
children:
|
|
355
|
+
children: messages.format("quantity")
|
|
366
356
|
}), /* @__PURE__ */ jsx("span", {
|
|
367
357
|
"data-fs-order-delivery-group-row-quantity": "",
|
|
368
358
|
children: line.quantity
|
|
@@ -371,17 +361,17 @@ function DeliveryRow({ line, labels }) {
|
|
|
371
361
|
line.sellingPrice ? /* @__PURE__ */ jsx(FactLine, { children: /* @__PURE__ */ jsx(MoneyFact, {
|
|
372
362
|
kind: "unit-price",
|
|
373
363
|
money: line.sellingPrice,
|
|
374
|
-
|
|
364
|
+
messages
|
|
375
365
|
}) }) : null,
|
|
376
366
|
listPrice ? /* @__PURE__ */ jsx(FactLine, { children: /* @__PURE__ */ jsx(MoneyFact, {
|
|
377
367
|
kind: "list-price",
|
|
378
368
|
money: listPrice,
|
|
379
|
-
|
|
369
|
+
messages
|
|
380
370
|
}) }) : null,
|
|
381
371
|
line.tax ? /* @__PURE__ */ jsx(FactLine, { children: /* @__PURE__ */ jsx(MoneyFact, {
|
|
382
372
|
kind: "tax",
|
|
383
373
|
money: line.tax,
|
|
384
|
-
|
|
374
|
+
messages
|
|
385
375
|
}) }) : null
|
|
386
376
|
]
|
|
387
377
|
}),
|
|
@@ -390,7 +380,7 @@ function DeliveryRow({ line, labels }) {
|
|
|
390
380
|
children: /* @__PURE__ */ jsx(MoneyFact, {
|
|
391
381
|
kind: "total",
|
|
392
382
|
money: line.total,
|
|
393
|
-
|
|
383
|
+
messages
|
|
394
384
|
})
|
|
395
385
|
}) : null
|
|
396
386
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-delivery-group.js","names":[],"sources":["../../../src/matter/order-delivery-group/order-delivery-group.tsx"],"sourcesContent":["'use client';\n\nimport { type ContentValue, defineComponent, defineContentType } from '@vtex/fs-core';\nimport { type ComponentPropsWithRef, createContext, type ReactNode, type Ref, useContext, useMemo } from 'react';\nimport {\n AccordionHeader,\n AccordionItem,\n AccordionPanel,\n AccordionRoot,\n AccordionTrigger,\n} from '../../particles/accordion/accordion.js';\nimport { useStorefrontFormatters } from '../../sdk/format/client.js';\nimport { useIntl } from '../../sdk/i18n/client.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderDeliveryGroupData on Query {\n customerOrder(id: $orderId) {\n deliveryOptions {\n selectedSla\n deliveryChannel\n shippingEstimateDate\n items {\n id\n name\n quantity\n image {\n url\n altText\n }\n sellingPrice {\n amount\n currencyCode\n }\n listPrice {\n amount\n currencyCode\n }\n total {\n amount\n currencyCode\n }\n tax {\n amount\n currencyCode\n }\n customFields {\n name\n value\n }\n }\n }\n }\n }\n`;\n\nexport const OrderDeliveryGroupContent = defineContentType({\n id: 'order-delivery-group',\n title: 'Order Delivery Group',\n description:\n 'The labels of a delivery group. The item-count sentences keep {count}: one for a single item, the other for the rest.',\n schema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n label: { type: 'string', title: 'Accessible name' },\n delivery: { type: 'string', title: 'Delivery' },\n pickup: { type: 'string', title: 'Pickup' },\n estimate: { type: 'string', title: 'Estimated delivery' },\n itemsOne: { type: 'string', title: 'One item', description: 'Keep the placeholder {count}.' },\n itemsOther: { type: 'string', title: 'Many items', description: 'Keep the placeholder {count}.' },\n subtotal: { type: 'string', title: 'Subtotal' },\n quantity: { type: 'string', title: 'Quantity' },\n unitPrice: { type: 'string', title: 'Unit price' },\n listPrice: { type: 'string', title: 'List price' },\n total: { type: 'string', title: 'Total' },\n tax: { type: 'string', title: 'Tax' },\n },\n },\n});\n\nexport type OrderDeliveryGroupContentValue = ContentValue<typeof OrderDeliveryGroupContent>;\n\nexport type OrderDeliveryMoney = { amount: string | number; currencyCode: string };\n\nexport type OrderDeliveryItemData = {\n id: string;\n name: string;\n quantity: number;\n image: { url: string; altText: string | null } | null;\n sellingPrice: OrderDeliveryMoney | null;\n listPrice: OrderDeliveryMoney | null;\n total: OrderDeliveryMoney | null;\n tax: OrderDeliveryMoney | null;\n customFields: Array<{ name: string; value: string }>;\n};\n\nexport type OrderDeliveryOptionData = {\n selectedSla: string | null;\n deliveryChannel: string | null;\n shippingEstimateDate: string | null;\n items: OrderDeliveryItemData[];\n};\n\n/** Unwrapped `CustomerOrder` slice. Null when the id does not resolve to the shopper's order. */\nexport type OrderDeliveryGroupData = {\n deliveryOptions: OrderDeliveryOptionData[];\n} | null;\n\nexport type OrderDeliveryGroupProps = Readonly<{\n /** Accessible name of the section. Content wins, then this prop, then the catalogue. */\n label?: string;\n $content?: OrderDeliveryGroupContentValue;\n $data?: OrderDeliveryGroupData;\n /** Rendered once per option, after its rows, inside the `order-delivery-option` context. */\n children?: ReactNode;\n className?: string;\n ref?: Ref<HTMLElement>;\n}>;\n\n/** Which delivery option the children of `OrderDeliveryGroup` are rendering inside. */\nexport type OrderDeliveryOptionContextValue = Readonly<{ index: number }>;\n\nconst OrderDeliveryOptionContext = createContext<OrderDeliveryOptionContextValue | null>(null);\n\n/** The option index published by the enclosing `OrderDeliveryGroup`, or null outside one. */\nexport function useOrderDeliveryOption(): OrderDeliveryOptionContextValue | null {\n return useContext(OrderDeliveryOptionContext);\n}\n\nconst ESTIMATE_FORMAT: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n};\n\nfunction estimateInstant(value: string | null | undefined): Date | null {\n if (!value?.trim()) {\n return null;\n }\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\ntype DeliveryLabels = {\n region: string;\n delivery: string;\n pickup: string;\n estimate: string;\n subtotal: string;\n quantity: string;\n unitPrice: string;\n listPrice: string;\n total: string;\n tax: string;\n items: (count: number) => string;\n};\n\nfunction authored(value: string | undefined): string | undefined {\n const trimmed = value?.trim();\n return trimmed || undefined;\n}\n\nfunction sentence(value: string | undefined, fallback: string): string {\n return authored(value) ?? fallback;\n}\n\nexport const OrderDeliveryGroupDefinition = defineComponent<OrderDeliveryGroupProps>({\n name: 'OrderDeliveryGroup',\n importPath: '@vtex/faststore/components',\n component: OrderDeliveryGroup,\n content: OrderDeliveryGroupContent,\n fragment,\n fetchStrategy: 'static',\n skeleton: OrderDeliveryGroupSkeleton,\n editor: { label: 'Order Delivery Group', category: 'content' },\n schema: {\n label: { type: 'string', label: 'Accessible name' },\n },\n providesContext: 'order-delivery-option',\n guideline:\n 'The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content; a blank field keeps the catalogue. A single option arrives open; two or more arrive closed. Reads customerOrder by the orderId route segment; place it once on the order details page. Children such as OrderDeliveryAddress render once per option, after its rows.',\n});\n\nfunction moneyAmount(money: OrderDeliveryMoney | null): number | null {\n // Number('') and Number(' ') are 0, which would print a blank upstream amount as a real zero.\n if (!money || (typeof money.amount === 'string' && money.amount.trim() === '')) {\n return null;\n }\n const value = typeof money.amount === 'number' ? money.amount : Number(money.amount);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction optionValue(index: number): string {\n return `option-${index}`;\n}\n\nfunction initialOpen(options: OrderDeliveryOptionData[]): string[] {\n return options.length === 1 ? [optionValue(0)] : [];\n}\n\nfunction itemCount(items: OrderDeliveryItemData[]): number {\n return items.reduce((sum, line) => sum + line.quantity, 0);\n}\n\n/** The sum of the line totals the API returned, in cents, in the currency of the first total. */\nfunction subtotal(items: OrderDeliveryItemData[]): { amount: number; currencyCode: string } | null {\n let cents = 0;\n let currencyCode: string | null = null;\n for (const line of items) {\n if (!line.total) {\n continue;\n }\n const amount = moneyAmount(line.total);\n if (amount == null) {\n continue;\n }\n cents += Math.round(amount * 100);\n currencyCode ??= line.total.currencyCode;\n }\n return currencyCode ? { amount: cents / 100, currencyCode } : null;\n}\n\nexport function OrderDeliveryGroupSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-delivery-group-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n </div>\n );\n}\n\nfunction deliveryLabels(\n content: OrderDeliveryGroupContentValue | undefined,\n label: string | undefined,\n intl: ReturnType<typeof useIntl>,\n): DeliveryLabels {\n const itemsOne = authored(content?.itemsOne);\n const itemsOther = authored(content?.itemsOther);\n return {\n region: authored(content?.label) ?? (label?.trim() || intl.formatMessage({ id: 'fs/order-delivery-group.label' })),\n delivery: sentence(content?.delivery, intl.formatMessage({ id: 'fs/order-delivery-group.channel.delivery' })),\n pickup: sentence(content?.pickup, intl.formatMessage({ id: 'fs/order-delivery-group.channel.pickup-in-point' })),\n estimate: sentence(content?.estimate, intl.formatMessage({ id: 'fs/order-delivery-group.estimate' })),\n subtotal: sentence(content?.subtotal, intl.formatMessage({ id: 'fs/order-delivery-group.subtotal' })),\n quantity: sentence(content?.quantity, intl.formatMessage({ id: 'fs/order-delivery-group.quantity' })),\n unitPrice: sentence(content?.unitPrice, intl.formatMessage({ id: 'fs/order-delivery-group.unit-price' })),\n listPrice: sentence(content?.listPrice, intl.formatMessage({ id: 'fs/order-delivery-group.list-price' })),\n total: sentence(content?.total, intl.formatMessage({ id: 'fs/order-delivery-group.total' })),\n tax: sentence(content?.tax, intl.formatMessage({ id: 'fs/order-delivery-group.tax' })),\n items(count: number) {\n const template = count === 1 ? itemsOne : itemsOther;\n if (template) {\n return template.replaceAll('{count}', String(count));\n }\n return intl.formatMessage({ id: 'fs/order-delivery-group.items' }, { count });\n },\n };\n}\n\nexport function OrderDeliveryGroup({ label, $content, $data, children, className, ref }: OrderDeliveryGroupProps) {\n const intl = useIntl();\n const options = $data?.deliveryOptions ?? [];\n const labels = deliveryLabels($content, label, intl);\n\n if (options.length === 0) {\n return null;\n }\n\n return (\n <section\n ref={ref}\n aria-label={labels.region}\n className={className}\n data-fs-order-delivery-group=\"\"\n data-fs-order-delivery-group-count={options.length}\n >\n <AccordionRoot openMultiple defaultValue={initialOpen(options)}>\n {options.map((option, index) => (\n <DeliveryOption\n key={optionValue(index)}\n value={optionValue(index)}\n index={index}\n option={option}\n labels={labels}\n >\n {children}\n </DeliveryOption>\n ))}\n </AccordionRoot>\n </section>\n );\n}\n\ntype DeliveryOptionProps = Readonly<{\n value: string;\n index: number;\n option: OrderDeliveryOptionData;\n labels: DeliveryLabels;\n children?: ReactNode;\n}>;\n\nfunction channelName(channel: string | null, labels: DeliveryLabels): string | null {\n if (channel === 'delivery') {\n return labels.delivery;\n }\n if (channel === 'pickup-in-point') {\n return labels.pickup;\n }\n return null;\n}\n\nfunction DeliveryOption({ value, index, option, labels, children }: DeliveryOptionProps) {\n const { formatMoney, formatDate } = useStorefrontFormatters();\n const name = option.selectedSla?.trim() || channelName(option.deliveryChannel, labels);\n const total = subtotal(option.items);\n const estimate = estimateInstant(option.shippingEstimateDate);\n const optionContext = useMemo(() => ({ index }), [index]);\n\n return (\n <AccordionItem\n value={value}\n data-fs-order-delivery-group-option=\"\"\n data-fs-order-delivery-group-option-channel={option.deliveryChannel ?? undefined}\n >\n <AccordionHeader data-fs-order-delivery-group-option-header=\"\">\n <AccordionTrigger data-fs-order-delivery-group-option-trigger=\"\">\n {name ? <span data-fs-order-delivery-group-option-name=\"\">{name}</span> : null}\n {estimate ? (\n <>\n <span data-fs-order-delivery-group-option-estimate-label=\"\">{labels.estimate}</span>\n <time dateTime={option.shippingEstimateDate ?? undefined} data-fs-order-delivery-group-option-estimate=\"\">\n {formatDate(estimate, ESTIMATE_FORMAT)}\n </time>\n </>\n ) : null}\n <span data-fs-order-delivery-group-option-items=\"\">{labels.items(itemCount(option.items))}</span>\n {total ? (\n <>\n <span data-fs-order-delivery-group-option-subtotal-label=\"\">{labels.subtotal}</span>\n <span data-fs-order-delivery-group-option-subtotal=\"\">\n {formatMoney(total.amount, { currency: total.currencyCode })}\n </span>\n </>\n ) : null}\n </AccordionTrigger>\n </AccordionHeader>\n <AccordionPanel data-fs-order-delivery-group-option-panel=\"\">\n <ul data-fs-order-delivery-group-rows=\"\">\n {option.items.map((line) => (\n <DeliveryRow key={line.id} line={line} labels={labels} />\n ))}\n </ul>\n {children ? (\n <OrderDeliveryOptionContext.Provider value={optionContext}>{children}</OrderDeliveryOptionContext.Provider>\n ) : null}\n </AccordionPanel>\n </AccordionItem>\n );\n}\n\ntype MoneyLabel = 'unitPrice' | 'listPrice' | 'total' | 'tax';\n\nconst MONEY_FACTS = {\n 'unit-price': {\n field: 'unitPrice',\n label: { 'data-fs-order-delivery-group-row-unit-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-unit-price': '' },\n },\n 'list-price': {\n field: 'listPrice',\n label: { 'data-fs-order-delivery-group-row-list-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-list-price': '' },\n },\n total: {\n field: 'total',\n label: { 'data-fs-order-delivery-group-row-total-label': '' },\n value: { 'data-fs-order-delivery-group-row-total': '' },\n },\n tax: {\n field: 'tax',\n label: { 'data-fs-order-delivery-group-row-tax-label': '' },\n value: { 'data-fs-order-delivery-group-row-tax': '' },\n },\n} as const satisfies Record<string, { field: MoneyLabel; label: object; value: object }>;\n\ntype MoneyFactProps = Readonly<{\n kind: keyof typeof MONEY_FACTS;\n money: OrderDeliveryMoney;\n labels: DeliveryLabels;\n}>;\n\nfunction MoneyFact({ kind, money, labels }: MoneyFactProps) {\n const { formatMoney } = useStorefrontFormatters();\n const amount = moneyAmount(money);\n if (amount == null) {\n return null;\n }\n const fact = MONEY_FACTS[kind];\n\n return (\n <>\n <span {...fact.label}>{labels[fact.field]}</span>\n <span {...fact.value}>{formatMoney(amount, { currency: money.currencyCode })}</span>\n </>\n );\n}\n\nfunction DeliveryRow({ line, labels }: Readonly<{ line: OrderDeliveryItemData; labels: DeliveryLabels }>) {\n const listPrice = moneyAmount(line.listPrice) === moneyAmount(line.sellingPrice) ? null : line.listPrice;\n\n return (\n <li data-fs-order-delivery-group-row=\"\">\n {line.image ? (\n // biome-ignore lint/performance/noImgElement: order line image URL is dynamic; matter stays Next-agnostic.\n <img\n src={line.image.url}\n alt={line.image.altText ?? line.name}\n data-fs-order-delivery-group-row-image=\"\"\n data-fs-image=\"\"\n />\n ) : null}\n <span data-fs-order-delivery-group-row-details=\"\">\n <span data-fs-order-delivery-group-row-name=\"\">{line.name}</span>\n {line.customFields.map((field) => (\n <span key={field.name} data-fs-order-delivery-group-row-custom-field=\"\">\n <span data-fs-order-delivery-group-row-custom-field-name=\"\">{field.name}</span>\n <span data-fs-order-delivery-group-row-custom-field-value=\"\">{field.value}</span>\n </span>\n ))}\n <span data-fs-order-delivery-group-row-fact=\"\">\n <span data-fs-order-delivery-group-row-quantity-label=\"\">{labels.quantity}</span>\n <span data-fs-order-delivery-group-row-quantity=\"\">{line.quantity}</span>\n </span>\n {line.sellingPrice ? (\n <FactLine>\n <MoneyFact kind=\"unit-price\" money={line.sellingPrice} labels={labels} />\n </FactLine>\n ) : null}\n {listPrice ? (\n <FactLine>\n <MoneyFact kind=\"list-price\" money={listPrice} labels={labels} />\n </FactLine>\n ) : null}\n {line.tax ? (\n <FactLine>\n <MoneyFact kind=\"tax\" money={line.tax} labels={labels} />\n </FactLine>\n ) : null}\n </span>\n {line.total ? (\n <span data-fs-order-delivery-group-row-aside=\"\">\n <MoneyFact kind=\"total\" money={line.total} labels={labels} />\n </span>\n ) : null}\n </li>\n );\n}\n\nfunction FactLine({ children }: Readonly<{ children: ReactNode }>) {\n return <span data-fs-order-delivery-group-row-fact=\"\">{children}</span>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"order-delivery-group.js","names":[],"sources":["../../../src/matter/order-delivery-group/order-delivery-group.tsx"],"sourcesContent":["'use client';\n\nimport { type ContentValue, defineComponent, defineContentType, type MessageLocaleProp } from '@vtex/fs-core';\nimport { type ComponentPropsWithRef, createContext, type ReactNode, type Ref, useContext, useMemo } from 'react';\nimport {\n AccordionHeader,\n AccordionItem,\n AccordionPanel,\n AccordionRoot,\n AccordionTrigger,\n} from '../../particles/accordion/accordion.js';\nimport { useStorefrontFormatters } from '../../sdk/format/client.js';\nimport type { MessageFormatter } from '../../sdk/i18n/message-formatter.js';\nimport { useMessageFormatter } from '../../sdk/i18n/use-message-formatter.js';\n\nconst fragment = /* GraphQL */ `\n fragment OrderDeliveryGroupData on Query {\n customerOrder(id: $orderId) {\n deliveryOptions {\n selectedSla\n deliveryChannel\n shippingEstimateDate\n items {\n id\n name\n quantity\n image {\n url\n altText\n }\n sellingPrice {\n amount\n currencyCode\n }\n listPrice {\n amount\n currencyCode\n }\n total {\n amount\n currencyCode\n }\n tax {\n amount\n currencyCode\n }\n customFields {\n name\n value\n }\n }\n }\n }\n }\n`;\n\nexport const OrderDeliveryGroupContent = defineContentType({\n id: 'order-delivery-group',\n title: 'Order Delivery Group',\n description: 'The labels of a delivery group.',\n schema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n label: { type: 'string', title: 'Accessible name', format: 'icu-message', messageSource: 'Deliveries' },\n delivery: { type: 'string', title: 'Delivery', format: 'icu-message', messageSource: 'Delivery' },\n pickup: { type: 'string', title: 'Pickup', format: 'icu-message', messageSource: 'Pickup' },\n estimate: {\n type: 'string',\n title: 'Estimated delivery',\n format: 'icu-message',\n messageSource: 'Estimated delivery',\n },\n items: {\n type: 'string',\n title: 'Item count',\n format: 'icu-message',\n messageSource: '{count, plural, one {# item} other {# items}}',\n messageArguments: { type: 'object', properties: { count: { type: 'integer' } } },\n messageExample: { count: 2 },\n },\n subtotal: { type: 'string', title: 'Subtotal', format: 'icu-message', messageSource: 'Subtotal' },\n quantity: { type: 'string', title: 'Quantity', format: 'icu-message', messageSource: 'Quantity' },\n unitPrice: { type: 'string', title: 'Unit price', format: 'icu-message', messageSource: 'Unit price' },\n listPrice: { type: 'string', title: 'List price', format: 'icu-message', messageSource: 'List price' },\n total: { type: 'string', title: 'Total', format: 'icu-message', messageSource: 'Total' },\n tax: { type: 'string', title: 'Tax', format: 'icu-message', messageSource: 'Tax' },\n },\n },\n});\n\nexport type OrderDeliveryGroupContentValue = ContentValue<typeof OrderDeliveryGroupContent>;\n\nexport type OrderDeliveryMoney = { amount: string | number; currencyCode: string };\n\nexport type OrderDeliveryItemData = {\n id: string;\n name: string;\n quantity: number;\n image: { url: string; altText: string | null } | null;\n sellingPrice: OrderDeliveryMoney | null;\n listPrice: OrderDeliveryMoney | null;\n total: OrderDeliveryMoney | null;\n tax: OrderDeliveryMoney | null;\n customFields: Array<{ name: string; value: string }>;\n};\n\nexport type OrderDeliveryOptionData = {\n selectedSla: string | null;\n deliveryChannel: string | null;\n shippingEstimateDate: string | null;\n items: OrderDeliveryItemData[];\n};\n\n/** Unwrapped `CustomerOrder` slice. Null when the id does not resolve to the shopper's order. */\nexport type OrderDeliveryGroupData = {\n deliveryOptions: OrderDeliveryOptionData[];\n} | null;\n\nexport type OrderDeliveryGroupProps = MessageLocaleProp &\n Readonly<{\n $content?: OrderDeliveryGroupContentValue;\n $data?: OrderDeliveryGroupData;\n /** Rendered once per option, after its rows, inside the `order-delivery-option` context. */\n children?: ReactNode;\n className?: string;\n ref?: Ref<HTMLElement>;\n }>;\n\n/** Which delivery option the children of `OrderDeliveryGroup` are rendering inside. */\nexport type OrderDeliveryOptionContextValue = Readonly<{ index: number }>;\n\nconst OrderDeliveryOptionContext = createContext<OrderDeliveryOptionContextValue | null>(null);\n\n/** The option index published by the enclosing `OrderDeliveryGroup`, or null outside one. */\nexport function useOrderDeliveryOption(): OrderDeliveryOptionContextValue | null {\n return useContext(OrderDeliveryOptionContext);\n}\n\nconst ESTIMATE_FORMAT: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n};\n\nfunction estimateInstant(value: string | null | undefined): Date | null {\n if (!value?.trim()) {\n return null;\n }\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\ntype DeliveryMessages = MessageFormatter<typeof OrderDeliveryGroupContent>;\n\nexport const OrderDeliveryGroupDefinition = defineComponent<OrderDeliveryGroupProps>({\n name: 'OrderDeliveryGroup',\n importPath: '@vtex/faststore/components',\n component: OrderDeliveryGroup,\n content: OrderDeliveryGroupContent,\n fragment,\n fetchStrategy: 'static',\n skeleton: OrderDeliveryGroupSkeleton,\n editor: { label: 'Order Delivery Group', category: 'content' },\n schema: {},\n providesContext: 'order-delivery-option',\n guideline:\n 'The products of one order grouped by delivery option, one collapsible group per option with the option name, the delivery estimate when the order has one, the item count, and the subtotal in its header. Labels are content. A single option arrives open; two or more arrive closed. Reads customerOrder by the orderId route segment; place it once on the order details page. Children such as OrderDeliveryAddress render once per option, after its rows.',\n});\n\nfunction moneyAmount(money: OrderDeliveryMoney | null): number | null {\n // Number('') and Number(' ') are 0, which would print a blank upstream amount as a real zero.\n if (!money || (typeof money.amount === 'string' && money.amount.trim() === '')) {\n return null;\n }\n const value = typeof money.amount === 'number' ? money.amount : Number(money.amount);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction optionValue(index: number): string {\n return `option-${index}`;\n}\n\nfunction initialOpen(options: OrderDeliveryOptionData[]): string[] {\n return options.length === 1 ? [optionValue(0)] : [];\n}\n\nfunction itemCount(items: OrderDeliveryItemData[]): number {\n return items.reduce((sum, line) => sum + line.quantity, 0);\n}\n\n/** The sum of the line totals the API returned, in cents, in the currency of the first total. */\nfunction subtotal(items: OrderDeliveryItemData[]): { amount: number; currencyCode: string } | null {\n let cents = 0;\n let currencyCode: string | null = null;\n for (const line of items) {\n if (!line.total) {\n continue;\n }\n const amount = moneyAmount(line.total);\n if (amount == null) {\n continue;\n }\n cents += Math.round(amount * 100);\n currencyCode ??= line.total.currencyCode;\n }\n return currencyCode ? { amount: cents / 100, currencyCode } : null;\n}\n\nexport function OrderDeliveryGroupSkeleton({ className, ...props }: ComponentPropsWithRef<'div'>) {\n return (\n <div {...props} className={className} data-fs-order-delivery-group-skeleton=\"\" aria-hidden=\"true\">\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n <span data-fs-order-delivery-group-skeleton-option=\"\" />\n </div>\n );\n}\n\nexport function OrderDeliveryGroup({ $content, $data, children, className, ref }: OrderDeliveryGroupProps) {\n const messages = useMessageFormatter(OrderDeliveryGroupContent, $content);\n const options = $data?.deliveryOptions ?? [];\n\n if (options.length === 0) {\n return null;\n }\n\n return (\n <section\n ref={ref}\n aria-label={messages.format('label')}\n className={className}\n data-fs-order-delivery-group=\"\"\n data-fs-order-delivery-group-count={options.length}\n >\n <AccordionRoot openMultiple defaultValue={initialOpen(options)}>\n {options.map((option, index) => (\n <DeliveryOption\n key={optionValue(index)}\n value={optionValue(index)}\n index={index}\n option={option}\n messages={messages}\n >\n {children}\n </DeliveryOption>\n ))}\n </AccordionRoot>\n </section>\n );\n}\n\ntype DeliveryOptionProps = Readonly<{\n value: string;\n index: number;\n option: OrderDeliveryOptionData;\n messages: DeliveryMessages;\n children?: ReactNode;\n}>;\n\nfunction channelName(channel: string | null, messages: DeliveryMessages): string | null {\n if (channel === 'delivery') {\n return messages.format('delivery');\n }\n if (channel === 'pickup-in-point') {\n return messages.format('pickup');\n }\n return null;\n}\n\nfunction DeliveryOption({ value, index, option, messages, children }: DeliveryOptionProps) {\n const { formatMoney, formatDate } = useStorefrontFormatters();\n const name = option.selectedSla?.trim() || channelName(option.deliveryChannel, messages);\n const total = subtotal(option.items);\n const estimate = estimateInstant(option.shippingEstimateDate);\n const optionContext = useMemo(() => ({ index }), [index]);\n\n return (\n <AccordionItem\n value={value}\n data-fs-order-delivery-group-option=\"\"\n data-fs-order-delivery-group-option-channel={option.deliveryChannel ?? undefined}\n >\n <AccordionHeader data-fs-order-delivery-group-option-header=\"\">\n <AccordionTrigger data-fs-order-delivery-group-option-trigger=\"\">\n {name ? <span data-fs-order-delivery-group-option-name=\"\">{name}</span> : null}\n {estimate ? (\n <>\n <span data-fs-order-delivery-group-option-estimate-label=\"\">{messages.format('estimate')}</span>\n <time dateTime={option.shippingEstimateDate ?? undefined} data-fs-order-delivery-group-option-estimate=\"\">\n {formatDate(estimate, ESTIMATE_FORMAT)}\n </time>\n </>\n ) : null}\n <span data-fs-order-delivery-group-option-items=\"\">\n {messages.format('items', { count: itemCount(option.items) })}\n </span>\n {total ? (\n <>\n <span data-fs-order-delivery-group-option-subtotal-label=\"\">{messages.format('subtotal')}</span>\n <span data-fs-order-delivery-group-option-subtotal=\"\">\n {formatMoney(total.amount, { currency: total.currencyCode })}\n </span>\n </>\n ) : null}\n </AccordionTrigger>\n </AccordionHeader>\n <AccordionPanel data-fs-order-delivery-group-option-panel=\"\">\n <ul data-fs-order-delivery-group-rows=\"\">\n {option.items.map((line) => (\n <DeliveryRow key={line.id} line={line} messages={messages} />\n ))}\n </ul>\n {children ? (\n <OrderDeliveryOptionContext.Provider value={optionContext}>{children}</OrderDeliveryOptionContext.Provider>\n ) : null}\n </AccordionPanel>\n </AccordionItem>\n );\n}\n\ntype MoneyLabel = 'unitPrice' | 'listPrice' | 'total' | 'tax';\n\nconst MONEY_FACTS = {\n 'unit-price': {\n field: 'unitPrice',\n label: { 'data-fs-order-delivery-group-row-unit-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-unit-price': '' },\n },\n 'list-price': {\n field: 'listPrice',\n label: { 'data-fs-order-delivery-group-row-list-price-label': '' },\n value: { 'data-fs-order-delivery-group-row-list-price': '' },\n },\n total: {\n field: 'total',\n label: { 'data-fs-order-delivery-group-row-total-label': '' },\n value: { 'data-fs-order-delivery-group-row-total': '' },\n },\n tax: {\n field: 'tax',\n label: { 'data-fs-order-delivery-group-row-tax-label': '' },\n value: { 'data-fs-order-delivery-group-row-tax': '' },\n },\n} as const satisfies Record<string, { field: MoneyLabel; label: object; value: object }>;\n\ntype MoneyFactProps = Readonly<{\n kind: keyof typeof MONEY_FACTS;\n money: OrderDeliveryMoney;\n messages: DeliveryMessages;\n}>;\n\nfunction MoneyFact({ kind, money, messages }: MoneyFactProps) {\n const { formatMoney } = useStorefrontFormatters();\n const amount = moneyAmount(money);\n if (amount == null) {\n return null;\n }\n const fact = MONEY_FACTS[kind];\n\n return (\n <>\n <span {...fact.label}>{messages.format(fact.field)}</span>\n <span {...fact.value}>{formatMoney(amount, { currency: money.currencyCode })}</span>\n </>\n );\n}\n\nfunction DeliveryRow({ line, messages }: Readonly<{ line: OrderDeliveryItemData; messages: DeliveryMessages }>) {\n const listPrice = moneyAmount(line.listPrice) === moneyAmount(line.sellingPrice) ? null : line.listPrice;\n\n return (\n <li data-fs-order-delivery-group-row=\"\">\n {line.image ? (\n // biome-ignore lint/performance/noImgElement: order line image URL is dynamic; matter stays Next-agnostic.\n <img\n src={line.image.url}\n alt={line.image.altText ?? line.name}\n data-fs-order-delivery-group-row-image=\"\"\n data-fs-image=\"\"\n />\n ) : null}\n <span data-fs-order-delivery-group-row-details=\"\">\n <span data-fs-order-delivery-group-row-name=\"\">{line.name}</span>\n {line.customFields.map((field) => (\n <span key={field.name} data-fs-order-delivery-group-row-custom-field=\"\">\n <span data-fs-order-delivery-group-row-custom-field-name=\"\">{field.name}</span>\n <span data-fs-order-delivery-group-row-custom-field-value=\"\">{field.value}</span>\n </span>\n ))}\n <span data-fs-order-delivery-group-row-fact=\"\">\n <span data-fs-order-delivery-group-row-quantity-label=\"\">{messages.format('quantity')}</span>\n <span data-fs-order-delivery-group-row-quantity=\"\">{line.quantity}</span>\n </span>\n {line.sellingPrice ? (\n <FactLine>\n <MoneyFact kind=\"unit-price\" money={line.sellingPrice} messages={messages} />\n </FactLine>\n ) : null}\n {listPrice ? (\n <FactLine>\n <MoneyFact kind=\"list-price\" money={listPrice} messages={messages} />\n </FactLine>\n ) : null}\n {line.tax ? (\n <FactLine>\n <MoneyFact kind=\"tax\" money={line.tax} messages={messages} />\n </FactLine>\n ) : null}\n </span>\n {line.total ? (\n <span data-fs-order-delivery-group-row-aside=\"\">\n <MoneyFact kind=\"total\" money={line.total} messages={messages} />\n </span>\n ) : null}\n </li>\n );\n}\n\nfunction FactLine({ children }: Readonly<{ children: ReactNode }>) {\n return <span data-fs-order-delivery-group-row-fact=\"\">{children}</span>;\n}\n"],"mappings":"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"}
|