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
@@ -1,48 +0,0 @@
1
- import { HttpTypes } from "@medusajs/types";
2
- export declare const retrieveCustomer: () => Promise<HttpTypes.StoreCustomer | null>;
3
- export declare const updateCustomer: (body: HttpTypes.StoreUpdateCustomer) => Promise<HttpTypes.StoreCustomer>;
4
- export declare function signup(_currentState: unknown, formData: FormData): Promise<any>;
5
- export declare function login(_currentState: string | null, formData: FormData): Promise<string | null>;
6
- export declare function signout(countryCode: string): Promise<void>;
7
- export declare function transferCart(token?: string): Promise<void>;
8
- export declare const addCustomerAddress: (currentState: Record<string, unknown>, formData: FormData) => Promise<any>;
9
- export declare const deleteCustomerAddress: (addressId: string) => Promise<void>;
10
- export declare const updateCustomerAddress: (currentState: Record<string, unknown>, formData: FormData) => Promise<any>;
11
- export declare const setDefaultAddress: (addressId: string) => Promise<{
12
- success: boolean;
13
- error: null;
14
- } | {
15
- success: boolean;
16
- error: string;
17
- }>;
18
- export declare function initiateGoogleAuth(): Promise<{
19
- redirectUrl: any;
20
- error?: undefined;
21
- } | {
22
- error: any;
23
- redirectUrl?: undefined;
24
- }>;
25
- export declare function handleGoogleAuthCallback(params: Record<string, string>): Promise<{
26
- token: string;
27
- error?: undefined;
28
- } | {
29
- error: any;
30
- token?: undefined;
31
- }>;
32
- export declare function handleGoogleCallback(token: string, email?: string, first_name?: string, last_name?: string): Promise<{
33
- success: boolean;
34
- error?: undefined;
35
- } | {
36
- error: any;
37
- success?: undefined;
38
- }>;
39
- export declare function uploadProfileImage(formData: FormData): Promise<{
40
- success: boolean;
41
- imageUrl: string;
42
- error?: undefined;
43
- } | {
44
- error: any;
45
- success?: undefined;
46
- imageUrl?: undefined;
47
- }>;
48
- //# sourceMappingURL=customer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../../src/server/customer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA4C3C,eAAO,MAAM,gBAAgB,QACjB,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAkBjD,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,MAAM,SAAS,CAAC,mBAAmB,qCAYvE,CAAA;AAED,wBAAsB,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,gBAqCtE;AAED,wBAAsB,KAAK,CACzB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsExB;AAED,wBAAsB,OAAO,CAAC,WAAW,EAAE,MAAM,iBAqBhD;AAED,wBAAsB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,iBAwChD;AAED,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,QAAQ,KACjB,OAAO,CAAC,GAAG,CAgCb,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,KAChB,OAAO,CAAC,IAAI,CAWd,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,QAAQ,KACjB,OAAO,CAAC,GAAG,CAuCb,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,WAAW,MAAM;;;;;;EAWxD,CAAA;AAED,wBAAsB,kBAAkB;;;;;;GA8CvC;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;GAsC5E;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;GAmChH;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;GAyC1D"}
@@ -1,413 +0,0 @@
1
- "use server";
2
- import medusaError from "../util/medusa-error";
3
- import { revalidateTag } from "next/cache";
4
- import { redirect } from "next/navigation";
5
- import { cookies } from "next/headers";
6
- import { getAuthHeaders, getCacheTag, getCartId, removeAuthToken, removeCartId, removeSyncLock, setAuthToken, setCartId, } from "../cookies";
7
- import { medusaAuthLogin, medusaAuthLogout, medusaAuthRegister, } from "medusa-services/auth";
8
- import { isAccountDeletionPendingError, medusaCustomerCreate, medusaCustomerCreateAddress, medusaCustomerDeleteAddress, medusaCustomerRetrieve, medusaCustomerUpdate, medusaCustomerUpdateAddress, } from "medusa-services/customer";
9
- import { medusaCartMerge, medusaCartTransfer } from "medusa-services/cart";
10
- import { getAuthClientOptions, getMedusaBackendUrl, getStoreClientOptions, } from "../util/store-client";
11
- import { cache } from "react";
12
- function throwCustomerError(error) {
13
- if (error && typeof error === "object" && "response" in error) {
14
- medusaError(error);
15
- }
16
- throw error instanceof Error ? error : new Error(String(error));
17
- }
18
- export const retrieveCustomer = cache(async () => {
19
- const authHeaders = await getAuthHeaders();
20
- if (!("authorization" in authHeaders))
21
- return null;
22
- try {
23
- const options = await getStoreClientOptions();
24
- const { customer } = await medusaCustomerRetrieve(options, { fields: "*addresses" });
25
- return customer;
26
- }
27
- catch (error) {
28
- if (isAccountDeletionPendingError(error)) {
29
- const cookieStore = await cookies();
30
- const cookieEmail = cookieStore.get("_medusa_customer_email")?.value;
31
- return { id: "pending_deletion", email: cookieEmail || "pending" };
32
- }
33
- return null;
34
- }
35
- });
36
- export const updateCustomer = async (body) => {
37
- try {
38
- const options = await getStoreClientOptions();
39
- const { customer } = await medusaCustomerUpdate(body, options);
40
- const cacheTag = await getCacheTag("customers");
41
- revalidateTag(cacheTag);
42
- return customer;
43
- }
44
- catch (e) {
45
- throwCustomerError(e);
46
- }
47
- };
48
- export async function signup(_currentState, formData) {
49
- const password = formData.get("password");
50
- const customerForm = {
51
- email: formData.get("email"),
52
- first_name: formData.get("first_name"),
53
- last_name: formData.get("last_name"),
54
- phone: formData.get("phone")?.replace(/[^\d+]/g, ""),
55
- };
56
- try {
57
- const authOptions = await getAuthClientOptions();
58
- const token = await medusaAuthRegister({ email: customerForm.email, password }, authOptions);
59
- await setAuthToken(token);
60
- const options = await getStoreClientOptions();
61
- const { customer: createdCustomer } = await medusaCustomerCreate(customerForm, options);
62
- const loginToken = await medusaAuthLogin({ email: customerForm.email, password }, authOptions);
63
- await setAuthToken(loginToken);
64
- const customerCacheTag = await getCacheTag("customers");
65
- revalidateTag(customerCacheTag);
66
- await transferCart(loginToken);
67
- return createdCustomer;
68
- }
69
- catch (error) {
70
- return error.toString();
71
- }
72
- }
73
- export async function login(_currentState, formData) {
74
- let email = formData.get("email_or_phone");
75
- const password = formData.get("password");
76
- if (email && !email.includes("@")) {
77
- email = email.replace(/[^\d+]/g, "");
78
- }
79
- let shouldRedirect = false;
80
- let countryCode = "in";
81
- try {
82
- const authOptions = await getAuthClientOptions();
83
- const token = await medusaAuthLogin({ email_or_phone: email, password }, authOptions);
84
- await setAuthToken(token);
85
- const cookieStore = await cookies();
86
- cookieStore.set("_medusa_customer_email", email, { maxAge: 60 * 60 * 24 * 7, path: "/" });
87
- try {
88
- const options = await getStoreClientOptions();
89
- await medusaCustomerRetrieve({
90
- ...options,
91
- authorization: `Bearer ${token}`,
92
- });
93
- }
94
- catch (err) {
95
- if (isAccountDeletionPendingError(err)) {
96
- return "ACCOUNT_DELETION_PENDING";
97
- }
98
- throw err;
99
- }
100
- try {
101
- await transferCart(token);
102
- }
103
- catch (e) {
104
- console.error("Transfer cart failed in login:", e);
105
- }
106
- const customerCacheTag = await getCacheTag("customers");
107
- revalidateTag(customerCacheTag);
108
- countryCode = formData.get("country_code") || "in";
109
- shouldRedirect = true;
110
- }
111
- catch (error) {
112
- if (isAccountDeletionPendingError(error)) {
113
- const cookieStore = await cookies();
114
- cookieStore.set("_medusa_customer_email", email, { maxAge: 60 * 60 * 24 * 7, path: "/" });
115
- return "ACCOUNT_DELETION_PENDING";
116
- }
117
- const errorStr = String(error).toLowerCase();
118
- if (errorStr.includes("invalid") || errorStr.includes("401") || errorStr.includes("not found")) {
119
- return "Invalid credentials. Please try again.";
120
- }
121
- return error instanceof Error ? error.message : String(error);
122
- }
123
- if (shouldRedirect) {
124
- const redirectUrl = formData.get("redirect_url");
125
- const hasKeepContext = redirectUrl?.includes("login_context=keep");
126
- if (redirectUrl && redirectUrl.startsWith("/") && hasKeepContext) {
127
- redirect(redirectUrl);
128
- }
129
- else {
130
- redirect(`/${countryCode}`);
131
- }
132
- }
133
- return null;
134
- }
135
- export async function signout(countryCode) {
136
- try {
137
- const authOptions = await getAuthClientOptions();
138
- await medusaAuthLogout(authOptions);
139
- }
140
- catch {
141
- // Continue local cleanup even if remote logout fails
142
- }
143
- await removeAuthToken();
144
- await removeCartId();
145
- await removeSyncLock();
146
- const customerCacheTag = await getCacheTag("customers");
147
- revalidateTag(customerCacheTag);
148
- await removeCartId();
149
- const cartCacheTag = await getCacheTag("carts");
150
- revalidateTag(cartCacheTag);
151
- redirect(`/${countryCode}`);
152
- }
153
- export async function transferCart(token) {
154
- const cartId = await getCartId();
155
- const options = await getStoreClientOptions();
156
- const mergeOptions = token
157
- ? { ...options, authorization: `Bearer ${token}` }
158
- : options;
159
- console.log("--- TransferCart Debug ---");
160
- console.log("Token provided:", !!token);
161
- console.log("Guest Cart ID:", cartId);
162
- try {
163
- console.log("Calling merge API (always)...");
164
- const data = await medusaCartMerge(mergeOptions, cartId ?? undefined);
165
- if (data) {
166
- console.log("--- Login Merge Response (JSON) ---");
167
- console.log(JSON.stringify(data, null, 2));
168
- console.log("-----------------------------------");
169
- const activeCartId = data.cart?.id || data.id || data.cart_id;
170
- if (activeCartId && typeof activeCartId === "string") {
171
- console.log("Storing Cart ID in cookie:", activeCartId);
172
- await setCartId(activeCartId);
173
- }
174
- }
175
- else {
176
- console.log("No active cart found for this customer (expected).");
177
- }
178
- }
179
- catch (error) {
180
- console.error("Merge API error:", error instanceof Error ? error.message : error);
181
- if (cartId) {
182
- await medusaCartTransfer(cartId, mergeOptions).catch(() => { });
183
- }
184
- }
185
- console.log("--------------------------");
186
- const cartCacheTag = await getCacheTag("carts");
187
- revalidateTag(cartCacheTag);
188
- }
189
- export const addCustomerAddress = async (currentState, formData) => {
190
- const isDefaultBilling = currentState.isDefaultBilling || false;
191
- const isDefaultShipping = currentState.isDefaultShipping || false;
192
- const address = {
193
- first_name: formData.get("first_name"),
194
- last_name: formData.get("last_name"),
195
- company: formData.get("company"),
196
- address_1: formData.get("address_1"),
197
- address_2: formData.get("address_2"),
198
- city: formData.get("city"),
199
- postal_code: formData.get("postal_code"),
200
- province: formData.get("province"),
201
- country_code: formData.get("country_code"),
202
- phone: formData.get("phone"),
203
- is_default_billing: isDefaultBilling,
204
- is_default_shipping: isDefaultShipping,
205
- metadata: {
206
- address_type: formData.get("address_type") || "HOME",
207
- },
208
- };
209
- try {
210
- const options = await getStoreClientOptions();
211
- await medusaCustomerCreateAddress(address, options);
212
- const customerCacheTag = await getCacheTag("customers");
213
- revalidateTag(customerCacheTag);
214
- return { success: true, error: null };
215
- }
216
- catch (err) {
217
- return { success: false, error: String(err) };
218
- }
219
- };
220
- export const deleteCustomerAddress = async (addressId) => {
221
- try {
222
- const options = await getStoreClientOptions();
223
- await medusaCustomerDeleteAddress(addressId, options);
224
- const customerCacheTag = await getCacheTag("customers");
225
- revalidateTag(customerCacheTag);
226
- return { success: true, error: null };
227
- }
228
- catch (err) {
229
- return { success: false, error: String(err) };
230
- }
231
- };
232
- export const updateCustomerAddress = async (currentState, formData) => {
233
- const addressId = currentState.addressId || formData.get("addressId");
234
- if (!addressId) {
235
- return { success: false, error: "Address ID is required" };
236
- }
237
- const address = {
238
- first_name: formData.get("first_name"),
239
- last_name: formData.get("last_name"),
240
- company: formData.get("company"),
241
- address_1: formData.get("address_1"),
242
- address_2: formData.get("address_2"),
243
- city: formData.get("city"),
244
- postal_code: formData.get("postal_code"),
245
- province: formData.get("province"),
246
- country_code: formData.get("country_code"),
247
- metadata: {
248
- address_type: formData.get("address_type") || "HOME",
249
- },
250
- };
251
- const phone = formData.get("phone");
252
- if (phone) {
253
- address.phone = phone;
254
- }
255
- try {
256
- const options = await getStoreClientOptions();
257
- await medusaCustomerUpdateAddress(addressId, address, options);
258
- const customerCacheTag = await getCacheTag("customers");
259
- revalidateTag(customerCacheTag);
260
- return { success: true, error: null };
261
- }
262
- catch (err) {
263
- return { success: false, error: String(err) };
264
- }
265
- };
266
- export const setDefaultAddress = async (addressId) => {
267
- try {
268
- const options = await getStoreClientOptions();
269
- await medusaCustomerUpdateAddress(addressId, { is_default_shipping: true }, options);
270
- const customerCacheTag = await getCacheTag("customers");
271
- revalidateTag(customerCacheTag);
272
- return { success: true, error: null };
273
- }
274
- catch (err) {
275
- return { success: false, error: String(err) };
276
- }
277
- };
278
- export async function initiateGoogleAuth() {
279
- try {
280
- const backendUrl = getMedusaBackendUrl();
281
- if (!backendUrl) {
282
- return { error: "Backend URL not configured" };
283
- }
284
- const response = await fetch(`${backendUrl}/auth/customer/google`, {
285
- method: "POST",
286
- headers: {
287
- "Content-Type": "application/json",
288
- },
289
- cache: "no-store",
290
- });
291
- if (!response.ok) {
292
- return { error: "Google auth failed" };
293
- }
294
- const result = await response.json();
295
- let redirectUrl = typeof result === "string" ? result : result?.location;
296
- if (!redirectUrl) {
297
- return { error: "No redirect URL received from Google OAuth" };
298
- }
299
- try {
300
- const url = new URL(redirectUrl);
301
- const pathParts = url.pathname.split("/").filter(Boolean);
302
- if (pathParts.length > 0 && /^[a-z]{2,3}$/i.test(pathParts[0])) {
303
- if (pathParts.length > 1 && pathParts[1] === "auth") {
304
- pathParts.shift();
305
- url.pathname = "/" + pathParts.join("/");
306
- redirectUrl = url.toString();
307
- }
308
- }
309
- }
310
- catch (e) {
311
- // If URL parsing fails, use original redirectUrl
312
- }
313
- return { redirectUrl };
314
- }
315
- catch (error) {
316
- return { error: error.message || "Internal server error" };
317
- }
318
- }
319
- export async function handleGoogleAuthCallback(params) {
320
- try {
321
- if (!params.code || !params.state) {
322
- return { error: "Missing authentication parameters" };
323
- }
324
- const backendUrl = getMedusaBackendUrl();
325
- if (!backendUrl) {
326
- return { error: "Backend URL not configured" };
327
- }
328
- const response = await fetch(`${backendUrl}/auth/customer/google/callback?${new URLSearchParams(params).toString()}`, {
329
- method: "GET",
330
- headers: {
331
- "Content-Type": "application/json",
332
- },
333
- cache: "no-store",
334
- });
335
- if (!response.ok) {
336
- return { error: `Authentication failed: ${response.status} - ${response.statusText}` };
337
- }
338
- const data = await response.json();
339
- const token = data.token || data;
340
- if (!token || typeof token !== "string") {
341
- return { error: "No token received" };
342
- }
343
- return { token };
344
- }
345
- catch (error) {
346
- return { error: error.message || "Internal server error" };
347
- }
348
- }
349
- export async function handleGoogleCallback(token, email, first_name, last_name) {
350
- try {
351
- if (!token || typeof token !== "string") {
352
- return { error: "Token is required" };
353
- }
354
- await setAuthToken(token);
355
- await transferCart(token).catch(() => { });
356
- if (email && typeof email === "string") {
357
- const cookieStore = await cookies();
358
- cookieStore.set("_medusa_customer_email", email, { maxAge: 60 * 60 * 24 * 7, path: "/" });
359
- const options = await getStoreClientOptions();
360
- if (options.authorization) {
361
- try {
362
- await medusaCustomerCreate({ email, ...(first_name && { first_name }), ...(last_name && { last_name }) }, options);
363
- }
364
- catch (err) {
365
- if (!err.message?.includes("already exists") && !err.message?.includes("duplicate")) {
366
- // Ignore duplicate customer errors for OAuth sign-in
367
- }
368
- }
369
- }
370
- }
371
- const customerCacheTag = await getCacheTag("customers");
372
- if (customerCacheTag)
373
- revalidateTag(customerCacheTag);
374
- return { success: true };
375
- }
376
- catch (error) {
377
- return { error: error.message || "Internal server error" };
378
- }
379
- }
380
- export async function uploadProfileImage(formData) {
381
- try {
382
- const imageFile = formData.get("image");
383
- if (!imageFile) {
384
- return { error: "No image file provided" };
385
- }
386
- const uploadFormData = new FormData();
387
- uploadFormData.append("files", imageFile);
388
- const { uploadStoreFiles } = await import("medusa-reviews-logic/server");
389
- const uploadResult = await uploadStoreFiles(uploadFormData);
390
- if (!uploadResult.success) {
391
- return { error: uploadResult.error };
392
- }
393
- const imageUrl = uploadResult.files?.[0]?.url;
394
- if (!imageUrl) {
395
- throw new Error("No image URL returned from server");
396
- }
397
- const currentCustomer = await retrieveCustomer();
398
- const existingMetadata = currentCustomer?.metadata || {};
399
- const newMetadata = {
400
- ...existingMetadata,
401
- profile_image_url: imageUrl,
402
- };
403
- await updateCustomer({ metadata: newMetadata });
404
- const customerCacheTag = await getCacheTag("customers");
405
- if (customerCacheTag) {
406
- revalidateTag(customerCacheTag);
407
- }
408
- return { success: true, imageUrl };
409
- }
410
- catch (error) {
411
- return { error: error.message || "Failed to upload image" };
412
- }
413
- }
@@ -1,11 +0,0 @@
1
- import type { DynamicConfigResponse, HomepageConfig } from "./homepage-config.types";
2
- type Loose = Record<string, unknown>;
3
- /**
4
- * Medusa split keys (`site-branding`, `homepage-sections`, …) → simplified shape
5
- * consumed by `normalizeHomepageConfig`.
6
- */
7
- export declare function mergeStorefrontDynamicConfig(dynamicConfigResponse: Record<string, unknown>): Loose;
8
- /** Full `GET /store/dynamic-config` body → legacy `homepage-config`. */
9
- export declare function homepageConfigFromApiResponse(response: Record<string, unknown> | DynamicConfigResponse | null | undefined): HomepageConfig;
10
- export {};
11
- //# sourceMappingURL=dynamic-config-api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dynamic-config-api.d.ts","sourceRoot":"","sources":["../../../src/server/dynamic-config-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGpF,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAUpC;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7C,KAAK,CA6BP;AAED,wEAAwE;AACxE,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAC3E,cAAc,CAShB"}
@@ -1,46 +0,0 @@
1
- import { normalizeHomepageConfig } from "./normalize-homepage-config";
2
- function asObject(v) {
3
- return v && typeof v === "object" && !Array.isArray(v) ? v : null;
4
- }
5
- function asArray(v) {
6
- return Array.isArray(v) ? v : [];
7
- }
8
- /**
9
- * Medusa split keys (`site-branding`, `homepage-sections`, …) → simplified shape
10
- * consumed by `normalizeHomepageConfig`.
11
- */
12
- export function mergeStorefrontDynamicConfig(dynamicConfigResponse) {
13
- const legacy = asObject(dynamicConfigResponse["homepage-config"]);
14
- if (legacy)
15
- return legacy;
16
- const branding = asObject(dynamicConfigResponse["site-branding"]);
17
- const contact = asObject(dynamicConfigResponse["contact"]);
18
- const socialRoot = asObject(dynamicConfigResponse["social-links"]);
19
- const faqsRoot = asObject(dynamicConfigResponse["faqs"]);
20
- const promoBar = asObject(dynamicConfigResponse["promo-bar"]);
21
- const social = asArray(socialRoot?.links) ||
22
- asArray(dynamicConfigResponse["social-links"]) ||
23
- [];
24
- const faqs = asArray(faqsRoot?.items) || asArray(dynamicConfigResponse["faqs"]) || [];
25
- return {
26
- site: {
27
- ...branding,
28
- contact,
29
- social,
30
- faqs,
31
- },
32
- banners: asObject(dynamicConfigResponse["hero-banners"]),
33
- sections: asObject(dynamicConfigResponse["homepage-sections"]),
34
- promoBar,
35
- };
36
- }
37
- /** Full `GET /store/dynamic-config` body → legacy `homepage-config`. */
38
- export function homepageConfigFromApiResponse(response) {
39
- if (!response || typeof response !== "object")
40
- return {};
41
- const row = response;
42
- if (row["homepage-config"]) {
43
- return normalizeHomepageConfig(row["homepage-config"]);
44
- }
45
- return normalizeHomepageConfig(mergeStorefrontDynamicConfig(row));
46
- }
@@ -1,157 +0,0 @@
1
- import "server-only";
2
- import { type DefaultHomeSectionId } from "./homepage-section-defaults";
3
- import type { DynamicConfigResponse, HomepageConfig } from "./homepage-config.types";
4
- export { DEFAULT_PAGE_INPUT, mergePageInputWithDefaults, resolvePageInput, homepageConfigFromDynamicResponse, type StorefrontPageInput, } from "./page-input";
5
- export declare const getDynamicConfig: () => Promise<DynamicConfigResponse | null>;
6
- export declare function getLogoFromPageInput(pageInput?: HomepageConfig | null): string | null;
7
- export type HomepageBanner = {
8
- image?: string;
9
- title?: string;
10
- subtitle?: string;
11
- description?: string;
12
- buttonName?: string;
13
- buttonLink?: string;
14
- };
15
- export declare function getHomeBannersFromPageInput(pageInput?: HomepageConfig | null): HomepageBanner[] | null;
16
- export declare function getAppBannersFromPageInput(pageInput?: HomepageConfig | null): HomepageBanner[] | null;
17
- export declare function getWebsiteDescriptionFromPageInput(pageInput?: HomepageConfig | null): string | null;
18
- /** Why choose us — defaults + `sections.whyChooseUs` override. */
19
- export declare function getFeaturesFromPageInput(pageInput?: HomepageConfig | null): {
20
- title: string;
21
- features: Array<{
22
- name: string;
23
- icon: string;
24
- }>;
25
- };
26
- /** CMS copy for a homepage section (title, name, text, description, etc.). */
27
- export type SectionCopy = {
28
- title: string | null;
29
- name: string | null;
30
- text: string | null;
31
- description: string | null;
32
- subtitle: string | null;
33
- eyebrow: string | null;
34
- /** Layout variant, e.g. new arrivals `grid` | `classic`. */
35
- variant: string | null;
36
- layout: string | null;
37
- };
38
- export declare function parseSectionCopy(block: unknown): SectionCopy;
39
- export type HomeSectionCopyId = DefaultHomeSectionId;
40
- export type HomeSectionsCopy = Record<HomeSectionCopyId, SectionCopy>;
41
- export { mergeSectionBlock } from "./config-merge";
42
- export declare function getMergedSectionBlock(id: HomeSectionCopyId, pageInput?: HomepageConfig | null): Record<string, unknown>;
43
- /**
44
- * Merged section copy: package defaults + `homepage-config.sections` overrides.
45
- */
46
- export declare function getHomeSectionsCopyFromPageInput(pageInput?: HomepageConfig | null): HomeSectionsCopy;
47
- export type TrustFeaturesConfig = {
48
- title: string | null;
49
- description: string | null;
50
- features: Array<{
51
- name: string;
52
- icon: string;
53
- }>;
54
- };
55
- /** Trust badge row — defaults + `sections.features` override. */
56
- export declare function getTrustFeaturesFromPageInput(pageInput?: HomepageConfig | null): TrustFeaturesConfig;
57
- export type ContactInfo = {
58
- phone?: string;
59
- email?: string;
60
- address?: string;
61
- };
62
- export declare function getContactInfoFromPageInput(pageInput?: HomepageConfig | null): ContactInfo | null;
63
- /**
64
- * Homepage video stories/reviews carousel (`homepage-config.video-stories`).
65
- */
66
- export declare function getVideoStoriesFromPageInput(pageInput?: HomepageConfig | null): {
67
- title: string;
68
- videoUrls: string[];
69
- };
70
- export type TestimonialItem = {
71
- id: string;
72
- text: string;
73
- name: string;
74
- rating?: number;
75
- avatar?: string;
76
- };
77
- export declare function getTestimonialsFromPageInput(pageInput?: HomepageConfig | null): {
78
- title: string;
79
- subtitle: string | null;
80
- testimonials: TestimonialItem[];
81
- };
82
- export declare function getSocialLinksFromPageInput(pageInput?: HomepageConfig | null): Array<{
83
- name: string;
84
- url: string;
85
- icon?: string;
86
- }> | null;
87
- export declare function getFaqsFromPageInput(pageInput?: HomepageConfig | null): Array<{
88
- category: string;
89
- items: Array<{
90
- q: string;
91
- a: string;
92
- }>;
93
- }> | null;
94
- export declare function getAnnouncementMessagesFromPageInput(pageInput?: HomepageConfig | null): string[];
95
- export type AboutBrandConfig = {
96
- eyebrow: string;
97
- title: string;
98
- description: string;
99
- readMoreHref: string;
100
- stats: Array<{
101
- label: string;
102
- value: string;
103
- }>;
104
- };
105
- export declare function getAboutBrandFromPageInput(pageInput?: HomepageConfig | null): AboutBrandConfig;
106
- export type BrandPillarConfig = {
107
- title: string;
108
- description: string;
109
- image?: string;
110
- href?: string;
111
- };
112
- export declare function getBrandPillarsFromPageInput(pageInput?: HomepageConfig | null): {
113
- sectionTitle: string;
114
- pillars: BrandPillarConfig[];
115
- };
116
- export type BlogPostConfig = {
117
- title: string;
118
- excerpt?: string;
119
- category?: string;
120
- date?: string;
121
- href: string;
122
- image?: string;
123
- };
124
- export declare function getBlogPostsFromPageInput(pageInput?: HomepageConfig | null): BlogPostConfig[];
125
- /** Promo countdown — defaults + `sections.promoCountdown` override. */
126
- export declare function getPromoCountdownFromPageInput(pageInput?: HomepageConfig | null): {
127
- code: string | null;
128
- message: string | null;
129
- endAt: string | null;
130
- active: boolean;
131
- ctaLabel: string | null;
132
- ctaHref: string | null;
133
- };
134
- export type InstagramPostConfig = {
135
- id: string;
136
- image: string;
137
- url?: string;
138
- };
139
- export type InstagramPostsData = {
140
- title: string;
141
- handle: string;
142
- profileUrl: string;
143
- profileImage?: string;
144
- posts: InstagramPostConfig[];
145
- };
146
- /** Instagram feed — `sections.instagramPosts` + optional social-links fallback. */
147
- export declare function getInstagramPostsFromPageInput(pageInput?: HomepageConfig | null): InstagramPostsData;
148
- export { DEFAULT_HOMEPAGE_SECTIONS, type DefaultHomeSectionId, } from "./homepage-section-defaults";
149
- export type { DynamicConfigResponse, HomepageConfig, HomepageSectionsConfig, HomepageSectionId, HomepageSectionCopyFields, HomepageNewArrivalsSection, } from "./homepage-config.types";
150
- export { HOMEPAGE_SECTION_IDS } from "./homepage-config.types";
151
- export declare function getPromoBarFromPageInput(pageInput?: HomepageConfig | null): {
152
- text: string | null;
153
- code: string | null;
154
- value: string | null;
155
- active: boolean;
156
- };
157
- //# sourceMappingURL=dynamic-config.d.ts.map