import { useTheme } from "@mui/material/styles"; import Box from "@mui/material/Box"; import Card from "@mui/material/Card"; import CardContent from "@mui/material/CardContent"; import Chip from "@mui/material/Chip"; import Stack from "@mui/material/Stack"; import Typography from "@mui/material/Typography"; import { SparkLineChart } from "@mui/x-charts/SparkLineChart"; import { areaElementClasses } from "@mui/x-charts/LineChart"; export type StatCardProps = { title: string; value: string; interval?: string; trend?: "up" | "down" | "neutral"; data?: number[]; }; function last24Hours(): string[] { let res: Array = []; for (let index = 0; index < 3600 * 24; index += 60 * 10) { const date = new Date(); date.setTime(date.getTime() - index * 1000); res.push(date.getHours() + "h" + date.getMinutes()); } res.reverse(); console.log(res); return res; } function AreaGradient({ color, id }: { color: string; id: string }) { return ( ); } export default function StatCard({ title, value, interval, trend, data, }: StatCardProps) { const theme = useTheme(); const trendColors = { up: theme.palette.mode === "light" ? theme.palette.success.main : theme.palette.success.dark, down: theme.palette.mode === "light" ? theme.palette.error.main : theme.palette.error.dark, neutral: theme.palette.mode === "light" ? theme.palette.grey[400] : theme.palette.grey[700], }; const labelColors = { up: "success" as const, down: "error" as const, neutral: "default" as const, }; const color = labelColors[trend ?? "neutral"]; const chartColor = trendColors[trend ?? "neutral"]; const trendValues = { up: "+25%", down: "-25%", neutral: "+5%" }; return ( {title} {value} {trend && ( )} {interval} {data && interval && ( )} ); }