storefront-layouts 1.0.16 → 1.0.18

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 (232) hide show
  1. package/dist/components/auth/LoginForm.js +1 -1
  2. package/dist/components/auth/LoginSheet.js +1 -1
  3. package/dist/components/auth/login-form-core.js +2 -2
  4. package/dist/components/auth/login-sheet-registry.js +2 -2
  5. package/dist/components/auth/login-sheet-themes/booking-agenda.theme.js +1 -1
  6. package/dist/components/auth/login-sheet-themes/booking.theme.js +1 -1
  7. package/dist/components/auth/login-sheet-themes/clothing-minimal.theme.js +1 -1
  8. package/dist/components/auth/login-sheet-themes/clothing.theme.js +1 -1
  9. package/dist/components/auth/login-sheet-themes/electronics-grid.theme.js +1 -1
  10. package/dist/components/auth/login-sheet-themes/electronics.theme.js +1 -1
  11. package/dist/components/auth/login-sheet-themes/food-modern.theme.js +1 -1
  12. package/dist/components/auth/login-sheet-themes/food.theme.js +1 -1
  13. package/dist/components/auth/login-sheet-themes/index.js +9 -9
  14. package/dist/components/auth/login-sheet-themes/motivational-speaker.theme.js +1 -1
  15. package/dist/components/auth/login-sheets/StoreLoginSheetShell.js +3 -3
  16. package/dist/components/categories/category-masonry-grid.js +3 -3
  17. package/dist/components/learning/CertificateViewer.js +1 -1
  18. package/dist/components/rich-text/CategoryDescription.js +2 -2
  19. package/dist/components/rich-text/ProductDescription.js +2 -2
  20. package/dist/components/rich-text/RichTextExcerpt.js +1 -1
  21. package/dist/components/rich-text/SafeRichHtml.js +1 -1
  22. package/dist/components/shipping/ProductDeliveryInfoSection.js +2 -2
  23. package/dist/components/ui/alert-modal.js +1 -1
  24. package/dist/components/ui/guest-checkout-modal.js +2 -2
  25. package/dist/components/ui/image-skeleton.js +1 -1
  26. package/dist/components/ui/image-with-fallback.js +1 -1
  27. package/dist/components/ui/loading-skeleton-wrapper.js +1 -1
  28. package/dist/components/ui/modal.js +1 -1
  29. package/dist/components/ui/page-content-loader.js +1 -1
  30. package/dist/components/ui/product-card.d.ts.map +1 -1
  31. package/dist/components/ui/product-card.js +3 -2
  32. package/dist/components/ui/route-skeleton-loader.js +5 -5
  33. package/dist/components/ui/sheet.js +1 -1
  34. package/dist/components/ui/skeletons/index.js +5 -5
  35. package/dist/components/ui/skeletons/product-grid-skeleton.js +1 -1
  36. package/dist/editor/alignment-schemas/booking.js +1 -1
  37. package/dist/editor/alignment-schemas/clothing-minimal.js +1 -1
  38. package/dist/editor/alignment-schemas/index.js +20 -20
  39. package/dist/editor/alignment-schemas/lazy-loader.js +1 -1
  40. package/dist/editor/alignment-schemas/metadata.js +1 -1
  41. package/dist/editor/alignment-schemas/resolve-canvas-inspector-leaf.js +3 -3
  42. package/dist/editor/blocks/index.js +3 -3
  43. package/dist/editor/blocks/migrate-clothing-minimal.js +3 -3
  44. package/dist/editor/blocks/nav-outline-utils.js +2 -2
  45. package/dist/editor/blocks/registry.js +1 -1
  46. package/dist/editor/document/adapter.js +4 -4
  47. package/dist/editor/document/block-tree.js +1 -1
  48. package/dist/editor/document/index.js +6 -6
  49. package/dist/editor/document/validate.js +1 -1
  50. package/dist/editor/index.js +12 -12
  51. package/dist/editor/layout-content-loader.js +3 -3
  52. package/dist/editor/payaza-form/ArrayItemManager.js +2 -2
  53. package/dist/editor/payaza-form/EditorCanvasPreview.js +4 -4
  54. package/dist/editor/payaza-form/FieldRenderer.js +17 -17
  55. package/dist/editor/payaza-form/IframePreviewMessageBridge.js +3 -3
  56. package/dist/editor/payaza-form/PayazaFormEditor.js +29 -29
  57. package/dist/editor/payaza-form/PayazaFormEditorFullPage.js +2 -2
  58. package/dist/editor/payaza-form/SliderArrayEditor.js +2 -2
  59. package/dist/editor/payaza-form/components/ArrayField.js +1 -1
  60. package/dist/editor/payaza-form/components/BlockStylesInspector.js +1 -1
  61. package/dist/editor/payaza-form/components/BlocksField.js +8 -8
  62. package/dist/editor/payaza-form/components/ButtonField.js +3 -3
  63. package/dist/editor/payaza-form/components/CanvasGranularInspector.js +11 -11
  64. package/dist/editor/payaza-form/components/IconField.js +2 -2
  65. package/dist/editor/payaza-form/components/ImageField.js +1 -1
  66. package/dist/editor/payaza-form/components/NumberField.js +1 -1
  67. package/dist/editor/payaza-form/components/RichTextField.js +2 -2
  68. package/dist/editor/payaza-form/components/SectionSchemaInspector.js +3 -3
  69. package/dist/editor/payaza-form/components/StarRatingField.js +1 -1
  70. package/dist/editor/payaza-form/components/TextField.js +1 -1
  71. package/dist/editor/payaza-form/data-merger.js +6 -6
  72. package/dist/editor/payaza-form/data-transformer.js +3 -3
  73. package/dist/editor/payaza-form/engine.js +1 -1
  74. package/dist/editor/payaza-form/examples/custom-widgets.example.js +1 -1
  75. package/dist/editor/payaza-form/index.js +8 -8
  76. package/dist/editor/payaza-form/layout-loader.js +2 -2
  77. package/dist/editor/payaza-form/preview-message-handler.js +3 -3
  78. package/dist/editor/payaza-form/schema-bridge.js +3 -3
  79. package/dist/editor/payaza-form/widget-registry.js +1 -1
  80. package/dist/editor/shared/BlockOutlineTree.js +1 -1
  81. package/dist/editor/shared/EditorHeader.js +1 -1
  82. package/dist/editor/shared/EditorNavigator.js +1 -1
  83. package/dist/editor/shared/IframePreview.js +6 -6
  84. package/dist/editor/shared/InlineCanvasPreview.js +7 -7
  85. package/dist/editor/shared/LayoutRenderer.js +1 -1
  86. package/dist/editor/shared/ResizableSidebar.js +1 -1
  87. package/dist/editor/shared/index.js +7 -7
  88. package/dist/hooks/use-product-reviews.js +1 -1
  89. package/dist/hooks/usePreviewSlideSync.js +1 -1
  90. package/dist/index.js +143 -143
  91. package/dist/layouts/booking/components/BookingHomePage.js +1 -1
  92. package/dist/layouts/booking/components/BookingMultilineHeading.js +1 -1
  93. package/dist/layouts/booking/components/BookingTestimonialCard.js +1 -1
  94. package/dist/layouts/booking/components/booking-footer-defaults.js +2 -2
  95. package/dist/layouts/booking/index.js +8 -8
  96. package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -1
  97. package/dist/layouts/booking/pages/AboutPage.js +16 -7
  98. package/dist/layouts/booking/pages/BookPage.js +1 -1
  99. package/dist/layouts/booking/pages/CategoriesPage.js +2 -2
  100. package/dist/layouts/booking/pages/ProductDetailPage.js +3 -3
  101. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +3 -3
  102. package/dist/layouts/booking-agenda/index.js +8 -8
  103. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -1
  104. package/dist/layouts/booking-agenda/pages/AboutPage.js +16 -7
  105. package/dist/layouts/booking-agenda/pages/CategoriesPage.js +1 -1
  106. package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +3 -3
  107. package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -1
  108. package/dist/layouts/clothing/components/ClothingHomePage.js +13 -12
  109. package/dist/layouts/clothing/index.js +7 -7
  110. package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -1
  111. package/dist/layouts/clothing/pages/AboutPage.js +11 -5
  112. package/dist/layouts/clothing/pages/CategoriesPage.js +9 -9
  113. package/dist/layouts/clothing/pages/CategoryPage.js +7 -7
  114. package/dist/layouts/clothing/pages/ContactPage.js +3 -3
  115. package/dist/layouts/clothing/pages/ProductDetailPage.js +24 -24
  116. package/dist/layouts/clothing/pages/ProductsPage.js +17 -17
  117. package/dist/layouts/clothing/payaza-bindings.js +2 -2
  118. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -1
  119. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +11 -10
  120. package/dist/layouts/clothing-minimal/components/clothing-minimal-block-render.js +7 -7
  121. package/dist/layouts/clothing-minimal/index.js +7 -7
  122. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -1
  123. package/dist/layouts/clothing-minimal/pages/AboutPage.js +12 -5
  124. package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +8 -8
  125. package/dist/layouts/clothing-minimal/pages/CategoryPage.js +7 -7
  126. package/dist/layouts/clothing-minimal/pages/ContactPage.js +3 -3
  127. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +24 -24
  128. package/dist/layouts/clothing-minimal/pages/ProductsPage.js +18 -18
  129. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +3 -3
  130. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts.map +1 -1
  131. package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +4 -3
  132. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -1
  133. package/dist/layouts/electronics/components/ElectronicsHomePage.js +5 -4
  134. package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +2 -2
  135. package/dist/layouts/electronics/components/ElectronicsProductsPage.js +4 -4
  136. package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +1 -1
  137. package/dist/layouts/electronics/index.js +18 -18
  138. package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -1
  139. package/dist/layouts/electronics/pages/AboutPage.js +7 -2
  140. package/dist/layouts/electronics/pages/CategoriesPage.js +1 -1
  141. package/dist/layouts/electronics/pages/ProductDetailPage.js +3 -3
  142. package/dist/layouts/electronics/pages/ProductsPage.js +2 -2
  143. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts.map +1 -1
  144. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +4 -3
  145. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +2 -2
  146. package/dist/layouts/electronics-grid/index.js +14 -14
  147. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -1
  148. package/dist/layouts/electronics-grid/pages/AboutPage.js +7 -2
  149. package/dist/layouts/electronics-grid/pages/CategoriesPage.js +1 -1
  150. package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +3 -3
  151. package/dist/layouts/electronics-grid/pages/ProductsPage.js +2 -2
  152. package/dist/layouts/food/components/FoodHomePage.js +1 -1
  153. package/dist/layouts/food/index.js +8 -8
  154. package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -1
  155. package/dist/layouts/food/pages/AboutPage.js +5 -1
  156. package/dist/layouts/food/pages/CategoriesPage.js +2 -2
  157. package/dist/layouts/food/pages/CategoryPage.js +2 -2
  158. package/dist/layouts/food/pages/ProductDetailPage.js +4 -4
  159. package/dist/layouts/food/pages/ProductsPage.js +2 -2
  160. package/dist/layouts/food-modern/components/FoodHomePageModern.js +3 -3
  161. package/dist/layouts/food-modern/index.js +8 -8
  162. package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -1
  163. package/dist/layouts/food-modern/pages/AboutPage.js +10 -3
  164. package/dist/layouts/food-modern/pages/CategoriesPage.js +1 -1
  165. package/dist/layouts/food-modern/pages/CategoryPage.js +2 -2
  166. package/dist/layouts/food-modern/pages/ProductDetailPage.js +3 -3
  167. package/dist/layouts/food-modern/pages/ProductsPage.js +2 -2
  168. package/dist/layouts/motivational-speaker/components/MotivationalSpeakerPageWrapper.js +1 -1
  169. package/dist/layouts/motivational-speaker/index.js +9 -9
  170. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -1
  171. package/dist/layouts/motivational-speaker/pages/AboutPage.js +9 -2
  172. package/dist/layouts/motivational-speaker/pages/ProductsPage.js +2 -2
  173. package/dist/layouts/shared/about-story-media.d.ts +27 -0
  174. package/dist/layouts/shared/about-story-media.d.ts.map +1 -0
  175. package/dist/layouts/shared/about-story-media.js +46 -0
  176. package/dist/layouts/shared/components/BaseStoreLayout.js +9 -9
  177. package/dist/layouts/shared/components/GenericPageWrapper.js +3 -3
  178. package/dist/layouts/shared/components/PdpVariationSelectors.js +2 -2
  179. package/dist/layouts/shared/components/PromoBanner.js +4 -4
  180. package/dist/layouts/shared/components/StoreCartSheet.js +9 -9
  181. package/dist/layouts/shared/components/StoreFooter.js +9 -9
  182. package/dist/layouts/shared/components/StoreHeader.js +8 -8
  183. package/dist/layouts/shared/components/headers/BookingAgendaSidebar.js +2 -2
  184. package/dist/layouts/shared/components/headers/ClothingMinimalHeader.js +9 -9
  185. package/dist/layouts/shared/components/headers/FoodModernHeader.js +7 -7
  186. package/dist/layouts/shared/index.js +22 -22
  187. package/dist/layouts/shared/pages/StoreMaintenanceScreen.js +2 -2
  188. package/dist/layouts/shared/wrappers/BookingAgendaLayout.js +16 -16
  189. package/dist/layouts/shared/wrappers/ClothingLayout.js +8 -8
  190. package/dist/layouts/shared/wrappers/ClothingMinimalLayout.js +7 -7
  191. package/dist/layouts/shared/wrappers/ElectronicsLayout.js +5 -5
  192. package/dist/layouts/shared/wrappers/FoodModernLayout.js +6 -6
  193. package/dist/layouts/shared/wrappers/MotivationalLayout.js +9 -9
  194. package/dist/layouts/shared/wrappers/StandardLayout.js +8 -8
  195. package/dist/lib/auth-context.js +2 -2
  196. package/dist/lib/layout-config-hydration.js +2 -2
  197. package/dist/lib/product-variation-utils.js +1 -1
  198. package/dist/lib/services/analytics.service.js +1 -1
  199. package/dist/lib/services/auth.service.js +1 -1
  200. package/dist/lib/services/booking.service.js +1 -1
  201. package/dist/lib/services/category.service.js +1 -1
  202. package/dist/lib/services/checkout.service.js +1 -1
  203. package/dist/lib/services/contact.service.js +1 -1
  204. package/dist/lib/services/customer.service.js +1 -1
  205. package/dist/lib/services/fees.service.js +1 -1
  206. package/dist/lib/services/index.js +13 -13
  207. package/dist/lib/services/location.service.js +1 -1
  208. package/dist/lib/services/order.service.js +1 -1
  209. package/dist/lib/services/payment.service.js +1 -1
  210. package/dist/lib/services/product.service.js +1 -1
  211. package/dist/lib/services/promo.service.js +1 -1
  212. package/dist/lib/services/review.service.js +1 -1
  213. package/dist/lib/services/service.service.js +1 -1
  214. package/dist/lib/services/shipping.service.js +1 -1
  215. package/dist/lib/services/store.service.js +1 -1
  216. package/dist/lib/store-config-utils.js +7 -7
  217. package/dist/lib/store-config.js +1 -1
  218. package/dist/lib/store-context.js +12 -12
  219. package/dist/lib/utils/asset-helpers.js +2 -2
  220. package/dist/lib/utils/editor-preview.js +3 -3
  221. package/dist/lib/utils/index.js +3 -3
  222. package/dist/lib/utils/product-images.js +1 -1
  223. package/dist/lib/utils/product-share.js +1 -1
  224. package/dist/lib/utils/url-helpers.js +1 -1
  225. package/dist/preview/LayoutPreview.js +5 -5
  226. package/dist/preview/PreviewRouter.js +2 -2
  227. package/dist/preview/canvas/PreviewCanvasEnhancer.js +8 -8
  228. package/dist/preview/canvas/preview-flush-await.js +1 -1
  229. package/dist/preview/canvas/preview-isolation.js +1 -1
  230. package/dist/preview/canvas/preview-route.js +2 -2
  231. package/dist/preview/index.js +4 -4
  232. package/package.json +30 -31
