import { useState, useEffect } from 'react' import { Info } from 'lucide-react' import { Label } from '@/components/ui/label' import { Input } from '@/components/ui/input' import { Button } from '@/components/ui/button' import { Slider } from '@/components/ui/slider' import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' import { ScrollArea } from '@/components/ui/scroll-area' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select' import { useProcessStore } from '@/store/process-store' import { formatPercent } from '@/lib/format' const CURRENCIES = [ { code: 'USD', label: 'USD — Dólar estadounidense' }, { code: 'PYG', label: 'PYG — Guaraní paraguayo' }, { code: 'BRL', label: 'BRL — Real brasileño' }, { code: 'ARS', label: 'ARS — Peso argentino' }, { code: 'EUR', label: 'EUR — Euro' }, { code: 'COP', label: 'COP — Peso colombiano' }, { code: 'MXN', label: 'MXN — Peso mexicano' }, { code: 'CLP', label: 'CLP — Peso chileno' }, ] export function GlobalSettingsPanel() { const { currentProcess, updateProcess } = useProcessStore() const [localName, setLocalName] = useState('') const [localClient, setLocalClient] = useState('') const [localCurrency, setLocalCurrency] = useState('USD') const [localOverhead, setLocalOverhead] = useState(20) const [isDirty, setIsDirty] = useState(false) useEffect(() => { if (!currentProcess) return setLocalName(currentProcess.name) setLocalClient(currentProcess.clientName) setLocalCurrency(currentProcess.currency) setLocalOverhead(Math.round(currentProcess.overheadPercentage * 100)) setIsDirty(false) }, [currentProcess]) function markDirty() { setIsDirty(true) } async function handleSave() { await updateProcess({ name: localName.trim() || 'Proceso sin nombre', clientName: localClient.trim(), currency: localCurrency, overheadPercentage: localOverhead / 100, }) setIsDirty(false) } if (!currentProcess) return null return (
{/* Nombre del proceso */}
{ setLocalName(e.target.value); markDirty() }} placeholder="ej. Proceso de ventas" className="h-8 text-sm" />
{/* Cliente */}
{ setLocalClient(e.target.value); markDirty() }} placeholder="ej. Empresa ABC" className="h-8 text-sm" />
{/* Moneda */}
{/* Overhead */}
Porcentaje adicional sobre los costos directos que representa los costos indirectos: alquiler, administración, infraestructura general.
{ setLocalOverhead(v); markDirty() }} className="flex-1" /> {formatPercent(localOverhead, 0)}

Típicamente entre 15% y 40% para empresas de servicios

{/* Guardar */}
) }