@faststore/core 3.0.125 → 3.0.127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +32 -32
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/eslint/.cache_1gneedd +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/server-production/0.pack +0 -0
  9. package/.next/cache/webpack/server-production/index.pack +0 -0
  10. package/.next/next-minimal-server.js.nft.json +1 -1
  11. package/.next/next-server.js.nft.json +1 -1
  12. package/.next/prerender-manifest.js +1 -1
  13. package/.next/prerender-manifest.json +1 -1
  14. package/.next/react-loadable-manifest.json +75 -3
  15. package/.next/routes-manifest.json +1 -1
  16. package/.next/server/chunks/153.js +1 -1
  17. package/.next/server/chunks/158.js +1 -1
  18. package/.next/server/chunks/188.js +1 -0
  19. package/.next/server/chunks/244.js +1 -0
  20. package/.next/server/chunks/295.js +1 -0
  21. package/.next/server/chunks/524.js +1 -0
  22. package/.next/server/chunks/624.js +1 -1
  23. package/.next/server/chunks/646.js +2 -2
  24. package/.next/server/chunks/671.js +1 -0
  25. package/.next/server/chunks/679.js +1 -1
  26. package/.next/server/chunks/844.js +1 -0
  27. package/.next/server/chunks/880.js +1 -0
  28. package/.next/server/chunks/917.js +1 -1
  29. package/.next/server/chunks/96.js +1 -1
  30. package/.next/server/middleware-build-manifest.js +1 -1
  31. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  32. package/.next/server/pages/404.js +1 -1
  33. package/.next/server/pages/404.js.nft.json +1 -1
  34. package/.next/server/pages/500.js +1 -1
  35. package/.next/server/pages/500.js.nft.json +1 -1
  36. package/.next/server/pages/[...slug].js +1 -1
  37. package/.next/server/pages/[...slug].js.nft.json +1 -1
  38. package/.next/server/pages/[slug]/p.js +1 -1
  39. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  40. package/.next/server/pages/_app.js +1 -1
  41. package/.next/server/pages/_app.js.nft.json +1 -1
  42. package/.next/server/pages/_document.js.nft.json +1 -1
  43. package/.next/server/pages/_error.js +1 -1
  44. package/.next/server/pages/_error.js.nft.json +1 -1
  45. package/.next/server/pages/account.js +1 -1
  46. package/.next/server/pages/account.js.nft.json +1 -1
  47. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  48. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  49. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  50. package/.next/server/pages/api/preview.js.nft.json +1 -1
  51. package/.next/server/pages/checkout.js +1 -1
  52. package/.next/server/pages/checkout.js.nft.json +1 -1
  53. package/.next/server/pages/en-US/404.html +1 -1
  54. package/.next/server/pages/en-US/500.html +1 -1
  55. package/.next/server/pages/en-US/account.html +1 -1
  56. package/.next/server/pages/en-US/checkout.html +1 -1
  57. package/.next/server/pages/en-US/login.html +1 -1
  58. package/.next/server/pages/en-US/s.html +1 -1
  59. package/.next/server/pages/en-US.html +2 -2
  60. package/.next/server/pages/index.js +1 -1
  61. package/.next/server/pages/index.js.nft.json +1 -1
  62. package/.next/server/pages/login.js +1 -1
  63. package/.next/server/pages/login.js.nft.json +1 -1
  64. package/.next/server/pages/s.js +1 -1
  65. package/.next/server/pages/s.js.nft.json +1 -1
  66. package/.next/server/pages-manifest.json +1 -1
  67. package/.next/static/{hyQAM33rvefUI1x3rbGC0 → WNHt8fIF6EXrS3MCER6L2}/_buildManifest.js +1 -1
  68. package/.next/static/chunks/153.70d524f369fef82b.js +1 -0
  69. package/.next/static/chunks/195.5f46b2d90f69ddfc.js +1 -0
  70. package/.next/static/chunks/{235-f262d03219a7a999.js → 235-a7d9d6cf81ae08ef.js} +1 -1
  71. package/.next/static/chunks/295.a3098958c7ef54ec.js +1 -0
  72. package/.next/static/chunks/343.f76546894e65db1a.js +1 -0
  73. package/.next/static/chunks/{624.455cdc0925956ae5.js → 624.5aef4b13bbfa8d1d.js} +1 -1
  74. package/.next/static/chunks/65.7506de28495fdae8.js +1 -0
  75. package/.next/static/chunks/{758.a411edd1cbd09134.js → 758.829db9862d9c4add.js} +1 -1
  76. package/.next/static/chunks/87-5709356a398fea13.js +1 -0
  77. package/.next/static/chunks/968-dffabcd6f064d487.js +1 -0
  78. package/.next/static/chunks/pages/[...slug]-0fa9da2ac039ffed.js +1 -0
  79. package/.next/static/chunks/pages/[slug]/p-a316db4e36c17eef.js +1 -0
  80. package/.next/static/chunks/pages/{_app-68b16ab75cae8271.js → _app-ed807a0c1aebeb38.js} +1 -1
  81. package/.next/static/chunks/pages/s-e561526ac9252bf9.js +1 -0
  82. package/.next/static/chunks/webpack-904b033805de64d4.js +1 -0
  83. package/.next/trace +94 -94
  84. package/.turbo/turbo-build.log +6 -6
  85. package/.turbo/turbo-test.log +4 -4
  86. package/package.json +6 -6
  87. package/src/components/cart/CartItem/CartItem.tsx +34 -33
  88. package/src/components/cart/CartSidebar/CartSidebar.tsx +19 -18
  89. package/src/components/search/SearchInput/SearchInput.tsx +16 -12
  90. package/src/components/sections/ProductDetails/ProductDetails.tsx +24 -23
  91. package/src/sdk/analytics/hooks/usePageViewEvent.ts +11 -10
  92. package/src/sdk/analytics/hooks/useViewItemListEvent.ts +22 -20
  93. package/src/sdk/cart/useBuyButton.ts +26 -25
  94. package/src/sdk/cart/useRemoveButton.ts +24 -23
  95. package/src/sdk/product/useProductGalleryQuery.ts +12 -12
  96. package/src/sdk/product/useProductLink.ts +37 -36
  97. package/src/sdk/search/useSuggestions.ts +14 -13
  98. package/.next/server/chunks/24.js +0 -1
  99. package/.next/server/chunks/933.js +0 -1
  100. package/.next/static/chunks/65.8e4235e2d3871cb7.js +0 -1
  101. package/.next/static/chunks/885-9feec0602c610671.js +0 -1
  102. package/.next/static/chunks/968-fed67c31f0fa4d91.js +0 -1
  103. package/.next/static/chunks/pages/[...slug]-c1d01fe8611f37bd.js +0 -1
  104. package/.next/static/chunks/pages/[slug]/p-f2220885452cffb6.js +0 -1
  105. package/.next/static/chunks/pages/s-e3d1cc458d242d70.js +0 -1
  106. package/.next/static/chunks/webpack-abe9adb7914f7244.js +0 -1
  107. /package/.next/static/{hyQAM33rvefUI1x3rbGC0 → WNHt8fIF6EXrS3MCER6L2}/_ssgManifest.js +0 -0
