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
|
|
|
)
|
|
|
|
|
}
|