feat: implement author pages, app layout, and authentication client infrastructure

This commit is contained in:
Timo Knuth
2026-04-08 19:39:01 +02:00
parent 14c3cde7e6
commit cc4afb6f51
17 changed files with 115 additions and 100 deletions

View File

@@ -6,11 +6,12 @@ import { usePathname } from 'next/navigation';
import { Button } from '@/components/ui/Button';
import { Footer } from '@/components/ui/Footer';
import en from '@/i18n/en.json';
import { ChevronDown, BookOpen, Building2, Wifi, Contact, MessageCircle, QrCode, Link2, Type, Mail, MessageSquare, Phone, Calendar, MapPin, Facebook, Instagram, Twitter, Youtube, Music, Bitcoin, CreditCard, Video, Users, Barcode as BarcodeIcon, Star } from 'lucide-react';
import { cn } from '@/lib/utils';
import { AnimatePresence, motion } from 'framer-motion';
import { allUseCases } from '@/lib/growth-pages';
import { industryPages } from '@/lib/industry-pages';
import { ChevronDown, BookOpen, Building2, Wifi, Contact, MessageCircle, Link2, Type, Mail, MessageSquare, Phone, Calendar, MapPin, Facebook, Instagram, Twitter, Youtube, Music, Bitcoin, CreditCard, Video, Users, Barcode as BarcodeIcon, Star } from 'lucide-react';
import { cn } from '@/lib/utils';
import { AnimatePresence, motion } from 'framer-motion';
import { allUseCases } from '@/lib/growth-pages';
import { industryPages } from '@/lib/industry-pages';
import Image from 'next/image';
export default function MarketingLayout({
children,
@@ -141,13 +142,20 @@ export default function MarketingLayout({
>
<nav className="container mx-auto px-4 sm:px-6 lg:px-8 max-w-7xl h-20 flex items-center justify-between">
{/* Logo */}
<Link href="/" className="flex items-center space-x-2.5 group">
<div className="relative w-9 h-9 flex items-center justify-center bg-indigo-600 rounded-lg shadow-indigo-200 shadow-lg group-hover:scale-105 transition-transform duration-200">
<QrCode className="w-5 h-5 text-white" />
</div>
<span className="text-xl font-bold text-slate-900 tracking-tight group-hover:text-indigo-600 transition-colors">QR Master</span>
</Link>
{/* Logo */}
<Link href="/" className="flex items-center space-x-3 group">
<div className="relative w-16 h-16 overflow-hidden rounded-full shadow-indigo-200 shadow-lg group-hover:scale-105 transition-transform duration-200">
<Image
src="/favicon1.png"
alt="QR Master"
fill
sizes="64px"
className="object-cover"
priority
/>
</div>
<span className="text-xl font-bold text-slate-900 tracking-tight group-hover:text-indigo-600 transition-colors">QR Master</span>
</Link>
{/* Desktop Navigation */}

View File

@@ -59,7 +59,7 @@ export default function AuthorPage({ params }: { params: { slug: string } }) {
<div className="space-y-3">
<div className="flex items-center gap-3">
<h1 className="text-3xl font-extrabold text-gray-900">{author.name}</h1>
<Image src="/logo.svg" alt="QR Master" width={24} height={24} className="opacity-80" />
<Image src="/favicon1.png" alt="QR Master" width={24} height={24} className="rounded-full object-cover opacity-90" />
</div>
<p className="text-lg text-blue-600 font-medium">{author.role}</p>
<p className="text-gray-600 max-w-xl">{author.bio}</p>

View File

@@ -17,13 +17,13 @@ export const metadata: Metadata = {
robots: isIndexable
? { index: true, follow: true }
: { index: false, follow: false },
icons: {
icon: [
{ url: '/favicon.svg', type: 'image/svg+xml' },
{ url: '/logo.svg', type: 'image/svg+xml' },
],
apple: '/logo.svg',
},
icons: {
icon: [
{ url: '/favicon1.png', sizes: '2048x2048', type: 'image/png' },
],
shortcut: '/favicon1.png',
apple: '/favicon1.png',
},
twitter: {
card: 'summary_large_image',
site: '@qrmaster',