@gem-sdk/pages 2.0.0-dev.884 → 2.0.0-staging.118

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 (144) hide show
  1. package/dist/cjs/components/ErrorBoundary.js +41 -1
  2. package/dist/cjs/components/ErrorFallback.js +27 -1
  3. package/dist/cjs/components/FacebookPixel.js +34 -3
  4. package/dist/cjs/components/FooterForPostPurchase.js +35 -1
  5. package/dist/cjs/components/GoogleAnalytic.js +66 -5
  6. package/dist/cjs/components/TikTokPixel.js +20 -3
  7. package/dist/cjs/components/builder/Body.js +37 -0
  8. package/dist/cjs/components/builder/Footer.js +155 -0
  9. package/dist/cjs/components/builder/Header.js +188 -0
  10. package/dist/cjs/components/builder/PopupManager.js +64 -1
  11. package/dist/cjs/components/builder/SwitchView.js +185 -0
  12. package/dist/cjs/components/builder/Toolbar.js +701 -1
  13. package/dist/cjs/components/builder/Toolbox.js +485 -1
  14. package/dist/cjs/components/builder/const.js +56 -0
  15. package/dist/cjs/components/builder/toolbar/const.js +7 -0
  16. package/dist/cjs/components/builder/toolbar/utils/findDOMClosest.js +41 -0
  17. package/dist/cjs/components/builder/toolbar/utils/findOverflowParent.js +20 -0
  18. package/dist/cjs/components/builder/toolbar/utils/getChildrenByAttrSelector.js +18 -0
  19. package/dist/cjs/components/builder/toolbar/utils/getDOMElementParents.js +32 -0
  20. package/dist/cjs/components/builder/toolbar/utils/isOverParent.js +16 -0
  21. package/dist/cjs/components/builder/toolbar/utils/isOverToolbarPosition.js +12 -0
  22. package/dist/cjs/components/builder/toolbar/utils/isSection.js +8 -0
  23. package/dist/cjs/components/builder/toolbar/utils/notVisible.js +8 -0
  24. package/dist/cjs/components/builder/toolbar/utils/waitForElementToExist.js +27 -0
  25. package/dist/cjs/components/image-to-layout/AddSectionImageToLayout.js +151 -1
  26. package/dist/cjs/components/image-to-layout/DropElement.js +167 -1
  27. package/dist/cjs/components/image-to-layout/ImageToLayout.js +42 -1
  28. package/dist/cjs/index.js +80 -1
  29. package/dist/cjs/layouts/main.js +31 -1
  30. package/dist/cjs/libs/api/get-builder-props.js +46 -1
  31. package/dist/cjs/libs/api/get-collection-props.js +68 -1
  32. package/dist/cjs/libs/api/get-home-page-props-v2.js +145 -1
  33. package/dist/cjs/libs/api/get-home-page-props.js +151 -1
  34. package/dist/cjs/libs/api/get-post-purchase-props-preview.js +268 -1
  35. package/dist/cjs/libs/api/get-preview-props.js +18 -1
  36. package/dist/cjs/libs/api/get-product-props.js +73 -1
  37. package/dist/cjs/libs/api/get-static-page-props-preview.js +155 -1
  38. package/dist/cjs/libs/api/get-static-page-props-v2.js +164 -1
  39. package/dist/cjs/libs/api/get-static-page-props.js +148 -1
  40. package/dist/cjs/libs/custom-fonts.js +60 -6
  41. package/dist/cjs/libs/fetcher.js +100 -1
  42. package/dist/cjs/libs/get-layout.js +13 -1
  43. package/dist/cjs/libs/get-storefront-api.js +12 -1
  44. package/dist/cjs/libs/getStaticPaths.js +10 -1
  45. package/dist/cjs/libs/google-fonts.js +118 -1
  46. package/dist/cjs/libs/helpers/check-option-font.js +65 -0
  47. package/dist/cjs/libs/helpers/common.js +27 -1
  48. package/dist/cjs/libs/helpers/gen-css.js +135 -1
  49. package/dist/cjs/libs/helpers/gen-fonts.js +90 -1
  50. package/dist/cjs/libs/helpers/generate-manifres.js +5 -1
  51. package/dist/cjs/libs/helpers/get-fallback.js +34 -1
  52. package/dist/cjs/libs/helpers/normalize.js +111 -1
  53. package/dist/cjs/libs/helpers/parse-json.js +16 -1
  54. package/dist/cjs/libs/helpers/user-agent.js +7 -1
  55. package/dist/cjs/libs/hooks/use-tracking-view.js +43 -1
  56. package/dist/cjs/libs/hooks/usePagePreview.js +92 -1
  57. package/dist/cjs/libs/parse-html.js +34 -1
  58. package/dist/cjs/libs/shopify-cdn-with-google-fonts.js +1845 -1
  59. package/dist/cjs/pages/404.js +43 -1
  60. package/dist/cjs/pages/500.js +74 -1
  61. package/dist/cjs/pages/CollectionGlobalProvider.js +59 -1
  62. package/dist/cjs/pages/builder.js +115 -1
  63. package/dist/cjs/pages/collection-detail.js +64 -1
  64. package/dist/cjs/pages/preview.js +26 -1
  65. package/dist/cjs/pages/product-detail.js +69 -1
  66. package/dist/cjs/pages/static-v2.js +139 -1
  67. package/dist/cjs/pages/static.js +75 -1
  68. package/dist/cjs/store/libs-store.js +14 -0
  69. package/dist/esm/components/ErrorBoundary.js +39 -1
  70. package/dist/esm/components/ErrorFallback.js +25 -1
  71. package/dist/esm/components/FacebookPixel.js +32 -3
  72. package/dist/esm/components/FooterForPostPurchase.js +31 -1
  73. package/dist/esm/components/GoogleAnalytic.js +64 -5
  74. package/dist/esm/components/TikTokPixel.js +18 -3
  75. package/dist/esm/components/builder/Body.js +33 -0
  76. package/dist/esm/components/builder/Footer.js +151 -0
  77. package/dist/esm/components/builder/Header.js +184 -0
  78. package/dist/esm/components/builder/PopupManager.js +60 -1
  79. package/dist/esm/components/builder/SwitchView.js +181 -0
  80. package/dist/esm/components/builder/Toolbar.js +697 -1
  81. package/dist/esm/components/builder/Toolbox.js +481 -1
  82. package/dist/esm/components/builder/const.js +54 -0
  83. package/dist/esm/components/builder/toolbar/const.js +4 -0
  84. package/dist/esm/components/builder/toolbar/utils/findDOMClosest.js +39 -0
  85. package/dist/esm/components/builder/toolbar/utils/findOverflowParent.js +18 -0
  86. package/dist/esm/components/builder/toolbar/utils/getChildrenByAttrSelector.js +16 -0
  87. package/dist/esm/components/builder/toolbar/utils/getDOMElementParents.js +30 -0
  88. package/dist/esm/components/builder/toolbar/utils/isOverParent.js +14 -0
  89. package/dist/esm/components/builder/toolbar/utils/isOverToolbarPosition.js +10 -0
  90. package/dist/esm/components/builder/toolbar/utils/isSection.js +6 -0
  91. package/dist/esm/components/builder/toolbar/utils/notVisible.js +6 -0
  92. package/dist/esm/components/builder/toolbar/utils/waitForElementToExist.js +25 -0
  93. package/dist/esm/components/image-to-layout/AddSectionImageToLayout.js +147 -1
  94. package/dist/esm/components/image-to-layout/DropElement.js +165 -1
  95. package/dist/esm/components/image-to-layout/ImageToLayout.js +38 -1
  96. package/dist/esm/index.js +35 -1
  97. package/dist/esm/layouts/main.js +27 -1
  98. package/dist/esm/libs/api/get-builder-props.js +44 -1
  99. package/dist/esm/libs/api/get-collection-props.js +66 -1
  100. package/dist/esm/libs/api/get-home-page-props-v2.js +143 -1
  101. package/dist/esm/libs/api/get-home-page-props.js +149 -1
  102. package/dist/esm/libs/api/get-post-purchase-props-preview.js +260 -1
  103. package/dist/esm/libs/api/get-preview-props.js +16 -1
  104. package/dist/esm/libs/api/get-product-props.js +71 -1
  105. package/dist/esm/libs/api/get-static-page-props-preview.js +153 -1
  106. package/dist/esm/libs/api/get-static-page-props-v2.js +162 -1
  107. package/dist/esm/libs/api/get-static-page-props.js +146 -1
  108. package/dist/esm/libs/custom-fonts.js +55 -6
  109. package/dist/esm/libs/fetcher.js +96 -1
  110. package/dist/esm/libs/get-layout.js +11 -1
  111. package/dist/esm/libs/get-storefront-api.js +10 -1
  112. package/dist/esm/libs/getStaticPaths.js +8 -1
  113. package/dist/esm/libs/google-fonts.js +112 -1
  114. package/dist/esm/libs/helpers/check-option-font.js +63 -0
  115. package/dist/esm/libs/helpers/common.js +24 -1
  116. package/dist/esm/libs/helpers/gen-css.js +133 -1
  117. package/dist/esm/libs/helpers/gen-fonts.js +87 -1
  118. package/dist/esm/libs/helpers/generate-manifres.js +3 -1
  119. package/dist/esm/libs/helpers/get-fallback.js +32 -1
  120. package/dist/esm/libs/helpers/normalize.js +103 -1
  121. package/dist/esm/libs/helpers/parse-json.js +13 -1
  122. package/dist/esm/libs/helpers/user-agent.js +5 -1
  123. package/dist/esm/libs/hooks/use-tracking-view.js +41 -1
  124. package/dist/esm/libs/hooks/usePagePreview.js +90 -1
  125. package/dist/esm/libs/parse-html.js +32 -1
  126. package/dist/esm/libs/shopify-cdn-with-google-fonts.js +1843 -1
  127. package/dist/esm/pages/404.js +41 -1
  128. package/dist/esm/pages/500.js +72 -1
  129. package/dist/esm/pages/CollectionGlobalProvider.js +55 -1
  130. package/dist/esm/pages/builder.js +113 -1
  131. package/dist/esm/pages/collection-detail.js +60 -1
  132. package/dist/esm/pages/preview.js +24 -1
  133. package/dist/esm/pages/product-detail.js +65 -1
  134. package/dist/esm/pages/static-v2.js +137 -1
  135. package/dist/esm/pages/static.js +71 -1
  136. package/dist/esm/store/libs-store.js +12 -0
  137. package/dist/types/index.d.ts +50 -34
  138. package/package.json +8 -5
  139. package/dist/cjs/components/Footer.js +0 -1
  140. package/dist/cjs/components/Header.js +0 -1
  141. package/dist/cjs/components/builder/toolbar/Onboarding.js +0 -1
  142. package/dist/esm/components/Footer.js +0 -1
  143. package/dist/esm/components/Header.js +0 -1
  144. package/dist/esm/components/builder/toolbar/Onboarding.js +0 -1
