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, MessageSquare, ContactRound, } 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