medusa-storefront-data 2.1.0 → 2.4.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.
Files changed (269) hide show
  1. package/HOMEPAGE_CONFIG.md +99 -0
  2. package/dist/segment-data/default-page-input.json +191 -0
  3. package/dist/src/config.d.ts.map +1 -0
  4. package/dist/src/cookies.d.ts.map +1 -0
  5. package/dist/src/edge.d.ts.map +1 -0
  6. package/dist/src/middleware.d.ts.map +1 -0
  7. package/dist/src/server/cart.d.ts.map +1 -0
  8. package/dist/src/server/categories.d.ts.map +1 -0
  9. package/dist/src/server/collections.d.ts.map +1 -0
  10. package/dist/src/server/config-merge.d.ts +3 -0
  11. package/dist/src/server/config-merge.d.ts.map +1 -0
  12. package/dist/src/server/config-merge.js +31 -0
  13. package/dist/src/server/contact.d.ts.map +1 -0
  14. package/dist/src/server/customer-registration.d.ts.map +1 -0
  15. package/dist/src/server/customer.d.ts.map +1 -0
  16. package/dist/src/server/dynamic-config.d.ts +240 -0
  17. package/dist/src/server/dynamic-config.d.ts.map +1 -0
  18. package/dist/src/server/dynamic-config.js +703 -0
  19. package/dist/src/server/fulfillment.d.ts.map +1 -0
  20. package/dist/src/server/guest.d.ts.map +1 -0
  21. package/dist/src/server/home-sections/about-brand.d.ts +9 -0
  22. package/dist/src/server/home-sections/about-brand.d.ts.map +1 -0
  23. package/dist/src/server/home-sections/about-brand.js +9 -0
  24. package/dist/src/server/home-sections/baptism-picks.d.ts +10 -0
  25. package/dist/src/server/home-sections/baptism-picks.d.ts.map +1 -0
  26. package/dist/src/server/home-sections/baptism-picks.js +27 -0
  27. package/dist/src/server/home-sections/baptism.d.ts +13 -0
  28. package/dist/src/server/home-sections/baptism.d.ts.map +1 -0
  29. package/dist/src/server/home-sections/baptism.js +43 -0
  30. package/dist/src/server/home-sections/blog-posts.d.ts +9 -0
  31. package/dist/src/server/home-sections/blog-posts.d.ts.map +1 -0
  32. package/dist/src/server/home-sections/blog-posts.js +9 -0
  33. package/dist/src/server/home-sections/brand-marquee.d.ts +8 -0
  34. package/dist/src/server/home-sections/brand-marquee.d.ts.map +1 -0
  35. package/dist/src/server/home-sections/brand-marquee.js +7 -0
  36. package/dist/src/server/home-sections/brand-pillars.d.ts +9 -0
  37. package/dist/src/server/home-sections/brand-pillars.d.ts.map +1 -0
  38. package/dist/src/server/home-sections/brand-pillars.js +9 -0
  39. package/dist/src/server/home-sections/category-pills.d.ts +9 -0
  40. package/dist/src/server/home-sections/category-pills.d.ts.map +1 -0
  41. package/dist/src/server/home-sections/category-pills.js +19 -0
  42. package/dist/src/server/home-sections/celebrity-trust.d.ts +12 -0
  43. package/dist/src/server/home-sections/celebrity-trust.d.ts.map +1 -0
  44. package/dist/src/server/home-sections/celebrity-trust.js +27 -0
  45. package/dist/src/server/home-sections/features.d.ts +9 -0
  46. package/dist/src/server/home-sections/features.d.ts.map +1 -0
  47. package/dist/src/server/home-sections/features.js +9 -0
  48. package/dist/src/server/home-sections/hero.d.ts +9 -0
  49. package/dist/src/server/home-sections/hero.d.ts.map +1 -0
  50. package/dist/src/server/home-sections/hero.js +9 -0
  51. package/dist/src/server/home-sections/instagram-posts.d.ts +9 -0
  52. package/dist/src/server/home-sections/instagram-posts.d.ts.map +1 -0
  53. package/dist/src/server/home-sections/instagram-posts.js +9 -0
  54. package/dist/src/server/home-sections/loved-by-moms.d.ts +12 -0
  55. package/dist/src/server/home-sections/loved-by-moms.d.ts.map +1 -0
  56. package/dist/src/server/home-sections/loved-by-moms.js +20 -0
  57. package/dist/src/server/home-sections/luxe-favourites.d.ts +11 -0
  58. package/dist/src/server/home-sections/luxe-favourites.d.ts.map +1 -0
  59. package/dist/src/server/home-sections/luxe-favourites.js +19 -0
  60. package/dist/src/server/home-sections/new-arrivals-classic.d.ts +8 -0
  61. package/dist/src/server/home-sections/new-arrivals-classic.d.ts.map +1 -0
  62. package/dist/src/server/home-sections/new-arrivals-classic.js +10 -0
  63. package/dist/src/server/home-sections/new-arrivals.d.ts +12 -0
  64. package/dist/src/server/home-sections/new-arrivals.d.ts.map +1 -0
  65. package/dist/src/server/home-sections/new-arrivals.js +28 -0
  66. package/dist/src/server/home-sections/promo-announcements.d.ts +7 -0
  67. package/dist/src/server/home-sections/promo-announcements.d.ts.map +1 -0
  68. package/dist/src/server/home-sections/promo-announcements.js +7 -0
  69. package/dist/src/server/home-sections/promo-countdown.d.ts +6 -0
  70. package/dist/src/server/home-sections/promo-countdown.d.ts.map +1 -0
  71. package/dist/src/server/home-sections/promo-countdown.js +5 -0
  72. package/dist/src/server/home-sections/shared.d.ts +10 -0
  73. package/dist/src/server/home-sections/shared.d.ts.map +1 -0
  74. package/dist/src/server/home-sections/shared.js +29 -0
  75. package/dist/src/server/home-sections/shop-by-age.d.ts +9 -0
  76. package/dist/src/server/home-sections/shop-by-age.d.ts.map +1 -0
  77. package/dist/src/server/home-sections/shop-by-age.js +17 -0
  78. package/dist/src/server/home-sections/shop-by-category.d.ts +10 -0
  79. package/dist/src/server/home-sections/shop-by-category.d.ts.map +1 -0
  80. package/dist/src/server/home-sections/shop-by-category.js +17 -0
  81. package/dist/src/server/home-sections/testimonials.d.ts +9 -0
  82. package/dist/src/server/home-sections/testimonials.d.ts.map +1 -0
  83. package/dist/src/server/home-sections/testimonials.js +9 -0
  84. package/dist/src/server/home-sections/theme-dresses.d.ts +12 -0
  85. package/dist/src/server/home-sections/theme-dresses.d.ts.map +1 -0
  86. package/dist/src/server/home-sections/theme-dresses.js +27 -0
  87. package/dist/src/server/home-sections/video-stories.d.ts +9 -0
  88. package/dist/src/server/home-sections/video-stories.d.ts.map +1 -0
  89. package/dist/src/server/home-sections/video-stories.js +9 -0
  90. package/dist/src/server/home-sections/why-choose-us.d.ts +9 -0
  91. package/dist/src/server/home-sections/why-choose-us.d.ts.map +1 -0
  92. package/dist/src/server/home-sections/why-choose-us.js +9 -0
  93. package/dist/src/server/home.d.ts +62 -0
  94. package/dist/src/server/home.d.ts.map +1 -0
  95. package/dist/src/server/home.js +122 -0
  96. package/dist/src/server/homepage-config.types.d.ts +274 -0
  97. package/dist/src/server/homepage-config.types.d.ts.map +1 -0
  98. package/dist/src/server/homepage-config.types.js +33 -0
  99. package/dist/src/server/homepage-section-defaults.d.ts +188 -0
  100. package/dist/src/server/homepage-section-defaults.d.ts.map +1 -0
  101. package/dist/src/server/homepage-section-defaults.js +188 -0
  102. package/dist/{server → src/server}/index.d.ts +2 -0
  103. package/dist/src/server/index.d.ts.map +1 -0
  104. package/dist/{server → src/server}/index.js +2 -0
  105. package/dist/src/server/locale-actions.d.ts.map +1 -0
  106. package/dist/src/server/locales.d.ts.map +1 -0
  107. package/dist/src/server/notifications.d.ts.map +1 -0
  108. package/dist/src/server/onboarding.d.ts.map +1 -0
  109. package/dist/src/server/orders.d.ts.map +1 -0
  110. package/dist/src/server/page-input.d.ts +19 -0
  111. package/dist/src/server/page-input.d.ts.map +1 -0
  112. package/dist/src/server/page-input.js +40 -0
  113. package/dist/src/server/payment-details.d.ts.map +1 -0
  114. package/dist/src/server/payment.d.ts.map +1 -0
  115. package/dist/src/server/pincode.d.ts.map +1 -0
  116. package/dist/src/server/products.d.ts.map +1 -0
  117. package/dist/src/server/regions.d.ts.map +1 -0
  118. package/dist/src/server/resolve-home-segment-data.d.ts +25 -0
  119. package/dist/src/server/resolve-home-segment-data.d.ts.map +1 -0
  120. package/dist/src/server/resolve-home-segment-data.js +20 -0
  121. package/dist/src/server/returns.d.ts.map +1 -0
  122. package/dist/src/server/shoppable-looks.d.ts +17 -0
  123. package/dist/src/server/shoppable-looks.d.ts.map +1 -0
  124. package/dist/src/server/shoppable-looks.js +136 -0
  125. package/dist/src/server/swaps.d.ts.map +1 -0
  126. package/dist/src/server/variants.d.ts.map +1 -0
  127. package/dist/src/server/wishlist.d.ts.map +1 -0
  128. package/dist/src/util/get-locale-header.d.ts.map +1 -0
  129. package/dist/src/util/medusa-error.d.ts.map +1 -0
  130. package/dist/src/util/revalidate-cart.d.ts.map +1 -0
  131. package/dist/src/util/sort-products.d.ts.map +1 -0
  132. package/dist/src/util/store-client.d.ts.map +1 -0
  133. package/homepage-config.example.json +209 -0
  134. package/homepage-sections.example.json +55 -0
  135. package/package.json +121 -2
  136. package/segment-data/default-page-input.json +191 -0
  137. package/src/server/config-merge.ts +31 -0
  138. package/src/server/dynamic-config.ts +838 -248
  139. package/src/server/home-sections/about-brand.ts +24 -0
  140. package/src/server/home-sections/baptism-picks.ts +46 -0
  141. package/src/server/home-sections/baptism.ts +64 -0
  142. package/src/server/home-sections/blog-posts.ts +23 -0
  143. package/src/server/home-sections/brand-marquee.ts +17 -0
  144. package/src/server/home-sections/brand-pillars.ts +23 -0
  145. package/src/server/home-sections/category-pills.ts +32 -0
  146. package/src/server/home-sections/celebrity-trust.ts +42 -0
  147. package/src/server/home-sections/features.ts +23 -0
  148. package/src/server/home-sections/hero.ts +24 -0
  149. package/src/server/home-sections/instagram-posts.ts +23 -0
  150. package/src/server/home-sections/loved-by-moms.ts +34 -0
  151. package/src/server/home-sections/luxe-favourites.ts +30 -0
  152. package/src/server/home-sections/new-arrivals-classic.ts +21 -0
  153. package/src/server/home-sections/new-arrivals.ts +47 -0
  154. package/src/server/home-sections/promo-announcements.ts +17 -0
  155. package/src/server/home-sections/promo-countdown.ts +15 -0
  156. package/src/server/home-sections/shared.ts +44 -0
  157. package/src/server/home-sections/shop-by-age.ts +26 -0
  158. package/src/server/home-sections/shop-by-category.ts +28 -0
  159. package/src/server/home-sections/testimonials.ts +23 -0
  160. package/src/server/home-sections/theme-dresses.ts +49 -0
  161. package/src/server/home-sections/video-stories.ts +23 -0
  162. package/src/server/home-sections/why-choose-us.ts +23 -0
  163. package/src/server/home.ts +173 -16
  164. package/src/server/homepage-config.types.ts +335 -0
  165. package/src/server/homepage-section-defaults.ts +199 -0
  166. package/src/server/index.ts +2 -0
  167. package/src/server/page-input.ts +64 -0
  168. package/src/server/resolve-home-segment-data.ts +63 -0
  169. package/src/server/shoppable-looks.ts +178 -0
  170. package/dist/config.d.ts.map +0 -1
  171. package/dist/cookies.d.ts.map +0 -1
  172. package/dist/edge.d.ts.map +0 -1
  173. package/dist/middleware.d.ts.map +0 -1
  174. package/dist/server/cart.d.ts.map +0 -1
  175. package/dist/server/categories.d.ts.map +0 -1
  176. package/dist/server/collections.d.ts.map +0 -1
  177. package/dist/server/contact.d.ts.map +0 -1
  178. package/dist/server/customer-registration.d.ts.map +0 -1
  179. package/dist/server/customer.d.ts.map +0 -1
  180. package/dist/server/dynamic-config.d.ts +0 -125
  181. package/dist/server/dynamic-config.d.ts.map +0 -1
  182. package/dist/server/dynamic-config.js +0 -289
  183. package/dist/server/fulfillment.d.ts.map +0 -1
  184. package/dist/server/guest.d.ts.map +0 -1
  185. package/dist/server/home.d.ts +0 -15
  186. package/dist/server/home.d.ts.map +0 -1
  187. package/dist/server/home.js +0 -45
  188. package/dist/server/index.d.ts.map +0 -1
  189. package/dist/server/locale-actions.d.ts.map +0 -1
  190. package/dist/server/locales.d.ts.map +0 -1
  191. package/dist/server/notifications.d.ts.map +0 -1
  192. package/dist/server/onboarding.d.ts.map +0 -1
  193. package/dist/server/orders.d.ts.map +0 -1
  194. package/dist/server/payment-details.d.ts.map +0 -1
  195. package/dist/server/payment.d.ts.map +0 -1
  196. package/dist/server/pincode.d.ts.map +0 -1
  197. package/dist/server/products.d.ts.map +0 -1
  198. package/dist/server/regions.d.ts.map +0 -1
  199. package/dist/server/returns.d.ts.map +0 -1
  200. package/dist/server/swaps.d.ts.map +0 -1
  201. package/dist/server/variants.d.ts.map +0 -1
  202. package/dist/server/wishlist.d.ts.map +0 -1
  203. package/dist/util/get-locale-header.d.ts.map +0 -1
  204. package/dist/util/medusa-error.d.ts.map +0 -1
  205. package/dist/util/revalidate-cart.d.ts.map +0 -1
  206. package/dist/util/sort-products.d.ts.map +0 -1
  207. package/dist/util/store-client.d.ts.map +0 -1
  208. /package/dist/{config.d.ts → src/config.d.ts} +0 -0
  209. /package/dist/{config.js → src/config.js} +0 -0
  210. /package/dist/{cookies.d.ts → src/cookies.d.ts} +0 -0
  211. /package/dist/{cookies.js → src/cookies.js} +0 -0
  212. /package/dist/{edge.d.ts → src/edge.d.ts} +0 -0
  213. /package/dist/{edge.js → src/edge.js} +0 -0
  214. /package/dist/{middleware.d.ts → src/middleware.d.ts} +0 -0
  215. /package/dist/{middleware.js → src/middleware.js} +0 -0
  216. /package/dist/{server → src/server}/cart.d.ts +0 -0
  217. /package/dist/{server → src/server}/cart.js +0 -0
  218. /package/dist/{server → src/server}/categories.d.ts +0 -0
  219. /package/dist/{server → src/server}/categories.js +0 -0
  220. /package/dist/{server → src/server}/collections.d.ts +0 -0
  221. /package/dist/{server → src/server}/collections.js +0 -0
  222. /package/dist/{server → src/server}/contact.d.ts +0 -0
  223. /package/dist/{server → src/server}/contact.js +0 -0
  224. /package/dist/{server → src/server}/customer-registration.d.ts +0 -0
  225. /package/dist/{server → src/server}/customer-registration.js +0 -0
  226. /package/dist/{server → src/server}/customer.d.ts +0 -0
  227. /package/dist/{server → src/server}/customer.js +0 -0
  228. /package/dist/{server → src/server}/fulfillment.d.ts +0 -0
  229. /package/dist/{server → src/server}/fulfillment.js +0 -0
  230. /package/dist/{server → src/server}/guest.d.ts +0 -0
  231. /package/dist/{server → src/server}/guest.js +0 -0
  232. /package/dist/{server → src/server}/locale-actions.d.ts +0 -0
  233. /package/dist/{server → src/server}/locale-actions.js +0 -0
  234. /package/dist/{server → src/server}/locales.d.ts +0 -0
  235. /package/dist/{server → src/server}/locales.js +0 -0
  236. /package/dist/{server → src/server}/notifications.d.ts +0 -0
  237. /package/dist/{server → src/server}/notifications.js +0 -0
  238. /package/dist/{server → src/server}/onboarding.d.ts +0 -0
  239. /package/dist/{server → src/server}/onboarding.js +0 -0
  240. /package/dist/{server → src/server}/orders.d.ts +0 -0
  241. /package/dist/{server → src/server}/orders.js +0 -0
  242. /package/dist/{server → src/server}/payment-details.d.ts +0 -0
  243. /package/dist/{server → src/server}/payment-details.js +0 -0
  244. /package/dist/{server → src/server}/payment.d.ts +0 -0
  245. /package/dist/{server → src/server}/payment.js +0 -0
  246. /package/dist/{server → src/server}/pincode.d.ts +0 -0
  247. /package/dist/{server → src/server}/pincode.js +0 -0
  248. /package/dist/{server → src/server}/products.d.ts +0 -0
  249. /package/dist/{server → src/server}/products.js +0 -0
  250. /package/dist/{server → src/server}/regions.d.ts +0 -0
  251. /package/dist/{server → src/server}/regions.js +0 -0
  252. /package/dist/{server → src/server}/returns.d.ts +0 -0
  253. /package/dist/{server → src/server}/returns.js +0 -0
  254. /package/dist/{server → src/server}/swaps.d.ts +0 -0
  255. /package/dist/{server → src/server}/swaps.js +0 -0
  256. /package/dist/{server → src/server}/variants.d.ts +0 -0
  257. /package/dist/{server → src/server}/variants.js +0 -0
  258. /package/dist/{server → src/server}/wishlist.d.ts +0 -0
  259. /package/dist/{server → src/server}/wishlist.js +0 -0
  260. /package/dist/{util → src/util}/get-locale-header.d.ts +0 -0
  261. /package/dist/{util → src/util}/get-locale-header.js +0 -0
  262. /package/dist/{util → src/util}/medusa-error.d.ts +0 -0
  263. /package/dist/{util → src/util}/medusa-error.js +0 -0
  264. /package/dist/{util → src/util}/revalidate-cart.d.ts +0 -0
  265. /package/dist/{util → src/util}/revalidate-cart.js +0 -0
  266. /package/dist/{util → src/util}/sort-products.d.ts +0 -0
  267. /package/dist/{util → src/util}/sort-products.js +0 -0
  268. /package/dist/{util → src/util}/store-client.d.ts +0 -0
  269. /package/dist/{util → src/util}/store-client.js +0 -0
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Default `homepage-config.sections` blocks.
3
+ * Dynamic config overrides any field; unset fields keep these defaults.
4
+ */
5
+ export const DEFAULT_HOMEPAGE_SECTIONS = {
6
+ promoAnnouncements: {
7
+ messages: [
8
+ "Free shipping on orders over a threshold",
9
+ "Worldwide shipping available",
10
+ "Selected products available with customisation",
11
+ "Need help choosing? Book a video call consultation",
12
+ ],
13
+ },
14
+ hero: {},
15
+ categoryPills: {},
16
+ newArrivals: {
17
+ title: "New Arrivals",
18
+ subtitle: "Fresh styles just landed",
19
+ variant: "grid",
20
+ },
21
+ newArrivalsClassic: {
22
+ title: "New Arrivals",
23
+ subtitle: "Fresh styles just landed",
24
+ variant: "classic",
25
+ },
26
+ promoCountdown: {
27
+ code: "SAVE50",
28
+ text: "Up to 50% off — shop your favourites before they're gone!",
29
+ "end-at": "2026-12-31T23:59:59.000Z",
30
+ active: false,
31
+ "cta-label": "Shop Offers",
32
+ "cta-href": "/store",
33
+ },
34
+ celebrityTrust: {
35
+ title: "Trusted by Celebrities",
36
+ text: "When the stars dress their little ones in our collections.",
37
+ },
38
+ luxeFavourites: {
39
+ title: "Luxe Favourites",
40
+ },
41
+ shopByCategory: {
42
+ title: "Shop By Categories",
43
+ description: "Browse by style and occasion",
44
+ },
45
+ baptism: {
46
+ title: "Baptism",
47
+ },
48
+ baptismPicks: {
49
+ title: "Baptism Picks",
50
+ looks: [],
51
+ },
52
+ themeDresses: {
53
+ title: "Theme",
54
+ description: "Dress her in a dreamy theme outfit for her birthday celebration",
55
+ },
56
+ brandMarquee: {
57
+ text: "est. 2012",
58
+ },
59
+ aboutBrand: {
60
+ eyebrow: "Who We Are",
61
+ title: "Discover what makes us different",
62
+ description: "We offer stylish, comfortable, and high-quality clothing for children, crafted for everyday wear and special occasions.",
63
+ readMoreHref: "/about",
64
+ stats: [
65
+ { label: "Visit us in store", value: "Find a location" },
66
+ { label: "Happy customers", value: "150k+" },
67
+ { label: "Products", value: "3000+" },
68
+ ],
69
+ },
70
+ testimonials: {
71
+ title: "What Clients Talk About Us",
72
+ description: "The Trust We've Earned",
73
+ items: [
74
+ {
75
+ text: "Amazing place if you are looking for a dress for ur little girl's special day. You can even get many aesthetic pics just from the shop because the interior of the shop is amazing too.. the dresses are customizable according to themes that you prefer. My little girl looked like a princess in her pink and white dress which I found within minutes entering the shop.",
76
+ name: "Greeshma thottippal shanmughan",
77
+ },
78
+ {
79
+ text: "I frequently buy dresses for my baby from this store and I am extremely satisfied with the purchase. The quality of the dresses was excellent, and it was perfect for special occasions like birthdays and celebrations.",
80
+ name: "Priyanka Rajesh",
81
+ },
82
+ {
83
+ text: "I recently bought an Onam outfit from this boutique and I'm so glad I did! The quality is excellent, and the design is beautiful. My daughter looked absolutely stunning in it.",
84
+ name: "Riya Rilju",
85
+ },
86
+ {
87
+ text: "I'm beyond happy with the beautiful baptism dress they made for my baby! The craftsmanship, attention to detail, and love put into every stitch truly show.",
88
+ name: "Chinju anthony",
89
+ },
90
+ {
91
+ text: "This is my third baby dress purchase from this store, and I'm still as impressed as ever! The dresses are absolutely adorable, and the sizing is perfect for my little one.",
92
+ name: "Susmitha",
93
+ },
94
+ ],
95
+ },
96
+ instagramPosts: {
97
+ title: "Follow Us on Instagram",
98
+ handle: "yourbrand",
99
+ "profile-url": "https://www.instagram.com/yourbrand/",
100
+ "profile-image": "/Logo.png",
101
+ posts: [],
102
+ },
103
+ brandPillars: {
104
+ title: "This approach resulted in the beautiful structure",
105
+ pillars: [
106
+ {
107
+ title: "Your favorite kids destination",
108
+ description: "Trendy, high-quality outfits for little ones—pieces designed for comfort, celebration, and the memories you make together.",
109
+ image: "/features/store.jpg",
110
+ },
111
+ {
112
+ title: "Video call consultation",
113
+ description: "Shop from home with our video call service. Our team shows styles in real-time and helps you pick the perfect outfits.",
114
+ image: "/features/video.jpg",
115
+ },
116
+ {
117
+ title: "Design Your Dream Outfit",
118
+ description: "We customize colors, themes, and handwork to create a perfectly fitted outfit for your little one's special moments.",
119
+ image: "/features/design.jpg",
120
+ },
121
+ {
122
+ title: "Luxury Fabrics, Made for Kids",
123
+ description: "We use premium, breathable fabrics so each outfit feels luxurious and comfortable all day.",
124
+ image: "/features/fabric.jpg",
125
+ },
126
+ ],
127
+ },
128
+ features: {
129
+ title: "Why shop with us",
130
+ description: "Secure checkout, fast delivery, and easy exchanges",
131
+ features: [
132
+ { name: "100% Secure", icon: "/secure.svg" },
133
+ { name: "Easy Exchanges", icon: "/exchnage.svg" },
134
+ { name: "Fast Delivery", icon: "/fast.svg" },
135
+ { name: "Cash On Delivery", icon: "/cash.svg" },
136
+ ],
137
+ },
138
+ whyChooseUs: {
139
+ title: "Why Choose Us?",
140
+ features: [
141
+ { "feature-name": "Premium Quality", "feature-icon": "/icons/quality.svg" },
142
+ { "feature-name": "Easy Returns", "feature-icon": "/icons/returns.svg" },
143
+ { "feature-name": "Fast Delivery", "feature-icon": "/icons/delivery.svg" },
144
+ { "feature-name": "Secure Checkout", "feature-icon": "/icons/secure.svg" },
145
+ ],
146
+ },
147
+ lovedByMoms: {
148
+ title: "Loved by Moms",
149
+ description: "Top-rated styles loved by parents and kids alike.",
150
+ },
151
+ shopByAge: {
152
+ title: "Shop By Age",
153
+ },
154
+ videoStories: {
155
+ title: "Watch Stories & Reviews",
156
+ "video-urls": [],
157
+ },
158
+ blogPosts: {
159
+ title: "Blog posts",
160
+ posts: [
161
+ {
162
+ title: "Which Theme Dress Matches Her Vibe?",
163
+ href: "/blog/theme-dress-vibe",
164
+ category: "Theme Dress",
165
+ date: "May 24, 2026",
166
+ },
167
+ {
168
+ title: "How to Choose a Birthday Frock That Matches Your Party Theme",
169
+ href: "/blog/birthday-frock-party-theme",
170
+ category: "Birthday Dress",
171
+ date: "May 14, 2026",
172
+ },
173
+ {
174
+ title: "Beyond Pink: Trending Colors in Kid's Party Wear",
175
+ href: "/blog/trending-party-wear-colors",
176
+ category: "Girls Party Dresses",
177
+ date: "Apr 30, 2026",
178
+ },
179
+ {
180
+ title: "Wearable Wonders: 3D Hand-Embroidered Theme Dresses",
181
+ href: "/blog/3d-hand-embroidered-dresses",
182
+ category: "Birthday dress for Baby Girl",
183
+ date: "Apr 25, 2026",
184
+ },
185
+ ],
186
+ },
187
+ };
188
+ export const HOME_SECTION_COPY_ID_LIST = Object.keys(DEFAULT_HOMEPAGE_SECTIONS);
@@ -4,6 +4,8 @@ export * from "./collections";
4
4
  export * from "./customer-registration";
