"use client" import { useState, useEffect } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Badge } from "@/components/ui/badge"; import { useToast } from "@/hooks/use-toast"; import { Skeleton } from "@/components/ui/skeleton"; import { Package } from "lucide-react"; import { getProductPerformanceWithStore, type ProductPerformance } from "@/lib/services/analytics-service"; import { formatGBP } from "@/utils/format"; export default function ProductPerformanceChart() { const [data, setData] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const { toast } = useToast(); useEffect(() => { const fetchProductData = async () => { try { setIsLoading(true); setError(null); const response = await getProductPerformanceWithStore(); setData(response); } catch (err) { console.error('Error fetching product performance:', err); setError('Failed to load product data'); toast({ title: "Error", description: "Failed to load product performance data.", variant: "destructive", }); } finally { setIsLoading(false); } }; fetchProductData(); }, [toast]); if (isLoading) { return ( Product Performance Top performing products by revenue and sales
{[...Array(5)].map((_, i) => (
))}
); } if (error) { return ( Product Performance

Failed to load product data

); } if (data.length === 0) { return ( Product Performance Top performing products by revenue and sales

No product performance data available

Start selling products to see performance metrics

); } return ( Product Performance Top performing products by revenue and sales Product Sold Revenue Orders Avg Price {data.map((product) => (
{product.name}
{product.unitType}
{product.totalSold.toFixed(2)} {formatGBP(product.totalRevenue)} {product.orderCount} {formatGBP(product.averagePrice)} ))}
); }