Plan y contratación
Ruta /pimia/plan · componentes, campos y acciones del checkout documentado.
Ruta y puntos de edición
Ruta: /pimia/plan. 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.
| Capa | Archivo relativo al repositorio |
|---|---|
| Ruta | src/app/pimia/plan/page.tsx |
| Adaptador Next.js | src/host/screens/PimiaPlanScreens.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaPlanScreen.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaStates.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaScreenShell.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaPageHeader.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaAjustesBloque.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaPlanModulos.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaPlanCatalogoIntegrador.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaPlanTarjeta.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaConfirmDialog.tsx |
| Vista o componente asociado | src/features/pimia/ui/PimiaConnectDialog.tsx |
PimiaPlanScreen
Fuente: src/features/pimia/ui/PimiaPlanScreen.tsx.
Acciones
| Rótulo literal | Handler o envío | Deshabilitado cuando | Línea |
|---|---|---|---|
| Tarjeta y facturas | () => void abrirPortal() | portal.isPending | 580 |
| Actualizar el método de pago | () => void abrirPortal() | portal.isPending | 737 |
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.
gap-3, text-sm, text-foreground, text-xs, text-muted-foreground, text-center, gap-2, bg-muted/40, gap-6, p-4, md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)], gap-1.5, gap-4, sm:grid-cols-2, lg:grid-cols-3.
PimiaStates
Fuente: src/features/pimia/ui/PimiaStates.tsx.
Acciones
| Rótulo literal | Handler o envío | Deshabilitado cuando | Línea |
|---|---|---|---|
| Conectar una empresa | () => setIsConnectOpen(true) | No declarado en este nodo | 99 |
| Rótulo dinámico / icono | () => void goPimiaPath(notFound.listPath) | No declarado en este nodo | 233 |
| Rótulo dinámico / icono | delegado al contenedor | No declarado en este nodo | 247 |
| Rótulo dinámico / icono | () => void goPimiaPath( closedDoor.action?.kind === "plan" ? PLAN_PATH : MODULES_SETTINGS_PATH, ) | No declarado en este nodo | 257 |
| Volver a conectar | () => setIsConnectOpen(true) | No declarado en este nodo | 273 |
| Reintentar | onRetry | No declarado en este nodo | 279 |
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.
PimiaPlanModulos
Fuente: src/features/pimia/ui/PimiaPlanModulos.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 pista | Control | Enlace de estado | Reglas JSX | Línea |
|---|---|---|---|---|
| Sin etiqueta literal resoluble | Checkbox | marcado | disabled=!puede | 334 |
Acciones
| Rótulo literal | Handler o envío | Deshabilitado cuando | Línea |
|---|---|---|---|
| Rótulo dinámico / icono | () => onMantener(modulo) | !puerta.puede | 258 |
| Rótulo dinámico / icono | () => onApagar(modulo) | !puerta.puede | 267 |
| Rótulo dinámico / icono | onPagar | marcados.length === 0 || enVuelo | 388 |
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, gap-2, bg-muted/40, text-sm, text-muted-foreground, text-xs, gap-3, text-foreground, gap-1, text-destructive, md:grid-cols-2, p-3, text-base, text-primary.
PimiaPlanCatalogoIntegrador
Fuente: src/features/pimia/ui/PimiaPlanCatalogoIntegrador.tsx.
Acciones
| Rótulo literal | Handler o envío | Deshabilitado cuando | Línea |
|---|---|---|---|
| Rótulo dinámico / icono | () => onContratar(item.contractUrl as string) | No declarado en este nodo | 86 |
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-muted-foreground, gap-4, sm:grid-cols-2, lg:grid-cols-3, gap-2, text-xs, text-base, text-foreground, text-lg.
PimiaPlanTarjeta
Fuente: src/features/pimia/ui/PimiaPlanTarjeta.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 pista | Control | Enlace de estado | Reglas JSX | Línea |
|---|---|---|---|---|
| Sin etiqueta literal resoluble | Checkbox | marcado | disabled=enVuelo | 179 |
Acciones
| Rótulo literal | Handler o envío | Deshabilitado cuando | Línea |
|---|---|---|---|
| Plan actual | delegado al contenedor | true | 244 |
| Rótulo dinámico / icono | () => onElegir( plan, marcados.map((modulo) => modulo.slug), ) | enVuelo | 248 |
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-base, text-foreground, text-sm, text-muted-foreground, text-right, text-primary, text-xs, gap-3, bg-muted/40, p-3.
PimiaConfirmDialog
Fuente: src/features/pimia/ui/PimiaConfirmDialog.tsx.
Acciones
| Rótulo literal | Handler o envío | Deshabilitado cuando | Línea |
|---|---|---|---|
| Rótulo dinámico / icono | (event) => { event.preventDefault(); onConfirmar(); } | enVuelo | 91 |
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 pista | Control | Enlace de estado | Reglas JSX | Línea |
|---|---|---|---|---|
| Tu empresa | Input | baseUrl | disabled=connect.isPending | 114 |
Acciones
| Rótulo literal | Handler o envío | Deshabilitado cuando | Línea |
|---|---|---|---|
| Cancelar | () => handleOpenChange(false) | No declarado en este nodo | 155 |
| Rótulo dinámico / icono | submit del formulario | !canSubmit | 162 |
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.
Hooks, adaptadores y utilidades relacionados
-
src/features/pimia/api/auth.ts -
src/features/pimia/api/pimiaClient.ts -
src/features/pimia/api/shell.ts -
src/features/pimia/api/tenantModules.ts -
src/features/pimia/hooks/usePimiaAuth.ts -
src/features/pimia/hooks/usePimiaModulos.ts -
src/features/pimia/hooks/usePimiaPlan.ts -
src/features/pimia/hooks/usePimiaResources.ts -
src/features/pimia/lib/billing.ts -
src/features/pimia/lib/closedDoors.ts -
src/features/pimia/lib/missingRecord.ts -
src/features/pimia/lib/planModulos.ts -
src/features/pimia/lib/scopeDenial.ts -
src/features/pimia/lib/tenantModules.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.