import type { components } from '@pipu/api-client'; import { useTranslation } from 'react-i18next'; import { formatDateTime } from '../../shared/lib/format'; import { cx } from '../../shared/ui/ui'; import s from './library.module.css'; type ScanProgress = components['schemas']['ScanProgress']; export type SourceStatus = components['schemas']['SourceStatus']; export function StatusBadge({ status }: { status: SourceStatus }) { const { t } = useTranslation('admin'); return {t(`sources.status_${status}`)}; } /** Прогресс идущего скана или итог последнего. */ export function ScanLine({ scan, lastScanAt }: { scan: ScanProgress | null; lastScanAt: string | null }) { const { t, i18n } = useTranslation('admin'); if (scan?.running) { const pct = scan.to_process > 0 ? Math.round((scan.processed / scan.to_process) * 100) : 0; return (