diff --git a/apps/web/app/admin/page.tsx b/apps/web/app/admin/page.tsx
index 31f034c..cde321b 100644
--- a/apps/web/app/admin/page.tsx
+++ b/apps/web/app/admin/page.tsx
@@ -7,152 +7,147 @@ import { trpc } from "@/lib/trpc";
import { PIN_CATEGORIES, getPinColor } from "@/data/pin-categories";
import { useTheme } from "@/lib/ThemeContext";
import Link from "next/link";
+import type { PinDiffType } from "@/types/pins";
+import { DiffsModal } from "@/components/DiffsModal";
+import { PinRouterOutputs } from "@repo/api";
export default function AdminDashboard() {
- const router = useRouter();
-
- const { data, isLoading } = trpc.user.getCurrent.useQuery();
-
- const { data: pendingModifications } =
- trpc.modification.getPending.useQuery();
-
- const { data: pinCounts } = trpc.pin.getStatusCounts.useQuery();
- const { data: userCount } = trpc.user.getCount.useQuery();
- const { data: commentCount } = trpc.comment.getCount.useQuery();
- const { data: pendingPins } = trpc.pin.getAllAdmin.useQuery({
- status: "PENDING_VERIFICATION",
- });
-
- const { data: activePins } = trpc.pin.getAllAdmin.useQuery({
- status: "ACTIVE",
- limit: 5,
- });
- const utils = trpc.useUtils();
- const rejectPin = trpc.pin.reject.useMutation({
- onSuccess: () => {
- utils.pin.getAllAdmin.invalidate();
- utils.modification.getPending.invalidate();
- },
- });
- const approvePin = trpc.pin.approve.useMutation({
- onSuccess: () => {
- utils.pin.getAll.invalidate();
- utils.pin.getAllAdmin.invalidate();
- utils.modification.getPending.invalidate();
- },
- });
- const applyMod = trpc.pin.applyUpdate.useMutation({
- onSuccess: () => {
- utils.modification.getPending.invalidate();
- utils.pin.getAll.invalidate();
- utils.pin.getAllAdmin.invalidate();
- utils.pin.getStatusCounts.invalidate();
- },
- });
- const rejectMod = trpc.pin.rejectUpdate.useMutation({
- onSuccess: () => {
- utils.modification.getPending.invalidate();
- },
- });
-
- const deletePin = trpc.pin.adminDelete.useMutation({
- onSuccess: () => {
- utils.pin.getAllAdmin.invalidate();
- },
- });
-
- const [isSidebarOpen, setIsSidebarOpen] = useState(false);
- const { theme, toggleTheme } = useTheme();
-
- const [isDeletingPin, setIsDeletingPin] = useState(false);
-
- const scrollToSection = (sectionId: string) => {
- const element = document.getElementById(sectionId);
- if (element) {
- element.scrollIntoView({ behavior: "smooth", block: "start" });
- if (window.innerWidth <= 768) setIsSidebarOpen(false);
- }
- };
-
- const goToMap = () => router.push("/");
-
- const handleSignOut = async () => {
- await signOut();
- router.refresh();
- };
-
- const activePinCount = pinCounts?.ACTIVE || 0;
- const rejectedPinCount = pinCounts?.ARCHIVED || 0;
- const pendingPinCount = pinCounts?.PENDING_VERIFICATION || 0;
- const totalPins = activePinCount + rejectedPinCount + pendingPinCount;
-
- const pinTagCounts = {
- academic: 0,
- food: 0,
- transit: 0,
- utility: 0,
- social: 0,
- };
-
- const globalVerificationRate = useMemo(
- () => Math.round((activePinCount / (totalPins || 1)) * 100) || 0,
- [activePinCount, totalPins],
- );
-
- const globalUserStats = {
- totalUsers: userCount,
- totalComments: commentCount,
- // avgPins: 3.6,
- // avgComments: 5.3,
- // newUsers7Days: 14,
- // newUsers30Days: 45,
- };
-
- return (
-
- {/* --- MOBILE OVERLAY --- */}
- {isSidebarOpen && (
- // biome-ignore lint/a11y/noStaticElementInteractions:
- // biome-ignore lint/a11y/useKeyWithClickEvents:
- setIsSidebarOpen(false)}
- />
- )}
-
- {/* --- SIDEBAR --- */}
-