Pimia
DocumentaciónFrontendIntegracionesAPI ReferenceKnowledge BaseChangelog
PantallasAjustes

Personalización

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

Ruta y puntos de edición

Ruta: /pimia/ajustes/personalizacion. 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

Personalización 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/ajustes/personalizacion/page.tsx
Adaptador Next.jssrc/host/screens/PimiaAjustesScreens.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaPersonalizationScreen.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStates.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaAjustesShell.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaPageHeader.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaAjustesBloque.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaDato.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaNotesSection.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaTemplateEditorSheet.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaCustomFieldDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaConfirmDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaConnectDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaNoteDialog.tsx

PimiaPersonalizationScreen

Fuente: src/features/pimia/ui/PimiaPersonalizationScreen.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 resolubleSelectserie.templateId === null ? "none" : String(serie.templateId)disabled=asignar.isPending467

Columnas declaradas

  • Plantilla
  • Diseño base
  • Membrete
  • Acciones
  • Serie y numeración
  • Emitidas

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Editar() => setEditandoId(p.id)No declarado en este nodo392
Nuevo campo() => { setCampoEditando(null); setCampoError(null); setCampoDialogOpen(true); }No declarado en este nodo756
`Editar ${campo.name ?? `campo ${campo.id}`}`() => { setCampoEditando({ id: campo.id, draft: { ...emptyCustomFieldDraft(), label: campo.name ?? "", modelType: campo.modelType ?? emptyCustomFieldDraft().modelType, type: campo.type ?? emptyCustomFieldDraft().type, isRequired: campo.isRequired === true, }, }); setCampoError(null); setCampoDialogOpen(true); }No declarado en este nodo822
`Borrar ${campo.name ?? `campo ${campo.id}`}`() => { setCampoError(null); setCampoABorrar({ id: campo.id, name: campo.name ?? `Campo ${campo.id}`, }); }No declarado en este nodo847

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.

bg-muted/40, text-sm, text-muted-foreground, text-center, text-foreground, gap-2, text-xs, text-right, gap-3, p-4, sm:grid-cols-2, lg:grid-cols-3, gap-x-6, gap-y-5, gap-x-4, gap-y-1, gap-1.5, bg-muted, text-2xs.

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.

PimiaAjustesShell

Fuente: src/features/pimia/ui/PimiaAjustesShell.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 resolubleSelectactiveNo declaradas en este nodo322

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => void goPimiaPath(`/pimia/ajustes/${s.slug}`)No declarado en este nodo283

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-6, overflow-y-auto, p-6, xl:gap-8, gap-2.5, text-muted-foreground/50, text-sm, text-badge.

PimiaNotesSection

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Nueva nota() => { setEditando(null); setError(null); setDialogOpen(true); }No declarado en este nodo129
`Editar ${nombreDe(nota)}`() => { setEditando({ id: nota.id, draft: { name: nota.name ?? "", // Un tipo que no llega cae al primero: el // desplegable tiene que enseñar algo, y guardar // exige uno de los tres. type: nota.type ?? "Invoice", isDefault: nota.isDefault, notes: nota.notes ?? "", }, }); setError(null); setDialogOpen(true); }No declarado en este nodo203
`Borrar ${nombreDe(nota)}`() => { setError(null); setABorrar(nota); }No declarado en este nodo227

Estados reutilizados

  • PimiaRowsSkeleton
  • PimiaErrorState

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-4, text-sm, text-muted-foreground, gap-x-4, gap-y-1, gap-1.5, text-foreground, text-primary, text-xs, gap-2.

PimiaTemplateEditorSheet

Fuente: src/features/pimia/ui/PimiaTemplateEditorSheet.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 resolubleinputhextype=color142
Sin etiqueta literal resolubleInputvalor ?? ""type=number; min=0174
etiquetaSwitchactivoNo declaradas en este nodo212
Sin etiqueta literal resolubleSelectvalorNo declaradas en este nodo243
NombreInputdraft.namemaxLength=100384
Sin etiqueta literal resolubleSelectdraft.fontFamilyNo declaradas en este nodo480
Sin etiqueta literal resolubleCheckboxmarcadadisabled=marcada606
Texto del pieTextareadraft.footerTextNo declaradas en este nodo673
Marca de aguaInputdraft.watermarkTextNo declaradas en este nodo683

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => set("baseTemplate", d.name)No declarado en este nodo417
Sin fondo() => set("headerBgColor", "transparent")draft.headerBgColor === "transparent"656
CancelaronCloseNo declarado en este nodo699
Rótulo dinámico / icono() => void onGuardar()draft === null || problema !== null || enVuelo702

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-3, text-xs, text-muted-foreground, gap-2, text-2xs, bg-transparent, p-0.5, text-badge, overflow-y-auto, bg-muted/40, grid-cols-3, bg-card, text-primary, grid-cols-2.

PimiaCustomFieldDialog

Fuente: src/features/pimia/ui/PimiaCustomFieldDialog.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
NombreInputdraft.labelNo declaradas en este nodo109
Sin etiqueta literal resolubleSelectdraft.modelTypeNo declaradas en este nodo122
Sin etiqueta literal resolubleSelectdraft.typeNo declaradas en este nodo144
OpcionesTextareadraft.optionsNo declaradas en este nodo168
Texto de ayudaInputdraft.placeholderNo declaradas en este nodo187
OrdenInputdraft.orderNo declaradas en este nodo198
ObligatorioSwitchdraft.isRequiredNo declaradas en este nodo208

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => props.onOpenChange(false)No declarado en este nodo229
Rótulo dinámico / iconosubmitprops.isSaving236

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, gap-4, sm:grid-cols-2, text-xs, text-muted-foreground, gap-3, text-sm, text-destructive.

PimiaConfirmDialog

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono(event) => { event.preventDefault(); onConfirmar(); }enVuelo91

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-destructive.

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.

PimiaNoteDialog

Fuente: src/features/pimia/ui/PimiaNoteDialog.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
NombreInputdraft.nameNo declaradas en este nodo178
Sin etiqueta literal resolubleSelectdraft.typeNo declaradas en este nodo196
TextoTextareadraft.notesNo declaradas en este nodo213
Ponerla por defectoSwitchdraft.isDefaultNo declaradas en este nodo265

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => insertar(m.token)No declarado en este nodo233
Cancelar() => props.onOpenChange(false)No declarado en este nodo285
Rótulo dinámico / iconosubmitprops.isSaving292

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, gap-4, sm:grid-cols-2, text-xs, text-muted-foreground, text-foreground, gap-1.5, gap-3, text-sm, text-destructive.

Hooks, adaptadores y utilidades relacionados

  • src/features/pimia/api/auth.ts
  • src/features/pimia/api/documentTemplates.ts
  • src/features/pimia/api/notes.ts
  • src/features/pimia/api/pimiaClient.ts
  • src/features/pimia/hooks/usePimiaAuth.ts
  • src/features/pimia/hooks/usePimiaNotas.ts
  • src/features/pimia/hooks/usePimiaPersonalizacion.ts
  • src/features/pimia/hooks/usePimiaResources.ts
  • src/features/pimia/lib/closedDoors.ts
  • src/features/pimia/lib/customFieldDraft.ts
  • src/features/pimia/lib/documentTemplates.ts
  • src/features/pimia/lib/missingRecord.ts
  • src/features/pimia/lib/noteDraft.ts
  • src/features/pimia/lib/scopeDenial.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