import React, { useEffect, useState, useRef } from 'react'; import { Button, Label, Input, EditIcon, SaveIcon } from '~/components'; type Props = { name?: string; onSave: (newName: string) => void; }; const PromptName: React.FC = ({ name, onSave }) => { const inputRef = useRef(null); const blurTimeoutRef = useRef(); const [isEditing, setIsEditing] = useState(false); const [newName, setNewName] = useState(name); const handleEditClick = () => { setIsEditing(true); }; const handleInputChange = (e: React.ChangeEvent) => { setNewName(e.target.value); }; const saveName = () => { const savedName = newName?.trim(); onSave(savedName || ''); setIsEditing(false); }; const handleSaveClick: React.MouseEventHandler = () => { saveName(); clearTimeout(blurTimeoutRef.current); }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Escape') { setIsEditing(false); setNewName(name); } if (e.key === 'Enter') { saveName(); } }; useEffect(() => { if (isEditing) { inputRef.current?.focus(); } }, [isEditing]); useEffect(() => { setNewName(name); }, [name]); return (
{isEditing ? ( <> ) : ( <> )}
); }; export default PromptName;