@@ -37,8 +37,8 @@ https://nextjs.org/telemetry
37
37
  Collecting page data ...
38
38
  Generating static pages (0/7) ...
39
39
 
40
40
  Generating static pages (1/7)
41
- Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.
42
41
 
43
42
  Generating static pages (3/7)
43
+ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.
44
44
 
45
45
  Generating static pages (5/7)
46
46
 
47
47
  ✓ Generating static pages (7/7)
48
48
  Finalizing page optimization ...
@@ -50,7 +50,7 @@ Route (pages) Size First Load JS
50
50
  ├ /_app 0 B 90.7 kB
51
51
  ├ ● /[...slug] 2.79 kB 155 kB
52
52
  ├ └ css/e47f1a002bdcf76f.css 2.38 kB
53
- ├ ● /[slug]/p 11.1 kB 152 kB
53
+ ├ ● /[slug]/p 11.2 kB 152 kB
54
54
  ├ └ css/9b6bba2472d272ec.css 10.5 kB
55
55
  ├ ○ /404 1.28 kB 126 kB
56
56
  ├ ● /500 1.29 kB 126 kB
@@ -61,12 +61,12 @@ Route (pages) Size First Load JS
61
61
  ├ λ /api/preview 0 B 90.7 kB
62
62
  ├ ● /checkout 661 B 126 kB
