165 lines
6.4 KiB
TypeScript
165 lines
6.4 KiB
TypeScript
'use client';
|
|
|
|
import React, { useState } from 'react';
|
|
import Link from 'next/link';
|
|
import { Button } from '@/components/ui/Button';
|
|
import en from '@/i18n/en.json';
|
|
|
|
export default function MarketingLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
|
|
// Always use English for marketing pages
|
|
const t = en;
|
|
|
|
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 sm:px-6 lg:px-8 max-w-7xl py-4">
|
|
<div className="flex items-center justify-between">
|
|
{/* Logo */}
|
|
<Link href="/" className="flex items-center space-x-2">
|
|
<img src="/favicon.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">
|
|
<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 sm:px-6 lg:px-8 max-w-7xl">
|
|
<div className="grid md:grid-cols-4 gap-8">
|
|
<div>
|
|
<Link href="/" className="flex items-center space-x-2 mb-4 hover:opacity-80 transition-opacity">
|
|
<img src="/logo.svg" alt="QR Master" className="w-10 h-10" />
|
|
<span className="text-xl font-bold">QR Master</span>
|
|
</Link>
|
|
<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">Resources</h3>
|
|
<ul className="space-y-2 text-gray-400">
|
|
<li><Link href="/pricing" className="hover:text-white">Full Pricing</Link></li>
|
|
<li><Link href="/faq" className="hover:text-white">All Questions</Link></li>
|
|
<li><Link href="/blog" className="hover:text-white">Blog</Link></li>
|
|
<li><Link href="/signup" className="hover:text-white">Get Started</Link></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div>
|
|
<h3 className="font-semibold mb-4">Legal</h3>
|
|
<ul className="space-y-2 text-gray-400">
|
|
<li><Link href="/privacy" className="hover:text-white">Privacy Policy</Link></li>
|
|
</ul>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="border-t border-gray-800 mt-8 pt-8 flex items-center justify-between text-gray-400">
|
|
<Link
|
|
href="/newsletter"
|
|
className="text-xs hover:text-white transition-colors flex items-center gap-1.5 opacity-50 hover:opacity-100"
|
|
>
|
|
<svg className="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" />
|
|
</svg>
|
|
Admin
|
|
</Link>
|
|
<p>© 2025 QR Master. All rights reserved.</p>
|
|
<div className="w-12"></div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
);
|
|
} |