{/* Logo */}
{headerSettings.elements.logo && (
{storeLogo ? (
) : (
<>
W
{storeName}
>
)}
)}
{/* Navigation */}
{headerSettings.elements.navigation && (
Shop
About
Contact
)}
{/* Actions - Hidden on mobile when using bottom-nav */}
{hasActions && (
{/* Search */}
{headerSettings.elements.search && (
setSearchOpen(true)}
className="font-[inherit] flex items-center gap-2 px-3 py-2 hover:bg-gray-100 rounded-lg transition-colors"
>
)}
{/* Account */}
{headerSettings.elements.account && (user?.isLoggedIn ? (
Account
) : (
Account
))}
{/* Wishlist */}
{headerSettings.elements.wishlist && isEnabled('wishlist') && (wishlistSettings.show_in_header ?? true) && (
Wishlist
)}
{/* Cart */}
{headerSettings.elements.cart && (
{itemCount > 0 && (
{itemCount}
)}
Cart ({itemCount})
)}
{/* Mobile Menu Toggle - Only for hamburger and slide-in */}
{(headerSettings.mobile_menu === 'hamburger' || headerSettings.mobile_menu === 'slide-in') && (
setMobileMenuOpen(!mobileMenuOpen)}
>
{mobileMenuOpen ? : }
)}
)}
{/* Mobile Menu - Hamburger Dropdown */}
{headerSettings.mobile_menu === 'hamburger' && mobileMenuOpen && (
{headerSettings.elements.navigation && (
Shop
About
Contact
)}
)}
{/* Mobile Menu - Slide-in Drawer */}
{headerSettings.mobile_menu === 'slide-in' && mobileMenuOpen && (
<>
setMobileMenuOpen(false)} />
>
)}
>
);
const footerContent = (
<>
{/* Mobile Menu - Bottom Navigation */}
{headerSettings.mobile_menu === 'bottom-nav' && (
Shop
{headerSettings.elements.search && (
setSearchOpen(true)}
className="font-[inherit] flex flex-col items-center gap-1 px-4 py-2 text-xs font-medium text-gray-700 hover:text-gray-900"
>
Search
)}
{headerSettings.elements.cart && (
{itemCount > 0 && (
{itemCount}
)}
Cart
)}
{headerSettings.elements.account && (
user?.isLoggedIn ? (
Account
) : (
Login
)
)}
)}
>
);
return (
{children}
);
}
/**
* Modern Layout - Minimalist, clean
*/
function ModernLayout({ children }: BaseLayoutProps) {
const { cart } = useCartStore();
const itemCount = cart.items.reduce((sum, item) => sum + item.quantity, 0);
const storeLogo = (window as any).woonoowCustomer?.storeLogo;
const storeName = (window as any).woonoowCustomer?.storeName || (window as any).woonoowCustomer?.siteTitle || 'Store Title';
const user = (window as any).woonoowCustomer?.user;
const headerSettings = useHeaderSettings();
const { isEnabled } = useModules();
const { settings: wishlistSettings } = useModuleSettings('wishlist');
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const [searchOpen, setSearchOpen] = useState(false);
const paddingClass = headerSettings.height === 'compact' ? 'py-4' : headerSettings.height === 'tall' ? 'py-8' : 'py-6';
const hasActions = headerSettings.elements.search || headerSettings.elements.account || headerSettings.elements.cart || headerSettings.elements.wishlist;
return (
setSearchOpen(false)} />
{children}
);
}
/**
* Boutique Layout - Luxury, elegant
*/
function BoutiqueLayout({ children }: BaseLayoutProps) {
const { cart } = useCartStore();
const itemCount = cart.items.reduce((sum, item) => sum + item.quantity, 0);
const storeLogo = (window as any).woonoowCustomer?.storeLogo;
const storeName = (window as any).woonoowCustomer?.storeName || (window as any).woonoowCustomer?.siteTitle || 'BOUTIQUE';
const user = (window as any).woonoowCustomer?.user;
const headerSettings = useHeaderSettings();
const { isEnabled } = useModules();
const { settings: wishlistSettings } = useModuleSettings('wishlist');
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
const [searchOpen, setSearchOpen] = useState(false);
const heightClass = headerSettings.height === 'compact' ? 'h-20' : headerSettings.height === 'tall' ? 'h-28' : 'h-24';
const hasActions = headerSettings.elements.search || headerSettings.elements.account || headerSettings.elements.cart || headerSettings.elements.wishlist;
return (
setSearchOpen(false)} />
{children}
);
}
/**
* Launch Layout - Single product funnel
* Note: Landing page is custom (user's page builder)
* WooNooW only takes over from checkout onwards
*/
function LaunchLayout({ children }: BaseLayoutProps) {
const isCheckoutFlow = window.location.pathname.includes('/checkout') ||
window.location.pathname.includes('/my-account') ||
window.location.pathname.includes('/order-received');
if (!isCheckoutFlow) {
// For non-checkout pages, use minimal layout
return (
{children}
);
}
// For checkout flow: minimal header, no footer
const storeLogo = (window as any).woonoowCustomer?.storeLogo;
const storeName = (window as any).woonoowCustomer?.storeName || (window as any).woonoowCustomer?.siteTitle || 'Store Title';
const headerSettings = useHeaderSettings();
const heightClass = headerSettings.height === 'compact' ? 'h-12' : headerSettings.height === 'tall' ? 'h-20' : 'h-16';
return (
{headerSettings.elements.logo && (
{storeLogo ? (
) : (
{storeName}
)}
)}
{children}
{/* Minimal footer for checkout */}
);
}