@gem-sdk/pages 1.5.7 → 1.5.23

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 (79) hide show
  1. package/dist/cjs/components/ErrorBoundary.js +32 -24
  2. package/dist/cjs/components/ErrorFallback.js +19 -2
  3. package/dist/cjs/components/FacebookPixel.js +25 -20
  4. package/dist/cjs/components/Footer.js +462 -0
  5. package/dist/cjs/components/GoogleAnalytic.js +49 -23
  6. package/dist/cjs/components/Header.js +211 -0
  7. package/dist/cjs/components/TikTokPixel.js +9 -6
  8. package/dist/cjs/components/builder/Toolbox.js +215 -188
  9. package/dist/cjs/layouts/main.js +19 -5
  10. package/dist/cjs/libs/api/get-builder-props.js +26 -24
  11. package/dist/cjs/libs/api/get-collection-props.js +59 -55
  12. package/dist/cjs/libs/api/get-home-page-props-v2.js +121 -114
  13. package/dist/cjs/libs/api/get-home-page-props.js +133 -123
  14. package/dist/cjs/libs/api/get-preview-props.js +10 -10
  15. package/dist/cjs/libs/api/get-product-props.js +64 -62
  16. package/dist/cjs/libs/api/get-static-page-props-preview.js +128 -121
  17. package/dist/cjs/libs/api/get-static-page-props-v2.js +126 -119
  18. package/dist/cjs/libs/api/get-static-page-props.js +130 -120
  19. package/dist/cjs/libs/fetcher.js +59 -63
  20. package/dist/cjs/libs/get-layout.js +5 -2
  21. package/dist/cjs/libs/get-storefront-api.js +7 -7
  22. package/dist/cjs/libs/getStaticPaths.js +5 -5
  23. package/dist/cjs/libs/google-fonts.js +54 -61
  24. package/dist/cjs/libs/helpers/gen-css.js +103 -94
  25. package/dist/cjs/libs/helpers/generate-manifres.js +1 -1
  26. package/dist/cjs/libs/helpers/get-fallback.js +24 -22
  27. package/dist/cjs/libs/helpers/normalize.js +82 -80
  28. package/dist/cjs/libs/helpers/parse-json.js +10 -12
  29. package/dist/cjs/libs/helpers/user-agent.js +2 -2
  30. package/dist/cjs/libs/hooks/use-tracking-view.js +36 -31
  31. package/dist/cjs/libs/parse-html.js +33 -26
  32. package/dist/cjs/pages/404.js +34 -2
  33. package/dist/cjs/pages/500.js +63 -8
  34. package/dist/cjs/pages/builder.js +69 -14
  35. package/dist/cjs/pages/collection-detail.js +48 -7
  36. package/dist/cjs/pages/preview.js +18 -12
  37. package/dist/cjs/pages/product-detail.js +53 -7
  38. package/dist/cjs/pages/static-v2.js +62 -7
  39. package/dist/cjs/pages/static.js +60 -6
  40. package/dist/esm/components/ErrorBoundary.js +32 -24
  41. package/dist/esm/components/ErrorFallback.js +19 -2
  42. package/dist/esm/components/FacebookPixel.js +25 -20
  43. package/dist/esm/components/Footer.js +458 -0
  44. package/dist/esm/components/GoogleAnalytic.js +49 -23
  45. package/dist/esm/components/Header.js +207 -0
  46. package/dist/esm/components/TikTokPixel.js +9 -6
  47. package/dist/esm/components/builder/Toolbox.js +217 -190
  48. package/dist/esm/layouts/main.js +19 -5
  49. package/dist/esm/libs/api/get-builder-props.js +26 -24
  50. package/dist/esm/libs/api/get-collection-props.js +59 -55
  51. package/dist/esm/libs/api/get-home-page-props-v2.js +121 -114
  52. package/dist/esm/libs/api/get-home-page-props.js +133 -123
  53. package/dist/esm/libs/api/get-preview-props.js +10 -10
  54. package/dist/esm/libs/api/get-product-props.js +64 -62
  55. package/dist/esm/libs/api/get-static-page-props-preview.js +128 -121
  56. package/dist/esm/libs/api/get-static-page-props-v2.js +126 -119
  57. package/dist/esm/libs/api/get-static-page-props.js +130 -120
  58. package/dist/esm/libs/fetcher.js +59 -63
  59. package/dist/esm/libs/get-layout.js +5 -2
  60. package/dist/esm/libs/get-storefront-api.js +7 -7
  61. package/dist/esm/libs/getStaticPaths.js +5 -5
  62. package/dist/esm/libs/google-fonts.js +54 -61
  63. package/dist/esm/libs/helpers/gen-css.js +103 -94
  64. package/dist/esm/libs/helpers/generate-manifres.js +1 -1
  65. package/dist/esm/libs/helpers/get-fallback.js +24 -22
  66. package/dist/esm/libs/helpers/normalize.js +82 -80
  67. package/dist/esm/libs/helpers/parse-json.js +10 -12
  68. package/dist/esm/libs/helpers/user-agent.js +2 -2
  69. package/dist/esm/libs/hooks/use-tracking-view.js +36 -31
  70. package/dist/esm/libs/parse-html.js +33 -26
  71. package/dist/esm/pages/404.js +34 -2
  72. package/dist/esm/pages/500.js +63 -8
  73. package/dist/esm/pages/builder.js +69 -14
  74. package/dist/esm/pages/collection-detail.js +48 -7
  75. package/dist/esm/pages/preview.js +18 -12
  76. package/dist/esm/pages/product-detail.js +53 -7
  77. package/dist/esm/pages/static-v2.js +62 -7
  78. package/dist/esm/pages/static.js +60 -6
  79. package/package.json +3 -3
