"use client"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useEffect } from "react"; import { ChevronLeft, ChevronRight, Shuffle, Undo2 } from "lucide-react"; import { cn, coverHref } from "@/lib/utils"; type Neighbor = { id: number; code: string | null } | null; export function ImageNav({ prev, next, randomEndpoint, }: { prev: Neighbor; next: Neighbor; randomEndpoint: string; }) { const router = useRouter(); const prevHref = prev ? coverHref(prev) : null; const nextHref = next ? coverHref(next) : null; useEffect(() => { const onKey = (e: KeyboardEvent) => { const t = e.target as HTMLElement | null; if (t && (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable)) return; if (e.metaKey || e.ctrlKey || e.altKey) return; if (e.key === "ArrowLeft") { if (prevHref) { e.preventDefault(); router.push(prevHref); } } else if (e.key === "ArrowRight") { if (nextHref) { e.preventDefault(); router.push(nextHref); } } else if (e.key === "ArrowUp") { e.preventDefault(); router.push(randomEndpoint); } else if (e.key === "ArrowDown") { e.preventDefault(); router.back(); } }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [prevHref, nextHref, randomEndpoint, router]); return (