'use client' import { FlaskConical, Plus, ChevronDown, Trash2, Layout } from 'lucide-react' import { Button } from '@/components/ui/button' import { renameCanvas, deleteCanvas, createCanvas } from '@/app/actions/canvas-actions' import { useRouter } from 'next/navigation' import { useState, useTransition } from 'react' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { cn } from '@/lib/utils' import { toast } from 'sonner' import { useLanguage } from '@/lib/i18n' interface LabHeaderProps { canvases: any[] currentCanvasId: string | null onCreateCanvas: () => Promise } export function LabHeader({ canvases, currentCanvasId, onCreateCanvas }: LabHeaderProps) { const router = useRouter() const { t, language } = useLanguage() const [isPending, startTransition] = useTransition() const [isEditing, setIsEditing] = useState(false) const currentCanvas = canvases.find(c => c.id === currentCanvasId) const handleRename = async (id: string, newName: string) => { if (!newName || newName === currentCanvas?.name) { setIsEditing(false) return } try { await renameCanvas(id, newName) toast.success(t('labHeader.renamed')) router.refresh() } catch (e) { toast.error(t('labHeader.renameError')) } setIsEditing(false) } const handleCreate = async () => { startTransition(async () => { try { const newCanvas = await createCanvas(language) router.push(`/lab?id=${newCanvas.id}`) toast.success(t('labHeader.created')) } catch (e) { toast.error(t('labHeader.createFailed')) } }) } const handleDelete = async (id: string, name: string) => { if (window.confirm(`${t('labHeader.deleteSpace')} "${name}" ?`)) { try { await deleteCanvas(id) toast.success(t('labHeader.deleted')) router.push('/lab') router.refresh() } catch (e) { toast.error(t('labHeader.deleteError')) } } } return (

{t('labHeader.title')}

{t('labHeader.live')}

{/* Project Switcher */} {t('labHeader.yourSpaces')} {canvases.length}
{canvases.map(c => (
router.push(`/lab?id=${c.id}`)} >
{c.name} {c.id === currentCanvasId && }
{t('labHeader.updated')} {new Date(c.updatedAt).toLocaleDateString()}
))}
{t('labHeader.newSpace')}
{/* Inline Rename — click on project name to edit */} {currentCanvas && (
{isEditing ? ( { if (e.key === 'Enter') handleRename(currentCanvas.id, e.currentTarget.value) if (e.key === 'Escape') setIsEditing(false) }} onBlur={(e) => handleRename(currentCanvas.id, e.target.value)} /> ) : ( )}
)}
{currentCanvas && ( )}
) }