import React from 'react';
import { Card, Col, Row, Statistic, Spin, Alert, Button } from 'antd';
import {
UserOutlined,
CalendarOutlined,
StarOutlined,
TeamOutlined,
WarningOutlined,
BugOutlined,
ClockCircleOutlined,
DollarOutlined,
} from '@ant-design/icons';
import { Link, useNavigate } from 'react-router-dom';
import { useDashboardStats } from '../../hooks/useDashboard';
import { useAuthStore } from '../../store/authStore';
import DailyLineChartCard from '../../components/DailyLineChartCard';
import StatisticSparklineCard from '../../components/StatisticSparklineCard';
const DashboardPage: React.FC = () => {
const { data, isLoading, error } = useDashboardStats();
const role = useAuthStore((s) => s.user?.role);
const navigate = useNavigate();
if (isLoading) return ;
if (error) return ;
if (!data) return null;
if (role === 'moderator') {
return (
Модерация
} />
} />
);
}
if (role === 'support') {
return (
Поддержка
} />
} />
);
}
const registrationsSparkline = data.registrations_by_day?.map((item) => ({
date: item.date,
value: item.count,
})) ?? [];
const eventsSparkline = data.events_by_day?.map((item) => ({
date: item.date,
value: item.count,
})) ?? [];
return (
Общая статистика
}
data={registrationsSparkline}
color="#52c41a"
gradientId="colorRegistrations"
/>
}
data={eventsSparkline}
color="#1890ff"
gradientId="colorEvents"
/>
} />
} />
} />
} />
}
/>
{data.pending_users_total !== undefined && (
} />
)}
{data.reports_pending !== undefined && (
)}
{data.reports_reviewed !== undefined && (
)}
{data.reports_dismissed !== undefined && (
)}
{data.subscriptions_total !== undefined && (
} />
)}
{data.trial_subscriptions !== undefined && (
)}
{role === 'superadmin' && (
Подробный журнал действий — в разделе Аудит.>}
/>
)}
);
};
export default DashboardPage;