// CalendarPage.jsx 'use strict'; const { useState, useMemo } = React; const MONTHS = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro']; const DAYS_SHORT = ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb']; const TYPE_COLORS = { 'Visita técnica':'#3B82F6','Retirada':'#10B981','Entrega':'#FF6B35','Retorno':'#8B5CF6' }; const APPT_TYPES = Object.keys(TYPE_COLORS); const HOURS = Array.from({length:11},(_,i)=>`${(i+8).toString().padStart(2,'0')}:00`); function ApptModal({ open, onClose, onSave, editAppt, clients, selectedDate }) { const empty = { title:'', clientId:'', clientName:'', type:'Visita técnica', date: selectedDate||new Date().toISOString().split('T')[0], time:'09:00', duration:60, notes:'' }; const [form, setForm] = useState(empty); const [errors, setErrors] = useState({}); React.useEffect(()=>{ if(open){ setForm(editAppt?{...editAppt}:{...empty, date:selectedDate||empty.date}); setErrors({}); } },[open,editAppt,selectedDate]); const set=(k,v)=>setForm(f=>({...f,[k]:v})); const onClientChange=id=>{ const c=clients.find(x=>x.id===id); setForm(f=>({...f,clientId:id,clientName:c?.name||'',title:`${f.type} — ${c?.name||''}`})); }; const onTypeChange=t=>{ setForm(f=>({...f,type:t,title:`${t} — ${f.clientName}`})); }; const validate=()=>{ const e={}; if(!form.clientId)e.clientId='Selecione o cliente'; if(!form.date)e.date='Informe a data'; setErrors(e); return Object.keys(e).length===0; }; const handleSave=()=>{ if(!validate())return; onSave({...form,color:TYPE_COLORS[form.type]||'#64748b'}); onClose(); }; return (
{APPT_TYPES.map(t=>( ))}
set('date',e.target.value)}/>
set('title',e.target.value)} placeholder="Descreva o agendamento..."/>