'use client'; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, } from 'recharts'; interface TrendsChartProps { trends: { hour: string; requests: string; tokens: string; cost: string; avg_response_time: string; }[]; } export default function TrendsChart({ trends }: TrendsChartProps) { if (!trends || trends.length === 0) { return (

Hourly Trends

No trend data available

); } const chartData = trends.map((trend) => ({ time: new Date(trend.hour).toLocaleString('en-US', { month: 'short', day: 'numeric', hour: '2-digit', }), requests: Number.parseInt(trend.requests), tokens: Number.parseInt(trend.tokens), cost: Number.parseFloat(trend.cost), responseTime: Math.round(Number.parseFloat(trend.avg_response_time)), })); return (

Hourly Trends

Requests & Response Time

Tokens & Cost

); } const styles = { container: { marginBottom: '2rem', }, title: { fontSize: '1.5rem', marginBottom: '1.5rem', color: '#2c3e50', }, card: { backgroundColor: '#fff', borderRadius: '8px', boxShadow: '0 2px 4px rgba(0,0,0,0.1)', padding: '1.5rem', }, chartContainer: { marginBottom: '2rem', }, chartTitle: { fontSize: '1.1rem', marginBottom: '1rem', color: '#2c3e50', }, noData: { padding: '2rem', textAlign: 'center' as const, color: '#7f8c8d', }, };