ManifestNavEntry
Entrada de navegacion (capacidad nav.entries.v1, junto a ui.pages.v1 si la pagina usa componentes de pagina completa): un enlace en la barra lateral del correo (main, workspace, tools) o en el menu de la consola (admin) hacia una PAGINA de la propia extension (/extensions/<path>; las de admin tambien en /admin/x/<path>). Maximo 12 por extension, etiqueta de hasta 40 caracteres.
Ocultar la entrada NO es el control de acceso: la pagina conserva su propio auth/minLevel (se comprueba en el servidor) y la entrada debe ser tan restrictiva como ella.
Firma
export interface ManifestNavEntry {
id: string;
section: "main" | "workspace" | "tools" | "admin";
label: string | Record<string, string>;
icon?: string;
order?: number;
target: string;
badge?: { route: string; refreshSeconds?: number; };
auth?: "session" | "admin";
minLevel?: number;
mobile?: boolean;
}Miembros (10)
| Nombre | Tipo | Descripción |
|---|---|---|
| idobligatorio | string | Unico dentro de la extension: [a-z0-9-], max 40. |
| sectionobligatorio | "main" | "workspace" | "tools" | "admin" | Donde aparece: main y workspace (barra del correo), tools (seccion Herramientas) o admin (consola; exige auth admin). |
| labelobligatorio | string | Record<string, string> | Texto o { es, en }; 1-40 caracteres, sin HTML. |
| iconopcional | string | Icono Lucide, "lucide:<Nombre>", "brand:<slug>" o "initials:<XY>". |
| orderopcional | number | Menor primero (0-1000, por defecto 100). |
| targetobligatorio | string | "page:<path>" (o "/extensions/<path>"): path de un mount PAGE de esta extension. |
| badgeopcional | { route: string; refreshSeconds?: number; } | Insignia numerica: ruta GET de backendRoutes (auth session o admin) que devuelve un numero o { count }. Se muestra hasta 999+. |
| authopcional | "session" | "admin" | Por defecto el de la pagina; la seccion admin exige "admin". |
| minLevelopcional | number | Con auth admin: nivel minimo (1..4); nunca menor que el de la pagina. |
| mobileopcional | boolean | false = no aparece en el menu movil. |
Ejemplos
const entry: ManifestNavEntry = { id: "metrics", section: "admin", label: { es: "Metricas", en: "Metrics" }, icon: "ChartColumn", target: "page:metrics", badge: { route: "/badge", refreshSeconds: 120 } };Usado en / Referenciado por
Fuente: bloomx-extensions/_shared/sdk/manifest.d.ts:271 · manifest.d.ts