@datlv-trustshop/shopify-inapp-components 0.2.8 â 0.2.10
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/components/AppList.d.ts +1 -0
- package/dist/components/AppList.d.ts.map +1 -0
- package/dist/components/AppList.js +1 -0
- package/dist/components/AppList.js.map +1 -0
- package/dist/components/ArticleList.d.ts +1 -0
- package/dist/components/ArticleList.d.ts.map +1 -0
- package/dist/components/ArticleList.js +1 -0
- package/dist/components/ArticleList.js.map +1 -0
- package/dist/components/ArticleSlide.d.ts +1 -0
- package/dist/components/ArticleSlide.d.ts.map +1 -0
- package/dist/components/ArticleSlide.js +1 -0
- package/dist/components/ArticleSlide.js.map +1 -0
- package/dist/components/FloatingCard.d.ts +1 -0
- package/dist/components/FloatingCard.d.ts.map +1 -0
- package/dist/components/FloatingCard.js +5 -4
- package/dist/components/FloatingCard.js.map +1 -0
- package/dist/components/FooterBanner.d.ts +1 -0
- package/dist/components/FooterBanner.d.ts.map +1 -0
- package/dist/components/FooterBanner.js +1 -0
- package/dist/components/FooterBanner.js.map +1 -0
- package/dist/components/GrowApps.d.ts +6 -6
- package/dist/components/GrowApps.d.ts.map +1 -0
- package/dist/components/GrowApps.js +11 -3
- package/dist/components/GrowApps.js.map +1 -0
- package/dist/components/ImageLoading.d.ts +1 -0
- package/dist/components/ImageLoading.d.ts.map +1 -0
- package/dist/components/ImageLoading.js +1 -0
- package/dist/components/ImageLoading.js.map +1 -0
- package/dist/components/PartnerIntegration.d.ts +8 -8
- package/dist/components/PartnerIntegration.d.ts.map +1 -0
- package/dist/components/PartnerIntegration.js +15 -76
- package/dist/components/PartnerIntegration.js.map +1 -0
- package/dist/components/PartnerList.d.ts +1 -0
- package/dist/components/PartnerList.d.ts.map +1 -0
- package/dist/components/PartnerList.js +1 -0
- package/dist/components/PartnerList.js.map +1 -0
- package/dist/components/PopupBanner.d.ts +4 -4
- package/dist/components/PopupBanner.d.ts.map +1 -0
- package/dist/components/PopupBanner.js +5 -1
- package/dist/components/PopupBanner.js.map +1 -0
- package/dist/components/TopBanner.d.ts +7 -7
- package/dist/components/TopBanner.d.ts.map +1 -0
- package/dist/components/TopBanner.js +15 -30
- package/dist/components/TopBanner.js.map +1 -0
- package/dist/components/WhatsNew.d.ts +6 -7
- package/dist/components/WhatsNew.d.ts.map +1 -0
- package/dist/components/WhatsNew.js +23 -25
- package/dist/components/WhatsNew.js.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/inlineStyles.d.ts +1 -0
- package/dist/components/inlineStyles.d.ts.map +1 -0
- package/dist/components/inlineStyles.js +1 -0
- package/dist/components/inlineStyles.js.map +1 -0
- package/dist/components/styles.d.ts +1 -0
- package/dist/components/styles.d.ts.map +1 -0
- package/dist/components/styles.js +1 -0
- package/dist/components/styles.js.map +1 -0
- package/dist/config/component-defaults.d.ts +71 -0
- package/dist/config/component-defaults.d.ts.map +1 -0
- package/dist/config/component-defaults.js +106 -0
- package/dist/config/component-defaults.js.map +1 -0
- package/dist/config/internal-config.d.ts +28 -0
- package/dist/config/internal-config.d.ts.map +1 -0
- package/dist/config/internal-config.js +100 -0
- package/dist/config/internal-config.js.map +1 -0
- package/dist/core/SDKManager.d.ts +262 -0
- package/dist/core/SDKManager.d.ts.map +1 -0
- package/dist/core/SDKManager.js +527 -0
- package/dist/core/SDKManager.js.map +1 -0
- package/dist/core/adapter.d.ts +1 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +1 -0
- package/dist/core/adapter.js.map +1 -0
- package/dist/core/engine.d.ts +1 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +1 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/fetcher.d.ts +1 -0
- package/dist/core/fetcher.d.ts.map +1 -0
- package/dist/core/fetcher.js +1 -0
- package/dist/core/fetcher.js.map +1 -0
- package/dist/core/global-manager.d.ts +1 -0
- package/dist/core/global-manager.d.ts.map +1 -0
- package/dist/core/global-manager.js +1 -0
- package/dist/core/global-manager.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -3
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -3
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useApps.d.ts +1 -0
- package/dist/hooks/useApps.d.ts.map +1 -0
- package/dist/hooks/useApps.js +10 -9
- package/dist/hooks/useApps.js.map +1 -0
- package/dist/hooks/useArticles.d.ts +1 -0
- package/dist/hooks/useArticles.d.ts.map +1 -0
- package/dist/hooks/useArticles.js +10 -14
- package/dist/hooks/useArticles.js.map +1 -0
- package/dist/hooks/useBanner.d.ts +1 -0
- package/dist/hooks/useBanner.d.ts.map +1 -0
- package/dist/hooks/useBanner.js +6 -5
- package/dist/hooks/useBanner.js.map +1 -0
- package/dist/hooks/useCampaignTracking.d.ts +1 -0
- package/dist/hooks/useCampaignTracking.d.ts.map +1 -0
- package/dist/hooks/useCampaignTracking.js +1 -0
- package/dist/hooks/useCampaignTracking.js.map +1 -0
- package/dist/hooks/useDashboard.d.ts +1 -0
- package/dist/hooks/useDashboard.d.ts.map +1 -0
- package/dist/hooks/useDashboard.js +18 -9
- package/dist/hooks/useDashboard.js.map +1 -0
- package/dist/hooks/useFloatingCards.d.ts +4 -2
- package/dist/hooks/useFloatingCards.d.ts.map +1 -0
- package/dist/hooks/useFloatingCards.js +52 -76
- package/dist/hooks/useFloatingCards.js.map +1 -0
- package/dist/hooks/usePartnerIntegration.d.ts +7 -2
- package/dist/hooks/usePartnerIntegration.d.ts.map +1 -0
- package/dist/hooks/usePartnerIntegration.js +26 -37
- package/dist/hooks/usePartnerIntegration.js.map +1 -0
- package/dist/hooks/useTranslations.d.ts +1 -0
- package/dist/hooks/useTranslations.d.ts.map +1 -0
- package/dist/hooks/useTranslations.js +5 -3
- package/dist/hooks/useTranslations.js.map +1 -0
- package/dist/hooks/useWhatsNew.d.ts +1 -0
- package/dist/hooks/useWhatsNew.d.ts.map +1 -0
- package/dist/hooks/useWhatsNew.js +9 -8
- package/dist/hooks/useWhatsNew.js.map +1 -0
- package/dist/index.d.ts +38 -22
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -22
- package/dist/index.js.map +1 -0
- package/dist/translations/default.d.ts +1 -0
- package/dist/translations/default.d.ts.map +1 -0
- package/dist/translations/default.js +1 -0
- package/dist/translations/default.js.map +1 -0
- package/dist/translations/locales/cn.json +39 -0
- package/dist/translations/locales/de.json +39 -0
- package/dist/translations/locales/dk.json +39 -0
- package/dist/translations/locales/en.json +39 -0
- package/dist/translations/locales/es.json +39 -0
- package/dist/translations/locales/fr.json +39 -0
- package/dist/translations/locales/ie.json +39 -0
- package/dist/translations/locales/in.json +39 -0
- package/dist/translations/locales/it.json +39 -0
- package/dist/translations/locales/jp.json +39 -0
- package/dist/translations/locales/nl.json +39 -0
- package/dist/translations/locales/nz.json +39 -0
- package/dist/translations/locales/pt.json +39 -0
- package/dist/translations/locales/se.json +39 -0
- package/dist/translations/locales/vi.json +39 -0
- package/dist/translations/translation-manager.d.ts +89 -0
- package/dist/translations/translation-manager.d.ts.map +1 -0
- package/dist/translations/translation-manager.js +239 -0
- package/dist/translations/translation-manager.js.map +1 -0
- package/dist/types/app.d.ts +1 -0
- package/dist/types/app.d.ts.map +1 -0
- package/dist/types/app.js +1 -0
- package/dist/types/app.js.map +1 -0
- package/dist/types/article.d.ts +1 -0
- package/dist/types/article.d.ts.map +1 -0
- package/dist/types/article.js +1 -0
- package/dist/types/article.js.map +1 -0
- package/dist/types/banner.d.ts +1 -0
- package/dist/types/banner.d.ts.map +1 -0
- package/dist/types/banner.js +1 -0
- package/dist/types/banner.js.map +1 -0
- package/dist/types/component-props.d.ts +140 -0
- package/dist/types/component-props.d.ts.map +1 -0
- package/dist/types/component-props.js +6 -0
- package/dist/types/component-props.js.map +1 -0
- package/dist/types/dashboard.d.ts +1 -0
- package/dist/types/dashboard.d.ts.map +1 -0
- package/dist/types/dashboard.js +1 -0
- package/dist/types/dashboard.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/integration.d.ts +1 -0
- package/dist/types/integration.d.ts.map +1 -0
- package/dist/types/integration.js +1 -0
- package/dist/types/integration.js.map +1 -0
- package/dist/types/partner.d.ts +1 -0
- package/dist/types/partner.d.ts.map +1 -0
- package/dist/types/partner.js +1 -0
- package/dist/types/partner.js.map +1 -0
- package/dist/types/product-update.d.ts +1 -0
- package/dist/types/product-update.d.ts.map +1 -0
- package/dist/types/product-update.js +1 -0
- package/dist/types/product-update.js.map +1 -0
- package/dist/types/translations.d.ts +1 -0
- package/dist/types/translations.d.ts.map +1 -0
- package/dist/types/translations.js +1 -0
- package/dist/types/translations.js.map +1 -0
- package/dist/utils/campaignTracking.d.ts +1 -0
- package/dist/utils/campaignTracking.d.ts.map +1 -0
- package/dist/utils/campaignTracking.js +1 -0
- package/dist/utils/campaignTracking.js.map +1 -0
- package/dist/utils/cls-monitor.d.ts +1 -0
- package/dist/utils/cls-monitor.d.ts.map +1 -0
- package/dist/utils/cls-monitor.js +1 -0
- package/dist/utils/cls-monitor.js.map +1 -0
- package/dist/utils/injectStyles.d.ts +1 -0
- package/dist/utils/injectStyles.d.ts.map +1 -0
- package/dist/utils/injectStyles.js +1 -0
- package/dist/utils/injectStyles.js.map +1 -0
- package/dist/utils/sessionManager.d.ts +1 -0
- package/dist/utils/sessionManager.d.ts.map +1 -0
- package/dist/utils/sessionManager.js +1 -0
- package/dist/utils/sessionManager.js.map +1 -0
- package/package.json +4 -3
- package/dist/hooks/useFloatingCardActions.d.ts +0 -17
- package/dist/hooks/useFloatingCardActions.js +0 -54
- package/dist/hooks/useFloatingCardEngine.d.ts +0 -21
- package/dist/hooks/useFloatingCardEngine.js +0 -39
- package/dist/hooks/useGrowApps.d.ts +0 -10
- package/dist/hooks/useGrowApps.js +0 -14
- package/dist/provider/DashboardProvider.d.ts +0 -36
- package/dist/provider/DashboardProvider.js +0 -200
|
@@ -1,71 +1,42 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback } from "react";
|
|
2
|
-
import {
|
|
1
|
+
import { useState, useEffect, useCallback, useMemo } from "react";
|
|
2
|
+
import { useSDK } from "../core/SDKManager";
|
|
3
|
+
import SDKManager from "../core/SDKManager";
|
|
3
4
|
/**
|
|
4
5
|
* Hook to fetch and manage floating cards (campaigns)
|
|
6
|
+
* Now uses SDK-managed campaigns data
|
|
5
7
|
*/
|
|
6
8
|
export function useFloatingCards(options = {}) {
|
|
7
|
-
const {
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const locale = propsLocale || contextLocale || "en";
|
|
13
|
-
const [cards, setCards] = useState([]);
|
|
14
|
-
const [loading, setLoading] = useState(false);
|
|
15
|
-
const [error, setError] = useState(null);
|
|
9
|
+
const {
|
|
10
|
+
// SDK options
|
|
11
|
+
shopInfo, locale: propsLocale, translations, config, } = options;
|
|
12
|
+
// Get SDK state and auto-initialize
|
|
13
|
+
const sdk = useSDK({ shopInfo, locale: propsLocale, translations, config });
|
|
16
14
|
const [dismissedCards, setDismissedCards] = useState(new Set());
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
setError(null);
|
|
24
|
-
try {
|
|
25
|
-
const id = shopId;
|
|
26
|
-
const apiUrl = typeof window !== "undefined" &&
|
|
27
|
-
window.location.hostname === "localhost"
|
|
28
|
-
? `/api/campaigns?shop_id=${id}&locale=${locale}`
|
|
29
|
-
: `https://ops.trustshop.io/api/campaigns?shop_id=${id}&locale=${locale}`;
|
|
30
|
-
const response = await fetch(apiUrl, {
|
|
31
|
-
method: "GET",
|
|
32
|
-
headers: {
|
|
33
|
-
Accept: "application/json",
|
|
34
|
-
"Content-Type": "application/json",
|
|
35
|
-
},
|
|
36
|
-
credentials: "include",
|
|
37
|
-
});
|
|
38
|
-
if (!response.ok) {
|
|
39
|
-
throw new Error(`Failed to fetch campaigns: ${response.statusText}`);
|
|
40
|
-
}
|
|
41
|
-
const data = await response.json();
|
|
42
|
-
if (data.success && Array.isArray(data.data)) {
|
|
43
|
-
const transformedCards = data.data.map((card) => ({
|
|
44
|
-
...card,
|
|
45
|
-
// Ensure date format
|
|
46
|
-
date: card.date || `Updated: ${new Date().toLocaleDateString()}`,
|
|
47
|
-
// Transform tag tone if needed
|
|
48
|
-
tag: card.tag
|
|
49
|
-
? {
|
|
50
|
-
...card.tag,
|
|
51
|
-
tone: card.tag.tone || "info",
|
|
52
|
-
}
|
|
53
|
-
: undefined,
|
|
54
|
-
}));
|
|
55
|
-
setCards(transformedCards);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
setCards([]);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
setError(err instanceof Error ? err : new Error("Unknown error"));
|
|
63
|
-
setCards([]);
|
|
64
|
-
}
|
|
65
|
-
finally {
|
|
66
|
-
setLoading(false);
|
|
15
|
+
// Get campaigns data directly from SDK
|
|
16
|
+
const campaignsData = SDKManager.getCampaignsData();
|
|
17
|
+
// Transform campaigns data to FloatingCardData format
|
|
18
|
+
const cards = useMemo(() => {
|
|
19
|
+
if (!campaignsData || !Array.isArray(campaignsData)) {
|
|
20
|
+
return [];
|
|
67
21
|
}
|
|
68
|
-
|
|
22
|
+
return campaignsData.map((card) => ({
|
|
23
|
+
...card,
|
|
24
|
+
// Ensure date format
|
|
25
|
+
date: card.date || `Updated: ${new Date().toLocaleDateString()}`,
|
|
26
|
+
// Transform tag tone if needed
|
|
27
|
+
tag: card.tag
|
|
28
|
+
? {
|
|
29
|
+
...card.tag,
|
|
30
|
+
tone: card.tag.tone || "info",
|
|
31
|
+
}
|
|
32
|
+
: undefined,
|
|
33
|
+
}));
|
|
34
|
+
}, [campaignsData]);
|
|
35
|
+
// Dummy fetchCards for backward compatibility
|
|
36
|
+
const fetchCards = useCallback(async () => {
|
|
37
|
+
// Data is now managed by SDK, this is a no-op
|
|
38
|
+
// console.log("Campaigns data is now managed by SDK automatically");
|
|
39
|
+
}, []);
|
|
69
40
|
const dismissCard = useCallback((cardId) => {
|
|
70
41
|
setDismissedCards((prev) => {
|
|
71
42
|
const newSet = new Set(prev);
|
|
@@ -104,16 +75,20 @@ export function useFloatingCards(options = {}) {
|
|
|
104
75
|
console.error("Failed to load dismissed cards:", e);
|
|
105
76
|
}
|
|
106
77
|
}, []);
|
|
107
|
-
//
|
|
78
|
+
// Listen for campaigns refresh events from SDK
|
|
108
79
|
useEffect(() => {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
80
|
+
const handleCampaignsRefresh = (_event) => {
|
|
81
|
+
// console.log("Campaigns refreshed via SDK:", _event.detail);
|
|
82
|
+
};
|
|
83
|
+
window.addEventListener("trustshop-campaigns-refresh", handleCampaignsRefresh);
|
|
84
|
+
return () => {
|
|
85
|
+
window.removeEventListener("trustshop-campaigns-refresh", handleCampaignsRefresh);
|
|
86
|
+
};
|
|
87
|
+
}, []);
|
|
113
88
|
return {
|
|
114
89
|
cards,
|
|
115
|
-
loading,
|
|
116
|
-
error,
|
|
90
|
+
loading: sdk.campaignsLoading || false,
|
|
91
|
+
error: sdk.campaignsError || null,
|
|
117
92
|
dismissedCards,
|
|
118
93
|
dismissCard,
|
|
119
94
|
resetDismissedCards,
|
|
@@ -153,13 +128,13 @@ export function useVisibleFloatingCards(options = {}) {
|
|
|
153
128
|
// Debug log for development
|
|
154
129
|
if (typeof window !== "undefined" &&
|
|
155
130
|
window.location.hostname === "localhost") {
|
|
156
|
-
console.log("[FloatingCard] Route matching:", {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
});
|
|
131
|
+
// console.log("[FloatingCard] Route matching:", {
|
|
132
|
+
// cardId: card.id,
|
|
133
|
+
// currentRoute,
|
|
134
|
+
// currentPage,
|
|
135
|
+
// display_pages: card.display_pages,
|
|
136
|
+
// matches: card.display_pages.includes(currentPage),
|
|
137
|
+
// });
|
|
163
138
|
}
|
|
164
139
|
// Check if current page is in display_pages
|
|
165
140
|
return card.display_pages.includes(currentPage);
|
|
@@ -180,3 +155,4 @@ export function useVisibleFloatingCards(options = {}) {
|
|
|
180
155
|
hasDismissedCards,
|
|
181
156
|
};
|
|
182
157
|
}
|
|
158
|
+
//# sourceMappingURL=useFloatingCards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFloatingCards.js","sourceRoot":"","sources":["../../src/hooks/useFloatingCards.ts"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useCallback, useMemo } from \"react\";\nimport type { FloatingCardData } from \"../components/FloatingCard\";\nimport { useSDK, type UseSDKOptions } from \"../core/SDKManager\";\nimport SDKManager from \"../core/SDKManager\";\nexport type { FloatingCardData } from \"../components/FloatingCard\";\n\ninterface UseFloatingCardsOptions extends UseSDKOptions {\n shopId?: string;\n autoFetch?: boolean;\n currentRoute?: string;\n}\n\ninterface UseFloatingCardsReturn {\n cards: FloatingCardData[];\n loading: boolean;\n error: Error | null;\n dismissedCards: Set<number>;\n dismissCard: (cardId: number) => void;\n resetDismissedCards: () => void;\n fetchCards: () => Promise<void>;\n}\n\n/**\n * Hook to fetch and manage floating cards (campaigns)\n * Now uses SDK-managed campaigns data\n */\nexport function useFloatingCards(\n options: UseFloatingCardsOptions = {},\n): UseFloatingCardsReturn {\n const {\n // SDK options\n shopInfo,\n locale: propsLocale,\n translations,\n config,\n } = options;\n\n // Get SDK state and auto-initialize\n const sdk = useSDK({ shopInfo, locale: propsLocale, translations, config });\n\n const [dismissedCards, setDismissedCards] = useState<Set<number>>(new Set());\n\n // Get campaigns data directly from SDK\n const campaignsData = SDKManager.getCampaignsData();\n\n // Transform campaigns data to FloatingCardData format\n const cards = useMemo(() => {\n if (!campaignsData || !Array.isArray(campaignsData)) {\n return [];\n }\n\n return campaignsData.map((card: any) => ({\n ...card,\n // Ensure date format\n date: card.date || `Updated: ${new Date().toLocaleDateString()}`,\n // Transform tag tone if needed\n tag: card.tag\n ? {\n ...card.tag,\n tone: card.tag.tone || \"info\",\n }\n : undefined,\n })) as FloatingCardData[];\n }, [campaignsData]);\n\n // Dummy fetchCards for backward compatibility\n const fetchCards = useCallback(async () => {\n // Data is now managed by SDK, this is a no-op\n // console.log(\"Campaigns data is now managed by SDK automatically\");\n }, []);\n\n const dismissCard = useCallback((cardId: number) => {\n setDismissedCards((prev) => {\n const newSet = new Set(prev);\n newSet.add(cardId);\n\n // Store in localStorage for persistence\n try {\n localStorage.setItem(\n \"trustshop_dismissed_cards\",\n JSON.stringify(Array.from(newSet)),\n );\n } catch (e) {\n console.error(\"Failed to save dismissed cards:\", e);\n }\n\n return newSet;\n });\n }, []);\n\n const resetDismissedCards = useCallback(() => {\n setDismissedCards(new Set());\n try {\n localStorage.removeItem(\"trustshop_dismissed_cards\");\n } catch (e) {\n console.error(\"Failed to clear dismissed cards:\", e);\n }\n }, []);\n\n // Load dismissed cards from localStorage on mount\n useEffect(() => {\n try {\n const stored = localStorage.getItem(\"trustshop_dismissed_cards\");\n if (stored) {\n const parsed = JSON.parse(stored);\n if (Array.isArray(parsed)) {\n setDismissedCards(new Set(parsed));\n }\n }\n } catch (e) {\n console.error(\"Failed to load dismissed cards:\", e);\n }\n }, []);\n\n // Listen for campaigns refresh events from SDK\n useEffect(() => {\n const handleCampaignsRefresh = (_event: any) => {\n // console.log(\"Campaigns refreshed via SDK:\", _event.detail);\n };\n\n window.addEventListener(\n \"trustshop-campaigns-refresh\",\n handleCampaignsRefresh,\n );\n\n return () => {\n window.removeEventListener(\n \"trustshop-campaigns-refresh\",\n handleCampaignsRefresh,\n );\n };\n }, []);\n\n return {\n cards,\n loading: sdk.campaignsLoading || false,\n error: sdk.campaignsError || null,\n dismissedCards,\n dismissCard,\n resetDismissedCards,\n fetchCards,\n };\n}\n\n/**\n * Get visible (non-dismissed) cards\n */\nexport function useVisibleFloatingCards(\n options: UseFloatingCardsOptions = {},\n): {\n visibleCards: FloatingCardData[];\n loading: boolean;\n error: Error | null;\n dismissCard: (cardId: number) => void;\n resetDismissedCards: () => void;\n hasDismissedCards: boolean;\n} {\n const { currentRoute, ...restOptions } = options;\n // Note: locale is passed through in restOptions\n const {\n cards,\n loading,\n error,\n dismissedCards,\n dismissCard,\n resetDismissedCards,\n } = useFloatingCards(restOptions);\n\n // Filter cards based on:\n // 1. Not dismissed\n // 2. Route matching (if display_pages is set)\n const visibleCards = cards.filter((card) => {\n // Check if card is dismissed\n if (dismissedCards.has(card.id)) {\n return false;\n }\n\n // Check display_pages logic\n if (card.display_pages !== undefined && card.display_pages !== null) {\n // If display_pages is empty array, show on all pages\n if (card.display_pages.length === 0) {\n return true;\n }\n\n // If display_pages has values, check if current route matches\n if (currentRoute !== undefined) {\n // Extract the page key from the route\n // Special handling: \"/\" or \"\" should map to \"dashboard\"\n let currentPage = currentRoute.replace(/^\\//, \"\").split(\"/\")[0];\n\n // Map root route to dashboard (in-app convention)\n if (!currentPage || currentPage === \"\" || currentRoute === \"/\") {\n currentPage = \"dashboard\";\n }\n\n // Debug log for development\n if (\n typeof window !== \"undefined\" &&\n window.location.hostname === \"localhost\"\n ) {\n // console.log(\"[FloatingCard] Route matching:\", {\n // cardId: card.id,\n // currentRoute,\n // currentPage,\n // display_pages: card.display_pages,\n // matches: card.display_pages.includes(currentPage),\n // });\n }\n\n // Check if current page is in display_pages\n return card.display_pages.includes(currentPage);\n }\n\n // If no current route provided, assume dashboard\n return card.display_pages.includes(\"dashboard\");\n }\n\n // If display_pages is not defined, show on all pages (backward compatibility)\n return true;\n });\n\n const hasDismissedCards = dismissedCards.size > 0;\n\n return {\n visibleCards,\n loading,\n error,\n dismissCard,\n resetDismissedCards,\n hasDismissedCards,\n };\n}\n"]}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { IntegrationItem
|
|
1
|
+
import { IntegrationItem } from "../types/integration";
|
|
2
2
|
/**
|
|
3
3
|
* Hook to get all partner integrations from dashboard data
|
|
4
4
|
*/
|
|
5
5
|
export declare function usePartnerIntegrations(): {
|
|
6
|
-
groups:
|
|
6
|
+
groups: {
|
|
7
|
+
key: string;
|
|
8
|
+
title: string;
|
|
9
|
+
items: any[];
|
|
10
|
+
}[];
|
|
7
11
|
loading: boolean;
|
|
8
12
|
error: Error | null;
|
|
9
13
|
integrations: any[];
|
|
@@ -20,3 +24,4 @@ export declare function usePartnerIntegrationStatus(key: string): {
|
|
|
20
24
|
isActive: boolean;
|
|
21
25
|
isInstalled: boolean;
|
|
22
26
|
};
|
|
27
|
+
//# sourceMappingURL=usePartnerIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePartnerIntegration.d.ts","sourceRoot":"","sources":["../../src/hooks/usePartnerIntegration.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,sBAAsB;;;;;;;;;EAiCrC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,GACV,eAAe,GAAG,IAAI,CAMxB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG;IACxD,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;CACtB,CAeA"}
|
|
@@ -1,49 +1,37 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { useSDK } from "../core/SDKManager";
|
|
3
|
+
import SDKManager from "../core/SDKManager";
|
|
3
4
|
/**
|
|
4
5
|
* Hook to get all partner integrations from dashboard data
|
|
5
6
|
*/
|
|
6
7
|
export function usePartnerIntegrations() {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
groupsMap.push({
|
|
15
|
-
title: translations.partnerIntegration?.reviewSourcesTitle ||
|
|
16
|
-
"Review Sources",
|
|
17
|
-
key: "review_sources",
|
|
18
|
-
items: reviewSources.sort((a, b) => a.position - b.position),
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
const postPurchase = integrations.filter((item) => item.category_key === "post_purchase_automation");
|
|
22
|
-
if (postPurchase.length > 0) {
|
|
23
|
-
groupsMap.push({
|
|
24
|
-
title: translations.partnerIntegration?.postPurchaseTitle ||
|
|
25
|
-
"Post-purchase & Automation",
|
|
26
|
-
key: "post_purchase_automation",
|
|
27
|
-
items: postPurchase.sort((a, b) => a.position - b.position),
|
|
28
|
-
});
|
|
8
|
+
const sdk = useSDK({});
|
|
9
|
+
// Get dashboard data from SDK
|
|
10
|
+
const dashboardData = SDKManager.getDashboardData();
|
|
11
|
+
// Partner integrations are stored directly in the integrations field
|
|
12
|
+
const integrations = useMemo(() => {
|
|
13
|
+
if (!dashboardData?.integrations) {
|
|
14
|
+
return [];
|
|
29
15
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
items: seoSnippets.sort((a, b) => a.position - b.position),
|
|
37
|
-
});
|
|
16
|
+
return dashboardData.integrations;
|
|
17
|
+
}, [dashboardData]);
|
|
18
|
+
// Group integrations for backward compatibility
|
|
19
|
+
const groups = useMemo(() => {
|
|
20
|
+
if (!integrations || integrations.length === 0) {
|
|
21
|
+
return [];
|
|
38
22
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
23
|
+
// Create a single group with all integrations for now
|
|
24
|
+
return [{
|
|
25
|
+
key: 'all',
|
|
26
|
+
title: 'All Integrations',
|
|
27
|
+
items: integrations
|
|
28
|
+
}];
|
|
29
|
+
}, [integrations]);
|
|
42
30
|
return {
|
|
43
31
|
groups,
|
|
44
|
-
loading:
|
|
45
|
-
error:
|
|
46
|
-
integrations
|
|
32
|
+
loading: sdk.dashboardLoading || false,
|
|
33
|
+
error: sdk.dashboardError || null,
|
|
34
|
+
integrations,
|
|
47
35
|
};
|
|
48
36
|
}
|
|
49
37
|
/**
|
|
@@ -71,3 +59,4 @@ export function usePartnerIntegrationStatus(key) {
|
|
|
71
59
|
return { isConnected, isActive, isInstalled };
|
|
72
60
|
}, [integration, key]);
|
|
73
61
|
}
|
|
62
|
+
//# sourceMappingURL=usePartnerIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePartnerIntegration.js","sourceRoot":"","sources":["../../src/hooks/usePartnerIntegration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvB,8BAA8B;IAC9B,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAEpD,qEAAqE;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,aAAa,CAAC,YAAY,CAAC;IACpC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,gDAAgD;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,sDAAsD;QACtD,OAAO,CAAC;gBACN,GAAG,EAAE,KAAK;gBACV,KAAK,EAAE,kBAAkB;gBACzB,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO;QACL,MAAM;QACN,OAAO,EAAE,GAAG,CAAC,gBAAgB,IAAI,KAAK;QACtC,KAAK,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QACjC,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,GAAW;IAEX,MAAM,EAAE,YAAY,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAElD,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC;IACpE,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IAKrD,MAAM,WAAW,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAEpD,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACrE,CAAC;QAED,mDAAmD;QACnD,MAAM,WAAW,GAAG,GAAG,KAAK,gBAAgB,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,KAAK,YAAY,CAAC;QACtC,MAAM,WAAW,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAErD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAChD,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC","sourcesContent":["import { useMemo } from \"react\";\nimport { useSDK } from \"../core/SDKManager\";\nimport SDKManager from \"../core/SDKManager\";\nimport { IntegrationItem } from \"../types/integration\";\n\n/**\n * Hook to get all partner integrations from dashboard data\n */\nexport function usePartnerIntegrations() {\n const sdk = useSDK({});\n \n // Get dashboard data from SDK\n const dashboardData = SDKManager.getDashboardData();\n\n // Partner integrations are stored directly in the integrations field\n const integrations = useMemo(() => {\n if (!dashboardData?.integrations) {\n return [];\n }\n return dashboardData.integrations;\n }, [dashboardData]);\n\n // Group integrations for backward compatibility\n const groups = useMemo(() => {\n if (!integrations || integrations.length === 0) {\n return [];\n }\n // Create a single group with all integrations for now\n return [{\n key: 'all',\n title: 'All Integrations',\n items: integrations\n }];\n }, [integrations]);\n\n return {\n groups,\n loading: sdk.dashboardLoading || false,\n error: sdk.dashboardError || null,\n integrations,\n };\n}\n\n/**\n * Hook to get a specific integration by key\n */\nexport function usePartnerIntegrationByKey(\n key: string,\n): IntegrationItem | null {\n const { integrations } = usePartnerIntegrations();\n\n return useMemo(() => {\n return integrations.find((item: any) => item.key === key) || null;\n }, [integrations, key]);\n}\n\n/**\n * Hook to get integration status\n */\nexport function usePartnerIntegrationStatus(key: string): {\n isConnected: boolean;\n isActive: boolean;\n isInstalled: boolean;\n} {\n const integration = usePartnerIntegrationByKey(key);\n\n return useMemo(() => {\n if (!integration) {\n return { isConnected: false, isActive: false, isInstalled: false };\n }\n\n // Check based on integration key and button states\n const isConnected = key === \"google_reviews\";\n const isActive = key !== \"after_ship\";\n const isInstalled = !integration.button_install_text;\n\n return { isConnected, isActive, isInstalled };\n }, [integration, key]);\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { SDKTranslations } from '../types/translations';
|
|
2
2
|
export declare function useTranslations(): Required<SDKTranslations>;
|
|
3
3
|
export declare function useTranslation<K extends keyof SDKTranslations>(key: K): Required<SDKTranslations>[K];
|
|
4
|
+
//# sourceMappingURL=useTranslations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslations.d.ts","sourceRoot":"","sources":["../../src/hooks/useTranslations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,wBAAgB,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC,CAI3D;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,EAC5D,GAAG,EAAE,CAAC,GACL,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAG9B"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSDK } from '../core/SDKManager';
|
|
2
2
|
export function useTranslations() {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
// Legacy hook - use useSDK instead
|
|
4
|
+
const sdk = useSDK({});
|
|
5
|
+
return sdk.translations;
|
|
5
6
|
}
|
|
6
7
|
export function useTranslation(key) {
|
|
7
8
|
const translations = useTranslations();
|
|
8
9
|
return translations[key];
|
|
9
10
|
}
|
|
11
|
+
//# sourceMappingURL=useTranslations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslations.js","sourceRoot":"","sources":["../../src/hooks/useTranslations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,UAAU,eAAe;IAC7B,mCAAmC;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC,YAAY,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAM;IAEN,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import { useSDK } from '../core/SDKManager';\nimport { SDKTranslations } from '../types/translations';\n\nexport function useTranslations(): Required<SDKTranslations> {\n // Legacy hook - use useSDK instead\n const sdk = useSDK({});\n return sdk.translations;\n}\n\nexport function useTranslation<K extends keyof SDKTranslations>(\n key: K\n): Required<SDKTranslations>[K] {\n const translations = useTranslations();\n return translations[key];\n}"]}
|
|
@@ -9,3 +9,4 @@ export interface UseWhatsNewResult {
|
|
|
9
9
|
export declare function useWhatsNew(limit?: number): UseWhatsNewResult;
|
|
10
10
|
export declare function useLatestUpdate(): ProductUpdateItem | null;
|
|
11
11
|
export declare function useMajorUpdates(): ProductUpdateItem[];
|
|
12
|
+
//# sourceMappingURL=useWhatsNew.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNew.d.ts","sourceRoot":"","sources":["../../src/hooks/useWhatsNew.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAClE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,KAAK,iBAAiB,EAAE,CAAC;IAC7E,eAAe,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;CACjD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA+B7D;AAED,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAG1D;AAED,wBAAgB,eAAe,IAAI,iBAAiB,EAAE,CAGrD"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { useSDK } from "../core/SDKManager";
|
|
3
3
|
export function useWhatsNew(limit) {
|
|
4
|
-
const
|
|
4
|
+
const sdk = useSDK();
|
|
5
5
|
const updates = useMemo(() => {
|
|
6
|
-
if (!
|
|
6
|
+
if (!sdk.dashboardEngine)
|
|
7
7
|
return [];
|
|
8
|
-
return
|
|
9
|
-
}, [
|
|
8
|
+
return sdk.dashboardEngine.getWhatsNew(limit);
|
|
9
|
+
}, [sdk.dashboardEngine, sdk.dashboardData, limit]);
|
|
10
10
|
const getUpdate = (id) => {
|
|
11
|
-
return updates.find(
|
|
11
|
+
return updates.find(update => update.id === id || update.id === String(id) || update.id === Number(id));
|
|
12
12
|
};
|
|
13
13
|
const getUpdatesByType = (type) => {
|
|
14
|
-
return updates.filter(
|
|
14
|
+
return updates.filter(update => update.type === type);
|
|
15
15
|
};
|
|
16
16
|
const getLatestUpdate = () => {
|
|
17
17
|
return updates[0] || null;
|
|
18
18
|
};
|
|
19
19
|
return {
|
|
20
20
|
updates,
|
|
21
|
-
loading:
|
|
21
|
+
loading: sdk.dashboardLoading || false,
|
|
22
22
|
getUpdate,
|
|
23
23
|
getUpdatesByType,
|
|
24
24
|
getLatestUpdate,
|
|
@@ -32,3 +32,4 @@ export function useMajorUpdates() {
|
|
|
32
32
|
const { getUpdatesByType } = useWhatsNew();
|
|
33
33
|
return getUpdatesByType("major");
|
|
34
34
|
}
|
|
35
|
+
//# sourceMappingURL=useWhatsNew.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWhatsNew.js","sourceRoot":"","sources":["../../src/hooks/useWhatsNew.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAW5C,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,CAAC,EAAmB,EAAiC,EAAE;QACvE,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC3B,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CACzE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CACvB,IAAiC,EACZ,EAAE;QACvB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAA6B,EAAE;QACrD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;QACP,OAAO,EAAE,GAAG,CAAC,gBAAgB,IAAI,KAAK;QACtC,SAAS;QACT,gBAAgB;QAChB,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;IAC3C,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import { useMemo } from \"react\";\nimport { useSDK } from \"../core/SDKManager\";\nimport { ProductUpdateItem } from \"../types\";\n\nexport interface UseWhatsNewResult {\n updates: ProductUpdateItem[];\n loading: boolean;\n getUpdate: (id: string | number) => ProductUpdateItem | undefined;\n getUpdatesByType: (type: \"major\" | \"minor\" | \"patch\") => ProductUpdateItem[];\n getLatestUpdate: () => ProductUpdateItem | null;\n}\n\nexport function useWhatsNew(limit?: number): UseWhatsNewResult {\n const sdk = useSDK();\n\n const updates = useMemo(() => {\n if (!sdk.dashboardEngine) return [];\n return sdk.dashboardEngine.getWhatsNew(limit);\n }, [sdk.dashboardEngine, sdk.dashboardData, limit]);\n\n const getUpdate = (id: string | number): ProductUpdateItem | undefined => {\n return updates.find(update => \n update.id === id || update.id === String(id) || update.id === Number(id)\n );\n };\n\n const getUpdatesByType = (\n type: \"major\" | \"minor\" | \"patch\",\n ): ProductUpdateItem[] => {\n return updates.filter(update => update.type === type);\n };\n\n const getLatestUpdate = (): ProductUpdateItem | null => {\n return updates[0] || null;\n };\n\n return {\n updates,\n loading: sdk.dashboardLoading || false,\n getUpdate,\n getUpdatesByType,\n getLatestUpdate,\n };\n}\n\nexport function useLatestUpdate(): ProductUpdateItem | null {\n const { updates } = useWhatsNew(1);\n return updates[0] || null;\n}\n\nexport function useMajorUpdates(): ProductUpdateItem[] {\n const { getUpdatesByType } = useWhatsNew();\n return getUpdatesByType(\"major\");\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export {
|
|
1
|
+
/**
|
|
2
|
+
* @trustshop/shopify-inapp-components
|
|
3
|
+
*
|
|
4
|
+
* Provider-less component architecture for Shopify in-app dashboards
|
|
5
|
+
* Components work standalone without any provider wrapper required
|
|
6
|
+
*/
|
|
7
|
+
export { TopBanner } from "./components/TopBanner";
|
|
8
|
+
export { WhatsNew } from "./components/WhatsNew";
|
|
9
|
+
export { GrowApps } from "./components/GrowApps";
|
|
10
|
+
export { PopupBanner } from "./components/PopupBanner";
|
|
11
|
+
export { PartnerIntegration } from "./components/PartnerIntegration";
|
|
12
|
+
export { PartnerList } from "./components/PartnerList";
|
|
13
|
+
export { FloatingCard } from "./components/FloatingCard";
|
|
14
|
+
export type { TopBannerProps } from "./components/TopBanner";
|
|
15
|
+
export type { WhatsNewProps } from "./components/WhatsNew";
|
|
16
|
+
export type { GrowAppsProps } from "./components/GrowApps";
|
|
17
|
+
export type { PopupBannerProps } from "./components/PopupBanner";
|
|
18
|
+
export type { PartnerIntegrationProps, IntegrationStatusInfo } from "./components/PartnerIntegration";
|
|
19
|
+
export type { PartnerListProps } from "./components/PartnerList";
|
|
20
|
+
export { SDKManager } from "./core/SDKManager";
|
|
21
|
+
export { useSDK } from "./core/SDKManager";
|
|
22
|
+
export type { UseSDKOptions } from "./core/SDKManager";
|
|
23
|
+
export type { ShopInfo, SDKInternalConfig } from "./config/internal-config";
|
|
24
|
+
export type { SupportedLocale, SDKTranslations, } from "./translations/translation-manager";
|
|
25
|
+
export { loadTranslations, getTranslations, normalizeLocale, SUPPORTED_LOCALES, LOCALE_METADATA, DEFAULT_LOCALE, } from "./translations/translation-manager";
|
|
26
|
+
export type { BannerItem } from "./types/banner";
|
|
27
|
+
export type { ArticleItem } from "./types/article";
|
|
28
|
+
export type { ProductUpdateItem } from "./types/product-update";
|
|
29
|
+
export type { GrowApp, DashboardConfig } from "./types/dashboard";
|
|
30
|
+
export type { IntegrationItem } from "./types/integration";
|
|
31
|
+
export type { PartnerItem } from "./types/partner";
|
|
32
|
+
export type { FloatingCardData } from "./components/FloatingCard";
|
|
33
|
+
export { CLSMonitor, startCLSMonitoring, stopCLSMonitoring, getCLSMetrics, } from "./utils/cls-monitor";
|
|
11
34
|
export type { CLSMetrics, CLSMonitorOptions } from "./utils/cls-monitor";
|
|
12
|
-
export
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
|
|
17
|
-
export { useCampaignTracking, useCampaignVisibility } from './hooks/useCampaignTracking';
|
|
18
|
-
import { DashboardEngine } from "./core/engine";
|
|
19
|
-
declare const _default: {
|
|
20
|
-
DashboardEngine: typeof DashboardEngine;
|
|
21
|
-
DashboardProvider: import("react").FC<import(".").DashboardProviderProps>;
|
|
22
|
-
};
|
|
23
|
-
export default _default;
|
|
35
|
+
export { trackCampaignView, trackCampaignClick, clearViewTrackingCache, } from "./utils/campaignTracking";
|
|
36
|
+
export { getSessionId, clearSession, hasSession } from "./utils/sessionManager";
|
|
37
|
+
export { useCampaignTracking, useCampaignVisibility } from "./hooks/useCampaignTracking";
|
|
38
|
+
export { useVisibleFloatingCards } from "./hooks/useFloatingCards";
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACtG,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAQjE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG5E,YAAY,EACV,eAAe,EACf,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,oCAAoC,CAAC;AAO5C,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAOlE,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @trustshop/shopify-inapp-components
|
|
3
|
+
*
|
|
4
|
+
* Provider-less component architecture for Shopify in-app dashboards
|
|
5
|
+
* Components work standalone without any provider wrapper required
|
|
6
|
+
*/
|
|
7
|
+
// ============================================
|
|
8
|
+
// PRIMARY EXPORTS - Component-Driven API
|
|
9
|
+
// ============================================
|
|
10
|
+
// Main UI components (auto-initialize, no provider needed)
|
|
11
|
+
export { TopBanner } from "./components/TopBanner";
|
|
12
|
+
export { WhatsNew } from "./components/WhatsNew";
|
|
13
|
+
export { GrowApps } from "./components/GrowApps";
|
|
14
|
+
export { PopupBanner } from "./components/PopupBanner";
|
|
15
|
+
export { PartnerIntegration } from "./components/PartnerIntegration";
|
|
16
|
+
export { PartnerList } from "./components/PartnerList";
|
|
17
|
+
export { FloatingCard } from "./components/FloatingCard";
|
|
18
|
+
// FloatingCard props defined inline in component
|
|
19
|
+
// ============================================
|
|
20
|
+
// ADVANCED CUSTOMIZATION (Optional)
|
|
21
|
+
// ============================================
|
|
22
|
+
// SDK Manager for advanced control (rarely needed)
|
|
23
|
+
export { SDKManager } from "./core/SDKManager";
|
|
24
|
+
export { useSDK } from "./core/SDKManager";
|
|
25
|
+
export { loadTranslations, getTranslations, normalizeLocale, SUPPORTED_LOCALES, LOCALE_METADATA, DEFAULT_LOCALE, } from "./translations/translation-manager";
|
|
26
|
+
// ============================================
|
|
27
|
+
// UTILITIES (Optional)
|
|
28
|
+
// ============================================
|
|
29
|
+
// CLS monitoring (for performance debugging)
|
|
30
|
+
export { CLSMonitor, startCLSMonitoring, stopCLSMonitoring, getCLSMetrics, } from "./utils/cls-monitor";
|
|
31
|
+
// Campaign tracking
|
|
32
|
+
export { trackCampaignView, trackCampaignClick, clearViewTrackingCache, } from "./utils/campaignTracking";
|
|
33
|
+
export { getSessionId, clearSession, hasSession } from "./utils/sessionManager";
|
|
34
|
+
export { useCampaignTracking, useCampaignVisibility } from "./hooks/useCampaignTracking";
|
|
35
|
+
export { useVisibleFloatingCards } from "./hooks/useFloatingCards";
|
|
36
|
+
// ============================================
|
|
37
|
+
// RECOMMENDED USAGE
|
|
38
|
+
// ============================================
|
|
39
|
+
/*
|
|
40
|
+
|
|
41
|
+
⨠SIMPLE USAGE (Recommended)
|
|
42
|
+
|
|
43
|
+
import { TopBanner, WhatsNew, GrowApps } from '@trustshop/shopify-inapp-components';
|
|
44
|
+
|
|
45
|
+
export default function Dashboard() {
|
|
46
|
+
return (
|
|
47
|
+
<>
|
|
48
|
+
<TopBanner />
|
|
49
|
+
<WhatsNew />
|
|
50
|
+
<GrowApps />
|
|
51
|
+
</>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
đ¨ WITH CUSTOMIZATION
|
|
56
|
+
|
|
57
|
+
import { TopBanner, WhatsNew } from '@trustshop/shopify-inapp-components';
|
|
58
|
+
|
|
59
|
+
export default function Dashboard() {
|
|
60
|
+
return (
|
|
61
|
+
<>
|
|
62
|
+
<TopBanner
|
|
63
|
+
shopInfo={{ id: "12345", domain: "shop.myshopify.com" }}
|
|
64
|
+
config={{ apiUrl: "/api/dashboard" }}
|
|
65
|
+
onClose={() => console.log('Banner closed')}
|
|
66
|
+
/>
|
|
67
|
+
<WhatsNew
|
|
68
|
+
locale="fr"
|
|
69
|
+
onProductUpdateClick={(update) => handleUpdate(update)}
|
|
70
|
+
/>
|
|
71
|
+
</>
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
*/
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+CAA+C;AAC/C,yCAAyC;AACzC,+CAA+C;AAE/C,2DAA2D;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AASzD,iDAAiD;AAEjD,+CAA+C;AAC/C,oCAAoC;AACpC,+CAA+C;AAE/C,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAW3C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,oCAAoC,CAAC;AAe5C,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C,6CAA6C;AAC7C,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAG7B,oBAAoB;AACpB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,+CAA+C;AAC/C,oBAAoB;AACpB,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCE","sourcesContent":["/**\n * @trustshop/shopify-inapp-components\n *\n * Provider-less component architecture for Shopify in-app dashboards\n * Components work standalone without any provider wrapper required\n */\n\n// ============================================\n// PRIMARY EXPORTS - Component-Driven API\n// ============================================\n\n// Main UI components (auto-initialize, no provider needed)\nexport { TopBanner } from \"./components/TopBanner\";\nexport { WhatsNew } from \"./components/WhatsNew\";\nexport { GrowApps } from \"./components/GrowApps\";\nexport { PopupBanner } from \"./components/PopupBanner\";\nexport { PartnerIntegration } from \"./components/PartnerIntegration\";\nexport { PartnerList } from \"./components/PartnerList\";\nexport { FloatingCard } from \"./components/FloatingCard\";\n\n// Component prop types\nexport type { TopBannerProps } from \"./components/TopBanner\";\nexport type { WhatsNewProps } from \"./components/WhatsNew\";\nexport type { GrowAppsProps } from \"./components/GrowApps\";\nexport type { PopupBannerProps } from \"./components/PopupBanner\";\nexport type { PartnerIntegrationProps, IntegrationStatusInfo } from \"./components/PartnerIntegration\";\nexport type { PartnerListProps } from \"./components/PartnerList\";\n// FloatingCard props defined inline in component\n\n// ============================================\n// ADVANCED CUSTOMIZATION (Optional)\n// ============================================\n\n// SDK Manager for advanced control (rarely needed)\nexport { SDKManager } from \"./core/SDKManager\";\nexport { useSDK } from \"./core/SDKManager\";\nexport type { UseSDKOptions } from \"./core/SDKManager\";\n\n// Configuration types\nexport type { ShopInfo, SDKInternalConfig } from \"./config/internal-config\";\n\n// Translation types and utilities\nexport type {\n SupportedLocale,\n SDKTranslations,\n} from \"./translations/translation-manager\";\nexport {\n loadTranslations,\n getTranslations,\n normalizeLocale,\n SUPPORTED_LOCALES,\n LOCALE_METADATA,\n DEFAULT_LOCALE,\n} from \"./translations/translation-manager\";\n\n// ============================================\n// DATA TYPES\n// ============================================\n\n// Core data types\nexport type { BannerItem } from \"./types/banner\";\nexport type { ArticleItem } from \"./types/article\";\nexport type { ProductUpdateItem } from \"./types/product-update\";\nexport type { GrowApp, DashboardConfig } from \"./types/dashboard\";\nexport type { IntegrationItem } from \"./types/integration\";\nexport type { PartnerItem } from \"./types/partner\";\nexport type { FloatingCardData } from \"./components/FloatingCard\";\n\n// ============================================\n// UTILITIES (Optional)\n// ============================================\n\n// CLS monitoring (for performance debugging)\nexport {\n CLSMonitor,\n startCLSMonitoring,\n stopCLSMonitoring,\n getCLSMetrics,\n} from \"./utils/cls-monitor\";\nexport type { CLSMetrics, CLSMonitorOptions } from \"./utils/cls-monitor\";\n\n// Campaign tracking\nexport {\n trackCampaignView,\n trackCampaignClick,\n clearViewTrackingCache,\n} from \"./utils/campaignTracking\";\nexport { getSessionId, clearSession, hasSession } from \"./utils/sessionManager\";\nexport { useCampaignTracking, useCampaignVisibility } from \"./hooks/useCampaignTracking\";\nexport { useVisibleFloatingCards } from \"./hooks/useFloatingCards\";\n\n\n// ============================================\n// RECOMMENDED USAGE\n// ============================================\n\n/*\n\n⨠SIMPLE USAGE (Recommended)\n\nimport { TopBanner, WhatsNew, GrowApps } from '@trustshop/shopify-inapp-components';\n\nexport default function Dashboard() {\n return (\n <>\n <TopBanner />\n <WhatsNew />\n <GrowApps />\n </>\n );\n}\n\nđ¨ WITH CUSTOMIZATION\n\nimport { TopBanner, WhatsNew } from '@trustshop/shopify-inapp-components';\n\nexport default function Dashboard() {\n return (\n <>\n <TopBanner \n shopInfo={{ id: \"12345\", domain: \"shop.myshopify.com\" }}\n config={{ apiUrl: \"/api/dashboard\" }}\n onClose={() => console.log('Banner closed')}\n />\n <WhatsNew \n locale=\"fr\"\n onProductUpdateClick={(update) => handleUpdate(update)}\n />\n </>\n );\n}\n\n*/\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/translations/default.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,eAAe,CAsDzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/translations/default.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAA8B;IAC5D,QAAQ,EAAE;QACR,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE;YACJ,OAAO,EAAE,UAAU;YACnB,aAAa,EAAE,iBAAiB;SACjC;QACD,aAAa,EAAE;YACb,OAAO,EAAE,mBAAmB;YAC5B,aAAa,EAAE,kBAAkB;SAClC;QACD,MAAM,EAAE,sBAAsB;KAC/B;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,uBAAuB;QAC9B,QAAQ,EAAE,sEAAsE;QAChF,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,mBAAmB;KAC5B;IACD,MAAM,EAAE;QACN,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,SAAS;KACnB;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,sBAAsB;QAC7B,kBAAkB,EAAE,gBAAgB;QACpC,iBAAiB,EAAE,4BAA4B;QAC/C,gBAAgB,EAAE,qBAAqB;QACvC,MAAM,EAAE,2BAA2B;QACnC,aAAa,EAAE,6CAA6C;QAC5D,UAAU,EAAE,6BAA6B;QACzC,YAAY,EAAE,wBAAwB;QACtC,OAAO,EAAE,aAAa;QACtB,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,YAAY,EAAE;YACZ,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,gBAAgB;YAC9B,kBAAkB,EAAE,sBAAsB;YAC1C,SAAS,EAAE,YAAY;YACvB,OAAO,EAAE,UAAU;YACnB,aAAa,EAAE,gBAAgB;YAC/B,OAAO,EAAE,SAAS;SACnB;KACF;CACF,CAAC","sourcesContent":["import { SDKTranslations } from '../types/translations';\n\nexport const defaultTranslations: Required<SDKTranslations> = {\n whatsNew: {\n title: \"What's New\",\n tabs: {\n article: \"Articles\",\n productUpdate: \"Product Updates\",\n },\n buttonViewAll: {\n article: \"View all articles\",\n productUpdate: \"View all updates\",\n },\n noData: \"No updates available\",\n },\n growApps: {\n title: \"Grow faster with apps\",\n subtitle: \"Discover powerful apps to enhance your store and boost your business\",\n exploreApps: \"Explore apps\",\n install: \"Install\",\n installed: \"Installed\",\n dismiss: \"Dismiss\",\n noData: \"No apps available\",\n },\n banner: {\n learnMore: \"Learn more\",\n dismiss: \"Dismiss\",\n },\n partnerIntegration: {\n title: \"Partner Integrations\",\n reviewSourcesTitle: \"Review Sources\",\n postPurchaseTitle: \"Post-purchase & Automation\",\n seoSnippetsTitle: \"SEO & Rich Snippets\",\n noData: \"No integrations available\",\n noDataMessage: \"Check back later for available integrations\",\n errorTitle: \"Unable to load integrations\",\n errorMessage: \"Please try again later\",\n install: \"Install app\",\n installed: \"Installed\",\n manage: \"Manage\",\n open: \"Open\",\n connect: \"Connect\",\n connected: \"Connected\",\n inactive: \"Inactive\",\n active: \"Active\",\n pending: \"Pending\",\n upgradeBadge: {\n upgradeToBasic: \"Upgrade to Basic\",\n upgradeToPro: \"Upgrade to Pro\",\n upgradeToUnlimited: \"Upgrade to Unlimited\",\n fromBasic: \"From Basic\",\n fromPro: \"From Pro\",\n fromUnlimited: \"From Unlimited\",\n upgrade: \"Upgrade\",\n }\n }\n};"]}
|