import React, { useState, useEffect, useRef } from 'react'; const COLOURS = ['#3d3a79', '#2d6a4f', '#7b2d8b', '#c0392b', '#d4800a', '#1a6b8a']; export default function ProjectModal({ project, mode, onSave, onDelete, onClose }) { const [name, setName] = useState(project?.name ?? ''); const [description, setDescription] = useState(project?.description ?? ''); const [colour, setColour] = useState(project?.colour ?? COLOURS[0]); const [isolated, setIsolated] = useState(project?.isolated === 1); const inputRef = useRef(null); useEffect(() => { if (mode !== 'confirm-delete') inputRef.current?.focus(); }, [mode]); function handleSubmit() { const trimmed = name.trim(); if (!trimmed) return; onSave({ name: trimmed, description: description.trim() || null, colour, icon: null, isolated }); onClose(); } function handleKeyDown(e) { if (e.key === 'Enter' && mode !== 'confirm-delete') handleSubmit(); if (e.key === 'Escape') onClose(); } return (
e.stopPropagation()} onKeyDown={handleKeyDown} style={{ background: 'var(--bg-surface)', border: '1px solid var(--border)', borderRadius: 'var(--radius-lg)', padding: '24px', width: '380px', display: 'flex', flexDirection: 'column', gap: '16px', }}> {mode === 'confirm-delete' ? ( <>

Delete project?

Are you sure you want to delete{' '} {project.name}? Sessions in this project will not be deleted.

) : ( <>

{mode === 'create' ? 'New Project' : 'Edit Project'}

{/* Name */}
setName(e.target.value)} placeholder="Project name..." style={{ background: 'var(--bg-elevated)', border: '1px solid var(--border)', borderRadius: 'var(--radius-md)', padding: '8px 12px', color: 'var(--text-primary)', fontSize: '14px', outline: 'none', width: '100%', }} />
{/* Description */}