63
63
  ├ ● /login 1.4 kB 126 kB
64
- └ ● /s 2.22 kB 154 kB
65
- + First Load JS shared by all 93.7 kB
64
+ └ ● /s 2.22 kB 155 kB
65
+ + First Load JS shared by all 93.8 kB
66
66
  ├ chunks/framework-8e279965036b6169.js 45.4 kB
67
67
  ├ chunks/main-029f1328cfee9686.js 33.1 kB
68
- ├ chunks/pages/_app-68b16ab75cae8271.js 9.87 kB
69
- ├ chunks/webpack-abe9adb7914f7244.js 2.38 kB
68
+ ├ chunks/pages/_app-ed807a0c1aebeb38.js 9.87 kB
69
+ ├ chunks/webpack-904b033805de64d4.js 2.45 kB
70
70
  └ css/ee0556daedda6306.css 3.07 kB
71
71
 
72
72
  λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
@@ -1,10 +1,10 @@
1
1
  $ jest
2
- PASS test/server/cms/index.test.ts (36.438 s)
3
- PASS test/utils/multipleTemplates.test.ts (36.642 s)
4
- PASS test/server/index.test.ts (39.422 s)
2
+ PASS test/server/cms/index.test.ts (35.638 s)
3
+ PASS test/utils/multipleTemplates.test.ts (36.258 s)
4
+ PASS test/server/index.test.ts (39.429 s)
5
5
 
6
6
  Test Suites: 3 passed, 3 total
7
7
  Tests: 19 passed, 19 total
8
8
  Snapshots: 0 total
9
- Time: 40.59 s
9
+ Time: 40.695 s
10
10
  Ran all test suites.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.0.125",
3
+ "version": "3.0.127",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -49,10 +49,10 @@
49
49
  "@faststore/lighthouse": "^3.0.116",
50
50
  "@faststore/sdk": "^3.0.120",
51
51
  "@faststore/ui": "^3.0.116",
52
- "@graphql-codegen/cli": "^5.0.2",
53
- "@graphql-codegen/client-preset": "^4.2.6",
54
- "@graphql-codegen/typescript": "^4.0.7",
55
- "@graphql-codegen/typescript-operations": "^4.2.1",
52
+ "@graphql-codegen/cli": "5.0.2",
53
+ "@graphql-codegen/client-preset": "4.2.6",
54
+ "@graphql-codegen/typescript": "4.0.7",
55
+ "@graphql-codegen/typescript-operations": "4.2.1",
56
56
  "@graphql-tools/load-files": "^7.0.0",
57
57
  "@graphql-tools/merge": "^9.0.4",
58
58
  "@graphql-tools/schema": "^10.0.3",
@@ -128,5 +128,5 @@
128
128
  "node": "18.19.0",
129
129
  "yarn": "1.19.1"
130
130
  },
131
- "gitHead": "88513e18bc718d33ff2424772954847078b7ae21"
131
+ "gitHead": "7d804304162f7611bfa338edeb0cc1b5934f0d4d"
132
132
  }
@@ -1,23 +1,22 @@
1
- import { sendAnalyticsEvent } from '@faststore/sdk'
1
+ import type {
2
+ AddToCartEvent,
3
+ CurrencyCode,
4
+ RemoveFromCartEvent,
5
+ } from '@faststore/sdk'
2
6
  import {
3
7
  CartItem as UICartItem,
4
8
  CartItemImage as UICartItemImage,
5
9
  CartItemSummary as UICartItemSummary,
6
10
  } from '@faststore/ui'
7
11
  import { useCallback, useMemo } from 'react'
8
- import type {
9
- AddToCartEvent,
10
- CurrencyCode,
11
- RemoveFromCartEvent,
12
- } from '@faststore/sdk'
13
12
 
14
13
  import { Image } from 'src/components/ui/Image'