5
5
  export * from "./customer";
6
6
  export * from "./dynamic-config";
7
+ export * from "./page-input";
8
+ export * from "./resolve-home-segment-data";
7
9
  export * from "./fulfillment";
8
10
  export * from "./guest";
9
11
  export * from "./locale-actions";
@@ -0,0 +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,6BAA6B,CAAA;AAC3C,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"}
@@ -4,6 +4,8 @@ export * from "./collections";
4
4
  export * from "./customer-registration";
5
5
  export * from "./customer";
6
6
  export * from "./dynamic-config";
7
+ export * from "./page-input";
8
+ export * from "./resolve-home-segment-data";
7
9
  export * from "./fulfillment";
8
10
  export * from "./guest";
9
11
  export * from "./locale-actions";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-actions.d.ts","sourceRoot":"","sources":["../../../src/server/locale-actions.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,MAAM,GAAG,IAAI,CAOvD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,QAAQ,MAAM,kBAQnD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CA0BrE,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/server/locales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAG5E,MAAM,MAAM,MAAM,GAAG,WAAW,CAAA;AAEhC;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAI3D,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/server/notifications.ts"],"names":[],"mappings":"AAKA,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,gBAgB9E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../../src/server/onboarding.ts"],"names":[],"mappings":"AAIA,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,iBAIzD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/server/orders.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAmC3C,eAAO,MAAM,aAAa,GAAU,IAAI,MAAM,kCA4B7C,CAAA;AAED,eAAO,MAAM,UAAU,GACrB,QAAO,MAAW,EAClB,SAAQ,MAAU,EAClB,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,oCAc9B,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,OAAO;IACL,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAA;CACnC,EACD,UAAU,QAAQ,KACjB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAA;CACnC,CAoBA,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAU,IAAI,MAAM,EAAE,OAAO,MAAM;;;WAOpC,SAAS,CAAC,UAAU;;;;;EAKpD,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAU,IAAI,MAAM,EAAE,OAAO,MAAM;;;WAOrC,SAAS,CAAC,UAAU;;;;;EAKpD,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,SAAS,MAAM;;;;;;;;EAyBpD,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,SAAS,MAAM,EAAE,WAAW,MAAM;;;;;;EA2BnE,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,iBAAiB,MAAM,EAAE,EACzB,eAAc,OAAe;;;;;;;;;;;;;;;EAkF9B,CAAA"}
