medusa-storefront-data 2.5.1 → 2.5.3

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 (293) hide show
  1. package/HOMEPAGE_CONFIG.md +83 -10
  2. package/package.json +160 -115
  3. package/src/server/cart.ts +1 -1
  4. package/src/server/dynamic-config.ts +132 -12
  5. package/src/server/help-faq-section-defaults.json +92 -0
  6. package/src/server/help-sections/help-faq.ts +25 -0
  7. package/src/server/help-sections/index.ts +8 -0
  8. package/src/server/homepage-config.types.ts +24 -0
  9. package/src/server/homepage-section-defaults.ts +3 -0
  10. package/src/server/normalize-homepage-config.ts +39 -0
  11. package/dist/segment-data/default-page-input.json +0 -191
  12. package/dist/src/config.d.ts +0 -3
  13. package/dist/src/config.d.ts.map +0 -1
  14. package/dist/src/config.js +0 -31
  15. package/dist/src/cookies.d.ts +0 -23
  16. package/dist/src/cookies.d.ts.map +0 -1
  17. package/dist/src/cookies.js +0 -140
  18. package/dist/src/dynamic-config-schema/index.d.ts +0 -103
  19. package/dist/src/dynamic-config-schema/index.d.ts.map +0 -1
  20. package/dist/src/dynamic-config-schema/index.js +0 -172
  21. package/dist/src/dynamic-config-schema/sections/about-brand.d.ts +0 -5
  22. package/dist/src/dynamic-config-schema/sections/about-brand.d.ts.map +0 -1
  23. package/dist/src/dynamic-config-schema/sections/about-brand.js +0 -30
  24. package/dist/src/dynamic-config-schema/sections/baptism-picks.d.ts +0 -5
  25. package/dist/src/dynamic-config-schema/sections/baptism-picks.d.ts.map +0 -1
  26. package/dist/src/dynamic-config-schema/sections/baptism-picks.js +0 -17
  27. package/dist/src/dynamic-config-schema/sections/baptism.d.ts +0 -5
  28. package/dist/src/dynamic-config-schema/sections/baptism.d.ts.map +0 -1
  29. package/dist/src/dynamic-config-schema/sections/baptism.js +0 -4
  30. package/dist/src/dynamic-config-schema/sections/blog-posts.d.ts +0 -5
  31. package/dist/src/dynamic-config-schema/sections/blog-posts.d.ts.map +0 -1
  32. package/dist/src/dynamic-config-schema/sections/blog-posts.js +0 -31
  33. package/dist/src/dynamic-config-schema/sections/brand-marquee.d.ts +0 -5
  34. package/dist/src/dynamic-config-schema/sections/brand-marquee.d.ts.map +0 -1
  35. package/dist/src/dynamic-config-schema/sections/brand-marquee.js +0 -9
  36. package/dist/src/dynamic-config-schema/sections/brand-pillars.d.ts +0 -5
  37. package/dist/src/dynamic-config-schema/sections/brand-pillars.d.ts.map +0 -1
  38. package/dist/src/dynamic-config-schema/sections/brand-pillars.js +0 -29
  39. package/dist/src/dynamic-config-schema/sections/category-pills.d.ts +0 -5
  40. package/dist/src/dynamic-config-schema/sections/category-pills.d.ts.map +0 -1
  41. package/dist/src/dynamic-config-schema/sections/category-pills.js +0 -4
  42. package/dist/src/dynamic-config-schema/sections/celebrity-trust.d.ts +0 -5
  43. package/dist/src/dynamic-config-schema/sections/celebrity-trust.d.ts.map +0 -1
  44. package/dist/src/dynamic-config-schema/sections/celebrity-trust.js +0 -4
  45. package/dist/src/dynamic-config-schema/sections/features.d.ts +0 -5
  46. package/dist/src/dynamic-config-schema/sections/features.d.ts.map +0 -1
  47. package/dist/src/dynamic-config-schema/sections/features.js +0 -12
  48. package/dist/src/dynamic-config-schema/sections/hero.d.ts +0 -6
  49. package/dist/src/dynamic-config-schema/sections/hero.d.ts.map +0 -1
  50. package/dist/src/dynamic-config-schema/sections/hero.js +0 -9
  51. package/dist/src/dynamic-config-schema/sections/index.d.ts +0 -24
  52. package/dist/src/dynamic-config-schema/sections/index.d.ts.map +0 -1
  53. package/dist/src/dynamic-config-schema/sections/index.js +0 -23
  54. package/dist/src/dynamic-config-schema/sections/instagram-posts.d.ts +0 -5
  55. package/dist/src/dynamic-config-schema/sections/instagram-posts.d.ts.map +0 -1
  56. package/dist/src/dynamic-config-schema/sections/instagram-posts.js +0 -30
  57. package/dist/src/dynamic-config-schema/sections/loved-by-moms.d.ts +0 -5
  58. package/dist/src/dynamic-config-schema/sections/loved-by-moms.d.ts.map +0 -1
  59. package/dist/src/dynamic-config-schema/sections/loved-by-moms.js +0 -4
  60. package/dist/src/dynamic-config-schema/sections/luxe-favourites.d.ts +0 -5
  61. package/dist/src/dynamic-config-schema/sections/luxe-favourites.d.ts.map +0 -1
  62. package/dist/src/dynamic-config-schema/sections/luxe-favourites.js +0 -4
  63. package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.d.ts +0 -5
  64. package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.d.ts.map +0 -1
  65. package/dist/src/dynamic-config-schema/sections/new-arrivals-classic.js +0 -12
  66. package/dist/src/dynamic-config-schema/sections/new-arrivals.d.ts +0 -5
  67. package/dist/src/dynamic-config-schema/sections/new-arrivals.d.ts.map +0 -1
  68. package/dist/src/dynamic-config-schema/sections/new-arrivals.js +0 -12
  69. package/dist/src/dynamic-config-schema/sections/promo-announcements.d.ts +0 -5
  70. package/dist/src/dynamic-config-schema/sections/promo-announcements.d.ts.map +0 -1
  71. package/dist/src/dynamic-config-schema/sections/promo-announcements.js +0 -16
  72. package/dist/src/dynamic-config-schema/sections/promo-countdown.d.ts +0 -5
  73. package/dist/src/dynamic-config-schema/sections/promo-countdown.d.ts.map +0 -1
  74. package/dist/src/dynamic-config-schema/sections/promo-countdown.js +0 -16
  75. package/dist/src/dynamic-config-schema/sections/shop-by-age.d.ts +0 -5
  76. package/dist/src/dynamic-config-schema/sections/shop-by-age.d.ts.map +0 -1
  77. package/dist/src/dynamic-config-schema/sections/shop-by-age.js +0 -4
  78. package/dist/src/dynamic-config-schema/sections/shop-by-category.d.ts +0 -5
  79. package/dist/src/dynamic-config-schema/sections/shop-by-category.d.ts.map +0 -1
  80. package/dist/src/dynamic-config-schema/sections/shop-by-category.js +0 -4
  81. package/dist/src/dynamic-config-schema/sections/testimonials.d.ts +0 -5
  82. package/dist/src/dynamic-config-schema/sections/testimonials.d.ts.map +0 -1
  83. package/dist/src/dynamic-config-schema/sections/testimonials.js +0 -9
  84. package/dist/src/dynamic-config-schema/sections/theme-dresses.d.ts +0 -5
  85. package/dist/src/dynamic-config-schema/sections/theme-dresses.d.ts.map +0 -1
  86. package/dist/src/dynamic-config-schema/sections/theme-dresses.js +0 -4
  87. package/dist/src/dynamic-config-schema/sections/video-stories.d.ts +0 -5
  88. package/dist/src/dynamic-config-schema/sections/video-stories.d.ts.map +0 -1
  89. package/dist/src/dynamic-config-schema/sections/video-stories.js +0 -24
  90. package/dist/src/dynamic-config-schema/sections/why-choose-us.d.ts +0 -5
  91. package/dist/src/dynamic-config-schema/sections/why-choose-us.d.ts.map +0 -1
  92. package/dist/src/dynamic-config-schema/sections/why-choose-us.js +0 -9
  93. package/dist/src/dynamic-config-schema/shared.d.ts +0 -35
  94. package/dist/src/dynamic-config-schema/shared.d.ts.map +0 -1
  95. package/dist/src/dynamic-config-schema/shared.js +0 -99
  96. package/dist/src/dynamic-config-schema/site-configs.d.ts +0 -11
  97. package/dist/src/dynamic-config-schema/site-configs.d.ts.map +0 -1
  98. package/dist/src/dynamic-config-schema/site-configs.js +0 -70
  99. package/dist/src/edge.d.ts +0 -3
  100. package/dist/src/edge.d.ts.map +0 -1
  101. package/dist/src/edge.js +0 -1
  102. package/dist/src/middleware.d.ts +0 -3
  103. package/dist/src/middleware.d.ts.map +0 -1
  104. package/dist/src/middleware.js +0 -1
  105. package/dist/src/server/brand-pillars-from-categories.d.ts +0 -8
  106. package/dist/src/server/brand-pillars-from-categories.d.ts.map +0 -1
  107. package/dist/src/server/brand-pillars-from-categories.js +0 -92
  108. package/dist/src/server/cart.d.ts +0 -96
  109. package/dist/src/server/cart.d.ts.map +0 -1
  110. package/dist/src/server/cart.js +0 -797
  111. package/dist/src/server/categories.d.ts +0 -4
  112. package/dist/src/server/categories.d.ts.map +0 -1
  113. package/dist/src/server/categories.js +0 -34
  114. package/dist/src/server/collections.d.ts +0 -8
  115. package/dist/src/server/collections.d.ts.map +0 -1
  116. package/dist/src/server/collections.js +0 -39
  117. package/dist/src/server/config-merge.d.ts +0 -3
  118. package/dist/src/server/config-merge.d.ts.map +0 -1
  119. package/dist/src/server/config-merge.js +0 -31
  120. package/dist/src/server/contact.d.ts +0 -34
  121. package/dist/src/server/contact.d.ts.map +0 -1
  122. package/dist/src/server/contact.js +0 -57
  123. package/dist/src/server/customer-registration.d.ts +0 -142
  124. package/dist/src/server/customer-registration.d.ts.map +0 -1
  125. package/dist/src/server/customer-registration.js +0 -295
  126. package/dist/src/server/customer.d.ts +0 -48
  127. package/dist/src/server/customer.d.ts.map +0 -1
  128. package/dist/src/server/customer.js +0 -413
  129. package/dist/src/server/dynamic-config-api.d.ts +0 -11
  130. package/dist/src/server/dynamic-config-api.d.ts.map +0 -1
  131. package/dist/src/server/dynamic-config-api.js +0 -46
  132. package/dist/src/server/dynamic-config.d.ts +0 -157
  133. package/dist/src/server/dynamic-config.d.ts.map +0 -1
  134. package/dist/src/server/dynamic-config.js +0 -573
  135. package/dist/src/server/fulfillment.d.ts +0 -5
  136. package/dist/src/server/fulfillment.d.ts.map +0 -1
  137. package/dist/src/server/fulfillment.js +0 -47
  138. package/dist/src/server/guest.d.ts +0 -81
  139. package/dist/src/server/guest.d.ts.map +0 -1
  140. package/dist/src/server/guest.js +0 -183
  141. package/dist/src/server/home-sections/about-brand.d.ts +0 -9
  142. package/dist/src/server/home-sections/about-brand.d.ts.map +0 -1
  143. package/dist/src/server/home-sections/about-brand.js +0 -9
  144. package/dist/src/server/home-sections/baptism-picks.d.ts +0 -10
  145. package/dist/src/server/home-sections/baptism-picks.d.ts.map +0 -1
  146. package/dist/src/server/home-sections/baptism-picks.js +0 -27
  147. package/dist/src/server/home-sections/baptism.d.ts +0 -13
  148. package/dist/src/server/home-sections/baptism.d.ts.map +0 -1
  149. package/dist/src/server/home-sections/baptism.js +0 -43
  150. package/dist/src/server/home-sections/blog-posts.d.ts +0 -9
  151. package/dist/src/server/home-sections/blog-posts.d.ts.map +0 -1
  152. package/dist/src/server/home-sections/blog-posts.js +0 -9
  153. package/dist/src/server/home-sections/brand-marquee.d.ts +0 -8
  154. package/dist/src/server/home-sections/brand-marquee.d.ts.map +0 -1
  155. package/dist/src/server/home-sections/brand-marquee.js +0 -7
  156. package/dist/src/server/home-sections/brand-pillars.d.ts +0 -9
  157. package/dist/src/server/home-sections/brand-pillars.d.ts.map +0 -1
  158. package/dist/src/server/home-sections/brand-pillars.js +0 -9
  159. package/dist/src/server/home-sections/category-pills.d.ts +0 -9
  160. package/dist/src/server/home-sections/category-pills.d.ts.map +0 -1
  161. package/dist/src/server/home-sections/category-pills.js +0 -19
  162. package/dist/src/server/home-sections/celebrity-trust.d.ts +0 -12
  163. package/dist/src/server/home-sections/celebrity-trust.d.ts.map +0 -1
  164. package/dist/src/server/home-sections/celebrity-trust.js +0 -27
  165. package/dist/src/server/home-sections/features.d.ts +0 -9
  166. package/dist/src/server/home-sections/features.d.ts.map +0 -1
  167. package/dist/src/server/home-sections/features.js +0 -9
  168. package/dist/src/server/home-sections/hero.d.ts +0 -9
  169. package/dist/src/server/home-sections/hero.d.ts.map +0 -1
  170. package/dist/src/server/home-sections/hero.js +0 -9
  171. package/dist/src/server/home-sections/instagram-posts.d.ts +0 -9
  172. package/dist/src/server/home-sections/instagram-posts.d.ts.map +0 -1
  173. package/dist/src/server/home-sections/instagram-posts.js +0 -9
  174. package/dist/src/server/home-sections/loved-by-moms.d.ts +0 -12
  175. package/dist/src/server/home-sections/loved-by-moms.d.ts.map +0 -1
  176. package/dist/src/server/home-sections/loved-by-moms.js +0 -20
  177. package/dist/src/server/home-sections/luxe-favourites.d.ts +0 -11
  178. package/dist/src/server/home-sections/luxe-favourites.d.ts.map +0 -1
  179. package/dist/src/server/home-sections/luxe-favourites.js +0 -19
  180. package/dist/src/server/home-sections/new-arrivals-classic.d.ts +0 -8
  181. package/dist/src/server/home-sections/new-arrivals-classic.d.ts.map +0 -1
  182. package/dist/src/server/home-sections/new-arrivals-classic.js +0 -10
  183. package/dist/src/server/home-sections/new-arrivals.d.ts +0 -12
  184. package/dist/src/server/home-sections/new-arrivals.d.ts.map +0 -1
  185. package/dist/src/server/home-sections/new-arrivals.js +0 -28
  186. package/dist/src/server/home-sections/promo-announcements.d.ts +0 -7
  187. package/dist/src/server/home-sections/promo-announcements.d.ts.map +0 -1
  188. package/dist/src/server/home-sections/promo-announcements.js +0 -7
  189. package/dist/src/server/home-sections/promo-countdown.d.ts +0 -6
  190. package/dist/src/server/home-sections/promo-countdown.d.ts.map +0 -1
  191. package/dist/src/server/home-sections/promo-countdown.js +0 -5
  192. package/dist/src/server/home-sections/shared.d.ts +0 -10
  193. package/dist/src/server/home-sections/shared.d.ts.map +0 -1
  194. package/dist/src/server/home-sections/shared.js +0 -29
  195. package/dist/src/server/home-sections/shop-by-age.d.ts +0 -9
  196. package/dist/src/server/home-sections/shop-by-age.d.ts.map +0 -1
  197. package/dist/src/server/home-sections/shop-by-age.js +0 -17
  198. package/dist/src/server/home-sections/shop-by-category.d.ts +0 -10
  199. package/dist/src/server/home-sections/shop-by-category.d.ts.map +0 -1
  200. package/dist/src/server/home-sections/shop-by-category.js +0 -17
  201. package/dist/src/server/home-sections/testimonials.d.ts +0 -9
  202. package/dist/src/server/home-sections/testimonials.d.ts.map +0 -1
  203. package/dist/src/server/home-sections/testimonials.js +0 -9
  204. package/dist/src/server/home-sections/theme-dresses.d.ts +0 -12
  205. package/dist/src/server/home-sections/theme-dresses.d.ts.map +0 -1
  206. package/dist/src/server/home-sections/theme-dresses.js +0 -27
  207. package/dist/src/server/home-sections/video-stories.d.ts +0 -9
  208. package/dist/src/server/home-sections/video-stories.d.ts.map +0 -1
  209. package/dist/src/server/home-sections/video-stories.js +0 -9
  210. package/dist/src/server/home-sections/why-choose-us.d.ts +0 -9
  211. package/dist/src/server/home-sections/why-choose-us.d.ts.map +0 -1
  212. package/dist/src/server/home-sections/why-choose-us.js +0 -9
  213. package/dist/src/server/home.d.ts +0 -51
  214. package/dist/src/server/home.d.ts.map +0 -1
  215. package/dist/src/server/home.js +0 -1
  216. package/dist/src/server/homepage-config.types.d.ts +0 -274
  217. package/dist/src/server/homepage-config.types.d.ts.map +0 -1
  218. package/dist/src/server/homepage-config.types.js +0 -33
  219. package/dist/src/server/homepage-section-defaults.d.ts +0 -188
  220. package/dist/src/server/homepage-section-defaults.d.ts.map +0 -1
  221. package/dist/src/server/homepage-section-defaults.js +0 -188
  222. package/dist/src/server/index.d.ts +0 -25
  223. package/dist/src/server/index.d.ts.map +0 -1
  224. package/dist/src/server/index.js +0 -24
  225. package/dist/src/server/locale-actions.d.ts +0 -14
  226. package/dist/src/server/locale-actions.d.ts.map +0 -1
  227. package/dist/src/server/locale-actions.js +0 -58
  228. package/dist/src/server/locales.d.ts +0 -8
  229. package/dist/src/server/locales.d.ts.map +0 -1
  230. package/dist/src/server/locales.js +0 -12
  231. package/dist/src/server/normalize-homepage-config.d.ts +0 -7
  232. package/dist/src/server/normalize-homepage-config.d.ts.map +0 -1
  233. package/dist/src/server/normalize-homepage-config.js +0 -213
  234. package/dist/src/server/notifications.d.ts +0 -2
  235. package/dist/src/server/notifications.d.ts.map +0 -1
  236. package/dist/src/server/notifications.js +0 -20
  237. package/dist/src/server/onboarding.d.ts +0 -2
  238. package/dist/src/server/onboarding.d.ts.map +0 -1
  239. package/dist/src/server/onboarding.js +0 -8
  240. package/dist/src/server/orders.d.ts +0 -63
  241. package/dist/src/server/orders.d.ts.map +0 -1
  242. package/dist/src/server/orders.js +0 -230
  243. package/dist/src/server/page-input.d.ts +0 -19
  244. package/dist/src/server/page-input.d.ts.map +0 -1
  245. package/dist/src/server/page-input.js +0 -42
  246. package/dist/src/server/payment-details.d.ts +0 -5
  247. package/dist/src/server/payment-details.d.ts.map +0 -1
  248. package/dist/src/server/payment-details.js +0 -28
  249. package/dist/src/server/payment.d.ts +0 -3
  250. package/dist/src/server/payment.d.ts.map +0 -1
  251. package/dist/src/server/payment.js +0 -13
  252. package/dist/src/server/pincode.d.ts +0 -7
  253. package/dist/src/server/pincode.d.ts.map +0 -1
  254. package/dist/src/server/pincode.js +0 -30
  255. package/dist/src/server/products.d.ts +0 -54
  256. package/dist/src/server/products.d.ts.map +0 -1
  257. package/dist/src/server/products.js +0 -154
  258. package/dist/src/server/regions.d.ts +0 -5
  259. package/dist/src/server/regions.d.ts.map +0 -1
  260. package/dist/src/server/regions.js +0 -57
  261. package/dist/src/server/resolve-home-segment-data.d.ts +0 -25
  262. package/dist/src/server/resolve-home-segment-data.d.ts.map +0 -1
  263. package/dist/src/server/resolve-home-segment-data.js +0 -20
  264. package/dist/src/server/returns.d.ts +0 -29
  265. package/dist/src/server/returns.d.ts.map +0 -1
  266. package/dist/src/server/returns.js +0 -132
  267. package/dist/src/server/shoppable-looks.d.ts +0 -17
  268. package/dist/src/server/shoppable-looks.d.ts.map +0 -1
  269. package/dist/src/server/shoppable-looks.js +0 -136
  270. package/dist/src/server/swaps.d.ts +0 -15
  271. package/dist/src/server/swaps.d.ts.map +0 -1
  272. package/dist/src/server/swaps.js +0 -89
  273. package/dist/src/server/variants.d.ts +0 -3
  274. package/dist/src/server/variants.d.ts.map +0 -1
  275. package/dist/src/server/variants.js +0 -15
  276. package/dist/src/server/wishlist.d.ts +0 -11
  277. package/dist/src/server/wishlist.d.ts.map +0 -1
  278. package/dist/src/server/wishlist.js +0 -49
  279. package/dist/src/util/get-locale-header.d.ts +0 -4
  280. package/dist/src/util/get-locale-header.d.ts.map +0 -1
  281. package/dist/src/util/get-locale-header.js +0 -7
  282. package/dist/src/util/medusa-error.d.ts +0 -2
  283. package/dist/src/util/medusa-error.d.ts.map +0 -1
  284. package/dist/src/util/medusa-error.js +0 -18
  285. package/dist/src/util/revalidate-cart.d.ts +0 -2
  286. package/dist/src/util/revalidate-cart.d.ts.map +0 -1
  287. package/dist/src/util/revalidate-cart.js +0 -8
  288. package/dist/src/util/sort-products.d.ts +0 -3
  289. package/dist/src/util/sort-products.d.ts.map +0 -1
  290. package/dist/src/util/sort-products.js +0 -1
  291. package/dist/src/util/store-client.d.ts +0 -11
  292. package/dist/src/util/store-client.d.ts.map +0 -1
  293. package/dist/src/util/store-client.js +0 -75
