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

@@ -1,6 +1,7 @@
import { useCallback, useEffect, useState } from 'react'
import { listarClientesMaestro, exportarClientesMaestro, type ClienteMaestro } from '../services/clientes-maestro'
import { ClientesMaestroTable } from '../components/ClientesMaestroTable'
import ModalClienteMaestro from '../components/ModalClienteMaestro'
import { getSesion } from '../services/auth'
import toast from 'react-hot-toast'
@@ -19,6 +20,7 @@ const ESTATUSES = ['', 'VENDIDO', 'APARTADO', 'ESCRITURADO', 'PENDIENTE', 'CANCE
*/
export function ClientesMaestroPage({ onVolver }: Props) {
const [datos, setDatos] = useState<ClienteMaestro[]>([])
const [clienteSeleccionado, setClienteSeleccionado] = useState<ClienteMaestro | null>(null)
const [total, setTotal] = useState(0)
const [pagina, setPagina] = useState(1)
const [cargando, setCargando] = useState(true)
@@ -119,6 +121,7 @@ export function ClientesMaestroPage({ onVolver }: Props) {
}
return (
<>
<main className="mx-auto w-full max-w-[1280px] flex-1 px-4 py-12 sm:px-6 sm:py-16">
<div className="flex items-center gap-4">
<button
@@ -183,6 +186,7 @@ export function ClientesMaestroPage({ onVolver }: Props) {
{/* Tabla */}
<section className="mt-6">
<ClientesMaestroTable
onRowClick={setClienteSeleccionado}
datos={datos}
total={total}
pagina={pagina}
@@ -193,5 +197,10 @@ export function ClientesMaestroPage({ onVolver }: Props) {
/>
</section>
</main>
{clienteSeleccionado && (
<ModalClienteMaestro cliente={clienteSeleccionado} onCerrar={() => setClienteSeleccionado(null)} />
)}
</>
)
}