import { mockDb } from '@/lib/mockDb' import { notFound } from 'next/navigation' import { Link } from '@/i18n/routing' import { BarChart3, Lock, ArrowLeft, ArrowUpRight, Zap } from 'lucide-react' interface Props { params: Promise<{ locale: string; id: string }> } export default async function ListingAnalyticsPage({ params }: Props) { const { id } = await params const listing = await mockDb.getListingById(id) if (!listing) { notFound() } // Get daily analytics logs const analytics = await mockDb.getAnalytics(id) // Aggregated totals const totalViews = analytics.reduce((sum, item) => sum + item.views, 0) const totalWhatsapp = analytics.reduce((sum, item) => sum + item.whatsappClicks, 0) const totalPhone = analytics.reduce((sum, item) => sum + item.phoneClicks, 0) const totalMenu = analytics.reduce((sum, item) => sum + item.menuClicks, 0) // Max views for visual scaling of bar charts const maxViews = Math.max(...analytics.map(a => a.views), 1) return (
{/* Header */}
Mekanlara Geri Dön

{listing.nameTr} analitik

İşletmenin aldığı görüntülenme, arama ve WhatsApp iletişim tıklama detayları.

{/* Feature badge */}
{listing.isFeatured ? ( Öne Çıkan Paket ) : ( Standart Paket )}
{/* Freemium view lock if standard package */} {!listing.isFeatured ? (
{/* Freemium summary card (always visible) */}
Toplam Görüntülenme (Views) {totalViews || 142}

Standart listelemede sadece toplam görüntülenme sayısı paylaşılır. Ayrıntılı iletişim istatistikleri ve grafikler kilitlidir.

{/* Locked paywall overlay container */}

Detaylı İstatistiklerin Kilidini Açın

Mekanınızı Öne Çıkan Paket'e yükselterek günlük tıklama grafiklerini, telefon aramalarını, WhatsApp yönlendirmelerini ve menü görüntülenme oranlarını inceleyin.

Öne Çıkan Pakete Yükselt
) : (
{/* Stats overview cards */}
Görüntülenme {totalViews}
WhatsApp Clicks {totalWhatsapp}
Aramalar (Phone) {totalPhone}
Menü Tıklama {totalMenu}
{/* Graphics block */}

Günlük Görüntülenme Dağılımı

{/* Custom pure styled HTML bars chart */}
{analytics.map((item) => { const percentage = Math.max((item.views / maxViews) * 100, 4) return (
{new Date(item.date).toLocaleDateString('tr-TR', { day: 'numeric', month: 'long', year: 'numeric' })} {item.views} Görüntülenme
{Math.round(percentage)}%
WhatsApp: {item.whatsappClicks} Arama: {item.phoneClicks} Menü: {item.menuClicks}
) })}
)}
) }