payaza-storefront-layouts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/README.md +108 -0
  2. package/dist/components/learning/CertificateTemplates.d.ts +25 -0
  3. package/dist/components/learning/CertificateTemplates.d.ts.map +1 -0
  4. package/dist/components/learning/CertificateTemplates.js +31 -0
  5. package/dist/components/learning/CertificateViewer.d.ts +11 -0
  6. package/dist/components/learning/CertificateViewer.d.ts.map +1 -0
  7. package/dist/components/learning/CertificateViewer.js +114 -0
  8. package/dist/components/learning/MentorshipProgress.d.ts +18 -0
  9. package/dist/components/learning/MentorshipProgress.d.ts.map +1 -0
  10. package/dist/components/learning/MentorshipProgress.js +19 -0
  11. package/dist/components/ui/address-selector.d.ts +11 -0
  12. package/dist/components/ui/address-selector.d.ts.map +1 -0
  13. package/dist/components/ui/address-selector.js +21 -0
  14. package/dist/components/ui/avatar-image.d.ts +11 -0
  15. package/dist/components/ui/avatar-image.d.ts.map +1 -0
  16. package/dist/components/ui/avatar-image.js +39 -0
  17. package/dist/components/ui/background-patterns.d.ts +27 -0
  18. package/dist/components/ui/background-patterns.d.ts.map +1 -0
  19. package/dist/components/ui/background-patterns.js +5 -0
  20. package/dist/components/ui/badge.d.ts +10 -0
  21. package/dist/components/ui/badge.d.ts.map +1 -0
  22. package/dist/components/ui/badge.js +20 -0
  23. package/dist/components/ui/breadcrumbs.d.ts +11 -0
  24. package/dist/components/ui/breadcrumbs.d.ts.map +1 -0
  25. package/dist/components/ui/breadcrumbs.js +8 -0
  26. package/dist/components/ui/button.d.ts +11 -0
  27. package/dist/components/ui/button.d.ts.map +1 -0
  28. package/dist/components/ui/button.js +33 -0
  29. package/dist/components/ui/card.d.ts +10 -0
  30. package/dist/components/ui/card.d.ts.map +1 -0
  31. package/dist/components/ui/card.js +24 -0
  32. package/dist/components/ui/category-tree.d.ts +16 -0
  33. package/dist/components/ui/category-tree.d.ts.map +1 -0
  34. package/dist/components/ui/category-tree.js +74 -0
  35. package/dist/components/ui/checkout-button.d.ts +11 -0
  36. package/dist/components/ui/checkout-button.d.ts.map +1 -0
  37. package/dist/components/ui/checkout-button.js +174 -0
  38. package/dist/components/ui/guest-checkout-modal.d.ts +19 -0
  39. package/dist/components/ui/guest-checkout-modal.d.ts.map +1 -0
  40. package/dist/components/ui/guest-checkout-modal.js +92 -0
  41. package/dist/components/ui/image-skeleton.d.ts +7 -0
  42. package/dist/components/ui/image-skeleton.d.ts.map +1 -0
  43. package/dist/components/ui/image-skeleton.js +15 -0
  44. package/dist/components/ui/image-with-fallback.d.ts +9 -0
  45. package/dist/components/ui/image-with-fallback.d.ts.map +1 -0
  46. package/dist/components/ui/image-with-fallback.js +203 -0
  47. package/dist/components/ui/input.d.ts +6 -0
  48. package/dist/components/ui/input.d.ts.map +1 -0
  49. package/dist/components/ui/input.js +8 -0
  50. package/dist/components/ui/loading-skeleton-wrapper.d.ts +6 -0
  51. package/dist/components/ui/loading-skeleton-wrapper.d.ts.map +1 -0
  52. package/dist/components/ui/loading-skeleton-wrapper.js +10 -0
  53. package/dist/components/ui/modal.d.ts +11 -0
  54. package/dist/components/ui/modal.d.ts.map +1 -0
  55. package/dist/components/ui/modal.js +26 -0
  56. package/dist/components/ui/otp-input.d.ts +10 -0
  57. package/dist/components/ui/otp-input.d.ts.map +1 -0
  58. package/dist/components/ui/otp-input.js +57 -0
  59. package/dist/components/ui/out-of-stock-overlay.d.ts +8 -0
  60. package/dist/components/ui/out-of-stock-overlay.d.ts.map +1 -0
  61. package/dist/components/ui/out-of-stock-overlay.js +12 -0
  62. package/dist/components/ui/page-animate-wrapper.d.ts +7 -0
  63. package/dist/components/ui/page-animate-wrapper.d.ts.map +1 -0
  64. package/dist/components/ui/page-animate-wrapper.js +16 -0
  65. package/dist/components/ui/page-content-loader.d.ts +13 -0
  66. package/dist/components/ui/page-content-loader.d.ts.map +1 -0
  67. package/dist/components/ui/page-content-loader.js +12 -0
  68. package/dist/components/ui/page-loader.d.ts +20 -0
  69. package/dist/components/ui/page-loader.d.ts.map +1 -0
  70. package/dist/components/ui/page-loader.js +31 -0
  71. package/dist/components/ui/product-card.d.ts +11 -0
  72. package/dist/components/ui/product-card.d.ts.map +1 -0
  73. package/dist/components/ui/product-card.js +95 -0
  74. package/dist/components/ui/product-rating.d.ts +17 -0
  75. package/dist/components/ui/product-rating.d.ts.map +1 -0
  76. package/dist/components/ui/product-rating.js +54 -0
  77. package/dist/components/ui/review-form.d.ts +9 -0
  78. package/dist/components/ui/review-form.d.ts.map +1 -0
  79. package/dist/components/ui/review-form.js +28 -0
  80. package/dist/components/ui/route-skeleton-loader.d.ts +7 -0
  81. package/dist/components/ui/route-skeleton-loader.d.ts.map +1 -0
  82. package/dist/components/ui/route-skeleton-loader.js +75 -0
  83. package/dist/components/ui/sheet.d.ts +12 -0
  84. package/dist/components/ui/sheet.d.ts.map +1 -0
  85. package/dist/components/ui/sheet.js +29 -0
  86. package/dist/components/ui/skeleton.d.ts +3 -0
  87. package/dist/components/ui/skeleton.d.ts.map +1 -0
  88. package/dist/components/ui/skeleton.js +6 -0
  89. package/dist/components/ui/skeletons/category-grid-skeleton.d.ts +6 -0
  90. package/dist/components/ui/skeletons/category-grid-skeleton.d.ts.map +1 -0
  91. package/dist/components/ui/skeletons/category-grid-skeleton.js +16 -0
  92. package/dist/components/ui/skeletons/checkout-skeleton.d.ts +2 -0
  93. package/dist/components/ui/skeletons/checkout-skeleton.d.ts.map +1 -0
  94. package/dist/components/ui/skeletons/checkout-skeleton.js +4 -0
  95. package/dist/components/ui/skeletons/index.d.ts +6 -0
  96. package/dist/components/ui/skeletons/index.d.ts.map +1 -0
  97. package/dist/components/ui/skeletons/index.js +5 -0
  98. package/dist/components/ui/skeletons/page-skeleton.d.ts +2 -0
  99. package/dist/components/ui/skeletons/page-skeleton.d.ts.map +1 -0
  100. package/dist/components/ui/skeletons/page-skeleton.js +4 -0
  101. package/dist/components/ui/skeletons/product-card-skeleton.d.ts +2 -0
  102. package/dist/components/ui/skeletons/product-card-skeleton.d.ts.map +1 -0
  103. package/dist/components/ui/skeletons/product-card-skeleton.js +4 -0
  104. package/dist/components/ui/skeletons/product-detail-skeleton.d.ts +2 -0
  105. package/dist/components/ui/skeletons/product-detail-skeleton.d.ts.map +1 -0
  106. package/dist/components/ui/skeletons/product-detail-skeleton.js +4 -0
  107. package/dist/components/ui/skeletons/product-grid-skeleton.d.ts +7 -0
  108. package/dist/components/ui/skeletons/product-grid-skeleton.d.ts.map +1 -0
  109. package/dist/components/ui/skeletons/product-grid-skeleton.js +12 -0
  110. package/dist/components/ui/store-logos.d.ts +43 -0
  111. package/dist/components/ui/store-logos.d.ts.map +1 -0
  112. package/dist/components/ui/store-logos.js +83 -0
  113. package/dist/components/ui/toast.d.ts +19 -0
  114. package/dist/components/ui/toast.d.ts.map +1 -0
  115. package/dist/components/ui/toast.js +33 -0
  116. package/dist/components/ui/video-player.d.ts +48 -0
  117. package/dist/components/ui/video-player.d.ts.map +1 -0
  118. package/dist/components/ui/video-player.js +96 -0
  119. package/dist/hooks/use-analytics.d.ts +14 -0
  120. package/dist/hooks/use-analytics.d.ts.map +1 -0
  121. package/dist/hooks/use-analytics.js +66 -0
  122. package/dist/hooks/use-api.d.ts +17 -0
  123. package/dist/hooks/use-api.d.ts.map +1 -0
  124. package/dist/hooks/use-api.js +53 -0
  125. package/dist/hooks/use-cart-api.d.ts +17 -0
  126. package/dist/hooks/use-cart-api.d.ts.map +1 -0
  127. package/dist/hooks/use-cart-api.js +134 -0
  128. package/dist/hooks/use-content-ready.d.ts +17 -0
  129. package/dist/hooks/use-content-ready.d.ts.map +1 -0
  130. package/dist/hooks/use-content-ready.js +197 -0
  131. package/dist/hooks/use-navigation-loading.d.ts +4 -0
  132. package/dist/hooks/use-navigation-loading.d.ts.map +1 -0
  133. package/dist/hooks/use-navigation-loading.js +14 -0
  134. package/dist/hooks/use-payaza-checkout.d.ts +14 -0
  135. package/dist/hooks/use-payaza-checkout.d.ts.map +1 -0
  136. package/dist/hooks/use-payaza-checkout.js +56 -0
  137. package/dist/hooks/use-products-api.d.ts +19 -0
  138. package/dist/hooks/use-products-api.d.ts.map +1 -0
  139. package/dist/hooks/use-products-api.js +84 -0
  140. package/dist/hooks/use-store-api.d.ts +12 -0
  141. package/dist/hooks/use-store-api.d.ts.map +1 -0
  142. package/dist/hooks/use-store-api.js +73 -0
  143. package/dist/index.d.ts +116 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +126 -0
  146. package/dist/json/booking-agenda.json +18 -0
  147. package/dist/json/booking.json +71 -0
  148. package/dist/json/clothing-minimal.json +26 -0
  149. package/dist/json/clothing.json +169 -0
  150. package/dist/json/electronics-grid.json +18 -0
  151. package/dist/json/electronics.json +50 -0
  152. package/dist/json/food-modern.json +38 -0
  153. package/dist/json/food.json +85 -0
  154. package/dist/json/json-map.d.ts +7 -0
  155. package/dist/json/json-map.d.ts.map +1 -0
  156. package/dist/json/json-map.js +36 -0
  157. package/dist/json/motivational-speaker.json +96 -0
  158. package/dist/layouts/booking/components/BookingHomePage.d.ts +7 -0
  159. package/dist/layouts/booking/components/BookingHomePage.d.ts.map +1 -0
  160. package/dist/layouts/booking/components/BookingHomePage.js +49 -0
  161. package/dist/layouts/booking/index.d.ts +9 -0
  162. package/dist/layouts/booking/index.d.ts.map +1 -0
  163. package/dist/layouts/booking/index.js +9 -0
  164. package/dist/layouts/booking/pages/AboutPage.d.ts +7 -0
  165. package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -0
  166. package/dist/layouts/booking/pages/AboutPage.js +45 -0
  167. package/dist/layouts/booking/pages/BookPage.d.ts +8 -0
  168. package/dist/layouts/booking/pages/BookPage.d.ts.map +1 -0
  169. package/dist/layouts/booking/pages/BookPage.js +441 -0
  170. package/dist/layouts/booking/pages/CategoriesPage.d.ts +7 -0
  171. package/dist/layouts/booking/pages/CategoriesPage.d.ts.map +1 -0
  172. package/dist/layouts/booking/pages/CategoriesPage.js +162 -0
  173. package/dist/layouts/booking/pages/CategoryPage.d.ts +8 -0
  174. package/dist/layouts/booking/pages/CategoryPage.d.ts.map +1 -0
  175. package/dist/layouts/booking/pages/CategoryPage.js +67 -0
  176. package/dist/layouts/booking/pages/ContactPage.d.ts +7 -0
  177. package/dist/layouts/booking/pages/ContactPage.d.ts.map +1 -0
  178. package/dist/layouts/booking/pages/ContactPage.js +20 -0
  179. package/dist/layouts/booking/pages/ProductDetailPage.d.ts +8 -0
  180. package/dist/layouts/booking/pages/ProductDetailPage.d.ts.map +1 -0
  181. package/dist/layouts/booking/pages/ProductDetailPage.js +502 -0
  182. package/dist/layouts/booking/pages/ServicesPage.d.ts +9 -0
  183. package/dist/layouts/booking/pages/ServicesPage.d.ts.map +1 -0
  184. package/dist/layouts/booking/pages/ServicesPage.js +31 -0
  185. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts +7 -0
  186. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts.map +1 -0
  187. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +186 -0
  188. package/dist/layouts/booking-agenda/index.d.ts +9 -0
  189. package/dist/layouts/booking-agenda/index.d.ts.map +1 -0
  190. package/dist/layouts/booking-agenda/index.js +9 -0
  191. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts +7 -0
  192. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -0
  193. package/dist/layouts/booking-agenda/pages/AboutPage.js +45 -0
  194. package/dist/layouts/booking-agenda/pages/BookPage.d.ts +8 -0
  195. package/dist/layouts/booking-agenda/pages/BookPage.d.ts.map +1 -0
  196. package/dist/layouts/booking-agenda/pages/BookPage.js +441 -0
  197. package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts +7 -0
  198. package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts.map +1 -0
  199. package/dist/layouts/booking-agenda/pages/CategoriesPage.js +162 -0
  200. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts +8 -0
  201. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts.map +1 -0
  202. package/dist/layouts/booking-agenda/pages/CategoryPage.js +67 -0
  203. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts +7 -0
  204. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts.map +1 -0
  205. package/dist/layouts/booking-agenda/pages/ContactPage.js +20 -0
  206. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts +8 -0
  207. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts.map +1 -0
  208. package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +502 -0
  209. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts +9 -0
  210. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts.map +1 -0
  211. package/dist/layouts/booking-agenda/pages/ServicesPage.js +31 -0
  212. package/dist/layouts/clothing/components/ClothingHomePage.d.ts +7 -0
  213. package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -0
  214. package/dist/layouts/clothing/components/ClothingHomePage.js +295 -0
  215. package/dist/layouts/clothing/index.d.ts +8 -0
  216. package/dist/layouts/clothing/index.d.ts.map +1 -0
  217. package/dist/layouts/clothing/index.js +8 -0
  218. package/dist/layouts/clothing/pages/AboutPage.d.ts +7 -0
  219. package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -0
  220. package/dist/layouts/clothing/pages/AboutPage.js +45 -0
  221. package/dist/layouts/clothing/pages/CategoriesPage.d.ts +7 -0
  222. package/dist/layouts/clothing/pages/CategoriesPage.d.ts.map +1 -0
  223. package/dist/layouts/clothing/pages/CategoriesPage.js +162 -0
  224. package/dist/layouts/clothing/pages/CategoryPage.d.ts +8 -0
  225. package/dist/layouts/clothing/pages/CategoryPage.d.ts.map +1 -0
  226. package/dist/layouts/clothing/pages/CategoryPage.js +67 -0
  227. package/dist/layouts/clothing/pages/ContactPage.d.ts +7 -0
  228. package/dist/layouts/clothing/pages/ContactPage.d.ts.map +1 -0
  229. package/dist/layouts/clothing/pages/ContactPage.js +20 -0
  230. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts +8 -0
  231. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts.map +1 -0
  232. package/dist/layouts/clothing/pages/ProductDetailPage.js +502 -0
  233. package/dist/layouts/clothing/pages/ProductsPage.d.ts +7 -0
  234. package/dist/layouts/clothing/pages/ProductsPage.d.ts.map +1 -0
  235. package/dist/layouts/clothing/pages/ProductsPage.js +297 -0
  236. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts +7 -0
  237. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -0
  238. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +48 -0
  239. package/dist/layouts/clothing-minimal/index.d.ts +8 -0
  240. package/dist/layouts/clothing-minimal/index.d.ts.map +1 -0
  241. package/dist/layouts/clothing-minimal/index.js +8 -0
  242. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts +7 -0
  243. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -0
  244. package/dist/layouts/clothing-minimal/pages/AboutPage.js +45 -0
  245. package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts +7 -0
  246. package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts.map +1 -0
  247. package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +162 -0
  248. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts +8 -0
  249. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts.map +1 -0
  250. package/dist/layouts/clothing-minimal/pages/CategoryPage.js +67 -0
  251. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts +7 -0
  252. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts.map +1 -0
  253. package/dist/layouts/clothing-minimal/pages/ContactPage.js +20 -0
  254. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts +8 -0
  255. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts.map +1 -0
  256. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +502 -0
  257. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts +7 -0
  258. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts.map +1 -0
  259. package/dist/layouts/clothing-minimal/pages/ProductsPage.js +297 -0
  260. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts +7 -0
  261. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts.map +1 -0
  262. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +34 -0
  263. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts +10 -0
  264. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts.map +1 -0
  265. package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +107 -0
  266. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts +7 -0
  267. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -0
  268. package/dist/layouts/electronics/components/ElectronicsHomePage.js +78 -0
  269. package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts +8 -0
  270. package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts.map +1 -0
  271. package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +10 -0
  272. package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts +7 -0
  273. package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts.map +1 -0
  274. package/dist/layouts/electronics/components/ElectronicsProductsPage.js +100 -0
  275. package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts +7 -0
  276. package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts.map +1 -0
  277. package/dist/layouts/electronics/components/ElectronicsStoreFooter.js +10 -0
  278. package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts +7 -0
  279. package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts.map +1 -0
  280. package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +27 -0
  281. package/dist/layouts/electronics/index.d.ts +19 -0
  282. package/dist/layouts/electronics/index.d.ts.map +1 -0
  283. package/dist/layouts/electronics/index.js +19 -0
  284. package/dist/layouts/electronics/pages/AboutPage.d.ts +7 -0
  285. package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -0
  286. package/dist/layouts/electronics/pages/AboutPage.js +45 -0
  287. package/dist/layouts/electronics/pages/CategoriesPage.d.ts +7 -0
  288. package/dist/layouts/electronics/pages/CategoriesPage.d.ts.map +1 -0
  289. package/dist/layouts/electronics/pages/CategoriesPage.js +6 -0
  290. package/dist/layouts/electronics/pages/CategoryPage.d.ts +8 -0
  291. package/dist/layouts/electronics/pages/CategoryPage.d.ts.map +1 -0
  292. package/dist/layouts/electronics/pages/CategoryPage.js +67 -0
  293. package/dist/layouts/electronics/pages/ContactPage.d.ts +7 -0
  294. package/dist/layouts/electronics/pages/ContactPage.d.ts.map +1 -0
  295. package/dist/layouts/electronics/pages/ContactPage.js +20 -0
  296. package/dist/layouts/electronics/pages/HelpCenterPage.d.ts +7 -0
  297. package/dist/layouts/electronics/pages/HelpCenterPage.d.ts.map +1 -0
  298. package/dist/layouts/electronics/pages/HelpCenterPage.js +55 -0
  299. package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts +7 -0
  300. package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts.map +1 -0
  301. package/dist/layouts/electronics/pages/PrivacyPolicyPage.js +8 -0
  302. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts +8 -0
  303. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts.map +1 -0
  304. package/dist/layouts/electronics/pages/ProductDetailPage.js +502 -0
  305. package/dist/layouts/electronics/pages/ProductsPage.d.ts +7 -0
  306. package/dist/layouts/electronics/pages/ProductsPage.d.ts.map +1 -0
  307. package/dist/layouts/electronics/pages/ProductsPage.js +297 -0
  308. package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts +7 -0
  309. package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts.map +1 -0
  310. package/dist/layouts/electronics/pages/ShippingReturnsPage.js +7 -0
  311. package/dist/layouts/electronics/pages/TermsPage.d.ts +7 -0
  312. package/dist/layouts/electronics/pages/TermsPage.d.ts.map +1 -0
  313. package/dist/layouts/electronics/pages/TermsPage.js +8 -0
  314. package/dist/layouts/electronics/pages/TrackOrderPage.d.ts +7 -0
  315. package/dist/layouts/electronics/pages/TrackOrderPage.d.ts.map +1 -0
  316. package/dist/layouts/electronics/pages/TrackOrderPage.js +371 -0
  317. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts +10 -0
  318. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts.map +1 -0
  319. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +107 -0
  320. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts +7 -0
  321. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts.map +1 -0
  322. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +89 -0
  323. package/dist/layouts/electronics-grid/index.d.ts +15 -0
  324. package/dist/layouts/electronics-grid/index.d.ts.map +1 -0
  325. package/dist/layouts/electronics-grid/index.js +15 -0
  326. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts +7 -0
  327. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -0
  328. package/dist/layouts/electronics-grid/pages/AboutPage.js +45 -0
  329. package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts +7 -0
  330. package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts.map +1 -0
  331. package/dist/layouts/electronics-grid/pages/CategoriesPage.js +6 -0
  332. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts +8 -0
  333. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts.map +1 -0
  334. package/dist/layouts/electronics-grid/pages/CategoryPage.js +67 -0
  335. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts +7 -0
  336. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts.map +1 -0
  337. package/dist/layouts/electronics-grid/pages/ContactPage.js +20 -0
  338. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts +7 -0
  339. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts.map +1 -0
  340. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.js +15 -0
  341. package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts +7 -0
  342. package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts.map +1 -0
  343. package/dist/layouts/electronics-grid/pages/HelpCenterPage.js +55 -0
  344. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts +7 -0
  345. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts.map +1 -0
  346. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.js +8 -0
  347. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts +8 -0
  348. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts.map +1 -0
  349. package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +502 -0
  350. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts +7 -0
  351. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts.map +1 -0
  352. package/dist/layouts/electronics-grid/pages/ProductsPage.js +297 -0
  353. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts +7 -0
  354. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts.map +1 -0
  355. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.js +7 -0
  356. package/dist/layouts/electronics-grid/pages/TermsPage.d.ts +7 -0
  357. package/dist/layouts/electronics-grid/pages/TermsPage.d.ts.map +1 -0
  358. package/dist/layouts/electronics-grid/pages/TermsPage.js +8 -0
  359. package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts +7 -0
  360. package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts.map +1 -0
  361. package/dist/layouts/electronics-grid/pages/TrackOrderPage.js +371 -0
  362. package/dist/layouts/food/components/FoodHomePage.d.ts +7 -0
  363. package/dist/layouts/food/components/FoodHomePage.d.ts.map +1 -0
  364. package/dist/layouts/food/components/FoodHomePage.js +304 -0
  365. package/dist/layouts/food/index.d.ts +9 -0
  366. package/dist/layouts/food/index.d.ts.map +1 -0
  367. package/dist/layouts/food/index.js +9 -0
  368. package/dist/layouts/food/pages/AboutPage.d.ts +7 -0
  369. package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -0
  370. package/dist/layouts/food/pages/AboutPage.js +45 -0
  371. package/dist/layouts/food/pages/CategoriesPage.d.ts +7 -0
  372. package/dist/layouts/food/pages/CategoriesPage.d.ts.map +1 -0
  373. package/dist/layouts/food/pages/CategoriesPage.js +162 -0
  374. package/dist/layouts/food/pages/CategoryPage.d.ts +8 -0
  375. package/dist/layouts/food/pages/CategoryPage.d.ts.map +1 -0
  376. package/dist/layouts/food/pages/CategoryPage.js +67 -0
  377. package/dist/layouts/food/pages/ContactPage.d.ts +7 -0
  378. package/dist/layouts/food/pages/ContactPage.d.ts.map +1 -0
  379. package/dist/layouts/food/pages/ContactPage.js +20 -0
  380. package/dist/layouts/food/pages/MenuPage.d.ts +8 -0
  381. package/dist/layouts/food/pages/MenuPage.d.ts.map +1 -0
  382. package/dist/layouts/food/pages/MenuPage.js +75 -0
  383. package/dist/layouts/food/pages/ProductDetailPage.d.ts +8 -0
  384. package/dist/layouts/food/pages/ProductDetailPage.d.ts.map +1 -0
  385. package/dist/layouts/food/pages/ProductDetailPage.js +502 -0
  386. package/dist/layouts/food/pages/ProductsPage.d.ts +7 -0
  387. package/dist/layouts/food/pages/ProductsPage.d.ts.map +1 -0
  388. package/dist/layouts/food/pages/ProductsPage.js +297 -0
  389. package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts +7 -0
  390. package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts.map +1 -0
  391. package/dist/layouts/food-modern/components/FoodHomePageModern.js +118 -0
  392. package/dist/layouts/food-modern/index.d.ts +9 -0
  393. package/dist/layouts/food-modern/index.d.ts.map +1 -0
  394. package/dist/layouts/food-modern/index.js +9 -0
  395. package/dist/layouts/food-modern/pages/AboutPage.d.ts +7 -0
  396. package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -0
  397. package/dist/layouts/food-modern/pages/AboutPage.js +45 -0
  398. package/dist/layouts/food-modern/pages/CategoriesPage.d.ts +7 -0
  399. package/dist/layouts/food-modern/pages/CategoriesPage.d.ts.map +1 -0
  400. package/dist/layouts/food-modern/pages/CategoriesPage.js +162 -0
  401. package/dist/layouts/food-modern/pages/CategoryPage.d.ts +8 -0
  402. package/dist/layouts/food-modern/pages/CategoryPage.d.ts.map +1 -0
  403. package/dist/layouts/food-modern/pages/CategoryPage.js +67 -0
  404. package/dist/layouts/food-modern/pages/ContactPage.d.ts +7 -0
  405. package/dist/layouts/food-modern/pages/ContactPage.d.ts.map +1 -0
  406. package/dist/layouts/food-modern/pages/ContactPage.js +20 -0
  407. package/dist/layouts/food-modern/pages/MenuPage.d.ts +8 -0
  408. package/dist/layouts/food-modern/pages/MenuPage.d.ts.map +1 -0
  409. package/dist/layouts/food-modern/pages/MenuPage.js +75 -0
  410. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts +8 -0
  411. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts.map +1 -0
  412. package/dist/layouts/food-modern/pages/ProductDetailPage.js +502 -0
  413. package/dist/layouts/food-modern/pages/ProductsPage.d.ts +7 -0
  414. package/dist/layouts/food-modern/pages/ProductsPage.d.ts.map +1 -0
  415. package/dist/layouts/food-modern/pages/ProductsPage.js +297 -0
  416. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts +7 -0
  417. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts.map +1 -0
  418. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.js +115 -0
  419. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts +8 -0
  420. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts.map +1 -0
  421. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.js +10 -0
  422. package/dist/layouts/motivational-speaker/index.d.ts +10 -0
  423. package/dist/layouts/motivational-speaker/index.d.ts.map +1 -0
  424. package/dist/layouts/motivational-speaker/index.js +10 -0
  425. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts +7 -0
  426. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -0
  427. package/dist/layouts/motivational-speaker/pages/AboutPage.js +45 -0
  428. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts +8 -0
  429. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts.map +1 -0
  430. package/dist/layouts/motivational-speaker/pages/CategoryPage.js +67 -0
  431. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts +7 -0
  432. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts.map +1 -0
  433. package/dist/layouts/motivational-speaker/pages/ContactPage.js +20 -0
  434. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts +7 -0
  435. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts.map +1 -0
  436. package/dist/layouts/motivational-speaker/pages/ProductsPage.js +297 -0
  437. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts +8 -0
  438. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts.map +1 -0
  439. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.js +144 -0
  440. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts +9 -0
  441. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts.map +1 -0
  442. package/dist/layouts/motivational-speaker/pages/ServicesPage.js +31 -0
  443. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts +7 -0
  444. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts.map +1 -0
  445. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.js +136 -0
  446. package/dist/layouts/shared/components/BaseStoreLayout.d.ts +8 -0
  447. package/dist/layouts/shared/components/BaseStoreLayout.d.ts.map +1 -0
  448. package/dist/layouts/shared/components/BaseStoreLayout.js +59 -0
  449. package/dist/layouts/shared/components/GenericPageWrapper.d.ts +8 -0
  450. package/dist/layouts/shared/components/GenericPageWrapper.d.ts.map +1 -0
  451. package/dist/layouts/shared/components/GenericPageWrapper.js +19 -0
  452. package/dist/layouts/shared/components/PromoBanner.d.ts +9 -0
  453. package/dist/layouts/shared/components/PromoBanner.d.ts.map +1 -0
  454. package/dist/layouts/shared/components/PromoBanner.js +14 -0
  455. package/dist/layouts/shared/components/StoreFooter.d.ts +7 -0
  456. package/dist/layouts/shared/components/StoreFooter.d.ts.map +1 -0
  457. package/dist/layouts/shared/components/StoreFooter.js +147 -0
  458. package/dist/layouts/shared/components/StoreHeader.d.ts +8 -0
  459. package/dist/layouts/shared/components/StoreHeader.d.ts.map +1 -0
  460. package/dist/layouts/shared/components/StoreHeader.js +87 -0
  461. package/dist/layouts/shared/components/TestimonialCard.d.ts +8 -0
  462. package/dist/layouts/shared/components/TestimonialCard.d.ts.map +1 -0
  463. package/dist/layouts/shared/components/TestimonialCard.js +10 -0
  464. package/dist/layouts/shared/index.d.ts +23 -0
  465. package/dist/layouts/shared/index.d.ts.map +1 -0
  466. package/dist/layouts/shared/index.js +23 -0
  467. package/dist/layouts/shared/pages/AccountPage.d.ts +7 -0
  468. package/dist/layouts/shared/pages/AccountPage.d.ts.map +1 -0
  469. package/dist/layouts/shared/pages/AccountPage.js +605 -0
  470. package/dist/layouts/shared/pages/CartPage.d.ts +7 -0
  471. package/dist/layouts/shared/pages/CartPage.d.ts.map +1 -0
  472. package/dist/layouts/shared/pages/CartPage.js +83 -0
  473. package/dist/layouts/shared/pages/CheckoutPage.d.ts +7 -0
  474. package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -0
  475. package/dist/layouts/shared/pages/CheckoutPage.js +860 -0
  476. package/dist/layouts/shared/pages/CookiePolicyPage.d.ts +7 -0
  477. package/dist/layouts/shared/pages/CookiePolicyPage.d.ts.map +1 -0
  478. package/dist/layouts/shared/pages/CookiePolicyPage.js +8 -0
  479. package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts +9 -0
  480. package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts.map +1 -0
  481. package/dist/layouts/shared/pages/FeatureDisabledPage.js +8 -0
  482. package/dist/layouts/shared/pages/HelpCenterPage.d.ts +7 -0
  483. package/dist/layouts/shared/pages/HelpCenterPage.d.ts.map +1 -0
  484. package/dist/layouts/shared/pages/HelpCenterPage.js +55 -0
  485. package/dist/layouts/shared/pages/MaintenancePage.d.ts +7 -0
  486. package/dist/layouts/shared/pages/MaintenancePage.d.ts.map +1 -0
  487. package/dist/layouts/shared/pages/MaintenancePage.js +44 -0
  488. package/dist/layouts/shared/pages/PortfolioPage.d.ts +7 -0
  489. package/dist/layouts/shared/pages/PortfolioPage.d.ts.map +1 -0
  490. package/dist/layouts/shared/pages/PortfolioPage.js +130 -0
  491. package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts +7 -0
  492. package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts.map +1 -0
  493. package/dist/layouts/shared/pages/PrivacyPolicyPage.js +8 -0
  494. package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts +7 -0
  495. package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts.map +1 -0
  496. package/dist/layouts/shared/pages/ShippingReturnsPage.js +7 -0
  497. package/dist/layouts/shared/pages/SizeGuidePage.d.ts +7 -0
  498. package/dist/layouts/shared/pages/SizeGuidePage.d.ts.map +1 -0
  499. package/dist/layouts/shared/pages/SizeGuidePage.js +10 -0
  500. package/dist/layouts/shared/pages/StyleGuidePage.d.ts +7 -0
  501. package/dist/layouts/shared/pages/StyleGuidePage.d.ts.map +1 -0
  502. package/dist/layouts/shared/pages/StyleGuidePage.js +126 -0
  503. package/dist/layouts/shared/pages/TeamPage.d.ts +7 -0
  504. package/dist/layouts/shared/pages/TeamPage.d.ts.map +1 -0
  505. package/dist/layouts/shared/pages/TeamPage.js +39 -0
  506. package/dist/layouts/shared/pages/TermsPage.d.ts +7 -0
  507. package/dist/layouts/shared/pages/TermsPage.d.ts.map +1 -0
  508. package/dist/layouts/shared/pages/TermsPage.js +8 -0
  509. package/dist/layouts/shared/pages/TrackOrderPage.d.ts +7 -0
  510. package/dist/layouts/shared/pages/TrackOrderPage.d.ts.map +1 -0
  511. package/dist/layouts/shared/pages/TrackOrderPage.js +371 -0
  512. package/dist/layouts/shared/pages/WishlistPage.d.ts +7 -0
  513. package/dist/layouts/shared/pages/WishlistPage.d.ts.map +1 -0
  514. package/dist/layouts/shared/pages/WishlistPage.js +162 -0
  515. package/dist/lib/api.d.ts +8 -0
  516. package/dist/lib/api.d.ts.map +1 -0
  517. package/dist/lib/api.js +109 -0
  518. package/dist/lib/auth-context.d.ts +30 -0
  519. package/dist/lib/auth-context.d.ts.map +1 -0
  520. package/dist/lib/auth-context.js +207 -0
  521. package/dist/lib/content-selectors.d.ts +21 -0
  522. package/dist/lib/content-selectors.d.ts.map +1 -0
  523. package/dist/lib/content-selectors.js +75 -0
  524. package/dist/lib/countries.d.ts +11 -0
  525. package/dist/lib/countries.d.ts.map +1 -0
  526. package/dist/lib/countries.js +252 -0
  527. package/dist/lib/currency-symbols.d.ts +36 -0
  528. package/dist/lib/currency-symbols.d.ts.map +1 -0
  529. package/dist/lib/currency-symbols.js +153 -0
  530. package/dist/lib/guest-user.d.ts +27 -0
  531. package/dist/lib/guest-user.d.ts.map +1 -0
  532. package/dist/lib/guest-user.js +71 -0
  533. package/dist/lib/loading-context.d.ts +19 -0
  534. package/dist/lib/loading-context.d.ts.map +1 -0
  535. package/dist/lib/loading-context.js +197 -0
  536. package/dist/lib/mock-stores.d.ts +22 -0
  537. package/dist/lib/mock-stores.d.ts.map +1 -0
  538. package/dist/lib/mock-stores.js +2099 -0
  539. package/dist/lib/payaza-checkout.d.ts +167 -0
  540. package/dist/lib/payaza-checkout.d.ts.map +1 -0
  541. package/dist/lib/payaza-checkout.js +455 -0
  542. package/dist/lib/services/analytics.service.d.ts +58 -0
  543. package/dist/lib/services/analytics.service.d.ts.map +1 -0
  544. package/dist/lib/services/analytics.service.js +182 -0
  545. package/dist/lib/services/auth.service.d.ts +63 -0
  546. package/dist/lib/services/auth.service.d.ts.map +1 -0
  547. package/dist/lib/services/auth.service.js +101 -0
  548. package/dist/lib/services/booking.service.d.ts +53 -0
  549. package/dist/lib/services/booking.service.d.ts.map +1 -0
  550. package/dist/lib/services/booking.service.js +52 -0
  551. package/dist/lib/services/cart.service.d.ts +37 -0
  552. package/dist/lib/services/cart.service.d.ts.map +1 -0
  553. package/dist/lib/services/cart.service.js +55 -0
  554. package/dist/lib/services/category.service.d.ts +21 -0
  555. package/dist/lib/services/category.service.d.ts.map +1 -0
  556. package/dist/lib/services/category.service.js +41 -0
  557. package/dist/lib/services/checkout.service.d.ts +79 -0
  558. package/dist/lib/services/checkout.service.d.ts.map +1 -0
  559. package/dist/lib/services/checkout.service.js +37 -0
  560. package/dist/lib/services/customer.service.d.ts +52 -0
  561. package/dist/lib/services/customer.service.d.ts.map +1 -0
  562. package/dist/lib/services/customer.service.js +64 -0
  563. package/dist/lib/services/fees.service.d.ts +23 -0
  564. package/dist/lib/services/fees.service.d.ts.map +1 -0
  565. package/dist/lib/services/fees.service.js +13 -0
  566. package/dist/lib/services/index.d.ts +19 -0
  567. package/dist/lib/services/index.d.ts.map +1 -0
  568. package/dist/lib/services/index.js +18 -0
  569. package/dist/lib/services/order.service.d.ts +107 -0
  570. package/dist/lib/services/order.service.d.ts.map +1 -0
  571. package/dist/lib/services/order.service.js +82 -0
  572. package/dist/lib/services/payment.service.d.ts +51 -0
  573. package/dist/lib/services/payment.service.d.ts.map +1 -0
  574. package/dist/lib/services/payment.service.js +105 -0
  575. package/dist/lib/services/product.service.d.ts +90 -0
  576. package/dist/lib/services/product.service.d.ts.map +1 -0
  577. package/dist/lib/services/product.service.js +86 -0
  578. package/dist/lib/services/promo.service.d.ts +31 -0
  579. package/dist/lib/services/promo.service.d.ts.map +1 -0
  580. package/dist/lib/services/promo.service.js +29 -0
  581. package/dist/lib/services/review.service.d.ts +47 -0
  582. package/dist/lib/services/review.service.d.ts.map +1 -0
  583. package/dist/lib/services/review.service.js +54 -0
  584. package/dist/lib/services/service.service.d.ts +55 -0
  585. package/dist/lib/services/service.service.d.ts.map +1 -0
  586. package/dist/lib/services/service.service.js +37 -0
  587. package/dist/lib/services/shipping.service.d.ts +44 -0
  588. package/dist/lib/services/shipping.service.d.ts.map +1 -0
  589. package/dist/lib/services/shipping.service.js +23 -0
  590. package/dist/lib/services/store.service.d.ts +87 -0
  591. package/dist/lib/services/store.service.d.ts.map +1 -0
  592. package/dist/lib/services/store.service.js +41 -0
  593. package/dist/lib/services/wishlist.service.d.ts +30 -0
  594. package/dist/lib/services/wishlist.service.d.ts.map +1 -0
  595. package/dist/lib/services/wishlist.service.js +53 -0
  596. package/dist/lib/store-config-utils.d.ts +41 -0
  597. package/dist/lib/store-config-utils.d.ts.map +1 -0
  598. package/dist/lib/store-config-utils.js +1535 -0
  599. package/dist/lib/store-config.d.ts +3 -0
  600. package/dist/lib/store-config.d.ts.map +1 -0
  601. package/dist/lib/store-config.js +2 -0
  602. package/dist/lib/store-context.d.ts +39 -0
  603. package/dist/lib/store-context.d.ts.map +1 -0
  604. package/dist/lib/store-context.js +803 -0
  605. package/dist/lib/store-types.d.ts +663 -0
  606. package/dist/lib/store-types.d.ts.map +1 -0
  607. package/dist/lib/store-types.js +1 -0
  608. package/dist/lib/utils/asset-helpers.d.ts +102 -0
  609. package/dist/lib/utils/asset-helpers.d.ts.map +1 -0
  610. package/dist/lib/utils/asset-helpers.js +395 -0
  611. package/dist/lib/utils/category-tree.d.ts +25 -0
  612. package/dist/lib/utils/category-tree.d.ts.map +1 -0
  613. package/dist/lib/utils/category-tree.js +85 -0
  614. package/dist/lib/utils/demo-detection.d.ts +23 -0
  615. package/dist/lib/utils/demo-detection.d.ts.map +1 -0
  616. package/dist/lib/utils/demo-detection.js +36 -0
  617. package/dist/lib/utils/fee-calculations.d.ts +35 -0
  618. package/dist/lib/utils/fee-calculations.d.ts.map +1 -0
  619. package/dist/lib/utils/fee-calculations.js +64 -0
  620. package/dist/lib/utils/index.d.ts +37 -0
  621. package/dist/lib/utils/index.d.ts.map +1 -0
  622. package/dist/lib/utils/index.js +160 -0
  623. package/dist/lib/utils/url-helpers.d.ts +30 -0
  624. package/dist/lib/utils/url-helpers.d.ts.map +1 -0
  625. package/dist/lib/utils/url-helpers.js +56 -0
  626. package/dist/lib/utils/video-helpers.d.ts +32 -0
  627. package/dist/lib/utils/video-helpers.d.ts.map +1 -0
  628. package/dist/lib/utils/video-helpers.js +210 -0
  629. package/package.json +92 -0
