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,89 @@
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 { Sheet } from '../../../components/ui/sheet';
5
+ import { CheckoutButton } from '../../../components/ui/checkout-button';
6
+ import { CategoryTree } from '../../../components/ui/category-tree';
7
+ import { useStore } from '../../../lib/store-context';
8
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
9
+ import { useToast } from '../../../components/ui/toast';
10
+ import { ShoppingCart, Star, Heart, Menu, Search, User, Smartphone, ChevronRight, ChevronDown, CheckCircle2, Package, Tag, Filter, X } from 'lucide-react';
11
+ import Link from 'next/link';
12
+ import Image from 'next/image';
13
+ import { useState } from 'react';
14
+ import { formatCurrency, cn, filterActiveProducts } from '../../../lib/utils';
15
+ import { getLayoutText, getBannerImage, getLogoUrl } from '../../../lib/utils/asset-helpers';
16
+ import { StoreLogo } from '../../../components/ui/store-logos';
17
+ import { PromoBanner } from '../../../layouts/shared/components/PromoBanner';
18
+ import { ElectronicsGridProductCard } from './ElectronicsGridProductCard';
19
+ const ElectronicsFilterContent = ({ categories, storeSlug }) => (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "bg-white border-b border-gray-100 overflow-hidden", children: [_jsxs("div", { className: "bg-white px-4 py-3 border-b border-gray-100 font-normal text-sm text-gray-900 flex justify-between items-center", children: ["Browse by ", _jsx(ChevronDown, { className: "h-4 w-4 text-gray-400" })] }), _jsx("div", { className: "py-2", children: _jsx(CategoryTree, { categories: categories, mode: "link", storeSlug: storeSlug, linkBasePath: "" }) })] }), _jsxs("div", { className: "bg-white p-6 space-y-8", children: [_jsxs("div", { children: [_jsx("h3", { className: "font-medium text-sm text-gray-900 mb-4", children: "Availability" }), _jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-600 cursor-pointer hover:text-gray-900 p-2 -ml-2 transition-colors", children: [_jsx("input", { type: "checkbox", className: "rounded border-gray-300 text-gray-900 focus:ring-gray-400", defaultChecked: true }), "In Stock"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-600 cursor-pointer hover:text-gray-900 p-2 -ml-2 transition-colors mt-2", children: [_jsx("input", { type: "checkbox", className: "rounded border-gray-300 text-gray-900 focus:ring-gray-400" }), "On Sale"] })] }), _jsxs("div", { className: "border-t border-gray-100 pt-6", children: [_jsx("h3", { className: "font-medium text-sm text-gray-900 mb-4", children: "Price" }), _jsxs("div", { className: "flex items-center gap-2 mb-3", children: [_jsxs("div", { className: "relative flex-1", children: [_jsx("span", { className: "absolute left-2 top-1.5 text-gray-400 text-xs", children: "$" }), _jsx("input", { type: "number", className: "w-full pl-5 pr-2 py-1.5 text-sm border border-gray-300 rounded focus:ring-1 focus:ring-gray-400 focus:border-gray-400", placeholder: "Min" })] }), _jsx("span", { className: "text-gray-400", children: "-" }), _jsxs("div", { className: "relative flex-1", children: [_jsx("span", { className: "absolute left-2 top-1.5 text-gray-400 text-xs", children: "$" }), _jsx("input", { type: "number", className: "w-full pl-5 pr-2 py-1.5 text-sm border border-gray-300 rounded focus:ring-1 focus:ring-gray-400 focus:border-gray-400", placeholder: "Max" })] })] }), _jsx(Button, { size: "sm", variant: "outline", className: "w-full text-xs font-normal border-gray-300 text-gray-700 hover:bg-gray-50", children: "Apply Price" })] }), _jsxs("div", { className: "border-t border-gray-100 pt-6", children: [_jsx("h3", { className: "font-medium text-sm text-gray-900 mb-4", children: "Brands" }), _jsx("div", { className: "space-y-2 max-h-48 overflow-y-auto pr-1 scrollbar-thin scrollbar-thumb-gray-200", children: ['Apple'].map(brand => (_jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-600 cursor-pointer hover:text-gray-900 p-2 -ml-2 transition-colors", children: [_jsx("input", { type: "checkbox", className: "rounded border-gray-300 text-gray-900 focus:ring-gray-400", defaultChecked: true }), brand] }, brand))) })] }), _jsxs("div", { className: "border-t border-gray-100 pt-6", children: [_jsx("h3", { className: "font-medium text-sm text-gray-900 mb-4", children: "Rating" }), [4, 3, 2].map(stars => (_jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-600 cursor-pointer hover:text-gray-900 p-2 -ml-2 transition-colors mb-1.5", children: [_jsx("input", { type: "radio", name: "rating", className: "border-gray-300 text-gray-900 focus:ring-gray-400" }), _jsx("div", { className: "flex text-yellow-400", children: [...Array(5)].map((_, i) => (_jsx(Star, { className: `h-3 w-3 ${i < stars ? 'fill-current' : 'text-gray-200 fill-gray-200'}` }, i))) }), _jsx("span", { className: "text-xs", children: "& Up" })] }, stars)))] })] })] }));
20
+ export function ElectronicsHomePageGrid({ storeConfig }) {
21
+ const layoutConfig = storeConfig.layoutConfig;
22
+ const categories = storeConfig.categories || [];
23
+ const products = filterActiveProducts(storeConfig.products || []);
24
+ const { cart, addToCart, updateCartQuantity, isCartOpen, setIsCartOpen, cartTotal, cartCount, wishlist } = useStore();
25
+ const wishlistCount = wishlist.length;
26
+ const [searchQuery, setSearchQuery] = useState('');
27
+ const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
28
+ const [isSearchOpen, setIsSearchOpen] = useState(false);
29
+ const { addToast } = useToast();
30
+ // Pagination / Load More state
31
+ const INITIAL_DISPLAY_COUNT = 12;
32
+ const LOAD_MORE_INCREMENT = 12;
33
+ const [visibleCount, setVisibleCount] = useState(INITIAL_DISPLAY_COUNT);
34
+ const handleAddToCart = (product) => {
35
+ addToCart(product);
36
+ addToast(`${product.name} added to cart`, 'success');
37
+ };
38
+ const filteredProducts = searchQuery
39
+ ? products.filter(p => p.name.toLowerCase().includes(searchQuery.toLowerCase()) || p.description.toLowerCase().includes(searchQuery.toLowerCase()))
40
+ : products;
41
+ const [isFilterOpen, setIsFilterOpen] = useState(false);
42
+ return (_jsxs("div", { className: "min-h-screen font-sans text-gray-900 bg-white", children: [_jsx("div", { className: "bg-white text-gray-500 text-xs font-normal py-3 px-4 md:px-8 border-b border-gray-100/50", children: _jsxs("div", { className: "container mx-auto flex justify-between items-center", children: [_jsxs("div", { className: "hidden md:flex gap-8", children: [_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(Package, { className: "h-3.5 w-3.5 text-gray-400" }), " Free Express Shipping Nationwide"] }), _jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(CheckCircle2, { className: "h-3.5 w-3.5 text-gray-400" }), " Authentic Apple Products"] })] }), _jsxs("div", { className: "flex gap-6 ml-auto", children: [_jsx(Link, { href: `/${storeConfig.slug}/track-order`, className: "hover:text-gray-900 transition-colors", children: "Track Order" }), _jsx(Link, { href: `/${storeConfig.slug}/contact`, className: "hover:text-gray-900 transition-colors", children: "Business Direct" }), _jsx(Link, { href: `/${storeConfig.slug}/help-center`, className: "hover:text-gray-900 transition-colors", children: "Support" })] })] }) }), _jsxs("header", { className: "sticky top-0 z-50 bg-white/95 backdrop-blur-md border-b border-gray-100", children: [_jsxs("div", { className: "container mx-auto px-4 md:px-6 h-16 flex items-center gap-8", children: [_jsx(Link, { href: `/${storeConfig.slug}`, className: "flex flex-col leading-none shrink-0 group", children: getLogoUrl(storeConfig) ? (_jsx(StoreLogo, { storeConfig: storeConfig, className: "h-10 w-10 transition-all duration-300 hover:opacity-90", alt: storeConfig.name })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-xl font-medium tracking-tight text-gray-900 group-hover:text-gray-600 transition-colors", children: storeConfig.name }), _jsx("span", { className: "text-[9px] font-normal tracking-wide text-gray-400 mt-0.5", children: "Premium Apple Products" })] })) }), _jsx("div", { className: "hidden md:flex flex-1 max-w-3xl relative", children: _jsxs("div", { className: "relative w-full flex", children: [_jsx("div", { className: "relative flex-1", children: _jsx("input", { type: "text", placeholder: "Search by keyword, model number, or SKU...", value: searchQuery, onChange: (e) => {
43
+ setSearchQuery(e.target.value);
44
+ setVisibleCount(INITIAL_DISPLAY_COUNT);
45
+ }, className: "w-full h-10 pl-4 pr-12 rounded-l-lg border border-gray-200 bg-white text-sm focus:outline-none focus:ring-1 focus:ring-gray-400 focus:border-gray-400 transition-all" }) }), _jsxs("button", { className: "h-10 px-6 bg-gray-900 hover:bg-gray-800 text-white font-normal text-sm rounded-r-lg border border-gray-900 border-l-0 transition-colors flex items-center gap-2", children: [_jsx(Search, { className: "h-4 w-4" }), " Search"] })] }) }), _jsxs("div", { className: "flex items-center gap-2 ml-auto", children: [_jsx(Button, { variant: "ghost", size: "icon", className: "md:hidden h-10 w-10 text-slate-600", onClick: () => setIsSearchOpen(!isSearchOpen), children: isSearchOpen ? _jsx(X, { className: "h-6 w-6" }) : _jsx(Search, { className: "h-6 w-6" }) }), _jsx(Link, { href: `/${storeConfig.slug}/account`, children: _jsxs(Button, { variant: "ghost", className: "hidden sm:flex flex-col items-center justify-center h-auto py-1 px-2 text-gray-500 hover:text-gray-900 hover:bg-transparent gap-0.5 transition-colors", children: [_jsx(User, { className: "h-5 w-5" }), _jsx("span", { className: "text-[10px] font-normal", children: "Account" })] }) }), storeConfig.features.wishlist && (_jsx(Link, { href: `/${storeConfig.slug}/wishlist`, children: _jsxs(Button, { variant: "ghost", className: "hidden sm:flex flex-col items-center justify-center h-auto py-1 px-2 text-gray-500 hover:text-gray-900 hover:bg-transparent gap-0.5 relative", children: [_jsxs("div", { className: "relative", children: [_jsx(Heart, { className: cn("h-5 w-5 transition-all", wishlistCount > 0 && "fill-current text-red-500") }), wishlistCount > 0 && (_jsx("span", { className: "absolute -top-1 -right-1 h-3.5 w-3.5 text-[9px] font-bold text-white rounded-full flex items-center justify-center shadow-sm ring-1 ring-white", style: { backgroundColor: storeConfig.branding.primaryColor || '#ef4444' }, children: wishlistCount > 9 ? '9+' : wishlistCount }))] }), _jsx("span", { className: "text-[10px] font-normal", children: "Saved" })] }) })), _jsx("div", { className: "h-6 w-px bg-gray-200 mx-1 hidden sm:block" }), _jsxs(Button, { className: "relative bg-white hover:bg-gray-50 text-gray-900 border border-gray-200 font-normal h-10 px-4 rounded-lg flex items-center gap-2 transition-colors", onClick: () => setIsCartOpen(true), children: [_jsx(ShoppingCart, { className: "h-4 w-4 text-gray-600" }), _jsx("span", { className: "text-sm", children: cartCount })] }), _jsx(Button, { variant: "ghost", size: "icon", className: "md:hidden h-10 w-10", onClick: () => setIsMobileMenuOpen(true), children: _jsx(Menu, { className: "h-6 w-6" }) })] })] }), isSearchOpen && (_jsx("div", { className: "md:hidden p-4 bg-white border-b border-gray-200 animate-in slide-in-from-top-2 absolute w-full top-20 z-40 shadow-lg", children: _jsxs("div", { className: "relative", children: [_jsx("input", { type: "text", placeholder: "Search by keyword...", value: searchQuery, onChange: (e) => {
46
+ setSearchQuery(e.target.value);
47
+ setVisibleCount(INITIAL_DISPLAY_COUNT);
48
+ }, className: "w-full h-12 pl-12 pr-4 rounded-xl bg-gray-100 border-none focus:ring-2 focus:ring-blue-500 text-base", autoFocus: true }), _jsx(Search, { className: "absolute left-4 top-1/2 -translate-y-1/2 h-5 w-5 text-gray-400" })] }) })), _jsx("div", { className: "hidden md:block bg-white border-b border-gray-100/50", children: _jsxs("div", { className: "container mx-auto px-6 h-12 flex items-center gap-8 text-sm font-normal text-gray-600", children: [categories.slice(0, 8).map(cat => (_jsx(Link, { href: `/${storeConfig.slug}/categories/${cat.slug}`, className: "hover:text-gray-900 transition-colors py-1", children: cat.name }, cat.id))), _jsxs(Link, { href: `/${storeConfig.slug}/products?sale=true`, className: "ml-auto flex items-center gap-1.5 text-gray-500 hover:text-gray-900 transition-colors", children: [_jsx(Tag, { className: "h-3.5 w-3.5" }), " Special Offers"] })] }) })] }), _jsxs("main", { className: "container mx-auto px-4 md:px-6 py-6", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs text-gray-500 mb-6", children: [_jsx(Link, { href: `/${storeConfig.slug}`, className: "hover:text-black transition-colors", children: "Home" }), _jsx(ChevronRight, { className: "h-3 w-3" }), _jsx("span", { className: "font-semibold text-gray-900", children: "Apple Products" })] }), _jsxs("div", { className: "flex flex-col lg:flex-row gap-6", children: [_jsx("aside", { className: "hidden lg:block w-64 flex-shrink-0 space-y-6 sticky top-32 self-start h-fit z-30", children: _jsx(ElectronicsFilterContent, { categories: categories, storeSlug: storeConfig.slug }) }), _jsxs("div", { className: "flex-1", children: [(() => {
49
+ const bannerImage = getBannerImage(storeConfig, 'sale_banner', 'https://images.unsplash.com/photo-1526738549149-8e07eca6c147?w=1200&h=400&fit=crop&q=80');
50
+ // Get banner text from backend - check multiple sources
51
+ // Priority: 1. sections.marketing.promoBanner, 2. text.sections.marketing.promoBanner, 3. generic layout text, 4. layout requirements defaults
52
+ const promoBanner = storeConfig.layoutConfig?.sections?.marketing?.promoBanner;
53
+ const promoBannerText = storeConfig.layoutConfig?.text?.sections?.marketing?.promoBanner;
54
+ // Fallback values match layout config defaults
55
+ const defaultTitle = 'New Arrivals';
56
+ const defaultSubtitle = 'Discover the latest products. Authentic. Authorized. Exclusive.';
57
+ const defaultButtonText = 'Shop Now';
58
+ const bannerTitle = promoBanner?.title ||
59
+ promoBannerText?.title ||
60
+ getLayoutText(storeConfig, 'electronics.newArrivals', defaultTitle) ||
61
+ getLayoutText(storeConfig, 'sections.marketing.promoBanner.title', defaultTitle) ||
62
+ defaultTitle;
63
+ const bannerSubtitle = promoBanner?.subtitle ||
64
+ promoBannerText?.subtitle ||
65
+ getLayoutText(storeConfig, 'sections.featuredProducts.subtitle', defaultSubtitle) ||
66
+ getLayoutText(storeConfig, 'sections.marketing.promoBanner.subtitle', defaultSubtitle) ||
67
+ defaultSubtitle;
68
+ const bannerButtonText = promoBanner?.buttonText ||
69
+ promoBannerText?.button ||
70
+ getLayoutText(storeConfig, 'common.shopNow', defaultButtonText) ||
71
+ getLayoutText(storeConfig, 'sections.marketing.promoBanner.button', defaultButtonText) ||
72
+ defaultButtonText;
73
+ const bannerButtonLink = promoBanner?.buttonLink ||
74
+ `/${storeConfig.slug}/products`;
75
+ return (_jsxs("div", { className: "mb-8 rounded-lg bg-white text-gray-900 py-12 px-6 flex items-center justify-between relative overflow-hidden min-h-[200px]", children: [_jsxs("div", { className: "absolute inset-0 z-0", children: [_jsx(Image, { src: bannerImage, alt: bannerTitle, fill: true, className: "object-cover", unoptimized: true }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/70 via-black/50 to-black/40" })] }), _jsxs("div", { className: "relative z-10 max-w-2xl", children: [_jsx("h2", { className: "text-4xl font-light mb-4 text-white tracking-tight", children: bannerTitle }), _jsx("p", { className: "text-gray-200 text-lg mb-8 leading-relaxed font-light", children: bannerSubtitle }), _jsx(Link, { href: bannerButtonLink, children: _jsx(Button, { size: "sm", className: "bg-white hover:bg-gray-100 text-gray-900 font-normal border-none transition-colors px-6 py-2.5 text-sm shadow-lg", children: bannerButtonText }) })] })] }));
76
+ })(), _jsxs("div", { className: "bg-white py-4 mb-6 flex flex-wrap items-center gap-4 justify-between border-b border-gray-100", children: [_jsxs("div", { className: "flex items-center gap-6", children: [_jsxs("span", { className: "text-sm font-normal text-gray-600", children: [filteredProducts.length, " Items"] }), _jsx("div", { className: "h-4 w-px bg-gray-200" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-gray-500 font-normal", children: "Sort:" }), _jsxs("select", { className: "text-sm border-none bg-transparent font-normal text-gray-900 focus:ring-0 cursor-pointer p-0 pr-6 appearance-none", children: [_jsx("option", { children: "Best Match" }), _jsx("option", { children: "Price Low-High" }), _jsx("option", { children: "Price High-Low" }), _jsx("option", { children: "Highest Rated" })] })] })] }), _jsx("div", { className: "flex items-center gap-2", children: _jsxs(Button, { variant: "ghost", size: "sm", className: "lg:hidden flex items-center gap-2 text-gray-600 hover:text-gray-900", onClick: () => setIsFilterOpen(true), children: [_jsx(Filter, { className: "h-4 w-4" }), " Filters"] }) })] }), _jsx(Sheet, { isOpen: isFilterOpen, onClose: () => setIsFilterOpen(false), title: "Filters", side: "left", children: _jsx(ElectronicsFilterContent, { categories: categories, storeSlug: storeConfig.slug }) }), _jsx("div", { className: "grid gap-4 sm:gap-6 lg:gap-8 grid-cols-2 sm:grid-cols-2 lg:grid-cols-3", children: filteredProducts.slice(0, visibleCount).map((product, index) => (
77
+ // Grid View Card - High Density Info
78
+ _jsx(ElectronicsGridProductCard, { product: product, storeSlug: storeConfig.slug, onAddToCart: handleAddToCart, index: index }, product.id))) }), visibleCount < filteredProducts.length && (_jsx("div", { className: "mt-16 flex justify-center border-t border-gray-100 pt-12", children: _jsx(Button, { variant: "outline", onClick: () => setVisibleCount(prev => prev + LOAD_MORE_INCREMENT), className: "min-w-[200px] border-gray-300 text-gray-700 hover:bg-gray-50 hover:text-gray-900 font-normal transition-colors", children: "Load More Products" }) }))] })] })] }), _jsx("footer", { className: "bg-white border-t border-gray-100 pt-16 pb-12 mt-20", children: _jsxs("div", { className: "container mx-auto px-6", children: [_jsxs("div", { className: "grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-8 mb-12", children: [_jsxs("div", { className: "lg:col-span-1", children: [_jsx("div", { className: "mb-6", children: _jsx("span", { className: "text-lg font-medium text-gray-900", children: storeConfig.name }) }), _jsx("p", { className: "text-sm text-gray-500 leading-relaxed mb-6 font-light", children: storeConfig.description || "Nigeria's premier destination for authentic Apple products. Authorized reseller with genuine warranty and exceptional service." }), _jsxs("div", { className: "flex gap-2", children: [_jsx("div", { className: "w-8 h-8 bg-gray-100 rounded flex items-center justify-center text-gray-400", children: _jsx(Smartphone, { className: "h-4 w-4" }) }), _jsx("div", { className: "w-8 h-8 bg-gray-100 rounded flex items-center justify-center text-gray-400", children: _jsx(Tag, { className: "h-4 w-4" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-medium text-gray-900 text-sm mb-4", children: "Shop" }), _jsxs("ul", { className: "space-y-3 text-sm text-gray-500", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products`, className: "hover:text-gray-900 transition-colors", children: "All Products" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/categories`, className: "hover:text-gray-900 transition-colors", children: "Categories" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-medium text-gray-900 text-sm mb-4", children: "Support" }), _jsxs("ul", { className: "space-y-3 text-sm text-gray-500", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/help-center`, className: "hover:text-gray-900 transition-colors", children: "Help Center" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/shipping-returns`, className: "hover:text-gray-900 transition-colors", children: "Shipping & Returns" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/track-order`, className: "hover:text-gray-900 transition-colors", children: "Track Order" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-medium text-gray-900 text-sm mb-4", children: "Account" }), _jsxs("ul", { className: "space-y-3 text-sm text-gray-500", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/account`, className: "hover:text-gray-900 transition-colors", children: "My Account" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/track-order`, className: "hover:text-gray-900 transition-colors", children: "Track Order" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-medium text-gray-900 text-sm mb-4", children: "Stay Connected" }), _jsxs("form", { onSubmit: async (e) => {
79
+ e.preventDefault();
80
+ const form = e.target;
81
+ const emailInput = form.querySelector('input[type="email"]');
82
+ if (emailInput && emailInput.value) {
83
+ // Simulate newsletter subscription
84
+ await new Promise(resolve => setTimeout(resolve, 500));
85
+ addToast('Thank you for subscribing!', 'success');
86
+ emailInput.value = '';
87
+ }
88
+ }, className: "flex flex-col gap-3", children: [_jsx("input", { type: "email", placeholder: "Enter email for deals", required: true, className: "rounded border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:border-gray-500 transition-colors bg-white" }), _jsx(Button, { type: "submit", size: "sm", className: "bg-gray-900 hover:bg-gray-800 text-white w-full font-normal", children: "Subscribe" })] })] })] }), _jsxs("div", { className: "border-t border-gray-100 pt-8 flex flex-col md:flex-row justify-between items-center gap-4 text-xs text-gray-400", children: [_jsxs("p", { children: ["\u00A9 2024 ", storeConfig.name, ". All rights reserved."] }), _jsxs("div", { className: "flex gap-6", children: [_jsx(Link, { href: `/${storeConfig.slug}/privacy`, className: "hover:text-gray-600 transition-colors", children: "Privacy Policy" }), _jsx(Link, { href: `/${storeConfig.slug}/terms`, className: "hover:text-gray-600 transition-colors", children: "Terms & Conditions" }), _jsx(Link, { href: `/${storeConfig.slug}/help-center`, className: "hover:text-gray-600 transition-colors", children: "Accessibility" })] })] })] }) }), _jsx(Sheet, { isOpen: isCartOpen, onClose: () => setIsCartOpen(false), title: `My Cart (${cartCount})`, side: "right", children: _jsx("div", { className: "flex flex-col h-full", children: cart.length === 0 ? (_jsxs("div", { className: "flex-1 flex flex-col items-center justify-center text-center p-8 text-gray-500", children: [_jsx(ShoppingCart, { className: "h-12 w-12 mb-4 text-gray-300" }), _jsx("p", { className: "font-medium mb-1", children: "Your cart is empty" }), _jsx(Button, { onClick: () => setIsCartOpen(false), className: "bg-blue-600 hover:bg-blue-700 text-white mt-4", children: "Start Shopping" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex-1 overflow-y-auto py-4", children: cart.map(item => (_jsxs("div", { className: "flex gap-4 p-4 border-b border-gray-100", children: [_jsx("div", { className: "h-16 w-16 bg-white border border-gray-200 rounded flex-shrink-0 overflow-hidden", children: _jsx(ImageWithFallback, { src: item.product.images?.[0], alt: item.product.name, className: "w-full h-full object-cover", skeletonAspectRatio: "square" }) }), _jsxs("div", { className: "flex-1", children: [_jsx("h4", { className: "font-medium text-sm text-gray-900 line-clamp-2 mb-1", children: item.product.name }), _jsxs("div", { className: "flex justify-between items-center mt-2", children: [_jsx("p", { className: "text-blue-600 font-bold text-sm", children: formatCurrency(item.price, item.product?.currency || storeConfig.settings?.currency || 'USD') }), _jsxs("div", { className: "flex items-center border border-gray-200 rounded bg-white", children: [_jsx("button", { onClick: () => updateCartQuantity(item.id, item.quantity - 1), className: "px-2 py-0.5 hover:bg-gray-50 text-gray-500", children: "-" }), _jsx("span", { className: "px-2 text-xs font-medium", children: item.quantity }), _jsx("button", { onClick: () => updateCartQuantity(item.id, item.quantity + 1), className: "px-2 py-0.5 hover:bg-gray-50 text-gray-500", children: "+" })] })] })] })] }, item.id))) }), _jsxs("div", { className: "border-t border-gray-100 p-4 space-y-4 bg-gray-50", children: [_jsxs("div", { className: "flex justify-between items-center font-bold text-lg text-gray-900", children: [_jsx("span", { children: "Total" }), _jsx("span", { children: formatCurrency(cartTotal, storeConfig.settings?.currency || 'USD') })] }), _jsx(CheckoutButton, { storeConfig: storeConfig, className: "w-full bg-yellow-400 hover:bg-yellow-500 text-blue-900 font-bold" })] })] })) }) }), _jsx(Sheet, { isOpen: isMobileMenuOpen, onClose: () => setIsMobileMenuOpen(false), title: "Menu", side: "left", children: _jsx("div", { className: "py-2", children: categories.map(cat => (_jsx(Link, { href: `/${storeConfig.slug}/categories/${cat.slug}`, onClick: () => setIsMobileMenuOpen(false), className: "block px-4 py-3 text-sm font-medium text-gray-700 hover:bg-gray-50 hover:text-blue-600 border-b border-gray-100", children: cat.name }, cat.id))) }) }), _jsx(PromoBanner, { config: layoutConfig?.sections?.promoBanner, layoutStyle: "electronics" })] }));
89
+ }
@@ -0,0 +1,15 @@
1
+ export { ElectronicsHomePageGrid } from './components/ElectronicsHomePageGrid';
2
+ export { ElectronicsGridProductCard } from './components/ElectronicsGridProductCard';
3
+ export { ProductsPage } from './pages/ProductsPage';
4
+ export { ProductDetailPage } from './pages/ProductDetailPage';
5
+ export { CategoryPage } from './pages/CategoryPage';
6
+ export { CategoriesPage } from './pages/CategoriesPage';
7
+ export { ElectronicsGridCategoriesPage } from './pages/ElectronicsGridCategoriesPage';
8
+ export { AboutPage } from './pages/AboutPage';
9
+ export { ContactPage } from './pages/ContactPage';
10
+ export { HelpCenterPage } from './pages/HelpCenterPage';
11
+ export { PrivacyPolicyPage } from './pages/PrivacyPolicyPage';
12
+ export { ShippingReturnsPage } from './pages/ShippingReturnsPage';
13
+ export { TermsPage } from './pages/TermsPage';
14
+ export { TrackOrderPage } from './pages/TrackOrderPage';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/electronics-grid/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,15 @@
1
+ // Electronics-grid layout exports
2
+ export { ElectronicsHomePageGrid } from './components/ElectronicsHomePageGrid';
3
+ export { ElectronicsGridProductCard } from './components/ElectronicsGridProductCard';
4
+ export { ProductsPage } from './pages/ProductsPage';
5
+ export { ProductDetailPage } from './pages/ProductDetailPage';
6
+ export { CategoryPage } from './pages/CategoryPage';
7
+ export { CategoriesPage } from './pages/CategoriesPage';
8
+ export { ElectronicsGridCategoriesPage } from './pages/ElectronicsGridCategoriesPage';
9
+ export { AboutPage } from './pages/AboutPage';
10
+ export { ContactPage } from './pages/ContactPage';
11
+ export { HelpCenterPage } from './pages/HelpCenterPage';
12
+ export { PrivacyPolicyPage } from './pages/PrivacyPolicyPage';
13
+ export { ShippingReturnsPage } from './pages/ShippingReturnsPage';
14
+ export { TermsPage } from './pages/TermsPage';
15
+ export { TrackOrderPage } from './pages/TrackOrderPage';
@@ -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/electronics-grid/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"}
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Users, Award, Heart, Leaf, MapPin, Clock, Mail, ArrowRight } from 'lucide-react';
4
+ import { Button } from '../../../components/ui/button';
5
+ import { DotPattern } from '../../../components/ui/background-patterns';
6
+ import Image from 'next/image';
7
+ export function AboutPage({ storeConfig }) {
8
+ const primaryColor = storeConfig.branding.primaryColor;
9
+ const secondaryColor = storeConfig.branding.secondaryColor || primaryColor;
10
+ const aboutConfig = storeConfig.layoutConfig?.pages?.about;
11
+ // Electronics-grid-specific hero image
12
+ const heroImage = aboutConfig?.heroImage || 'https://images.unsplash.com/photo-1498049381960-da565139a979?q=80&w=2071&auto=format&fit=crop';
13
+ const pageTitle = aboutConfig?.title || "Crafting Experiences, Delivering Joy.";
14
+ const pageContent = aboutConfig?.content || storeConfig.description;
15
+ const missionStatement = aboutConfig?.missionStatement;
16
+ const galleryImages = aboutConfig?.gallerySection;
17
+ const values = [
18
+ {
19
+ icon: Award,
20
+ title: "Quality First",
21
+ description: "We never compromise on the quality of our products and services."
22
+ },
23
+ {
24
+ icon: Users,
25
+ title: "Customer Focused",
26
+ description: "Your satisfaction is our top priority. We're here to help."
27
+ },
28
+ {
29
+ icon: Heart,
30
+ title: "Passion",
31
+ description: "We love what we do and it shows in every detail of our work."
32
+ },
33
+ {
34
+ icon: Leaf,
35
+ title: "Sustainability",
36
+ description: "Committed to eco-friendly practices and responsible sourcing."
37
+ }
38
+ ];
39
+ return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [_jsxs("section", { className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow", unoptimized: true }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", 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-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx("p", { className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light", children: missionStatement || storeConfig.description })] }) }) })] }), _jsxs("section", { className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [galleryImages && galleryImages.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: galleryImages.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500", unoptimized: true }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src: "https://images.unsplash.com/photo-1522202176988-66273c2fd55f?q=80&w=2071&auto=format&fit=crop", alt: "Our Team", fill: true, className: "w-full h-full object-cover", unoptimized: true }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-60" }), _jsxs("div", { className: "absolute bottom-8 left-8 text-white", children: [_jsx("p", { className: "font-bold text-lg", children: "The Dream Team" }), _jsx("p", { className: "text-white/80 text-sm", children: "Working together to serve you better" })] })] })), _jsx("div", { className: "absolute -bottom-6 -right-6 w-24 h-24 bg-white rounded-2xl shadow-xl flex items-center justify-center p-4 animate-bounce duration-[3000ms]", children: _jsx(Heart, { className: "w-10 h-10", style: { color: primaryColor, fill: primaryColor } }) })] }), _jsxs("div", { className: "space-y-10", children: [_jsxs("div", { children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-widest mb-3 block", style: { color: primaryColor }, children: "Who We Are" }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: "Our Journey" }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", children: [pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))), !pageContent && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Founded with a bold vision to redefine excellence in the ", _jsx("span", { className: "font-semibold text-gray-900", children: storeConfig.type }), " industry, ", storeConfig.name, " has grown from a small passion project into a beloved brand. We believe in the power of quality, innovation, and community."] }), _jsx("p", { children: "Every day, we strive to bring you the best products, curated with care and delivered with a smile. Our team is dedicated to ensuring that your experience with us is nothing short of exceptional." })] }))] })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: values.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "w-14 h-14 rounded-2xl flex items-center justify-center transition-colors group-hover:bg-gray-100", style: { backgroundColor: `${primaryColor}10` }, children: _jsx(item.icon, { className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2 text-lg", children: item.title }), _jsx("p", { className: "text-gray-600 text-sm leading-relaxed", children: item.description })] })] }, idx))) })] })] }) })] }), _jsxs("section", { className: "py-20 relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-10", children: _jsx(DotPattern, { color: primaryColor, cx: 2, cy: 2, cr: 2, width: 30, height: 30 }) }), _jsx("div", { className: "absolute inset-0", style: { backgroundColor: `${secondaryColor}15` } }), _jsx("div", { className: "container mx-auto px-4 relative z-10", children: _jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12", children: [
40
+ { label: "Happy Customers", value: "10k+" },
41
+ { label: "Products", value: storeConfig.products?.length ? `${storeConfig.products.length * 10}+` : "50+" },
42
+ { label: "Years Active", value: "5+" },
43
+ { label: "Team Members", value: "25+" }
44
+ ].map((stat, idx) => (_jsxs("div", { className: "text-center group", children: [_jsx("div", { className: "text-5xl md:text-6xl font-black mb-2 tracking-tight transition-transform group-hover:scale-110 duration-300", style: { color: primaryColor }, children: stat.value }), _jsx("div", { className: "text-gray-600 font-bold uppercase tracking-widest text-xs md:text-sm", children: stat.label })] }, idx))) }) })] }), _jsx("section", { className: "py-24 px-4 sm:px-6 lg:px-8 bg-white", children: _jsxs("div", { className: "container mx-auto max-w-6xl", children: [_jsxs("div", { className: "text-center mb-16", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: "Get in Touch" }), _jsx("p", { className: "text-gray-500 max-w-xl mx-auto", children: "Have questions? We'd love to hear from you. Reach out to our team via email, phone, or visit us at our store." })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: [_jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(MapPin, { className: "h-8 w-8 text-gray-400 group-hover:text-blue-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Visit Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed", children: ["123 Store Street", _jsx("br", {}), "Commerce City, ST 12345"] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 border-2 border-transparent group-hover:border-orange-100 rounded-[2rem] transition-colors pointer-events-none" }), _jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Mail, { className: "h-8 w-8 text-gray-400 group-hover:text-orange-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Email Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed mb-4", children: ["hello@", storeConfig.slug, ".com", _jsx("br", {}), "support@", storeConfig.slug, ".com"] }), _jsxs(Button, { variant: "link", className: "text-orange-600 font-bold p-0 h-auto hover:no-underline group-hover:translate-x-1 transition-transform", children: ["Send a message ", _jsx(ArrowRight, { className: "ml-1 h-4 w-4" })] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Clock, { className: "h-8 w-8 text-gray-400 group-hover:text-green-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Opening Hours" }), _jsxs("p", { className: "text-gray-600 leading-relaxed", children: ["Mon - Fri: 9am - 6pm", _jsx("br", {}), "Sat - Sun: 10am - 4pm"] })] })] })] }) })] }));
45
+ }
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface CategoriesPageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function CategoriesPage({ storeConfig }: CategoriesPageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CategoriesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoriesPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics-grid/pages/CategoriesPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,UAAU,mBAAmB;IAC3B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,mBAAmB,2CAElE"}
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { ElectronicsGridCategoriesPage } from '../../../layouts/electronics-grid/pages/ElectronicsGridCategoriesPage';
4
+ export function CategoriesPage({ storeConfig }) {
5
+ return _jsx(ElectronicsGridCategoriesPage, { storeConfig: storeConfig });
6
+ }
@@ -0,0 +1,8 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface CategoryPageProps {
3
+ storeConfig: StoreConfig;
4
+ categorySlug: string;
5
+ }
6
+ export declare function CategoryPage({ storeConfig, categorySlug }: CategoryPageProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=CategoryPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoryPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics-grid/pages/CategoryPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA8B,MAAM,mBAAmB,CAAC;AAc5E,UAAU,iBAAiB;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,iBAAiB,2CA+N5E"}
@@ -0,0 +1,67 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button } from '../../../components/ui/button';
4
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
5
+ import { useStore } from '../../../lib/store-context';
6
+ import { ArrowLeft, Filter, Clock, Star, ArrowRight } from 'lucide-react';
7
+ import Link from 'next/link';
8
+ import { useToast } from '../../../components/ui/toast';
9
+ import { useAnalytics } from '../../../hooks/use-analytics';
10
+ import { useEffect } from 'react';
11
+ import { ProductCard } from '../../../components/ui/product-card';
12
+ import { getLayoutText, getTextContent } from '../../../lib/utils/asset-helpers';
13
+ import { formatCurrency, filterActiveProducts, filterActiveServices } from '../../../lib/utils';
14
+ import Image from 'next/image';
15
+ export function CategoryPage({ storeConfig, categorySlug }) {
16
+ const categories = storeConfig.categories || [];
17
+ const category = categories.find(c => c.slug === categorySlug);
18
+ const products = filterActiveProducts(storeConfig.products?.filter(p => p.categoryId === category?.id) || []);
19
+ const services = filterActiveServices(storeConfig.services?.filter(s => s.categoryId === category?.id) || []);
20
+ const { addToCart } = useStore();
21
+ const { addToast } = useToast();
22
+ const { trackEvent } = useAnalytics();
23
+ // Track category view
24
+ useEffect(() => {
25
+ if (category && storeConfig?.id) {
26
+ trackEvent({
27
+ eventType: 'category_view',
28
+ metadata: {
29
+ categoryId: category.id,
30
+ categoryName: category.name,
31
+ categorySlug: category.slug,
32
+ },
33
+ });
34
+ }
35
+ }, [category?.id, storeConfig?.id, trackEvent]);
36
+ // Determine if this is a service-based store
37
+ const isServiceStore = storeConfig.type === 'booking' ||
38
+ storeConfig.layout === 'booking' ||
39
+ storeConfig.layout === 'booking-agenda' ||
40
+ (storeConfig.services && storeConfig.services.length > 0);
41
+ // Show services if it's a service store, or if there are services for this category
42
+ const shouldShowServices = isServiceStore || services.length > 0;
43
+ const shouldShowProducts = !isServiceStore || products.length > 0;
44
+ const hasItems = (shouldShowServices && services.length > 0) || (shouldShowProducts && products.length > 0);
45
+ const handleAddToCart = (product) => {
46
+ addToCart(product);
47
+ addToast(`${product.name} added to cart`, 'success');
48
+ };
49
+ const handleQuickView = (product) => {
50
+ addToast(`Quick view for ${product.name}`, 'info');
51
+ };
52
+ if (!category) {
53
+ return (_jsx("div", { className: "min-h-screen bg-gray-50 flex items-center justify-center p-8", children: _jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "text-2xl font-bold mb-2", children: "Category Not Found" }), _jsx("p", { className: "text-gray-600 mb-4", children: "The category you're looking for doesn't exist." }), _jsx(Link, { href: `/${storeConfig.slug}/categories`, children: _jsx(Button, { children: "Back to Categories" }) })] }) }));
54
+ }
55
+ // Modern / Dark Theme Logic (e.g. for Modern Eats)
56
+ const isDarkTheme = storeConfig.type === 'food-modern' || storeConfig.branding.theme === 'dark';
57
+ const bgColor = isDarkTheme ? 'bg-[#0F0F0F]' : 'bg-gray-50';
58
+ const textColor = isDarkTheme ? 'text-white' : 'text-gray-900';
59
+ return (_jsxs("div", { className: `min-h-screen ${bgColor} ${textColor} transition-colors duration-300`, children: [_jsxs("div", { className: "relative h-[40vh] overflow-hidden", children: [_jsx(ImageWithFallback, { src: category.image, alt: category.name, className: "w-full h-full object-cover", skeletonAspectRatio: "16/9" }), _jsx("div", { className: `absolute inset-0 ${isDarkTheme ? 'bg-black/60' : 'bg-black/40'} backdrop-blur-[2px]` }), _jsxs("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-center p-6 text-white", children: [_jsx("h1", { className: "text-5xl md:text-7xl font-bold tracking-tight mb-4", children: category.name }), category.description && (_jsx("p", { className: "text-lg md:text-xl max-w-2xl opacity-90 font-light", children: category.description }))] })] }), _jsxs("div", { className: "container mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-12", children: [_jsxs("div", { className: "flex flex-col md:flex-row justify-between items-center mb-10 gap-4", children: [_jsxs(Link, { href: `/${storeConfig.slug}/categories`, className: `inline-flex items-center text-sm font-medium ${isDarkTheme ? 'text-gray-400 hover:text-white' : 'text-gray-600 hover:text-gray-900'}`, children: [_jsx(ArrowLeft, { className: "h-4 w-4 mr-2" }), "Back to All Categories"] }), _jsx("div", { className: "flex items-center gap-4", children: _jsxs(Button, { variant: "outline", className: `${isDarkTheme ? 'border-white/20 text-white hover:bg-white/10' : 'bg-white'}`, children: [_jsx(Filter, { className: "h-4 w-4 mr-2" }), " Filter"] }) })] }), !hasItems ? (_jsxs("div", { className: "text-center py-20 border border-dashed border-gray-300 rounded-3xl", children: [_jsx("p", { className: "text-gray-500 text-lg", children: (() => {
60
+ const itemType = isServiceStore ? 'services' : 'products';
61
+ const defaultMessage = isServiceStore
62
+ ? 'No services found in this category.'
63
+ : 'No products found in this category.';
64
+ // Try to get from layout config, fallback to default
65
+ return getLayoutText(storeConfig, `sections.categories.emptyState.${itemType}`, getTextContent(storeConfig, `category_empty_${itemType}`, defaultMessage));
66
+ })() }), _jsx(Button, { className: "mt-4", onClick: () => window.history.back(), children: "Go Back" })] })) : (_jsxs("div", { className: "space-y-12", children: [shouldShowServices && services.length > 0 && (_jsxs("div", { children: [_jsx("h2", { className: "text-2xl font-bold mb-6", children: isServiceStore ? 'Services' : 'Services in this Category' }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8", children: services.map((service) => (_jsxs("div", { className: "group flex flex-col h-full", children: [_jsxs(Link, { href: `/${storeConfig.slug}/book?service=${service.slug}`, className: "block relative aspect-[4/3] rounded-2xl overflow-hidden bg-gray-100 mb-4 shadow-sm group-hover:shadow-xl transition-all duration-500", children: [_jsx(Image, { src: service.image || 'https://images.unsplash.com/photo-1629909613654-28e377c37b09?w=800&auto=format&fit=crop&q=60', alt: service.name, fill: true, className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-105", unoptimized: true }), _jsx("div", { className: "absolute bottom-4 left-4 bg-white/95 backdrop-blur px-4 py-2 rounded-full text-sm font-bold shadow-sm text-gray-900", children: formatCurrency(service.price, service.currency || storeConfig.settings?.currency || 'USD') }), _jsx("div", { className: "absolute inset-0 bg-black/20 opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-center justify-center", children: _jsx(Button, { className: "rounded-full bg-white text-black hover:bg-gray-100 transform translate-y-4 group-hover:translate-y-0 transition-all duration-300 shadow-lg font-bold px-8", children: "Book Now" }) })] }), _jsxs("div", { className: "flex flex-col flex-1", children: [_jsx(Link, { href: `/${storeConfig.slug}/book?service=${service.slug}`, children: _jsx("h3", { className: "text-xl font-bold text-gray-900 mb-2 group-hover:text-gray-600 transition-colors", children: service.name }) }), _jsx("p", { className: "text-gray-500 mb-4 line-clamp-2 leading-relaxed text-sm flex-1", children: service.description }), _jsxs("div", { className: "flex items-center justify-between pt-4 border-t border-gray-100 text-sm font-medium text-gray-500", children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Clock, { className: "w-4 h-4 text-gray-400" }), service.duration, " mins"] }), service.provider && service.provider.rating && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Star, { className: "w-4 h-4 fill-gray-200 text-gray-200" }), service.provider.rating] }))] }), _jsxs(Link, { href: `/${storeConfig.slug}/book?service=${service.slug}`, className: "flex items-center gap-2 text-black font-bold group/link", children: ["Book ", _jsx(ArrowRight, { className: "w-4 h-4 transition-transform group-hover/link:translate-x-1" })] })] })] })] }, service.id))) })] })), shouldShowProducts && products.length > 0 && (_jsxs("div", { children: [shouldShowServices && services.length > 0 && (_jsx("h2", { className: "text-2xl font-bold mb-6", children: "Products in this Category" })), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-8", children: products.map((product) => (_jsx(ProductCard, { product: product, storeSlug: storeConfig.slug, onAddToCart: handleAddToCart, onQuickView: handleQuickView }, product.id))) })] }))] }))] })] }));
67
+ }
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface ContactPageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function ContactPage({ storeConfig }: ContactPageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ContactPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics-grid/pages/ContactPage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,UAAU,gBAAgB;IACxB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,gBAAgB,2CA6P5D"}
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { Button } from '../../../components/ui/button';
5
+ import { Mail, Phone, MapPin, Clock, Send, MessageSquare, CheckCircle } from 'lucide-react';
6
+ import Image from 'next/image';
7
+ export function ContactPage({ storeConfig }) {
8
+ // We use CSS variables for theming to inherit from parent layout
9
+ // const primaryColor = storeConfig.branding.primaryColor;
10
+ // const secondaryColor = storeConfig.branding.secondaryColor || primaryColor;
11
+ const [formState, setFormState] = useState('idle');
12
+ const handleSubmit = async (e) => {
13
+ e.preventDefault();
14
+ setFormState('submitting');
15
+ // Simulate API call
16
+ await new Promise(resolve => setTimeout(resolve, 1500));
17
+ setFormState('success');
18
+ };
19
+ return (_jsxs("div", { className: "min-h-screen bg-white pb-20", children: [_jsxs("section", { className: "relative bg-gray-900 text-white py-20 overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0 opacity-20", children: [_jsx(Image, { src: "https://images.unsplash.com/photo-1596524430615-b46475ddff6e?q=80&w=2070&auto=format&fit=crop", alt: "Contact Background", fill: true, className: "w-full h-full object-cover", unoptimized: true }), _jsx("div", { className: "absolute inset-0 bg-black/60" })] }), _jsxs("div", { className: "container mx-auto px-4 relative z-10 text-center", children: [_jsx("h1", { className: "text-4xl md:text-6xl font-bold mb-4 tracking-tight", children: "Get in Touch" }), _jsx("p", { className: "text-xl text-gray-300 max-w-2xl mx-auto font-light", children: "We'd love to hear from you. Here's how you can reach us." })] })] }), _jsx("div", { className: "container mx-auto px-4 -mt-10 relative z-20 max-w-6xl", children: _jsxs("div", { className: "bg-white rounded-3xl shadow-xl overflow-hidden border border-gray-100 flex flex-col lg:flex-row", children: [_jsxs("div", { className: "lg:w-2/5 p-8 md:p-12 text-white relative overflow-hidden", style: { backgroundColor: 'var(--store-primary)' }, children: [_jsx("div", { className: "absolute top-0 right-0 -mt-10 -mr-10 w-40 h-40 bg-white opacity-10 rounded-full blur-2xl" }), _jsx("div", { className: "absolute bottom-0 left-0 -mb-10 -ml-10 w-40 h-40 bg-black opacity-10 rounded-full blur-2xl" }), _jsx("h2", { className: "text-2xl font-bold mb-8 relative z-10", children: "Contact Information" }), _jsx("p", { className: "mb-10 text-white/90 leading-relaxed relative z-10", children: "Fill out the form and our team will get back to you within 24 hours." }), _jsxs("div", { className: "space-y-8 relative z-10", children: [_jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(Phone, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Call Us" }), _jsx("p", { className: "text-white/80", children: "+1 (555) 123-4567" }), _jsx("p", { className: "text-white/80", children: "+1 (555) 987-6543" })] })] }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(Mail, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Email Us" }), _jsxs("p", { className: "text-white/80", children: ["hello@", storeConfig.slug, ".com"] }), _jsxs("p", { className: "text-white/80", children: ["support@", storeConfig.slug, ".com"] })] })] }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(MapPin, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Visit Us" }), _jsxs("p", { className: "text-white/80", children: ["123 Commerce Blvd,", _jsx("br", {}), "Suite 100,", _jsx("br", {}), "Business City, ST 12345"] })] })] }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(Clock, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Opening Hours" }), _jsx("p", { className: "text-white/80", children: "Mon - Fri: 9am - 6pm" }), _jsx("p", { className: "text-white/80", children: "Sat: 10am - 4pm" })] })] })] }), _jsx("div", { className: "mt-12 relative z-10", children: _jsx("div", { className: "flex gap-4", children: [1, 2, 3, 4].map((i) => (_jsx("div", { className: "w-8 h-8 rounded-full bg-white/20 hover:bg-white/30 cursor-pointer transition-colors" }, i))) }) })] }), _jsxs("div", { className: "lg:w-3/5 p-8 md:p-12 bg-white relative", children: [_jsx("div", { className: "absolute top-0 right-0 p-6 opacity-5", children: _jsx(MessageSquare, { className: "w-32 h-32" }) }), formState === 'success' ? (_jsxs("div", { className: "h-full flex flex-col items-center justify-center text-center py-10", children: [_jsx("div", { className: "w-20 h-20 bg-green-100 rounded-full flex items-center justify-center mb-6", children: _jsx(CheckCircle, { className: "w-10 h-10 text-green-600" }) }), _jsx("h3", { className: "text-2xl font-bold text-gray-900 mb-2", children: "Message Sent!" }), _jsx("p", { className: "text-gray-600 max-w-sm mx-auto mb-8", children: "Thank you for contacting us. We have received your message and will respond as soon as possible." }), _jsx(Button, { onClick: () => setFormState('idle'), className: "bg-gray-900 hover:bg-gray-800", children: "Send Another Message" })] })) : (_jsxs("form", { onSubmit: handleSubmit, className: "relative z-10 space-y-6", children: [_jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-6", children: "Send us a Message" }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "firstName", className: "text-sm font-medium text-gray-700", children: "First Name" }), _jsx("input", { type: "text", id: "firstName", required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "John" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "lastName", className: "text-sm font-medium text-gray-700", children: "Last Name" }), _jsx("input", { type: "text", id: "lastName", required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "Doe" })] })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "email", className: "text-sm font-medium text-gray-700", children: "Email Address" }), _jsx("input", { type: "email", id: "email", required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "john@example.com" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "phone", className: "text-sm font-medium text-gray-700", children: "Phone (Optional)" }), _jsx("input", { type: "tel", id: "phone", className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "+1 (555) 000-0000" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "subject", className: "text-sm font-medium text-gray-700", children: "Subject" }), _jsxs("select", { id: "subject", className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", children: [_jsx("option", { value: "general", children: "General Inquiry" }), _jsx("option", { value: "support", children: "Customer Support" }), _jsx("option", { value: "orders", children: "Orders & Returns" }), _jsx("option", { value: "wholesale", children: "Wholesale & Partnerships" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "message", className: "text-sm font-medium text-gray-700", children: "Message" }), _jsx("textarea", { id: "message", rows: 4, required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all resize-none", placeholder: "How can we help you today?" })] }), _jsx("div", { className: "pt-2", children: _jsx(Button, { type: "submit", disabled: formState === 'submitting', className: "w-full py-6 text-lg font-semibold rounded-xl", style: { backgroundColor: 'var(--store-primary)' }, children: formState === 'submitting' ? (_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-4 h-4 border-2 border-white/20 border-t-white rounded-full animate-spin" }), "Sending..."] })) : (_jsxs("span", { className: "flex items-center gap-2", children: ["Send Message", _jsx(Send, { className: "w-4 h-4" })] })) }) })] }))] })] }) }), _jsx("section", { className: "container mx-auto px-4 mt-20 max-w-6xl", children: _jsxs("div", { className: "bg-gray-100 rounded-3xl overflow-hidden h-96 w-full relative grayscale hover:grayscale-0 transition-all duration-500", children: [_jsx("iframe", { src: "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.2219901290355!2d-74.00369368400567!3d40.71312937933185!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a23e28c1191%3A0x49f75d3281df052a!2s150%20Park%20Row%2C%20New%20York%2C%20NY%2010007!5e0!3m2!1sen!2sus!4v1620000000000!5m2!1sen!2sus", width: "100%", height: "100%", style: { border: 0 }, allowFullScreen: true, loading: "lazy", title: "Store Location" }), _jsxs("div", { className: "absolute top-4 right-4 bg-white p-4 rounded-xl shadow-lg z-10 hidden md:block", children: [_jsx("p", { className: "font-bold text-gray-900", children: storeConfig.name }), _jsx("p", { className: "text-sm text-gray-500", children: "123 Commerce Blvd" })] })] }) })] }));
20
+ }
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface ElectronicsGridCategoriesPageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function ElectronicsGridCategoriesPage({ storeConfig }: ElectronicsGridCategoriesPageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ElectronicsGridCategoriesPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElectronicsGridCategoriesPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,UAAU,kCAAkC;IAC1C,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,6BAA6B,CAAC,EAAE,WAAW,EAAE,EAAE,kCAAkC,2CAsGhG"}
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Link from 'next/link';
4
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
5
+ import { motion } from 'framer-motion';
6
+ import { ArrowRight, Layers } from 'lucide-react';
7
+ import { Breadcrumbs } from '../../../components/ui/breadcrumbs';
8
+ export function ElectronicsGridCategoriesPage({ storeConfig }) {
9
+ const categories = storeConfig.categories || [];
10
+ const breadcrumbItems = [
11
+ { label: storeConfig.name, href: `/${storeConfig.slug}` },
12
+ { label: 'Categories', href: `/${storeConfig.slug}/categories` },
13
+ ];
14
+ return (_jsxs("div", { className: "min-h-screen bg-slate-50 font-sans text-slate-900", children: [_jsx("div", { className: "bg-white border-b border-slate-100", children: _jsxs("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8 py-8 lg:py-12", children: [_jsx("div", { className: "mb-8", children: _jsx(Breadcrumbs, { items: breadcrumbItems }) }), _jsxs(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5 }, className: "max-w-4xl", children: [_jsxs("h1", { className: "text-4xl lg:text-5xl font-extrabold tracking-tight text-slate-900 mb-4", children: ["Tech ", _jsx("span", { className: "text-blue-600", children: "Categories" })] }), _jsx("p", { className: "text-lg text-slate-500 max-w-2xl leading-relaxed", children: "Discover cutting-edge technology across our specialized departments. Engineered for performance, designed for you." })] })] }) }), _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8 py-12 lg:py-16", children: _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 lg:gap-8", children: categories.map((category, index) => (_jsx(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.4, delay: index * 0.1 }, children: _jsxs(Link, { href: `/${storeConfig.slug}/categories/${category.slug}`, className: "group relative block h-[320px] rounded-2xl overflow-hidden bg-white shadow-sm hover:shadow-xl hover:shadow-blue-500/10 transition-all duration-500 border border-slate-100 hover:border-blue-200/60", children: [_jsxs("div", { className: "absolute inset-0 z-0", children: [_jsx(ImageWithFallback, { src: category.image, alt: category.name, className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-105 group-hover:blur-[2px]", skeletonAspectRatio: "auto" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-slate-900/90 via-slate-900/40 to-transparent opacity-80 group-hover:opacity-90 transition-opacity duration-500" })] }), _jsxs("div", { className: "absolute inset-0 z-10 p-8 flex flex-col justify-end", children: [_jsx("div", { className: "mb-auto transform -translate-y-4 opacity-0 group-hover:translate-y-0 group-hover:opacity-100 transition-all duration-500 ease-out", children: _jsx("span", { className: "inline-flex items-center justify-center w-10 h-10 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white", children: _jsx(Layers, { className: "w-5 h-5" }) }) }), _jsxs("div", { className: "transform translate-y-2 group-hover:translate-y-0 transition-transform duration-500", children: [_jsx("h2", { className: "text-2xl md:text-3xl font-bold text-white mb-3 tracking-tight", children: category.name }), category.description && (_jsx("p", { className: "text-slate-200 text-sm line-clamp-2 mb-6 opacity-0 group-hover:opacity-100 transition-all duration-500 delay-100 transform translate-y-4 group-hover:translate-y-0", children: category.description })), _jsx("div", { className: "flex items-center gap-3", children: _jsxs("span", { className: "inline-flex items-center gap-2 px-4 py-2 rounded-full bg-blue-600/90 hover:bg-blue-600 text-white text-xs font-bold uppercase tracking-wider backdrop-blur-sm transition-all duration-300 group-hover:scale-105 group-hover:shadow-lg group-hover:shadow-blue-500/30", children: ["Browse ", _jsx(ArrowRight, { className: "w-3 h-3 group-hover:translate-x-1 transition-transform" })] }) })] })] }), _jsx("div", { className: "absolute top-0 right-0 p-6 opacity-30 group-hover:opacity-60 transition-opacity duration-500", children: _jsxs("div", { className: "flex gap-1", children: [_jsx("div", { className: "w-1 h-8 bg-blue-500/50 rounded-full transform rotate-12" }), _jsx("div", { className: "w-1 h-12 bg-blue-400/50 rounded-full transform rotate-12" }), _jsx("div", { className: "w-1 h-6 bg-blue-300/50 rounded-full transform rotate-12" })] }) })] }) }, category.id))) }) })] }));
15
+ }
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface HelpCenterPageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function HelpCenterPage({ storeConfig }: HelpCenterPageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=HelpCenterPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelpCenterPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics-grid/pages/HelpCenterPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,UAAU,mBAAmB;IAC3B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,mBAAmB,2CA+IlE"}
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Search, ChevronDown, ChevronUp, Mail, Phone, MessageCircle } from 'lucide-react';
4
+ import { useState } from 'react';
5
+ import { Button } from '../../../components/ui/button';
6
+ export function HelpCenterPage({ storeConfig }) {
7
+ const primaryColor = storeConfig.branding.primaryColor;
8
+ const faqConfig = storeConfig.layoutConfig?.pages?.faq;
9
+ // Convert flat list of FAQs from config to categorized structure if needed,
10
+ // or just use a default category if the structure doesn't match perfectly.
11
+ // For simplicity, if config items exist, we'll put them in a "General Questions" category.
12
+ const faqs = faqConfig?.items ? [
13
+ {
14
+ category: "Frequently Asked Questions",
15
+ questions: faqConfig.items.map(item => ({ q: item.question, a: item.answer }))
16
+ }
17
+ ] : [
18
+ {
19
+ category: "Ordering & Payment",
20
+ questions: [
21
+ { q: "What payment methods do you accept?", a: "We accept all major credit cards (Visa, Mastercard, American Express), PayPal, and various local payment methods depending on your region." },
22
+ { q: "Can I modify my order after placing it?", a: "Orders can be modified within 30 minutes of placement. Please contact our support team immediately if you need to make changes." },
23
+ { q: "How do I use a promo code?", a: "You can enter your promo code at checkout in the designated box. The discount will be applied to your total immediately." }
24
+ ]
25
+ },
26
+ {
27
+ category: "Shipping & Delivery",
28
+ questions: [
29
+ { q: "Do you ship internationally?", a: "Yes, we ship to most countries worldwide. Shipping costs and delivery times vary by location." },
30
+ { q: "How long will my order take to arrive?", a: "Standard shipping typically takes 3-5 business days domestically. Express shipping options are available at checkout." },
31
+ { q: "How can I track my order?", a: "Once your order ships, you'll receive a confirmation email with a tracking number and link to track your package." }
32
+ ]
33
+ },
34
+ {
35
+ category: "Returns & Refunds",
36
+ questions: [
37
+ { q: "What is your return policy?", a: "We offer a 30-day return policy for unused items in original packaging. Some exclusions apply to final sale items." },
38
+ { q: "How long do refunds take to process?", a: "Refunds are typically processed within 5-7 business days after we receive your return." }
39
+ ]
40
+ }
41
+ ];
42
+ const [openIndex, setOpenIndex] = useState(null);
43
+ const toggleAccordion = (id) => {
44
+ setOpenIndex(openIndex === id ? null : id);
45
+ };
46
+ return (_jsxs("div", { className: "min-h-screen bg-gray-50 pb-20", children: [_jsx("div", { className: "bg-white border-b", children: _jsxs("div", { className: "container mx-auto px-4 py-16 sm:py-24 text-center max-w-3xl", children: [_jsx("h1", { className: "text-4xl font-bold tracking-tight text-gray-900 mb-6", children: faqConfig?.title || "How can we help you?" }), _jsxs("div", { className: "relative max-w-xl mx-auto", children: [_jsx(Search, { className: "absolute left-4 top-1/2 -translate-y-1/2 h-5 w-5 text-gray-400" }), _jsx("input", { type: "text", placeholder: "Search for answers...", className: "w-full pl-12 pr-4 py-4 rounded-xl border border-gray-200 shadow-sm focus:outline-none focus:ring-2 focus:border-transparent text-lg", style: { '--tw-ring-color': primaryColor } })] })] }) }), _jsxs("div", { className: "container mx-auto px-4 py-12 max-w-4xl", children: [_jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6 mb-16", children: [
47
+ { title: "Track Order", icon: MessageCircle, desc: "Check your order status" },
48
+ { title: "Shipping Info", icon: Mail, desc: "Delivery times & costs" },
49
+ { title: "Returns", icon: Phone, desc: "Start a return or exchange" }
50
+ ].map((item, i) => (_jsxs("div", { className: "bg-white p-6 rounded-xl border border-gray-100 shadow-sm hover:shadow-md transition-shadow cursor-pointer", children: [_jsx(item.icon, { className: "h-8 w-8 mb-4", style: { color: primaryColor } }), _jsx("h3", { className: "font-semibold text-lg text-gray-900 mb-2", children: item.title }), _jsx("p", { className: "text-gray-500", children: item.desc })] }, i))) }), _jsx("div", { className: "space-y-12", children: faqs.map((section, sectionIdx) => (_jsxs("div", { children: [_jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-6", children: section.category }), _jsx("div", { className: "space-y-4", children: section.questions.map((faq, faqIdx) => {
51
+ const id = `${sectionIdx}-${faqIdx}`;
52
+ const isOpen = openIndex === id;
53
+ return (_jsxs("div", { className: "bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200", children: [_jsxs("button", { onClick: () => toggleAccordion(id), className: "w-full flex items-center justify-between p-5 text-left bg-white hover:bg-gray-50 transition-colors", children: [_jsx("span", { className: "font-medium text-gray-900", children: faq.q }), isOpen ? (_jsx(ChevronUp, { className: "h-5 w-5 text-gray-500" })) : (_jsx(ChevronDown, { className: "h-5 w-5 text-gray-500" }))] }), _jsx("div", { className: `overflow-hidden transition-all duration-300 ease-in-out ${isOpen ? 'max-h-48 opacity-100' : 'max-h-0 opacity-0'}`, children: _jsx("div", { className: "p-5 pt-0 text-gray-600 border-t border-gray-100 bg-gray-50/50", children: faq.a }) })] }, faqIdx));
54
+ }) })] }, sectionIdx))) }), _jsxs("div", { className: "mt-20 bg-white rounded-2xl p-8 md:p-12 border border-gray-100 shadow-lg text-center", children: [_jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-4", children: "Still need help?" }), _jsx("p", { className: "text-gray-500 mb-8 max-w-lg mx-auto", children: "Our support team is available Monday through Friday, 9am to 6pm EST. We usually respond within 24 hours." }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-4 justify-center", children: [_jsx(Button, { className: "px-8 py-6 text-base", style: { backgroundColor: primaryColor }, children: "Contact Support" }), _jsx(Button, { variant: "outline", className: "px-8 py-6 text-base", children: "Email Us" })] })] })] })] }));
55
+ }
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface PrivacyPolicyPageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function PrivacyPolicyPage({ storeConfig }: PrivacyPolicyPageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=PrivacyPolicyPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrivacyPolicyPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics-grid/pages/PrivacyPolicyPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,UAAU,sBAAsB;IAC9B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,EAAE,WAAW,EAAE,EAAE,sBAAsB,2CA2GxE"}
@@ -0,0 +1,8 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ShieldCheck, ArrowLeft } from 'lucide-react';
4
+ import Link from 'next/link';
5
+ export function PrivacyPolicyPage({ storeConfig }) {
6
+ const primaryColor = storeConfig.branding.primaryColor;
7
+ return (_jsxs("div", { className: "min-h-screen bg-gray-50 pb-20", children: [_jsx("div", { className: "bg-white border-b", children: _jsxs("div", { className: "container mx-auto px-4 py-8", children: [_jsxs(Link, { href: `/${storeConfig.slug}`, className: "inline-flex items-center gap-2 text-gray-500 hover:text-gray-900 transition-colors mb-6", children: [_jsx(ArrowLeft, { className: "w-4 h-4" }), "Back to Home"] }), _jsxs("div", { className: "flex items-center gap-4", children: [_jsx("div", { className: "w-12 h-12 rounded-xl flex items-center justify-center", style: { backgroundColor: `${primaryColor}15` }, children: _jsx(ShieldCheck, { className: "w-6 h-6", style: { color: primaryColor } }) }), _jsx("h1", { className: "text-3xl font-bold text-gray-900", children: "Privacy Policy" })] })] }) }), _jsx("div", { className: "container mx-auto px-4 py-12 max-w-4xl", children: _jsxs("div", { className: "bg-white rounded-2xl p-8 md:p-12 shadow-sm border border-gray-100 prose prose-lg max-w-none", children: [_jsxs("p", { className: "text-gray-500 lead", children: ["Last updated: ", new Date().toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })] }), _jsxs("p", { children: ["At ", storeConfig.name, ", accessible from ", typeof window !== 'undefined' ? window.location.origin : 'our website', ", one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by ", storeConfig.name, " and how we use it."] }), _jsx("p", { children: "If you have additional questions or require more information about our Privacy Policy, do not hesitate to contact us." }), _jsx("h3", { children: "Log Files" }), _jsxs("p", { children: [storeConfig.name, " follows a standard procedure of using log files. These files log visitors when they visit websites. All hosting companies do this and a part of hosting services' analytics. The information collected by log files include internet protocol (IP) addresses, browser type, Internet Service Provider (ISP), date and time stamp, referring/exit pages, and possibly the number of clicks. These are not linked to any information that is personally identifiable. The purpose of the information is for analyzing trends, administering the site, tracking users' movement on the website, and gathering demographic information."] }), _jsx("h3", { children: "Cookies and Web Beacons" }), _jsxs("p", { children: ["Like any other website, ", storeConfig.name, " uses \"cookies\". These cookies are used to store information including visitors' preferences, and the pages on the website that the visitor accessed or visited. The information is used to optimize the users' experience by customizing our web page content based on visitors' browser type and/or other information."] }), _jsx("h3", { children: "Privacy Policies" }), _jsxs("p", { children: ["You may consult this list to find the Privacy Policy for each of the advertising partners of ", storeConfig.name, "."] }), _jsxs("p", { children: ["Third-party ad servers or ad networks uses technologies like cookies, JavaScript, or Web Beacons that are used in their respective advertisements and links that appear on ", storeConfig.name, ", which are sent directly to users' browser. They automatically receive your IP address when this occurs. These technologies are used to measure the effectiveness of their advertising campaigns and/or to personalize the advertising content that you see on websites that you visit."] }), _jsxs("p", { children: ["Note that ", storeConfig.name, " has no access to or control over these cookies that are used by third-party advertisers."] }), _jsx("h3", { children: "Third Party Privacy Policies" }), _jsxs("p", { children: [storeConfig.name, "'s Privacy Policy does not apply to other advertisers or websites. Thus, we are advising you to consult the respective Privacy Policies of these third-party ad servers for more detailed information. It may include their practices and instructions about how to opt-out of certain options."] }), _jsx("p", { children: "You can choose to disable cookies through your individual browser options. To know more detailed information about cookie management with specific web browsers, it can be found at the browsers' respective websites." }), _jsx("h3", { children: "Children's Information" }), _jsx("p", { children: "Another part of our priority is adding protection for children while using the internet. We encourage parents and guardians to observe, participate in, and/or monitor and guide their online activity." }), _jsxs("p", { children: [storeConfig.name, " does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records."] }), _jsx("h3", { children: "Online Privacy Policy Only" }), _jsxs("p", { children: ["This Privacy Policy applies only to our online activities and is valid for visitors to our website with regards to the information that they shared and/or collect in ", storeConfig.name, ". This policy is not applicable to any information collected offline or via channels other than this website."] }), _jsx("h3", { children: "Consent" }), _jsx("p", { children: "By using our website, you hereby consent to our Privacy Policy and agree to its Terms and Conditions." })] }) })] }));
8
+ }
@@ -0,0 +1,8 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface ProductDetailPageProps {
3
+ storeConfig: StoreConfig;
4
+ productSlug: string;
5
+ }
6
+ export declare function ProductDetailPage({ storeConfig, productSlug }: ProductDetailPageProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ProductDetailPage.d.ts.map