import Link from 'next/link' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import { ShoppingCart, Package, Users, TrendingUp, DollarSign, Clock, CheckCircle, Truck, AlertTriangle, Settings, BarChart3, Phone } from 'lucide-react' import { fetchAllProducts } from '@/lib/stripe/products' // Mock analytics data for demo const mockAnalytics = { totalOrders: 156, totalRevenue: 48567.89, pendingOrders: 12, completedOrders: 144, lowStockProducts: 3, avgOrderValue: 311.46, conversionRate: 2.8, monthlyGrowth: 15.2 } async function getProductsCount() { try { const products = await fetchAllProducts() return products.length } catch { return 0 } } async function getOrdersCount() { try { const response = await fetch('/api/orders') if (response.ok) { const data = await response.json() return data.pagination.total || 0 } } catch {} return mockAnalytics.totalOrders } export default async function AdminDashboard() { const [productsCount, ordersCount] = await Promise.all([ getProductsCount(), getOrdersCount() ]) const dashboardCards = [ { title: 'Total Revenue', value: `$${mockAnalytics.totalRevenue.toLocaleString()}`, description: 'Total revenue from all orders', icon: DollarSign, trend: '+15.2%', trendPositive: true, color: 'text-green-600' }, { title: 'Total Orders', value: mockAnalytics.totalOrders.toString(), description: 'Total number of orders', icon: ShoppingCart, trend: '+12.8%', trendPositive: true, color: 'text-blue-600' }, { title: 'Products', value: productsCount.toString(), description: 'Active products in inventory', icon: Package, trend: '+5', trendPositive: true, color: 'text-purple-600' }, { title: 'Pending Orders', value: mockAnalytics.pendingOrders.toString(), description: 'Orders awaiting processing', icon: Clock, trend: '-3', trendPositive: false, color: 'text-orange-600' } ] const quickStats = [ { title: 'Average Order Value', value: `$${mockAnalytics.avgOrderValue.toFixed(2)}`, description: 'Average value per order', icon: TrendingUp }, { title: 'Conversion Rate', value: `${mockAnalytics.conversionRate}%`, description: 'Visitors to orders ratio', icon: Users }, { title: 'Monthly Growth', value: `${mockAnalytics.monthlyGrowth}%`, description: 'Revenue growth this month', icon: BarChart3 }, { title: 'Low Stock Alert', value: mockAnalytics.lowStockProducts.toString(), description: 'Products need restocking', icon: AlertTriangle } ] const recentOrders = [ { id: 'ORD-001234', customer: 'john.doe@email.com', amount: 2799.98, status: 'paid', date: '2024-01-15 10:30' }, { id: 'ORD-001233', customer: 'jane.smith@email.com', amount: 1499.99, status: 'fulfilled', date: '2024-01-15 09:45' }, { id: 'ORD-001232', customer: 'bob.johnson@email.com', amount: 899.97, status: 'pending', date: '2024-01-15 08:20' }, { id: 'ORD-001231', customer: 'alice.wilson@email.com', amount: 3499.99, status: 'cancelled', date: '2024-01-14 16:15' } ] const popularProducts = [ { name: 'SEAGA HY900 Vending Machine', orders: 45, revenue: 112499.55 }, { name: 'Vending Machine Stand', orders: 38, revenue: 11399.62 }, { name: 'Snack Vending Machine Combo', orders: 23, revenue: 45999.77 }, { name: 'Drink Vending Machine', orders: 19, revenue: 37999.81 } ] return (
Overview of your store performance and management tools
{card.description}
{stat.description}
View and process customer orders
Add and update product inventory
Monitor order shipments and deliveries
Generate sales and analytics reports