import { Grid } from '@/ui/Grid';
import { Icon } from '@/ui/Icon';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { LucideIcon } from 'lucide-react';
interface BillingStatProps {
label: string;
value: string | number;
subValue?: string;
icon: LucideIcon;
variant?: 'default' | 'success' | 'warning' | 'danger' | 'info';
}
function BillingStat({ label, value, subValue, icon, variant = 'default' }: BillingStatProps) {
const colorMap = {
default: 'text-white',
success: 'text-performance-green',
warning: 'text-warning-amber',
danger: 'text-racing-red',
info: 'text-primary-blue',
};
const bgMap = {
default: 'bg-iron-gray/50',
success: 'bg-performance-green/10',
warning: 'bg-warning-amber/10',
danger: 'bg-racing-red/10',
info: 'bg-primary-blue/10',
};
return (
{label}
{value}
{subValue && (
{subValue}
)}
);
}
interface BillingSummaryPanelProps {
stats: BillingStatProps[];
}
/**
* BillingSummaryPanel
*
* A semantic panel for displaying billing metrics.
* Dense, grid-based layout for financial data.
*/
export function BillingSummaryPanel({ stats }: BillingSummaryPanelProps) {
return (
{stats.map((stat, index) => (
))}
);
}