Pimia
DocumentaciónFrontendIntegracionesAPI ReferenceKnowledge BaseChangelog
PantallasClientes y CRM

Leads

Ruta /pimia/leads · componentes, campos y acciones del checkout documentado.

Ruta y puntos de edición

Ruta: /pimia/leads. Revisión: 2aec1b16cc01.

Esta ficha procede de lectura estática del código. Los componentes asociados pueden incluir diálogos cerrados y bloques condicionales. Las expresiones dinámicas se conservan como código; no equivalen a campos siempre visibles ni a permisos concedidos.

Vista en el tenant de referencia

Leads en Pimia

Captura de escritorio del tenant de demostración Reformas Vera, S.L., tomada el 10 de septiembre de 2026. Los datos ilustran la composición de la pantalla y pueden cambiar.

CapaArchivo relativo al repositorio
Rutasrc/app/pimia/leads/page.tsx
Adaptador Next.jssrc/host/screens/PimiaLeadScreens.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaLeadsScreen.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStates.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaLeadActions.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaScreenShell.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaPageHeader.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStatCards.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStatusTabs.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaFilterBar.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaLeadBoard.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaTablePanel.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaLeadList.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaLeadDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaConnectDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaLeadStage.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaSortableHead.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaAmountCell.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaAssigneeField.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStatusBadge.tsx

PimiaLeadsScreen

Fuente: src/features/pimia/ui/PimiaLeadsScreen.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
Sin etiqueta literal resolubleSelectString(limit)No declaradas en este nodo640

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Nuevo lead() => { setEditing(null); setIsCreateOpen(true); }No declarado en este nodo284
Rótulo dinámico / icono() => onChange(mode)No declarado en este nodo539
Traer hasta() => onLimitChange(nextLimit)isBusy630

Estados reutilizados

  • PimiaNotConnected
  • PimiaRowsSkeleton
  • PimiaErrorState
  • PimiaEmpty

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

gap-2, text-xs, text-muted-foreground, gap-1, p-0.5, gap-3, bg-background.

PimiaStates

Fuente: src/features/pimia/ui/PimiaStates.tsx.

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Conectar una empresa() => setIsConnectOpen(true)No declarado en este nodo99
Rótulo dinámico / icono() => void goPimiaPath(notFound.listPath)No declarado en este nodo233
Rótulo dinámico / iconodelegado al contenedorNo declarado en este nodo247
Rótulo dinámico / icono() => void goPimiaPath( closedDoor.action?.kind === "plan" ? PLAN_PATH : MODULES_SETTINGS_PATH, )No declarado en este nodo257
Volver a conectar() => setIsConnectOpen(true)No declarado en este nodo273
ReintentaronRetryNo declarado en este nodo279

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

gap-4, p-8, text-center, text-base, text-foreground, text-sm, text-muted-foreground, gap-2, overflow-hidden, bg-muted/40.

PimiaLeadActions

Fuente: src/features/pimia/ui/PimiaLeadActions.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
Texto de la notaTextareanoteTextNo declaradas en este nodo497

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => void handleStage(stage)isCurrent283
Mover a « »() => void handleStage(primaryStage)isBusy309
`Acciones de ${lead.title}`delegado al contenedorisBusy332
Ver el lead() => { if (onOpen) { onOpen(lead.id); } else { void goPimiaLead(lead.id); } }No declarado en este nodo350
Editar() => onEdit(lead)No declarado en este nodo372
Añadir nota() => setIsNoteOpen(true)No declarado en este nodo390
Rótulo dinámico / icono() => { void goPimiaCustomer(lead.convertedToCustomerId as string); }No declarado en este nodo403
Eliminar() => setIsConfirmingDelete(true)No declarado en este nodo417
Eliminar() => void handleDelete()No declarado en este nodo462
Cancelar() => setIsNoteOpen(false)No declarado en este nodo513
Guardar la notasubmit del formularioaddNote.isPending520

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

text-xs, text-muted-foreground, gap-1.5, text-sm, text-destructive.

PimiaFilterBar

Fuente: src/features/pimia/ui/PimiaFilterBar.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
searchLabel ?? searchPlaceholderInputsearchValue ?? ""No declaradas en este nodo56

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

text-muted-foreground, gap-2.

PimiaLeadBoard

Fuente: src/features/pimia/ui/PimiaLeadBoard.tsx.

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onOpen(lead.id)No declarado en este nodo246

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

gap-4, overflow-x-auto, overflow-y-hidden, gap-2, text-sm, text-foreground, text-xs, text-muted-foreground, overflow-y-auto, p-2, gap-1, text-left.

PimiaLeadList

Fuente: src/features/pimia/ui/PimiaLeadList.tsx.

Columnas declaradas

  • Contacto
  • Etapa
  • Probabilidad
  • Asignado
  • Acciones

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onOpen(lead.id)No declarado en este nodo177

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

