payaza-storefront-layouts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/README.md +108 -0
  2. package/dist/components/learning/CertificateTemplates.d.ts +25 -0
  3. package/dist/components/learning/CertificateTemplates.d.ts.map +1 -0
  4. package/dist/components/learning/CertificateTemplates.js +31 -0
  5. package/dist/components/learning/CertificateViewer.d.ts +11 -0
  6. package/dist/components/learning/CertificateViewer.d.ts.map +1 -0
  7. package/dist/components/learning/CertificateViewer.js +114 -0
  8. package/dist/components/learning/MentorshipProgress.d.ts +18 -0
  9. package/dist/components/learning/MentorshipProgress.d.ts.map +1 -0
  10. package/dist/components/learning/MentorshipProgress.js +19 -0
  11. package/dist/components/ui/address-selector.d.ts +11 -0
  12. package/dist/components/ui/address-selector.d.ts.map +1 -0
  13. package/dist/components/ui/address-selector.js +21 -0
  14. package/dist/components/ui/avatar-image.d.ts +11 -0
  15. package/dist/components/ui/avatar-image.d.ts.map +1 -0
  16. package/dist/components/ui/avatar-image.js +39 -0
  17. package/dist/components/ui/background-patterns.d.ts +27 -0
  18. package/dist/components/ui/background-patterns.d.ts.map +1 -0
  19. package/dist/components/ui/background-patterns.js +5 -0
  20. package/dist/components/ui/badge.d.ts +10 -0
  21. package/dist/components/ui/badge.d.ts.map +1 -0
  22. package/dist/components/ui/badge.js +20 -0
  23. package/dist/components/ui/breadcrumbs.d.ts +11 -0
  24. package/dist/components/ui/breadcrumbs.d.ts.map +1 -0
  25. package/dist/components/ui/breadcrumbs.js +8 -0
  26. package/dist/components/ui/button.d.ts +11 -0
  27. package/dist/components/ui/button.d.ts.map +1 -0
  28. package/dist/components/ui/button.js +33 -0
  29. package/dist/components/ui/card.d.ts +10 -0
  30. package/dist/components/ui/card.d.ts.map +1 -0
  31. package/dist/components/ui/card.js +24 -0
  32. package/dist/components/ui/category-tree.d.ts +16 -0
  33. package/dist/components/ui/category-tree.d.ts.map +1 -0
  34. package/dist/components/ui/category-tree.js +74 -0
  35. package/dist/components/ui/checkout-button.d.ts +11 -0
  36. package/dist/components/ui/checkout-button.d.ts.map +1 -0
  37. package/dist/components/ui/checkout-button.js +174 -0
  38. package/dist/components/ui/guest-checkout-modal.d.ts +19 -0
  39. package/dist/components/ui/guest-checkout-modal.d.ts.map +1 -0
  40. package/dist/components/ui/guest-checkout-modal.js +92 -0
  41. package/dist/components/ui/image-skeleton.d.ts +7 -0
  42. package/dist/components/ui/image-skeleton.d.ts.map +1 -0
  43. package/dist/components/ui/image-skeleton.js +15 -0
  44. package/dist/components/ui/image-with-fallback.d.ts +9 -0
  45. package/dist/components/ui/image-with-fallback.d.ts.map +1 -0
  46. package/dist/components/ui/image-with-fallback.js +203 -0
  47. package/dist/components/ui/input.d.ts +6 -0
  48. package/dist/components/ui/input.d.ts.map +1 -0
  49. package/dist/components/ui/input.js +8 -0
  50. package/dist/components/ui/loading-skeleton-wrapper.d.ts +6 -0
  51. package/dist/components/ui/loading-skeleton-wrapper.d.ts.map +1 -0
  52. package/dist/components/ui/loading-skeleton-wrapper.js +10 -0
  53. package/dist/components/ui/modal.d.ts +11 -0
  54. package/dist/components/ui/modal.d.ts.map +1 -0
  55. package/dist/components/ui/modal.js +26 -0
  56. package/dist/components/ui/otp-input.d.ts +10 -0
  57. package/dist/components/ui/otp-input.d.ts.map +1 -0
  58. package/dist/components/ui/otp-input.js +57 -0
  59. package/dist/components/ui/out-of-stock-overlay.d.ts +8 -0
  60. package/dist/components/ui/out-of-stock-overlay.d.ts.map +1 -0
  61. package/dist/components/ui/out-of-stock-overlay.js +12 -0
  62. package/dist/components/ui/page-animate-wrapper.d.ts +7 -0
  63. package/dist/components/ui/page-animate-wrapper.d.ts.map +1 -0
  64. package/dist/components/ui/page-animate-wrapper.js +16 -0
  65. package/dist/components/ui/page-content-loader.d.ts +13 -0
  66. package/dist/components/ui/page-content-loader.d.ts.map +1 -0
  67. package/dist/components/ui/page-content-loader.js +12 -0
  68. package/dist/components/ui/page-loader.d.ts +20 -0
  69. package/dist/components/ui/page-loader.d.ts.map +1 -0
  70. package/dist/components/ui/page-loader.js +31 -0
  71. package/dist/components/ui/product-card.d.ts +11 -0
  72. package/dist/components/ui/product-card.d.ts.map +1 -0
  73. package/dist/components/ui/product-card.js +95 -0
  74. package/dist/components/ui/product-rating.d.ts +17 -0
  75. package/dist/components/ui/product-rating.d.ts.map +1 -0
  76. package/dist/components/ui/product-rating.js +54 -0
  77. package/dist/components/ui/review-form.d.ts +9 -0
  78. package/dist/components/ui/review-form.d.ts.map +1 -0
  79. package/dist/components/ui/review-form.js +28 -0
  80. package/dist/components/ui/route-skeleton-loader.d.ts +7 -0
  81. package/dist/components/ui/route-skeleton-loader.d.ts.map +1 -0
  82. package/dist/components/ui/route-skeleton-loader.js +75 -0
  83. package/dist/components/ui/sheet.d.ts +12 -0
  84. package/dist/components/ui/sheet.d.ts.map +1 -0
  85. package/dist/components/ui/sheet.js +29 -0
  86. package/dist/components/ui/skeleton.d.ts +3 -0
  87. package/dist/components/ui/skeleton.d.ts.map +1 -0
  88. package/dist/components/ui/skeleton.js +6 -0
  89. package/dist/components/ui/skeletons/category-grid-skeleton.d.ts +6 -0
  90. package/dist/components/ui/skeletons/category-grid-skeleton.d.ts.map +1 -0
  91. package/dist/components/ui/skeletons/category-grid-skeleton.js +16 -0
  92. package/dist/components/ui/skeletons/checkout-skeleton.d.ts +2 -0
  93. package/dist/components/ui/skeletons/checkout-skeleton.d.ts.map +1 -0
  94. package/dist/components/ui/skeletons/checkout-skeleton.js +4 -0
  95. package/dist/components/ui/skeletons/index.d.ts +6 -0
  96. package/dist/components/ui/skeletons/index.d.ts.map +1 -0
  97. package/dist/components/ui/skeletons/index.js +5 -0
  98. package/dist/components/ui/skeletons/page-skeleton.d.ts +2 -0
  99. package/dist/components/ui/skeletons/page-skeleton.d.ts.map +1 -0
  100. package/dist/components/ui/skeletons/page-skeleton.js +4 -0
  101. package/dist/components/ui/skeletons/product-card-skeleton.d.ts +2 -0
  102. package/dist/components/ui/skeletons/product-card-skeleton.d.ts.map +1 -0
  103. package/dist/components/ui/skeletons/product-card-skeleton.js +4 -0
  104. package/dist/components/ui/skeletons/product-detail-skeleton.d.ts +2 -0
  105. package/dist/components/ui/skeletons/product-detail-skeleton.d.ts.map +1 -0
  106. package/dist/components/ui/skeletons/product-detail-skeleton.js +4 -0
  107. package/dist/components/ui/skeletons/product-grid-skeleton.d.ts +7 -0
  108. package/dist/components/ui/skeletons/product-grid-skeleton.d.ts.map +1 -0
  109. package/dist/components/ui/skeletons/product-grid-skeleton.js +12 -0
  110. package/dist/components/ui/store-logos.d.ts +43 -0
  111. package/dist/components/ui/store-logos.d.ts.map +1 -0
  112. package/dist/components/ui/store-logos.js +83 -0
  113. package/dist/components/ui/toast.d.ts +19 -0
  114. package/dist/components/ui/toast.d.ts.map +1 -0
  115. package/dist/components/ui/toast.js +33 -0
  116. package/dist/components/ui/video-player.d.ts +48 -0
  117. package/dist/components/ui/video-player.d.ts.map +1 -0
  118. package/dist/components/ui/video-player.js +96 -0
  119. package/dist/hooks/use-analytics.d.ts +14 -0
  120. package/dist/hooks/use-analytics.d.ts.map +1 -0
  121. package/dist/hooks/use-analytics.js +66 -0
  122. package/dist/hooks/use-api.d.ts +17 -0
  123. package/dist/hooks/use-api.d.ts.map +1 -0
  124. package/dist/hooks/use-api.js +53 -0
  125. package/dist/hooks/use-cart-api.d.ts +17 -0
  126. package/dist/hooks/use-cart-api.d.ts.map +1 -0
  127. package/dist/hooks/use-cart-api.js +134 -0
  128. package/dist/hooks/use-content-ready.d.ts +17 -0
  129. package/dist/hooks/use-content-ready.d.ts.map +1 -0
  130. package/dist/hooks/use-content-ready.js +197 -0
  131. package/dist/hooks/use-navigation-loading.d.ts +4 -0
  132. package/dist/hooks/use-navigation-loading.d.ts.map +1 -0
  133. package/dist/hooks/use-navigation-loading.js +14 -0
  134. package/dist/hooks/use-payaza-checkout.d.ts +14 -0
  135. package/dist/hooks/use-payaza-checkout.d.ts.map +1 -0
  136. package/dist/hooks/use-payaza-checkout.js +56 -0
  137. package/dist/hooks/use-products-api.d.ts +19 -0
  138. package/dist/hooks/use-products-api.d.ts.map +1 -0
  139. package/dist/hooks/use-products-api.js +84 -0
  140. package/dist/hooks/use-store-api.d.ts +12 -0
  141. package/dist/hooks/use-store-api.d.ts.map +1 -0
  142. package/dist/hooks/use-store-api.js +73 -0
  143. package/dist/index.d.ts +116 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +126 -0
  146. package/dist/json/booking-agenda.json +18 -0
  147. package/dist/json/booking.json +71 -0
  148. package/dist/json/clothing-minimal.json +26 -0
  149. package/dist/json/clothing.json +169 -0
  150. package/dist/json/electronics-grid.json +18 -0
  151. package/dist/json/electronics.json +50 -0
  152. package/dist/json/food-modern.json +38 -0
  153. package/dist/json/food.json +85 -0
  154. package/dist/json/json-map.d.ts +7 -0
  155. package/dist/json/json-map.d.ts.map +1 -0
  156. package/dist/json/json-map.js +36 -0
  157. package/dist/json/motivational-speaker.json +96 -0
  158. package/dist/layouts/booking/components/BookingHomePage.d.ts +7 -0
  159. package/dist/layouts/booking/components/BookingHomePage.d.ts.map +1 -0
  160. package/dist/layouts/booking/components/BookingHomePage.js +49 -0
  161. package/dist/layouts/booking/index.d.ts +9 -0
  162. package/dist/layouts/booking/index.d.ts.map +1 -0
  163. package/dist/layouts/booking/index.js +9 -0
  164. package/dist/layouts/booking/pages/AboutPage.d.ts +7 -0
  165. package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -0
  166. package/dist/layouts/booking/pages/AboutPage.js +45 -0
  167. package/dist/layouts/booking/pages/BookPage.d.ts +8 -0
  168. package/dist/layouts/booking/pages/BookPage.d.ts.map +1 -0
  169. package/dist/layouts/booking/pages/BookPage.js +441 -0
  170. package/dist/layouts/booking/pages/CategoriesPage.d.ts +7 -0
  171. package/dist/layouts/booking/pages/CategoriesPage.d.ts.map +1 -0
  172. package/dist/layouts/booking/pages/CategoriesPage.js +162 -0
  173. package/dist/layouts/booking/pages/CategoryPage.d.ts +8 -0
  174. package/dist/layouts/booking/pages/CategoryPage.d.ts.map +1 -0
  175. package/dist/layouts/booking/pages/CategoryPage.js +67 -0
  176. package/dist/layouts/booking/pages/ContactPage.d.ts +7 -0
  177. package/dist/layouts/booking/pages/ContactPage.d.ts.map +1 -0
  178. package/dist/layouts/booking/pages/ContactPage.js +20 -0
  179. package/dist/layouts/booking/pages/ProductDetailPage.d.ts +8 -0
  180. package/dist/layouts/booking/pages/ProductDetailPage.d.ts.map +1 -0
  181. package/dist/layouts/booking/pages/ProductDetailPage.js +502 -0
  182. package/dist/layouts/booking/pages/ServicesPage.d.ts +9 -0
  183. package/dist/layouts/booking/pages/ServicesPage.d.ts.map +1 -0
  184. package/dist/layouts/booking/pages/ServicesPage.js +31 -0
  185. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts +7 -0
  186. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts.map +1 -0
  187. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +186 -0
  188. package/dist/layouts/booking-agenda/index.d.ts +9 -0
  189. package/dist/layouts/booking-agenda/index.d.ts.map +1 -0
  190. package/dist/layouts/booking-agenda/index.js +9 -0
  191. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts +7 -0
  192. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -0
  193. package/dist/layouts/booking-agenda/pages/AboutPage.js +45 -0
  194. package/dist/layouts/booking-agenda/pages/BookPage.d.ts +8 -0
  195. package/dist/layouts/booking-agenda/pages/BookPage.d.ts.map +1 -0
  196. package/dist/layouts/booking-agenda/pages/BookPage.js +441 -0
  197. package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts +7 -0
  198. package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts.map +1 -0
  199. package/dist/layouts/booking-agenda/pages/CategoriesPage.js +162 -0
  200. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts +8 -0
  201. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts.map +1 -0
  202. package/dist/layouts/booking-agenda/pages/CategoryPage.js +67 -0
  203. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts +7 -0
  204. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts.map +1 -0
  205. package/dist/layouts/booking-agenda/pages/ContactPage.js +20 -0
  206. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts +8 -0
  207. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts.map +1 -0
  208. package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +502 -0
  209. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts +9 -0
  210. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts.map +1 -0
  211. package/dist/layouts/booking-agenda/pages/ServicesPage.js +31 -0
  212. package/dist/layouts/clothing/components/ClothingHomePage.d.ts +7 -0
  213. package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -0
  214. package/dist/layouts/clothing/components/ClothingHomePage.js +295 -0
  215. package/dist/layouts/clothing/index.d.ts +8 -0
  216. package/dist/layouts/clothing/index.d.ts.map +1 -0
  217. package/dist/layouts/clothing/index.js +8 -0
  218. package/dist/layouts/clothing/pages/AboutPage.d.ts +7 -0
  219. package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -0
  220. package/dist/layouts/clothing/pages/AboutPage.js +45 -0
  221. package/dist/layouts/clothing/pages/CategoriesPage.d.ts +7 -0
  222. package/dist/layouts/clothing/pages/CategoriesPage.d.ts.map +1 -0
  223. package/dist/layouts/clothing/pages/CategoriesPage.js +162 -0
  224. package/dist/layouts/clothing/pages/CategoryPage.d.ts +8 -0
  225. package/dist/layouts/clothing/pages/CategoryPage.d.ts.map +1 -0
  226. package/dist/layouts/clothing/pages/CategoryPage.js +67 -0
  227. package/dist/layouts/clothing/pages/ContactPage.d.ts +7 -0
  228. package/dist/layouts/clothing/pages/ContactPage.d.ts.map +1 -0
  229. package/dist/layouts/clothing/pages/ContactPage.js +20 -0
  230. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts +8 -0
  231. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts.map +1 -0
  232. package/dist/layouts/clothing/pages/ProductDetailPage.js +502 -0
  233. package/dist/layouts/clothing/pages/ProductsPage.d.ts +7 -0
  234. package/dist/layouts/clothing/pages/ProductsPage.d.ts.map +1 -0
  235. package/dist/layouts/clothing/pages/ProductsPage.js +297 -0
  236. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts +7 -0
  237. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -0
  238. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +48 -0
  239. package/dist/layouts/clothing-minimal/index.d.ts +8 -0
  240. package/dist/layouts/clothing-minimal/index.d.ts.map +1 -0
  241. package/dist/layouts/clothing-minimal/index.js +8 -0
  242. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts +7 -0
  243. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -0
  244. package/dist/layouts/clothing-minimal/pages/AboutPage.js +45 -0
  245. package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts +7 -0
  246. package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts.map +1 -0
  247. package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +162 -0
  248. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts +8 -0
  249. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts.map +1 -0
  250. package/dist/layouts/clothing-minimal/pages/CategoryPage.js +67 -0
  251. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts +7 -0
  252. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts.map +1 -0
  253. package/dist/layouts/clothing-minimal/pages/ContactPage.js +20 -0
  254. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts +8 -0
  255. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts.map +1 -0
  256. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +502 -0
  257. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts +7 -0
  258. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts.map +1 -0
  259. package/dist/layouts/clothing-minimal/pages/ProductsPage.js +297 -0
  260. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts +7 -0
  261. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts.map +1 -0
  262. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +34 -0
  263. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts +10 -0
  264. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts.map +1 -0
  265. package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +107 -0
  266. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts +7 -0
  267. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -0
  268. package/dist/layouts/electronics/components/ElectronicsHomePage.js +78 -0
  269. package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts +8 -0
  270. package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts.map +1 -0
  271. package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +10 -0
  272. package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts +7 -0
  273. package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts.map +1 -0
  274. package/dist/layouts/electronics/components/ElectronicsProductsPage.js +100 -0
  275. package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts +7 -0
  276. package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts.map +1 -0
  277. package/dist/layouts/electronics/components/ElectronicsStoreFooter.js +10 -0
  278. package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts +7 -0
  279. package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts.map +1 -0
  280. package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +27 -0
  281. package/dist/layouts/electronics/index.d.ts +19 -0
  282. package/dist/layouts/electronics/index.d.ts.map +1 -0
  283. package/dist/layouts/electronics/index.js +19 -0
  284. package/dist/layouts/electronics/pages/AboutPage.d.ts +7 -0
  285. package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -0
  286. package/dist/layouts/electronics/pages/AboutPage.js +45 -0
  287. package/dist/layouts/electronics/pages/CategoriesPage.d.ts +7 -0
  288. package/dist/layouts/electronics/pages/CategoriesPage.d.ts.map +1 -0
  289. package/dist/layouts/electronics/pages/CategoriesPage.js +6 -0
  290. package/dist/layouts/electronics/pages/CategoryPage.d.ts +8 -0
  291. package/dist/layouts/electronics/pages/CategoryPage.d.ts.map +1 -0
  292. package/dist/layouts/electronics/pages/CategoryPage.js +67 -0
  293. package/dist/layouts/electronics/pages/ContactPage.d.ts +7 -0
  294. package/dist/layouts/electronics/pages/ContactPage.d.ts.map +1 -0
  295. package/dist/layouts/electronics/pages/ContactPage.js +20 -0
  296. package/dist/layouts/electronics/pages/HelpCenterPage.d.ts +7 -0
  297. package/dist/layouts/electronics/pages/HelpCenterPage.d.ts.map +1 -0
  298. package/dist/layouts/electronics/pages/HelpCenterPage.js +55 -0
  299. package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts +7 -0
  300. package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts.map +1 -0
  301. package/dist/layouts/electronics/pages/PrivacyPolicyPage.js +8 -0
  302. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts +8 -0
  303. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts.map +1 -0
  304. package/dist/layouts/electronics/pages/ProductDetailPage.js +502 -0
  305. package/dist/layouts/electronics/pages/ProductsPage.d.ts +7 -0
  306. package/dist/layouts/electronics/pages/ProductsPage.d.ts.map +1 -0
  307. package/dist/layouts/electronics/pages/ProductsPage.js +297 -0
  308. package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts +7 -0
  309. package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts.map +1 -0
  310. package/dist/layouts/electronics/pages/ShippingReturnsPage.js +7 -0
  311. package/dist/layouts/electronics/pages/TermsPage.d.ts +7 -0
  312. package/dist/layouts/electronics/pages/TermsPage.d.ts.map +1 -0
  313. package/dist/layouts/electronics/pages/TermsPage.js +8 -0
  314. package/dist/layouts/electronics/pages/TrackOrderPage.d.ts +7 -0
  315. package/dist/layouts/electronics/pages/TrackOrderPage.d.ts.map +1 -0
  316. package/dist/layouts/electronics/pages/TrackOrderPage.js +371 -0
  317. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts +10 -0
  318. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts.map +1 -0
  319. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +107 -0
  320. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts +7 -0
  321. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts.map +1 -0
  322. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +89 -0
  323. package/dist/layouts/electronics-grid/index.d.ts +15 -0
  324. package/dist/layouts/electronics-grid/index.d.ts.map +1 -0
  325. package/dist/layouts/electronics-grid/index.js +15 -0
  326. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts +7 -0
  327. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -0
  328. package/dist/layouts/electronics-grid/pages/AboutPage.js +45 -0
  329. package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts +7 -0
  330. package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts.map +1 -0
  331. package/dist/layouts/electronics-grid/pages/CategoriesPage.js +6 -0
  332. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts +8 -0
  333. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts.map +1 -0
  334. package/dist/layouts/electronics-grid/pages/CategoryPage.js +67 -0
  335. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts +7 -0
  336. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts.map +1 -0
  337. package/dist/layouts/electronics-grid/pages/ContactPage.js +20 -0
  338. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts +7 -0
  339. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts.map +1 -0
  340. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.js +15 -0
  341. package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts +7 -0
  342. package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts.map +1 -0
  343. package/dist/layouts/electronics-grid/pages/HelpCenterPage.js +55 -0
  344. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts +7 -0
  345. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts.map +1 -0
  346. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.js +8 -0
  347. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts +8 -0
  348. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts.map +1 -0
  349. package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +502 -0
  350. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts +7 -0
  351. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts.map +1 -0
  352. package/dist/layouts/electronics-grid/pages/ProductsPage.js +297 -0
  353. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts +7 -0
  354. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts.map +1 -0
  355. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.js +7 -0
  356. package/dist/layouts/electronics-grid/pages/TermsPage.d.ts +7 -0
  357. package/dist/layouts/electronics-grid/pages/TermsPage.d.ts.map +1 -0
  358. package/dist/layouts/electronics-grid/pages/TermsPage.js +8 -0
  359. package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts +7 -0
  360. package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts.map +1 -0
  361. package/dist/layouts/electronics-grid/pages/TrackOrderPage.js +371 -0
  362. package/dist/layouts/food/components/FoodHomePage.d.ts +7 -0
  363. package/dist/layouts/food/components/FoodHomePage.d.ts.map +1 -0
  364. package/dist/layouts/food/components/FoodHomePage.js +304 -0
  365. package/dist/layouts/food/index.d.ts +9 -0
  366. package/dist/layouts/food/index.d.ts.map +1 -0
  367. package/dist/layouts/food/index.js +9 -0
  368. package/dist/layouts/food/pages/AboutPage.d.ts +7 -0
  369. package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -0
  370. package/dist/layouts/food/pages/AboutPage.js +45 -0
  371. package/dist/layouts/food/pages/CategoriesPage.d.ts +7 -0
  372. package/dist/layouts/food/pages/CategoriesPage.d.ts.map +1 -0
  373. package/dist/layouts/food/pages/CategoriesPage.js +162 -0
  374. package/dist/layouts/food/pages/CategoryPage.d.ts +8 -0
  375. package/dist/layouts/food/pages/CategoryPage.d.ts.map +1 -0
  376. package/dist/layouts/food/pages/CategoryPage.js +67 -0
  377. package/dist/layouts/food/pages/ContactPage.d.ts +7 -0
  378. package/dist/layouts/food/pages/ContactPage.d.ts.map +1 -0
  379. package/dist/layouts/food/pages/ContactPage.js +20 -0
  380. package/dist/layouts/food/pages/MenuPage.d.ts +8 -0
  381. package/dist/layouts/food/pages/MenuPage.d.ts.map +1 -0
  382. package/dist/layouts/food/pages/MenuPage.js +75 -0
  383. package/dist/layouts/food/pages/ProductDetailPage.d.ts +8 -0
  384. package/dist/layouts/food/pages/ProductDetailPage.d.ts.map +1 -0
  385. package/dist/layouts/food/pages/ProductDetailPage.js +502 -0
  386. package/dist/layouts/food/pages/ProductsPage.d.ts +7 -0
  387. package/dist/layouts/food/pages/ProductsPage.d.ts.map +1 -0
  388. package/dist/layouts/food/pages/ProductsPage.js +297 -0
  389. package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts +7 -0
  390. package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts.map +1 -0
  391. package/dist/layouts/food-modern/components/FoodHomePageModern.js +118 -0
  392. package/dist/layouts/food-modern/index.d.ts +9 -0
  393. package/dist/layouts/food-modern/index.d.ts.map +1 -0
  394. package/dist/layouts/food-modern/index.js +9 -0
  395. package/dist/layouts/food-modern/pages/AboutPage.d.ts +7 -0
  396. package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -0
  397. package/dist/layouts/food-modern/pages/AboutPage.js +45 -0
  398. package/dist/layouts/food-modern/pages/CategoriesPage.d.ts +7 -0
  399. package/dist/layouts/food-modern/pages/CategoriesPage.d.ts.map +1 -0
  400. package/dist/layouts/food-modern/pages/CategoriesPage.js +162 -0
  401. package/dist/layouts/food-modern/pages/CategoryPage.d.ts +8 -0
  402. package/dist/layouts/food-modern/pages/CategoryPage.d.ts.map +1 -0
  403. package/dist/layouts/food-modern/pages/CategoryPage.js +67 -0
  404. package/dist/layouts/food-modern/pages/ContactPage.d.ts +7 -0
  405. package/dist/layouts/food-modern/pages/ContactPage.d.ts.map +1 -0
  406. package/dist/layouts/food-modern/pages/ContactPage.js +20 -0
  407. package/dist/layouts/food-modern/pages/MenuPage.d.ts +8 -0
  408. package/dist/layouts/food-modern/pages/MenuPage.d.ts.map +1 -0
  409. package/dist/layouts/food-modern/pages/MenuPage.js +75 -0
  410. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts +8 -0
  411. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts.map +1 -0
  412. package/dist/layouts/food-modern/pages/ProductDetailPage.js +502 -0
  413. package/dist/layouts/food-modern/pages/ProductsPage.d.ts +7 -0
  414. package/dist/layouts/food-modern/pages/ProductsPage.d.ts.map +1 -0
  415. package/dist/layouts/food-modern/pages/ProductsPage.js +297 -0
  416. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts +7 -0
  417. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts.map +1 -0
  418. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.js +115 -0
  419. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts +8 -0
  420. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts.map +1 -0
  421. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.js +10 -0
  422. package/dist/layouts/motivational-speaker/index.d.ts +10 -0
  423. package/dist/layouts/motivational-speaker/index.d.ts.map +1 -0
  424. package/dist/layouts/motivational-speaker/index.js +10 -0
  425. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts +7 -0
  426. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -0
  427. package/dist/layouts/motivational-speaker/pages/AboutPage.js +45 -0
  428. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts +8 -0
  429. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts.map +1 -0
  430. package/dist/layouts/motivational-speaker/pages/CategoryPage.js +67 -0
  431. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts +7 -0
  432. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts.map +1 -0
  433. package/dist/layouts/motivational-speaker/pages/ContactPage.js +20 -0
  434. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts +7 -0
  435. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts.map +1 -0
  436. package/dist/layouts/motivational-speaker/pages/ProductsPage.js +297 -0
  437. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts +8 -0
  438. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts.map +1 -0
  439. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.js +144 -0
  440. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts +9 -0
  441. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts.map +1 -0
  442. package/dist/layouts/motivational-speaker/pages/ServicesPage.js +31 -0
  443. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts +7 -0
  444. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts.map +1 -0
  445. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.js +136 -0
  446. package/dist/layouts/shared/components/BaseStoreLayout.d.ts +8 -0
  447. package/dist/layouts/shared/components/BaseStoreLayout.d.ts.map +1 -0
  448. package/dist/layouts/shared/components/BaseStoreLayout.js +59 -0
  449. package/dist/layouts/shared/components/GenericPageWrapper.d.ts +8 -0
  450. package/dist/layouts/shared/components/GenericPageWrapper.d.ts.map +1 -0
  451. package/dist/layouts/shared/components/GenericPageWrapper.js +19 -0
  452. package/dist/layouts/shared/components/PromoBanner.d.ts +9 -0
  453. package/dist/layouts/shared/components/PromoBanner.d.ts.map +1 -0
  454. package/dist/layouts/shared/components/PromoBanner.js +14 -0
  455. package/dist/layouts/shared/components/StoreFooter.d.ts +7 -0
  456. package/dist/layouts/shared/components/StoreFooter.d.ts.map +1 -0
  457. package/dist/layouts/shared/components/StoreFooter.js +147 -0
  458. package/dist/layouts/shared/components/StoreHeader.d.ts +8 -0
  459. package/dist/layouts/shared/components/StoreHeader.d.ts.map +1 -0
  460. package/dist/layouts/shared/components/StoreHeader.js +87 -0
  461. package/dist/layouts/shared/components/TestimonialCard.d.ts +8 -0
  462. package/dist/layouts/shared/components/TestimonialCard.d.ts.map +1 -0
  463. package/dist/layouts/shared/components/TestimonialCard.js +10 -0
  464. package/dist/layouts/shared/index.d.ts +23 -0
  465. package/dist/layouts/shared/index.d.ts.map +1 -0
  466. package/dist/layouts/shared/index.js +23 -0
  467. package/dist/layouts/shared/pages/AccountPage.d.ts +7 -0
  468. package/dist/layouts/shared/pages/AccountPage.d.ts.map +1 -0
  469. package/dist/layouts/shared/pages/AccountPage.js +605 -0
  470. package/dist/layouts/shared/pages/CartPage.d.ts +7 -0
  471. package/dist/layouts/shared/pages/CartPage.d.ts.map +1 -0
  472. package/dist/layouts/shared/pages/CartPage.js +83 -0
  473. package/dist/layouts/shared/pages/CheckoutPage.d.ts +7 -0
  474. package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -0
  475. package/dist/layouts/shared/pages/CheckoutPage.js +860 -0
  476. package/dist/layouts/shared/pages/CookiePolicyPage.d.ts +7 -0
  477. package/dist/layouts/shared/pages/CookiePolicyPage.d.ts.map +1 -0
  478. package/dist/layouts/shared/pages/CookiePolicyPage.js +8 -0
  479. package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts +9 -0
  480. package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts.map +1 -0
  481. package/dist/layouts/shared/pages/FeatureDisabledPage.js +8 -0
  482. package/dist/layouts/shared/pages/HelpCenterPage.d.ts +7 -0
  483. package/dist/layouts/shared/pages/HelpCenterPage.d.ts.map +1 -0
  484. package/dist/layouts/shared/pages/HelpCenterPage.js +55 -0
  485. package/dist/layouts/shared/pages/MaintenancePage.d.ts +7 -0
  486. package/dist/layouts/shared/pages/MaintenancePage.d.ts.map +1 -0
  487. package/dist/layouts/shared/pages/MaintenancePage.js +44 -0
  488. package/dist/layouts/shared/pages/PortfolioPage.d.ts +7 -0
  489. package/dist/layouts/shared/pages/PortfolioPage.d.ts.map +1 -0
  490. package/dist/layouts/shared/pages/PortfolioPage.js +130 -0
  491. package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts +7 -0
  492. package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts.map +1 -0
  493. package/dist/layouts/shared/pages/PrivacyPolicyPage.js +8 -0
  494. package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts +7 -0
  495. package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts.map +1 -0
  496. package/dist/layouts/shared/pages/ShippingReturnsPage.js +7 -0
  497. package/dist/layouts/shared/pages/SizeGuidePage.d.ts +7 -0
  498. package/dist/layouts/shared/pages/SizeGuidePage.d.ts.map +1 -0
  499. package/dist/layouts/shared/pages/SizeGuidePage.js +10 -0
  500. package/dist/layouts/shared/pages/StyleGuidePage.d.ts +7 -0
  501. package/dist/layouts/shared/pages/StyleGuidePage.d.ts.map +1 -0
  502. package/dist/layouts/shared/pages/StyleGuidePage.js +126 -0
  503. package/dist/layouts/shared/pages/TeamPage.d.ts +7 -0
  504. package/dist/layouts/shared/pages/TeamPage.d.ts.map +1 -0
  505. package/dist/layouts/shared/pages/TeamPage.js +39 -0
  506. package/dist/layouts/shared/pages/TermsPage.d.ts +7 -0
  507. package/dist/layouts/shared/pages/TermsPage.d.ts.map +1 -0
  508. package/dist/layouts/shared/pages/TermsPage.js +8 -0
  509. package/dist/layouts/shared/pages/TrackOrderPage.d.ts +7 -0
  510. package/dist/layouts/shared/pages/TrackOrderPage.d.ts.map +1 -0
  511. package/dist/layouts/shared/pages/TrackOrderPage.js +371 -0
  512. package/dist/layouts/shared/pages/WishlistPage.d.ts +7 -0
  513. package/dist/layouts/shared/pages/WishlistPage.d.ts.map +1 -0
  514. package/dist/layouts/shared/pages/WishlistPage.js +162 -0
  515. package/dist/lib/api.d.ts +8 -0
  516. package/dist/lib/api.d.ts.map +1 -0
  517. package/dist/lib/api.js +109 -0
  518. package/dist/lib/auth-context.d.ts +30 -0
  519. package/dist/lib/auth-context.d.ts.map +1 -0
  520. package/dist/lib/auth-context.js +207 -0
  521. package/dist/lib/content-selectors.d.ts +21 -0
  522. package/dist/lib/content-selectors.d.ts.map +1 -0
  523. package/dist/lib/content-selectors.js +75 -0
  524. package/dist/lib/countries.d.ts +11 -0
  525. package/dist/lib/countries.d.ts.map +1 -0
  526. package/dist/lib/countries.js +252 -0
  527. package/dist/lib/currency-symbols.d.ts +36 -0
  528. package/dist/lib/currency-symbols.d.ts.map +1 -0
  529. package/dist/lib/currency-symbols.js +153 -0
  530. package/dist/lib/guest-user.d.ts +27 -0
  531. package/dist/lib/guest-user.d.ts.map +1 -0
  532. package/dist/lib/guest-user.js +71 -0
  533. package/dist/lib/loading-context.d.ts +19 -0
  534. package/dist/lib/loading-context.d.ts.map +1 -0
  535. package/dist/lib/loading-context.js +197 -0
  536. package/dist/lib/mock-stores.d.ts +22 -0
  537. package/dist/lib/mock-stores.d.ts.map +1 -0
  538. package/dist/lib/mock-stores.js +2099 -0
  539. package/dist/lib/payaza-checkout.d.ts +167 -0
  540. package/dist/lib/payaza-checkout.d.ts.map +1 -0
  541. package/dist/lib/payaza-checkout.js +455 -0
  542. package/dist/lib/services/analytics.service.d.ts +58 -0
  543. package/dist/lib/services/analytics.service.d.ts.map +1 -0
  544. package/dist/lib/services/analytics.service.js +182 -0
  545. package/dist/lib/services/auth.service.d.ts +63 -0
  546. package/dist/lib/services/auth.service.d.ts.map +1 -0
  547. package/dist/lib/services/auth.service.js +101 -0
  548. package/dist/lib/services/booking.service.d.ts +53 -0
  549. package/dist/lib/services/booking.service.d.ts.map +1 -0
  550. package/dist/lib/services/booking.service.js +52 -0
  551. package/dist/lib/services/cart.service.d.ts +37 -0
  552. package/dist/lib/services/cart.service.d.ts.map +1 -0
  553. package/dist/lib/services/cart.service.js +55 -0
  554. package/dist/lib/services/category.service.d.ts +21 -0
  555. package/dist/lib/services/category.service.d.ts.map +1 -0
  556. package/dist/lib/services/category.service.js +41 -0
  557. package/dist/lib/services/checkout.service.d.ts +79 -0
  558. package/dist/lib/services/checkout.service.d.ts.map +1 -0
  559. package/dist/lib/services/checkout.service.js +37 -0
  560. package/dist/lib/services/customer.service.d.ts +52 -0
  561. package/dist/lib/services/customer.service.d.ts.map +1 -0
  562. package/dist/lib/services/customer.service.js +64 -0
  563. package/dist/lib/services/fees.service.d.ts +23 -0
  564. package/dist/lib/services/fees.service.d.ts.map +1 -0
  565. package/dist/lib/services/fees.service.js +13 -0
  566. package/dist/lib/services/index.d.ts +19 -0
  567. package/dist/lib/services/index.d.ts.map +1 -0
  568. package/dist/lib/services/index.js +18 -0
  569. package/dist/lib/services/order.service.d.ts +107 -0
  570. package/dist/lib/services/order.service.d.ts.map +1 -0
  571. package/dist/lib/services/order.service.js +82 -0
  572. package/dist/lib/services/payment.service.d.ts +51 -0
  573. package/dist/lib/services/payment.service.d.ts.map +1 -0
  574. package/dist/lib/services/payment.service.js +105 -0
  575. package/dist/lib/services/product.service.d.ts +90 -0
  576. package/dist/lib/services/product.service.d.ts.map +1 -0
  577. package/dist/lib/services/product.service.js +86 -0
  578. package/dist/lib/services/promo.service.d.ts +31 -0
  579. package/dist/lib/services/promo.service.d.ts.map +1 -0
  580. package/dist/lib/services/promo.service.js +29 -0
  581. package/dist/lib/services/review.service.d.ts +47 -0
  582. package/dist/lib/services/review.service.d.ts.map +1 -0
  583. package/dist/lib/services/review.service.js +54 -0
  584. package/dist/lib/services/service.service.d.ts +55 -0
  585. package/dist/lib/services/service.service.d.ts.map +1 -0
  586. package/dist/lib/services/service.service.js +37 -0
  587. package/dist/lib/services/shipping.service.d.ts +44 -0
  588. package/dist/lib/services/shipping.service.d.ts.map +1 -0
  589. package/dist/lib/services/shipping.service.js +23 -0
  590. package/dist/lib/services/store.service.d.ts +87 -0
  591. package/dist/lib/services/store.service.d.ts.map +1 -0
  592. package/dist/lib/services/store.service.js +41 -0
  593. package/dist/lib/services/wishlist.service.d.ts +30 -0
  594. package/dist/lib/services/wishlist.service.d.ts.map +1 -0
  595. package/dist/lib/services/wishlist.service.js +53 -0
  596. package/dist/lib/store-config-utils.d.ts +41 -0
  597. package/dist/lib/store-config-utils.d.ts.map +1 -0
  598. package/dist/lib/store-config-utils.js +1535 -0
  599. package/dist/lib/store-config.d.ts +3 -0
  600. package/dist/lib/store-config.d.ts.map +1 -0
  601. package/dist/lib/store-config.js +2 -0
  602. package/dist/lib/store-context.d.ts +39 -0
  603. package/dist/lib/store-context.d.ts.map +1 -0
  604. package/dist/lib/store-context.js +803 -0
  605. package/dist/lib/store-types.d.ts +663 -0
  606. package/dist/lib/store-types.d.ts.map +1 -0
  607. package/dist/lib/store-types.js +1 -0
  608. package/dist/lib/utils/asset-helpers.d.ts +102 -0
  609. package/dist/lib/utils/asset-helpers.d.ts.map +1 -0
  610. package/dist/lib/utils/asset-helpers.js +395 -0
  611. package/dist/lib/utils/category-tree.d.ts +25 -0
  612. package/dist/lib/utils/category-tree.d.ts.map +1 -0
  613. package/dist/lib/utils/category-tree.js +85 -0
  614. package/dist/lib/utils/demo-detection.d.ts +23 -0
  615. package/dist/lib/utils/demo-detection.d.ts.map +1 -0
  616. package/dist/lib/utils/demo-detection.js +36 -0
  617. package/dist/lib/utils/fee-calculations.d.ts +35 -0
  618. package/dist/lib/utils/fee-calculations.d.ts.map +1 -0
  619. package/dist/lib/utils/fee-calculations.js +64 -0
  620. package/dist/lib/utils/index.d.ts +37 -0
  621. package/dist/lib/utils/index.d.ts.map +1 -0
  622. package/dist/lib/utils/index.js +160 -0
  623. package/dist/lib/utils/url-helpers.d.ts +30 -0
  624. package/dist/lib/utils/url-helpers.d.ts.map +1 -0
  625. package/dist/lib/utils/url-helpers.js +56 -0
  626. package/dist/lib/utils/video-helpers.d.ts +32 -0
  627. package/dist/lib/utils/video-helpers.d.ts.map +1 -0
  628. package/dist/lib/utils/video-helpers.js +210 -0
  629. package/package.json +92 -0
