import { useState, useCallback } from 'react' import type { Project } from '../types/kanban' interface ProjectSelectorProps { projects: Project[] activeId: string onSelect: (id: string) => void onCreate: (id: string) => void onDelete?: (id: string) => void } export function ProjectSelector({ projects, activeId, onSelect, onCreate, onDelete }: ProjectSelectorProps) { const [creating, setCreating] = useState(false) const [newName, setNewName] = useState('') const [confirmDelete, setConfirmDelete] = useState(null) const handleCreate = useCallback(() => { const id = newName.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '-').replace(/^-|-$/g, '') if (!id) return onCreate(id) setNewName('') setCreating(false) }, [newName, onCreate]) const handleDelete = useCallback(() => { if (!confirmDelete || !onDelete) return onDelete(confirmDelete) setConfirmDelete(null) }, [confirmDelete, onDelete]) return (
{creating ? (
{ e.preventDefault(); handleCreate() }} style={{ display: 'flex', gap: 4 }} > setNewName(e.target.value)} onKeyDown={e => { if (e.key === 'Escape') setCreating(false) }} style={{ width: 120 }} />
) : ( )} {onDelete && activeId !== 'default' && !confirmDelete && ( )} {confirmDelete && (

Delete project "{confirmDelete}"?

All sessions, messages, tasks, and agent data in this project will be permanently deleted. This action cannot be undone.

)}
) }