@@ -1 +1,75 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),nextSeo=require("next-seo"),Head=require("next/head"),router=require("next/router");const StaticPage=({components:e,builderData:s,sectionData:t,seo:n,themeStyle:r,fontStyle:i})=>{let a=router.useRouter();return a.isFallback?jsxRuntime.jsx("div",{className:"gp-flex gp-h-full gp-items-center gp-justify-center",children:jsxRuntime.jsxs("div",{className:"gp-flex gp-gap-2",children:[jsxRuntime.jsx("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_alternate] gp-rounded-full gp-bg-slate-800"}),jsxRuntime.jsx("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_200ms_linear_alternate] gp-rounded-full gp-bg-slate-800"}),jsxRuntime.jsx("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_500ms_alternate] gp-rounded-full gp-bg-slate-800"})]})}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(nextSeo.NextSeo,{...n}),jsxRuntime.jsxs(Head,{children:[r&&jsxRuntime.jsx("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:r}}),i&&jsxRuntime.jsx("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:i}})]}),jsxRuntime.jsx(core.PageProvider,{children:jsxRuntime.jsx(core.BuilderComponentProvider,{components:e,children:jsxRuntime.jsx(core.SectionProvider,{data:t,children:jsxRuntime.jsx(jsxRuntime.Fragment,{children:s&&jsxRuntime.jsx(core.BuilderProvider,{state:s,children:jsxRuntime.jsx(core.Render,{uid:"ROOT"})},"body")})})})})]})};exports.default=StaticPage;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var core = require('@gem-sdk/core');
7
+ var nextSeo = require('next-seo');
8
+ var Head = require('next/head');
9
+ var router = require('next/router');
10
+
11
+ const StaticPage = ({ components, builderData, sectionData, seo, themeStyle, fontStyle })=>{
12
+ const router$1 = router.useRouter();
13
+ if (router$1.isFallback) {
14
+ return /*#__PURE__*/ jsxRuntime.jsx("div", {
15
+ className: "gp-flex gp-h-[100vh] gp-items-center gp-justify-center",
16
+ children: /*#__PURE__*/ jsxRuntime.jsxs("div", {
17
+ className: "gp-flex gp-gap-2",
18
+ children: [
19
+ /*#__PURE__*/ jsxRuntime.jsx("span", {
20
+ className: "gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_alternate] gp-rounded-full gp-bg-slate-800"
21
+ }),
22
+ /*#__PURE__*/ jsxRuntime.jsx("span", {
23
+ className: "gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_200ms_linear_alternate] gp-rounded-full gp-bg-slate-800"
24
+ }),
25
+ /*#__PURE__*/ jsxRuntime.jsx("span", {
26
+ className: "gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_500ms_alternate] gp-rounded-full gp-bg-slate-800"
27
+ })
28
+ ]
29
+ })
30
+ });
31
+ }
32
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
33
+ children: [
34
+ /*#__PURE__*/ jsxRuntime.jsx(nextSeo.NextSeo, {
35
+ ...seo
36
+ }),
37
+ /*#__PURE__*/ jsxRuntime.jsxs(Head, {
38
+ children: [
39
+ themeStyle && /*#__PURE__*/ jsxRuntime.jsx("style", {
40
+ "data-id": "global-style",
41
+ type: "text/css",
42
+ dangerouslySetInnerHTML: {
43
+ __html: themeStyle
44
+ }
45
+ }),
46
+ fontStyle && /*#__PURE__*/ jsxRuntime.jsx("style", {
47
+ "data-id": "google-fonts",
48
+ type: "text/css",
49
+ dangerouslySetInnerHTML: {
50
+ __html: fontStyle
51
+ }
52
+ })
53
+ ]
54
+ }),
55
+ /*#__PURE__*/ jsxRuntime.jsx(core.PageProvider, {
56
+ children: /*#__PURE__*/ jsxRuntime.jsx(core.BuilderComponentProvider, {
57
+ components: components,
58
+ children: /*#__PURE__*/ jsxRuntime.jsx(core.SectionProvider, {
59
+ data: sectionData,
60
+ children: /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
61
+ children: builderData && /*#__PURE__*/ jsxRuntime.jsx(core.BuilderProvider, {
62
+ state: builderData,
63
+ children: /*#__PURE__*/ jsxRuntime.jsx(core.Render, {
64
+ uid: "ROOT"
65
+ })
66
+ }, "body")
67
+ })
68
+ })
69
+ })
70
+ })
71
+ ]
72
+ });
73
+ };
74
+
75
+ exports.default = StaticPage;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var zustand = require('zustand');
4
+
5
+ const libsStore = zustand.create((set)=>({
6
+ fontType: 'google',
7
+ changeFontType: (fontType)=>{
8
+ set({
9
+ fontType
10
+ });
11
+ }
12
+ }));
13
+
14
+ exports.libsStore = libsStore;
@@ -1 +1,39 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Component as t}from"react";let initialState={hasError:!1};class ErrorBoundary extends t{state=initialState;static getDerivedStateFromError(r){return{hasError:!0,error:r}}reset=()=>{this.setState(initialState)};componentDidCatch(r,t){this.props.onError?.(r,t)}render(){let{FallbackComponent:t}=this.props;return this.state.hasError?r(t,{error:this.state.error,resetErrorBoundary:this.reset}):this.props.children}}export{ErrorBoundary};
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { Component } from 'react';
4
+
5
+ const initialState = {
6
+ hasError: false
7
+ };
8
+ class ErrorBoundary extends Component {
9
+ state = initialState;
10
+ static getDerivedStateFromError(error) {
11
+ // Update state so the next render will show the fallback UI
12
+ return {
13
+ hasError: true,
14
+ error
15
+ };
16
+ }
17
+ reset = ()=>{
18
+ this.setState(initialState);
19
+ };
20
+ componentDidCatch(error, errorInfo) {
21
+ // You can use your own error logging service here
22
+ this.props.onError?.(error, errorInfo);
23
+ }
24
+ render() {
25
+ const { FallbackComponent } = this.props;
26
+ // Check if the error is thrown
27
+ if (this.state.hasError) {
28
+ // You can render any custom fallback UI
29
+ return /*#__PURE__*/ jsx(FallbackComponent, {
30
+ error: this.state.error,
31
+ resetErrorBoundary: this.reset
32
+ });
33
+ }
34
+ // Return children components in case of no error
35
+ return this.props.children;
36
+ }
37
+ }
38
+
39
+ export { ErrorBoundary };
@@ -1 +1,25 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";let ErrorFallback=({error:r,resetErrorBoundary:p})=>e("div",{role:"alert",className:"gp-flex gp-flex-col gp-items-center gp-gap-2",children:[t("p",{className:"gp-text-center gp-text-2xl",children:"Oops! Something went wrong"}),t("pre",{children:r?.message}),t("button",{onClick:p,className:"gp-inline-flex gp-h-10 gp-items-center gp-justify-center gp-gap-2 gp-rounded gp-bg-[#3C67FF] gp-px-6 gp-text-white active:gp-translate-y-1",children:"Try again"})]});export{ErrorFallback};
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+
4
+ const ErrorFallback = ({ error, resetErrorBoundary })=>{
5
+ return /*#__PURE__*/ jsxs("div", {
6
+ role: "alert",
7
+ className: "gp-flex gp-flex-col gp-items-center gp-gap-2",
8
+ children: [
9
+ /*#__PURE__*/ jsx("p", {
10
+ className: "gp-text-center gp-text-2xl",
11
+ children: "Oops! Something went wrong"
12
+ }),
13
+ /*#__PURE__*/ jsx("pre", {
14
+ children: error?.message
15
+ }),
16
+ /*#__PURE__*/ jsx("button", {
17
+ onClick: resetErrorBoundary,
18
+ className: "gp-inline-flex gp-h-10 gp-items-center gp-justify-center gp-gap-2 gp-rounded gp-bg-[#3C67FF] gp-px-6 gp-text-white active:gp-translate-y-1",
19
+ children: "Try again"
20
+ })
21
+ ]
22
+ });
23
+ };
24
+
25
+ export { ErrorFallback };
@@ -1,4 +1,28 @@
1
- import{jsx as e}from"react/jsx-runtime";import{fpixel as t}from"@gem-sdk/core";import{useRouter as n}from"next/router";import o from"next/script";import{useEffect as r}from"react";let FacebookPixel=({pixelId:a})=>{let s=n();return(r(()=>{let e=()=>{t.pageview()};return s.events.on("routeChangeComplete",e),s.events.on("hashChangeComplete",e),()=>{s.events.off("routeChangeComplete",e),s.events.off("hashChangeComplete",e)}},[s.events]),a)?e(o,{id:"fb-pixel",strategy:"lazyOnload",dangerouslySetInnerHTML:{__html:`
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { fpixel } from '@gem-sdk/core';
4
+ import { usePathname, useSearchParams } from 'next/navigation';
5
+ import Script from 'next/script';
6
+ import { useEffect } from 'react';
7
+
8
+ const FacebookPixel = ({ pixelId })=>{
9
+ const pathName = usePathname();
10
+ const searchParams = useSearchParams();
11
+ useEffect(()=>{
12
+ const handleRouteChange = ()=>{
13
+ fpixel.pageview();
14
+ };
15
+ handleRouteChange();
16
+ }, [
17
+ pathName,
18
+ searchParams
19
+ ]);
20
+ if (!pixelId) return null;
21
+ return /*#__PURE__*/ jsx(Script, {
22
+ id: "fb-pixel",
23
+ strategy: "lazyOnload",
24
+ dangerouslySetInnerHTML: {
25
+ __html: `
2
26
  !function(f,b,e,v,n,t,s)
3
27
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
4
28
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
@@ -7,6 +31,11 @@ import{jsx as e}from"react/jsx-runtime";import{fpixel as t}from"@gem-sdk/core";i
7
31
  t.src=v;s=b.getElementsByTagName(e)[0];
8
32
  s.parentNode.insertBefore(t,s)}(window, document,'script',
9
33
  'https://connect.facebook.net/en_US/fbevents.js');
10
- fbq('init', ${a});
34
+ fbq('init', ${pixelId});
11
35
  fbq('track', 'PageView');
12
- `}}):null};export{FacebookPixel};
36
+ `
37
+ }
38
+ });
39
+ };
40
+
41
+ export { FacebookPixel };
@@ -1 +1,31 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import{cls as t,makeStyleResponsive as p}from"@gem-sdk/core";let defaultMargin={desktop:"40px",tablet:"40px",mobile:"40px"},FooterForPostPurchase=o=>e("div",{className:t("gp-footer-container gp-border-1 gp-group gp-flex gp-justify-center gp-border-y gp-border-[#EEEEEE] gp-bg-white gp-font-sans"),children:e("div",{className:"gp-flex gp-flex-1 gp-items-center gp-justify-between gp-py-6",style:{maxWidth:"var(--g-ct-w, 1200px)",...p("ml",defaultMargin),...p("mr",defaultMargin)},children:r("p",{className:"gp-text-lg",children:["All rights reserved ",o.shopName]})})});export{FooterForPostPurchase as default};
1
+ 'use client';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { cls, makeStyleResponsive } from '@gem-sdk/core';
4
+
5
+ const defaultMargin = {
6
+ desktop: '40px',
7
+ tablet: '40px',
8
+ mobile: '40px'
9
+ };
10
+ const FooterForPostPurchase = (props)=>{
11
+ return /*#__PURE__*/ jsx("div", {
12
+ className: cls('gp-footer-container gp-border-1 gp-group gp-flex gp-justify-center gp-border-y gp-border-[#EEEEEE] gp-bg-white gp-font-sans'),
13
+ children: /*#__PURE__*/ jsx("div", {
14
+ className: "gp-flex gp-flex-1 gp-items-center gp-justify-between gp-py-6",
15
+ style: {
16
+ maxWidth: `var(--g-ct-w, 1200px)`,
17
+ ...makeStyleResponsive('ml', defaultMargin),
18
+ ...makeStyleResponsive('mr', defaultMargin)
19
+ },
20
+ children: /*#__PURE__*/ jsxs("p", {
21
+ className: "gp-text-lg",
22
+ children: [
23
+ "All rights reserved ",
24
+ props.shopName
25
+ ]
26
+ })
27
+ })
28
+ });
29
+ };
30
+
31
+ export { FooterForPostPurchase as default };
@@ -1,12 +1,71 @@
1
- import{jsxs as e,Fragment as t,jsx as a}from"react/jsx-runtime";import{gtag as n}from"@gem-sdk/core";import{useRouter as o}from"next/router";import g from"next/script";import{useEffect as r}from"react";let GoogleAnalytic=({trackingId:l})=>{let i=o();r(()=>{let e=e=>{n.pageview(e,l)};return i.events.on("routeChangeComplete",e),i.events.on("hashChangeComplete",e),()=>{i.events.off("routeChangeComplete",e),i.events.off("hashChangeComplete",e)}},[l,i.events]);let s=()=>{n.pageview(i.pathname,l)};return l?l.startsWith("UA-")?e(t,{children:[a(g,{strategy:"lazyOnload",onReady:s,src:"https://www.google-analytics.com/analytics.js"}),a(g,{id:"google-analytics",strategy:"lazyOnload",dangerouslySetInnerHTML:{__html:`window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
2
- ga('create', '${l}', 'auto');
1
+ 'use client';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { gtag } from '@gem-sdk/core';
4
+ import { useSearchParams, usePathname } from 'next/navigation';
5
+ import Script from 'next/script';
6
+ import { useEffect } from 'react';
7
+
8
+ const GoogleAnalytic = ({ trackingId })=>{
9
+ const searchParams = useSearchParams();
10
+ const pathName = usePathname();
11
+ useEffect(()=>{
12
+ const url = pathName + searchParams.toString();
13
+ const handleRouteChange = (url)=>{
14
+ gtag.pageview(url, trackingId);
15
+ };
16
+ handleRouteChange(url);
17
+ }, [
18
+ trackingId,
19
+ pathName,
20
+ searchParams
21
+ ]);
22
+ const handleOnReady = ()=>{
23
+ gtag.pageview(pathName, trackingId);
24
+ };
25
+ if (!trackingId) return null;
26
+ if (trackingId.startsWith('UA-')) return /*#__PURE__*/ jsxs(Fragment, {
27
+ children: [
28
+ /*#__PURE__*/ jsx(Script, {
29
+ strategy: "lazyOnload",
30
+ onReady: handleOnReady,
31
+ src: "https://www.google-analytics.com/analytics.js"
32
+ }),
33
+ /*#__PURE__*/ jsx(Script, {
34
+ id: "google-analytics",
35
+ strategy: "lazyOnload",
36
+ dangerouslySetInnerHTML: {
37
+ __html: `window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
38
+ ga('create', '${trackingId}', 'auto');
3
39
  ga('require', 'ec');
4
40
  ga('send', 'pageview');
5
- `}})]}):e(t,{children:[a(g,{strategy:"lazyOnload",onReady:s,src:`https://www.googletagmanager.com/gtag/js?id=${l}`}),a(g,{id:"gtag-init",strategy:"lazyOnload",dangerouslySetInnerHTML:{__html:`
41
+ `
42
+ }
43
+ })
44
+ ]
45
+ });
46
+ return /*#__PURE__*/ jsxs(Fragment, {
47
+ children: [
48
+ /*#__PURE__*/ jsx(Script, {
49
+ strategy: "lazyOnload",
50
+ onReady: handleOnReady,
51
+ src: `https://www.googletagmanager.com/gtag/js?id=${trackingId}`
52
+ }),
53
+ /*#__PURE__*/ jsx(Script, {
54
+ id: "gtag-init",
55
+ strategy: "lazyOnload",
56
+ dangerouslySetInnerHTML: {
57
+ __html: `
6
58
  window.dataLayer = window.dataLayer || [];
7
59
  function gtag(){dataLayer.push(arguments);}
8
60
  gtag('js', new Date());
9
- gtag('config', '${l}', {
61
+ gtag('config', '${trackingId}', {
10
62
  page_path: window.location.pathname,
11
63
  });
12
- `}})]}):null};export{GoogleAnalytic};
64
+ `
65
+ }
66
+ })
67
+ ]
68
+ });
69
+ };
70
+
71
+ export { GoogleAnalytic };
@@ -1,7 +1,22 @@
1
- import{jsx as t}from"react/jsx-runtime";import e from"next/script";let TikTokPixel=({pixelId:n})=>n?t(e,{id:"tiktok-pixel",strategy:"lazyOnload",dangerouslySetInnerHTML:{__html:`
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import Script from 'next/script';
4
+
5
+ const TikTokPixel = ({ pixelId })=>{
6
+ if (!pixelId) return null;
7
+ return /*#__PURE__*/ jsx(Script, {
8
+ id: "tiktok-pixel",
9
+ strategy: "lazyOnload",
10
+ dangerouslySetInnerHTML: {
11
+ __html: `
2
12
  !function (w, d, t) {
3
13
  w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};
4
- ttq.load('${n}');
14
+ ttq.load('${pixelId}');
5
15
  ttq.page();
6
16
  }(window, document, 'ttq');
7
- `}}):null;export{TikTokPixel};
17
+ `
18
+ }
19
+ });
20
+ };
21
+
22
+ export { TikTokPixel };
@@ -0,0 +1,33 @@
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useMemo } from 'react';
4
+ import { useInteraction, cls, RenderPreview } from '@gem-sdk/core';
5
+ import CollectionGlobalProvider from '../../pages/CollectionGlobalProvider.js';
6
+
7
+ const Body = ({ pageType, isThemeSectionEditor })=>{
8
+ const { isInteractionMode, isSelectOnPage } = useInteraction();
9
+ const interactionSelectModeClass = useMemo(()=>isSelectOnPage ? 'interaction-select-mode' : '', [
10
+ isSelectOnPage
11
+ ]);
12
+ return /*#__PURE__*/ jsxs("div", {
13
+ id: "storefront",
14
+ className: cls(isThemeSectionEditor ? 'theme-section-editor' : '', pageType === 'POST_PURCHASE' ? 'post-purchase-page' : '', interactionSelectModeClass),
15
+ children: [
16
+ pageType !== 'POST_PURCHASE' && /*#__PURE__*/ jsx("div", {
17
+ className: "gp-w-full gp-h-full gp-fixed gp-left-0 gp-top-0 gp-z-[99999999]",
18
+ style: {
19
+ pointerEvents: isInteractionMode ? 'auto' : 'none'
20
+ }
21
+ }),
22
+ pageType === 'GP_COLLECTION' ? /*#__PURE__*/ jsx(CollectionGlobalProvider, {
23
+ children: /*#__PURE__*/ jsx(RenderPreview, {
24
+ uid: "ROOT"
25
+ })
26
+ }) : /*#__PURE__*/ jsx(RenderPreview, {
27
+ uid: "ROOT"
28
+ })
29
+ ]
30
+ });
31
+ };
32
+
33
+ export { Body as default };
@@ -0,0 +1,151 @@
1
+ 'use client';
2
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
+ import { useShopStore, cls, makeStyleResponsive } from '@gem-sdk/core';
4
+ import { useState, useEffect } from 'react';
5
+
6
+ const defaultMargin = {
7
+ desktop: '16px',
8
+ tablet: '16px',
9
+ mobile: '16px'
10
+ };
11
+ const FOOTER_ON_COLOR = '#E2E2E2';
12
+ const FOOTER_OFF_COLOR = '#F4F4F4';
13
+ const Footer = (props)=>{
14
+ const { pageType, isOriginTemplate, openPageSetting } = props;
15
+ const urlParams = new URLSearchParams(window.location.search);
16
+ const shopName = urlParams.get('storefrontHandle');
17
+ const layoutSetting = useShopStore((s)=>s.layoutSettings);
18
+ const activeFooter = layoutSetting?.showFooter || isOriginTemplate;
19
+ const footerColor = activeFooter ? FOOTER_ON_COLOR : FOOTER_OFF_COLOR;
20
+ const [shouldFixed, setShouldFixed] = useState(false);
21
+ useEffect(()=>{
22
+ const $iframe = parent.document.body.querySelector('.iframe');
23
+ if (!$iframe) return;
24
+ const $storefront = document.body.querySelector('#storefront');
25
+ if (!$storefront) return;
26
+ const headerHeight = 40;
27
+ const footerHeight = 48;
28
+ const iframeHeight = $iframe.clientHeight;
29
+ const comparedHeight = layoutSetting?.showHeader ? iframeHeight - headerHeight - footerHeight : iframeHeight - footerHeight;
30
+ const observer = new ResizeObserver((entries)=>{
31
+ // Handle set fixed footer
32
+ const currentEditingFrameHeight = entries[0]?.target.clientHeight;
33
+ if (currentEditingFrameHeight && comparedHeight) setShouldFixed(currentEditingFrameHeight < comparedHeight);
34
+ });
35
+ observer.observe($storefront);
36
+ return ()=>{
37
+ observer.unobserve($storefront);
38
+ };
39
+ }, [
40
+ layoutSetting
41
+ ]);
42
+ return /*#__PURE__*/ jsx(Fragment, {
43
+ children: pageType === 'POST_PURCHASE' ? /*#__PURE__*/ jsx("div", {
44
+ className: cls('gp-footer-container gp-border-1 gp-group gp-flex gp-justify-center gp-border-y gp-border-[#EEEEEE] gp-bg-white gp-font-sans'),
45
+ children: /*#__PURE__*/ jsx("div", {
46
+ className: "gp-flex gp-flex-1 gp-items-center gp-justify-between gp-py-6",
47
+ style: {
48
+ maxWidth: `var(--g-ct-w, 1200px)`,
49
+ ...makeStyleResponsive('ml', defaultMargin),
50
+ ...makeStyleResponsive('mr', defaultMargin)
51
+ },
52
+ children: /*#__PURE__*/ jsxs("p", {
53
+ className: "gp-text-lg",
54
+ children: [
55
+ "All rights reserved ",
56
+ shopName
57
+ ]
58
+ })
59
+ })
60
+ }) : /*#__PURE__*/ jsx("div", {
61
+ className: cls('gp-footer-container gp-border-1 gp-group gp-flex gp-justify-center gp-border-y gp-border-[#EEEEEE] gp-bg-white gp-font-sans', {
62
+ 'gp-fixed gp-bottom-0 gp-w-full': shouldFixed
63
+ }),
64
+ children: /*#__PURE__*/ jsxs("div", {
65
+ className: "gp-flex gp-h-[40px] gp-flex-1 gp-items-center gp-justify-between",
66
+ style: {
67
+ maxWidth: `var(--g-ct-w)`,
68
+ ...makeStyleResponsive('ml', defaultMargin),
69
+ ...makeStyleResponsive('mr', defaultMargin)
70
+ },
71
+ children: [
72
+ /*#__PURE__*/ jsxs("svg", {
73
+ width: "68",
74
+ height: "8",
75
+ viewBox: "0 0 68 8",
76
+ fill: "none",
77
+ xmlns: "http://www.w3.org/2000/svg",
78
+ children: [
79
+ /*#__PURE__*/ jsx("path", {
80
+ d: "M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4C32 6.20914 30.2091 8 28 8H4C1.79086 8 0 6.20914 0 4Z",
81
+ fill: footerColor
82
+ }),
83
+ /*#__PURE__*/ jsx("path", {
84
+ d: "M36 4C36 1.79086 37.7909 0 40 0H64C66.2091 0 68 1.79086 68 4C68 6.20914 66.2091 8 64 8H40C37.7909 8 36 6.20914 36 4Z",
85
+ fill: footerColor
86
+ })
87
+ ]
88
+ }),
89
+ !isOriginTemplate && /*#__PURE__*/ jsx("button", {
90
+ className: "gp-footer gp-invisible gp-absolute gp-left-[8px] gp-flex gp-h-[24px] gp-cursor-pointer gp-items-center gp-justify-center gp-rounded gp-bg-[#EEEEEE] gp-p-[4px] hover:gp-bg-[#f4f4f4] group-hover:gp-visible",
91
+ onClick: openPageSetting,
92
+ children: /*#__PURE__*/ jsxs("div", {
93
+ className: "gp-gap-2 gp-flex gp-px-1 gp-h-[24px] gp-items-center gp-justify-center gp-leading-5 gp-text-xs gp-font-medium gp-text-[#212121]",
94
+ children: [
95
+ /*#__PURE__*/ jsx("span", {
96
+ children: /*#__PURE__*/ jsxs("svg", {
97
+ width: "14",
98
+ height: "14",
99
+ viewBox: "0 0 14 14",
100
+ fill: "none",
101
+ xmlns: "http://www.w3.org/2000/svg",
102
+ children: [
103
+ /*#__PURE__*/ jsx("path", {
104
+ fillRule: "evenodd",
105
+ clipRule: "evenodd",
106
+ d: "M6.99985 4.08501C5.38983 4.08501 4.08465 5.39019 4.08465 7.00021C4.08465 8.61023 5.38983 9.9154 6.99985 9.9154C8.60987 9.9154 9.91504 8.61023 9.91504 7.00021C9.91504 5.39019 8.60987 4.08501 6.99985 4.08501ZM5.08465 7.00021C5.08465 5.94247 5.94211 5.08501 6.99985 5.08501C8.05758 5.08501 8.91504 5.94247 8.91504 7.00021C8.91504 8.05794 8.05758 8.9154 6.99985 8.9154C5.94211 8.9154 5.08465 8.05794 5.08465 7.00021Z",
107
+ fill: "#212121"
108
+ }),
109
+ /*#__PURE__*/ jsx("path", {
110
+ fillRule: "evenodd",
111
+ clipRule: "evenodd",
112
+ d: "M5.52351 0.00390625C5.28138 0.00390625 5.07405 0.177388 5.03135 0.415715L4.7415 2.03321C4.40346 2.18248 4.08346 2.36419 3.78558 2.57432L2.18557 2.00147C1.95684 1.91958 1.70235 2.01395 1.58232 2.22517L0.122204 4.79451C0.00217064 5.00572 0.0513362 5.27266 0.238747 5.42725L1.50086 6.46836C1.48358 6.64355 1.47474 6.82106 1.47474 7.00047C1.47474 7.17981 1.48357 7.35726 1.50084 7.53238L0.238747 8.57347C0.0513362 8.72806 0.00217064 8.995 0.122203 9.20622L1.58232 11.7756C1.70235 11.9868 1.95684 12.0811 2.18557 11.9993L3.78537 11.4265C4.08332 11.6367 4.40341 11.8185 4.74155 11.9678L5.03135 13.585C5.07405 13.8233 5.28138 13.9968 5.52351 13.9968H8.47647C8.7186 13.9968 8.92593 13.8233 8.96863 13.585L9.25846 11.9676C9.5965 11.8183 9.91649 11.6365 10.2144 11.4264L11.8144 11.9993C12.0431 12.0811 12.2976 11.9868 12.4177 11.7756L13.8778 9.20622C13.9978 8.995 13.9486 8.72806 13.7612 8.57347L12.4988 7.5321C12.516 7.35706 12.5249 7.17971 12.5249 7.00047C12.5249 6.82116 12.516 6.64375 12.4988 6.46864L13.7612 5.42725C13.9486 5.27266 13.9978 5.00572 13.8778 4.79451L12.4177 2.22517C12.2976 2.01395 12.0431 1.91958 11.8144 2.00147L10.2141 2.57441C9.91636 2.36433 9.59645 2.18264 9.25851 2.0334L8.96863 0.415715C8.92593 0.177389 8.7186 0.00390625 8.47647 0.00390625H5.52351ZM5.67747 2.47943L5.94187 1.00391H8.0581L8.32253 2.47958C8.35348 2.6523 8.47271 2.79616 8.63668 2.85863C9.06768 3.02283 9.46674 3.25007 9.82215 3.5288C9.95734 3.63483 10.1375 3.66402 10.2993 3.6061L11.7559 3.08459L12.8007 4.92323L11.6503 5.8722C11.5145 5.98427 11.4476 6.15956 11.4743 6.33366C11.5076 6.55089 11.5249 6.77354 11.5249 7.00047C11.5249 7.22735 11.5076 7.44993 11.4743 7.66711C11.4476 7.8412 11.5145 8.01648 11.6504 8.12855L12.8007 9.07749L11.7559 10.9161L10.2994 10.3947C10.1377 10.3368 9.95752 10.366 9.82233 10.472C9.46686 10.7508 9.06773 10.9781 8.63664 11.1423C8.47267 11.2048 8.35344 11.3487 8.32249 11.5214L8.0581 12.9968H5.94187L5.67752 11.5215C5.64656 11.3488 5.52732 11.2049 5.36333 11.1425C4.93215 10.9782 4.53292 10.7509 4.17738 10.4721C4.04219 10.3661 3.86203 10.3369 3.70027 10.3948L2.24412 10.9161L1.19924 9.07749L2.34929 8.12883C2.48516 8.01675 2.55204 7.84146 2.52535 7.66736C2.49205 7.4501 2.47474 7.22743 2.47474 7.00047C2.47474 6.77345 2.49206 6.55072 2.52538 6.33341C2.55207 6.15931 2.48519 5.984 2.34932 5.87192L1.19924 4.92323L2.24412 3.08459L3.70047 3.60601C3.86221 3.66392 4.04236 3.63474 4.17755 3.52872C4.53304 3.24994 4.93219 3.02269 5.36329 2.85849C5.52728 2.79603 5.64652 2.65216 5.67747 2.47943Z",
113
+ fill: "#212121"
114
+ })
115
+ ]
116
+ })
117
+ }),
118
+ /*#__PURE__*/ jsx("span", {
119
+ children: "Footer"
120
+ })
121
+ ]
122
+ })
123
+ }),
124
+ /*#__PURE__*/ jsxs("svg", {
125
+ width: "104",
126
+ height: "8",
127
+ viewBox: "0 0 104 8",
128
+ fill: "none",
129
+ xmlns: "http://www.w3.org/2000/svg",
130
+ children: [
131
+ /*#__PURE__*/ jsx("path", {
132
+ d: "M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4C32 6.20914 30.2091 8 28 8H4C1.79086 8 0 6.20914 0 4Z",
133
+ fill: footerColor
134
+ }),
135
+ /*#__PURE__*/ jsx("path", {
136
+ d: "M36 4C36 1.79086 37.7909 0 40 0H64C66.2091 0 68 1.79086 68 4C68 6.20914 66.2091 8 64 8H40C37.7909 8 36 6.20914 36 4Z",
137
+ fill: footerColor
138
+ }),
139
+ /*#__PURE__*/ jsx("path", {
140
+ d: "M72 4C72 1.79086 73.7909 0 76 0H100C102.209 0 104 1.79086 104 4C104 6.20914 102.209 8 100 8H76C73.7909 8 72 6.20914 72 4Z",
141
+ fill: footerColor
142
+ })
143
+ ]
144
+ })
145
+ ]
146
+ })
147
+ })
148
+ });
149
+ };
150
+
151
+ export { Footer as default };