diff --git a/apps/web/src/components/kanban/KanbanBoard.tsx b/apps/web/src/components/kanban/KanbanBoard.tsx index 7d3c12a..4a15312 100644 --- a/apps/web/src/components/kanban/KanbanBoard.tsx +++ b/apps/web/src/components/kanban/KanbanBoard.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState, useMemo } from "react"; +import React, { useState, useMemo } from "react"; import type { Task } from "@mosaic/shared"; import { TaskStatus } from "@mosaic/shared"; import { @@ -40,7 +40,7 @@ const columns = [ * - Task cards with title, priority badge, assignee avatar * - PATCH /api/tasks/:id on status change */ -export function KanbanBoard({ tasks = [], onStatusChange }: KanbanBoardProps) { +export function KanbanBoard({ tasks = [], onStatusChange }: KanbanBoardProps): JSX.Element { const [activeTaskId, setActiveTaskId] = useState(null); const sensors = useSensors( @@ -80,11 +80,11 @@ export function KanbanBoard({ tasks = [], onStatusChange }: KanbanBoardProps) { [tasks, activeTaskId] ); - function handleDragStart(event: DragStartEvent) { + function handleDragStart(event: DragStartEvent): void { setActiveTaskId(event.active.id as string); } - async function handleDragEnd(event: DragEndEvent) { + async function handleDragEnd(event: DragEndEvent): Promise { const { active, over } = event; if (!over) { diff --git a/apps/web/src/components/kanban/KanbanColumn.tsx b/apps/web/src/components/kanban/KanbanColumn.tsx index 86bbac8..7096f78 100644 --- a/apps/web/src/components/kanban/KanbanColumn.tsx +++ b/apps/web/src/components/kanban/KanbanColumn.tsx @@ -1,5 +1,6 @@ "use client"; +import React from "react"; import type { Task } from "@mosaic/shared"; import { TaskStatus } from "@mosaic/shared"; import { useDroppable } from "@dnd-kit/core"; @@ -34,7 +35,7 @@ const statusBadgeColors = { * A droppable column for tasks of a specific status. * Uses @dnd-kit/core for drag-and-drop functionality. */ -export function KanbanColumn({ status, title, tasks }: KanbanColumnProps) { +export function KanbanColumn({ status, title, tasks }: KanbanColumnProps): JSX.Element { const { setNodeRef, isOver } = useDroppable({ id: status, }); diff --git a/apps/web/src/components/kanban/TaskCard.tsx b/apps/web/src/components/kanban/TaskCard.tsx index 4e9fa86..e1e9b19 100644 --- a/apps/web/src/components/kanban/TaskCard.tsx +++ b/apps/web/src/components/kanban/TaskCard.tsx @@ -1,5 +1,6 @@ "use client"; +import React from "react"; import type { Task } from "@mosaic/shared"; import { TaskPriority } from "@mosaic/shared"; import { useSortable } from "@dnd-kit/sortable"; @@ -47,7 +48,7 @@ function getInitials(name: string): string { * - Assignee avatar (if assigned) * - Due date (if set) */ -export function TaskCard({ task }: TaskCardProps) { +export function TaskCard({ task }: TaskCardProps): JSX.Element { const { attributes, listeners,