storefront-layouts 1.0.18 → 1.0.19

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 (98) hide show
  1. package/dist/components/ui/category-tree.d.ts +5 -1
  2. package/dist/components/ui/category-tree.d.ts.map +1 -1
  3. package/dist/components/ui/category-tree.js +36 -12
  4. package/dist/components/ui/product-card.d.ts +1 -1
  5. package/dist/components/ui/product-card.d.ts.map +1 -1
  6. package/dist/components/ui/product-card.js +15 -15
  7. package/dist/editor/alignment-schemas/booking.d.ts.map +1 -1
  8. package/dist/editor/alignment-schemas/booking.js +104 -61
  9. package/dist/editor/alignment-schemas/clothing-minimal.d.ts.map +1 -1
  10. package/dist/editor/alignment-schemas/clothing-minimal.js +74 -30
  11. package/dist/editor/alignment-schemas/clothing.d.ts.map +1 -1
  12. package/dist/editor/alignment-schemas/clothing.js +87 -32
  13. package/dist/editor/alignment-schemas/food.d.ts.map +1 -1
  14. package/dist/editor/alignment-schemas/food.js +103 -48
  15. package/dist/editor/payaza-form/PayazaFormEditor.d.ts.map +1 -1
  16. package/dist/editor/payaza-form/PayazaFormEditor.js +13 -1
  17. package/dist/editor/payaza-form/components/ImageField.d.ts.map +1 -1
  18. package/dist/editor/payaza-form/components/ImageField.js +1 -1
  19. package/dist/editor/payaza-form/components/ToggleField.d.ts.map +1 -1
  20. package/dist/editor/payaza-form/components/ToggleField.js +2 -1
  21. package/dist/editor/payaza-form/data-merger.d.ts.map +1 -1
  22. package/dist/editor/payaza-form/data-merger.js +61 -9
  23. package/dist/editor/shared/EditorHeader.d.ts.map +1 -1
  24. package/dist/editor/shared/EditorHeader.js +20 -25
  25. package/dist/editor/shared/IframePreview.d.ts.map +1 -1
  26. package/dist/editor/shared/IframePreview.js +46 -22
  27. package/dist/hooks/use-payaza-checkout.d.ts.map +1 -1
  28. package/dist/hooks/use-payaza-checkout.js +0 -2
  29. package/dist/layouts/booking/components/booking-about-defaults.d.ts +16 -0
  30. package/dist/layouts/booking/components/booking-about-defaults.d.ts.map +1 -1
  31. package/dist/layouts/booking/components/booking-about-defaults.js +171 -1
  32. package/dist/layouts/booking/components/booking-footer-defaults.d.ts +2 -2
  33. package/dist/layouts/booking/components/booking-footer-defaults.d.ts.map +1 -1
  34. package/dist/layouts/booking/components/booking-footer-defaults.js +5 -8
  35. package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -1
  36. package/dist/layouts/booking/pages/AboutPage.js +43 -36
  37. package/dist/layouts/booking/pages/ContactPage.d.ts.map +1 -1
  38. package/dist/layouts/booking/pages/ContactPage.js +2 -2
  39. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -1
  40. package/dist/layouts/booking-agenda/pages/AboutPage.js +7 -24
  41. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts.map +1 -1
  42. package/dist/layouts/booking-agenda/pages/ContactPage.js +2 -2
  43. package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -1
  44. package/dist/layouts/clothing/pages/AboutPage.js +34 -17
  45. package/dist/layouts/clothing/pages/ContactPage.d.ts.map +1 -1
  46. package/dist/layouts/clothing/pages/ContactPage.js +3 -3
  47. package/dist/layouts/clothing/pages/ProductsPage.d.ts.map +1 -1
  48. package/dist/layouts/clothing/pages/ProductsPage.js +18 -4
  49. package/dist/layouts/clothing/styles/clothing.css +28 -1
  50. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -1
  51. package/dist/layouts/clothing-minimal/pages/AboutPage.js +36 -36
  52. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts.map +1 -1
  53. package/dist/layouts/clothing-minimal/pages/ContactPage.js +2 -2
  54. package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts.map +1 -1
  55. package/dist/layouts/electronics/components/ElectronicsStoreFooter.js +1 -1
  56. package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -1
  57. package/dist/layouts/electronics/pages/AboutPage.js +7 -24
  58. package/dist/layouts/electronics/pages/ContactPage.d.ts.map +1 -1
  59. package/dist/layouts/electronics/pages/ContactPage.js +2 -2
  60. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts.map +1 -1
  61. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +1 -1
  62. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -1
  63. package/dist/layouts/electronics-grid/pages/AboutPage.js +7 -24
  64. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts.map +1 -1
  65. package/dist/layouts/electronics-grid/pages/ContactPage.js +2 -2
  66. package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -1
  67. package/dist/layouts/food/pages/AboutPage.js +48 -56
  68. package/dist/layouts/food/pages/ContactPage.d.ts.map +1 -1
  69. package/dist/layouts/food/pages/ContactPage.js +2 -2
  70. package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -1
  71. package/dist/layouts/food-modern/pages/AboutPage.js +7 -24
  72. package/dist/layouts/food-modern/pages/ContactPage.d.ts.map +1 -1
  73. package/dist/layouts/food-modern/pages/ContactPage.js +2 -2
  74. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -1
  75. package/dist/layouts/motivational-speaker/pages/AboutPage.js +7 -24
  76. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts.map +1 -1
  77. package/dist/layouts/motivational-speaker/pages/ContactPage.js +2 -2
  78. package/dist/layouts/shared/components/StoreFooter.d.ts.map +1 -1
  79. package/dist/layouts/shared/components/StoreFooter.js +4 -6
  80. package/dist/layouts/shared/components/StoreHeader.d.ts.map +1 -1
  81. package/dist/layouts/shared/components/StoreHeader.js +60 -6
  82. package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -1
  83. package/dist/layouts/shared/pages/CheckoutPage.js +0 -78
  84. package/dist/layouts/shared/wrappers/ClothingLayout.d.ts.map +1 -1
  85. package/dist/layouts/shared/wrappers/ClothingLayout.js +17 -0
  86. package/dist/lib/mock-stores.js +1 -1
  87. package/dist/lib/payaza-checkout.d.ts.map +1 -1
  88. package/dist/lib/payaza-checkout.js +0 -33
  89. package/dist/lib/preview-data.d.ts.map +1 -1
  90. package/dist/lib/preview-data.js +3 -2
  91. package/dist/lib/utils/category-tree.d.ts +2 -0
  92. package/dist/lib/utils/category-tree.d.ts.map +1 -1
  93. package/dist/lib/utils/category-tree.js +15 -0
  94. package/dist/lib/utils/footer-nav-defaults.d.ts +11 -2
  95. package/dist/lib/utils/footer-nav-defaults.d.ts.map +1 -1
  96. package/dist/lib/utils/footer-nav-defaults.js +29 -22
  97. package/dist/styles/index.css +203 -212
  98. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProductsPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/clothing/pages/ProductsPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AAkCrE,UAAU,iBAAiB;IACzB,WAAW,EAAE,WAAW,CAAC;CAC1B;AA4uBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAMpD"}
