medusa-storefront-data 2.5.4 → 2.5.7
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/HOMEPAGE_CONFIG.md +20 -13
- package/dist/src/server/dynamic-config.d.ts +11 -1
- package/dist/src/server/dynamic-config.d.ts.map +1 -1
- package/dist/src/server/dynamic-config.js +55 -9
- package/dist/src/server/home-sections/promo-announcements.d.ts +4 -0
- package/dist/src/server/home-sections/promo-announcements.d.ts.map +1 -1
- package/dist/src/server/home-sections/promo-announcements.js +2 -4
- package/dist/src/server/home.d.ts +4 -1
- package/dist/src/server/home.d.ts.map +1 -1
- package/dist/src/server/homepage-config.types.d.ts +96 -0
- package/dist/src/server/homepage-config.types.d.ts.map +1 -1
- package/dist/src/server/index.d.ts +1 -1
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +1 -1
- package/dist/src/server/normalize-homepage-config.d.ts.map +1 -1
- package/dist/src/server/normalize-homepage-config.js +28 -0
- package/dist/src/server/page-input.d.ts +8 -4
- package/dist/src/server/page-input.d.ts.map +1 -1
- package/dist/src/server/page-input.js +48 -1
- package/package.json +6 -1
- package/src/server/dynamic-config.ts +78 -10
- package/src/server/home-sections/promo-announcements.ts +6 -4
- package/src/server/home.ts +5 -1
- package/src/server/homepage-config.types.ts +113 -0
- package/src/server/index.ts +2 -1
- package/src/server/normalize-homepage-config.ts +38 -0
- package/src/server/page-input.ts +58 -3
- package/src/server/storefront-cms.ts +46 -0
- package/src/server/resolve-home-segment-data.ts +0 -63
package/HOMEPAGE_CONFIG.md
CHANGED
|
@@ -164,32 +164,39 @@ import { heroHomepageSectionField, bannerSlide } from "medusa-ui-home-config/sec
|
|
|
164
164
|
|
|
165
165
|
Compose `options.configs` from `homepageSectionFields` or individual `*HomepageSectionField` exports. Merge API responses with `homepageConfigFromDynamicResponse` from `medusa-storefront-data/dynamic-config`.
|
|
166
166
|
|
|
167
|
-
Help page FAQs use **`helpFaqHomepageSectionField`** from `medusa-ui-home-config/sections/helpFaq` (also included in `homepageSectionFields`).
|
|
167
|
+
Help page FAQs use **`helpFaqHomepageSectionField`** from `medusa-ui-home-config/sections/helpFaq` (also included in `homepageSectionFields`).
|
|
168
|
+
|
|
169
|
+
**Split dynamic-config keys** (Medusa plugin): store FAQs under `faqs.helpFaq`; homepage sections under `homepage-sections.sections`. `homepageConfigFromDynamicResponse` assembles these automatically:
|
|
168
170
|
|
|
169
171
|
```json
|
|
170
172
|
{
|
|
171
|
-
"
|
|
173
|
+
"site-branding": { "logo": "https://…", "description": "" },
|
|
174
|
+
"contact": { "phone": "", "email": "", "whatsapp": "", "address": "" },
|
|
175
|
+
"faqs": {
|
|
172
176
|
"helpFaq": {
|
|
173
177
|
"eyebrow": "Knowledge Base",
|
|
174
178
|
"title": "Frequently Asked",
|
|
175
179
|
"titleHighlight": "Questions",
|
|
176
|
-
"subtitle": "Browse
|
|
180
|
+
"subtitle": "Browse through our most common questions…",
|
|
177
181
|
"categories": [
|
|
178
182
|
{
|
|
179
|
-
"category":
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
"category": {
|
|
184
|
+
"category": "Order & Delivery",
|
|
185
|
+
"icon": "🚚",
|
|
186
|
+
"color": "from-blue-500 to-cyan-400",
|
|
187
|
+
"items": [
|
|
188
|
+
{ "faq": { "question": "When will I receive my order?", "answer": "…" } }
|
|
189
|
+
]
|
|
190
|
+
}
|
|
185
191
|
}
|
|
186
192
|
]
|
|
187
193
|
}
|
|
188
|
-
}
|
|
194
|
+
},
|
|
195
|
+
"homepage-sections": { "sections": { "newArrivals": { "title": "New Arrivals" } } }
|
|
189
196
|
}
|
|
190
197
|
```
|
|
191
198
|
|
|
192
|
-
Legacy flat `faq
|
|
199
|
+
Legacy single `homepage-config` with `sections.helpFaq` (flat `items` or nested `category` / `faq` wrappers) still works. Legacy flat `faq-array` entries are grouped by `faq-category`.
|
|
193
200
|
|
|
194
201
|
Storefront UI still imports from `medusa-ui-home/sections/<id>`.
|
|
195
202
|
|
|
@@ -198,8 +205,8 @@ Storefront UI still imports from `medusa-ui-home/sections/<id>`.
|
|
|
198
205
|
| Export | Use |
|
|
199
206
|
|--------|-----|
|
|
200
207
|
| `loadHeroSectionData`, `loadNewArrivalsSectionData`, … | **One section** catalog + copy |
|
|
201
|
-
| `
|
|
202
|
-
| `
|
|
208
|
+
| `getHelpFaqFromPageInput(pageInput)` | Help page FAQ from dynamic config (categories + section copy) — pass as `helpFaq` to `HelpTemplate` |
|
|
209
|
+
| `loadHelpFaqSectionData` | Thin wrapper around `getHelpFaqFromPageInput` (optional; prefer direct call) |
|
|
203
210
|
| `getDynamicConfig()` | **Main project only** |
|
|
204
211
|
| `get*FromPageInput(pageInput)` | Read CMS copy/banners without fetching |
|
|
205
212
|
| `homepageConfigFromDynamicResponse(raw)` | Merge API → `pageInput` |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "server-only";
|
|
2
2
|
import { type DefaultHomeSectionId } from "./homepage-section-defaults";
|
|
3
3
|
import type { DynamicConfigResponse, HomepageConfig } from "./homepage-config.types";
|
|
4
|
-
export { DEFAULT_PAGE_INPUT, mergePageInputWithDefaults, resolvePageInput, homepageConfigFromDynamicResponse, type StorefrontPageInput, } from "./page-input";
|
|
4
|
+
export { DEFAULT_PAGE_INPUT, mergePageInputWithDefaults, resolvePageInput, homepageConfigFromDynamicResponse, simplifiedHomepageConfigFromDynamicResponse, type StorefrontPageInput, } from "./page-input";
|
|
5
5
|
export declare const getDynamicConfig: () => Promise<DynamicConfigResponse | null>;
|
|
6
6
|
export declare function getLogoFromPageInput(pageInput?: HomepageConfig | null): string | null;
|
|
7
7
|
export type HomepageBanner = {
|
|
@@ -110,6 +110,16 @@ export type HelpFaqConfig = {
|
|
|
110
110
|
export declare function getHelpFaqFromPageInput(pageInput?: HomepageConfig | null): HelpFaqConfig;
|
|
111
111
|
/** FAQ categories for the help template (null when empty). */
|
|
112
112
|
export declare function getFaqsFromPageInput(pageInput?: HomepageConfig | null): HelpFaqCategory[] | null;
|
|
113
|
+
export type PromoAnnouncementsConfig = {
|
|
114
|
+
messages: string[];
|
|
115
|
+
icon?: string;
|
|
116
|
+
iconAlt?: string;
|
|
117
|
+
ariaLabel: string;
|
|
118
|
+
separator?: string;
|
|
119
|
+
};
|
|
120
|
+
/** Promo ticker messages + UI copy (icon, aria label, separator). */
|
|
121
|
+
export declare function getPromoAnnouncementsFromPageInput(pageInput?: HomepageConfig | null): PromoAnnouncementsConfig;
|
|
122
|
+
/** @deprecated Use {@link getPromoAnnouncementsFromPageInput}. */
|
|
113
123
|
export declare function getAnnouncementMessagesFromPageInput(pageInput?: HomepageConfig | null): string[];
|
|
114
124
|
export type AboutBrandConfig = {
|
|
115
125
|
eyebrow: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-config.d.ts","sourceRoot":"","sources":["../../../src/server/dynamic-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dynamic-config.d.ts","sourceRoot":"","sources":["../../../src/server/dynamic-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { getAuthHeaders } from "../cookies";
|
|
|
4
4
|
import { DEFAULT_HOMEPAGE_SECTIONS, HOME_SECTION_COPY_ID_LIST, } from "./homepage-section-defaults";
|
|
5
5
|
import { mergeSectionBlock } from "./config-merge";
|
|
6
6
|
import { resolvePageInput } from "./page-input";
|
|
7
|
-
export { DEFAULT_PAGE_INPUT, mergePageInputWithDefaults, resolvePageInput, homepageConfigFromDynamicResponse, } from "./page-input";
|
|
7
|
+
export { DEFAULT_PAGE_INPUT, mergePageInputWithDefaults, resolvePageInput, homepageConfigFromDynamicResponse, simplifiedHomepageConfigFromDynamicResponse, } from "./page-input";
|
|
8
8
|
export const getDynamicConfig = cache(async () => {
|
|
9
9
|
try {
|
|
10
10
|
const publishableKey = process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY;
|
|
@@ -465,9 +465,46 @@ export function getFaqsFromPageInput(pageInput) {
|
|
|
465
465
|
const { categories } = getHelpFaqFromPageInput(pageInput);
|
|
466
466
|
return categories.length > 0 ? categories : null;
|
|
467
467
|
}
|
|
468
|
-
|
|
468
|
+
function parsePromoAnnouncementsUi(...sources) {
|
|
469
|
+
const pick = (key, alt) => {
|
|
470
|
+
for (const src of sources) {
|
|
471
|
+
if (!src)
|
|
472
|
+
continue;
|
|
473
|
+
const value = normalizeCmsText(src[key] ?? (alt ? src[alt] : undefined));
|
|
474
|
+
if (value)
|
|
475
|
+
return value;
|
|
476
|
+
}
|
|
477
|
+
return undefined;
|
|
478
|
+
};
|
|
479
|
+
return {
|
|
480
|
+
icon: pick("icon", "ticker-icon"),
|
|
481
|
+
iconAlt: pick("iconAlt", "icon-alt"),
|
|
482
|
+
ariaLabel: pick("ariaLabel", "aria-label") ?? "Store announcements",
|
|
483
|
+
separator: pick("separator", "message-separator"),
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
/** Promo ticker messages + UI copy (icon, aria label, separator). */
|
|
487
|
+
export function getPromoAnnouncementsFromPageInput(pageInput) {
|
|
488
|
+
const homepageConfig = resolvePageInput(pageInput);
|
|
469
489
|
const block = getMergedSectionBlock("promoAnnouncements", pageInput);
|
|
470
|
-
|
|
490
|
+
const promoUi = homepageConfig.promoUi ??
|
|
491
|
+
homepageConfig["promo-ui"];
|
|
492
|
+
let messages = parseAnnouncementMessages(block);
|
|
493
|
+
if (messages.length === 0) {
|
|
494
|
+
const legacy = homepageConfig["announcement-messages"] ??
|
|
495
|
+
homepageConfig["announcement-bar"];
|
|
496
|
+
if (Array.isArray(legacy)) {
|
|
497
|
+
messages = legacy
|
|
498
|
+
.map((m) => (typeof m === "string" ? m.trim() : ""))
|
|
499
|
+
.filter(Boolean);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
const ui = parsePromoAnnouncementsUi(promoUi, block);
|
|
503
|
+
return { messages, ...ui };
|
|
504
|
+
}
|
|
505
|
+
/** @deprecated Use {@link getPromoAnnouncementsFromPageInput}. */
|
|
506
|
+
export function getAnnouncementMessagesFromPageInput(pageInput) {
|
|
507
|
+
return getPromoAnnouncementsFromPageInput(pageInput).messages;
|
|
471
508
|
}
|
|
472
509
|
export function getAboutBrandFromPageInput(pageInput) {
|
|
473
510
|
const homepageConfig = resolvePageInput(pageInput);
|
|
@@ -498,12 +535,9 @@ export function getAboutBrandFromPageInput(pageInput) {
|
|
|
498
535
|
stats,
|
|
499
536
|
};
|
|
500
537
|
}
|
|
501
|
-
|
|
502
|
-
const block = getMergedSectionBlock("brandPillars", pageInput);
|
|
503
|
-
const copy = parseSectionCopy(block);
|
|
504
|
-
const sectionTitle = copy.title ?? copy.name ?? "";
|
|
538
|
+
function parseBrandPillarsFromBlock(block) {
|
|
505
539
|
const raw = block.pillars ?? block["brand-pillars"] ?? [];
|
|
506
|
-
|
|
540
|
+
return (Array.isArray(raw) ? raw : [])
|
|
507
541
|
.map((item) => {
|
|
508
542
|
if (!item || typeof item !== "object")
|
|
509
543
|
return null;
|
|
@@ -512,9 +546,21 @@ export function getBrandPillarsFromPageInput(pageInput) {
|
|
|
512
546
|
const title = String(p.title ?? p.name ?? "").trim();
|
|
513
547
|
const description = String(p.description ?? p.text ?? "").trim();
|
|
514
548
|
const image = (p.image ?? p.icon);
|
|
515
|
-
|
|
549
|
+
const href = (p.href ?? p.link ?? p.url);
|
|
550
|
+
return title && description
|
|
551
|
+
? { title, description, image, href: href ? String(href) : undefined }
|
|
552
|
+
: null;
|
|
516
553
|
})
|
|
517
554
|
.filter(Boolean);
|
|
555
|
+
}
|
|
556
|
+
export function getBrandPillarsFromPageInput(pageInput) {
|
|
557
|
+
const block = getMergedSectionBlock("brandPillars", pageInput);
|
|
558
|
+
const copy = parseSectionCopy(block);
|
|
559
|
+
const sectionTitle = copy.title ?? copy.name ?? "";
|
|
560
|
+
let pillars = parseBrandPillarsFromBlock(block);
|
|
561
|
+
if (pillars.length === 0) {
|
|
562
|
+
pillars = parseBrandPillarsFromBlock(DEFAULT_HOMEPAGE_SECTIONS.brandPillars);
|
|
563
|
+
}
|
|
518
564
|
return { sectionTitle, pillars };
|
|
519
565
|
}
|
|
520
566
|
export function getBlogPostsFromPageInput(pageInput) {
|
|
@@ -2,6 +2,10 @@ import "server-only";
|
|
|
2
2
|
import type { SectionLoaderOptions } from "./shared";
|
|
3
3
|
export type PromoAnnouncementsSectionData = {
|
|
4
4
|
messages: string[];
|
|
5
|
+
icon?: string;
|
|
6
|
+
iconAlt?: string;
|
|
7
|
+
ariaLabel: string;
|
|
8
|
+
separator?: string;
|
|
5
9
|
};
|
|
6
10
|
export declare function loadPromoAnnouncementsSectionData(_countryCode: string, options?: SectionLoaderOptions): Promise<PromoAnnouncementsSectionData>;
|
|
7
11
|
//# sourceMappingURL=promo-announcements.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promo-announcements.d.ts","sourceRoot":"","sources":["../../../../src/server/home-sections/promo-announcements.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAEpD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,wBAAsB,iCAAiC,CACrD,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,6BAA6B,CAAC,
|
|
1
|
+
{"version":3,"file":"promo-announcements.d.ts","sourceRoot":"","sources":["../../../../src/server/home-sections/promo-announcements.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAEpD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAsB,iCAAiC,CACrD,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,6BAA6B,CAAC,CAExC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import "server-only";
|
|
2
|
-
import {
|
|
2
|
+
import { getPromoAnnouncementsFromPageInput } from "../dynamic-config";
|
|
3
3
|
export async function loadPromoAnnouncementsSectionData(_countryCode, options) {
|
|
4
|
-
return
|
|
5
|
-
messages: getAnnouncementMessagesFromPageInput(options?.pageInput ?? null),
|
|
6
|
-
};
|
|
4
|
+
return getPromoAnnouncementsFromPageInput(options?.pageInput ?? null);
|
|
7
5
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { HttpTypes } from "@medusajs/types";
|
|
2
2
|
import type { InstagramPostsData, AboutBrandConfig, BrandPillarConfig, BlogPostConfig, HomeSectionsCopy, TrustFeaturesConfig, HomepageBanner } from "./dynamic-config";
|
|
3
3
|
import type { ShoppableLook } from "./shoppable-looks";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Shared homepage data shape used by `medusa-storefront-compose`.
|
|
6
|
+
* This is a type-only module (no runtime loaders).
|
|
7
|
+
*/
|
|
5
8
|
export type HomePageData = {
|
|
6
9
|
region: HttpTypes.StoreRegion | null;
|
|
7
10
|
collections: Array<Record<string, unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/server/home.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD
|
|
1
|
+
{"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/server/home.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAA;IACpC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3C,UAAU,EAAE,SAAS,CAAC,oBAAoB,EAAE,CAAA;IAC5C,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;IACrC,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;IACrC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3D,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KACvB,CAAA;IACD,cAAc,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;IACxC,gBAAgB,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAA;IAC/C,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;IACrC,UAAU,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;IACpC,YAAY,EAAE,aAAa,EAAE,CAAA;IAC7B,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;IACvC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,YAAY,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAA;IACpE,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,cAAc,EAAE,kBAAkB,CAAA;IAClC,YAAY,EAAE,gBAAgB,CAAA;IAC9B,aAAa,EAAE,mBAAmB,CAAA;IAClC,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IACnC,mBAAmB,EAAE;QACnB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAChD,CAAA;CACF,CAAA"}
|
|
@@ -24,6 +24,17 @@ export type HomepagePromoAnnouncementsSection = HomepageSectionCopyFields & {
|
|
|
24
24
|
text?: string;
|
|
25
25
|
}>;
|
|
26
26
|
"announcement-messages"?: string[];
|
|
27
|
+
/** Optional icon shown before the ticker. */
|
|
28
|
+
icon?: string;
|
|
29
|
+
iconAlt?: string;
|
|
30
|
+
ariaLabel?: string;
|
|
31
|
+
separator?: string;
|
|
32
|
+
};
|
|
33
|
+
export type HomepagePromoUiConfig = {
|
|
34
|
+
icon?: string;
|
|
35
|
+
iconAlt?: string;
|
|
36
|
+
ariaLabel?: string;
|
|
37
|
+
separator?: string;
|
|
27
38
|
};
|
|
28
39
|
export type HomepagePromoCountdownSection = HomepageSectionCopyFields & {
|
|
29
40
|
code?: string;
|
|
@@ -245,6 +256,73 @@ export type HomepagePromoBarConfig = {
|
|
|
245
256
|
"promo-value"?: string;
|
|
246
257
|
"promo-active"?: boolean;
|
|
247
258
|
};
|
|
259
|
+
export type HomepageHeaderNavStaticItem = {
|
|
260
|
+
type?: "static";
|
|
261
|
+
label?: string;
|
|
262
|
+
href?: string;
|
|
263
|
+
icon?: string;
|
|
264
|
+
iconSrc?: string;
|
|
265
|
+
};
|
|
266
|
+
export type HomepageHeaderNavCategoriesItem = {
|
|
267
|
+
type: "categories";
|
|
268
|
+
/** Limit how many categories to include (after filtering). */
|
|
269
|
+
limit?: number;
|
|
270
|
+
/** Show only these category handles (in this exact order). */
|
|
271
|
+
handles?: string[];
|
|
272
|
+
/** Only include top-level categories (no parent). Default: true */
|
|
273
|
+
topLevelOnly?: boolean;
|
|
274
|
+
/** Optional prefix label like "Shop by category" (not used in desktop links). */
|
|
275
|
+
label?: string;
|
|
276
|
+
};
|
|
277
|
+
export type HomepageHeaderNavItem = HomepageHeaderNavStaticItem | HomepageHeaderNavCategoriesItem;
|
|
278
|
+
export type HomepageHeaderNavConfig = {
|
|
279
|
+
items?: HomepageHeaderNavItem[];
|
|
280
|
+
};
|
|
281
|
+
export type HomepageFooterNavLink = {
|
|
282
|
+
label?: string;
|
|
283
|
+
href?: string;
|
|
284
|
+
};
|
|
285
|
+
export type HomepageFooterNavColumn = {
|
|
286
|
+
title?: string;
|
|
287
|
+
links?: HomepageFooterNavLink[];
|
|
288
|
+
};
|
|
289
|
+
export type HomepageFooterNavConfig = {
|
|
290
|
+
columns?: HomepageFooterNavColumn[];
|
|
291
|
+
};
|
|
292
|
+
export type HomepageFooterUiConfig = {
|
|
293
|
+
shopColumnTitle?: string;
|
|
294
|
+
contactTitle?: string;
|
|
295
|
+
newsletterBlurb?: string;
|
|
296
|
+
newsletterPlaceholder?: string;
|
|
297
|
+
newsletterSubmitLabel?: string;
|
|
298
|
+
newsletterInvalidEmail?: string;
|
|
299
|
+
newsletterErrorMessage?: string;
|
|
300
|
+
/** Supports `{siteName}` token. */
|
|
301
|
+
copyrightText?: string;
|
|
302
|
+
icons?: {
|
|
303
|
+
phone?: string;
|
|
304
|
+
email?: string;
|
|
305
|
+
address?: string;
|
|
306
|
+
};
|
|
307
|
+
social?: {
|
|
308
|
+
facebook?: string;
|
|
309
|
+
linkedin?: string;
|
|
310
|
+
instagram?: string;
|
|
311
|
+
youtube?: string;
|
|
312
|
+
};
|
|
313
|
+
};
|
|
314
|
+
export type HomepageHeaderUiConfig = {
|
|
315
|
+
icons?: {
|
|
316
|
+
cart?: string;
|
|
317
|
+
account?: string;
|
|
318
|
+
search?: string;
|
|
319
|
+
};
|
|
320
|
+
search?: {
|
|
321
|
+
placeholder?: string;
|
|
322
|
+
title?: string;
|
|
323
|
+
emptyStateText?: string;
|
|
324
|
+
};
|
|
325
|
+
};
|
|
248
326
|
export type HomepageFaqEntry = {
|
|
249
327
|
"faq-category"?: string;
|
|
250
328
|
"faq-question"?: string;
|
|
@@ -258,6 +336,24 @@ export type HomepageConfig = {
|
|
|
258
336
|
logo?: string;
|
|
259
337
|
"website-description"?: string;
|
|
260
338
|
website_description?: string;
|
|
339
|
+
/**
|
|
340
|
+
* Header navigation (desktop + mobile).
|
|
341
|
+
* Use `type: "static"` for hardcoded links, or `type: "categories"` to auto-populate from product categories.
|
|
342
|
+
*/
|
|
343
|
+
headerNav?: HomepageHeaderNavConfig;
|
|
344
|
+
"header-nav"?: HomepageHeaderNavConfig;
|
|
345
|
+
/** Footer navigation columns + links. */
|
|
346
|
+
footerNav?: HomepageFooterNavConfig;
|
|
347
|
+
"footer-nav"?: HomepageFooterNavConfig;
|
|
348
|
+
/** Footer static copy + icon overrides. */
|
|
349
|
+
footerUi?: HomepageFooterUiConfig;
|
|
350
|
+
"footer-ui"?: HomepageFooterUiConfig;
|
|
351
|
+
/** Header icons + search copy. */
|
|
352
|
+
headerUi?: HomepageHeaderUiConfig;
|
|
353
|
+
"header-ui"?: HomepageHeaderUiConfig;
|
|
354
|
+
/** Promo ticker icon + accessibility copy (merged with `sections.promoAnnouncements`). */
|
|
355
|
+
promoUi?: HomepagePromoUiConfig;
|
|
356
|
+
"promo-ui"?: HomepagePromoUiConfig;
|
|
261
357
|
/** Hero carousel — used by `hero` section (not `sections.hero`). */
|
|
262
358
|
"homepage-banner-array"?: HomepageBannerEntry[];
|
|
263
359
|
"app-banner-array"?: HomepageAppBannerEntry[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage-config.types.d.ts","sourceRoot":"","sources":["../../../src/server/homepage-config.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"homepage-config.types.d.ts","sourceRoot":"","sources":["../../../src/server/homepage-config.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@ export * from "./customer-registration";
|
|
|
5
5
|
export * from "./customer";
|
|
6
6
|
export * from "./dynamic-config";
|
|
7
7
|
export * from "./page-input";
|
|
8
|
-
export * from "./resolve-home-segment-data";
|
|
9
8
|
export * from "./fulfillment";
|
|
10
9
|
export * from "./guest";
|
|
11
10
|
export * from "./locale-actions";
|
|
@@ -22,4 +21,5 @@ export * from "./swaps";
|
|
|
22
21
|
export * from "./variants";
|
|
23
22
|
export * from "./wishlist";
|
|
24
23
|
export * from "./home";
|
|
24
|
+
export * from "./shoppable-looks";
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,mBAAmB,CAAA"}
|
package/dist/src/server/index.js
CHANGED
|
@@ -5,7 +5,6 @@ export * from "./customer-registration";
|
|
|
5
5
|
export * from "./customer";
|
|
6
6
|
export * from "./dynamic-config";
|
|
7
7
|
export * from "./page-input";
|
|
8
|
-
export * from "./resolve-home-segment-data";
|
|
9
8
|
export * from "./fulfillment";
|
|
10
9
|
export * from "./guest";
|
|
11
10
|
export * from "./locale-actions";
|
|
@@ -22,3 +21,4 @@ export * from "./swaps";
|
|
|
22
21
|
export * from "./variants";
|
|
23
22
|
export * from "./wishlist";
|
|
24
23
|
export * from "./home";
|
|
24
|
+
export * from "./shoppable-looks";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-homepage-config.d.ts","sourceRoot":"","sources":["../../../src/server/normalize-homepage-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AA+O7D;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"normalize-homepage-config.d.ts","sourceRoot":"","sources":["../../../src/server/normalize-homepage-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AA+O7D;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAyEtE"}
|
|
@@ -236,6 +236,34 @@ export function normalizeHomepageConfig(input) {
|
|
|
236
236
|
raw["website-description"],
|
|
237
237
|
sections: sections,
|
|
238
238
|
};
|
|
239
|
+
const headerNav = asObject(site?.headerNav) ?? asObject(site?.["header-nav"]) ?? asObject(site?.nav);
|
|
240
|
+
if (headerNav) {
|
|
241
|
+
legacy.headerNav = headerNav;
|
|
242
|
+
}
|
|
243
|
+
const footerNav = asObject(site?.footerNav) ??
|
|
244
|
+
asObject(site?.["footer-nav"]) ??
|
|
245
|
+
asObject(site?.footer);
|
|
246
|
+
if (footerNav) {
|
|
247
|
+
legacy.footerNav = footerNav;
|
|
248
|
+
}
|
|
249
|
+
const footerUi = asObject(site?.footerUi) ??
|
|
250
|
+
asObject(site?.["footer-ui"]) ??
|
|
251
|
+
asObject(site?.footer);
|
|
252
|
+
if (footerUi) {
|
|
253
|
+
legacy.footerUi = footerUi;
|
|
254
|
+
}
|
|
255
|
+
const headerUi = asObject(site?.headerUi) ??
|
|
256
|
+
asObject(site?.["header-ui"]) ??
|
|
257
|
+
asObject(site?.header);
|
|
258
|
+
if (headerUi) {
|
|
259
|
+
legacy.headerUi = headerUi;
|
|
260
|
+
}
|
|
261
|
+
const promoUi = asObject(site?.promoUi) ??
|
|
262
|
+
asObject(site?.["promo-ui"]) ??
|
|
263
|
+
asObject(site?.promo);
|
|
264
|
+
if (promoUi) {
|
|
265
|
+
legacy.promoUi = promoUi;
|
|
266
|
+
}
|
|
239
267
|
if (desktop.length)
|
|
240
268
|
legacy["homepage-banner-array"] = desktop;
|
|
241
269
|
if (mobile.length)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "server-only";
|
|
2
|
-
import type { HomepageConfig } from "./homepage-config.types";
|
|
2
|
+
import type { DynamicConfigResponse, HomepageConfig } from "./homepage-config.types";
|
|
3
3
|
/** Full `homepage-config` blob passed from the main project into pages and layout. */
|
|
4
4
|
export type StorefrontPageInput = HomepageConfig;
|
|
5
5
|
export declare const DEFAULT_PAGE_INPUT: StorefrontPageInput;
|
|
@@ -10,10 +10,14 @@ export declare const DEFAULT_PAGE_INPUT: StorefrontPageInput;
|
|
|
10
10
|
export declare function mergePageInputWithDefaults(override?: HomepageConfig | null): StorefrontPageInput;
|
|
11
11
|
/** Resolve page input: explicit override, or package defaults. */
|
|
12
12
|
export declare function resolvePageInput(pageInput?: HomepageConfig | null): StorefrontPageInput;
|
|
13
|
+
/**
|
|
14
|
+
* Medusa plugin split keys (`site-branding`, `contact`, `faqs`, `homepage-sections`)
|
|
15
|
+
* → simplified `{ site, sections }` for {@link normalizeHomepageConfig}.
|
|
16
|
+
*/
|
|
17
|
+
export declare function simplifiedHomepageConfigFromDynamicResponse(response: DynamicConfigResponse | null | undefined): HomepageConfig | null;
|
|
13
18
|
/**
|
|
14
19
|
* Build `homepage-config` from Medusa `GET /store/dynamic-config` (main project only).
|
|
20
|
+
* Supports legacy `homepage-config` or split plugin keys.
|
|
15
21
|
*/
|
|
16
|
-
export declare function homepageConfigFromDynamicResponse(response:
|
|
17
|
-
"homepage-config"?: HomepageConfig | null;
|
|
18
|
-
} | null | undefined): StorefrontPageInput;
|
|
22
|
+
export declare function homepageConfigFromDynamicResponse(response: DynamicConfigResponse | null | undefined): StorefrontPageInput;
|
|
19
23
|
//# sourceMappingURL=page-input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-input.d.ts","sourceRoot":"","sources":["../../../src/server/page-input.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"page-input.d.ts","sourceRoot":"","sources":["../../../src/server/page-input.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACf,MAAM,yBAAyB,CAAA;AAUhC,sFAAsF;AACtF,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAA;AAEhD,eAAO,MAAM,kBAAkB,EACM,mBAAmB,CAAA;AAExD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,GAC/B,mBAAmB,CA6BrB;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAC9B,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI,GAChC,mBAAmB,CAErB;AAED;;;GAGG;AACH,wBAAgB,2CAA2C,CACzD,QAAQ,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GACjD,cAAc,GAAG,IAAI,CAkCvB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GACjD,mBAAmB,CAMrB"}
|
|
@@ -2,6 +2,9 @@ import "server-only";
|
|
|
2
2
|
import defaultPageInputJson from "../../segment-data/default-page-input.json";
|
|
3
3
|
import { mergeSectionBlock } from "./config-merge";
|
|
4
4
|
import { normalizeHomepageConfig } from "./normalize-homepage-config";
|
|
5
|
+
function asObject(v) {
|
|
6
|
+
return v && typeof v === "object" && !Array.isArray(v) ? v : null;
|
|
7
|
+
}
|
|
5
8
|
export const DEFAULT_PAGE_INPUT = defaultPageInputJson;
|
|
6
9
|
/**
|
|
7
10
|
* Merge CMS / main-project overrides onto package JSON defaults.
|
|
@@ -33,10 +36,54 @@ export function mergePageInputWithDefaults(override) {
|
|
|
33
36
|
export function resolvePageInput(pageInput) {
|
|
34
37
|
return mergePageInputWithDefaults(pageInput ?? null);
|
|
35
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Medusa plugin split keys (`site-branding`, `contact`, `faqs`, `homepage-sections`)
|
|
41
|
+
* → simplified `{ site, sections }` for {@link normalizeHomepageConfig}.
|
|
42
|
+
*/
|
|
43
|
+
export function simplifiedHomepageConfigFromDynamicResponse(response) {
|
|
44
|
+
if (!response || typeof response !== "object")
|
|
45
|
+
return null;
|
|
46
|
+
const siteBranding = asObject(response["site-branding"]);
|
|
47
|
+
const contact = asObject(response.contact);
|
|
48
|
+
const faqsRoot = asObject(response.faqs);
|
|
49
|
+
const homepageSections = asObject(response["homepage-sections"]);
|
|
50
|
+
const sectionsFromCms = asObject(homepageSections?.sections);
|
|
51
|
+
const hasSplitKeys = siteBranding || contact || faqsRoot || sectionsFromCms;
|
|
52
|
+
if (!hasSplitKeys)
|
|
53
|
+
return null;
|
|
54
|
+
const site = {};
|
|
55
|
+
if (siteBranding) {
|
|
56
|
+
if (siteBranding.logo != null)
|
|
57
|
+
site.logo = siteBranding.logo;
|
|
58
|
+
if (siteBranding.brandName != null)
|
|
59
|
+
site.brandName = siteBranding.brandName;
|
|
60
|
+
if (siteBranding.description != null) {
|
|
61
|
+
site.description = siteBranding.description;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (contact)
|
|
65
|
+
site.contact = contact;
|
|
66
|
+
const sections = sectionsFromCms ? { ...sectionsFromCms } : {};
|
|
67
|
+
const helpFaq = asObject(faqsRoot?.helpFaq);
|
|
68
|
+
if (helpFaq)
|
|
69
|
+
sections.helpFaq = helpFaq;
|
|
70
|
+
const simplified = {};
|
|
71
|
+
if (Object.keys(site).length)
|
|
72
|
+
simplified.site = site;
|
|
73
|
+
if (Object.keys(sections).length)
|
|
74
|
+
simplified.sections = sections;
|
|
75
|
+
return Object.keys(simplified).length
|
|
76
|
+
? simplified
|
|
77
|
+
: null;
|
|
78
|
+
}
|
|
36
79
|
/**
|
|
37
80
|
* Build `homepage-config` from Medusa `GET /store/dynamic-config` (main project only).
|
|
81
|
+
* Supports legacy `homepage-config` or split plugin keys.
|
|
38
82
|
*/
|
|
39
83
|
export function homepageConfigFromDynamicResponse(response) {
|
|
40
|
-
const
|
|
84
|
+
const legacy = response?.["homepage-config"] ?? null;
|
|
85
|
+
const fromSplit = simplifiedHomepageConfigFromDynamicResponse(response);
|
|
86
|
+
const raw = fromSplit ?? legacy;
|
|
87
|
+
const normalized = normalizeHomepageConfig(raw);
|
|
41
88
|
return mergePageInputWithDefaults(normalized);
|
|
42
89
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medusa-storefront-data",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Medusa storefront server data layer extracted from Next.js storefront",
|
|
6
6
|
"license": "MIT",
|
|
@@ -172,6 +172,11 @@
|
|
|
172
172
|
"types": "./dist/server/help-sections/help-faq.d.ts",
|
|
173
173
|
"import": "./src/server/help-sections/help-faq.ts",
|
|
174
174
|
"default": "./src/server/help-sections/help-faq.ts"
|
|
175
|
+
},
|
|
176
|
+
"./storefront-cms": {
|
|
177
|
+
"types": "./src/server/storefront-cms.ts",
|
|
178
|
+
"import": "./src/server/storefront-cms.ts",
|
|
179
|
+
"default": "./src/server/storefront-cms.ts"
|
|
175
180
|
}
|
|
176
181
|
},
|
|
177
182
|
"main": "./dist/server/index.js",
|
|
@@ -16,6 +16,7 @@ export {
|
|
|
16
16
|
mergePageInputWithDefaults,
|
|
17
17
|
resolvePageInput,
|
|
18
18
|
homepageConfigFromDynamicResponse,
|
|
19
|
+
simplifiedHomepageConfigFromDynamicResponse,
|
|
19
20
|
type StorefrontPageInput,
|
|
20
21
|
} from "./page-input"
|
|
21
22
|
|
|
@@ -674,11 +675,64 @@ export function getFaqsFromPageInput(
|
|
|
674
675
|
}
|
|
675
676
|
|
|
676
677
|
|
|
678
|
+
export type PromoAnnouncementsConfig = {
|
|
679
|
+
messages: string[]
|
|
680
|
+
icon?: string
|
|
681
|
+
iconAlt?: string
|
|
682
|
+
ariaLabel: string
|
|
683
|
+
separator?: string
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
function parsePromoAnnouncementsUi(
|
|
687
|
+
...sources: Array<Record<string, unknown> | null | undefined>
|
|
688
|
+
): Pick<PromoAnnouncementsConfig, "icon" | "iconAlt" | "ariaLabel" | "separator"> {
|
|
689
|
+
const pick = (key: string, alt?: string) => {
|
|
690
|
+
for (const src of sources) {
|
|
691
|
+
if (!src) continue
|
|
692
|
+
const value = normalizeCmsText(src[key] ?? (alt ? src[alt] : undefined))
|
|
693
|
+
if (value) return value
|
|
694
|
+
}
|
|
695
|
+
return undefined
|
|
696
|
+
}
|
|
697
|
+
return {
|
|
698
|
+
icon: pick("icon", "ticker-icon"),
|
|
699
|
+
iconAlt: pick("iconAlt", "icon-alt"),
|
|
700
|
+
ariaLabel: pick("ariaLabel", "aria-label") ?? "Store announcements",
|
|
701
|
+
separator: pick("separator", "message-separator"),
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
/** Promo ticker messages + UI copy (icon, aria label, separator). */
|
|
706
|
+
export function getPromoAnnouncementsFromPageInput(
|
|
707
|
+
pageInput?: HomepageConfig | null
|
|
708
|
+
): PromoAnnouncementsConfig {
|
|
709
|
+
const homepageConfig = resolvePageInput(pageInput)
|
|
710
|
+
const block = getMergedSectionBlock("promoAnnouncements", pageInput)
|
|
711
|
+
const promoUi =
|
|
712
|
+
(homepageConfig.promoUi as Record<string, unknown> | undefined) ??
|
|
713
|
+
(homepageConfig["promo-ui"] as Record<string, unknown> | undefined)
|
|
714
|
+
|
|
715
|
+
let messages = parseAnnouncementMessages(block)
|
|
716
|
+
if (messages.length === 0) {
|
|
717
|
+
const legacy =
|
|
718
|
+
homepageConfig["announcement-messages"] ??
|
|
719
|
+
homepageConfig["announcement-bar"]
|
|
720
|
+
if (Array.isArray(legacy)) {
|
|
721
|
+
messages = legacy
|
|
722
|
+
.map((m) => (typeof m === "string" ? m.trim() : ""))
|
|
723
|
+
.filter(Boolean)
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
const ui = parsePromoAnnouncementsUi(promoUi, block)
|
|
728
|
+
return { messages, ...ui }
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
/** @deprecated Use {@link getPromoAnnouncementsFromPageInput}. */
|
|
677
732
|
export function getAnnouncementMessagesFromPageInput(
|
|
678
733
|
pageInput?: HomepageConfig | null
|
|
679
734
|
): string[] {
|
|
680
|
-
|
|
681
|
-
return parseAnnouncementMessages(block)
|
|
735
|
+
return getPromoAnnouncementsFromPageInput(pageInput).messages
|
|
682
736
|
}
|
|
683
737
|
|
|
684
738
|
|
|
@@ -733,14 +787,11 @@ export type BrandPillarConfig = {
|
|
|
733
787
|
href?: string
|
|
734
788
|
}
|
|
735
789
|
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
):
|
|
739
|
-
const block = getMergedSectionBlock("brandPillars", pageInput)
|
|
740
|
-
const copy = parseSectionCopy(block)
|
|
741
|
-
const sectionTitle = copy.title ?? copy.name ?? ""
|
|
790
|
+
function parseBrandPillarsFromBlock(
|
|
791
|
+
block: Record<string, unknown>
|
|
792
|
+
): BrandPillarConfig[] {
|
|
742
793
|
const raw = block.pillars ?? block["brand-pillars"] ?? []
|
|
743
|
-
|
|
794
|
+
return (Array.isArray(raw) ? raw : [])
|
|
744
795
|
.map((item: unknown) => {
|
|
745
796
|
if (!item || typeof item !== "object") return null
|
|
746
797
|
const row = (item as Record<string, unknown>)["pillar"] ?? item
|
|
@@ -748,9 +799,26 @@ export function getBrandPillarsFromPageInput(
|
|
|
748
799
|
const title = String(p.title ?? p.name ?? "").trim()
|
|
749
800
|
const description = String(p.description ?? p.text ?? "").trim()
|
|
750
801
|
const image = (p.image ?? p.icon) as string | undefined
|
|
751
|
-
|
|
802
|
+
const href = (p.href ?? p.link ?? p.url) as string | undefined
|
|
803
|
+
return title && description
|
|
804
|
+
? { title, description, image, href: href ? String(href) : undefined }
|
|
805
|
+
: null
|
|
752
806
|
})
|
|
753
807
|
.filter(Boolean) as BrandPillarConfig[]
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
export function getBrandPillarsFromPageInput(
|
|
811
|
+
pageInput?: HomepageConfig | null
|
|
812
|
+
): { sectionTitle: string; pillars: BrandPillarConfig[] } {
|
|
813
|
+
const block = getMergedSectionBlock("brandPillars", pageInput)
|
|
814
|
+
const copy = parseSectionCopy(block)
|
|
815
|
+
const sectionTitle = copy.title ?? copy.name ?? ""
|
|
816
|
+
let pillars = parseBrandPillarsFromBlock(block)
|
|
817
|
+
if (pillars.length === 0) {
|
|
818
|
+
pillars = parseBrandPillarsFromBlock(
|
|
819
|
+
DEFAULT_HOMEPAGE_SECTIONS.brandPillars as Record<string, unknown>
|
|
820
|
+
)
|
|
821
|
+
}
|
|
754
822
|
return { sectionTitle, pillars }
|
|
755
823
|
}
|
|
756
824
|
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import "server-only"
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { getPromoAnnouncementsFromPageInput } from "../dynamic-config"
|
|
4
4
|
import type { SectionLoaderOptions } from "./shared"
|
|
5
5
|
|
|
6
6
|
export type PromoAnnouncementsSectionData = {
|
|
7
7
|
messages: string[]
|
|
8
|
+
icon?: string
|
|
9
|
+
iconAlt?: string
|
|
10
|
+
ariaLabel: string
|
|
11
|
+
separator?: string
|
|
8
12
|
}
|
|
9
13
|
|
|
10
14
|
export async function loadPromoAnnouncementsSectionData(
|
|
11
15
|
_countryCode: string,
|
|
12
16
|
options?: SectionLoaderOptions
|
|
13
17
|
): Promise<PromoAnnouncementsSectionData> {
|
|
14
|
-
return
|
|
15
|
-
messages: getAnnouncementMessagesFromPageInput(options?.pageInput ?? null),
|
|
16
|
-
}
|
|
18
|
+
return getPromoAnnouncementsFromPageInput(options?.pageInput ?? null)
|
|
17
19
|
}
|
package/src/server/home.ts
CHANGED
|
@@ -10,7 +10,10 @@ import type {
|
|
|
10
10
|
} from "./dynamic-config"
|
|
11
11
|
import type { ShoppableLook } from "./shoppable-looks"
|
|
12
12
|
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Shared homepage data shape used by `medusa-storefront-compose`.
|
|
15
|
+
* This is a type-only module (no runtime loaders).
|
|
16
|
+
*/
|
|
14
17
|
export type HomePageData = {
|
|
15
18
|
region: HttpTypes.StoreRegion | null
|
|
16
19
|
collections: Array<Record<string, unknown>>
|
|
@@ -48,3 +51,4 @@ export type HomePageData = {
|
|
|
48
51
|
features: Array<{ name: string; icon: string }>
|
|
49
52
|
}
|
|
50
53
|
}
|
|
54
|
+
|
|
@@ -23,6 +23,18 @@ export type HomepagePromoAnnouncementsSection = HomepageSectionCopyFields & {
|
|
|
23
23
|
messages?: string[]
|
|
24
24
|
items?: Array<string | { message?: string; text?: string }>
|
|
25
25
|
"announcement-messages"?: string[]
|
|
26
|
+
/** Optional icon shown before the ticker. */
|
|
27
|
+
icon?: string
|
|
28
|
+
iconAlt?: string
|
|
29
|
+
ariaLabel?: string
|
|
30
|
+
separator?: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type HomepagePromoUiConfig = {
|
|
34
|
+
icon?: string
|
|
35
|
+
iconAlt?: string
|
|
36
|
+
ariaLabel?: string
|
|
37
|
+
separator?: string
|
|
26
38
|
}
|
|
27
39
|
|
|
28
40
|
export type HomepagePromoCountdownSection = HomepageSectionCopyFields & {
|
|
@@ -277,6 +289,84 @@ export type HomepagePromoBarConfig = {
|
|
|
277
289
|
"promo-active"?: boolean
|
|
278
290
|
}
|
|
279
291
|
|
|
292
|
+
export type HomepageHeaderNavStaticItem = {
|
|
293
|
+
type?: "static"
|
|
294
|
+
label?: string
|
|
295
|
+
href?: string
|
|
296
|
+
icon?: string
|
|
297
|
+
iconSrc?: string
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
export type HomepageHeaderNavCategoriesItem = {
|
|
301
|
+
type: "categories"
|
|
302
|
+
/** Limit how many categories to include (after filtering). */
|
|
303
|
+
limit?: number
|
|
304
|
+
/** Show only these category handles (in this exact order). */
|
|
305
|
+
handles?: string[]
|
|
306
|
+
/** Only include top-level categories (no parent). Default: true */
|
|
307
|
+
topLevelOnly?: boolean
|
|
308
|
+
/** Optional prefix label like "Shop by category" (not used in desktop links). */
|
|
309
|
+
label?: string
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export type HomepageHeaderNavItem =
|
|
313
|
+
| HomepageHeaderNavStaticItem
|
|
314
|
+
| HomepageHeaderNavCategoriesItem
|
|
315
|
+
|
|
316
|
+
export type HomepageHeaderNavConfig = {
|
|
317
|
+
items?: HomepageHeaderNavItem[]
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export type HomepageFooterNavLink = {
|
|
321
|
+
label?: string
|
|
322
|
+
href?: string
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export type HomepageFooterNavColumn = {
|
|
326
|
+
title?: string
|
|
327
|
+
links?: HomepageFooterNavLink[]
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
export type HomepageFooterNavConfig = {
|
|
331
|
+
columns?: HomepageFooterNavColumn[]
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
export type HomepageFooterUiConfig = {
|
|
335
|
+
shopColumnTitle?: string
|
|
336
|
+
contactTitle?: string
|
|
337
|
+
newsletterBlurb?: string
|
|
338
|
+
newsletterPlaceholder?: string
|
|
339
|
+
newsletterSubmitLabel?: string
|
|
340
|
+
newsletterInvalidEmail?: string
|
|
341
|
+
newsletterErrorMessage?: string
|
|
342
|
+
/** Supports `{siteName}` token. */
|
|
343
|
+
copyrightText?: string
|
|
344
|
+
icons?: {
|
|
345
|
+
phone?: string
|
|
346
|
+
email?: string
|
|
347
|
+
address?: string
|
|
348
|
+
}
|
|
349
|
+
social?: {
|
|
350
|
+
facebook?: string
|
|
351
|
+
linkedin?: string
|
|
352
|
+
instagram?: string
|
|
353
|
+
youtube?: string
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
export type HomepageHeaderUiConfig = {
|
|
358
|
+
icons?: {
|
|
359
|
+
cart?: string
|
|
360
|
+
account?: string
|
|
361
|
+
search?: string
|
|
362
|
+
}
|
|
363
|
+
search?: {
|
|
364
|
+
placeholder?: string
|
|
365
|
+
title?: string
|
|
366
|
+
emptyStateText?: string
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
280
370
|
export type HomepageFaqEntry = {
|
|
281
371
|
"faq-category"?: string
|
|
282
372
|
"faq-question"?: string
|
|
@@ -292,6 +382,29 @@ export type HomepageConfig = {
|
|
|
292
382
|
"website-description"?: string
|
|
293
383
|
website_description?: string
|
|
294
384
|
|
|
385
|
+
/**
|
|
386
|
+
* Header navigation (desktop + mobile).
|
|
387
|
+
* Use `type: "static"` for hardcoded links, or `type: "categories"` to auto-populate from product categories.
|
|
388
|
+
*/
|
|
389
|
+
headerNav?: HomepageHeaderNavConfig
|
|
390
|
+
"header-nav"?: HomepageHeaderNavConfig
|
|
391
|
+
|
|
392
|
+
/** Footer navigation columns + links. */
|
|
393
|
+
footerNav?: HomepageFooterNavConfig
|
|
394
|
+
"footer-nav"?: HomepageFooterNavConfig
|
|
395
|
+
|
|
396
|
+
/** Footer static copy + icon overrides. */
|
|
397
|
+
footerUi?: HomepageFooterUiConfig
|
|
398
|
+
"footer-ui"?: HomepageFooterUiConfig
|
|
399
|
+
|
|
400
|
+
/** Header icons + search copy. */
|
|
401
|
+
headerUi?: HomepageHeaderUiConfig
|
|
402
|
+
"header-ui"?: HomepageHeaderUiConfig
|
|
403
|
+
|
|
404
|
+
/** Promo ticker icon + accessibility copy (merged with `sections.promoAnnouncements`). */
|
|
405
|
+
promoUi?: HomepagePromoUiConfig
|
|
406
|
+
"promo-ui"?: HomepagePromoUiConfig
|
|
407
|
+
|
|
295
408
|
/** Hero carousel — used by `hero` section (not `sections.hero`). */
|
|
296
409
|
"homepage-banner-array"?: HomepageBannerEntry[]
|
|
297
410
|
|
package/src/server/index.ts
CHANGED
|
@@ -5,7 +5,6 @@ export * from "./customer-registration"
|
|
|
5
5
|
export * from "./customer"
|
|
6
6
|
export * from "./dynamic-config"
|
|
7
7
|
export * from "./page-input"
|
|
8
|
-
export * from "./resolve-home-segment-data"
|
|
9
8
|
export * from "./fulfillment"
|
|
10
9
|
export * from "./guest"
|
|
11
10
|
export * from "./locale-actions"
|
|
@@ -22,3 +21,5 @@ export * from "./swaps"
|
|
|
22
21
|
export * from "./variants"
|
|
23
22
|
export * from "./wishlist"
|
|
24
23
|
export * from "./home"
|
|
24
|
+
export * from "./shoppable-looks"
|
|
25
|
+
export * from "./storefront-cms"
|
|
@@ -263,6 +263,44 @@ export function normalizeHomepageConfig(input: unknown): HomepageConfig {
|
|
|
263
263
|
sections: sections as HomepageConfig["sections"],
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
+
const headerNav =
|
|
267
|
+
asObject(site?.headerNav) ?? asObject(site?.["header-nav"]) ?? asObject(site?.nav)
|
|
268
|
+
if (headerNav) {
|
|
269
|
+
legacy.headerNav = headerNav as never
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
const footerNav =
|
|
273
|
+
asObject(site?.footerNav) ??
|
|
274
|
+
asObject(site?.["footer-nav"]) ??
|
|
275
|
+
asObject(site?.footer)
|
|
276
|
+
if (footerNav) {
|
|
277
|
+
legacy.footerNav = footerNav as never
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const footerUi =
|
|
281
|
+
asObject(site?.footerUi) ??
|
|
282
|
+
asObject(site?.["footer-ui"]) ??
|
|
283
|
+
asObject(site?.footer)
|
|
284
|
+
if (footerUi) {
|
|
285
|
+
legacy.footerUi = footerUi as never
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const headerUi =
|
|
289
|
+
asObject(site?.headerUi) ??
|
|
290
|
+
asObject(site?.["header-ui"]) ??
|
|
291
|
+
asObject(site?.header)
|
|
292
|
+
if (headerUi) {
|
|
293
|
+
legacy.headerUi = headerUi as never
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
const promoUi =
|
|
297
|
+
asObject(site?.promoUi) ??
|
|
298
|
+
asObject(site?.["promo-ui"]) ??
|
|
299
|
+
asObject(site?.promo)
|
|
300
|
+
if (promoUi) {
|
|
301
|
+
legacy.promoUi = promoUi as never
|
|
302
|
+
}
|
|
303
|
+
|
|
266
304
|
if (desktop.length) legacy["homepage-banner-array"] = desktop as never
|
|
267
305
|
if (mobile.length) legacy["app-banner-array"] = mobile as never
|
|
268
306
|
|
package/src/server/page-input.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import "server-only"
|
|
2
2
|
|
|
3
3
|
import defaultPageInputJson from "../../segment-data/default-page-input.json"
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
DynamicConfigResponse,
|
|
6
|
+
HomepageConfig,
|
|
7
|
+
} from "./homepage-config.types"
|
|
5
8
|
import { mergeSectionBlock } from "./config-merge"
|
|
6
9
|
import { normalizeHomepageConfig } from "./normalize-homepage-config"
|
|
7
10
|
|
|
11
|
+
type Loose = Record<string, unknown>
|
|
12
|
+
|
|
13
|
+
function asObject(v: unknown): Loose | null {
|
|
14
|
+
return v && typeof v === "object" && !Array.isArray(v) ? (v as Loose) : null
|
|
15
|
+
}
|
|
16
|
+
|
|
8
17
|
/** Full `homepage-config` blob passed from the main project into pages and layout. */
|
|
9
18
|
export type StorefrontPageInput = HomepageConfig
|
|
10
19
|
|
|
@@ -55,12 +64,58 @@ export function resolvePageInput(
|
|
|
55
64
|
return mergePageInputWithDefaults(pageInput ?? null)
|
|
56
65
|
}
|
|
57
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Medusa plugin split keys (`site-branding`, `contact`, `faqs`, `homepage-sections`)
|
|
69
|
+
* → simplified `{ site, sections }` for {@link normalizeHomepageConfig}.
|
|
70
|
+
*/
|
|
71
|
+
export function simplifiedHomepageConfigFromDynamicResponse(
|
|
72
|
+
response: DynamicConfigResponse | null | undefined
|
|
73
|
+
): HomepageConfig | null {
|
|
74
|
+
if (!response || typeof response !== "object") return null
|
|
75
|
+
|
|
76
|
+
const siteBranding = asObject(response["site-branding"])
|
|
77
|
+
const contact = asObject(response.contact)
|
|
78
|
+
const faqsRoot = asObject(response.faqs)
|
|
79
|
+
const homepageSections = asObject(response["homepage-sections"])
|
|
80
|
+
const sectionsFromCms = asObject(homepageSections?.sections)
|
|
81
|
+
|
|
82
|
+
const hasSplitKeys =
|
|
83
|
+
siteBranding || contact || faqsRoot || sectionsFromCms
|
|
84
|
+
if (!hasSplitKeys) return null
|
|
85
|
+
|
|
86
|
+
const site: Loose = {}
|
|
87
|
+
if (siteBranding) {
|
|
88
|
+
if (siteBranding.logo != null) site.logo = siteBranding.logo
|
|
89
|
+
if (siteBranding.brandName != null) site.brandName = siteBranding.brandName
|
|
90
|
+
if (siteBranding.description != null) {
|
|
91
|
+
site.description = siteBranding.description
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (contact) site.contact = contact
|
|
95
|
+
|
|
96
|
+
const sections: Loose = sectionsFromCms ? { ...sectionsFromCms } : {}
|
|
97
|
+
const helpFaq = asObject(faqsRoot?.helpFaq)
|
|
98
|
+
if (helpFaq) sections.helpFaq = helpFaq
|
|
99
|
+
|
|
100
|
+
const simplified: Loose = {}
|
|
101
|
+
if (Object.keys(site).length) simplified.site = site
|
|
102
|
+
if (Object.keys(sections).length) simplified.sections = sections
|
|
103
|
+
|
|
104
|
+
return Object.keys(simplified).length
|
|
105
|
+
? (simplified as HomepageConfig)
|
|
106
|
+
: null
|
|
107
|
+
}
|
|
108
|
+
|
|
58
109
|
/**
|
|
59
110
|
* Build `homepage-config` from Medusa `GET /store/dynamic-config` (main project only).
|
|
111
|
+
* Supports legacy `homepage-config` or split plugin keys.
|
|
60
112
|
*/
|
|
61
113
|
export function homepageConfigFromDynamicResponse(
|
|
62
|
-
response:
|
|
114
|
+
response: DynamicConfigResponse | null | undefined
|
|
63
115
|
): StorefrontPageInput {
|
|
64
|
-
const
|
|
116
|
+
const legacy = response?.["homepage-config"] ?? null
|
|
117
|
+
const fromSplit = simplifiedHomepageConfigFromDynamicResponse(response)
|
|
118
|
+
const raw = fromSplit ?? legacy
|
|
119
|
+
const normalized = normalizeHomepageConfig(raw)
|
|
65
120
|
return mergePageInputWithDefaults(normalized)
|
|
66
121
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import "server-only"
|
|
2
|
+
|
|
3
|
+
import { cache } from "react"
|
|
4
|
+
import type { StorefrontPageInput } from "./page-input"
|
|
5
|
+
import {
|
|
6
|
+
getContactInfoFromPageInput,
|
|
7
|
+
getHelpFaqFromPageInput,
|
|
8
|
+
} from "./dynamic-config"
|
|
9
|
+
import { getDynamicConfig, homepageConfigFromDynamicResponse } from "./dynamic-config"
|
|
10
|
+
|
|
11
|
+
type Maybe<T> = T | null | undefined
|
|
12
|
+
|
|
13
|
+
/** Cached CMS merge for the storefront (fetch once per request). */
|
|
14
|
+
export const loadStorefrontPageInput = cache(
|
|
15
|
+
async (): Promise<StorefrontPageInput> => {
|
|
16
|
+
const raw = await getDynamicConfig()
|
|
17
|
+
return homepageConfigFromDynamicResponse(raw)
|
|
18
|
+
}
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
export async function resolveStorefrontPageInput(
|
|
22
|
+
pageInput?: Maybe<StorefrontPageInput>
|
|
23
|
+
): Promise<StorefrontPageInput> {
|
|
24
|
+
return (pageInput ?? (await loadStorefrontPageInput())) as StorefrontPageInput
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export async function loadContactInfoFromStorefrontInput(
|
|
28
|
+
pageInput?: Maybe<StorefrontPageInput>
|
|
29
|
+
) {
|
|
30
|
+
const resolved = await resolveStorefrontPageInput(pageInput)
|
|
31
|
+
return getContactInfoFromPageInput(resolved)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export async function loadContactEmailFromStorefrontInput(
|
|
35
|
+
pageInput?: Maybe<StorefrontPageInput>
|
|
36
|
+
): Promise<string> {
|
|
37
|
+
const info = await loadContactInfoFromStorefrontInput(pageInput)
|
|
38
|
+
return info?.email ?? ""
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export async function loadHelpFaqFromStorefrontInput(
|
|
42
|
+
pageInput?: Maybe<StorefrontPageInput>
|
|
43
|
+
) {
|
|
44
|
+
const resolved = await resolveStorefrontPageInput(pageInput)
|
|
45
|
+
return getHelpFaqFromPageInput(resolved)
|
|
46
|
+
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import "server-only"
|
|
2
|
-
|
|
3
|
-
import type { HomepageConfig } from "./homepage-config.types"
|
|
4
|
-
import {
|
|
5
|
-
getAboutBrandFromPageInput,
|
|
6
|
-
getAnnouncementMessagesFromPageInput,
|
|
7
|
-
getAppBannersFromPageInput,
|
|
8
|
-
getBlogPostsFromPageInput,
|
|
9
|
-
getBrandPillarsFromPageInput,
|
|
10
|
-
getFeaturesFromPageInput,
|
|
11
|
-
getHomeBannersFromPageInput,
|
|
12
|
-
getHomeSectionsCopyFromPageInput,
|
|
13
|
-
getInstagramPostsFromPageInput,
|
|
14
|
-
getPromoCountdownFromPageInput,
|
|
15
|
-
getTestimonialsFromPageInput,
|
|
16
|
-
getTrustFeaturesFromPageInput,
|
|
17
|
-
getVideoStoriesFromPageInput,
|
|
18
|
-
type AboutBrandConfig,
|
|
19
|
-
type BlogPostConfig,
|
|
20
|
-
type BrandPillarConfig,
|
|
21
|
-
type HomepageBanner,
|
|
22
|
-
type HomeSectionsCopy,
|
|
23
|
-
type InstagramPostsData,
|
|
24
|
-
type TrustFeaturesConfig,
|
|
25
|
-
} from "./dynamic-config"
|
|
26
|
-
|
|
27
|
-
/** Config-driven homepage fields (no Medusa catalog APIs). */
|
|
28
|
-
export type HomeSegmentConfigData = {
|
|
29
|
-
homeBanners: HomepageBanner[] | null
|
|
30
|
-
appBanners: HomepageBanner[] | null
|
|
31
|
-
whyChooseUsFeatures: ReturnType<typeof getFeaturesFromPageInput>
|
|
32
|
-
testimonials: ReturnType<typeof getTestimonialsFromPageInput>
|
|
33
|
-
videoStories: ReturnType<typeof getVideoStoriesFromPageInput>
|
|
34
|
-
announcementMessages: string[]
|
|
35
|
-
promoCountdown: ReturnType<typeof getPromoCountdownFromPageInput>
|
|
36
|
-
aboutBrand: AboutBrandConfig
|
|
37
|
-
brandPillars: { sectionTitle: string; pillars: BrandPillarConfig[] }
|
|
38
|
-
blogPosts: BlogPostConfig[]
|
|
39
|
-
instagramPosts: InstagramPostsData
|
|
40
|
-
sectionsCopy: HomeSectionsCopy
|
|
41
|
-
trustFeatures: TrustFeaturesConfig
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/** Resolve all segment JSON from `pageInput` (package defaults when omitted). */
|
|
45
|
-
export function resolveHomeSegmentConfigData(
|
|
46
|
-
pageInput?: HomepageConfig | null
|
|
47
|
-
): HomeSegmentConfigData {
|
|
48
|
-
return {
|
|
49
|
-
homeBanners: getHomeBannersFromPageInput(pageInput),
|
|
50
|
-
appBanners: getAppBannersFromPageInput(pageInput),
|
|
51
|
-
whyChooseUsFeatures: getFeaturesFromPageInput(pageInput),
|
|
52
|
-
testimonials: getTestimonialsFromPageInput(pageInput),
|
|
53
|
-
videoStories: getVideoStoriesFromPageInput(pageInput),
|
|
54
|
-
announcementMessages: getAnnouncementMessagesFromPageInput(pageInput),
|
|
55
|
-
promoCountdown: getPromoCountdownFromPageInput(pageInput),
|
|
56
|
-
aboutBrand: getAboutBrandFromPageInput(pageInput),
|
|
57
|
-
brandPillars: getBrandPillarsFromPageInput(pageInput),
|
|
58
|
-
blogPosts: getBlogPostsFromPageInput(pageInput),
|
|
59
|
-
instagramPosts: getInstagramPostsFromPageInput(pageInput),
|
|
60
|
-
sectionsCopy: getHomeSectionsCopyFromPageInput(pageInput),
|
|
61
|
-
trustFeatures: getTrustFeaturesFromPageInput(pageInput),
|
|
62
|
-
}
|
|
63
|
-
}
|