Pimia
DocumentaciónFrontendIntegracionesAPI ReferenceKnowledge BaseChangelog
PantallasTrabajo y servicios

Partes de tiempo

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

Ruta y puntos de edición

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

Partes de tiempo 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/tiempos/page.tsx
Adaptador Next.jssrc/host/screens/PimiaTimeScreens.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaTimeEntriesScreen.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStates.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/PimiaTimeSummary.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaTimeEntryList.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaTimeEntryDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaConnectDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaProjectCombobox.tsx

PimiaTimeEntriesScreen

Fuente: src/features/pimia/ui/PimiaTimeEntriesScreen.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
Buscar partesInputsearchNo declaradas en este nodo412
Sin etiqueta literal resolubleSelectprojectId === null ? ALL : String(projectId)No declaradas en este nodo422
Sin etiqueta literal resolubleSelectpersonNo declaradas en este nodo442

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Nuevo parte() => openNew()No declarado en este nodo352
Limpiar() => { setSearch(""); setPerson(ALL); setBilling("all"); setFilters(null, taskId); }No declarado en este nodo461
Semana anterior() => setAnchor((current) => addDays(current, -7))No declarado en este nodo481
Semana siguiente() => setAnchor((current) => addDays(current, 7))No declarado en este nodo489
Esta semana() => setAnchor(today)No declarado en este nodo501
Apuntar el primero() => openNew()No declarado en este nodo545
Rótulo dinámico / icono(event) => { // El diálogo cierra solo al confirmar; aquí interesa que se // quede hasta que el servidor conteste, para poder enseñar el // error donde el usuario está mirando. event.preventDefault(); if (pendingDelete) { void remove(pendingDelete); } }removeEntry.isPending660
QuitaronClearNo declarado en este nodo696

Estados reutilizados

  • PimiaNotConnected
  • 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.

text-foreground, bg-card, gap-3, p-3, text-muted-foreground, text-sm, gap-1.5, hover:text-foreground, gap-2, p-1, hover:bg-muted, text-xs, gap-x-3, gap-y-1, bg-primary/5, text-primary, gap-1.

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.

PimiaTimeSummary

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onFilter(isActive ? "all" : card.key)No declarado en este nodo131

Clases de presentación locales

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

grid-cols-2, gap-2.5, sm:gap-3, xl:grid-cols-4, gap-2, text-xs, text-muted-foreground, text-xl, text-foreground, sm:text-2xl, text-sm.

PimiaTimeEntryList

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onFilterByTask(entry.taskId as number)No declarado en este nodo234
Rótulo dinámico / icono() => onEdit(entry)No declarado en este nodo285
Continuar en el cronómetro() => onContinue(entry)No declarado en este nodo292
Duplicar() => onDuplicate(entry)No declarado en este nodo297
Rótulo dinámico / icono() => onDelete(entry)entry.locked302

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, text-center, text-sm, text-muted-foreground, gap-2, bg-muted/40, text-xs, text-foreground, gap-x-3, gap-y-1.5, hover:bg-muted/30, sm:gap-y-0, bg-muted-foreground/40, gap-1.5, bg-muted, text-badge, gap-1, hover:text-primary, text-right, transition-colors, hover:bg-muted, hover:text-foreground, text-2xs.

PimiaTimeEntryDialog

Fuente: src/features/pimia/ui/PimiaTimeEntryDialog.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
ObraPimiaProjectComboboxform.projectIddisabled=locked351
Sin etiqueta literal resolubleSelectform.taskId === null ? "none" : String(form.taskId)No declaradas en este nodo383
DíaInputform.datetype=date466
DuraciónInputform.durationNo declaradas en este nodo481
Hora de entradaInputform.startTimetype=time503
Sin etiqueta literal resolubleSelectform.itemId === null ? "none" : String(form.itemId)No declaradas en este nodo526
FacturableSwitchform.billabledisabled=locked567
NotasTextareaform.notesNo declaradas en este nodo577

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Ver sus partes() => onFilterByTask(chosenTask.id)No declarado en este nodo452
Eliminar() => onDelete(form.id as number)isSaving620
Rótulo dinámico / icono() => onOpenChange(false)No declarado en este nodo631
Guardar y añadir otro() => save(true)isSaving635
Rótulo dinámico / icono() => save(false)isSaving644

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-2, bg-emerald-500/5, p-3, text-sm, text-emerald-600, dark:text-emerald-500, text-muted-foreground, text-xs, text-destructive, text-foreground, gap-4, sm:grid-cols-2, gap-3, bg-destructive/5, hover:text-destructive, gap-x-4, gap-y-1.

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.

PimiaProjectCombobox

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
labeldelegado al contenedordisabled81

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-muted-foreground, p-0, text-xs.

Hooks, adaptadores y utilidades relacionados

  • src/features/pimia/api/auth.ts
  • src/features/pimia/api/pimiaClient.ts
  • src/features/pimia/api/projects.ts
  • src/features/pimia/api/tasks.ts
  • src/features/pimia/api/timeEntries.ts
  • src/features/pimia/hooks/usePimiaAuth.ts
  • src/features/pimia/hooks/usePimiaResources.ts
  • src/features/pimia/hooks/usePimiaTiempos.ts
  • src/features/pimia/hooks/usePimiaTimer.ts
  • src/features/pimia/lib/calendar.ts
  • src/features/pimia/lib/closedDoors.ts
  • src/features/pimia/lib/duration.ts
  • src/features/pimia/lib/missingRecord.ts
  • src/features/pimia/lib/money.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