@@ -0,0 +1,19 @@
1
+ import "server-only";
2
+ import type { HomepageConfig } from "./homepage-config.types";
3
+ /** Full `homepage-config` blob passed from the main project into pages and layout. */
4
+ export type StorefrontPageInput = HomepageConfig;
5
+ export declare const DEFAULT_PAGE_INPUT: StorefrontPageInput;
6
+ /**
7
+ * Merge CMS / main-project overrides onto package JSON defaults.
8
+ * Empty strings and empty arrays are ignored (same rules as section merge).
9
+ */
10
+ export declare function mergePageInputWithDefaults(override?: HomepageConfig | null): StorefrontPageInput;
11
+ /** Resolve page input: explicit override, or package defaults. */
12
+ export declare function resolvePageInput(pageInput?: HomepageConfig | null): StorefrontPageInput;
13
+ /**
14
+ * Build `homepage-config` from Medusa `GET /store/dynamic-config` (main project only).
15
+ */
16
+ export declare function homepageConfigFromDynamicResponse(response: {
17
+ "homepage-config"?: HomepageConfig | null;
18
+ } | null | undefined): StorefrontPageInput;
19
+ //# sourceMappingURL=page-input.d.ts.map
@@ -0,0 +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,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAG7D,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;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE;IAAE,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GACzE,mBAAmB,CAErB"}
@@ -0,0 +1,40 @@
1
+ import "server-only";
2
+ import defaultPageInputJson from "../../segment-data/default-page-input.json";
3
+ import { mergeSectionBlock } from "./config-merge";
4
+ export const DEFAULT_PAGE_INPUT = defaultPageInputJson;
5
+ /**
6
+ * Merge CMS / main-project overrides onto package JSON defaults.
7
+ * Empty strings and empty arrays are ignored (same rules as section merge).
8
+ */
9
+ export function mergePageInputWithDefaults(override) {
10
+ if (!override)
11
+ return { ...DEFAULT_PAGE_INPUT };
12
+ const merged = mergeSectionBlock({ ...DEFAULT_PAGE_INPUT }, override);
13
+ const defaultSections = DEFAULT_PAGE_INPUT.sections ?? {};
14
+ const overrideSections = override.sections ?? {};
15
+ const mergedSections = { ...defaultSections };
16
+ for (const [key, value] of Object.entries(overrideSections)) {
17
+ const base = defaultSections[key];
18
+ const baseObj = base && typeof base === "object" && !Array.isArray(base)
19
+ ? base
20
+ : {};
21
+ const overrideObj = value && typeof value === "object" && !Array.isArray(value)
22
+ ? value
23
+ : typeof value === "string"
24
+ ? { text: value }
25
+ : {};
26
+ mergedSections[key] = mergeSectionBlock(baseObj, overrideObj);
27
+ }
28
+ merged.sections = mergedSections;
29
+ return merged;
30
+ }
31
+ /** Resolve page input: explicit override, or package defaults. */
32
+ export function resolvePageInput(pageInput) {
33
+ return mergePageInputWithDefaults(pageInput ?? null);
34
+ }
35
+ /**
36
+ * Build `homepage-config` from Medusa `GET /store/dynamic-config` (main project only).
37
+ */
38
+ export function homepageConfigFromDynamicResponse(response) {
39
+ return mergePageInputWithDefaults(response?.["homepage-config"] ?? null);
40
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-details.d.ts","sourceRoot":"","sources":["../../../src/server/payment-details.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,kBAAkB,uEAY9B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,EAC7B,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,qCAIpC,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,IAAI,MAAM,qCAGxD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,IAAI,MAAM,kBAGnD,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../src/server/payment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,eAAO,MAAM,sBAAsB,GAAU,UAAU,MAAM,qDAQ5D,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pincode.d.ts","sourceRoot":"","sources":["../../../src/server/pincode.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAQD,2DAA2D;AAC3D,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAgCrC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../../src/server/products.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAU3C,eAAO,MAAM,YAAY,GAAU,oDAKhC;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,sBAAsB,CAAA;IACrE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,KAAG,OAAO,CAAC;IACV,QAAQ,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,sBAAsB,CAAA;CACtE,CAsCA,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAU,6CAKxC;IACD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAA;IACjE,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB,KAAG,OAAO,CAAC;IACV,QAAQ,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAA;CAClE,CAuBA,CAAA;AAED,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,KAAU,EACV,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB,qCAYA;AAED,eAAO,MAAM,iBAAiB,GAAU,cAAc,MAAM;;;;;;;;;;;;;;;;;;EAgF3D,CAAA;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,+CAItD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../../src/server/regions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAK3C,eAAO,MAAM,WAAW,wCAavB,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,IAAI,MAAM,mCAa9C,CAAA;AAID,eAAO,MAAM,SAAS,GAAU,aAAa,MAAM,sDA2BlD,CAAA"}
@@ -0,0 +1,25 @@
1
+ import "server-only";
2
+ import type { HomepageConfig } from "./homepage-config.types";
3
+ import { getFeaturesFromPageInput, getPromoCountdownFromPageInput, getTestimonialsFromPageInput, getVideoStoriesFromPageInput, type AboutBrandConfig, type BlogPostConfig, type BrandPillarConfig, type HomepageBanner, type HomeSectionsCopy, type InstagramPostsData, type TrustFeaturesConfig } from "./dynamic-config";
4
+ /** Config-driven homepage fields (no Medusa catalog APIs). */
5
+ export type HomeSegmentConfigData = {
6
+ homeBanners: HomepageBanner[] | null;
7
+ appBanners: HomepageBanner[] | null;
8
+ whyChooseUsFeatures: ReturnType<typeof getFeaturesFromPageInput>;
9
+ testimonials: ReturnType<typeof getTestimonialsFromPageInput>;
10
+ videoStories: ReturnType<typeof getVideoStoriesFromPageInput>;
11
+ announcementMessages: string[];
12
+ promoCountdown: ReturnType<typeof getPromoCountdownFromPageInput>;
13
+ aboutBrand: AboutBrandConfig;
14
+ brandPillars: {
15
+ sectionTitle: string;
16
+ pillars: BrandPillarConfig[];
17
+ };
18
+ blogPosts: BlogPostConfig[];
19
+ instagramPosts: InstagramPostsData;
20
+ sectionsCopy: HomeSectionsCopy;
21
+ trustFeatures: TrustFeaturesConfig;
22
+ };
23
+ /** Resolve all segment JSON from `pageInput` (package defaults when omitted). */
24
+ export declare function resolveHomeSegmentConfigData(pageInput?: HomepageConfig | null): HomeSegmentConfigData;
25
+ //# sourceMappingURL=resolve-home-segment-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-home-segment-data.d.ts","sourceRoot":"","sources":["../../../src/server/resolve-home-segment-data.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAML,wBAAwB,EAIxB,8BAA8B,EAC9B,4BAA4B,EAE5B,4BAA4B,EAC5B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AAEzB,8DAA8D;AAC9D,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IACnC,mBAAmB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;IAChE,YAAY,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAA;IAC7D,YAAY,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAA;IAC7D,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,cAAc,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAA;IACjE,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;CACnC,CAAA;AAED,iFAAiF;AACjF,wBAAgB,4BAA4B,CAC1C,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI,GAChC,qBAAqB,CAgBvB"}
@@ -0,0 +1,20 @@
1
+ import "server-only";
2
+ import { getAboutBrandFromPageInput, getAnnouncementMessagesFromPageInput, getAppBannersFromPageInput, getBlogPostsFromPageInput, getBrandPillarsFromPageInput, getFeaturesFromPageInput, getHomeBannersFromPageInput, getHomeSectionsCopyFromPageInput, getInstagramPostsFromPageInput, getPromoCountdownFromPageInput, getTestimonialsFromPageInput, getTrustFeaturesFromPageInput, getVideoStoriesFromPageInput, } from "./dynamic-config";
3
+ /** Resolve all segment JSON from `pageInput` (package defaults when omitted). */
4
+ export function resolveHomeSegmentConfigData(pageInput) {
5
+ return {
6
+ homeBanners: getHomeBannersFromPageInput(pageInput),
7
+ appBanners: getAppBannersFromPageInput(pageInput),
8
+ whyChooseUsFeatures: getFeaturesFromPageInput(pageInput),
9
+ testimonials: getTestimonialsFromPageInput(pageInput),
10
+ videoStories: getVideoStoriesFromPageInput(pageInput),
11
+ announcementMessages: getAnnouncementMessagesFromPageInput(pageInput),
12
+ promoCountdown: getPromoCountdownFromPageInput(pageInput),
13
+ aboutBrand: getAboutBrandFromPageInput(pageInput),
14
+ brandPillars: getBrandPillarsFromPageInput(pageInput),
15
+ blogPosts: getBlogPostsFromPageInput(pageInput),
16
+ instagramPosts: getInstagramPostsFromPageInput(pageInput),
17
+ sectionsCopy: getHomeSectionsCopyFromPageInput(pageInput),
18
+ trustFeatures: getTrustFeaturesFromPageInput(pageInput),
19
+ };
20
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returns.d.ts","sourceRoot":"","sources":["../../../src/server/returns.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAK3C,eAAO,MAAM,iBAAiB,sEAG7B,CAAA;AAED,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,aAAa,MAAM,EAAE,KACpB,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAOzC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,OAAO;IACL,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAA;CACrC,EACD,UAAU,QAAQ,KACjB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAA;CACrC,CAmFA,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAU,UAAU,MAAM,EAAE,WAAW,MAAM;;;;;;;;EAa5E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,uEA4BjD,CAAA"}
@@ -0,0 +1,17 @@
1
+ import "server-only";
2
+ import { HttpTypes } from "@medusajs/types";
3
+ import type { HomepageConfig } from "./homepage-config.types";
4
+ export type ShoppableLookConfig = {
5
+ image: string;
6
+ productIds: string[];
7
+ productHandles: string[];
8
+ };
9
+ export type ShoppableLook = {
10
+ id: string;
11
+ image: string;
12
+ products: HttpTypes.StoreProduct[];
13
+ };
14
+ export declare function readShoppableLooksBlock(block: unknown): ShoppableLookConfig[];
15
+ export declare function looksFromProducts(products: HttpTypes.StoreProduct[]): ShoppableLook[];
16
+ export declare function getBaptismPicksLooks(countryCode: string, fallbackProducts: HttpTypes.StoreProduct[], pageInput?: HomepageConfig | null): Promise<ShoppableLook[]>;
17
+ //# sourceMappingURL=shoppable-looks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shoppable-looks.d.ts","sourceRoot":"","sources":["../../../src/server/shoppable-looks.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAI7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;CACnC,CAAA;AAoCD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,EAAE,CAkB7E;AAoDD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,GACjC,aAAa,EAAE,CAgBjB;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,SAAS,CAAC,YAAY,EAAE,EAC1C,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI,GAChC,OAAO,CAAC,aAAa,EAAE,CAAC,CA4B1B"}
@@ -0,0 +1,136 @@
1
+ import "server-only";
2
+ import { sdk } from "../config";
3
+ import { getRegion } from "./regions";
4
+ import { DEFAULT_HOMEPAGE_SECTIONS } from "./homepage-section-defaults";
5
+ import { getMergedSectionBlock } from "./dynamic-config";
6
+ function parseLookRow(row) {
7
+ const nested = (row.look ?? row["shop-look"] ?? row);
8
+ const image = String(nested.image ?? nested["look-image"] ?? nested.thumbnail ?? "").trim();
9
+ if (!image)
10
+ return null;
11
+ const idsRaw = nested["product-ids"] ?? nested.productIds ?? nested.products;
12
+ const handlesRaw = nested["product-handles"] ?? nested.productHandles ?? nested.handles;
13
+ const productIds = [];
14
+ const productHandles = [];
15
+ if (Array.isArray(idsRaw)) {
16
+ idsRaw.forEach((entry) => {
17
+ if (typeof entry === "string" && entry.trim())
18
+ productIds.push(entry.trim());
19
+ if (entry && typeof entry === "object") {
20
+ const id = entry.id ?? entry["product-id"];
21
+ if (typeof id === "string" && id.trim())
22
+ productIds.push(id.trim());
23
+ }
24
+ });
25
+ }
26
+ if (Array.isArray(handlesRaw)) {
27
+ handlesRaw.forEach((entry) => {
28
+ if (typeof entry === "string" && entry.trim())
29
+ productHandles.push(entry.trim());
30
+ if (entry && typeof entry === "object") {
31
+ const handle = entry.handle;
32
+ if (typeof handle === "string" && handle.trim())
33
+ productHandles.push(handle.trim());
34
+ }
35
+ });
36
+ }
37
+ return { image, productIds, productHandles };
38
+ }
39
+ export function readShoppableLooksBlock(block) {
40
+ if (!block || typeof block !== "object")
41
+ return [];
42
+ const row = block;
43
+ const raw = row.looks ??
44
+ row["shop-looks"] ??
45
+ row["looks-array"] ??
46
+ row["baptism-picks"] ??
47
+ [];
48
+ if (!Array.isArray(raw))
49
+ return [];
50
+ return raw
51
+ .map((item) => {
52
+ if (!item || typeof item !== "object")
53
+ return null;
54
+ return parseLookRow(item);
55
+ })
56
+ .filter((x) => x !== null);
57
+ }
58
+ async function fetchProductsForLook(countryCode, productIds, productHandles) {
59
+ const region = await getRegion(countryCode);
60
+ if (!region?.id)
61
+ return [];
62
+ const fields = "*thumbnail,*images,*variants,*variants.calculated_price,*options,*options.values";
63
+ const byId = new Map();
64
+ if (productIds.length > 0) {
65
+ const { products } = await sdk.store.product.list({ id: productIds, region_id: region.id, fields, limit: productIds.length }, {});
66
+ products.forEach((p) => {
67
+ if (p.id)
68
+ byId.set(p.id, p);
69
+ });
70
+ }
71
+ for (const handle of productHandles) {
72
+ if (byId.has(handle))
73
+ continue;
74
+ try {
75
+ const { products } = await sdk.store.product.list({ handle, region_id: region.id, fields, limit: 1 }, {});
76
+ const product = products?.[0];
77
+ if (product?.id)
78
+ byId.set(product.id, product);
79
+ }
80
+ catch {
81
+ /* skip */
82
+ }
83
+ }
84
+ const ordered = [];
85
+ for (const id of productIds) {
86
+ const p = byId.get(id);
87
+ if (p)
88
+ ordered.push(p);
89
+ }
90
+ for (const handle of productHandles) {
91
+ const p = [...byId.values()].find((x) => x.handle === handle);
92
+ if (p && !ordered.some((o) => o.id === p.id))
93
+ ordered.push(p);
94
+ }
95
+ return ordered;
96
+ }
97
+ export function looksFromProducts(products) {
98
+ return products
99
+ .map((product, index) => {
100
+ const image = product.metadata?.look_image ??
101
+ product.thumbnail ??
102
+ product.images?.[0]?.url ??
103
+ "";
104
+ if (!image)
105
+ return null;
106
+ return {
107
+ id: product.id ?? `look-${index}`,
108
+ image,
109
+ products: [product],
110
+ };
111
+ })
112
+ .filter((x) => x !== null);
113
+ }
114
+ export async function getBaptismPicksLooks(countryCode, fallbackProducts, pageInput) {
115
+ const block = getMergedSectionBlock("baptismPicks", pageInput);
116
+ let configs = readShoppableLooksBlock(block);
117
+ if (configs.length === 0) {
118
+ configs = readShoppableLooksBlock(DEFAULT_HOMEPAGE_SECTIONS.baptismPicks);
119
+ }
120
+ if (configs.length === 0) {
121
+ return looksFromProducts(fallbackProducts);
122
+ }
123
+ const looks = [];
124
+ for (let i = 0; i < configs.length; i++) {
125
+ const config = configs[i];
126
+ const products = await fetchProductsForLook(countryCode, config.productIds, config.productHandles);
127
+ if (products.length === 0)
128
+ continue;
129
+ looks.push({
130
+ id: `look-${i}`,
131
+ image: config.image,
132
+ products,
133
+ });
134
+ }
135
+ return looks.length > 0 ? looks : looksFromProducts(fallbackProducts);
136
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swaps.d.ts","sourceRoot":"","sources":["../../../src/server/swaps.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,eAAe,EAC3B,UAAU,QAAQ,KACjB,OAAO,CAAC,eAAe,CAsEzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GAAU,UAAU,MAAM,mEAoB/C,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/server/variants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,eAAO,MAAM,eAAe,GAC1B,YAAY,MAAM,KACjB,OAAO,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAU9C,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wishlist.d.ts","sourceRoot":"","sources":["../../../src/server/wishlist.ts"],"names":[],"mappings":"AAOA,mEAAmE;AACnE,wBAAsB,WAAW,CAAC,cAAc,UAAO,EAAE,WAAW,CAAC,EAAE,MAAM;;;UAGF,OAAO,EAAE;;;;;GAoDnF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-locale-header.d.ts","sourceRoot":"","sources":["../../../src/util/get-locale-header.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe;;GAKpC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medusa-error.d.ts","sourceRoot":"","sources":["../../../src/util/medusa-error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAkBrD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revalidate-cart.d.ts","sourceRoot":"","sources":["../../../src/util/revalidate-cart.ts"],"names":[],"mappings":"AAGA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMxD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-products.d.ts","sourceRoot":"","sources":["../../../src/util/sort-products.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-client.d.ts","sourceRoot":"","sources":["../../../src/util/store-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAqBxF;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAY/E;AAED,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB,8BAAwB,CAAA;AAE9D,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAuB3F;AAED,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,wBAAwB,CAAC,CAMnC;AAED,wBAAsB,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAWnG"}