import React from 'react'; import { useTranslation } from 'react-i18next'; import { StatCard } from '@/components/shared/StatCard'; import { ActivityFeed, ActivityItem } from '@/components/shared/ActivityFeed'; import { DashboardGrid } from '@/components/dashboard/DashboardGrid'; import { useUnifiedContacts, useAuditLog } from '@/api/hooks'; import { useDashboardWidgets } from '@/api/dashboard'; import { formatDateTime } from '@/utils/date'; export function DashboardPage() { const { t } = useTranslation(); const { data: companiesData } = useUnifiedContacts(1, 1, undefined, 'company'); const { data: contactsData } = useUnifiedContacts(1, 1, undefined, 'person'); const { data: auditData, isError: auditError } = useAuditLog(1, 5); const { data: widgetsData, isError: widgetsError } = useDashboardWidgets(); const totalCompanies = companiesData?.total ?? 0; const totalContacts = contactsData?.total ?? 0; const auditEntries = auditData?.items ?? []; const activeThisWeek = auditEntries.filter((e) => { if (!e.timestamp) return false; const d = new Date(e.timestamp); const weekAgo = new Date(); weekAgo.setDate(weekAgo.getDate() - 7); return d >= weekAgo; }).length; const newThisMonth = auditEntries.filter((e) => { if (!e.timestamp) return false; const d = new Date(e.timestamp); const monthAgo = new Date(); monthAgo.setMonth(monthAgo.getMonth() - 1); return d >= monthAgo; }).length; const activities: ActivityItem[] = auditError ? [] : auditEntries.map((entry) => ({ id: `${entry.timestamp}-${entry.user}-${entry.action}`, user: entry.user || 'System', action: entry.action || '', time: entry.timestamp ? (formatDateTime(entry.timestamp) || '') : '', avatarUrl: null, })); const widgets = widgetsData?.items ?? []; return (
{t('dashboard.widgetsUnavailable')}
) : widgets.length > 0 ? ({t('dashboard.activityUnavailable')}
) : (