'use client';
import { motion } from 'framer-motion';
import { Package, DollarSign, Leaf, TrendingUp } from 'lucide-react';
interface OrderStats {
totalOrders: number;
totalRevenue: number;
totalCO2Offset: number;
fulfillmentRate: number;
}
interface OrderStatsCardsProps {
stats: OrderStats | null;
isLoading?: boolean;
}
export function OrderStatsCards({ stats, isLoading = false }: OrderStatsCardsProps) {
const statCards = stats
? [
{
title: 'Total Orders',
value: stats.totalOrders.toLocaleString(),
icon: ,
gradient: 'bg-gradient-to-br from-royal-purple to-purple-600',
},
{
title: 'Total Revenue',
value: `$${(stats.totalRevenue / 100).toLocaleString('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})}`,
icon: ,
gradient: 'bg-gradient-to-br from-muted-gold to-orange-600',
},
{
title: 'Total CO₂ Offset',
value: `${(typeof stats.totalCO2Offset === 'number' ? stats.totalCO2Offset : parseFloat(stats.totalCO2Offset || '0')).toFixed(2)} tons`,
icon: ,
gradient: 'bg-gradient-to-br from-sea-green to-green-600',
},
{
title: 'Fulfillment Rate',
value: `${(typeof stats.fulfillmentRate === 'number' ? stats.fulfillmentRate : parseFloat(stats.fulfillmentRate || '0')).toFixed(1)}%`,
icon: ,
gradient: 'bg-gradient-to-br from-maritime-teal to-teal-600',
},
]
: [];
if (isLoading) {
return (
{[...Array(4)].map((_, index) => (
))}
);
}
return (
{statCards.map((stat, index) => (
{stat.title}
{stat.value}
))}
);
}