@@ -1,11 +1,12 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { Users, Award, Heart, Leaf, MapPin, Clock, Mail, ArrowRight } from 'lucide-react';
4
- import { Button } from '../../../components/ui/button';
5
- import { DotPattern } from '../../../components/ui/background-patterns';
6
- import { useStore } from '../../../lib/store-context';
4
+ import { Button } from '../../../components/ui/button.js';
5
+ import { DotPattern } from '../../../components/ui/background-patterns.js';
6
+ import { useStore } from '../../../lib/store-context.js';
7
7
  import Image from 'next/image';
8
8
  import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt.js';
9
+ import { storySectionImage, storySectionLabel, storySectionTitle, storyTeamSubtitle, storyTeamTitle, } from '../../shared/about-story-media.js';
9
10
  export function AboutPage({ storeConfig: initialConfig }) {
10
11
  const { store } = useStore();
11
12
  const storeConfig = store || initialConfig;
@@ -15,8 +16,14 @@ export function AboutPage({ storeConfig: initialConfig }) {
15
16
  // Clothing-minimal-specific hero image
16
17
  const heroImage = aboutConfig?.aboutHeader?.heroImage || aboutConfig?.heroImage || 'https://images.unsplash.com/photo-1558769132-cb1aea458c5e?q=80&w=2074&auto=format&fit=crop';
17
18
  const pageTitle = aboutConfig?.aboutHeader?.title || aboutConfig?.title || "Crafting Experiences, Delivering Joy.";
18
- const pageContent = aboutConfig?.aboutContent?.content || aboutConfig?.content || storeConfig.description;
19
+ const storyConfig = aboutConfig?.aboutContent || aboutConfig;
20
+ const pageContent = storyConfig?.content || aboutConfig?.content || storeConfig.description;
19
21
  const missionStatement = aboutConfig?.aboutHeader?.missionStatement || aboutConfig?.missionStatement || storeConfig.description;
22
+ const storyImage = storySectionImage(storyConfig);
23
+ const storyLabel = storySectionLabel(storyConfig);
24
+ const storyTitle = storySectionTitle(storyConfig);
25
+ const storyCaptionTitle = storyTeamTitle(storyConfig);
26
+ const storyCaptionSubtitle = storyTeamSubtitle(storyConfig);
20
27
  const values = [
21
28
  {
22
29
  icon: Award,
@@ -39,7 +46,7 @@ export function AboutPage({ storeConfig: initialConfig }) {
39
46
  description: "Minimal waste production and plastic-free packaging."
40
47
  }
41
48
  ];
42
- return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [aboutConfig?.aboutHeader?.show !== false && (_jsxs("section", { "data-section": "hero", className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx("p", { className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light", children: missionStatement })] }) }) })] })), aboutConfig?.aboutContent?.show !== false && (_jsxs("section", { "data-section": "story", className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [aboutConfig?.gallerySection && aboutConfig.gallerySection.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: aboutConfig.gallerySection.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500" }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src: "https://images.unsplash.com/photo-1522202176988-66273c2fd55f?q=80&w=2071&auto=format&fit=crop", alt: "Our Team", fill: true, className: "w-full h-full object-cover" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-60" }), _jsxs("div", { className: "absolute bottom-8 left-8 text-white", children: [_jsx("p", { className: "font-bold text-lg", children: "The Dream Team" }), _jsx("p", { className: "text-white/80 text-sm", children: "Working together to serve you better" })] })] })), _jsx("div", { className: "absolute -bottom-6 -right-6 w-24 h-24 bg-white rounded-2xl shadow-xl flex items-center justify-center p-4 animate-bounce duration-[3000ms]", children: _jsx(Heart, { className: "w-10 h-10", style: { color: primaryColor, fill: primaryColor } }) })] }), _jsxs("div", { className: "space-y-10", children: [_jsxs("div", { children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-widest mb-3 block", style: { color: primaryColor }, children: "Who We Are" }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: "Our Journey" }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", children: [pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))), !pageContent && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Founded with a bold vision to redefine excellence in the ", _jsx("span", { className: "font-semibold text-gray-900", children: storeConfig.type }), " industry, ", storeConfig.name, " has grown from a small passion project into a beloved brand. We believe in the power of quality, innovation, and community."] }), _jsx("p", { children: "Every day, we strive to bring you the best products, curated with care and delivered with a smile. Our team is dedicated to ensuring that your experience with us is nothing short of exceptional." })] }))] })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: values.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "w-14 h-14 rounded-2xl flex items-center justify-center transition-colors group-hover:bg-gray-100", style: { backgroundColor: `${primaryColor}10` }, children: _jsx(item.icon, { className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2 text-lg", children: item.title }), _jsx(RichTextExcerpt, { value: item.description, as: "p", className: "text-gray-600 text-sm leading-relaxed" })] })] }, idx))) })] })] }) })] })), aboutConfig?.statsSection?.show !== false && (_jsxs("section", { "data-section": "stats", className: "py-20 relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-10", children: _jsx(DotPattern, { color: primaryColor, cx: 2, cy: 2, cr: 2, width: 30, height: 30 }) }), _jsx("div", { className: "absolute inset-0", style: { backgroundColor: `${secondaryColor}15` } }), _jsx("div", { className: "container mx-auto px-4 relative z-10", children: _jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12", children: [
49
+ return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [aboutConfig?.aboutHeader?.show !== false && (_jsxs("section", { "data-section": "hero", className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx("p", { className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light", children: missionStatement })] }) }) })] })), aboutConfig?.aboutContent?.show !== false && (_jsxs("section", { "data-section": "story", className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [aboutConfig?.gallerySection && aboutConfig.gallerySection.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: aboutConfig.gallerySection.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500" }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src: storyImage, alt: storyCaptionTitle, fill: true, className: "w-full h-full object-cover" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-60" }), _jsxs("div", { className: "absolute bottom-8 left-8 text-white", children: [_jsx("p", { className: "font-bold text-lg", children: storyCaptionTitle }), _jsx("p", { className: "text-white/80 text-sm", children: storyCaptionSubtitle })] })] })), _jsx("div", { className: "absolute -bottom-6 -right-6 w-24 h-24 bg-white rounded-2xl shadow-xl flex items-center justify-center p-4 animate-bounce duration-[3000ms]", children: _jsx(Heart, { className: "w-10 h-10", style: { color: primaryColor, fill: primaryColor } }) })] }), _jsxs("div", { className: "space-y-10", children: [_jsxs("div", { children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-widest mb-3 block", style: { color: primaryColor }, children: "Who We Are" }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: "Our Journey" }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", children: [pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))), !pageContent && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Founded with a bold vision to redefine excellence in the ", _jsx("span", { className: "font-semibold text-gray-900", children: storeConfig.type }), " industry, ", storeConfig.name, " has grown from a small passion project into a beloved brand. We believe in the power of quality, innovation, and community."] }), _jsx("p", { children: "Every day, we strive to bring you the best products, curated with care and delivered with a smile. Our team is dedicated to ensuring that your experience with us is nothing short of exceptional." })] }))] })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: values.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "w-14 h-14 rounded-2xl flex items-center justify-center transition-colors group-hover:bg-gray-100", style: { backgroundColor: `${primaryColor}10` }, children: _jsx(item.icon, { className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2 text-lg", children: item.title }), _jsx(RichTextExcerpt, { value: item.description, as: "p", className: "text-gray-600 text-sm leading-relaxed" })] })] }, idx))) })] })] }) })] })), aboutConfig?.statsSection?.show !== false && (_jsxs("section", { "data-section": "stats", className: "py-20 relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-10", children: _jsx(DotPattern, { color: primaryColor, cx: 2, cy: 2, cr: 2, width: 30, height: 30 }) }), _jsx("div", { className: "absolute inset-0", style: { backgroundColor: `${secondaryColor}15` } }), _jsx("div", { className: "container mx-auto px-4 relative z-10", children: _jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12", children: [
43
50
  { label: "Happy Shoppers", value: "12k+" },
44
51
  { label: "Active Designs", value: storeConfig.products?.length ? `${storeConfig.products.length}+` : "60+" },
45
52
  { label: "Countries Served", value: "30+" },
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Breadcrumbs } from '../../../components/ui/breadcrumbs';
4
- import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
5
- import { useStore } from '../../../lib/store-context';
6
- import { isEditorPreviewMode, resolveStoreCategoriesForDisplay } from '../../../lib/utils/editor-preview';
7
- import { useCatalogLoader } from '../../../hooks/use-catalog-loader';
8
- import { encodePayazaFieldKey } from '../../../preview/canvas/field-key';
9
- import { CategoryMasonryGrid } from '../../../components/categories/category-masonry-grid';
10
- import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml';
3
+ import { Breadcrumbs } from '../../../components/ui/breadcrumbs.js';
4
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback.js';
5
+ import { useStore } from '../../../lib/store-context.js';
6
+ import { isEditorPreviewMode, resolveStoreCategoriesForDisplay } from '../../../lib/utils/editor-preview.js';
7
+ import { useCatalogLoader } from '../../../hooks/use-catalog-loader.js';
8
+ import { encodePayazaFieldKey } from '../../../preview/canvas/field-key.js';
9
+ import { CategoryMasonryGrid } from '../../../components/categories/category-masonry-grid.js';
10
+ import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml.js';
11
11
  export function ClothingMinimalCategoriesPage({ storeConfig: initialConfig }) {
12
12
  const { store } = useStore();
13
13
  const storeConfig = store || initialConfig;
@@ -1,16 +1,16 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useCategoryProducts } from '../../../hooks/use-category-products.js';
4
- import { Button } from '../../../components/ui/button';
5
- import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
6
- import { useStore } from '../../../lib/store-context';
4
+ import { Button } from '../../../components/ui/button.js';
5
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback.js';
6
+ import { useStore } from '../../../lib/store-context.js';
7
7
  import { ArrowLeft, Filter } from 'lucide-react';
8
8
  import Link from 'next/link';
9
- import { useToast } from '../../../components/ui/toast';
10
- import { useAnalytics } from '../../../hooks/use-analytics';
9
+ import { useToast } from '../../../components/ui/toast.js';
10
+ import { useAnalytics } from '../../../hooks/use-analytics.js';
11
11
  import { useEffect } from 'react';
12
- import { ProductCard } from '../../../components/ui/product-card';
13
- import { CategoryDescription } from '../../../components/rich-text/CategoryDescription';
12
+ import { ProductCard } from '../../../components/ui/product-card.js';
13
+ import { CategoryDescription } from '../../../components/rich-text/CategoryDescription.js';
14
14
  export function CategoryPage({ storeConfig: initialConfig, categorySlug, categoryProductsSeed }) {
15
15
  const { store, addToCart } = useStore();
16
16
  const storeConfig = store || initialConfig;
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState } from 'react';
4
- import { Button } from '../../../components/ui/button';
4
+ import { Button } from '../../../components/ui/button.js';
5
5
  import { Mail, Phone, MapPin, Clock, Send, MessageSquare, CheckCircle } from 'lucide-react';
6
- import { useStore } from '../../../lib/store-context';
6
+ import { useStore } from '../../../lib/store-context.js';
7
7
  import Image from 'next/image';
8
- import { submitContact } from '../../../lib/services/contact.service';
8
+ import { submitContact } from '../../../lib/services/contact.service.js';
9
9
  export function ContactPage({ storeConfig: initialConfig }) {
10
10
  const { store } = useStore();
11
11
  const storeConfig = store || initialConfig;
@@ -2,34 +2,34 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useProductBySlug } from '../../../hooks/use-product-by-slug.js';
4
4
  import { useProductReviews } from '../../../hooks/use-product-reviews.js';
5
- import { Button } from '../../../components/ui/button';
6
- import { Breadcrumbs } from '../../../components/ui/breadcrumbs';
7
- import { Modal } from '../../../components/ui/modal';
5
+ import { Button } from '../../../components/ui/button.js';
6
+ import { Breadcrumbs } from '../../../components/ui/breadcrumbs.js';
7
+ import { Modal } from '../../../components/ui/modal.js';
8
8
  import { ShoppingCart, Heart, Star, CheckCircle, ThumbsUp, User, Minus, Plus, Share2, Info } from 'lucide-react';
9
9
  import { useState, useMemo, useEffect, useCallback } from 'react';
10
- import { useStore } from '../../../lib/store-context';
11
- import { useToast } from '../../../components/ui/toast';
10
+ import { useStore } from '../../../lib/store-context.js';
11
+ import { useToast } from '../../../components/ui/toast.js';
12
12
  import { useRouter } from 'next/navigation';
13
- import { useAuth } from '../../../lib/auth-context';
14
- import { useAnalytics } from '../../../hooks/use-analytics';
15
- import { customerService } from '../../../lib/services/customer.service';
16
- import { GuestCheckoutModal } from '../../../components/ui/guest-checkout-modal';
17
- import { getGuestUserInfo, saveGuestUserInfo } from '../../../lib/guest-user';
18
- import { ProductCard } from '../../../components/ui/product-card';
13
+ import { useAuth } from '../../../lib/auth-context.js';
14
+ import { useAnalytics } from '../../../hooks/use-analytics.js';
15
+ import { customerService } from '../../../lib/services/customer.service.js';
16
+ import { GuestCheckoutModal } from '../../../components/ui/guest-checkout-modal.js';
17
+ import { getGuestUserInfo, saveGuestUserInfo } from '../../../lib/guest-user.js';
18
+ import { ProductCard } from '../../../components/ui/product-card.js';
19
19
  import Image from 'next/image';
20
- import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
21
- import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml';
22
- import { ButtonLoader } from '../../../components/ui/page-loader';
23
- import { extractImageUrls } from '../../../lib/store-config-utils';
24
- import { OutOfStockOverlay } from '../../../components/ui/out-of-stock-overlay';
25
- import { cn, formatCurrency, filterActiveProducts, isEditorPreviewMode, resolvePdpProduct } from '../../../lib/utils';
26
- import { usePdpVariation } from '../../../hooks/use-pdp-variation';
27
- import { buildPdpBuyNowItem } from '../../../lib/pdp-cart-actions';
28
- import { assertVariationSelected } from '../../../lib/product-variation-utils';
29
- import { shippingService } from '../../../lib/services/shipping.service';
30
- import { ProductDeliveryInfoSection } from '../../../components/shipping/ProductDeliveryInfoSection';
31
- import { PdpVariationSelectors } from '../../shared/components/PdpVariationSelectors';
32
- import { formatDateSafe } from '../../../utils/date';
20
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback.js';
21
+ import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml.js';
22
+ import { ButtonLoader } from '../../../components/ui/page-loader.js';
23
+ import { extractImageUrls } from '../../../lib/store-config-utils.js';
24
+ import { OutOfStockOverlay } from '../../../components/ui/out-of-stock-overlay.js';
25
+ import { cn, formatCurrency, filterActiveProducts, isEditorPreviewMode, resolvePdpProduct } from '../../../lib/utils/index.js';
26
+ import { usePdpVariation } from '../../../hooks/use-pdp-variation.js';
27
+ import { buildPdpBuyNowItem } from '../../../lib/pdp-cart-actions.js';
28
+ import { assertVariationSelected } from '../../../lib/product-variation-utils.js';
29
+ import { shippingService } from '../../../lib/services/shipping.service.js';
30
+ import { ProductDeliveryInfoSection } from '../../../components/shipping/ProductDeliveryInfoSection.js';
31
+ import { PdpVariationSelectors } from '../../shared/components/PdpVariationSelectors.js';
32
+ import { formatDateSafe } from '../../../utils/date.js';
33
33
  // Helper function to format date
34
34
  const formatDate = (dateString) => {
35
35
  return formatDateSafe(dateString, '—', { year: 'numeric', month: 'long', day: 'numeric' });
@@ -1,32 +1,32 @@
1
1
  'use client';
2
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';
3
+ import { Button } from '../../../components/ui/button.js';
4
+ import { Breadcrumbs } from '../../../components/ui/breadcrumbs.js';
5
+ import { Sheet } from '../../../components/ui/sheet.js';
6
+ import { ImageWithFallback } from '../../../components/ui/image-with-fallback.js';
7
+ import { ProductCard } from '../../../components/ui/product-card.js';
8
+ import { ProductGridSkeleton } from '../../../components/ui/skeletons/index.js';
9
+ import { CategoryTree } from '../../../components/ui/category-tree.js';
10
+ import { useStore } from '../../../lib/store-context.js';
11
+ import { useToast } from '../../../components/ui/toast.js';
12
+ import { useLoading } from '../../../lib/loading-context.js';
13
+ import { useAnalytics } from '../../../hooks/use-analytics.js';
14
14
  import { ChevronDown, ChevronUp, Star, Check, Search, RotateCcw, SlidersHorizontal } from 'lucide-react';
15
15
  import { useSearchParams } from 'next/navigation';
16
16
  import { useState, useMemo, useEffect, Suspense } from 'react';
17
17
  import { useProductBrands } from '../../../hooks/use-product-brands.js';
18
18
  import { useFilteredProductsFetch } from '../../../hooks/use-filtered-products-fetch.js';
19
- import { filterActiveProducts } from '../../../lib/utils';
20
- import { getAllCategoryIds, flattenCategoryTree, buildCategoryTree } from '../../../lib/utils/category-tree';
21
- import { getBannerImage, getLayoutText } from '../../../lib/utils/asset-helpers';
22
- import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml';
23
- import { shouldUseAPI } from '../../../lib/utils/demo-detection';
24
- import { productCategoryFilterChipClass } from '../../shared/product-category-filter-chip';
19
+ import { filterActiveProducts } from '../../../lib/utils/index.js';
20
+ import { getAllCategoryIds, flattenCategoryTree, buildCategoryTree } from '../../../lib/utils/category-tree.js';
21
+ import { getBannerImage, getLayoutText } from '../../../lib/utils/asset-helpers.js';
22
+ import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml.js';
23
+ import { shouldUseAPI } from '../../../lib/utils/demo-detection.js';
24
+ import { productCategoryFilterChipClass } from '../../shared/product-category-filter-chip.js';
25
25
  import { useCatalogPriceRange } from '../../../hooks/use-catalog-price-range.js';
26
26
  import { getApiPriceFilterActive, isWithinActivePriceRange } from '../../../lib/utils/catalog-price-bounds.js';
27
27
  import { buildFilteredProductQuery, getFilteredProductQueryKey, productMatchesCategoryIds, productMatchesCategorySlug, } from '../../../lib/utils/filtered-product-query.js';
28
28
  import { transformProductToStoreProduct } from '../../../lib/store-config-utils.js';
29
- import { ProductPriceFilterSection } from '../../shared/components/ProductPriceFilterSection';
29
+ import { ProductPriceFilterSection } from '../../shared/components/ProductPriceFilterSection.js';
30
30
  function ProductsPageContent({ storeConfig: initialConfig }) {
31
31
  const { store, addToCart } = useStore();
32
32
  const storeConfig = store || initialConfig;
@@ -5,10 +5,10 @@ import { Breadcrumbs } from '../../../components/ui/breadcrumbs.js';
5
5
  import { useStore } from '../../../lib/store-context.js';
6
6
  import { useCatalogLoader } from '../../../hooks/use-catalog-loader.js';
7
7
  import { isEditorPreviewMode, resolveStoreCategoriesForDisplay } from '../../../lib/utils/index.js';
8
- import { ElectronicsStoreHeader } from './ElectronicsStoreHeader';
9
- import { ElectronicsStoreFooter } from './ElectronicsStoreFooter';
8
+ import { ElectronicsStoreHeader } from './ElectronicsStoreHeader.js';
9
+ import { ElectronicsStoreFooter } from './ElectronicsStoreFooter.js';
10
10
  import { motion } from 'framer-motion';
11
- import { CategoryMasonryGrid } from '../../../components/categories/category-masonry-grid';
11
+ import { CategoryMasonryGrid } from '../../../components/categories/category-masonry-grid.js';
12
12
  function getCategoryIcon(slug) {
13
13
  if (slug.includes('phone'))
14
14
  return _jsx(Smartphone, { className: "h-6 w-6" });
@@ -1 +1 @@
1
- {"version":3,"file":"ElectronicsGridProductCard.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsGridProductCard.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBjD,UAAU,+BAA+B;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,0BAA0B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,+BAA+B,+BA8QrH"}
1
+ {"version":3,"file":"ElectronicsGridProductCard.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsGridProductCard.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBjD,UAAU,+BAA+B;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,0BAA0B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,+BAA+B,+BA8QrH"}
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { hasValidCompareAtPrice } from '../../../utils/price-display.js';
3
4
  import { Button } from '../../../components/ui/button.js';
4
5
  import { ImageWithFallback } from '../../../components/ui/image-with-fallback.js';
5
6
  import { ProductRating } from '../../../components/ui/product-rating.js';
@@ -36,7 +37,7 @@ export function ElectronicsGridProductCard({ product, storeSlug, onAddToCart, in
36
37
  startPageLoading(`/${storeSlug}/products/${product.slug}`);
37
38
  };
38
39
  // Discount calculation
39
- const discountPercentage = product.compareAtPrice != null && product.compareAtPrice > product.price
40
+ const discountPercentage = hasValidCompareAtPrice(product.price, product.compareAtPrice)
40
41
  ? Math.round(((product.compareAtPrice - product.price) / product.compareAtPrice) * 100)
41
42
  : 0;
42
43
  const handleWishlistClick = async (e) => {
@@ -105,7 +106,7 @@ export function ElectronicsGridProductCard({ product, storeSlug, onAddToCart, in
105
106
  : "text-gray-400 bg-white/95 hover:text-red-500 hover:bg-red-50/50 hover:scale-110"), title: inWishlist ? "Remove from wishlist" : "Add to wishlist", "aria-label": inWishlist ? "Remove from wishlist" : "Add to wishlist", children: isLoading ? (_jsx(ButtonLoader, { className: inWishlist ? "text-red-500" : "text-gray-400" })) : (_jsx(motion.div, { animate: {
106
107
  scale: justAdded ? [1, 1.2, 1] : 1,
107
108
  rotate: justAdded ? [0, 10, -10, 0] : 0
108
- }, transition: { duration: 0.4, ease: "easeOut" }, children: _jsx(Heart, { className: cn("w-5 h-5 transition-all", inWishlist && "fill-current", justAdded && "text-red-500 fill-current") }) })) }), _jsx("div", { className: "absolute top-4 left-4 z-20 flex flex-col gap-2", children: product.compareAtPrice != null && product.compareAtPrice > product.price && (_jsxs("span", { className: "bg-slate-900 text-white text-[10px] font-bold px-3 py-1.5 rounded-full tracking-wide", children: ["-", discountPercentage, "%"] })) }), _jsx("div", { className: "hidden lg:block absolute inset-x-4 bottom-4 z-20 translate-y-full group-hover:translate-y-0 transition-transform duration-300 ease-out opacity-0 group-hover:opacity-100", children: _jsxs(Button, { onClick: (e) => {
109
+ }, transition: { duration: 0.4, ease: "easeOut" }, children: _jsx(Heart, { className: cn("w-5 h-5 transition-all", inWishlist && "fill-current", justAdded && "text-red-500 fill-current") }) })) }), _jsx("div", { className: "absolute top-4 left-4 z-20 flex flex-col gap-2", children: hasValidCompareAtPrice(product.price, product.compareAtPrice) && (_jsxs("span", { className: "bg-slate-900 text-white text-[10px] font-bold px-3 py-1.5 rounded-full tracking-wide", children: ["-", discountPercentage, "%"] })) }), _jsx("div", { className: "hidden lg:block absolute inset-x-4 bottom-4 z-20 translate-y-full group-hover:translate-y-0 transition-transform duration-300 ease-out opacity-0 group-hover:opacity-100", children: _jsxs(Button, { onClick: (e) => {
109
110
  e.preventDefault();
110
111
  if (!isOutOfStock) {
111
112
  onAddToCart(product);
@@ -118,5 +119,5 @@ export function ElectronicsGridProductCard({ product, storeSlug, onAddToCart, in
118
119
  }, children: _jsx(Plus, { className: "w-5 h-5" }) })] }), _jsxs("div", { className: "p-6 flex flex-col gap-2", children: [_jsxs("div", { className: "flex justify-between items-start gap-2", children: [_jsxs("div", { children: [_jsx("p", { className: "text-xs font-normal text-gray-400 uppercase tracking-wide mb-1.5", children: product.specifications?.Brand || 'Brand' }), _jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, className: "group/title", onClick: () => {
119
120
  trackProductClick();
120
121
  startPageLoading(`/${storeSlug}/products/${product.slug}`);
121
- }, children: _jsx("h3", { className: "font-normal text-gray-900 text-base leading-tight hover:text-gray-600 transition-colors line-clamp-1", children: product.name }) })] }), _jsx(ProductRating, { rating: product.rating, reviewCount: product.reviewCount, size: "sm", showReviewCount: false, className: "shrink-0" })] }), _jsxs("div", { className: "flex items-baseline gap-2 mt-2", children: [_jsx("span", { className: "text-lg font-medium text-gray-900", children: formatCurrency(product.price, product.currency || 'USD') }), product.compareAtPrice != null && product.compareAtPrice > product.price && (_jsx("span", { className: "text-sm text-gray-400 line-through font-normal", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') }))] })] })] }));
122
+ }, children: _jsx("h3", { className: "font-normal text-gray-900 text-base leading-tight hover:text-gray-600 transition-colors line-clamp-1", children: product.name }) })] }), _jsx(ProductRating, { rating: product.rating, reviewCount: product.reviewCount, size: "sm", showReviewCount: false, className: "shrink-0" })] }), _jsxs("div", { className: "flex items-baseline gap-2 mt-2", children: [_jsx("span", { className: "text-lg font-medium text-gray-900", children: formatCurrency(product.price, product.currency || 'USD') }), hasValidCompareAtPrice(product.price, product.compareAtPrice) && (_jsx("span", { className: "text-sm text-gray-400 line-through font-normal", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') }))] })] })] }));
122
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ElectronicsHomePage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsHomePage.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAgB9D,UAAU,wBAAwB;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,wBAAwB,+BAgd3F"}
1
+ {"version":3,"file":"ElectronicsHomePage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsHomePage.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAgB9D,UAAU,wBAAwB;IAC/B,WAAW,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,wBAAwB,+BAgd3F"}
@@ -1,19 +1,20 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { hasValidCompareAtPrice } from '../../../utils/price-display.js';
3
4
  import { useFeaturedProducts } from '../../../hooks/use-featured-products.js';
4
5
  import { Button } from '../../../components/ui/button.js';
5
6
  import { ImageWithFallback } from '../../../components/ui/image-with-fallback.js';
6
7
  import { ArrowRight, ShoppingCart, Zap, Shield, Smartphone, Laptop, Headphones, Watch, Camera, Cpu, Battery, Wifi } from 'lucide-react';
7
8
  import Link from 'next/link';
8
- import { ElectronicsStoreHeader } from './ElectronicsStoreHeader';
9
- import { ElectronicsStoreFooter } from './ElectronicsStoreFooter';
9
+ import { ElectronicsStoreHeader } from './ElectronicsStoreHeader.js';
10
+ import { ElectronicsStoreFooter } from './ElectronicsStoreFooter.js';
10
11
  import { motion, useScroll, useTransform } from 'framer-motion';
11
12
  import { useRef, useState } from 'react';
12
13
  import { useStore } from '../../../lib/store-context.js';
13
14
  import { useToast } from '../../../components/ui/toast.js';
14
15
  import { formatCurrency, filterActiveProducts } from '../../../lib/utils/index.js';
15
16
  import { getLayoutText } from '../../../lib/utils/asset-helpers.js';
16
- import { PromoBanner } from '../../shared/components/PromoBanner';
17
+ import { PromoBanner } from '../../shared/components/PromoBanner.js';
17
18
  import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml.js';
18
19
  export function ElectronicsHomePage({ storeConfig: initialConfig }) {
19
20
  const { store, addToCart } = useStore();
@@ -95,7 +96,7 @@ export function ElectronicsHomePage({ storeConfig: initialConfig }) {
95
96
  return (_jsxs("div", { className: "min-h-screen bg-slate-50 text-slate-900 font-sans selection:bg-blue-600 selection:text-white", children: [_jsx(ElectronicsStoreHeader, { storeConfig: storeConfig }), layout?.hero?.show !== false && (_jsxs("section", { "data-section": "hero", ref: targetRef, className: "relative min-h-screen flex items-center pt-20 overflow-hidden bg-slate-950", children: [_jsxs("div", { className: "absolute inset-0 overflow-hidden pointer-events-none", children: [_jsx("div", { className: "absolute top-[-10%] right-[-5%] w-[600px] h-[600px] bg-blue-600/20 rounded-full blur-[120px]" }), _jsx("div", { className: "absolute bottom-[-10%] left-[-5%] w-[500px] h-[500px] bg-indigo-600/20 rounded-full blur-[100px]" }), _jsx("div", { className: "absolute top-[20%] left-[20%] w-[300px] h-[300px] bg-cyan-500/10 rounded-full blur-[80px]" })] }), _jsx("div", { className: "container mx-auto px-6 relative z-10 py-20", children: _jsxs("div", { className: "grid lg:grid-cols-2 gap-16 items-center", children: [_jsxs(MotionDiv, { style: { opacity, scale }, className: "space-y-8 relative z-20", children: [layout?.hero?.showBadges !== false && (_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-slate-900/50 border border-slate-800 text-blue-400 text-xs font-bold uppercase tracking-wider backdrop-blur-md", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-blue-500 animate-pulse" }), layout?.sections?.hero?.badge || getLayoutText(storeConfig, 'electronics.newArrivals', 'Next Gen • 2025 Series')] })), _jsxs("h1", { className: "text-4xl sm:text-6xl md:text-7xl lg:text-8xl font-black tracking-tighter leading-[0.9] text-white", children: [layout?.sections?.hero?.title || getLayoutText(storeConfig, 'hero.title', 'Future Realized'), " ", _jsx("br", {}), _jsx("span", { className: "text-transparent bg-clip-text bg-gradient-to-r from-blue-400 via-indigo-400 to-cyan-400", children: "Realized." })] }), _jsx("div", { className: "lg:hidden w-full max-w-[300px] mx-auto py-8", children: _jsx("div", { className: "relative aspect-square bg-gradient-to-br from-slate-800/50 to-slate-900/50 rounded-3xl p-6 border border-slate-700/30", children: _jsx(ImageWithFallback, { src: products[0]?.images?.[0], alt: "Hero Product", className: "w-full h-full object-contain drop-shadow-2xl", skeletonAspectRatio: "square" }) }) }), _jsx(SafeRichHtml, { value: layout?.sections?.hero?.subtitle || `${storeConfig.description || ''} Experience the pinnacle of engineering with our curated collection of premium electronics.`, as: "div", className: "text-lg text-slate-400 max-w-xl leading-relaxed font-medium [&_p]:mb-0" }), _jsxs("div", { className: "flex flex-wrap items-center gap-4 pt-4", children: [layout?.hero?.showCTA !== false && (_jsx(Link, { href: `/${storeConfig.slug}/products`, children: _jsxs(Button, { className: "h-14 px-10 rounded-full bg-blue-600 hover:bg-blue-500 text-white font-bold text-lg transition-all hover:scale-105 shadow-[0_0_40px_-10px_rgba(59,130,246,0.5)] border-0 ring-0", children: [layout?.sections?.hero?.primaryCTA || getLayoutText(storeConfig, 'common.shopNow', 'Shop Now'), " ", _jsx(ArrowRight, { className: "ml-2 h-5 w-5" })] }) })), layout?.sections?.featuredProducts?.show !== false && (_jsxs("div", { className: "flex items-center gap-4 text-slate-400 text-sm font-medium ml-4", children: [_jsx("div", { className: "flex -space-x-3", children: [1, 2, 3].map(i => (_jsx("div", { className: "w-10 h-10 rounded-full border-2 border-slate-950 bg-slate-800 flex items-center justify-center text-xs text-white", children: _jsx("span", { className: "sr-only", children: "User" }) }, i))) }), _jsxs("div", { children: [_jsx("p", { className: "text-white font-bold", children: getLayoutText(storeConfig, 'common.account', '10k+ Happy') }), _jsx("p", { children: getLayoutText(storeConfig, 'common.account', 'Customers') })] })] }))] })] }), _jsx("div", { className: "relative h-[600px] hidden lg:block perspective-1000", children: _jsxs(MotionDiv, { initial: { opacity: 0, x: 100, rotateY: -20 }, animate: { opacity: 1, x: 0, rotateY: 0 }, transition: { duration: 1, ease: "easeOut" }, className: "relative z-10 w-full h-full", children: [_jsxs("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[400px] h-[500px] bg-gradient-to-br from-slate-800/80 to-slate-900/80 backdrop-blur-xl rounded-[3rem] border border-slate-700/50 p-8 shadow-2xl shadow-blue-900/20 transform rotate-[-6deg] hover:rotate-0 transition-transform duration-700", children: [_jsx("div", { className: "absolute top-8 right-8", children: _jsx(Zap, { className: "text-blue-500 w-8 h-8" }) }), _jsx(ImageWithFallback, { src: products[0]?.images?.[0], alt: "Hero Product", className: "w-full h-3/4 object-contain drop-shadow-[0_20px_50px_rgba(0,0,0,0.5)]", skeletonAspectRatio: "square" }), _jsx("div", { className: "absolute bottom-8 left-8 right-8", children: _jsxs("div", { className: "flex justify-between items-end", children: [_jsxs("div", { children: [_jsx("p", { className: "text-blue-400 font-bold text-sm mb-1", children: "New Arrival" }), _jsx("h3", { className: "text-white text-2xl font-bold", children: products[0]?.name })] }), _jsx("div", { className: "text-right", children: _jsx("p", { className: "text-white text-2xl font-bold", children: formatCurrency(products[0]?.price || 0, products[0]?.currency || storeConfig?.settings?.currency || 'USD') }) })] }) })] }), _jsx(MotionDiv, { animate: { y: [0, -20, 0] }, transition: { repeat: Infinity, duration: 6, ease: "easeInOut" }, className: "absolute top-20 right-10 bg-white/10 backdrop-blur-md p-4 rounded-2xl border border-white/10", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "bg-green-500/20 p-2 rounded-lg", children: _jsx(Battery, { className: "text-green-400 w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-xs text-slate-400", children: "Battery Life" }), _jsx("p", { className: "text-sm font-bold text-white", children: "24 Hours" })] })] }) }), _jsx(MotionDiv, { animate: { y: [0, 20, 0] }, transition: { repeat: Infinity, duration: 5, ease: "easeInOut", delay: 1 }, className: "absolute bottom-40 left-0 bg-white/10 backdrop-blur-md p-4 rounded-2xl border border-white/10", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "bg-blue-500/20 p-2 rounded-lg", children: _jsx(Wifi, { className: "text-blue-400 w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-xs text-slate-400", children: "Connectivity" }), _jsx("p", { className: "text-sm font-bold text-white", children: "5G Ultra" })] })] }) })] }) })] }) })] })), layout?.sections?.brands?.show !== false && (_jsx("div", { "data-section": "brands", className: "bg-slate-950 border-y border-slate-900 overflow-hidden py-10", children: _jsx("div", { className: "flex gap-16 items-center animate-scroll whitespace-nowrap opacity-50 hover:opacity-100 transition-opacity duration-300", children: [...Array(2)].map((_, i) => (_jsx("div", { className: "flex gap-16 items-center", children: ['SONY', 'SAMSUNG', 'APPLE', 'DELL', 'LG', 'ASUS', 'HP', 'BOSE', 'CANON', 'NIKON'].map((brand) => (_jsx("span", { className: "text-3xl font-black text-slate-800 tracking-tight hover:text-slate-600 transition-colors cursor-default select-none", children: brand }, brand))) }, i))) }) })), layout?.sections?.categories?.show !== false && (_jsx("section", { "data-section": "categories", className: "py-16 md:py-32 bg-slate-50", children: _jsxs("div", { className: "container mx-auto px-6", children: [_jsxs("div", { className: "flex justify-between items-end mb-10 md:mb-16", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-4xl font-bold mb-4 text-slate-900 tracking-tight", children: "Ecosystems" }), _jsx("p", { className: "text-lg text-slate-500", children: "Curated collections for every aspect of your digital life." })] }), layout?.sections?.categories?.showViewAll !== false && (_jsxs(Link, { href: `/${storeConfig.slug}/categories`, className: "flex items-center gap-2 text-blue-600 font-bold hover:gap-3 transition-all", children: ["View All ", _jsx(ArrowRight, { className: "h-5 w-5" })] }))] }), categories.length === 0 ? (_jsxs("div", { className: "text-center py-20 bg-white rounded-2xl border border-slate-200", children: [_jsx("h3", { className: "text-xl font-semibold text-slate-900 mb-2", children: "No categories available" }), _jsx("p", { className: "text-slate-500", children: "Categories will appear here once they are added to the store." })] })) : (_jsx("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-6 auto-rows-[300px]", children: categories.slice(0, layout?.sections?.categories?.limit || 5).map((category, idx) => {
96
97
  const isLarge = idx === 0 || idx === 3;
97
98
  return (_jsxs(Link, { href: `/${storeConfig.slug}/categories/${category.slug}`, className: `group relative overflow-hidden rounded-[2.5rem] bg-white shadow-sm border border-slate-100 hover:shadow-2xl hover:shadow-blue-500/10 transition-all duration-500 ${isLarge ? 'md:col-span-2' : 'md:col-span-1'}`, children: [_jsx(ImageWithFallback, { src: category.image, alt: category.name, className: "absolute inset-0 w-full h-full object-cover transition-transform duration-700 group-hover:scale-105", skeletonAspectRatio: "auto" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-slate-950/80 via-slate-950/20 to-transparent opacity-80 group-hover:opacity-90 transition-opacity" }), _jsxs("div", { className: "absolute bottom-0 left-0 p-8 w-full", children: [_jsx("div", { className: "mb-3 text-white/80 group-hover:text-blue-400 transition-colors", children: getCategoryIcon(category.slug) }), _jsx("h3", { className: `font-bold text-white mb-2 ${isLarge ? 'text-3xl' : 'text-xl'}`, children: category.name }), _jsx("div", { className: "w-10 h-1 bg-blue-500 rounded-full transform scale-x-0 group-hover:scale-x-100 transition-transform origin-left duration-300" })] })] }, idx));
98
- }) }))] }) })), layout?.sections?.featuredProducts?.show !== false && (_jsx("section", { "data-section": "featuredProducts", className: "py-16 md:py-32 bg-white relative overflow-hidden", children: _jsxs("div", { className: "container mx-auto px-6 relative z-10", children: [_jsxs("div", { className: "flex flex-col md:flex-row justify-between items-end mb-8 md:mb-12 gap-6", children: [_jsxs("div", { className: "max-w-2xl", children: [_jsx("span", { className: "text-blue-600 font-bold tracking-widest text-xs uppercase mb-3 block", children: "Latest Drops" }), _jsx("h2", { className: "text-4xl md:text-5xl font-bold text-slate-900 tracking-tight", children: layout?.sections?.featuredProducts?.title || "Performance Redefined" })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "outline", size: "icon", onClick: scrollLeft, className: "rounded-full border-slate-200 hover:bg-slate-100 hover:text-slate-900", children: _jsx(ArrowRight, { className: "h-5 w-5 rotate-180" }) }), _jsx(Button, { variant: "outline", size: "icon", onClick: scrollRight, className: "rounded-full border-slate-200 hover:bg-slate-100 hover:text-slate-900", children: _jsx(ArrowRight, { className: "h-5 w-5" }) })] })] }), _jsx("div", { ref: scrollContainerRef, className: "flex overflow-x-auto snap-x snap-mandatory gap-8 pb-12 -mx-6 px-6 scrollbar-hide", children: products.map((product) => (_jsxs("div", { className: "min-w-[280px] md:min-w-[320px] snap-center group", children: [_jsxs("div", { className: "relative aspect-[4/5] bg-slate-50 rounded-[2.5rem] overflow-hidden mb-6 border border-slate-100", children: [_jsx("div", { className: "absolute top-4 left-4 z-20", children: product.compareAtPrice != null && product.compareAtPrice > product.price && (_jsx("span", { className: "bg-slate-900 text-white text-[10px] font-bold px-3 py-1.5 rounded-full", children: "SALE" })) }), layout?.sections?.featuredProducts?.showAddToCart !== false && (_jsx("div", { className: "absolute top-4 right-4 z-20 opacity-0 group-hover:opacity-100 transition-opacity", children: _jsx(Button, { size: "icon", onClick: (e) => handleAddToCart(e, product), className: "rounded-full bg-white text-slate-900 hover:bg-blue-600 hover:text-white shadow-lg", children: _jsx(ShoppingCart, { className: "h-4 w-4" }) }) })), _jsx("div", { className: "absolute inset-0 flex items-center justify-center p-8 bg-gradient-to-br from-white to-slate-50", children: _jsx(ImageWithFallback, { src: product.images?.[0], alt: product.name, className: "w-full h-full object-contain group-hover:scale-110 transition-transform duration-500", skeletonAspectRatio: "square" }) })] }), _jsxs("div", { className: "space-y-1 px-2", children: [_jsx("h3", { className: "font-bold text-lg text-slate-900 truncate group-hover:text-blue-600 transition-colors", children: product.name }), _jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-slate-900 font-bold", children: formatCurrency(product.price, product.currency || 'USD') }), product.compareAtPrice != null && product.compareAtPrice > product.price && _jsx("span", { className: "text-slate-400 text-sm line-through", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') })] })] }), _jsx(Link, { href: `/${storeConfig.slug}/products/${product.slug}`, className: "absolute inset-0 z-10" })] }, product.id))) })] }) })), layout?.features?.show !== false && (_jsxs("section", { "data-section": "features", className: "py-16 md:py-32 bg-slate-950 text-white relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.03)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.03)_1px,transparent_1px)] bg-[size:64px_64px] [mask-image:radial-gradient(ellipse_60%_60%_at_50%_50%,#000_70%,transparent_100%)]" }), _jsx("div", { className: "container mx-auto px-6 relative z-10", children: _jsx("div", { className: "grid md:grid-cols-3 gap-8 md:gap-12", children: [
99
+ }) }))] }) })), layout?.sections?.featuredProducts?.show !== false && (_jsx("section", { "data-section": "featuredProducts", className: "py-16 md:py-32 bg-white relative overflow-hidden", children: _jsxs("div", { className: "container mx-auto px-6 relative z-10", children: [_jsxs("div", { className: "flex flex-col md:flex-row justify-between items-end mb-8 md:mb-12 gap-6", children: [_jsxs("div", { className: "max-w-2xl", children: [_jsx("span", { className: "text-blue-600 font-bold tracking-widest text-xs uppercase mb-3 block", children: "Latest Drops" }), _jsx("h2", { className: "text-4xl md:text-5xl font-bold text-slate-900 tracking-tight", children: layout?.sections?.featuredProducts?.title || "Performance Redefined" })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "outline", size: "icon", onClick: scrollLeft, className: "rounded-full border-slate-200 hover:bg-slate-100 hover:text-slate-900", children: _jsx(ArrowRight, { className: "h-5 w-5 rotate-180" }) }), _jsx(Button, { variant: "outline", size: "icon", onClick: scrollRight, className: "rounded-full border-slate-200 hover:bg-slate-100 hover:text-slate-900", children: _jsx(ArrowRight, { className: "h-5 w-5" }) })] })] }), _jsx("div", { ref: scrollContainerRef, className: "flex overflow-x-auto snap-x snap-mandatory gap-8 pb-12 -mx-6 px-6 scrollbar-hide", children: products.map((product) => (_jsxs("div", { className: "min-w-[280px] md:min-w-[320px] snap-center group", children: [_jsxs("div", { className: "relative aspect-[4/5] bg-slate-50 rounded-[2.5rem] overflow-hidden mb-6 border border-slate-100", children: [_jsx("div", { className: "absolute top-4 left-4 z-20", children: hasValidCompareAtPrice(product.price, product.compareAtPrice) && (_jsx("span", { className: "bg-slate-900 text-white text-[10px] font-bold px-3 py-1.5 rounded-full", children: "SALE" })) }), layout?.sections?.featuredProducts?.showAddToCart !== false && (_jsx("div", { className: "absolute top-4 right-4 z-20 opacity-0 group-hover:opacity-100 transition-opacity", children: _jsx(Button, { size: "icon", onClick: (e) => handleAddToCart(e, product), className: "rounded-full bg-white text-slate-900 hover:bg-blue-600 hover:text-white shadow-lg", children: _jsx(ShoppingCart, { className: "h-4 w-4" }) }) })), _jsx("div", { className: "absolute inset-0 flex items-center justify-center p-8 bg-gradient-to-br from-white to-slate-50", children: _jsx(ImageWithFallback, { src: product.images?.[0], alt: product.name, className: "w-full h-full object-contain group-hover:scale-110 transition-transform duration-500", skeletonAspectRatio: "square" }) })] }), _jsxs("div", { className: "space-y-1 px-2", children: [_jsx("h3", { className: "font-bold text-lg text-slate-900 truncate group-hover:text-blue-600 transition-colors", children: product.name }), _jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-slate-900 font-bold", children: formatCurrency(product.price, product.currency || 'USD') }), hasValidCompareAtPrice(product.price, product.compareAtPrice) && _jsx("span", { className: "text-slate-400 text-sm line-through", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') })] })] }), _jsx(Link, { href: `/${storeConfig.slug}/products/${product.slug}`, className: "absolute inset-0 z-10" })] }, product.id))) })] }) })), layout?.features?.show !== false && (_jsxs("section", { "data-section": "features", className: "py-16 md:py-32 bg-slate-950 text-white relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.03)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.03)_1px,transparent_1px)] bg-[size:64px_64px] [mask-image:radial-gradient(ellipse_60%_60%_at_50%_50%,#000_70%,transparent_100%)]" }), _jsx("div", { className: "container mx-auto px-6 relative z-10", children: _jsx("div", { className: "grid md:grid-cols-3 gap-8 md:gap-12", children: [
99
100
  { icon: Cpu, title: "Neural Processing", desc: "Advanced AI capabilities built into every device for smarter performance." },
100
101
  { icon: Shield, title: "Military Grade", desc: "Tested against rigorous standards to ensure durability in any environment." },
101
102
  { icon: Zap, title: "Hyper Charge", desc: "Next-generation battery technology for all-day power in minutes." }
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { ElectronicsStoreHeader } from './ElectronicsStoreHeader';
4
- import { ElectronicsStoreFooter } from './ElectronicsStoreFooter';
3
+ import { ElectronicsStoreHeader } from './ElectronicsStoreHeader.js';
4
+ import { ElectronicsStoreFooter } from './ElectronicsStoreFooter.js';
5
5
  import { PageContentLoader } from '../../../components/ui/page-content-loader.js';
6
6
  import { useLoading } from '../../../lib/loading-context.js';
7
7
  export function ElectronicsPageWrapper({ children, storeConfig }) {
@@ -9,9 +9,9 @@ import { Filter, ChevronDown, Search } from 'lucide-react';
9
9
  import { useSearchParams } from 'next/navigation';
10
10
  import { useState, useMemo, Suspense } from 'react';
11
11
  import { useFilteredProductsFetch } from '../../../hooks/use-filtered-products-fetch.js';
12
- import { ElectronicsStoreHeader } from './ElectronicsStoreHeader';
13
- import { ElectronicsStoreFooter } from './ElectronicsStoreFooter';
14
- import { ElectronicsGridProductCard } from './ElectronicsGridProductCard';
12
+ import { ElectronicsStoreHeader } from './ElectronicsStoreHeader.js';
13
+ import { ElectronicsStoreFooter } from './ElectronicsStoreFooter.js';
14
+ import { ElectronicsGridProductCard } from './ElectronicsGridProductCard.js';
15
15
  import { Sheet } from '../../../components/ui/sheet.js';
16
16
  import { AnimatePresence } from 'framer-motion';
17
17
  import { filterActiveProducts } from '../../../lib/utils/index.js';
@@ -21,7 +21,7 @@ import { transformProductToStoreProduct } from '../../../lib/store-config-utils.
21
21
  import { useCatalogPriceRange } from '../../../hooks/use-catalog-price-range.js';
22
22
  import { getApiPriceFilterActive, isWithinActivePriceRange } from '../../../lib/utils/catalog-price-bounds.js';
23
23
  import { buildFilteredProductQuery, getFilteredProductQueryKey, } from '../../../lib/utils/filtered-product-query.js';
24
- import { ProductPriceFilterSection } from '../../shared/components/ProductPriceFilterSection';
24
+ import { ProductPriceFilterSection } from '../../shared/components/ProductPriceFilterSection.js';
25
25
  function ElectronicsProductsPageContent({ storeConfig }) {
26
26
  const searchParams = useSearchParams();
27
27
  const categoryParam = searchParams.get('category');
@@ -10,7 +10,7 @@ import { useStore } from '../../../lib/store-context.js';
10
10
  import { useAuth } from '../../../lib/auth-context.js';
11
11
  import { StoreLogo } from '../../../components/ui/store-logos.js';
12
12
  import { usePathname } from 'next/navigation';
13
- import { StoreCartSheet } from '../../shared/components/StoreCartSheet';
13
+ import { StoreCartSheet } from '../../shared/components/StoreCartSheet.js';
14
14
  export function ElectronicsStoreHeader({ storeConfig }) {
15
15
  const [scrolled, setScrolled] = useState(false);
16
16
  const { cartCount, setIsCartOpen } = useStore();
@@ -1,19 +1,19 @@
1
1
  // Tech World (electronics) layout — fully sandboxed exports
2
- export { ElectronicsHomePage } from './components/ElectronicsHomePage';
3
- export { ElectronicsProductsPage } from './components/ElectronicsProductsPage';
4
- export { ElectronicsCategoriesPage } from './components/ElectronicsCategoriesPage';
5
- export { ElectronicsPageWrapper } from './components/ElectronicsPageWrapper';
6
- export { ElectronicsStoreHeader } from './components/ElectronicsStoreHeader';
7
- export { ElectronicsStoreFooter } from './components/ElectronicsStoreFooter';
8
- export { ElectronicsGridProductCard } from './components/ElectronicsGridProductCard';
9
- export { ProductsPage as ElectronicsProductsListingPage } from './pages/ProductsPage';
10
- export { ProductDetailPage as ElectronicsProductDetailPage } from './pages/ProductDetailPage';
11
- export { CategoryPage as ElectronicsCategoryPage } from './pages/CategoryPage';
12
- export { ElectronicsCategoriesListingPage } from './pages/CategoriesPage';
13
- export { AboutPage as ElectronicsAboutPage } from './pages/AboutPage';
14
- export { ContactPage as ElectronicsContactPage } from './pages/ContactPage';
15
- export { ElectronicsHelpCenterPage } from './pages/HelpCenterPage';
16
- export { ElectronicsPrivacyPolicyPage } from './pages/PrivacyPolicyPage';
17
- export { ElectronicsShippingReturnsPage } from './pages/ShippingReturnsPage';
18
- export { ElectronicsTermsPage } from './pages/TermsPage';
19
- export { ElectronicsTrackOrderPage } from './pages/TrackOrderPage';
2
+ export { ElectronicsHomePage } from './components/ElectronicsHomePage.js';
3
+ export { ElectronicsProductsPage } from './components/ElectronicsProductsPage.js';
4
+ export { ElectronicsCategoriesPage } from './components/ElectronicsCategoriesPage.js';
5
+ export { ElectronicsPageWrapper } from './components/ElectronicsPageWrapper.js';
6
+ export { ElectronicsStoreHeader } from './components/ElectronicsStoreHeader.js';
7
+ export { ElectronicsStoreFooter } from './components/ElectronicsStoreFooter.js';
8
+ export { ElectronicsGridProductCard } from './components/ElectronicsGridProductCard.js';
9
+ export { ProductsPage as ElectronicsProductsListingPage } from './pages/ProductsPage.js';
10
+ export { ProductDetailPage as ElectronicsProductDetailPage } from './pages/ProductDetailPage.js';
11
+ export { CategoryPage as ElectronicsCategoryPage } from './pages/CategoryPage.js';
12
+ export { ElectronicsCategoriesListingPage } from './pages/CategoriesPage.js';
13
+ export { AboutPage as ElectronicsAboutPage } from './pages/AboutPage.js';
14
+ export { ContactPage as ElectronicsContactPage } from './pages/ContactPage.js';
15
+ export { ElectronicsHelpCenterPage } from './pages/HelpCenterPage.js';
16
+ export { ElectronicsPrivacyPolicyPage } from './pages/PrivacyPolicyPage.js';
17
+ export { ElectronicsShippingReturnsPage } from './pages/ShippingReturnsPage.js';
18
+ export { ElectronicsTermsPage } from './pages/TermsPage.js';
19
+ export { ElectronicsTrackOrderPage } from './pages/TrackOrderPage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/pages/AboutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,+BA6OvE"}
1
+ {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/pages/AboutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAchD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,+BAiPvE"}
@@ -7,6 +7,7 @@ import { useStore } from '../../../lib/store-context.js';
7
7
  import Image from 'next/image';
8
8
  import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml.js';
9
9
  import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt.js';
10
+ import { storySectionImage, storyTeamSubtitle, storyTeamTitle, } from '../../shared/about-story-media.js';
10
11
  export function AboutPage({ storeConfig: initialConfig }) {
11
12
  const { store } = useStore();
12
13
  const storeConfig = store || initialConfig;
@@ -18,7 +19,11 @@ export function AboutPage({ storeConfig: initialConfig }) {
18
19
  const pageTitle = aboutConfig?.aboutHeader?.title || aboutConfig?.title || "Crafting Experiences, Delivering Joy.";
19
20
  const pageContent = aboutConfig?.aboutContent?.content || aboutConfig?.content || storeConfig.description;
20
21
  const missionStatement = aboutConfig?.aboutHeader?.description || aboutConfig?.missionStatement;
21
- const galleryImages = aboutConfig?.aboutContent?.gallerySection || aboutConfig?.gallerySection;
22
+ const storyConfig = aboutConfig?.aboutContent || aboutConfig?.story || aboutConfig;
23
+ const galleryImages = storyConfig?.gallerySection || aboutConfig?.gallerySection;
24
+ const storyImage = storySectionImage(storyConfig);
25
+ const storyCaptionTitle = storyTeamTitle(storyConfig);
26
+ const storyCaptionSubtitle = storyTeamSubtitle(storyConfig);
22
27
  const values = [
23
28
  {
24
29
  icon: Award,
@@ -41,7 +46,7 @@ export function AboutPage({ storeConfig: initialConfig }) {
41
46
  description: "Promoting energy-efficient devices and responsible e-waste disposal."
42
47
  }
43
48
  ];
44
- return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [_jsxs("section", { "data-section": "hero", className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx(SafeRichHtml, { value: missionStatement || storeConfig.description, as: "div", className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light [&_p]:mb-0" })] }) }) })] }), _jsxs("section", { "data-section": "story", className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [galleryImages && galleryImages.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: galleryImages.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500" }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src: "https://images.unsplash.com/photo-1522202176988-66273c2fd55f?q=80&w=2071&auto=format&fit=crop", alt: "Our Team", fill: true, className: "w-full h-full object-cover" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-60" }), _jsxs("div", { className: "absolute bottom-8 left-8 text-white", children: [_jsx("p", { className: "font-bold text-lg", children: "The Dream Team" }), _jsx("p", { className: "text-white/80 text-sm", children: "Working together to serve you better" })] })] })), _jsx("div", { className: "absolute -bottom-6 -right-6 w-24 h-24 bg-white rounded-2xl shadow-xl flex items-center justify-center p-4 animate-bounce duration-[3000ms]", children: _jsx(Heart, { className: "w-10 h-10", style: { color: primaryColor, fill: primaryColor } }) })] }), _jsxs("div", { className: "space-y-10", children: [_jsxs("div", { children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-widest mb-3 block", style: { color: primaryColor }, children: "Who We Are" }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: "Our Journey" }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", children: [pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))), !pageContent && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Founded with a bold vision to redefine excellence in the ", _jsx("span", { className: "font-semibold text-gray-900", children: storeConfig.type }), " industry, ", storeConfig.name, " has grown from a small passion project into a beloved brand. We believe in the power of quality, innovation, and community."] }), _jsx("p", { children: "Every day, we strive to bring you the best products, curated with care and delivered with a smile. Our team is dedicated to ensuring that your experience with us is nothing short of exceptional." })] }))] })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: values.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "w-14 h-14 rounded-2xl flex items-center justify-center transition-colors group-hover:bg-gray-100", style: { backgroundColor: `${primaryColor}10` }, children: _jsx(item.icon, { className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2 text-lg", children: item.title }), _jsx(RichTextExcerpt, { value: item.description, as: "p", className: "text-gray-600 text-sm leading-relaxed" })] })] }, idx))) })] })] }) })] }), _jsxs("section", { "data-section": "stats", className: "py-20 relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-10", children: _jsx(DotPattern, { color: primaryColor, cx: 2, cy: 2, cr: 2, width: 30, height: 30 }) }), _jsx("div", { className: "absolute inset-0", style: { backgroundColor: `${secondaryColor}15` } }), _jsx("div", { className: "container mx-auto px-4 relative z-10", children: _jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12", children: [
49
+ return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [_jsxs("section", { "data-section": "hero", className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx(SafeRichHtml, { value: missionStatement || storeConfig.description, as: "div", className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light [&_p]:mb-0" })] }) }) })] }), _jsxs("section", { "data-section": "story", className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [galleryImages && galleryImages.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: galleryImages.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500" }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src: storyImage, alt: storyCaptionTitle, fill: true, className: "w-full h-full object-cover" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-60" }), _jsxs("div", { className: "absolute bottom-8 left-8 text-white", children: [_jsx("p", { className: "font-bold text-lg", children: storyCaptionTitle }), _jsx("p", { className: "text-white/80 text-sm", children: storyCaptionSubtitle })] })] })), _jsx("div", { className: "absolute -bottom-6 -right-6 w-24 h-24 bg-white rounded-2xl shadow-xl flex items-center justify-center p-4 animate-bounce duration-[3000ms]", children: _jsx(Heart, { className: "w-10 h-10", style: { color: primaryColor, fill: primaryColor } }) })] }), _jsxs("div", { className: "space-y-10", children: [_jsxs("div", { children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-widest mb-3 block", style: { color: primaryColor }, children: "Who We Are" }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: "Our Journey" }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", children: [pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))), !pageContent && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Founded with a bold vision to redefine excellence in the ", _jsx("span", { className: "font-semibold text-gray-900", children: storeConfig.type }), " industry, ", storeConfig.name, " has grown from a small passion project into a beloved brand. We believe in the power of quality, innovation, and community."] }), _jsx("p", { children: "Every day, we strive to bring you the best products, curated with care and delivered with a smile. Our team is dedicated to ensuring that your experience with us is nothing short of exceptional." })] }))] })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: values.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "w-14 h-14 rounded-2xl flex items-center justify-center transition-colors group-hover:bg-gray-100", style: { backgroundColor: `${primaryColor}10` }, children: _jsx(item.icon, { className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2 text-lg", children: item.title }), _jsx(RichTextExcerpt, { value: item.description, as: "p", className: "text-gray-600 text-sm leading-relaxed" })] })] }, idx))) })] })] }) })] }), _jsxs("section", { "data-section": "stats", className: "py-20 relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-10", children: _jsx(DotPattern, { color: primaryColor, cx: 2, cy: 2, cr: 2, width: 30, height: 30 }) }), _jsx("div", { className: "absolute inset-0", style: { backgroundColor: `${secondaryColor}15` } }), _jsx("div", { className: "container mx-auto px-4 relative z-10", children: _jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12", children: [
45
50
  { label: "Devices Sold", value: "50k+" },
46
51
  { label: "Products", value: storeConfig.products?.length ? `${storeConfig.products.length}+` : "100+" },
47
52
  { label: "Years in Tech", value: "12+" },
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { ElectronicsCategoriesPage } from '../../electronics/components/ElectronicsCategoriesPage';
3
+ import { ElectronicsCategoriesPage } from '../../electronics/components/ElectronicsCategoriesPage.js';
4
4
  export function ElectronicsCategoriesListingPage({ storeConfig }) {
5
5
  return _jsx(ElectronicsCategoriesPage, { storeConfig: storeConfig });
6
6
  }
@@ -27,9 +27,9 @@ import { usePdpVariation } from '../../../hooks/use-pdp-variation.js';
27
27
  import { buildPdpBuyNowItem } from '../../../lib/pdp-cart-actions.js';
28
28
  import { assertVariationSelected } from '../../../lib/product-variation-utils.js';
29
29
  import { shippingService } from '../../../lib/services/shipping.service.js';
30
- import { ProductDeliveryInfoSection } from '../../../components/shipping/ProductDeliveryInfoSection';
31
- import { PdpVariationSelectors } from '../../shared/components/PdpVariationSelectors';
32
- import { formatDateSafe } from '../../../utils/date';
30
+ import { ProductDeliveryInfoSection } from '../../../components/shipping/ProductDeliveryInfoSection.js';
31
+ import { PdpVariationSelectors } from '../../shared/components/PdpVariationSelectors.js';
32
+ import { formatDateSafe } from '../../../utils/date.js';
33
33
  // Helper function to format date
34
34
  const formatDate = (dateString) => {
35
35
  return formatDateSafe(dateString, '—', { year: 'numeric', month: 'long', day: 'numeric' });