hover:bg-transparent, text-left, text-foreground, text-xs, text-muted-foreground, text-right.

PimiaLeadDialog

Fuente: src/features/pimia/ui/PimiaLeadDialog.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
Título de la oportunidadInputform.titleNo declaradas en este nodo331
Persona de contactoInputform.personNameNo declaradas en este nodo349
OrganizaciónInputform.organizationNameNo declaradas en este nodo358
EmailInputform.emailtype=email379
TeléfonoInputform.phoneNo declaradas en este nodo418
Sin etiqueta literal resolubleSelectform.stageNo declaradas en este nodo430
Probabilidad (%, opcional)Inputform.probabilityNo declaradas en este nodo468
Valor esperado (€)Inputform.expectedAmountCentsNo declaradas en este nodo510
Cierre previstoInputform.expectedCloseDatetype=date533
OrigenInputform.sourceNo declaradas en este nodo554
TipoInputform.leadTypeNo declaradas en este nodo571
EtiquetasInputpendingTagNo declaradas en este nodo590
DescripciónTextareaform.descriptionNo declaradas en este nodo665

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
AñadircommitTagpendingTag.trim() === ""604
`Quitar la etiqueta «${tag}»`() => set( "tags", form.tags.filter((current) => current !== tag), )No declarado en este nodo621
Cancelar() => onOpenChange(false)No declarado en este nodo686
Rótulo dinámico / iconosubmit del formularioisSaving696

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

overflow-y-auto, text-xs, text-destructive, gap-4, sm:grid-cols-2, text-muted-foreground, gap-2, gap-1.5, gap-1, bg-muted, hover:text-foreground, text-sm.

PimiaConnectDialog

Fuente: src/features/pimia/ui/PimiaConnectDialog.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
Tu empresaInputbaseUrldisabled=connect.isPending114

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => handleOpenChange(false)No declarado en este nodo155
Rótulo dinámico / iconosubmit del formulario!canSubmit162

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

text-sm, text-foreground, gap-2, text-muted-foreground, text-xs, text-destructive.

PimiaLeadStage

Fuente: src/features/pimia/ui/PimiaLeadStage.tsx.

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onSelect(candidate)isCurrent || isBusy265

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

overflow-hidden, bg-muted, text-sm, text-foreground, grid-cols-2, gap-2, sm:grid-cols-3, lg:grid-cols-6, text-xs, text-muted-foreground.

PimiaSortableHead

Fuente: src/features/pimia/ui/PimiaSortableHead.tsx.

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onSortChange({ direction: isActive && sort.direction === "desc" ? "asc" : ("desc" as const), field, })No declarado en este nodo61

PimiaAssigneeField

Fuente: src/features/pimia/ui/PimiaAssigneeField.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
Sin etiqueta literal resolubleSelectassignedUserId === null ? SIN_NADIE : String(assignedUserId)No declaradas en este nodo161

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Asignármelo a mí() => onChange(currentUserId, currentUserName)No declarado en este nodo137
Dejarlo sin responsable() => onChange(null, null)No declarado en este nodo148

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

p-3, text-sm, text-foreground, gap-2, text-muted-foreground, text-xs.

Hooks, adaptadores y utilidades relacionados

  • src/features/pimia/api/auth.ts
  • src/features/pimia/api/estimates.ts
  • src/features/pimia/api/invoices.ts
  • src/features/pimia/api/leads.ts
  • src/features/pimia/api/pimiaClient.ts
  • src/features/pimia/api/team.ts
  • src/features/pimia/hooks/usePimiaAuth.ts
  • src/features/pimia/hooks/usePimiaEquipo.ts
  • src/features/pimia/hooks/usePimiaLeads.ts
  • src/features/pimia/hooks/usePimiaResources.ts
  • src/features/pimia/hooks/usePimiaTiempos.ts
  • src/features/pimia/lib/calendar.ts
  • src/features/pimia/lib/closedDoors.ts
  • src/features/pimia/lib/leadBoard.ts
  • src/features/pimia/lib/leadForm.ts
  • src/features/pimia/lib/leads.ts
  • src/features/pimia/lib/missingRecord.ts
  • src/features/pimia/lib/money.ts
  • src/features/pimia/lib/scopeDenial.ts
  • src/features/pimia/lib/team.ts

Antes de entregar un retoque

  • Revisa los archivos de formulario y sus helpers antes de cambiar tipos, obligatoriedad o valores iniciales.
  • Prueba carga, error, vacío, permisos insuficientes y guardado pendiente en las variantes que usa esta pantalla.
  • Comprueba escritorio, móvil, teclado, tema oscuro y scroll con suficientes filas.
  • Conserva los handlers y la invalidación de datos al modificar la presentación.

En esta página