165 lines
6.3 KiB
TypeScript
165 lines
6.3 KiB
TypeScript
'use client';
|
|
|
|
import React, { useState } from 'react';
|
|
import Link from 'next/link';
|
|
import { usePathname } from 'next/navigation';
|
|
import { Button } from '@/components/ui/Button';
|
|
import { useTranslation } from '@/hooks/useTranslation';
|
|
|
|
export default function MarketingLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
const pathname = usePathname();
|
|
const { t, locale, setLocale } = useTranslation();
|
|
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
|
|
const navigation = [
|
|
{ name: t('nav.features'), href: '/#features' },
|
|
{ name: t('nav.pricing'), href: '/pricing' },
|
|
{ name: t('nav.faq'), href: '/faq' },
|
|
{ name: t('nav.blog'), href: '/blog' },
|
|
];
|
|
|
|
return (
|
|
<div className="min-h-screen bg-white">
|
|
{/* Header */}
|
|
<header className="sticky top-0 z-50 bg-white border-b border-gray-200">
|
|
<nav className="container mx-auto px-4 py-4">
|
|
<div className="flex items-center justify-between">
|
|
{/* Logo */}
|
|
<Link href="/" className="flex items-center space-x-2">
|
|
<img src="/logo.svg" alt="QR Master" className="w-8 h-8" />
|
|
<span className="text-xl font-bold text-gray-900">QR Master</span>
|
|
</Link>
|
|
|
|
{/* Desktop Navigation */}
|
|
<div className="hidden md:flex items-center space-x-8">
|
|
{navigation.map((item) => (
|
|
<Link
|
|
key={item.name}
|
|
href={item.href}
|
|
className="text-gray-600 hover:text-gray-900 font-medium transition-colors"
|
|
>
|
|
{item.name}
|
|
</Link>
|
|
))}
|
|
</div>
|
|
|
|
{/* Right Actions */}
|
|
<div className="hidden md:flex items-center space-x-4">
|
|
{/* Language Switcher */}
|
|
<button
|
|
onClick={() => setLocale(locale === 'en' ? 'de' : 'en')}
|
|
className="text-gray-600 hover:text-gray-900 font-medium"
|
|
>
|
|
{locale === 'en' ? '🇩🇪 DE' : '🇬🇧 EN'}
|
|
</button>
|
|
|
|
<Link href="/login">
|
|
<Button variant="outline">{t('nav.login')}</Button>
|
|
</Link>
|
|
|
|
<Link href="/signup">
|
|
<Button>Get Started Free</Button>
|
|
</Link>
|
|
</div>
|
|
|
|
{/* Mobile Menu Button */}
|
|
<button
|
|
className="md:hidden"
|
|
onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
|
|
>
|
|
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
{mobileMenuOpen ? (
|
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
|
|
) : (
|
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" />
|
|
)}
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
|
|
{/* Mobile Menu */}
|
|
{mobileMenuOpen && (
|
|
<div className="md:hidden mt-4 pb-4 border-t border-gray-200 pt-4">
|
|
<div className="flex flex-col space-y-4">
|
|
{navigation.map((item) => (
|
|
<Link
|
|
key={item.name}
|
|
href={item.href}
|
|
className="text-gray-600 hover:text-gray-900 font-medium"
|
|
onClick={() => setMobileMenuOpen(false)}
|
|
>
|
|
{item.name}
|
|
</Link>
|
|
))}
|
|
<Link href="/login" onClick={() => setMobileMenuOpen(false)}>
|
|
<Button variant="outline" className="w-full">{t('nav.login')}</Button>
|
|
</Link>
|
|
<Link href="/signup" onClick={() => setMobileMenuOpen(false)}>
|
|
<Button className="w-full">Get Started Free</Button>
|
|
</Link>
|
|
</div>
|
|
</div>
|
|
)}
|
|
</nav>
|
|
</header>
|
|
|
|
{/* Main Content */}
|
|
<main>{children}</main>
|
|
|
|
{/* Footer */}
|
|
<footer className="bg-gray-900 text-white py-12 mt-20">
|
|
<div className="container mx-auto px-4">
|
|
<div className="grid md:grid-cols-4 gap-8">
|
|
<div>
|
|
<div className="flex items-center space-x-2 mb-4">
|
|
<img src="/logo.svg" alt="QR Master" className="w-8 h-8 brightness-0 invert" />
|
|
<span className="text-xl font-bold">QR Master</span>
|
|
</div>
|
|
<p className="text-gray-400">
|
|
Create custom QR codes in seconds with advanced tracking and analytics.
|
|
</p>
|
|
</div>
|
|
|
|
<div>
|
|
<h3 className="font-semibold mb-4">Product</h3>
|
|
<ul className="space-y-2 text-gray-400">
|
|
<li><Link href="/#features" className="hover:text-white">Features</Link></li>
|
|
<li><Link href="/pricing" className="hover:text-white">Pricing</Link></li>
|
|
<li><Link href="/faq" className="hover:text-white">FAQ</Link></li>
|
|
<li><Link href="/blog" className="hover:text-white">Blog</Link></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div>
|
|
<h3 className="font-semibold mb-4">Company</h3>
|
|
<ul className="space-y-2 text-gray-400">
|
|
<li><a href="#" className="hover:text-white">About</a></li>
|
|
<li><a href="#" className="hover:text-white">Careers</a></li>
|
|
<li><a href="#" className="hover:text-white">Contact</a></li>
|
|
<li><a href="#" className="hover:text-white">Partners</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div>
|
|
<h3 className="font-semibold mb-4">Legal</h3>
|
|
<ul className="space-y-2 text-gray-400">
|
|
<li><a href="#" className="hover:text-white">Privacy Policy</a></li>
|
|
<li><a href="#" className="hover:text-white">Terms of Service</a></li>
|
|
<li><a href="#" className="hover:text-white">Cookie Policy</a></li>
|
|
<li><a href="#" className="hover:text-white">GDPR</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="border-t border-gray-800 mt-8 pt-8 text-center text-gray-400">
|
|
<p>© 2024 QR Master. All rights reserved.</p>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
);
|
|
} |