1
+ {"version":3,"file":"ProductsPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/clothing/pages/ProductsPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AAkCrE,UAAU,iBAAiB;IACzB,WAAW,EAAE,WAAW,CAAC;CAC1B;AA6vBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAMpD"}
@@ -17,7 +17,7 @@ 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
19
  import { filterActiveProducts } from '../../../lib/utils/index.js';
20
- import { getAllCategoryIds, flattenCategoryTree, buildCategoryTree } from '../../../lib/utils/category-tree.js';
20
+ import { getAllCategoryIds, flattenCategoryTree, buildCategoryTree, countProductsInCategoryTree } from '../../../lib/utils/category-tree.js';
21
21
  import { getBannerImage, getLayoutText } from '../../../lib/utils/asset-helpers.js';
22
22
  import { shouldUseAPI } from '../../../lib/utils/demo-detection.js';
23
23
  import { productCategoryFilterChipClass } from '../../shared/product-category-filter-chip.js';
@@ -99,6 +99,20 @@ function ProductsPageContent({ storeConfig: initialConfig }) {
99
99
  const brands = useProductBrands(storeConfig.id, fallbackBrands);
100
100
  // Build category tree for filtering
101
101
  const categoryTree = useMemo(() => buildCategoryTree(categories), [categories]);
102
+ const categoryProductCounts = useMemo(() => {
103
+ const merged = new Map();
104
+ for (const p of bootstrapProducts)
105
+ merged.set(p.id, p);
106
+ for (const p of products)
107
+ merged.set(p.id, p);
108
+ const catalogProducts = Array.from(merged.values());
109
+ const flat = flattenCategoryTree(categoryTree);
110
+ const counts = {};
111
+ for (const cat of flat) {
112
+ counts[cat.id] = countProductsInCategoryTree(cat, categories, catalogProducts);
113
+ }
114
+ return counts;
115
+ }, [categoryTree, categories, bootstrapProducts, products]);
102
116
  // Get all category IDs to filter (including children of selected parent categories)
103
117
  const effectiveCategoryIds = useMemo(() => {
104
118
  if (selectedCategories.length === 0)
@@ -303,15 +317,15 @@ function ProductsPageContent({ storeConfig: initialConfig }) {
303
317
  element?.scrollIntoView({ behavior: 'smooth' });
304
318
  }, children: productsHeaderConfig?.primaryButtonText || primaryButtonText })), (productsHeaderConfig?.secondaryButtonText || secondaryButtonText) && (productsHeaderConfig?.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 ${(productsHeaderConfig?.image || 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: () => {
305
319
  window.location.href = `/${storeConfig.slug}/categories`;
306
- }, children: productsHeaderConfig?.secondaryButtonText || 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: productCategoryFilterChipClass(!selectedCategoryFilter), children: "All" }), categories.map((category) => (_jsx("button", { onClick: () => setSelectedCategoryFilter(selectedCategoryFilter === category.slug ? null : category.slug), className: productCategoryFilterChipClass(selectedCategoryFilter === category.slug), 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) => {
320
+ }, children: productsHeaderConfig?.secondaryButtonText || 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: productCategoryFilterChipClass(!selectedCategoryFilter), children: "All" }), categories.map((category) => (_jsx("button", { onClick: () => setSelectedCategoryFilter(selectedCategoryFilter === category.slug ? null : category.slug), className: productCategoryFilterChipClass(selectedCategoryFilter === category.slug), 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 lg:sticky lg:top-24 self-start pr-2", 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) => {
307
321
  setSelectedCategories(prev => isSelected
308
322
  ? [...prev, categoryId]
309
323
  : prev.filter(id => id !== categoryId));
310
- }, mode: "checkbox" })] }), _jsx(ProductPriceFilterSection, { currency: storeCurrency, priceRange: priceRange, onPriceRangeChange: setPriceRange, bounds: catalogBounds, isFilterActive: hasActivePriceFilter, onReset: resetPriceRange }), _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 ? (_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: handleLoadMore, 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" })] })] }), _jsx(ProductPriceFilterSection, { currency: storeCurrency, priceRange: priceRange, onPriceRangeChange: setPriceRange, bounds: catalogBounds, isFilterActive: hasActivePriceFilter, onReset: resetPriceRange }), _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) => {
324
+ }, mode: "checkbox", categoryProductCounts: categoryProductCounts, featuredRootCategoryLimit: 6 })] }), _jsx(ProductPriceFilterSection, { currency: storeCurrency, priceRange: priceRange, onPriceRangeChange: setPriceRange, bounds: catalogBounds, isFilterActive: hasActivePriceFilter, onReset: resetPriceRange }), _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 ? (_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: handleLoadMore, 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" })] })] }), _jsx(ProductPriceFilterSection, { currency: storeCurrency, priceRange: priceRange, onPriceRangeChange: setPriceRange, bounds: catalogBounds, isFilterActive: hasActivePriceFilter, onReset: resetPriceRange }), _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) => {
311
325
  setSelectedCategories(prev => isSelected
312
326
  ? [...prev, categoryId]
313
327
  : prev.filter(id => id !== categoryId));
314
- }, 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" })] })] })] }));
328
+ }, mode: "checkbox", categoryProductCounts: categoryProductCounts, featuredRootCategoryLimit: 6 })] }), _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" })] })] })] }));
315
329
  }
316
330
  export function ProductsPage(props) {
317
331
  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 }) }));
@@ -1,15 +1,35 @@
1
1
  /**
2
2
  * Fashion Hub (clothing) — layout-scoped styles only.
3
- * Loaded via ClothingLayout; all selectors stay under [data-layout="clothing"].
3
+ * Loaded via ClothingLayout; selectors use [data-layout="clothing"] and html[data-store-layout="clothing"] (portals).
4
4
  */
5
5
 
