@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
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advanced translation management system for SDK
|
|
3
|
+
* Handles multi-language support with lazy loading and fallback
|
|
4
|
+
*/
|
|
5
|
+
export type SupportedLocale = 'cn' | 'de' | 'dk' | 'en' | 'es' | 'fr' | 'ie' | 'in' | 'it' | 'jp' | 'nl' | 'nz' | 'pt' | 'se' | 'vi';
|
|
6
|
+
export interface SDKTranslations {
|
|
7
|
+
whatsNew: {
|
|
8
|
+
title: string;
|
|
9
|
+
tabs: {
|
|
10
|
+
article: string;
|
|
11
|
+
productUpdate: string;
|
|
12
|
+
};
|
|
13
|
+
buttonViewAll: {
|
|
14
|
+
article: string;
|
|
15
|
+
productUpdate: string;
|
|
16
|
+
};
|
|
17
|
+
noData: string;
|
|
18
|
+
};
|
|
19
|
+
growApps: {
|
|
20
|
+
title: string;
|
|
21
|
+
subtitle: string;
|
|
22
|
+
install: string;
|
|
23
|
+
installed: string;
|
|
24
|
+
dismiss: string;
|
|
25
|
+
noData: string;
|
|
26
|
+
};
|
|
27
|
+
banner: {
|
|
28
|
+
learnMore: string;
|
|
29
|
+
dismiss: string;
|
|
30
|
+
};
|
|
31
|
+
partnerIntegration: {
|
|
32
|
+
reviewSourcesTitle: string;
|
|
33
|
+
postPurchaseTitle: string;
|
|
34
|
+
seoSnippetsTitle: string;
|
|
35
|
+
install: string;
|
|
36
|
+
manage: string;
|
|
37
|
+
connect: string;
|
|
38
|
+
inactive: string;
|
|
39
|
+
active: string;
|
|
40
|
+
upgradeBadge: {
|
|
41
|
+
upgradeToUnlimited: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export declare const SUPPORTED_LOCALES: SupportedLocale[];
|
|
46
|
+
export declare const DEFAULT_LOCALE: SupportedLocale;
|
|
47
|
+
export declare const LOCALE_METADATA: Record<SupportedLocale, {
|
|
48
|
+
name: string;
|
|
49
|
+
nativeName: string;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Normalize locale code to supported format
|
|
53
|
+
* Examples: en-US → en, zh-CN → cn, pt-BR → pt
|
|
54
|
+
*/
|
|
55
|
+
export declare const normalizeLocale: (locale: string) => SupportedLocale;
|
|
56
|
+
/**
|
|
57
|
+
* Load translations for a specific locale with lazy loading
|
|
58
|
+
*/
|
|
59
|
+
export declare const loadTranslations: (locale: string | SupportedLocale) => Promise<SDKTranslations>;
|
|
60
|
+
/**
|
|
61
|
+
* Get translations synchronously (from cache or English fallback)
|
|
62
|
+
*/
|
|
63
|
+
export declare const getTranslations: (locale: string | SupportedLocale) => SDKTranslations;
|
|
64
|
+
/**
|
|
65
|
+
* Preload specific locales for better performance
|
|
66
|
+
*/
|
|
67
|
+
export declare const preloadLocales: (locales: (string | SupportedLocale)[]) => Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Clear translation cache (useful for testing or memory management)
|
|
70
|
+
*/
|
|
71
|
+
export declare const clearTranslationCache: () => void;
|
|
72
|
+
/**
|
|
73
|
+
* Get nested translation value by path
|
|
74
|
+
*/
|
|
75
|
+
export declare const getTranslationByPath: (translations: SDKTranslations, path: string) => string;
|
|
76
|
+
/**
|
|
77
|
+
* Merge custom translations with defaults
|
|
78
|
+
*/
|
|
79
|
+
export declare const mergeTranslations: (defaults: SDKTranslations, custom?: Partial<SDKTranslations>) => SDKTranslations;
|
|
80
|
+
/**
|
|
81
|
+
* Get bundle size estimate for a locale
|
|
82
|
+
*/
|
|
83
|
+
export declare const getLocaleBundleSize: (locale: SupportedLocale) => number;
|
|
84
|
+
/**
|
|
85
|
+
* Initialize SDK translations system
|
|
86
|
+
* Call this once when SDK loads
|
|
87
|
+
*/
|
|
88
|
+
export declare const initializeTranslations: (initialLocale?: string, preloadLocales?: string[]) => Promise<void>;
|
|
89
|
+
//# sourceMappingURL=translation-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-manager.d.ts","sourceRoot":"","sources":["../../src/translations/translation-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,eAAe,GACvB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,CAAC;YAChB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC;QACF,aAAa,EAAE;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC;QACF,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,kBAAkB,EAAE;QAClB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE;YACZ,kBAAkB,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;CACH;AAGD,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAG9C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAAsB,CAAC;AAGpD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAgBzF,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,eA6BhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,MAAM,GAAG,eAAe,KAC/B,OAAO,CAAC,eAAe,CAgDzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,GAAG,eAAe,KAAG,eAelE,CAAC;AA6CF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,EAAE,KACpC,OAAO,CAAC,IAAI,CAId,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAO,IAGxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,eAAe,EAC7B,MAAM,MAAM,KACX,MAaF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,eAAe,EACzB,SAAS,OAAO,CAAC,eAAe,CAAC,KAChC,eAoBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,eAAe,KAAG,MAQ7D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,gBAAgB,MAAM,EACtB,iBAAiB,MAAM,EAAE,KACxB,OAAO,CAAC,IAAI,CAcd,CAAC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advanced translation management system for SDK
|
|
3
|
+
* Handles multi-language support with lazy loading and fallback
|
|
4
|
+
*/
|
|
5
|
+
// Locale configuration
|
|
6
|
+
export const SUPPORTED_LOCALES = [
|
|
7
|
+
'cn', 'de', 'dk', 'en', 'es', 'fr', 'ie', 'in',
|
|
8
|
+
'it', 'jp', 'nl', 'nz', 'pt', 'se', 'vi'
|
|
9
|
+
];
|
|
10
|
+
export const DEFAULT_LOCALE = 'en';
|
|
11
|
+
// Locale metadata for better UX
|
|
12
|
+
export const LOCALE_METADATA = {
|
|
13
|
+
cn: { name: 'Chinese (Simplified)', nativeName: '中文' },
|
|
14
|
+
de: { name: 'German', nativeName: 'Deutsch' },
|
|
15
|
+
dk: { name: 'Danish', nativeName: 'Dansk' },
|
|
16
|
+
en: { name: 'English', nativeName: 'English' },
|
|
17
|
+
es: { name: 'Spanish', nativeName: 'Español' },
|
|
18
|
+
fr: { name: 'French', nativeName: 'Français' },
|
|
19
|
+
ie: { name: 'Irish', nativeName: 'Gaeilge' },
|
|
20
|
+
in: { name: 'Hindi', nativeName: 'हिन्दी' },
|
|
21
|
+
it: { name: 'Italian', nativeName: 'Italiano' },
|
|
22
|
+
jp: { name: 'Japanese', nativeName: '日本語' },
|
|
23
|
+
nl: { name: 'Dutch', nativeName: 'Nederlands' },
|
|
24
|
+
nz: { name: 'Maori', nativeName: 'Te Reo Māori' },
|
|
25
|
+
pt: { name: 'Portuguese', nativeName: 'Português' },
|
|
26
|
+
se: { name: 'Swedish', nativeName: 'Svenska' },
|
|
27
|
+
vi: { name: 'Vietnamese', nativeName: 'Tiếng Việt' }
|
|
28
|
+
};
|
|
29
|
+
// Translation cache
|
|
30
|
+
const translationCache = new Map();
|
|
31
|
+
const loadingPromises = new Map();
|
|
32
|
+
/**
|
|
33
|
+
* Normalize locale code to supported format
|
|
34
|
+
* Examples: en-US → en, zh-CN → cn, pt-BR → pt
|
|
35
|
+
*/
|
|
36
|
+
export const normalizeLocale = (locale) => {
|
|
37
|
+
if (!locale)
|
|
38
|
+
return DEFAULT_LOCALE;
|
|
39
|
+
// Direct match
|
|
40
|
+
if (SUPPORTED_LOCALES.includes(locale)) {
|
|
41
|
+
return locale;
|
|
42
|
+
}
|
|
43
|
+
// Extract base locale (en-US → en)
|
|
44
|
+
const base = locale.split(/[-_]/)[0].toLowerCase();
|
|
45
|
+
// Special mappings
|
|
46
|
+
const mappings = {
|
|
47
|
+
'zh': 'cn',
|
|
48
|
+
'da': 'dk',
|
|
49
|
+
'ga': 'ie',
|
|
50
|
+
'hi': 'in',
|
|
51
|
+
'ja': 'jp',
|
|
52
|
+
'mi': 'nz',
|
|
53
|
+
'sv': 'se',
|
|
54
|
+
};
|
|
55
|
+
const mapped = mappings[base] || base;
|
|
56
|
+
if (SUPPORTED_LOCALES.includes(mapped)) {
|
|
57
|
+
return mapped;
|
|
58
|
+
}
|
|
59
|
+
return DEFAULT_LOCALE;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Load translations for a specific locale with lazy loading
|
|
63
|
+
*/
|
|
64
|
+
export const loadTranslations = async (locale) => {
|
|
65
|
+
const normalizedLocale = normalizeLocale(locale);
|
|
66
|
+
// Return from cache if available
|
|
67
|
+
if (translationCache.has(normalizedLocale)) {
|
|
68
|
+
return translationCache.get(normalizedLocale);
|
|
69
|
+
}
|
|
70
|
+
// Return existing loading promise if in progress
|
|
71
|
+
if (loadingPromises.has(normalizedLocale)) {
|
|
72
|
+
return loadingPromises.get(normalizedLocale);
|
|
73
|
+
}
|
|
74
|
+
// Create loading promise
|
|
75
|
+
const loadingPromise = (async () => {
|
|
76
|
+
try {
|
|
77
|
+
// Dynamic import with webpack chunk names for better debugging
|
|
78
|
+
const module = await import(
|
|
79
|
+
/* webpackChunkName: "locale-[request]" */
|
|
80
|
+
`./locales/${normalizedLocale}.json`);
|
|
81
|
+
const translations = module.default || module;
|
|
82
|
+
translationCache.set(normalizedLocale, translations);
|
|
83
|
+
loadingPromises.delete(normalizedLocale);
|
|
84
|
+
return translations;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.warn(`Failed to load translations for '${normalizedLocale}', falling back to English`, error);
|
|
88
|
+
// Try to load English as fallback
|
|
89
|
+
try {
|
|
90
|
+
const fallback = await import('./locales/en.json');
|
|
91
|
+
const translations = fallback.default || fallback;
|
|
92
|
+
translationCache.set(normalizedLocale, translations);
|
|
93
|
+
return translations;
|
|
94
|
+
}
|
|
95
|
+
catch (fallbackError) {
|
|
96
|
+
console.error('Failed to load English fallback translations', fallbackError);
|
|
97
|
+
throw new Error('Unable to load any translations');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
})();
|
|
101
|
+
loadingPromises.set(normalizedLocale, loadingPromise);
|
|
102
|
+
return loadingPromise;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Get translations synchronously (from cache or English fallback)
|
|
106
|
+
*/
|
|
107
|
+
export const getTranslations = (locale) => {
|
|
108
|
+
const normalizedLocale = normalizeLocale(locale);
|
|
109
|
+
// Return from cache if available
|
|
110
|
+
if (translationCache.has(normalizedLocale)) {
|
|
111
|
+
return translationCache.get(normalizedLocale);
|
|
112
|
+
}
|
|
113
|
+
// Return English if available
|
|
114
|
+
if (translationCache.has('en')) {
|
|
115
|
+
return translationCache.get('en');
|
|
116
|
+
}
|
|
117
|
+
// Return a basic fallback structure
|
|
118
|
+
return getDefaultTranslations();
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Get default translations (hardcoded fallback)
|
|
122
|
+
*/
|
|
123
|
+
const getDefaultTranslations = () => ({
|
|
124
|
+
whatsNew: {
|
|
125
|
+
title: "What's New",
|
|
126
|
+
tabs: {
|
|
127
|
+
article: "Articles",
|
|
128
|
+
productUpdate: "Product Updates"
|
|
129
|
+
},
|
|
130
|
+
buttonViewAll: {
|
|
131
|
+
article: "View all articles",
|
|
132
|
+
productUpdate: "View all updates"
|
|
133
|
+
},
|
|
134
|
+
noData: "No updates available"
|
|
135
|
+
},
|
|
136
|
+
growApps: {
|
|
137
|
+
title: "Grow Your Business",
|
|
138
|
+
subtitle: "Recommended apps to help you grow",
|
|
139
|
+
install: "Install",
|
|
140
|
+
installed: "Installed",
|
|
141
|
+
dismiss: "Dismiss",
|
|
142
|
+
noData: "No recommendations available"
|
|
143
|
+
},
|
|
144
|
+
banner: {
|
|
145
|
+
learnMore: "Learn More",
|
|
146
|
+
dismiss: "Dismiss"
|
|
147
|
+
},
|
|
148
|
+
partnerIntegration: {
|
|
149
|
+
reviewSourcesTitle: "Review Sources",
|
|
150
|
+
postPurchaseTitle: "Post-purchase & Automation",
|
|
151
|
+
seoSnippetsTitle: "SEO & Rich Snippets",
|
|
152
|
+
install: "Install app",
|
|
153
|
+
manage: "Manage",
|
|
154
|
+
connect: "Connect",
|
|
155
|
+
inactive: "Inactive",
|
|
156
|
+
active: "Active",
|
|
157
|
+
upgradeBadge: {
|
|
158
|
+
upgradeToUnlimited: "From Unlimited"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
/**
|
|
163
|
+
* Preload specific locales for better performance
|
|
164
|
+
*/
|
|
165
|
+
export const preloadLocales = async (locales) => {
|
|
166
|
+
await Promise.all(locales.map(locale => loadTranslations(locale).catch(() => { })));
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Clear translation cache (useful for testing or memory management)
|
|
170
|
+
*/
|
|
171
|
+
export const clearTranslationCache = () => {
|
|
172
|
+
translationCache.clear();
|
|
173
|
+
loadingPromises.clear();
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Get nested translation value by path
|
|
177
|
+
*/
|
|
178
|
+
export const getTranslationByPath = (translations, path) => {
|
|
179
|
+
const keys = path.split('.');
|
|
180
|
+
let value = translations;
|
|
181
|
+
for (const key of keys) {
|
|
182
|
+
if (value && typeof value === 'object' && key in value) {
|
|
183
|
+
value = value[key];
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return path; // Return path as fallback
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return typeof value === 'string' ? value : path;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Merge custom translations with defaults
|
|
193
|
+
*/
|
|
194
|
+
export const mergeTranslations = (defaults, custom) => {
|
|
195
|
+
if (!custom)
|
|
196
|
+
return defaults;
|
|
197
|
+
const deepMerge = (target, source) => {
|
|
198
|
+
if (!source)
|
|
199
|
+
return target;
|
|
200
|
+
const result = { ...target };
|
|
201
|
+
for (const key in source) {
|
|
202
|
+
if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
|
|
203
|
+
result[key] = deepMerge(target[key] || {}, source[key]);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
result[key] = source[key];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return result;
|
|
210
|
+
};
|
|
211
|
+
return deepMerge(defaults, custom);
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* Get bundle size estimate for a locale
|
|
215
|
+
*/
|
|
216
|
+
export const getLocaleBundleSize = (locale) => {
|
|
217
|
+
// Approximate sizes in KB
|
|
218
|
+
const sizes = {
|
|
219
|
+
en: 2, cn: 3, de: 2.5, dk: 2.5, es: 2.5, fr: 2.5,
|
|
220
|
+
ie: 2.5, in: 3, it: 2.5, jp: 3, nl: 2.5,
|
|
221
|
+
nz: 2.5, pt: 2.5, se: 2.5, vi: 3
|
|
222
|
+
};
|
|
223
|
+
return sizes[locale] || 2;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Initialize SDK translations system
|
|
227
|
+
* Call this once when SDK loads
|
|
228
|
+
*/
|
|
229
|
+
export const initializeTranslations = async (initialLocale, preloadLocales) => {
|
|
230
|
+
// Load initial locale
|
|
231
|
+
if (initialLocale) {
|
|
232
|
+
await loadTranslations(initialLocale);
|
|
233
|
+
}
|
|
234
|
+
// Preload additional locales
|
|
235
|
+
if (preloadLocales && preloadLocales.length > 0) {
|
|
236
|
+
await Promise.all(preloadLocales.map(locale => loadTranslations(locale).catch(() => { })));
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=translation-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-manager.js","sourceRoot":"","sources":["../../src/translations/translation-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Advanced translation management system for SDK\n * Handles multi-language support with lazy loading and fallback\n */\n\nexport type SupportedLocale = \n | 'cn' // Chinese (Simplified)\n | 'de' // German\n | 'dk' // Danish\n | 'en' // English (default)\n | 'es' // Spanish\n | 'fr' // French\n | 'ie' // Irish\n | 'in' // Hindi\n | 'it' // Italian\n | 'jp' // Japanese\n | 'nl' // Dutch\n | 'nz' // Maori\n | 'pt' // Portuguese\n | 'se' // Swedish\n | 'vi'; // Vietnamese\n\nexport interface SDKTranslations {\n whatsNew: {\n title: string;\n tabs: {\n article: string;\n productUpdate: string;\n };\n buttonViewAll: {\n article: string;\n productUpdate: string;\n };\n noData: string;\n };\n growApps: {\n title: string;\n subtitle: string;\n install: string;\n installed: string;\n dismiss: string;\n noData: string;\n };\n banner: {\n learnMore: string;\n dismiss: string;\n };\n partnerIntegration: {\n reviewSourcesTitle: string;\n postPurchaseTitle: string;\n seoSnippetsTitle: string;\n install: string;\n manage: string;\n connect: string;\n inactive: string;\n active: string;\n upgradeBadge: {\n upgradeToUnlimited: string;\n };\n };\n}\n\n// Locale configuration\nexport const SUPPORTED_LOCALES: SupportedLocale[] = [\n 'cn', 'de', 'dk', 'en', 'es', 'fr', 'ie', 'in', \n 'it', 'jp', 'nl', 'nz', 'pt', 'se', 'vi'\n];\n\nexport const DEFAULT_LOCALE: SupportedLocale = 'en';\n\n// Locale metadata for better UX\nexport const LOCALE_METADATA: Record<SupportedLocale, { name: string; nativeName: string }> = {\n cn: { name: 'Chinese (Simplified)', nativeName: '中文' },\n de: { name: 'German', nativeName: 'Deutsch' },\n dk: { name: 'Danish', nativeName: 'Dansk' },\n en: { name: 'English', nativeName: 'English' },\n es: { name: 'Spanish', nativeName: 'Español' },\n fr: { name: 'French', nativeName: 'Français' },\n ie: { name: 'Irish', nativeName: 'Gaeilge' },\n in: { name: 'Hindi', nativeName: 'हिन्दी' },\n it: { name: 'Italian', nativeName: 'Italiano' },\n jp: { name: 'Japanese', nativeName: '日本語' },\n nl: { name: 'Dutch', nativeName: 'Nederlands' },\n nz: { name: 'Maori', nativeName: 'Te Reo Māori' },\n pt: { name: 'Portuguese', nativeName: 'Português' },\n se: { name: 'Swedish', nativeName: 'Svenska' },\n vi: { name: 'Vietnamese', nativeName: 'Tiếng Việt' }\n};\n\n// Translation cache\nconst translationCache: Map<SupportedLocale, SDKTranslations> = new Map();\nconst loadingPromises: Map<SupportedLocale, Promise<SDKTranslations>> = new Map();\n\n/**\n * Normalize locale code to supported format\n * Examples: en-US → en, zh-CN → cn, pt-BR → pt\n */\nexport const normalizeLocale = (locale: string): SupportedLocale => {\n if (!locale) return DEFAULT_LOCALE;\n \n // Direct match\n if (SUPPORTED_LOCALES.includes(locale as SupportedLocale)) {\n return locale as SupportedLocale;\n }\n \n // Extract base locale (en-US → en)\n const base = locale.split(/[-_]/)[0].toLowerCase();\n \n // Special mappings\n const mappings: Record<string, SupportedLocale> = {\n 'zh': 'cn',\n 'da': 'dk',\n 'ga': 'ie',\n 'hi': 'in',\n 'ja': 'jp',\n 'mi': 'nz',\n 'sv': 'se',\n };\n \n const mapped = mappings[base] || base;\n \n if (SUPPORTED_LOCALES.includes(mapped as SupportedLocale)) {\n return mapped as SupportedLocale;\n }\n \n return DEFAULT_LOCALE;\n};\n\n/**\n * Load translations for a specific locale with lazy loading\n */\nexport const loadTranslations = async (\n locale: string | SupportedLocale\n): Promise<SDKTranslations> => {\n const normalizedLocale = normalizeLocale(locale);\n \n // Return from cache if available\n if (translationCache.has(normalizedLocale)) {\n return translationCache.get(normalizedLocale)!;\n }\n \n // Return existing loading promise if in progress\n if (loadingPromises.has(normalizedLocale)) {\n return loadingPromises.get(normalizedLocale)!;\n }\n \n // Create loading promise\n const loadingPromise = (async () => {\n try {\n // Dynamic import with webpack chunk names for better debugging\n const module = await import(\n /* webpackChunkName: \"locale-[request]\" */\n `./locales/${normalizedLocale}.json`\n );\n \n const translations = module.default || module;\n translationCache.set(normalizedLocale, translations);\n loadingPromises.delete(normalizedLocale);\n \n return translations;\n } catch (error) {\n console.warn(\n `Failed to load translations for '${normalizedLocale}', falling back to English`,\n error\n );\n \n // Try to load English as fallback\n try {\n const fallback = await import('./locales/en.json');\n const translations = fallback.default || fallback;\n translationCache.set(normalizedLocale, translations);\n return translations;\n } catch (fallbackError) {\n console.error('Failed to load English fallback translations', fallbackError);\n throw new Error('Unable to load any translations');\n }\n }\n })();\n \n loadingPromises.set(normalizedLocale, loadingPromise);\n return loadingPromise;\n};\n\n/**\n * Get translations synchronously (from cache or English fallback)\n */\nexport const getTranslations = (locale: string | SupportedLocale): SDKTranslations => {\n const normalizedLocale = normalizeLocale(locale);\n \n // Return from cache if available\n if (translationCache.has(normalizedLocale)) {\n return translationCache.get(normalizedLocale)!;\n }\n \n // Return English if available\n if (translationCache.has('en')) {\n return translationCache.get('en')!;\n }\n \n // Return a basic fallback structure\n return getDefaultTranslations();\n};\n\n/**\n * Get default translations (hardcoded fallback)\n */\nconst getDefaultTranslations = (): 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 Your Business\",\n subtitle: \"Recommended apps to help you grow\",\n install: \"Install\",\n installed: \"Installed\",\n dismiss: \"Dismiss\",\n noData: \"No recommendations available\"\n },\n banner: {\n learnMore: \"Learn More\",\n dismiss: \"Dismiss\"\n },\n partnerIntegration: {\n reviewSourcesTitle: \"Review Sources\",\n postPurchaseTitle: \"Post-purchase & Automation\",\n seoSnippetsTitle: \"SEO & Rich Snippets\",\n install: \"Install app\",\n manage: \"Manage\",\n connect: \"Connect\",\n inactive: \"Inactive\",\n active: \"Active\",\n upgradeBadge: {\n upgradeToUnlimited: \"From Unlimited\"\n }\n }\n});\n\n/**\n * Preload specific locales for better performance\n */\nexport const preloadLocales = async (\n locales: (string | SupportedLocale)[]\n): Promise<void> => {\n await Promise.all(\n locales.map(locale => loadTranslations(locale).catch(() => {}))\n );\n};\n\n/**\n * Clear translation cache (useful for testing or memory management)\n */\nexport const clearTranslationCache = (): void => {\n translationCache.clear();\n loadingPromises.clear();\n};\n\n/**\n * Get nested translation value by path\n */\nexport const getTranslationByPath = (\n translations: SDKTranslations,\n path: string\n): string => {\n const keys = path.split('.');\n let value: any = translations;\n \n for (const key of keys) {\n if (value && typeof value === 'object' && key in value) {\n value = value[key];\n } else {\n return path; // Return path as fallback\n }\n }\n \n return typeof value === 'string' ? value : path;\n};\n\n/**\n * Merge custom translations with defaults\n */\nexport const mergeTranslations = (\n defaults: SDKTranslations,\n custom?: Partial<SDKTranslations>\n): SDKTranslations => {\n if (!custom) return defaults;\n \n const deepMerge = (target: any, source: any): any => {\n if (!source) return target;\n \n const result = { ...target };\n \n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n result[key] = deepMerge(target[key] || {}, source[key]);\n } else {\n result[key] = source[key];\n }\n }\n \n return result;\n };\n \n return deepMerge(defaults, custom);\n};\n\n/**\n * Get bundle size estimate for a locale\n */\nexport const getLocaleBundleSize = (locale: SupportedLocale): number => {\n // Approximate sizes in KB\n const sizes: Record<SupportedLocale, number> = {\n en: 2, cn: 3, de: 2.5, dk: 2.5, es: 2.5, fr: 2.5,\n ie: 2.5, in: 3, it: 2.5, jp: 3, nl: 2.5, \n nz: 2.5, pt: 2.5, se: 2.5, vi: 3\n };\n return sizes[locale] || 2;\n};\n\n/**\n * Initialize SDK translations system\n * Call this once when SDK loads\n */\nexport const initializeTranslations = async (\n initialLocale?: string,\n preloadLocales?: string[]\n): Promise<void> => {\n // Load initial locale\n if (initialLocale) {\n await loadTranslations(initialLocale);\n }\n \n // Preload additional locales\n if (preloadLocales && preloadLocales.length > 0) {\n await Promise.all(\n preloadLocales.map(locale => \n loadTranslations(locale).catch(() => {})\n )\n );\n }\n};"]}
|
package/dist/types/app.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/types/app.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,aAAa,GACb,aAAa,GACb,WAAW,GACX,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
package/dist/types/app.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/types/app.ts"],"names":[],"mappings":"","sourcesContent":["export type AppGroup =\n | \"grow_faster\"\n | \"integration\"\n | \"marketing\"\n | \"analytics\"\n | \"other\";\n\nexport interface AppItem {\n id: string | number;\n key: string;\n title: string;\n description: string;\n icon: string;\n link: string;\n group: AppGroup;\n rating?: number;\n installs?: number;\n price?: string;\n featured?: boolean;\n}\n"]}
|
package/dist/types/article.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../src/types/article.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
package/dist/types/article.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/types/article.ts"],"names":[],"mappings":"","sourcesContent":["export interface ArticleItem {\n id: string | number;\n title: string;\n description?: string;\n content?: string;\n thumbnail?: string;\n imageUrl?: string;\n link: string;\n author?: string;\n publishedDate?: string;\n category?: string;\n readTime?: number;\n tags?: string[];\n buttonText?: string;\n}\n"]}
|
package/dist/types/banner.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/types/banner.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
package/dist/types/banner.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/types/banner.ts"],"names":[],"mappings":"","sourcesContent":["export type BannerType = \"popup\" | \"top_banner\" | \"footer_banner\";\nexport type OpenType = \"new_tab\" | \"same_tab\";\n\nexport interface BannerStyle {\n backgroundColor?: string;\n textColor?: string;\n buttonColor?: string;\n buttonTextColor?: string;\n}\n\nexport interface BannerItem {\n id: string | number;\n type: BannerType;\n title: string;\n description?: string;\n image?: string;\n icon?: string;\n link: string;\n linkText?: string;\n openType: OpenType;\n style?: BannerStyle;\n priority?: number;\n isActive?: boolean;\n}\n"]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simplified public component APIs
|
|
3
|
+
* Internal defaults and implementation details are handled by the SDK
|
|
4
|
+
*/
|
|
5
|
+
import type { BannerItem } from "./banner";
|
|
6
|
+
import type { ArticleItem } from "./article";
|
|
7
|
+
import type { ProductUpdateItem } from "./product-update";
|
|
8
|
+
import type { GrowApp } from "./dashboard";
|
|
9
|
+
import type { IntegrationItem } from "./integration";
|
|
10
|
+
/**
|
|
11
|
+
* TopBanner - Minimal public API
|
|
12
|
+
* Most behavior is handled internally
|
|
13
|
+
*/
|
|
14
|
+
export interface TopBannerProps {
|
|
15
|
+
/** Optional CSS class for styling */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Control visibility (default: true) */
|
|
18
|
+
open?: boolean;
|
|
19
|
+
/** Handle close event */
|
|
20
|
+
onClose?: () => void;
|
|
21
|
+
/** Handle primary action click */
|
|
22
|
+
onAction?: (banner: BannerItem) => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* WhatsNew - Clean, event-focused API
|
|
26
|
+
*/
|
|
27
|
+
export interface WhatsNewProps {
|
|
28
|
+
/** Optional CSS class */
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Handle product update clicks */
|
|
31
|
+
onProductUpdateClick?: (update: ProductUpdateItem) => void;
|
|
32
|
+
/** Handle article clicks */
|
|
33
|
+
onArticleClick?: (article: ArticleItem) => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* GrowApps - Simplified app carousel
|
|
37
|
+
*/
|
|
38
|
+
export interface GrowAppsProps {
|
|
39
|
+
/** Optional CSS class */
|
|
40
|
+
className?: string;
|
|
41
|
+
/** Handle app clicks */
|
|
42
|
+
onAppClick?: (app: GrowApp) => void;
|
|
43
|
+
/** Optional dismiss callback */
|
|
44
|
+
onDismiss?: () => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* PopupBanner - Event-driven modal banner
|
|
48
|
+
*/
|
|
49
|
+
export interface PopupBannerProps {
|
|
50
|
+
/** Optional CSS class */
|
|
51
|
+
className?: string;
|
|
52
|
+
/** Handle close */
|
|
53
|
+
onClose?: () => void;
|
|
54
|
+
/** Handle action */
|
|
55
|
+
onAction?: (banner: BannerItem) => void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* PartnerIntegration - Integration management
|
|
59
|
+
*/
|
|
60
|
+
export interface PartnerIntegrationProps {
|
|
61
|
+
/** Optional CSS class */
|
|
62
|
+
className?: string;
|
|
63
|
+
/** Handle manage action */
|
|
64
|
+
onManage?: (item: IntegrationItem) => void;
|
|
65
|
+
/** Handle install action */
|
|
66
|
+
onInstall?: (item: IntegrationItem) => void;
|
|
67
|
+
/** Handle open action */
|
|
68
|
+
onOpen?: (item: IntegrationItem) => void;
|
|
69
|
+
/** Handle upgrade click */
|
|
70
|
+
onUpgradeClick?: (item: IntegrationItem) => void;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Advanced props for power users
|
|
74
|
+
* These are completely optional and have smart defaults
|
|
75
|
+
*/
|
|
76
|
+
export interface AdvancedComponentConfig {
|
|
77
|
+
/** Override default max items */
|
|
78
|
+
limits?: {
|
|
79
|
+
maxUpdates?: number;
|
|
80
|
+
maxArticles?: number;
|
|
81
|
+
maxApps?: number;
|
|
82
|
+
maxIntegrations?: number;
|
|
83
|
+
};
|
|
84
|
+
/** Override UI behavior */
|
|
85
|
+
ui?: {
|
|
86
|
+
showNavigation?: boolean;
|
|
87
|
+
showViewAllButtons?: boolean;
|
|
88
|
+
showDismissButtons?: boolean;
|
|
89
|
+
showEmptyStates?: boolean;
|
|
90
|
+
enableSwipeGestures?: boolean;
|
|
91
|
+
};
|
|
92
|
+
/** Override timing */
|
|
93
|
+
timing?: {
|
|
94
|
+
dismissDuration?: number;
|
|
95
|
+
animationDuration?: number;
|
|
96
|
+
debounceDelay?: number;
|
|
97
|
+
};
|
|
98
|
+
/** Override storage keys (rarely needed) */
|
|
99
|
+
storage?: {
|
|
100
|
+
dismissKeyPrefix?: string;
|
|
101
|
+
persistenceEnabled?: boolean;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* These props are used internally by the SDK
|
|
106
|
+
* and should not be exposed in the public API
|
|
107
|
+
*/
|
|
108
|
+
export interface InternalComponentProps {
|
|
109
|
+
reserveSpace?: boolean;
|
|
110
|
+
skeletonCount?: number;
|
|
111
|
+
minHeight?: number;
|
|
112
|
+
isLoading?: boolean;
|
|
113
|
+
loadingDelay?: number;
|
|
114
|
+
retryAttempts?: number;
|
|
115
|
+
cacheKey?: string;
|
|
116
|
+
cacheTime?: number;
|
|
117
|
+
internalNavigate?: (url: string) => void;
|
|
118
|
+
statusProvider?: any;
|
|
119
|
+
renderBanner?: any;
|
|
120
|
+
renderCard?: any;
|
|
121
|
+
renderItem?: any;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* These values come from the SDK Manager
|
|
125
|
+
* Components access them internally via useSDK
|
|
126
|
+
*/
|
|
127
|
+
export interface SDKProvidedValues {
|
|
128
|
+
locale: string;
|
|
129
|
+
translations: any;
|
|
130
|
+
config: any;
|
|
131
|
+
navigate: (url: string) => void;
|
|
132
|
+
features: {
|
|
133
|
+
closable: boolean;
|
|
134
|
+
sticky: boolean;
|
|
135
|
+
autoShow: boolean;
|
|
136
|
+
persistClose: boolean;
|
|
137
|
+
};
|
|
138
|
+
defaults: AdvancedComponentConfig;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=component-props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-props.d.ts","sourceRoot":"","sources":["../../src/types/component-props.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-props.js","sourceRoot":"","sources":["../../src/types/component-props.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Simplified public component APIs\n * Internal defaults and implementation details are handled by the SDK\n */\n\nimport type { BannerItem } from \"./banner\";\nimport type { ArticleItem } from \"./article\";\nimport type { ProductUpdateItem } from \"./product-update\";\nimport type { GrowApp } from \"./dashboard\";\nimport type { IntegrationItem } from \"./integration\";\n\n// ============================================\n// Core Component Props (Public API)\n// ============================================\n\n/**\n * TopBanner - Minimal public API\n * Most behavior is handled internally\n */\nexport interface TopBannerProps {\n /** Optional CSS class for styling */\n className?: string;\n\n /** Control visibility (default: true) */\n open?: boolean;\n\n /** Handle close event */\n onClose?: () => void;\n\n /** Handle primary action click */\n onAction?: (banner: BannerItem) => void;\n}\n\n/**\n * WhatsNew - Clean, event-focused API\n */\nexport interface WhatsNewProps {\n /** Optional CSS class */\n className?: string;\n\n /** Handle product update clicks */\n onProductUpdateClick?: (update: ProductUpdateItem) => void;\n\n /** Handle article clicks */\n onArticleClick?: (article: ArticleItem) => void;\n}\n\n/**\n * GrowApps - Simplified app carousel\n */\nexport interface GrowAppsProps {\n /** Optional CSS class */\n className?: string;\n\n /** Handle app clicks */\n onAppClick?: (app: GrowApp) => void;\n\n /** Optional dismiss callback */\n onDismiss?: () => void;\n}\n\n/**\n * PopupBanner - Event-driven modal banner\n */\nexport interface PopupBannerProps {\n /** Optional CSS class */\n className?: string;\n\n /** Handle close */\n onClose?: () => void;\n\n /** Handle action */\n onAction?: (banner: BannerItem) => void;\n}\n\n/**\n * PartnerIntegration - Integration management\n */\nexport interface PartnerIntegrationProps {\n /** Optional CSS class */\n className?: string;\n\n /** Handle manage action */\n onManage?: (item: IntegrationItem) => void;\n\n /** Handle install action */\n onInstall?: (item: IntegrationItem) => void;\n\n /** Handle open action */\n onOpen?: (item: IntegrationItem) => void;\n\n /** Handle upgrade click */\n onUpgradeClick?: (item: IntegrationItem) => void;\n}\n\n// ============================================\n// Advanced Configuration (Optional)\n// ============================================\n\n/**\n * Advanced props for power users\n * These are completely optional and have smart defaults\n */\nexport interface AdvancedComponentConfig {\n /** Override default max items */\n limits?: {\n maxUpdates?: number; // Default: 5\n maxArticles?: number; // Default: 10\n maxApps?: number; // Default: 6\n maxIntegrations?: number; // Default: 12\n };\n\n /** Override UI behavior */\n ui?: {\n showNavigation?: boolean; // Default: true\n showViewAllButtons?: boolean; // Default: true\n showDismissButtons?: boolean; // Default: true\n showEmptyStates?: boolean; // Default: true\n enableSwipeGestures?: boolean; // Default: true\n };\n\n /** Override timing */\n timing?: {\n dismissDuration?: number; // Default: 7 days\n animationDuration?: number; // Default: 300ms\n debounceDelay?: number; // Default: 100ms\n };\n\n /** Override storage keys (rarely needed) */\n storage?: {\n dismissKeyPrefix?: string; // Default: 'ts-sdk-'\n persistenceEnabled?: boolean; // Default: true\n };\n}\n\n// ============================================\n// Internal Props (SDK Use Only)\n// ============================================\n\n/**\n * These props are used internally by the SDK\n * and should not be exposed in the public API\n */\nexport interface InternalComponentProps {\n // CLS optimization props\n reserveSpace?: boolean;\n skeletonCount?: number;\n minHeight?: number;\n\n // Loading states\n isLoading?: boolean;\n loadingDelay?: number;\n retryAttempts?: number;\n\n // Cache configuration\n cacheKey?: string;\n cacheTime?: number;\n\n // Internal handlers\n internalNavigate?: (url: string) => void;\n statusProvider?: any;\n\n // Render props (replaced with internal rendering)\n renderBanner?: any;\n renderCard?: any;\n renderItem?: any;\n}\n\n// ============================================\n// SDK-Provided Values\n// ============================================\n\n/**\n * These values come from the SDK Manager\n * Components access them internally via useSDK\n */\nexport interface SDKProvidedValues {\n // Data\n locale: string;\n translations: any;\n config: any;\n\n // Navigation\n navigate: (url: string) => void;\n\n // Features\n features: {\n closable: boolean;\n sticky: boolean;\n autoShow: boolean;\n persistClose: boolean;\n };\n\n // Defaults\n defaults: AdvancedComponentConfig;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/types/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB"}
|
package/dist/types/dashboard.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/types/dashboard.ts"],"names":[],"mappings":"","sourcesContent":["import { BannerItem } from \"./banner\";\nimport { AppItem, AppGroup } from \"./app\";\nimport { ArticleItem } from \"./article\";\nimport { ProductUpdateItem } from \"./product-update\";\nimport { PartnerItem } from \"./partner\";\n\nexport interface GrowApp {\n id: string | number;\n title: string;\n content: string;\n icon_url?: string;\n imageUrl?: string;\n button_text?: string;\n button_get_app?: string;\n button_install_text?: string;\n button_install_link?: string;\n app_url?: string;\n get_app?: string;\n}\n\nexport interface DashboardData {\n locale?: string;\n requested_locale?: string;\n fallback_used?: boolean;\n banners: BannerItem[];\n apps: Record<AppGroup, AppItem[]>;\n articles: ArticleItem[];\n whatsNew: ProductUpdateItem[];\n grow_apps?: GrowApp[];\n grow_apps_display_limit?: number;\n partner_list?: PartnerItem[];\n integrations?: any[]; // Use any[] for now since we're using raw API data\n}\n\nexport interface DashboardConfig {\n apiUrl: string;\n shopId?: string; // Added for tracking purposes\n locale?: string;\n cacheTime?: number;\n retryAttempts?: number;\n retryDelay?: number;\n headers?: Record<string, string>;\n}\n\nexport interface DashboardState {\n data: DashboardData | null;\n loading: boolean;\n error: Error | null;\n lastFetch: Date | null;\n}\n"]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC","sourcesContent":["export * from \"./banner\";\nexport * from \"./app\";\nexport * from \"./article\";\nexport * from \"./product-update\";\nexport * from \"./dashboard\";\nexport * from \"./partner\";\nexport * from \"./integration\";\n"]}
|