@faststore/core 3.83.1 → 3.84.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +31 -31
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +22 -22
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/1911.js +1 -1
- package/.next/server/chunks/6789.js +1 -1
- package/.next/server/chunks/8474.js +1 -1
- package/.next/server/chunks/948.js +1 -1
- package/.next/server/chunks/9563.js +2 -2
- package/.next/server/chunks/9630.js +10 -7
- package/.next/server/functions-config-manifest.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/api/graphql.js +2 -2
- package/.next/server/pages/en-US/404.html +1 -1
- package/.next/server/pages/en-US/500.html +1 -1
- package/.next/server/pages/en-US/checkout.html +1 -1
- package/.next/server/pages/en-US/login.html +1 -1
- package/.next/server/pages/en-US/s.html +1 -1
- package/.next/server/pages/en-US.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/static/{CaCKSx22-JjJUNjxZbMA8 → JWySqDfbntI51mphX20uA}/_buildManifest.js +1 -1
- package/.next/static/chunks/3166-b1ac316afe18625b.js +1 -0
- package/.next/static/chunks/3836.c7f8d69a151682bc.js +1 -0
- package/.next/static/chunks/6789.c37c2ec891333684.js +1 -0
- package/.next/static/chunks/{7191-d91c65fe5de71dcd.js → 7191-d39597fc204602cb.js} +1 -1
- package/.next/static/chunks/9781.60f28efd7e165f54.js +1 -0
- package/.next/static/chunks/ProductTiles.2bd64de5bcd5f6d8.js +1 -0
- package/.next/static/chunks/pages/[slug]/{p-6ae1f8bde471e1a6.js → p-60dd0938ba92424b.js} +1 -1
- package/.next/static/chunks/pages/_app-423f11b0d7fff185.js +1 -0
- package/.next/static/chunks/{webpack-648fd45b167c0042.js → webpack-92cd0db592faf63b.js} +1 -1
- package/.next/static/css/{4656927d3ebbf5b8.css → 04fb2d4b8924b0c6.css} +1 -1
- package/.next/static/css/24a5e8f6808266fe.css +1 -0
- package/.next/static/css/{62a5153ac7061286.css → 3d7be7043aee15df.css} +1 -1
- package/.next/static/css/{a3ca6a9b63f657be.css → 6cd282d958f613bc.css} +1 -1
- package/.next/static/css/{8f6350925b347380.css → fe0bcc13a2b68605.css} +1 -1
- package/.next/trace +136 -136
- package/.turbo/turbo-build.log +17 -17
- package/.turbo/turbo-test.log +5 -5
- package/@generated/gql.ts +2 -2
- package/@generated/graphql.ts +22 -3
- package/@generated/persisted-documents.json +3 -3
- package/@generated/schema.graphql +8 -0
- package/CHANGELOG.md +10 -0
- package/cms/faststore/content-types.json +32 -0
- package/package.json +4 -4
- package/src/components/product/ProductCard/ProductCard.tsx +14 -0
- package/src/sdk/deliveryPromise/useDeliveryPromise.ts +87 -1
- package/src/utils/globalSettings.ts +7 -0
- package/.next/static/chunks/3166-7f69db4fed76486b.js +0 -1
- package/.next/static/chunks/3836.63a23109a71dbbdb.js +0 -1
- package/.next/static/chunks/6789.38bef760c1190c23.js +0 -1
- package/.next/static/chunks/9781.dd4028663db7414b.js +0 -1
- package/.next/static/chunks/ProductTiles.90806430263e4389.js +0 -1
- package/.next/static/chunks/pages/_app-ea25733c67653eac.js +0 -1
- package/.next/static/css/4b8252ed2f23ac67.css +0 -1
- /package/.next/static/{CaCKSx22-JjJUNjxZbMA8 → JWySqDfbntI51mphX20uA}/_ssgManifest.js +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
|
|
2
|
-
> @faststore/core@3.
|
|
2
|
+
> @faststore/core@3.84.0 prebuild /home/runner/work/faststore/faststore/packages/core
|
|
3
3
|
> na run partytown && na run generate
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @faststore/core@3.
|
|
6
|
+
> @faststore/core@3.84.0 partytown /home/runner/work/faststore/faststore/packages/core
|
|
7
7
|
> partytown copylib ./public/~partytown
|
|
8
8
|
|
|
9
9
|
Partytown lib copied to: /home/runner/work/faststore/faststore/packages/core/public/~partytown
|
|
10
10
|
|
|
11
|
-
> @faststore/core@3.
|
|
11
|
+
> @faststore/core@3.84.0 generate /home/runner/work/faststore/faststore/packages/core
|
|
12
12
|
> na run generate:schema && na run generate:codegen && na run format:generated
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
> @faststore/core@3.
|
|
15
|
+
> @faststore/core@3.84.0 generate:schema /home/runner/work/faststore/faststore/packages/core
|
|
16
16
|
> tsx src/server/generator/generateGraphQLSchemaFile.ts
|
|
17
17
|
|
|
18
18
|
Schema GraphQL file generated successfully
|
|
19
19
|
|
|
20
|
-
> @faststore/core@3.
|
|
20
|
+
> @faststore/core@3.84.0 generate:codegen /home/runner/work/faststore/faststore/packages/core
|
|
21
21
|
> graphql-codegen
|
|
22
22
|
|
|
23
23
|
[STARTED] Parse Configuration
|
|
@@ -37,11 +37,11 @@ Running lifecycle hook "afterStart" scripts...
|
|
|
37
37
|
[CLI] Loading Documents
|
|
38
38
|
[CLI] Generating output
|
|
39
39
|
|
|
40
|
-
> @faststore/core@3.
|
|
40
|
+
> @faststore/core@3.84.0 format:generated /home/runner/work/faststore/faststore/packages/core
|
|
41
41
|
> prettier --write "@generated/**/*.{ts,js,tsx,jsx,json}" --loglevel error
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
> @faststore/core@3.
|
|
44
|
+
> @faststore/core@3.84.0 build /home/runner/work/faststore/faststore/packages/core
|
|
45
45
|
> next build
|
|
46
46
|
|
|
47
47
|
⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
|
|
@@ -76,10 +76,10 @@ Route (pages) Size First Load JS
|
|
|
76
76
|
┌ ● / 3.66 kB 141 kB
|
|
77
77
|
├ └ css/b1806cbafd0c1f81.css 3.06 kB
|
|
78
78
|
├ /_app 0 B 107 kB
|
|
79
|
-
├ ● /[...slug] 2.45 kB
|
|
80
|
-
├ ● /[slug]/p 33.
|
|
81
|
-
├ ├ css/
|
|
82
|
-
├ ├ css/
|
|
79
|
+
├ ● /[...slug] 2.45 kB 155 kB
|
|
80
|
+
├ ● /[slug]/p 33.5 kB 171 kB
|
|
81
|
+
├ ├ css/6cd282d958f613bc.css 5.9 kB
|
|
82
|
+
├ ├ css/3d7be7043aee15df.css 6.26 kB
|
|
83
83
|
├ └ css/6d92375b6ee8276a.css 16.1 kB
|
|
84
84
|
├ ○ /404 1.55 kB 139 kB
|
|
85
85
|
├ ● /500 1.55 kB 139 kB
|
|
@@ -87,11 +87,11 @@ Route (pages) Size First Load JS
|
|
|
87
87
|
├ ● /account/[...unknown] 281 B 107 kB
|
|
88
88
|
├ λ /account/403 2.44 kB 140 kB
|
|
89
89
|
├ └ css/b7bba8fce075688b.css 4.2 kB
|
|
90
|
-
├ λ /account/404 2.13 kB
|
|
90
|
+
├ λ /account/404 2.13 kB 140 kB
|
|
91
91
|
├ └ css/5347dbc8b71de47d.css 4.25 kB
|
|
92
92
|
├ λ /account/orders 10.5 kB 148 kB
|
|
93
93
|
├ └ css/b7fc24e8f1eb011f.css 12.8 kB
|
|
94
|
-
├ λ /account/orders/[id] 12.2 kB
|
|
94
|
+
├ λ /account/orders/[id] 12.2 kB 150 kB
|
|
95
95
|
├ └ css/297be4be3be36ff0.css 12.6 kB
|
|
96
96
|
├ λ /account/profile 1.79 kB 139 kB
|
|
97
97
|
├ └ css/831a1f72fe4b2d80.css 3.97 kB
|
|
@@ -105,13 +105,13 @@ Route (pages) Size First Load JS
|
|
|
105
105
|
├ λ /api/preview 0 B 107 kB
|
|
106
106
|
├ ● /checkout 737 B 138 kB
|
|
107
107
|
├ ● /login 1.68 kB 139 kB
|
|
108
|
-
└ ● /s 3.24 kB
|
|
108
|
+
└ ● /s 3.24 kB 156 kB
|
|
109
109
|
+ First Load JS shared by all 110 kB
|
|
110
110
|
├ chunks/framework-807b0f81cbc129f0.js 45.4 kB
|
|
111
111
|
├ chunks/main-f658704b53a96ab1.js 33.1 kB
|
|
112
|
-
├ chunks/pages/_app-
|
|
113
|
-
├ chunks/webpack-
|
|
114
|
-
└ css/
|
|
112
|
+
├ chunks/pages/_app-423f11b0d7fff185.js 24.7 kB
|
|
113
|
+
├ chunks/webpack-92cd0db592faf63b.js 3.85 kB
|
|
114
|
+
└ css/24a5e8f6808266fe.css 3.53 kB
|
|
115
115
|
|
|
116
116
|
λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
|
|
117
117
|
○ (Static) automatically rendered as static HTML (uses no initial props)
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
|
|
2
|
-
> @faststore/core@3.
|
|
2
|
+
> @faststore/core@3.84.0 test /home/runner/work/faststore/faststore/packages/core
|
|
3
3
|
> jest
|
|
4
4
|
|
|
5
|
-
PASS test/server/cms/global.test.ts (
|
|
6
|
-
PASS test/utils/multipleTemplates.test.ts (
|
|
5
|
+
PASS test/server/cms/global.test.ts (26.785 s)
|
|
6
|
+
PASS test/utils/multipleTemplates.test.ts (27.381 s)
|
|
7
7
|
PASS test/server/cms/index.test.ts
|
|
8
|
-
PASS test/server/index.test.ts (
|
|
8
|
+
PASS test/server/index.test.ts (30.588 s)
|
|
9
9
|
|
|
10
10
|
Test Suites: 4 passed, 4 total
|
|
11
11
|
Tests: 22 passed, 22 total
|
|
12
12
|
Snapshots: 0 total
|
|
13
|
-
Time:
|
|
13
|
+
Time: 31.898 s
|
|
14
14
|
Ran all test suites.
|
package/@generated/gql.ts
CHANGED
|
@@ -12,7 +12,7 @@ import * as types from './graphql'
|
|
|
12
12
|
* Therefore it is highly recommended to use the babel or swc plugin for production.
|
|
13
13
|
*/
|
|
14
14
|
const documents = {
|
|
15
|
-
'\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\t\tunitMultiplier\n\n isVariantOf {\n productGroupID\n name\n\t\t\tskuVariants {\n\t\t\t\tallVariantsByName\n\t\t\t\tactiveVariations\n\t\t\t\tslugsMap\n\t\t\t\tavailableVariations\n\t\t\t}\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n priceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n hasSpecifications\n\n unitMultiplier\n\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n allVariantProducts {\n name\n productID\n }\n }\n }\n\n advertisement {\n adId\n adResponseId\n }\n }\n':
|
|
15
|
+
'\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\t\tunitMultiplier\n\n isVariantOf {\n productGroupID\n name\n\t\t\tskuVariants {\n\t\t\t\tallVariantsByName\n\t\t\t\tactiveVariations\n\t\t\t\tslugsMap\n\t\t\t\tavailableVariations\n\t\t\t}\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n priceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n hasSpecifications\n\n unitMultiplier\n\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n allVariantProducts {\n name\n productID\n }\n }\n }\n\n advertisement {\n adId\n adResponseId\n }\n\n deliveryPromiseBadges {\n typeName\n }\n }\n':
|
|
16
16
|
types.ProductSummary_ProductFragmentDoc,
|
|
17
17
|
'\n fragment Filter_facets on StoreFacet {\n ... on StoreFacetRange {\n key\n label\n\n min {\n selected\n absolute\n }\n\n max {\n selected\n absolute\n }\n\n __typename\n }\n ... on StoreFacetBoolean {\n key\n label\n values {\n label\n value\n selected\n quantity\n }\n\n __typename\n }\n }\n':
|
|
18
18
|
types.Filter_FacetsFragmentDoc,
|
|
@@ -98,7 +98,7 @@ const documents = {
|
|
|
98
98
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
99
99
|
*/
|
|
100
100
|
export function gql(
|
|
101
|
-
source: '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\t\tunitMultiplier\n\n isVariantOf {\n productGroupID\n name\n\t\t\tskuVariants {\n\t\t\t\tallVariantsByName\n\t\t\t\tactiveVariations\n\t\t\t\tslugsMap\n\t\t\t\tavailableVariations\n\t\t\t}\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n priceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n hasSpecifications\n\n unitMultiplier\n\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n allVariantProducts {\n name\n productID\n }\n }\n }\n\n advertisement {\n adId\n adResponseId\n }\n }\n'
|
|
101
|
+
source: '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\t\tunitMultiplier\n\n isVariantOf {\n productGroupID\n name\n\t\t\tskuVariants {\n\t\t\t\tallVariantsByName\n\t\t\t\tactiveVariations\n\t\t\t\tslugsMap\n\t\t\t\tavailableVariations\n\t\t\t}\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n priceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n hasSpecifications\n\n unitMultiplier\n\n isVariantOf {\n productGroupID\n name\n skuVariants {\n activeVariations\n slugsMap\n availableVariations\n allVariantProducts {\n name\n productID\n }\n }\n }\n\n advertisement {\n adId\n adResponseId\n }\n\n deliveryPromiseBadges {\n typeName\n }\n }\n'
|
|
102
102
|
): typeof import('./graphql').ProductSummary_ProductFragmentDoc
|
|
103
103
|
/**
|
|
104
104
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
package/@generated/graphql.ts
CHANGED
|
@@ -349,6 +349,12 @@ export type DeliveryIds = {
|
|
|
349
349
|
warehouseId: Maybe<Scalars['String']['output']>
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
+
/** Delivery Promise badge. */
|
|
353
|
+
export type DeliveryPromiseBadge = {
|
|
354
|
+
/** Badge type. */
|
|
355
|
+
typeName: Maybe<Scalars['String']['output']>
|
|
356
|
+
}
|
|
357
|
+
|
|
352
358
|
/** Input to get commercial authorizations by order ID. */
|
|
353
359
|
export type ICommercialAuthorizationByOrderId = {
|
|
354
360
|
/** Order ID to get commercial authorizations for. */
|
|
@@ -1417,6 +1423,8 @@ export type StoreProduct = {
|
|
|
1417
1423
|
brand: StoreBrand
|
|
1418
1424
|
/** List of items consisting of chain linked web pages, ending with the current page. */
|
|
1419
1425
|
breadcrumbList: StoreBreadcrumbList
|
|
1426
|
+
/** Delivery Promise product's badge. */
|
|
1427
|
+
deliveryPromiseBadges: Maybe<Array<Maybe<DeliveryPromiseBadge>>>
|
|
1420
1428
|
/** Product description. */
|
|
1421
1429
|
description: Scalars['String']['output']
|
|
1422
1430
|
/** Global Trade Item Number. */
|
|
@@ -2441,6 +2449,7 @@ export type ProductSummary_ProductFragment = {
|
|
|
2441
2449
|
valueReference: any
|
|
2442
2450
|
}>
|
|
2443
2451
|
advertisement: { adId: string; adResponseId: string } | null
|
|
2452
|
+
deliveryPromiseBadges: Array<{ typeName: string | null } | null> | null
|
|
2444
2453
|
}
|
|
2445
2454
|
|
|
2446
2455
|
type Filter_Facets_StoreFacetBoolean_Fragment = {
|
|
@@ -3297,6 +3306,9 @@ export type ClientManyProductsQueryQuery = {
|
|
|
3297
3306
|
valueReference: any
|
|
3298
3307
|
}>
|
|
3299
3308
|
advertisement: { adId: string; adResponseId: string } | null
|
|
3309
|
+
deliveryPromiseBadges: Array<{
|
|
3310
|
+
typeName: string | null
|
|
3311
|
+
} | null> | null
|
|
3300
3312
|
}
|
|
3301
3313
|
}>
|
|
3302
3314
|
}
|
|
@@ -3529,6 +3541,7 @@ export type ClientSearchSuggestionsQueryQuery = {
|
|
|
3529
3541
|
valueReference: any
|
|
3530
3542
|
}>
|
|
3531
3543
|
advertisement: { adId: string; adResponseId: string } | null
|
|
3544
|
+
deliveryPromiseBadges: Array<{ typeName: string | null } | null> | null
|
|
3532
3545
|
}>
|
|
3533
3546
|
}
|
|
3534
3547
|
products: { pageInfo: { totalCount: number } }
|
|
@@ -3687,6 +3700,9 @@ export type ServerManyProductsQueryQuery = {
|
|
|
3687
3700
|
valueReference: any
|
|
3688
3701
|
}>
|
|
3689
3702
|
advertisement: { adId: string; adResponseId: string } | null
|
|
3703
|
+
deliveryPromiseBadges: Array<{
|
|
3704
|
+
typeName: string | null
|
|
3705
|
+
} | null> | null
|
|
3690
3706
|
}
|
|
3691
3707
|
}>
|
|
3692
3708
|
}
|
|
@@ -3781,6 +3797,9 @@ export const ProductSummary_ProductFragmentDoc = new TypedDocumentString(
|
|
|
3781
3797
|
adId
|
|
3782
3798
|
adResponseId
|
|
3783
3799
|
}
|
|
3800
|
+
deliveryPromiseBadges {
|
|
3801
|
+
typeName
|
|
3802
|
+
}
|
|
3784
3803
|
}
|
|
3785
3804
|
`,
|
|
3786
3805
|
{ fragmentName: 'ProductSummary_product' }
|
|
@@ -4413,7 +4432,7 @@ export const ClientAllVariantProductsQueryDocument = {
|
|
|
4413
4432
|
export const ClientManyProductsQueryDocument = {
|
|
4414
4433
|
__meta__: {
|
|
4415
4434
|
operationName: 'ClientManyProductsQuery',
|
|
4416
|
-
operationHash: '
|
|
4435
|
+
operationHash: 'e49027bc29aa10cbf7bbb0ed62239af8de1653f0',
|
|
4417
4436
|
},
|
|
4418
4437
|
} as unknown as TypedDocumentString<
|
|
4419
4438
|
ClientManyProductsQueryQuery,
|
|
@@ -4458,7 +4477,7 @@ export const ClientProfileQueryDocument = {
|
|
|
4458
4477
|
export const ClientSearchSuggestionsQueryDocument = {
|
|
4459
4478
|
__meta__: {
|
|
4460
4479
|
operationName: 'ClientSearchSuggestionsQuery',
|
|
4461
|
-
operationHash: '
|
|
4480
|
+
operationHash: 'bbaa2ed75c4fb04842189e8d53a1d65481154e2b',
|
|
4462
4481
|
},
|
|
4463
4482
|
} as unknown as TypedDocumentString<
|
|
4464
4483
|
ClientSearchSuggestionsQueryQuery,
|
|
@@ -4494,7 +4513,7 @@ export const ClientShippingSimulationQueryDocument = {
|
|
|
4494
4513
|
export const ServerManyProductsQueryDocument = {
|
|
4495
4514
|
__meta__: {
|
|
4496
4515
|
operationName: 'ServerManyProductsQuery',
|
|
4497
|
-
operationHash: '
|
|
4516
|
+
operationHash: '4b769cda49004c85d0d427c601eba36c37a52224',
|
|
4498
4517
|
},
|
|
4499
4518
|
} as unknown as TypedDocumentString<
|
|
4500
4519
|
ServerManyProductsQueryQuery,
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
"feb7005103a859e2bc8cf2360d568806fd88deba": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) { subscribeToNewsletter(data: $data) { id } }",
|
|
16
16
|
"dc912e7272e3d9f5ced206837df87f544d39d0a5": "query ClientProductCountQuery($term: String) { productCount(term: $term) { total } }",
|
|
17
17
|
"4039e05f01a2fe449e20e8b82170d0ba94b1fbe9": "fragment ProductSKUMatrixSidebarFragment_product on StoreProduct { isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { additionalProperty { name propertyID value valueReference } image { alternateName url } name offers { highPrice lowPrice lowPriceWithTaxes offerCount offers { availability itemCondition listPrice listPriceWithTaxes price priceCurrency priceValidUntil priceWithTaxes quantity sellingPrice } priceCurrency } sku } availableVariations slugsMap } } id: productID } query ClientAllVariantProductsQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { ...ProductSKUMatrixSidebarFragment_product } }",
|
|
18
|
-
"
|
|
18
|
+
"e49027bc29aa10cbf7bbb0ed62239af8de1653f0": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } deliveryPromiseBadges { typeName } gtin hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier unitMultiplier } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $sponsoredCount: Int, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
|
|
19
19
|
"bfc40da32b60f9404a4adb96b0856e3fbb04b076": "fragment ClientProductGallery on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment Filter_facets on StoreFacet { ... on StoreFacetBoolean { __typename key label values { label quantity selected value } } ... on StoreFacetRange { __typename key label max { absolute selected } min { absolute selected } } } fragment SearchEvent_metadata on SearchMetadata { fuzzy isTermMisspelled logicalOperator } query ClientProductGalleryQuery($after: String!, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { redirect(term: $term, selectedFacets: $selectedFacets) { url } search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { facets { ...Filter_facets } metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } } ...ClientProductGallery }",
|
|
20
20
|
"47aa22eb750cb2c529e5eeafb921bfeadb67db71": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ClientProduct on Query { product(locator: $locator) { id: productID } } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } query ClientProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { ...ProductDetailsFragment_product } ...ClientProduct }",
|
|
21
21
|
"b668777678c137b8c7004297df4d8b8f2b29ee06": "fragment ProductComparisonFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { name } description gtin hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku skuSpecifications { field { id name originalName } values { fieldId id name originalName } } slug specificationGroups { name originalName specifications { name originalName values } } unitMultiplier } query ClientManyProductsSelectedQuery($productIds: [String!]!) { products(productIds: $productIds) { ...ProductComparisonFragment_product } }",
|
|
22
22
|
"34ea14c0d4a57ddf9bc11e4be0cd2b5a6506d3d4": "query ClientProfileQuery($id: String!) { profile(id: $id) { addresses { city country geoCoordinate postalCode } } }",
|
|
23
|
-
"
|
|
23
|
+
"bbaa2ed75c4fb04842189e8d53a1d65481154e2b": "fragment ClientSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } deliveryPromiseBadges { typeName } gtin hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier unitMultiplier } fragment SearchEvent_metadata on SearchMetadata { fuzzy isTermMisspelled logicalOperator } query ClientSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } suggestions { products { ...ProductSummary_product } terms { value } } } ...ClientSearchSuggestions }",
|
|
24
24
|
"e2385b0f11726d0068f96548f57a8dd441c064e3": "fragment ClientTopSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } query ClientTopSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } ...ClientTopSearchSuggestions }",
|
|
25
25
|
"5da2700f5a69ee8835b1cb6c69e14f4b6e12c4df": "mutation ValidateSession($search: String!, $session: IStoreSession!) { validateSession(session: $session, search: $search) { addressType b2b { customerId firstName isRepresentative lastName savedPostalCode unitId unitName userEmail userName } channel city country currency { code symbol } deliveryMode { deliveryChannel deliveryMethod deliveryWindow { endDate startDate } } geoCoordinates { latitude longitude } locale marketingData { utmCampaign utmMedium utmSource utmiCampaign utmiPage utmiPart } person { email familyName givenName id } postalCode refreshAfter } }",
|
|
26
26
|
"c35bad22f67f3eb34fea52bb49efa6b1da6b728d": "fragment ClientShippingSimulation on Query { shipping(items: $items, postalCode: $postalCode, country: $country) { address { city } } } query ClientShippingSimulationQuery($country: String!, $items: [IShippingItem!]!, $postalCode: String!) { shipping(items: $items, postalCode: $postalCode, country: $country) { address { city neighborhood state } logisticsInfo { slas { availableDeliveryWindows { endDateUtc listPrice price startDateUtc } carrier deliveryChannel localizedEstimates price shippingEstimate } } } ...ClientShippingSimulation }",
|
|
27
|
-
"
|
|
27
|
+
"4b769cda49004c85d0d427c601eba36c37a52224": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } deliveryPromiseBadges { typeName } gtin hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier unitMultiplier } fragment SearchEvent_metadata on SearchMetadata { fuzzy isTermMisspelled logicalOperator } query ServerManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $sponsoredCount: Int, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { metadata { ...SearchEvent_metadata } products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }"
|
|
28
28
|
}
|
|
@@ -165,6 +165,12 @@ type StoreCollection {
|
|
|
165
165
|
type: StoreCollectionType!
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
+
"""Delivery Promise badge."""
|
|
169
|
+
type DeliveryPromiseBadge {
|
|
170
|
+
"""Badge type."""
|
|
171
|
+
typeName: String
|
|
172
|
+
}
|
|
173
|
+
|
|
168
174
|
union StoreFacet = StoreFacetRange | StoreFacetBoolean
|
|
169
175
|
|
|
170
176
|
"""Search facet range information."""
|
|
@@ -698,6 +704,8 @@ type StoreProduct {
|
|
|
698
704
|
skuSpecifications: [SkuSpecification!]!
|
|
699
705
|
"""Indicate the specifications of a group of SKUs."""
|
|
700
706
|
specificationGroups: [SpecificationGroup!]!
|
|
707
|
+
"""Delivery Promise product's badge."""
|
|
708
|
+
deliveryPromiseBadges: [DeliveryPromiseBadge]
|
|
701
709
|
}
|
|
702
710
|
|
|
703
711
|
type SkuSpecification {
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.84.1](https://github.com/vtex/faststore/compare/v3.84.0...v3.84.1) (2025-09-11)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @faststore/core
|
|
9
|
+
|
|
10
|
+
# [3.84.0](https://github.com/vtex/faststore/compare/v3.83.1...v3.84.0) (2025-09-09)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- Adds delivery promise badges to product card ([#2994](https://github.com/vtex/faststore/issues/2994)) ([87279c8](https://github.com/vtex/faststore/commit/87279c82a0ba83c9dffc5872b94cead98189dd23))
|
|
15
|
+
|
|
6
16
|
## [3.83.1](https://github.com/vtex/faststore/compare/v3.83.0...v3.83.1) (2025-09-09)
|
|
7
17
|
|
|
8
18
|
### Bug Fixes
|
|
@@ -255,6 +255,38 @@
|
|
|
255
255
|
"default": "All delivery options"
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
|
+
},
|
|
259
|
+
"deliveryPromiseBadges": {
|
|
260
|
+
"title": "Delivery Promise badges",
|
|
261
|
+
"type": "object",
|
|
262
|
+
"description": "The badges will be displayed in product cards indicating the delivery methods availability for the product.",
|
|
263
|
+
"properties": {
|
|
264
|
+
"enabled": {
|
|
265
|
+
"title": "Should display Delivery Promise badges?",
|
|
266
|
+
"type": "boolean",
|
|
267
|
+
"default": true
|
|
268
|
+
},
|
|
269
|
+
"delivery": {
|
|
270
|
+
"title": "Shipping available label",
|
|
271
|
+
"type": "string",
|
|
272
|
+
"default": "Available for shipping"
|
|
273
|
+
},
|
|
274
|
+
"deliveryUnavailable": {
|
|
275
|
+
"title": "Shipping unavailable label",
|
|
276
|
+
"type": "string",
|
|
277
|
+
"default": "Unavailable for shipping"
|
|
278
|
+
},
|
|
279
|
+
"pickupInPoint": {
|
|
280
|
+
"title": "Pickup available label",
|
|
281
|
+
"type": "string",
|
|
282
|
+
"default": "Available for pickup"
|
|
283
|
+
},
|
|
284
|
+
"pickupInPointUnavailable": {
|
|
285
|
+
"title": "Pickup unavailable label",
|
|
286
|
+
"type": "string",
|
|
287
|
+
"default": "Unavailable for pickup"
|
|
288
|
+
}
|
|
289
|
+
}
|
|
258
290
|
}
|
|
259
291
|
}
|
|
260
292
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.84.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "vtex/faststore",
|
|
6
6
|
"browserslist": "supports es6-module and not dead",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"@envelop/graphql-jit": "^8.0.3",
|
|
45
45
|
"@envelop/parser-cache": "^6.0.2",
|
|
46
46
|
"@envelop/validation-cache": "^6.0.2",
|
|
47
|
-
"@faststore/api": "^3.
|
|
47
|
+
"@faststore/api": "^3.84.1",
|
|
48
48
|
"@faststore/graphql-utils": "^3.81.0",
|
|
49
49
|
"@faststore/lighthouse": "^3.81.0",
|
|
50
50
|
"@faststore/sdk": "^3.83.1",
|
|
51
|
-
"@faststore/ui": "^3.
|
|
51
|
+
"@faststore/ui": "^3.84.0",
|
|
52
52
|
"@graphql-codegen/cli": "5.0.2",
|
|
53
53
|
"@graphql-codegen/client-preset": "4.2.6",
|
|
54
54
|
"@graphql-codegen/typescript": "4.0.7",
|
|
@@ -108,5 +108,5 @@
|
|
|
108
108
|
"ts-jest": "29.1.1",
|
|
109
109
|
"typescript": "5.3.2"
|
|
110
110
|
},
|
|
111
|
-
"gitHead": "
|
|
111
|
+
"gitHead": "589b5d648cebc2305012541e84e0fdd689f236b2"
|
|
112
112
|
}
|
|
@@ -11,8 +11,10 @@ import type { ProductSummary_ProductFragment } from '@generated/graphql'
|
|
|
11
11
|
import type { ImageProps } from 'next/image'
|
|
12
12
|
import NextLink from 'next/link'
|
|
13
13
|
import { Image } from 'src/components/ui/Image'
|
|
14
|
+
import { useDeliveryPromise } from 'src/sdk/deliveryPromise'
|
|
14
15
|
import { useFormattedPrice } from 'src/sdk/product/useFormattedPrice'
|
|
15
16
|
import { useProductLink } from 'src/sdk/product/useProductLink'
|
|
17
|
+
import { getGlobalSettings } from 'src/utils/globalSettings'
|
|
16
18
|
|
|
17
19
|
type Variant = 'wide' | 'default'
|
|
18
20
|
|
|
@@ -99,8 +101,15 @@ function ProductCard({
|
|
|
99
101
|
lowPriceWithTaxes,
|
|
100
102
|
offers: [{ listPrice: listPriceBase, availability, listPriceWithTaxes }],
|
|
101
103
|
},
|
|
104
|
+
deliveryPromiseBadges,
|
|
102
105
|
} = product
|
|
103
106
|
|
|
107
|
+
const { deliveryPromise: deliveryPromiseSettings } = getGlobalSettings() ?? {}
|
|
108
|
+
const { badges, shouldDisplayDeliveryPromiseBadges } = useDeliveryPromise({
|
|
109
|
+
deliveryPromiseBadges,
|
|
110
|
+
deliveryPromiseSettings,
|
|
111
|
+
})
|
|
112
|
+
|
|
104
113
|
const linkProps = {
|
|
105
114
|
...useProductLink({ product, selectedOffer: 0, index }),
|
|
106
115
|
as: NextLink,
|
|
@@ -175,6 +184,7 @@ function ProductCard({
|
|
|
175
184
|
includeTaxesLabel={taxesConfiguration?.taxesLabel}
|
|
176
185
|
sponsored={!!advertisement}
|
|
177
186
|
sponsoredLabel={sponsoredLabel}
|
|
187
|
+
deliveryPromiseBadges={shouldDisplayDeliveryPromiseBadges && badges}
|
|
178
188
|
/>
|
|
179
189
|
</UIProductCard>
|
|
180
190
|
</>
|
|
@@ -258,6 +268,10 @@ export const fragment = gql(`
|
|
|
258
268
|
adId
|
|
259
269
|
adResponseId
|
|
260
270
|
}
|
|
271
|
+
|
|
272
|
+
deliveryPromiseBadges {
|
|
273
|
+
typeName
|
|
274
|
+
}
|
|
261
275
|
}
|
|
262
276
|
`)
|
|
263
277
|
|
|
@@ -8,7 +8,10 @@ import {
|
|
|
8
8
|
type SearchState,
|
|
9
9
|
type Session,
|
|
10
10
|
} from '@faststore/sdk'
|
|
11
|
-
import type {
|
|
11
|
+
import type {
|
|
12
|
+
DeliveryPromiseBadge,
|
|
13
|
+
Filter_FacetsFragment,
|
|
14
|
+
} from '@generated/graphql'
|
|
12
15
|
|
|
13
16
|
import type { useFilter } from 'src/sdk/search/useFilter'
|
|
14
17
|
import { useSession } from 'src/sdk/session'
|
|
@@ -31,6 +34,7 @@ export const DELIVERY_OPTIONS_FACET_KEY = 'delivery-options' as const
|
|
|
31
34
|
export const DYNAMIC_ESTIMATE_FACET_KEY = 'dynamic-estimate' as const
|
|
32
35
|
|
|
33
36
|
type Facet = SearchState['selectedFacets'][number]
|
|
37
|
+
type DeliveryType = 'delivery' | 'pickup-in-point'
|
|
34
38
|
|
|
35
39
|
export type PickupPoint = {
|
|
36
40
|
id: string
|
|
@@ -84,6 +88,7 @@ type Props = {
|
|
|
84
88
|
allFacets?: ReturnType<typeof useFilter>['facets']
|
|
85
89
|
fallbackToFirstPickupPoint?: boolean
|
|
86
90
|
selectedFilterFacets?: Facet[]
|
|
91
|
+
deliveryPromiseBadges?: DeliveryPromiseBadge[]
|
|
87
92
|
}
|
|
88
93
|
|
|
89
94
|
/**
|
|
@@ -95,6 +100,7 @@ export function useDeliveryPromise({
|
|
|
95
100
|
selectedFilterFacets = undefined,
|
|
96
101
|
deliveryPromiseSettings,
|
|
97
102
|
fallbackToFirstPickupPoint = true,
|
|
103
|
+
deliveryPromiseBadges,
|
|
98
104
|
}: Props = {}) {
|
|
99
105
|
const { postalCode } = useSession()
|
|
100
106
|
const { state: searchState, setState: setSearchState } = useSearch()
|
|
@@ -435,6 +441,84 @@ export function useDeliveryPromise({
|
|
|
435
441
|
[]
|
|
436
442
|
)
|
|
437
443
|
|
|
444
|
+
function getBadgeLabel(value: DeliveryType, isAvailable: boolean) {
|
|
445
|
+
const labelMap: Record<
|
|
446
|
+
DeliveryType,
|
|
447
|
+
{ available: string; unavailable: string }
|
|
448
|
+
> = {
|
|
449
|
+
delivery: {
|
|
450
|
+
available:
|
|
451
|
+
deliveryPromiseSettings?.deliveryPromiseBadges?.delivery ??
|
|
452
|
+
'Available for shipping',
|
|
453
|
+
unavailable:
|
|
454
|
+
deliveryPromiseSettings?.deliveryPromiseBadges?.deliveryUnavailable ??
|
|
455
|
+
'Unavailable for shipping',
|
|
456
|
+
},
|
|
457
|
+
'pickup-in-point': {
|
|
458
|
+
available:
|
|
459
|
+
deliveryPromiseSettings?.deliveryPromiseBadges?.pickupInPoint ??
|
|
460
|
+
'Available for pickup',
|
|
461
|
+
unavailable:
|
|
462
|
+
deliveryPromiseSettings?.deliveryPromiseBadges
|
|
463
|
+
?.pickupInPointUnavailable ?? 'Unavailable for pickup',
|
|
464
|
+
},
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
return labelMap[value]
|
|
468
|
+
? isAvailable
|
|
469
|
+
? labelMap[value].available
|
|
470
|
+
: labelMap[value].unavailable
|
|
471
|
+
: value
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
function getDeliveryPromiseBadges() {
|
|
475
|
+
// Only add unavailable badges if at least one delivery method is available
|
|
476
|
+
if (!deliveryPromiseBadges || deliveryPromiseBadges.length === 0) return []
|
|
477
|
+
|
|
478
|
+
const badges: Array<{ label: string; availability: boolean }> = []
|
|
479
|
+
|
|
480
|
+
const availableTypeNames = deliveryPromiseBadges?.map(
|
|
481
|
+
(badge) => badge.typeName
|
|
482
|
+
)
|
|
483
|
+
|
|
484
|
+
const hasDelivery = availableTypeNames?.includes('delivery')
|
|
485
|
+
const hasPickupPoint = availableTypeNames?.includes('pickup-in-point')
|
|
486
|
+
|
|
487
|
+
if (hasDelivery) {
|
|
488
|
+
badges.push({
|
|
489
|
+
label: getBadgeLabel('delivery', true),
|
|
490
|
+
availability: true,
|
|
491
|
+
})
|
|
492
|
+
} else {
|
|
493
|
+
badges.push({
|
|
494
|
+
label: getBadgeLabel('delivery', false),
|
|
495
|
+
availability: false,
|
|
496
|
+
})
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
if (hasPickupPoint) {
|
|
500
|
+
badges.push({
|
|
501
|
+
label: getBadgeLabel('pickup-in-point', true),
|
|
502
|
+
availability: true,
|
|
503
|
+
})
|
|
504
|
+
} else {
|
|
505
|
+
badges.push({
|
|
506
|
+
label: getBadgeLabel('pickup-in-point', false),
|
|
507
|
+
availability: false,
|
|
508
|
+
})
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
return badges
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
const badges = getDeliveryPromiseBadges()
|
|
515
|
+
|
|
516
|
+
const shouldDisplayDeliveryPromiseBadges =
|
|
517
|
+
!!postalCode &&
|
|
518
|
+
isDeliveryPromiseEnabled &&
|
|
519
|
+
(deliveryPromiseSettings?.deliveryPromiseBadges?.enabled ?? true) &&
|
|
520
|
+
badges.length > 0
|
|
521
|
+
|
|
438
522
|
return {
|
|
439
523
|
mandatory: deliveryPromiseConfig.mandatory,
|
|
440
524
|
isEnabled: isDeliveryPromiseEnabled,
|
|
@@ -463,6 +547,8 @@ export function useDeliveryPromise({
|
|
|
463
547
|
pickupPoints?.length > 0 &&
|
|
464
548
|
(deliveryPromiseSettings?.deliveryMethods?.pickupAll?.enabled ?? false),
|
|
465
549
|
shouldDisplayDeliveryButton: isDeliveryPromiseEnabled && !postalCode,
|
|
550
|
+
shouldDisplayDeliveryPromiseBadges,
|
|
551
|
+
badges,
|
|
466
552
|
}
|
|
467
553
|
}
|
|
468
554
|
|
|
@@ -63,6 +63,13 @@ type DeliveryPromiseCmsData = {
|
|
|
63
63
|
title?: string
|
|
64
64
|
allDeliveryOptions?: string
|
|
65
65
|
}
|
|
66
|
+
deliveryPromiseBadges?: {
|
|
67
|
+
enabled?: boolean
|
|
68
|
+
delivery?: string
|
|
69
|
+
deliveryUnavailable?: string
|
|
70
|
+
pickupInPoint?: string
|
|
71
|
+
pickupInPointUnavailable?: string
|
|
72
|
+
}
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
export function getGlobalSettings(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3166,84],{839:function(e,t,r){"use strict";var n=r(3067),o=r(4235),i=r(5402),c=r(8394),a=r(5167),s=r(547),l=r(4194),u=r(2331),d=r.n(u),p=r(2056),f=r(643),b=r(8563),j=r(1549),O=["product","index","bordered","variant","aspectRatio","imgProps","ratingValue","buttonLabel","onButtonClick","showDiscountBadge","taxesConfiguration","sponsoredLabel","enableCompareCheckbox","compareLabel"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}t.Z=(0,l.memo)(function(e){var t,r,{product:n,index:u,bordered:y=!0,variant:v="default",aspectRatio:w=1,imgProps:h,ratingValue:m,buttonLabel:g="Add",onButtonClick:_,showDiscountBadge:P=!0,taxesConfiguration:S,sponsoredLabel:x,enableCompareCheckbox:D=!1,compareLabel:k}=e,N=(0,o.Z)(e,O),{sku:Z,isVariantOf:{name:T},image:[K],advertisement:B,offers:{lowPrice:C,lowPriceWithTaxes:E,offers:[{listPrice:L,availability:I,listPriceWithTaxes:V}]}}=n,R=_objectSpread(_objectSpread({},(0,b.w)({product:n,selectedOffer:0,index:u})),{},{as:d(),passHref:!0,legacyBehavior:!1,prefetch:!1}),F=(0,l.useMemo)(()=>"https://schema.org/InStock"!==I,[I]),z=null!=S&&S.usePriceWithTaxes?E:C,M=null!=S&&S.usePriceWithTaxes?V:L,G=B?{"data-van-res-id":B.adResponseId,"data-van-aid":B.adId,"data-van-prod-name":T}:{};return(0,j.jsxs)(j.Fragment,{children:[D&&(0,j.jsx)(i.Z,{label:k,product:n,id:n.id}),(0,j.jsxs)(c.Z,_objectSpread(_objectSpread(_objectSpread({outOfStock:F,bordered:y,variant:v,"data-fs-product-card-sku":Z},G),N),{},{children:[(0,j.jsx)(a.Z,{aspectRatio:w,children:(0,j.jsx)(p.Z,{src:K.url,alt:K.alternateName,sizes:"".concat(null!==(t=null==h?void 0:h.sizes)&&void 0!==t?t:"(max-width: 768px) 40vw, 30vw"),width:null!==(r=null==h?void 0:h.width)&&void 0!==r?r:360,height:Math.round((Number(null==h?void 0:h.height)||360)/w),loading:null==h?void 0:h.loading})}),(0,j.jsx)(s.Z,{title:T,price:{value:z,listPrice:M,formatter:f.P},ratingValue:m,outOfStock:F,onButtonClick:_,linkProps:R,showDiscountBadge:z<=M&&P,includeTaxes:null==S?void 0:S.usePriceWithTaxes,includeTaxesLabel:null==S?void 0:S.taxesLabel,sponsored:!!B,sponsoredLabel:x})]}))]})})},3143:function(e,t,r){"use strict";r.r(t);var n=r(4173),o=r(7272),i=r(1325),c=r(178),a=r.n(c),s=r(1549);function BannerNewsletter(e){var{banner:t,newsletter:r}=e;return(0,s.jsx)(i.Z,{className:"".concat(a().section," section-banner-newsletter"),children:(0,s.jsxs)("div",{"data-fs-banner-text-newsletter":!0,"data-fs-content":"banner-newsletter",children:[(0,s.jsx)(n.OverriddenDefaultBannerText,{title:t.title,caption:t.caption,link:null==t?void 0:t.link,variant:t.variant,colorVariant:t.colorVariant}),(0,s.jsx)(o.OverriddenDefaultNewsletter,{card:!0,colorVariant:r.colorVariant,title:r.title,description:r.description,icon:r.icon,privacyPolicy:r.privacyPolicy,emailInputLabel:r.emailInputLabel,displayNameInput:r.displayNameInput,nameInputLabel:r.nameInputLabel,subscribeButtonLabel:r.subscribeButtonLabel,subscribeButtonLoadingLabel:r.subscribeButtonLoadingLabel,toastSubscribe:r.toastSubscribe,toastSubscribeError:r.toastSubscribeError})]})})}BannerNewsletter.$componentKey="BannerNewsletter",t.default=BannerNewsletter},4173:function(e,t,r){"use strict";r.r(t),r.d(t,{OverriddenDefaultBannerText:function(){return O}});var n=r(3067),o={section:"BannerText"},i=r(1716),c=r(9746),a=r(1325),s=r(7910),l=r.n(s),u=r(3888),d=r.n(u),p=d()(()=>Promise.all([r.e(9666),r.e(4836),r.e(9781),r.e(5890)]).then(r.bind(r,4836)).then(e=>e.BannerText),{loadableGenerated:{webpack:()=>[null]}}),f=d()(()=>Promise.all([r.e(9666),r.e(4836),r.e(9781),r.e(5890)]).then(r.bind(r,4836)).then(e=>e.BannerTextContent),{loadableGenerated:{webpack:()=>[null]}}),b=r(1549);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function BannerText(e){var t,r,{title:n,caption:o,link:{url:i,text:s,linkTargetBlank:u},variant:d,colorVariant:p}=e,{BannerText:f,BannerTextContent:j}=(0,c.r3)();return(0,b.jsx)(a.Z,{className:"".concat(l().section," section-banner layout__section"),children:(0,b.jsx)(f.Component,_objectSpread(_objectSpread({},f.props),{},{variant:null!==(t=null!=d?d:f.props.variant)&&void 0!==t?t:"primary",colorVariant:null!==(r=null!=p?p:f.props.colorVariant)&&void 0!==r?r:"main",children:(0,b.jsx)(j.Component,_objectSpread(_objectSpread({},j.props),{},{title:n,caption:o,link:null!=i?i:j.props.link,linkText:null!=s?s:j.props.linkText,linkTargetBlank:null!=u?u:j.props.linkTargetBlank}))}))})}BannerText.$componentKey="BannerText";var j=(0,i.B)("BannerText",BannerText,{BannerText:p,BannerTextContent:f});function OverriddenDefaultBannerText_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function OverriddenDefaultBannerText_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultBannerText_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultBannerText_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var O=(0,i.v)(OverriddenDefaultBannerText_objectSpread(OverriddenDefaultBannerText_objectSpread(OverriddenDefaultBannerText_objectSpread({},o),o),{},{Section:j}))},5758:function(e,t,r){"use strict";r.d(t,{Z:function(){return w}});var n=r(3067),o={section:"CrossSellingShelf"},i=r(1716),c=r(4194),a=r(9428),s=r(6410),l=r(6272),u=r(2418),d=r.n(u),p=r(1325),f=r(6737),b=r(839),j=r(6039),O={ProductShelf:f.Z,__experimentalCarousel:j.Z,__experimentalProductCard:b.Z},y=r(1549),CrossSellingShelf=e=>{var t,r,n,{numberOfItems:o,itemsPerPage:i,title:u,kind:f,taxesConfiguration:b}=e,{ref:j,inView:O}=(0,s.YD)(),v=(0,l.al)(),w=null==v?void 0:null===(t=v.data)||void 0===t?void 0:null===(r=t.product)||void 0===r?void 0:null===(n=r.isVariantOf)||void 0===n?void 0:n.productGroupID,h=(0,c.useMemo)(()=>[{key:f,value:w}],[f,w]);return(0,y.jsx)(p.Z,{className:"".concat(d().section," section-product-shelf layout__section"),ref:j,children:(0,y.jsx)(a.Z,{inView:O,numberOfItems:o,itemsPerPage:i,title:u,selectedFacets:h,taxesConfiguration:b})})};CrossSellingShelf.$componentKey="CrossSellingShelf";var v=(0,i.B)("CrossSellingShelf",CrossSellingShelf,O);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var w=(0,i.v)(_objectSpread(_objectSpread(_objectSpread({},o),o),{},{Section:v}))},7272:function(e,t,r){"use strict";r.r(t),r.d(t,{OverriddenDefaultNewsletter:function(){return K}});var n=r(3067),o={section:"Newsletter"},i=r(1716),c=r(4235),a=r(4988),s=r(4194),l=r(6652),u=r(5487),d=r(8098),p=u.HZ,useNewsletter=()=>{var[e,{data:t,error:r,isValidating:n}]=(0,d.t)(p,{data:{name:"",email:""}});return{subscribeUser:e,data:t,error:r,loading:n}},f=r(9746),b=r(1549);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var Newsletter_Newsletter=function(e){var t,{icon:{icon:r,alt:n},title:o,description:i,privacyPolicy:c,emailInputLabel:u,displayNameInput:d,nameInputLabel:p,subscribeButtonLabel:j,subscribeButtonLoadingLabel:O,card:y,toastSubscribe:v,toastSubscribeError:w,colorVariant:h}=e,{Button:m,HeaderIcon:g,InputFieldName:_,InputFieldEmail:P,Newsletter:S,NewsletterAddendum:x,NewsletterContent:D,NewsletterForm:k,NewsletterHeader:N,ToastIconError:Z,ToastIconSuccess:T}=(0,f.r3)(),{pushToast:K}=(0,l.l8)(),{subscribeUser:B,loading:C}=useNewsletter(),E=(0,s.useRef)(null),L=(0,s.useRef)(null),I=(0,s.useRef)(null),V=(t=(0,a.Z)(function*(e){e.preventDefault();try{var t,r,n,o,i,c,a,s=yield B({data:{name:null!==(r=null===(n=L.current)||void 0===n?void 0:n.value)&&void 0!==r?r:"",email:null!==(o=null===(i=I.current)||void 0===i?void 0:i.value)&&void 0!==o?o:""}});null!=s&&null!==(c=s.subscribeToNewsletter)&&void 0!==c&&c.id&&(K(_objectSpread(_objectSpread({},v),{},{status:"INFO",icon:(0,b.jsx)(T.Component,_objectSpread(_objectSpread({width:30,height:30},T.props),{},{name:null!==(a=v.icon)&&void 0!==a?a:T.props.name}))})),E.current.reset())}catch(e){K(_objectSpread(_objectSpread({},w),{},{status:"ERROR",icon:(0,b.jsx)(Z.Component,_objectSpread(_objectSpread({width:30,height:30},Z.props),{},{name:null!==(t=v.icon)&&void 0!==t?t:Z.props.name}))}))}}),function(e){return t.apply(this,arguments)});return(0,b.jsx)(S.Component,_objectSpread(_objectSpread({card:y,colorVariant:h},S.props),{},{children:(0,b.jsxs)(k.Component,_objectSpread(_objectSpread({ref:E,onSubmit:V},k.props),{},{children:[(0,b.jsx)(N.Component,_objectSpread({title:o,description:i,icon:(0,b.jsx)(g.Component,_objectSpread(_objectSpread({width:32,height:32},g.props),{},{name:null!=r?r:g.props.name,"aria-label":null!=n?n:g.props["aria-label"]}))},N.props)),(0,b.jsxs)(D.Component,_objectSpread(_objectSpread({},D.props),{},{children:[d&&(0,b.jsx)(_.Component,_objectSpread(_objectSpread({id:"newsletter-name",required:!0},_.props),{},{label:null!=p?p:_.props.label,inputRef:L})),(0,b.jsx)(P.Component,_objectSpread(_objectSpread({id:"newsletter-email",type:"email",required:!0},P.props),{},{label:null!=u?u:P.props.label,inputRef:I})),(0,b.jsx)(x.Component,_objectSpread({addendum:c},x.props)),(0,b.jsx)(m.Component,_objectSpread(_objectSpread({variant:"secondary",inverse:!0,type:"submit"},m.props),{},{children:C?O:j}))]}))]}))}))},j=r(1325),O=r(2037),y=r.n(O),v=r(9009),w=r(2614),h=r(3779),m=r(7115),g=r(4207),_=r(2571),P=r(4796),S=r(1417),x=r.n(S),D=r(2294),k=["addendum"];function NewsletterAddendum_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}var N={Button:v.Z,HeaderIcon:w.Z,InputFieldEmail:h.Z,InputFieldName:h.Z,Newsletter:m.Z,NewsletterAddendum:function(e){var{addendum:t}=e,r=(0,c.Z)(e,k);return(0,b.jsx)(D.Z,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?NewsletterAddendum_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):NewsletterAddendum_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({dangerouslySetInnerHTML:{__html:function(e){if(!e)return"";var t=null;try{t=JSON.parse(e)}catch(e){throw Error('Newsletter\'s prop "addendum" is not a JSON string. This is happening because the overridden prop is malformed or the CMS is providing malformed content for that prop.',{cause:e})}return t?x()(t,void 0,void 0,(e,t)=>{var r;return"LINK"!==e.type?null:(r=e.data.url,'\n <a\n data-fs-link="true"\n data-fs-link-variant="inline"\n data-fs-link-inverse="true"\n data-fs-link-size="regular"\n data-testid="fs-link"\n href="'.concat(r,'"\n >').concat(t,"</a>"))}):""}(t)}},r))},NewsletterContent:g.Z,NewsletterForm:_.Z,NewsletterHeader:P.Z,ToastIconError:w.Z,ToastIconSuccess:w.Z},Z=["icon","title","description","privacyPolicy","emailInputLabel","displayNameInput","nameInputLabel","subscribeButtonLabel","subscribeButtonLoadingLabel","card","toastSubscribe","toastSubscribeError","colorVariant"];function Newsletter_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Newsletter_Newsletter_Newsletter(e){var{icon:t,title:r,description:o,privacyPolicy:i,emailInputLabel:a,displayNameInput:s,nameInputLabel:l,subscribeButtonLabel:u,subscribeButtonLoadingLabel:d,card:p,toastSubscribe:f,toastSubscribeError:O,colorVariant:v}=e,w=(0,c.Z)(e,Z);return(0,b.jsx)(j.Z,{className:"".concat(y().section," section-newsletter layout__section"),children:(0,b.jsx)(Newsletter_Newsletter,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Newsletter_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Newsletter_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({icon:t,title:r,description:o,privacyPolicy:i,emailInputLabel:a,displayNameInput:s,nameInputLabel:l,subscribeButtonLabel:u,subscribeButtonLoadingLabel:d,toastSubscribe:f,toastSubscribeError:O,card:p,colorVariant:v},w))})}Newsletter_Newsletter_Newsletter.$componentKey="Newsletter";var T=(0,i.B)("Newsletter",Newsletter_Newsletter_Newsletter,N);function OverriddenDefaultNewsletter_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function OverriddenDefaultNewsletter_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultNewsletter_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultNewsletter_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var K=(0,i.v)(OverriddenDefaultNewsletter_objectSpread(OverriddenDefaultNewsletter_objectSpread(OverriddenDefaultNewsletter_objectSpread({},o),o),{},{Section:T}))},552:function(e,t,r){"use strict";r.r(t),r.d(t,{OverriddenDefaultProductShelf:function(){return v}});var n=r(3067),o={section:"ProductShelf"},i=r(1716),c=r(6410),a=r(1325),s=r(9428),l=r(2418),u=r.n(l),d=r(3888),p=r.n(d),f=p()(()=>Promise.all([r.e(9666),r.e(4836),r.e(9781),r.e(8587)]).then(r.bind(r,4836)).then(e=>e.ProductShelf),{loadableGenerated:{webpack:()=>[null]}}),b=p()(()=>r.e(294).then(r.bind(r,294)),{loadableGenerated:{webpack:()=>[294]}}),j=p()(()=>r.e(3836).then(r.bind(r,3836)),{loadableGenerated:{webpack:()=>[3836]}}),O=r(1549);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ProductShelfSection(e){var t=Object.assign({},e),{ref:r,inView:o}=(0,c.YD)();return(0,O.jsx)(a.Z,{className:"".concat(u().section," section-product-shelf layout__section"),ref:r,children:(0,O.jsx)(s.Z,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({inView:o},t))})}ProductShelfSection.$componentKey="ProductShelf";var y=(0,i.B)("ProductShelf",ProductShelfSection,{ProductShelf:f,__experimentalCarousel:b,__experimentalProductCard:j});function OverriddenDefaultProductShelf_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function OverriddenDefaultProductShelf_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultProductShelf_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultProductShelf_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var v=(0,i.v)(OverriddenDefaultProductShelf_objectSpread(OverriddenDefaultProductShelf_objectSpread(OverriddenDefaultProductShelf_objectSpread({},o),o),{},{Section:y}))},5859:function(e,t,r){"use strict";r.d(t,{Z:function(){return _}});var n=r(3067),o=r(4235),i=r(4194),c=r(6410),a=r(839),s=r(3877),l=r(1549),u=["children"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ui_Tiles_Tiles=e=>{var{children:t}=e,r=(0,o.Z)(e,u);return(0,l.jsx)(s.Z,_objectSpread(_objectSpread({},r),{},{children:t}))},d=r(7901),p=r(792),ProductTileSkeleton_ProductTileSkeleton=function(e){var{index:t,aspectRatio:r=1}=e;return(0,l.jsxs)("div",{"data-fs-product-tile-skeleton":!0,"data-fs-product-tile-skeleton-index":t,children:[(0,l.jsx)("div",{"data-fs-product-tile-skeleton-image":!0,"data-fs-product-tile-skeleton-index":t,style:{"--fs-product-tile-skeleton-image-aspect-ratio":r},children:(0,l.jsx)(p.Z,{size:{width:"auto",height:"100%"},loading:!0})}),(0,l.jsxs)("div",{"data-fs-product-tile-skeleton-content":!0,"data-fs-product-tile-skeleton-index":t,children:[(0,l.jsxs)("div",{"data-fs-product-tile-skeleton-heading":!0,children:[(0,l.jsx)("div",{"data-fs-product-tile-skeleton-text":!0,"data-fs-product-tile-skeleton-index":t,children:(0,l.jsx)(p.Z,{size:{width:"70%",height:"1.5rem"}})}),(0,l.jsx)("div",{"data-fs-product-tile-skeleton-price":!0,children:(0,l.jsx)(p.Z,{size:{width:"60%",height:"1.5rem"}})})]}),(0,l.jsx)("div",{"data-fs-product-tile-skeleton-badge":!0,"data-fs-product-tile-skeleton-index":t,children:(0,l.jsx)(p.Z,{size:{width:"6rem",height:"2rem"},border:"pill"})})]})]})},getRatio=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?5/3:3/4,ProductTilesSkeleton_ProductTilesSkeleton=function(e){var{children:t,loading:r=!0}=e;return r?(0,l.jsx)(ui_Tiles_Tiles,{children:Array.from({length:3},(e,t)=>(0,l.jsx)(d.Z,{children:(0,l.jsx)(ProductTileSkeleton_ProductTileSkeleton,{index:t+1,aspectRatio:getRatio(3,t)})},String(t)))}):(0,l.jsx)(l.Fragment,{children:t})},f=r(1917),b=r(6377),j=r(1325),O=r(4876),y=r.n(O),v=r(58),w=r(4018),h=r(4578),m=r.n(h),g=["title","taxesConfiguration"];function ProductTiles_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ProductTiles_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductTiles_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductTiles_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ProductTiles_getRatio=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?5/3:3/4,getSizes=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?{width:594,height:364}:{width:284,height:364},ProductTiles=e=>{var t,r,{title:n,taxesConfiguration:s}=e,u=(0,o.Z)(e,g),p=(0,i.useRef)(!1),{ref:O,inView:h}=(0,c.YD)(),{deliveryFacets:_}=(0,v.E)(),P=(0,b.k)(ProductTiles_objectSpread(ProductTiles_objectSpread({},u),{},{selectedFacets:y()((0,w.qo)(u.selectedFacets),_,{arrayMerge:w.VV})})),S=null==P?void 0:null===(t=P.search)||void 0===t?void 0:t.products,x=null!==(r=null==S?void 0:S.edges)&&void 0!==r?r:[],{sendViewItemListEvent:D}=(0,f.m)({products:x,title:n,page:0,pageSize:0});return((0,i.useEffect)(()=>{h&&!p.current&&x.length&&(D(),p.current=!0)},[h,x.length,D]),(null==S?void 0:S.edges.length)===0)?null:(0,l.jsxs)(j.Z,{className:"".concat(m().section," section-product-tiles layout__section"),ref:O,children:[(0,l.jsx)("h2",{className:"text__title-section layout__content",children:n}),(0,l.jsx)(ProductTilesSkeleton_ProductTilesSkeleton,{loading:!S,children:(0,l.jsx)(ui_Tiles_Tiles,{children:x.map((e,t)=>(0,l.jsx)(d.Z,{children:(0,l.jsx)(a.Z,{"data-testid":"tile-card",product:e.node,index:t+1,variant:"wide",aspectRatio:ProductTiles_getRatio(x.length,t),imgProps:getSizes(x.length,t),taxesConfiguration:s})},e.node.id))})})]})};ProductTiles.$componentKey="ProductTiles";var _=ProductTiles},6039:function(e,t,r){"use strict";var n=r(9237),o=r(679),i=r(1549);t.Z=function(e){var{id:t,testId:r,children:c,itemsPerPage:a,variant:s="scroll",infiniteMode:l=!1}=e,{loading:u,isTablet:d,isMobile:p}=(0,o.Z)();return u?null:(0,i.jsx)(n.Z,{id:t,testId:r,variant:s,infiniteMode:l,itemsPerPage:d||p?1.6:a,children:c})}},9428:function(e,t,r){"use strict";var n=r(3067),o=r(4235),i=r(3888),c=r.n(i),a=r(4194),s=r(4876),l=r.n(s),u=r(1917),d=r(58),p=r(9746),f=r(6377),b=r(4018),j=r(1549),O=["title","inView","productCardConfiguration","numberOfItems","itemsPerPage","taxesConfiguration"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var y=c()(()=>r.e(4799).then(r.bind(r,4799)),{loadableGenerated:{webpack:()=>[4799]}});t.Z=function(e){var t,r,{title:n,inView:i,productCardConfiguration:{bordered:c,showDiscountBadge:s}={},numberOfItems:v,itemsPerPage:w=5,taxesConfiguration:h={}}=e,m=(0,o.Z)(e,O),{ProductShelf:g,__experimentalCarousel:_,__experimentalProductCard:P}=(0,p.r3)(),S=(0,b.B5)(n),x=(0,a.useId)(),D=(0,a.useRef)(!1),{deliveryFacets:k}=(0,d.E)(),N=(0,f.k)(_objectSpread(_objectSpread({},m),{},{first:v,selectedFacets:l()(m.selectedFacets,k,{arrayMerge:b.VV})})),Z=null==N?void 0:null===(t=N.search)||void 0===t?void 0:t.products,T=null!==(r=null==Z?void 0:Z.edges)&&void 0!==r?r:[],{sendViewItemListEvent:K}=(0,u.m)({products:T,title:n,page:0,pageSize:0});return((0,a.useEffect)(()=>{i&&!D.current&&T.length&&(K(),D.current=!0)},[i,T.length,K]),(null==Z?void 0:Z.edges.length)===0)?null:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("h2",{className:"text__title-section layout__content",children:n}),(0,j.jsx)(y,{aspectRatio:1,loading:void 0===Z,itemsPerPage:w,children:(0,j.jsx)(g.Component,_objectSpread(_objectSpread({},g.props),{},{children:(0,j.jsx)(_.Component,_objectSpread(_objectSpread({id:S||x,itemsPerPage:w},_.props),{},{children:T.map((e,t)=>(0,a.createElement)(P.Component,_objectSpread(_objectSpread({aspectRatio:1,imgProps:{width:216,height:216,sizes:"(max-width: 768px) 42vw, 30vw"}},P.props),{},{bordered:null!=c?c:P.props.bordered,showDiscountBadge:null!=s?s:P.props.showDiscountBadge,taxesConfiguration:h,key:"".concat(e.node.id),product:e.node,index:t+1})))}))}))})]})}},1917:function(e,t,r){"use strict";r.d(t,{m:function(){return useViewItemListEvent}});var n=r(4194),o=r(7358),useViewItemListEvent=e=>{var{products:t,title:i,page:c,pageSize:a}=e,{currency:{code:s}}=(0,o.kP)();return{sendViewItemListEvent:(0,n.useCallback)(e=>{var n=null!=t&&t.length?t:null==e?void 0:e.products;n&&0!==n.length&&r.e(6393).then(r.bind(r,6393)).then(e=>{var{sendAnalyticsEvent:t}=e;t({name:"view_item_list",params:{item_list_name:i,item_list_id:i,items:n.map((e,t)=>{var{node:r}=e;return{item_id:r.isVariantOf.productGroupID,item_name:r.isVariantOf.name,item_brand:r.brand.name,item_variant:r.sku,price:r.offers.offers[0].price,index:c*a+t+1,discount:r.offers.offers[0].listPrice-r.offers.offers[0].price,currency:s,item_variant_name:r.name,product_reference_id:r.gtin}})}})})},[s,t,i,c,a])}}},58:function(e,t,r){"use strict";r.d(t,{E:function(){return useDeliveryPromiseFacets}});var n=r(9029);function useDeliveryPromiseFacets(){var e,t,{state:r}=(0,n.R)();return{deliveryFacets:r.selectedFacets.filter(pickByKey(["shipping","pickupPoint"])),shipping:null===(e=r.selectedFacets.filter(pickByKey(["shipping"])))||void 0===e?void 0:e[0],pickupPoint:null===(t=r.selectedFacets.filter(pickByKey(["pickupPoint"])))||void 0===t?void 0:t[0]}}var pickByKey=e=>t=>{var{key:r}=t;return e.includes(r)}},8098:function(e,t,r){"use strict";r.d(t,{t:function(){return useLazyQuery}});var n=r(4988),o=r(6600),i=r(7440),c=r(2693),useLazyQuery=(e,t,r)=>{var a,s=(0,o.ZP)((0,c.km)(e.__meta__.operationName,t),()=>null,c.WN);return[(a=(0,n.Z)(function*(t){var n=yield(0,i.W)(e,t,r);return yield s.mutate(n,!1)}),function(e){return a.apply(this,arguments)}),s]}},8563:function(e,t,r){"use strict";r.d(t,{w:function(){return useProductLink}});var n=r(4194),o=r(7358),useProductLink=e=>{var{index:t,product:i,selectedOffer:c}=e,{slug:a}=i,{currency:{code:s}}=(0,o.kP)(),l=(0,n.useCallback)(()=>{r.e(6393).then(r.bind(r,6393)).then(e=>{var{sendAnalyticsEvent:r}=e;r({name:"select_item",params:{items:[{item_id:i.isVariantOf.productGroupID,item_name:i.isVariantOf.name,item_brand:i.brand.name,item_variant:i.sku,index:t,price:i.offers.offers[c].price,discount:i.offers.offers[c].listPrice-i.offers.offers[c].price,currency:s,item_variant_name:i.name,product_reference_id:i.gtin}]}}),r({name:"search_select_item",params:{url:window.location.href,items:[{item_id:i.isVariantOf.productGroupID,item_variant:i.sku,index:t}]}})})},[s,i,t,c]);return{href:"/".concat(a,"/p"),onClick:l,"data-testid":"product-link"}}},6377:function(e,t,r){"use strict";r.d(t,{k:function(){return useProductsQuery}});var n=r(3067),o=r(5487),i=r(2693),c=r(7772);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}var a=o.gU,useProductsQuery=(e,t)=>{var r=(0,c.y)(e),{data:o}=(0,i.aM)(a,r,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({fallbackData:null,suspense:!0},t));return o}},178:function(e){e.exports={section:"section_section__YBgvV"}},7910:function(e){e.exports={section:"section_section__p_P_L"}},2037:function(e){e.exports={section:"section_section__6iqtV"}},2418:function(e){e.exports={section:"section_section__TjtMz",loading:"section_loading__ffSvt"}},4578:function(e){e.exports={section:"section_section__Wwc_y",loading:"section_loading__7M1Dl"}}}]);
|