feat(mejoras): 25 mejoras UX en todos los módulos + purga Monday
Backend: mi-dia siempre local, vocabulario canónico, AplicacionPago con usuario Mi día: modal español real, cita desde modal, score falso eliminado Cotizador: barra sticky, persistencia local con folio Alta Clientes: redirect eliminado, foto conectada, asesor desde sesión, refs dinámicas Cobranza: contrato Mora arreglado, link a Plan, abono próximo pago, WhatsApp Landing: contactos locales, ModalContacto eliminado, ModoTrabajo eliminado Dashboards: MiTablero unificado, funnel con descartados, drill-down, rango fechas Chat FRASA: corpus 5 desarrollos, 6 herramientas, historial conversaciones 69 archivos, 7 apps construidas
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { useCallback, useEffect, useState } from 'react'
|
||||
import { getContactoDetalle, type DetalleContacto } from '../services/api'
|
||||
import { getContactoDetalle, type DatosContacto, type DetalleContacto } from '../services/api'
|
||||
|
||||
const formatoFecha = (iso: string): string =>
|
||||
iso
|
||||
@@ -47,7 +47,7 @@ export default function PerfilContactoCompleto({ contactoId, nombre, onCerrar }:
|
||||
return () => window.removeEventListener('keydown', alTeclear)
|
||||
}, [onCerrar])
|
||||
|
||||
const c = detalle?.contacto ?? {}
|
||||
const c: Partial<DatosContacto> = detalle?.contacto ?? {}
|
||||
const prop = detalle?.propiedad ?? null
|
||||
const hist = detalle?.historial ?? []
|
||||
const rels = detalle?.relaciones ?? { leads: [], oportunidades: [], apartados: [] }
|
||||
@@ -64,7 +64,7 @@ export default function PerfilContactoCompleto({ contactoId, nombre, onCerrar }:
|
||||
<div className="flex items-center justify-between border-b border-[#E5E7EB] dark:border-[#334155] pb-4">
|
||||
<div>
|
||||
<p className="text-xs font-semibold uppercase tracking-wider text-[#64748B] dark:text-[#94A3B8]">Perfil del contacto</p>
|
||||
<h2 className="mt-1 text-lg font-semibold text-[#111827] dark:text-[#E2E8F0]">{c['nombre'] ?? nombre}</h2>
|
||||
<h2 className="mt-1 text-lg font-semibold text-[#111827] dark:text-[#E2E8F0]">{c.nombre ?? nombre}</h2>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
@@ -83,15 +83,15 @@ export default function PerfilContactoCompleto({ contactoId, nombre, onCerrar }:
|
||||
<div className="mt-5 space-y-5">
|
||||
{/* Datos personales */}
|
||||
<Section titulo="Datos personales">
|
||||
<Field label="Email" value={c['Email']} />
|
||||
<Field label="Teléfono" value={c['Teléfono']} />
|
||||
<Field label="Estado" value={c['Estado']} />
|
||||
<Field label="CURP" value={c['CURP']} />
|
||||
<Field label="RFC" value={c['RFC']} />
|
||||
<Field label="Estado civil" value={c['Estado Civil']} />
|
||||
<Field label="Fecha nacimiento" value={c['Fecha Nacimiento']} />
|
||||
<Field label="Actividad económica" value={c['Actividad Economica']} />
|
||||
<Field label="Dirección" value={c['Dirección']} />
|
||||
<Field label="Email" value={c.email} />
|
||||
<Field label="Teléfono" value={c.telefono} />
|
||||
<Field label="Estado" value={c.estado} />
|
||||
<Field label="CURP" value={c.curp} />
|
||||
<Field label="RFC" value={c.rfc} />
|
||||
<Field label="Estado civil" value={c.estadoCivil} />
|
||||
<Field label="Fecha nacimiento" value={c.fechaNacimiento} />
|
||||
<Field label="Actividad económica" value={c.actividadEconomica} />
|
||||
<Field label="Dirección" value={c.direccion} />
|
||||
</Section>
|
||||
|
||||
{/* Propiedad */}
|
||||
|
||||
Reference in New Issue
Block a user