medusa-storefront-data 2.3.0 → 2.5.1

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 (369) hide show
  1. package/HOMEPAGE_CONFIG.md +133 -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/dynamic-config-schema/index.d.ts +103 -0
  6. package/dist/src/dynamic-config-schema/index.d.ts.map +1 -0
  7. package/dist/src/dynamic-config-schema/index.js +172 -0
  8. package/dist/src/dynamic-config-schema/sections/about-brand.d.ts +5 -0
  9. package/dist/src/dynamic-config-schema/sections/about-brand.d.ts.map +1 -0
  10. package/dist/src/dynamic-config-schema/sections/about-brand.js +30 -0
  11. package/dist/src/dynamic-config-schema/sections/baptism-picks.d.ts +5 -0
  12. package/dist/src/dynamic-config-schema/sections/baptism-picks.d.ts.map +1 -0
  13. package/dist/src/dynamic-config-schema/sections/baptism-picks.js +17 -0
  14. package/dist/src/dynamic-config-schema/sections/baptism.d.ts +5 -0
  15. package/dist/src/dynamic-config-schema/sections/baptism.d.ts.map +1 -0
  16. package/dist/src/dynamic-config-schema/sections/baptism.js +4 -0
  17. package/dist/src/dynamic-config-schema/sections/blog-posts.d.ts +5 -0
  18. package/dist/src/dynamic-config-schema/sections/blog-posts.d.ts.map +1 -0
  19. package/dist/src/dynamic-config-schema/sections/blog-posts.js +31 -0
  20. package/dist/src/dynamic-config-schema/sections/brand-marquee.d.ts +5 -0
  21. package/dist/src/dynamic-config-schema/sections/brand-marquee.d.ts.map +1 -0
  22. package/dist/src/dynamic-config-schema/sections/brand-marquee.js +9 -0
  23. package/dist/src/dynamic-config-schema/sections/brand-pillars.d.ts +5 -0
  24. package/dist/src/dynamic-config-schema/sections/brand-pillars.d.ts.map +1 -0
  25. package/dist/src/dynamic-config-schema/sections/brand-pillars.js +29 -0
  26. package/dist/src/dynamic-config-schema/sections/category-pills.d.ts +5 -0
  27. package/dist/src/dynamic-config-schema/sections/category-pills.d.ts.map +1 -0
  28. package/dist/src/dynamic-config-schema/sections/category-pills.js +4 -0
  29. package/dist/src/dynamic-config-schema/sections/celebrity-trust.d.ts +5 -0
  30. package/dist/src/dynamic-config-schema/sections/celebrity-trust.d.ts.map +1 -0
  31. package/dist/src/dynamic-config-schema/sections/celebrity-trust.js +4 -0
  32. package/dist/src/dynamic-config-schema/sections/features.d.ts +5 -0
  33. package/dist/src/dynamic-config-schema/sections/features.d.ts.map +1 -0
  34. package/dist/src/dynamic-config-schema/sections/features.js +12 -0
  35. package/dist/src/dynamic-config-schema/sections/hero.d.ts +6 -0
  36. package/dist/src/dynamic-config-schema/sections/hero.d.ts.map +1 -0
  37. package/dist/src/dynamic-config-schema/sections/hero.js +9 -0
  38. package/dist/src/dynamic-config-schema/sections/index.d.ts +24 -0
  39. package/dist/src/dynamic-config-schema/sections/index.d.ts.map +1 -0
  40. package/dist/src/dynamic-config-schema/sections/index.js +23 -0
  41. package/dist/src/dynamic-config-schema/sections/instagram-posts.d.ts +5 -0
  42. package/dist/src/dynamic-config-schema/sections/instagram-posts.d.ts.map +1 -0
  43. package/dist/src/dynamic-config-schema/sections/instagram-posts.js +30 -0
  44. package/dist/src/dynamic-config-schema/sections/loved-by-moms.d.ts +5 -0
  45. package/dist/src/dynamic-config-schema/sections/loved-by-moms.d.ts.map +1 -0
  46. package/dist/src/dynamic-config-schema/sections/loved-by-moms.js +4 -0
  47. package/dist/src/dynamic-config-schema/sections/luxe-favourites.d.ts +5 -0
  48. package/dist/src/dynamic-config-schema/sections/luxe-favourites.d.ts.map +1 -0
  49. package/dist/src/dynamic-config-schema/sections/luxe-favourites.js +4 -0
  50. package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.d.ts +5 -0
  51. package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.d.ts.map +1 -0
  52. package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.js +12 -0
  53. package/dist/src/dynamic-config-schema/sections/new-arrivals.d.ts +5 -0
  54. package/dist/src/dynamic-config-schema/sections/new-arrivals.d.ts.map +1 -0
  55. package/dist/src/dynamic-config-schema/sections/new-arrivals.js +12 -0
  56. package/dist/src/dynamic-config-schema/sections/promo-announcements.d.ts +5 -0
  57. package/dist/src/dynamic-config-schema/sections/promo-announcements.d.ts.map +1 -0
  58. package/dist/src/dynamic-config-schema/sections/promo-announcements.js +16 -0
  59. package/dist/src/dynamic-config-schema/sections/promo-countdown.d.ts +5 -0
  60. package/dist/src/dynamic-config-schema/sections/promo-countdown.d.ts.map +1 -0
  61. package/dist/src/dynamic-config-schema/sections/promo-countdown.js +16 -0
  62. package/dist/src/dynamic-config-schema/sections/shop-by-age.d.ts +5 -0
  63. package/dist/src/dynamic-config-schema/sections/shop-by-age.d.ts.map +1 -0
  64. package/dist/src/dynamic-config-schema/sections/shop-by-age.js +4 -0
  65. package/dist/src/dynamic-config-schema/sections/shop-by-category.d.ts +5 -0
  66. package/dist/src/dynamic-config-schema/sections/shop-by-category.d.ts.map +1 -0
  67. package/dist/src/dynamic-config-schema/sections/shop-by-category.js +4 -0
  68. package/dist/src/dynamic-config-schema/sections/testimonials.d.ts +5 -0
  69. package/dist/src/dynamic-config-schema/sections/testimonials.d.ts.map +1 -0
  70. package/dist/src/dynamic-config-schema/sections/testimonials.js +9 -0
  71. package/dist/src/dynamic-config-schema/sections/theme-dresses.d.ts +5 -0
  72. package/dist/src/dynamic-config-schema/sections/theme-dresses.d.ts.map +1 -0
  73. package/dist/src/dynamic-config-schema/sections/theme-dresses.js +4 -0
  74. package/dist/src/dynamic-config-schema/sections/video-stories.d.ts +5 -0
  75. package/dist/src/dynamic-config-schema/sections/video-stories.d.ts.map +1 -0
  76. package/dist/src/dynamic-config-schema/sections/video-stories.js +24 -0
  77. package/dist/src/dynamic-config-schema/sections/why-choose-us.d.ts +5 -0
  78. package/dist/src/dynamic-config-schema/sections/why-choose-us.d.ts.map +1 -0
  79. package/dist/src/dynamic-config-schema/sections/why-choose-us.js +9 -0
  80. package/dist/src/dynamic-config-schema/shared.d.ts +35 -0
  81. package/dist/src/dynamic-config-schema/shared.d.ts.map +1 -0
  82. package/dist/src/dynamic-config-schema/shared.js +99 -0
  83. package/dist/src/dynamic-config-schema/site-configs.d.ts +11 -0
  84. package/dist/src/dynamic-config-schema/site-configs.d.ts.map +1 -0
  85. package/dist/src/dynamic-config-schema/site-configs.js +70 -0
  86. package/dist/src/edge.d.ts.map +1 -0
  87. package/dist/src/middleware.d.ts.map +1 -0
  88. package/dist/src/server/brand-pillars-from-categories.d.ts +8 -0
  89. package/dist/src/server/brand-pillars-from-categories.d.ts.map +1 -0
  90. package/dist/src/server/brand-pillars-from-categories.js +92 -0
  91. package/dist/src/server/cart.d.ts.map +1 -0
  92. package/dist/{server → src/server}/cart.js +20 -20
  93. package/dist/src/server/categories.d.ts.map +1 -0
  94. package/dist/src/server/collections.d.ts.map +1 -0
  95. package/dist/src/server/config-merge.d.ts +3 -0
  96. package/dist/src/server/config-merge.d.ts.map +1 -0
  97. package/dist/src/server/config-merge.js +31 -0
  98. package/dist/src/server/contact.d.ts.map +1 -0
  99. package/dist/src/server/customer-registration.d.ts.map +1 -0
  100. package/dist/src/server/customer.d.ts.map +1 -0
  101. package/dist/{server → src/server}/customer.js +11 -11
  102. package/dist/src/server/dynamic-config-api.d.ts +11 -0
  103. package/dist/src/server/dynamic-config-api.d.ts.map +1 -0
  104. package/dist/src/server/dynamic-config-api.js +46 -0
  105. package/dist/src/server/dynamic-config.d.ts +157 -0
  106. package/dist/src/server/dynamic-config.d.ts.map +1 -0
  107. package/dist/src/server/dynamic-config.js +573 -0
  108. package/dist/src/server/fulfillment.d.ts.map +1 -0
  109. package/dist/{server → src/server}/fulfillment.js +3 -3
  110. package/dist/src/server/guest.d.ts.map +1 -0
  111. package/dist/src/server/home-sections/about-brand.d.ts +9 -0
  112. package/dist/src/server/home-sections/about-brand.d.ts.map +1 -0
  113. package/dist/src/server/home-sections/about-brand.js +9 -0
  114. package/dist/src/server/home-sections/baptism-picks.d.ts +10 -0
  115. package/dist/src/server/home-sections/baptism-picks.d.ts.map +1 -0
  116. package/dist/src/server/home-sections/baptism-picks.js +27 -0
  117. package/dist/src/server/home-sections/baptism.d.ts +13 -0
  118. package/dist/src/server/home-sections/baptism.d.ts.map +1 -0
  119. package/dist/src/server/home-sections/baptism.js +43 -0
  120. package/dist/src/server/home-sections/blog-posts.d.ts +9 -0
  121. package/dist/src/server/home-sections/blog-posts.d.ts.map +1 -0
  122. package/dist/src/server/home-sections/blog-posts.js +9 -0
  123. package/dist/src/server/home-sections/brand-marquee.d.ts +8 -0
  124. package/dist/src/server/home-sections/brand-marquee.d.ts.map +1 -0
  125. package/dist/src/server/home-sections/brand-marquee.js +7 -0
  126. package/dist/src/server/home-sections/brand-pillars.d.ts +9 -0
  127. package/dist/src/server/home-sections/brand-pillars.d.ts.map +1 -0
  128. package/dist/src/server/home-sections/brand-pillars.js +9 -0
  129. package/dist/src/server/home-sections/category-pills.d.ts +9 -0
  130. package/dist/src/server/home-sections/category-pills.d.ts.map +1 -0
  131. package/dist/src/server/home-sections/category-pills.js +19 -0
  132. package/dist/src/server/home-sections/celebrity-trust.d.ts +12 -0
  133. package/dist/src/server/home-sections/celebrity-trust.d.ts.map +1 -0
  134. package/dist/src/server/home-sections/celebrity-trust.js +27 -0
  135. package/dist/src/server/home-sections/features.d.ts +9 -0
  136. package/dist/src/server/home-sections/features.d.ts.map +1 -0
  137. package/dist/src/server/home-sections/features.js +9 -0
  138. package/dist/src/server/home-sections/hero.d.ts +9 -0
  139. package/dist/src/server/home-sections/hero.d.ts.map +1 -0
  140. package/dist/src/server/home-sections/hero.js +9 -0
  141. package/dist/src/server/home-sections/instagram-posts.d.ts +9 -0
  142. package/dist/src/server/home-sections/instagram-posts.d.ts.map +1 -0
  143. package/dist/src/server/home-sections/instagram-posts.js +9 -0
  144. package/dist/src/server/home-sections/loved-by-moms.d.ts +12 -0
  145. package/dist/src/server/home-sections/loved-by-moms.d.ts.map +1 -0
  146. package/dist/src/server/home-sections/loved-by-moms.js +20 -0
  147. package/dist/src/server/home-sections/luxe-favourites.d.ts +11 -0
  148. package/dist/src/server/home-sections/luxe-favourites.d.ts.map +1 -0
  149. package/dist/src/server/home-sections/luxe-favourites.js +19 -0
  150. package/dist/src/server/home-sections/new-arrivals-classic.d.ts +8 -0
  151. package/dist/src/server/home-sections/new-arrivals-classic.d.ts.map +1 -0
  152. package/dist/src/server/home-sections/new-arrivals-classic.js +10 -0
  153. package/dist/src/server/home-sections/new-arrivals.d.ts +12 -0
  154. package/dist/src/server/home-sections/new-arrivals.d.ts.map +1 -0
  155. package/dist/src/server/home-sections/new-arrivals.js +28 -0
  156. package/dist/src/server/home-sections/promo-announcements.d.ts +7 -0
  157. package/dist/src/server/home-sections/promo-announcements.d.ts.map +1 -0
  158. package/dist/src/server/home-sections/promo-announcements.js +7 -0
  159. package/dist/src/server/home-sections/promo-countdown.d.ts +6 -0
  160. package/dist/src/server/home-sections/promo-countdown.d.ts.map +1 -0
  161. package/dist/src/server/home-sections/promo-countdown.js +5 -0
  162. package/dist/src/server/home-sections/shared.d.ts +10 -0
  163. package/dist/src/server/home-sections/shared.d.ts.map +1 -0
  164. package/dist/src/server/home-sections/shared.js +29 -0
  165. package/dist/src/server/home-sections/shop-by-age.d.ts +9 -0
  166. package/dist/src/server/home-sections/shop-by-age.d.ts.map +1 -0
  167. package/dist/src/server/home-sections/shop-by-age.js +17 -0
  168. package/dist/src/server/home-sections/shop-by-category.d.ts +10 -0
  169. package/dist/src/server/home-sections/shop-by-category.d.ts.map +1 -0
  170. package/dist/src/server/home-sections/shop-by-category.js +17 -0
  171. package/dist/src/server/home-sections/testimonials.d.ts +9 -0
  172. package/dist/src/server/home-sections/testimonials.d.ts.map +1 -0
  173. package/dist/src/server/home-sections/testimonials.js +9 -0
  174. package/dist/src/server/home-sections/theme-dresses.d.ts +12 -0
  175. package/dist/src/server/home-sections/theme-dresses.d.ts.map +1 -0
  176. package/dist/src/server/home-sections/theme-dresses.js +27 -0
  177. package/dist/src/server/home-sections/video-stories.d.ts +9 -0
  178. package/dist/src/server/home-sections/video-stories.d.ts.map +1 -0
  179. package/dist/src/server/home-sections/video-stories.js +9 -0
  180. package/dist/src/server/home-sections/why-choose-us.d.ts +9 -0
  181. package/dist/src/server/home-sections/why-choose-us.d.ts.map +1 -0
  182. package/dist/src/server/home-sections/why-choose-us.js +9 -0
  183. package/dist/{server → src/server}/home.d.ts +18 -9
  184. package/dist/src/server/home.d.ts.map +1 -0
  185. package/dist/src/server/home.js +1 -0
  186. package/dist/src/server/homepage-config.types.d.ts +274 -0
  187. package/dist/src/server/homepage-config.types.d.ts.map +1 -0
  188. package/dist/src/server/homepage-config.types.js +33 -0
  189. package/dist/{server → src/server}/homepage-section-defaults.d.ts +35 -2
  190. package/dist/src/server/homepage-section-defaults.d.ts.map +1 -0
  191. package/dist/{server → src/server}/homepage-section-defaults.js +41 -2
  192. package/dist/{server → src/server}/index.d.ts +2 -0
  193. package/dist/src/server/index.d.ts.map +1 -0
  194. package/dist/{server → src/server}/index.js +2 -0
  195. package/dist/src/server/locale-actions.d.ts.map +1 -0
  196. package/dist/src/server/locales.d.ts.map +1 -0
  197. package/dist/src/server/normalize-homepage-config.d.ts +7 -0
  198. package/dist/src/server/normalize-homepage-config.d.ts.map +1 -0
  199. package/dist/src/server/normalize-homepage-config.js +213 -0
  200. package/dist/src/server/notifications.d.ts.map +1 -0
  201. package/dist/src/server/onboarding.d.ts.map +1 -0
  202. package/dist/src/server/orders.d.ts.map +1 -0
  203. package/dist/{server → src/server}/orders.js +6 -6
  204. package/dist/src/server/page-input.d.ts +19 -0
  205. package/dist/src/server/page-input.d.ts.map +1 -0
  206. package/dist/src/server/page-input.js +42 -0
  207. package/dist/src/server/payment-details.d.ts.map +1 -0
  208. package/dist/{server → src/server}/payment-details.js +5 -5
  209. package/dist/src/server/payment.d.ts.map +1 -0
  210. package/dist/{server → src/server}/payment.js +2 -2
  211. package/dist/src/server/pincode.d.ts.map +1 -0
  212. package/dist/src/server/products.d.ts.map +1 -0
  213. package/dist/src/server/regions.d.ts.map +1 -0
  214. package/dist/{server → src/server}/regions.js +2 -2
  215. package/dist/src/server/resolve-home-segment-data.d.ts +25 -0
  216. package/dist/src/server/resolve-home-segment-data.d.ts.map +1 -0
  217. package/dist/src/server/resolve-home-segment-data.js +20 -0
  218. package/dist/src/server/returns.d.ts.map +1 -0
  219. package/dist/src/server/shoppable-looks.d.ts +17 -0
  220. package/dist/src/server/shoppable-looks.d.ts.map +1 -0
  221. package/dist/src/server/shoppable-looks.js +136 -0
  222. package/dist/src/server/swaps.d.ts.map +1 -0
  223. package/dist/src/server/variants.d.ts.map +1 -0
  224. package/dist/src/server/wishlist.d.ts.map +1 -0
  225. package/dist/src/util/get-locale-header.d.ts.map +1 -0
  226. package/dist/src/util/medusa-error.d.ts.map +1 -0
  227. package/dist/src/util/revalidate-cart.d.ts.map +1 -0
  228. package/dist/src/util/sort-products.d.ts.map +1 -0
  229. package/dist/{util → src/util}/store-client.d.ts +0 -2
  230. package/dist/src/util/store-client.d.ts.map +1 -0
  231. package/dist/{util → src/util}/store-client.js +0 -2
  232. package/homepage-config.example.json +209 -0
  233. package/homepage-sections.example.json +55 -0
  234. package/package.json +120 -156
  235. package/segment-data/default-page-input.json +191 -0
  236. package/src/server/brand-pillars-from-categories.ts +156 -0
  237. package/src/server/cart.ts +20 -20
  238. package/src/server/config-merge.ts +31 -0
  239. package/src/server/customer.ts +11 -11
  240. package/src/server/dynamic-config.ts +507 -566
  241. package/src/server/fulfillment.ts +3 -3
  242. package/src/server/home-sections/about-brand.ts +24 -0
  243. package/src/server/home-sections/baptism-picks.ts +46 -0
  244. package/src/server/home-sections/baptism.ts +64 -0
  245. package/src/server/home-sections/blog-posts.ts +23 -0
  246. package/src/server/home-sections/brand-marquee.ts +17 -0
  247. package/src/server/home-sections/brand-pillars.ts +23 -0
  248. package/src/server/home-sections/category-pills.ts +32 -0
  249. package/src/server/home-sections/celebrity-trust.ts +42 -0
  250. package/src/server/home-sections/features.ts +23 -0
  251. package/src/server/home-sections/hero.ts +24 -0
  252. package/src/server/home-sections/instagram-posts.ts +23 -0
  253. package/src/server/home-sections/loved-by-moms.ts +34 -0
  254. package/src/server/home-sections/luxe-favourites.ts +30 -0
  255. package/src/server/home-sections/new-arrivals-classic.ts +21 -0
  256. package/src/server/home-sections/new-arrivals.ts +47 -0
  257. package/src/server/home-sections/promo-announcements.ts +17 -0
  258. package/src/server/home-sections/promo-countdown.ts +15 -0
  259. package/src/server/home-sections/shared.ts +44 -0
  260. package/src/server/home-sections/shop-by-age.ts +26 -0
  261. package/src/server/home-sections/shop-by-category.ts +28 -0
  262. package/src/server/home-sections/testimonials.ts +23 -0
  263. package/src/server/home-sections/theme-dresses.ts +49 -0
  264. package/src/server/home-sections/video-stories.ts +23 -0
  265. package/src/server/home-sections/why-choose-us.ts +23 -0
  266. package/src/server/home.ts +46 -207
  267. package/src/server/homepage-config.types.ts +335 -0
  268. package/src/server/homepage-section-defaults.ts +41 -2
  269. package/src/server/index.ts +2 -0
  270. package/src/server/normalize-homepage-config.ts +240 -0
  271. package/src/server/orders.ts +6 -6
  272. package/src/server/page-input.ts +66 -0
  273. package/src/server/payment-details.ts +5 -5
  274. package/src/server/payment.ts +2 -2
  275. package/src/server/regions.ts +2 -2
  276. package/src/server/resolve-home-segment-data.ts +63 -0
  277. package/src/server/shoppable-looks.ts +178 -0
  278. package/src/util/store-client.ts +0 -3
  279. package/dist/config.d.ts.map +0 -1
  280. package/dist/cookies.d.ts.map +0 -1
  281. package/dist/edge.d.ts.map +0 -1
  282. package/dist/middleware.d.ts.map +0 -1
  283. package/dist/server/cart.d.ts.map +0 -1
  284. package/dist/server/categories.d.ts.map +0 -1
  285. package/dist/server/collections.d.ts.map +0 -1
  286. package/dist/server/contact.d.ts.map +0 -1
  287. package/dist/server/customer-registration.d.ts.map +0 -1
  288. package/dist/server/customer.d.ts.map +0 -1
  289. package/dist/server/dynamic-config.d.ts +0 -202
  290. package/dist/server/dynamic-config.d.ts.map +0 -1
  291. package/dist/server/dynamic-config.js +0 -675
  292. package/dist/server/fulfillment.d.ts.map +0 -1
  293. package/dist/server/guest.d.ts.map +0 -1
  294. package/dist/server/home.d.ts.map +0 -1
  295. package/dist/server/home.js +0 -124
  296. package/dist/server/homepage-section-defaults.d.ts.map +0 -1
  297. package/dist/server/index.d.ts.map +0 -1
  298. package/dist/server/locale-actions.d.ts.map +0 -1
  299. package/dist/server/locales.d.ts.map +0 -1
  300. package/dist/server/notifications.d.ts.map +0 -1
  301. package/dist/server/onboarding.d.ts.map +0 -1
  302. package/dist/server/orders.d.ts.map +0 -1
  303. package/dist/server/payment-details.d.ts.map +0 -1
  304. package/dist/server/payment.d.ts.map +0 -1
  305. package/dist/server/pincode.d.ts.map +0 -1
  306. package/dist/server/products.d.ts.map +0 -1
  307. package/dist/server/regions.d.ts.map +0 -1
  308. package/dist/server/returns.d.ts.map +0 -1
  309. package/dist/server/swaps.d.ts.map +0 -1
  310. package/dist/server/variants.d.ts.map +0 -1
  311. package/dist/server/wishlist.d.ts.map +0 -1
  312. package/dist/util/get-locale-header.d.ts.map +0 -1
  313. package/dist/util/medusa-error.d.ts.map +0 -1
  314. package/dist/util/revalidate-cart.d.ts.map +0 -1
  315. package/dist/util/sort-products.d.ts.map +0 -1
  316. package/dist/util/store-client.d.ts.map +0 -1
  317. /package/dist/{config.d.ts → src/config.d.ts} +0 -0
  318. /package/dist/{config.js → src/config.js} +0 -0
  319. /package/dist/{cookies.d.ts → src/cookies.d.ts} +0 -0
  320. /package/dist/{cookies.js → src/cookies.js} +0 -0
  321. /package/dist/{edge.d.ts → src/edge.d.ts} +0 -0
  322. /package/dist/{edge.js → src/edge.js} +0 -0
  323. /package/dist/{middleware.d.ts → src/middleware.d.ts} +0 -0
  324. /package/dist/{middleware.js → src/middleware.js} +0 -0
  325. /package/dist/{server → src/server}/cart.d.ts +0 -0
  326. /package/dist/{server → src/server}/categories.d.ts +0 -0
  327. /package/dist/{server → src/server}/categories.js +0 -0
  328. /package/dist/{server → src/server}/collections.d.ts +0 -0
  329. /package/dist/{server → src/server}/collections.js +0 -0
  330. /package/dist/{server → src/server}/contact.d.ts +0 -0
  331. /package/dist/{server → src/server}/contact.js +0 -0
  332. /package/dist/{server → src/server}/customer-registration.d.ts +0 -0
  333. /package/dist/{server → src/server}/customer-registration.js +0 -0
  334. /package/dist/{server → src/server}/customer.d.ts +0 -0
  335. /package/dist/{server → src/server}/fulfillment.d.ts +0 -0
  336. /package/dist/{server → src/server}/guest.d.ts +0 -0
  337. /package/dist/{server → src/server}/guest.js +0 -0
  338. /package/dist/{server → src/server}/locale-actions.d.ts +0 -0
  339. /package/dist/{server → src/server}/locale-actions.js +0 -0
  340. /package/dist/{server → src/server}/locales.d.ts +0 -0
  341. /package/dist/{server → src/server}/locales.js +0 -0
  342. /package/dist/{server → src/server}/notifications.d.ts +0 -0
  343. /package/dist/{server → src/server}/notifications.js +0 -0
  344. /package/dist/{server → src/server}/onboarding.d.ts +0 -0
  345. /package/dist/{server → src/server}/onboarding.js +0 -0
  346. /package/dist/{server → src/server}/orders.d.ts +0 -0
  347. /package/dist/{server → src/server}/payment-details.d.ts +0 -0
  348. /package/dist/{server → src/server}/payment.d.ts +0 -0
  349. /package/dist/{server → src/server}/pincode.d.ts +0 -0
  350. /package/dist/{server → src/server}/pincode.js +0 -0
  351. /package/dist/{server → src/server}/products.d.ts +0 -0
  352. /package/dist/{server → src/server}/products.js +0 -0
  353. /package/dist/{server → src/server}/regions.d.ts +0 -0
  354. /package/dist/{server → src/server}/returns.d.ts +0 -0
  355. /package/dist/{server → src/server}/returns.js +0 -0
  356. /package/dist/{server → src/server}/swaps.d.ts +0 -0
  357. /package/dist/{server → src/server}/swaps.js +0 -0
  358. /package/dist/{server → src/server}/variants.d.ts +0 -0
  359. /package/dist/{server → src/server}/variants.js +0 -0
  360. /package/dist/{server → src/server}/wishlist.d.ts +0 -0
  361. /package/dist/{server → src/server}/wishlist.js +0 -0
  362. /package/dist/{util → src/util}/get-locale-header.d.ts +0 -0
  363. /package/dist/{util → src/util}/get-locale-header.js +0 -0
  364. /package/dist/{util → src/util}/medusa-error.d.ts +0 -0
  365. /package/dist/{util → src/util}/medusa-error.js +0 -0
  366. /package/dist/{util → src/util}/revalidate-cart.d.ts +0 -0
  367. /package/dist/{util → src/util}/revalidate-cart.js +0 -0
  368. /package/dist/{util → src/util}/sort-products.d.ts +0 -0
  369. /package/dist/{util → src/util}/sort-products.js +0 -0
