"use client"; import { useState } from "react"; import Link from "next/link"; import { FolderKanban, MoreVertical, Pencil, Trash2 } from "lucide-react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { ConfirmDeleteDialog } from "@/components/confirm-delete-dialog"; import { RenameProjectDialog } from "@/components/projects/rename-project-dialog"; import { useProjects } from "@/components/projects/projects-context"; import type { ProjectDTO } from "@/types/project"; export function ProjectCard({ project }: { project: ProjectDTO }) { const { removeProject } = useProjects(); const [renameOpen, setRenameOpen] = useState(false); const [confirmOpen, setConfirmOpen] = useState(false); return ( <> {/* The whole tile opens the project; the dropdown sits on top of it as a sibling (not nested in the link) with pointer-events re-enabled, so its clicks don't also navigate. `relative` on that wrapper matters, not just decorative: an absolutely-positioned element paints after (on top of) non-positioned in-flow content regardless of DOM order, so without it the Link would still win every hit-test even under a pointer-events-none ancestor. */}