6
+ html[data-store-layout='clothing'],
6
7
  [data-layout='clothing'] {
7
8
  --layout-clothing-primary: var(--store-primary, #1f2937);
8
9
  --layout-clothing-hero-overlay: rgba(0, 0, 0, 0.45);
9
10
  --layout-clothing-surface: var(--theme-bg-primary, #ffffff);
10
11
  --layout-clothing-muted: var(--theme-text-secondary, #6b7280);
12
+ --radius: 0.125rem;
13
+ --radius-2xl: 0.25rem;
14
+ --radius-3xl: 0.375rem;
11
15
  }
12
16
 
17
+ /* CTAs / badges with horizontal padding — not circular icon buttons */
18
+ html[data-store-layout='clothing'] .rounded-full[class*='px-'],
19
+ [data-layout='clothing'] .rounded-full[class*='px-'] {
20
+ border-radius: var(--radius);
21
+ }
22
+
23
+ html[data-store-layout='clothing'] .rounded-\[2rem\],
24
+ html[data-store-layout='clothing'] .rounded-\[1\.5rem\],
25
+ html[data-store-layout='clothing'] .rounded-\[2\.5rem\],
26
+ [data-layout='clothing'] .rounded-\[2rem\],
27
+ [data-layout='clothing'] .rounded-\[1\.5rem\],
28
+ [data-layout='clothing'] .rounded-\[2\.5rem\] {
29
+ border-radius: var(--radius-3xl);
30
+ }
31
+
32
+ html[data-store-layout='clothing'] .layout-clothing-hero-gradient,
13
33
  [data-layout='clothing'] .layout-clothing-hero-gradient {
14
34
  background: linear-gradient(
15
35
  to right,
@@ -19,20 +39,24 @@
19
39
  );
20
40
  }
21
41
 
42
+ html[data-store-layout='clothing'] .animate-fade-in-up,
22
43
  [data-layout='clothing'] .animate-fade-in-up {
23
44
  animation: clothingFadeInUp 0.8s ease-out forwards;
24
45
  opacity: 0;
25
46
  transform: translateY(20px);
26
47
  }
27
48
 
49
+ html[data-store-layout='clothing'] .animate-pulse-slow,
28
50
  [data-layout='clothing'] .animate-pulse-slow {
29
51
  animation: clothingPulseSlow 4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
30
52
  }
31
53
 
54
+ html[data-store-layout='clothing'] .animate-bounce,
32
55
  [data-layout='clothing'] .animate-bounce {
33
56
  animation: clothingBounce 3s ease-in-out infinite;
34
57
  }
35
58
 
59
+ html[data-store-layout='clothing'] .font-serif-accent,
36
60
  [data-layout='clothing'] .font-serif-accent {
37
61
  font-family: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
38
62
  font-style: italic;
@@ -70,6 +94,9 @@
70
94
  }
71
95
 
72
96
  @media (prefers-reduced-motion: reduce) {
97
+ html[data-store-layout='clothing'] .animate-fade-in-up,
98
+ html[data-store-layout='clothing'] .animate-pulse-slow,
99
+ html[data-store-layout='clothing'] .animate-bounce,
73
100
  [data-layout='clothing'] .animate-fade-in-up,
74
101
  [data-layout='clothing'] .animate-pulse-slow,
75
102
  [data-layout='clothing'] .animate-bounce {
@@ -1 +1 @@
1
- {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/clothing-minimal/pages/AboutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAgBvD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,+BAoPvE"}
1
+ {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/clothing-minimal/pages/AboutPage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAwBvD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,+BAgPvE"}
@@ -1,55 +1,55 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { Users, Award, Heart, Leaf, MapPin, Clock, Mail, ArrowRight } from 'lucide-react';
3
+ import Link from 'next/link';
4
+ import { ArrowRight } from 'lucide-react';
4
5
  import { Button } from '../../../components/ui/button.js';
5
6
  import { DotPattern } from '../../../components/ui/background-patterns.js';
6
7
  import { useStore } from '../../../lib/store-context.js';
8
+ import { DynamicIcon } from '../../../components/ui/dynamic-icon.js';
7
9
  import Image from 'next/image';
8
- import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt.js';
9
10
  import { storySectionImage, storySectionLabel, storySectionTitle, storyTeamSubtitle, storyTeamTitle, } from '../../shared/about-story-media.js';
11
+ import { CLOTHING_MINIMAL_DEFAULT_ABOUT_STATS, CLOTHING_MINIMAL_DEFAULT_ABOUT_VALUES, normalizeAboutContactInfoCards, resolveAboutPageValueItems, resolveBookingAboutStats, } from '../../booking/components/booking-about-defaults.js';
12
+ import { useClothingPayaza } from '../../clothing/payaza-bindings.js';
13
+ import { payazaGroupBindingProps } from '../../../preview/canvas/field-key.js';
10
14
  export function AboutPage({ storeConfig: initialConfig }) {
11
15
  const { store } = useStore();
12
16
  const storeConfig = store || initialConfig;
13
17
  const primaryColor = storeConfig.branding.primaryColor;
14
18
  const secondaryColor = storeConfig.branding.secondaryColor || primaryColor;
15
19
  const aboutConfig = storeConfig.layoutConfig?.pages?.about;
16
- // Clothing-minimal-specific hero image
17
- const heroImage = aboutConfig?.aboutHeader?.heroImage || aboutConfig?.heroImage || 'https://images.unsplash.com/photo-1558769132-cb1aea458c5e?q=80&w=2074&auto=format&fit=crop';
18
- const pageTitle = aboutConfig?.aboutHeader?.title || aboutConfig?.title || "Crafting Experiences, Delivering Joy.";
19
- const storyConfig = aboutConfig?.aboutContent || aboutConfig;
20
- const pageContent = storyConfig?.content || aboutConfig?.content || storeConfig.description;
21
- const missionStatement = aboutConfig?.aboutHeader?.missionStatement || aboutConfig?.missionStatement || storeConfig.description;
20
+ const heroConfig = aboutConfig?.aboutHeader;
21
+ const storyConfig = aboutConfig?.aboutContent;
22
+ const statsConfig = aboutConfig?.statsSection;
23
+ const contactRaw = aboutConfig?.contactSection;
24
+ const contactInfo = contactRaw
25
+ ? normalizeAboutContactInfoCards(contactRaw)
26
+ : undefined;
27
+ const visitCard = (contactInfo?.visitCard || {});
28
+ const emailCard = (contactInfo?.emailCard || {});
29
+ const hoursCard = (contactInfo?.hoursCard || {});
30
+ const valuesItems = resolveAboutPageValueItems(storeConfig.layoutConfig, CLOTHING_MINIMAL_DEFAULT_ABOUT_VALUES);
31
+ const { section, edit, image, icon, isPreview } = useClothingPayaza(storeConfig, 'about');
32
+ const heroImage = heroConfig?.heroImage ||
33
+ 'https://images.unsplash.com/photo-1558769132-cb1aea458c5e?q=80&w=2074&auto=format&fit=crop';
34
+ const pageTitle = heroConfig?.title || 'Crafting Experiences, Delivering Joy.';
35
+ const missionStatement = heroConfig?.missionStatement || storeConfig.description;
36
+ const rawHeroBadge = heroConfig?.badgeText;
37
+ const heroBadgeText = rawHeroBadge === '' ? null : (typeof rawHeroBadge === 'string' ? rawHeroBadge.trim() : '') || 'Est. 2024';
38
+ const statItems = resolveBookingAboutStats(statsConfig, {}, CLOTHING_MINIMAL_DEFAULT_ABOUT_STATS).map((stat, idx) => {
39
+ if (idx === 1 && storeConfig.products?.length && stat.id === 'minimal-s2') {
40
+ return { ...stat, value: `${storeConfig.products.length}+` };
41
+ }
42
+ return stat;
43
+ });
44
+ const statGridCols = statItems.length >= 4 ? 'md:grid-cols-4' : statItems.length === 3 ? 'md:grid-cols-3' : 'md:grid-cols-2';
45
+ const pageContent = storyConfig?.content || storeConfig.description;
22
46
  const storyImage = storySectionImage(storyConfig);
23
47
  const storyLabel = storySectionLabel(storyConfig);
24
48
  const storyTitle = storySectionTitle(storyConfig);
25
49
  const storyCaptionTitle = storyTeamTitle(storyConfig);
26
50
  const storyCaptionSubtitle = storyTeamSubtitle(storyConfig);
27
- const values = [
28
- {
29
- icon: Award,
30
- title: "Pure Materials",
31
- description: "We use only the highest quality organic and sustainable fabrics."
32
- },
33
- {
34
- icon: Users,
35
- title: "Inclusive Design",
36
- description: "Fashion designed for every body and every style."
37
- },
38
- {
39
- icon: Heart,
40
- title: "Ethical Craft",
41
- description: "Our garments are made in ethical workshops with fair wages."
42
- },
43
- {
44
- icon: Leaf,
45
- title: "Eco-Conscious",
46
- description: "Minimal waste production and plastic-free packaging."
47
- }
48
- ];
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: [
50
- { label: "Happy Shoppers", value: "12k+" },
51
- { label: "Active Designs", value: storeConfig.products?.length ? `${storeConfig.products.length}+` : "60+" },
52
- { label: "Countries Served", value: "30+" },
53
- { label: "Eco Impact", value: "100%" }
54
- ].map((stat, idx) => (_jsxs("div", { className: "text-center group", children: [_jsx("div", { className: "text-5xl md:text-6xl font-black mb-2 tracking-tight transition-transform group-hover:scale-110 duration-300", style: { color: primaryColor }, children: stat.value }), _jsx("div", { className: "text-gray-600 font-bold uppercase tracking-widest text-xs md:text-sm", children: stat.label })] }, idx))) }) })] })), aboutConfig?.contactSection?.show !== false && (_jsx("section", { "data-section": "contact-info", className: "py-24 px-4 sm:px-6 lg:px-8 bg-white", children: _jsxs("div", { className: "container mx-auto max-w-6xl", children: [_jsxs("div", { className: "text-center mb-16", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: "Get in Touch" }), _jsx("p", { className: "text-gray-500 max-w-xl mx-auto", children: "Have questions? We'd love to hear from you. Reach out to our team via email, phone, or visit us at our store." })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: [_jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(MapPin, { className: "h-8 w-8 text-gray-400 group-hover:text-blue-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Visit Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed", children: ["123 Store Street", _jsx("br", {}), "Commerce City, ST 12345"] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 border-2 border-transparent group-hover:border-orange-100 rounded-[2rem] transition-colors pointer-events-none" }), _jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Mail, { className: "h-8 w-8 text-gray-400 group-hover:text-orange-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Email Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed mb-4", children: ["hello@", storeConfig.slug, ".com", _jsx("br", {}), "support@", storeConfig.slug, ".com"] }), _jsxs(Button, { variant: "link", className: "text-orange-600 font-bold p-0 h-auto hover:no-underline group-hover:translate-x-1 transition-transform", children: ["Send a message ", _jsx(ArrowRight, { className: "ml-1 h-4 w-4" })] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Clock, { className: "h-8 w-8 text-gray-400 group-hover:text-green-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Opening Hours" }), _jsxs("p", { className: "text-gray-600 leading-relaxed", children: ["Mon - Fri: 9am - 6pm", _jsx("br", {}), "Sat - Sun: 10am - 4pm"] })] })] })] }) }))] }));
51
+ const emailCtaLabel = emailCard.ctaLabel || 'Send a message';
52
+ const emailCtaLink = emailCard.ctaLink || '/contact';
53
+ return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [heroConfig?.show !== false && (_jsxs("section", { ...section('aboutHeader'), className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", ...image('aboutHeader', ['heroImage']), 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: [heroBadgeText ? (_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" }), _jsx("span", { ...edit('aboutHeader', ['badgeText']), children: heroBadgeText })] })) : null, _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", ...edit('aboutHeader', ['title']), children: pageTitle }), _jsx("p", { className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light", ...edit('aboutHeader', ['missionStatement']), children: missionStatement })] }) }) })] })), storyConfig?.show !== false && (_jsxs("section", { ...section('aboutContent'), 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-12 lg:gap-20 items-start", children: [_jsx("div", { className: "relative", children: _jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", ...image('aboutContent', ['teamImage']), 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", ...edit('aboutContent', ['teamCaption']), children: storyCaptionTitle }), _jsx("p", { className: "text-white/80 text-sm", ...edit('aboutContent', ['teamSubCaption']), children: storyCaptionSubtitle })] })] }) }), _jsxs("div", { className: "flex flex-col gap-14 lg:gap-16 pt-4 lg:pt-2 lg:pl-2", children: [_jsxs("div", { className: "space-y-8", children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-[0.2em] mb-1 block", style: { color: primaryColor }, ...edit('aboutContent', ['subLabel']), children: storyLabel }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 tracking-tight leading-[1.1]", ...edit('aboutContent', ['heading']), children: storyTitle }), _jsx("div", { className: "prose prose-lg max-w-none text-gray-600 leading-[1.75] space-y-5", ...edit('aboutContent', ['content']), children: pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))) })] }), valuesItems.length > 0 && (_jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 pt-12 border-t border-gray-100", style: { columnGap: '2.5rem', rowGap: '3rem' }, children: valuesItems.map((item, idx) => (_jsxs("div", { className: "flex gap-5 group", ...payazaGroupBindingProps(isPreview, 'aboutContent', ['values', String(idx)]), 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` }, ...icon('aboutContent', ['values', String(idx), 'icon']), children: _jsx(DynamicIcon, { name: item.icon, className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { className: "min-w-0 pt-0.5", children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2.5 text-lg leading-snug", ...edit('aboutContent', ['values', String(idx), 'title']), children: item.title }), _jsx("p", { className: "text-gray-600 text-sm leading-relaxed", ...edit('aboutContent', ['values', String(idx), 'description']), children: typeof item.description === 'string' ? item.description : '' })] })] }, idx))) }))] })] }) })] })), statsConfig?.show !== false && statItems.length > 0 && (_jsxs("section", { ...section('statsSection'), 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 gap-8 md:gap-12 ${statGridCols}`, children: statItems.map((stat, idx) => (_jsxs("div", { className: "text-center group", ...payazaGroupBindingProps(isPreview, 'statsSection', ['items', String(idx)]), children: [_jsx("div", { className: "text-5xl md:text-6xl font-black mb-2 tracking-tight transition-transform group-hover:scale-110 duration-300", style: { color: primaryColor }, ...edit('statsSection', ['items', String(idx), 'value']), children: stat.value }), _jsx("div", { className: "text-gray-600 font-bold uppercase tracking-widest text-xs md:text-sm", ...edit('statsSection', ['items', String(idx), 'label']), children: stat.label })] }, stat.id ?? idx))) }) })] })), contactInfo?.show !== false && (_jsx("section", { ...section('contactSection'), className: "py-24 px-4 sm:px-6 lg:px-8 bg-white", children: _jsxs("div", { className: "container mx-auto max-w-6xl", children: [_jsxs("div", { className: "text-center mb-16", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", ...edit('contactSection', ['title']), children: contactInfo?.title || 'Get in Touch' }), _jsx("p", { className: "text-gray-500 max-w-xl mx-auto", ...edit('contactSection', ['description']), children: contactInfo?.description ||
54
+ "Have questions? We'd love to hear from you. Reach out to our team via email, phone, or visit us at our store." })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: [_jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", style: { ['--brand-primary']: primaryColor }, children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", ...icon('contactSection', ['visitCard', 'icon']), children: _jsx(DynamicIcon, { name: visitCard.icon || 'MapPin', className: "h-8 w-8 text-gray-400 transition-colors group-hover:text-[var(--brand-primary)]" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", ...edit('contactSection', ['visitCard', 'title']), children: visitCard.title || 'Visit Us' }), _jsx("p", { className: "text-gray-600 leading-relaxed whitespace-pre-line", ...edit('contactSection', ['visitCard', 'address']), children: visitCard.address || '123 Store Street\nCommerce City, ST 12345' })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", style: { ['--brand-primary']: primaryColor }, children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", ...icon('contactSection', ['emailCard', 'icon']), children: _jsx(DynamicIcon, { name: emailCard.icon || 'Mail', className: "h-8 w-8 text-gray-400 transition-colors group-hover:text-[var(--brand-primary)]" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", ...edit('contactSection', ['emailCard', 'title']), children: emailCard.title || 'Email Us' }), _jsxs("p", { className: "text-gray-600 leading-relaxed mb-4", children: [_jsx("span", { ...edit('contactSection', ['emailCard', 'email']), children: emailCard.email || `hello@${storeConfig.slug}.com` }), emailCard.emailSecondary ? (_jsxs(_Fragment, { children: [_jsx("br", {}), _jsx("span", { ...edit('contactSection', ['emailCard', 'emailSecondary']), children: emailCard.emailSecondary })] })) : (_jsxs(_Fragment, { children: [_jsx("br", {}), "support@", storeConfig.slug, ".com"] }))] }), _jsx(Button, { variant: "link", className: "font-bold p-0 h-auto hover:no-underline group-hover:translate-x-1 transition-transform", style: { color: primaryColor }, asChild: true, children: _jsxs(Link, { href: emailCtaLink, children: [emailCtaLabel, " ", _jsx(ArrowRight, { className: "ml-1 h-4 w-4 inline" })] }) })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", style: { ['--brand-primary']: primaryColor }, children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", ...icon('contactSection', ['hoursCard', 'icon']), children: _jsx(DynamicIcon, { name: hoursCard.icon || 'Clock', className: "h-8 w-8 text-gray-400 transition-colors group-hover:text-[var(--brand-primary)]" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", ...edit('contactSection', ['hoursCard', 'title']), children: hoursCard.title || 'Opening Hours' }), _jsx("p", { className: "text-gray-600 leading-relaxed whitespace-pre-line", ...edit('contactSection', ['hoursCard', 'hours']), children: hoursCard.hours || 'Mon - Fri: 9am - 6pm\nSat - Sun: 10am - 4pm' })] })] })] }) }))] }));
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContactPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/clothing-minimal/pages/ContactPage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvD,UAAU,gBAAgB;IACtB,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,gBAAgB,+BAmS3E"}
1
+ {"version":3,"file":"ContactPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/clothing-minimal/pages/ContactPage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvD,UAAU,gBAAgB;IACtB,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,gBAAgB,+BAgM3E"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState } from 'react';
4
4
  import { Button } from '../../../components/ui/button.js';
5
- import { Mail, Phone, MapPin, Clock, Send, MessageSquare, CheckCircle } from 'lucide-react';
5
+ import { Send, CheckCircle } from 'lucide-react';
6
6
  import { useStore } from '../../../lib/store-context.js';
7
7
  import Image from 'next/image';
8
8
  import { submitContact } from '../../../lib/services/contact.service.js';
@@ -46,5 +46,5 @@ export function ContactPage({ storeConfig: initialConfig }) {
46
46
  setErrorMessage('Failed to send message. Please try again.');
47
47
  }
48
48
  };
49
- return (_jsxs("div", { className: "min-h-screen bg-white pb-20", children: [contactConfig?.contactHeader?.show !== false && (_jsxs("section", { "data-section": "hero", className: "relative bg-gray-900 text-white py-20 overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0 opacity-20", children: [_jsx(Image, { src: contactConfig?.backgroundImage || "https://images.unsplash.com/photo-1596524430615-b46475ddff6e?q=80&w=2070&auto=format&fit=crop", alt: "Contact Background", fill: true, className: "w-full h-full object-cover" }), _jsx("div", { className: "absolute inset-0 bg-black/60" })] }), _jsxs("div", { className: "container mx-auto px-4 relative z-10 text-center", children: [_jsx("h1", { className: "text-4xl md:text-6xl font-bold mb-4 tracking-tight", children: contactConfig?.contactHeader?.title || contactConfig?.title || "Get in Touch" }), _jsx("p", { className: "text-xl text-gray-300 max-w-2xl mx-auto font-light", children: contactConfig?.contactHeader?.subtitle || contactConfig?.subtitle || "We'd love to hear from you. Here's how you can reach us." })] })] })), _jsx("div", { "data-section": "form", className: "container mx-auto px-4 -mt-10 relative z-20 max-w-6xl", children: _jsxs("div", { className: "bg-white rounded-3xl shadow-xl overflow-hidden border border-gray-100 flex flex-col lg:flex-row", children: [_jsxs("div", { className: "lg:w-2/5 p-8 md:p-12 text-white relative overflow-hidden", style: { backgroundColor: 'var(--store-primary)' }, children: [_jsx("div", { className: "absolute top-0 right-0 -mt-10 -mr-10 w-40 h-40 bg-white opacity-10 rounded-full blur-2xl" }), _jsx("div", { className: "absolute bottom-0 left-0 -mb-10 -ml-10 w-40 h-40 bg-black opacity-10 rounded-full blur-2xl" }), _jsx("h2", { className: "text-2xl font-bold mb-8 relative z-10", children: contactConfig?.infoTitle || "Contact Information" }), _jsx("p", { className: "mb-10 text-white/90 leading-relaxed relative z-10", children: contactConfig?.infoDescription || "Fill out the form and our team will get back to you within 24 hours." }), _jsxs("div", { className: "space-y-8 relative z-10", children: [_jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(Phone, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Call Us" }), _jsx("p", { className: "text-white/80", children: "+1 (555) 123-4567" }), _jsx("p", { className: "text-white/80", children: "+1 (555) 987-6543" })] })] }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(Mail, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Email Us" }), _jsxs("p", { className: "text-white/80", children: ["hello@", storeConfig.slug, ".com"] }), _jsxs("p", { className: "text-white/80", children: ["support@", storeConfig.slug, ".com"] })] })] }), _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(MapPin, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Visit Us" }), _jsxs("p", { className: "text-white/80", children: ["123 Commerce Blvd,", _jsx("br", {}), "Suite 100,", _jsx("br", {}), "Business City, ST 12345"] })] })] }), contactConfig?.contactForm?.showHours !== false && (_jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center flex-shrink-0", children: _jsx(Clock, { className: "w-5 h-5 text-white" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-white mb-1", children: "Opening Hours" }), _jsx("p", { className: "text-white/80", children: "Mon - Fri: 9am - 6pm" }), _jsx("p", { className: "text-white/80", children: "Sat: 10am - 4pm" })] })] }))] }), contactConfig?.contactForm?.showSocialLinks !== false && (_jsx("div", { className: "mt-12 relative z-10", children: _jsx("div", { className: "flex gap-4", children: [1, 2, 3, 4].map((i) => (_jsx("div", { className: "w-8 h-8 rounded-full bg-white/20 hover:bg-white/30 cursor-pointer transition-colors" }, i))) }) }))] }), contactConfig?.contactForm?.showForm !== false && (_jsxs("div", { className: "lg:w-3/5 p-8 md:p-12 bg-white relative", children: [_jsx("div", { className: "absolute top-0 right-0 p-6 opacity-5", children: _jsx(MessageSquare, { className: "w-32 h-32" }) }), formState === 'success' ? (_jsxs("div", { className: "h-full flex flex-col items-center justify-center text-center py-10", children: [_jsx("div", { className: "w-20 h-20 bg-green-100 rounded-full flex items-center justify-center mb-6", children: _jsx(CheckCircle, { className: "w-10 h-10 text-green-600" }) }), _jsx("h3", { className: "text-2xl font-bold text-gray-900 mb-2", children: "Message Sent!" }), _jsx("p", { className: "text-gray-600 max-w-sm mx-auto mb-8", children: "Thank you for contacting us. We have received your message and will respond as soon as possible." }), _jsx(Button, { onClick: () => setFormState('idle'), className: "bg-gray-900 hover:bg-gray-800", children: "Send Another Message" })] })) : (_jsxs("form", { onSubmit: handleSubmit, className: "relative z-10 space-y-6", children: [errorMessage && (_jsx("p", { className: "text-sm text-red-600 bg-red-50 p-3 rounded-xl", children: errorMessage })), _jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-6", children: "Send us a Message" }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "firstName", className: "text-sm font-medium text-gray-700", children: "First Name" }), _jsx("input", { type: "text", id: "firstName", required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "John" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "lastName", className: "text-sm font-medium text-gray-700", children: "Last Name" }), _jsx("input", { type: "text", id: "lastName", required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "Doe" })] })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "email", className: "text-sm font-medium text-gray-700", children: "Email Address" }), _jsx("input", { type: "email", id: "email", required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "john@example.com" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "phone", className: "text-sm font-medium text-gray-700", children: "Phone (Optional)" }), _jsx("input", { type: "tel", id: "phone", className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "+1 (555) 000-0000" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "subject", className: "text-sm font-medium text-gray-700", children: "Subject" }), _jsxs("select", { id: "subject", className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", children: [_jsx("option", { value: "general", children: "General Inquiry" }), _jsx("option", { value: "support", children: "Customer Support" }), _jsx("option", { value: "orders", children: "Order Status & Returns" }), _jsx("option", { value: "size", children: "Sizing & Styling Advice" }), _jsx("option", { value: "wholesale", children: "Wholesale & Partnerships" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "message", className: "text-sm font-medium text-gray-700", children: "Message" }), _jsx("textarea", { id: "message", rows: 4, required: true, className: "w-full px-4 py-3 rounded-xl bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all resize-none", placeholder: "How can we help you today?" })] }), _jsx("div", { className: "pt-2", children: _jsx(Button, { type: "submit", disabled: formState === 'submitting', className: "w-full py-6 text-lg font-semibold rounded-xl", style: { backgroundColor: 'var(--store-primary)' }, children: formState === 'submitting' ? (_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-4 h-4 border-2 border-white/20 border-t-white rounded-full animate-spin" }), "Sending..."] })) : (_jsxs("span", { className: "flex items-center gap-2", children: ["Send Message", _jsx(Send, { className: "w-4 h-4" })] })) }) })] }))] }))] }) }), contactConfig?.contactForm?.showMap !== false && (_jsx("section", { "data-section": "map", className: "container mx-auto px-4 mt-20 max-w-6xl", children: _jsxs("div", { className: "bg-gray-100 rounded-3xl overflow-hidden h-96 w-full relative grayscale hover:grayscale-0 transition-all duration-500", children: [_jsx("iframe", { src: "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3024.2219901290355!2d-74.00369368400567!3d40.71312937933185!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a23e28c1191%3A0x49f75d3281df052a!2s150%20Park%20Row%2C%20New%20York%2C%20NY%2010007!5e0!3m2!1sen!2sus!4v1620000000000!5m2!1sen!2sus", width: "100%", height: "100%", style: { border: 0 }, allowFullScreen: true, loading: "lazy", title: "Store Location" }), _jsxs("div", { className: "absolute top-4 right-4 bg-white p-4 rounded-xl shadow-lg z-10 hidden md:block", children: [_jsx("p", { className: "font-bold text-gray-900", children: storeConfig.name }), _jsx("p", { className: "text-sm text-gray-500", children: "123 Commerce Blvd" })] })] }) }))] }));
49
+ return (_jsxs("div", { className: "min-h-screen bg-white pb-20", children: [contactConfig?.contactHeader?.show !== false && (_jsxs("section", { "data-section": "hero", className: "relative bg-gray-900 text-white py-20 overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0 opacity-20", children: [_jsx(Image, { src: contactConfig?.backgroundImage || "https://images.unsplash.com/photo-1596524430615-b46475ddff6e?q=80&w=2070&auto=format&fit=crop", alt: "Contact Background", fill: true, className: "w-full h-full object-cover" }), _jsx("div", { className: "absolute inset-0 bg-black/60" })] }), _jsxs("div", { className: "container mx-auto px-4 relative z-10 text-center", children: [_jsx("h1", { className: "text-4xl md:text-6xl font-bold mb-4 tracking-tight", children: contactConfig?.contactHeader?.title || contactConfig?.title || "Get in Touch" }), _jsx("p", { className: "text-xl text-gray-300 max-w-2xl mx-auto font-light", children: contactConfig?.contactHeader?.subtitle || contactConfig?.subtitle || "We'd love to hear from you. Here's how you can reach us." })] })] })), _jsx("div", { "data-section": "form", className: "container mx-auto px-4 py-12 relative max-w-6xl", children: _jsx("div", { className: "bg-white shadow-xl overflow-hidden border border-gray-100 ", children: contactConfig?.contactForm?.showForm !== false && (_jsx("div", { className: "w-full p-8 md:p-12 bg-white relative", children: formState === 'success' ? (_jsxs("div", { className: "h-full flex flex-col items-center justify-center text-center py-10", children: [_jsx("div", { className: "w-20 h-20 bg-green-100 flex items-center justify-center mb-6", children: _jsx(CheckCircle, { className: "w-10 h-10 text-green-600" }) }), _jsx("h3", { className: "text-2xl font-bold text-gray-900 mb-2", children: "Message Sent!" }), _jsx("p", { className: "text-gray-600 max-w-sm mx-auto mb-8", children: "Thank you for contacting us. We have received your message and will respond as soon as possible." }), _jsx(Button, { onClick: () => setFormState('idle'), className: "bg-gray-900 hover:bg-gray-800", children: "Send Another Message" })] })) : (_jsxs("form", { onSubmit: handleSubmit, className: "relative z-10 space-y-6", children: [errorMessage && (_jsx("p", { className: "text-sm text-red-600 bg-red-50 p-3", children: errorMessage })), _jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-6", children: "Send us a Message" }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "firstName", className: "text-sm font-medium text-gray-700", children: "First Name" }), _jsx("input", { type: "text", id: "firstName", required: true, className: "w-full px-4 py-3 bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "John" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "lastName", className: "text-sm font-medium text-gray-700", children: "Last Name" }), _jsx("input", { type: "text", id: "lastName", required: true, className: "w-full px-4 py-3 bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "Doe" })] })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "email", className: "text-sm font-medium text-gray-700", children: "Email Address" }), _jsx("input", { type: "email", id: "email", required: true, className: "w-full px-4 py-3 bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "john@example.com" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "phone", className: "text-sm font-medium text-gray-700", children: "Phone (Optional)" }), _jsx("input", { type: "tel", id: "phone", className: "w-full px-4 py-3 bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", placeholder: "+1 (555) 000-0000" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "subject", className: "text-sm font-medium text-gray-700", children: "Subject" }), _jsxs("select", { id: "subject", className: "w-full px-4 py-3 bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all", children: [_jsx("option", { value: "general", children: "General Inquiry" }), _jsx("option", { value: "support", children: "Customer Support" }), _jsx("option", { value: "orders", children: "Order Status & Returns" }), _jsx("option", { value: "size", children: "Sizing & Styling Advice" }), _jsx("option", { value: "wholesale", children: "Wholesale & Partnerships" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "message", className: "text-sm font-medium text-gray-700", children: "Message" }), _jsx("textarea", { id: "message", rows: 4, required: true, className: "w-full px-4 py-3 bg-gray-50 border border-gray-200 focus:border-gray-900 focus:ring-0 outline-none transition-all resize-none", placeholder: "How can we help you today?" })] }), _jsx("div", { className: "pt-2", children: _jsx(Button, { type: "submit", disabled: formState === 'submitting', className: "w-full py-6 text-lg font-semibold", style: { backgroundColor: 'var(--store-primary)' }, children: formState === 'submitting' ? (_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-4 h-4 border-2 border-white/20 border-t-white rounded-full animate-spin" }), "Sending..."] })) : (_jsxs("span", { className: "flex items-center gap-2", children: ["Send Message", _jsx(Send, { className: "w-4 h-4" })] })) }) })] })) })) }) })] }));
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ElectronicsStoreFooter.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsStoreFooter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,UAAU,2BAA2B;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,EAAE,WAAW,EAAE,EAAE,2BAA2B,+BAgHlF"}
1
+ {"version":3,"file":"ElectronicsStoreFooter.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/components/ElectronicsStoreFooter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,UAAU,2BAA2B;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,EAAE,WAAW,EAAE,EAAE,2BAA2B,+BAqGlF"}
@@ -8,5 +8,5 @@ import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt.j
8
8
  export function ElectronicsStoreFooter({ storeConfig }) {
9
9
  const bgDark = getThemeColor(storeConfig, 'background', 'dark', '#0F172A');
10
10
  const textSecondary = getThemeColor(storeConfig, 'text', 'secondary', '#CBD5E1');
11
- return (_jsx("footer", { className: "pt-20 pb-10", style: { backgroundColor: bgDark, color: textSecondary }, 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-12 mb-16", children: [_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx("div", { className: "w-10 h-10 bg-blue-600 rounded-xl flex items-center justify-center shadow-lg shadow-blue-900/50", children: _jsx(Zap, { className: "h-5 w-5 text-white", fill: "currentColor" }) }), _jsx("span", { className: "font-black text-2xl tracking-tight text-white", children: storeConfig.name })] }), _jsx(RichTextExcerpt, { value: storeConfig.description || "Leading the future of technology with premium electronics and cutting-edge innovation.", as: "p", className: "text-slate-400 leading-relaxed" }), storeConfig.branding.socialMedia && (_jsxs("div", { className: "flex gap-4", children: [storeConfig.branding.socialMedia.facebook && (_jsx(Link, { href: storeConfig.branding.socialMedia.facebook, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Facebook, { className: "h-4 w-4" }) })), storeConfig.branding.socialMedia.twitter && (_jsx(Link, { href: storeConfig.branding.socialMedia.twitter, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Twitter, { className: "h-4 w-4" }) })), storeConfig.branding.socialMedia.instagram && (_jsx(Link, { href: storeConfig.branding.socialMedia.instagram, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Instagram, { className: "h-4 w-4" }) }))] }))] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Shop" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products`, className: "hover:text-blue-400 transition-colors", children: "All Products" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products?sort=newest`, className: "hover:text-blue-400 transition-colors", children: getLayoutText(storeConfig, 'electronics.newArrivals', 'New Arrivals') }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/categories`, className: "hover:text-blue-400 transition-colors", children: "Collections" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products?sale=true`, className: "hover:text-blue-400 transition-colors", children: "Deals & Offers" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Support" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/help-center`, className: "hover:text-blue-400 transition-colors", children: "Help Center" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/track-order`, className: "hover:text-blue-400 transition-colors", children: "Track Order" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/help-center`, className: "hover:text-blue-400 transition-colors", children: "Warranty Info" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/style-guide`, className: "hover:text-blue-400 transition-colors", children: "Style Guide" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Contact" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsxs("li", { className: "flex items-start gap-3", children: [_jsx(MapPin, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsx("span", { children: "123 Tech Avenue, Silicon Valley, CA 94025" })] }), _jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Phone, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsx("span", { children: "+1 (555) 123-4567" })] }), _jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Mail, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsxs("span", { children: ["support@", storeConfig.slug.replace(/-/g, ''), ".com"] })] })] })] })] }), _jsxs("div", { className: "pt-8 border-t border-slate-900 flex flex-col md:flex-row justify-between items-center gap-4 text-xs font-medium text-slate-500", children: [_jsxs("div", { className: "flex gap-6", children: [_jsx(Link, { href: `/${storeConfig.slug}/privacy`, className: "hover:text-white transition-colors", children: "Privacy Policy" }), _jsx(Link, { href: `/${storeConfig.slug}/terms`, className: "hover:text-white transition-colors", children: "Terms of Service" }), _jsx(Link, { href: `/${storeConfig.slug}/cookie-policy`, className: "hover:text-white transition-colors", children: "Cookie Policy" })] }), _jsx("div", { children: getLayoutText(storeConfig, 'footer.copyright', `© ${getCurrentYear()} ${storeConfig.name}. All rights reserved.`) })] })] }) }));
11
+ return (_jsx("footer", { className: "pt-20 pb-10", style: { backgroundColor: bgDark, color: textSecondary }, 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-12 mb-16", children: [_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx("div", { className: "w-10 h-10 bg-blue-600 rounded-xl flex items-center justify-center shadow-lg shadow-blue-900/50", children: _jsx(Zap, { className: "h-5 w-5 text-white", fill: "currentColor" }) }), _jsx("span", { className: "font-black text-2xl tracking-tight text-white", children: storeConfig.name })] }), _jsx(RichTextExcerpt, { value: storeConfig.description || "Leading the future of technology with premium electronics and cutting-edge innovation.", as: "p", className: "text-slate-400 leading-relaxed" }), storeConfig.branding.socialMedia && (_jsxs("div", { className: "flex gap-4", children: [storeConfig.branding.socialMedia.facebook && (_jsx(Link, { href: storeConfig.branding.socialMedia.facebook, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Facebook, { className: "h-4 w-4" }) })), storeConfig.branding.socialMedia.twitter && (_jsx(Link, { href: storeConfig.branding.socialMedia.twitter, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Twitter, { className: "h-4 w-4" }) })), storeConfig.branding.socialMedia.instagram && (_jsx(Link, { href: storeConfig.branding.socialMedia.instagram, target: "_blank", rel: "noopener noreferrer", className: "rounded-full bg-slate-900 text-slate-400 hover:bg-blue-600 hover:text-white transition-all h-10 w-10 flex items-center justify-center", children: _jsx(Instagram, { className: "h-4 w-4" }) }))] }))] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Shop" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products`, className: "hover:text-blue-400 transition-colors", children: "All Products" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products?sort=newest`, className: "hover:text-blue-400 transition-colors", children: getLayoutText(storeConfig, 'electronics.newArrivals', 'New Arrivals') }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/categories`, className: "hover:text-blue-400 transition-colors", children: "Collections" }) }), _jsx("li", { children: _jsx(Link, { href: `/${storeConfig.slug}/products?sale=true`, className: "hover:text-blue-400 transition-colors", children: "Deals & Offers" }) })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-white mb-6", children: "Contact" }), _jsxs("ul", { className: "space-y-4 text-sm font-medium", children: [_jsxs("li", { className: "flex items-start gap-3", children: [_jsx(MapPin, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsx("span", { children: "123 Tech Avenue, Silicon Valley, CA 94025" })] }), _jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Phone, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsx("span", { children: "+1 (555) 123-4567" })] }), _jsxs("li", { className: "flex items-center gap-3", children: [_jsx(Mail, { className: "h-5 w-5 text-blue-500 shrink-0" }), _jsxs("span", { children: ["support@", storeConfig.slug.replace(/-/g, ''), ".com"] })] })] })] })] }), _jsxs("div", { className: "pt-8 border-t border-slate-900 flex flex-col md:flex-row justify-between items-center gap-4 text-xs font-medium text-slate-500", children: [_jsxs("div", { className: "flex gap-6", children: [_jsx(Link, { href: `/${storeConfig.slug}/privacy`, className: "hover:text-white transition-colors", children: "Privacy Policy" }), _jsx(Link, { href: `/${storeConfig.slug}/terms`, className: "hover:text-white transition-colors", children: "Terms of Service" }), _jsx(Link, { href: `/${storeConfig.slug}/cookie-policy`, className: "hover:text-white transition-colors", children: "Cookie Policy" })] }), _jsx("div", { children: getLayoutText(storeConfig, 'footer.copyright', `© ${getCurrentYear()} ${storeConfig.name}. All rights reserved.`) })] })] }) }));
12
12
  }
@@ -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;AAchD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,+BAiPvE"}
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;AAmBhD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,+BA6NvE"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { Users, Award, Heart, Leaf, MapPin, Clock, Mail, ArrowRight } from 'lucide-react';
3
+ import { Heart, MapPin, Clock, Mail, ArrowRight } from 'lucide-react';
4
4
  import { Button } from '../../../components/ui/button.js';
5
5
  import { DotPattern } from '../../../components/ui/background-patterns.js';
6
6
  import { useStore } from '../../../lib/store-context.js';
@@ -8,6 +8,8 @@ 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
10
  import { storySectionImage, storyTeamSubtitle, storyTeamTitle, } from '../../shared/about-story-media.js';
11
+ import { CLOTHING_DEFAULT_ABOUT_VALUES, resolveAboutPageValueItems, } from '../../booking/components/booking-about-defaults.js';
12
+ import { DynamicIcon } from '../../../components/ui/dynamic-icon.js';
11
13
  export function AboutPage({ storeConfig: initialConfig }) {
12
14
  const { store } = useStore();
13
15
  const storeConfig = store || initialConfig;
@@ -24,29 +26,10 @@ export function AboutPage({ storeConfig: initialConfig }) {
24
26
  const storyImage = storySectionImage(storyConfig);
25
27
  const storyCaptionTitle = storyTeamTitle(storyConfig);
26
28
  const storyCaptionSubtitle = storyTeamSubtitle(storyConfig);
27
- const values = [
28
- {
29
- icon: Award,
30
- title: "Cutting Edge",
31
- description: "We bring you the latest innovations and newest gadgets first."
32
- },
33
- {
34
- icon: Users,
35
- title: "Tech Support",
36
- description: "Our experts are always here to help you set up and troubleshoot."
37
- },
38
- {
39
- icon: Heart,
40
- title: "Quality Assured",
41
- description: "Every product is tested for performance and durability."
42
- },
43
- {
44
- icon: Leaf,
45
- title: "Eco-Tech",
46
- description: "Promoting energy-efficient devices and responsible e-waste disposal."
47
- }
48
- ];
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: [
29
+ const valuesConfig = aboutConfig?.values || storeConfig.layoutConfig?.sections?.values;
30
+ const valuesItems = resolveAboutPageValueItems(storeConfig.layoutConfig, CLOTHING_DEFAULT_ABOUT_VALUES);
31
+ 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: valuesConfig?.show !== false &&
32
+ valuesItems.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(DynamicIcon, { name: 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: [
50
33
  { label: "Devices Sold", value: "50k+" },
51
34
  { label: "Products", value: storeConfig.products?.length ? `${storeConfig.products.length}+` : "100+" },
52
35
  { label: "Years in Tech", value: "12+" },
@@ -1 +1 @@
1
- {"version":3,"file":"ContactPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/pages/ContactPage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,UAAU,gBAAgB;IACtB,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,gBAAgB,+BA0S3E"}
1
+ {"version":3,"file":"ContactPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/electronics/pages/ContactPage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,UAAU,gBAAgB;IACtB,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,gBAAgB,+BAgM3E"}