14
+ import type { AnalyticsItem } from 'src/sdk/analytics/types'
15
+ import type { CartItem as ICartItem } from 'src/sdk/cart'
15
16
  import { cartStore } from 'src/sdk/cart'
17
+ import { useRemoveButton } from 'src/sdk/cart/useRemoveButton'
16
18
  import { useFormattedPrice } from 'src/sdk/product/useFormattedPrice'
17
19
  import { useSession } from 'src/sdk/session'
18
- import { useRemoveButton } from 'src/sdk/cart/useRemoveButton'
19
- import type { CartItem as ICartItem } from 'src/sdk/cart'
20
- import type { AnalyticsItem } from 'src/sdk/analytics/types'
21
20
 
22
21
  function useCartItemEvent() {
23
22
  const {
@@ -28,30 +27,32 @@ function useCartItemEvent() {
28
27
  (item: Props['item'], quantity: number) => {
29
28
  const quantityDelta = quantity - item.quantity
30
29
 
31
- return sendAnalyticsEvent<
32
- AddToCartEvent<AnalyticsItem> | RemoveFromCartEvent<AnalyticsItem>
33
- >({
34
- name: quantityDelta > 0 ? 'add_to_cart' : 'remove_from_cart',
35
- params: {
36
- currency: code as CurrencyCode,
37
- // TODO: In the future, we can explore more robust ways of
38
- // calculating the value (gift items, discounts, etc.).
39
- value: item.price * Math.abs(quantityDelta),
40
- items: [
41
- {
42
- item_id: item.itemOffered.isVariantOf.productGroupID,
43
- item_name: item.itemOffered.isVariantOf.name,
44
- item_brand: item.itemOffered.brand.name,
45
- item_variant: item.itemOffered.sku,
46
- quantity: Math.abs(quantityDelta),
47
- price: item.price,
48
- discount: item.listPrice - item.price,
49
- currency: code as CurrencyCode,
50
- item_variant_name: item.itemOffered.name,
51
- product_reference_id: item.itemOffered.gtin,
52
- },
53
- ],
54
- },
30
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
31
+ return sendAnalyticsEvent<
32
+ AddToCartEvent<AnalyticsItem> | RemoveFromCartEvent<AnalyticsItem>
33
+ >({
34
+ name: quantityDelta > 0 ? 'add_to_cart' : 'remove_from_cart',
35
+ params: {
36
+ currency: code as CurrencyCode,
37
+ // TODO: In the future, we can explore more robust ways of
38
+ // calculating the value (gift items, discounts, etc.).
39
+ value: item.price * Math.abs(quantityDelta),
40
+ items: [
41
+ {
42
+ item_id: item.itemOffered.isVariantOf.productGroupID,
43
+ item_name: item.itemOffered.isVariantOf.name,
44
+ item_brand: item.itemOffered.brand.name,
45
+ item_variant: item.itemOffered.sku,
46
+ quantity: Math.abs(quantityDelta),
47
+ price: item.price,
48
+ discount: item.listPrice - item.price,
49
+ currency: code as CurrencyCode,
50
+ item_variant_name: item.itemOffered.name,
51
+ product_reference_id: item.itemOffered.gtin,
52
+ },
53
+ ],
54
+ },
55
+ })
55
56
  })
56
57
  },
57
58
  [code]
@@ -1,4 +1,3 @@
1
- import { sendAnalyticsEvent } from '@faststore/sdk'
2
1
  import {
3
2
  Button as UIButton,
4
3
  CartSidebar as UICartSidebar,
@@ -28,24 +27,26 @@ function useViewCartEvent() {
28
27
  const { items, gifts, total } = useCart()
29
28
 
30
29
  const sendViewCartEvent = useCallback(() => {
31
- return sendAnalyticsEvent<ViewCartEvent>({
32
- name: 'view_cart',
33
- params: {
34
- currency: code as CurrencyCode,
35
- value: total,
36
- items: items.concat(gifts).map((item) => ({
37
- item_id: item.itemOffered.isVariantOf.productGroupID,
38
- item_name: item.itemOffered.isVariantOf.name,
39
- item_brand: item.itemOffered.brand.name,
40
- item_variant: item.itemOffered.sku,
41
- quantity: item.quantity,
42
- price: item.price,
43
- discount: item.listPrice - item.price,
30
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
31
+ return sendAnalyticsEvent<ViewCartEvent>({
32
+ name: 'view_cart',
33
+ params: {
44
34
  currency: code as CurrencyCode,
45
- item_variant_name: item.itemOffered.name,
46
- product_reference_id: item.itemOffered.gtin,
47
- })),
48
- },
35
+ value: total,
36
+ items: items.concat(gifts).map((item) => ({
37
+ item_id: item.itemOffered.isVariantOf.productGroupID,
38
+ item_name: item.itemOffered.isVariantOf.name,
39
+ item_brand: item.itemOffered.brand.name,
40
+ item_variant: item.itemOffered.sku,
41
+ quantity: item.quantity,
42
+ price: item.price,
43
+ discount: item.listPrice - item.price,
44
+ currency: code as CurrencyCode,
45
+ item_variant_name: item.itemOffered.name,
46
+ product_reference_id: item.itemOffered.gtin,
47
+ })),
48
+ },
49
+ })
49
50
  })
50
51
  }, [code, gifts, items, total])
51
52
 
@@ -1,5 +1,4 @@
1
1
  import type { SearchEvent, SearchState } from '@faststore/sdk'
2
- import { sendAnalyticsEvent } from '@faststore/sdk'
3
2
 
4
3
  import type {
5
4
  SearchInputFieldProps as UISearchInputFieldProps,
@@ -22,7 +21,6 @@ import {
22
21
  useState,
23
22
  } from 'react'
24
23
 
25
- import { formatSearchPath } from 'src/sdk/search/formatSearchPath'
26
24
  import useSearchHistory from 'src/sdk/search/useSearchHistory'
27
25
  import useSuggestions from 'src/sdk/search/useSuggestions'
28
26
  import useOnClickOutside from 'src/sdk/ui/useOnClickOutside'
@@ -46,9 +44,11 @@ export type SearchInputRef = UISearchInputFieldRef & {
46
44
  }
47
45
 
48
46
  const sendAnalytics = async (term: string) => {
49
- sendAnalyticsEvent<SearchEvent>({
50
- name: 'search',
51
- params: { search_term: term },
47
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
48
+ sendAnalyticsEvent<SearchEvent>({
49
+ name: 'search',
50
+ params: { search_term: term },
51
+ })
52
52
  })
53
53
  }
54
54
 
@@ -119,13 +119,17 @@ const SearchInput = forwardRef<SearchInputRef, SearchInputProps>(
119
119
  placeholder={placeholder}
120
120
  onChange={(e) => setSearchQuery(e.target.value)}
121
121
  onSubmit={(term) => {
122
- const path = formatSearchPath({
123
- term,
124
- sort: sort as SearchState['sort'],
125
- })
126
-
127
- onSearchSelection(term, path)
128
- router.push(path)
122
+ import('src/sdk/search/formatSearchPath').then(
123
+ ({ formatSearchPath }) => {
124
+ const path = formatSearchPath({
125
+ term,
126
+ sort: sort as SearchState['sort'],
127
+ })
128
+
129
+ onSearchSelection(term, path)
130
+ router.push(path)
131
+ }
132
+ )
129
133
  }}
130
134
  onFocus={() => setSearchDropdownVisible(true)}
131
135
  value={searchQuery}
@@ -1,7 +1,6 @@
1
- import { useEffect, useState, useMemo } from 'react'
1
+ import { useEffect, useMemo, useState } from 'react'
2
2
 
3
3
  import type { CurrencyCode, ViewItemEvent } from '@faststore/sdk'
4
- import { sendAnalyticsEvent } from '@faststore/sdk'
5
4
 
6
5
  import { gql } from '@generated'
7
6
  import type { AnalyticsItem } from 'src/sdk/analytics/types'
@@ -12,10 +11,10 @@ import Section from '../Section'
12
11
 
13
12
  import styles from './section.module.scss'
14
13
 
15
- import { usePDP } from '../../../sdk/overrides/PageProvider'
14
+ import { getOverridableSection } from '../../../sdk/overrides/getOverriddenSection'
16
15
  import { useOverrideComponents } from '../../../sdk/overrides/OverrideContext'
16
+ import { usePDP } from '../../../sdk/overrides/PageProvider'
17
17
  import { ProductDetailsDefaultComponents } from './DefaultComponents'
18
- import { getOverridableSection } from '../../../sdk/overrides/getOverriddenSection'
19
18
 
20
19
  export interface ProductDetailsProps {
21
20
  productTitle: {
@@ -115,25 +114,27 @@ function ProductDetails({
115
114
  } = product
116
115
 
117
116
  useEffect(() => {
118
- sendAnalyticsEvent<ViewItemEvent<AnalyticsItem>>({
119
- name: 'view_item',
120
- params: {
121
- currency: currency.code as CurrencyCode,
122
- value: price,
123
- items: [
124
- {
125
- item_id: isVariantOf.productGroupID,
126
- item_name: isVariantOf.name,
127
- item_brand: brand.name,
128
- item_variant: sku,
129
- price,
130
- discount: listPrice - price,
131
- currency: currency.code as CurrencyCode,
132
- item_variant_name: variantName,
133
- product_reference_id: gtin,
134
- },
135
- ],
136
- },
117
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
118
+ sendAnalyticsEvent<ViewItemEvent<AnalyticsItem>>({
119
+ name: 'view_item',
120
+ params: {
121
+ currency: currency.code as CurrencyCode,
122
+ value: price,
123
+ items: [
124
+ {
125
+ item_id: isVariantOf.productGroupID,
126
+ item_name: isVariantOf.name,
127
+ item_brand: brand.name,
128
+ item_variant: sku,
129
+ price,
130
+ discount: listPrice - price,
131
+ currency: currency.code as CurrencyCode,
132
+ item_variant_name: variantName,
133
+ product_reference_id: gtin,
134
+ },
135
+ ],
136
+ },
137
+ })
137
138
  })
138
139
  }, [
139
140
  isVariantOf.productGroupID,
@@ -1,17 +1,18 @@
1
- import { useCallback, useEffect } from 'react'
2
- import { useRouter } from 'next/router'
3
- import { sendAnalyticsEvent } from '@faststore/sdk'
4
1
  import type { PageViewEvent } from '@faststore/sdk'
2
+ import { useRouter } from 'next/router'
3
+ import { useCallback, useEffect } from 'react'
5
4
 
6
5
  export const usePageViewEvent = () => {
7
6
  const sendPageViewEvent = useCallback(() => {
8
- sendAnalyticsEvent<PageViewEvent>({
9
- name: 'page_view',
10
- params: {
11
- page_title: document.title,
12
- page_location: location.href,
13
- send_page_view: true,
14
- },
7
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
8
+ sendAnalyticsEvent<PageViewEvent>({
9
+ name: 'page_view',
10
+ params: {
11
+ page_title: document.title,
12
+ page_location: location.href,
13
+ send_page_view: true,
14
+ },
15
+ })
15
16
  })
16
17
  }, [])
17
18
 
@@ -1,4 +1,3 @@
1
- import { sendAnalyticsEvent } from '@faststore/sdk'
2
1
  import { useCallback } from 'react'
3
2
  import type { CurrencyCode, ViewItemListEvent } from '@faststore/sdk'
4
3
 
@@ -25,25 +24,28 @@ export const useViewItemListEvent = ({
25
24
  } = useSession()
26
25
 
27
26
  const sendViewItemListEvent = useCallback(() => {
28
- sendAnalyticsEvent<ViewItemListEvent<AnalyticsItem>>({
29
- name: 'view_item_list',
30
- params: {
31
- item_list_name: title,
32
- item_list_id: title,
33
- items: products.map(({ node: product }, index) => ({
34
- item_id: product.isVariantOf.productGroupID,
35
- item_name: product.isVariantOf.name,
36
- item_brand: product.brand.name,
37
- item_variant: product.sku,
38
- price: product.offers.offers[0].price,
39
- index: page * pageSize + index + 1,
40
- discount:
41
- product.offers.offers[0].listPrice - product.offers.offers[0].price,
42
- currency: code as CurrencyCode,
43
- item_variant_name: product.name,
44
- product_reference_id: product.gtin,
45
- })),
46
- },
27
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
28
+ sendAnalyticsEvent<ViewItemListEvent<AnalyticsItem>>({
29
+ name: 'view_item_list',
30
+ params: {
31
+ item_list_name: title,
32
+ item_list_id: title,
33
+ items: products.map(({ node: product }, index) => ({
34
+ item_id: product.isVariantOf.productGroupID,
35
+ item_name: product.isVariantOf.name,
36
+ item_brand: product.brand.name,
37
+ item_variant: product.sku,
38
+ price: product.offers.offers[0].price,
39
+ index: page * pageSize + index + 1,
40
+ discount:
41
+ product.offers.offers[0].listPrice -
42
+ product.offers.offers[0].price,
43
+ currency: code as CurrencyCode,
44
+ item_variant_name: product.name,
45
+ product_reference_id: product.gtin,
46
+ })),
47
+ },
48
+ })
47
49
  })
48
50
  }, [code, products, title, page, pageSize])
49
51
 
@@ -1,12 +1,11 @@
1
- import { sendAnalyticsEvent } from '@faststore/sdk'
1
+ import type { AddToCartEvent, CurrencyCode } from '@faststore/sdk'
2
2
  import { useCallback } from 'react'
3
- import type { CurrencyCode, AddToCartEvent } from '@faststore/sdk'
4
3
 
5
4
  import type { AnalyticsItem } from 'src/sdk/analytics/types'
6
5
  import type { CartItem } from 'src/sdk/cart'
7
6
 
8
- import { useSession } from '../session'
9
7
  import { useUI } from '@faststore/ui'
8
+ import { useSession } from '../session'
10
9
  import { cartStore } from './index'
11
10
 
12
11
  export const useBuyButton = (item: CartItem | null) => {
@@ -23,28 +22,30 @@ export const useBuyButton = (item: CartItem | null) => {
23
22
  return
24
23
  }
25
24
 
26
- sendAnalyticsEvent<AddToCartEvent<AnalyticsItem>>({
27
- name: 'add_to_cart',
28
- params: {
29
- currency: code as CurrencyCode,
30
- // TODO: In the future, we can explore more robust ways of
31
- // calculating the value (gift items, discounts, etc.).
32
- value: item.price * item.quantity,
33
- items: [
34
- {
35
- item_id: item.itemOffered.isVariantOf.productGroupID,
36
- item_name: item.itemOffered.isVariantOf.name,
37
- item_brand: item.itemOffered.brand.name,
38
- item_variant: item.itemOffered.sku,
39
- quantity: item.quantity,
40
- price: item.price,
41
- discount: item.listPrice - item.price,
42
- currency: code as CurrencyCode,
43
- item_variant_name: item.itemOffered.name,
44
- product_reference_id: item.itemOffered.gtin,
45
- },
46
- ],
47
- },
25
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
26
+ sendAnalyticsEvent<AddToCartEvent<AnalyticsItem>>({
27
+ name: 'add_to_cart',
28
+ params: {
29
+ currency: code as CurrencyCode,
30
+ // TODO: In the future, we can explore more robust ways of
31
+ // calculating the value (gift items, discounts, etc.).
32
+ value: item.price * item.quantity,
33
+ items: [
34
+ {
35
+ item_id: item.itemOffered.isVariantOf.productGroupID,
36
+ item_name: item.itemOffered.isVariantOf.name,
37
+ item_brand: item.itemOffered.brand.name,
38
+ item_variant: item.itemOffered.sku,
39
+ quantity: item.quantity,
40
+ price: item.price,
41
+ discount: item.listPrice - item.price,
42
+ currency: code as CurrencyCode,
43
+ item_variant_name: item.itemOffered.name,
44
+ product_reference_id: item.itemOffered.gtin,
45
+ },
46
+ ],
47
+ },
48
+ })
48
49
  })
49
50
 
50
51
  cartStore.addItem(item)
@@ -1,12 +1,11 @@
1
- import { sendAnalyticsEvent } from '@faststore/sdk'
2
- import { useCallback } from 'react'
3
1
  import type { CurrencyCode, RemoveFromCartEvent } from '@faststore/sdk'
2
+ import { useCallback } from 'react'
4
3
 
5
4
  import type { AnalyticsItem } from 'src/sdk/analytics/types'
6
5
 
6
+ import type { CartItem } from '.'
7
7
  import { useSession } from '../session'
8
8
  import { cartStore } from './index'
9
- import type { CartItem } from '.'
10
9
 
11
10
  export const useRemoveButton = (item: CartItem | null) => {
12
11
  const {
@@ -21,26 +20,28 @@ export const useRemoveButton = (item: CartItem | null) => {
21
20
  return
22
21
  }
23
22
 
24
- sendAnalyticsEvent<RemoveFromCartEvent<AnalyticsItem>>({
25
- name: 'remove_from_cart',
26
- params: {
27
- currency: code as CurrencyCode,
28
- value: item.price * item.quantity, // TODO: In the future, we can explore more robust ways of calculating the value (gift items, discounts, etc.).
29
- items: [
30
- {
31
- item_id: item.itemOffered.isVariantOf.productGroupID,
32
- item_name: item.itemOffered.isVariantOf.name,
33
- item_brand: item.itemOffered.brand.name,
34
- item_variant: item.itemOffered.sku,
35
- quantity: item.quantity,
36
- price: item.price,
37
- discount: item.listPrice - item.price,
38
- currency: code as CurrencyCode,
39
- item_variant_name: item.itemOffered.name,
40
- product_reference_id: item.itemOffered.gtin,
41
- },
42
- ],
43
- },
23
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
24
+ sendAnalyticsEvent<RemoveFromCartEvent<AnalyticsItem>>({
25
+ name: 'remove_from_cart',
26
+ params: {
27
+ currency: code as CurrencyCode,
28
+ value: item.price * item.quantity, // TODO: In the future, we can explore more robust ways of calculating the value (gift items, discounts, etc.).
29
+ items: [
30
+ {
31
+ item_id: item.itemOffered.isVariantOf.productGroupID,
32
+ item_name: item.itemOffered.isVariantOf.name,
33
+ item_brand: item.itemOffered.brand.name,
34
+ item_variant: item.itemOffered.sku,
35
+ quantity: item.quantity,
36
+ price: item.price,
37
+ discount: item.listPrice - item.price,
38
+ currency: code as CurrencyCode,
39
+ item_variant_name: item.itemOffered.name,
40
+ product_reference_id: item.itemOffered.gtin,
41
+ },
42
+ ],
43
+ },
44
+ })
44
45
  })
45
46
 
46
47
  cartStore.removeItem(item.id)
@@ -1,5 +1,3 @@
1
- import { sendAnalyticsEvent } from '@faststore/sdk'
2
-
3
1
  import { gql } from '@generated'
4
2
  import { useQuery } from 'src/sdk/graphql/useQuery'
5
3
  import { useSession } from 'src/sdk/session'
@@ -83,16 +81,18 @@ export const useProductGalleryQuery = ({
83
81
  return useQuery<Query, Variables>(query, localizedVariables, {
84
82
  onSuccess: (data) => {
85
83
  if (data && term) {
86
- sendAnalyticsEvent<IntelligentSearchQueryEvent>({
87
- name: 'intelligent_search_query',
88
- params: {
89
- locale,
90
- term,
91
- url: window.location.href,
92
- logicalOperator: data.search.metadata?.logicalOperator ?? 'and',
93
- isTermMisspelled: data.search.metadata?.isTermMisspelled ?? false,
94
- totalCount: data.search.products.pageInfo.totalCount,
95
- },
84
+ import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
85
+ sendAnalyticsEvent<IntelligentSearchQueryEvent>({
86
+ name: 'intelligent_search_query',
87
+ params: {
88
+ locale,
89
+ term,
90
+ url: window.location.href,
91
+ logicalOperator: data.search.metadata?.logicalOperator ?? 'and',
92
+ isTermMisspelled: data.search.metadata?.isTermMisspelled ?? false,
93
+ totalCount: data.search.products.pageInfo.totalCount,
94
+ },
95
+ })
96
96
  })
97
97
  }
98
98
  },