@@ -0,0 +1,297 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button } from '../../../components/ui/button';
4
+ import { Breadcrumbs } from '../../../components/ui/breadcrumbs';
5
+ import { Sheet } from '../../../components/ui/sheet';
6
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
7
+ import { ProductCard } from '../../../components/ui/product-card';
8
+ import { ProductGridSkeleton } from '../../../components/ui/skeletons';
9
+ import { CategoryTree } from '../../../components/ui/category-tree';
10
+ import { useStore } from '../../../lib/store-context';
11
+ import { useToast } from '../../../components/ui/toast';
12
+ import { useLoading } from '../../../lib/loading-context';
13
+ import { useAnalytics } from '../../../hooks/use-analytics';
14
+ import { ChevronDown, ChevronUp, Star, Check, Search, RotateCcw, SlidersHorizontal } from 'lucide-react';
15
+ import { useSearchParams } from 'next/navigation';
16
+ import { useState, useMemo, useEffect, Suspense } from 'react';
17
+ import { formatCurrency, filterActiveProducts } from '../../../lib/utils';
18
+ import { getAllCategoryIds, flattenCategoryTree, buildCategoryTree } from '../../../lib/utils/category-tree';
19
+ import { getBannerImage, getLayoutText } from '../../../lib/utils/asset-helpers';
20
+ import { shouldUseAPI } from '../../../lib/utils/demo-detection';
21
+ function ProductsPageContent({ storeConfig }) {
22
+ const searchParams = useSearchParams();
23
+ const categoryParam = searchParams.get('category');
24
+ const [products, setProducts] = useState(() => {
25
+ // Filter out inactive/deleted products first
26
+ let initialProducts = filterActiveProducts(storeConfig.products || []);
27
+ // Ensure all products have unique IDs just in case mock data has duplicates
28
+ // or if we are artificially duplicating for grid demo
29
+ if (initialProducts.length > 0) {
30
+ // If very few products, duplicate them to show grid structure
31
+ if (initialProducts.length < 4) {
32
+ initialProducts = [...initialProducts, ...initialProducts].map((p, i) => ({
33
+ ...p,
34
+ id: `${p.id}-copy-${i}`,
35
+ name: `${p.name} ${i > 0 ? '(Copy)' : ''}`
36
+ }));
37
+ }
38
+ else {
39
+ // Even if enough products, ensure IDs are unique strings
40
+ // (Mock data usually is fine, but this is a safeguard)
41
+ const seenIds = new Set();
42
+ initialProducts = initialProducts.map((p, i) => {
43
+ if (seenIds.has(p.id)) {
44
+ return { ...p, id: `${p.id}-${i}` };
45
+ }
46
+ seenIds.add(p.id);
47
+ return p;
48
+ });
49
+ }
50
+ }
51
+ return initialProducts;
52
+ });
53
+ const [isLoadingProducts, setIsLoadingProducts] = useState(false);
54
+ const categories = storeConfig.categories || [];
55
+ // Update products when storeConfig.products changes (e.g., after async load)
56
+ useEffect(() => {
57
+ if (storeConfig.products && storeConfig.products.length > 0) {
58
+ setProducts(storeConfig.products);
59
+ }
60
+ else if (storeConfig.products && storeConfig.products.length === 0 && !isLoadingProducts) {
61
+ // If products array is empty, try to fetch from API
62
+ const fetchProducts = async () => {
63
+ setIsLoadingProducts(true);
64
+ startBackendLoading();
65
+ try {
66
+ const { productService } = await import('../../../lib/services/product.service');
67
+ const { transformProductToStoreProduct } = await import('../../../lib/store-config-utils');
68
+ const response = await productService.getProducts({
69
+ storeId: storeConfig.id,
70
+ limit: 1000,
71
+ });
72
+ const fetchedProducts = response.data.map(transformProductToStoreProduct);
73
+ setProducts(fetchedProducts);
74
+ }
75
+ catch (error) {
76
+ console.error('Failed to fetch products:', error);
77
+ // Keep empty array on error
78
+ }
79
+ finally {
80
+ setIsLoadingProducts(false);
81
+ stopBackendLoading();
82
+ }
83
+ };
84
+ fetchProducts();
85
+ }
86
+ // eslint-disable-next-line react-hooks/exhaustive-deps
87
+ }, [storeConfig.products, storeConfig.id]); // Removed isLoadingProducts from deps to prevent infinite loops
88
+ const { addToCart } = useStore();
89
+ const { addToast } = useToast();
90
+ const { startBackendLoading, stopBackendLoading } = useLoading();
91
+ const { trackEvent } = useAnalytics();
92
+ // State for filters & sort
93
+ const [selectedBrands, setSelectedBrands] = useState([]);
94
+ const [selectedCategories, setSelectedCategories] = useState([]);
95
+ const [priceRange, setPriceRange] = useState([0, 5000]);
96
+ const [selectedCategoryFilter, setSelectedCategoryFilter] = useState(null);
97
+ // Initialize filters from URL
98
+ useEffect(() => {
99
+ if (categoryParam) {
100
+ setSelectedCategoryFilter(categoryParam);
101
+ }
102
+ }, [categoryParam]);
103
+ const [minRating, setMinRating] = useState(null);
104
+ const [showInStockOnly, setShowInStockOnly] = useState(false);
105
+ const [showMoreBrands, setShowMoreBrands] = useState(false);
106
+ const [isFilterOpen, setIsFilterOpen] = useState(false);
107
+ const [sortBy, setSortBy] = useState('featured');
108
+ const [visibleProducts, setVisibleProducts] = useState(12);
109
+ const [isFiltering, setIsFiltering] = useState(false);
110
+ // Extract unique brands
111
+ const brands = useMemo(() => {
112
+ const brandSet = new Set();
113
+ products.forEach(product => {
114
+ // First check specifications for Brand
115
+ if (product.specifications?.Brand) {
116
+ brandSet.add(product.specifications.Brand);
117
+ }
118
+ else {
119
+ // Fallback to regex matching common brand names
120
+ const brandMatch = product.name.match(/\b(Reebok|Nike|Adidas|Puma|Zara|Dickies|Vans|Uniqlo|New Balance|Converse|Sony|Samsung|Apple|Dell|HP|Gucci|Prada|Versace|Armani|Calvin Klein|Tommy Hilfiger|Levi's|Gap|H&M|Forever 21|ASOS|Shein|Amazon|Microsoft|LG|Canon|Nikon|Bose|JBL|Beats|Ray-Ban|Oakley)\b/i);
121
+ if (brandMatch) {
122
+ brandSet.add(brandMatch[1]);
123
+ }
124
+ }
125
+ });
126
+ return Array.from(brandSet).sort();
127
+ }, [products]);
128
+ // Track filter changes and show loading
129
+ useEffect(() => {
130
+ setIsFiltering(true);
131
+ const timer = setTimeout(() => setIsFiltering(false), 300);
132
+ return () => clearTimeout(timer);
133
+ }, [selectedBrands, selectedCategories, priceRange, selectedCategoryFilter, minRating, showInStockOnly, sortBy]);
134
+ // Build category tree for filtering
135
+ const categoryTree = useMemo(() => buildCategoryTree(categories), [categories]);
136
+ // Get all category IDs to filter (including children of selected parent categories)
137
+ const effectiveCategoryIds = useMemo(() => {
138
+ if (selectedCategories.length === 0)
139
+ return [];
140
+ const allIds = new Set();
141
+ const flatCategories = flattenCategoryTree(categoryTree);
142
+ selectedCategories.forEach(selectedId => {
143
+ allIds.add(selectedId);
144
+ // Find the category and add all its children
145
+ const category = flatCategories.find(c => c.id === selectedId);
146
+ if (category) {
147
+ const childIds = getAllCategoryIds(category);
148
+ childIds.forEach(id => allIds.add(id));
149
+ }
150
+ });
151
+ return Array.from(allIds);
152
+ }, [selectedCategories, categoryTree]);
153
+ // Filter & Sort Logic
154
+ const filteredAndSortedProducts = useMemo(() => {
155
+ let result = products.filter(product => {
156
+ // Brand filter
157
+ if (selectedBrands.length > 0) {
158
+ const productBrand = product.specifications?.Brand ||
159
+ product.name.match(/\b(Reebok|Nike|Adidas|Puma|Zara|Dickies|Vans|Uniqlo|New Balance|Converse|Sony|Samsung|Apple|Dell|HP|Gucci|Prada|Versace|Armani|Calvin Klein|Tommy Hilfiger|Levi's|Gap|H&M|Forever 21|ASOS|Shein|Amazon|Microsoft|LG|Canon|Nikon|Bose|JBL|Beats|Ray-Ban|Oakley)\b/i)?.[1];
160
+ if (!productBrand || !selectedBrands.includes(productBrand)) {
161
+ return false;
162
+ }
163
+ }
164
+ // Category filter (Sidebar) - includes parent and child categories
165
+ if (effectiveCategoryIds.length > 0) {
166
+ if (!effectiveCategoryIds.includes(product.categoryId)) {
167
+ return false;
168
+ }
169
+ }
170
+ // Price filter
171
+ if (product.price < priceRange[0] || product.price > priceRange[1]) {
172
+ return false;
173
+ }
174
+ // Category Filter (Top Buttons)
175
+ if (selectedCategoryFilter) {
176
+ const category = categories.find(c => c.slug === selectedCategoryFilter);
177
+ if (category && product.categoryId !== category.id) {
178
+ return false;
179
+ }
180
+ }
181
+ // Rating Filter
182
+ if (minRating !== null) {
183
+ const productRating = product.rating || 0;
184
+ if (productRating < minRating) {
185
+ return false;
186
+ }
187
+ }
188
+ // Availability Filter
189
+ if (showInStockOnly) {
190
+ if (!product.inStock) {
191
+ return false;
192
+ }
193
+ }
194
+ return true;
195
+ });
196
+ // Sorting
197
+ switch (sortBy) {
198
+ case 'price-asc':
199
+ result.sort((a, b) => a.price - b.price);
200
+ break;
201
+ case 'price-desc':
202
+ result.sort((a, b) => b.price - a.price);
203
+ break;
204
+ case 'newest':
205
+ // Simulating newness by ID or reverse original order
206
+ result.reverse();
207
+ break;
208
+ case 'rating':
209
+ result.sort((a, b) => (b.rating || 0) - (a.rating || 0));
210
+ break;
211
+ default:
212
+ // Featured - keep original order
213
+ break;
214
+ }
215
+ return result;
216
+ }, [products, selectedBrands, effectiveCategoryIds, priceRange, selectedCategoryFilter, minRating, showInStockOnly, sortBy, categories]);
217
+ const displayedProducts = filteredAndSortedProducts.slice(0, visibleProducts);
218
+ const hasMore = visibleProducts < filteredAndSortedProducts.length;
219
+ const handleAddToCart = (product) => {
220
+ addToCart(product);
221
+ addToast(`${product.name} added to cart`, 'success');
222
+ };
223
+ const handleQuickView = (product) => {
224
+ addToast(`Quick view for ${product.name}`, 'info');
225
+ };
226
+ const clearAllFilters = () => {
227
+ setSelectedBrands([]);
228
+ setSelectedCategories([]);
229
+ setPriceRange([0, 5000]);
230
+ setSelectedCategoryFilter(null);
231
+ setMinRating(null);
232
+ setShowInStockOnly(false);
233
+ };
234
+ const hasActiveFilters = selectedBrands.length > 0 ||
235
+ selectedCategories.length > 0 ||
236
+ priceRange[1] < 5000 ||
237
+ minRating !== null ||
238
+ showInStockOnly;
239
+ // Breadcrumbs
240
+ const breadcrumbItems = [
241
+ { label: storeConfig.name, href: `/${storeConfig.slug}` },
242
+ { label: 'Products', href: `/${storeConfig.slug}/products` },
243
+ ];
244
+ // Get layout config and category header image
245
+ const layoutConfig = storeConfig.layoutConfig;
246
+ const isRealStore = shouldUseAPI(storeConfig.slug);
247
+ // Debug logging for category header
248
+ console.log('[ProductsPage] LayoutConfig:', {
249
+ hasLayoutConfig: !!layoutConfig,
250
+ hasAssignedAssets: !!layoutConfig?.assignedAssets,
251
+ categoryHeaderFromAssets: layoutConfig?.assignedAssets?.category_header ? 'found' : 'not found',
252
+ hasAssignedText: !!layoutConfig?.assignedText,
253
+ categoryHeaderTitle: layoutConfig?.assignedText?.['category_header:title'],
254
+ });
255
+ // Get category header image from assignedAssets
256
+ const categoryHeaderImage = layoutConfig?.assignedAssets?.category_header ||
257
+ getBannerImage(storeConfig, 'category_header', '');
258
+ console.log('[ProductsPage] Category header image:', categoryHeaderImage ? 'found' : 'not found', categoryHeaderImage);
259
+ // Get category header title from assignedText
260
+ const categoryHeaderTitle = layoutConfig?.assignedText?.['category_header:title'] ||
261
+ getLayoutText(storeConfig, 'category_header:title', `Explore The Collections of ${storeConfig.name}`);
262
+ // Get category header buttons from configuration (if available)
263
+ // assignedText values are always strings
264
+ const categoryHeaderPrimaryButton = layoutConfig?.assignedText?.['category_header:primaryButton'];
265
+ const categoryHeaderSecondaryButton = layoutConfig?.assignedText?.['category_header:secondaryButton'];
266
+ // Determine button text - use database value if available and not empty, otherwise use fallback
267
+ // If database explicitly provides empty string, button will be hidden
268
+ const hasPrimaryButtonFromConfig = categoryHeaderPrimaryButton !== undefined && categoryHeaderPrimaryButton !== null;
269
+ const hasSecondaryButtonFromConfig = categoryHeaderSecondaryButton !== undefined && categoryHeaderSecondaryButton !== null;
270
+ const primaryButtonText = hasPrimaryButtonFromConfig
271
+ ? (categoryHeaderPrimaryButton && categoryHeaderPrimaryButton.trim() !== '' ? categoryHeaderPrimaryButton.trim() : null)
272
+ : getLayoutText(storeConfig, 'common.shopNow', 'Start Shopping');
273
+ const secondaryButtonText = hasSecondaryButtonFromConfig
274
+ ? (categoryHeaderSecondaryButton && categoryHeaderSecondaryButton.trim() !== '' ? categoryHeaderSecondaryButton.trim() : null)
275
+ : getLayoutText(storeConfig, 'sections.categories.viewAll', 'View Categories');
276
+ return (_jsxs("div", { className: "min-h-screen bg-white font-sans text-slate-900", children: [_jsxs("div", { className: "relative overflow-hidden bg-white", children: [categoryHeaderImage && (_jsxs("div", { className: "absolute inset-0 z-0", children: [_jsx(ImageWithFallback, { src: categoryHeaderImage, alt: categoryHeaderTitle || storeConfig.name, className: "w-full h-full object-cover", skeletonAspectRatio: "16/9" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/60 via-black/40 to-black/60" })] })), !categoryHeaderImage && (_jsxs("div", { className: "absolute top-0 left-0 w-full h-full overflow-hidden z-0 pointer-events-none", children: [_jsx("div", { className: "absolute top-[-10%] right-[-5%] w-[500px] h-[500px] bg-gray-100 rounded-full mix-blend-multiply filter blur-3xl opacity-70 animate-pulse-slow" }), _jsx("div", { className: "absolute bottom-[-10%] left-[-10%] w-[400px] h-[400px] bg-gray-50 rounded-full mix-blend-multiply filter blur-3xl opacity-70 animate-pulse-slow", style: { animationDelay: '2s' } })] })), _jsx("div", { className: `container mx-auto px-4 sm:px-6 lg:px-8 relative z-10 pt-12 pb-16 lg:pt-20 lg:pb-24 ${categoryHeaderImage ? 'min-h-[500px] flex items-center' : ''}`, children: _jsx("div", { className: "flex flex-col items-center w-full max-w-4xl mx-auto", children: _jsxs("div", { className: `w-full text-center lg:text-left animate-fade-in-up ${categoryHeaderImage ? 'text-white' : ''}`, children: [_jsx("div", { className: "flex justify-center lg:justify-start mb-6", children: _jsx("div", { className: categoryHeaderImage ? 'bg-white/10 backdrop-blur-md px-4 py-2 rounded-full border border-white/20' : '', children: _jsx(Breadcrumbs, { items: breadcrumbItems, variant: categoryHeaderImage ? 'light' : 'default' }) }) }), _jsxs("div", { className: `inline-flex items-center gap-2 px-3 py-1 rounded-full text-xs font-bold tracking-wider uppercase mb-6 ${categoryHeaderImage ? 'bg-white/20 backdrop-blur-md text-white border border-white/30' : 'bg-black/5 text-gray-900'}`, children: [_jsx("span", { className: `w-2 h-2 rounded-full animate-pulse ${categoryHeaderImage ? 'bg-white' : 'bg-black'}` }), getLayoutText(storeConfig, 'common.newArrivals', 'New Arrivals 2024')] }), _jsx("h1", { className: `text-4xl sm:text-5xl lg:text-6xl font-bold tracking-tight mb-6 leading-[1.1] ${categoryHeaderImage ? 'text-white' : 'text-gray-900'}`, children: categoryHeaderTitle || (_jsxs(_Fragment, { children: ["Explore The Collections of ", _jsx("br", {}), _jsx("span", { className: "text-transparent bg-clip-text bg-gradient-to-r from-gray-900 via-gray-700 to-gray-900", children: storeConfig.name })] })) }), _jsx("p", { className: `text-lg mb-8 leading-relaxed max-w-lg mx-auto lg:mx-0 ${categoryHeaderImage ? 'text-white/90' : 'text-gray-600'}`, children: getLayoutText(storeConfig, 'category_header:description', "Don't miss out on shopping our latest collection! curated for quality and style. Experience the perfect blend of modern aesthetics and premium craftsmanship.") }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-4 justify-center lg:justify-start", children: [primaryButtonText && primaryButtonText.trim() !== '' && (_jsx(Button, { className: `h-12 px-8 rounded-full text-base font-medium shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 ${categoryHeaderImage ? 'bg-white text-gray-900 hover:bg-gray-100' : ''}`, onClick: () => {
277
+ const element = document.getElementById('product-grid');
278
+ element?.scrollIntoView({ behavior: 'smooth' });
279
+ }, children: primaryButtonText })), secondaryButtonText && secondaryButtonText.trim() !== '' && (_jsx(Button, { className: `h-12 px-8 rounded-full text-base font-medium shadow-lg hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 ${categoryHeaderImage ? 'bg-white/10 backdrop-blur-md text-white border border-white/30 hover:bg-white/20' : 'bg-gray-100 text-gray-900 hover:bg-gray-200 border border-gray-200'}`, onClick: () => {
280
+ window.location.href = `/${storeConfig.slug}/categories`;
281
+ }, children: secondaryButtonText }))] })] }) }) })] }), _jsxs("div", { "data-content-ready": true, className: "container mx-auto px-4 sm:px-6 lg:px-8 py-8", children: [_jsxs("div", { className: "flex gap-3 mb-8 overflow-x-auto pb-2 scrollbar-hide", children: [_jsx("button", { onClick: () => setSelectedCategoryFilter(null), className: `px-6 py-2.5 rounded-lg text-sm font-semibold whitespace-nowrap transition-all ${!selectedCategoryFilter
282
+ ? 'bg-gray-900 text-white hover:bg-blue-600'
283
+ : 'bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600'}`, children: "All" }), categories.map((category) => (_jsx("button", { onClick: () => setSelectedCategoryFilter(selectedCategoryFilter === category.slug ? null : category.slug), className: `px-6 py-2.5 rounded-lg text-sm font-semibold whitespace-nowrap transition-all ${selectedCategoryFilter === category.slug
284
+ ? 'bg-gray-900 text-white hover:bg-blue-600'
285
+ : 'bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600'}`, children: category.name }, category.id)))] }), _jsxs("div", { id: "product-grid", className: "grid grid-cols-1 lg:grid-cols-4 gap-8", children: [_jsxs("aside", { className: "hidden lg:block col-span-1 space-y-8 sticky top-24 h-fit max-h-[calc(100vh-8rem)] overflow-y-auto pr-2 scrollbar-thin scrollbar-thumb-gray-200 scrollbar-track-transparent", children: [_jsxs("div", { className: "flex items-center justify-between pb-4 border-b border-gray-100", children: [_jsx("h2", { className: "text-xl font-bold text-gray-900", children: "Filters" }), hasActiveFilters && (_jsxs("button", { onClick: clearAllFilters, className: "text-xs font-medium text-red-500 hover:text-red-700 flex items-center gap-1", children: [_jsx(RotateCcw, { className: "h-3 w-3" }), " Reset"] }))] }), _jsxs("div", { children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide mb-4", children: "Availability" }), _jsxs("label", { className: "flex items-center gap-3 cursor-pointer group p-2 -ml-2 rounded-lg hover:bg-gray-50 transition-colors", children: [_jsx("div", { className: `w-5 h-5 rounded border flex items-center justify-center transition-colors ${showInStockOnly ? 'bg-black border-black' : 'border-gray-300 group-hover:border-black'}`, children: showInStockOnly && _jsx(Check, { className: "h-3 w-3 text-white" }) }), _jsx("input", { type: "checkbox", className: "hidden", checked: showInStockOnly, onChange: () => setShowInStockOnly(!showInStockOnly) }), _jsx("span", { className: "text-sm text-gray-700 font-medium", children: "In Stock Only" })] })] }), _jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide", children: "Brand" }), selectedBrands.length > 0 && (_jsx("button", { onClick: () => setSelectedBrands([]), className: "text-xs text-gray-600 hover:text-blue-600 font-medium transition-colors", children: "Clear" }))] }), brands.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [(showMoreBrands ? brands : brands.slice(0, 6)).map((brand) => (_jsx("label", { className: "flex items-center justify-between cursor-pointer group hover:bg-blue-50 hover:text-blue-600 p-2 rounded-lg -ml-2 -mr-2 transition-colors", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("input", { type: "checkbox", checked: selectedBrands.includes(brand), onChange: () => setSelectedBrands(prev => prev.includes(brand) ? prev.filter(b => b !== brand) : [...prev, brand]), className: "w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500" }), _jsx("span", { className: "text-sm text-gray-700 font-medium group-hover:text-blue-600", children: brand })] }) }, brand))), brands.length > 6 && (_jsx("button", { onClick: () => setShowMoreBrands(!showMoreBrands), className: "text-sm text-gray-600 hover:text-blue-600 font-medium mt-2 flex items-center gap-1 transition-colors", children: showMoreBrands ? _jsxs(_Fragment, { children: ["Show less ", _jsx(ChevronUp, { className: "h-4 w-4" })] }) : _jsxs(_Fragment, { children: ["Show more ", _jsx(ChevronDown, { className: "h-4 w-4" })] }) }))] })) : (_jsx("p", { className: "text-xs text-gray-500 italic", children: "No brands available" }))] }), _jsxs("div", { children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide mb-4", children: "Category" }), _jsx(CategoryTree, { categories: categories, selectedCategoryIds: selectedCategories, onCategoryToggle: (categoryId, isSelected) => {
286
+ setSelectedCategories(prev => isSelected
287
+ ? [...prev, categoryId]
288
+ : prev.filter(id => id !== categoryId));
289
+ }, mode: "checkbox" })] }), _jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide", children: "Price Range" }), (priceRange[0] > 0 || priceRange[1] < 5000) && (_jsx("button", { onClick: () => setPriceRange([0, 5000]), className: "text-xs text-gray-600 hover:text-blue-600 font-medium transition-colors", children: "Reset" }))] }), _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsx("input", { type: "range", min: "0", max: "5000", step: "50", value: priceRange[1], onChange: (e) => setPriceRange([priceRange[0], parseInt(e.target.value)]), className: "flex-1 h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-gray-900" }) }), _jsxs("div", { className: "flex items-center justify-between text-sm font-medium", children: [_jsx("span", { className: "text-gray-900", children: formatCurrency(priceRange[0], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) }), _jsx("span", { className: "text-gray-900", children: formatCurrency(priceRange[1], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-2", children: [_jsx("button", { onClick: () => setPriceRange([0, 100]), className: "px-3 py-2 text-xs font-semibold rounded-lg bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600 transition-colors", children: "$0 - $100" }), _jsx("button", { onClick: () => setPriceRange([0, 500]), className: "px-3 py-2 text-xs font-semibold rounded-lg bg-gray-100 text-gray-700 hover:bg-blue-50 hover:text-blue-600 transition-colors", children: "$0 - $500" })] })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900 uppercase tracking-wide mb-4", children: "Rating" }), _jsx("div", { className: "space-y-2", children: [4, 3, 2, 1].map((rating) => (_jsxs("label", { className: "flex items-center gap-3 cursor-pointer group p-2 -ml-2 rounded-lg hover:bg-blue-50 hover:text-blue-600 transition-colors", children: [_jsx("div", { className: `w-5 h-5 rounded-full border flex items-center justify-center transition-colors ${minRating === rating ? 'border-blue-600 bg-blue-600' : 'border-gray-300 group-hover:border-blue-400'}`, children: minRating === rating && _jsx("div", { className: "w-2.5 h-2.5 bg-white rounded-full" }) }), _jsx("input", { type: "radio", name: "rating", checked: minRating === rating, onChange: () => setMinRating(minRating === rating ? null : rating), className: "hidden" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "flex text-yellow-400", children: Array.from({ length: 5 }).map((_, i) => (_jsx(Star, { className: `h-3.5 w-3.5 ${i < rating ? 'fill-current' : 'text-gray-200 fill-gray-200'}` }, i))) }), _jsx("span", { className: "text-sm text-gray-600", children: "& Up" })] })] }, rating))) })] })] }), _jsxs("div", { className: "lg:col-span-3", children: [_jsxs("div", { className: "lg:hidden mb-6 flex items-center justify-between", children: [_jsxs(Button, { onClick: () => setIsFilterOpen(true), variant: "outline", className: "flex items-center gap-2", children: [_jsx(SlidersHorizontal, { className: "h-4 w-4" }), " Filters"] }), _jsxs("select", { value: sortBy, onChange: (e) => setSortBy(e.target.value), className: "bg-transparent text-sm font-medium text-gray-700 focus:outline-none", children: [_jsx("option", { value: "featured", children: "Sort by: Featured" }), _jsx("option", { value: "newest", children: "Sort by: Newest" }), _jsx("option", { value: "price-asc", children: "Sort by: Price Low-High" }), _jsx("option", { value: "price-desc", children: "Sort by: Price High-Low" })] })] }), _jsxs("div", { className: "hidden lg:flex items-center justify-between mb-6", children: [_jsxs("p", { className: "text-sm text-gray-600", children: ["Showing ", _jsx("span", { className: "font-semibold text-gray-900", children: filteredAndSortedProducts.length }), " products"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-gray-500", children: "Sort by:" }), _jsxs("select", { value: sortBy, onChange: (e) => setSortBy(e.target.value), className: "bg-transparent text-sm font-medium text-gray-900 focus:outline-none cursor-pointer hover:text-blue-600 transition-colors", children: [_jsx("option", { value: "featured", children: "Featured" }), _jsx("option", { value: "newest", children: "Newest Arrivals" }), _jsx("option", { value: "price-asc", children: "Price: Low to High" }), _jsx("option", { value: "price-desc", children: "Price: High to Low" }), _jsx("option", { value: "rating", children: "Top Rated" })] })] })] }), isLoadingProducts || isFiltering ? (_jsx(ProductGridSkeleton, { count: 12, columns: 3 })) : displayedProducts.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6", children: displayedProducts.map((product) => (_jsx(ProductCard, { product: product, storeSlug: storeConfig.slug, onAddToCart: handleAddToCart, onQuickView: handleQuickView }, product.id))) }), hasMore && (_jsx("div", { className: "mt-12 text-center", children: _jsx(Button, { onClick: () => setVisibleProducts(prev => prev + 12), variant: "outline", className: "min-w-[200px]", children: "Load More" }) }))] })) : (_jsxs("div", { className: "flex flex-col items-center justify-center py-20 bg-white rounded-lg border border-dashed border-gray-200 text-center", children: [_jsx("div", { className: "w-12 h-12 bg-gray-50 rounded-full flex items-center justify-center mb-4 text-gray-400", children: _jsx(Search, { className: "h-6 w-6" }) }), _jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-1", children: "No products found" }), _jsx("p", { className: "text-sm text-gray-500 mb-6", children: "Try adjusting your filters or search criteria." }), _jsx(Button, { onClick: clearAllFilters, variant: "outline", children: "Clear All Filters" })] }))] })] })] }), _jsxs(Sheet, { isOpen: isFilterOpen, onClose: () => setIsFilterOpen(false), title: "Filters", side: "right", children: [_jsxs("div", { className: "flex flex-col h-full overflow-y-auto pb-20 space-y-8 p-1", children: [_jsxs("div", { className: "pb-6 border-b border-gray-100", children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Availability" }), _jsxs("label", { className: "flex items-center gap-3", children: [_jsx("input", { type: "checkbox", checked: showInStockOnly, onChange: () => setShowInStockOnly(!showInStockOnly), className: "rounded border-gray-300 text-black focus:ring-black" }), _jsx("span", { className: "text-sm text-gray-700", children: "In Stock Only" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Price Range" }), _jsx("input", { type: "range", min: "0", max: "5000", step: "50", value: priceRange[1], onChange: (e) => setPriceRange([priceRange[0], parseInt(e.target.value)]), className: "w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-black mb-4" }), _jsxs("div", { className: "flex justify-between font-bold text-sm", children: [_jsx("span", { children: formatCurrency(0, storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }) }), _jsxs("span", { children: [formatCurrency(priceRange[1], storeConfig.settings?.currency || 'USD', { minimumFractionDigits: 0, maximumFractionDigits: 0 }), "+"] })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Categories" }), _jsx(CategoryTree, { categories: categories, selectedCategoryIds: selectedCategories, onCategoryToggle: (categoryId, isSelected) => {
290
+ setSelectedCategories(prev => isSelected
291
+ ? [...prev, categoryId]
292
+ : prev.filter(id => id !== categoryId));
293
+ }, mode: "checkbox" })] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Brand" }), brands.length > 0 ? (_jsx("div", { className: "space-y-3", children: brands.map(brand => (_jsxs("label", { className: "flex items-center gap-3", children: [_jsx("input", { type: "checkbox", checked: selectedBrands.includes(brand), onChange: () => setSelectedBrands(prev => prev.includes(brand) ? prev.filter(b => b !== brand) : [...prev, brand]), className: "rounded border-gray-300 text-black focus:ring-black" }), _jsx("span", { className: "text-sm text-gray-700", children: brand })] }, brand))) })) : (_jsx("p", { className: "text-xs text-gray-500 italic", children: "No brands available" }))] }), _jsxs("div", { children: [_jsx("h3", { className: "font-bold text-sm uppercase tracking-widest mb-4", children: "Rating" }), _jsx("div", { className: "space-y-3", children: [4, 3, 2, 1].map(rating => (_jsxs("label", { className: "flex items-center gap-3", children: [_jsx("input", { type: "radio", name: "mobile-rating", checked: minRating === rating, onChange: () => setMinRating(minRating === rating ? null : rating), className: "rounded-full border-gray-300 text-black focus:ring-black" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "flex text-yellow-400", children: Array.from({ length: 5 }).map((_, i) => (_jsx(Star, { className: `h-3 w-3 ${i < rating ? 'fill-current' : 'text-gray-200 fill-gray-200'}` }, i))) }), _jsx("span", { className: "text-sm text-gray-600", children: "& Up" })] })] }, rating))) })] })] }), _jsxs("div", { className: "absolute bottom-0 left-0 right-0 p-4 bg-white border-t border-gray-100 flex gap-3", children: [_jsx(Button, { onClick: clearAllFilters, variant: "outline", className: "flex-1 h-12 font-bold rounded-lg border-gray-300", children: "Reset" }), _jsx(Button, { onClick: () => setIsFilterOpen(false), className: "flex-[2] bg-black text-white hover:bg-blue-600 h-12 font-bold rounded-lg transition-colors", children: "View Results" })] })] })] }));
294
+ }
295
+ export function ProductsPage(props) {
296
+ return (_jsx(Suspense, { fallback: _jsx("div", { className: "min-h-screen flex items-center justify-center", children: _jsx("div", { className: "w-8 h-8 border-2 border-black border-t-transparent rounded-full animate-spin" }) }), children: _jsx(ProductsPageContent, { ...props }) }));
297
+ }
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface FoodHomePageModernProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function FoodHomePageModern({ storeConfig }: FoodHomePageModernProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=FoodHomePageModern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FoodHomePageModern.d.ts","sourceRoot":"","sources":["../../../../src/layouts/food-modern/components/FoodHomePageModern.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAgB9D,UAAU,uBAAuB;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,WAAW,EAAE,EAAE,uBAAuB,2CAgoB1E"}
@@ -0,0 +1,118 @@
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 { Modal } from '../../../components/ui/modal';
5
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
6
+ import { useToast } from '../../../components/ui/toast';
7
+ import { useStore } from '../../../lib/store-context';
8
+ import { Star, Clock, MapPin, ChefHat, ArrowRight, Instagram, Facebook, Twitter, Utensils, Search, Menu as MenuIcon, Calendar, Users, Mail, Phone, CheckCircle, Flame, Wine, Coffee, X } from 'lucide-react';
9
+ import Link from 'next/link';
10
+ import { useState, useEffect } from 'react';
11
+ import { formatCurrency } from '../../../lib/utils';
12
+ import { getLayoutText, getBannerImage, getLogoUrl, getAssetUrl } from '../../../lib/utils/asset-helpers';
13
+ import { StoreLogo } from '../../../components/ui/store-logos';
14
+ import { shouldUseAPI } from '../../../lib/utils/demo-detection';
15
+ import { VideoPlayer } from '../../../components/ui/video-player';
16
+ import { PromoBanner } from '../../../layouts/shared/components/PromoBanner';
17
+ export function FoodHomePageModern({ storeConfig }) {
18
+ const categories = storeConfig.categories || [];
19
+ const menuItems = storeConfig.menuItems || [];
20
+ const layoutConfig = storeConfig.layoutConfig;
21
+ const { addToCart } = useStore();
22
+ const { addToast } = useToast();
23
+ const [scrolled, setScrolled] = useState(false);
24
+ const [isReservationOpen, setIsReservationOpen] = useState(false);
25
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
26
+ const [reservationStep, setReservationStep] = useState(1);
27
+ const [isSubmitting, setIsSubmitting] = useState(false);
28
+ const [activeTab, setActiveTab] = useState('all');
29
+ const [isSearchOpen, setIsSearchOpen] = useState(false);
30
+ const [newsletterEmail, setNewsletterEmail] = useState('');
31
+ useEffect(() => {
32
+ const handleScroll = () => {
33
+ setScrolled(window.scrollY > 50);
34
+ };
35
+ window.addEventListener('scroll', handleScroll);
36
+ return () => window.removeEventListener('scroll', handleScroll);
37
+ }, []);
38
+ const handleReservationSubmit = (e) => {
39
+ e.preventDefault();
40
+ setIsSubmitting(true);
41
+ setTimeout(() => {
42
+ setIsSubmitting(false);
43
+ setReservationStep(2);
44
+ addToast('Table reserved successfully!', 'success');
45
+ }, 1500);
46
+ };
47
+ const closeReservation = () => {
48
+ setIsReservationOpen(false);
49
+ setTimeout(() => setReservationStep(1), 300);
50
+ };
51
+ const scrollToMenu = () => {
52
+ const menuSection = document.getElementById('menu-section');
53
+ if (menuSection) {
54
+ menuSection.scrollIntoView({ behavior: 'smooth' });
55
+ }
56
+ };
57
+ const filteredItems = activeTab === 'all'
58
+ ? menuItems
59
+ : menuItems.filter(item => item.categoryId === activeTab);
60
+ // Get testimonials from layoutConfig sections or use fallback
61
+ const isRealStore = shouldUseAPI(storeConfig.slug);
62
+ const testimonialsSection = layoutConfig?.sections?.testimonials;
63
+ const backendTestimonials = testimonialsSection?.items || [];
64
+ const fallbackTestimonials = [
65
+ { id: '1', name: "Emily Clark", role: "Food Critic", comment: "An absolute masterpiece of culinary art. The flavors are balanced to perfection.", image: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&q=80" },
66
+ { id: '2', name: "James Wilson", role: "Regular Guest", comment: "The atmosphere, the service, and the food - everything is just 10/10. My favorite spot in the city.", image: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=100&q=80" },
67
+ { id: '3', name: "Sarah & Mike", role: "Couple", comment: "We celebrated our anniversary here and it was magical. Highly recommend the tasting menu.", image: "https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=100&q=80" },
68
+ ];
69
+ const testimonials = backendTestimonials.length > 0
70
+ ? backendTestimonials.map((t, idx) => ({
71
+ id: t.id || String(idx + 1),
72
+ name: t.name || fallbackTestimonials[idx]?.name || 'Customer',
73
+ role: t.role || fallbackTestimonials[idx]?.role || 'Customer',
74
+ comment: t.quote || t.comment || fallbackTestimonials[idx]?.comment || '',
75
+ image: t.image || fallbackTestimonials[idx]?.image || '',
76
+ }))
77
+ : fallbackTestimonials;
78
+ return (_jsxs("div", { className: "min-h-screen bg-[#0F0F0F] text-white font-sans selection:bg-orange-500 selection:text-white", children: [_jsx("nav", { className: `fixed top-0 left-0 right-0 z-40 transition-all duration-500 ${scrolled ? 'bg-[#0F0F0F]/95 backdrop-blur-xl border-b border-white/5 py-4' : 'bg-transparent py-8'}`, children: _jsxs("div", { className: "container mx-auto px-6 flex items-center justify-between", children: [getLogoUrl(storeConfig) ? (_jsx(Link, { href: `/${storeConfig.slug}`, className: "relative z-50", children: _jsx(StoreLogo, { storeConfig: storeConfig, className: "h-10 w-10 transition-all duration-300 hover:opacity-90", alt: storeConfig.name }) })) : (_jsxs(Link, { href: `/${storeConfig.slug}`, className: "text-2xl font-black tracking-tighter uppercase relative z-50 group", children: [storeConfig.name, _jsx("span", { className: "text-orange-500 group-hover:text-white transition-colors duration-300", children: "." })] })), _jsxs("div", { className: "hidden md:flex items-center gap-10 text-xs font-bold tracking-[0.2em] uppercase", children: [_jsx("button", { onClick: scrollToMenu, className: "hover:text-orange-500 transition-colors relative after:content-[''] after:absolute after:-bottom-2 after:left-0 after:w-0 after:h-0.5 after:bg-orange-500 hover:after:w-full after:transition-all", children: "Menu" }), _jsx("button", { onClick: () => setIsReservationOpen(true), className: "hover:text-orange-500 transition-colors relative after:content-[''] after:absolute after:-bottom-2 after:left-0 after:w-0 after:h-0.5 after:bg-orange-500 hover:after:w-full after:transition-all", children: "Reservations" }), _jsx(Link, { href: `/${storeConfig.slug}/about`, className: "hover:text-orange-500 transition-colors relative after:content-[''] after:absolute after:-bottom-2 after:left-0 after:w-0 after:h-0.5 after:bg-orange-500 hover:after:w-full after:transition-all", children: "Story" }), _jsx(Link, { href: `/${storeConfig.slug}/contact`, className: "hover:text-orange-500 transition-colors relative after:content-[''] after:absolute after:-bottom-2 after:left-0 after:w-0 after:h-0.5 after:bg-orange-500 hover:after:w-full after:transition-all", children: "Contact" })] }), _jsxs("div", { className: "flex items-center gap-6", children: [_jsx(Button, { variant: "ghost", size: "icon", className: "text-white hover:text-orange-500 hover:bg-white/5 rounded-full md:hidden", onClick: () => setIsMenuOpen(true), children: _jsx(MenuIcon, { className: "h-6 w-6" }) }), storeConfig.features.search && (_jsx(Button, { variant: "ghost", size: "icon", onClick: () => setIsSearchOpen(!isSearchOpen), className: "text-white hover:text-orange-500 hover:bg-white/5 rounded-full hidden md:flex", children: _jsx(Search, { className: "h-5 w-5" }) })), _jsx(Button, { onClick: () => setIsReservationOpen(true), className: "bg-white text-black hover:bg-orange-500 hover:text-white rounded-full px-8 font-bold uppercase tracking-wider text-xs h-10 transition-all duration-300 hidden sm:flex", children: "Book Table" })] })] }) }), isSearchOpen && storeConfig.features.search && (_jsx("div", { className: "fixed inset-0 z-50 bg-[#0F0F0F]/98 backdrop-blur-xl pt-20", children: _jsx("div", { className: "container mx-auto px-6", children: _jsxs("div", { className: "relative max-w-2xl mx-auto", children: [_jsx(Search, { className: "absolute left-4 top-1/2 -translate-y-1/2 h-6 w-6 text-gray-400" }), _jsx("input", { type: "text", placeholder: getLayoutText(storeConfig, 'header.searchPlaceholder', 'Search menu items...'), autoFocus: true, className: "w-full pl-14 pr-4 py-6 text-xl bg-transparent border-b-2 border-orange-500/50 text-white focus:outline-none focus:border-orange-500", onBlur: () => setIsSearchOpen(false) })] }) }) })), _jsx("div", { className: `fixed inset-0 z-50 bg-[#0F0F0F] transition-transform duration-500 ${isMenuOpen ? 'translate-x-0' : '-translate-x-full'}`, children: _jsxs("div", { className: "flex flex-col h-full p-8", children: [_jsxs("div", { className: "flex justify-between items-center mb-12", children: [!getLogoUrl(storeConfig) ? (_jsxs("span", { className: "text-2xl font-black uppercase", children: [storeConfig.name, _jsx("span", { className: "text-orange-500", children: "." })] })) : (_jsx(StoreLogo, { storeConfig: storeConfig, className: "h-10 w-10", alt: storeConfig.name })), _jsx("button", { onClick: () => setIsMenuOpen(false), className: "text-white hover:text-orange-500", children: _jsx(X, { className: "h-8 w-8" }) })] }), _jsxs("div", { className: "flex flex-col gap-8 text-2xl font-black uppercase tracking-tight", children: [_jsx("button", { onClick: () => { scrollToMenu(); setIsMenuOpen(false); }, className: "text-left hover:text-orange-500", children: "Menu" }), _jsx("button", { onClick: () => { setIsReservationOpen(true); setIsMenuOpen(false); }, className: "text-left hover:text-orange-500", children: "Reservations" }), _jsx(Link, { href: `/${storeConfig.slug}/about`, onClick: () => setIsMenuOpen(false), className: "hover:text-orange-500", children: "Story" }), _jsx(Link, { href: `/${storeConfig.slug}/contact`, onClick: () => setIsMenuOpen(false), className: "hover:text-orange-500", children: "Contact" })] })] }) }), _jsxs("section", { className: "relative h-screen w-full overflow-hidden flex items-center justify-center", children: [_jsxs("div", { className: "absolute inset-0 z-0", children: [_jsx(VideoPlayer, { src: getAssetUrl(storeConfig, 'hero_video', "https://cdn.coverr.co/videos/coverr-chef-preparing-food-in-kitchen-5379/1080p.mp4"), poster: getBannerImage(storeConfig, 'hero_video_poster', "https://images.unsplash.com/photo-1514362545857-3bc16c4c7d1b?q=80&w=2070&auto=format&fit=crop"), context: "background", className: "w-full h-full opacity-50 scale-105" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-[#0F0F0F] via-[#0F0F0F]/40 to-black/30" }), _jsx("div", { className: "absolute inset-0 bg-[url('https://www.transparenttextures.com/patterns/noise.png')] opacity-20 mix-blend-overlay" })] }), _jsxs("div", { className: "relative z-10 text-center px-4 max-w-5xl mx-auto space-y-10", children: [_jsxs("div", { className: "flex justify-center items-center gap-6 animate-fade-in-up", children: [_jsx("span", { className: "h-px w-16 bg-white/30" }), _jsxs("div", { className: "flex items-center gap-2 text-orange-500 uppercase tracking-[0.3em] text-xs font-bold", children: [_jsx(Star, { className: "h-3 w-3 fill-current" }), " ", getLayoutText(storeConfig, 'food.ourPhilosophy', 'Michelin Star 2024')] }), _jsx("span", { className: "h-px w-16 bg-white/30" })] }), _jsxs("h1", { className: "text-5xl md:text-8xl lg:text-9xl font-black tracking-tighter leading-none uppercase text-white animate-fade-in-up delay-100", children: [getLayoutText(storeConfig, 'food.ourPhilosophy', 'Taste the Extraordinary'), " ", _jsx("br", {}), _jsx("span", { className: "text-transparent bg-clip-text bg-gradient-to-r from-orange-400 to-amber-200", children: "Extraordinary" })] }), _jsxs("p", { className: "text-lg md:text-xl text-gray-300 max-w-xl mx-auto font-light leading-relaxed animate-fade-in-up delay-200 tracking-wide", children: [storeConfig.description, " Where culinary art meets exceptional atmosphere."] }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-6 justify-center items-center pt-8 animate-fade-in-up delay-300", children: [_jsx(Button, { onClick: () => setIsReservationOpen(true), className: "h-14 px-10 bg-orange-600 hover:bg-orange-700 text-white text-sm font-bold uppercase tracking-[0.2em] rounded-full transition-all hover:scale-105 hover:shadow-[0_0_40px_rgba(234,88,12,0.3)]", children: getLayoutText(storeConfig, 'food.reserveTable', 'Reserve Table') }), _jsx("div", { onClick: scrollToMenu, className: "w-14 h-14 rounded-full border border-white/20 flex items-center justify-center cursor-pointer hover:bg-white hover:text-black transition-all group", children: _jsx(ArrowRight, { className: "h-5 w-5 group-hover:rotate-90 transition-transform duration-300" }) })] })] }), _jsxs("div", { className: "absolute bottom-10 left-1/2 -translate-x-1/2 flex flex-col items-center gap-4 animate-pulse", children: [_jsx("span", { className: "text-[10px] uppercase tracking-[0.3em] text-gray-500", children: "Scroll" }), _jsx("div", { className: "w-px h-16 bg-gradient-to-b from-orange-500 to-transparent" })] })] }), layoutConfig?.sections?.story?.show !== false && (_jsxs("section", { className: "py-20 px-6 relative overflow-hidden", children: [_jsx("div", { className: "absolute top-0 right-0 w-1/3 h-full bg-white/5 skew-x-12 transform translate-x-20 pointer-events-none" }), _jsx("div", { className: "container mx-auto max-w-6xl relative z-10", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-20 items-center", children: [_jsxs("div", { className: "relative", children: [_jsx("div", { className: "aspect-[4/5] rounded-none overflow-hidden grayscale hover:grayscale-0 transition-all duration-700", children: _jsx(ImageWithFallback, { src: getBannerImage(storeConfig, 'about_section_image', "https://images.unsplash.com/photo-1559339352-11d035aa65de?w=1200&q=80"), alt: "Chef", className: "w-full h-full object-cover" }) }), _jsxs("div", { className: "absolute -bottom-10 -right-10 bg-[#1A1A1A] p-8 border border-white/5 max-w-xs hidden md:block", children: [_jsx("p", { className: "font-serif italic text-2xl text-white mb-4", children: "\"Cooking is an art, but patience is the key ingredient.\"" }), _jsx("p", { className: "text-orange-500 text-xs font-bold uppercase tracking-widest", children: "\u2014 Head Chef Marco" })] })] }), _jsxs("div", { className: "space-y-8", children: [_jsx("span", { className: "text-orange-500 font-bold uppercase tracking-widest text-xs", children: layoutConfig?.sections?.story?.label || getLayoutText(storeConfig, 'food.ourPhilosophy', 'Our Philosophy') }), _jsx("h2", { className: "text-4xl md:text-5xl font-bold leading-tight", children: layoutConfig?.sections?.story?.title || getLayoutText(storeConfig, 'food.ourPhilosophy', 'Crafting Memories Through Flavor') }), _jsx("p", { className: "text-gray-400 text-lg leading-relaxed", children: layoutConfig?.sections?.story?.description || getLayoutText(storeConfig, 'food.ourPhilosophy', 'We believe that dining is more than just eating; it\'s an experience that engages all senses. Our seasonal menu is carefully curated using locally sourced ingredients to bring you the freshest flavors of the region.') }), _jsxs("div", { className: "grid grid-cols-3 gap-8 pt-8 border-t border-white/10", children: [_jsxs("div", { children: [_jsx(Flame, { className: "h-8 w-8 text-orange-500 mb-4" }), _jsx("h4", { className: "font-bold text-lg", children: "Wood Fired" }), _jsx("p", { className: "text-sm text-gray-500 mt-2", children: "Authentic taste" })] }), _jsxs("div", { children: [_jsx(Wine, { className: "h-8 w-8 text-orange-500 mb-4" }), _jsx("h4", { className: "font-bold text-lg", children: "Fine Wines" }), _jsx("p", { className: "text-sm text-gray-500 mt-2", children: "Curated selection" })] }), _jsxs("div", { children: [_jsx(Coffee, { className: "h-8 w-8 text-orange-500 mb-4" }), _jsx("h4", { className: "font-bold text-lg", children: "Artisan Coffee" }), _jsx("p", { className: "text-sm text-gray-500 mt-2", children: "Roasted in-house" })] })] })] })] }) })] })), layoutConfig?.sections?.promoBanner?.show !== false && layoutConfig?.sections?.promoBanner && (_jsx(PromoBanner, { config: layoutConfig.sections.promoBanner, layoutStyle: "food", className: "my-20" })), _jsx("section", { id: "menu-section", className: "py-20 bg-[#141414] border-t border-white/5", children: _jsxs("div", { className: "container mx-auto px-6 max-w-7xl", children: [_jsxs("div", { className: "text-center mb-12", children: [_jsx("span", { className: "text-orange-500 font-bold uppercase tracking-widest text-xs mb-4 block", children: "Discover" }), _jsx("h2", { className: "text-4xl md:text-5xl font-bold uppercase tracking-tight mb-8", children: getLayoutText(storeConfig, 'food.menuCategories', 'Our Menu') }), _jsxs("div", { className: "flex flex-wrap justify-center gap-4", children: [_jsx("button", { onClick: () => setActiveTab('all'), className: `px-8 py-3 rounded-full text-sm font-bold uppercase tracking-wider transition-all border ${activeTab === 'all' ? 'bg-white text-black border-white' : 'bg-transparent text-gray-400 border-white/10 hover:border-white/30'}`, children: "All" }), categories.map((cat) => (_jsx("button", { onClick: () => setActiveTab(cat.id), className: `px-8 py-3 rounded-full text-sm font-bold uppercase tracking-wider transition-all border ${activeTab === cat.id ? 'bg-white text-black border-white' : 'bg-transparent text-gray-400 border-white/10 hover:border-white/30'}`, children: cat.name }, cat.id)))] })] }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-16", children: filteredItems.map((item) => (_jsxs("div", { className: "group cursor-pointer", children: [_jsxs("div", { className: "aspect-square overflow-hidden rounded-full mb-6 border border-white/10 relative", children: [_jsx(ImageWithFallback, { src: item.image, alt: item.name, className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-110 group-hover:rotate-3", skeletonAspectRatio: "square" }), _jsx("div", { className: "hidden lg:flex absolute inset-0 bg-black/40 opacity-0 group-hover:opacity-100 transition-opacity items-center justify-center", children: _jsx(Button, { className: "bg-orange-600 rounded-full px-6 hover:bg-orange-700", onClick: (e) => {
79
+ e.preventDefault();
80
+ e.stopPropagation();
81
+ // Adapt menu item to product for cart
82
+ const product = {
83
+ ...item,
84
+ slug: item.id,
85
+ images: item.image ? [item.image] : [],
86
+ variants: [],
87
+ specifications: {},
88
+ rating: 0,
89
+ reviewCount: 0
90
+ };
91
+ addToCart(product);
92
+ addToast(`${item.name} added to order`, 'success');
93
+ }, children: "Order Now" }) }), _jsx("button", { className: "lg:hidden absolute bottom-2 right-2 bg-orange-600 text-white rounded-full w-10 h-10 flex items-center justify-center shadow-lg z-10 active:scale-95 transition-transform", onClick: (e) => {
94
+ e.preventDefault();
95
+ e.stopPropagation();
96
+ const product = {
97
+ ...item,
98
+ slug: item.id,
99
+ images: item.image ? [item.image] : [],
100
+ variants: [],
101
+ specifications: {},
102
+ rating: 0,
103
+ reviewCount: 0
104
+ };
105
+ addToCart(product);
106
+ addToast(`${item.name} added to order`, 'success');
107
+ }, children: _jsx(Utensils, { className: "h-5 w-5" }) })] }), _jsxs("div", { className: "text-center px-4", children: [_jsx("h3", { className: "text-xl font-bold uppercase tracking-wide mb-2 group-hover:text-orange-500 transition-colors", children: item.name }), _jsx("p", { className: "text-gray-500 text-sm mb-3 line-clamp-2", children: item.description }), _jsx("span", { className: "text-2xl font-serif text-white block", children: formatCurrency(item.price, item.currency || storeConfig.settings?.currency || 'USD') })] })] }, item.id))) })] }) }), testimonialsSection?.show !== false && (_jsx("section", { className: "py-20 px-6 bg-[#0F0F0F] border-t border-white/5", children: _jsxs("div", { className: "container mx-auto max-w-6xl", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-center mb-12 uppercase tracking-tight", children: testimonialsSection?.title || getLayoutText(storeConfig, 'sections.testimonials.title', 'Guest Stories') }), testimonialsSection?.subtitle && (_jsx("p", { className: "text-center text-gray-400 mb-12 max-w-2xl mx-auto", children: testimonialsSection.subtitle })), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: testimonials.slice(0, 3).map((t) => (_jsxs("div", { className: "bg-[#1A1A1A] p-8 rounded-none border border-white/5 relative hover:-translate-y-2 transition-transform duration-300", children: [_jsx("div", { className: "absolute -top-5 left-8 text-6xl text-orange-500/20 font-serif", children: "\"" }), _jsx("p", { className: "text-gray-300 leading-relaxed mb-8 relative z-10 italic font-light", children: t.comment }), _jsxs("div", { className: "flex items-center gap-4", children: [_jsx(ImageWithFallback, { src: t.image, alt: t.name, className: "w-12 h-12 rounded-full object-cover grayscale" }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white text-sm uppercase tracking-wide", children: t.name }), _jsx("span", { className: "text-xs text-orange-500 font-bold uppercase tracking-widest", children: t.role })] })] })] }, t.id))) })] }) })), _jsxs("section", { className: "relative py-20 md:py-32 flex items-center justify-center overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 bg-cover bg-center fixed-bg opacity-30 grayscale", style: { backgroundImage: `url('${getBannerImage(storeConfig, 'reservation_bg', "https://images.unsplash.com/photo-1559339352-11d035aa65de?q=80&w=1974&auto=format&fit=crop")}')` } }), _jsx("div", { className: "absolute inset-0 bg-[#0F0F0F]/80" }), _jsxs("div", { className: "relative z-10 text-center max-w-4xl mx-auto px-6", children: [_jsx(ChefHat, { className: "h-12 w-12 md:h-16 md:w-16 text-white/20 mx-auto mb-6 md:mb-8" }), _jsx("h2", { className: "text-4xl md:text-7xl font-bold uppercase tracking-tight mb-6 md:mb-8", children: "Your Table Awaits" }), _jsx("p", { className: "text-lg md:text-xl text-gray-300 mb-10 md:mb-12 font-light", children: "Experience the art of fine dining in the heart of the city." }), _jsx(Button, { onClick: () => setIsReservationOpen(true), className: "h-16 px-12 bg-white text-black hover:bg-orange-500 hover:text-white text-lg font-bold uppercase tracking-[0.2em] rounded-full transition-all duration-300 hover:shadow-[0_0_30px_rgba(255,255,255,0.2)]", children: "Make a Reservation" })] })] }), _jsx("footer", { className: "bg-black pt-24 pb-12 border-t border-white/5", children: _jsxs("div", { className: "container mx-auto px-6", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-16 mb-20", children: [_jsxs("div", { className: "space-y-8", children: [_jsxs(Link, { href: `/${storeConfig.slug}`, className: "text-3xl font-black tracking-tighter uppercase block", children: [storeConfig.name, _jsx("span", { className: "text-orange-500", children: "." })] }), _jsx("p", { className: "text-gray-500 leading-relaxed text-sm", children: storeConfig.description || getLayoutText(storeConfig, 'footer.description', 'Redefining the art of dining through innovation, passion, and uncompromising quality.') }), (storeConfig.branding.socialMedia || storeConfig.socialLinks) && (_jsxs("div", { className: "flex gap-4", children: [(storeConfig.branding.socialMedia?.instagram || storeConfig.socialLinks?.instagram) && (_jsx("a", { href: storeConfig.branding.socialMedia?.instagram || storeConfig.socialLinks?.instagram || '#', target: "_blank", rel: "noopener noreferrer", className: "w-10 h-10 border border-white/10 flex items-center justify-center hover:bg-orange-500 hover:border-orange-500 hover:text-white transition-all rounded-full", children: _jsx(Instagram, { className: "h-4 w-4" }) })), (storeConfig.branding.socialMedia?.facebook || storeConfig.socialLinks?.facebook) && (_jsx("a", { href: storeConfig.branding.socialMedia?.facebook || storeConfig.socialLinks?.facebook || '#', target: "_blank", rel: "noopener noreferrer", className: "w-10 h-10 border border-white/10 flex items-center justify-center hover:bg-orange-500 hover:border-orange-500 hover:text-white transition-all rounded-full", children: _jsx(Facebook, { className: "h-4 w-4" }) })), (storeConfig.branding.socialMedia?.twitter || storeConfig.socialLinks?.twitter) && (_jsx("a", { href: storeConfig.branding.socialMedia?.twitter || storeConfig.socialLinks?.twitter || '#', target: "_blank", rel: "noopener noreferrer", className: "w-10 h-10 border border-white/10 flex items-center justify-center hover:bg-orange-500 hover:border-orange-500 hover:text-white transition-all rounded-full", children: _jsx(Twitter, { className: "h-4 w-4" }) }))] }))] }), _jsxs("div", { children: [_jsx("h4", { className: "text-sm font-bold uppercase tracking-[0.2em] mb-8 text-white", children: getLayoutText(storeConfig, 'footer.quickLinks.title', 'Quick Links') }), _jsx("ul", { className: "space-y-4 text-gray-500 text-sm", children: storeConfig.navigation?.footer && storeConfig.navigation.footer.length > 0 ? (storeConfig.navigation.footer.map((section, idx) => (section.links?.map((link, linkIdx) => (_jsx("li", { children: _jsx(Link, { href: link.href, className: "hover:text-orange-500 transition-colors", children: link.label }) }, `${idx}-${linkIdx}`))))).flat()) : (_jsxs(_Fragment, { children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/menu`, className: "hover:text-orange-500 transition-colors", children: getLayoutText(storeConfig, 'footer.quickLinks.menu', 'Our Menu') }) }), _jsx("li", { children: _jsx("button", { onClick: () => setIsReservationOpen(true), className: "hover:text-orange-500 transition-colors text-left", children: getLayoutText(storeConfig, 'footer.quickLinks.reservations', 'Reservations') }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/contact`, className: "hover:text-orange-500 transition-colors", children: getLayoutText(storeConfig, 'footer.quickLinks.privateDining', 'Private Dining') }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/contact`, className: "hover:text-orange-500 transition-colors", children: getLayoutText(storeConfig, 'footer.quickLinks.giftCards', 'Gift Cards') }) })] })) })] }), _jsxs("div", { children: [_jsx("h4", { className: "text-sm font-bold uppercase tracking-[0.2em] mb-8 text-white", children: getLayoutText(storeConfig, 'footer.contact.title', 'Contact') }), _jsxs("ul", { className: "space-y-4 text-gray-500 text-sm", children: [storeConfig.contactInfo?.address && ((storeConfig.contactInfo.address.street ||
108
+ storeConfig.contactInfo.address.city ||
109
+ storeConfig.contactInfo.address.state ||
110
+ storeConfig.contactInfo.address.zipCode) && (_jsxs("li", { className: "flex items-start gap-3", children: [_jsx(MapPin, { className: "h-5 w-5 text-orange-500 mt-1 shrink-0" }), _jsxs("span", { children: [storeConfig.contactInfo.address.street && `${storeConfig.contactInfo.address.street}, `, storeConfig.contactInfo.address.city && `${storeConfig.contactInfo.address.city}, `, storeConfig.contactInfo.address.state && `${storeConfig.contactInfo.address.state} `, storeConfig.contactInfo.address.zipCode && storeConfig.contactInfo.address.zipCode] })] }))), storeConfig.contactInfo?.phone && (_jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Phone, { className: "h-5 w-5 text-orange-500 shrink-0" }), _jsx("a", { href: `tel:${storeConfig.contactInfo.phone}`, className: "hover:text-orange-500 transition-colors", children: storeConfig.contactInfo.phone })] })), storeConfig.contactInfo?.email && (_jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Mail, { className: "h-5 w-5 text-orange-500 shrink-0" }), _jsx("a", { href: `mailto:${storeConfig.contactInfo.email}`, className: "hover:text-orange-500 transition-colors", children: storeConfig.contactInfo.email })] })), storeConfig.locations && storeConfig.locations.length > 0 && storeConfig.locations[0].openingHours && (_jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Clock, { className: "h-5 w-5 text-orange-500 shrink-0" }), _jsx("span", { children: storeConfig.locations[0].openingHours })] })), !storeConfig.contactInfo?.address && !storeConfig.contactInfo?.phone && !storeConfig.contactInfo?.email && (!storeConfig.locations || storeConfig.locations.length === 0 || !storeConfig.locations[0].openingHours) && (_jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Clock, { className: "h-5 w-5 text-orange-500 shrink-0" }), _jsx("span", { children: getLayoutText(storeConfig, 'footer.contact.openingHours', 'Mon-Sun: 11am - 11pm') })] }))] })] }), _jsxs("div", { children: [_jsx("h4", { className: "text-sm font-bold uppercase tracking-[0.2em] mb-8 text-white", children: getLayoutText(storeConfig, 'footer.newsletter.title', 'Newsletter') }), _jsx("p", { className: "text-gray-500 mb-6 text-sm", children: getLayoutText(storeConfig, 'footer.newsletter.description', getLayoutText(storeConfig, 'sections.marketing.newsletter.subtitle', 'Subscribe for seasonal updates and exclusive invitations.')) }), _jsxs("form", { onSubmit: async (e) => {
111
+ e.preventDefault();
112
+ if (newsletterEmail && newsletterEmail.includes('@')) {
113
+ await new Promise(resolve => setTimeout(resolve, 500));
114
+ addToast('Thank you for subscribing!', 'success');
115
+ setNewsletterEmail('');
116
+ }
117
+ }, className: "flex border-b border-white/20 pb-2", children: [_jsx("input", { type: "email", placeholder: getLayoutText(storeConfig, 'footer.newsletter.placeholder', getLayoutText(storeConfig, 'sections.marketing.newsletter.placeholder', 'Email Address')), value: newsletterEmail, onChange: (e) => setNewsletterEmail(e.target.value), required: true, className: "bg-transparent border-none outline-none text-white w-full placeholder:text-gray-600 text-sm" }), _jsx("button", { type: "submit", className: "text-orange-500 font-bold uppercase text-xs hover:text-white transition-colors", children: getLayoutText(storeConfig, 'footer.newsletter.button', getLayoutText(storeConfig, 'sections.marketing.newsletter.button', 'Join')) })] })] })] }), _jsxs("div", { className: "border-t border-white/5 pt-8 flex flex-col md:flex-row justify-between items-center gap-4 text-xs text-gray-600 uppercase tracking-wider", children: [_jsx("p", { children: getLayoutText(storeConfig, 'footer.copyright', `© ${new Date().getFullYear()} ${storeConfig.name}. All rights reserved.`) }), _jsxs("div", { className: "flex gap-8", children: [_jsx(Link, { href: `/${storeConfig.slug}/privacy`, className: "hover:text-white transition-colors", children: getLayoutText(storeConfig, 'footer.privacyPolicy', 'Privacy Policy') }), _jsx(Link, { href: `/${storeConfig.slug}/terms`, className: "hover:text-white transition-colors", children: getLayoutText(storeConfig, 'footer.termsOfService', 'Terms of Service') })] })] })] }) }), _jsx(Modal, { isOpen: isReservationOpen, onClose: closeReservation, title: "Table Reservation", className: "bg-[#1A1A1A] text-white border border-white/10 rounded-none", children: reservationStep === 1 ? (_jsxs("form", { onSubmit: handleReservationSubmit, className: "space-y-6", children: [_jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: "text-xs font-bold uppercase tracking-wider text-gray-500", children: "Date" }), _jsxs("div", { className: "relative", children: [_jsx(Calendar, { className: "absolute left-3 top-3 h-4 w-4 text-gray-400" }), _jsx("input", { type: "date", required: true, className: "w-full pl-10 pr-4 py-3 bg-[#0F0F0F] border border-white/10 rounded-none focus:outline-none focus:border-orange-500 text-sm" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: "text-xs font-bold uppercase tracking-wider text-gray-500", children: "Time" }), _jsxs("div", { className: "relative", children: [_jsx(Clock, { className: "absolute left-3 top-3 h-4 w-4 text-gray-400" }), _jsxs("select", { required: true, className: "w-full pl-10 pr-4 py-3 bg-[#0F0F0F] border border-white/10 rounded-none focus:outline-none focus:border-orange-500 text-sm text-gray-300", children: [_jsx("option", { children: "18:00" }), _jsx("option", { children: "18:30" }), _jsx("option", { children: "19:00" }), _jsx("option", { children: "19:30" }), _jsx("option", { children: "20:00" }), _jsx("option", { children: "20:30" })] })] })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: "text-xs font-bold uppercase tracking-wider text-gray-500", children: "Guests" }), _jsxs("div", { className: "relative", children: [_jsx(Users, { className: "absolute left-3 top-3 h-4 w-4 text-gray-400" }), _jsx("select", { required: true, className: "w-full pl-10 pr-4 py-3 bg-[#0F0F0F] border border-white/10 rounded-none focus:outline-none focus:border-orange-500 text-sm text-gray-300", children: [1, 2, 3, 4, 5, 6, 7, 8].map(n => _jsxs("option", { value: n, children: [n, " People"] }, n)) })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: "text-xs font-bold uppercase tracking-wider text-gray-500", children: "Contact Details" }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "relative", children: [_jsx(Users, { className: "absolute left-3 top-3 h-4 w-4 text-gray-400" }), _jsx("input", { type: "text", placeholder: "Full Name", required: true, className: "w-full pl-10 pr-4 py-3 bg-[#0F0F0F] border border-white/10 rounded-none focus:outline-none focus:border-orange-500 text-sm" })] }), _jsxs("div", { className: "relative", children: [_jsx(Mail, { className: "absolute left-3 top-3 h-4 w-4 text-gray-400" }), _jsx("input", { type: "email", placeholder: "Email Address", required: true, className: "w-full pl-10 pr-4 py-3 bg-[#0F0F0F] border border-white/10 rounded-none focus:outline-none focus:border-orange-500 text-sm" })] }), _jsxs("div", { className: "relative", children: [_jsx(Phone, { className: "absolute left-3 top-3 h-4 w-4 text-gray-400" }), _jsx("input", { type: "tel", placeholder: "Phone Number", required: true, className: "w-full pl-10 pr-4 py-3 bg-[#0F0F0F] border border-white/10 rounded-none focus:outline-none focus:border-orange-500 text-sm" })] })] })] }), _jsx(Button, { type: "submit", disabled: isSubmitting, className: "w-full h-14 bg-orange-600 hover:bg-orange-700 text-white font-bold uppercase tracking-[0.2em] rounded-none mt-4", children: isSubmitting ? 'Confirming...' : 'Confirm Reservation' })] })) : (_jsxs("div", { className: "text-center py-8 space-y-6", children: [_jsx("div", { className: "w-20 h-20 bg-green-500/10 rounded-full flex items-center justify-center mx-auto border border-green-500/20", children: _jsx(CheckCircle, { className: "h-10 w-10 text-green-500" }) }), _jsx("h3", { className: "text-2xl font-bold uppercase tracking-tight", children: "Confirmed" }), _jsx("p", { className: "text-gray-400", children: "Your table has been reserved. Check your email for details." }), _jsx(Button, { onClick: closeReservation, className: "bg-white text-black hover:bg-gray-200 rounded-none px-10 h-12 uppercase tracking-wider font-bold", children: "Close" })] })) })] }));
118
+ }
@@ -0,0 +1,9 @@
1
+ export { FoodHomePageModern } from './components/FoodHomePageModern';
2
+ export { ProductsPage } from './pages/ProductsPage';
3
+ export { ProductDetailPage } from './pages/ProductDetailPage';
4
+ export { CategoryPage } from './pages/CategoryPage';
5
+ export { CategoriesPage } from './pages/CategoriesPage';
6
+ export { MenuPage } from './pages/MenuPage';
7
+ export { AboutPage } from './pages/AboutPage';
8
+ export { ContactPage } from './pages/ContactPage';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/food-modern/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,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,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Food-modern layout exports
2
+ export { FoodHomePageModern } from './components/FoodHomePageModern';
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 { MenuPage } from './pages/MenuPage';
8
+ export { AboutPage } from './pages/AboutPage';
9
+ export { ContactPage } from './pages/ContactPage';
@@ -0,0 +1,7 @@
1
+ import { StoreConfig } from '../../../lib/store-types';
2
+ interface AboutPageProps {
3
+ storeConfig: StoreConfig;
4
+ }
5
+ export declare function AboutPage({ storeConfig }: AboutPageProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=AboutPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/food-modern/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"}