@trismegisto/spine 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +56 -0
- package/README.md +207 -0
- package/fesm2022/trismegisto-spine-audit.mjs +1299 -0
- package/fesm2022/trismegisto-spine-audit.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs +37 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs +51 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-BYkUOwWL.mjs +595 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-BYkUOwWL.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs +357 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-B5tyJ2zY.mjs +477 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-B5tyJ2zY.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs +238 -0
- package/fesm2022/trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service.mjs +154 -0
- package/fesm2022/trismegisto-spine-auto-service.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-graphql.mjs +347 -0
- package/fesm2022/trismegisto-spine-graphql.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-layout.mjs +2848 -0
- package/fesm2022/trismegisto-spine-layout.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-modal.mjs +141 -0
- package/fesm2022/trismegisto-spine-modal.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-notification.mjs +122 -0
- package/fesm2022/trismegisto-spine-notification.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-routing.mjs +398 -0
- package/fesm2022/trismegisto-spine-routing.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-shell.mjs +409 -0
- package/fesm2022/trismegisto-spine-shell.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-side-panel.mjs +142 -0
- package/fesm2022/trismegisto-spine-side-panel.mjs.map +1 -0
- package/fesm2022/trismegisto-spine.mjs +2574 -0
- package/fesm2022/trismegisto-spine.mjs.map +1 -0
- package/package.json +94 -0
- package/types/trismegisto-spine-audit.d.ts +948 -0
- package/types/trismegisto-spine-audit.d.ts.map +1 -0
- package/types/trismegisto-spine-auto-service.d.ts +110 -0
- package/types/trismegisto-spine-auto-service.d.ts.map +1 -0
- package/types/trismegisto-spine-graphql.d.ts +72 -0
- package/types/trismegisto-spine-graphql.d.ts.map +1 -0
- package/types/trismegisto-spine-layout.d.ts +1054 -0
- package/types/trismegisto-spine-layout.d.ts.map +1 -0
- package/types/trismegisto-spine-modal.d.ts +68 -0
- package/types/trismegisto-spine-modal.d.ts.map +1 -0
- package/types/trismegisto-spine-notification.d.ts +62 -0
- package/types/trismegisto-spine-notification.d.ts.map +1 -0
- package/types/trismegisto-spine-routing.d.ts +205 -0
- package/types/trismegisto-spine-routing.d.ts.map +1 -0
- package/types/trismegisto-spine-shell.d.ts +143 -0
- package/types/trismegisto-spine-shell.d.ts.map +1 -0
- package/types/trismegisto-spine-side-panel.d.ts +66 -0
- package/types/trismegisto-spine-side-panel.d.ts.map +1 -0
- package/types/trismegisto-spine.d.ts +1161 -0
- package/types/trismegisto-spine.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trismegisto-spine.mjs","sources":["../../../projects/ui/src/route.model.ts","../../../projects/ui/src/route-tree.ts","../../../projects/ui/src/hermes.imports.ts","../../../projects/ui/src/app-config.token.ts","../../../projects/ui/src/theme.service.ts","../../../projects/ui/src/theme-preset.service.ts","../../../projects/ui/src/density.service.ts","../../../projects/ui/src/brand.ts","../../../projects/ui/src/theme.initializer.ts","../../../projects/ui/src/package-info.token.ts","../../../projects/ui/src/preferences.service.ts","../../../projects/ui/src/admin-api.token.ts","../../../projects/ui/src/quick-access.service.ts","../../../projects/ui/src/runtime-environment.ts","../../../projects/ui/src/news.token.ts","../../../projects/ui/src/i18n/spine-messages.ts","../../../projects/ui/src/i18n/spine-messages.en.ts","../../../projects/ui/src/i18n/spine-messages.es.ts","../../../projects/ui/src/i18n/spine-i18n.ts","../../../projects/ui/src/trismegisto-spine.ts"],"sourcesContent":["export interface Route {\n route_display_name?: string | null;\n route_icon?: string | null;\n /**\n * @deprecated use `router_id` (ou `routerIdOf`). Nome histórico: no nó 'page' o argos-auth-server\n * sempre mandou aqui o `router_id` (nunca o `web.routes.route_id`, que é `routed_id`). Continua\n * vindo, com o mesmo valor, para spines/Orfeu antigos.\n */\n route_id?: string | null;\n route_name?: string | null;\n route_order?: number | null;\n route_path?: string | null;\n route_redirect?: string | null;\n route_redirect_to?: string | null;\n route_type?: string | null;\n /** A ROTA do nó (`web.routes.route_id`): nome/ícone/path. Reaproveitável em vários routers. */\n routed_id: string;\n routes?: Route[] | null;\n /**\n * Identidade da TELA: o router do client (`web.router.router_id`, a posição da tela na\n * navegação). Só no nó 'page' -- nó de grupo (navigation/menu/...) é compartilhado por vários\n * routers e não tem um próprio. É por ele que o spine acha o componente (`COMPONENT_ROUTES`),\n * o documento e a descrição. Argos anterior a 2026-10-05 não manda: use `routerIdOf`, que cai\n * no `route_id` (mesmo valor).\n */\n router_id?: string | null;\n /** Texto curto da tela (`web.router.description`), exibido na barra da página abaixo do título. */\n description?: string | null;\n // Presente só no nó 'page' -- proveniência de template (web.router.source_template_router_id),\n // estável entre todos os clients vinculados ao mesmo template, ao contrário de router_id (que é\n // o router CLONADO, específico de cada client). Usado como fallback de resolução de componente\n // quando nenhum app registrou esse router_id diretamente, ver ComponentDistributorService.\n source_template_router_id?: string | null;\n}\n\n/** `router_id` da tela (nó 'page'), aceitando o argos antigo (que só mandava `route_id`, mesmo valor). */\nexport function routerIdOf(route: Route | null | undefined): string | null {\n return route?.router_id ?? route?.route_id ?? null;\n}\n","import { Route } from './route.model';\n\n/**\n * Funde nós IRMÃOS que apontam para o mesmo endereço (`route_redirect`), em toda a árvore.\n *\n * Herança do roteamento antigo: o nível do nó (header/navigation/menu/item/submenu/page) dizia ONDE ele\n * era desenhado — header no topo, menu na lateral, o resto no `<router-outlet>` de cada app. Agora tudo\n * é menu (`spine-sidebar`) e o nível não importa mais, só o endereço. Só que o argos-auth-server monta a\n * view pulando nível vazio: um router header(\"laboratorio\")→page(\"prova-de-conceito\") e outro\n * navigation(\"laboratorio\")→page(\"dashboard\") viram dois nós de topo DIFERENTES com o mesmo\n * `/laboratorio`. Resultado: dois \"laboratorio\" no menu, e a resolução por nível (`findRouteThrough`, que\n * pega o PRIMEIRO irmão que casa) só enxergava os filhos de um deles — a página do outro caía no\n * fallback do `ViewGuard` (volta para o início). Achado real, 2026-10-07.\n *\n * Regras:\n * - Só funde irmãos da MESMA lista, com `route_redirect` igual e não vazio (grupo transparente, sem\n * endereço, nunca é fundido — não há o que comparar).\n * - O nó fundido é o primeiro da lista (mantém posição, nome, ícone e `routed_id` dele); `router_id`/\n * `description`/`source_template_router_id` vêm do primeiro que tiver. Os filhos de todos são\n * juntados (ordenados por `route_order`, estável) e fundidos de novo, recursivamente.\n * - Lista sem nenhum endereço repetido sai IGUAL (mesmo array, mesmos objetos): nada muda para app cuja\n * árvore já era consistente.\n * - Nunca muta a entrada (a view é do `ViewService` do orfeu, compartilhada).\n *\n * Use `spineRoutesOf(view)` em vez de ler `view.routes` direto: o resultado é guardado por identidade do\n * array, então todo consumidor (guard, painel, sidebar, busca...) recebe a MESMA árvore fundida.\n */\nexport function mergeRouteTree(routes: readonly Route[] | null | undefined): Route[] {\n if (!routes?.length) return [];\n const cached = cache.get(routes);\n if (cached) return cached;\n const merged = mergeLevel(routes);\n cache.set(routes, merged);\n return merged;\n}\n\n/** A árvore fundida da view atual (`ViewService.currentView`) — ver `mergeRouteTree`. */\nexport function spineRoutesOf(view: { routes?: readonly Route[] | null } | null | undefined): Route[] {\n return mergeRouteTree(view?.routes);\n}\n\nconst cache = new WeakMap<readonly Route[], Route[]>();\n\nfunction mergeLevel(routes: readonly Route[]): Route[] {\n const byRedirect = new Map<string, Route[]>();\n for (const r of routes) {\n const key = r?.route_redirect;\n if (!key) continue;\n const group = byRedirect.get(key);\n if (group) group.push(r);\n else byRedirect.set(key, [r]);\n }\n\n let changed = false;\n const out: Route[] = [];\n for (const r of routes) {\n const key = r?.route_redirect;\n const group = key ? byRedirect.get(key)! : null;\n if (group && group.length > 1) {\n changed = true;\n // Só o primeiro do grupo entra (com os filhos de todos); os demais somem daqui.\n if (group[0] === r) out.push(mergeGroup(group));\n continue;\n }\n const children = r?.routes;\n const mergedChildren = children?.length ? mergeLevel(children) : children;\n if (mergedChildren !== children) {\n changed = true;\n out.push({ ...r, routes: mergedChildren });\n } else {\n out.push(r);\n }\n }\n return changed ? out : (routes as Route[]);\n}\n\nfunction mergeGroup(group: Route[]): Route {\n const [base] = group;\n const pick = <K extends keyof Route>(key: K): Route[K] => group.find((r) => r[key] != null)?.[key] ?? base[key];\n const children = group\n .flatMap((r) => r.routes ?? [])\n .map((r, index) => ({ r, index }))\n .sort((a, b) => (a.r.route_order ?? Infinity) - (b.r.route_order ?? Infinity) || a.index - b.index)\n .map(({ r }) => r);\n return {\n ...base,\n router_id: pick('router_id'),\n route_id: pick('route_id'),\n description: pick('description'),\n source_template_router_id: pick('source_template_router_id'),\n routes: mergeLevel(children),\n };\n}\n","import { Type } from '@angular/core';\nimport {\n AlertComponent,\n ButtonComponent,\n DrawerComponent,\n IconButtonComponent,\n IconComponent,\n MenuButtonComponent,\n MenuComponent,\n ModalComponent,\n SidebarComponent,\n SidebarGroupComponent,\n SidebarLinkComponent,\n SidebarNodeComponent,\n ToastStackComponent,\n} from '@trismegisto/angular';\n\n/**\n * Ponto único de import dos componentes standalone do `@trismegisto/angular` usados nos templates do\n * spine. O DS novo é standalone-only (sem agregador), então este array cumpre o mesmo papel prático:\n * um `@Component({ imports: [...HERMES_DS_IMPORTS] })` em vez de listar cada símbolo em cada arquivo\n * que usa `hm-*`.\n */\nexport const HERMES_DS_IMPORTS: readonly Type<unknown>[] = [\n AlertComponent,\n ButtonComponent,\n DrawerComponent,\n IconButtonComponent,\n IconComponent,\n MenuButtonComponent,\n MenuComponent,\n ModalComponent,\n SidebarComponent,\n SidebarGroupComponent,\n SidebarLinkComponent,\n SidebarNodeComponent,\n ToastStackComponent,\n];\n","import { InjectionToken } from '@angular/core';\nimport type { HermesThemeExtension } from '@trismegisto/primitives';\nimport { SpineLogoConfig } from './brand';\n\nexport interface SpineConfig {\n clientId: string;\n /**\n * Famílias de cor próprias do app (opcional): acrescentar (`families`), trocar uma existente\n * (`replace: { poseidon: minhaFamilia }` — posição e preferência salva passam para a nova) e a\n * família inicial (`defaultFamily`). Ver `extendThemeConfig` do `@trismegisto/primitives`; a família\n * se monta e exporta no `hm-theme-builder`.\n */\n theme?: HermesThemeExtension;\n /** Nome do app exibido ao lado do logo no header (ex.: \"Hefesto\"). Padrão: \"Hermes\". */\n appName?: string;\n /**\n * Logo do header, servido pelo próprio app (caminho relativo ao `<base href>`, ex.: arquivo em\n * `src/assets/images/`). Formas:\n * - omitido: convenção `assets/images/logo.svg` (`SPINE_DEFAULT_LOGO`);\n * - `'assets/images/logo.png'`: um arquivo só, para os dois temas;\n * - `{ light, dark?, alt? }`: `dark` é usado no tema escuro (do `ThemeService`); `alt` substitui o texto\n * alternativo padrão;\n * - `false`: sem imagem (só o nome, sem nenhuma requisição).\n * Se a imagem não carregar (404/erro), o header esconde a imagem e mostra só o nome. Um componente de\n * marca em `SPINE_BRAND` (`@trismegisto/spine/layout`) tem prioridade sobre a imagem.\n */\n logo?: SpineLogoConfig | false;\n /** Mostra o `appName` ao lado do logo. Padrão: `true`. Com `false` o nome só aparece se não houver logo\n * visível (sem imagem, ou imagem que falhou) — o link da marca nunca fica sem texto. */\n showAppName?: boolean;\n /** Favicon do app (ex.: `'assets/favicon.ico'`). Se definido, o `provideUi` atualiza o `<link rel=\"icon\">`\n * do `index.html` (ou cria um) no bootstrap; sem isto o spine não mexe no favicon. */\n favicon?: string;\n /** Exibe a aba \"Especificação técnica\" da documentação das telas (`RouteDocument.loadTechnical`).\n * Padrão: `isDevMode()`. Apps com build de produção em homologação passam\n * `!environment.production` (ou equivalente) para mostrá-la fora de produção. */\n technicalDocs?: boolean;\n}\n\nexport const SPINE_CONFIG = new InjectionToken<SpineConfig>('SPINE_CONFIG');\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, NgZone, Optional, PLATFORM_ID, effect, inject } from '@angular/core';\nimport { HermesThemeMode, HermesThemeName, HermesThemeService } from '@trismegisto/angular';\nimport { SPINE_CONFIG, SpineConfig } from './app-config.token';\n\n/**\n * Wrapper fino sobre `HermesThemeService` (que já persiste em `localStorage` e aplica\n * `data-theme`/`--hm-*` via `HermesThemeDirective`): mantém o mesmo nome/API de injeção do\n * spine antigo, e adiciona só o que o DS novo não cobre — sincronização entre ABAS do\n * navegador via `BroadcastChannel` (o `ThemeService` antigo tinha isso; `HermesThemeService`\n * é por-aba). Aplica os atributos diretamente no `<body>` em vez de exigir que cada app\n * consumidor lembre de colocar `hermesTheme` no template — mesmo espírito do antigo, que\n * também escrevia `hermes-theme` no `<body>` a partir do serviço, não do template.\n */\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private readonly hermesTheme = inject(HermesThemeService);\n\n private channel: BroadcastChannel | null = null;\n private readonly channelName: string;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n private zone: NgZone,\n @Optional() @Inject(SPINE_CONFIG) config: SpineConfig | null,\n ) {\n const ns = config?.clientId ?? 'app';\n this.channelName = `spine_theme_${ns}`;\n\n if (isPlatformBrowser(this.platformId)) {\n effect(() => {\n const body = this.document.body;\n body.setAttribute('data-theme', this.hermesTheme.theme());\n body.setAttribute('data-family', this.hermesTheme.family());\n body.setAttribute('data-density', this.hermesTheme.density());\n body.setAttribute('data-font', this.hermesTheme.font());\n const palette = this.hermesTheme.palette();\n body.style.setProperty('--hm-accent', palette.accent);\n body.style.setProperty('--hm-action', palette.accent);\n body.style.setProperty('--hm-panel-bg', palette.panelBg);\n body.style.setProperty('--hm-panel-accent', palette.accent);\n });\n\n this.channel = new BroadcastChannel(this.channelName);\n this.channel.onmessage = (e) => this.zone.run(() => {\n if (e.data?.type === 'THEME_CHANGED') this.hermesTheme.setTheme(e.data.theme);\n if (e.data?.type === 'THEME_MODE_CHANGED') this.hermesTheme.setMode(e.data.mode);\n });\n }\n }\n\n get current(): HermesThemeName {\n return this.hermesTheme.theme();\n }\n\n /** Escolha do usuário: `light`, `dark` ou `system` (acompanha o sistema operacional). */\n get mode(): HermesThemeMode {\n return this.hermesTheme.mode();\n }\n\n setMode(mode: HermesThemeMode) {\n this.hermesTheme.setMode(mode);\n this.channel?.postMessage({ type: 'THEME_MODE_CHANGED', mode });\n }\n\n setTheme(theme: HermesThemeName) {\n this.hermesTheme.setTheme(theme);\n this.channel?.postMessage({ type: 'THEME_CHANGED', theme });\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HermesFamily, HermesThemeService } from '@trismegisto/angular';\n\n/**\n * Wrapper fino sobre `HermesThemeService.family`/`setFamily`/`families` — substitui o\n * `applyThemePreset`/`PRESETS` do addon `theme-builder` antigo (que já expunha só paletas\n * FIXAS pré-definidas, nunca cor arbitrária digitada pelo usuário: o spine antigo usava só\n * essa lista fixa, então trocar para `family` do DS novo é a mesma mecânica de UX — grid de\n * paletas prontas —, só muda o catálogo de opções e como cada uma deriva claro/escuro\n * internamente). Persistência entre abas já vem de `HermesThemeService` (localStorage).\n */\n@Injectable({ providedIn: 'root' })\nexport class ThemePresetService {\n private readonly hermesTheme = inject(HermesThemeService);\n\n get current(): HermesFamily {\n const id = this.hermesTheme.family();\n return this.families.find((f) => f.id === id) ?? this.families[0];\n }\n\n get families(): readonly HermesFamily[] {\n return this.hermesTheme.families;\n }\n\n setPreset(family: HermesFamily): void {\n this.hermesTheme.setFamily(family.id);\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, NgZone, Optional, PLATFORM_ID, inject } from '@angular/core';\nimport { HermesDensity, HermesThemeService } from '@trismegisto/angular';\nimport { SPINE_CONFIG, SpineConfig } from './app-config.token';\n\nexport interface DensitySetting {\n name: HermesDensity;\n}\n\n/**\n * Wrapper fino sobre `HermesThemeService.density`/`setDensity` (já persistido em\n * `localStorage` pelo DS novo) — mantém o nome/API do spine antigo e adiciona a\n * sincronização entre abas via `BroadcastChannel` que `HermesThemeService` não tem\n * (é por-aba). Ver `ThemeService` (mesmo padrão, mesmo motivo).\n */\n@Injectable({ providedIn: 'root' })\nexport class DensityService {\n private readonly hermesTheme = inject(HermesThemeService);\n\n private channel: BroadcastChannel | null = null;\n private readonly channelName: string;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: Object,\n private zone: NgZone,\n @Optional() @Inject(SPINE_CONFIG) config: SpineConfig | null,\n ) {\n const ns = config?.clientId ?? 'app';\n this.channelName = `spine_density_${ns}`;\n\n if (isPlatformBrowser(this.platformId)) {\n this.channel = new BroadcastChannel(this.channelName);\n this.channel.onmessage = (e) => this.zone.run(() => {\n if (e.data?.type === 'DENSITY_CHANGED') this.hermesTheme.setDensity(e.data.density);\n });\n }\n }\n\n get current(): DensitySetting {\n return { name: this.hermesTheme.density() };\n }\n\n setDensity(density: HermesDensity) {\n this.hermesTheme.setDensity(density);\n this.channel?.postMessage({ type: 'DENSITY_CHANGED', density });\n }\n\n /** Só alterna entre comfortable e compact — mesmo comportamento do spine antigo\n * (que chamava a densidade não-compacta de \"regular\"; o DS novo chama de \"comfortable\"). */\n toggleDensity() {\n this.setDensity(this.current.name === 'compact' ? 'comfortable' : 'compact');\n }\n}\n","/**\n * Logo e favicon do app (`SpineConfig.logo`/`SpineConfig.favicon`). O spine não embute marca nenhuma:\n * o arquivo é sempre do app, servido de `src/assets`.\n */\n\n/** Logo do header: um caminho (os dois temas) ou as variantes clara/escura + texto alternativo. */\nexport type SpineLogoConfig = string | { light: string; dark?: string; alt?: string };\n\n/** Convenção quando o app não configura `logo`: `src/assets/images/logo.svg` servido em `assets/images/`. */\nexport const SPINE_DEFAULT_LOGO = 'assets/images/logo.svg';\n\n/** Logo já normalizado. */\nexport interface SpineLogoSources {\n light: string;\n dark: string | null;\n /** Texto alternativo explícito; `null` usa o padrão (o nome do app). */\n alt: string | null;\n}\n\n/** Normaliza `SpineConfig.logo`: omitido → convenção; `false`/vazio → sem imagem (`null`). */\nexport function resolveSpineLogo(logo: SpineLogoConfig | false | null | undefined): SpineLogoSources | null {\n if (logo === undefined || logo === null) return { light: SPINE_DEFAULT_LOGO, dark: null, alt: null };\n if (logo === false) return null;\n if (typeof logo === 'string') return logo.trim() ? { light: logo, dark: null, alt: null } : null;\n if (!logo.light?.trim()) return null;\n return { light: logo.light, dark: logo.dark?.trim() ? logo.dark : null, alt: logo.alt ?? null };\n}\n\nconst FAVICON_TYPES: Record<string, string> = {\n ico: 'image/x-icon',\n svg: 'image/svg+xml',\n png: 'image/png',\n gif: 'image/gif',\n webp: 'image/webp',\n};\n\n/**\n * Aponta o favicon do documento para `href`: atualiza o primeiro `<link rel=\"icon\">` (ou `shortcut icon`)\n * e remove os outros (senão o navegador pode continuar escolhendo um deles); sem nenhum, cria um no\n * `<head>`. O `type` acompanha a extensão (some quando ela é desconhecida).\n */\nexport function applySpineFavicon(doc: Document, href: string): HTMLLinkElement | null {\n if (!href?.trim() || !doc?.head) return null;\n const links = Array.from(doc.head.querySelectorAll<HTMLLinkElement>('link[rel~=\"icon\"]'));\n const link = links.shift() ?? doc.createElement('link');\n links.forEach((extra) => extra.remove());\n link.rel = 'icon';\n const ext = href.split(/[?#]/)[0].split('.').pop()?.toLowerCase() ?? '';\n const type = FAVICON_TYPES[ext];\n if (type) link.type = type;\n else link.removeAttribute('type');\n link.setAttribute('href', href);\n if (!link.isConnected) doc.head.appendChild(link);\n return link;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { HERMES_ICONS } from '@trismegisto/icons/catalog';\nimport { HERMES_SIDEBAR_CONFIG, HERMES_THEME_CONFIG, HERMES_WORKSPACE_PERSISTENCE_CONFIG, provideHermesIcons } from '@trismegisto/angular';\nimport { DEFAULT_THEME_CONFIG, extendThemeConfig } from '@trismegisto/primitives';\nimport { ThemeService } from './theme.service';\nimport { SPINE_CONFIG, SpineConfig } from './app-config.token';\nimport { applySpineFavicon } from './brand';\n\n/** Registra o catálogo de ícones inteiro — o spine (header/sidebar/navegação/modal/onboarding)\n * usa ícones de várias origens (shield, pencil, trash, floppy, chevrons...) que não vêm\n * embutidos de graça (os componentes do hermes só registram os ícones que eles próprios usam); sem isto, todo `hm-icon` do spine cai\n * silenciosamente no hambúrguer de fallback pra qualquer app que consuma este pacote. */\nexport function provideUi(config?: SpineConfig): EnvironmentProviders {\n // Apps diferentes moram na MESMA origem (mesmo domínio, caminhos distintos): sem prefixo próprio,\n // tema, família, densidade, menu lateral e abas de um app vazam pro outro. Cada app usa o seu\n // `clientId` como prefixo de TODAS as chaves de armazenamento.\n const ns = config?.clientId ? `hermes_${config.clientId}` : null;\n // Famílias do app (`config.theme`) compostas sobre as padrão, já com o prefixo do app.\n const themeConfig =\n ns || config?.theme\n ? extendThemeConfig({ ...DEFAULT_THEME_CONFIG, storagePrefix: ns ?? DEFAULT_THEME_CONFIG.storagePrefix }, config?.theme)\n : null;\n return makeEnvironmentProviders([\n provideHermesIcons(HERMES_ICONS),\n provideAppInitializer(() => {\n inject(ThemeService);\n // Favicon só quando configurado: sem `favicon`, o `<link rel=\"icon\">` do index.html fica como está.\n if (config?.favicon) applySpineFavicon(inject(DOCUMENT), config.favicon);\n }),\n ...(config ? [{ provide: SPINE_CONFIG, useValue: config }] : []),\n ...(themeConfig ? [{ provide: HERMES_THEME_CONFIG, useValue: themeConfig }] : []),\n ...(ns\n ? [\n { provide: HERMES_SIDEBAR_CONFIG, useValue: { storageKey: `${ns}_sidebar` } },\n { provide: HERMES_WORKSPACE_PERSISTENCE_CONFIG, useValue: { storagePrefix: ns } },\n ]\n : []),\n ]);\n}\n","import { InjectionToken } from '@angular/core';\n\n/** Dados do `package.json` do app (nome, versão, dependências...), passados em\n * `provideShell({ packageInfo })`. Mora no pacote raiz (e não em `@trismegisto/spine/shell`, onde\n * nasceu) porque o painel de configurações do `@trismegisto/spine/layout` também lê — e o shell\n * importa o layout, então o layout importar o shell fecharia um ciclo. O shell reexporta o\n * MESMO token (mesma instância), então quem importava de lá continua funcionando. */\nexport interface PackageInfo {\n name?: string;\n version?: string;\n description?: string;\n license?: string;\n buildDate?: string;\n environment?: string;\n repository?: { url?: string };\n developer?: { name?: string; homepage?: string; email?: string };\n docs?: string;\n issues?: string;\n dependencies?: Record<string, string>;\n [key: string]: any;\n}\n\nexport const APP_PACKAGE_INFO = new InjectionToken<PackageInfo>('APP_PACKAGE_INFO');\n","import { isPlatformBrowser } from '@angular/common';\nimport { Injectable, NgZone, PLATFORM_ID, computed, effect, inject, signal, untracked } from '@angular/core';\nimport { SPINE_CONFIG } from './app-config.token';\nimport { HermesI18nService, HermesShortcutService } from '@trismegisto/angular';\n\n/** Chaves por app (prefixo = `clientId`, mesmo do tema): apps diferentes na mesma origem não\n * compartilham preferências. Sem `SPINE_CONFIG`, cai no prefixo genérico `hermes`. */\nconst TIME_ZONE_SUFFIX = 'time_zone';\nconst LANGUAGE_SUFFIX = 'language';\nconst CHARACTER_KEYS_SUFFIX = 'shortcut_character_keys';\nconst CHANNEL_BASE = 'spine_preferences';\n\n/**\n * Preferências do usuário que não são de tema (tema/família/densidade continuam no\n * `HermesThemeService`; modo do menu lateral no `HermesSidebarService`): fuso horário, idioma e o\n * interruptor dos atalhos de tecla única (WCAG 2.1.4) do `HermesShortcutService`.\n *\n * Por enquanto vive no navegador (localStorage, sincronizado entre abas). A sincronização com o\n * servidor (argos-admin `/me/preferences`) entra depois sem mudar esta API: quem lê `timeZone()`\n * não precisa saber de onde o valor veio.\n */\n@Injectable({ providedIn: 'root' })\nexport class SpinePreferencesService {\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly zone = inject(NgZone);\n private readonly ns = inject(SPINE_CONFIG, { optional: true })?.clientId;\n private readonly timeZoneKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${TIME_ZONE_SUFFIX}`;\n private readonly languageKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${LANGUAGE_SUFFIX}`;\n private readonly characterKeysKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${CHARACTER_KEYS_SUFFIX}`;\n private readonly shortcuts = inject(HermesShortcutService);\n private readonly i18n = inject(HermesI18nService);\n /** Idioma com que o app subiu (`provideHermesI18n`) — vale quando a pessoa não escolheu nenhum. */\n readonly appLanguage = this.i18n.locale();\n private readonly channel: BroadcastChannel | null = this.browser && typeof BroadcastChannel !== 'undefined'\n ? new BroadcastChannel(this.ns ? `${CHANNEL_BASE}_${this.ns}` : CHANNEL_BASE)\n : null;\n\n /** Fuso escolhido (IANA, ex.: \"America/Sao_Paulo\"). Vazio = o do navegador. */\n readonly timeZone = signal(this.read(this.timeZoneKey));\n\n /** Fuso do navegador, para mostrar ao lado da opção \"automático\". */\n readonly browserTimeZone = this.browser ? Intl.DateTimeFormat().resolvedOptions().timeZone : 'UTC';\n\n /** O fuso que vale de fato: o escolhido ou, sem escolha, o do navegador. */\n readonly effectiveTimeZone = computed(() => this.timeZone() || this.browserTimeZone);\n\n /** Idioma escolhido (BCP 47: `pt-BR`, `en`, `es`). Vazio = o padrão do app. */\n readonly language = signal(this.read(this.languageKey));\n\n /**\n * Atalhos de tecla única (`?`, `G H`) ligados — WCAG 2.1.4. Guardado por app (`'on'`/`'off'`);\n * sem escolha salva, vale o padrão do `HermesShortcutService` (`provideHermesShortcuts`).\n */\n readonly characterKeys = signal(this.readCharacterKeys());\n\n /** Idiomas oferecidos na configuração, cada um com o nome no próprio idioma (padrão de mercado). */\n readonly languages: readonly { readonly value: string; readonly label: string }[] = [\n // check-strings: off — cada idioma escrito no próprio idioma (padrão de mercado), igual em todo catálogo.\n { value: 'pt-BR', label: 'Português (Brasil)' },\n { value: 'en', label: 'English' },\n { value: 'es', label: 'Español' },\n // check-strings: on\n ];\n\n constructor() {\n if (this.channel) {\n this.channel.onmessage = (e) => this.zone.run(() => {\n if (e.data?.type === 'TIME_ZONE_CHANGED') this.timeZone.set(e.data.value ?? '');\n if (e.data?.type === 'LANGUAGE_CHANGED') this.applyLanguage(e.data.value ?? '');\n if (e.data?.type === 'CHARACTER_KEYS_CHANGED') this.applyCharacterKeys(e.data.value !== false);\n });\n }\n // Escolha salva vale desde a primeira tela (o layout injeta este serviço no boot).\n if (this.language()) this.i18n.setLocale(this.language());\n if (this.characterKeys() !== this.shortcuts.characterKeys()) this.shortcuts.setCharacterKeys(this.characterKeys());\n // O interruptor do hm-shortcut-list fala direto com o HermesShortcutService: a mudança que vier\n // de lá (e não deste serviço) é guardada e avisada às outras abas aqui.\n effect(() => {\n const enabled = this.shortcuts.characterKeys();\n if (enabled !== untracked(this.characterKeys)) this.saveCharacterKeys(enabled);\n });\n }\n\n /** Liga/desliga os atalhos de tecla única na hora, guarda e avisa as outras abas. */\n setCharacterKeys(enabled: boolean): void {\n this.shortcuts.setCharacterKeys(enabled);\n this.saveCharacterKeys(enabled);\n }\n\n private saveCharacterKeys(enabled: boolean): void {\n this.characterKeys.set(enabled);\n this.write(this.characterKeysKey, enabled ? 'on' : 'off');\n this.channel?.postMessage({ type: 'CHARACTER_KEYS_CHANGED', value: enabled });\n }\n\n private applyCharacterKeys(enabled: boolean): void {\n this.characterKeys.set(enabled);\n this.shortcuts.setCharacterKeys(enabled);\n }\n\n private readCharacterKeys(): boolean {\n const saved = this.read(this.characterKeysKey);\n return saved ? saved !== 'off' : this.shortcuts.characterKeys();\n }\n\n /** Troca o idioma da lib e do spine na hora, guarda e avisa as outras abas. Vazio = padrão do app. */\n setLanguage(value: string): void {\n this.applyLanguage(value);\n this.write(this.languageKey, value);\n this.channel?.postMessage({ type: 'LANGUAGE_CHANGED', value });\n }\n\n private applyLanguage(value: string): void {\n this.language.set(value);\n this.i18n.setLocale(value || this.appLanguage);\n }\n\n setTimeZone(value: string): void {\n this.timeZone.set(value);\n this.write(this.timeZoneKey, value);\n this.channel?.postMessage({ type: 'TIME_ZONE_CHANGED', value });\n }\n\n /** Todos os fusos IANA que o navegador conhece (vazio em navegador antigo). */\n supportedTimeZones(): string[] {\n const intl = Intl as unknown as { supportedValuesOf?: (key: string) => string[] };\n try {\n return intl.supportedValuesOf?.('timeZone') ?? [];\n } catch {\n return [];\n }\n }\n\n private read(key: string): string {\n if (!this.browser) return '';\n try { return localStorage.getItem(key) ?? ''; } catch { return ''; }\n }\n\n private write(key: string, value: string): void {\n if (!this.browser) return;\n try {\n if (value) localStorage.setItem(key, value);\n else localStorage.removeItem(key);\n } catch { /* storage indisponível */ }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Base da API do argos-admin-server (ex.: `https://exemplo.com.br/argos/admin/api`) —\n * recursos do próprio usuário (`/me/*`, hoje os tokens de aplicação) que o painel de\n * configurações usa. Quem chama `provideAutoService({ adminApi })` já fornece este token (é a\n * mesma URL); um app sem auto-service fornece direto, ou fica sem as partes do painel que\n * dependem do servidor (elas se escondem em vez de quebrar).\n */\nexport const SPINE_ADMIN_API = new InjectionToken<string>('SPINE_ADMIN_API');\n","import { DestroyRef, Inject, Injectable, Optional, PLATFORM_ID, WritableSignal, computed, inject, signal } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { SPINE_CONFIG, SpineConfig } from './app-config.token';\n\n/** A page remembered by the shell, either as a favorite or as a recent visit. */\nexport interface QuickAccessItem {\n readonly id: string;\n readonly icon: string;\n readonly displayName: string;\n readonly redirect: string;\n /** Ancestor labels, top-down. `[]` = top-level page; absent = stored by an older version. */\n readonly trail?: readonly string[];\n}\n\n// The sidebar navigation writes the same history list and trims it to this size; both writers must agree.\nconst RECENT_LIMIT = 10;\n\ntype ListState = WritableSignal<readonly QuickAccessItem[]>;\n\n/**\n * Favorites and recently visited pages, shared by every consumer in the app (page bar, home screen)\n * and persisted per client in `localStorage`.\n */\n@Injectable({ providedIn: 'root' })\nexport class SpineQuickAccessService {\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly favoritesKey: string;\n private readonly recentsKey: string;\n private readonly favoriteList: ListState = signal<readonly QuickAccessItem[]>([]);\n private readonly recentList: ListState = signal<readonly QuickAccessItem[]>([]);\n\n readonly favorites = this.favoriteList.asReadonly();\n readonly recents = this.recentList.asReadonly();\n\n private readonly favoriteSet = computed(() => new Set(this.favoriteList().map((item) => item.id)));\n\n constructor(@Optional() @Inject(SPINE_CONFIG) config: SpineConfig | null) {\n const prefix = config?.clientId || 'app';\n this.favoritesKey = `${prefix}_nav_favorites`;\n this.recentsKey = `${prefix}_nav_recent`;\n if (!this.browser) return;\n\n this.favoriteList.set(this.load(this.favoritesKey));\n this.recentList.set(this.load(this.recentsKey));\n\n const onStorage = (event: StorageEvent) => {\n if (event.key === this.favoritesKey) this.favoriteList.set(this.load(this.favoritesKey));\n else if (event.key === this.recentsKey) this.recentList.set(this.load(this.recentsKey));\n };\n window.addEventListener('storage', onStorage);\n inject(DestroyRef).onDestroy(() => window.removeEventListener('storage', onStorage));\n }\n\n isFavorite(id: string | null | undefined): boolean {\n return !!id && this.favoriteSet().has(id);\n }\n\n toggleFavorite(item: QuickAccessItem): void {\n const current = this.favoriteList();\n const next = current.some((f) => f.id === item.id) ? current.filter((f) => f.id !== item.id) : [...current, item];\n this.commit(this.favoriteList, this.favoritesKey, next);\n }\n\n recordVisit(item: QuickAccessItem): void {\n const current = this.recentList();\n const top = current[0];\n if (top && top.id === item.id && top.displayName === item.displayName && sameTrail(top.trail, item.trail)) return;\n const next = [item, ...current.filter((r) => r.id !== item.id)].slice(0, RECENT_LIMIT);\n this.commit(this.recentList, this.recentsKey, next);\n }\n\n forgetRecent(id: string): void {\n this.commit(this.recentList, this.recentsKey, this.recentList().filter((r) => r.id !== id));\n }\n\n private commit(state: ListState, key: string, items: readonly QuickAccessItem[]): void {\n state.set(items);\n if (!this.browser) return;\n try {\n localStorage.setItem(key, JSON.stringify(items));\n } catch {\n // Quota exceeded or storage blocked: the in-memory list stays authoritative for this session.\n }\n }\n\n private load(key: string): readonly QuickAccessItem[] {\n let parsed: unknown;\n try {\n const raw = localStorage.getItem(key);\n if (raw == null) return [];\n parsed = JSON.parse(raw);\n } catch {\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.flatMap((entry) => {\n const item = normalize(entry);\n return item ? [item] : [];\n });\n }\n}\n\nfunction normalize(entry: unknown): QuickAccessItem | null {\n if (!entry || typeof entry !== 'object') return null;\n const raw = entry as Record<string, unknown>;\n if (typeof raw['redirect'] !== 'string' || !raw['redirect']) return null;\n const redirect = raw['redirect'];\n const item: { -readonly [K in keyof QuickAccessItem]: QuickAccessItem[K] } = {\n id: typeof raw['id'] === 'string' && raw['id'] ? raw['id'] : redirect,\n icon: typeof raw['icon'] === 'string' ? raw['icon'] : '',\n displayName: typeof raw['displayName'] === 'string' ? raw['displayName'] : '',\n redirect,\n };\n if (Array.isArray(raw['trail'])) item.trail = raw['trail'].filter((t): t is string => typeof t === 'string');\n return item;\n}\n\nfunction sameTrail(a: readonly string[] | undefined, b: readonly string[] | undefined): boolean {\n const left = a ?? [];\n const right = b ?? [];\n return left.length === right.length && left.every((label, i) => label === right[i]);\n}\n","/**\n * O mínimo do `environment` de um app que dá pra derivar em tempo de execução. Estrutural de\n * propósito (não importa o `Environment` de nenhum app): serve pra todos.\n */\nexport interface RuntimeEnvironmentShape {\n authorizationServer: { authority?: string; redirectUrl?: string; postLogoutRedirectUri?: string };\n graphql?: Record<string, { http: string; ws?: string }>;\n}\n\nexport interface RuntimeEnvironmentInfo {\n /** `window.location.origin`. */\n readonly origin: string;\n /** Prefixo do app (base href sem a barra final), ex.: `/prometeu`. Vazio na raiz. */\n readonly basePath: string;\n /** Sem porta na URL: o app está atrás do proxy (Caddy), não na porta direta do container. */\n readonly behindProxy: boolean;\n /** URL ainda sem valor real (vazia ou `CHANGE_ME`) — a única que pode ser derivada. */\n readonly unset: (url: string | undefined) => boolean;\n}\n\n/**\n * Ajusta o `environment` ao lugar onde o app está rodando — chamar no `main.ts`, ANTES do\n * `bootstrapApplication`. Antes cada app tinha a sua versão (só o Hefesto derivava as URLs); agora a\n * regra é uma só:\n *\n * - **Sempre:** `redirectUrl`/`postLogoutRedirectUri` = origem + prefixo atual. O servidor exige\n * `redirect_uri` absoluto e o app pode viver sob um prefixo (`/prometeu`); um valor fixo no\n * environment não bate com a rota real e o callback nunca casa.\n * - **Atrás do proxy (sem porta na URL):**\n * - `authority` = `<origem>/argos` — mesmo domínio da página, senão o cookie de sessão sai com o\n * escopo errado e a sessão não persiste (bug já visto no argos);\n * - cada endpoint GraphQL **ainda sem valor real** vira `<origem><prefixo>/graphql` (HTTP e WS —\n * o WebSocket atende no mesmo caminho do HTTP em todo GraphQL do astra). URL explícita no\n * environment sempre ganha: em prod o front pode estar num domínio e o backend em outro.\n *\n * Devolve `origin`/`basePath`/`behindProxy`/`unset` pro que for específico do app (ex.: a URL da\n * API REST do hefesto-server).\n */\nexport function applyRuntimeEnvironment(environment: RuntimeEnvironmentShape): RuntimeEnvironmentInfo {\n const basePath = new URL(document.baseURI).pathname.replace(/\\/$/, '');\n const origin = window.location.origin;\n const behindProxy = !window.location.port;\n const unset = (url: string | undefined): boolean => !url || url.includes('CHANGE_ME');\n\n environment.authorizationServer.redirectUrl = `${origin}${basePath}/callback`;\n environment.authorizationServer.postLogoutRedirectUri = `${origin}${basePath}/logoff`;\n\n if (behindProxy) {\n environment.authorizationServer.authority = `${origin}/argos`;\n for (const endpoint of Object.values(environment.graphql ?? {})) {\n if (unset(endpoint.http)) {\n endpoint.http = `${origin}${basePath}/graphql`;\n endpoint.ws = `${origin.replace(/^http/, 'ws')}${basePath}/graphql`;\n }\n }\n }\n\n return { origin, basePath, behindProxy, unset };\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Ilustração gerada pelo spine, nas cores do tema em vigor: o ícone da novidade no centro e,\n * opcionalmente, selos (ícone + rótulo) orbitando em volta. Ícones são nomes do @trismegisto/icons.\n */\nexport interface SpineNewsIllustration {\n readonly icon: string;\n readonly satellites?: readonly { readonly icon: string; readonly label: string }[];\n}\n\n/** Um slide do painel de novidades. */\nexport interface SpineNewsSlide {\n readonly title: string;\n readonly text: string;\n /** Ilustração desenhada pelo spine (recomendado — acompanha tema claro/escuro e família). */\n readonly illustration?: SpineNewsIllustration;\n /** Imagem própria (caminho em `assets/` do app); vence a `illustration`. Sem nenhuma das duas, o\n * slide é só texto. */\n readonly image?: string;\n /** Descrição da imagem pra quem não a vê. Vazia marca a imagem como decorativa. */\n readonly alt?: string;\n}\n\n/**\n * Uma novidade do app: aparece sozinha uma vez por navegador, depois do tour de boas-vindas, e fica\n * marcada como vista ao ser exibida.\n */\nexport interface SpineNewsItem {\n /** Chave estável. Trocar o id faz a novidade aparecer de novo para todo mundo. */\n readonly id: string;\n readonly slides: readonly SpineNewsSlide[];\n /** Data (AAAA-MM-DD) a partir da qual a novidade deixa de ser oferecida. Opcional. */\n readonly until?: string;\n}\n\n/** Multi: cada chamada de `provideSpineNews` contribui com uma lista. */\nexport const SPINE_NEWS = new InjectionToken<readonly (readonly SpineNewsItem[])[]>('SPINE_NEWS');\n\n/**\n * Registra as novidades do app (no `app.config.ts`, junto do `provideUi`). Ficam no código, no\n * mesmo commit da funcionalidade que anunciam. A ordem da lista é a ordem dos slides.\n *\n * ```ts\n * provideSpineNews([\n * { id: 'build-com-versao-2026-09', slides: [{ title: 'Build direto da linha', text: '…' }] },\n * ]),\n * ```\n */\nexport function provideSpineNews(items: readonly SpineNewsItem[]): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: SPINE_NEWS, useValue: items, multi: true }]);\n}\n","import { PluralMessage } from '@trismegisto/primitives';\n\n/**\n * Textos do próprio spine (cabeçalho, navegação, configurações, tour, telas do auto-serviço…), no\n * mesmo formato do `HermesMessages` da lib: seção → chave, parâmetros nomeados (`{name}`) e plural\n * por `PluralMessage`. Alguns textos levam marcação simples (`<b>`, `<strong>`, `<code>`) e são\n * exibidos com `[innerHTML]` — estão indicados no comentário.\n *\n * O idioma ativo é o do `HermesI18nService` da lib: `setLocale` troca a lib e o spine juntos.\n */\nexport interface SpineMessages {\n meta: { locale: string };\n header: {\n home: string;\n apps: string;\n themeDark: string;\n themeLight: string;\n densityComfortable: string;\n densityCompact: string;\n fullscreen: string;\n exitFullscreen: string;\n user: string;\n accessLevels: string;\n settings: string;\n appearance: string;\n shortcuts: string;\n tour: string;\n news: string;\n logout: string;\n search: string;\n searchPlaceholder: string;\n recentSearches: string;\n clearRecent: string;\n /** `{term}` = o que foi digitado. */\n noResults: string;\n };\n navigation: {\n back: string;\n home: string;\n favorite: string;\n unfavorite: string;\n copyLink: string;\n linkCopied: string;\n };\n sidebar: {\n modules: string;\n /** `{module}` = nome do módulo aberto. */\n moduleNavigation: string;\n apps: string;\n };\n pageBar: {\n favorite: string;\n unfavorite: string;\n copyLink: string;\n linkCopied: string;\n docs: string;\n trail: string;\n };\n pagePanel: {\n notFoundTitle: string;\n notFoundText: string;\n };\n docs: {\n heading: string;\n index: string;\n search: string;\n noMatch: string;\n empty: string;\n view: string;\n usage: string;\n technical: string;\n loading: string;\n loadError: string;\n /** Convite no lado da leitura enquanto nenhuma página do índice foi aberta. */\n invite: string;\n };\n news: {\n heading: string;\n carousel: string;\n dismiss: string;\n };\n /** Tour guiado. As descrições (`*Text`) levam `<b>` e são exibidas com `[innerHTML]`. */\n tour: {\n /** `{current}` de `{total}`. */\n progress: string;\n skip: string;\n back: string;\n next: string;\n finish: string;\n welcomeTitle: string;\n welcomeText: string;\n appsTitle: string;\n appsText: string;\n searchTitle: string;\n searchText: string;\n navModulesTitle: string;\n navModulesText: string;\n navModeTitle: string;\n navModeText: string;\n tabsTitle: string;\n tabsText: string;\n splitTitle: string;\n splitText: string;\n whereTitle: string;\n whereText: string;\n themeTitle: string;\n themeText: string;\n densityTitle: string;\n densityText: string;\n fullscreenTitle: string;\n fullscreenText: string;\n profileTitle: string;\n profileText: string;\n doneTitle: string;\n doneText: string;\n };\n shortcuts: {\n heading: string;\n /** `{key}` vira a tecla desenhada como chip. */\n hint: string;\n replayTour: string;\n dismiss: string;\n openSearch: string;\n goHome: string;\n goFavorite: string;\n history: string;\n openSettings: string;\n toggleTheme: string;\n fullscreen: string;\n logout: string;\n showHelp: string;\n closeOverlay: string;\n };\n settings: {\n heading: string;\n appearance: string;\n appearanceKeywords: string;\n theme: string;\n themeDescription: string;\n themeKeywords: string;\n themeLight: string;\n themeDark: string;\n themeSystem: string;\n accent: string;\n accentDescription: string;\n accentKeywords: string;\n density: string;\n densityDescription: string;\n densityKeywords: string;\n comfortable: string;\n compact: string;\n font: string;\n fontDescription: string;\n fontKeywords: string;\n sidebar: string;\n sidebarDescription: string;\n sidebarKeywords: string;\n sidebarAuto: string;\n sidebarFixed: string;\n sidebarCompact: string;\n region: string;\n regionKeywords: string;\n language: string;\n languageDescription: string;\n languageKeywords: string;\n /** `{language}` = idioma padrão do app. */\n languageAuto: string;\n timeZone: string;\n timeZoneKeywords: string;\n /** `{now}` = data e hora agora no fuso escolhido. */\n timeZoneHint: string;\n /** `{zone}` = fuso detectado no navegador. */\n timeZoneAuto: string;\n shortcuts: string;\n shortcutsDescription: string;\n shortcutsKeywords: string;\n tour: string;\n tourDescription: string;\n tourKeywords: string;\n replayTour: string;\n account: string;\n accountKeywords: string;\n user: string;\n accessLevel: string;\n accessLevelKeywords: string;\n session: string;\n sessionDescription: string;\n sessionKeywords: string;\n sessionUnknown: string;\n /** `{time}` = hora. */\n sessionExpired: string;\n /** `{minutes}` e `{time}`. */\n sessionExpiresIn: string;\n sessionExpiresAt: string;\n accessToken: string;\n accessTokenDescription: string;\n accessTokenKeywords: string;\n copy: string;\n appTokens: string;\n appTokensDescription: string;\n appTokensKeywords: string;\n logout: string;\n logoutDescription: string;\n logoutKeywords: string;\n about: string;\n aboutKeywords: string;\n application: string;\n version: string;\n versionKeywords: string;\n buildDate: string;\n environment: string;\n environmentKeywords: string;\n links: string;\n linksKeywords: string;\n docs: string;\n reportIssue: string;\n repository: string;\n dependencies: string;\n dependenciesDescription: string;\n dependenciesKeywords: string;\n supportInfo: string;\n supportInfoDescription: string;\n supportInfoKeywords: string;\n noSessionToken: string;\n tokenCopied: string;\n supportCopied: string;\n copyBlocked: string;\n };\n /** Rótulos do texto que \"Informações para suporte\" copia. */\n support: {\n application: string;\n version: string;\n build: string;\n environment: string;\n page: string;\n browser: string;\n screen: string;\n theme: string;\n /** `{theme}`, `{mode}`, `{family}`, `{density}`, `{font}`. */\n themeValue: string;\n timeZone: string;\n accessLevel: string;\n date: string;\n };\n appTokens: {\n unavailable: string;\n /** `{name}`. */\n created: string;\n /** `[innerHTML]`; `{date}`. */\n sendHeader: string;\n copyToken: string;\n saved: string;\n loading: string;\n /** `{date}`. */\n expiredOn: string;\n expiresOn: string;\n lastUsed: string;\n never: string;\n revoke: string;\n confirmRevoke: string;\n empty: string;\n noBadges: string;\n /** `[innerHTML]`; `{name}` = aplicação. */\n appOnly: string;\n accessLevel: string;\n name: string;\n namePlaceholder: string;\n nameRequired: string;\n nameMax: string;\n validity: string;\n days30: string;\n days90: string;\n months6: string;\n year1: string;\n create: string;\n cancel: string;\n newToken: string;\n /** `{valid}` de `{max}`. */\n validCount: string;\n limit: string;\n loadError: string;\n badgesError: string;\n createError: string;\n copied: string;\n copyFailed: string;\n /** `{name}`. */\n revoked: string;\n revokeError: string;\n };\n notification: {\n genericError: string;\n };\n graphql: {\n /** Envelope ausente: o resolver estourou e o campo voltou `null` (`unwrap`). */\n noResponse: string;\n serviceFailure: string;\n done: string;\n failed: string;\n };\n /** Telas de acesso do shell (`/blocked`, `/no-permission`). */\n access: {\n blockedText: string;\n blockedAction: string;\n noRightsText: string;\n };\n /**\n * Retorno do login (`/callback`) e aviso de conexão do shell (`spine-connection-banner`), sobre o\n * `connectionState$`/`reauthorizationRequired$` do `@orfeu/angular`. A sessão nunca cai por isso.\n */\n session: {\n /** Argos inalcançável (sem acesso à rede, servidor fora do ar): a sessão continua, a lib tenta de novo sozinha. */\n offline: string;\n reconnecting: string;\n reauthorizing: string;\n /** O Argos recusou a renovação e a reautorização automática não aconteceu: a pessoa decide. */\n reauthorizationRequired: string;\n signInAgain: string;\n callbackFailedHeading: string;\n callbackFailedText: string;\n };\n routing: {\n notPublished: string;\n /** `{code}` = id da rota. */\n notPublishedCode: string;\n };\n home: {\n noAccessTitle: string;\n noAccessText: string;\n yourScreens: string;\n modules: string;\n privileged: string;\n recent: string;\n recentCaption: string;\n screenCount: PluralMessage;\n /** `{name}`. */\n favorite: string;\n unfavorite: string;\n favorites: string;\n navigate: string;\n settings: string;\n tools: string;\n systemDocs: string;\n colScreen: string;\n colWhere: string;\n colFavorite: string;\n noModule: string;\n };\n /** Telas do auto-serviço. Textos com `[innerHTML]` indicados. */\n autoService: {\n loading: string;\n cancel: string;\n save: string;\n create: string;\n edit: string;\n remove: string;\n search: string;\n active: string;\n inactive: string;\n confirmChanges: string;\n appsTitle: string;\n appsIntro: string;\n clientTitle: string;\n clientIntro: string;\n /** Nome acessível da faixa de abas da tela Cliente (Rotas/Roteadores/Acesso). */\n clientSections: string;\n tabRoutes: string;\n tabRouters: string;\n tabAccess: string;\n /** `[innerHTML]`. */\n noClients: string;\n pickClient: string;\n groupsTitle: string;\n groupsIntro: string;\n /** @deprecated não é mais exibido (o auto-serviço não repete título/explicação que a barra da página e a aba já dão). */\n groupsFixed: string;\n pickGroup: string;\n noDescription: string;\n /** @deprecated não é mais exibido (o auto-serviço não repete título/explicação que a barra da página e a aba já dão). */\n pickGroupHint: string;\n manageMembers: string;\n membersCaption: string;\n noMembers: string;\n colUser: string;\n colMemberSince: string;\n /** `{group}`. */\n membersHeading: string;\n addUser: string;\n userSearch: string;\n role: string;\n pickRole: string;\n add: string;\n suggestions: string;\n moreSuggestions: string;\n /** `{group}`. */\n membersOf: string;\n noMembersShort: string;\n newMember: string;\n /** `{user}`. */\n addedBy: string;\n removal: string;\n removalEmpty: string;\n undoRemoval: string;\n saveChanges: string;\n colRole: string;\n colAddedAt: string;\n newAccess: string;\n newAccessHeading: string;\n accessCaption: string;\n noAccess: string;\n colGroup: string;\n colBadge: string;\n manageRoutes: string;\n group: string;\n /** `{group}`. */\n routesOf: string;\n /** `[innerHTML]`; `{badge}`. */\n guardsHint: string;\n noPrivateRoutes: string;\n register: string;\n appsSearchIntro: string;\n secretCreated: string;\n pickApp: string;\n disable: string;\n enable: string;\n delete: string;\n /** Nome acessível da faixa de abas da aplicação escolhida (Operações/Acessos). */\n appSections: string;\n tabOperations: string;\n tabAccesses: string;\n editApp: string;\n newApp: string;\n name: string;\n grants: string;\n appAccessCaption: string;\n noAppAccess: string;\n colType: string;\n manageOperations: string;\n /** `{group}`. */\n operationsOf: string;\n noOperations: string;\n operationsCaption: string;\n colIdentifier: string;\n colMethod: string;\n colLevel: string;\n colDescription: string;\n colAllowedGroups: string;\n groupCount: PluralMessage;\n /** @deprecated não é mais exibido (o auto-serviço não repete título/explicação que a barra da página e a aba já dão). */\n routersTitle: string;\n newRouter: string;\n routersCaption: string;\n noRouters: string;\n private: string;\n public: string;\n editRouter: string;\n page: string;\n hierarchy: string;\n levelHeader: string;\n levelNavigation: string;\n levelMenu: string;\n levelItem: string;\n levelSubmenu: string;\n privateHint: string;\n routerDescription: string;\n routerDescriptionHint: string;\n colPage: string;\n colBuiltPath: string;\n colVisibility: string;\n /** @deprecated não é mais exibido (o auto-serviço não repete título/explicação que a barra da página e a aba já dão). */\n routesTitle: string;\n newRoute: string;\n routesCaption: string;\n noRoutes: string;\n editRoute: string;\n internalName: string;\n displayName: string;\n icon: string;\n iconPlaceholder: string;\n path: string;\n info: string;\n excludable: string;\n /** Dica do \"Excluível\" ao editar rota protegida: o auto-serviço não libera, só o Argos central. */\n excludableLocked: string;\n /** Selo da rota/roteador que veio de template (não editável pelo auto-serviço) e a explicação dele. */\n templateTag: string;\n templateLocked: string;\n /** Exemplo e regra do caminho: um trecho só do endereço (o \"/\" entre níveis é o roteador que põe). */\n pathPlaceholder: string;\n pathHint: string;\n pathInvalid: string;\n colExcludable: string;\n excludableYes: string;\n excludableNo: string;\n colName: string;\n colDisplay: string;\n colIcon: string;\n colPath: string;\n };\n /**\n * Tela \"Auditoria\" (`@trismegisto/spine/audit`, `SpineAuditComponent`): a mesma nos dois escopos — o\n * auto-serviço (apps do projeto do client) e o painel central do argos admin (`scope: 'admin'`). O nome\n * da chave ficou do tempo em que só o auto-serviço a tinha.\n */\n autoServiceAudit: {\n title: string;\n intro: string;\n /** Aba da tela de Aplicações que abre a auditoria ali mesmo. */\n tabApps: string;\n period: string;\n periodLastHour: string;\n period24h: string;\n period7d: string;\n period30d: string;\n /** Aviso quando o período vem das datas da faixa de filtros (a escolha rápida fica sem efeito). */\n periodFromFilters: string;\n filters: string;\n filterDates: string;\n filterApp: string;\n filterUser: string;\n filterOperation: string;\n filterMethod: string;\n filterOutcome: string;\n filterEntry: string;\n userPlaceholder: string;\n operationPlaceholder: string;\n methodRead: string;\n methodWrite: string;\n methodDelete: string;\n methodStream: string;\n outcomeSuccess: string;\n outcomeFailure: string;\n outcomeDenied: string;\n kpiTotal: string;\n kpiTotalDescription: string;\n kpiFailures: string;\n kpiDenied: string;\n /** `{percent}`. */\n kpiShare: string;\n kpis: string;\n timeline: string;\n /** `{from}`, `{to}`. */\n timelineSummary: string;\n /** `{time}`, `{total}`, `{failures}`, `{denied}`. */\n bucketSummary: string;\n timelineEmpty: string;\n topOperations: string;\n topUsers: string;\n topApps: string;\n noTop: string;\n eventCount: PluralMessage;\n failureCount: PluralMessage;\n deniedCount: PluralMessage;\n /** `{name}`. */\n filterBy: string;\n eventsCaption: string;\n colWhen: string;\n colApp: string;\n colUser: string;\n colOperation: string;\n colMethod: string;\n colOutcome: string;\n colStatus: string;\n colDuration: string;\n /** `{ms}`. */\n durationMs: string;\n /** Rodapé da tabela: o que vem depois da contagem (\"1 - 50 de 120 {pageItems}\"). */\n pageItems: string;\n /** Rodapé da tabela: rótulo do seletor de eventos por página. */\n pageSize: string;\n /** Falha ao trocar de página (o resumo e a página anterior continuam). */\n pageError: string;\n loading: string;\n emptyTitle: string;\n emptyText: string;\n clearFilters: string;\n errorTitle: string;\n errorText: string;\n retry: string;\n rangeTooLarge: string;\n forbidden: string;\n anonymous: string;\n detailHeading: string;\n detailLoading: string;\n detailError: string;\n fieldWhen: string;\n fieldApp: string;\n fieldUser: string;\n fieldActor: string;\n fieldIp: string;\n fieldOperation: string;\n fieldIdentifier: string;\n fieldMethod: string;\n fieldLevel: string;\n fieldPermission: string;\n fieldOutcome: string;\n fieldStatus: string;\n fieldDuration: string;\n fieldRoute: string;\n fieldTarget: string;\n fieldOrigin: string;\n originEntry: string;\n originInternal: string;\n fieldTrace: string;\n fieldEventId: string;\n fieldMessage: string;\n fieldReceivedAt: string;\n fieldInstance: string;\n fieldSdk: string;\n fieldDetails: string;\n viewTrace: string;\n traceHeading: string;\n traceLoading: string;\n traceError: string;\n traceEmpty: string;\n traceHidden: PluralMessage;\n traceCurrent: string;\n /** `{operation}`, `{time}`. */\n openTraceEvent: string;\n // ---- unificação admin/client (`@trismegisto/spine/audit`) ----\n /** Introdução da tela no escopo `admin` (painel central, todos os apps). */\n introAdmin: string;\n period6h: string;\n refresh: string;\n autoRefresh: string;\n /** `{time}`. */\n updatedAt: string;\n /** Rótulo do indicador enquanto a tabela/rankings recarregam (as linhas atuais continuam à vista). */\n updating: string;\n filterUserId: string;\n filterLevel: string;\n filterPermission: string;\n filterActor: string;\n filterStatus: string;\n filterTrace: string;\n userIdPlaceholder: string;\n statusPlaceholder: string;\n tracePlaceholder: string;\n levelPublic: string;\n levelPrivate: string;\n levelProtected: string;\n levelOptional: string;\n permissionAllowed: string;\n permissionForbidden: string;\n permissionUnauthorized: string;\n permissionPublic: string;\n actorUser: string;\n actorAppToken: string;\n actorApiToken: string;\n actorPublic: string;\n actorUnauthenticated: string;\n /** Escopo `admin`: a conta não tem as operações `admin:audit:*`. */\n forbiddenAdmin: string;\n /** 400 `invalid_filter` do servidor. `{detail}` = explicação dele. */\n invalidFilter: string;\n /** Descrição dos KPIs clicáveis (falhas/negados viram filtro). */\n kpiFilterHint: string;\n /** Rodapé dos rankings: `{from}`, `{to}`, `{total}`. */\n topsRange: string;\n /** `{name}` = título do ranking. */\n topsPrevious: string;\n /** `{name}` = título do ranking. */\n topsNext: string;\n topsError: string;\n filterByTrace: string;\n\n // ---- leitura por AÇÃO (uma linha por trace) x por evento ----\n /** Rótulo do alternador \"Ações | Eventos\". */\n unitLabel: string;\n unitActions: string;\n unitEvents: string;\n kpiTotalActions: string;\n kpiTotalActionsDescription: string;\n /** `{from}`, `{to}`. */\n timelineSummaryActions: string;\n /** `{time}`, `{total}`, `{failures}`, `{denied}`. */\n bucketSummaryActions: string;\n timelineEmptyActions: string;\n actionsCaption: string;\n pageItemsActions: string;\n pageErrorActions: string;\n emptyTitleActions: string;\n /** Coluna com a quantidade de spans (registros) da ação. */\n colSpans: string;\n /** Dica da célula de spans: `{apps}` = aplicações envolvidas. */\n spansApps: string;\n /** Spans de fora do escopo do client: contados à parte. */\n spansHidden: PluralMessage;\n actionDetailHeading: string;\n /** Ação sem a entrada (entry) no período: começa por uma chamada entre aplicações. */\n orphanNote: string;\n orphanTag: string;\n spansHeading: string;\n /** Linha do tempo dos spans: `{count}` spans em `{duration}`. */\n spansSummary: string;\n /** `{app}`, `{operation}`, `{outcome}`, `{offset}`, `{duration}`. */\n spanRow: string;\n };\n}\n\nexport const SPINE_MESSAGES_PT_BR: SpineMessages = {\n meta: { locale: 'pt-BR' },\n header: {\n home: 'Início',\n apps: 'Aplicações',\n themeDark: 'Tema escuro',\n themeLight: 'Tema claro',\n densityComfortable: 'Densidade confortável',\n densityCompact: 'Densidade compacta',\n fullscreen: 'Tela cheia',\n exitFullscreen: 'Sair da tela cheia',\n user: 'Usuário',\n accessLevels: 'Níveis de acesso',\n settings: 'Configurações',\n appearance: 'Aparência',\n shortcuts: 'Atalhos de teclado',\n tour: 'Tour guiado',\n news: 'Novidades',\n logout: 'Sair',\n search: 'Busca',\n searchPlaceholder: 'Buscar módulo ou página…',\n recentSearches: 'Buscas recentes',\n clearRecent: 'Limpar',\n noResults: 'Nada encontrado para \"{term}\".',\n },\n navigation: {\n back: 'Voltar',\n home: 'Início',\n favorite: 'Favoritar esta página',\n unfavorite: 'Remover dos favoritos',\n copyLink: 'Copiar link da página',\n linkCopied: 'Link copiado!',\n },\n sidebar: {\n modules: 'Módulos',\n moduleNavigation: 'Navegação de {module}',\n apps: 'Aplicações',\n },\n pageBar: {\n favorite: 'Favoritar esta página',\n unfavorite: 'Remover dos favoritos',\n copyLink: 'Copiar link da página',\n linkCopied: 'Link copiado',\n docs: 'Documentação desta tela',\n trail: 'Você está em',\n },\n pagePanel: {\n notFoundTitle: 'Não encontramos esta página',\n notFoundText: 'O endereço não existe mais. Feche a aba e abra a página pelo menu.',\n },\n docs: {\n heading: 'Documentação',\n index: 'Índice da documentação',\n search: 'Buscar na documentação',\n noMatch: 'Nenhuma página encontrada com esse termo.',\n empty: 'Nenhuma tela com documentação ainda.',\n view: 'Visão da documentação',\n usage: 'Como usar',\n technical: 'Especificação técnica',\n loading: 'Carregando a documentação',\n loadError: 'Não foi possível carregar esta documentação.',\n invite: 'Escolha uma página no índice para ler a documentação dela.',\n },\n news: {\n heading: 'Novidades',\n carousel: 'Novidades do sistema',\n dismiss: 'Entendi',\n },\n tour: {\n progress: '{current} de {total}',\n skip: 'Pular tour',\n back: 'Voltar',\n next: 'Próximo',\n finish: 'Concluir',\n welcomeTitle: '👋 Bem-vindo',\n welcomeText: 'Vamos dar um tour rápido pelos principais botões do sistema. Você pode pular a qualquer momento.',\n appsTitle: 'Outras aplicações',\n appsText:\n 'Este botão abre a grade com os <b>outros sistemas</b> que usam o mesmo login que este. Clique num deles para abri-lo numa <b>nova aba do navegador</b>, já com a sua sessão — sem digitar a senha de novo. O que você vê dentro de cada um depende dos seus grupos nele.',\n searchTitle: 'Busca rápida',\n searchText: 'Encontre qualquer módulo ou página pelo nome. Atalho: <b>Ctrl + K</b> de qualquer lugar.',\n navModulesTitle: 'Navegação lateral: módulos e páginas',\n navModulesText:\n 'Aqui ficam os <b>módulos</b> do sistema. Clique num módulo para <b>entrar</b> nele: a coluna passa a mostrar os menus e as páginas de dentro. A <b>seta no topo</b> volta para a lista de módulos, e menus com páginas dentro abrem e fecham no próprio lugar.',\n navModeTitle: 'Navegação lateral: como ela fica na tela',\n navModeText:\n 'No rodapé você escolhe o comportamento da coluna: <b>Abrir ao aproximar</b> (fica recolhida e abre quando o ponteiro chega perto), <b>Manter aberta</b> ou <b>Manter compacta</b> (só os ícones). A seta ao lado <b>expande ou recolhe todos</b> os menus de uma vez. A mesma escolha está em <b>Configurações › Aparência › Menu lateral</b>.',\n tabsTitle: 'Abas',\n tabsText:\n 'Cada página abre numa <b>aba</b>, como no navegador, e cada aba <b>guarda o estado</b> dela: filtros, rolagem e formulário continuam do jeito que você deixou ao voltar. Clique no <b>+</b> para uma aba nova, e no <b>×</b> (ou no botão do meio do mouse) para fechar.',\n splitTitle: 'Abas lado a lado',\n splitText:\n '<b>Arraste</b> uma aba para uma das bordas da área de conteúdo para <b>dividir a tela</b> em dois painéis e trabalhar com duas páginas ao mesmo tempo. Arraste as abas para <b>reordenar</b>. Com o <b>botão direito</b> numa aba você divide à direita ou para baixo, move a aba para o outro painel ou fecha o painel.',\n whereTitle: 'Onde você está',\n whereText:\n 'O nome da página e, embaixo, o caminho até ela — clique num nível para voltar. Ao lado do nome, <b>favorite</b> a página (♡) para achá-la rápido depois e <b>copie o link</b> para compartilhar.',\n themeTitle: 'Tema claro / escuro',\n themeText: 'Alterna a aparência do sistema. Atalho: <b>Ctrl + .</b>',\n densityTitle: 'Densidade',\n densityText: 'Ajusta o espaçamento das telas — do mais compacto ao mais confortável.',\n fullscreenTitle: 'Tela cheia',\n fullscreenText: 'Esconde a barra do navegador para focar no sistema. Atalho: <b>Ctrl + ⇧ + F</b>',\n profileTitle: 'Seu perfil',\n profileText:\n 'Troca de crachá (se você tiver mais de um), configurações, tour guiado, <b>novidades</b>, atalhos de teclado, tema e sair — tudo fica neste menu. Dica: pressione <b>?</b> pra abrir os atalhos direto.',\n doneTitle: '⌨️ Tudo pronto!',\n doneText:\n 'Você pode refazer este tour quando quiser pelo menu do seu <b>perfil › Tour guiado</b>. E pressione <b>?</b> a qualquer momento para ver todos os atalhos de teclado.',\n },\n shortcuts: {\n heading: 'Atalhos de teclado',\n hint: 'Dica: pressione {key} a qualquer momento para reabrir este painel.',\n replayTour: 'Refazer tour',\n dismiss: 'Entendi',\n openSearch: 'Abrir a busca rápida',\n goHome: 'Ir para a Home',\n goFavorite: 'Ir para o favorito nº 1 a 9',\n history: 'Voltar / avançar no histórico',\n openSettings: 'Abrir as configurações',\n toggleTheme: 'Alternar tema claro / escuro',\n fullscreen: 'Tela cheia',\n logout: 'Sair (logout)',\n showHelp: 'Mostrar este painel de atalhos',\n closeOverlay: 'Fechar modal / painel aberto',\n },\n settings: {\n heading: 'Configurações',\n appearance: 'Aparência',\n appearanceKeywords: 'visual cores tema layout',\n theme: 'Tema',\n themeDescription: 'Claro, escuro ou acompanhando o sistema operacional.',\n themeKeywords: 'modo escuro dark light noturno',\n themeLight: 'Claro',\n themeDark: 'Escuro',\n themeSystem: 'Sistema',\n accent: 'Cor principal',\n accentDescription: 'Família de cores do cabeçalho, dos botões e dos destaques.',\n accentKeywords: 'família paleta cor accent',\n density: 'Densidade',\n densityDescription: 'Compacta aproxima linhas e controles para caber mais informação na tela.',\n densityKeywords: 'espaçamento tamanho compacto',\n comfortable: 'Confortável',\n compact: 'Compacta',\n font: 'Fonte',\n fontDescription: 'Família de letra de todo o aplicativo.',\n fontKeywords: 'tipografia letra texto roboto rubik figtree geist',\n sidebar: 'Menu lateral',\n sidebarDescription: 'Automático abre ao aproximar o ponteiro; fixo fica sempre aberto; compacto mostra só os ícones.',\n sidebarKeywords: 'sidebar navegação barra lateral',\n sidebarAuto: 'Automático',\n sidebarFixed: 'Fixo',\n sidebarCompact: 'Compacto',\n region: 'Região',\n regionKeywords: 'idioma língua localização horário data',\n language: 'Idioma',\n languageDescription: 'Idioma dos textos do sistema. Vale na hora, sem recarregar.',\n languageKeywords: 'língua language idioma tradução inglês espanhol português',\n languageAuto: 'Padrão do sistema ({language})',\n timeZone: 'Fuso horário',\n timeZoneKeywords: 'timezone hora utc gmt',\n timeZoneHint: 'Usado para exibir datas e horários. Agora: {now}',\n timeZoneAuto: 'Automático ({zone})',\n shortcuts: 'Atalhos',\n shortcutsDescription: 'Pressione ? em qualquer tela para ver esta lista.',\n shortcutsKeywords: 'teclado teclas tour ajuda',\n tour: 'Tour guiado',\n tourDescription: 'Mostra de novo, passo a passo, onde fica cada parte da tela.',\n tourKeywords: 'onboarding ajuda apresentação',\n replayTour: 'Refazer tour',\n account: 'Conta',\n accountKeywords: 'perfil usuário sessão login',\n user: 'Usuário',\n accessLevel: 'Nível de acesso',\n accessLevelKeywords: 'crachá badge perfil permissão grupo',\n session: 'Sessão',\n sessionDescription: 'A sessão é renovada sozinha enquanto a aplicação estiver aberta.',\n sessionKeywords: 'expiração token login',\n sessionUnknown: 'Não informado',\n sessionExpired: 'Expirada às {time}',\n sessionExpiresIn: 'Expira em {minutes} min (às {time})',\n sessionExpiresAt: 'Expira às {time}',\n accessToken: 'Token de acesso',\n accessTokenDescription: 'Para testar uma API em seu nome. Dá acesso à sua conta até expirar: nunca compartilhe.',\n accessTokenKeywords: 'jwt bearer api desenvolvedor',\n copy: 'Copiar',\n appTokens: 'Tokens de aplicação',\n appTokensDescription:\n 'Para usar esta aplicação fora da interface em seu nome — um MCP, um script. O token vale só para esta aplicação, com as permissões do nível de acesso escolhido, e expira em no máximo 1 ano. Envie no cabeçalho x-app-token.',\n appTokensKeywords: 'token app mcp api chave pat x-app-token automação script integração',\n logout: 'Sair',\n logoutDescription: 'Encerra a sessão neste navegador.',\n logoutKeywords: 'logout desconectar',\n about: 'Sobre',\n aboutKeywords: 'versão build ambiente dependências suporte',\n application: 'Aplicação',\n version: 'Versão',\n versionKeywords: 'release',\n buildDate: 'Data do build',\n environment: 'Ambiente',\n environmentKeywords: 'homologação produção',\n links: 'Links',\n linksKeywords: 'repositório documentação bug issue',\n docs: 'Documentação',\n reportIssue: 'Reportar problema',\n repository: 'Repositório',\n dependencies: 'Dependências',\n dependenciesDescription: 'Versões declaradas no package.json desta aplicação.',\n dependenciesKeywords: 'angular hermes rxjs apollo graphql',\n supportInfo: 'Informações para suporte',\n supportInfoDescription: 'Copia versão, ambiente, navegador, página e preferências — cole no chamado.',\n supportInfoKeywords: 'ajuda chamado diagnóstico',\n noSessionToken: 'Nenhum token de sessão disponível.',\n tokenCopied: 'Token copiado. Não compartilhe: ele dá acesso à sua conta até expirar.',\n supportCopied: 'Informações copiadas. Cole no chamado de suporte.',\n copyBlocked: 'Não foi possível copiar. O navegador bloqueou o acesso à área de transferência.',\n },\n support: {\n application: 'Aplicação',\n version: 'Versão',\n build: 'Build',\n environment: 'Ambiente',\n page: 'Página',\n browser: 'Navegador',\n screen: 'Tela',\n theme: 'Tema',\n themeValue: '{theme} ({mode}) · família {family} · densidade {density} · fonte {font}',\n timeZone: 'Fuso',\n accessLevel: 'Nível de acesso',\n date: 'Data',\n },\n appTokens: {\n unavailable: 'Indisponível neste aplicativo: ele não está ligado ao argos-admin.',\n created: 'Token \"{name}\" criado — copie agora, ele não será mostrado de novo.',\n sendHeader: 'Envie no cabeçalho <code>x-app-token</code>. Vale até {date}, com as permissões do nível de acesso escolhido.',\n copyToken: 'Copiar token',\n saved: 'Já guardei',\n loading: 'Carregando…',\n expiredOn: 'Expirado em {date}',\n expiresOn: 'Expira em {date}',\n lastUsed: 'Último uso: {date}',\n never: 'nunca',\n revoke: 'Revogar',\n confirmRevoke: 'Confirmar revogação',\n empty: 'Você ainda não tem tokens nesta aplicação.',\n noBadges: 'Você não tem nenhum nível de acesso nesta aplicação para gerar tokens.',\n appOnly: 'Aplicação: <strong>{name}</strong> — o token só vale para ela.',\n accessLevel: 'Nível de acesso',\n name: 'Nome',\n namePlaceholder: 'Ex.: MCP do Claude no notebook',\n nameRequired: 'Dê um nome para reconhecer o token depois.',\n nameMax: 'Até 80 caracteres.',\n validity: 'Validade',\n days30: '30 dias',\n days90: '90 dias',\n months6: '6 meses',\n year1: '1 ano',\n create: 'Criar token',\n cancel: 'Cancelar',\n newToken: 'Novo token',\n validCount: '{valid} de {max} válidos',\n limit: 'Limite atingido: revogue um token para criar outro.',\n loadError: 'Não foi possível carregar seus tokens.',\n badgesError: 'Não foi possível carregar seus níveis de acesso.',\n createError: 'Não foi possível criar o token.',\n copied: 'Token copiado.',\n copyFailed: 'Não foi possível copiar. Selecione o texto e copie manualmente.',\n revoked: 'Token \"{name}\" revogado. Pode levar até 2 minutos para parar de funcionar em todos os sistemas.',\n revokeError: 'Não foi possível revogar o token.',\n },\n notification: {\n genericError: 'Ocorreu um erro no processamento de sua solicitação.',\n },\n graphql: {\n noResponse: 'O serviço não respondeu.',\n serviceFailure: 'Falha no serviço.',\n done: 'Operação concluída.',\n failed: 'Não foi possível concluir a operação.',\n },\n access: {\n blockedText:\n 'Você não faz parte de nenhum grupo desta aplicação. Peça ao administrador dela para incluir você em um grupo e entre novamente.',\n blockedAction: 'Sair',\n noRightsText: 'Você não tem acesso a nenhuma página desta aplicação. Fale com o administrador dela para pedir acesso.',\n },\n session: {\n offline: 'Sem conexão com o servidor de autenticação. Você continua conectado; tentando reconectar…',\n reconnecting: 'Reconectando…',\n reauthorizing: 'Renovando sua sessão…',\n reauthorizationRequired: 'Sua sessão precisa ser confirmada. Nada do que está aberto será perdido.',\n signInAgain: 'Entrar novamente',\n callbackFailedHeading: 'Não foi possível concluir a entrada',\n callbackFailedText: 'O retorno do login veio incompleto ou expirou. Entre novamente para continuar.',\n },\n routing: {\n notPublished: 'Este endereço existe no seu acesso, mas a tela dele ainda não foi publicada.',\n notPublishedCode:\n 'Este endereço existe no seu acesso, mas a tela dele ainda não foi publicada. Informe o código {code} à equipe do Acropole.',\n },\n home: {\n noAccessTitle: 'Você ainda não tem acesso a nenhuma tela',\n noAccessText:\n 'O acesso é liberado pelo gestor da sua área. Se ele já aprovou, saia e entre de novo, ou abra um chamado para a equipe responsável.',\n yourScreens: 'Suas telas',\n modules: 'Módulos',\n privileged: 'Acesso privilegiado',\n recent: 'Abertos recentemente',\n recentCaption: 'As telas que você abriu por último, da mais recente para a mais antiga.',\n screenCount: { one: '1 tela', other: '{count} telas' },\n favorite: 'Favoritar {name}',\n unfavorite: 'Remover {name} dos favoritos',\n favorites: 'Favoritos',\n navigate: 'Navegar',\n settings: 'Configurações',\n tools: 'Ferramentas',\n systemDocs: 'Documentação do sistema',\n colScreen: 'Tela',\n colWhere: 'Onde fica',\n colFavorite: 'Favoritar',\n noModule: 'Sem módulo',\n },\n autoService: {\n loading: 'Carregando...',\n cancel: 'Cancelar',\n save: 'Salvar',\n create: 'Criar',\n edit: 'Editar',\n remove: 'Remover',\n search: 'Consultar',\n active: 'Ativo',\n inactive: 'Inativo',\n confirmChanges: 'Confirmar alterações',\n appsTitle: 'Aplicações',\n appsIntro: 'Gerencie as aplicações (client_credentials) deste client — sem depender do painel central.',\n clientTitle: 'Cliente',\n clientIntro: 'Gerencie rotas, roteadores e acesso deste client — sem depender do painel central.',\n clientSections: 'Seções do cliente',\n tabRoutes: 'Rotas',\n tabRouters: 'Roteadores',\n tabAccess: 'Acesso',\n noClients:\n 'Você ainda não administra nenhum client por aqui. É preciso (a) ter acesso concedido a um client e (b) estar logado com o crachá <strong>Administrador</strong> ativo. Troque de crachá no menu do seu perfil, se disponível, ou peça acesso a um administrador central.',\n pickClient: 'Selecione o client que deseja administrar',\n groupsTitle: 'Grupos',\n groupsIntro: 'Gerencie os membros dos grupos deste client — sem depender do painel central.',\n groupsFixed:\n 'Os 5 grupos abaixo são fixos deste client e não podem ser renomeados, criados ou excluídos — consulte um para gerenciar seus membros.',\n pickGroup: 'Selecione um grupo',\n noDescription: 'Sem descrição cadastrada.',\n pickGroupHint: 'Consulte um grupo acima para visualizar e gerenciar seus membros.',\n manageMembers: 'Gerenciar membros',\n membersCaption: 'Membros do grupo',\n noMembers: 'Nenhum membro neste grupo.',\n colUser: 'Usuário',\n colMemberSince: 'Membro desde',\n membersHeading: 'Membros — {group}',\n addUser: 'Adicionar usuário (username ou email)',\n userSearch: 'Buscar por nome, username ou email...',\n role: 'Função (opcional)',\n pickRole: 'Selecione uma função',\n add: 'Adicionar',\n suggestions: 'Sugestões',\n moreSuggestions: 'Ver mais sugestões',\n membersOf: 'Membros do grupo {group}',\n noMembersShort: 'Nenhum membro.',\n newMember: 'Novo',\n addedBy: 'por {user}',\n removal: 'Remoção',\n removalEmpty: 'Selecione um ou mais membros da lista ao lado para removê-los do grupo.',\n undoRemoval: 'Desfazer remoção',\n saveChanges: 'Salvar alterações',\n colRole: 'Função',\n colAddedAt: 'Adicionado em',\n newAccess: 'Novo acesso',\n newAccessHeading: 'Novo acesso',\n accessCaption: 'Acessos do client',\n noAccess: 'Nenhum acesso concedido ainda.',\n colGroup: 'Grupo',\n colBadge: 'Crachá',\n manageRoutes: 'Gerenciar rotas',\n group: 'Grupo',\n routesOf: 'Rotas de {group}',\n guardsHint:\n 'Só aparecem aqui routers privados sem restrição de badge, ou cujo badge permitido inclua <strong>{badge}</strong> (o badge deste grupo).',\n noPrivateRoutes: 'Nenhuma rota privada disponível pro badge deste grupo.',\n register: 'Cadastrar',\n appsSearchIntro:\n 'Consulte uma aplicação (client_credentials) deste client pra gerenciar operações e acessos — sem depender do painel central.',\n secretCreated: 'Aplicação criada. Salve o secret agora, ele não será exibido novamente:',\n pickApp: 'Selecione uma aplicação',\n disable: 'Desativar',\n enable: 'Ativar',\n delete: 'Excluir',\n appSections: 'Seções da aplicação',\n tabOperations: 'Operações',\n tabAccesses: 'Acessos',\n editApp: 'Editar aplicação',\n newApp: 'Nova aplicação',\n name: 'Nome',\n grants: 'Grants (separados por vírgula)',\n appAccessCaption: 'Acessos da aplicação',\n noAppAccess: 'Nenhum grupo com acesso a esta aplicação ainda.',\n colType: 'Tipo',\n manageOperations: 'Gerenciar operações',\n operationsOf: 'Operações de {group}',\n noOperations: 'Nenhuma operação registrada para esta aplicação ainda.',\n operationsCaption: 'Operações registradas',\n colIdentifier: 'Identificador',\n colMethod: 'Método',\n colLevel: 'Nível',\n colDescription: 'Descrição',\n colAllowedGroups: 'Grupos permitidos',\n groupCount: { one: '1 grupo', other: '{count} grupos' },\n routersTitle: 'Roteadores',\n newRouter: 'Novo roteador',\n routersCaption: 'Roteadores do client',\n noRouters: 'Nenhum roteador cadastrado ainda.',\n private: 'Privado',\n public: 'Público',\n editRouter: 'Editar roteador',\n page: 'Página (obrigatório)',\n hierarchy: 'Hierarquia (opcional)',\n levelHeader: 'Header',\n levelNavigation: 'Navegação',\n levelMenu: 'Menu',\n levelItem: 'Item',\n levelSubmenu: 'Submenu',\n privateHint: 'Privado (exige access + guard pra ser visível)',\n routerDescription: 'Descrição',\n routerDescriptionHint: 'O que a tela faz, em uma frase. Aparece abaixo do título, na barra da página. Em roteador herdado de template, o texto do template prevalece no próximo sync.',\n colPage: 'Página',\n colBuiltPath: 'Caminho montado',\n colVisibility: 'Visibilidade',\n routesTitle: 'Rotas',\n newRoute: 'Nova rota',\n routesCaption: 'Rotas do client',\n noRoutes: 'Nenhuma rota cadastrada ainda.',\n editRoute: 'Editar rota',\n internalName: 'Nome interno',\n displayName: 'Nome de exibição',\n icon: 'Ícone',\n iconPlaceholder: 'ex.: home',\n path: 'Caminho (path)',\n info: 'Info',\n excludable: 'Excluível',\n excludableLocked: 'Rota protegida: só a administração central do Argos pode liberar a exclusão.',\n templateTag: 'Template',\n templateLocked: 'Veio do template da aplicação: só a administração central do Argos edita ou exclui.',\n pathPlaceholder: 'ex.: dashboard',\n pathHint: 'Um trecho só do endereço: letras minúsculas e hífen. O \"/\" entre níveis é o roteador que monta.',\n pathInvalid: 'Use só letras minúsculas (a–z) e hífen, sem \"/\", espaço, número ou acento, e sem hífen no início ou no fim.',\n colExcludable: 'Excluível',\n excludableYes: 'Sim',\n excludableNo: 'Não',\n colName: 'Nome',\n colDisplay: 'Exibição',\n colIcon: 'Ícone',\n colPath: 'Path',\n },\n autoServiceAudit: {\n title: 'Auditoria',\n intro: 'O que aconteceu nas aplicações deste projeto: quem fez, o quê, quando e com que resultado.',\n tabApps: 'Aplicações',\n period: 'Período',\n periodLastHour: 'Última hora',\n period24h: 'Últimas 24 horas',\n period7d: 'Últimos 7 dias',\n period30d: 'Últimos 30 dias',\n periodFromFilters: 'O período vem das datas escolhidas nos filtros.',\n filters: 'Filtros da auditoria',\n filterDates: 'Datas',\n filterApp: 'Aplicação',\n filterUser: 'Usuário',\n filterOperation: 'Operação',\n filterMethod: 'Método',\n filterOutcome: 'Resultado',\n filterEntry: 'Só ações do usuário',\n userPlaceholder: 'Nome do usuário',\n operationPlaceholder: 'Identificador ou nome da operação',\n methodRead: 'Leitura',\n methodWrite: 'Escrita',\n methodDelete: 'Exclusão',\n methodStream: 'Fluxo contínuo',\n outcomeSuccess: 'Sucesso',\n outcomeFailure: 'Falha',\n outcomeDenied: 'Negado',\n kpiTotal: 'Eventos',\n kpiTotalDescription: 'Tudo o que foi registrado no período.',\n kpiFailures: 'Falhas',\n kpiDenied: 'Negados',\n kpiShare: '{percent} do total',\n kpis: 'Resumo do período',\n timeline: 'Linha do tempo',\n timelineSummary: 'Eventos por intervalo, de {from} a {to}.',\n bucketSummary: '{time}: {total} eventos, {failures} falhas, {denied} negados',\n timelineEmpty: 'Sem eventos para desenhar no período.',\n topOperations: 'Operações mais chamadas',\n topUsers: 'Usuários mais ativos',\n topApps: 'Por aplicação',\n noTop: 'Nada no período.',\n eventCount: { one: '1 evento', other: '{count} eventos' },\n failureCount: { one: '1 falha', other: '{count} falhas' },\n deniedCount: { one: '1 negado', other: '{count} negados' },\n filterBy: 'Filtrar por {name}',\n eventsCaption: 'Eventos do período, do mais recente para o mais antigo',\n colWhen: 'Quando',\n colApp: 'Aplicação',\n colUser: 'Usuário',\n colOperation: 'Operação',\n colMethod: 'Método',\n colOutcome: 'Resultado',\n colStatus: 'HTTP',\n colDuration: 'Duração',\n durationMs: '{ms} ms',\n pageItems: 'eventos',\n pageSize: 'por página',\n pageError: 'Não foi possível carregar esta página de eventos. Tente de novo.',\n loading: 'Carregando a auditoria…',\n emptyTitle: 'Nenhum evento no período',\n emptyText: 'Amplie o período ou tire filtros para ver mais.',\n clearFilters: 'Limpar filtros',\n errorTitle: 'Não foi possível carregar a auditoria',\n errorText: 'O servidor não respondeu como esperado. Tente de novo em instantes.',\n retry: 'Tentar de novo',\n rangeTooLarge: 'O período máximo é de 31 dias. Escolha datas mais próximas.',\n forbidden: 'Você não tem acesso à auditoria de uma das aplicações escolhidas.',\n anonymous: 'Sem usuário',\n detailHeading: 'Detalhe do evento',\n detailLoading: 'Carregando o detalhe completo…',\n detailError: 'Não foi possível carregar o detalhe completo; mostrando o resumo.',\n fieldWhen: 'Quando',\n fieldApp: 'Aplicação',\n fieldUser: 'Usuário',\n fieldActor: 'Tipo de ator',\n fieldIp: 'IP de origem',\n fieldOperation: 'Operação',\n fieldIdentifier: 'Identificador',\n fieldMethod: 'Método',\n fieldLevel: 'Nível',\n fieldPermission: 'Permissão',\n fieldOutcome: 'Resultado',\n fieldStatus: 'Status HTTP',\n fieldDuration: 'Duração',\n fieldRoute: 'Rota',\n fieldTarget: 'Alvo',\n fieldOrigin: 'Origem',\n originEntry: 'Ação do usuário',\n originInternal: 'Chamada entre aplicações',\n fieldTrace: 'Trace',\n fieldEventId: 'ID do evento',\n fieldMessage: 'Mensagem',\n fieldReceivedAt: 'Recebido em',\n fieldInstance: 'Instância do serviço',\n fieldSdk: 'SDK',\n fieldDetails: 'Detalhes',\n viewTrace: 'Ver cadeia (trace)',\n traceHeading: 'Cadeia da ação',\n traceLoading: 'Carregando a cadeia…',\n traceError: 'Não foi possível carregar a cadeia.',\n traceEmpty: 'Nenhum evento desta cadeia está nas aplicações do seu projeto.',\n traceHidden: {\n one: '1 evento desta cadeia é de uma aplicação fora do seu projeto e não aparece aqui.',\n other: '{count} eventos desta cadeia são de aplicações fora do seu projeto e não aparecem aqui.',\n },\n traceCurrent: 'este evento',\n openTraceEvent: 'Abrir {operation} de {time}',\n introAdmin: 'O que aconteceu em todas as aplicações: quem fez, o quê, quando e com que resultado.',\n period6h: 'Últimas 6 horas',\n refresh: 'Atualizar',\n autoRefresh: 'Atualizar a cada 30 s',\n updatedAt: 'Atualizado às {time}',\n updating: 'Atualizando…',\n filterUserId: 'ID do usuário',\n filterLevel: 'Nível',\n filterPermission: 'Permissão',\n filterActor: 'Tipo de ator',\n filterStatus: 'Status HTTP',\n filterTrace: 'Trace',\n userIdPlaceholder: 'UUID do usuário',\n statusPlaceholder: 'Ex.: 403',\n tracePlaceholder: '32 caracteres hexadecimais',\n levelPublic: 'Pública',\n levelPrivate: 'Privada',\n levelProtected: 'Protegida',\n levelOptional: 'Opcional',\n permissionAllowed: 'Permitido',\n permissionForbidden: 'Proibido',\n permissionUnauthorized: 'Não autenticado',\n permissionPublic: 'Pública',\n actorUser: 'Usuário',\n actorAppToken: 'Token de aplicação',\n actorApiToken: 'Token de API',\n actorPublic: 'Público',\n actorUnauthenticated: 'Não autenticado',\n forbiddenAdmin: 'Sua conta não tem a permissão de leitura da auditoria. Peça a um administrador as operações admin:audit:*.',\n invalidFilter: 'Algum filtro tem um valor inválido. {detail}',\n kpiFilterHint: '{share} · clique para filtrar',\n topsRange: '{from}–{to} de {total}',\n topsPrevious: 'Página anterior de {name}',\n topsNext: 'Próxima página de {name}',\n topsError: 'Não foi possível carregar esta lista.',\n filterByTrace: 'Filtrar a tabela por este trace',\n unitLabel: 'Ver por',\n unitActions: 'Ações',\n unitEvents: 'Eventos',\n kpiTotalActions: 'Ações',\n kpiTotalActionsDescription: 'Cada ação conta uma vez, com todas as etapas entre aplicações; o resultado é o pior entre elas.',\n timelineSummaryActions: 'Ações por intervalo, de {from} a {to}.',\n bucketSummaryActions: '{time}: {total} ações, {failures} com falha, {denied} negadas',\n timelineEmptyActions: 'Sem ações para desenhar no período.',\n actionsCaption: 'Ações do período, da mais recente para a mais antiga',\n pageItemsActions: 'ações',\n pageErrorActions: 'Não foi possível carregar esta página de ações. Tente de novo.',\n emptyTitleActions: 'Nenhuma ação no período',\n colSpans: 'Spans',\n spansApps: 'Aplicações: {apps}',\n spansHidden: {\n one: 'mais 1 span de aplicação fora do seu projeto',\n other: 'mais {count} spans de aplicações fora do seu projeto',\n },\n actionDetailHeading: 'Detalhe da ação',\n orphanNote: 'A entrada desta ação não está no período (ou não foi registrada): ela aparece a partir da primeira chamada entre aplicações.',\n orphanTag: 'sem entrada',\n spansHeading: 'Spans da ação',\n spansSummary: '{count} spans em {duration}',\n spanRow: '{app}, {operation}: {outcome}, começa em +{offset}, dura {duration}',\n },\n};\n","import { SpineMessages } from './spine-messages';\n\nexport const SPINE_MESSAGES_EN: SpineMessages = {\n meta: { locale: 'en' },\n header: {\n home: 'Home',\n apps: 'Applications',\n themeDark: 'Dark theme',\n themeLight: 'Light theme',\n densityComfortable: 'Comfortable density',\n densityCompact: 'Compact density',\n fullscreen: 'Full screen',\n exitFullscreen: 'Exit full screen',\n user: 'User',\n accessLevels: 'Access levels',\n settings: 'Settings',\n appearance: 'Appearance',\n shortcuts: 'Keyboard shortcuts',\n tour: 'Guided tour',\n news: \"What's new\",\n logout: 'Sign out',\n search: 'Search',\n searchPlaceholder: 'Search for a module or page…',\n recentSearches: 'Recent searches',\n clearRecent: 'Clear',\n noResults: 'Nothing found for \"{term}\".',\n },\n navigation: {\n back: 'Back',\n home: 'Home',\n favorite: 'Add this page to favorites',\n unfavorite: 'Remove from favorites',\n copyLink: 'Copy page link',\n linkCopied: 'Link copied!',\n },\n sidebar: {\n modules: 'Modules',\n moduleNavigation: '{module} navigation',\n apps: 'Applications',\n },\n pageBar: {\n favorite: 'Add this page to favorites',\n unfavorite: 'Remove from favorites',\n copyLink: 'Copy page link',\n linkCopied: 'Link copied',\n docs: 'Documentation for this screen',\n trail: 'You are here',\n },\n pagePanel: {\n notFoundTitle: \"We couldn't find this page\",\n notFoundText: 'This address no longer exists. Close the tab and open the page from the menu.',\n },\n docs: {\n heading: 'Documentation',\n index: 'Documentation index',\n search: 'Search the documentation',\n noMatch: 'No page matches that term.',\n empty: 'No screen has documentation yet.',\n view: 'Documentation view',\n usage: 'How to use',\n technical: 'Technical specification',\n loading: 'Loading the documentation',\n loadError: \"Couldn't load this documentation.\",\n invite: 'Pick a page in the index to read its documentation.',\n },\n news: {\n heading: \"What's new\",\n carousel: \"What's new in the system\",\n dismiss: 'Got it',\n },\n tour: {\n progress: '{current} of {total}',\n skip: 'Skip tour',\n back: 'Back',\n next: 'Next',\n finish: 'Finish',\n welcomeTitle: '👋 Welcome',\n welcomeText: \"Let's take a quick tour of the system's main buttons. You can skip it at any time.\",\n appsTitle: 'Other applications',\n appsText:\n 'This button opens the grid with the <b>other systems</b> that use the same sign-in as this one. Click one to open it in a <b>new browser tab</b>, already signed in — no need to type your password again. What you see inside each one depends on your groups there.',\n searchTitle: 'Quick search',\n searchText: 'Find any module or page by name. Shortcut: <b>Ctrl + K</b> from anywhere.',\n navModulesTitle: 'Side navigation: modules and pages',\n navModulesText:\n 'This is where the system <b>modules</b> live. Click a module to <b>enter</b> it: the column then shows the menus and pages inside. The <b>arrow at the top</b> goes back to the module list, and menus with pages inside expand and collapse in place.',\n navModeTitle: 'Side navigation: how it sits on screen',\n navModeText:\n 'In the footer you choose how the column behaves: <b>Open on approach</b> (stays collapsed and opens when the pointer gets close), <b>Keep open</b> or <b>Keep compact</b> (icons only). The arrow next to it <b>expands or collapses all</b> menus at once. The same choice is under <b>Settings › Appearance › Side menu</b>.',\n tabsTitle: 'Tabs',\n tabsText:\n 'Each page opens in a <b>tab</b>, like in the browser, and each tab <b>keeps its state</b>: filters, scroll and forms stay the way you left them when you come back. Click <b>+</b> for a new tab, and <b>×</b> (or the middle mouse button) to close one.',\n splitTitle: 'Side-by-side tabs',\n splitText:\n '<b>Drag</b> a tab to one of the edges of the content area to <b>split the screen</b> into two panels and work with two pages at once. Drag tabs to <b>reorder</b> them. <b>Right-click</b> a tab to split right or down, move the tab to the other panel or close the panel.',\n whereTitle: 'Where you are',\n whereText:\n 'The page name and, below it, the path to it — click a level to go back. Next to the name, <b>favorite</b> the page (♡) to find it quickly later and <b>copy the link</b> to share it.',\n themeTitle: 'Light / dark theme',\n themeText: 'Switches the look of the system. Shortcut: <b>Ctrl + .</b>',\n densityTitle: 'Density',\n densityText: 'Adjusts screen spacing — from most compact to most comfortable.',\n fullscreenTitle: 'Full screen',\n fullscreenText: 'Hides the browser bar so you can focus on the system. Shortcut: <b>Ctrl + ⇧ + F</b>',\n profileTitle: 'Your profile',\n profileText:\n \"Switch badge (if you have more than one), settings, guided tour, <b>what's new</b>, keyboard shortcuts, theme and sign out — it's all in this menu. Tip: press <b>?</b> to open the shortcuts directly.\",\n doneTitle: '⌨️ All set!',\n doneText:\n 'You can replay this tour whenever you want from your <b>profile › Guided tour</b> menu. And press <b>?</b> at any time to see all keyboard shortcuts.',\n },\n shortcuts: {\n heading: 'Keyboard shortcuts',\n hint: 'Tip: press {key} at any time to reopen this panel.',\n replayTour: 'Replay tour',\n dismiss: 'Got it',\n openSearch: 'Open quick search',\n goHome: 'Go to Home',\n goFavorite: 'Go to favorite no. 1 to 9',\n history: 'Back / forward in history',\n openSettings: 'Open settings',\n toggleTheme: 'Toggle light / dark theme',\n fullscreen: 'Full screen',\n logout: 'Sign out',\n showHelp: 'Show this shortcuts panel',\n closeOverlay: 'Close open dialog / panel',\n },\n settings: {\n heading: 'Settings',\n appearance: 'Appearance',\n appearanceKeywords: 'visual colors theme layout',\n theme: 'Theme',\n themeDescription: 'Light, dark or following the operating system.',\n themeKeywords: 'dark mode light night',\n themeLight: 'Light',\n themeDark: 'Dark',\n themeSystem: 'System',\n accent: 'Main color',\n accentDescription: 'Color family for the header, buttons and highlights.',\n accentKeywords: 'family palette color accent',\n density: 'Density',\n densityDescription: 'Compact brings rows and controls closer to fit more information on screen.',\n densityKeywords: 'spacing size compact',\n comfortable: 'Comfortable',\n compact: 'Compact',\n font: 'Font',\n fontDescription: 'Typeface for the whole application.',\n fontKeywords: 'typography typeface text roboto rubik figtree geist',\n sidebar: 'Side menu',\n sidebarDescription: 'Automatic opens when the pointer approaches; fixed stays open; compact shows only icons.',\n sidebarKeywords: 'sidebar navigation side bar',\n sidebarAuto: 'Automatic',\n sidebarFixed: 'Fixed',\n sidebarCompact: 'Compact',\n region: 'Region',\n regionKeywords: 'language locale time date',\n language: 'Language',\n languageDescription: 'Language of the system texts. Applies immediately, no reload.',\n languageKeywords: 'language locale translation english spanish portuguese',\n languageAuto: 'System default ({language})',\n timeZone: 'Time zone',\n timeZoneKeywords: 'timezone hour utc gmt',\n timeZoneHint: 'Used to display dates and times. Now: {now}',\n timeZoneAuto: 'Automatic ({zone})',\n shortcuts: 'Shortcuts',\n shortcutsDescription: 'Press ? on any screen to see this list.',\n shortcutsKeywords: 'keyboard keys tour help',\n tour: 'Guided tour',\n tourDescription: 'Shows again, step by step, where each part of the screen is.',\n tourKeywords: 'onboarding help introduction',\n replayTour: 'Replay tour',\n account: 'Account',\n accountKeywords: 'profile user session login',\n user: 'User',\n accessLevel: 'Access level',\n accessLevelKeywords: 'badge profile permission group',\n session: 'Session',\n sessionDescription: 'The session renews itself while the application is open.',\n sessionKeywords: 'expiration token login',\n sessionUnknown: 'Not provided',\n sessionExpired: 'Expired at {time}',\n sessionExpiresIn: 'Expires in {minutes} min (at {time})',\n sessionExpiresAt: 'Expires at {time}',\n accessToken: 'Access token',\n accessTokenDescription: 'To test an API on your behalf. It gives access to your account until it expires: never share it.',\n accessTokenKeywords: 'jwt bearer api developer',\n copy: 'Copy',\n appTokens: 'Application tokens',\n appTokensDescription:\n 'To use this application outside the interface on your behalf — an MCP, a script. The token is valid only for this application, with the permissions of the chosen access level, and expires in at most 1 year. Send it in the x-app-token header.',\n appTokensKeywords: 'token app mcp api key pat x-app-token automation script integration',\n logout: 'Sign out',\n logoutDescription: 'Ends the session in this browser.',\n logoutKeywords: 'logout disconnect',\n about: 'About',\n aboutKeywords: 'version build environment dependencies support',\n application: 'Application',\n version: 'Version',\n versionKeywords: 'release',\n buildDate: 'Build date',\n environment: 'Environment',\n environmentKeywords: 'staging production',\n links: 'Links',\n linksKeywords: 'repository documentation bug issue',\n docs: 'Documentation',\n reportIssue: 'Report a problem',\n repository: 'Repository',\n dependencies: 'Dependencies',\n dependenciesDescription: \"Versions declared in this application's package.json.\",\n dependenciesKeywords: 'angular hermes rxjs apollo graphql',\n supportInfo: 'Support information',\n supportInfoDescription: 'Copies version, environment, browser, page and preferences — paste it into the ticket.',\n supportInfoKeywords: 'help ticket diagnostics',\n noSessionToken: 'No session token available.',\n tokenCopied: \"Token copied. Don't share it: it gives access to your account until it expires.\",\n supportCopied: 'Information copied. Paste it into the support ticket.',\n copyBlocked: \"Couldn't copy. The browser blocked access to the clipboard.\",\n },\n support: {\n application: 'Application',\n version: 'Version',\n build: 'Build',\n environment: 'Environment',\n page: 'Page',\n browser: 'Browser',\n screen: 'Screen',\n theme: 'Theme',\n themeValue: '{theme} ({mode}) · family {family} · density {density} · font {font}',\n timeZone: 'Time zone',\n accessLevel: 'Access level',\n date: 'Date',\n },\n appTokens: {\n unavailable: \"Unavailable in this application: it isn't connected to argos-admin.\",\n created: 'Token \"{name}\" created — copy it now, it won\\'t be shown again.',\n sendHeader: 'Send it in the <code>x-app-token</code> header. Valid until {date}, with the permissions of the chosen access level.',\n copyToken: 'Copy token',\n saved: \"I've saved it\",\n loading: 'Loading…',\n expiredOn: 'Expired on {date}',\n expiresOn: 'Expires on {date}',\n lastUsed: 'Last used: {date}',\n never: 'never',\n revoke: 'Revoke',\n confirmRevoke: 'Confirm revocation',\n empty: \"You don't have any tokens in this application yet.\",\n noBadges: \"You don't have any access level in this application to create tokens.\",\n appOnly: 'Application: <strong>{name}</strong> — the token is valid only for it.',\n accessLevel: 'Access level',\n name: 'Name',\n namePlaceholder: 'E.g.: Claude MCP on my laptop',\n nameRequired: 'Give it a name so you can recognize the token later.',\n nameMax: 'Up to 80 characters.',\n validity: 'Validity',\n days30: '30 days',\n days90: '90 days',\n months6: '6 months',\n year1: '1 year',\n create: 'Create token',\n cancel: 'Cancel',\n newToken: 'New token',\n validCount: '{valid} of {max} valid',\n limit: 'Limit reached: revoke a token to create another one.',\n loadError: \"Couldn't load your tokens.\",\n badgesError: \"Couldn't load your access levels.\",\n createError: \"Couldn't create the token.\",\n copied: 'Token copied.',\n copyFailed: \"Couldn't copy. Select the text and copy it manually.\",\n revoked: 'Token \"{name}\" revoked. It may take up to 2 minutes to stop working in every system.',\n revokeError: \"Couldn't revoke the token.\",\n },\n notification: {\n genericError: 'An error occurred while processing your request.',\n },\n graphql: {\n noResponse: \"The service didn't respond.\",\n serviceFailure: 'Service failure.',\n done: 'Operation completed.',\n failed: \"Couldn't complete the operation.\",\n },\n access: {\n blockedText:\n \"You're not in any group of this application. Ask its administrator to add you to a group, then sign in again.\",\n blockedAction: 'Sign out',\n noRightsText: \"You don't have access to any page of this application. Contact its administrator to request access.\",\n },\n session: {\n offline: \"Can't reach the authentication server. You're still signed in; trying to reconnect…\",\n reconnecting: 'Reconnecting…',\n reauthorizing: 'Renewing your session…',\n reauthorizationRequired: 'Your session needs to be confirmed. Nothing you have open will be lost.',\n signInAgain: 'Sign in again',\n callbackFailedHeading: \"Couldn't complete sign-in\",\n callbackFailedText: 'The sign-in response was incomplete or expired. Sign in again to continue.',\n },\n routing: {\n notPublished: \"This address is in your access, but its screen hasn't been published yet.\",\n notPublishedCode: \"This address is in your access, but its screen hasn't been published yet. Give the code {code} to the Acropole team.\",\n },\n home: {\n noAccessTitle: \"You don't have access to any screen yet\",\n noAccessText:\n \"Access is granted by your area's manager. If they've already approved it, sign out and sign in again, or open a ticket with the team in charge.\",\n yourScreens: 'Your screens',\n modules: 'Modules',\n privileged: 'Privileged access',\n recent: 'Recently opened',\n recentCaption: 'The screens you opened last, from most recent to oldest.',\n screenCount: { one: '1 screen', other: '{count} screens' },\n favorite: 'Add {name} to favorites',\n unfavorite: 'Remove {name} from favorites',\n favorites: 'Favorites',\n navigate: 'Browse',\n settings: 'Settings',\n tools: 'Tools',\n systemDocs: 'System documentation',\n colScreen: 'Screen',\n colWhere: 'Where it is',\n colFavorite: 'Favorite',\n noModule: 'No module',\n },\n autoService: {\n loading: 'Loading...',\n cancel: 'Cancel',\n save: 'Save',\n create: 'Create',\n edit: 'Edit',\n remove: 'Remove',\n search: 'Look up',\n active: 'Active',\n inactive: 'Inactive',\n confirmChanges: 'Confirm changes',\n appsTitle: 'Applications',\n appsIntro: \"Manage this client's applications (client_credentials) — without relying on the central panel.\",\n clientTitle: 'Client',\n clientIntro: \"Manage this client's routes, routers and access — without relying on the central panel.\",\n clientSections: 'Client sections',\n tabRoutes: 'Routes',\n tabRouters: 'Routers',\n tabAccess: 'Access',\n noClients:\n \"You don't manage any client here yet. You need to (a) have been granted access to a client and (b) be signed in with the <strong>Administrator</strong> badge active. Switch badges in your profile menu, if available, or ask a central administrator for access.\",\n pickClient: 'Select the client you want to manage',\n groupsTitle: 'Groups',\n groupsIntro: \"Manage the members of this client's groups — without relying on the central panel.\",\n groupsFixed: \"The 5 groups below are fixed for this client and can't be renamed, created or deleted — look one up to manage its members.\",\n pickGroup: 'Select a group',\n noDescription: 'No description provided.',\n pickGroupHint: 'Look up a group above to view and manage its members.',\n manageMembers: 'Manage members',\n membersCaption: 'Group members',\n noMembers: 'No members in this group.',\n colUser: 'User',\n colMemberSince: 'Member since',\n membersHeading: 'Members — {group}',\n addUser: 'Add user (username or email)',\n userSearch: 'Search by name, username or email...',\n role: 'Role (optional)',\n pickRole: 'Select a role',\n add: 'Add',\n suggestions: 'Suggestions',\n moreSuggestions: 'See more suggestions',\n membersOf: 'Members of group {group}',\n noMembersShort: 'No members.',\n newMember: 'New',\n addedBy: 'by {user}',\n removal: 'Removal',\n removalEmpty: 'Select one or more members from the list beside to remove them from the group.',\n undoRemoval: 'Undo removal',\n saveChanges: 'Save changes',\n colRole: 'Role',\n colAddedAt: 'Added on',\n newAccess: 'New access',\n newAccessHeading: 'New access',\n accessCaption: 'Client access',\n noAccess: 'No access granted yet.',\n colGroup: 'Group',\n colBadge: 'Badge',\n manageRoutes: 'Manage routes',\n group: 'Group',\n routesOf: 'Routes for {group}',\n guardsHint:\n \"Only private routers with no badge restriction, or whose allowed badge includes <strong>{badge}</strong> (this group's badge), appear here.\",\n noPrivateRoutes: \"No private route available for this group's badge.\",\n register: 'Register',\n appsSearchIntro:\n \"Look up one of this client's applications (client_credentials) to manage operations and access — without relying on the central panel.\",\n secretCreated: \"Application created. Save the secret now, it won't be shown again:\",\n pickApp: 'Select an application',\n disable: 'Disable',\n enable: 'Enable',\n delete: 'Delete',\n appSections: 'Application sections',\n tabOperations: 'Operations',\n tabAccesses: 'Access',\n editApp: 'Edit application',\n newApp: 'New application',\n name: 'Name',\n grants: 'Grants (comma-separated)',\n appAccessCaption: 'Application access',\n noAppAccess: 'No group has access to this application yet.',\n colType: 'Type',\n manageOperations: 'Manage operations',\n operationsOf: 'Operations for {group}',\n noOperations: 'No operation registered for this application yet.',\n operationsCaption: 'Registered operations',\n colIdentifier: 'Identifier',\n colMethod: 'Method',\n colLevel: 'Level',\n colDescription: 'Description',\n colAllowedGroups: 'Allowed groups',\n groupCount: { one: '1 group', other: '{count} groups' },\n routersTitle: 'Routers',\n newRouter: 'New router',\n routersCaption: 'Client routers',\n noRouters: 'No router registered yet.',\n private: 'Private',\n public: 'Public',\n editRouter: 'Edit router',\n page: 'Page (required)',\n hierarchy: 'Hierarchy (optional)',\n levelHeader: 'Header',\n levelNavigation: 'Navigation',\n levelMenu: 'Menu',\n levelItem: 'Item',\n levelSubmenu: 'Submenu',\n privateHint: 'Private (requires access + guard to be visible)',\n routerDescription: 'Description',\n routerDescriptionHint: 'What the screen does, in one sentence. Shown below the title, in the page bar. On a router inherited from a template, the template text wins on the next sync.',\n colPage: 'Page',\n colBuiltPath: 'Built path',\n colVisibility: 'Visibility',\n routesTitle: 'Routes',\n newRoute: 'New route',\n routesCaption: 'Client routes',\n noRoutes: 'No route registered yet.',\n editRoute: 'Edit route',\n internalName: 'Internal name',\n displayName: 'Display name',\n icon: 'Icon',\n iconPlaceholder: 'e.g.: home',\n path: 'Path',\n info: 'Info',\n excludable: 'Deletable',\n excludableLocked: 'Protected route: only the central Argos administration can allow deleting it.',\n templateTag: 'Template',\n templateLocked: \"Comes from the application's template: only the central Argos administration can edit or delete it.\",\n pathPlaceholder: 'e.g.: dashboard',\n pathHint: 'A single piece of the address: lowercase letters and hyphens. The router adds the \"/\" between levels.',\n pathInvalid: 'Use only lowercase letters (a–z) and hyphens — no \"/\", spaces, digits or accents, and no hyphen at the start or end.',\n colExcludable: 'Deletable',\n excludableYes: 'Yes',\n excludableNo: 'No',\n colName: 'Name',\n colDisplay: 'Display',\n colIcon: 'Icon',\n colPath: 'Path',\n },\n autoServiceAudit: {\n title: 'Audit',\n intro: 'What happened in this project’s applications: who did what, when and with which result.',\n tabApps: 'Applications',\n period: 'Period',\n periodLastHour: 'Last hour',\n period24h: 'Last 24 hours',\n period7d: 'Last 7 days',\n period30d: 'Last 30 days',\n periodFromFilters: 'The period comes from the dates chosen in the filters.',\n filters: 'Audit filters',\n filterDates: 'Dates',\n filterApp: 'Application',\n filterUser: 'User',\n filterOperation: 'Operation',\n filterMethod: 'Method',\n filterOutcome: 'Outcome',\n filterEntry: 'User actions only',\n userPlaceholder: 'User name',\n operationPlaceholder: 'Operation identifier or name',\n methodRead: 'Read',\n methodWrite: 'Write',\n methodDelete: 'Delete',\n methodStream: 'Stream',\n outcomeSuccess: 'Success',\n outcomeFailure: 'Failure',\n outcomeDenied: 'Denied',\n kpiTotal: 'Events',\n kpiTotalDescription: 'Everything recorded in the period.',\n kpiFailures: 'Failures',\n kpiDenied: 'Denied',\n kpiShare: '{percent} of total',\n kpis: 'Period summary',\n timeline: 'Timeline',\n timelineSummary: 'Events per interval, from {from} to {to}.',\n bucketSummary: '{time}: {total} events, {failures} failures, {denied} denied',\n timelineEmpty: 'No events to plot in the period.',\n topOperations: 'Most called operations',\n topUsers: 'Most active users',\n topApps: 'By application',\n noTop: 'Nothing in the period.',\n eventCount: { one: '1 event', other: '{count} events' },\n failureCount: { one: '1 failure', other: '{count} failures' },\n deniedCount: { one: '1 denied', other: '{count} denied' },\n filterBy: 'Filter by {name}',\n eventsCaption: 'Events in the period, newest first',\n colWhen: 'When',\n colApp: 'Application',\n colUser: 'User',\n colOperation: 'Operation',\n colMethod: 'Method',\n colOutcome: 'Outcome',\n colStatus: 'HTTP',\n colDuration: 'Duration',\n durationMs: '{ms} ms',\n pageItems: 'events',\n pageSize: 'per page',\n pageError: 'Could not load this page of events. Try again.',\n loading: 'Loading the audit…',\n emptyTitle: 'No events in the period',\n emptyText: 'Widen the period or remove filters to see more.',\n clearFilters: 'Clear filters',\n errorTitle: 'Could not load the audit',\n errorText: 'The server did not respond as expected. Try again in a moment.',\n retry: 'Try again',\n rangeTooLarge: 'The maximum period is 31 days. Pick closer dates.',\n forbidden: 'You do not have access to the audit of one of the chosen applications.',\n anonymous: 'No user',\n detailHeading: 'Event detail',\n detailLoading: 'Loading the full detail…',\n detailError: 'Could not load the full detail; showing the summary.',\n fieldWhen: 'When',\n fieldApp: 'Application',\n fieldUser: 'User',\n fieldActor: 'Actor type',\n fieldIp: 'Source IP',\n fieldOperation: 'Operation',\n fieldIdentifier: 'Identifier',\n fieldMethod: 'Method',\n fieldLevel: 'Level',\n fieldPermission: 'Permission',\n fieldOutcome: 'Outcome',\n fieldStatus: 'HTTP status',\n fieldDuration: 'Duration',\n fieldRoute: 'Route',\n fieldTarget: 'Target',\n fieldOrigin: 'Origin',\n originEntry: 'User action',\n originInternal: 'Call between applications',\n fieldTrace: 'Trace',\n fieldEventId: 'Event ID',\n fieldMessage: 'Message',\n fieldReceivedAt: 'Received at',\n fieldInstance: 'Service instance',\n fieldSdk: 'SDK',\n fieldDetails: 'Details',\n viewTrace: 'View chain (trace)',\n traceHeading: 'Action chain',\n traceLoading: 'Loading the chain…',\n traceError: 'Could not load the chain.',\n traceEmpty: 'No event of this chain belongs to your project’s applications.',\n traceHidden: {\n one: '1 event of this chain belongs to an application outside your project and is not shown here.',\n other: '{count} events of this chain belong to applications outside your project and are not shown here.',\n },\n traceCurrent: 'this event',\n openTraceEvent: 'Open {operation} at {time}',\n introAdmin: 'What happened across all applications: who did what, when and with which result.',\n period6h: 'Last 6 hours',\n refresh: 'Refresh',\n autoRefresh: 'Refresh every 30 s',\n updatedAt: 'Updated at {time}',\n updating: 'Updating…',\n filterUserId: 'User ID',\n filterLevel: 'Level',\n filterPermission: 'Permission',\n filterActor: 'Actor type',\n filterStatus: 'HTTP status',\n filterTrace: 'Trace',\n userIdPlaceholder: 'User UUID',\n statusPlaceholder: 'E.g. 403',\n tracePlaceholder: '32 hexadecimal characters',\n levelPublic: 'Public',\n levelPrivate: 'Private',\n levelProtected: 'Protected',\n levelOptional: 'Optional',\n permissionAllowed: 'Allowed',\n permissionForbidden: 'Forbidden',\n permissionUnauthorized: 'Not authenticated',\n permissionPublic: 'Public',\n actorUser: 'User',\n actorAppToken: 'Application token',\n actorApiToken: 'API token',\n actorPublic: 'Public',\n actorUnauthenticated: 'Not authenticated',\n forbiddenAdmin: 'Your account cannot read the audit log. Ask an administrator for the admin:audit:* operations.',\n invalidFilter: 'A filter has an invalid value. {detail}',\n kpiFilterHint: '{share} · click to filter',\n topsRange: '{from}–{to} of {total}',\n topsPrevious: 'Previous page of {name}',\n topsNext: 'Next page of {name}',\n topsError: 'Could not load this list.',\n filterByTrace: 'Filter the table by this trace',\n unitLabel: 'View by',\n unitActions: 'Actions',\n unitEvents: 'Events',\n kpiTotalActions: 'Actions',\n kpiTotalActionsDescription: 'Each action counts once, with every step across applications; its result is the worst of them.',\n timelineSummaryActions: 'Actions per interval, from {from} to {to}.',\n bucketSummaryActions: '{time}: {total} actions, {failures} failed, {denied} denied',\n timelineEmptyActions: 'No actions to plot in the period.',\n actionsCaption: 'Actions in the period, newest first',\n pageItemsActions: 'actions',\n pageErrorActions: 'Could not load this page of actions. Try again.',\n emptyTitleActions: 'No actions in the period',\n colSpans: 'Spans',\n spansApps: 'Applications: {apps}',\n spansHidden: {\n one: 'plus 1 span from an application outside your project',\n other: 'plus {count} spans from applications outside your project',\n },\n actionDetailHeading: 'Action detail',\n orphanNote: 'The entry of this action is not in the period (or was not recorded): it is shown from its first call between applications.',\n orphanTag: 'no entry',\n spansHeading: 'Action spans',\n spansSummary: '{count} spans in {duration}',\n spanRow: '{app}, {operation}: {outcome}, starts at +{offset}, takes {duration}',\n },\n};\n","import { SpineMessages } from './spine-messages';\n\nexport const SPINE_MESSAGES_ES: SpineMessages = {\n meta: { locale: 'es' },\n header: {\n home: 'Inicio',\n apps: 'Aplicaciones',\n themeDark: 'Tema oscuro',\n themeLight: 'Tema claro',\n densityComfortable: 'Densidad cómoda',\n densityCompact: 'Densidad compacta',\n fullscreen: 'Pantalla completa',\n exitFullscreen: 'Salir de pantalla completa',\n user: 'Usuario',\n accessLevels: 'Niveles de acceso',\n settings: 'Configuración',\n appearance: 'Apariencia',\n shortcuts: 'Atajos de teclado',\n tour: 'Recorrido guiado',\n news: 'Novedades',\n logout: 'Salir',\n search: 'Búsqueda',\n searchPlaceholder: 'Buscar módulo o página…',\n recentSearches: 'Búsquedas recientes',\n clearRecent: 'Limpiar',\n noResults: 'No se encontró nada para \"{term}\".',\n },\n navigation: {\n back: 'Volver',\n home: 'Inicio',\n favorite: 'Agregar esta página a favoritos',\n unfavorite: 'Quitar de favoritos',\n copyLink: 'Copiar enlace de la página',\n linkCopied: '¡Enlace copiado!',\n },\n sidebar: {\n modules: 'Módulos',\n moduleNavigation: 'Navegación de {module}',\n apps: 'Aplicaciones',\n },\n pageBar: {\n favorite: 'Agregar esta página a favoritos',\n unfavorite: 'Quitar de favoritos',\n copyLink: 'Copiar enlace de la página',\n linkCopied: 'Enlace copiado',\n docs: 'Documentación de esta pantalla',\n trail: 'Estás en',\n },\n pagePanel: {\n notFoundTitle: 'No encontramos esta página',\n notFoundText: 'La dirección ya no existe. Cierra la pestaña y abre la página desde el menú.',\n },\n docs: {\n heading: 'Documentación',\n index: 'Índice de la documentación',\n search: 'Buscar en la documentación',\n noMatch: 'Ninguna página coincide con ese término.',\n empty: 'Ninguna pantalla tiene documentación todavía.',\n view: 'Vista de la documentación',\n usage: 'Cómo usar',\n technical: 'Especificación técnica',\n loading: 'Cargando la documentación',\n loadError: 'No se pudo cargar esta documentación.',\n invite: 'Elige una página en el índice para leer su documentación.',\n },\n news: {\n heading: 'Novedades',\n carousel: 'Novedades del sistema',\n dismiss: 'Entendido',\n },\n tour: {\n progress: '{current} de {total}',\n skip: 'Omitir recorrido',\n back: 'Volver',\n next: 'Siguiente',\n finish: 'Terminar',\n welcomeTitle: '👋 Bienvenido',\n welcomeText: 'Hagamos un recorrido rápido por los principales botones del sistema. Puedes omitirlo en cualquier momento.',\n appsTitle: 'Otras aplicaciones',\n appsText:\n 'Este botón abre la cuadrícula con los <b>otros sistemas</b> que usan el mismo inicio de sesión que este. Haz clic en uno para abrirlo en una <b>nueva pestaña del navegador</b>, ya con tu sesión — sin volver a escribir la contraseña. Lo que ves dentro de cada uno depende de tus grupos en él.',\n searchTitle: 'Búsqueda rápida',\n searchText: 'Encuentra cualquier módulo o página por su nombre. Atajo: <b>Ctrl + K</b> desde cualquier lugar.',\n navModulesTitle: 'Navegación lateral: módulos y páginas',\n navModulesText:\n 'Aquí están los <b>módulos</b> del sistema. Haz clic en un módulo para <b>entrar</b>: la columna pasa a mostrar los menús y las páginas que contiene. La <b>flecha superior</b> vuelve a la lista de módulos, y los menús con páginas se abren y cierran en el mismo lugar.',\n navModeTitle: 'Navegación lateral: cómo se muestra',\n navModeText:\n 'En el pie eliges el comportamiento de la columna: <b>Abrir al acercarse</b> (queda recogida y se abre cuando el puntero se acerca), <b>Mantener abierta</b> o <b>Mantener compacta</b> (solo íconos). La flecha de al lado <b>expande o contrae todos</b> los menús a la vez. La misma opción está en <b>Configuración › Apariencia › Menú lateral</b>.',\n tabsTitle: 'Pestañas',\n tabsText:\n 'Cada página se abre en una <b>pestaña</b>, como en el navegador, y cada pestaña <b>guarda su estado</b>: filtros, desplazamiento y formularios siguen como los dejaste al volver. Haz clic en <b>+</b> para una pestaña nueva, y en <b>×</b> (o con el botón central del ratón) para cerrarla.',\n splitTitle: 'Pestañas lado a lado',\n splitText:\n '<b>Arrastra</b> una pestaña a uno de los bordes del área de contenido para <b>dividir la pantalla</b> en dos paneles y trabajar con dos páginas a la vez. Arrastra las pestañas para <b>reordenarlas</b>. Con el <b>botón derecho</b> en una pestaña divides a la derecha o hacia abajo, mueves la pestaña al otro panel o cierras el panel.',\n whereTitle: 'Dónde estás',\n whereText:\n 'El nombre de la página y, debajo, el camino hasta ella — haz clic en un nivel para volver. Junto al nombre, <b>marca como favorita</b> la página (♡) para encontrarla rápido después y <b>copia el enlace</b> para compartirla.',\n themeTitle: 'Tema claro / oscuro',\n themeText: 'Cambia la apariencia del sistema. Atajo: <b>Ctrl + .</b>',\n densityTitle: 'Densidad',\n densityText: 'Ajusta el espaciado de las pantallas — de la más compacta a la más cómoda.',\n fullscreenTitle: 'Pantalla completa',\n fullscreenText: 'Oculta la barra del navegador para concentrarte en el sistema. Atajo: <b>Ctrl + ⇧ + F</b>',\n profileTitle: 'Tu perfil',\n profileText:\n 'Cambio de credencial (si tienes más de una), configuración, recorrido guiado, <b>novedades</b>, atajos de teclado, tema y salir — todo está en este menú. Consejo: pulsa <b>?</b> para abrir los atajos directamente.',\n doneTitle: '⌨️ ¡Todo listo!',\n doneText:\n 'Puedes repetir este recorrido cuando quieras desde el menú de tu <b>perfil › Recorrido guiado</b>. Y pulsa <b>?</b> en cualquier momento para ver todos los atajos de teclado.',\n },\n shortcuts: {\n heading: 'Atajos de teclado',\n hint: 'Consejo: pulsa {key} en cualquier momento para volver a abrir este panel.',\n replayTour: 'Repetir recorrido',\n dismiss: 'Entendido',\n openSearch: 'Abrir la búsqueda rápida',\n goHome: 'Ir al Inicio',\n goFavorite: 'Ir al favorito n.º 1 a 9',\n history: 'Atrás / adelante en el historial',\n openSettings: 'Abrir la configuración',\n toggleTheme: 'Alternar tema claro / oscuro',\n fullscreen: 'Pantalla completa',\n logout: 'Salir (cerrar sesión)',\n showHelp: 'Mostrar este panel de atajos',\n closeOverlay: 'Cerrar diálogo / panel abierto',\n },\n settings: {\n heading: 'Configuración',\n appearance: 'Apariencia',\n appearanceKeywords: 'visual colores tema diseño',\n theme: 'Tema',\n themeDescription: 'Claro, oscuro o siguiendo el sistema operativo.',\n themeKeywords: 'modo oscuro dark light nocturno',\n themeLight: 'Claro',\n themeDark: 'Oscuro',\n themeSystem: 'Sistema',\n accent: 'Color principal',\n accentDescription: 'Familia de colores del encabezado, los botones y los destacados.',\n accentKeywords: 'familia paleta color acento',\n density: 'Densidad',\n densityDescription: 'Compacta acerca filas y controles para que quepa más información en la pantalla.',\n densityKeywords: 'espaciado tamaño compacto',\n comfortable: 'Cómoda',\n compact: 'Compacta',\n font: 'Fuente',\n fontDescription: 'Tipografía de toda la aplicación.',\n fontKeywords: 'tipografía letra texto roboto rubik figtree geist',\n sidebar: 'Menú lateral',\n sidebarDescription: 'Automático se abre al acercar el puntero; fijo queda siempre abierto; compacto muestra solo los íconos.',\n sidebarKeywords: 'sidebar navegación barra lateral',\n sidebarAuto: 'Automático',\n sidebarFixed: 'Fijo',\n sidebarCompact: 'Compacto',\n region: 'Región',\n regionKeywords: 'idioma localización horario fecha',\n language: 'Idioma',\n languageDescription: 'Idioma de los textos del sistema. Se aplica al instante, sin recargar.',\n languageKeywords: 'idioma lengua traducción inglés español portugués',\n languageAuto: 'Predeterminado del sistema ({language})',\n timeZone: 'Zona horaria',\n timeZoneKeywords: 'timezone hora utc gmt',\n timeZoneHint: 'Se usa para mostrar fechas y horas. Ahora: {now}',\n timeZoneAuto: 'Automático ({zone})',\n shortcuts: 'Atajos',\n shortcutsDescription: 'Pulsa ? en cualquier pantalla para ver esta lista.',\n shortcutsKeywords: 'teclado teclas recorrido ayuda',\n tour: 'Recorrido guiado',\n tourDescription: 'Muestra de nuevo, paso a paso, dónde está cada parte de la pantalla.',\n tourKeywords: 'onboarding ayuda presentación',\n replayTour: 'Repetir recorrido',\n account: 'Cuenta',\n accountKeywords: 'perfil usuario sesión login',\n user: 'Usuario',\n accessLevel: 'Nivel de acceso',\n accessLevelKeywords: 'credencial badge perfil permiso grupo',\n session: 'Sesión',\n sessionDescription: 'La sesión se renueva sola mientras la aplicación esté abierta.',\n sessionKeywords: 'expiración token login',\n sessionUnknown: 'No informado',\n sessionExpired: 'Expiró a las {time}',\n sessionExpiresIn: 'Expira en {minutes} min (a las {time})',\n sessionExpiresAt: 'Expira a las {time}',\n accessToken: 'Token de acceso',\n accessTokenDescription: 'Para probar una API en tu nombre. Da acceso a tu cuenta hasta que expire: nunca lo compartas.',\n accessTokenKeywords: 'jwt bearer api desarrollador',\n copy: 'Copiar',\n appTokens: 'Tokens de aplicación',\n appTokensDescription:\n 'Para usar esta aplicación fuera de la interfaz en tu nombre — un MCP, un script. El token vale solo para esta aplicación, con los permisos del nivel de acceso elegido, y expira en un máximo de 1 año. Envíalo en el encabezado x-app-token.',\n appTokensKeywords: 'token app mcp api clave pat x-app-token automatización script integración',\n logout: 'Salir',\n logoutDescription: 'Cierra la sesión en este navegador.',\n logoutKeywords: 'logout desconectar',\n about: 'Acerca de',\n aboutKeywords: 'versión build entorno dependencias soporte',\n application: 'Aplicación',\n version: 'Versión',\n versionKeywords: 'release',\n buildDate: 'Fecha del build',\n environment: 'Entorno',\n environmentKeywords: 'homologación producción',\n links: 'Enlaces',\n linksKeywords: 'repositorio documentación bug issue',\n docs: 'Documentación',\n reportIssue: 'Informar un problema',\n repository: 'Repositorio',\n dependencies: 'Dependencias',\n dependenciesDescription: 'Versiones declaradas en el package.json de esta aplicación.',\n dependenciesKeywords: 'angular hermes rxjs apollo graphql',\n supportInfo: 'Información para soporte',\n supportInfoDescription: 'Copia versión, entorno, navegador, página y preferencias — pégala en el ticket.',\n supportInfoKeywords: 'ayuda ticket diagnóstico',\n noSessionToken: 'No hay ningún token de sesión disponible.',\n tokenCopied: 'Token copiado. No lo compartas: da acceso a tu cuenta hasta que expire.',\n supportCopied: 'Información copiada. Pégala en el ticket de soporte.',\n copyBlocked: 'No se pudo copiar. El navegador bloqueó el acceso al portapapeles.',\n },\n support: {\n application: 'Aplicación',\n version: 'Versión',\n build: 'Build',\n environment: 'Entorno',\n page: 'Página',\n browser: 'Navegador',\n screen: 'Pantalla',\n theme: 'Tema',\n themeValue: '{theme} ({mode}) · familia {family} · densidad {density} · fuente {font}',\n timeZone: 'Zona horaria',\n accessLevel: 'Nivel de acceso',\n date: 'Fecha',\n },\n appTokens: {\n unavailable: 'No disponible en esta aplicación: no está conectada a argos-admin.',\n created: 'Token \"{name}\" creado — cópialo ahora, no se volverá a mostrar.',\n sendHeader: 'Envíalo en el encabezado <code>x-app-token</code>. Vale hasta el {date}, con los permisos del nivel de acceso elegido.',\n copyToken: 'Copiar token',\n saved: 'Ya lo guardé',\n loading: 'Cargando…',\n expiredOn: 'Expiró el {date}',\n expiresOn: 'Expira el {date}',\n lastUsed: 'Último uso: {date}',\n never: 'nunca',\n revoke: 'Revocar',\n confirmRevoke: 'Confirmar revocación',\n empty: 'Todavía no tienes tokens en esta aplicación.',\n noBadges: 'No tienes ningún nivel de acceso en esta aplicación para generar tokens.',\n appOnly: 'Aplicación: <strong>{name}</strong> — el token solo vale para ella.',\n accessLevel: 'Nivel de acceso',\n name: 'Nombre',\n namePlaceholder: 'Ej.: MCP de Claude en el portátil',\n nameRequired: 'Ponle un nombre para reconocer el token después.',\n nameMax: 'Hasta 80 caracteres.',\n validity: 'Validez',\n days30: '30 días',\n days90: '90 días',\n months6: '6 meses',\n year1: '1 año',\n create: 'Crear token',\n cancel: 'Cancelar',\n newToken: 'Nuevo token',\n validCount: '{valid} de {max} válidos',\n limit: 'Límite alcanzado: revoca un token para crear otro.',\n loadError: 'No se pudieron cargar tus tokens.',\n badgesError: 'No se pudieron cargar tus niveles de acceso.',\n createError: 'No se pudo crear el token.',\n copied: 'Token copiado.',\n copyFailed: 'No se pudo copiar. Selecciona el texto y cópialo manualmente.',\n revoked: 'Token \"{name}\" revocado. Puede tardar hasta 2 minutos en dejar de funcionar en todos los sistemas.',\n revokeError: 'No se pudo revocar el token.',\n },\n notification: {\n genericError: 'Ocurrió un error al procesar tu solicitud.',\n },\n graphql: {\n noResponse: 'El servicio no respondió.',\n serviceFailure: 'Falla en el servicio.',\n done: 'Operación completada.',\n failed: 'No se pudo completar la operación.',\n },\n access: {\n blockedText:\n 'No formas parte de ningún grupo de esta aplicación. Pide a su administrador que te incluya en un grupo y vuelve a iniciar sesión.',\n blockedAction: 'Salir',\n noRightsText: 'No tienes acceso a ninguna página de esta aplicación. Habla con su administrador para solicitar acceso.',\n },\n session: {\n offline: 'Sin conexión con el servidor de autenticación. Sigues conectado; intentando reconectar…',\n reconnecting: 'Reconectando…',\n reauthorizing: 'Renovando tu sesión…',\n reauthorizationRequired: 'Tu sesión necesita ser confirmada. No se perderá nada de lo que tienes abierto.',\n signInAgain: 'Iniciar sesión de nuevo',\n callbackFailedHeading: 'No se pudo completar el inicio de sesión',\n callbackFailedText: 'La respuesta del inicio de sesión llegó incompleta o caducó. Vuelve a iniciar sesión para continuar.',\n },\n routing: {\n notPublished: 'Esta dirección está en tu acceso, pero su pantalla todavía no fue publicada.',\n notPublishedCode: 'Esta dirección está en tu acceso, pero su pantalla todavía no fue publicada. Informa el código {code} al equipo de Acropole.',\n },\n home: {\n noAccessTitle: 'Todavía no tienes acceso a ninguna pantalla',\n noAccessText:\n 'El acceso lo concede el responsable de tu área. Si ya lo aprobó, sal y vuelve a entrar, o abre un ticket con el equipo responsable.',\n yourScreens: 'Tus pantallas',\n modules: 'Módulos',\n privileged: 'Acceso privilegiado',\n recent: 'Abiertos recientemente',\n recentCaption: 'Las pantallas que abriste por última vez, de la más reciente a la más antigua.',\n screenCount: { one: '1 pantalla', other: '{count} pantallas' },\n favorite: 'Agregar {name} a favoritos',\n unfavorite: 'Quitar {name} de favoritos',\n favorites: 'Favoritos',\n navigate: 'Navegar',\n settings: 'Configuración',\n tools: 'Herramientas',\n systemDocs: 'Documentación del sistema',\n colScreen: 'Pantalla',\n colWhere: 'Dónde está',\n colFavorite: 'Favorito',\n noModule: 'Sin módulo',\n },\n autoService: {\n loading: 'Cargando...',\n cancel: 'Cancelar',\n save: 'Guardar',\n create: 'Crear',\n edit: 'Editar',\n remove: 'Quitar',\n search: 'Consultar',\n active: 'Activo',\n inactive: 'Inactivo',\n confirmChanges: 'Confirmar cambios',\n appsTitle: 'Aplicaciones',\n appsIntro: 'Gestiona las aplicaciones (client_credentials) de este client — sin depender del panel central.',\n clientTitle: 'Cliente',\n clientIntro: 'Gestiona rutas, enrutadores y acceso de este client — sin depender del panel central.',\n clientSections: 'Secciones del cliente',\n tabRoutes: 'Rutas',\n tabRouters: 'Enrutadores',\n tabAccess: 'Acceso',\n noClients:\n 'Todavía no administras ningún client aquí. Necesitas (a) tener acceso concedido a un client y (b) haber iniciado sesión con la credencial <strong>Administrador</strong> activa. Cambia de credencial en el menú de tu perfil, si está disponible, o pide acceso a un administrador central.',\n pickClient: 'Selecciona el client que quieres administrar',\n groupsTitle: 'Grupos',\n groupsIntro: 'Gestiona los miembros de los grupos de este client — sin depender del panel central.',\n groupsFixed:\n 'Los 5 grupos de abajo son fijos de este client y no se pueden renombrar, crear ni eliminar — consulta uno para gestionar sus miembros.',\n pickGroup: 'Selecciona un grupo',\n noDescription: 'Sin descripción registrada.',\n pickGroupHint: 'Consulta un grupo arriba para ver y gestionar sus miembros.',\n manageMembers: 'Gestionar miembros',\n membersCaption: 'Miembros del grupo',\n noMembers: 'Ningún miembro en este grupo.',\n colUser: 'Usuario',\n colMemberSince: 'Miembro desde',\n membersHeading: 'Miembros — {group}',\n addUser: 'Agregar usuario (username o email)',\n userSearch: 'Buscar por nombre, username o email...',\n role: 'Función (opcional)',\n pickRole: 'Selecciona una función',\n add: 'Agregar',\n suggestions: 'Sugerencias',\n moreSuggestions: 'Ver más sugerencias',\n membersOf: 'Miembros del grupo {group}',\n noMembersShort: 'Ningún miembro.',\n newMember: 'Nuevo',\n addedBy: 'por {user}',\n removal: 'Eliminación',\n removalEmpty: 'Selecciona uno o más miembros de la lista de al lado para quitarlos del grupo.',\n undoRemoval: 'Deshacer eliminación',\n saveChanges: 'Guardar cambios',\n colRole: 'Función',\n colAddedAt: 'Agregado el',\n newAccess: 'Nuevo acceso',\n newAccessHeading: 'Nuevo acceso',\n accessCaption: 'Accesos del client',\n noAccess: 'Ningún acceso concedido todavía.',\n colGroup: 'Grupo',\n colBadge: 'Credencial',\n manageRoutes: 'Gestionar rutas',\n group: 'Grupo',\n routesOf: 'Rutas de {group}',\n guardsHint:\n 'Solo aparecen aquí los routers privados sin restricción de credencial, o cuya credencial permitida incluya <strong>{badge}</strong> (la credencial de este grupo).',\n noPrivateRoutes: 'Ninguna ruta privada disponible para la credencial de este grupo.',\n register: 'Registrar',\n appsSearchIntro:\n 'Consulta una aplicación (client_credentials) de este client para gestionar operaciones y accesos — sin depender del panel central.',\n secretCreated: 'Aplicación creada. Guarda el secret ahora, no se volverá a mostrar:',\n pickApp: 'Selecciona una aplicación',\n disable: 'Desactivar',\n enable: 'Activar',\n delete: 'Eliminar',\n appSections: 'Secciones de la aplicación',\n tabOperations: 'Operaciones',\n tabAccesses: 'Accesos',\n editApp: 'Editar aplicación',\n newApp: 'Nueva aplicación',\n name: 'Nombre',\n grants: 'Grants (separados por coma)',\n appAccessCaption: 'Accesos de la aplicación',\n noAppAccess: 'Ningún grupo tiene acceso a esta aplicación todavía.',\n colType: 'Tipo',\n manageOperations: 'Gestionar operaciones',\n operationsOf: 'Operaciones de {group}',\n noOperations: 'Ninguna operación registrada para esta aplicación todavía.',\n operationsCaption: 'Operaciones registradas',\n colIdentifier: 'Identificador',\n colMethod: 'Método',\n colLevel: 'Nivel',\n colDescription: 'Descripción',\n colAllowedGroups: 'Grupos permitidos',\n groupCount: { one: '1 grupo', other: '{count} grupos' },\n routersTitle: 'Enrutadores',\n newRouter: 'Nuevo enrutador',\n routersCaption: 'Enrutadores del client',\n noRouters: 'Ningún enrutador registrado todavía.',\n private: 'Privado',\n public: 'Público',\n editRouter: 'Editar enrutador',\n page: 'Página (obligatorio)',\n hierarchy: 'Jerarquía (opcional)',\n levelHeader: 'Header',\n levelNavigation: 'Navegación',\n levelMenu: 'Menú',\n levelItem: 'Ítem',\n levelSubmenu: 'Submenú',\n privateHint: 'Privado (exige access + guard para ser visible)',\n routerDescription: 'Descripción',\n routerDescriptionHint: 'Qué hace la pantalla, en una frase. Aparece debajo del título, en la barra de la página. En un enrutador heredado de una plantilla, el texto de la plantilla prevalece en la próxima sincronización.',\n colPage: 'Página',\n colBuiltPath: 'Ruta armada',\n colVisibility: 'Visibilidad',\n routesTitle: 'Rutas',\n newRoute: 'Nueva ruta',\n routesCaption: 'Rutas del client',\n noRoutes: 'Ninguna ruta registrada todavía.',\n editRoute: 'Editar ruta',\n internalName: 'Nombre interno',\n displayName: 'Nombre visible',\n icon: 'Ícono',\n iconPlaceholder: 'ej.: home',\n path: 'Ruta (path)',\n info: 'Info',\n excludable: 'Eliminable',\n excludableLocked: 'Ruta protegida: solo la administración central de Argos puede permitir eliminarla.',\n templateTag: 'Plantilla',\n templateLocked: 'Viene de la plantilla de la aplicación: solo la administración central de Argos la edita o elimina.',\n pathPlaceholder: 'ej.: dashboard',\n pathHint: 'Un solo tramo de la dirección: letras minúsculas y guion. El \"/\" entre niveles lo arma el enrutador.',\n pathInvalid: 'Usa solo letras minúsculas (a–z) y guion — sin \"/\", espacios, números ni acentos, y sin guion al inicio o al final.',\n colExcludable: 'Eliminable',\n excludableYes: 'Sí',\n excludableNo: 'No',\n colName: 'Nombre',\n colDisplay: 'Visible',\n colIcon: 'Ícono',\n colPath: 'Path',\n },\n autoServiceAudit: {\n title: 'Auditoría',\n intro: 'Lo que pasó en las aplicaciones de este proyecto: quién hizo qué, cuándo y con qué resultado.',\n tabApps: 'Aplicaciones',\n period: 'Período',\n periodLastHour: 'Última hora',\n period24h: 'Últimas 24 horas',\n period7d: 'Últimos 7 días',\n period30d: 'Últimos 30 días',\n periodFromFilters: 'El período viene de las fechas elegidas en los filtros.',\n filters: 'Filtros de la auditoría',\n filterDates: 'Fechas',\n filterApp: 'Aplicación',\n filterUser: 'Usuario',\n filterOperation: 'Operación',\n filterMethod: 'Método',\n filterOutcome: 'Resultado',\n filterEntry: 'Solo acciones del usuario',\n userPlaceholder: 'Nombre del usuario',\n operationPlaceholder: 'Identificador o nombre de la operación',\n methodRead: 'Lectura',\n methodWrite: 'Escritura',\n methodDelete: 'Eliminación',\n methodStream: 'Flujo continuo',\n outcomeSuccess: 'Éxito',\n outcomeFailure: 'Fallo',\n outcomeDenied: 'Denegado',\n kpiTotal: 'Eventos',\n kpiTotalDescription: 'Todo lo registrado en el período.',\n kpiFailures: 'Fallos',\n kpiDenied: 'Denegados',\n kpiShare: '{percent} del total',\n kpis: 'Resumen del período',\n timeline: 'Línea de tiempo',\n timelineSummary: 'Eventos por intervalo, de {from} a {to}.',\n bucketSummary: '{time}: {total} eventos, {failures} fallos, {denied} denegados',\n timelineEmpty: 'Sin eventos para dibujar en el período.',\n topOperations: 'Operaciones más llamadas',\n topUsers: 'Usuarios más activos',\n topApps: 'Por aplicación',\n noTop: 'Nada en el período.',\n eventCount: { one: '1 evento', other: '{count} eventos' },\n failureCount: { one: '1 fallo', other: '{count} fallos' },\n deniedCount: { one: '1 denegado', other: '{count} denegados' },\n filterBy: 'Filtrar por {name}',\n eventsCaption: 'Eventos del período, del más reciente al más antiguo',\n colWhen: 'Cuándo',\n colApp: 'Aplicación',\n colUser: 'Usuario',\n colOperation: 'Operación',\n colMethod: 'Método',\n colOutcome: 'Resultado',\n colStatus: 'HTTP',\n colDuration: 'Duración',\n durationMs: '{ms} ms',\n pageItems: 'eventos',\n pageSize: 'por página',\n pageError: 'No se pudo cargar esta página de eventos. Inténtalo de nuevo.',\n loading: 'Cargando la auditoría…',\n emptyTitle: 'Ningún evento en el período',\n emptyText: 'Amplía el período o quita filtros para ver más.',\n clearFilters: 'Limpiar filtros',\n errorTitle: 'No se pudo cargar la auditoría',\n errorText: 'El servidor no respondió como se esperaba. Inténtalo de nuevo en unos instantes.',\n retry: 'Intentar de nuevo',\n rangeTooLarge: 'El período máximo es de 31 días. Elige fechas más cercanas.',\n forbidden: 'No tienes acceso a la auditoría de una de las aplicaciones elegidas.',\n anonymous: 'Sin usuario',\n detailHeading: 'Detalle del evento',\n detailLoading: 'Cargando el detalle completo…',\n detailError: 'No se pudo cargar el detalle completo; se muestra el resumen.',\n fieldWhen: 'Cuándo',\n fieldApp: 'Aplicación',\n fieldUser: 'Usuario',\n fieldActor: 'Tipo de actor',\n fieldIp: 'IP de origen',\n fieldOperation: 'Operación',\n fieldIdentifier: 'Identificador',\n fieldMethod: 'Método',\n fieldLevel: 'Nivel',\n fieldPermission: 'Permiso',\n fieldOutcome: 'Resultado',\n fieldStatus: 'Estado HTTP',\n fieldDuration: 'Duración',\n fieldRoute: 'Ruta',\n fieldTarget: 'Objetivo',\n fieldOrigin: 'Origen',\n originEntry: 'Acción del usuario',\n originInternal: 'Llamada entre aplicaciones',\n fieldTrace: 'Trace',\n fieldEventId: 'ID del evento',\n fieldMessage: 'Mensaje',\n fieldReceivedAt: 'Recibido en',\n fieldInstance: 'Instancia del servicio',\n fieldSdk: 'SDK',\n fieldDetails: 'Detalles',\n viewTrace: 'Ver cadena (trace)',\n traceHeading: 'Cadena de la acción',\n traceLoading: 'Cargando la cadena…',\n traceError: 'No se pudo cargar la cadena.',\n traceEmpty: 'Ningún evento de esta cadena está en las aplicaciones de tu proyecto.',\n traceHidden: {\n one: '1 evento de esta cadena es de una aplicación fuera de tu proyecto y no aparece aquí.',\n other: '{count} eventos de esta cadena son de aplicaciones fuera de tu proyecto y no aparecen aquí.',\n },\n traceCurrent: 'este evento',\n openTraceEvent: 'Abrir {operation} de {time}',\n introAdmin: 'Lo que pasó en todas las aplicaciones: quién hizo qué, cuándo y con qué resultado.',\n period6h: 'Últimas 6 horas',\n refresh: 'Actualizar',\n autoRefresh: 'Actualizar cada 30 s',\n updatedAt: 'Actualizado a las {time}',\n updating: 'Actualizando…',\n filterUserId: 'ID del usuario',\n filterLevel: 'Nivel',\n filterPermission: 'Permiso',\n filterActor: 'Tipo de actor',\n filterStatus: 'Estado HTTP',\n filterTrace: 'Trace',\n userIdPlaceholder: 'UUID del usuario',\n statusPlaceholder: 'Ej.: 403',\n tracePlaceholder: '32 caracteres hexadecimales',\n levelPublic: 'Pública',\n levelPrivate: 'Privada',\n levelProtected: 'Protegida',\n levelOptional: 'Opcional',\n permissionAllowed: 'Permitido',\n permissionForbidden: 'Prohibido',\n permissionUnauthorized: 'No autenticado',\n permissionPublic: 'Pública',\n actorUser: 'Usuario',\n actorAppToken: 'Token de aplicación',\n actorApiToken: 'Token de API',\n actorPublic: 'Público',\n actorUnauthenticated: 'No autenticado',\n forbiddenAdmin: 'Tu cuenta no tiene permiso de lectura de la auditoría. Pide a un administrador las operaciones admin:audit:*.',\n invalidFilter: 'Algún filtro tiene un valor no válido. {detail}',\n kpiFilterHint: '{share} · haz clic para filtrar',\n topsRange: '{from}–{to} de {total}',\n topsPrevious: 'Página anterior de {name}',\n topsNext: 'Página siguiente de {name}',\n topsError: 'No se pudo cargar esta lista.',\n filterByTrace: 'Filtrar la tabla por este trace',\n unitLabel: 'Ver por',\n unitActions: 'Acciones',\n unitEvents: 'Eventos',\n kpiTotalActions: 'Acciones',\n kpiTotalActionsDescription: 'Cada acción cuenta una vez, con todas las etapas entre aplicaciones; el resultado es el peor de ellas.',\n timelineSummaryActions: 'Acciones por intervalo, de {from} a {to}.',\n bucketSummaryActions: '{time}: {total} acciones, {failures} con fallo, {denied} denegadas',\n timelineEmptyActions: 'Sin acciones para dibujar en el período.',\n actionsCaption: 'Acciones del período, de la más reciente a la más antigua',\n pageItemsActions: 'acciones',\n pageErrorActions: 'No se pudo cargar esta página de acciones. Inténtalo de nuevo.',\n emptyTitleActions: 'Ninguna acción en el período',\n colSpans: 'Spans',\n spansApps: 'Aplicaciones: {apps}',\n spansHidden: {\n one: 'más 1 span de una aplicación fuera de tu proyecto',\n other: 'más {count} spans de aplicaciones fuera de tu proyecto',\n },\n actionDetailHeading: 'Detalle de la acción',\n orphanNote: 'La entrada de esta acción no está en el período (o no se registró): se muestra desde su primera llamada entre aplicaciones.',\n orphanTag: 'sin entrada',\n spansHeading: 'Spans de la acción',\n spansSummary: '{count} spans en {duration}',\n spanRow: '{app}, {operation}: {outcome}, empieza en +{offset}, dura {duration}',\n },\n};\n","import { InjectionToken, Provider, computed, inject } from '@angular/core';\nimport { HermesI18nService, liveCatalog } from '@trismegisto/angular';\nimport { CatalogOverride, mergeCatalog } from '@trismegisto/primitives';\nimport { SPINE_MESSAGES_EN } from './spine-messages.en';\nimport { SPINE_MESSAGES_ES } from './spine-messages.es';\nimport { SPINE_MESSAGES_PT_BR, SpineMessages } from './spine-messages';\n\nexport type SpineMessagesOverride = CatalogOverride<SpineMessages>;\n\nexport interface SpineI18nConfig {\n /** Catálogos extras ou substitutos, por idioma (mesmas chaves do `SpineMessages`). */\n readonly catalogs?: Readonly<Record<string, SpineMessages>>;\n /** Textos avulsos sobrescritos por cima do catálogo ativo, em qualquer idioma. */\n readonly override?: SpineMessagesOverride;\n}\n\nexport const SPINE_I18N_CONFIG = new InjectionToken<SpineI18nConfig>('SPINE_I18N_CONFIG', {\n providedIn: 'root',\n factory: () => ({}),\n});\n\nconst BUILT_IN: Readonly<Record<string, SpineMessages>> = {\n 'pt-BR': SPINE_MESSAGES_PT_BR,\n en: SPINE_MESSAGES_EN,\n 'en-US': SPINE_MESSAGES_EN,\n es: SPINE_MESSAGES_ES,\n};\n\n/** Último catálogo vivo criado pelo `SPINE_MESSAGES` (ver `currentSpineMessages`). */\nlet current: SpineMessages | null = null;\n\n/**\n * Textos do spine no idioma ativo para quem não tem injeção (funções puras como o `unwrap` do\n * `@trismegisto/spine/graphql`, chamado em qualquer lugar do app). É o mesmo catálogo vivo do\n * `SPINE_MESSAGES` — segue `setLocale` — assim que o shell o injetou; antes disso, o pt-BR.\n */\nexport function currentSpineMessages(): SpineMessages {\n return current ?? SPINE_MESSAGES_PT_BR;\n}\n\n/**\n * Textos do spine no idioma ativo da lib (`HermesI18nService.locale`): uma troca de idioma com\n * `setLocale` atualiza a lib e o spine juntos, sem recarregar. Leitura igual à do `HERMES_MESSAGES`\n * (`inject(SPINE_MESSAGES).header.settings`), viva também em template.\n */\nexport const SPINE_MESSAGES = new InjectionToken<SpineMessages>('SPINE_MESSAGES', {\n providedIn: 'root',\n factory: () => {\n const i18n = inject(HermesI18nService);\n const config = inject(SPINE_I18N_CONFIG);\n const catalogs = { ...BUILT_IN, ...config.catalogs };\n const active = computed(() => {\n const base = i18n.pick(catalogs, SPINE_MESSAGES_PT_BR);\n return config.override ? mergeCatalog(config.override, base) : base;\n });\n current = liveCatalog(() => active());\n return current;\n },\n});\n\n/** Sobrescreve textos do spine e/ou acrescenta idiomas. O idioma em si vem de `provideHermesI18n`. */\nexport function provideSpineMessages(config: SpineI18nConfig): Provider {\n return { provide: SPINE_I18N_CONFIG, useValue: config };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|