'use client'; import { DashboardLayout } from '@/components/layout/dashboard-layout'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { StatCard } from '@/components/ui/stat-card'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { DollarSign, ShoppingBag, TrendingUp, Users, ArrowUpRight, ArrowDownRight, QrCode, Calendar, Download, } from 'lucide-react'; import { generateDailyRevenue, generatePopularItems, generateOrdersByType, generateHourlyOrders } from '@/lib/demo-data'; import { formatCurrency, cn } from '@/lib/utils'; import { useState } from 'react'; const revenueData = generateDailyRevenue(30); const popularItems = generatePopularItems(); const ordersByType = generateOrdersByType(); const hourlyOrders = generateHourlyOrders(); function BarChart({ data, dataKey, maxHeight = 120 }: { data: { [key: string]: string | number }[]; dataKey: string; maxHeight?: number }) { const values = data.map((d) => Number(d[dataKey])); const max = Math.max(...values); return (
{data.map((d, i) => (
{typeof d[dataKey] === 'number' && dataKey === 'revenue' ? formatCurrency(Number(d[dataKey])) : d[dataKey]}
))}
); } function HeatmapRow({ label, values, max }: { label: string; values: number[]; max: number }) { return (
{label} {values.map((v, i) => (
))}
); } export default function AnalyticsPage() { const [period, setPeriod] = useState('30d'); const totalRevenue = revenueData.reduce((s, d) => s + d.revenue, 0); const totalOrders = revenueData.reduce((s, d) => s + d.orders, 0); const avgOrder = totalRevenue / totalOrders; return (
{/* Header */}

Analytics

Track performance, revenue, and customer insights.

{['7d', '14d', '30d', '90d'].map((p) => ( ))}
{/* Stats */}
{/* Revenue Chart */}
Revenue Over Time

Daily revenue for the last 30 days

{formatCurrency(totalRevenue)} 12.5%
{revenueData.filter((_, i) => i % 5 === 0).map((d, i) => ( {new Date(d.date).toLocaleDateString('en', { month: 'short', day: 'numeric' })} ))}
{/* Popular Items */} Top Selling Items
{popularItems.map((item, i) => { const maxOrders = popularItems[0].orders; return (
{i + 1}

{item.name}

{formatCurrency(item.revenue)}

{item.orders}
); })}
{/* Peak Hours */} Peak Hours
{hourlyOrders.map((h, i) => ( i % 2 === 0 ? {h.hour} : ))}

Lunch Peak

12:00 – 14:00

Dinner Peak

18:00 – 21:00

{/* Order Distribution */}
{ordersByType.map((item) => (

{item.type}

{item.count}

{item.percentage}% of total

{item.percentage}%
))}
); }