@gem-sdk/core 1.41.0-dev.29 → 1.41.0-dev.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/ai-generator/AIContentGenerator.js +13 -5
- package/dist/cjs/components/ai-generator/AIGenContentLoading.js +13 -9
- package/dist/cjs/components/ai-generator/hooks/useFlipPopup.js +36 -6
- package/dist/cjs/contexts/ArticleContext.js +39 -0
- package/dist/cjs/contexts/ArticleListContext.js +32 -0
- package/dist/cjs/hooks/articles/useArticlesQuery.js +152 -0
- package/dist/cjs/index.js +9 -0
- package/dist/esm/components/ai-generator/AIContentGenerator.js +13 -5
- package/dist/esm/components/ai-generator/AIGenContentLoading.js +14 -10
- package/dist/esm/components/ai-generator/hooks/useFlipPopup.js +36 -6
- package/dist/esm/contexts/ArticleContext.js +36 -0
- package/dist/esm/contexts/ArticleListContext.js +28 -0
- package/dist/esm/hooks/articles/useArticlesQuery.js +149 -0
- package/dist/esm/index.js +3 -0
- package/dist/types/index.d.ts +112 -11
- package/package.json +1 -1
|
@@ -18,9 +18,11 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
18
18
|
const [isShowMore, setIsShowMore] = react.useState(false);
|
|
19
19
|
const genTool = react.useRef(null);
|
|
20
20
|
const genPopup = react.useRef(null);
|
|
21
|
-
const
|
|
21
|
+
const genPopupHeader = react.useRef(null);
|
|
22
|
+
const { popupPositionX, popupPositionY, isValidating: isValidatingFlipPopup, maxHeight: popupMaxHeight } = useFlipPopup.useFlipPopup(isShowPopup, {
|
|
22
23
|
genTool,
|
|
23
|
-
genPopup
|
|
24
|
+
genPopup,
|
|
25
|
+
genPopupHeader
|
|
24
26
|
});
|
|
25
27
|
const { isGenerating, onGenerate, onOpenProductElementSettings } = useListenEventGenerate.useListenEventGenerate({
|
|
26
28
|
uid: props.uid,
|
|
@@ -105,11 +107,12 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
105
107
|
'gp-top-8': popupPositionY === 'top',
|
|
106
108
|
'gp-bottom-8': popupPositionY === 'bottom',
|
|
107
109
|
'!gp-visible': !isValidatingFlipPopup
|
|
108
|
-
}, 'gp-absolute gp-invisible gp-rounded-lg gp-bg-[#151515] gp-
|
|
110
|
+
}, 'gp-absolute gp-invisible gp-rounded-lg gp-bg-[#151515] gp-w-[312px] !gp-max-w-[312px] !gp-cursor-default'),
|
|
109
111
|
ref: genPopup,
|
|
110
112
|
children: [
|
|
111
113
|
/*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
112
|
-
className: "gp-flex gp-items-center gp-justify-between gp-
|
|
114
|
+
className: "gp-flex gp-items-center gp-justify-between gp-px-4 gp-py-[10px]",
|
|
115
|
+
ref: genPopupHeader,
|
|
113
116
|
children: [
|
|
114
117
|
/*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
115
118
|
className: "gp-font-medium gp-text-sm",
|
|
@@ -123,7 +126,12 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
123
126
|
]
|
|
124
127
|
}),
|
|
125
128
|
/*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
126
|
-
className:
|
|
129
|
+
className: classNames({
|
|
130
|
+
'gp-overflow-auto': popupMaxHeight
|
|
131
|
+
}, 'gp-pt-2 gp-pb-4 gp-text-left gp-px-4 scrollbar:gp-w-1 scrollbar-thumb:gp-bg-[#999] scrollbar-thumb:gp-rounded-xl'),
|
|
132
|
+
style: {
|
|
133
|
+
maxHeight: popupMaxHeight ? `${popupMaxHeight}px` : 'auto'
|
|
134
|
+
},
|
|
127
135
|
children: [
|
|
128
136
|
/*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
129
137
|
className: "gp-mb-4",
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var react = require('react');
|
|
5
|
+
var AIIcon = require('./icons/AIIcon.js');
|
|
5
6
|
|
|
6
7
|
const AIGenContentLoading = ({ ...props })=>{
|
|
7
8
|
const [isGenerating, setIsGenerating] = react.useState(false);
|
|
@@ -42,15 +43,18 @@ const AIGenContentLoading = ({ ...props })=>{
|
|
|
42
43
|
}, [
|
|
43
44
|
onGenerateContentStatus
|
|
44
45
|
]);
|
|
45
|
-
return isGenerating ? /*#__PURE__*/ jsxRuntime.
|
|
46
|
-
className: "gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full gp-bg-white gp-bg-opacity-70 gp-flex gp-justify-center gp-items-center gp-z-100",
|
|
47
|
-
children:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
return isGenerating ? /*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
47
|
+
className: "gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full gp-bg-white gp-bg-opacity-70 gp-flex gp-justify-center gp-items-center gp-z-100 gp-gap-2",
|
|
48
|
+
children: [
|
|
49
|
+
/*#__PURE__*/ jsxRuntime.jsx(AIIcon.AIIcon, {}),
|
|
50
|
+
/*#__PURE__*/ jsxRuntime.jsxs("span", {
|
|
51
|
+
className: "gp-font-medium",
|
|
52
|
+
children: [
|
|
53
|
+
"Generating",
|
|
54
|
+
Array.from(Array(numDots).keys()).map(()=>'.')
|
|
55
|
+
]
|
|
56
|
+
})
|
|
57
|
+
]
|
|
54
58
|
}) : null;
|
|
55
59
|
};
|
|
56
60
|
|
|
@@ -3,10 +3,38 @@
|
|
|
3
3
|
var react = require('react');
|
|
4
4
|
|
|
5
5
|
const useFlipPopup = (isShowPopup, dom)=>{
|
|
6
|
-
const { genTool, genPopup } = dom;
|
|
6
|
+
const { genTool, genPopup, genPopupHeader } = dom;
|
|
7
7
|
const [popupPositionY, setPopupPositionY] = react.useState('top');
|
|
8
8
|
const [popupPositionX, setPopupPositionX] = react.useState('left');
|
|
9
|
+
const [maxHeight, setMaxHeight] = react.useState(null);
|
|
9
10
|
const [isValidating, setIsValidating] = react.useState(true);
|
|
11
|
+
const calculateMaxHeight = react.useCallback((popupPositionY)=>{
|
|
12
|
+
const parentOverflow = genTool.current?.closest("[class~='gp-overflow-hidden']");
|
|
13
|
+
if (!parentOverflow || !genTool.current) {
|
|
14
|
+
setMaxHeight(null);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const parentOverflowPos = parentOverflow.getBoundingClientRect();
|
|
18
|
+
const genToolPos = genTool.current.getBoundingClientRect();
|
|
19
|
+
const genToolHeaderHeight = genPopupHeader.current?.getBoundingClientRect().height || 0;
|
|
20
|
+
const DISTANCE = 8;
|
|
21
|
+
if (popupPositionY === 'top') {
|
|
22
|
+
const maxHeight = Math.max(parentOverflowPos.bottom - genToolPos.bottom - genToolHeaderHeight - DISTANCE, 0);
|
|
23
|
+
setMaxHeight(maxHeight);
|
|
24
|
+
} else {
|
|
25
|
+
const maxHeight = Math.max(genToolPos.top - parentOverflowPos.top - genToolHeaderHeight - DISTANCE, 0);
|
|
26
|
+
setMaxHeight(maxHeight);
|
|
27
|
+
}
|
|
28
|
+
}, [
|
|
29
|
+
genTool,
|
|
30
|
+
genPopupHeader
|
|
31
|
+
]);
|
|
32
|
+
const handleChangePopupPositionY = react.useCallback((posY)=>{
|
|
33
|
+
setPopupPositionY(posY);
|
|
34
|
+
calculateMaxHeight(posY);
|
|
35
|
+
}, [
|
|
36
|
+
calculateMaxHeight
|
|
37
|
+
]);
|
|
10
38
|
const calculatePopupPositionY = react.useCallback(()=>{
|
|
11
39
|
if (!genTool.current || !genPopup.current) return;
|
|
12
40
|
const viewHeight = window.innerHeight;
|
|
@@ -16,21 +44,22 @@ const useFlipPopup = (isShowPopup, dom)=>{
|
|
|
16
44
|
const genPopupHeight = genPopup.current?.getBoundingClientRect().height;
|
|
17
45
|
const MIN_DISTANCE = 50;
|
|
18
46
|
if (scrollTop + toolPos.top + genPopupHeight >= scrollHeight - MIN_DISTANCE) {
|
|
19
|
-
|
|
47
|
+
handleChangePopupPositionY('bottom');
|
|
20
48
|
return;
|
|
21
49
|
}
|
|
22
50
|
if (toolPos.bottom + genPopupHeight > viewHeight) {
|
|
23
51
|
if (toolPos.top - genPopupHeight < 0) {
|
|
24
|
-
|
|
52
|
+
handleChangePopupPositionY('top');
|
|
25
53
|
return;
|
|
26
54
|
}
|
|
27
|
-
|
|
55
|
+
handleChangePopupPositionY('bottom');
|
|
28
56
|
return;
|
|
29
57
|
}
|
|
30
|
-
|
|
58
|
+
handleChangePopupPositionY('top');
|
|
31
59
|
}, [
|
|
32
60
|
genPopup,
|
|
33
|
-
genTool
|
|
61
|
+
genTool,
|
|
62
|
+
handleChangePopupPositionY
|
|
34
63
|
]);
|
|
35
64
|
const calculatePopupPositionX = react.useCallback(()=>{
|
|
36
65
|
if (!genTool.current || !genPopup.current) return;
|
|
@@ -62,6 +91,7 @@ const useFlipPopup = (isShowPopup, dom)=>{
|
|
|
62
91
|
]);
|
|
63
92
|
return {
|
|
64
93
|
isValidating,
|
|
94
|
+
maxHeight,
|
|
65
95
|
popupPositionY,
|
|
66
96
|
popupPositionX
|
|
67
97
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var zustand = require('zustand');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
// const { Provider, useStore } = createContext<StoreApi<ProductContextProps>>();
|
|
8
|
+
const ArticleContext = /*#__PURE__*/ react.createContext(null);
|
|
9
|
+
const createArticleStoreProvider = (data)=>zustand.createStore(()=>({
|
|
10
|
+
...data
|
|
11
|
+
}));
|
|
12
|
+
const ArticleProvider = ({ children, article })=>{
|
|
13
|
+
const uniqueId = react.useId();
|
|
14
|
+
const store = react.useMemo(()=>{
|
|
15
|
+
return createArticleStoreProvider({
|
|
16
|
+
article,
|
|
17
|
+
uniqueId
|
|
18
|
+
});
|
|
19
|
+
}, [
|
|
20
|
+
article,
|
|
21
|
+
uniqueId
|
|
22
|
+
]);
|
|
23
|
+
return /*#__PURE__*/ jsxRuntime.jsx(ArticleContext.Provider, {
|
|
24
|
+
value: store,
|
|
25
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
26
|
+
children: children
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const useArticleStore = (selector, equalityFn)=>{
|
|
31
|
+
const store = react.useContext(ArticleContext);
|
|
32
|
+
if (!store) {
|
|
33
|
+
throw new Error('Element of article must be used inside a Article');
|
|
34
|
+
}
|
|
35
|
+
return zustand.useStore(store, selector, equalityFn);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.ArticleProvider = ArticleProvider;
|
|
39
|
+
exports.useArticleStore = useArticleStore;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var zustand = require('zustand');
|
|
6
|
+
|
|
7
|
+
const ArticleListContext = /*#__PURE__*/ react.createContext(null);
|
|
8
|
+
const createArticleListProvider = (data)=>zustand.createStore(()=>({
|
|
9
|
+
...data
|
|
10
|
+
}));
|
|
11
|
+
const ArticleListProvider = ({ articles, blogs, children, styles, settings })=>{
|
|
12
|
+
return /*#__PURE__*/ jsxRuntime.jsx(ArticleListContext.Provider, {
|
|
13
|
+
value: createArticleListProvider({
|
|
14
|
+
articles,
|
|
15
|
+
styles,
|
|
16
|
+
settings,
|
|
17
|
+
blogs
|
|
18
|
+
}),
|
|
19
|
+
children: children
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
const useArticleListStore = (selector, equalityFn)=>{
|
|
23
|
+
const store = react.useContext(ArticleListContext);
|
|
24
|
+
if (!store) {
|
|
25
|
+
throw new Error('useArticleListStore must be used within a useArticleListStore');
|
|
26
|
+
}
|
|
27
|
+
return zustand.useStore(store, selector, equalityFn);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.ArticleListContext = ArticleListContext;
|
|
31
|
+
exports.ArticleListProvider = ArticleListProvider;
|
|
32
|
+
exports.useArticleListStore = useArticleListStore;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const mock = [
|
|
4
|
+
{
|
|
5
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592066740457',
|
|
6
|
+
id: 592066740457,
|
|
7
|
+
title: 'Blog post might appear in a search engine listing',
|
|
8
|
+
created_at: '2024-05-09T04:06:12-04:00',
|
|
9
|
+
body_html: '<span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span>',
|
|
10
|
+
blog_id: 91970044137,
|
|
11
|
+
author: 'Dev Team',
|
|
12
|
+
user_id: 90371653865,
|
|
13
|
+
published_at: '2024-05-09T04:06:12-04:00',
|
|
14
|
+
updated_at: '2024-05-09T04:06:13-04:00',
|
|
15
|
+
summary_html: '',
|
|
16
|
+
template_suffix: '',
|
|
17
|
+
handle: 'blog-post-might-appear-in-a-search-engine-listing',
|
|
18
|
+
tags: 'vintage',
|
|
19
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592066740457',
|
|
20
|
+
image: {
|
|
21
|
+
created_at: '2024-05-09T04:06:12-04:00',
|
|
22
|
+
alt: '',
|
|
23
|
+
width: 1073,
|
|
24
|
+
height: 719,
|
|
25
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_2.jpg?v=1715241973'
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592066707689',
|
|
30
|
+
id: 592066707689,
|
|
31
|
+
title: 'ar on your home page or blog.',
|
|
32
|
+
created_at: '2024-05-09T04:05:26-04:00',
|
|
33
|
+
body_html: '<span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span>',
|
|
34
|
+
blog_id: 91970044137,
|
|
35
|
+
author: 'Dev Team',
|
|
36
|
+
user_id: 90371653865,
|
|
37
|
+
published_at: '2024-05-09T04:05:25-04:00',
|
|
38
|
+
updated_at: '2024-05-09T05:35:29-04:00',
|
|
39
|
+
summary_html: '',
|
|
40
|
+
template_suffix: '',
|
|
41
|
+
handle: 'ar-on-your-home-page-or-blog',
|
|
42
|
+
tags: 'cotton, vintage',
|
|
43
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592066707689',
|
|
44
|
+
image: {
|
|
45
|
+
created_at: '2024-05-09T04:05:26-04:00',
|
|
46
|
+
alt: '',
|
|
47
|
+
width: 1080,
|
|
48
|
+
height: 719,
|
|
49
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_1.jpg?v=1715241926'
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592066674921',
|
|
54
|
+
id: 592066674921,
|
|
55
|
+
title: 'Add a summary of the post.',
|
|
56
|
+
created_at: '2024-05-09T04:04:44-04:00',
|
|
57
|
+
body_html: '<span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span>',
|
|
58
|
+
blog_id: 91970044137,
|
|
59
|
+
author: 'Dev Team',
|
|
60
|
+
user_id: 90371653865,
|
|
61
|
+
published_at: '2024-05-09T04:04:44-04:00',
|
|
62
|
+
updated_at: '2024-05-09T04:04:45-04:00',
|
|
63
|
+
summary_html: '',
|
|
64
|
+
template_suffix: '',
|
|
65
|
+
handle: 'add-a-summary-of-the-post',
|
|
66
|
+
tags: '',
|
|
67
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592066674921',
|
|
68
|
+
image: {
|
|
69
|
+
created_at: '2024-05-09T04:04:44-04:00',
|
|
70
|
+
alt: '',
|
|
71
|
+
width: 1086,
|
|
72
|
+
height: 718,
|
|
73
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_7.jpg?v=1715241885'
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592058777833',
|
|
78
|
+
id: 592058777833,
|
|
79
|
+
title: 'Article Page - May 7, 10:47:14',
|
|
80
|
+
created_at: '2024-05-06T23:47:59-04:00',
|
|
81
|
+
body_html: '<h2>\n<span>Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span>\n</h2>',
|
|
82
|
+
blog_id: 91970044137,
|
|
83
|
+
author: 'GemPages',
|
|
84
|
+
user_id: null,
|
|
85
|
+
published_at: '2024-05-06T23:47:59-04:00',
|
|
86
|
+
updated_at: '2024-05-09T04:06:48-04:00',
|
|
87
|
+
summary_html: '',
|
|
88
|
+
template_suffix: 'gp-template-512584275137135821',
|
|
89
|
+
handle: 'article-page-may-7-10-47-14',
|
|
90
|
+
tags: 'vintage',
|
|
91
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592058777833',
|
|
92
|
+
image: {
|
|
93
|
+
created_at: '2024-05-09T04:06:41-04:00',
|
|
94
|
+
alt: '',
|
|
95
|
+
width: 578,
|
|
96
|
+
height: 585,
|
|
97
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_3.png?v=1715242002'
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592058679529',
|
|
102
|
+
id: 592058679529,
|
|
103
|
+
title: 'Blog about your latest products or deals',
|
|
104
|
+
created_at: '2024-05-06T22:36:55-04:00',
|
|
105
|
+
body_html: '<span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span>',
|
|
106
|
+
blog_id: 91970044137,
|
|
107
|
+
author: 'Dev Team',
|
|
108
|
+
user_id: 90371653865,
|
|
109
|
+
published_at: '2024-05-06T22:36:54-04:00',
|
|
110
|
+
updated_at: '2024-05-09T03:46:39-04:00',
|
|
111
|
+
summary_html: '<span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span>',
|
|
112
|
+
template_suffix: 'gp-template-512584275137135821',
|
|
113
|
+
handle: 'blog-about-your-latest-products-or-deals',
|
|
114
|
+
tags: '',
|
|
115
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592058679529',
|
|
116
|
+
image: {
|
|
117
|
+
created_at: '2024-05-06T22:36:55-04:00',
|
|
118
|
+
alt: '',
|
|
119
|
+
width: 497,
|
|
120
|
+
height: 618,
|
|
121
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_3.jpg?v=1715049415'
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
];
|
|
125
|
+
const useArticlesQuery = ()=>{
|
|
126
|
+
return mock;
|
|
127
|
+
};
|
|
128
|
+
const useBlogsQuery = ()=>{
|
|
129
|
+
return {
|
|
130
|
+
blogs: {
|
|
131
|
+
edges: [
|
|
132
|
+
{
|
|
133
|
+
node: {
|
|
134
|
+
id: '511006979737518962',
|
|
135
|
+
title: 'News',
|
|
136
|
+
baseID: 'gid://shopify/OnlineStoreBlog/91970044137',
|
|
137
|
+
tags: [],
|
|
138
|
+
handle: 'news',
|
|
139
|
+
descriptionMeta: '',
|
|
140
|
+
description: '',
|
|
141
|
+
titleMeta: '',
|
|
142
|
+
templateSuffix: '',
|
|
143
|
+
platform: 'SHOPIFY'
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
exports.useArticlesQuery = useArticlesQuery;
|
|
152
|
+
exports.useBlogsQuery = useBlogsQuery;
|
package/dist/cjs/index.js
CHANGED
|
@@ -16,6 +16,8 @@ var ShopContext = require('./contexts/ShopContext.js');
|
|
|
16
16
|
var PageContext = require('./contexts/PageContext.js');
|
|
17
17
|
var CollectionContext = require('./contexts/CollectionContext.js');
|
|
18
18
|
var ModalContext = require('./contexts/ModalContext.js');
|
|
19
|
+
var ArticleListContext = require('./contexts/ArticleListContext.js');
|
|
20
|
+
var ArticleContext = require('./contexts/ArticleContext.js');
|
|
19
21
|
var pageViewUp_generated = require('./graphql/mutations/page-view-up.generated.js');
|
|
20
22
|
var collectionDetailFilter_generated = require('./graphql/queries/collection-detail-filter.generated.js');
|
|
21
23
|
var collection_generated = require('./graphql/queries/collection.generated.js');
|
|
@@ -89,6 +91,7 @@ var useIsomorphicLayoutEffect = require('./hooks/useIsomorphicLayoutEffect.js');
|
|
|
89
91
|
var useLoadScript = require('./hooks/useLoadScript.js');
|
|
90
92
|
var useMoney = require('./hooks/useMoney.js');
|
|
91
93
|
var usePrevious = require('./hooks/usePrevious.js');
|
|
94
|
+
var useArticlesQuery = require('./hooks/articles/useArticlesQuery.js');
|
|
92
95
|
var useProduct = require('./hooks/useProduct.js');
|
|
93
96
|
var useProductList = require('./hooks/useProductList.js');
|
|
94
97
|
var useSuspenseFetch = require('./hooks/useSuspenseFetch.js');
|
|
@@ -136,6 +139,10 @@ exports.CollectionProvider = CollectionContext.CollectionProvider;
|
|
|
136
139
|
exports.useCollectionStore = CollectionContext.useCollectionStore;
|
|
137
140
|
exports.ModalProvider = ModalContext.ModalProvider;
|
|
138
141
|
exports.useModalStore = ModalContext.useModalStore;
|
|
142
|
+
exports.ArticleListProvider = ArticleListContext.ArticleListProvider;
|
|
143
|
+
exports.useArticleListStore = ArticleListContext.useArticleListStore;
|
|
144
|
+
exports.ArticleProvider = ArticleContext.ArticleProvider;
|
|
145
|
+
exports.useArticleStore = ArticleContext.useArticleStore;
|
|
139
146
|
exports.PageViewUpDocument = pageViewUp_generated.PageViewUpDocument;
|
|
140
147
|
exports.CollectionDetailFilterDocument = collectionDetailFilter_generated.CollectionDetailFilterDocument;
|
|
141
148
|
exports.CollectionDocument = collection_generated.CollectionDocument;
|
|
@@ -319,6 +326,8 @@ exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect.default;
|
|
|
319
326
|
exports.useLoadScript = useLoadScript.default;
|
|
320
327
|
exports.useMoney = useMoney.default;
|
|
321
328
|
exports.usePrevious = usePrevious.usePrevious;
|
|
329
|
+
exports.useArticlesQuery = useArticlesQuery.useArticlesQuery;
|
|
330
|
+
exports.useBlogsQuery = useArticlesQuery.useBlogsQuery;
|
|
322
331
|
exports.useCheckAvailableVariantInStock = useProduct.useCheckAvailableVariantInStock;
|
|
323
332
|
exports.useCurrentVariant = useProduct.useCurrentVariant;
|
|
324
333
|
exports.useCurrentVariantInStock = useProduct.useCurrentVariantInStock;
|
|
@@ -16,9 +16,11 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
16
16
|
const [isShowMore, setIsShowMore] = useState(false);
|
|
17
17
|
const genTool = useRef(null);
|
|
18
18
|
const genPopup = useRef(null);
|
|
19
|
-
const
|
|
19
|
+
const genPopupHeader = useRef(null);
|
|
20
|
+
const { popupPositionX, popupPositionY, isValidating: isValidatingFlipPopup, maxHeight: popupMaxHeight } = useFlipPopup(isShowPopup, {
|
|
20
21
|
genTool,
|
|
21
|
-
genPopup
|
|
22
|
+
genPopup,
|
|
23
|
+
genPopupHeader
|
|
22
24
|
});
|
|
23
25
|
const { isGenerating, onGenerate, onOpenProductElementSettings } = useListenEventGenerate({
|
|
24
26
|
uid: props.uid,
|
|
@@ -103,11 +105,12 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
103
105
|
'gp-top-8': popupPositionY === 'top',
|
|
104
106
|
'gp-bottom-8': popupPositionY === 'bottom',
|
|
105
107
|
'!gp-visible': !isValidatingFlipPopup
|
|
106
|
-
}, 'gp-absolute gp-invisible gp-rounded-lg gp-bg-[#151515] gp-
|
|
108
|
+
}, 'gp-absolute gp-invisible gp-rounded-lg gp-bg-[#151515] gp-w-[312px] !gp-max-w-[312px] !gp-cursor-default'),
|
|
107
109
|
ref: genPopup,
|
|
108
110
|
children: [
|
|
109
111
|
/*#__PURE__*/ jsxs("div", {
|
|
110
|
-
className: "gp-flex gp-items-center gp-justify-between gp-
|
|
112
|
+
className: "gp-flex gp-items-center gp-justify-between gp-px-4 gp-py-[10px]",
|
|
113
|
+
ref: genPopupHeader,
|
|
111
114
|
children: [
|
|
112
115
|
/*#__PURE__*/ jsx("span", {
|
|
113
116
|
className: "gp-font-medium gp-text-sm",
|
|
@@ -121,7 +124,12 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
121
124
|
]
|
|
122
125
|
}),
|
|
123
126
|
/*#__PURE__*/ jsxs("div", {
|
|
124
|
-
className:
|
|
127
|
+
className: classNames({
|
|
128
|
+
'gp-overflow-auto': popupMaxHeight
|
|
129
|
+
}, 'gp-pt-2 gp-pb-4 gp-text-left gp-px-4 scrollbar:gp-w-1 scrollbar-thumb:gp-bg-[#999] scrollbar-thumb:gp-rounded-xl'),
|
|
130
|
+
style: {
|
|
131
|
+
maxHeight: popupMaxHeight ? `${popupMaxHeight}px` : 'auto'
|
|
132
|
+
},
|
|
125
133
|
children: [
|
|
126
134
|
/*#__PURE__*/ jsx("div", {
|
|
127
135
|
className: "gp-mb-4",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
3
|
+
import { AIIcon } from './icons/AIIcon.js';
|
|
3
4
|
|
|
4
5
|
const AIGenContentLoading = ({ ...props })=>{
|
|
5
6
|
const [isGenerating, setIsGenerating] = useState(false);
|
|
@@ -40,15 +41,18 @@ const AIGenContentLoading = ({ ...props })=>{
|
|
|
40
41
|
}, [
|
|
41
42
|
onGenerateContentStatus
|
|
42
43
|
]);
|
|
43
|
-
return isGenerating ? /*#__PURE__*/
|
|
44
|
-
className: "gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full gp-bg-white gp-bg-opacity-70 gp-flex gp-justify-center gp-items-center gp-z-100",
|
|
45
|
-
children:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
return isGenerating ? /*#__PURE__*/ jsxs("div", {
|
|
45
|
+
className: "gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full gp-bg-white gp-bg-opacity-70 gp-flex gp-justify-center gp-items-center gp-z-100 gp-gap-2",
|
|
46
|
+
children: [
|
|
47
|
+
/*#__PURE__*/ jsx(AIIcon, {}),
|
|
48
|
+
/*#__PURE__*/ jsxs("span", {
|
|
49
|
+
className: "gp-font-medium",
|
|
50
|
+
children: [
|
|
51
|
+
"Generating",
|
|
52
|
+
Array.from(Array(numDots).keys()).map(()=>'.')
|
|
53
|
+
]
|
|
54
|
+
})
|
|
55
|
+
]
|
|
52
56
|
}) : null;
|
|
53
57
|
};
|
|
54
58
|
|
|
@@ -1,10 +1,38 @@
|
|
|
1
1
|
import { useState, useCallback, useEffect } from 'react';
|
|
2
2
|
|
|
3
3
|
const useFlipPopup = (isShowPopup, dom)=>{
|
|
4
|
-
const { genTool, genPopup } = dom;
|
|
4
|
+
const { genTool, genPopup, genPopupHeader } = dom;
|
|
5
5
|
const [popupPositionY, setPopupPositionY] = useState('top');
|
|
6
6
|
const [popupPositionX, setPopupPositionX] = useState('left');
|
|
7
|
+
const [maxHeight, setMaxHeight] = useState(null);
|
|
7
8
|
const [isValidating, setIsValidating] = useState(true);
|
|
9
|
+
const calculateMaxHeight = useCallback((popupPositionY)=>{
|
|
10
|
+
const parentOverflow = genTool.current?.closest("[class~='gp-overflow-hidden']");
|
|
11
|
+
if (!parentOverflow || !genTool.current) {
|
|
12
|
+
setMaxHeight(null);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const parentOverflowPos = parentOverflow.getBoundingClientRect();
|
|
16
|
+
const genToolPos = genTool.current.getBoundingClientRect();
|
|
17
|
+
const genToolHeaderHeight = genPopupHeader.current?.getBoundingClientRect().height || 0;
|
|
18
|
+
const DISTANCE = 8;
|
|
19
|
+
if (popupPositionY === 'top') {
|
|
20
|
+
const maxHeight = Math.max(parentOverflowPos.bottom - genToolPos.bottom - genToolHeaderHeight - DISTANCE, 0);
|
|
21
|
+
setMaxHeight(maxHeight);
|
|
22
|
+
} else {
|
|
23
|
+
const maxHeight = Math.max(genToolPos.top - parentOverflowPos.top - genToolHeaderHeight - DISTANCE, 0);
|
|
24
|
+
setMaxHeight(maxHeight);
|
|
25
|
+
}
|
|
26
|
+
}, [
|
|
27
|
+
genTool,
|
|
28
|
+
genPopupHeader
|
|
29
|
+
]);
|
|
30
|
+
const handleChangePopupPositionY = useCallback((posY)=>{
|
|
31
|
+
setPopupPositionY(posY);
|
|
32
|
+
calculateMaxHeight(posY);
|
|
33
|
+
}, [
|
|
34
|
+
calculateMaxHeight
|
|
35
|
+
]);
|
|
8
36
|
const calculatePopupPositionY = useCallback(()=>{
|
|
9
37
|
if (!genTool.current || !genPopup.current) return;
|
|
10
38
|
const viewHeight = window.innerHeight;
|
|
@@ -14,21 +42,22 @@ const useFlipPopup = (isShowPopup, dom)=>{
|
|
|
14
42
|
const genPopupHeight = genPopup.current?.getBoundingClientRect().height;
|
|
15
43
|
const MIN_DISTANCE = 50;
|
|
16
44
|
if (scrollTop + toolPos.top + genPopupHeight >= scrollHeight - MIN_DISTANCE) {
|
|
17
|
-
|
|
45
|
+
handleChangePopupPositionY('bottom');
|
|
18
46
|
return;
|
|
19
47
|
}
|
|
20
48
|
if (toolPos.bottom + genPopupHeight > viewHeight) {
|
|
21
49
|
if (toolPos.top - genPopupHeight < 0) {
|
|
22
|
-
|
|
50
|
+
handleChangePopupPositionY('top');
|
|
23
51
|
return;
|
|
24
52
|
}
|
|
25
|
-
|
|
53
|
+
handleChangePopupPositionY('bottom');
|
|
26
54
|
return;
|
|
27
55
|
}
|
|
28
|
-
|
|
56
|
+
handleChangePopupPositionY('top');
|
|
29
57
|
}, [
|
|
30
58
|
genPopup,
|
|
31
|
-
genTool
|
|
59
|
+
genTool,
|
|
60
|
+
handleChangePopupPositionY
|
|
32
61
|
]);
|
|
33
62
|
const calculatePopupPositionX = useCallback(()=>{
|
|
34
63
|
if (!genTool.current || !genPopup.current) return;
|
|
@@ -60,6 +89,7 @@ const useFlipPopup = (isShowPopup, dom)=>{
|
|
|
60
89
|
]);
|
|
61
90
|
return {
|
|
62
91
|
isValidating,
|
|
92
|
+
maxHeight,
|
|
63
93
|
popupPositionY,
|
|
64
94
|
popupPositionX
|
|
65
95
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useStore, createStore } from 'zustand';
|
|
3
|
+
import { useId, useMemo, useContext, createContext } from 'react';
|
|
4
|
+
|
|
5
|
+
// const { Provider, useStore } = createContext<StoreApi<ProductContextProps>>();
|
|
6
|
+
const ArticleContext = /*#__PURE__*/ createContext(null);
|
|
7
|
+
const createArticleStoreProvider = (data)=>createStore(()=>({
|
|
8
|
+
...data
|
|
9
|
+
}));
|
|
10
|
+
const ArticleProvider = ({ children, article })=>{
|
|
11
|
+
const uniqueId = useId();
|
|
12
|
+
const store = useMemo(()=>{
|
|
13
|
+
return createArticleStoreProvider({
|
|
14
|
+
article,
|
|
15
|
+
uniqueId
|
|
16
|
+
});
|
|
17
|
+
}, [
|
|
18
|
+
article,
|
|
19
|
+
uniqueId
|
|
20
|
+
]);
|
|
21
|
+
return /*#__PURE__*/ jsx(ArticleContext.Provider, {
|
|
22
|
+
value: store,
|
|
23
|
+
children: /*#__PURE__*/ jsx(Fragment, {
|
|
24
|
+
children: children
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const useArticleStore = (selector, equalityFn)=>{
|
|
29
|
+
const store = useContext(ArticleContext);
|
|
30
|
+
if (!store) {
|
|
31
|
+
throw new Error('Element of article must be used inside a Article');
|
|
32
|
+
}
|
|
33
|
+
return useStore(store, selector, equalityFn);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { ArticleProvider, useArticleStore };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useContext, createContext } from 'react';
|
|
3
|
+
import { useStore, createStore } from 'zustand';
|
|
4
|
+
|
|
5
|
+
const ArticleListContext = /*#__PURE__*/ createContext(null);
|
|
6
|
+
const createArticleListProvider = (data)=>createStore(()=>({
|
|
7
|
+
...data
|
|
8
|
+
}));
|
|
9
|
+
const ArticleListProvider = ({ articles, blogs, children, styles, settings })=>{
|
|
10
|
+
return /*#__PURE__*/ jsx(ArticleListContext.Provider, {
|
|
11
|
+
value: createArticleListProvider({
|
|
12
|
+
articles,
|
|
13
|
+
styles,
|
|
14
|
+
settings,
|
|
15
|
+
blogs
|
|
16
|
+
}),
|
|
17
|
+
children: children
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
const useArticleListStore = (selector, equalityFn)=>{
|
|
21
|
+
const store = useContext(ArticleListContext);
|
|
22
|
+
if (!store) {
|
|
23
|
+
throw new Error('useArticleListStore must be used within a useArticleListStore');
|
|
24
|
+
}
|
|
25
|
+
return useStore(store, selector, equalityFn);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { ArticleListContext, ArticleListProvider, useArticleListStore };
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
const mock = [
|
|
2
|
+
{
|
|
3
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592066740457',
|
|
4
|
+
id: 592066740457,
|
|
5
|
+
title: 'Blog post might appear in a search engine listing',
|
|
6
|
+
created_at: '2024-05-09T04:06:12-04:00',
|
|
7
|
+
body_html: '<span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span>',
|
|
8
|
+
blog_id: 91970044137,
|
|
9
|
+
author: 'Dev Team',
|
|
10
|
+
user_id: 90371653865,
|
|
11
|
+
published_at: '2024-05-09T04:06:12-04:00',
|
|
12
|
+
updated_at: '2024-05-09T04:06:13-04:00',
|
|
13
|
+
summary_html: '',
|
|
14
|
+
template_suffix: '',
|
|
15
|
+
handle: 'blog-post-might-appear-in-a-search-engine-listing',
|
|
16
|
+
tags: 'vintage',
|
|
17
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592066740457',
|
|
18
|
+
image: {
|
|
19
|
+
created_at: '2024-05-09T04:06:12-04:00',
|
|
20
|
+
alt: '',
|
|
21
|
+
width: 1073,
|
|
22
|
+
height: 719,
|
|
23
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_2.jpg?v=1715241973'
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592066707689',
|
|
28
|
+
id: 592066707689,
|
|
29
|
+
title: 'ar on your home page or blog.',
|
|
30
|
+
created_at: '2024-05-09T04:05:26-04:00',
|
|
31
|
+
body_html: '<span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span>',
|
|
32
|
+
blog_id: 91970044137,
|
|
33
|
+
author: 'Dev Team',
|
|
34
|
+
user_id: 90371653865,
|
|
35
|
+
published_at: '2024-05-09T04:05:25-04:00',
|
|
36
|
+
updated_at: '2024-05-09T05:35:29-04:00',
|
|
37
|
+
summary_html: '',
|
|
38
|
+
template_suffix: '',
|
|
39
|
+
handle: 'ar-on-your-home-page-or-blog',
|
|
40
|
+
tags: 'cotton, vintage',
|
|
41
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592066707689',
|
|
42
|
+
image: {
|
|
43
|
+
created_at: '2024-05-09T04:05:26-04:00',
|
|
44
|
+
alt: '',
|
|
45
|
+
width: 1080,
|
|
46
|
+
height: 719,
|
|
47
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_1.jpg?v=1715241926'
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592066674921',
|
|
52
|
+
id: 592066674921,
|
|
53
|
+
title: 'Add a summary of the post.',
|
|
54
|
+
created_at: '2024-05-09T04:04:44-04:00',
|
|
55
|
+
body_html: '<span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span><span data-mce-fragment="1">Add a title and description to see how this Blog post might appear in a search engine listing</span>',
|
|
56
|
+
blog_id: 91970044137,
|
|
57
|
+
author: 'Dev Team',
|
|
58
|
+
user_id: 90371653865,
|
|
59
|
+
published_at: '2024-05-09T04:04:44-04:00',
|
|
60
|
+
updated_at: '2024-05-09T04:04:45-04:00',
|
|
61
|
+
summary_html: '',
|
|
62
|
+
template_suffix: '',
|
|
63
|
+
handle: 'add-a-summary-of-the-post',
|
|
64
|
+
tags: '',
|
|
65
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592066674921',
|
|
66
|
+
image: {
|
|
67
|
+
created_at: '2024-05-09T04:04:44-04:00',
|
|
68
|
+
alt: '',
|
|
69
|
+
width: 1086,
|
|
70
|
+
height: 718,
|
|
71
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_7.jpg?v=1715241885'
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592058777833',
|
|
76
|
+
id: 592058777833,
|
|
77
|
+
title: 'Article Page - May 7, 10:47:14',
|
|
78
|
+
created_at: '2024-05-06T23:47:59-04:00',
|
|
79
|
+
body_html: '<h2>\n<span>Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span>\n</h2>',
|
|
80
|
+
blog_id: 91970044137,
|
|
81
|
+
author: 'GemPages',
|
|
82
|
+
user_id: null,
|
|
83
|
+
published_at: '2024-05-06T23:47:59-04:00',
|
|
84
|
+
updated_at: '2024-05-09T04:06:48-04:00',
|
|
85
|
+
summary_html: '',
|
|
86
|
+
template_suffix: 'gp-template-512584275137135821',
|
|
87
|
+
handle: 'article-page-may-7-10-47-14',
|
|
88
|
+
tags: 'vintage',
|
|
89
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592058777833',
|
|
90
|
+
image: {
|
|
91
|
+
created_at: '2024-05-09T04:06:41-04:00',
|
|
92
|
+
alt: '',
|
|
93
|
+
width: 578,
|
|
94
|
+
height: 585,
|
|
95
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_3.png?v=1715242002'
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
baseID: 'gid://shopify/OnlineStoreBlog/592058679529',
|
|
100
|
+
id: 592058679529,
|
|
101
|
+
title: 'Blog about your latest products or deals',
|
|
102
|
+
created_at: '2024-05-06T22:36:55-04:00',
|
|
103
|
+
body_html: '<span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span><span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span>',
|
|
104
|
+
blog_id: 91970044137,
|
|
105
|
+
author: 'Dev Team',
|
|
106
|
+
user_id: 90371653865,
|
|
107
|
+
published_at: '2024-05-06T22:36:54-04:00',
|
|
108
|
+
updated_at: '2024-05-09T03:46:39-04:00',
|
|
109
|
+
summary_html: '<span data-mce-fragment="1">Add a summary of the post to appear on your home page or blog.</span>',
|
|
110
|
+
template_suffix: 'gp-template-512584275137135821',
|
|
111
|
+
handle: 'blog-about-your-latest-products-or-deals',
|
|
112
|
+
tags: '',
|
|
113
|
+
admin_graphql_api_id: 'gid://shopify/OnlineStoreArticle/592058679529',
|
|
114
|
+
image: {
|
|
115
|
+
created_at: '2024-05-06T22:36:55-04:00',
|
|
116
|
+
alt: '',
|
|
117
|
+
width: 497,
|
|
118
|
+
height: 618,
|
|
119
|
+
src: 'https://cdn.shopify.com/s/files/1/0692/6562/1225/articles/Screenshot_3.jpg?v=1715049415'
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
];
|
|
123
|
+
const useArticlesQuery = ()=>{
|
|
124
|
+
return mock;
|
|
125
|
+
};
|
|
126
|
+
const useBlogsQuery = ()=>{
|
|
127
|
+
return {
|
|
128
|
+
blogs: {
|
|
129
|
+
edges: [
|
|
130
|
+
{
|
|
131
|
+
node: {
|
|
132
|
+
id: '511006979737518962',
|
|
133
|
+
title: 'News',
|
|
134
|
+
baseID: 'gid://shopify/OnlineStoreBlog/91970044137',
|
|
135
|
+
tags: [],
|
|
136
|
+
handle: 'news',
|
|
137
|
+
descriptionMeta: '',
|
|
138
|
+
description: '',
|
|
139
|
+
titleMeta: '',
|
|
140
|
+
templateSuffix: '',
|
|
141
|
+
platform: 'SHOPIFY'
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
export { useArticlesQuery, useBlogsQuery };
|
package/dist/esm/index.js
CHANGED
|
@@ -14,6 +14,8 @@ export { ShopProvider, useShopStore } from './contexts/ShopContext.js';
|
|
|
14
14
|
export { PageProvider, usePageStore } from './contexts/PageContext.js';
|
|
15
15
|
export { CollectionProvider, useCollectionStore } from './contexts/CollectionContext.js';
|
|
16
16
|
export { ModalProvider, useModalStore } from './contexts/ModalContext.js';
|
|
17
|
+
export { ArticleListProvider, useArticleListStore } from './contexts/ArticleListContext.js';
|
|
18
|
+
export { ArticleProvider, useArticleStore } from './contexts/ArticleContext.js';
|
|
17
19
|
export { PageViewUpDocument } from './graphql/mutations/page-view-up.generated.js';
|
|
18
20
|
export { CollectionDetailFilterDocument } from './graphql/queries/collection-detail-filter.generated.js';
|
|
19
21
|
export { CollectionDocument } from './graphql/queries/collection.generated.js';
|
|
@@ -90,6 +92,7 @@ export { default as useIsomorphicLayoutEffect } from './hooks/useIsomorphicLayou
|
|
|
90
92
|
export { default as useLoadScript } from './hooks/useLoadScript.js';
|
|
91
93
|
export { default as useMoney } from './hooks/useMoney.js';
|
|
92
94
|
export { usePrevious } from './hooks/usePrevious.js';
|
|
95
|
+
export { useArticlesQuery, useBlogsQuery } from './hooks/articles/useArticlesQuery.js';
|
|
93
96
|
export { useCheckAvailableVariantInStock, useCurrentVariant, useCurrentVariantInStock, useFeaturedImageGlobal, useIsSyncProduct, useProduct, useProductOfferDiscount, useProductProperties, useQuantity, useSelectedOption, useUniqProductID, useVariant, useVariantOutStock, useVariants } from './hooks/useProduct.js';
|
|
94
97
|
export { useProductList, useProductListProducts, useProductListSettings, useProductListStyles } from './hooks/useProductList.js';
|
|
95
98
|
export { default as useSuspenseFetch } from './hooks/useSuspenseFetch.js';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -60,7 +60,7 @@ type Analytic$1 = {
|
|
|
60
60
|
gaTrackingID?: Maybe$1<Scalars$2['String']>;
|
|
61
61
|
tiktokPixelID?: Maybe$1<Scalars$2['String']>;
|
|
62
62
|
};
|
|
63
|
-
type Article$
|
|
63
|
+
type Article$2 = {
|
|
64
64
|
baseID?: Maybe$1<Scalars$2['String']>;
|
|
65
65
|
blogs?: Maybe$1<BlogConnection$1>;
|
|
66
66
|
description?: Maybe$1<Scalars$2['String']>;
|
|
@@ -133,7 +133,7 @@ type ArticleConnection$1 = {
|
|
|
133
133
|
};
|
|
134
134
|
type ArticleEdge$1 = {
|
|
135
135
|
cursor?: Maybe$1<Scalars$2['Cursor']>;
|
|
136
|
-
node?: Maybe$1<Article$
|
|
136
|
+
node?: Maybe$1<Article$2>;
|
|
137
137
|
};
|
|
138
138
|
type ArticleOrder$1 = {
|
|
139
139
|
direction: OrderDirection$1;
|
|
@@ -5722,7 +5722,7 @@ type PublishedThemeStyleWhereInput$1 = {
|
|
|
5722
5722
|
type Query$1 = {
|
|
5723
5723
|
_entities: Array<Maybe$1<_Entity>>;
|
|
5724
5724
|
_service: _Service;
|
|
5725
|
-
article?: Maybe$1<Article$
|
|
5725
|
+
article?: Maybe$1<Article$2>;
|
|
5726
5726
|
articles?: Maybe$1<ArticleConnection$1>;
|
|
5727
5727
|
blog?: Maybe$1<Blog$1>;
|
|
5728
5728
|
blogs?: Maybe$1<BlogConnection$1>;
|
|
@@ -6237,7 +6237,7 @@ type shop__Service = _Service;
|
|
|
6237
6237
|
declare namespace shop {
|
|
6238
6238
|
export {
|
|
6239
6239
|
Analytic$1 as Analytic,
|
|
6240
|
-
Article$
|
|
6240
|
+
Article$2 as Article,
|
|
6241
6241
|
ArticleBlogWhereInput$1 as ArticleBlogWhereInput,
|
|
6242
6242
|
ArticleBlogsArgs$1 as ArticleBlogsArgs,
|
|
6243
6243
|
ArticleConnection$1 as ArticleConnection,
|
|
@@ -6926,6 +6926,7 @@ type InputControlType<T> = SharedControlType<T> & {
|
|
|
6926
6926
|
value: any;
|
|
6927
6927
|
}[];
|
|
6928
6928
|
readonly?: boolean;
|
|
6929
|
+
suffix?: string;
|
|
6929
6930
|
action?: {
|
|
6930
6931
|
clear?: boolean;
|
|
6931
6932
|
};
|
|
@@ -7423,6 +7424,11 @@ type ProductListControlType<T> = SharedControlType<T> & {
|
|
|
7423
7424
|
isMultiple?: boolean;
|
|
7424
7425
|
};
|
|
7425
7426
|
|
|
7427
|
+
type ArticleListControlType<T> = SharedControlType<T> & {
|
|
7428
|
+
type: 'article-list';
|
|
7429
|
+
isMultiple?: boolean;
|
|
7430
|
+
};
|
|
7431
|
+
|
|
7426
7432
|
type SizeUnit$1 = '%' | 'cm' | 'mm' | 'Q' | 'in' | 'pc' | 'pt' | 'px' | 'em' | 'cap' | 'ex' | 'ch' | 'ic' | 'rem' | 'lh' | 'rlh' | 'vw' | 'vh' | 'vi' | 'vb' | 'vmin' | 'vmax';
|
|
7427
7433
|
type InputUnitSpacingControlType<T> = SharedControlType<T> & {
|
|
7428
7434
|
type: 'input:unit-spacing';
|
|
@@ -7582,6 +7588,7 @@ type ParallaxScrollingType<T> = SharedControlType<T> & {
|
|
|
7582
7588
|
|
|
7583
7589
|
type BackgroundColorPickerType<T> = SharedControlType<T> & {
|
|
7584
7590
|
type: 'background-color-picker';
|
|
7591
|
+
mode?: 'both' | 'solid' | 'gradient';
|
|
7585
7592
|
popup?: boolean;
|
|
7586
7593
|
readonly?: boolean;
|
|
7587
7594
|
};
|
|
@@ -7731,7 +7738,11 @@ type ButtonLayoutType<T> = SharedControlType<T> & {
|
|
|
7731
7738
|
type: 'button-layout';
|
|
7732
7739
|
};
|
|
7733
7740
|
|
|
7734
|
-
type
|
|
7741
|
+
type ShapeSelectorControlType<T> = SharedControlType<T> & {
|
|
7742
|
+
type: 'shape-selector';
|
|
7743
|
+
};
|
|
7744
|
+
|
|
7745
|
+
type ControlProp<T> = AngleControlType<T> | CheckboxControlType<T> | ColorPickerControlType<T> | GroupControlType<T> | IconControlType<T> | InputFixContentControlType<T> | InputNumberControlType<T> | InputUnitControlType<T> | InputUnitSpacingControlType<T> | InputUnitWidthControlType<T> | InputControlType<T> | MarginControlType<T> | PaddingControlType<T> | PositionControlType<T> | RadioGroupControlType | RangeControlType<T> | SegmentControlType<T> | SelectControlType<T> | TextareaControlType<T> | ToggleControlType<T> | ImageControlType<T> | ChildrensControlType | GridControlType<T> | FlexControlType<T> | TextEditorControlType<T> | ProductControlType<T> | TypographyControlType<T> | TypographyV2ControlType<T> | MenuControlType<T> | BehaviorStateControlType<T> | PickLinkControlType<T> | BoxShadowControlType<T> | TextShadowControlType<T> | BorderControlType<T> | BorderRadiusControlType<T> | RadiusPresetControlType<T> | SizeControlType<T> | ChildItemType<T> | PickMultiProductControlType<T> | CollectionControlType<T> | BackgroundControlType<T> | VisibilityControlType<T> | SelectVariantControlType | CountdownEvergreenType | Timezone<T> | CustomContentControlType<T> | DateTimePickerControlType | CountdownDailyType | KlaviyoCodes | YotpoLoyaltyCodes | InputWidthControlType<T> | LayoutSegmentControlType<T> | InputSpacing<T> | UniqueIdControlType<T> | PositionSquareControlType<T> | CustomCodeEditor | LayoutControlType<T> | LayoutBannerControlType<T> | SwatchesLinkControlType<T> | VariantSwatchesPresetControlType<T> | VariantSwatchesOnlyDefaultVariantControlType<T> | ProductListControlType<T> | ArticleListControlType<T> | CollectionBannerControlType<T> | Ratio<T> | StickyDisplayControlType<T> | SyncProductPropertiesControlType<T> | StepsGuide<T> | ImageShape<T> | GridArrange<T> | SizeSetting$1<T> | ChildIconType<T> | DropdownInput<T> | Dropdown<T> | AliPickSectionControlType<T> | ParallaxScrollingType<T> | BackgroundColorPickerType<T> | PlayPauseControlType<T> | LayoutCustomSegmentControlType<T> | SneakPeakRange<T> | SneakPeakTypeControlType<T> | SneakPeakControlType<T> | BackgroundColorPickerType<T> | ProductInputCurrencyUnitControlType<T> | TypographyPostPurchaseControlType<T> | ProductOffersControlType<T> | DiscountAndShippingFee<T> | SneakPeakControlType<T> | PostPurchaseTextareaControlType<T> | NotesControlType<T> | NotesControlType<T> | ButtonLayoutType<T> | ShapeSelectorControlType<T>;
|
|
7735
7746
|
type ControlTriggerAction = {
|
|
7736
7747
|
controlId: string;
|
|
7737
7748
|
newValue?: any;
|
|
@@ -7959,7 +7970,7 @@ type AnalyticsQueryParameter = {
|
|
|
7959
7970
|
startDate?: InputMaybe<Scalars['Time']>;
|
|
7960
7971
|
};
|
|
7961
7972
|
type AppType = 'CUSTOM' | 'GEMPAGES' | 'GEMPAGESV5' | 'GEMPAGESV7' | 'GEMX';
|
|
7962
|
-
type Article = {
|
|
7973
|
+
type Article$1 = {
|
|
7963
7974
|
baseID?: Maybe<Scalars['String']>;
|
|
7964
7975
|
blogs?: Maybe<BlogConnection>;
|
|
7965
7976
|
description?: Maybe<Scalars['String']>;
|
|
@@ -8032,7 +8043,7 @@ type ArticleConnection = {
|
|
|
8032
8043
|
};
|
|
8033
8044
|
type ArticleEdge = {
|
|
8034
8045
|
cursor?: Maybe<Scalars['Cursor']>;
|
|
8035
|
-
node?: Maybe<Article>;
|
|
8046
|
+
node?: Maybe<Article$1>;
|
|
8036
8047
|
};
|
|
8037
8048
|
type ArticleOrder = {
|
|
8038
8049
|
direction: OrderDirection;
|
|
@@ -18842,7 +18853,7 @@ type PutCustomComponentFileInput = {
|
|
|
18842
18853
|
name: Scalars['String'];
|
|
18843
18854
|
};
|
|
18844
18855
|
type Query = {
|
|
18845
|
-
article?: Maybe<Article>;
|
|
18856
|
+
article?: Maybe<Article$1>;
|
|
18846
18857
|
articles?: Maybe<ArticleConnection>;
|
|
18847
18858
|
backgroundTasks?: Maybe<BackgroundTaskConnection>;
|
|
18848
18859
|
blog?: Maybe<Blog>;
|
|
@@ -25023,7 +25034,6 @@ type appAPI_AddEmployeeInput = AddEmployeeInput;
|
|
|
25023
25034
|
type appAPI_Analytic = Analytic;
|
|
25024
25035
|
type appAPI_AnalyticsQueryParameter = AnalyticsQueryParameter;
|
|
25025
25036
|
type appAPI_AppType = AppType;
|
|
25026
|
-
type appAPI_Article = Article;
|
|
25027
25037
|
type appAPI_ArticleBlogWhereInput = ArticleBlogWhereInput;
|
|
25028
25038
|
type appAPI_ArticleBlogsArgs = ArticleBlogsArgs;
|
|
25029
25039
|
type appAPI_ArticleConnection = ArticleConnection;
|
|
@@ -26016,7 +26026,7 @@ declare namespace appAPI {
|
|
|
26016
26026
|
appAPI_Analytic as Analytic,
|
|
26017
26027
|
appAPI_AnalyticsQueryParameter as AnalyticsQueryParameter,
|
|
26018
26028
|
appAPI_AppType as AppType,
|
|
26019
|
-
|
|
26029
|
+
Article$1 as Article,
|
|
26020
26030
|
appAPI_ArticleBlogWhereInput as ArticleBlogWhereInput,
|
|
26021
26031
|
appAPI_ArticleBlogsArgs as ArticleBlogsArgs,
|
|
26022
26032
|
appAPI_ArticleConnection as ArticleConnection,
|
|
@@ -27609,6 +27619,39 @@ type ModalProviderProps = Pick<ModalContextProps, 'activeId'> & {
|
|
|
27609
27619
|
declare const ModalProvider: React.FC<ModalProviderProps>;
|
|
27610
27620
|
declare const useModalStore: <U>(selector: (state: ExtractState<StoreApi<ModalContextProps>>) => U, equalityFn?: ((a: U, b: U) => boolean) | undefined) => U;
|
|
27611
27621
|
|
|
27622
|
+
type ArticleListContextProps = {
|
|
27623
|
+
articles?: any[];
|
|
27624
|
+
blogs?: Blog$1[];
|
|
27625
|
+
settings?: {
|
|
27626
|
+
slidesToShow?: ObjectDevices<number | 'auto'>;
|
|
27627
|
+
};
|
|
27628
|
+
styles?: {
|
|
27629
|
+
horizontalGutter?: ObjectDevices<string>;
|
|
27630
|
+
verticalGutter?: ObjectDevices<string>;
|
|
27631
|
+
fullWidth?: ObjectDevices<boolean>;
|
|
27632
|
+
spacing?: ObjectDevices<number>;
|
|
27633
|
+
width?: ObjectDevices<string>;
|
|
27634
|
+
height?: ObjectDevices<string>;
|
|
27635
|
+
};
|
|
27636
|
+
};
|
|
27637
|
+
type ArticleListProviderProps = ArticleListContextProps & {
|
|
27638
|
+
children: React.ReactNode;
|
|
27639
|
+
};
|
|
27640
|
+
declare const ArticleListProvider: React.FC<ArticleListProviderProps>;
|
|
27641
|
+
declare const useArticleListStore: <U>(selector: (state: ExtractState<StoreApi<ArticleListContextProps>>) => U, equalityFn?: ((a: U, b: U) => boolean) | undefined) => U;
|
|
27642
|
+
|
|
27643
|
+
type Article = any;
|
|
27644
|
+
type ArticleContextProps = {
|
|
27645
|
+
article: Article;
|
|
27646
|
+
uniqueId: string;
|
|
27647
|
+
};
|
|
27648
|
+
type ArticleProviderProps = Pick<ArticleContextProps, 'article'> & {
|
|
27649
|
+
readOnly?: boolean;
|
|
27650
|
+
children: React.ReactNode;
|
|
27651
|
+
};
|
|
27652
|
+
declare const ArticleProvider: React.FC<ArticleProviderProps>;
|
|
27653
|
+
declare const useArticleStore: <U>(selector: (state: ExtractState<StoreApi<ArticleContextProps>>) => U, equalityFn?: ((a: U, b: U) => boolean) | undefined) => U;
|
|
27654
|
+
|
|
27612
27655
|
type PageViewUpMutationVariables = Exact$1<{
|
|
27613
27656
|
pageHandle: Scalars$2['String'];
|
|
27614
27657
|
userAgent: Scalars$2['String'];
|
|
@@ -35889,6 +35932,64 @@ declare const useMoney: (amount: number) => UseMoneyValue;
|
|
|
35889
35932
|
|
|
35890
35933
|
declare const usePrevious: <T>(value: T) => T | undefined;
|
|
35891
35934
|
|
|
35935
|
+
type BlogsQueryResponse = {
|
|
35936
|
+
blogs?: Maybe$1<Pick<BlogConnection$1, 'totalCount'> & {
|
|
35937
|
+
edges: Array<Pick<BlogEdge$1, 'cursor'> & {
|
|
35938
|
+
node?: Maybe$1<Pick<Blog$1, 'baseID' | 'description' | 'descriptionMeta' | 'handle' | 'id' | 'platform' | 'tags' | 'templateSuffix' | 'title' | 'titleMeta'>>;
|
|
35939
|
+
}>;
|
|
35940
|
+
pageInfo?: Maybe$1<Pick<PageInfo$1, 'endCursor' | 'hasNextPage' | 'hasPreviousPage' | 'startCursor'>>;
|
|
35941
|
+
}>;
|
|
35942
|
+
};
|
|
35943
|
+
|
|
35944
|
+
declare const useArticlesQuery: () => ({
|
|
35945
|
+
baseID: string;
|
|
35946
|
+
id: number;
|
|
35947
|
+
title: string;
|
|
35948
|
+
created_at: string;
|
|
35949
|
+
body_html: string;
|
|
35950
|
+
blog_id: number;
|
|
35951
|
+
author: string;
|
|
35952
|
+
user_id: number;
|
|
35953
|
+
published_at: string;
|
|
35954
|
+
updated_at: string;
|
|
35955
|
+
summary_html: string;
|
|
35956
|
+
template_suffix: string;
|
|
35957
|
+
handle: string;
|
|
35958
|
+
tags: string;
|
|
35959
|
+
admin_graphql_api_id: string;
|
|
35960
|
+
image: {
|
|
35961
|
+
created_at: string;
|
|
35962
|
+
alt: string;
|
|
35963
|
+
width: number;
|
|
35964
|
+
height: number;
|
|
35965
|
+
src: string;
|
|
35966
|
+
};
|
|
35967
|
+
} | {
|
|
35968
|
+
baseID: string;
|
|
35969
|
+
id: number;
|
|
35970
|
+
title: string;
|
|
35971
|
+
created_at: string;
|
|
35972
|
+
body_html: string;
|
|
35973
|
+
blog_id: number;
|
|
35974
|
+
author: string;
|
|
35975
|
+
user_id: null;
|
|
35976
|
+
published_at: string;
|
|
35977
|
+
updated_at: string;
|
|
35978
|
+
summary_html: string;
|
|
35979
|
+
template_suffix: string;
|
|
35980
|
+
handle: string;
|
|
35981
|
+
tags: string;
|
|
35982
|
+
admin_graphql_api_id: string;
|
|
35983
|
+
image: {
|
|
35984
|
+
created_at: string;
|
|
35985
|
+
alt: string;
|
|
35986
|
+
width: number;
|
|
35987
|
+
height: number;
|
|
35988
|
+
src: string;
|
|
35989
|
+
};
|
|
35990
|
+
})[];
|
|
35991
|
+
declare const useBlogsQuery: () => BlogsQueryResponse;
|
|
35992
|
+
|
|
35892
35993
|
declare const useUniqProductID: () => string;
|
|
35893
35994
|
declare const useProduct: () => ProductSelectFragment | undefined;
|
|
35894
35995
|
declare const useFeaturedImageGlobal: () => MediaSelectFragment | undefined;
|
|
@@ -35971,4 +36072,4 @@ type PublishedThemePageSelectFragment = Pick<PublishedThemePage$1, 'id' | 'name'
|
|
|
35971
36072
|
|
|
35972
36073
|
declare const getProductBySlug: (fetcher: FetchFunc, slug?: string) => Promise<ProductSelectFragment>;
|
|
35973
36074
|
|
|
35974
|
-
export { AddOn, AddonProvider, AddonProviderProps, AdvancedType, AliReviewsWidgetType, AlignItemProp, AlignProp, AnimationBaseSetting, AnimationConfig, AnimationDirectionType, AnimationEasingType, AnimationFadeSettingType, AnimationSetting, AnimationSettingType, AnimationShakeSettingType, AnimationSlideSettingType, AnimationTrigger, AnimationTriggerType, AnimationType, AnimationZoomDirectionType, AnimationZoomSettingType, appAPI as AppAPIType, Background, BaseProps, BasePropsWrap, BlockEntity, BogosWidgetType, BoldSubscriptionsWidgetType, Border, BorderStyle, BuilderComponentProvider, BuilderComponentProviderProps, BuilderEntity, BuilderEntityNested, BuilderPreviewProvider, BuilderPreviewProviderProps, BuilderProvider, BuilderProviderProps, BuilderState, Builtin, CartLineProvider, CartLineProviderProps, CollectionDetailFilterDocument, CollectionDetailFilterQueryResponse, CollectionDetailFilterQueryVariables, CollectionDocument, CollectionProvider, CollectionProviderProps, CollectionQueryResponse, CollectionQueryVariables, CollectionSelectFragment, CollectionsDocument, CollectionsQueryResponse, CollectionsQueryVariables, ColorKey, ColorType$1 as ColorType, ColorValueType, Component, ComponentPreset, ComponentSetting, ContainerProp, ControlProp, ControlTriggerAction, ControlUI, CornerRadius, CornerRadiusType, CustomComponentConfig, DeepPartial, DynamicCollection, DynamicProduct, ExtractState, FeraReviewsV3WidgetType, FeraReviewsWidgetType, FetchCollectionArgs, FetchFunc, FetchProductParams, FlexDirectionProp, FontName, GRADIENT_BGR_KEY, GlobalStyleConfig, GlobalStyleResponsiveConfig, GlobalSwatchesData, GraphQLConnection, GroupPropType, GrowaveWidgetType, HSLAColorType, HSLColorType, HexColorType, ImageShape$1 as ImageShape, InitComponentType, InstantJudgeMeReviewsWidgetType, InstantKlaviyoWidgetType, InstantLooxReviewsWidgetType, JudgeMeReviewsWidgetType, KlaviyoWidgetType, LaiProductReviewsAdvancedWidgetType, LaiProductReviewsWidgetType, LibrarySaleFunnelDocument, LibrarySaleFunnelQueryResponse, LibrarySaleFunnelQueryVariables, LibraryTemplateDocument, LibraryTemplateQueryResponse, LibraryTemplateQueryVariables, LooxReviewsWidgetType, ModalProvider, ModalProviderProps, NameDevices$1 as NameDevices, NestedKeys, ObjectDeviceGlobalType, ObjectDevices, ObjectLayoutValue, OmnisendWidgetType, OpinewDesignWidgetType, OpinewWidgetType, OptionNormalStyle, OptionSpecialStyle, Options, PageContext, PageProvider, PageProviderProps, PageType, PageViewUpDocument, PageViewUpMutationResponse, PageViewUpMutationVariables, PickyStoryWidgetType, PostPurchaseTypo, PreviewPageDocument, PreviewPageQueryResponse, PreviewPageQueryVariables, Primitive, ProductInputAnalytic, ProductListProvider, ProductListProviderProps, ProductOffer, ProductProvider, ProductProviderProps, ProductReviewsWidgetType, ProductSelectFragment, ProductsDocument, ProductsQueryResponse, ProductsQueryVariables, PublicStoreFrontData, PublishedThemePageSelectFragment, PublishedThemePagesDocument, PublishedThemePagesQueryResponse, PublishedThemePagesQueryVariables, RGBAColorType, RGBColorType, Ratio$1 as Ratio, RawChild, RenderMemo as Render, RenderChildren, RenderIf, Render as RenderLiquid, RenderMode, RenderPreviewMemo as RenderPreview, RequiredCursorEdge, ResponsiveKey, ResponsiveStateProp, RivyoWidgetType, RoundedSize, RyviuWidgetType, SaleFunnelDiscount$1 as SaleFunnelDiscount, SaleFunnelDiscountEdge$1 as SaleFunnelDiscountEdge, SaleFunnelDiscountObjectType$1 as SaleFunnelDiscountObjectType, SaleFunnelDiscountType$1 as SaleFunnelDiscountType, SaleFunnelDiscountValueType$1 as SaleFunnelDiscountValueType, SaleFunnelDiscountsDocument, SaleFunnelDiscountsQueryResponse, SaleFunnelDiscountsQueryVariables, Scalars$1 as Scalars, ScaleByDirection, SectionData, SectionEntity, SectionProvider, SectionProviderProps, SettingByAnimationType, SettingByAnimationValues, ShadowProps, ShadowStyle, ShadowStyleApplied, ShadowType, ShopProvider, ShopProviderProps, shop as ShopType, SizeProps, SizeSetting, SizeSettingGlobal, SizeType, SpacingType, StampedWidgetType, StateProp, StateSelector, StateType, StoreConfig, StorePropertyDocument, StorePropertyQueryResponse, StorePropertyQueryVariables, SwatchesOptionType, SwatchesOptionValue, ThemePageDocument, ThemePageQueryResponse, ThemePageQueryVariables, TransformProp, TriggerConfig, TrustooWidgetType, TypographyProps, TypographySetting, TypographySettingV2, TypographyType, TypographyV2Attrs, TypographyV2Props, UltimateSalesBoostWidgetType, VariantSelectFragment, VitalsWidgetType, WiserV2WidgetType, WiserWidgetType, WrapRenderChildren, YotpoReviewsWidgetType, animations, baseAssetURL, calculateFirstProduct, checkAvailableVariantInStock, cls, composeAdvanceStyle, composeAdvanceStyleForPostPurchase, composeBackgroundCss, composeBorderCss, composeCornerCss, composeFallbackTypographyStyle, composeGridLayout, composeMemo, composePositionLineHeight, composePostionIconList, composeRadius, composeRadiusResponsive, composeShadowCss, composeSize, composeSizeCss, composeSpacing, composeTextColorCss, composeTypography, composeTypographyAttr, composeTypographyClassName, composeTypographyCss, composeTypographyStyle, composeTypographyV2, composeTypographyV2Css, convertHTML, convertOldLayout, dataStringify, fetchMedias, fetchVariants, filterAttrInStyle, filterCornerInStyle, filterToolbarPreview, flattenConnection, fpixel, genSizeClass, genTypoClass, genVariable, generateCollectionQueryKey, generateProductQueryKey, generateProductsQueryKey, getAspectRatioGlobalSize, getBgImageByDevice, getBorderStyle, getCarouselContainerHeight, getCollection, getCornerCSSFromGlobal, getCustomRadius, getGlobalColorCSSProp, getGlobalColorClass, getGlobalColorResponsiveClass, getGlobalColorResponsiveStyle, getGlobalColorStateClass, getGlobalColorStateClassDynamicBtn, getGlobalColorStateResponsiveClass, getGlobalColorStateResponsiveClassDynamicBtn, getGlobalColorStateResponsiveStyle, getGlobalColorStateStyle, getGlobalColorStyle, getGlobalSizeGap, getGradientBgrStyleByDevice, getGradientBgrStyleForButton, getHeightByShapeGlobalSize, getPaddingGlobalSize, getProduct, getProductBySlug, getRadiusCSSFromGlobal, getRadiusStyleActiveState, getResponsiveStateValue, getResponsiveValue, getResponsiveValueByScreen, getSelectedVariant, getShortName, getSingleColorVariable, getSpacingVariable, getStyleBackgroundByDevice, getStyleShadow, getStyleShadowState, getWidthByShapeGlobalSize, getWidthHeightGlobalSize, globalEvent, gridToArrayRegex, gtag, handleConvertBorderColor, handleConvertBorderStyle, handleConvertBorderWidth, handleConvertClassColor, handleConvertClassColorDynamicBtn, isBrowser, isColor, isColumnDirectionExist, isDefined, isEmptyChildren, isLocalEnv, isSafari, loadScript, makeAspectRatio, makeContainerWidthOrHeight, makeDotGapToCarouselStyle, makeFixedBgAttachment, makeGlobalSize, makeGlobalSizeHeightResponsive, makeGlobalSizeIcon, makeGlobalSizeWidthResponsive, makeHeight, makeLineClamp, makeStyle, makeStyleKey, makeStyleResponsive, makeStyleResponsiveByScreen, makeStyleResponsiveState, makeStyleState, makeStyleWithDefault, makeWidth, normalizeBuilderData, optionLayoutStyle, parseSelectedOption, parseValueWithUnit, prefetchQueries, props, removeAttrInStyle, removeNullUndefined, removePaddingYInStyle, removeUndefinedValuesFromObject, shopifyPriceRounding, splitStyle, styles, template, tiktokpixel, useAddToCart, useAddon, useAddons, useBuilderComponent, useBuilderPreviewStore, useBuilderStore, useCartData, useCartDiscountCodesUpdate, useCartId, useCartLine, useCartLineStore, useCartNoteUpdate, useCartUI, useCheckAvailableVariantInStock, useCheckoutUrl, useCollection, useCollectionQuery, useCollectionStore, useCollectionsQuery, useConnectedShopify, useCreateCart, useCurrency, useCurrentDevice, useCurrentVariant, useCurrentVariantInStock, useEditorMode, useFeaturedImageGlobal, useFormatMoney, useInitialSwatchesOptions, useIsSampleProduct, useIsStorefrontProduct, useIsSyncProduct, useIsomorphicLayoutEffect, useLazyVideo, useLoadScript, useLocale, useMatchMutate, useMobileOnly, useModalStore, useMoney, useMoneyFormat, usePageStore, usePageType, usePluginEnable, usePrevious, useProduct, useProductList, useProductListProducts, useProductListSettings, useProductListStore, useProductListStyles, useProductOfferDiscount, useProductProperties, useProductQuery, useProductStore, useProductsQuery, useProductsQueryAll, useQuantity, useRemoveCartItem, useSection, useSectionStore, useSelectedOption, useShopStore, useStoreFront, useSuspenseFetch, useSwatches, useSwatchesOptions, useUniqProductID, useUpdateCartItem, useVariant, useVariantOutStock, useVariants, validateEmail };
|
|
36075
|
+
export { AddOn, AddonProvider, AddonProviderProps, AdvancedType, AliReviewsWidgetType, AlignItemProp, AlignProp, AnimationBaseSetting, AnimationConfig, AnimationDirectionType, AnimationEasingType, AnimationFadeSettingType, AnimationSetting, AnimationSettingType, AnimationShakeSettingType, AnimationSlideSettingType, AnimationTrigger, AnimationTriggerType, AnimationType, AnimationZoomDirectionType, AnimationZoomSettingType, appAPI as AppAPIType, ArticleListProvider, ArticleListProviderProps, ArticleProvider, ArticleProviderProps, Background, BaseProps, BasePropsWrap, BlockEntity, BogosWidgetType, BoldSubscriptionsWidgetType, Border, BorderStyle, BuilderComponentProvider, BuilderComponentProviderProps, BuilderEntity, BuilderEntityNested, BuilderPreviewProvider, BuilderPreviewProviderProps, BuilderProvider, BuilderProviderProps, BuilderState, Builtin, CartLineProvider, CartLineProviderProps, CollectionDetailFilterDocument, CollectionDetailFilterQueryResponse, CollectionDetailFilterQueryVariables, CollectionDocument, CollectionProvider, CollectionProviderProps, CollectionQueryResponse, CollectionQueryVariables, CollectionSelectFragment, CollectionsDocument, CollectionsQueryResponse, CollectionsQueryVariables, ColorKey, ColorType$1 as ColorType, ColorValueType, Component, ComponentPreset, ComponentSetting, ContainerProp, ControlProp, ControlTriggerAction, ControlUI, CornerRadius, CornerRadiusType, CustomComponentConfig, DeepPartial, DynamicCollection, DynamicProduct, ExtractState, FeraReviewsV3WidgetType, FeraReviewsWidgetType, FetchCollectionArgs, FetchFunc, FetchProductParams, FlexDirectionProp, FontName, GRADIENT_BGR_KEY, GlobalStyleConfig, GlobalStyleResponsiveConfig, GlobalSwatchesData, GraphQLConnection, GroupPropType, GrowaveWidgetType, HSLAColorType, HSLColorType, HexColorType, ImageShape$1 as ImageShape, InitComponentType, InstantJudgeMeReviewsWidgetType, InstantKlaviyoWidgetType, InstantLooxReviewsWidgetType, JudgeMeReviewsWidgetType, KlaviyoWidgetType, LaiProductReviewsAdvancedWidgetType, LaiProductReviewsWidgetType, LibrarySaleFunnelDocument, LibrarySaleFunnelQueryResponse, LibrarySaleFunnelQueryVariables, LibraryTemplateDocument, LibraryTemplateQueryResponse, LibraryTemplateQueryVariables, LooxReviewsWidgetType, ModalProvider, ModalProviderProps, NameDevices$1 as NameDevices, NestedKeys, ObjectDeviceGlobalType, ObjectDevices, ObjectLayoutValue, OmnisendWidgetType, OpinewDesignWidgetType, OpinewWidgetType, OptionNormalStyle, OptionSpecialStyle, Options, PageContext, PageProvider, PageProviderProps, PageType, PageViewUpDocument, PageViewUpMutationResponse, PageViewUpMutationVariables, PickyStoryWidgetType, PostPurchaseTypo, PreviewPageDocument, PreviewPageQueryResponse, PreviewPageQueryVariables, Primitive, ProductInputAnalytic, ProductListProvider, ProductListProviderProps, ProductOffer, ProductProvider, ProductProviderProps, ProductReviewsWidgetType, ProductSelectFragment, ProductsDocument, ProductsQueryResponse, ProductsQueryVariables, PublicStoreFrontData, PublishedThemePageSelectFragment, PublishedThemePagesDocument, PublishedThemePagesQueryResponse, PublishedThemePagesQueryVariables, RGBAColorType, RGBColorType, Ratio$1 as Ratio, RawChild, RenderMemo as Render, RenderChildren, RenderIf, Render as RenderLiquid, RenderMode, RenderPreviewMemo as RenderPreview, RequiredCursorEdge, ResponsiveKey, ResponsiveStateProp, RivyoWidgetType, RoundedSize, RyviuWidgetType, SaleFunnelDiscount$1 as SaleFunnelDiscount, SaleFunnelDiscountEdge$1 as SaleFunnelDiscountEdge, SaleFunnelDiscountObjectType$1 as SaleFunnelDiscountObjectType, SaleFunnelDiscountType$1 as SaleFunnelDiscountType, SaleFunnelDiscountValueType$1 as SaleFunnelDiscountValueType, SaleFunnelDiscountsDocument, SaleFunnelDiscountsQueryResponse, SaleFunnelDiscountsQueryVariables, Scalars$1 as Scalars, ScaleByDirection, SectionData, SectionEntity, SectionProvider, SectionProviderProps, SettingByAnimationType, SettingByAnimationValues, ShadowProps, ShadowStyle, ShadowStyleApplied, ShadowType, ShopProvider, ShopProviderProps, shop as ShopType, SizeProps, SizeSetting, SizeSettingGlobal, SizeType, SpacingType, StampedWidgetType, StateProp, StateSelector, StateType, StoreConfig, StorePropertyDocument, StorePropertyQueryResponse, StorePropertyQueryVariables, SwatchesOptionType, SwatchesOptionValue, ThemePageDocument, ThemePageQueryResponse, ThemePageQueryVariables, TransformProp, TriggerConfig, TrustooWidgetType, TypographyProps, TypographySetting, TypographySettingV2, TypographyType, TypographyV2Attrs, TypographyV2Props, UltimateSalesBoostWidgetType, VariantSelectFragment, VitalsWidgetType, WiserV2WidgetType, WiserWidgetType, WrapRenderChildren, YotpoReviewsWidgetType, animations, baseAssetURL, calculateFirstProduct, checkAvailableVariantInStock, cls, composeAdvanceStyle, composeAdvanceStyleForPostPurchase, composeBackgroundCss, composeBorderCss, composeCornerCss, composeFallbackTypographyStyle, composeGridLayout, composeMemo, composePositionLineHeight, composePostionIconList, composeRadius, composeRadiusResponsive, composeShadowCss, composeSize, composeSizeCss, composeSpacing, composeTextColorCss, composeTypography, composeTypographyAttr, composeTypographyClassName, composeTypographyCss, composeTypographyStyle, composeTypographyV2, composeTypographyV2Css, convertHTML, convertOldLayout, dataStringify, fetchMedias, fetchVariants, filterAttrInStyle, filterCornerInStyle, filterToolbarPreview, flattenConnection, fpixel, genSizeClass, genTypoClass, genVariable, generateCollectionQueryKey, generateProductQueryKey, generateProductsQueryKey, getAspectRatioGlobalSize, getBgImageByDevice, getBorderStyle, getCarouselContainerHeight, getCollection, getCornerCSSFromGlobal, getCustomRadius, getGlobalColorCSSProp, getGlobalColorClass, getGlobalColorResponsiveClass, getGlobalColorResponsiveStyle, getGlobalColorStateClass, getGlobalColorStateClassDynamicBtn, getGlobalColorStateResponsiveClass, getGlobalColorStateResponsiveClassDynamicBtn, getGlobalColorStateResponsiveStyle, getGlobalColorStateStyle, getGlobalColorStyle, getGlobalSizeGap, getGradientBgrStyleByDevice, getGradientBgrStyleForButton, getHeightByShapeGlobalSize, getPaddingGlobalSize, getProduct, getProductBySlug, getRadiusCSSFromGlobal, getRadiusStyleActiveState, getResponsiveStateValue, getResponsiveValue, getResponsiveValueByScreen, getSelectedVariant, getShortName, getSingleColorVariable, getSpacingVariable, getStyleBackgroundByDevice, getStyleShadow, getStyleShadowState, getWidthByShapeGlobalSize, getWidthHeightGlobalSize, globalEvent, gridToArrayRegex, gtag, handleConvertBorderColor, handleConvertBorderStyle, handleConvertBorderWidth, handleConvertClassColor, handleConvertClassColorDynamicBtn, isBrowser, isColor, isColumnDirectionExist, isDefined, isEmptyChildren, isLocalEnv, isSafari, loadScript, makeAspectRatio, makeContainerWidthOrHeight, makeDotGapToCarouselStyle, makeFixedBgAttachment, makeGlobalSize, makeGlobalSizeHeightResponsive, makeGlobalSizeIcon, makeGlobalSizeWidthResponsive, makeHeight, makeLineClamp, makeStyle, makeStyleKey, makeStyleResponsive, makeStyleResponsiveByScreen, makeStyleResponsiveState, makeStyleState, makeStyleWithDefault, makeWidth, normalizeBuilderData, optionLayoutStyle, parseSelectedOption, parseValueWithUnit, prefetchQueries, props, removeAttrInStyle, removeNullUndefined, removePaddingYInStyle, removeUndefinedValuesFromObject, shopifyPriceRounding, splitStyle, styles, template, tiktokpixel, useAddToCart, useAddon, useAddons, useArticleListStore, useArticleStore, useArticlesQuery, useBlogsQuery, useBuilderComponent, useBuilderPreviewStore, useBuilderStore, useCartData, useCartDiscountCodesUpdate, useCartId, useCartLine, useCartLineStore, useCartNoteUpdate, useCartUI, useCheckAvailableVariantInStock, useCheckoutUrl, useCollection, useCollectionQuery, useCollectionStore, useCollectionsQuery, useConnectedShopify, useCreateCart, useCurrency, useCurrentDevice, useCurrentVariant, useCurrentVariantInStock, useEditorMode, useFeaturedImageGlobal, useFormatMoney, useInitialSwatchesOptions, useIsSampleProduct, useIsStorefrontProduct, useIsSyncProduct, useIsomorphicLayoutEffect, useLazyVideo, useLoadScript, useLocale, useMatchMutate, useMobileOnly, useModalStore, useMoney, useMoneyFormat, usePageStore, usePageType, usePluginEnable, usePrevious, useProduct, useProductList, useProductListProducts, useProductListSettings, useProductListStore, useProductListStyles, useProductOfferDiscount, useProductProperties, useProductQuery, useProductStore, useProductsQuery, useProductsQueryAll, useQuantity, useRemoveCartItem, useSection, useSectionStore, useSelectedOption, useShopStore, useStoreFront, useSuspenseFetch, useSwatches, useSwatchesOptions, useUniqProductID, useUpdateCartItem, useVariant, useVariantOutStock, useVariants, validateEmail };
|