feat(clientes-maestro): modal detalle + fix permisos roles

- Modal con 28 campos agrupados por sección (Datos, Contacto, Crédito, Propiedad, Marketing, Venta)
- Click en fila abre modal
- Dark mode completo
- Agregado 'clientes-maestro' a todos los roles
This commit is contained in:
2026-09-08 02:47:29 +00:00
parent 2fc817887d
commit dc43cbe1ce
3 changed files with 116 additions and 2 deletions

View File

@@ -9,10 +9,11 @@ interface Props {
cargando: boolean
onPageChange: (pagina: number) => void
onExportar: () => void
onRowClick?: (cliente: ClienteMaestro) => void
}
/** Tabla paginada de clientes maestro con dark mode completo */
export function ClientesMaestroTable({ datos, total, pagina, limite, cargando, onPageChange, onExportar }: Props) {
export function ClientesMaestroTable({ datos, total, pagina, limite, cargando, onPageChange, onExportar, onRowClick }: Props) {
const totalPaginas = Math.ceil(total / limite)
const inicio = (pagina - 1) * limite + 1
const fin = Math.min(pagina * limite, total)
@@ -108,7 +109,7 @@ export function ClientesMaestroTable({ datos, total, pagina, limite, cargando, o
</thead>
<tbody className="divide-y divide-[#E5E7EB] dark:divide-[#1E293B]">
{datos.map((c) => (
<tr key={c.id} className="transition-colors hover:bg-[#F8FAFC] dark:hover:bg-[#0F172A]">
<tr key={c.id} className={`transition-colors hover:bg-[#F8FAFC] dark:hover:bg-[#0F172A] ${onRowClick ? "cursor-pointer" : ""}`} onClick={() => onRowClick?.(c)}>
<td className="px-4 py-3 text-[#64748B] dark:text-[#94A3B8]">{c.numCliente}</td>
<td className="px-4 py-3 font-medium text-[#111827] dark:text-[#E2E8F0]">
{c.nombre} {c.apellidoPaterno} {c.apellidoMaterno ?? ''}