@@ -0,0 +1,133 @@
1
+ # Homepage config and page input
2
+
3
+ Storefront **packages do not call** `GET /store/dynamic-config`. Segment copy uses **hardcoded JSON defaults** (`segment-data/default-page-input.json`). The **main project** fetches dynamic config once and passes optional `pageInput` overrides.
4
+
5
+ ## Tree-shakeable imports (one section)
6
+
7
+ Import **only** the section UI and its loader. No full home barrel or global section registry.
8
+
9
+ ```tsx
10
+ // app/[countryCode]/page.tsx — single hero block
11
+ import HeroSection from "medusa-ui-home/sections/hero"
12
+ import { loadHeroSectionData } from "medusa-storefront-data/home/sections/hero"
13
+
14
+ export default async function Page({
15
+ params,
16
+ }: {
17
+ params: Promise<{ countryCode: string }>
18
+ }) {
19
+ const { countryCode } = await params
20
+ const pageInput = /* optional: homepageConfigFromDynamicResponse(await getDynamicConfig()) */
21
+ const data = await loadHeroSectionData(countryCode, { pageInput })
22
+
23
+ return <HeroSection {...data} />
24
+ }
25
+ ```
26
+
27
+ ### Section subpaths
28
+
29
+ | UI component | Scoped data loader |
30
+ |--------------|-------------------|
31
+ | `medusa-ui-home/sections/hero` | `medusa-storefront-data/home/sections/hero` |
32
+ | `medusa-ui-home/sections/newArrivals` | `medusa-storefront-data/home/sections/newArrivals` |
33
+ | `medusa-ui-home/sections/promoAnnouncements` | `medusa-storefront-data/home/sections/promoAnnouncements` |
34
+ | … | … (all `HomeSectionId` values) |
35
+
36
+ Run `node scripts/generate-home-section-exports.mjs` after adding a section.
37
+
38
+ ## Themed pages (tree-shakeable)
39
+
40
+ Import **one page** from `medusa-storefront-pages` — each route is its own export:
41
+
42
+ ```tsx
43
+ import ContactPage, { CONTACT_PAGE_METADATA } from "medusa-storefront-pages/contact"
44
+
45
+ export const metadata = CONTACT_PAGE_METADATA
46
+ export default ContactPage // optional pageInput; uses JSON defaults when omitted
47
+ ```
48
+
49
+ Do **not** import a root barrel (there is no `.` export).
50
+
51
+ ## Multiple sections in the main app
52
+
53
+ Compose manually (recommended):
54
+
55
+ ```tsx
56
+ import HeroSection from "medusa-ui-home/sections/hero"
57
+ import NewArrivalsSection from "medusa-ui-home/sections/newArrivals"
58
+ import { loadHeroSectionData } from "medusa-storefront-data/home/sections/hero"
59
+ import { loadNewArrivalsSectionData } from "medusa-storefront-data/home/sections/newArrivals"
60
+
61
+ const [hero, newArrivals] = await Promise.all([
62
+ loadHeroSectionData(countryCode, { pageInput }),
63
+ loadNewArrivalsSectionData(countryCode, { pageInput }),
64
+ ])
65
+
66
+ return (
67
+ <>
68
+ {hero && <HeroSection {...hero} />}
69
+ {newArrivals && <NewArrivalsSection {...newArrivals} />}
70
+ </>
71
+ )
72
+ ```
73
+
74
+ ### Main project page (no registration)
75
+
76
+ Sections accept props from their matching `load*SectionData` helper — no `adaptHomeSection` or `registerAllHomeSections`:
77
+
78
+ ```tsx
79
+ import HeroSection from "medusa-ui-home/sections/hero"
80
+ import WhyChooseUsSection from "medusa-ui-home/sections/whyChooseUs"
81
+ import { loadHeroSectionData } from "medusa-storefront-data/home/sections/hero"
82
+ import { loadWhyChooseUsSectionData } from "medusa-storefront-data/home/sections/whyChooseUs"
83
+
84
+ const pageInput = /* optional CMS overrides */
85
+ const [hero, whyChooseUs] = await Promise.all([
86
+ loadHeroSectionData(countryCode, { pageInput }),
87
+ loadWhyChooseUsSectionData(countryCode, { pageInput }),
88
+ ])
89
+
90
+ return (
91
+ <>
92
+ {hero && <HeroSection {...hero} />}
93
+ {whyChooseUs && <WhyChooseUsSection {...whyChooseUs} />}
94
+ </>
95
+ )
96
+ ```
97
+
98
+ ## Main project dynamic config
99
+
100
+ ```tsx
101
+ import {
102
+ getDynamicConfig,
103
+ homepageConfigFromDynamicResponse,
104
+ } from "medusa-storefront-data/dynamic-config"
105
+
106
+ const pageInput = homepageConfigFromDynamicResponse(await getDynamicConfig())
107
+ ```
108
+
109
+ Pass `pageInput` only where you need CMS overrides; omit it to use package JSON defaults.
110
+
111
+ ## Medusa backend admin schemas (`medusa-ui-home`)
112
+
113
+ UI and dynamic-config schema live in the same section file — import only what you register:
114
+
115
+ ```ts
116
+ import HeroSection, {
117
+ heroHomepageSectionField,
118
+ bannerSlide,
119
+ } from "medusa-ui-home/sections/hero"
120
+ import { whyChooseUsHomepageSectionField } from "medusa-ui-home/sections/whyChooseUs"
121
+ ```
122
+
123
+ Compose `options.configs` in your Medusa project from each section’s `*HomepageSectionField` (and site-level structures you define locally). Merge API responses with `homepageConfigFromDynamicResponse` from `medusa-storefront-data/dynamic-config`.
124
+
125
+ ## API reference
126
+
127
+ | Export | Use |
128
+ |--------|-----|
129
+ | `loadHeroSectionData`, `loadNewArrivalsSectionData`, … | **One section** catalog + copy |
130
+ | `getDynamicConfig()` | **Main project only** |
131
+ | `get*FromPageInput(pageInput)` | Read CMS copy/banners without fetching |
132
+ | `homepageConfigFromDynamicResponse(raw)` | Merge API → `pageInput` |
133
+ | `DEFAULT_PAGE_INPUT` | Package defaults |
@@ -0,0 +1,191 @@
1
+ {
2
+ "logo": "/Logo.png",
3
+ "website-description": "Premium kids fashion for everyday wear and special occasions.",
4
+ "homepage-banner-array": [
5
+ {
6
+ "homepage-banner": {
7
+ "homepage-banner-image": "/newbanner.png",
8
+ "homepage-banner-title": "Premium Kids Shop",
9
+ "homepage-banner-subtitle": "Little Trends, Quality Kids Wear",
10
+ "homepage-banner-description": "Shop stylish kids wear for little ones and children of all years—from newborn up to 15 years.",
11
+ "homepage-banner-button-name": "Shop Kids Wear",
12
+ "homepage-banner-button-link": "/store"
13
+ }
14
+ }
15
+ ],
16
+ "app-banner-array": [
17
+ {
18
+ "app-banner": {
19
+ "app-banner-image": "/appbanner.png",
20
+ "app-banner-title": "Premium Kids Shop",
21
+ "app-banner-subtitle": "Little Trends, Quality Kids Wear",
22
+ "app-banner-description": "Shop stylish kids wear for little ones and children of all years—from newborn up to 15 years.",
23
+ "app-banner-button-name": "Shop Kids Wear",
24
+ "app-banner-button-link": "/store"
25
+ }
26
+ }
27
+ ],
28
+ "promo-bar": {
29
+ "promo-text": null,
30
+ "promo-code": null,
31
+ "promo-active": false
32
+ },
33
+ "contact-us": {
34
+ "contact-phone": "+1 000 000 0000",
35
+ "contact-email": "hello@yourstore.com",
36
+ "contact-address": "Your store address"
37
+ },
38
+ "social-links": [],
39
+ "faq-array": [],
40
+ "sections": {
41
+ "promoAnnouncements": {
42
+ "messages": [
43
+ "Free shipping on orders over a threshold",
44
+ "Worldwide shipping available",
45
+ "Selected products available with customisation",
46
+ "Need help choosing? Book a video call consultation"
47
+ ]
48
+ },
49
+ "hero": {},
50
+ "categoryPills": {},
51
+ "newArrivals": {
52
+ "title": "New Arrivals",
53
+ "subtitle": "Fresh styles just landed",
54
+ "variant": "grid"
55
+ },
56
+ "newArrivalsClassic": {
57
+ "title": "New Arrivals",
58
+ "subtitle": "Fresh styles just landed",
59
+ "variant": "classic"
60
+ },
61
+ "promoCountdown": {
62
+ "code": "SAVE50",
63
+ "text": "Up to 50% off — shop your favourites before they're gone!",
64
+ "end-at": "2026-12-31T23:59:59.000Z",
65
+ "active": false,
66
+ "cta-label": "Shop Offers",
67
+ "cta-href": "/store"
68
+ },
69
+ "celebrityTrust": {
70
+ "title": "Trusted by Celebrities",
71
+ "text": "When the stars dress their little ones in our collections."
72
+ },
73
+ "luxeFavourites": {
74
+ "title": "Luxe Favourites"
75
+ },
76
+ "shopByCategory": {
77
+ "title": "Shop By Categories",
78
+ "description": "Browse by style and occasion"
79
+ },
80
+ "baptism": {
81
+ "title": "Baptism"
82
+ },
83
+ "baptismPicks": {
84
+ "title": "Baptism Picks",
85
+ "looks": []
86
+ },
87
+ "themeDresses": {
88
+ "title": "Theme",
89
+ "description": "Dress her in a dreamy theme outfit for her birthday celebration"
90
+ },
91
+ "brandMarquee": {
92
+ "text": "est. 2012"
93
+ },
94
+ "aboutBrand": {
95
+ "eyebrow": "Who We Are",
96
+ "title": "Discover what makes us different",
97
+ "description": "We offer stylish, comfortable, and high-quality clothing for children, crafted for everyday wear and special occasions.",
98
+ "readMoreHref": "/about",
99
+ "stats": [
100
+ {
101
+ "label": "Visit us in store",
102
+ "value": "Find a location"
103
+ },
104
+ {
105
+ "label": "Happy customers",
106
+ "value": "150k+"
107
+ },
108
+ {
109
+ "label": "Products",
110
+ "value": "3000+"
111
+ }
112
+ ]
113
+ },
114
+ "testimonials": {
115
+ "title": "What Clients Talk About Us",
116
+ "description": "The Trust We've Earned",
117
+ "items": [
118
+ {
119
+ "text": "Amazing place if you are looking for a dress for ur little girl's special day.",
120
+ "name": "Greeshma thottippal shanmughan"
121
+ },
122
+ {
123
+ "text": "I frequently buy dresses for my baby from this store and I am extremely satisfied with the purchase.",
124
+ "name": "Priyanka Rajesh"
125
+ }
126
+ ]
127
+ },
128
+ "instagramPosts": {
129
+ "title": "Follow Us on Instagram",
130
+ "handle": "yourbrand",
131
+ "profile-url": "https://www.instagram.com/yourbrand/",
132
+ "profile-image": "/Logo.png",
133
+ "posts": []
134
+ },
135
+ "brandPillars": {
136
+ "title": "This approach resulted in the beautiful structure",
137
+ "pillars": [
138
+ {
139
+ "title": "Your favorite kids destination",
140
+ "description": "Trendy, high-quality outfits for little ones.",
141
+ "image": "/features/store.jpg"
142
+ }
143
+ ]
144
+ },
145
+ "features": {
146
+ "title": "Why shop with us",
147
+ "description": "Secure checkout, fast delivery, and easy exchanges",
148
+ "features": [
149
+ {
150
+ "name": "100% Secure",
151
+ "icon": "/secure.svg"
152
+ },
153
+ {
154
+ "name": "Easy Exchanges",
155
+ "icon": "/exchnage.svg"
156
+ }
157
+ ]
158
+ },
159
+ "whyChooseUs": {
160
+ "title": "Why Choose Us?",
161
+ "features": [
162
+ {
163
+ "feature-name": "Premium Quality",
164
+ "feature-icon": "/icons/quality.svg"
165
+ }
166
+ ]
167
+ },
168
+ "lovedByMoms": {
169
+ "title": "Loved by Moms",
170
+ "description": "Top-rated styles loved by parents and kids alike."
171
+ },
172
+ "shopByAge": {
173
+ "title": "Shop By Age"
174
+ },
175
+ "videoStories": {
176
+ "title": "Watch Stories & Reviews",
177
+ "video-urls": []
178
+ },
179
+ "blogPosts": {
180
+ "title": "Blog posts",
181
+ "posts": [
182
+ {
183
+ "title": "Which Theme Dress Matches Her Vibe?",
184
+ "href": "/blog/theme-dress-vibe",
185
+ "category": "Theme Dress",
186
+ "date": "May 24, 2026"
187
+ }
188
+ ]
189
+ }
190
+ }
191
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,MAAiC,MAAM,kBAAkB,CAAA;AAShE,eAAO,MAAM,GAAG,QAId,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,eAAO,MAAM,cAAc,QAAa,OAAO,CAC7C;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,EAAE,CAc/B,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAClD;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,EAAE,CAc/B,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAa7D,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,MAAM,KACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,EAAE,CAYjC,CAAA;AAED,eAAO,MAAM,YAAY,GAAU,OAAO,MAAM,kBAQ/C,CAAA;AAED,eAAO,MAAM,eAAe,qBAK3B,CAAA;AAED,eAAO,MAAM,SAAS,mCAsBrB,CAAA;AAED,eAAO,MAAM,SAAS,GAAU,QAAQ,MAAM,kBAQ7C,CAAA;AAED,eAAO,MAAM,YAAY,qBAKxB,CAAA;AAED,eAAO,MAAM,cAAc,qBAK1B,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,QAAQ,MAAM,kBAQjD,CAAA;AAED,eAAO,MAAM,aAAa,mCAGzB,CAAA;AAED,eAAO,MAAM,gBAAgB,qBAK5B,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,QAAQ,MAAM,kBAQnD,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAK9B,CAAA"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Storefront dynamic-config admin schemas for `medusa-plugin-dynamic-config`.
3
+ * Import in the Medusa backend and pass to `options.configs`.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { storefrontDynamicConfig } from "medusa-storefront-data/dynamic-config-schema"
8
+ * import { promoAnnouncementsHomepageSectionField } from "medusa-storefront-data/dynamic-config-schema/sections/promoAnnouncements"
9
+ *
10
+ * export const dynamicConfig = {
11
+ * ...storefrontDynamicConfig,
12
+ * "homepage-sections": {
13
+ * ...storefrontDynamicConfig["homepage-sections"],
14
+ * structure: [
15
+ * promoAnnouncementsHomepageSectionField,
16
+ * // …other sections you enable
17
+ * ],
18
+ * },
19
+ * }
20
+ * ```
21
+ */
22
+ import type { HomepageConfig } from "../server/homepage-config.types";
23
+ import type { DynamicConfigStructureField } from "./shared";
24
+ export * from "./shared";
25
+ export * from "./site-configs";
26
+ export * from "./sections";
27
+ /** All homepage section fields for the `homepage-sections` admin tab. */
28
+ export declare const homepageSectionsStructure: DynamicConfigStructureField[];
29
+ export type StorefrontDynamicConfigEntry = {
30
+ id: string;
31
+ title: string;
32
+ active: boolean;
33
+ structure: DynamicConfigStructureField[];
34
+ };
35
+ /**
36
+ * Plugin `options.configs` — one admin tab per key (matches split storefront API keys).
37
+ */
38
+ export declare const storefrontDynamicConfig: {
39
+ readonly "site-branding": {
40
+ readonly id: "site-branding";
41
+ readonly title: "Site & branding";
42
+ readonly active: true;
43
+ readonly structure: DynamicConfigStructureField[];
44
+ };
45
+ readonly contact: {
46
+ readonly id: "contact";
47
+ readonly title: "Contact";
48
+ readonly active: true;
49
+ readonly structure: DynamicConfigStructureField[];
50
+ };
51
+ readonly "social-links": {
52
+ readonly id: "social-links";
53
+ readonly title: "Social links";
54
+ readonly active: true;
55
+ readonly structure: DynamicConfigStructureField[];
56
+ };
57
+ readonly faqs: {
58
+ readonly id: "faqs";
59
+ readonly title: "FAQs";
60
+ readonly active: true;
61
+ readonly structure: DynamicConfigStructureField[];
62
+ };
63
+ readonly "hero-banners": {
64
+ readonly id: "hero-banners";
65
+ readonly title: "Hero banners";
66
+ readonly active: true;
67
+ readonly structure: DynamicConfigStructureField[];
68
+ };
69
+ readonly "homepage-sections": {
70
+ readonly id: "homepage-sections";
71
+ readonly title: "Homepage sections";
72
+ readonly active: true;
73
+ readonly structure: DynamicConfigStructureField[];
74
+ };
75
+ readonly "promo-bar": {
76
+ readonly id: "promo-bar";
77
+ readonly title: "Promo bar";
78
+ readonly active: true;
79
+ readonly structure: DynamicConfigStructureField[];
80
+ };
81
+ };
82
+ export type StorefrontDynamicConfigShape = {
83
+ site?: {
84
+ logo?: string;
85
+ description?: string;
86
+ contact?: Record<string, unknown>;
87
+ social?: unknown[];
88
+ faqs?: unknown[];
89
+ };
90
+ banners?: Record<string, unknown>;
91
+ sections?: Record<string, unknown>;
92
+ promoBar?: Record<string, unknown>;
93
+ };
94
+ /**
95
+ * Merges split `GET /store/dynamic-config` keys into simplified shape
96
+ * consumed by `normalizeHomepageConfig` / `homepageConfigFromDynamicResponse`.
97
+ */
98
+ export declare function mergeStorefrontDynamicConfig(dynamicConfigResponse: Record<string, unknown>): StorefrontDynamicConfigShape;
99
+ /**
100
+ * Builds legacy `homepage-config` for existing storefront parsers.
101
+ */
102
+ export declare function homepageConfigFromSplitDynamicConfig(dynamicConfigResponse: Record<string, unknown>): HomepageConfig;
103
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dynamic-config-schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AASrE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AA2B3D,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAE1B,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,EAAE,2BAA2B,EAwBlE,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,2BAA2B,EAAE,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C6B,CAAA;AAEjE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;QAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KACjB,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,CAAA;AAaD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7C,4BAA4B,CA+B9B;AAED;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7C,cAAc,CAiChB"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Storefront dynamic-config admin schemas for `medusa-plugin-dynamic-config`.
3
+ * Import in the Medusa backend and pass to `options.configs`.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { storefrontDynamicConfig } from "medusa-storefront-data/dynamic-config-schema"
8
+ * import { promoAnnouncementsHomepageSectionField } from "medusa-storefront-data/dynamic-config-schema/sections/promoAnnouncements"
9
+ *
10
+ * export const dynamicConfig = {
11
+ * ...storefrontDynamicConfig,
12
+ * "homepage-sections": {
13
+ * ...storefrontDynamicConfig["homepage-sections"],
14
+ * structure: [
15
+ * promoAnnouncementsHomepageSectionField,
16
+ * // …other sections you enable
17
+ * ],
18
+ * },
19
+ * }
20
+ * ```
21
+ */
22
+ import { contactStructure, faqsStructure, heroBannersStructure, promoBarStructure, siteBrandingStructure, socialLinksStructure, } from "./site-configs";
23
+ import { aboutBrandHomepageSectionField, baptismHomepageSectionField, baptismPicksHomepageSectionField, blogPostsHomepageSectionField, brandMarqueeHomepageSectionField, brandPillarsHomepageSectionField, categoryPillsHomepageSectionField, celebrityTrustHomepageSectionField, featuresHomepageSectionField, heroHomepageSectionField, instagramPostsHomepageSectionField, lovedByMomsHomepageSectionField, luxeFavouritesHomepageSectionField, newArrivalsClassicHomepageSectionField, newArrivalsHomepageSectionField, promoAnnouncementsHomepageSectionField, promoCountdownHomepageSectionField, shopByAgeHomepageSectionField, shopByCategoryHomepageSectionField, testimonialsHomepageSectionField, themeDressesHomepageSectionField, videoStoriesHomepageSectionField, whyChooseUsHomepageSectionField, } from "./sections";
24
+ export * from "./shared";
25
+ export * from "./site-configs";
26
+ export * from "./sections";
27
+ /** All homepage section fields for the `homepage-sections` admin tab. */
28
+ export const homepageSectionsStructure = [
29
+ promoAnnouncementsHomepageSectionField,
30
+ heroHomepageSectionField,
31
+ categoryPillsHomepageSectionField,
32
+ newArrivalsHomepageSectionField,
33
+ newArrivalsClassicHomepageSectionField,
34
+ promoCountdownHomepageSectionField,
35
+ celebrityTrustHomepageSectionField,
36
+ luxeFavouritesHomepageSectionField,
37
+ shopByCategoryHomepageSectionField,
38
+ baptismHomepageSectionField,
39
+ baptismPicksHomepageSectionField,
40
+ themeDressesHomepageSectionField,
41
+ brandMarqueeHomepageSectionField,
42
+ aboutBrandHomepageSectionField,
43
+ testimonialsHomepageSectionField,
44
+ brandPillarsHomepageSectionField,
45
+ instagramPostsHomepageSectionField,
46
+ featuresHomepageSectionField,
47
+ shopByAgeHomepageSectionField,
48
+ whyChooseUsHomepageSectionField,
49
+ lovedByMomsHomepageSectionField,
50
+ videoStoriesHomepageSectionField,
51
+ blogPostsHomepageSectionField,
52
+ ];
53
+ /**
54
+ * Plugin `options.configs` — one admin tab per key (matches split storefront API keys).
55
+ */
56
+ export const storefrontDynamicConfig = {
57
+ "site-branding": {
58
+ id: "site-branding",
59
+ title: "Site & branding",
60
+ active: true,
61
+ structure: siteBrandingStructure,
62
+ },
63
+ contact: {
64
+ id: "contact",
65
+ title: "Contact",
66
+ active: true,
67
+ structure: contactStructure,
68
+ },
69
+ "social-links": {
70
+ id: "social-links",
71
+ title: "Social links",
72
+ active: true,
73
+ structure: socialLinksStructure,
74
+ },
75
+ faqs: {
76
+ id: "faqs",
77
+ title: "FAQs",
78
+ active: true,
79
+ structure: faqsStructure,
80
+ },
81
+ "hero-banners": {
82
+ id: "hero-banners",
83
+ title: "Hero banners",
84
+ active: true,
85
+ structure: heroBannersStructure,
86
+ },
87
+ "homepage-sections": {
88
+ id: "homepage-sections",
89
+ title: "Homepage sections",
90
+ active: true,
91
+ structure: homepageSectionsStructure,
92
+ },
93
+ "promo-bar": {
94
+ id: "promo-bar",
95
+ title: "Promo bar",
96
+ active: true,
97
+ structure: promoBarStructure,
98
+ },
99
+ };
100
+ function asRecord(value) {
101
+ if (value && typeof value === "object" && !Array.isArray(value)) {
102
+ return value;
103
+ }
104
+ return undefined;
105
+ }
106
+ function asArray(value) {
107
+ return Array.isArray(value) ? value : undefined;
108
+ }
109
+ /**
110
+ * Merges split `GET /store/dynamic-config` keys into simplified shape
111
+ * consumed by `normalizeHomepageConfig` / `homepageConfigFromDynamicResponse`.
112
+ */
113
+ export function mergeStorefrontDynamicConfig(dynamicConfigResponse) {
114
+ const legacy = asRecord(dynamicConfigResponse["homepage-config"]);
115
+ if (legacy) {
116
+ return legacy;
117
+ }
118
+ const branding = asRecord(dynamicConfigResponse["site-branding"]);
119
+ const contact = asRecord(dynamicConfigResponse["contact"]);
120
+ const socialRoot = asRecord(dynamicConfigResponse["social-links"]);
121
+ const faqsRoot = asRecord(dynamicConfigResponse["faqs"]);
122
+ const promoBar = asRecord(dynamicConfigResponse["promo-bar"]);
123
+ const social = asArray(socialRoot?.links) ??
124
+ asArray(dynamicConfigResponse["social-links"]) ??
125
+ [];
126
+ const faqs = asArray(faqsRoot?.items) ?? asArray(dynamicConfigResponse["faqs"]) ?? [];
127
+ return {
128
+ site: {
129
+ ...branding,
130
+ contact,
131
+ social,
132
+ faqs,
133
+ },
134
+ banners: asRecord(dynamicConfigResponse["hero-banners"]),
135
+ sections: asRecord(dynamicConfigResponse["homepage-sections"]),
136
+ promoBar,
137
+ };
138
+ }
139
+ /**
140
+ * Builds legacy `homepage-config` for existing storefront parsers.
141
+ */
142
+ export function homepageConfigFromSplitDynamicConfig(dynamicConfigResponse) {
143
+ const merged = mergeStorefrontDynamicConfig(dynamicConfigResponse);
144
+ const site = asRecord(merged.site);
145
+ const banners = asRecord(merged.banners);
146
+ const sections = asRecord(merged.sections);
147
+ const promoBar = asRecord(merged.promoBar);
148
+ const config = {
149
+ logo: site?.logo,
150
+ "website-description": site?.description,
151
+ sections: sections,
152
+ };
153
+ if (banners?.desktop) {
154
+ config["homepage-banner-array"] = banners.desktop;
155
+ }
156
+ if (banners?.mobile) {
157
+ config["app-banner-array"] = banners.mobile;
158
+ }
159
+ if (site?.contact) {
160
+ config["contact-us"] = site.contact;
161
+ }
162
+ if (Array.isArray(site?.social) && site.social.length) {
163
+ config["social-links"] = site.social;
164
+ }
165
+ if (Array.isArray(site?.faqs) && site.faqs.length) {
166
+ config["faq-array"] = site.faqs;
167
+ }
168
+ if (promoBar) {
169
+ config["promo-bar"] = promoBar;
170
+ }
171
+ return config;
172
+ }
@@ -0,0 +1,5 @@
1
+ import { type DynamicConfigStructureField } from "../shared";
2
+ export declare const aboutBrandSectionId: "aboutBrand";
3
+ export declare const aboutBrandDynamicConfigStructure: DynamicConfigStructureField[];
4
+ export declare const aboutBrandHomepageSectionField: DynamicConfigStructureField;
5
+ //# sourceMappingURL=about-brand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"about-brand.d.ts","sourceRoot":"","sources":["../../../../src/dynamic-config-schema/sections/about-brand.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,WAAW,CAAA;AAElB,eAAO,MAAM,mBAAmB,EAAG,YAAqB,CAAA;AAExD,eAAO,MAAM,gCAAgC,EAAE,2BAA2B,EAsBvE,CAAA;AAEH,eAAO,MAAM,8BAA8B,EAAE,2BAK5C,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { long, short, } from "../shared";
2
+ export const aboutBrandSectionId = "aboutBrand";
3
+ export const aboutBrandDynamicConfigStructure = [
4
+ short("eyebrow", "Eyebrow"),
5
+ short("title", "Title"),
6
+ long("description", "Description"),
7
+ short("readMoreHref", "Read more link"),
8
+ {
9
+ id: "stats",
10
+ title: "Stats",
11
+ type: "array",
12
+ children: [
13
+ {
14
+ id: "stat",
15
+ title: "Stat",
16
+ type: "object",
17
+ children: [
18
+ short("value", "Value", true),
19
+ short("label", "Label", true),
20
+ ],
21
+ },
22
+ ],
23
+ },
24
+ ];
25
+ export const aboutBrandHomepageSectionField = {
26
+ id: aboutBrandSectionId,
27
+ title: "About brand",
28
+ type: "object",
29
+ children: aboutBrandDynamicConfigStructure,
30
+ };
@@ -0,0 +1,5 @@
1
+ import { type DynamicConfigStructureField } from "../shared";
2
+ export declare const baptismPicksSectionId: "baptismPicks";
3
+ export declare const baptismPicksDynamicConfigStructure: DynamicConfigStructureField[];
4
+ export declare const baptismPicksHomepageSectionField: DynamicConfigStructureField;
5
+ //# sourceMappingURL=baptism-picks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baptism-picks.d.ts","sourceRoot":"","sources":["../../../../src/dynamic-config-schema/sections/baptism-picks.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,WAAW,CAAA;AAElB,eAAO,MAAM,qBAAqB,EAAG,cAAuB,CAAA;AAE5D,eAAO,MAAM,kCAAkC,EAAE,2BAA2B,EASzE,CAAA;AAEH,eAAO,MAAM,gCAAgC,EAAE,2BAK9C,CAAA"}