23 lines · 922 B
import { useHovercards } from "~/hooks/use-hovercards";
import { Badge } from "./ui/Primitives";

/** Floating preview for issue, user, team and commit references; mount once near the app root. */
export function HovercardLayer() {
  const state = useHovercards();
  if (!state) return null;
  const { card } = state;
  return (
    <div
      role="tooltip"
      data-hovercard-popup
      style={{ top: state.top, left: state.left }}
      className="animate-rise absolute z-50 w-80 space-y-1.5 rounded-lg border border-gray-800 bg-gray-950 p-3 text-sm shadow-2xl shadow-black/60"
    >
      <p className="text-xs text-gray-500">{card.subtitle}</p>
      <p className="font-medium text-gray-100">{card.title}</p>
      {card.state && <Badge tone={card.state === "open" ? "green" : "purple"}>{card.state}</Badge>}
      {card.body && <p className="line-clamp-3 text-xs text-gray-400">{card.body}</p>}
    </div>
  );
}