import { useTheme } from '@mui/material/styles'; import PropTypes from 'prop-types'; 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'; function getDaysInMonth(month, year) { const date = new Date(year, month, 0); const monthName = date.toLocaleDateString('en-US', { month: 'short', }); const daysInMonth = date.getDate(); const days = []; let i = 1; while (days.length < daysInMonth) { days.push(`${monthName} ${i}`); i += 1; } return days; } function AreaGradient({ color, id }) { return ( ); } AreaGradient.propTypes = { color: PropTypes.string.isRequired, id: PropTypes.string.isRequired, }; function StatCard({ title, value, interval, trend, data }) { const theme = useTheme(); const daysInWeek = getDaysInMonth(4, 2024); 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', down: 'error', neutral: 'default', }; const color = labelColors[trend]; const chartColor = trendColors[trend]; const trendValues = { up: '+25%', down: '-25%', neutral: '+5%' }; return ( {title} {value} {interval} ); } StatCard.propTypes = { data: PropTypes.arrayOf(PropTypes.number).isRequired, interval: PropTypes.string.isRequired, title: PropTypes.string.isRequired, trend: PropTypes.oneOf(['down', 'neutral', 'up']).isRequired, value: PropTypes.string.isRequired, }; export default StatCard;