import type { Metadata } from 'next'; import Link from 'next/link'; import { ActionButton, AdminFilters, AdminTitle, Mono, Notice } from '@/components/admin/ui'; import { EntityBadge } from '@/components/ui/badges'; import { DataTable, EmptyRow, Td, Th } from '@/components/ui/data-table'; import { Unavailable } from '@/components/ui/unavailable'; import { mergeAction } from '@/lib/admin/actions'; import { adminApi, load, requireAdmin } from '@/lib/admin/admin-api'; import type { DuplicateSide } from '@/lib/admin/types'; import { fmtDate, fmtInt, fmtPct, num } from '@/lib/format'; import { routes } from '@/lib/site'; export const metadata: Metadata = { title: 'Duplicates', robots: { index: false, follow: false } }; export const dynamic = 'force-dynamic'; const TYPES = ['model', 'company', 'organization', 'lab', 'paper', 'provider', 'benchmark', 'hardware', 'framework', 'library', 'dataset', 'tool', 'repository', 'researcher']; function Side({ s, type }: { s: DuplicateSide; type: string }) { return (
{fmtInt(s.claims)} claims · first seen {fmtDate(s.first_seen_at)}