Files
no-copy-frontend/src/app/ui/reports/reports-info.tsx
T

72 lines
2.3 KiB
TypeScript
Raw Normal View History

2026-02-12 13:11:14 +07:00
'use client'
import { useTranslations } from 'next-intl';
2026-02-19 18:14:39 +07:00
import { useUserFilesInfo } from '@/app/hooks/react-query/useUserFilesInfo';
2026-03-19 12:49:46 +07:00
import { IconDocument, IconSearch, IconWarning, IconGraph } from '@/app/ui/icons/icons';
import { useViolationStatistic } from '@/app/hooks/react-query/useViolationStatistic';
2026-04-20 17:36:33 +07:00
import { useMonitoringCount } from '@/app/hooks/react-query/useMonitoringCount';
2026-02-12 13:11:14 +07:00
export default function ReportsInfo() {
const t = useTranslations("Global");
2026-02-13 12:50:58 +07:00
const { data: filesInfo, isLoading, isError, error } = useUserFilesInfo();
2026-03-19 12:49:46 +07:00
const { data: violationStatistic } = useViolationStatistic();
2026-04-20 18:46:29 +07:00
const { data: monitoringCount, isLoading: isLoadingMonitoringCount } = useMonitoringCount();
2026-04-20 17:36:33 +07:00
2026-02-12 13:11:14 +07:00
return (
2026-02-19 18:14:39 +07:00
<>
<div className="my-content-stats-overview">
<div className="stat-card files" data-icon="">
<div className="stat-header">
<div className="stat-icon">
<IconDocument />
</div>
</div>
<div className="stat-value">{filesInfo?.total.quantity ? filesInfo?.total.quantity : 0}</div>
<div className="stat-label">{t('all-content')}</div>
2026-02-12 13:11:14 +07:00
</div>
2026-02-19 18:14:39 +07:00
<div className="stat-card protected" data-icon="">
<div className="stat-header">
<div className="stat-icon">
<IconWarning />
</div>
</div>
2026-03-19 12:49:46 +07:00
<div className="stat-value">{violationStatistic?.total_violations ?? 0}</div>
2026-04-21 13:11:51 +07:00
<div className="stat-label">{t('matches')}</div>
2026-02-12 13:11:14 +07:00
</div>
2026-02-19 18:14:39 +07:00
<div className="stat-card checks" data-icon="">
<div className="stat-header">
<div className="stat-icon">
<IconSearch />
</div>
</div>
2026-04-01 11:24:47 +07:00
<div className="stat-value">
2026-04-20 18:46:29 +07:00
<div
className="loading-placeholder start"
>
{isLoadingMonitoringCount ? (
<div className="loading-animation">
<div className="global-spinner" />
</div>
) : (
`${monitoringCount?.day}/${monitoringCount?.weekly}/${monitoringCount?.month}`
)}
</div>
2026-04-01 11:24:47 +07:00
</div>
2026-04-20 17:48:08 +07:00
<div className="stat-label">{t('monitoring')} {t('every')} {t('day')}/ {t('week_accusative')}/ {t('month')}</div>
2026-02-12 13:11:14 +07:00
</div>
2026-02-19 18:14:39 +07:00
<div className="stat-card storage" data-icon="">
<div className="stat-header">
<div className="stat-icon">
<IconGraph />
</div>
</div>
<div className="stat-value">100%</div>
<div className="stat-label">{t('efficiency')}</div>
2026-02-12 13:11:14 +07:00
</div>
</div>
2026-02-19 18:14:39 +07:00
</>
2026-02-12 13:11:14 +07:00
)
}