@@ -0,0 +1,92 @@
1
+ {
2
+ "eyebrow": "Knowledge Base",
3
+ "title": "Frequently Asked",
4
+ "titleHighlight": "Questions",
5
+ "subtitle": "Browse through our most common questions — organized by topic for easy navigation.",
6
+ "categories": [
7
+ {
8
+ "category": "Order & Delivery",
9
+ "icon": "🚚",
10
+ "color": "from-blue-500 to-cyan-400",
11
+ "items": [
12
+ {
13
+ "question": "When will I receive my order?",
14
+ "answer": "Orders are typically processed within 1-2 business days. Delivery takes 3-5 business days depending on your location. Express delivery options may be available at checkout."
15
+ },
16
+ {
17
+ "question": "How can I track my order?",
18
+ "answer": "Once your order ships, you will receive a tracking link via email and SMS. You can also track your order anytime from your account dashboard under 'My Orders'."
19
+ },
20
+ {
21
+ "question": "Can I cancel or change my order?",
22
+ "answer": "You can cancel or change your order within 24 hours of placing it. Please contact our support team immediately or use the cancel option in your account. After 24 hours, the order may already be in processing."
23
+ },
24
+ {
25
+ "question": "Do you offer free shipping?",
26
+ "answer": "Yes! We offer free shipping on all orders above ₹999. For orders below this amount, a nominal shipping fee applies based on your delivery location and the chosen shipping method."
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "category": "Returns & Exchanges",
32
+ "icon": "📦",
33
+ "color": "from-emerald-500 to-teal-400",
34
+ "items": [
35
+ {
36
+ "question": "What is your return policy?",
37
+ "answer": "We offer a 7-day return policy for unused, unwashed items in their original packaging with tags attached. Items must be in their original condition to qualify for a return."
38
+ },
39
+ {
40
+ "question": "How do I initiate a return?",
41
+ "answer": "Go to your account, click on the specific order, and select 'Return Items'. Follow the instructions to generate a pickup request. Our team will schedule a pickup within 2 business days."
42
+ },
43
+ {
44
+ "question": "Do you offer exchanges?",
45
+ "answer": "Yes, you can request an exchange for a different size or color within 7 days of delivery, subject to availability. Exchange items must be in original condition with all tags intact."
46
+ },
47
+ {
48
+ "question": "When will I receive my exchanged item?",
49
+ "answer": "Once we receive and verify your returned item, the exchange will be dispatched within 2 business days. You'll receive a tracking link as soon as it ships."
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "category": "Payment & Refunds",
55
+ "icon": "💳",
56
+ "color": "from-violet-500 to-purple-400",
57
+ "items": [
58
+ {
59
+ "question": "When will I receive my refund?",
60
+ "answer": "Refunds are processed within 5-7 business days after we receive and inspect your returned items. The amount will be credited to your original payment method."
61
+ },
62
+ {
63
+ "question": "What payment methods do you accept?",
64
+ "answer": "We accept all major credit/debit cards, UPI, Net Banking, Wallets (Paytm, PhonePe, etc.), and Cash on Delivery (COD) for most PIN codes across India."
65
+ },
66
+ {
67
+ "question": "Is my payment information secure?",
68
+ "answer": "Absolutely! We use industry-standard SSL encryption and our payment gateway (Razorpay) is PCI-DSS compliant. We never store your card details on our servers."
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "category": "Product Inquiry",
74
+ "icon": "👗",
75
+ "color": "from-pink-500 to-rose-400",
76
+ "items": [
77
+ {
78
+ "question": "How do I find the right size for my child?",
79
+ "answer": "Each product page includes a detailed size chart with measurements in both cm and inches. We recommend measuring your child and comparing with our chart for the best fit. When in doubt, size up!"
80
+ },
81
+ {
82
+ "question": "Are products safe for kids?",
83
+ "answer": "Yes! All our products are certified child-safe. We use non-toxic, hypoallergenic dyes and materials that meet Indian safety standards for children's clothing. Safety is our top priority."
84
+ },
85
+ {
86
+ "question": "How should I care for the clothing?",
87
+ "answer": "Machine wash cold with like colors. Do not bleach. Tumble dry low or hang dry. Iron on low heat if needed. Detailed care instructions are printed on the garment's inner label."
88
+ }
89
+ ]
90
+ }
91
+ ]
92
+ }
@@ -0,0 +1,25 @@
1
+ import "server-only"
2
+
3
+ import {
4
+ getHelpFaqFromPageInput,
5
+ type HelpFaqCategory,
6
+ type HelpFaqConfig,
7
+ type HelpFaqSectionCopy,
8
+ } from "../dynamic-config"
9
+ import type { HomepageConfig } from "../homepage-config.types"
10
+
11
+ export type { HelpFaqCategory, HelpFaqConfig, HelpFaqSectionCopy }
12
+
13
+ export type HelpFaqSectionData = HelpFaqConfig
14
+
15
+ export type HelpFaqSectionLoaderOptions = {
16
+ pageInput?: HomepageConfig | null
17
+ }
18
+
19
+ /** Help page FAQ block — `sections.helpFaq` + legacy `faq-array`. */
20
+ export async function loadHelpFaqSectionData(
21
+ _countryCode: string,
22
+ options?: HelpFaqSectionLoaderOptions
23
+ ): Promise<HelpFaqSectionData> {
24
+ return getHelpFaqFromPageInput(options?.pageInput ?? null)
25
+ }
@@ -0,0 +1,8 @@
1
+ export {
2
+ loadHelpFaqSectionData,
3
+ type HelpFaqCategory,
4
+ type HelpFaqConfig,
5
+ type HelpFaqSectionCopy,
6
+ type HelpFaqSectionData,
7
+ type HelpFaqSectionLoaderOptions,
8
+ } from "./help-faq"
@@ -138,6 +138,28 @@ export type HomepageBlogPostsSection = HomepageSectionCopyFields & {
138
138
  "blog-posts"?: HomepageBlogPost[]
139
139
  }
140
140
 
141
+ export type HomepageHelpFaqItem = {
142
+ question?: string
143
+ answer?: string
144
+ q?: string
145
+ a?: string
146
+ faq?: HomepageHelpFaqItem
147
+ }
148
+
149
+ export type HomepageHelpFaqCategory = {
150
+ category?: string
151
+ name?: string
152
+ icon?: string
153
+ color?: string
154
+ items?: HomepageHelpFaqItem[]
155
+ faqs?: HomepageHelpFaqItem[]
156
+ }
157
+
158
+ export type HomepageHelpFaqSection = HomepageSectionCopyFields & {
159
+ titleHighlight?: string
160
+ categories?: HomepageHelpFaqCategory[]
161
+ }
162
+
141
163
  export type HomepageInstagramPost = {
142
164
  id?: string
143
165
  image?: string
@@ -203,6 +225,7 @@ export type HomepageSectionsConfig = {
203
225
  lovedByMoms?: HomepageSectionCopyFields
204
226
  videoStories?: HomepageVideoStoriesSection
205
227
  blogPosts?: HomepageBlogPostsSection
228
+ helpFaq?: HomepageHelpFaqSection
206
229
  /** Allow kebab-case keys from legacy CMS */
207
230
  [sectionKey: string]: HomepageSectionCopyFields | undefined
208
231
  }
@@ -330,6 +353,7 @@ export const HOMEPAGE_SECTION_IDS = [
330
353
  "lovedByMoms",
331
354
  "videoStories",
332
355
  "blogPosts",
356
+ "helpFaq",
333
357
  ] as const
334
358
 
335
359
  export type HomepageSectionId = (typeof HOMEPAGE_SECTION_IDS)[number]
@@ -1,3 +1,5 @@
1
+ import helpFaqDefaults from "./help-faq-section-defaults.json"
2
+
1
3
  /**
2
4
  * Default `homepage-config.sections` blocks.
3
5
  * Dynamic config overrides any field; unset fields keep these defaults.
@@ -161,6 +163,7 @@ export const DEFAULT_HOMEPAGE_SECTIONS = {
161
163
  title: "Watch Stories & Reviews",
162
164
  "video-urls": [],
163
165
  },
166
+ helpFaq: helpFaqDefaults as Record<string, unknown>,
164
167
  blogPosts: {
165
168
  title: "Blog posts",
166
169
  posts: [
@@ -195,6 +195,45 @@ function normalizeSections(sections: Loose): Loose {
195
195
  }
196
196
  }
197
197
 
198
+ const helpFaq = asObject(sections.helpFaq)
199
+ if (helpFaq) {
200
+ const categories = asArray(helpFaq.categories)
201
+ .map((row) => {
202
+ const cat = asObject((row as Loose)?.category) ?? asObject(row)
203
+ if (!cat) return null
204
+ const items = asArray(cat.items)
205
+ .map((item) => {
206
+ const faq = asObject((item as Loose)?.faq) ?? asObject(item)
207
+ if (!faq) return null
208
+ const question = String(
209
+ faq.question ?? faq["faq-question"] ?? ""
210
+ ).trim()
211
+ const answer = String(faq.answer ?? faq["faq-answer"] ?? "").trim()
212
+ if (!question || !answer) return null
213
+ return { question, answer }
214
+ })
215
+ .filter(Boolean)
216
+ const category = String(cat.category ?? cat.name ?? "").trim()
217
+ if (!category || items.length === 0) return null
218
+ return {
219
+ category,
220
+ icon: cat.icon,
221
+ color: cat.color,
222
+ items,
223
+ }
224
+ })
225
+ .filter(Boolean)
226
+ if (categories.length) {
227
+ out.helpFaq = {
228
+ eyebrow: helpFaq.eyebrow,
229
+ title: helpFaq.title,
230
+ titleHighlight: helpFaq.titleHighlight,
231
+ subtitle: helpFaq.subtitle ?? helpFaq.description,
232
+ categories,
233
+ }
234
+ }
235
+ }
236
+
198
237
  return out
199
238
  }
200
239
 
@@ -1,191 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import Medusa from "@medusajs/js-sdk";
2
- export declare const sdk: Medusa;
3
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,31 +0,0 @@
1
- import { getLocaleHeader } from "./util/get-locale-header";
2
- import Medusa from "@medusajs/js-sdk";
3
- // Defaults to standard port for Medusa server
4
- let MEDUSA_BACKEND_URL = "http://localhost:9000";
5
- if (process.env.MEDUSA_BACKEND_URL) {
6
- MEDUSA_BACKEND_URL = process.env.MEDUSA_BACKEND_URL;
7
- }
8
- export const sdk = new Medusa({
9
- baseUrl: MEDUSA_BACKEND_URL,
10
- debug: process.env.NODE_ENV === "development",
11
- publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
12
- });
13
- const originalFetch = sdk.client.fetch.bind(sdk.client);
14
- sdk.client.fetch = async (input, init) => {
15
- const headers = init?.headers ?? {};
16
- let localeHeader;
17
- try {
18
- localeHeader = await getLocaleHeader();
19
- headers["x-medusa-locale"] ??= localeHeader["x-medusa-locale"];
20
- }
21
- catch { }
22
- const newHeaders = {
23
- ...localeHeader,
24
- ...headers,
25
- };
26
- init = {
27
- ...init,
28
- headers: newHeaders,
29
- };
30
- return originalFetch(input, init);
31
- };
@@ -1,23 +0,0 @@
1
- import "server-only";
2
- export declare const getAuthHeaders: () => Promise<{
3
- authorization: string;
4
- } | {}>;
5
- export declare const getGuestAuthHeaders: () => Promise<{
6
- authorization: string;
7
- } | {}>;
8
- export declare const getCacheTag: (tag: string) => Promise<string>;
9
- export declare const getCacheOptions: (tag: string) => Promise<{
10
- tags: string[];
11
- } | {}>;
12
- export declare const setAuthToken: (token: string) => Promise<void>;
13
- export declare const removeAuthToken: () => Promise<void>;
14
- export declare const getCartId: () => Promise<string | undefined>;
15
- export declare const setCartId: (cartId: string) => Promise<void>;
16
- export declare const removeCartId: () => Promise<void>;
17
- export declare const removeSyncLock: () => Promise<void>;
18
- export declare const setHoldCartId: (cartId: string) => Promise<void>;
19
- export declare const getHoldCartId: () => Promise<string | undefined>;
20
- export declare const removeHoldCartId: () => Promise<void>;
21
- export declare const setBuyNowCartId: (cartId: string) => Promise<void>;
22
- export declare const removeBuyNowCartId: () => Promise<void>;
23
- //# sourceMappingURL=cookies.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,140 +0,0 @@
1
- import "server-only";
2
- import { cookies as nextCookies, headers } from "next/headers";
3
- export const getAuthHeaders = async () => {
4
- try {
5
- const cookies = await nextCookies();
6
- const token = cookies.get("_medusa_jwt")?.value;
7
- if (!token) {
8
- return {};
9
- }
10
- return { authorization: `Bearer ${token}` };
11
- }
12
- catch {
13
- return {};
14
- }
15
- };
16
- export const getGuestAuthHeaders = async () => {
17
- try {
18
- const cookies = await nextCookies();
19
- const token = cookies.get("_medusa_guest_jwt")?.value;
20
- if (!token) {
21
- return {};
22
- }
23
- return { authorization: `Bearer ${token}` };
24
- }
25
- catch {
26
- return {};
27
- }
28
- };
29
- export const getCacheTag = async (tag) => {
30
- try {
31
- const cookies = await nextCookies();
32
- const cacheId = cookies.get("_medusa_cache_id")?.value;
33
- if (!cacheId) {
34
- return "";
35
- }
36
- return `${tag}-${cacheId}`;
37
- }
38
- catch (error) {
39
- return "";
40
- }
41
- };
42
- export const getCacheOptions = async (tag) => {
43
- if (typeof window !== "undefined") {
44
- return {};
45
- }
46
- const cacheTag = await getCacheTag(tag);
47
- if (!cacheTag) {
48
- return {};
49
- }
50
- return { tags: [`${cacheTag}`] };
51
- };
52
- export const setAuthToken = async (token) => {
53
- const cookies = await nextCookies();
54
- cookies.set("_medusa_jwt", token, {
55
- maxAge: 60 * 60 * 24 * 7,
56
- httpOnly: true,
57
- sameSite: "strict",
58
- secure: process.env.NODE_ENV === "production",
59
- });
60
- };
61
- export const removeAuthToken = async () => {
62
- const cookies = await nextCookies();
63
- cookies.set("_medusa_jwt", "", {
64
- maxAge: -1,
65
- });
66
- };
67
- export const getCartId = async () => {
68
- const cookies = await nextCookies();
69
- const headerList = await headers();
70
- // Check for x-cart-id header FIRST (as it's the most up-to-date from middleware)
71
- const headerId = headerList.get("x-cart-id");
72
- if (headerId) {
73
- return headerId;
74
- }
75
- // Prioritize buy_now_cart_id if it exists
76
- const buyNowId = cookies.get("buy_now_cart_id")?.value;
77
- if (buyNowId) {
78
- return buyNowId;
79
- }
80
- // Fallback to regular cart cookies
81
- const id = cookies.get("_medusa_cart_id")?.value ||
82
- cookies.get("cart_id")?.value ||
83
- cookies.get("medusa_cart_id")?.value;
84
- return id;
85
- };
86
- export const setCartId = async (cartId) => {
87
- const cookies = await nextCookies();
88
- cookies.set("_medusa_cart_id", cartId, {
89
- maxAge: 60 * 60 * 24 * 7,
90
- httpOnly: true,
91
- sameSite: "strict",
92
- secure: process.env.NODE_ENV === "production",
93
- });
94
- };
95
- export const removeCartId = async () => {
96
- const cookies = await nextCookies();
97
- cookies.set("_medusa_cart_id", "", {
98
- maxAge: -1,
99
- });
100
- };
101
- export const removeSyncLock = async () => {
102
- const cookies = await nextCookies();
103
- cookies.set("_medusa_cart_synced", "", {
104
- maxAge: -1,
105
- });
106
- };
107
- export const setHoldCartId = async (cartId) => {
108
- const cookies = await nextCookies();
109
- cookies.set("_medusa_hold_cart_id", cartId, {
110
- maxAge: 60 * 60 * 24,
111
- httpOnly: true,
112
- sameSite: "strict",
113
- secure: process.env.NODE_ENV === "production",
114
- });
115
- };
116
- export const getHoldCartId = async () => {
117
- const cookies = await nextCookies();
118
- return cookies.get("_medusa_hold_cart_id")?.value;
119
- };
120
- export const removeHoldCartId = async () => {
121
- const cookies = await nextCookies();
122
- cookies.set("_medusa_hold_cart_id", "", {
123
- maxAge: -1,
124
- });
125
- };
126
- export const setBuyNowCartId = async (cartId) => {
127
- const cookies = await nextCookies();
128
- cookies.set("buy_now_cart_id", cartId, {
129
- maxAge: 60 * 60 * 24 * 7,
130
- httpOnly: true,
131
- sameSite: "strict",
132
- secure: process.env.NODE_ENV === "production",
133
- });
134
- };
135
- export const removeBuyNowCartId = async () => {
136
- const cookies = await nextCookies();
137
- cookies.set("buy_now_cart_id", "", {
138
- maxAge: -1,
139
- });
140
- };