import { useNavigate } from "@tanstack/react-router"; import { useViewer } from "~/hooks/use-viewer"; import { cn } from "~/utils/cn"; /** * Opens the abuse form prefilled with what is being reported: an absolute `url` (hosted sites) or a forge * `path` (default: the current page) plus an optional `hash`, made absolute on click so it works behind any * PUBLIC_URL. Hidden only from `owner`, the account that owns what is reported; admins can report too. */ export function ReportLink({ owner, path, hash = "", url, label = "Report", className, }: { owner?: string; path?: string; hash?: string; url?: string; label?: string; className?: string; }) { const navigate = useNavigate(); const viewer = useViewer(); if (owner && viewer && viewer.name.toLowerCase() === owner.toLowerCase()) return null; return ( { event.preventDefault(); void navigate({ to: "/abuse", search: { url: url ?? `${window.location.origin}${path ?? window.location.pathname}${hash}` }, }); }} > {label} ); }