@datlv-trustshop/shopify-inapp-components 0.2.8 → 0.2.9
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 +230 -0
- package/dist/core/SDKManager.d.ts.map +1 -0
- package/dist/core/SDKManager.js +380 -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 +1 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useApps.d.ts +2 -1
- package/dist/hooks/useApps.d.ts.map +1 -0
- package/dist/hooks/useApps.js +8 -15
- 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 +14 -18
- package/dist/hooks/useArticles.js.map +1 -0
- package/dist/hooks/useBanner.d.ts +2 -1
- package/dist/hooks/useBanner.d.ts.map +1 -0
- package/dist/hooks/useBanner.js +14 -15
- 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 +12 -9
- package/dist/hooks/useDashboard.js.map +1 -0
- package/dist/hooks/useFloatingCardActions.d.ts +1 -0
- package/dist/hooks/useFloatingCardActions.d.ts.map +1 -0
- package/dist/hooks/useFloatingCardActions.js +1 -0
- package/dist/hooks/useFloatingCardActions.js.map +1 -0
- package/dist/hooks/useFloatingCardEngine.d.ts +1 -0
- package/dist/hooks/useFloatingCardEngine.d.ts.map +1 -0
- package/dist/hooks/useFloatingCardEngine.js +1 -0
- package/dist/hooks/useFloatingCardEngine.js.map +1 -0
- package/dist/hooks/useFloatingCards.d.ts +3 -2
- package/dist/hooks/useFloatingCards.d.ts.map +1 -0
- package/dist/hooks/useFloatingCards.js +37 -12
- package/dist/hooks/useFloatingCards.js.map +1 -0
- package/dist/hooks/useGrowApps.d.ts +1 -0
- package/dist/hooks/useGrowApps.d.ts.map +1 -0
- package/dist/hooks/useGrowApps.js +1 -0
- package/dist/hooks/useGrowApps.js.map +1 -0
- package/dist/hooks/usePartnerIntegration.d.ts +5 -4
- package/dist/hooks/usePartnerIntegration.d.ts.map +1 -0
- package/dist/hooks/usePartnerIntegration.js +10 -38
- 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 +12 -11
- 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/provider/DashboardProvider.d.ts +0 -36
- package/dist/provider/DashboardProvider.js +0 -200
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { useState, useEffect, useCallback } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { useSDK } from "../core/SDKManager";
|
|
3
3
|
/**
|
|
4
4
|
* Hook to fetch and manage floating cards (campaigns)
|
|
5
5
|
*/
|
|
6
6
|
export function useFloatingCards(options = {}) {
|
|
7
|
-
const { shopId, autoFetch = true,
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const { shopId: propsShopId, autoFetch = true,
|
|
8
|
+
// SDK options
|
|
9
|
+
shopInfo, locale: propsLocale, translations, config, } = options;
|
|
10
|
+
// Get SDK state and auto-initialize
|
|
11
|
+
const sdk = useSDK({ shopInfo, locale: propsLocale, translations, config });
|
|
12
|
+
// Use shopId from props or SDK shopInfo
|
|
13
|
+
const shopId = propsShopId || sdk.shopInfo?.id;
|
|
14
|
+
// Use locale from SDK
|
|
15
|
+
const locale = sdk.locale;
|
|
13
16
|
const [cards, setCards] = useState([]);
|
|
14
17
|
const [loading, setLoading] = useState(false);
|
|
15
18
|
const [error, setError] = useState(null);
|
|
@@ -23,15 +26,36 @@ export function useFloatingCards(options = {}) {
|
|
|
23
26
|
setError(null);
|
|
24
27
|
try {
|
|
25
28
|
const id = shopId;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
// Extract base URL from SDK config or use defaults
|
|
30
|
+
// sdk.config.apiUrl is typically "/api/dashboard", we need just the base "/api" part
|
|
31
|
+
let baseUrl;
|
|
32
|
+
if (sdk.config?.apiUrl) {
|
|
33
|
+
// Extract base URL from dashboard API URL
|
|
34
|
+
// "/api/dashboard" -> "/api"
|
|
35
|
+
// "https://ops.trustshop.io/api/dashboard" -> "https://ops.trustshop.io/api"
|
|
36
|
+
const configUrl = sdk.config.apiUrl;
|
|
37
|
+
if (configUrl.includes('/dashboard')) {
|
|
38
|
+
baseUrl = configUrl.replace('/dashboard', '');
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Fallback: assume it's already the base API URL
|
|
42
|
+
baseUrl = configUrl;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Default fallback
|
|
47
|
+
baseUrl = typeof window !== "undefined" &&
|
|
48
|
+
window.location.hostname === "localhost"
|
|
49
|
+
? "/api"
|
|
50
|
+
: "https://ops.trustshop.io/api";
|
|
51
|
+
}
|
|
52
|
+
const apiUrl = `${baseUrl}/campaigns?shop_id=${id}&locale=${locale}`;
|
|
30
53
|
const response = await fetch(apiUrl, {
|
|
31
54
|
method: "GET",
|
|
32
55
|
headers: {
|
|
33
56
|
Accept: "application/json",
|
|
34
57
|
"Content-Type": "application/json",
|
|
58
|
+
...(sdk.config?.headers || {}),
|
|
35
59
|
},
|
|
36
60
|
credentials: "include",
|
|
37
61
|
});
|
|
@@ -65,7 +89,7 @@ export function useFloatingCards(options = {}) {
|
|
|
65
89
|
finally {
|
|
66
90
|
setLoading(false);
|
|
67
91
|
}
|
|
68
|
-
}, [shopId, locale]);
|
|
92
|
+
}, [shopId, locale, sdk.config?.apiUrl, sdk.config?.headers]);
|
|
69
93
|
const dismissCard = useCallback((cardId) => {
|
|
70
94
|
setDismissedCards((prev) => {
|
|
71
95
|
const newSet = new Set(prev);
|
|
@@ -180,3 +204,4 @@ export function useVisibleFloatingCards(options = {}) {
|
|
|
180
204
|
hasDismissedCards,
|
|
181
205
|
};
|
|
182
206
|
}
|
|
207
|
+
//# 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 } from \"react\";\nimport type { FloatingCardData } from \"../components/FloatingCard\";\nimport { useSDK, type UseSDKOptions } 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 */\nexport function useFloatingCards(\n options: UseFloatingCardsOptions = {},\n): UseFloatingCardsReturn {\n const { \n shopId: propsShopId, \n autoFetch = true, \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 // Use shopId from props or SDK shopInfo\n const shopId = propsShopId || sdk.shopInfo?.id;\n \n // Use locale from SDK\n const locale = sdk.locale;\n\n const [cards, setCards] = useState<FloatingCardData[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [dismissedCards, setDismissedCards] = useState<Set<number>>(new Set());\n\n const fetchCards = useCallback(async () => {\n if (!shopId) {\n setError(new Error(\"Shop ID is required\"));\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const id = shopId;\n \n // Extract base URL from SDK config or use defaults\n // sdk.config.apiUrl is typically \"/api/dashboard\", we need just the base \"/api\" part\n let baseUrl: string;\n \n if (sdk.config?.apiUrl) {\n // Extract base URL from dashboard API URL\n // \"/api/dashboard\" -> \"/api\"\n // \"https://ops.trustshop.io/api/dashboard\" -> \"https://ops.trustshop.io/api\"\n const configUrl = sdk.config.apiUrl;\n if (configUrl.includes('/dashboard')) {\n baseUrl = configUrl.replace('/dashboard', '');\n } else {\n // Fallback: assume it's already the base API URL\n baseUrl = configUrl;\n }\n } else {\n // Default fallback\n baseUrl = typeof window !== \"undefined\" &&\n window.location.hostname === \"localhost\"\n ? \"/api\"\n : \"https://ops.trustshop.io/api\";\n }\n \n const apiUrl = `${baseUrl}/campaigns?shop_id=${id}&locale=${locale}`;\n\n const response = await fetch(apiUrl, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...(sdk.config?.headers || {}),\n },\n credentials: \"include\",\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch campaigns: ${response.statusText}`);\n }\n\n const data = await response.json();\n\n if (data.success && Array.isArray(data.data)) {\n const transformedCards: FloatingCardData[] = data.data.map(\n (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 }),\n );\n\n setCards(transformedCards);\n } else {\n setCards([]);\n }\n } catch (err) {\n setError(err instanceof Error ? err : new Error(\"Unknown error\"));\n setCards([]);\n } finally {\n setLoading(false);\n }\n }, [shopId, locale, sdk.config?.apiUrl, sdk.config?.headers]);\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 // Auto-fetch on mount or when shopId/locale changes\n useEffect(() => {\n if (autoFetch && shopId) {\n fetchCards();\n }\n }, [autoFetch, shopId, fetchCards]); // fetchCards already depends on locale\n\n return {\n cards,\n loading,\n error,\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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGrowApps.d.ts","sourceRoot":"","sources":["../../src/hooks/useGrowApps.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,WAAW;;;;;EAS1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGrowApps.js","sourceRoot":"","sources":["../../src/hooks/useGrowApps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IAEhD,OAAO;QACL,IAAI,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE;QAC3B,OAAO;QACP,KAAK;QACL,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;KACzD,CAAC;AACJ,CAAC","sourcesContent":["import { useDashboard } from \"./useDashboard\";\n\n/**\n * Hook to access grow apps data from the dashboard context\n * @returns Object containing grow apps array and loading/error states\n */\nexport function useGrowApps() {\n const { data, loading, error } = useDashboard();\n\n return {\n apps: data?.grow_apps || [],\n loading,\n error,\n isEmpty: !data?.grow_apps || data.grow_apps.length === 0,\n };\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
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: any[];
|
|
7
7
|
loading: boolean;
|
|
8
|
-
error: Error |
|
|
9
|
-
integrations:
|
|
8
|
+
error: Error | undefined;
|
|
9
|
+
integrations: never[];
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
* Hook to get a specific integration by key
|
|
@@ -20,3 +20,4 @@ export declare function usePartnerIntegrationStatus(key: string): {
|
|
|
20
20
|
isActive: boolean;
|
|
21
21
|
isInstalled: boolean;
|
|
22
22
|
};
|
|
23
|
+
//# sourceMappingURL=usePartnerIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePartnerIntegration.d.ts","sourceRoot":"","sources":["../../src/hooks/usePartnerIntegration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,sBAAsB;;;;;EAerC;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,20 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { useSDK } from "../core/SDKManager";
|
|
3
3
|
/**
|
|
4
4
|
* Hook to get all partner integrations from dashboard data
|
|
5
5
|
*/
|
|
6
6
|
export function usePartnerIntegrations() {
|
|
7
|
-
|
|
7
|
+
// Legacy hook - components should use SDK directly
|
|
8
|
+
const sdk = useSDK({});
|
|
8
9
|
const groups = useMemo(() => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const reviewSources = integrations.filter((item) => item.category_key === "review_sources" && item.key !== "google_reviews");
|
|
13
|
-
if (reviewSources.length > 0) {
|
|
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
|
-
});
|
|
29
|
-
}
|
|
30
|
-
const seoSnippets = integrations.filter((item) => item.category_key === "seo_rich_snippets");
|
|
31
|
-
if (seoSnippets.length > 0) {
|
|
32
|
-
groupsMap.push({
|
|
33
|
-
title: translations.partnerIntegration?.seoSnippetsTitle ||
|
|
34
|
-
"SEO & Rich Snippets",
|
|
35
|
-
key: "seo_rich_snippets",
|
|
36
|
-
items: seoSnippets.sort((a, b) => a.position - b.position),
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
return groupsMap;
|
|
40
|
-
}, [state.data?.integrations, translations]);
|
|
41
|
-
const isLoading = state.loading || (!state.data && !state.error);
|
|
10
|
+
// Returning empty for backward compatibility
|
|
11
|
+
return [];
|
|
12
|
+
}, []);
|
|
42
13
|
return {
|
|
43
14
|
groups,
|
|
44
|
-
loading:
|
|
45
|
-
error:
|
|
46
|
-
integrations:
|
|
15
|
+
loading: sdk.loading,
|
|
16
|
+
error: sdk.error,
|
|
17
|
+
integrations: [],
|
|
47
18
|
};
|
|
48
19
|
}
|
|
49
20
|
/**
|
|
@@ -71,3 +42,4 @@ export function usePartnerIntegrationStatus(key) {
|
|
|
71
42
|
return { isConnected, isActive, isInstalled };
|
|
72
43
|
}, [integration, key]);
|
|
73
44
|
}
|
|
45
|
+
//# 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;AAG5C;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,mDAAmD;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,6CAA6C;QAC7C,OAAO,EAAW,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,MAAM;QACN,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,YAAY,EAAE,EAAE;KACjB,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 { IntegrationItem } from \"../types/integration\";\n\n/**\n * Hook to get all partner integrations from dashboard data\n */\nexport function usePartnerIntegrations() {\n // Legacy hook - components should use SDK directly\n const sdk = useSDK({});\n\n const groups = useMemo(() => {\n // Returning empty for backward compatibility\n return [] as any[];\n }, []);\n\n return {\n groups,\n loading: sdk.loading,\n error: sdk.error,\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,CA8B7D;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
|
-
|
|
4
|
+
// Legacy hook - components should use SDK directly
|
|
5
|
+
const sdk = useSDK({});
|
|
5
6
|
const updates = useMemo(() => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return updates.find((update) => update.id === id);
|
|
7
|
+
// Returning empty for backward compatibility
|
|
8
|
+
return [];
|
|
9
|
+
}, [limit]);
|
|
10
|
+
const getUpdate = (_id) => {
|
|
11
|
+
return undefined; // Legacy compatibility
|
|
12
12
|
};
|
|
13
|
-
const getUpdatesByType = (
|
|
14
|
-
return
|
|
13
|
+
const getUpdatesByType = (_type) => {
|
|
14
|
+
return []; // Legacy compatibility
|
|
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.loading,
|
|
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,mDAAmD;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,6CAA6C;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,SAAS,GAAG,CAAC,GAAoB,EAAiC,EAAE;QACxE,OAAO,SAAS,CAAC,CAAC,uBAAuB;IAC3C,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CACvB,KAAkC,EACb,EAAE;QACvB,OAAO,EAAE,CAAC,CAAC,uBAAuB;IACpC,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,OAAO;QACpB,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 // Legacy hook - components should use SDK directly\n const sdk = useSDK({});\n\n const updates = useMemo(() => {\n // Returning empty for backward compatibility\n return [];\n }, [limit]);\n\n const getUpdate = (_id: string | number): ProductUpdateItem | undefined => {\n return undefined; // Legacy compatibility\n };\n\n const getUpdatesByType = (\n _type: \"major\" | \"minor\" | \"patch\",\n ): ProductUpdateItem[] => {\n return []; // Legacy compatibility\n };\n\n const getLatestUpdate = (): ProductUpdateItem | null => {\n return updates[0] || null;\n };\n\n return {\n updates,\n loading: sdk.loading,\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};"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"whatsNew": {
|
|
3
|
+
"title": "最新动态",
|
|
4
|
+
"tabs": {
|
|
5
|
+
"article": "文章",
|
|
6
|
+
"productUpdate": "产品更新"
|
|
7
|
+
},
|
|
8
|
+
"buttonViewAll": {
|
|
9
|
+
"article": "查看所有文章",
|
|
10
|
+
"productUpdate": "查看所有更新"
|
|
11
|
+
},
|
|
12
|
+
"noData": "当前暂无更新"
|
|
13
|
+
},
|
|
14
|
+
"growApps": {
|
|
15
|
+
"title": "发展您的业务",
|
|
16
|
+
"subtitle": "推荐应用助您成长",
|
|
17
|
+
"install": "安装",
|
|
18
|
+
"installed": "已安装",
|
|
19
|
+
"dismiss": "关闭",
|
|
20
|
+
"noData": "暂无推荐"
|
|
21
|
+
},
|
|
22
|
+
"banner": {
|
|
23
|
+
"learnMore": "了解更多",
|
|
24
|
+
"dismiss": "关闭"
|
|
25
|
+
},
|
|
26
|
+
"partnerIntegration": {
|
|
27
|
+
"reviewSourcesTitle": "评价来源",
|
|
28
|
+
"postPurchaseTitle": "购买后与自动化",
|
|
29
|
+
"seoSnippetsTitle": "SEO 与富媒体摘要",
|
|
30
|
+
"install": "安装应用",
|
|
31
|
+
"manage": "管理",
|
|
32
|
+
"connect": "连接",
|
|
33
|
+
"inactive": "未启用",
|
|
34
|
+
"active": "已启用",
|
|
35
|
+
"upgradeBadge": {
|
|
36
|
+
"upgradeToUnlimited": "从无限版起"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|