@@ -0,0 +1,297 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button } from '../../../components/ui/button';
4
+ import { Breadcrumbs } from '../../../components/ui/breadcrumbs';
5
+ import { Sheet } from '../../../components/ui/sheet';
6
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
7
+ import { ProductCard } from '../../../components/ui/product-card';
8
+ import { ProductGridSkeleton } from '../../../components/ui/skeletons';
9
+ import { CategoryTree } from '../../../components/ui/category-tree';
10
+ import { useStore } from '../../../lib/store-context';
11
+ import { useToast } from '../../../components/ui/toast';
12
+ import { useLoading } from '../../../lib/loading-context';
13
+ import { useAnalytics } from '../../../hooks/use-analytics';
14
+ import { ChevronDown, ChevronUp, Star, Check, Search, RotateCcw, SlidersHorizontal } from 'lucide-react';
15
+ import { useSearchParams } from 'next/navigation';
16
+ import { useState, useMemo, useEffect, Suspense } from 'react';
17
+ import { formatCurrency, filterActiveProducts } from '../../../lib/utils';
18
+ import { getAllCategoryIds, flattenCategoryTree, buildCategoryTree } from '../../../lib/utils/category-tree';
19
+ import { getBannerImage, getLayoutText } from '../../../lib/utils/asset-helpers';
20
+ import { shouldUseAPI } from '../../../lib/utils/demo-detection';
21
+ function ProductsPageContent({ storeConfig }) {
22
+ const searchParams = useSearchParams();
23
+ const categoryParam = searchParams.get('category');
24
+ const [products, setProducts] = useState(() => {
25
+ // Filter out inactive/deleted products first
26
+ let initialProducts = filterActiveProducts(storeConfig.products || []);
27
+ // Ensure all products have unique IDs just in case mock data has duplicates
28
+ // or if we are artificially duplicating for grid demo
29
+ if (initialProducts.length > 0) {
30
+ // If very few products, duplicate them to show grid structure
31
+ if (initialProducts.length < 4) {
32
+ initialProducts = [...initialProducts, ...initialProducts].map((p, i) => ({
33
+ ...p,
34
+ id: `${p.id}-copy-${i}`,
35
+ name: `${p.name} ${i > 0 ? '(Copy)' : ''}`
36
+ }));
37
+ }
38
+ else {
39
+ // Even if enough products, ensure IDs are unique strings
40
+ // (Mock data usually is fine, but this is a safeguard)
41
+ const seenIds = new Set();
42
+ initialProducts = initialProducts.map((p, i) => {
43
+ if (seenIds.has(p.id)) {
44
+ return { ...p, id: `${p.id}-${i}` };
45
+ }
46
+ seenIds.add(p.id);
47
+ return p;
48
+ });
49
+ }
50
+ }
51
+ return initialProducts;
52
+ });
53
+ const [isLoadingProducts, setIsLoadingProducts] = useState(false);
54
+ const categories = storeConfig.categories || [];
55
+ // Update products when storeConfig.products changes (e.g., after async load)
56
+ useEffect(() => {
57
+ if (storeConfig.products && storeConfig.products.length > 0) {
58
+ setProducts(storeConfig.products);
59
+ }
60
+ else if (storeConfig.products && storeConfig.products.length === 0 && !isLoadingProducts) {
61
+ // If products array is empty, try to fetch from API
62
+ const fetchProducts = async () => {
63
+ setIsLoadingProducts(true);
64
+ startBackendLoading();
65
+ try {
66
+ const { productService } = await import('../../../lib/services/product.service');
67
+ const { transformProductToStoreProduct } = await import('../../../lib/store-config-utils');
68
+ const response = await productService.getProducts({
69
+ storeId: storeConfig.id,
70
+ limit: 1000,
71
+ });
72
+ const fetchedProducts = response.data.map(transformProductToStoreProduct);
73
+ setProducts(fetchedProducts);
74
+ }
75
+ catch (error) {
76
+ console.error('Failed to fetch products:', error);
77
+ // Keep empty array on error
78
+ }
79
+ finally {
80
+ setIsLoadingProducts(false);
81
+ stopBackendLoading();
82
+ }
83
+ };
84
+ fetchProducts();
85
+ }
86
+ // eslint-disable-next-line react-hooks/exhaustive-deps
87
+ }, [storeConfig.products, storeConfig.id]); // Removed isLoadingProducts from deps to prevent infinite loops
88
+ const { addToCart } = useStore();
89
+ const { addToast } = useToast();
90
+ const { startBackendLoading, stopBackendLoading } = useLoading();
91
+ const { trackEvent } = useAnalytics();
92
+ // State for filters & sort
93
+ const [selectedBrands, setSelectedBrands] = useState([]);
94
+ const [selectedCategories, setSelectedCategories] = useState([]);
95
+ const [priceRange, setPriceRange] = useState([0, 5000]);
96
+ const [selectedCategoryFilter, setSelectedCategoryFilter] = useState(null);
97
+ // Initialize filters from URL
98
+ useEffect(() => {
99
+ if (categoryParam) {
100
+ setSelectedCategoryFilter(categoryParam);
101
+ }
102
+ }, [categoryParam]);
103
+ const [minRating, setMinRating] = useState(null);
104
+ const [showInStockOnly, setShowInStockOnly] = useState(false);
105
+ const [showMoreBrands, setShowMoreBrands] = useState(false);
106
+ const [isFilterOpen, setIsFilterOpen] = useState(false);
107
+ const [sortBy, setSortBy] = useState('featured');
108
+ const [visibleProducts, setVisibleProducts] = useState(12);
109
+ const [isFiltering, setIsFiltering] = useState(false);
110
+ // Extract unique brands
111
+ const brands = useMemo(() => {
112
+ const brandSet = new Set();
113
+ products.forEach(product => {
114
+ // First check specifications for Brand
115
+ if (product.specifications?.Brand) {
116
+ brandSet.add(product.specifications.Brand);
117
+ }
118
+ else {
119
+ // Fallback to regex matching common brand names
120
+ const brandMatch = product.name.match(/\b(Reebok|Nike|Adidas|Puma|Zara|Dickies|Vans|Uniqlo|New Balance|Converse|Sony|Samsung|Apple|Dell|HP|Gucci|Prada|Versace|Armani|Calvin Klein|Tommy Hilfiger|Levi's|Gap|H&M|Forever 21|ASOS|Shein|Amazon|Microsoft|LG|Canon|Nikon|Bose|JBL|Beats|Ray-Ban|Oakley)\b/i);
121
+ if (brandMatch) {
122
+ brandSet.add(brandMatch[1]);
123
+ }
124
+ }
125
+ });
126
+ return Array.from(brandSet).sort();
127
+ }, [products]);
128
+ // Track filter changes and show loading
129
+ useEffect(() => {
130
+ setIsFiltering(true);
131
+ const timer = setTimeout(() => setIsFiltering(false), 300);
132
+ return () => clearTimeout(timer);
133
+ }, [selectedBrands, selectedCategories, priceRange, selectedCategoryFilter, minRating, showInStockOnly, sortBy]);
134
+ // Build category tree for filtering
135
+ const categoryTree = useMemo(() => buildCategoryTree(categories), [categories]);
136
+ // Get all category IDs to filter (including children of selected parent categories)
137
+ const effectiveCategoryIds = useMemo(() => {
138
+ if (selectedCategories.length === 0)
139
+ return [];
140
+ const allIds = new Set();
141
+ const flatCategories = flattenCategoryTree(categoryTree);
142
+ selectedCategories.forEach(selectedId => {
143
+ allIds.add(selectedId);
144
+ // Find the category and add all its children
145
+ const category = flatCategories.find(c => c.id === selectedId);
146
+ if (category) {
147
+ const childIds = getAllCategoryIds(category);
148
+ childIds.forEach(id => allIds.add(id));
149
+ }
150
+ });
151
+ return Array.from(allIds);
152
+ }, [selectedCategories, categoryTree]);
153
+ // Filter & Sort Logic
154
+ const filteredAndSortedProducts = useMemo(() => {
155
+ let result = products.filter(product => {
156
+ // Brand filter
157
+ if (selectedBrands.length > 0) {
158
+ const productBrand = product.specifications?.Brand ||
159
+ product.name.match(/\b(Reebok|Nike|Adidas|Puma|Zara|Dickies|Vans|Uniqlo|New Balance|Converse|Sony|Samsung|Apple|Dell|HP|Gucci|Prada|Versace|Armani|Calvin Klein|Tommy Hilfiger|Levi's|Gap|H&M|Forever 21|ASOS|Shein|Amazon|Microsoft|LG|Canon|Nikon|Bose|JBL|Beats|Ray-Ban|Oakley)\b/i)?.[1];
160
+ if (!productBrand || !selectedBrands.includes(productBrand)) {
161
+ return false;
162
+ }
163
+ }
164
+ // Category filter (Sidebar) - includes parent and child categories
165
+ if (effectiveCategoryIds.length > 0) {
166
+ if (!effectiveCategoryIds.includes(product.categoryId)) {
167
+ return false;
168
+ }
169
+ }
170
+ // Price filter
171
+ if (product.price < priceRange[0] || product.price > priceRange[1]) {
172
+ return false;
173
+ }
174
+ // Category Filter (Top Buttons)
175
+ if (selectedCategoryFilter) {
176
+ const category = categories.find(c => c.slug === selectedCategoryFilter);
177
+ if (category && product.categoryId !== category.id) {
178
+ return false;
179
+ }
180
+ }
181
+ // Rating Filter
182
+ if (minRating !== null) {
183
+ const productRating = product.rating || 0;
184
+ if (productRating < minRating) {
185
+ return false;
186
+ }
187
+ }
188
+ // Availability Filter
189
+ if (showInStockOnly) {
190
+ if (!product.inStock) {
191
+ return false;
192
+ }
193
+ }
194
+ return true;
195
+ });
196
+ // Sorting
197
+ switch (sortBy) {
198
+ case 'price-asc':
199
+ result.sort((a, b) => a.price - b.price);
200
+ break;
201
+ case 'price-desc':
202
+ result.sort((a, b) => b.price - a.price);
203
+ break;
204
+ case 'newest':
205
+ // Simulating newness by ID or reverse original order
206
+ result.reverse();
207
+ break;
208
+ case 'rating':
209
+ result.sort((a, b) => (b.rating || 0) - (a.rating || 0));
210
+ break;
211
+ default:
212
+ // Featured - keep original order
213
+ break;
214
+ }
215
+ return result;
216
+ }, [products, selectedBrands, effectiveCategoryIds, priceRange, selectedCategoryFilter, minRating, showInStockOnly, sortBy, categories]);
217
+ const displayedProducts = filteredAndSortedProducts.slice(0, visibleProducts);
218
+ const hasMore = visibleProducts < filteredAndSortedProducts.length;
219
+ const handleAddToCart = (product) => {
220
+ addToCart(product);
221
+ addToast(`${product.name} added to cart`, 'success');
222
+ };
223
+ const handleQuickView = (product) => {
224
+ addToast(`Quick view for ${product.name}`, 'info');
225
+ };
226
+ const clearAllFilters = () => {
227
+ setSelectedBrands([]);
228
+ setSelectedCategories([]);
229
+ setPriceRange([0, 5000]);
230
+ setSelectedCategoryFilter(null);
231
+ setMinRating(null);
232
+ setShowInStockOnly(false);
233
+ };
234
+ const hasActiveFilters = selectedBrands.length > 0 ||
235
+ selectedCategories.length > 0 ||
236
+ priceRange[1] < 5000 ||
237
+ minRating !== null ||
238
+ showInStockOnly;
239
+ // Breadcrumbs
240
+ const breadcrumbItems = [
241
+ { label: storeConfig.name, href: `/${storeConfig.slug}` },
242
+ { label: 'Products', href: `/${storeConfig.slug}/products` },
243
+ ];
244
+ // Get layout config and category header image
245
+ const layoutConfig = storeConfig.layoutConfig;
246
+ const isRealStore = shouldUseAPI(storeConfig.slug);
247
+ // Debug logging for category header
248
+ console.log('[ProductsPage] LayoutConfig:', {
249
+ hasLayoutConfig: !!layoutConfig,
250
+ hasAssignedAssets: !!layoutConfig?.assignedAssets,
251
+ categoryHeaderFromAssets: layoutConfig?.assignedAssets?.category_header ? 'found' : 'not found',
252
+ hasAssignedText: !!layoutConfig?.assignedText,
253
+ categoryHeaderTitle: layoutConfig?.assignedText?.['category_header:title'],
254
+ });
255
+ // Get category header image from assignedAssets
256
+ const categoryHeaderImage = layoutConfig?.assignedAssets?.category_header ||
257
+ getBannerImage(storeConfig, 'category_header', '');
258
+ console.log('[ProductsPage] Category header image:', categoryHeaderImage ? 'found' : 'not found', categoryHeaderImage);
259
+ // Get category header title from assignedText
260
+ const categoryHeaderTitle = layoutConfig?.assignedText?.['category_header:title'] ||
261
+ getLayoutText(storeConfig, 'category_header:title', `Explore The Collections of ${storeConfig.name}`);
262
+ // Get category header buttons from configuration (if available)
263
+ // assignedText values are always strings
264
+ const categoryHeaderPrimaryButton = layoutConfig?.assignedText?.['category_header:primaryButton'];
265
+ const categoryHeaderSecondaryButton = layoutConfig?.assignedText?.['category_header:secondaryButton'];
266
+ // Determine button text - use database value if available and not empty, otherwise use fallback
267
+ // If database explicitly provides empty string, button will be hidden
268
+ const hasPrimaryButtonFromConfig = categoryHeaderPrimaryButton !== undefined && categoryHeaderPrimaryButton !== null;
269
+ const hasSecondaryButtonFromConfig = categoryHeaderSecondaryButton !== undefined && categoryHeaderSecondaryButton !== null;
270
+ const primaryButtonText = hasPrimaryButtonFromConfig
271
+ ? (categoryHeaderPrimaryButton && categoryHeaderPrimaryButton.trim() !== '' ? categoryHeaderPrimaryButton.trim() : null)
272
+ : getLayoutText(storeConfig, 'common.shopNow', 'Start Shopping');
273
+ const secondaryButtonText = hasSecondaryButtonFromConfig
274
+ ? (categoryHeaderSecondaryButton && categoryHeaderSecondaryButton.trim() !== '' ? categoryHeaderSecondaryButton.trim() : null)
275
+ : getLayoutText(storeConfig, 'sections.categories.viewAll', 'View Categories');
276
+ return (_jsxs("div", { className: "min-h-screen bg-white font-sans text-slate-900", children: [_jsxs("div", { className: "relative overflow-hidden bg-white", children: [categoryHeaderImage && (_jsxs("div", { className: "absolute inset-0 z-0", children: [_jsx(ImageWithFallback, { src: categoryHeaderImage, alt: categoryHeaderTitle || storeConfig.name, className: "w-full h-full object-cover", skeletonAspectRatio: "16/9" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/60 via-black/40 to-black/60" })] })), !categoryHeaderImage && (_jsxs("div", { className: "absolute top-0 left-0 w-full h-full overflow-hidden z-0 pointer-events-none", children: [_jsx("div", { className: "absolute top-[-10%] right-[-5%] w-[500px] h-[500px] bg-gray-100 rounded-full mix-blend-multiply filter blur-3xl opacity-70 animate-pulse-slow" }), _jsx("div", { className: "absolute bottom-[-10%] left-[-10%] w-[400px] h-[400px] bg-gray-50 rounded-full mix-blend-multiply filter blur-3xl opacity-70 animate-pulse-slow", style: { animationDelay: '2s' } })] })), _jsx("div", { className: `container mx-auto px-4 sm:px-6 lg:px-8 relative z-10 pt-12 pb-16 lg:pt-20 lg:pb-24 ${categoryHeaderImage ? 'min-h-[500px] flex items-center' : ''}`, children: _jsx("div", { className: "flex flex-col items-center w-full max-w-4xl mx-auto", children: _jsxs("div", { className: `w-full text-center lg:text-left animate-fade-in-up ${categoryHeaderImage ? 'text-white' : ''}`, children: [_jsx("div", { className: "flex justify-center lg:justify-start mb-6", children: _jsx("div", { className: categoryHeaderImage ? 'bg-white/10 backdrop-blur-md px-4 py-2 rounded-full border border-white/20' : '', children: _jsx(Breadcrumbs, { items: breadcrumbItems, variant: categoryHeaderImage ? 'light' : 'default' }) }) }), _jsxs("div", { className: `inline-flex items-center gap-2 px-3 py-1 rounded-full text-xs font-bold tracking-wider uppercase mb-6 ${categoryHeaderImage ? 'bg-white/20 backdrop-blur-md text-white border border-white/30' : 'bg-black/5 text-gray-900'}`, children: [_jsx("span", { className: `w-2 h-2 rounded-full animate-pulse ${categoryHeaderImage ? 'bg-white' : 'bg-black'}` }), getLayoutText(storeConfig, 'common.newArrivals', 'New Arrivals 2024')] }), _jsx("h1", { className: `text-4xl sm:text-5xl lg:text-6xl font-bold tracking-tight mb-6 leading-[1.1] ${categoryHeaderImage ? 'text-white' : 'text-gray-900'}`, children: categoryHeaderTitle || (_jsxs(_Fragment, { children: ["Explore The Collections of ", _jsx("br", {}), _jsx("span", { className: "text-transparent bg-clip-text bg-gradient-to-r from-gray-900 via-gray-700 to-gray-900", children: storeConfig.name })] })) }), _jsx("p", { className: `text-lg mb-8 leading-relaxed max-w-lg mx-auto lg:mx-0 ${categoryHeaderImage ? 'text-white/90' : 'text-gray-600'}`, children: getLayoutText(storeConfig, 'category_header:description', "Don't miss out on shopping our latest collection! curated for quality and style. Experience the perfect blend of modern aesthetics and premium craftsmanship.") }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-4 justify-center lg:justify-start", children: [primaryButtonText && primaryButtonText.trim() !== '' && (_jsx(Button, { className: `h-12 px-8 rounded-full text-base font-medium shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 ${categoryHeaderImage ? 'bg-white text-gray-900 hover:bg-gray-100' : ''}`, onClick: () => {
277
+ const element = document.getElementById('product-grid');
278
+ element?.scrollIntoView({ behavior: 'smooth' });
279
+ }, children: primaryButtonText })), secondaryButtonText && secondaryButtonText.trim() !== '' && (_jsx(Button, { className: `h-12 px-8 rounded-full text-base font-medium shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 ${categoryHeaderImage ? 'bg-white/10 backdrop-blur-md text-white border border-white/30 hover:bg-white/20' : 'bg-gray-100 text-gray-900 hover:bg-gray-200 border border-gray-200'}`, onClick: () => {
280
+ window.location.href = `/${storeConfig.slug}/categories`;
281
+ }, children: secondaryButtonText }))] })] }) }) })] }), _jsxs("div", { "data-content-ready": true, className: "container mx-auto px-4 sm:px-6 lg:px-8 py-8", children: [_jsxs("div", { className: "flex gap-3 mb-8 overflow-x-auto pb-2 scrollbar-hide", children: [_jsx("button", { onClick: () => setSelectedCategoryFilter(null), className: `px-6 py-2.5 rounded-lg text-sm font-semibold whitespace-nowrap transition-all ${!selectedCategoryFilter
282
+ ? 'bg-gray-900 text-white hover:bg-blue-600'
283
+ : 'bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600'}`, children: "All" }), categories.map((category) => (_jsx("button", { onClick: () => setSelectedCategoryFilter(selectedCategoryFilter === category.slug ? null : category.slug), className: `px-6 py-2.5 rounded-lg text-sm font-semibold whitespace-nowrap transition-all ${selectedCategoryFilter === category.slug
284
+ ? 'bg-gray-900 text-white hover:bg-blue-600'
285
+ : 'bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600'}`, children: category.name }, category.id)))] }), _jsxs("div", { id: "product-grid", className: "grid grid-cols-1 lg:grid-cols-4 gap-8", children: [_jsxs("aside", { className: "hidden lg:block col-span-1 space-y-8 sticky top-24 h-fit max-h-[calc(100vh-8rem)] overflow-y-auto pr-2 scrollbar-thin scrollbar-thumb-gray-200 scrollbar-track-transparent", children: [_jsxs("div", { className: "flex items-center justify-between pb-4 border-b border-gray-100", children: [_jsx("h2", { className: "text-xl font-bold text-gray-900", children: "Filters" }), hasActiveFilters && (_jsxs("button", { onClick: clearAllFilters, className: "text-xs font-medium text-red-500 hover:text-red-700 flex items-center gap-1", children: [_jsx(RotateCcw, { className: "h-3 w-3" }), " Reset"] }))] }), _jsxs("div", { children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide mb-4", children: "Availability" }), _jsxs("label", { className: "flex items-center gap-3 cursor-pointer group p-2 -ml-2 rounded-lg hover:bg-gray-50 transition-colors", children: [_jsx("div", { className: `w-5 h-5 rounded border flex items-center justify-center transition-colors ${showInStockOnly ? 'bg-black border-black' : 'border-gray-300 group-hover:border-black'}`, children: showInStockOnly && _jsx(Check, { className: "h-3 w-3 text-white" }) }), _jsx("input", { type: "checkbox", className: "hidden", checked: showInStockOnly, onChange: () => setShowInStockOnly(!showInStockOnly) }), _jsx("span", { className: "text-sm text-gray-700 font-medium", children: "In Stock Only" })] })] }), _jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide", children: "Brand" }), selectedBrands.length > 0 && (_jsx("button", { onClick: () => setSelectedBrands([]), className: "text-xs text-gray-600 hover:text-blue-600 font-medium transition-colors", children: "Clear" }))] }), brands.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [(showMoreBrands ? brands : brands.slice(0, 6)).map((brand) => (_jsx("label", { className: "flex items-center justify-between cursor-pointer group hover:bg-blue-50 hover:text-blue-600 p-2 rounded-lg -ml-2 -mr-2 transition-colors", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("input", { type: "checkbox", checked: selectedBrands.includes(brand), onChange: () => setSelectedBrands(prev => prev.includes(brand) ? prev.filter(b => b !== brand) : [...prev, brand]), className: "w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500" }), _jsx("span", { className: "text-sm text-gray-700 font-medium group-hover:text-blue-600", children: brand })] }) }, brand))), brands.length > 6 && (_jsx("button", { onClick: () => setShowMoreBrands(!showMoreBrands), className: "text-sm text-gray-600 hover:text-blue-600 font-medium mt-2 flex items-center gap-1 transition-colors", children: showMoreBrands ? _jsxs(_Fragment, { children: ["Show less ", _jsx(ChevronUp, { className: "h-4 w-4" })] }) : _jsxs(_Fragment, { children: ["Show more ", _jsx(ChevronDown, { className: "h-4 w-4" })] }) }))] })) : (_jsx("p", { className: "text-xs text-gray-500 italic", children: "No brands available" }))] }), _jsxs("div", { children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide mb-4", children: "Category" }), _jsx(CategoryTree, { categories: categories, selectedCategoryIds: selectedCategories, onCategoryToggle: (categoryId, isSelected) => {
286
+ setSelectedCategories(prev => isSelected
287
+ ? [...prev, categoryId]
288
+ : prev.filter(id => id !== categoryId));
289
+ }, mode: "checkbox" })] }), _jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide", children: "Price Range" }), (priceRange[0] > 0 || priceRange[1] < 5000) && (_jsx("button", { onClick: () => setPriceRange([0, 5000]), className: "text-xs text-gray-600 hover:text-blue-600 font-medium transition-colors", children: "Reset" }))] }), _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsx("input", { type: "range", min: "0", max: "5000", step: "50", value: priceRange[1], onChange: (e) => setPriceRange([priceRange[0], parseInt(e.target.value)]), className: "flex-1 h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-gray-900" }) }), _jsxs("div", { className: "flex items-center justify-between text-sm font-medium", children: [_jsx("span", { className: "text-gray-900", children: formatCurrency(priceRange[0], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) }), _jsx("span", { className: "text-gray-900", children: formatCurrency(priceRange[1], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-2", children: [_jsx("button", { onClick: () => setPriceRange([0, 100]), className: "px-3 py-2 text-xs font-semibold rounded-lg bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600 transition-colors", children: "$0 - $100" }), _jsx("button", { onClick: () => setPriceRange([0, 500]), className: "px-3 py-2 text-xs font-semibold rounded-lg bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600 transition-colors", children: "$0 - $500" })] })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide mb-4", children: "Rating" }), _jsx("div", { className: "space-y-2", children: [4, 3, 2, 1].map((rating) => (_jsxs("label", { className: "flex items-center gap-3 cursor-pointer group p-2 -ml-2 rounded-lg hover:bg-blue-50 hover:text-blue-600 transition-colors", children: [_jsx("div", { className: `w-5 h-5 rounded-full border flex items-center justify-center transition-colors ${minRating === rating ? 'border-blue-600 bg-blue-600' : 'border-gray-300 group-hover:border-blue-400'}`, children: minRating === rating && _jsx("div", { className: "w-2.5 h-2.5 bg-white rounded-full" }) }), _jsx("input", { type: "radio", name: "rating", checked: minRating === rating, onChange: () => setMinRating(minRating === rating ? null : rating), className: "hidden" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "flex text-yellow-400", children: Array.from({ length: 5 }).map((_, i) => (_jsx(Star, { className: `h-3.5 w-3.5 ${i < rating ? 'fill-current' : 'text-gray-200 fill-gray-200'}` }, i))) }), _jsx("span", { className: "text-sm text-gray-600", children: "& Up" })] })] }, rating))) })] })] }), _jsxs("div", { className: "lg:col-span-3", children: [_jsxs("div", { className: "lg:hidden mb-6 flex items-center justify-between", children: [_jsxs(Button, { onClick: () => setIsFilterOpen(true), variant: "outline", className: "flex items-center gap-2", children: [_jsx(SlidersHorizontal, { className: "h-4 w-4" }), " Filters"] }), _jsxs("select", { value: sortBy, onChange: (e) => setSortBy(e.target.value), className: "bg-transparent text-sm font-medium text-gray-700 focus:outline-none", children: [_jsx("option", { value: "featured", children: "Sort by: Featured" }), _jsx("option", { value: "newest", children: "Sort by: Newest" }), _jsx("option", { value: "price-asc", children: "Sort by: Price Low-High" }), _jsx("option", { value: "price-desc", children: "Sort by: Price High-Low" })] })] }), _jsxs("div", { className: "hidden lg:flex items-center justify-between mb-6", children: [_jsxs("p", { className: "text-sm text-gray-600", children: ["Showing ", _jsx("span", { className: "font-semibold text-gray-900", children: filteredAndSortedProducts.length }), " products"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-gray-500", children: "Sort by:" }), _jsxs("select", { value: sortBy, onChange: (e) => setSortBy(e.target.value), className: "bg-transparent text-sm font-medium text-gray-900 focus:outline-none cursor-pointer hover:text-blue-600 transition-colors", children: [_jsx("option", { value: "featured", children: "Featured" }), _jsx("option", { value: "newest", children: "Newest Arrivals" }), _jsx("option", { value: "price-asc", children: "Price: Low to High" }), _jsx("option", { value: "price-desc", children: "Price: High to Low" }), _jsx("option", { value: "rating", children: "Top Rated" })] })] })] }), isLoadingProducts || isFiltering ? (_jsx(ProductGridSkeleton, { count: 12, columns: 3 })) : displayedProducts.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6", children: displayedProducts.map((product) => (_jsx(ProductCard, { product: product, storeSlug: storeConfig.slug, onAddToCart: handleAddToCart, onQuickView: handleQuickView }, product.id))) }), hasMore && (_jsx("div", { className: "mt-12 text-center", children: _jsx(Button, { onClick: () => setVisibleProducts(prev => prev + 12), variant: "outline", className: "min-w-[200px]", children: "Load More" }) }))] })) : (_jsxs("div", { className: "flex flex-col items-center justify-center py-20 bg-white rounded-lg border border-dashed border-gray-200 text-center", children: [_jsx("div", { className: "w-12 h-12 bg-gray-50 rounded-full flex items-center justify-center mb-4 text-gray-400", children: _jsx(Search, { className: "h-6 w-6" }) }), _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-1", children: "No products found" }), _jsx("p", { className: "text-sm text-gray-500 mb-6", children: "Try adjusting your filters or search criteria." }), _jsx(Button, { onClick: clearAllFilters, variant: "outline", children: "Clear All Filters" })] }))] })] })] }), _jsxs(Sheet, { isOpen: isFilterOpen, onClose: () => setIsFilterOpen(false), title: "Filters", side: "right", children: [_jsxs("div", { className: "flex flex-col h-full overflow-y-auto pb-20 space-y-8 p-1", children: [_jsxs("div", { className: "pb-6 border-b border-gray-100", children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Availability" }), _jsxs("label", { className: "flex items-center gap-3", children: [_jsx("input", { type: "checkbox", checked: showInStockOnly, onChange: () => setShowInStockOnly(!showInStockOnly), className: "rounded border-gray-300 text-black focus:ring-black" }), _jsx("span", { className: "text-sm text-gray-700", children: "In Stock Only" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Price Range" }), _jsx("input", { type: "range", min: "0", max: "5000", step: "50", value: priceRange[1], onChange: (e) => setPriceRange([priceRange[0], parseInt(e.target.value)]), className: "w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-black mb-4" }), _jsxs("div", { className: "flex justify-between font-bold text-sm", children: [_jsx("span", { children: formatCurrency(0, storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) }), _jsxs("span", { children: [formatCurrency(priceRange[1], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }), "+"] })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Categories" }), _jsx(CategoryTree, { categories: categories, selectedCategoryIds: selectedCategories, onCategoryToggle: (categoryId, isSelected) => {
290
+ setSelectedCategories(prev => isSelected
291
+ ? [...prev, categoryId]
292
+ : prev.filter(id => id !== categoryId));
293
+ }, mode: "checkbox" })] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Brand" }), brands.length > 0 ? (_jsx("div", { className: "space-y-3", children: brands.map(brand => (_jsxs("label", { className: "flex items-center gap-3", children: [_jsx("input", { type: "checkbox", checked: selectedBrands.includes(brand), onChange: () => setSelectedBrands(prev => prev.includes(brand) ? prev.filter(b => b !== brand) : [...prev, brand]), className: "rounded border-gray-300 text-black focus:ring-black" }), _jsx("span", { className: "text-sm text-gray-700", children: brand })] }, brand))) })) : (_jsx("p", { className: "text-xs text-gray-500 italic", children: "No brands available" }))] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Rating" }), _jsx("div", { className: "space-y-3", children: [4, 3, 2, 1].map(rating => (_jsxs("label", { className: "flex items-center gap-3", children: [_jsx("input", { type: "radio", name: "mobile-rating", checked: minRating === rating, onChange: () => setMinRating(minRating === rating ? null : rating), className: "rounded-full border-gray-300 text-black focus:ring-black" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "flex text-yellow-400", children: Array.from({ length: 5 }).map((_, i) => (_jsx(Star, { className: `h-3 w-3 ${i < rating ? 'fill-current' : 'text-gray-200 fill-gray-200'}` }, i))) }), _jsx("span", { className: "text-sm text-gray-600", children: "& Up" })] })] }, rating))) })] })] }), _jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-4 bg-white border-t border-gray-100 flex gap-3", children: [_jsx(Button, { onClick: clearAllFilters, variant: "outline", className: "flex-1 h-12 font-bold rounded-lg border-gray-300", children: "Reset" }), _jsx(Button, { onClick: () => setIsFilterOpen(false), className: "flex-[2] bg-black text-white hover:bg-blue-600 h-12 font-bold rounded-lg transition-colors", children: "View Results" })] })] })] }));
294
+ }
295
+ export function ProductsPage(props) {
296
+ return (_jsx(Suspense, { fallback: _jsx("div", { className: "min-h-screen flex items-center justify-center", children: _jsx("div", { className: "w-8 h-8 border-2 border-black border-t-transparent rounded-full animate-spin" }) }), children: _jsx(ProductsPageContent, { ...props }) }));
297
+ }
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface MotivationalHomePageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function MotivationalHomePage({ storeConfig }: MotivationalHomePageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=MotivationalHomePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MotivationalHomePage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/motivational-speaker/components/MotivationalHomePage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAWhD,UAAU,yBAAyB;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,EAAE,WAAW,EAAE,EAAE,yBAAyB,2CA4mB9E"}
@@ -0,0 +1,115 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button } from '../../../components/ui/button';
4
+ import { Play, FileText, Headphones, ArrowRight, Lock, Star, CheckCircle, Mail, ChevronDown, Quote, Youtube, Instagram, Twitter } from 'lucide-react';
5
+ import Link from 'next/link';
6
+ import Image from 'next/image';
7
+ import { formatCurrency, filterActiveServices } from '../../../lib/utils';
8
+ import { getBannerImage, getServiceImage, getTextContent } from '../../../lib/utils/asset-helpers';
9
+ import { motion, useScroll, useTransform } from 'framer-motion';
10
+ import { useRef, useState } from 'react';
11
+ import { useAuth } from '../../../lib/auth-context';
12
+ export function MotivationalHomePage({ storeConfig }) {
13
+ const { isAuthenticated } = useAuth();
14
+ const contentItems = filterActiveServices(storeConfig.services || []);
15
+ const primaryColor = storeConfig.branding.primaryColor || '#0F172A';
16
+ const layoutConfig = storeConfig.layoutConfig;
17
+ const [email, setEmail] = useState('');
18
+ const [openFaqIndex, setOpenFaqIndex] = useState(null);
19
+ // Assets
20
+ const heroBg = getBannerImage(storeConfig, 'hero_image', 'https://images.unsplash.com/photo-1475721027785-f74ec0f711b1?w=2070&auto=format&fit=crop');
21
+ const heroVideo = storeConfig.layoutConfig?.assignedAssets?.hero_video;
22
+ const speakerImage = getBannerImage(storeConfig, 'bio_image', 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&auto=format&fit=crop');
23
+ const subBanner = getBannerImage(storeConfig, 'subscription_banner', 'https://images.unsplash.com/photo-1552664730-d307ca884978?w=2070&auto=format&fit=crop');
24
+ // Parallax scroll for hero
25
+ const heroRef = useRef(null);
26
+ const { scrollYProgress } = useScroll({
27
+ target: heroRef,
28
+ offset: ["start start", "end start"]
29
+ });
30
+ const heroOpacity = useTransform(scrollYProgress, [0, 0.5], [1, 0]);
31
+ const heroScale = useTransform(scrollYProgress, [0, 0.5], [1, 0.95]);
32
+ // FAQ Data
33
+ const faqItems = [
34
+ {
35
+ question: "How do I access my purchased courses?",
36
+ answer: "Once you purchase a course, you'll receive instant access via email. You can also access all your courses from your account dashboard under 'My Learning'."
37
+ },
38
+ {
39
+ question: "Can I download course materials?",
40
+ answer: "Yes! All PDF guides and workbooks are available for download. Video and audio content can be streamed or downloaded for offline viewing."
41
+ },
42
+ {
43
+ question: "What's included in the membership?",
44
+ answer: "Membership includes unlimited access to all courses, exclusive live Q&A sessions, downloadable resources, community access, and priority support."
45
+ },
46
+ {
47
+ question: "Do you offer refunds?",
48
+ answer: "We offer a 30-day money-back guarantee on all courses. If you're not satisfied, contact our support team for a full refund."
49
+ },
50
+ {
51
+ question: "How long do I have access to the content?",
52
+ answer: "For individual course purchases, you have lifetime access. For membership subscribers, access continues as long as your subscription is active."
53
+ }
54
+ ];
55
+ const handleSubscribe = (e) => {
56
+ e.preventDefault();
57
+ if (email) {
58
+ // In a real app, this would call an API
59
+ alert('Thank you for subscribing! Check your email for confirmation.');
60
+ setEmail('');
61
+ }
62
+ };
63
+ const toggleFaq = (index) => {
64
+ setOpenFaqIndex(openFaqIndex === index ? null : index);
65
+ };
66
+ return (_jsxs("div", { className: "min-h-screen bg-white font-sans text-gray-900 selection:bg-black selection:text-white", children: [_jsxs("section", { ref: heroRef, className: "relative h-screen min-h-[800px] flex items-center justify-center overflow-hidden bg-black", children: [_jsxs("div", { className: "absolute inset-0 z-0", children: [heroVideo ? (_jsx("video", { src: heroVideo, autoPlay: true, loop: true, muted: true, playsInline: true, className: "w-full h-full object-cover opacity-60" })) : (_jsx(Image, { src: heroBg, alt: "Hero Background", fill: true, className: "object-cover opacity-80", priority: true, unoptimized: true })), _jsx("div", { className: "absolute inset-0 bg-gradient-to-b from-black/70 via-black/40 to-black/80" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-black/10 to-transparent animate-pulse" })] }), _jsx(motion.div, { style: { opacity: heroOpacity, scale: heroScale }, className: "container mx-auto px-6 relative z-10 text-center text-white pt-20", children: _jsxs(motion.div, { initial: { opacity: 0, y: 30 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.8, ease: "easeOut" }, className: "max-w-4xl mx-auto space-y-8", children: [_jsx(motion.span, { initial: { opacity: 0, scale: 0.9 }, animate: { opacity: 1, scale: 1 }, transition: { delay: 0.2, duration: 0.6 }, className: "inline-block py-1.5 px-4 border border-white/30 rounded-full text-sm font-medium tracking-widest uppercase backdrop-blur-md bg-white/5", children: getTextContent(storeConfig, 'hero_subtitle', 'Master Your Mindset') }), _jsx(motion.h1, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.3, duration: 0.8 }, className: "text-6xl md:text-8xl font-serif font-medium tracking-tight leading-tight", children: getTextContent(storeConfig, 'hero_title', 'Unlock Your True Potential') }), _jsx(motion.p, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.5, duration: 0.8 }, className: "text-xl md:text-2xl text-gray-300 max-w-2xl mx-auto font-light leading-relaxed", children: storeConfig.description || "Join thousands of students learning to master their mindset and achieve their dreams." }), _jsxs(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.7, duration: 0.8 }, className: "flex flex-col sm:flex-row gap-6 justify-center pt-8", children: [_jsx(Link, { href: isAuthenticated ? `/${storeConfig.slug}/account?tab=learning` : `/${storeConfig.slug}/subscription`, children: _jsxs(Button, { size: "lg", className: "h-16 px-12 rounded-full text-lg font-medium bg-white text-black hover:bg-gray-200 transition-all transform hover:-translate-y-1 hover:shadow-2xl", children: [isAuthenticated ? 'Continue Learning' : getTextContent(storeConfig, 'cta_primary', 'Start Learning Now'), _jsx(ArrowRight, { className: "ml-2 h-5 w-5" })] }) }), _jsx(Link, { href: `/${storeConfig.slug}/services`, children: _jsxs(Button, { size: "lg", variant: "outline", className: "h-16 px-12 rounded-full text-lg font-medium border-2 border-white/40 text-white hover:bg-white hover:text-black hover:border-white transition-all backdrop-blur-sm", children: ["Explore Catalogue", _jsx(ArrowRight, { className: "ml-2 h-5 w-5" })] }) })] })] }) }), _jsx(motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, transition: { delay: 1, duration: 0.6 }, className: "absolute bottom-10 left-1/2 -translate-x-1/2", children: _jsx(motion.div, { animate: { y: [0, 10, 0] }, transition: { duration: 2, repeat: Infinity, ease: "easeInOut" }, className: "w-[1px] h-16 bg-gradient-to-b from-white to-transparent opacity-50" }) })] }), _jsxs("section", { className: "py-20 border-y border-gray-100 bg-white overflow-hidden", children: [_jsx("div", { className: "container mx-auto px-6 mb-10", children: _jsx("p", { className: "text-center text-[10px] font-black uppercase tracking-[0.4em] text-gray-400", children: "Trusted by Global Institutions" }) }), _jsx("div", { className: "relative flex overflow-x-hidden group", children: _jsx("div", { className: "animate-scroll flex items-center gap-20 whitespace-nowrap min-w-full", children: [
67
+ { name: "Forbes", logo: "https://logos-world.net/wp-content/uploads/2021/03/Forbes-Logo.png" },
68
+ { name: "Entrepreneur", logo: "https://logos-world.net/wp-content/uploads/2023/11/Entrepreneur-Logo.png" },
69
+ { name: "TED", logo: "https://logos-world.net/wp-content/uploads/2023/11/TED-Logo.png" },
70
+ { name: "Wired", logo: "https://logos-world.net/wp-content/uploads/2023/11/Wired-Logo.png" },
71
+ { name: "Fast Company", logo: "https://logos-world.net/wp-content/uploads/2023/11/Fast-Company-Logo.png" },
72
+ { name: "Inc", logo: "https://logos-world.net/wp-content/uploads/2023/11/Inc-Logo.png" },
73
+ // Duplicate for seamless loop
74
+ { name: "Forbes", logo: "https://logos-world.net/wp-content/uploads/2021/03/Forbes-Logo.png" },
75
+ { name: "Entrepreneur", logo: "https://logos-world.net/wp-content/uploads/2023/11/Entrepreneur-Logo.png" },
76
+ { name: "TED", logo: "https://logos-world.net/wp-content/uploads/2023/11/TED-Logo.png" },
77
+ { name: "Wired", logo: "https://logos-world.net/wp-content/uploads/2023/11/Wired-Logo.png" },
78
+ { name: "Fast Company", logo: "https://logos-world.net/wp-content/uploads/2023/11/Fast-Company-Logo.png" },
79
+ { name: "Inc", logo: "https://logos-world.net/wp-content/uploads/2023/11/Inc-Logo.png" },
80
+ ].map((brand, i) => (_jsx("div", { className: "flex items-center justify-center w-32 h-10 grayscale opacity-40 hover:grayscale-0 hover:opacity-100 transition-all duration-700 mx-10", children: _jsx(Image, { src: brand.logo, alt: brand.name, width: 120, height: 40, className: "object-contain max-h-full", unoptimized: true }) }, i))) }) })] }), _jsx("section", { className: "py-32 bg-white", children: _jsx("div", { className: "container mx-auto px-6 max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-12 gap-16 items-center", children: [_jsxs(motion.div, { initial: { opacity: 0, x: -50 }, whileInView: { opacity: 1, x: 0 }, viewport: { once: true }, transition: { duration: 0.8 }, className: "lg:col-span-5 relative", children: [_jsx("div", { className: "relative aspect-[4/5] overflow-hidden bg-gray-100 rounded-lg", children: _jsx(Image, { src: speakerImage, alt: "Speaker Portrait", fill: true, className: "object-cover grayscale hover:grayscale-0 transition-all duration-700 ease-in-out", unoptimized: true }) }), _jsx("div", { className: "absolute -bottom-6 -right-6 w-32 h-32 border-r-2 border-b-2 border-black/10 -z-10 backdrop-blur-sm bg-white/30" }), _jsx("div", { className: "absolute -top-6 -left-6 w-32 h-32 border-t-2 border-l-2 border-black/10 -z-10 backdrop-blur-sm bg-white/30" })] }), _jsx("div", { className: "lg:col-span-1" }), " ", _jsxs(motion.div, { initial: { opacity: 0, x: 50 }, whileInView: { opacity: 1, x: 0 }, viewport: { once: true }, transition: { duration: 0.8, delay: 0.2 }, className: "lg:col-span-6 space-y-10", children: [_jsx("h2", { className: "text-4xl md:text-6xl font-serif text-gray-900 leading-tight", children: getTextContent(storeConfig, 'bio_title', "Hi, I'm here to help you grow.") }), _jsx("div", { className: "space-y-6 text-xl text-gray-600 font-light leading-relaxed", children: _jsx("p", { children: getTextContent(storeConfig, 'bio_desc', "I have dedicated my life to helping individuals break through their barriers. My courses are designed to give you practical tools for everyday success.") }) }), _jsxs("div", { className: "grid grid-cols-3 gap-8 pt-8 border-t border-gray-100", children: [_jsxs("div", { children: [_jsx("div", { className: "text-4xl font-serif text-gray-900 mb-1", children: "50k+" }), _jsx("div", { className: "text-sm uppercase tracking-wider text-gray-400", children: "Students" })] }), _jsxs("div", { children: [_jsx("div", { className: "text-4xl font-serif text-gray-900 mb-1", children: "100+" }), _jsx("div", { className: "text-sm uppercase tracking-wider text-gray-400", children: "Modules" })] }), _jsxs("div", { children: [_jsx("div", { className: "text-4xl font-serif text-gray-900 mb-1", children: "4.9" }), _jsx("div", { className: "text-sm uppercase tracking-wider text-gray-400", children: "Rating" })] })] }), _jsxs("div", { className: "flex items-center gap-4 pt-4", children: [storeConfig.branding.socialMedia?.youtube && (_jsx("a", { href: storeConfig.branding.socialMedia.youtube, target: "_blank", rel: "noopener noreferrer", className: "p-3 rounded-full bg-gray-100 hover:bg-gray-200 transition-colors", children: _jsx(Youtube, { className: "w-5 h-5 text-gray-700" }) })), storeConfig.branding.socialMedia?.instagram && (_jsx("a", { href: storeConfig.branding.socialMedia.instagram, target: "_blank", rel: "noopener noreferrer", className: "p-3 rounded-full bg-gray-100 hover:bg-gray-200 transition-colors", children: _jsx(Instagram, { className: "w-5 h-5 text-gray-700" }) })), storeConfig.branding.socialMedia?.twitter && (_jsx("a", { href: storeConfig.branding.socialMedia.twitter, target: "_blank", rel: "noopener noreferrer", className: "p-3 rounded-full bg-gray-100 hover:bg-gray-200 transition-colors", children: _jsx(Twitter, { className: "w-5 h-5 text-gray-700" }) }))] })] })] }) }) }), _jsx("section", { className: "py-32 bg-gray-50", children: _jsxs("div", { className: "container mx-auto px-6 max-w-7xl", children: [_jsxs(motion.div, { initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true }, transition: { duration: 0.6 }, className: "flex flex-col md:flex-row justify-between items-end mb-20 gap-8", children: [_jsxs("div", { children: [_jsx("span", { className: "text-gray-400 font-bold tracking-widest uppercase text-xs mb-4 block", children: "Catalogue" }), _jsx("h2", { className: "text-4xl md:text-5xl font-serif text-gray-900", children: "Latest Materials" })] }), _jsxs(Link, { href: `/${storeConfig.slug}/services`, className: "group flex items-center gap-3 text-lg font-medium hover:text-gray-600 transition-colors", children: ["View All Material ", _jsx(ArrowRight, { className: "w-5 h-5 group-hover:translate-x-1 transition-transform" })] })] }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10", children: contentItems.slice(0, 6).map((item, index) => {
81
+ // Infer Type & Badge
82
+ let TypeIcon = Play;
83
+ let typeLabel = "Course";
84
+ if (item.contentType === 'audio' || item.categoryId === 'cat2') {
85
+ TypeIcon = Headphones;
86
+ typeLabel = "Audiobook";
87
+ }
88
+ else if (item.contentType === 'pdf' || item.categoryId === 'cat3') {
89
+ TypeIcon = FileText;
90
+ typeLabel = "Guide (PDF)";
91
+ }
92
+ else if (item.contentType === 'video') {
93
+ TypeIcon = Play;
94
+ typeLabel = "Video Class";
95
+ }
96
+ // Access Status
97
+ const isLocked = item.accessLevel === 'subscription' || item.accessLevel === 'paid';
98
+ return (_jsx(motion.div, { initial: { opacity: 0, y: 30 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true }, transition: { duration: 0.6, delay: index * 0.1 }, children: _jsx(Link, { href: `/${storeConfig.slug}/services/${item.slug}`, className: "group block h-full", children: _jsxs("article", { className: "bg-white h-full flex flex-col hover:shadow-2xl transition-all duration-500 ease-out border border-gray-200/50 hover:border-gray-300 rounded-lg overflow-hidden", children: [_jsxs("div", { className: "relative aspect-[16/10] overflow-hidden bg-gray-200", children: [_jsx(Image, { src: getServiceImage(item.image, storeConfig, "https://images.unsplash.com/photo-1516321318423-f06f85e504b3?w=800&auto=format&fit=crop"), alt: item.name, fill: true, className: "object-cover group-hover:scale-110 transition-transform duration-700", unoptimized: true }), _jsxs("div", { className: "absolute top-4 left-4 flex gap-2", children: [_jsxs("div", { className: "bg-white/90 backdrop-blur-md text-black px-4 py-2 text-xs font-bold uppercase tracking-wider flex items-center gap-2 rounded-full shadow-lg", children: [_jsx(TypeIcon, { className: "w-3 h-3" }), " ", typeLabel] }), isLocked && (_jsxs("div", { className: "bg-black/90 backdrop-blur-md text-white px-3 py-2 text-xs font-bold uppercase tracking-wider flex items-center gap-2 rounded-full shadow-lg", children: [_jsx(Lock, { className: "w-3 h-3" }), " Premium"] }))] })] }), _jsxs("div", { className: "p-8 flex flex-col flex-1", children: [_jsx("h3", { className: "text-2xl font-serif text-gray-900 mb-3 group-hover:underline decoration-1 underline-offset-4 decoration-gray-300", children: item.name }), _jsx("p", { className: "text-gray-500 font-light leading-relaxed mb-8 line-clamp-3", children: item.description }), _jsxs("div", { className: "mt-auto pt-6 border-t border-gray-100 flex items-center justify-between", children: [_jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs uppercase tracking-wider text-gray-400 mb-1", children: "Access" }), _jsx("span", { className: "font-medium text-lg", children: item.price > 0 ? formatCurrency(item.price, item.currency || 'USD') : 'Free' })] }), _jsx("div", { className: "w-10 h-10 border border-gray-200 rounded-full flex items-center justify-center group-hover:bg-black group-hover:border-black group-hover:text-white transition-all", children: _jsx(ArrowRight, { className: "w-4 h-4" }) })] })] })] }) }) }, item.id));
99
+ }) })] }) }), _jsxs("section", { className: "relative py-32 bg-[#0a0a0a] text-white overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-20", children: _jsx(Image, { src: subBanner, alt: "Background", fill: true, className: "object-cover", unoptimized: true }) }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black via-[#0a0a0a] to-transparent" }), _jsx("div", { className: "container mx-auto px-6 relative z-10 max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-20 items-center", children: [_jsxs(motion.div, { initial: { opacity: 0, x: -30 }, whileInView: { opacity: 1, x: 0 }, viewport: { once: true }, transition: { duration: 0.8 }, children: [_jsx("span", { className: "text-yellow-500 font-bold tracking-widest uppercase text-xs mb-6 block", children: "Inner Circle Access" }), _jsx("h2", { className: "text-5xl md:text-7xl font-serif mb-8 leading-none", children: getTextContent(storeConfig, 'sub_title', 'Join the Movement') }), _jsx("p", { className: "text-xl text-gray-400 mb-12 font-light leading-relaxed max-w-lg", children: getTextContent(storeConfig, 'sub_desc', 'Get unlimited access to all courses, exclusive live sessions, and a community of like-minded individuals.') }), _jsx("div", { className: "flex flex-col sm:flex-row gap-6", children: _jsx(Link, { href: `/${storeConfig.slug}/subscription`, children: _jsxs(Button, { size: "lg", className: "h-16 px-12 rounded-full text-lg font-bold bg-yellow-500 text-black hover:bg-yellow-400 border-0 shadow-lg hover:shadow-xl transition-all transform hover:-translate-y-1", children: [getTextContent(storeConfig, 'sub_cta', 'Become a Member'), _jsx(ArrowRight, { className: "ml-2 h-5 w-5" })] }) }) })] }), _jsxs(motion.div, { initial: { opacity: 0, x: 30 }, whileInView: { opacity: 1, x: 0 }, viewport: { once: true }, transition: { duration: 0.8, delay: 0.2 }, className: "bg-white/5 backdrop-blur-md border border-white/10 p-10 lg:p-14 rounded-2xl", children: [_jsx("h3", { className: "text-2xl font-serif mb-8", children: "Membership Benefits" }), _jsx("ul", { className: "space-y-6", children: [
100
+ "Unlimited access to all video courses",
101
+ "Downloadable PDF workbooks & guides",
102
+ "Weekly live Q&A sessions",
103
+ "Exclusive community access",
104
+ "Priority support"
105
+ ].map((benefit, i) => (_jsxs(motion.li, { initial: { opacity: 0, x: 20 }, whileInView: { opacity: 1, x: 0 }, viewport: { once: true }, transition: { delay: i * 0.1 }, className: "flex items-start gap-4", children: [_jsx(CheckCircle, { className: "w-6 h-6 text-yellow-500 shrink-0" }), _jsx("span", { className: "text-lg font-light text-gray-200", children: benefit })] }, i))) })] })] }) })] }), layoutConfig?.sections?.testimonials?.show !== false && (_jsx("section", { className: "py-32 bg-white", children: _jsxs("div", { className: "container mx-auto px-6 max-w-7xl", children: [_jsxs(motion.div, { initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true }, transition: { duration: 0.6 }, className: "text-center mb-24", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-serif mb-4", children: "Success Stories" }), _jsx("div", { className: "w-12 h-1 bg-gray-200 mx-auto" })] }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-12", children: (() => {
106
+ const backendTestimonials = layoutConfig?.sections?.testimonials?.items || [];
107
+ const fallbackTestimonials = [
108
+ { id: '1', name: 'Michael Chen', role: 'Entrepreneur', quote: "Completely changed my perspective on leadership.", rating: 5, image: 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop', order: 1 },
109
+ { id: '2', name: 'Sarah Johnson', role: 'Creative Director', quote: "Worth every penny. The depth of content is unmatched.", rating: 5, image: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150&h=150&fit=crop', order: 2 },
110
+ { id: '3', name: 'David Lee', role: 'Developer', quote: "Simple, practical, and effective. Highly recommend.", rating: 5, image: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop', order: 3 },
111
+ ];
112
+ const testimonials = backendTestimonials.length > 0 ? backendTestimonials : fallbackTestimonials;
113
+ return testimonials.slice(0, 3).map((testimonial, index) => (_jsxs(motion.div, { initial: { opacity: 0, y: 30 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true }, transition: { duration: 0.6, delay: index * 0.1 }, className: "text-center space-y-6", children: [_jsx("div", { className: "relative w-20 h-20 mx-auto rounded-full overflow-hidden mb-6 ring-4 ring-gray-100", children: _jsx(Image, { src: testimonial.image || '', alt: testimonial.name, fill: true, className: "object-cover", unoptimized: true }) }), _jsx("div", { className: "flex justify-center gap-1 mb-4 text-yellow-500", children: [...Array(5)].map((_, i) => _jsx(Star, { className: "w-4 h-4 fill-current" }, i)) }), _jsx(Quote, { className: "w-8 h-8 text-gray-300 mx-auto" }), _jsxs("p", { className: "text-xl font-serif text-gray-800 italic leading-relaxed", children: ["\"", testimonial.quote, "\""] }), _jsxs("div", { children: [_jsx("div", { className: "font-bold uppercase tracking-wider text-sm", children: testimonial.name }), _jsx("div", { className: "text-gray-400 text-xs mt-1", children: testimonial.role })] })] }, testimonial.id || testimonial.name)));
114
+ })() })] }) })), _jsxs("section", { className: "py-24 bg-gradient-to-br from-gray-900 via-gray-800 to-black text-white relative overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0 opacity-10", children: [_jsx("div", { className: "absolute top-0 left-0 w-96 h-96 bg-yellow-500 rounded-full blur-3xl" }), _jsx("div", { className: "absolute bottom-0 right-0 w-96 h-96 bg-blue-500 rounded-full blur-3xl" })] }), _jsx("div", { className: "container mx-auto px-6 max-w-4xl relative z-10", children: _jsxs(motion.div, { initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true }, transition: { duration: 0.6 }, className: "text-center space-y-8", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-xs font-bold uppercase tracking-widest", children: [_jsx(Mail, { className: "w-3 h-3" }), "Stay Connected"] }), _jsx("h2", { className: "text-4xl md:text-5xl font-serif", children: "Join Our Newsletter" }), _jsx("p", { className: "text-xl text-gray-300 max-w-2xl mx-auto font-light", children: "Get weekly insights, exclusive content, and early access to new courses delivered straight to your inbox." }), _jsxs("form", { onSubmit: handleSubscribe, className: "flex flex-col sm:flex-row gap-4 max-w-lg mx-auto", children: [_jsx("input", { type: "email", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "Enter your email", required: true, className: "flex-1 px-6 py-4 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-yellow-500 focus:border-transparent" }), _jsxs(Button, { type: "submit", size: "lg", className: "h-14 px-8 rounded-full bg-yellow-500 text-black hover:bg-yellow-400 font-bold text-lg transition-all transform hover:-translate-y-1 hover:shadow-xl", children: ["Subscribe", _jsx(ArrowRight, { className: "ml-2 h-5 w-5" })] })] }), _jsx("p", { className: "text-sm text-gray-400", children: "We respect your privacy. Unsubscribe at any time." })] }) })] }), _jsx("section", { className: "py-32 bg-white", children: _jsxs("div", { className: "container mx-auto px-6 max-w-4xl", children: [_jsxs(motion.div, { initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true }, transition: { duration: 0.6 }, className: "text-center mb-16", children: [_jsx("span", { className: "text-gray-400 font-bold tracking-widest uppercase text-xs mb-4 block", children: "Support" }), _jsx("h2", { className: "text-4xl md:text-5xl font-serif text-gray-900 mb-4", children: "Frequently Asked Questions" }), _jsx("p", { className: "text-lg text-gray-600 max-w-2xl mx-auto", children: "Everything you need to know about our courses and membership." })] }), _jsx("div", { className: "space-y-4", children: faqItems.map((faq, index) => (_jsxs(motion.div, { initial: { opacity: 0, y: 20 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true }, transition: { duration: 0.4, delay: index * 0.1 }, className: "border border-gray-200 rounded-lg overflow-hidden bg-white hover:shadow-lg transition-shadow", children: [_jsxs("button", { onClick: () => toggleFaq(index), className: "w-full px-6 py-5 flex items-center justify-between text-left hover:bg-gray-50 transition-colors", children: [_jsx("span", { className: "text-lg font-semibold text-gray-900 pr-8", children: faq.question }), _jsx(ChevronDown, { className: `w-5 h-5 text-gray-500 transition-transform shrink-0 ${openFaqIndex === index ? 'transform rotate-180' : ''}` })] }), openFaqIndex === index && (_jsx(motion.div, { initial: { opacity: 0, height: 0 }, animate: { opacity: 1, height: 'auto' }, exit: { opacity: 0, height: 0 }, transition: { duration: 0.3 }, className: "px-6 pb-5", children: _jsx("p", { className: "text-gray-600 leading-relaxed", children: faq.answer }) }))] }, index))) })] }) })] }));
115
+ }
@@ -0,0 +1,8 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface MotivationalPageWrapperProps {
3
+ children: React.ReactNode;
4
+ storeConfig: StoreConfig;
5
+ }
6
+ export declare function MotivationalPageWrapper({ children, storeConfig }: MotivationalPageWrapperProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=MotivationalPageWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MotivationalPageWrapper.d.ts","sourceRoot":"","sources":["../../../../src/layouts/motivational-speaker/components/MotivationalPageWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,UAAU,4BAA4B;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,4BAA4B,2CAY9F"}
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { PageContentLoader } from '../../../components/ui/page-content-loader';
4
+ import { useLoading } from '../../../lib/loading-context';
5
+ import { useStore } from '../../../lib/store-context';
6
+ export function MotivationalPageWrapper({ children, storeConfig }) {
7
+ const { isBackendLoading } = useLoading();
8
+ const { cartCount } = useStore();
9
+ return (_jsx("div", { className: "min-h-screen flex flex-col bg-white font-sans text-gray-900 selection:bg-black selection:text-white", children: _jsxs("main", { className: "flex-1 relative", children: [isBackendLoading && _jsx(PageContentLoader, {}), children] }) }));
10
+ }
@@ -0,0 +1,10 @@
1
+ export { MotivationalHomePage } from './components/MotivationalHomePage';
2
+ export { MotivationalPageWrapper } from './components/MotivationalPageWrapper';
3
+ export { ProductsPage } from './pages/ProductsPage';
4
+ export { CategoryPage } from './pages/CategoryPage';
5
+ export { ServicesPage } from './pages/ServicesPage';
6
+ export { ServiceDetailPage } from './pages/ServiceDetailPage';
7
+ export { SubscriptionPage } from './pages/SubscriptionPage';
8
+ export { AboutPage } from './pages/AboutPage';
9
+ export { ContactPage } from './pages/ContactPage';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/motivational-speaker/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ // Motivational-speaker layout exports
2
+ export { MotivationalHomePage } from './components/MotivationalHomePage';
3
+ export { MotivationalPageWrapper } from './components/MotivationalPageWrapper';
4
+ export { ProductsPage } from './pages/ProductsPage';
5
+ export { CategoryPage } from './pages/CategoryPage';
6
+ export { ServicesPage } from './pages/ServicesPage';
7
+ export { ServiceDetailPage } from './pages/ServiceDetailPage';
8
+ export { SubscriptionPage } from './pages/SubscriptionPage';
9
+ export { AboutPage } from './pages/AboutPage';
10
+ export { ContactPage } from './pages/ContactPage';
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface AboutPageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function AboutPage({ storeConfig }: AboutPageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=AboutPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/motivational-speaker/pages/AboutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMhD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,EAAE,cAAc,2CAsOxD"}