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