@@ -10,124 +10,131 @@ var normalize = require('../helpers/normalize.js');
10
10
  var parseJson = require('../helpers/parse-json.js');
11
11
  var nextjs = require('@sentry/nextjs');
12
12
 
13
- const getStaticPagePropsV2 = (fetcher, shopifyFetcher) => async (slug) => {
14
- try {
15
- const pageType = 'STATIC';
16
- const variables = {
17
- slug,
18
- slugType: pageType,
19
- };
20
- const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
21
- fetcher([
22
- core.PublishedThemePagesDocument,
23
- variables,
24
- ]),
25
- fetcher([core.StorePropertyDocument]),
26
- shopifyFetcher([adapterShopify.ShopMetaDocument]),
27
- ]);
28
- if (theme.status === 'rejected') {
29
- throw new Error(theme.reason?.[0]);
30
- }
31
- const dataBuilder = theme.value.publishedThemePages?.[0];
32
- if (!dataBuilder) {
33
- throw new Error(`No data builder found for slug: /${slug}`);
34
- }
35
- const pageTemplate = normalize.parseBuilderTemplateV2(dataBuilder);
36
- const [fontStyle, fallback] = await Promise.all([
37
- googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data),
38
- getFallback.getFallbackV2(fetcher, pageTemplate),
39
- ]);
40
- const mobileOnly = dataBuilder.isMobile ?? false;
41
- const description = dataBuilder?.themePageDataSEO?.find((item) => item?.key === 'global-meta-description')?.value;
42
- const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item) => item?.key === 'global-meta-thumbnail')?.value);
43
- const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
44
- const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
45
- const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
46
- const seo = {
47
- defaultTitle: shopMeta?.shop.name,
48
- title: dataBuilder?.name,
49
- description: description ?? shopMeta?.shop.description,
50
- openGraph: {
51
- site_name: shopMeta?.shop.name,
52
- locale: shopMeta?.localization.country.isoCode,
53
- title: dataBuilder?.name ?? shopMeta?.shop.name,
54
- description: description ?? shopMeta?.shop.description,
55
- images: thumbnail ? [thumbnail] : [],
56
- },
57
- canonical: `https://${shopData?.storeProperty?.primaryDomain}/${slug}`,
58
- additionalMetaTags: [
59
- {
60
- name: 'theme-color',
61
- content: '#000000',
62
- },
63
- ],
64
- additionalLinkTags: [
65
- {
66
- rel: 'icon',
67
- sizes: '32x32',
68
- href: `${favicon}-/crop/1:1/center/-/smart_resize/32x32/`,
69
- },
70
- {
71
- rel: 'icon',
72
- sizes: '16x16',
73
- href: `${favicon}-/crop/1:1/center/-/smart_resize/16x16/`,
74
- },
75
- {
76
- rel: 'apple-touch-icon',
77
- sizes: '180x180',
78
- href: `${favicon}-/crop/1:1/center/-/smart_resize/180x180/`,
79
- },
80
- {
81
- rel: 'manifest',
82
- href: generateManifres.generateManifest({
83
- theme_color: '#000000',
84
- background_color: '#ffffff',
85
- display: 'standalone',
86
- scope: '/',
87
- start_url: '/',
88
- name: shopMeta?.shop.name,
89
- short_name: shopMeta?.shop.name,
90
- description: shopMeta?.shop.description,
91
- icons: [
92
- {
93
- src: `${favicon}-/crop/1:1/center/-/smart_resize/192x192/`,
94
- sizes: '192x192',
95
- type: 'image/png',
96
- purpose: 'any maskable',
97
- },
98
- {
99
- src: `${favicon}-/crop/1:1/center/-/smart_resize/512x512/`,
100
- sizes: '512x512',
101
- type: 'image/png',
102
- },
103
- ],
104
- }),
105
- },
106
- ],
107
- };
108
- return parseJson.serializableJson({
109
- themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data, mobileOnly),
110
- fontStyle,
111
- builderData: pageTemplate,
112
- pageType,
113
- currency: shopMeta?.localization.country.currency.isoCode ?? null,
114
- locale: shopMeta?.localization.country.isoCode ?? null,
115
- swr: { fallback },
116
- swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
117
- seo,
118
- mobileOnly,
119
- gaTrackingId: dataBuilder.themePageAnalytic?.gaTrackingID ?? null,
120
- facebookPixelId: dataBuilder.themePageAnalytic?.fbPixelID ?? null,
121
- tiktokPixelId: dataBuilder.themePageAnalytic?.tiktokPixelID ?? null,
122
- customCodeHeader: dataBuilder.themePageCustomCode?.header ?? null,
123
- customCodeBody: dataBuilder.themePageCustomCode?.body ?? null,
124
- pageHandle: dataBuilder.handle ?? null,
125
- });
126
- }
127
- catch (err) {
128
- nextjs.captureException(err);
129
- throw err;
130
- }
131
- };
13
+ const getStaticPagePropsV2 = (fetcher, shopifyFetcher)=>async (slug)=>{
14
+ try {
15
+ const pageType = 'STATIC';
16
+ const variables = {
17
+ slug,
18
+ slugType: pageType
19
+ };
20
+ const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
21
+ fetcher([
22
+ core.PublishedThemePagesDocument,
23
+ variables
24
+ ]),
25
+ fetcher([
26
+ core.StorePropertyDocument
27
+ ]),
28
+ shopifyFetcher([
29
+ adapterShopify.ShopMetaDocument
30
+ ])
31
+ ]);
32
+ if (theme.status === 'rejected') {
33
+ throw new Error(theme.reason?.[0]);
34
+ }
35
+ const dataBuilder = theme.value.publishedThemePages?.[0];
36
+ if (!dataBuilder) {
37
+ throw new Error(`No data builder found for slug: /${slug}`);
38
+ }
39
+ const pageTemplate = normalize.parseBuilderTemplateV2(dataBuilder);
40
+ const [fontStyle, fallback] = await Promise.all([
41
+ googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data),
42
+ getFallback.getFallbackV2(fetcher, pageTemplate)
43
+ ]);
44
+ const mobileOnly = dataBuilder.isMobile ?? false;
45
+ const description = dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-description')?.value;
46
+ const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-thumbnail')?.value);
47
+ const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
48
+ const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
49
+ const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
50
+ const seo = {
51
+ defaultTitle: shopMeta?.shop.name,
52
+ title: dataBuilder?.name,
53
+ description: description ?? shopMeta?.shop.description,
54
+ openGraph: {
55
+ site_name: shopMeta?.shop.name,
56
+ locale: shopMeta?.localization.country.isoCode,
57
+ title: dataBuilder?.name ?? shopMeta?.shop.name,
58
+ description: description ?? shopMeta?.shop.description,
59
+ images: thumbnail ? [
60
+ thumbnail
61
+ ] : []
62
+ },
63
+ canonical: `https://${shopData?.storeProperty?.primaryDomain}/${slug}`,
64
+ additionalMetaTags: [
65
+ {
66
+ name: 'theme-color',
67
+ content: '#000000'
68
+ }
69
+ ],
70
+ additionalLinkTags: [
71
+ {
72
+ rel: 'icon',
73
+ sizes: '32x32',
74
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/32x32/`
75
+ },
76
+ {
77
+ rel: 'icon',
78
+ sizes: '16x16',
79
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/16x16/`
80
+ },
81
+ {
82
+ rel: 'apple-touch-icon',
83
+ sizes: '180x180',
84
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/180x180/`
85
+ },
86
+ {
87
+ rel: 'manifest',
88
+ href: generateManifres.generateManifest({
89
+ theme_color: '#000000',
90
+ background_color: '#ffffff',
91
+ display: 'standalone',
92
+ scope: '/',
93
+ start_url: '/',
94
+ name: shopMeta?.shop.name,
95
+ short_name: shopMeta?.shop.name,
96
+ description: shopMeta?.shop.description,
97
+ icons: [
98
+ {
99
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/192x192/`,
100
+ sizes: '192x192',
101
+ type: 'image/png',
102
+ purpose: 'any maskable'
103
+ },
104
+ {
105
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/512x512/`,
106
+ sizes: '512x512',
107
+ type: 'image/png'
108
+ }
109
+ ]
110
+ })
111
+ }
112
+ ]
113
+ };
114
+ return parseJson.serializableJson({
115
+ themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data, mobileOnly),
116
+ fontStyle,
117
+ builderData: pageTemplate,
118
+ pageType,
119
+ currency: shopMeta?.localization.country.currency.isoCode ?? null,
120
+ locale: shopMeta?.localization.country.isoCode ?? null,
121
+ swr: {
122
+ fallback
123
+ },
124
+ swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
125
+ seo,
126
+ mobileOnly,
127
+ gaTrackingId: dataBuilder.themePageAnalytic?.gaTrackingID ?? null,
128
+ facebookPixelId: dataBuilder.themePageAnalytic?.fbPixelID ?? null,
129
+ tiktokPixelId: dataBuilder.themePageAnalytic?.tiktokPixelID ?? null,
130
+ customCodeHeader: dataBuilder.themePageCustomCode?.header ?? null,
131
+ customCodeBody: dataBuilder.themePageCustomCode?.body ?? null,
132
+ pageHandle: dataBuilder.handle ?? null
133
+ });
134
+ } catch (err) {
135
+ nextjs.captureException(err);
136
+ throw err;
137
+ }
138
+ };
132
139
 
133
140
  exports.getStaticPagePropsV2 = getStaticPagePropsV2;
@@ -8,125 +8,135 @@ var generateManifres = require('../helpers/generate-manifres.js');
8
8
  var normalize = require('../helpers/normalize.js');
9
9
  var parseJson = require('../helpers/parse-json.js');
10
10
 
11
- const getStaticPageProps = (fetcher, shopifyFetcher) => async (slug) => {
12
- const pageType = 'STATIC';
13
- const variables = {
14
- slug,
15
- slugType: pageType,
16
- };
17
- const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
18
- fetcher([
19
- core.PublishedThemePagesDocument,
20
- variables,
21
- ]),
22
- fetcher([core.StorePropertyDocument]),
23
- shopifyFetcher([adapterShopify.ShopMetaDocument]),
24
- ]);
25
- if (theme.status === 'rejected') {
26
- return {
27
- pageType,
28
- };
29
- }
30
- const dataBuilder = theme.value.publishedThemePages?.[0];
31
- const pageTemplate = normalize.parseBuilderTemplate(dataBuilder);
32
- const fontStyle = await googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data);
33
- const queries = core.prefetchQueries(pageTemplate);
34
- const datas = await Promise.allSettled(queries.map(({ query, variables, func }) => {
35
- if (func) {
36
- return func(fetcher, variables);
37
- }
38
- if (query)
39
- return fetcher([query, variables]);
40
- return {};
41
- }));
42
- const fallback = queries.reduce((acc, { key }, index) => {
43
- const res = datas[index];
44
- if (res?.status === 'fulfilled') {
45
- return {
46
- ...acc,
47
- [key]: res.value,
48
- };
49
- }
50
- return acc;
51
- }, {});
52
- const description = dataBuilder?.themePageDataSEO?.find((item) => item?.key === 'global-meta-description')?.value;
53
- const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item) => item?.key === 'global-meta-thumbnail')?.value);
54
- const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
55
- const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
56
- const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
57
- const seo = {
58
- defaultTitle: shopMeta?.shop.name ?? '',
59
- title: dataBuilder?.name ?? '',
60
- description: description ?? shopMeta?.shop.description ?? '',
61
- openGraph: {
62
- site_name: shopMeta?.shop.name ?? '',
63
- locale: shopMeta?.localization.country.isoCode ?? '',
64
- title: dataBuilder?.name ?? shopMeta?.shop.name ?? '',
65
- description: description ?? shopMeta?.shop.description ?? '',
66
- images: thumbnail ? [thumbnail] : [],
67
- },
68
- additionalMetaTags: [
69
- {
70
- name: 'theme-color',
71
- content: '#000000',
72
- },
73
- ],
74
- canonical: `/${slug}`,
75
- additionalLinkTags: [
76
- {
77
- rel: 'icon',
78
- sizes: '32x32',
79
- href: `${favicon}-/crop/1:1/center/-/smart_resize/32x32/`,
80
- },
81
- {
82
- rel: 'icon',
83
- sizes: '16x16',
84
- href: `${favicon}-/crop/1:1/center/-/smart_resize/16x16/`,
85
- },
86
- {
87
- rel: 'apple-touch-icon',
88
- sizes: '180x180',
89
- href: `${favicon}-/crop/1:1/center/-/smart_resize/180x180/`,
90
- },
91
- {
92
- rel: 'manifest',
93
- href: generateManifres.generateManifest({
94
- theme_color: '#000000',
95
- background_color: '#ffffff',
96
- display: 'standalone',
97
- scope: '/',
98
- start_url: '/',
99
- name: shopMeta?.shop.name,
100
- short_name: shopMeta?.shop.name,
101
- description: shopMeta?.shop.description,
102
- icons: [
103
- {
104
- src: `${favicon}-/crop/1:1/center/-/smart_resize/192x192/`,
105
- sizes: '192x192',
106
- type: 'image/png',
107
- purpose: 'any maskable',
108
- },
109
- {
110
- src: `${favicon}-/crop/1:1/center/-/smart_resize/512x512/`,
111
- sizes: '512x512',
112
- type: 'image/png',
113
- },
114
- ],
115
- }),
116
- },
117
- ],
118
- };
119
- return parseJson.serializableJson({
120
- themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data),
121
- fontStyle,
122
- builderData: pageTemplate,
123
- pageType,
124
- currency: shopMeta?.localization.country.currency.isoCode ?? null,
125
- locale: shopMeta?.localization.country.isoCode ?? null,
126
- swr: { fallback },
127
- swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
128
- seo,
129
- });
130
- };
11
+ const getStaticPageProps = (fetcher, shopifyFetcher)=>async (slug)=>{
12
+ const pageType = 'STATIC';
13
+ const variables = {
14
+ slug,
15
+ slugType: pageType
16
+ };
17
+ const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
18
+ fetcher([
19
+ core.PublishedThemePagesDocument,
20
+ variables
21
+ ]),
22
+ fetcher([
23
+ core.StorePropertyDocument
24
+ ]),
25
+ shopifyFetcher([
26
+ adapterShopify.ShopMetaDocument
27
+ ])
28
+ ]);
29
+ if (theme.status === 'rejected') {
30
+ return {
31
+ pageType
32
+ };
33
+ }
34
+ const dataBuilder = theme.value.publishedThemePages?.[0];
35
+ const pageTemplate = normalize.parseBuilderTemplate(dataBuilder);
36
+ const fontStyle = await googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data);
37
+ const queries = core.prefetchQueries(pageTemplate);
38
+ const datas = await Promise.allSettled(queries.map(({ query , variables , func })=>{
39
+ if (func) {
40
+ return func(fetcher, variables);
41
+ }
42
+ if (query) return fetcher([
43
+ query,
44
+ variables
45
+ ]);
46
+ return {};
47
+ }));
48
+ const fallback = queries.reduce((acc, { key }, index)=>{
49
+ const res = datas[index];
50
+ if (res?.status === 'fulfilled') {
51
+ return {
52
+ ...acc,
53
+ [key]: res.value
54
+ };
55
+ }
56
+ return acc;
57
+ }, {});
58
+ const description = dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-description')?.value;
59
+ const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-thumbnail')?.value);
60
+ const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
61
+ const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
62
+ const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
63
+ const seo = {
64
+ defaultTitle: shopMeta?.shop.name ?? '',
65
+ title: dataBuilder?.name ?? '',
66
+ description: description ?? shopMeta?.shop.description ?? '',
67
+ openGraph: {
68
+ site_name: shopMeta?.shop.name ?? '',
69
+ locale: shopMeta?.localization.country.isoCode ?? '',
70
+ title: dataBuilder?.name ?? shopMeta?.shop.name ?? '',
71
+ description: description ?? shopMeta?.shop.description ?? '',
72
+ images: thumbnail ? [
73
+ thumbnail
74
+ ] : []
75
+ },
76
+ additionalMetaTags: [
77
+ {
78
+ name: 'theme-color',
79
+ content: '#000000'
80
+ }
81
+ ],
82
+ canonical: `/${slug}`,
83
+ additionalLinkTags: [
84
+ {
85
+ rel: 'icon',
86
+ sizes: '32x32',
87
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/32x32/`
88
+ },
89
+ {
90
+ rel: 'icon',
91
+ sizes: '16x16',
92
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/16x16/`
93
+ },
94
+ {
95
+ rel: 'apple-touch-icon',
96
+ sizes: '180x180',
97
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/180x180/`
98
+ },
99
+ {
100
+ rel: 'manifest',
101
+ href: generateManifres.generateManifest({
102
+ theme_color: '#000000',
103
+ background_color: '#ffffff',
104
+ display: 'standalone',
105
+ scope: '/',
106
+ start_url: '/',
107
+ name: shopMeta?.shop.name,
108
+ short_name: shopMeta?.shop.name,
109
+ description: shopMeta?.shop.description,
110
+ icons: [
111
+ {
112
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/192x192/`,
113
+ sizes: '192x192',
114
+ type: 'image/png',
115
+ purpose: 'any maskable'
116
+ },
117
+ {
118
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/512x512/`,
119
+ sizes: '512x512',
120
+ type: 'image/png'
121
+ }
122
+ ]
123
+ })
124
+ }
125
+ ]
126
+ };
127
+ return parseJson.serializableJson({
128
+ themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data),
129
+ fontStyle,
130
+ builderData: pageTemplate,
131
+ pageType,
132
+ currency: shopMeta?.localization.country.currency.isoCode ?? null,
133
+ locale: shopMeta?.localization.country.isoCode ?? null,
134
+ swr: {
135
+ fallback
136
+ },
137
+ swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
138
+ seo
139
+ });
140
+ };
131
141
 
132
142
  exports.getStaticPageProps = getStaticPageProps;