import { useState, useEffect, useRef } from 'react' import { Tooltip } from '../shared/Tooltip' interface EditableCatNameProps { name: string onRename: (newName: string) => void /** The tooltip on the name, e.g. "Rename". */ renameLabel?: string } export function EditableCatName({ name, onRename, renameLabel = 'Click to rename' }: EditableCatNameProps) { const [editing, setEditing] = useState(false) const [value, setValue] = useState(name) const inputRef = useRef(null) useEffect(() => { if (editing && inputRef.current) { inputRef.current.focus(); inputRef.current.select() } }, [editing]) const save = () => { setEditing(false) if (value.trim() && value.trim() !== name) onRename(value.trim()) else setValue(name) } if (editing) { return setValue(e.target.value)} onBlur={save} onKeyDown={e => { if (e.key === 'Enter') save() // Escape only drops the rename; the dialog around it stays open. if (e.key === 'Escape') { e.preventDefault(); setValue(name); setEditing(false) } }} className="min-w-0 flex-1 rounded-[8px] border border-edge bg-surface-input px-2 py-0.5 font-semibold text-content outline-none focus:ring-2 focus:ring-[color:var(--text-primary)]" style={{ fontSize: 'calc(13px * var(--fs-scale-body, 1))' }} /> } return ( ) }