"use client"; import { useCallback, memo } from "react"; import { AppLink } from "../../navigation"; import { useSortable, defaultAnimateLayoutChanges } from "@dnd-kit/sortable"; import type { AnimateLayoutChanges } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; import { toast } from "sonner"; import type { Issue, UpdateIssueRequest } from "@multica/core/types"; import { CalendarDays } from "lucide-react"; import { useQuery } from "@tanstack/react-query"; import { ActorAvatar } from "../../common/actor-avatar"; import { useUpdateIssue } from "@multica/core/issues/mutations"; import { useWorkspacePaths } from "@multica/core/paths"; import { useWorkspaceId } from "@multica/core/hooks"; import { projectListOptions } from "@multica/core/projects/queries"; import { PriorityIcon } from "./priority-icon"; import { PriorityPicker, AssigneePicker, DueDatePicker } from "./pickers"; import { PRIORITY_CONFIG } from "@multica/core/issues/config"; import { useViewStore } from "@multica/core/issues/stores/view-store-context"; import { ProgressRing } from "./progress-ring"; import type { ChildProgress } from "./list-row"; function formatDate(date: string): string { return new Date(date).toLocaleDateString("en-US", { month: "short", day: "numeric", }); } /** Stops event from bubbling to Link/drag handlers */ function PickerWrapper({ children }: { children: React.ReactNode }) { const stop = (e: React.SyntheticEvent) => { e.stopPropagation(); e.preventDefault(); }; return (
{issue.identifier}
{/* Row 2: Title */}{issue.title}
{/* Sub-issue progress + project */} {(showChildProgress || showProject) && ({issue.description}
)} {/* Row 3: Assignee, priority badge, due date */} {(showAssignee || showPriority || showDueDate) && (