diff --git a/src/components/board/AddCardInput.tsx b/src/components/board/AddCardInput.tsx new file mode 100644 index 0000000..8a02beb --- /dev/null +++ b/src/components/board/AddCardInput.tsx @@ -0,0 +1,53 @@ +import { useState, useRef, useEffect } from "react"; +import { useBoardStore } from "@/stores/board-store"; + +interface AddCardInputProps { + columnId: string; + onClose: () => void; +} + +export function AddCardInput({ columnId, onClose }: AddCardInputProps) { + const [value, setValue] = useState(""); + const textareaRef = useRef(null); + const addCard = useBoardStore((s) => s.addCard); + + useEffect(() => { + textareaRef.current?.focus(); + }, []); + + function handleSubmit() { + const trimmed = value.trim(); + if (trimmed) { + addCard(columnId, trimmed); + setValue(""); + // Keep the input open for quick multi-add + textareaRef.current?.focus(); + } + } + + function handleKeyDown(e: React.KeyboardEvent) { + if (e.key === "Enter" && !e.shiftKey) { + e.preventDefault(); + handleSubmit(); + } else if (e.key === "Escape") { + onClose(); + } + } + + return ( +
+