"use client"; import { useState, useRef, useEffect } from "react"; import { Input } from "../ui/input"; import { useProjectStore } from "@/stores/project-store"; import { Edit2, Check, X } from "lucide-react"; import { Button } from "../ui/button"; interface ProjectNameEditorProps { className?: string; } export function ProjectNameEditor({ className }: ProjectNameEditorProps) { const { activeProject, updateProjectName } = useProjectStore(); const [isEditing, setIsEditing] = useState(false); const [editValue, setEditValue] = useState(""); const inputRef = useRef(null); useEffect(() => { if (activeProject) { setEditValue(activeProject.name); } }, [activeProject]); useEffect(() => { if (isEditing && inputRef.current) { inputRef.current.focus(); inputRef.current.select(); } }, [isEditing]); const handleStartEdit = () => { if (activeProject) { setEditValue(activeProject.name); setIsEditing(true); } }; const handleSave = () => { if (editValue.trim()) { updateProjectName(editValue.trim()); setIsEditing(false); } }; const handleCancel = () => { if (activeProject) { setEditValue(activeProject.name); } setIsEditing(false); }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter") { handleSave(); } else if (e.key === "Escape") { handleCancel(); } }; if (!activeProject) { return Loading...; } if (isEditing) { return (
setEditValue(e.target.value)} onKeyDown={handleKeyDown} className="h-7 text-sm px-3 py-1 min-w-[200px]" size={1} />
); } return (
{activeProject.name}
); }