@gfed-medusa/sf-lib-common 3.7.3 → 3.8.0
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/breadcrumbs/index.d.ts +2 -2
- package/dist/components/breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/cart-mismatch-banner/index.d.ts +2 -2
- package/dist/components/cart-mismatch-banner/index.d.ts.map +1 -1
- package/dist/components/delete-button/index.d.ts +2 -2
- package/dist/components/delete-button/index.d.ts.map +1 -1
- package/dist/components/device-id-setter/index.d.ts +5 -0
- package/dist/components/device-id-setter/index.d.ts.map +1 -0
- package/dist/components/device-id-setter/index.js +16 -0
- package/dist/components/device-id-setter/index.js.map +1 -0
- package/dist/components/error-message/index.d.ts +2 -2
- package/dist/components/error-message/index.d.ts.map +1 -1
- package/dist/components/free-shipping-price-nudge/index.d.ts +2 -2
- package/dist/components/interactive-link/index.d.ts +2 -2
- package/dist/components/line-item-options/index.d.ts +2 -2
- package/dist/components/localized-client-link/index.d.ts +2 -2
- package/dist/components/modal/index.d.ts +2 -2
- package/dist/components/modal/index.d.ts.map +1 -1
- package/dist/components/personalized-content/components/hero-banner.d.ts +31 -0
- package/dist/components/personalized-content/components/hero-banner.d.ts.map +1 -0
- package/dist/components/personalized-content/components/hero-banner.js +85 -0
- package/dist/components/personalized-content/components/hero-banner.js.map +1 -0
- package/dist/components/personalized-content/components/index.d.ts +2 -0
- package/dist/components/personalized-content/components/index.js +3 -0
- package/dist/components/preview-price/index.d.ts +2 -2
- package/dist/components/product-card/index.d.ts +2 -2
- package/dist/components/product-preview/index.d.ts +2 -4
- package/dist/components/product-preview/index.d.ts.map +1 -1
- package/dist/components/product-preview/index.js +1 -2
- package/dist/components/product-preview/index.js.map +1 -1
- package/dist/components/submit-button/index.d.ts +2 -2
- package/dist/components/submit-button/index.d.ts.map +1 -1
- package/dist/components/thumbnail/index.d.ts +0 -1
- package/dist/components/thumbnail/index.d.ts.map +1 -1
- package/dist/components/thumbnail/index.js +9 -11
- package/dist/components/thumbnail/index.js.map +1 -1
- package/dist/lib/context/apollo-context.d.ts +2 -2
- package/dist/lib/context/apollo-context.d.ts.map +1 -1
- package/dist/lib/context/modal-context.d.ts +2 -2
- package/dist/lib/data/context.d.ts +2 -2
- package/dist/lib/data/context.d.ts.map +1 -1
- package/dist/lib/data/personalization.d.ts +51 -0
- package/dist/lib/data/personalization.d.ts.map +1 -0
- package/dist/lib/data/personalization.js +77 -0
- package/dist/lib/data/personalization.js.map +1 -0
- package/dist/lib/gql/apollo-client.d.ts.map +1 -1
- package/dist/lib/gql/apollo-client.js +6 -2
- package/dist/lib/gql/apollo-client.js.map +1 -1
- package/dist/lib/gql/fragments/cart.d.ts +9 -9
- package/dist/lib/gql/fragments/cart.d.ts.map +1 -1
- package/dist/lib/gql/fragments/customer.d.ts +3 -3
- package/dist/lib/gql/fragments/product.d.ts +8 -8
- package/dist/lib/gql/fragments/product.d.ts.map +1 -1
- package/dist/lib/gql/mutations/cart.d.ts +6 -6
- package/dist/lib/gql/queries/cart-summary.d.ts +2 -2
- package/dist/lib/gql/queries/cart-summary.js +1 -1
- package/dist/lib/gql/queries/cart-summary.js.map +1 -1
- package/dist/lib/gql/queries/cart-total.d.ts +7 -0
- package/dist/lib/gql/queries/cart-total.d.ts.map +1 -0
- package/dist/lib/gql/queries/cart-total.js +14 -0
- package/dist/lib/gql/queries/cart-total.js.map +1 -0
- package/dist/lib/gql/queries/cart.d.ts +2 -2
- package/dist/lib/gql/queries/cart.d.ts.map +1 -1
- package/dist/lib/gql/queries/cart.js +1 -1
- package/dist/lib/gql/queries/cart.js.map +1 -1
- package/dist/lib/gql/queries/collections.d.ts +3 -3
- package/dist/lib/gql/queries/collections.d.ts.map +1 -1
- package/dist/lib/gql/queries/customer.d.ts +2 -2
- package/dist/lib/gql/queries/customer.d.ts.map +1 -1
- package/dist/lib/gql/queries/footer.d.ts +3 -3
- package/dist/lib/gql/queries/footer.d.ts.map +1 -1
- package/dist/lib/gql/queries/home-banner.d.ts +2 -2
- package/dist/lib/gql/queries/order.d.ts +4 -4
- package/dist/lib/gql/queries/order.d.ts.map +1 -1
- package/dist/lib/gql/queries/order.js +5 -0
- package/dist/lib/gql/queries/order.js.map +1 -1
- package/dist/lib/gql/queries/product-personalization.d.ts +7 -0
- package/dist/lib/gql/queries/product-personalization.d.ts.map +1 -0
- package/dist/lib/gql/queries/product-personalization.js +22 -0
- package/dist/lib/gql/queries/product-personalization.js.map +1 -0
- package/dist/lib/gql/queries/product.d.ts +2 -2
- package/dist/lib/gql/queries/regions.d.ts +3 -3
- package/dist/lib/hooks/use-apollo.d.ts +2 -2
- package/dist/lib/hooks/use-time-on-page.d.ts +13 -0
- package/dist/lib/hooks/use-time-on-page.d.ts.map +1 -0
- package/dist/lib/hooks/use-time-on-page.js +46 -0
- package/dist/lib/hooks/use-time-on-page.js.map +1 -0
- package/dist/lib/personalization/behavior-tracker.d.ts +1 -5
- package/dist/lib/personalization/behavior-tracker.d.ts.map +1 -1
- package/dist/lib/personalization/behavior-tracker.js +6 -20
- package/dist/lib/personalization/behavior-tracker.js.map +1 -1
- package/dist/lib/personalization/client-signal.d.ts +26 -0
- package/dist/lib/personalization/client-signal.d.ts.map +1 -0
- package/dist/lib/personalization/client-signal.js +105 -0
- package/dist/lib/personalization/client-signal.js.map +1 -0
- package/dist/lib/personalization/config.d.ts +2 -6
- package/dist/lib/personalization/config.d.ts.map +1 -1
- package/dist/lib/personalization/config.js +2 -16
- package/dist/lib/personalization/config.js.map +1 -1
- package/dist/lib/personalization/device-id.d.ts +5 -0
- package/dist/lib/personalization/device-id.d.ts.map +1 -0
- package/dist/lib/personalization/device-id.js +24 -0
- package/dist/lib/personalization/device-id.js.map +1 -0
- package/dist/lib/personalization/personalization-gql.d.ts +9 -0
- package/dist/lib/personalization/personalization-gql.d.ts.map +1 -0
- package/dist/lib/personalization/personalization-gql.js +42 -0
- package/dist/lib/personalization/personalization-gql.js.map +1 -0
- package/dist/lib/utils/imagekit.d.ts +2 -2
- package/dist/lib/utils/imagekit.js +1 -1
- package/dist/lib/utils/imagekit.js.map +1 -1
- package/dist/types/graphql.d.ts +247 -5
- package/dist/types/graphql.d.ts.map +1 -1
- package/dist/types/graphql.js +410 -3
- package/dist/types/graphql.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/data/contextual-banner.d.ts +0 -15
- package/dist/lib/data/contextual-banner.d.ts.map +0 -1
- package/dist/lib/data/contextual-banner.js +0 -19
- package/dist/lib/data/contextual-banner.js.map +0 -1
- package/dist/lib/gql/queries/contextual-banner.d.ts +0 -7
- package/dist/lib/gql/queries/contextual-banner.d.ts.map +0 -1
- package/dist/lib/gql/queries/contextual-banner.js +0 -21
- package/dist/lib/gql/queries/contextual-banner.js.map +0 -1
- package/dist/lib/personalization/user-profile.d.ts +0 -15
- package/dist/lib/personalization/user-profile.d.ts.map +0 -1
- package/dist/lib/personalization/user-profile.js +0 -47
- package/dist/lib/personalization/user-profile.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
//#region src/lib/data/contextual-banner.d.ts
|
|
2
|
-
interface ContextualBannerContent {
|
|
3
|
-
title: string;
|
|
4
|
-
description: string;
|
|
5
|
-
ctaLabel: string;
|
|
6
|
-
ctaHref: string;
|
|
7
|
-
trigger: string;
|
|
8
|
-
minPrice?: number;
|
|
9
|
-
isActive: boolean;
|
|
10
|
-
priority: number;
|
|
11
|
-
}
|
|
12
|
-
declare function getAllContextualBanners(): Promise<ContextualBannerContent[]>;
|
|
13
|
-
//#endregion
|
|
14
|
-
export { ContextualBannerContent, getAllContextualBanners };
|
|
15
|
-
//# sourceMappingURL=contextual-banner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contextual-banner.d.ts","names":[],"sources":["../../../src/lib/data/contextual-banner.ts"],"sourcesContent":[],"mappings":";UAGiB,uBAAA;EAAA,KAAA,EAAA,MAAA;EAeK,WAAA,EAAA,MAAA;;;;;;;;iBAAA,uBAAA,CAAA,GAA2B,QAAQ"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { graphqlFetch } from "../gql/apollo-client.js";
|
|
2
|
-
import { GET_CONTEXTUAL_BANNERS_QUERY } from "../gql/queries/contextual-banner.js";
|
|
3
|
-
|
|
4
|
-
//#region src/lib/data/contextual-banner.ts
|
|
5
|
-
async function getAllContextualBanners() {
|
|
6
|
-
try {
|
|
7
|
-
return ((await graphqlFetch({
|
|
8
|
-
query: GET_CONTEXTUAL_BANNERS_QUERY,
|
|
9
|
-
variables: {}
|
|
10
|
-
}))?.contextualBanners ?? []).filter((b) => b.isActive);
|
|
11
|
-
} catch (error) {
|
|
12
|
-
console.error("Error fetching contextual banners:", error);
|
|
13
|
-
return [];
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
//#endregion
|
|
18
|
-
export { getAllContextualBanners };
|
|
19
|
-
//# sourceMappingURL=contextual-banner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contextual-banner.js","names":[],"sources":["../../../src/lib/data/contextual-banner.ts"],"sourcesContent":["import { graphqlFetch } from '@/lib/gql/apollo-client';\nimport { GET_CONTEXTUAL_BANNERS_QUERY } from '@/lib/gql/queries/contextual-banner';\n\nexport interface ContextualBannerContent {\n title: string;\n description: string;\n ctaLabel: string;\n ctaHref: string;\n trigger: string;\n minPrice?: number;\n isActive: boolean;\n priority: number;\n}\n\ntype ContextualBannersQueryResult = {\n contextualBanners: ContextualBannerContent[];\n};\n\nexport async function getAllContextualBanners(): Promise<ContextualBannerContent[]> {\n try {\n const data = await graphqlFetch<\n ContextualBannersQueryResult,\n Record<string, never>\n >({\n query: GET_CONTEXTUAL_BANNERS_QUERY,\n variables: {},\n });\n\n const banners = data?.contextualBanners ?? [];\n return banners.filter((b) => b.isActive);\n } catch (error) {\n console.error('Error fetching contextual banners:', error);\n return [];\n }\n}"],"mappings":";;;;AAkBA,eAAsB,0BAA8D;AAClF,KAAI;AAUF,WATa,MAAM,aAGjB;GACA,OAAO;GACP,WAAW,EAAE;GACd,CAAC,GAEoB,qBAAqB,EAAE,EAC9B,QAAQ,MAAM,EAAE,SAAS;UACjC,OAAO;AACd,UAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAO,EAAE"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as _apollo_client5 from "@apollo/client";
|
|
2
|
-
|
|
3
|
-
//#region src/lib/gql/queries/contextual-banner.d.ts
|
|
4
|
-
declare const GET_CONTEXTUAL_BANNERS_QUERY: _apollo_client5.DocumentNode;
|
|
5
|
-
//#endregion
|
|
6
|
-
export { GET_CONTEXTUAL_BANNERS_QUERY };
|
|
7
|
-
//# sourceMappingURL=contextual-banner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contextual-banner.d.ts","names":[],"sources":["../../../../src/lib/gql/queries/contextual-banner.ts"],"sourcesContent":[],"mappings":";;;cAEa,8BAaZ,eAAA,CAbwC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { gql } from "@apollo/client";
|
|
2
|
-
|
|
3
|
-
//#region src/lib/gql/queries/contextual-banner.ts
|
|
4
|
-
const GET_CONTEXTUAL_BANNERS_QUERY = gql`
|
|
5
|
-
query GetContextualBanners {
|
|
6
|
-
contextualBanners {
|
|
7
|
-
title
|
|
8
|
-
description
|
|
9
|
-
ctaLabel
|
|
10
|
-
ctaHref
|
|
11
|
-
trigger
|
|
12
|
-
minPrice
|
|
13
|
-
isActive
|
|
14
|
-
priority
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
`;
|
|
18
|
-
|
|
19
|
-
//#endregion
|
|
20
|
-
export { GET_CONTEXTUAL_BANNERS_QUERY };
|
|
21
|
-
//# sourceMappingURL=contextual-banner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contextual-banner.js","names":[],"sources":["../../../../src/lib/gql/queries/contextual-banner.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nexport const GET_CONTEXTUAL_BANNERS_QUERY = gql`\n query GetContextualBanners {\n contextualBanners {\n title\n description\n ctaLabel\n ctaHref\n trigger\n minPrice\n isActive\n priority\n }\n }\n`;"],"mappings":";;;AAEA,MAAa,+BAA+B,GAAG"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
//#region src/lib/personalization/user-profile.d.ts
|
|
2
|
-
interface UserProfile {
|
|
3
|
-
interest: string;
|
|
4
|
-
primaryInterest: string;
|
|
5
|
-
confidence: number;
|
|
6
|
-
history: string[];
|
|
7
|
-
signals: Record<string, unknown>;
|
|
8
|
-
lastUpdated: number;
|
|
9
|
-
}
|
|
10
|
-
declare function getUserProfile(): UserProfile;
|
|
11
|
-
declare function updateUserProfile(updates: Partial<UserProfile>): void;
|
|
12
|
-
declare function addToHistory(category: string): void;
|
|
13
|
-
//#endregion
|
|
14
|
-
export { UserProfile, addToHistory, getUserProfile, updateUserProfile };
|
|
15
|
-
//# sourceMappingURL=user-profile.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-profile.d.ts","names":[],"sources":["../../../src/lib/personalization/user-profile.ts"],"sourcesContent":[],"mappings":";UAEiB,WAAA;EAAA,QAAA,EAAA,MAAW;EAkCZ,eAAA,EAAc,MAAA;EAad,UAAA,EAAA,MAAA;EAQA,OAAA,EAAA,MAAY,EAAA;WAlDjB;;;iBA6BK,cAAA,CAAA,GAAkB;iBAalB,iBAAA,UAA2B,QAAQ;iBAQnC,YAAA"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
//#region src/lib/personalization/user-profile.ts
|
|
2
|
-
const PROFILE_KEY = "jg_user_profile";
|
|
3
|
-
function defaultProfile() {
|
|
4
|
-
return {
|
|
5
|
-
interest: "",
|
|
6
|
-
primaryInterest: "",
|
|
7
|
-
confidence: 0,
|
|
8
|
-
history: [],
|
|
9
|
-
signals: {},
|
|
10
|
-
lastUpdated: Date.now()
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
function isValidUserProfile(value) {
|
|
14
|
-
if (typeof value !== "object" || value === null) return false;
|
|
15
|
-
const obj = value;
|
|
16
|
-
return typeof obj.interest === "string" && typeof obj.primaryInterest === "string" && typeof obj.confidence === "number" && Array.isArray(obj.history) && obj.history.every((h) => typeof h === "string") && typeof obj.signals === "object" && typeof obj.lastUpdated === "number";
|
|
17
|
-
}
|
|
18
|
-
function getUserProfile() {
|
|
19
|
-
if (typeof window === "undefined") return defaultProfile();
|
|
20
|
-
try {
|
|
21
|
-
const stored = localStorage.getItem(PROFILE_KEY);
|
|
22
|
-
if (!stored) return defaultProfile();
|
|
23
|
-
const parsed = JSON.parse(stored);
|
|
24
|
-
return isValidUserProfile(parsed) ? parsed : defaultProfile();
|
|
25
|
-
} catch {
|
|
26
|
-
return defaultProfile();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function updateUserProfile(updates) {
|
|
30
|
-
if (typeof window === "undefined") return;
|
|
31
|
-
const updated = {
|
|
32
|
-
...getUserProfile(),
|
|
33
|
-
...updates,
|
|
34
|
-
lastUpdated: Date.now()
|
|
35
|
-
};
|
|
36
|
-
localStorage.setItem(PROFILE_KEY, JSON.stringify(updated));
|
|
37
|
-
}
|
|
38
|
-
function addToHistory(category) {
|
|
39
|
-
const profile = getUserProfile();
|
|
40
|
-
const normalizedCategory = String(category).trim();
|
|
41
|
-
if (!normalizedCategory) return;
|
|
42
|
-
updateUserProfile({ history: [...profile.history || [], normalizedCategory].slice(-20) });
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
//#endregion
|
|
46
|
-
export { addToHistory, getUserProfile, updateUserProfile };
|
|
47
|
-
//# sourceMappingURL=user-profile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-profile.js","names":[],"sources":["../../../src/lib/personalization/user-profile.ts"],"sourcesContent":["const PROFILE_KEY = 'jg_user_profile';\n\nexport interface UserProfile {\n interest: string;\n primaryInterest: string;\n confidence: number;\n history: string[];\n signals: Record<string, unknown>;\n lastUpdated: number;\n}\n\nfunction defaultProfile(): UserProfile {\n return {\n interest: '',\n primaryInterest: '',\n confidence: 0,\n history: [],\n signals: {},\n lastUpdated: Date.now(),\n };\n}\n\nfunction isValidUserProfile(value: unknown): value is UserProfile {\n if (typeof value !== 'object' || value === null) return false;\n const obj = value as Record<string, unknown>;\n return (\n typeof obj.interest === 'string' &&\n typeof obj.primaryInterest === 'string' &&\n typeof obj.confidence === 'number' &&\n Array.isArray(obj.history) &&\n obj.history.every((h) => typeof h === 'string') &&\n typeof obj.signals === 'object' &&\n typeof obj.lastUpdated === 'number'\n );\n}\n\nexport function getUserProfile(): UserProfile {\n if (typeof window === 'undefined') return defaultProfile();\n\n try {\n const stored = localStorage.getItem(PROFILE_KEY);\n if (!stored) return defaultProfile();\n const parsed = JSON.parse(stored);\n return isValidUserProfile(parsed) ? parsed : defaultProfile();\n } catch {\n return defaultProfile();\n }\n}\n\nexport function updateUserProfile(updates: Partial<UserProfile>): void {\n if (typeof window === 'undefined') return;\n\n const profile = getUserProfile();\n const updated = { ...profile, ...updates, lastUpdated: Date.now() };\n localStorage.setItem(PROFILE_KEY, JSON.stringify(updated));\n}\n\nexport function addToHistory(category: string): void {\n const profile = getUserProfile();\n const normalizedCategory = String(category).trim();\n if (!normalizedCategory) return;\n const history = [...(profile.history || []), normalizedCategory].slice(-20);\n updateUserProfile({ history });\n}\n"],"mappings":";AAAA,MAAM,cAAc;AAWpB,SAAS,iBAA8B;AACrC,QAAO;EACL,UAAU;EACV,iBAAiB;EACjB,YAAY;EACZ,SAAS,EAAE;EACX,SAAS,EAAE;EACX,aAAa,KAAK,KAAK;EACxB;;AAGH,SAAS,mBAAmB,OAAsC;AAChE,KAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;CACxD,MAAM,MAAM;AACZ,QACE,OAAO,IAAI,aAAa,YACxB,OAAO,IAAI,oBAAoB,YAC/B,OAAO,IAAI,eAAe,YAC1B,MAAM,QAAQ,IAAI,QAAQ,IAC1B,IAAI,QAAQ,OAAO,MAAM,OAAO,MAAM,SAAS,IAC/C,OAAO,IAAI,YAAY,YACvB,OAAO,IAAI,gBAAgB;;AAI/B,SAAgB,iBAA8B;AAC5C,KAAI,OAAO,WAAW,YAAa,QAAO,gBAAgB;AAE1D,KAAI;EACF,MAAM,SAAS,aAAa,QAAQ,YAAY;AAChD,MAAI,CAAC,OAAQ,QAAO,gBAAgB;EACpC,MAAM,SAAS,KAAK,MAAM,OAAO;AACjC,SAAO,mBAAmB,OAAO,GAAG,SAAS,gBAAgB;SACvD;AACN,SAAO,gBAAgB;;;AAI3B,SAAgB,kBAAkB,SAAqC;AACrE,KAAI,OAAO,WAAW,YAAa;CAGnC,MAAM,UAAU;EAAE,GADF,gBAAgB;EACF,GAAG;EAAS,aAAa,KAAK,KAAK;EAAE;AACnE,cAAa,QAAQ,aAAa,KAAK,UAAU,QAAQ,CAAC;;AAG5D,SAAgB,aAAa,UAAwB;CACnD,MAAM,UAAU,gBAAgB;CAChC,MAAM,qBAAqB,OAAO,SAAS,CAAC,MAAM;AAClD,KAAI,CAAC,mBAAoB;AAEzB,mBAAkB,EAAE,SADJ,CAAC,GAAI,QAAQ,WAAW,EAAE,EAAG,mBAAmB,CAAC,MAAM,IAAI,EAC9C,CAAC"}
|