Saltar a contenido

Layouts

Extiende o compone la estructura visual de pantallas con LayoutBuilder y el hook register_layouts.

Cuándo usar

  • Un plugin debe añadir nodos a un layout existente (banner, slot lateral).
  • Compones dashboards con secciones, tabs o wizard sin ResourceBuilder completo.

Beta

register_layouts y LayoutRegistry están implementados en el framework. Aún no hay plugin de referencia en el monorepo; valida en tests antes de producción.

Hook register_layouts

from cortex_framework.layout.registry import LayoutRegistry

def register_layouts(registry: LayoutRegistry) -> None:
    registry.append(
        "panel.sidebar.footer",
        (
            {"type": "section", "config": {"title": "Ayuda"}},
        ),
        module_id="mi-modulo",
        sort=100,
    )

Operaciones:

Método Efecto
extend(handle, nodes, module_id, sort=1000) Inserta nodos en un handle existente
append(handle, nodes, module_id, sort=1000) Añade al final del slot

Handles y merge: ADR 016.

LayoutBuilder

Para dashboards manuales, LayoutBuilder genera nodos section, grids y anidación. Se usa junto a emit_dashboard() en plugins con UI programática (ej. booking).

Al componer dashboards, respeta la jerarquía de títulos: usa hide_title=True en emit_dashboard cuando el shell muestra el título de pantalla.

Validación

Los nodos deben ser JSON CUS válidos (type + config). El merge ocurre en bootstrap antes de servir manifests.

Siguiente paso

Configuración para pantallas de ajustes por panel.