@trismegisto/spine 3.0.3 → 3.0.5
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/fesm2022/{trismegisto-spine-auto-service-apps.usage-DeLfYMeO.mjs → trismegisto-spine-auto-service-apps.usage-po9Ds_SU.mjs} +21 -22
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-po9Ds_SU.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-BNtNWfiu.mjs → trismegisto-spine-auto-service-auto-service-audit.component-tfGcVR3i.mjs} +2 -2
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-BNtNWfiu.mjs.map → trismegisto-spine-auto-service-auto-service-audit.component-tfGcVR3i.mjs.map} +1 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client-picker.component-Cl7ahisu.mjs +65 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client-picker.component-Cl7ahisu.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-client.component-DXl1y6Sx.mjs → trismegisto-spine-auto-service-auto-service-client.component-DzmlpLPu.mjs} +152 -94
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-DzmlpLPu.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-delete-B1tXgMvi.mjs → trismegisto-spine-auto-service-auto-service-delete-CV_t9vxm.mjs} +3 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-CV_t9vxm.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-groups.component-C4iQ2GPX.mjs → trismegisto-spine-auto-service-auto-service-groups.component-2xCG_wS9.mjs} +11 -6
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-2xCG_wS9.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-login-attempts.component-B87vibNB.mjs → trismegisto-spine-auto-service-auto-service-login-attempts.component-CRvxfSWD.mjs} +2 -2
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-login-attempts.component-B87vibNB.mjs.map → trismegisto-spine-auto-service-auto-service-login-attempts.component-CRvxfSWD.mjs.map} +1 -1
- package/fesm2022/{trismegisto-spine-auto-service-auto-service.component-DAXv__zg.mjs → trismegisto-spine-auto-service-auto-service.component-C4FBAefe.mjs} +90 -56
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-C4FBAefe.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-client.usage-CcJANb20.mjs → trismegisto-spine-auto-service-client.usage-B16r3IHk.mjs} +16 -12
- package/fesm2022/trismegisto-spine-auto-service-client.usage-B16r3IHk.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-optional-id.validator-0JPeqhjm.mjs +20 -0
- package/fesm2022/trismegisto-spine-auto-service-optional-id.validator-0JPeqhjm.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service.mjs +7 -7
- package/fesm2022/trismegisto-spine-auto-service.mjs.map +1 -1
- package/fesm2022/trismegisto-spine.mjs +54 -3
- package/fesm2022/trismegisto-spine.mjs.map +1 -1
- package/package.json +6 -6
- package/types/trismegisto-spine-auto-service.d.ts +1 -0
- package/types/trismegisto-spine-auto-service.d.ts.map +1 -1
- package/types/trismegisto-spine.d.ts +29 -0
- package/types/trismegisto-spine.d.ts.map +1 -1
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-DeLfYMeO.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client-picker.component-DdtDk_xl.mjs +0 -51
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client-picker.component-DdtDk_xl.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-DXl1y6Sx.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-B1tXgMvi.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-C4iQ2GPX.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DAXv__zg.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-client.usage-CcJANb20.mjs.map +0 -1
|
@@ -1 +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/user-storage.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 * Recursos opcionais do painel de configurações (todos desligados sem configuração). Ver `SpineFeatures`.\n */\n features?: SpineFeatures;\n}\n\n/** Um servidor MCP do app, oferecido em Sessões › \"Conectar um agente de IA\". */\nexport interface SpineMcpServer {\n /** Nome da entrada no `.mcp.json` (ex.: `hefesto`). Letras, números, `-` e `_`. */\n name: string;\n /** URL do MCP. Relativa (`/hefesto/mcp`) é resolvida contra a origem da página. */\n url: string;\n /** Rótulo exibido (padrão: `name`). */\n label?: string;\n /** Valor de `x-mcp-scopes` no modo só leitura. Omitido: o header não vai (o MCP já é só leitura sem ele). */\n readScopes?: string;\n /** Valor de `x-mcp-scopes` no modo leitura e escrita (ex.: `deploy.*`). Omitido: o servidor só é oferecido para leitura. */\n writeScopes?: string;\n}\n\n/** Tipo de aviso que o app emite (`SpineNoticesService.notify`), ligável/desligável em Configurações › Notificações. */\nexport interface SpineNoticeType {\n /** Identificador estável (ex.: `deploy-concluido`): é a chave da preferência salva. */\n id: string;\n label: string;\n description?: string;\n /** Ligado enquanto a pessoa não escolher. Padrão: `true`. */\n defaultEnabled?: boolean;\n}\n\n/**\n * Recursos opcionais do painel de configurações. Cada um só aparece quando ligado aqui (e, quando depende do Argos,\n * com a API da conta disponível — `AUTH_CONFIG` com `authority`/`realmId`).\n */\nexport interface SpineFeatures {\n /** Sessões › \"Conectar um agente de IA\": gera um token de aplicação e a configuração MCP pronta para colar.\n * Precisa de `SPINE_ADMIN_API` (tokens de aplicação). */\n aiAgent?: { servers: readonly SpineMcpServer[] };\n /** MFA › \"Atividade da conta\": entradas e tentativas que falharam desta conta (últimos 90 dias, API da conta). */\n accountActivity?: boolean;\n /** Conta › \"Encerrar por inatividade\". `true` = opções padrão; `{ min, max }` limita os minutos (com `max` a\n * opção \"Nunca\" some e a escolha é limitada a ele). */\n idleTimeout?: boolean | { min?: number; max?: number };\n /** Conta › \"Tela inicial\": início, um favorito ou a última tela visitada, aplicada depois do login. */\n startPage?: boolean;\n /** Conta › \"Crachá padrão\": o nível de acesso com que o login entra (guardado no Argos, vale nos outros navegadores). */\n defaultBadge?: boolean;\n /** Configurações › Notificações: os tipos de aviso que o app emite e o aviso do navegador com a aba em segundo plano. */\n notices?: { types: readonly SpineNoticeType[] };\n /** Preferências (aparência, região, acessibilidade, favoritos, tela inicial…) guardadas também na conta do Argos,\n * para acompanharem a pessoa em qualquer navegador. Sem a API da conta, ficam só no navegador. */\n accountPreferences?: 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, HermesMotionService, HermesShortcutService, HermesZoomService } from '@trismegisto/angular';\nimport { HermesMotionPreference, TimeHourCycle, Weekday, normalizeMotionPreference, normalizeTextScale } from '@trismegisto/primitives';\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 TEXT_SCALE_SUFFIX = 'text_scale';\nconst MOTION_SUFFIX = 'motion';\nconst HOUR_CYCLE_SUFFIX = 'hour_cycle';\nconst WEEK_START_SUFFIX = 'week_start';\nconst IDLE_SUFFIX = 'idle_minutes';\nconst START_PAGE_SUFFIX = 'start_page';\nconst NOTICES_SUFFIX = 'notices';\nconst BROWSER_NOTICES_SUFFIX = 'browser_notices';\n\n/** Minutos de inatividade oferecidos em \"Encerrar por inatividade\" (0 = nunca). */\nexport const SPINE_IDLE_OPTIONS: readonly number[] = [0, 5, 15, 30, 60];\n\n/**\n * Tela inicial depois do login: `home` (a padrão do app), `last` (a última visitada) ou `fav:<id>` (um favorito,\n * pelo `id` do `SpineQuickAccessService`).\n */\nexport type SpineStartPagePreference = 'home' | 'last' | `fav:${string}`;\n\n/** Relógio escolhido em Região: vazio = o do idioma. */\nexport type SpineHourCyclePreference = '' | TimeHourCycle;\n/** Primeiro dia da semana escolhido em Região: `null` = o do idioma. */\nexport type SpineWeekStartPreference = Weekday | null;\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, relógio de\n * 12/24 h e primeiro dia da semana (`HermesI18nService.setRegionalFormat`), tamanho do texto\n * (`HermesZoomService.setTextScale`), movimento (`HermesMotionService.setPreference`) e o interruptor dos\n * atalhos de tecla única (WCAG 2.1.4) do `HermesShortcutService`.\n *\n * Também guarda as preferências dos recursos opcionais (`SpineFeatures`): minutos de inatividade, tela inicial,\n * tipos de aviso ligados e o aviso do navegador.\n *\n * Vive no navegador (localStorage, sincronizado entre abas). Com `SpineFeatures.accountPreferences`, o\n * `SpineAccountPreferencesService` (`@trismegisto/spine/layout`) espelha estes valores na conta do Argos e os aplica\n * pelos mesmos `set*` no login: quem lê `timeZone()` 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 textScaleKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${TEXT_SCALE_SUFFIX}`;\n private readonly motionKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${MOTION_SUFFIX}`;\n private readonly hourCycleKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${HOUR_CYCLE_SUFFIX}`;\n private readonly weekStartKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${WEEK_START_SUFFIX}`;\n private readonly shortcuts = inject(HermesShortcutService);\n private readonly i18n = inject(HermesI18nService);\n private readonly zoom = inject(HermesZoomService);\n private readonly motionService = inject(HermesMotionService);\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 /** Tamanho do texto (1 = 100%; os oferecidos em `HERMES_TEXT_SCALES`). */\n readonly textScale = signal(normalizeTextScale(this.read(this.textScaleKey)));\n\n /** Movimento: `system` segue o `prefers-reduced-motion`; `reduce` sempre reduz; `full` nunca. */\n readonly motion = signal<HermesMotionPreference>(normalizeMotionPreference(this.read(this.motionKey)));\n\n /** Relógio: `h23` (24 horas), `h12` (12 horas) ou vazio (o do idioma). */\n readonly hourCycle = signal<SpineHourCyclePreference>(toHourCycle(this.read(this.hourCycleKey)));\n\n /** Primeiro dia da semana (0 = domingo, 1 = segunda) ou `null` (o do idioma). */\n readonly weekStart = signal<SpineWeekStartPreference>(toWeekStart(this.read(this.weekStartKey)));\n\n private readonly idleKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${IDLE_SUFFIX}`;\n private readonly startPageKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${START_PAGE_SUFFIX}`;\n private readonly noticesKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${NOTICES_SUFFIX}`;\n private readonly browserNoticesKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${BROWSER_NOTICES_SUFFIX}`;\n\n /** Encerrar a sessão depois de tantos minutos sem uso (0 = nunca). Os limites do app (`SpineFeatures.idleTimeout`)\n * são aplicados por quem usa o valor (`SpineIdleService`), não aqui. */\n readonly idleMinutes = signal(toIdleMinutes(this.read(this.idleKey)));\n\n /** Tela que abre depois do login. */\n readonly startPage = signal<SpineStartPagePreference>(toStartPage(this.read(this.startPageKey)));\n\n /** Tipos de aviso que a pessoa ligou/desligou (`id` → ligado); tipo ausente segue o `defaultEnabled` dele. */\n readonly noticeTypes = signal<Readonly<Record<string, boolean>>>(toNoticeTypes(this.read(this.noticesKey)));\n\n /** Aviso do navegador (Notification API) quando a aba está em segundo plano. */\n readonly browserNotices = signal(this.read(this.browserNoticesKey) === 'on');\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 if (e.data?.type === 'TEXT_SCALE_CHANGED') this.applyTextScale(normalizeTextScale(e.data.value));\n if (e.data?.type === 'MOTION_CHANGED') this.applyMotion(normalizeMotionPreference(e.data.value));\n if (e.data?.type === 'HOUR_CYCLE_CHANGED') this.applyRegionalFormat(toHourCycle(e.data.value), this.weekStart());\n if (e.data?.type === 'WEEK_START_CHANGED') this.applyRegionalFormat(this.hourCycle(), toWeekStart(e.data.value));\n if (e.data?.type === 'IDLE_CHANGED') this.idleMinutes.set(toIdleMinutes(e.data.value));\n if (e.data?.type === 'START_PAGE_CHANGED') this.startPage.set(toStartPage(e.data.value));\n if (e.data?.type === 'NOTICES_CHANGED') this.noticeTypes.set(toNoticeTypes(JSON.stringify(e.data.value ?? {})));\n if (e.data?.type === 'BROWSER_NOTICES_CHANGED') this.browserNotices.set(e.data.value === true);\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.textScale() !== 1) this.zoom.setTextScale(this.textScale());\n if (this.motion() !== 'system') this.motionService.setPreference(this.motion());\n if (this.hourCycle() || this.weekStart() !== null) this.applyRegionalFormat(this.hourCycle(), this.weekStart());\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 /** Tamanho do texto na hora (1 = 100%), guarda e avisa as outras abas. */\n setTextScale(value: number): void {\n const scale = normalizeTextScale(value);\n this.applyTextScale(scale);\n this.write(this.textScaleKey, scale === 1 ? '' : String(scale));\n this.channel?.postMessage({ type: 'TEXT_SCALE_CHANGED', value: scale });\n }\n\n private applyTextScale(scale: number): void {\n this.textScale.set(scale);\n this.zoom.setTextScale(scale);\n }\n\n /** Movimento na hora (`system`/`reduce`/`full`), guarda e avisa as outras abas. */\n setMotion(value: HermesMotionPreference): void {\n const motion = normalizeMotionPreference(value);\n this.applyMotion(motion);\n this.write(this.motionKey, motion === 'system' ? '' : motion);\n this.channel?.postMessage({ type: 'MOTION_CHANGED', value: motion });\n }\n\n private applyMotion(motion: HermesMotionPreference): void {\n this.motion.set(motion);\n this.motionService.setPreference(motion);\n }\n\n /** Relógio na hora (`h23`/`h12`; vazio = o do idioma), guarda e avisa as outras abas. */\n setHourCycle(value: SpineHourCyclePreference): void {\n const cycle = toHourCycle(value);\n this.applyRegionalFormat(cycle, this.weekStart());\n this.write(this.hourCycleKey, cycle);\n this.channel?.postMessage({ type: 'HOUR_CYCLE_CHANGED', value: cycle });\n }\n\n /** Primeiro dia da semana na hora (0 = domingo, 1 = segunda; `null` = o do idioma), guarda e avisa. */\n setWeekStart(value: SpineWeekStartPreference): void {\n const day = toWeekStart(value);\n this.applyRegionalFormat(this.hourCycle(), day);\n this.write(this.weekStartKey, day === null ? '' : String(day));\n this.channel?.postMessage({ type: 'WEEK_START_CHANGED', value: day });\n }\n\n private applyRegionalFormat(hourCycle: SpineHourCyclePreference, weekStart: SpineWeekStartPreference): void {\n this.hourCycle.set(hourCycle);\n this.weekStart.set(weekStart);\n this.i18n.setRegionalFormat({ hourCycle: hourCycle || null, firstDayOfWeek: weekStart });\n }\n\n /** Minutos sem uso até encerrar a sessão (0 = nunca), guarda e avisa as outras abas. */\n setIdleMinutes(value: number): void {\n const minutes = toIdleMinutes(value);\n this.idleMinutes.set(minutes);\n this.write(this.idleKey, minutes ? String(minutes) : '');\n this.channel?.postMessage({ type: 'IDLE_CHANGED', value: minutes });\n }\n\n /** Tela inicial depois do login, guarda e avisa as outras abas. */\n setStartPage(value: SpineStartPagePreference): void {\n const page = toStartPage(value);\n this.startPage.set(page);\n this.write(this.startPageKey, page === 'home' ? '' : page);\n this.channel?.postMessage({ type: 'START_PAGE_CHANGED', value: page });\n }\n\n /** Liga/desliga um tipo de aviso, guarda e avisa as outras abas. */\n setNoticeType(id: string, enabled: boolean): void {\n this.setNoticeTypes({ ...this.noticeTypes(), [id]: enabled });\n }\n\n /** Troca o mapa inteiro de tipos de aviso (restaurar, sincronização com a conta). */\n setNoticeTypes(value: Readonly<Record<string, boolean>>): void {\n const types = toNoticeTypes(JSON.stringify(value ?? {}));\n this.noticeTypes.set(types);\n this.write(this.noticesKey, Object.keys(types).length ? JSON.stringify(types) : '');\n this.channel?.postMessage({ type: 'NOTICES_CHANGED', value: types });\n }\n\n /** Liga/desliga o aviso do navegador, guarda e avisa as outras abas (a permissão é pedida por quem chama). */\n setBrowserNotices(enabled: boolean): void {\n this.browserNotices.set(enabled);\n this.write(this.browserNoticesKey, enabled ? 'on' : '');\n this.channel?.postMessage({ type: 'BROWSER_NOTICES_CHANGED', value: enabled });\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\nfunction toIdleMinutes(value: unknown): number {\n const minutes = Number(value);\n return Number.isInteger(minutes) && minutes > 0 && minutes <= 24 * 60 ? minutes : 0;\n}\n\nfunction toStartPage(value: unknown): SpineStartPagePreference {\n if (value === 'last') return 'last';\n if (typeof value === 'string' && value.startsWith('fav:') && value.length > 4 && value.length <= 500) return value as `fav:${string}`;\n return 'home';\n}\n\n/** Texto JSON salvo → mapa `id` → booleano (o resto é descartado). */\nfunction toNoticeTypes(raw: string): Record<string, boolean> {\n let parsed: unknown;\n try { parsed = raw ? JSON.parse(raw) : {}; } catch { return {}; }\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return {};\n const out: Record<string, boolean> = {};\n for (const [id, enabled] of Object.entries(parsed as Record<string, unknown>)) {\n if (typeof enabled === 'boolean' && /^[\\w.:-]{1,64}$/.test(id)) out[id] = enabled;\n }\n return out;\n}\n\nfunction toHourCycle(value: unknown): SpineHourCyclePreference {\n return value === 'h12' || value === 'h23' ? value : '';\n}\n\n/** `0`…`6` (número ou texto salvo) → dia da semana; o resto, `null`. */\nfunction toWeekStart(value: unknown): SpineWeekStartPreference {\n if (value === null || value === undefined || value === '') return null;\n const day = Number(value);\n return Number.isInteger(day) && day >= 0 && day <= 6 ? (day as Weekday) : null;\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, Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { AuthorizationService } from '@orfeu/angular/core';\nimport { SPINE_CONFIG } from './app-config.token';\n\n/** Listas do shell guardadas no navegador, por usuário. */\nexport const SPINE_USER_STORAGE_KEYS = {\n favorites: 'nav_favorites',\n recents: 'nav_recent',\n recentSearches: 'header_recent_searches',\n /** Última tela visitada, guardada só com a tela inicial \"Última tela visitada\" (`SpineStartPageService`). */\n lastPage: 'start_last_page',\n} as const;\n\nexport type SpineUserStorageKey = (typeof SPINE_USER_STORAGE_KEYS)[keyof typeof SPINE_USER_STORAGE_KEYS];\n\n/** Históricos (o que a pessoa visitou/buscou): apagados no logout. Favoritos ficam (preferência do usuário). */\nconst HISTORY_KEYS: readonly SpineUserStorageKey[] = [SPINE_USER_STORAGE_KEYS.recents, SPINE_USER_STORAGE_KEYS.recentSearches];\n// A última tela (`lastPage`) fica no logout de propósito: é ela que a tela inicial \"Última tela visitada\" abre no\n// próximo login. Só é gravada quando a pessoa escolheu essa opção.\n\n/**\n * Chaves de `localStorage` do shell por usuário: `<clientId>_<lista>_<sub>`, com o `sub` do token da sessão.\n * Num computador compartilhado, uma pessoa não vê os recentes/buscas/favoritos de quem entrou antes.\n *\n * - Sem `sub` (sem sessão, ou app sem `@orfeu/angular`) a chave é a antiga, `<clientId>_<lista>`.\n * - Com `sub`, a chave antiga sem usuário é apagada (era compartilhada entre todas as contas do navegador).\n * - No logout (`clearHistory()`, chamado pelo `SpineLogoutService` só quando o `logout()` deu certo, e o `isAuth$`\n * indo para `false`, que cobre o logout vindo de outra aba) os HISTÓRICOS do usuário saem; os favoritos ficam.\n * Logout que falhou no Argos (`@orfeu/angular` 1.3.x) mantém a sessão e os históricos.\n */\n@Injectable({ providedIn: 'root' })\nexport class SpineUserStorage {\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly auth = inject(AuthorizationService, { optional: true });\n private readonly ns = inject(SPINE_CONFIG, { optional: true })?.clientId || 'app';\n private readonly listeners = new Set<() => void>();\n /** Último usuário visto: o token some no logout, mas a limpeza precisa saber de quem era. */\n private lastUser = '';\n\n constructor() {\n const isAuth$ = (this.auth as { isAuth$?: { subscribe(next: (v: boolean) => void): { unsubscribe(): void } } } | null)?.isAuth$;\n if (!this.browser || !isAuth$?.subscribe) return;\n let was = false;\n const sub = isAuth$.subscribe((authenticated) => {\n if (was && !authenticated) this.clearHistory();\n was = authenticated;\n this.notify();\n });\n inject(DestroyRef).onDestroy(() => sub.unsubscribe());\n }\n\n /** `sub` do token da sessão (só leitura do payload); vazio sem sessão. */\n userId(): string {\n let token: string | null | undefined;\n try {\n token = this.auth?.getToken();\n } catch {\n token = null;\n }\n const sub = token ? decodeSub(token) : '';\n if (sub) this.lastUser = sub;\n return sub;\n }\n\n /** Chave de `localStorage` da lista para o usuário atual. */\n key(list: SpineUserStorageKey): string {\n const user = this.userId();\n const legacy = `${this.ns}_${list}`;\n if (!user) return legacy;\n this.dropLegacy(legacy);\n return `${legacy}_${user}`;\n }\n\n /** Apaga buscas recentes e páginas recentes do usuário (o atual ou o último visto). Favoritos ficam. */\n clearHistory(): void {\n if (!this.browser) return;\n const user = this.userId() || this.lastUser;\n for (const list of HISTORY_KEYS) {\n try {\n localStorage.removeItem(user ? `${this.ns}_${list}_${user}` : `${this.ns}_${list}`);\n } catch {\n /* storage indisponível */\n }\n }\n this.notify();\n }\n\n /**\n * Apaga uma lista do usuário atual (Configurações › Dados do navegador): a chave dele, e também a antiga sem\n * usuário. Quem guarda a lista em memória relê (`onChange`).\n */\n clear(list: SpineUserStorageKey): void {\n if (!this.browser) return;\n try {\n localStorage.removeItem(this.key(list));\n localStorage.removeItem(`${this.ns}_${list}`);\n } catch {\n /* storage indisponível */\n }\n this.notify();\n }\n\n /** Quantos itens a lista do usuário atual tem guardados (0 sem nada ou com valor ilegível). */\n count(list: SpineUserStorageKey): number {\n if (!this.browser) return 0;\n try {\n const parsed: unknown = JSON.parse(localStorage.getItem(this.key(list)) ?? '[]');\n return Array.isArray(parsed) ? parsed.length : 0;\n } catch {\n return 0;\n }\n }\n\n /** Avisa quando a sessão muda ou o histórico é limpo (quem guarda a lista em memória relê). */\n onChange(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n private notify(): void {\n for (const listener of [...this.listeners]) listener();\n }\n\n private dropLegacy(key: string): void {\n if (!this.browser) return;\n try {\n if (localStorage.getItem(key) !== null) localStorage.removeItem(key);\n } catch {\n /* storage indisponível */\n }\n }\n}\n\nfunction decodeSub(token: string): string {\n const payload = token.split('.')[1];\n if (!payload) return '';\n try {\n const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/').padEnd(Math.ceil(payload.length / 4) * 4, '='));\n const sub = (JSON.parse(json) as Record<string, unknown>)['sub'];\n return typeof sub === 'string' ? sub : '';\n } catch {\n return '';\n }\n}\n","import { DestroyRef, Injectable, PLATFORM_ID, WritableSignal, computed, inject, signal } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { SPINE_USER_STORAGE_KEYS, SpineUserStorage } from './user-storage';\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 and per user in `localStorage` (`SpineUserStorage`: `<clientId>_nav_favorites_<sub>`).\n * Recents are cleared on logout; switching users reloads both lists.\n */\n@Injectable({ providedIn: 'root' })\nexport class SpineQuickAccessService {\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly storage = inject(SpineUserStorage);\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() {\n if (!this.browser) return;\n\n this.reload();\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 // Sessão mudou (logout, outra conta) ou histórico limpo: relê as listas do usuário atual.\n const stop = this.storage.onChange(() => this.reload());\n inject(DestroyRef).onDestroy(() => {\n window.removeEventListener('storage', onStorage);\n stop();\n });\n }\n\n private get favoritesKey(): string {\n return this.storage.key(SPINE_USER_STORAGE_KEYS.favorites);\n }\n\n private get recentsKey(): string {\n return this.storage.key(SPINE_USER_STORAGE_KEYS.recents);\n }\n\n private reload(): void {\n this.favoriteList.set(this.load(this.favoritesKey));\n this.recentList.set(this.load(this.recentsKey));\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 /** Troca a lista de favoritos inteira (sincronização com a conta). Itens inválidos ou repetidos são descartados. */\n setFavorites(items: readonly unknown[]): void {\n const seen = new Set<string>();\n const next = items.flatMap((entry) => {\n const item = normalize(entry);\n if (!item || seen.has(item.id)) return [];\n seen.add(item.id);\n return [item];\n });\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. Os que têm parâmetro saem por\n * `formatMessageHtml` (`@trismegisto/primitives`), que escapa o valor (o `check-strings` reprova `fmt` ali).\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 /** Detalhe de cada modo do menu lateral (toggletip ao lado do rótulo). */\n sidebarHelp: 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 /** Formato de hora (Região): automático pelo idioma, 24 ou 12 horas. `{now}` = hora agora no formato. */\n hourCycle: string;\n hourCycleHint: string;\n hourCycleKeywords: string;\n hourCycleAuto: string;\n hourCycle24: string;\n hourCycle12: string;\n /** Primeiro dia da semana (Região); domingo e segunda saem do `Intl`, no idioma. */\n weekStart: string;\n weekStartDescription: string;\n weekStartKeywords: string;\n weekStartAuto: string;\n shortcuts: string;\n shortcutsDescription: string;\n shortcutsKeywords: string;\n tour: string;\n tourDescription: string;\n tourKeywords: string;\n replayTour: string;\n /** Seção \"Acessibilidade\" (`?settings=acessibilidade`). */\n accessibility: string;\n accessibilityKeywords: string;\n textSize: string;\n textSizeDescription: string;\n textSizeKeywords: string;\n motion: string;\n motionDescription: string;\n motionKeywords: string;\n motionSystem: string;\n motionReduce: string;\n motionFull: string;\n /** Seção \"Ajuda\" (`?settings=ajuda`): novidades e tour. */\n help: string;\n helpKeywords: string;\n news: string;\n newsDescription: string;\n newsKeywords: string;\n showNews: string;\n /** Seção \"Dados do navegador\" (`?settings=dados`): listas guardadas e restaurar preferências. */\n browserData: string;\n browserDataDescription: string;\n browserDataKeywords: string;\n recentPages: string;\n recentPagesKeywords: string;\n recentSearches: string;\n recentSearchesKeywords: string;\n favorites: string;\n favoritesKeywords: string;\n /** Quantos itens a lista guarda (descrição da linha). */\n pagesCount: PluralMessage;\n searchesCount: PluralMessage;\n clear: string;\n confirmClear: string;\n cancel: string;\n recentPagesCleared: string;\n recentSearchesCleared: string;\n favoritesCleared: string;\n restorePreferences: string;\n restorePreferencesDescription: string;\n /** O que volta ao padrão e o que fica (toggletip ao lado do rótulo). */\n restorePreferencesHelp: string;\n restorePreferencesKeywords: string;\n restore: string;\n confirmRestore: string;\n preferencesRestored: 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 /** Nome acessível do toggletip de ajuda de uma linha; `{label}` é o rótulo da linha. */\n moreAbout: string;\n appTokens: string;\n appTokensDescription: string;\n appTokensKeywords: string;\n /** Detalhe dos tokens de aplicação (toggletip ao lado do rótulo). */\n appTokensHelp: string;\n logout: string;\n logoutDescription: string;\n logoutKeywords: string;\n /** Seção \"MFA\" (`?settings=mfa`; a antiga `seguranca` também abre). */\n mfa: string;\n mfaDescription: string;\n mfaKeywords: string;\n signedInAccount: string;\n /** `{realm}` = realm do Argos (nome ou id, como o app usa no login). */\n signedInRealm: string;\n twoFactor: string;\n twoFactorDescription: string;\n twoFactorKeywords: string;\n recoveryCodes: string;\n recoveryCodesDescription: string;\n recoveryCodesKeywords: string;\n /** Linha \"Sessões e dispositivos\" (dentro da seção Sessões). */\n sessions: string;\n sessionsDescription: string;\n sessionsKeywords: string;\n /** Seção \"Sessões\" (`?settings=sessoes`): sessão, token de acesso, tokens de aplicação, sessões e dispositivos. */\n sessionsSection: string;\n sessionsSectionDescription: string;\n sessionsSectionKeywords: 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 accountSecurity: {\n loading: string;\n loadError: string;\n /** A sessão do token acabou (encerrada em outro lugar, usuário desativado). */\n sessionEnded: string;\n retry: string;\n methodTotp: string;\n methodEmail: string;\n methodSms: string;\n active: string;\n /** `{detail}` = e-mail mascarado. */\n activeWithDetail: string;\n notRegistered: string;\n unavailable: string;\n requiredHint: string;\n add: string;\n replaceDevice: string;\n remove: string;\n cancel: string;\n confirm: string;\n /** `{method}`. */\n removeTitle: string;\n removeHint: string;\n removeLastHint: string;\n reauthTitle: string;\n reauthHint: string;\n reauthHow: string;\n reauthPassword: string;\n reauthRecoveryCode: string;\n currentPassword: string;\n passwordRequired: string;\n recoveryCode: string;\n recoveryCodePlaceholder: string;\n recoveryCodeRequired: string;\n recoveryCodeLength: string;\n sendEmailCode: string;\n sixDigitCode: string;\n totpTitle: string;\n qrAlt: string;\n manualKey: string;\n appCode: string;\n emailTitle: string;\n email: string;\n emailPlaceholder: string;\n emailRequired: string;\n emailInvalid: string;\n sendCode: string;\n emailCodeTitle: string;\n /** `{email}`. */\n emailCodeHint: string;\n codesRemaining: PluralMessage;\n codesHint: string;\n codesNeedMethod: string;\n generateCodes: string;\n regenerateCodes: string;\n codesTitle: string;\n codesShownOnce: string;\n copyCodes: string;\n downloadCodes: string;\n codesCopied: string;\n copyFailed: string;\n codesSaved: string;\n /** Primeira linha do .txt baixado/copiado. */\n codesFileHeader: string;\n codesFileName: string;\n notices: {\n methodAdded: string;\n deviceReplaced: string;\n methodRemoved: string;\n codesRegenerated: string;\n reauthCodeSent: string;\n };\n /** Por código de erro da API da conta do Argos; `generic` para o resto. */\n errors: {\n generic: string;\n network: string;\n login_required: string;\n invalid_token: string;\n reauthentication_required: string;\n invalid_password: string;\n account_locked: string;\n invalid_code: string;\n invalid_recovery_code: string;\n code_expired: string;\n code_not_requested: string;\n too_many_attempts: string;\n too_many_requests: string;\n mfa_method_not_allowed: string;\n mfa_method_not_found: string;\n mfa_last_method: string;\n invalid_email: string;\n enrollment_not_started: string;\n sms_not_available: string;\n mfa_required_for_recovery_codes: string;\n session_not_found: string;\n };\n sessionsEmpty: string;\n thisSession: string;\n thisBrowser: string;\n appsOnly: string;\n /** `{ip}`, `{date}`. */\n sessionDetail: string;\n unknownIp: string;\n /** `{date}`. */\n sessionSince: string;\n /** `{apps}`. */\n sessionApps: string;\n unnamedApp: string;\n endSession: string;\n confirmEndSession: string;\n endOthers: string;\n endOthersConfirm: PluralMessage;\n sessionEndedNotice: string;\n othersEndedNotice: PluralMessage;\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 /** `logout()` que o Argos não confirmou (o `@orfeu/angular` repetiu uma vez): a sessão continua. */\n logoutFailed: 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 /** Botão \"Consultar\" ao lado dos seletores de Grupos e Aplicações. */\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]`. Sem client: a pessoa não administra o app em que está logada. */\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 /** Placeholder do seletor de grupo (Grupos, depois do nível de acesso). */\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 /** @deprecated não é mais exibido (a tela Aplicações lista as aplicações numa tabela, sem \"Consultar\"). */\n appsSearchIntro: string;\n secretCreated: string;\n /** Rótulo do seletor de aplicação (Aplicações, com \"Consultar\"). */\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/Tokens). */\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 /** Coluna e campo do roteador: tipos de grupo (crachás) que podem receber acesso à tela (`allowed_type_ids`). */\n colAllowedBadges: string;\n /** Roteador sem restrição de crachá (`allowed_type_ids` vazio); também o placeholder do campo. */\n anyBadge: string;\n allowedBadgesHint: 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 /** Confirmação das exclusões (diálogo): título e mensagem; `{name}`, `{path}` ou `{group}`. */\n /**\n * \"Gerar novo segredo\" de uma aplicação: botão, confirmação, a janela que mostra o segredo uma vez\n * (`{name}` = nome da aplicação), copiar e os erros (genérico, 404 e 403).\n */\n rotateSecret: string;\n confirmRotateSecretHeading: string;\n confirmRotateSecret: string;\n rotatedSecretHeading: string;\n rotatedSecretWarning: string;\n rotatedSecretNote: string;\n rotatedSecretLabel: string;\n copySecret: string;\n secretCopied: string;\n rotatedSecretDone: string;\n rotateSecretError: string;\n rotateSecretNotFound: string;\n rotateSecretForbidden: string;\n confirmDeleteAppHeading: string;\n confirmDeleteApp: string;\n confirmDeleteRouteHeading: string;\n confirmDeleteRoute: string;\n confirmDeleteRouterHeading: string;\n confirmDeleteRouter: string;\n confirmRemoveAccessHeading: string;\n confirmRemoveAccess: string;\n confirmRemoveConsumerHeading: string;\n confirmRemoveConsumer: string;\n /** Toasts depois de excluir/remover. */\n deleteDone: string;\n deleteError: string;\n colExcludable: string;\n excludableYes: string;\n excludableNo: string;\n colName: string;\n colDisplay: string;\n colIcon: string;\n colPath: string;\n /** Botão da aba Roteadores e título do modal que muda a ordem dos itens no menu do app. */\n reorder: string;\n reorderTitle: string;\n reorderHint: string;\n /** Nome acessível da trilha de níveis do modal e o primeiro degrau (o topo do menu). */\n reorderPath: string;\n reorderRoot: string;\n /** `{name}`: nome acessível da lista ordenável do nível aberto (ou o topo, `reorderRoot`). */\n reorderListLabel: string;\n reorderEmpty: string;\n /** `{name}`. */\n moveUp: string;\n moveDown: string;\n openLevel: string;\n childCount: PluralMessage;\n /** `{name}`, `{position}`, `{total}`: anúncio da região viva depois de mover por botão. */\n movedTo: string;\n reorderLoadError: string;\n reorderSaveError: string;\n reorderSave: string;\n /** Tela Grupos: lista dos grupos do projeto, criar/editar/excluir. */\n newGroup: string;\n editGroup: string;\n /** @deprecated não é mais exibido (a tela Grupos voltou ao seletor de nível + grupo, sem tabela). */\n groupsCaption: string;\n noGroups: string;\n /** Tela Grupos: primeiro seletor (o tipo do grupo, do nível mais alto para o mais baixo). */\n accessLevel: string;\n pickAccessLevel: string;\n /** Opção do seletor de nível para os grupos sem tipo. */\n noLevel: string;\n /** Nível escolhido sem nenhum grupo. */\n noGroupsOfLevel: string;\n colStatus: string;\n groupName: string;\n groupType: string;\n groupTypePlaceholder: string;\n groupDescription: string;\n /** @deprecated não é mais exibido (a tela Grupos voltou ao seletor, sem tabela). */\n openGroup: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupTag: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupNote: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupEditNote: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupLastMemberWarning: string;\n /** Confirmação da exclusão; `{name}`. */\n confirmDeleteGroupHeading: string;\n confirmDeleteGroup: string;\n groupSaveError: string;\n membersSaveError: string;\n /**\n * Erros do argos-admin-server nos grupos e acessos do auto-serviço, pelo código (`error`) da resposta\n * (ver `autoServiceErrorText`). `groupNotFound` é o 404 de grupo de outro projeto.\n */\n /** @deprecated não é mais exibido (a tela Aplicações voltou ao seletor + \"Consultar\", sem tabela). */\n appsCaption: string;\n /** Tela Aplicações: o projeto ainda não tem aplicação (embaixo do seletor). */\n noApps: string;\n /** @deprecated não é mais exibido (a tela Aplicações voltou ao seletor, sem tabela). */\n colGrants: string;\n /** @deprecated não é mais exibido (a tela Aplicações voltou ao seletor, sem tabela). */\n openApp: string;\n /** Aba Tokens da aplicação: tokens de API (`x-api-token`), criar e revogar. */\n tabTokens: string;\n tokensCaption: string;\n noTokens: string;\n newToken: string;\n colTokenPrefix: string;\n colExpiresAt: string;\n colLastUsed: string;\n tokenExpired: string;\n tokenRevoked: string;\n neverUsed: string;\n revokeToken: string;\n confirmRevokeTokenHeading: string;\n /** `{name}`. */\n confirmRevokeToken: string;\n /** `{name}`. */\n tokenRevokedDone: string;\n tokenRevokeError: string;\n tokensLoadError: string;\n /** Modal \"Novo token\": campos, validade (de amanhã a 365 dias) e as operações liberadas ao token. */\n tokenName: string;\n tokenDescription: string;\n tokenExpiresAt: string;\n tokenExpiresHint: string;\n tokenExpiresInvalid: string;\n tokenOperations: string;\n tokenOperationsNote: string;\n /** Grupo: por que a operação não depende de permissão (public/optional, private, outro nível). No \"Gerenciar operações\"\n * entra só no nome acessível da operação (leitor de tela), não aparece ao lado dela. */\n freeForAll: string;\n freeForAuthenticated: string;\n freeNoPermission: string;\n /** Token: operação public (caixa desmarcada e desabilitada; o token não precisa dela). Aparece no \"Novo token\"; no\n * \"Gerenciar operações\" entra só no nome acessível. */\n publicNoToken: string;\n createToken: string;\n tokenSaveError: string;\n /** O token criado, mostrado uma única vez; `{name}` = nome do token. */\n tokenCreatedHeading: string;\n tokenCreatedWarning: string;\n tokenCreatedNote: string;\n tokenValueLabel: string;\n copyToken: string;\n tokenCopied: string;\n /** Roteadores: a hierarquia é de cima para baixo (cada nível só com o de cima escolhido). */\n hierarchyHint: string;\n routerSaveError: string;\n /** \"Gerenciar operações\" (grupo ou token): falha ao gravar alguma liberação/retirada. */\n permissionsSaveError: string;\n /** \"Gerenciar operações\": resumo no topo (`{marked}` de `{total}` escolhíveis liberadas), grupo e token. */\n permissionsSummaryGroup: string;\n permissionsSummaryToken: string;\n /** Resumo das operações travadas (não dependem de permissão): grupo (aparecem marcadas) e token (public). */\n permissionsFreeGroup: PluralMessage;\n permissionsFreeToken: PluralMessage;\n /** Contador da pasta da árvore: `{marked}` de `{total}` operações escolhíveis dentro dela. */\n permissionsFolderCount: string;\n /** Nome acessível da árvore de operações. */\n permissionsTreeLabel: string;\n /** Erros do argos-admin-server nos tokens de aplicação, pelo código (`error`) da resposta (ver `autoServiceErrorText`). */\n tokenErrors: {\n invalidExpiresAt: string;\n invalidValidity: string;\n invalidOperationIds: string;\n /** `operation_not_protected`: grupo só recebe operação protected. */\n operationNotProtected: string;\n /** `operation_public`: operação public não se libera a token. */\n operationPublic: string;\n appNotFound: string;\n tokenNotFound: string;\n };\n /** Erros do argos-admin-server nos roteadores (`router_hierarchy_gap`: nível sem o nível de cima). */\n routerErrors: {\n hierarchyGap: string;\n /** Algum id de `allowed_type_ids` não é tipo de grupo do realm. */\n invalidAllowedTypes: string;\n };\n groupErrors: {\n invalidType: string;\n adminTypeReserved: string;\n emptyUpdate: string;\n groupProjectImmutable: string;\n groupNameTaken: string;\n adminGroupImmutable: string;\n adminGroupProtected: string;\n adminGroupLastMember: string;\n adminGroupAccessProtected: string;\n groupNotFound: string;\n };\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 /** Tela Tentativas de login (`SpineLoginAttemptsComponent`, `@trismegisto/spine/audit`). */\n /** Recursos opcionais do painel de configurações (`SpineFeatures`). */\n accountFeatures: {\n aiAgent: string;\n aiAgentDescription: string;\n aiAgentKeywords: string;\n aiAgentHelp: string;\n aiAgentStart: string;\n aiAgentServers: string;\n aiAgentAccess: string;\n aiAgentReadOnly: string;\n aiAgentReadWrite: string;\n aiAgentWriteHint: string;\n aiAgentReadOnlyServer: string;\n aiAgentTokenName: string;\n aiAgentGenerate: string;\n aiAgentSelectServer: string;\n aiAgentResult: string;\n aiAgentResultHint: string;\n aiAgentCopy: string;\n aiAgentCopied: string;\n aiAgentDone: string;\n aiAgentCreateError: string;\n aiAgentUnavailable: string;\n activity: string;\n activityDescription: string;\n activityKeywords: string;\n activityFilter: string;\n activityAll: string;\n activityFailures: string;\n activityDetail: string;\n activityApp: string;\n activityEmpty: string;\n activityMore: string;\n activityShowing: string;\n activityLoadError: string;\n unknownIp: string;\n unknownApp: string;\n idle: string;\n idleDescription: string;\n idleKeywords: string;\n idleNever: string;\n idleOption: string;\n idleLimitHint: string;\n idleWarningHeading: string;\n idleWarningText: PluralMessage;\n idleStay: string;\n idleLogout: string;\n startPage: string;\n startPageDescription: string;\n startPageKeywords: string;\n startHome: string;\n startLast: string;\n startFavorite: string;\n startPageHint: string;\n defaultBadge: string;\n defaultBadgeDescription: string;\n defaultBadgeKeywords: string;\n defaultBadgeAuto: string;\n defaultBadgeSaved: string;\n defaultBadgeError: string;\n defaultBadgeLoadError: string;\n notices: string;\n noticesDescription: string;\n noticesKeywords: string;\n browserNotices: string;\n browserNoticesDescription: string;\n browserNoticesDenied: string;\n browserNoticesUnsupported: string;\n /** Ação do aviso na tela que abre a `url` dele. */\n noticeOpen: string;\n sync: string;\n syncDescription: string;\n syncKeywords: string;\n syncSynced: string;\n syncSaving: string;\n syncLocal: string;\n syncError: string;\n syncNow: string;\n };\n loginAttempts: {\n refresh: string;\n user: string;\n userPlaceholder: string;\n period: string;\n result: string;\n method: string;\n all: string;\n clear: string;\n advancedFilters: string;\n ip: string;\n ipPlaceholder: string;\n ipHint: string;\n reason: string;\n caption: string;\n pageItems: string;\n pageSize: string;\n colDate: string;\n colResult: string;\n colMethod: string;\n colUser: string;\n colReason: string;\n colIp: string;\n colRealm: string;\n colClient: string;\n colUserAgent: string;\n filterByIp: string;\n filterByUser: string;\n /** Identificador digitado que não corresponde a usuário nenhum. */\n noMatchingUser: string;\n methods: Record<'local' | 'mfa' | 'github' | 'google' | 'keycloak' | 'entraid', string>;\n results: Record<'success' | 'failure' | 'cancelled', string>;\n reasons: Record<\n 'bad_password' | 'unknown_user' | 'locked' | 'mfa_failed' | 'mfa_expired' | 'mfa_not_allowed' | 'mfa_invalid_method'\n | 'recovery_failed' | 'recovery_refused' | 'not_linked' | 'wrong_realm',\n string\n >;\n /** 403 no painel central (falta a operação). */\n forbiddenAdmin: string;\n /** 403 no auto-serviço (não administra o client). */\n forbiddenClient: string;\n /** Erro com o detalhe do servidor: `{detail}`. */\n loadErrorDetail: string;\n loadError: 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 o do 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 mostra 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: 'Como o menu lateral abre e fecha.',\n sidebarKeywords: 'sidebar navegação barra lateral',\n sidebarHelp: 'Automático: abre ao aproximar o ponteiro. Fixo: fica sempre aberto. Compacto: mostra só os ícones.',\n sidebarAuto: 'Automático',\n sidebarFixed: 'Fixo',\n sidebarCompact: 'Compacto',\n region: 'Região',\n regionKeywords: 'idioma língua localização horário data hora semana',\n language: 'Idioma',\n languageDescription: '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: 'Para datas e horários. Agora: {now}',\n timeZoneAuto: 'Automático ({zone})',\n hourCycle: 'Formato de hora',\n hourCycleHint: 'Agora: {now}',\n hourCycleKeywords: 'relógio 24h 12h am pm horário',\n hourCycleAuto: 'Automático',\n hourCycle24: '24 horas',\n hourCycle12: '12 horas',\n weekStart: 'Primeiro dia da semana',\n weekStartDescription: 'Para calendários e seletores de data.',\n weekStartKeywords: 'semana calendário domingo segunda',\n weekStartAuto: 'Automático',\n shortcuts: 'Atalhos',\n shortcutsDescription: 'Pressione ? em qualquer tela para ver esta lista.',\n shortcutsKeywords: 'teclado teclas',\n tour: 'Tour guiado',\n tourDescription: 'Mostra de novo onde fica cada parte da tela.',\n tourKeywords: 'onboarding ajuda apresentação',\n replayTour: 'Refazer tour',\n accessibility: 'Acessibilidade',\n accessibilityKeywords: 'acessibilidade leitura visão',\n textSize: 'Tamanho do texto',\n textSizeDescription: 'Aumenta o texto e os controles de todas as telas.',\n textSizeKeywords: 'zoom fonte letra maior ampliar',\n motion: 'Reduzir animações',\n motionDescription: 'Sistema segue o computador ou o celular.',\n motionKeywords: 'animação movimento transição reduced motion enjoo tontura',\n motionSystem: 'Sistema',\n motionReduce: 'Sempre',\n motionFull: 'Nunca',\n help: 'Ajuda',\n helpKeywords: 'ajuda novidades tour apresentação',\n news: 'Novidades',\n newsDescription: 'O que mudou nas últimas versões.',\n newsKeywords: 'novidades versão lançamento changelog',\n showNews: 'Ver novidades',\n browserData: 'Dados do navegador',\n browserDataDescription: 'Guardados só neste navegador, para a sua conta.',\n browserDataKeywords: 'privacidade limpar apagar histórico dados',\n recentPages: 'Páginas recentes',\n recentPagesKeywords: 'histórico visitadas recentes',\n recentSearches: 'Buscas recentes',\n recentSearchesKeywords: 'busca pesquisa histórico',\n favorites: 'Favoritos',\n favoritesKeywords: 'favoritos estrela',\n pagesCount: { zero: 'Nenhuma página guardada', one: '{count} página guardada', other: '{count} páginas guardadas' },\n searchesCount: { zero: 'Nenhuma busca guardada', one: '{count} busca guardada', other: '{count} buscas guardadas' },\n clear: 'Limpar',\n confirmClear: 'Confirmar',\n cancel: 'Cancelar',\n recentPagesCleared: 'Páginas recentes apagadas.',\n recentSearchesCleared: 'Buscas recentes apagadas.',\n favoritesCleared: 'Favoritos apagados.',\n restorePreferences: 'Preferências',\n restorePreferencesDescription: 'Aparência, acessibilidade e formatos voltam ao padrão.',\n restorePreferencesHelp: 'Voltam ao padrão: tema, cor principal, densidade, fonte, menu lateral, tamanho do texto, animações, formato de hora e primeiro dia da semana. Idioma, fuso horário e atalhos de tecla única ficam como estão.',\n restorePreferencesKeywords: 'restaurar padrão redefinir reset preferências',\n restore: 'Restaurar padrão',\n confirmRestore: 'Confirmar',\n preferencesRestored: 'Preferências restauradas.',\n account: 'Conta',\n accountKeywords: 'perfil usuário login nível sair',\n user: 'Usuário',\n accessLevel: 'Nível de acesso',\n accessLevelKeywords: 'crachá badge perfil permissão grupo',\n session: 'Sessão',\n sessionDescription: '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. Não compartilhe.',\n accessTokenKeywords: 'jwt bearer api desenvolvedor',\n copy: 'Copiar',\n moreAbout: 'Mais sobre {label}',\n appTokens: 'Tokens de aplicação',\n appTokensDescription: 'Para usar a aplicação fora da interface: um MCP, um script.',\n appTokensKeywords: 'token app mcp api chave pat x-app-token automação script integração',\n appTokensHelp: '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 logout: 'Sair',\n logoutDescription: 'Encerra a sessão neste navegador.',\n logoutKeywords: 'logout desconectar',\n mfa: 'MFA',\n mfaDescription: 'Verificação em duas etapas da sua conta no Argos.',\n mfaKeywords: 'segurança argos senha autenticação mfa 2fa dois fatores duas etapas verificação',\n signedInAccount: 'Conta no Argos',\n signedInRealm: 'Realm {realm}',\n twoFactor: 'Verificação em duas etapas',\n twoFactorDescription: 'Um código além da senha para entrar.',\n twoFactorKeywords: 'mfa 2fa totp autenticador authenticator código e-mail método aparelho celular',\n recoveryCodes: 'Códigos de recuperação',\n recoveryCodesDescription: 'Para entrar se você perder o aparelho.',\n recoveryCodesKeywords: 'backup recuperação perdi celular aparelho mfa 2fa',\n sessions: 'Sessões e dispositivos',\n sessionsDescription: 'Onde a sua conta está conectada.',\n sessionsKeywords: 'dispositivos navegador ip encerrar desconectar sair aparelhos conectados',\n sessionsSection: 'Sessões',\n sessionsSectionDescription: 'Esta sessão, os tokens de aplicação e os dispositivos conectados.',\n sessionsSectionKeywords: 'sessão sessões token tokens dispositivos login segurança',\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: 'Versão, ambiente, navegador e preferências, para colar 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 accountSecurity: {\n loading: 'Carregando…',\n loadError: 'Não foi possível carregar a sua conta no Argos.',\n sessionEnded: 'A sessão deste login terminou no Argos. Entre de novo para gerenciar a conta.',\n retry: 'Tentar novamente',\n methodTotp: 'Aplicativo autenticador',\n methodEmail: 'E-mail',\n methodSms: 'SMS',\n active: 'Ativo',\n activeWithDetail: 'Ativo · {detail}',\n notRegistered: 'Não cadastrado',\n unavailable: 'Indisponível',\n requiredHint: 'Obrigatória neste ambiente: mantenha pelo menos um método.',\n add: 'Adicionar',\n replaceDevice: 'Trocar aparelho',\n remove: 'Remover',\n cancel: 'Cancelar',\n confirm: 'Confirmar',\n removeTitle: 'Remover {method}?',\n removeHint: 'Você deixa de poder usar este método para entrar.',\n removeLastHint: 'Sem nenhum método, os códigos de recuperação também deixam de valer.',\n reauthTitle: 'Confirme sua identidade',\n reauthHint: 'Por segurança, confirme antes de continuar. Vale por 5 minutos.',\n reauthHow: 'Como confirmar',\n reauthPassword: 'Senha',\n reauthRecoveryCode: 'Código de recuperação',\n currentPassword: 'Senha atual',\n passwordRequired: 'Informe a senha.',\n recoveryCode: 'Código de recuperação',\n recoveryCodePlaceholder: 'XXXXX-XXXXX',\n recoveryCodeRequired: 'Informe o código.',\n recoveryCodeLength: 'O código tem 10 letras e números.',\n sendEmailCode: 'Enviar código para o e-mail cadastrado',\n sixDigitCode: 'Código de 6 dígitos',\n totpTitle: 'Escaneie o QR Code no aplicativo autenticador',\n qrAlt: 'QR Code para configurar o aplicativo autenticador',\n manualKey: 'Sem câmera? Digite a chave:',\n appCode: 'Código do aplicativo',\n emailTitle: 'Cadastrar e-mail',\n email: 'E-mail',\n emailPlaceholder: 'nome@empresa.com',\n emailRequired: 'Informe o e-mail.',\n emailInvalid: 'Informe um e-mail válido.',\n sendCode: 'Enviar código',\n emailCodeTitle: 'Confirme o e-mail',\n emailCodeHint: 'Digite o código de 6 dígitos enviado para {email}.',\n codesRemaining: { zero: 'Nenhum código disponível', one: '1 código disponível', other: '{count} códigos disponíveis' },\n codesHint: 'Cada um vale uma vez. Gerar novos invalida os anteriores.',\n codesNeedMethod: 'Cadastre um método de verificação para gerar códigos de recuperação.',\n generateCodes: 'Gerar códigos',\n regenerateCodes: 'Gerar novos códigos',\n codesTitle: 'Seus códigos de recuperação',\n codesShownOnce: 'Guarde num lugar seguro: eles não serão mostrados de novo. Cada um vale uma vez.',\n copyCodes: 'Copiar',\n downloadCodes: 'Baixar .txt',\n codesCopied: 'Códigos copiados.',\n copyFailed: 'Não foi possível copiar. Selecione os códigos e copie manualmente.',\n codesSaved: 'Guardei os códigos',\n codesFileHeader: 'Códigos de recuperação do Argos (cada um vale uma vez)',\n codesFileName: 'codigos-de-recuperacao.txt',\n notices: {\n methodAdded: 'Método cadastrado.',\n deviceReplaced: 'Aparelho trocado. O anterior não gera mais códigos válidos.',\n methodRemoved: 'Método removido.',\n codesRegenerated: 'Códigos de recuperação gerados. Os anteriores não valem mais.',\n reauthCodeSent: 'Enviamos um código para o e-mail cadastrado.',\n },\n errors: {\n generic: 'Não foi possível concluir. Tente novamente.',\n network: 'Não foi possível falar com o Argos. Verifique a conexão e tente novamente.',\n login_required: 'A sessão deste login terminou no Argos. Entre de novo para gerenciar a conta.',\n invalid_token: 'A sessão deste login terminou no Argos. Entre de novo para gerenciar a conta.',\n reauthentication_required: 'A confirmação de identidade venceu. Confirme de novo para continuar.',\n invalid_password: 'Senha incorreta.',\n account_locked: 'Muitas tentativas com a senha. A conta ficou bloqueada por alguns minutos.',\n invalid_code: 'Código incorreto.',\n invalid_recovery_code: 'Código de recuperação inválido ou já usado.',\n code_expired: 'O código venceu. Peça outro.',\n code_not_requested: 'Peça o código antes de digitá-lo.',\n too_many_attempts: 'Muitas tentativas. Espere alguns minutos e tente de novo.',\n too_many_requests: 'Espere um pouco antes de pedir outro código.',\n mfa_method_not_allowed: 'Este método não é aceito neste ambiente.',\n mfa_method_not_found: 'Este método já não estava cadastrado.',\n mfa_last_method: 'A verificação em duas etapas é obrigatória: mantenha pelo menos um método.',\n invalid_email: 'Informe um e-mail válido.',\n enrollment_not_started: 'O cadastro venceu. Comece de novo.',\n sms_not_available: 'SMS indisponível.',\n mfa_required_for_recovery_codes: 'Cadastre um método de verificação antes de gerar códigos.',\n session_not_found: 'A sessão já tinha sido encerrada.',\n },\n sessionsEmpty: 'Nenhuma sessão ativa.',\n thisSession: 'Esta sessão',\n thisBrowser: 'Este navegador',\n appsOnly: 'Só aplicativos',\n sessionDetail: 'IP {ip} · último uso {date}',\n unknownIp: 'desconhecido',\n sessionSince: 'Desde {date}',\n sessionApps: 'Aplicativos: {apps}',\n unnamedApp: 'Aplicativo',\n endSession: 'Encerrar',\n confirmEndSession: 'Confirmar encerramento',\n endOthers: 'Encerrar todas as outras',\n endOthersConfirm: {\n one: 'Encerrar a outra sessão? Os aplicativos abertos nela vão pedir login de novo.',\n other: 'Encerrar as {count} outras sessões? Os aplicativos abertos nelas vão pedir login de novo.',\n },\n sessionEndedNotice: 'Sessão encerrada.',\n othersEndedNotice: { zero: 'Nenhuma sessão encerrada.', one: '1 sessão encerrada.', other: '{count} sessões encerradas.' },\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 logoutFailed: 'Não foi possível sair agora. Verifique a conexão e tente de novo.',\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ê não administra este app. É preciso (a) estar no grupo de administração do projeto dele 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 quem administra o projeto.',\n pickClient: 'Selecione o client que deseja administrar',\n groupsTitle: 'Grupos',\n groupsIntro: 'Crie, edite e exclua os grupos deste client e gerencie os membros — 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 colAllowedBadges: 'Crachás permitidos',\n anyBadge: 'Qualquer crachá',\n allowedBadgesHint: 'Vazio = qualquer crachá. Com um ou mais escolhidos, só os grupos com um desses crachás podem receber acesso a esta tela na aba Acesso.',\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 rotateSecret: 'Gerar novo segredo',\n confirmRotateSecretHeading: 'Gerar um novo segredo?',\n confirmRotateSecret: 'O segredo atual deixa de funcionar na hora; atualize o APP_SECRET do serviço que usa esta aplicação. Tokens já emitidos valem até expirar (até 1 hora).',\n rotatedSecretHeading: 'Novo segredo de {name}',\n rotatedSecretWarning: 'Copie agora: o segredo não será mostrado de novo.',\n rotatedSecretNote: 'O servidor guarda só um hash do segredo. Ao fechar esta janela não há como consultá-lo; se ele se perder, gere outro.',\n rotatedSecretLabel: 'Segredo da aplicação {name}',\n copySecret: 'Copiar',\n secretCopied: 'Segredo copiado.',\n rotatedSecretDone: 'Concluir',\n rotateSecretError: 'Não foi possível gerar o novo segredo. Tente de novo.',\n rotateSecretNotFound: 'Aplicação não encontrada neste client.',\n rotateSecretForbidden: 'Você não administra este client.',\n confirmDeleteAppHeading: 'Excluir aplicação?',\n confirmDeleteApp: 'A aplicação {name} será excluída e a credencial dela para de funcionar. Esta ação não pode ser desfeita.',\n confirmDeleteRouteHeading: 'Excluir rota?',\n confirmDeleteRoute: 'A rota {name} será excluída deste cliente. Esta ação não pode ser desfeita.',\n confirmDeleteRouterHeading: 'Excluir roteador?',\n confirmDeleteRouter: 'O roteador {path} será excluído e a página sai do menu. Esta ação não pode ser desfeita.',\n confirmRemoveAccessHeading: 'Remover acesso?',\n confirmRemoveAccess: 'O grupo {group} perde o acesso às rotas privadas deste cliente.',\n confirmRemoveConsumerHeading: 'Remover acesso à aplicação?',\n confirmRemoveConsumer: 'O grupo {group} deixa de consumir esta aplicação e perde as permissões de operação dela.',\n deleteDone: 'Exclusão concluída.',\n deleteError: 'Não foi possível excluir. Tente de novo.',\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 reorder: 'Reordenar',\n reorderTitle: 'Reordenar menu',\n reorderHint: 'Mude a ordem em que os itens aparecem no menu do app: arraste pela alça (ou, no teclado, Espaço na alça e as setas) ou use os botões de subir e descer. Para ordenar o que fica dentro de um item, entre nele.',\n reorderPath: 'Nível do menu',\n reorderRoot: 'Topo do menu',\n reorderListLabel: 'Ordem em {name}',\n reorderEmpty: 'Nenhum roteador cadastrado para ordenar.',\n moveUp: 'Mover {name} para cima',\n moveDown: 'Mover {name} para baixo',\n openLevel: 'Ordenar o que fica dentro de {name}',\n childCount: { one: '1 item dentro', other: '{count} itens dentro' },\n movedTo: '{name}: posição {position} de {total}',\n reorderLoadError: 'Não foi possível carregar o menu. Tente de novo.',\n reorderSaveError: 'Não foi possível salvar a ordem. Nada foi perdido: tente de novo.',\n reorderSave: 'Salvar ordem',\n newGroup: 'Novo grupo',\n editGroup: 'Editar grupo',\n groupsCaption: 'Grupos do projeto',\n noGroups: 'Nenhum grupo cadastrado ainda.',\n accessLevel: 'Nível de acesso',\n pickAccessLevel: 'Selecione o nível',\n noLevel: 'Sem nível',\n noGroupsOfLevel: 'Nenhum grupo neste nível.',\n colStatus: 'Situação',\n groupName: 'Nome',\n groupType: 'Tipo',\n groupTypePlaceholder: 'Selecione o tipo',\n groupDescription: 'Descrição (opcional)',\n openGroup: 'Abrir o grupo {name}',\n adminGroupTag: 'Administração',\n adminGroupNote:\n 'Grupo de administração do projeto: quem está nele administra este app no auto-serviço. É o único do projeto, não pode ser excluído, renomeado, desativado nem mudar de tipo, e não pode ficar sem membros.',\n adminGroupEditNote: 'Grupo de administração do projeto: só a descrição pode ser alterada.',\n adminGroupLastMemberWarning: 'O grupo de administração não pode ficar sem membros: inclua outra pessoa ou desfaça uma remoção.',\n confirmDeleteGroupHeading: 'Excluir grupo?',\n confirmDeleteGroup:\n 'O grupo {name} será excluído junto com os membros, os acessos a telas e as permissões em aplicações. Esta ação não pode ser desfeita.',\n groupSaveError: 'Não foi possível salvar o grupo. Tente de novo.',\n membersSaveError: 'Não foi possível salvar todas as alterações dos membros. Confira a lista e tente de novo.',\n appsCaption: 'Aplicações do projeto',\n noApps: 'Nenhuma aplicação cadastrada ainda.',\n colGrants: 'Grants',\n openApp: 'Abrir a aplicação {name}',\n tabTokens: 'Tokens',\n tokensCaption: 'Tokens da aplicação',\n noTokens: 'Nenhum token criado para esta aplicação ainda.',\n newToken: 'Novo token',\n colTokenPrefix: 'Início do token',\n colExpiresAt: 'Expira em',\n colLastUsed: 'Último uso',\n tokenExpired: 'Expirado',\n tokenRevoked: 'Revogado',\n neverUsed: 'Nunca',\n revokeToken: 'Revogar',\n confirmRevokeTokenHeading: 'Revogar token?',\n confirmRevokeToken: 'O token {name} deixa de funcionar na hora. A revogação não pode ser desfeita.',\n tokenRevokedDone: 'Token {name} revogado.',\n tokenRevokeError: 'Não foi possível revogar o token. Tente de novo.',\n tokensLoadError: 'Não foi possível carregar os tokens da aplicação.',\n tokenName: 'Nome',\n tokenDescription: 'Descrição (opcional)',\n tokenExpiresAt: 'Expira em',\n tokenExpiresHint: 'De amanhã até 365 dias a partir de hoje.',\n tokenExpiresInvalid: 'Escolha uma data entre amanhã e 365 dias a partir de hoje.',\n tokenOperations: 'Operações liberadas ao token',\n tokenOperationsNote: 'Nada vem marcado: o token não tem login, então marque as operações protected e private que ele pode chamar. As public não precisam de token.',\n freeForAll: 'liberada para todos',\n freeForAuthenticated: 'liberada para autenticados',\n freeNoPermission: 'não depende de permissão',\n publicNoToken: 'pública: não precisa de token',\n createToken: 'Criar token',\n tokenSaveError: 'Não foi possível criar o token. Tente de novo.',\n tokenCreatedHeading: 'Token {name} criado',\n tokenCreatedWarning: 'Copie agora: o token não será mostrado de novo.',\n tokenCreatedNote: 'Envie no cabeçalho x-api-token. O servidor guarda só um hash do token; se ele se perder, revogue e crie outro.',\n tokenValueLabel: 'Token {name}',\n copyToken: 'Copiar',\n tokenCopied: 'Token copiado.',\n hierarchyHint: 'De cima para baixo: Navegação só com Header, Menu só com Navegação, Item só com Menu e Submenu só com Item. Limpar um nível limpa os de baixo.',\n routerSaveError: 'Não foi possível salvar o roteador. Tente de novo.',\n permissionsSaveError: 'Não foi possível salvar todas as alterações das operações. Reabra o painel e confira.',\n permissionsSummaryGroup: '{marked} de {total} operações protegidas liberadas para o grupo.',\n permissionsSummaryToken: '{marked} de {total} operações liberadas para o token.',\n permissionsFreeGroup: {\n one: '1 operação não depende de permissão (public ou private) e aparece marcada.',\n other: '{count} operações não dependem de permissão (public ou private) e aparecem marcadas.',\n },\n permissionsFreeToken: {\n one: '1 operação public não precisa de token e não pode ser liberada.',\n other: '{count} operações public não precisam de token e não podem ser liberadas.',\n },\n permissionsFolderCount: '{marked} de {total}',\n permissionsTreeLabel: 'Operações',\n tokenErrors: {\n invalidExpiresAt: 'Data de validade inválida. Escolha outra data.',\n invalidValidity: 'A validade precisa ficar entre amanhã e 365 dias a partir de hoje.',\n invalidOperationIds: 'Alguma operação escolhida não existe mais nesta aplicação. Reabra o formulário e escolha de novo.',\n operationNotProtected: 'Só operações protected podem ser liberadas a um grupo; as public e private já valem para ele.',\n operationPublic: 'Operação pública não precisa de token e não pode ser liberada a ele. Desmarque-a e tente de novo.',\n appNotFound: 'Aplicação não encontrada neste client. Ela pode ter sido excluída.',\n tokenNotFound: 'Token não encontrado nesta aplicação. Ele pode já ter sido revogado.',\n },\n routerErrors: {\n hierarchyGap: 'A hierarquia tem um nível vazio no meio: cada nível precisa do de cima (Header → Navegação → Menu → Item → Submenu). Preencha o nível que falta ou limpe os de baixo.',\n invalidAllowedTypes: 'Algum crachá escolhido não existe mais. Revise os crachás permitidos.',\n },\n groupErrors: {\n invalidType: 'Esse tipo de grupo não existe mais. Escolha outro tipo.',\n adminTypeReserved: 'O tipo Administrador é só do grupo de administração do projeto.',\n emptyUpdate: 'Nada para salvar: nenhum campo foi alterado.',\n groupProjectImmutable: 'O grupo não muda de projeto.',\n groupNameTaken: 'Já existe um grupo com esse nome neste projeto.',\n adminGroupImmutable: 'O grupo de administração não muda de nome, de tipo nem é desativado.',\n adminGroupProtected: 'O grupo de administração do projeto não pode ser excluído.',\n adminGroupLastMember: 'O grupo de administração não pode ficar sem membros.',\n adminGroupAccessProtected: 'O acesso do grupo de administração a este app não pode ser removido.',\n groupNotFound: 'Grupo não encontrado neste projeto. Ele pode ter sido excluído.',\n },\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 loginAttempts: {\n refresh: 'Atualizar',\n user: 'Usuário',\n userPlaceholder: 'Usuário, e-mail ou identificador digitado',\n period: 'Período',\n result: 'Resultado',\n method: 'Método',\n all: 'Todos',\n clear: 'Limpar',\n advancedFilters: 'Filtros avançados',\n ip: 'IP ou rede',\n ipPlaceholder: '10.0.0.5 ou 10.0.0.0/8',\n ipHint: 'IP exato ou rede em notação CIDR.',\n reason: 'Motivo',\n caption: 'Tentativas de login',\n pageItems: 'tentativas',\n pageSize: 'Tentativas por página',\n colDate: 'Data/hora',\n colResult: 'Resultado',\n colMethod: 'Método',\n colUser: 'Usuário',\n colReason: 'Motivo',\n colIp: 'IP',\n colRealm: 'Realm',\n colClient: 'Client',\n colUserAgent: 'Navegador',\n filterByIp: 'Filtrar por este IP',\n filterByUser: 'Filtrar por este usuário',\n noMatchingUser: 'sem usuário correspondente',\n methods: { local: 'Senha', mfa: 'MFA', github: 'GitHub', google: 'Google', keycloak: 'Keycloak', entraid: 'Entra ID' },\n results: { success: 'Sucesso', failure: 'Falha', cancelled: 'Cancelada' },\n reasons: {\n bad_password: 'Senha incorreta',\n unknown_user: 'Usuário inexistente ou inativo',\n locked: 'Conta bloqueada por tentativas',\n mfa_failed: 'Código de verificação incorreto',\n mfa_expired: 'Código de verificação vencido',\n mfa_not_allowed: 'Método de verificação não permitido',\n mfa_invalid_method: 'Método de verificação desconhecido',\n recovery_failed: 'Código de recuperação incorreto ou já usado',\n recovery_refused: 'Código de recuperação recusado',\n not_linked: 'Conta externa não vinculada',\n wrong_realm: 'Usuário de outro realm',\n },\n forbiddenAdmin: 'Sua conta não pode consultar as tentativas de login. Peça a um administrador a operação admin:attempts:list.',\n forbiddenClient: 'Só o grupo de administração do projeto, com o crachá Administrador ativo, vê as tentativas de login desta aplicação.',\n loadErrorDetail: 'Não foi possível carregar as tentativas: {detail}',\n loadError: 'Não foi possível carregar as tentativas de login.',\n },\n accountFeatures: {\n aiAgent: 'Conectar um agente de IA',\n aiAgentDescription: 'Gera o token e a configuração MCP para colar no Claude Code.',\n aiAgentKeywords: 'ia agente claude mcp assistente llm automação',\n aiAgentHelp: 'O agente usa um token de aplicação pessoal (x-app-token) com as permissões do nível de acesso escolhido. Revogue em \"Tokens de aplicação\" quando não precisar mais.',\n aiAgentStart: 'Conectar agente',\n aiAgentServers: 'Servidores MCP',\n aiAgentAccess: 'Acesso do agente',\n aiAgentReadOnly: 'Só leitura',\n aiAgentReadWrite: 'Leitura e escrita',\n aiAgentWriteHint: 'O agente poderá alterar dados em seu nome. Prefira só leitura quando bastar.',\n aiAgentReadOnlyServer: '{name} (só leitura)',\n aiAgentTokenName: 'Agente de IA ({date})',\n aiAgentGenerate: 'Gerar configuração',\n aiAgentSelectServer: 'Escolha pelo menos um servidor.',\n aiAgentResult: 'Configuração pronta',\n aiAgentResultHint: 'Cole em .mcp.json, na raiz do projeto (Claude Code). O token aparece só agora: copie antes de concluir. Vale até {date}.',\n aiAgentCopy: 'Copiar configuração',\n aiAgentCopied: 'Configuração copiada. Não compartilhe: ela contém o seu token.',\n aiAgentDone: 'Concluir',\n aiAgentCreateError: 'Não foi possível gerar o token do agente.',\n aiAgentUnavailable: 'Indisponível neste aplicativo: ele não está ligado ao argos-admin.',\n activity: 'Atividade da conta',\n activityDescription: 'Entradas e tentativas que falharam nos últimos 90 dias.',\n activityKeywords: 'login entrada acesso histórico tentativa falha ip navegador segurança',\n activityFilter: 'Mostrar',\n activityAll: 'Todas',\n activityFailures: 'Só falhas',\n activityDetail: '{date} · IP {ip}',\n activityApp: 'Aplicativo: {app}',\n activityEmpty: 'Nada nos últimos 90 dias.',\n activityMore: 'Carregar mais',\n activityShowing: '{shown} de {total}',\n activityLoadError: 'Não foi possível carregar a atividade da conta.',\n unknownIp: 'desconhecido',\n unknownApp: 'sem nome',\n idle: 'Encerrar por inatividade',\n idleDescription: 'Sai sozinho depois de um tempo sem uso, com um aviso antes.',\n idleKeywords: 'inatividade ocioso tempo sair automático logout segurança bloqueio',\n idleNever: 'Nunca',\n idleOption: '{minutes} min',\n idleLimitHint: 'Esta aplicação encerra a sessão em no máximo {minutes} min sem uso.',\n idleWarningHeading: 'A sessão vai ser encerrada',\n idleWarningText: { one: 'Nenhuma atividade há algum tempo. A sessão termina em {count} segundo.', other: 'Nenhuma atividade há algum tempo. A sessão termina em {count} segundos.' },\n idleStay: 'Continuar conectado',\n idleLogout: 'Sair agora',\n startPage: 'Tela inicial',\n startPageDescription: 'Onde a aplicação abre depois do login.',\n startPageKeywords: 'início home abertura login favorito última tela',\n startHome: 'Início',\n startLast: 'Última tela visitada',\n startFavorite: 'Favorito: {name}',\n startPageHint: 'Marque telas como favoritas para abrir numa delas.',\n defaultBadge: 'Crachá padrão',\n defaultBadgeDescription: 'Nível de acesso com que você entra nesta aplicação, em qualquer navegador.',\n defaultBadgeKeywords: 'crachá badge nível acesso perfil padrão login',\n defaultBadgeAuto: 'Automático (o de menor nível)',\n defaultBadgeSaved: 'Crachá padrão salvo. Vale a partir do próximo login.',\n defaultBadgeError: 'Não foi possível salvar o crachá padrão.',\n defaultBadgeLoadError: 'Não foi possível carregar os seus crachás.',\n notices: 'Notificações',\n noticesDescription: 'Os avisos que esta aplicação mostra.',\n noticesKeywords: 'notificação aviso alerta navegador push',\n browserNotices: 'Avisos do navegador',\n browserNoticesDescription: 'Aviso do sistema quando a aba está em segundo plano.',\n browserNoticesDenied: 'O navegador bloqueou as notificações deste site. Libere nas configurações do navegador.',\n browserNoticesUnsupported: 'Este navegador não mostra notificações.',\n noticeOpen: 'Abrir',\n sync: 'Preferências na conta',\n syncDescription: 'Aparência, região, favoritos e as demais preferências acompanham você em qualquer navegador.',\n syncKeywords: 'sincronizar nuvem conta navegador preferências backup',\n syncSynced: 'Sincronizado às {time}',\n syncSaving: 'Salvando…',\n syncLocal: 'Só neste navegador: a conta não está disponível.',\n syncError: 'Não foi possível sincronizar. Tente de novo.',\n syncNow: 'Sincronizar agora',\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 the operating system one.',\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 shows 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: 'How the side menu opens and closes.',\n sidebarKeywords: 'sidebar navigation side bar',\n sidebarHelp: 'Automatic: opens when the pointer approaches. Fixed: always open. Compact: shows only the icons.',\n sidebarAuto: 'Automatic',\n sidebarFixed: 'Fixed',\n sidebarCompact: 'Compact',\n region: 'Region',\n regionKeywords: 'language locale time date hour week',\n language: 'Language',\n languageDescription: '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: 'For dates and times. Now: {now}',\n timeZoneAuto: 'Automatic ({zone})',\n hourCycle: 'Time format',\n hourCycleHint: 'Now: {now}',\n hourCycleKeywords: 'clock 24h 12h am pm hour',\n hourCycleAuto: 'Automatic',\n hourCycle24: '24-hour',\n hourCycle12: '12-hour',\n weekStart: 'First day of the week',\n weekStartDescription: 'For calendars and date pickers.',\n weekStartKeywords: 'week calendar sunday monday',\n weekStartAuto: 'Automatic',\n shortcuts: 'Shortcuts',\n shortcutsDescription: 'Press ? on any screen to see this list.',\n shortcutsKeywords: 'keyboard keys',\n tour: 'Guided tour',\n tourDescription: 'Shows again where each part of the screen is.',\n tourKeywords: 'onboarding help introduction',\n replayTour: 'Replay tour',\n accessibility: 'Accessibility',\n accessibilityKeywords: 'accessibility reading vision',\n textSize: 'Text size',\n textSizeDescription: 'Makes text and controls larger on every screen.',\n textSizeKeywords: 'zoom font letter bigger enlarge',\n motion: 'Reduce motion',\n motionDescription: 'System follows your computer or phone.',\n motionKeywords: 'animation motion transition reduced dizziness',\n motionSystem: 'System',\n motionReduce: 'Always',\n motionFull: 'Never',\n help: 'Help',\n helpKeywords: \"help what's new tour introduction\",\n news: \"What's new\",\n newsDescription: 'What changed in the latest versions.',\n newsKeywords: 'news version release changelog',\n showNews: \"See what's new\",\n browserData: 'Browser data',\n browserDataDescription: 'Stored only in this browser, for your account.',\n browserDataKeywords: 'privacy clear delete history data',\n recentPages: 'Recent pages',\n recentPagesKeywords: 'history visited recent',\n recentSearches: 'Recent searches',\n recentSearchesKeywords: 'search query history',\n favorites: 'Favorites',\n favoritesKeywords: 'favorites star bookmarks',\n pagesCount: { zero: 'No pages stored', one: '{count} page stored', other: '{count} pages stored' },\n searchesCount: { zero: 'No searches stored', one: '{count} search stored', other: '{count} searches stored' },\n clear: 'Clear',\n confirmClear: 'Confirm',\n cancel: 'Cancel',\n recentPagesCleared: 'Recent pages cleared.',\n recentSearchesCleared: 'Recent searches cleared.',\n favoritesCleared: 'Favorites cleared.',\n restorePreferences: 'Preferences',\n restorePreferencesDescription: 'Appearance, accessibility and formats go back to the defaults.',\n restorePreferencesHelp: 'Back to the defaults: theme, main color, density, font, side menu, text size, animations, time format and first day of the week. Language, time zone and single-key shortcuts stay as they are.',\n restorePreferencesKeywords: 'restore default reset preferences',\n restore: 'Restore defaults',\n confirmRestore: 'Confirm',\n preferencesRestored: 'Preferences restored.',\n account: 'Account',\n accountKeywords: 'profile user login level sign out',\n user: 'User',\n accessLevel: 'Access level',\n accessLevelKeywords: 'badge profile permission group',\n session: 'Session',\n sessionDescription: '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. Don't share it.\",\n accessTokenKeywords: 'jwt bearer api developer',\n copy: 'Copy',\n moreAbout: 'More about {label}',\n appTokens: 'Application tokens',\n appTokensDescription: 'To use the application outside the interface: an MCP, a script.',\n appTokensKeywords: 'token app mcp api key pat x-app-token automation script integration',\n appTokensHelp: '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 logout: 'Sign out',\n logoutDescription: 'Ends the session in this browser.',\n logoutKeywords: 'logout disconnect',\n mfa: 'MFA',\n mfaDescription: 'Two-step verification of your Argos account.',\n mfaKeywords: 'security argos password authentication mfa 2fa two-factor two-step verification',\n signedInAccount: 'Argos account',\n signedInRealm: 'Realm {realm}',\n twoFactor: 'Two-step verification',\n twoFactorDescription: 'A code on top of the password to sign in.',\n twoFactorKeywords: 'mfa 2fa totp authenticator code email method device phone',\n recoveryCodes: 'Recovery codes',\n recoveryCodesDescription: 'To sign in if you lose your device.',\n recoveryCodesKeywords: 'backup recovery lost phone device mfa 2fa',\n sessions: 'Sessions and devices',\n sessionsDescription: 'Where your account is signed in.',\n sessionsKeywords: 'devices browser ip end sign out disconnect connected',\n sessionsSection: 'Sessions',\n sessionsSectionDescription: 'This session, the application tokens and the signed-in devices.',\n sessionsSectionKeywords: 'session sessions token tokens devices login security',\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: 'Version, environment, browser and preferences, to paste 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 accountSecurity: {\n loading: 'Loading…',\n loadError: \"Couldn't load your Argos account.\",\n sessionEnded: 'This sign-in session has ended in Argos. Sign in again to manage your account.',\n retry: 'Try again',\n methodTotp: 'Authenticator app',\n methodEmail: 'Email',\n methodSms: 'SMS',\n active: 'Active',\n activeWithDetail: 'Active · {detail}',\n notRegistered: 'Not set up',\n unavailable: 'Unavailable',\n requiredHint: 'Required in this environment: keep at least one method.',\n add: 'Add',\n replaceDevice: 'Switch device',\n remove: 'Remove',\n cancel: 'Cancel',\n confirm: 'Confirm',\n removeTitle: 'Remove {method}?',\n removeHint: \"You won't be able to use this method to sign in anymore.\",\n removeLastHint: 'With no method left, the recovery codes stop working too.',\n reauthTitle: 'Confirm your identity',\n reauthHint: 'For security, confirm before continuing. It lasts 5 minutes.',\n reauthHow: 'How to confirm',\n reauthPassword: 'Password',\n reauthRecoveryCode: 'Recovery code',\n currentPassword: 'Current password',\n passwordRequired: 'Enter your password.',\n recoveryCode: 'Recovery code',\n recoveryCodePlaceholder: 'XXXXX-XXXXX',\n recoveryCodeRequired: 'Enter the code.',\n recoveryCodeLength: 'The code has 10 letters and digits.',\n sendEmailCode: 'Send a code to the registered email',\n sixDigitCode: '6-digit code',\n totpTitle: 'Scan the QR code with the authenticator app',\n qrAlt: 'QR code to set up the authenticator app',\n manualKey: 'No camera? Type the key:',\n appCode: 'Code from the app',\n emailTitle: 'Add email',\n email: 'Email',\n emailPlaceholder: 'name@company.com',\n emailRequired: 'Enter the email.',\n emailInvalid: 'Enter a valid email.',\n sendCode: 'Send code',\n emailCodeTitle: 'Confirm the email',\n emailCodeHint: 'Enter the 6-digit code sent to {email}.',\n codesRemaining: { zero: 'No codes available', one: '1 code available', other: '{count} codes available' },\n codesHint: 'Each one works once. Generating new ones invalidates the previous ones.',\n codesNeedMethod: 'Set up a verification method to generate recovery codes.',\n generateCodes: 'Generate codes',\n regenerateCodes: 'Generate new codes',\n codesTitle: 'Your recovery codes',\n codesShownOnce: \"Keep them somewhere safe: they won't be shown again. Each one works once.\",\n copyCodes: 'Copy',\n downloadCodes: 'Download .txt',\n codesCopied: 'Codes copied.',\n copyFailed: \"Couldn't copy. Select the codes and copy them manually.\",\n codesSaved: \"I've saved the codes\",\n codesFileHeader: 'Argos recovery codes (each one works once)',\n codesFileName: 'recovery-codes.txt',\n notices: {\n methodAdded: 'Method added.',\n deviceReplaced: 'Device switched. The previous one no longer generates valid codes.',\n methodRemoved: 'Method removed.',\n codesRegenerated: 'Recovery codes generated. The previous ones no longer work.',\n reauthCodeSent: 'We sent a code to the registered email.',\n },\n errors: {\n generic: \"Couldn't finish. Try again.\",\n network: \"Couldn't reach Argos. Check the connection and try again.\",\n login_required: 'This sign-in session has ended in Argos. Sign in again to manage your account.',\n invalid_token: 'This sign-in session has ended in Argos. Sign in again to manage your account.',\n reauthentication_required: 'The identity confirmation expired. Confirm again to continue.',\n invalid_password: 'Wrong password.',\n account_locked: 'Too many password attempts. The account is locked for a few minutes.',\n invalid_code: 'Wrong code.',\n invalid_recovery_code: 'Invalid or already used recovery code.',\n code_expired: 'The code expired. Request another one.',\n code_not_requested: 'Request the code before typing it.',\n too_many_attempts: 'Too many attempts. Wait a few minutes and try again.',\n too_many_requests: 'Wait a moment before requesting another code.',\n mfa_method_not_allowed: \"This method isn't accepted in this environment.\",\n mfa_method_not_found: 'This method was no longer set up.',\n mfa_last_method: 'Two-step verification is required: keep at least one method.',\n invalid_email: 'Enter a valid email.',\n enrollment_not_started: 'The setup expired. Start again.',\n sms_not_available: 'SMS unavailable.',\n mfa_required_for_recovery_codes: 'Set up a verification method before generating codes.',\n session_not_found: 'The session had already ended.',\n },\n sessionsEmpty: 'No active sessions.',\n thisSession: 'This session',\n thisBrowser: 'This browser',\n appsOnly: 'Apps only',\n sessionDetail: 'IP {ip} · last used {date}',\n unknownIp: 'unknown',\n sessionSince: 'Since {date}',\n sessionApps: 'Apps: {apps}',\n unnamedApp: 'App',\n endSession: 'End',\n confirmEndSession: 'Confirm ending',\n endOthers: 'End all other sessions',\n endOthersConfirm: {\n one: 'End the other session? Apps open in it will ask you to sign in again.',\n other: 'End the {count} other sessions? Apps open in them will ask you to sign in again.',\n },\n sessionEndedNotice: 'Session ended.',\n othersEndedNotice: { zero: 'No sessions ended.', one: '1 session ended.', other: '{count} sessions ended.' },\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 logoutFailed: \"Couldn't sign out right now. Check your connection and try again.\",\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 this app. You need to (a) be in its project's administration group and (b) be signed in with the <strong>Administrator</strong> badge active. Switch badges in your profile menu, if available, or ask whoever manages the project for access.\",\n pickClient: 'Select the client you want to manage',\n groupsTitle: 'Groups',\n groupsIntro: \"Create, edit and delete this client's groups and manage their members — 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 colAllowedBadges: 'Allowed badges',\n anyBadge: 'Any badge',\n allowedBadgesHint: 'Empty = any badge. With one or more chosen, only groups with one of those badges can be given access to this screen in the Access tab.',\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 rotateSecret: 'Generate new secret',\n confirmRotateSecretHeading: 'Generate a new secret?',\n confirmRotateSecret: 'The current secret stops working right away; update the APP_SECRET of the service that uses this application. Tokens already issued stay valid until they expire (up to 1 hour).',\n rotatedSecretHeading: 'New secret for {name}',\n rotatedSecretWarning: \"Copy it now: the secret won't be shown again.\",\n rotatedSecretNote: 'The server keeps only a hash of the secret. Once this window is closed there is no way to look it up; if it gets lost, generate another one.',\n rotatedSecretLabel: 'Secret of application {name}',\n copySecret: 'Copy',\n secretCopied: 'Secret copied.',\n rotatedSecretDone: 'Done',\n rotateSecretError: \"Couldn't generate the new secret. Try again.\",\n rotateSecretNotFound: 'Application not found in this client.',\n rotateSecretForbidden: \"You don't manage this client.\",\n confirmDeleteAppHeading: 'Delete application?',\n confirmDeleteApp: 'The application {name} will be deleted and its credential will stop working. This cannot be undone.',\n confirmDeleteRouteHeading: 'Delete route?',\n confirmDeleteRoute: 'The route {name} will be deleted from this client. This cannot be undone.',\n confirmDeleteRouterHeading: 'Delete router?',\n confirmDeleteRouter: 'The router {path} will be deleted and the page leaves the menu. This cannot be undone.',\n confirmRemoveAccessHeading: 'Remove access?',\n confirmRemoveAccess: 'The group {group} loses access to the private routes of this client.',\n confirmRemoveConsumerHeading: 'Remove access to the application?',\n confirmRemoveConsumer: 'The group {group} stops consuming this application and loses its operation permissions.',\n deleteDone: 'Deleted.',\n deleteError: 'Could not delete. Try again.',\n colExcludable: 'Deletable',\n excludableYes: 'Yes',\n excludableNo: 'No',\n colName: 'Name',\n colDisplay: 'Display',\n colIcon: 'Icon',\n colPath: 'Path',\n reorder: 'Reorder',\n reorderTitle: 'Reorder menu',\n reorderHint: 'Change the order in which items appear in the app menu: drag by the handle (or, on the keyboard, Space on the handle and the arrow keys) or use the up and down buttons. To order what sits inside an item, open it.',\n reorderPath: 'Menu level',\n reorderRoot: 'Top of the menu',\n reorderListLabel: 'Order in {name}',\n reorderEmpty: 'No router registered to order.',\n moveUp: 'Move {name} up',\n moveDown: 'Move {name} down',\n openLevel: 'Order what sits inside {name}',\n childCount: { one: '1 item inside', other: '{count} items inside' },\n movedTo: '{name}: position {position} of {total}',\n reorderLoadError: 'Could not load the menu. Try again.',\n reorderSaveError: 'Could not save the order. Nothing was lost: try again.',\n reorderSave: 'Save order',\n newGroup: 'New group',\n editGroup: 'Edit group',\n groupsCaption: 'Project groups',\n noGroups: 'No groups yet.',\n accessLevel: 'Access level',\n pickAccessLevel: 'Select a level',\n noLevel: 'No level',\n noGroupsOfLevel: 'No groups at this level.',\n colStatus: 'Status',\n groupName: 'Name',\n groupType: 'Type',\n groupTypePlaceholder: 'Select the type',\n groupDescription: 'Description (optional)',\n openGroup: 'Open the {name} group',\n adminGroupTag: 'Administration',\n adminGroupNote:\n \"The project's administration group: its members manage this app in self-service. It is the only one in the project and can't be deleted, renamed, disabled or change type, nor be left without members.\",\n adminGroupEditNote: \"The project's administration group: only the description can change.\",\n adminGroupLastMemberWarning: \"The administration group can't be left without members: add someone else or undo a removal.\",\n confirmDeleteGroupHeading: 'Delete group?',\n confirmDeleteGroup:\n 'The {name} group will be deleted along with its members, screen access and application permissions. This cannot be undone.',\n groupSaveError: 'Could not save the group. Try again.',\n membersSaveError: 'Could not save all member changes. Check the list and try again.',\n appsCaption: 'Project applications',\n noApps: 'No applications registered yet.',\n colGrants: 'Grants',\n openApp: 'Open the application {name}',\n tabTokens: 'Tokens',\n tokensCaption: 'Application tokens',\n noTokens: 'No tokens created for this application yet.',\n newToken: 'New token',\n colTokenPrefix: 'Token prefix',\n colExpiresAt: 'Expires',\n colLastUsed: 'Last used',\n tokenExpired: 'Expired',\n tokenRevoked: 'Revoked',\n neverUsed: 'Never',\n revokeToken: 'Revoke',\n confirmRevokeTokenHeading: 'Revoke token?',\n confirmRevokeToken: 'The token {name} stops working right away. Revoking cannot be undone.',\n tokenRevokedDone: 'Token {name} revoked.',\n tokenRevokeError: 'Could not revoke the token. Try again.',\n tokensLoadError: 'Could not load the application tokens.',\n tokenName: 'Name',\n tokenDescription: 'Description (optional)',\n tokenExpiresAt: 'Expires on',\n tokenExpiresHint: 'From tomorrow up to 365 days from today.',\n tokenExpiresInvalid: 'Pick a date between tomorrow and 365 days from today.',\n tokenOperations: 'Operations granted to the token',\n tokenOperationsNote: 'Nothing comes checked: a token has no login, so check the protected and private operations it may call. Public ones need no token.',\n freeForAll: 'open to everyone',\n freeForAuthenticated: 'open to authenticated callers',\n freeNoPermission: 'does not depend on permission',\n publicNoToken: 'public: no token needed',\n createToken: 'Create token',\n tokenSaveError: 'Could not create the token. Try again.',\n tokenCreatedHeading: 'Token {name} created',\n tokenCreatedWarning: 'Copy it now: the token will not be shown again.',\n tokenCreatedNote: 'Send it in the x-api-token header. The server keeps only a hash of the token; if it is lost, revoke it and create another.',\n tokenValueLabel: 'Token {name}',\n copyToken: 'Copy',\n tokenCopied: 'Token copied.',\n hierarchyHint: 'Top-down: Navigation only with a Header, Menu only with a Navigation, Item only with a Menu and Submenu only with an Item. Clearing a level clears the ones below.',\n routerSaveError: 'Could not save the router. Try again.',\n permissionsSaveError: 'Could not save all operation changes. Reopen the panel and check.',\n permissionsSummaryGroup: '{marked} of {total} protected operations granted to the group.',\n permissionsSummaryToken: '{marked} of {total} operations granted to the token.',\n permissionsFreeGroup: {\n one: '1 operation does not depend on permission (public or private) and shows as checked.',\n other: '{count} operations do not depend on permission (public or private) and show as checked.',\n },\n permissionsFreeToken: {\n one: '1 public operation needs no token and cannot be granted.',\n other: '{count} public operations need no token and cannot be granted.',\n },\n permissionsFolderCount: '{marked} of {total}',\n permissionsTreeLabel: 'Operations',\n tokenErrors: {\n invalidExpiresAt: 'Invalid expiration date. Pick another date.',\n invalidValidity: 'The expiration must be between tomorrow and 365 days from today.',\n invalidOperationIds: 'Some selected operation no longer exists in this application. Reopen the form and choose again.',\n operationNotProtected: 'Only protected operations can be granted to a group; public and private ones already apply to it.',\n operationPublic: 'A public operation needs no token and cannot be granted to one. Uncheck it and try again.',\n appNotFound: 'Application not found in this client. It may have been deleted.',\n tokenNotFound: 'Token not found in this application. It may have been revoked already.',\n },\n routerErrors: {\n hierarchyGap: 'The hierarchy has an empty level in the middle: each level needs the one above it (Header → Navigation → Menu → Item → Submenu). Fill in the missing level or clear the ones below.',\n invalidAllowedTypes: 'A chosen badge no longer exists. Review the allowed badges.',\n },\n groupErrors: {\n invalidType: 'That group type no longer exists. Choose another type.',\n adminTypeReserved: \"The Administrator type belongs only to the project's administration group.\",\n emptyUpdate: 'Nothing to save: no field was changed.',\n groupProjectImmutable: \"A group can't move to another project.\",\n groupNameTaken: 'A group with this name already exists in this project.',\n adminGroupImmutable: \"The administration group can't be renamed, change type or be disabled.\",\n adminGroupProtected: \"The project's administration group can't be deleted.\",\n adminGroupLastMember: \"The administration group can't be left without members.\",\n adminGroupAccessProtected: \"The administration group's access to this app can't be removed.\",\n groupNotFound: 'Group not found in this project. It may have been deleted.',\n },\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 loginAttempts: {\n refresh: 'Refresh',\n user: 'User',\n userPlaceholder: 'User, e-mail or typed identifier',\n period: 'Period',\n result: 'Result',\n method: 'Method',\n all: 'All',\n clear: 'Clear',\n advancedFilters: 'Advanced filters',\n ip: 'IP or network',\n ipPlaceholder: '10.0.0.5 or 10.0.0.0/8',\n ipHint: 'Exact IP or a network in CIDR notation.',\n reason: 'Reason',\n caption: 'Login attempts',\n pageItems: 'attempts',\n pageSize: 'Attempts per page',\n colDate: 'Date/time',\n colResult: 'Result',\n colMethod: 'Method',\n colUser: 'User',\n colReason: 'Reason',\n colIp: 'IP',\n colRealm: 'Realm',\n colClient: 'Client',\n colUserAgent: 'Browser',\n filterByIp: 'Filter by this IP',\n filterByUser: 'Filter by this user',\n noMatchingUser: 'no matching user',\n methods: { local: 'Password', mfa: 'MFA', github: 'GitHub', google: 'Google', keycloak: 'Keycloak', entraid: 'Entra ID' },\n results: { success: 'Success', failure: 'Failure', cancelled: 'Cancelled' },\n reasons: {\n bad_password: 'Wrong password',\n unknown_user: 'Unknown or inactive user',\n locked: 'Account locked after failed attempts',\n mfa_failed: 'Wrong verification code',\n mfa_expired: 'Expired verification code',\n mfa_not_allowed: 'Verification method not allowed',\n mfa_invalid_method: 'Unknown verification method',\n recovery_failed: 'Recovery code wrong or already used',\n recovery_refused: 'Recovery code refused',\n not_linked: 'External account not linked',\n wrong_realm: 'User from another realm',\n },\n forbiddenAdmin: 'Your account cannot read login attempts. Ask an administrator for the admin:attempts:list operation.',\n forbiddenClient: 'Only the project administration group, with the Administrator badge active, sees the login attempts of this application.',\n loadErrorDetail: 'Could not load the attempts: {detail}',\n loadError: 'Could not load the login attempts.',\n },\n accountFeatures: {\n aiAgent: 'Connect an AI agent',\n aiAgentDescription: 'Generates the token and the MCP configuration to paste into Claude Code.',\n aiAgentKeywords: 'ai agent claude mcp assistant llm automation',\n aiAgentHelp: 'The agent uses a personal application token (x-app-token) with the permissions of the chosen access level. Revoke it under \"Application tokens\" when you no longer need it.',\n aiAgentStart: 'Connect agent',\n aiAgentServers: 'MCP servers',\n aiAgentAccess: 'Agent access',\n aiAgentReadOnly: 'Read only',\n aiAgentReadWrite: 'Read and write',\n aiAgentWriteHint: 'The agent will be able to change data on your behalf. Prefer read only when it is enough.',\n aiAgentReadOnlyServer: '{name} (read only)',\n aiAgentTokenName: 'AI agent ({date})',\n aiAgentGenerate: 'Generate configuration',\n aiAgentSelectServer: 'Choose at least one server.',\n aiAgentResult: 'Configuration ready',\n aiAgentResultHint: 'Paste into .mcp.json at the project root (Claude Code). The token is shown only now: copy it before finishing. Valid until {date}.',\n aiAgentCopy: 'Copy configuration',\n aiAgentCopied: 'Configuration copied. Do not share it: it contains your token.',\n aiAgentDone: 'Finish',\n aiAgentCreateError: 'Could not generate the agent token.',\n aiAgentUnavailable: 'Unavailable in this application: it is not connected to argos-admin.',\n activity: 'Account activity',\n activityDescription: 'Sign-ins and failed attempts in the last 90 days.',\n activityKeywords: 'login sign-in access history attempt failure ip browser security',\n activityFilter: 'Show',\n activityAll: 'All',\n activityFailures: 'Failures only',\n activityDetail: '{date} · IP {ip}',\n activityApp: 'Application: {app}',\n activityEmpty: 'Nothing in the last 90 days.',\n activityMore: 'Load more',\n activityShowing: '{shown} of {total}',\n activityLoadError: 'Could not load the account activity.',\n unknownIp: 'unknown',\n unknownApp: 'unnamed',\n idle: 'Sign out when idle',\n idleDescription: 'Signs out by itself after a while without use, with a warning first.',\n idleKeywords: 'idle inactivity timeout sign out automatic logout security lock',\n idleNever: 'Never',\n idleOption: '{minutes} min',\n idleLimitHint: 'This application signs out after at most {minutes} min without use.',\n idleWarningHeading: 'Your session is about to end',\n idleWarningText: { one: 'No activity for a while. The session ends in {count} second.', other: 'No activity for a while. The session ends in {count} seconds.' },\n idleStay: 'Stay signed in',\n idleLogout: 'Sign out now',\n startPage: 'Start page',\n startPageDescription: 'Where the application opens after signing in.',\n startPageKeywords: 'home opening login favorite last page',\n startHome: 'Home',\n startLast: 'Last visited page',\n startFavorite: 'Favorite: {name}',\n startPageHint: 'Mark pages as favorites to open on one of them.',\n defaultBadge: 'Default badge',\n defaultBadgeDescription: 'Access level you sign in with in this application, in any browser.',\n defaultBadgeKeywords: 'badge access level profile default login',\n defaultBadgeAuto: 'Automatic (the lowest level)',\n defaultBadgeSaved: 'Default badge saved. It applies from the next sign-in.',\n defaultBadgeError: 'Could not save the default badge.',\n defaultBadgeLoadError: 'Could not load your badges.',\n notices: 'Notifications',\n noticesDescription: 'The notices this application shows.',\n noticesKeywords: 'notification notice alert browser push',\n browserNotices: 'Browser notifications',\n browserNoticesDescription: 'System notification when the tab is in the background.',\n browserNoticesDenied: 'The browser blocked notifications for this site. Allow them in the browser settings.',\n browserNoticesUnsupported: 'This browser does not show notifications.',\n noticeOpen: 'Open',\n sync: 'Preferences in your account',\n syncDescription: 'Appearance, region, favorites and the other preferences follow you in any browser.',\n syncKeywords: 'sync cloud account browser preferences backup',\n syncSynced: 'Synced at {time}',\n syncSaving: 'Saving…',\n syncLocal: 'Only in this browser: the account is not available.',\n syncError: 'Could not sync. Try again.',\n syncNow: 'Sync now',\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 el del 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 muestra más información en 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: 'Cómo se abre y se cierra el menú lateral.',\n sidebarKeywords: 'sidebar navegación barra lateral',\n sidebarHelp: 'Automático: se abre al acercar el puntero. Fijo: siempre abierto. Compacto: muestra solo los íconos.',\n sidebarAuto: 'Automático',\n sidebarFixed: 'Fijo',\n sidebarCompact: 'Compacto',\n region: 'Región',\n regionKeywords: 'idioma localización horario fecha hora semana',\n language: 'Idioma',\n languageDescription: '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: 'Para fechas y horas. Ahora: {now}',\n timeZoneAuto: 'Automático ({zone})',\n hourCycle: 'Formato de hora',\n hourCycleHint: 'Ahora: {now}',\n hourCycleKeywords: 'reloj 24h 12h am pm horario',\n hourCycleAuto: 'Automático',\n hourCycle24: '24 horas',\n hourCycle12: '12 horas',\n weekStart: 'Primer día de la semana',\n weekStartDescription: 'Para calendarios y selectores de fecha.',\n weekStartKeywords: 'semana calendario domingo lunes',\n weekStartAuto: 'Automático',\n shortcuts: 'Atajos',\n shortcutsDescription: 'Pulsa ? en cualquier pantalla para ver esta lista.',\n shortcutsKeywords: 'teclado teclas',\n tour: 'Recorrido guiado',\n tourDescription: 'Muestra de nuevo dónde está cada parte de la pantalla.',\n tourKeywords: 'onboarding ayuda presentación',\n replayTour: 'Repetir recorrido',\n accessibility: 'Accesibilidad',\n accessibilityKeywords: 'accesibilidad lectura visión',\n textSize: 'Tamaño del texto',\n textSizeDescription: 'Agranda el texto y los controles de todas las pantallas.',\n textSizeKeywords: 'zoom fuente letra más grande ampliar',\n motion: 'Reducir animaciones',\n motionDescription: 'Sistema sigue la computadora o el celular.',\n motionKeywords: 'animación movimiento transición reducido mareo',\n motionSystem: 'Sistema',\n motionReduce: 'Siempre',\n motionFull: 'Nunca',\n help: 'Ayuda',\n helpKeywords: 'ayuda novedades recorrido presentación',\n news: 'Novedades',\n newsDescription: 'Lo que cambió en las últimas versiones.',\n newsKeywords: 'novedades versión lanzamiento changelog',\n showNews: 'Ver novedades',\n browserData: 'Datos del navegador',\n browserDataDescription: 'Guardados solo en este navegador, para tu cuenta.',\n browserDataKeywords: 'privacidad limpiar borrar historial datos',\n recentPages: 'Páginas recientes',\n recentPagesKeywords: 'historial visitadas recientes',\n recentSearches: 'Búsquedas recientes',\n recentSearchesKeywords: 'búsqueda historial',\n favorites: 'Favoritos',\n favoritesKeywords: 'favoritos estrella',\n pagesCount: { zero: 'Ninguna página guardada', one: '{count} página guardada', other: '{count} páginas guardadas' },\n searchesCount: { zero: 'Ninguna búsqueda guardada', one: '{count} búsqueda guardada', other: '{count} búsquedas guardadas' },\n clear: 'Limpiar',\n confirmClear: 'Confirmar',\n cancel: 'Cancelar',\n recentPagesCleared: 'Páginas recientes borradas.',\n recentSearchesCleared: 'Búsquedas recientes borradas.',\n favoritesCleared: 'Favoritos borrados.',\n restorePreferences: 'Preferencias',\n restorePreferencesDescription: 'Apariencia, accesibilidad y formatos vuelven a los valores predeterminados.',\n restorePreferencesHelp: 'Vuelven a lo predeterminado: tema, color principal, densidad, fuente, menú lateral, tamaño del texto, animaciones, formato de hora y primer día de la semana. El idioma, la zona horaria y los atajos de una sola tecla se mantienen.',\n restorePreferencesKeywords: 'restaurar predeterminado restablecer reset preferencias',\n restore: 'Restaurar',\n confirmRestore: 'Confirmar',\n preferencesRestored: 'Preferencias restauradas.',\n account: 'Cuenta',\n accountKeywords: 'perfil usuario login nivel salir',\n user: 'Usuario',\n accessLevel: 'Nivel de acceso',\n accessLevelKeywords: 'credencial badge perfil permiso grupo',\n session: 'Sesión',\n sessionDescription: '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. No lo compartas.',\n accessTokenKeywords: 'jwt bearer api desarrollador',\n copy: 'Copiar',\n moreAbout: 'Más sobre {label}',\n appTokens: 'Tokens de aplicación',\n appTokensDescription: 'Para usar la aplicación fuera de la interfaz: un MCP, un script.',\n appTokensKeywords: 'token app mcp api clave pat x-app-token automatización script integración',\n appTokensHelp: 'El token vale solo para esta aplicación, con los permisos del nivel de acceso elegido, y vence en como máximo 1 año. Envíalo en el encabezado x-app-token.',\n logout: 'Salir',\n logoutDescription: 'Cierra la sesión en este navegador.',\n logoutKeywords: 'logout desconectar',\n mfa: 'MFA',\n mfaDescription: 'Verificación en dos pasos de tu cuenta en Argos.',\n mfaKeywords: 'seguridad argos contraseña autenticación mfa 2fa dos factores dos pasos verificación',\n signedInAccount: 'Cuenta de Argos',\n signedInRealm: 'Realm {realm}',\n twoFactor: 'Verificación en dos pasos',\n twoFactorDescription: 'Un código además de la contraseña para entrar.',\n twoFactorKeywords: 'mfa 2fa totp autenticador authenticator código correo método dispositivo celular',\n recoveryCodes: 'Códigos de recuperación',\n recoveryCodesDescription: 'Para entrar si pierdes el dispositivo.',\n recoveryCodesKeywords: 'respaldo recuperación perdí celular dispositivo mfa 2fa',\n sessions: 'Sesiones y dispositivos',\n sessionsDescription: 'Dónde está conectada tu cuenta.',\n sessionsKeywords: 'dispositivos navegador ip cerrar desconectar salir conectados',\n sessionsSection: 'Sesiones',\n sessionsSectionDescription: 'Esta sesión, los tokens de aplicación y los dispositivos conectados.',\n sessionsSectionKeywords: 'sesión sesiones token tokens dispositivos login seguridad',\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: 'Versión, entorno, navegador y preferencias, para pegar 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 accountSecurity: {\n loading: 'Cargando…',\n loadError: 'No se pudo cargar tu cuenta de Argos.',\n sessionEnded: 'La sesión de este inicio de sesión terminó en Argos. Inicia sesión de nuevo para administrar la cuenta.',\n retry: 'Intentar de nuevo',\n methodTotp: 'Aplicación de autenticación',\n methodEmail: 'Correo electrónico',\n methodSms: 'SMS',\n active: 'Activo',\n activeWithDetail: 'Activo · {detail}',\n notRegistered: 'No registrado',\n unavailable: 'No disponible',\n requiredHint: 'Obligatoria en este entorno: mantén al menos un método.',\n add: 'Agregar',\n replaceDevice: 'Cambiar dispositivo',\n remove: 'Quitar',\n cancel: 'Cancelar',\n confirm: 'Confirmar',\n removeTitle: '¿Quitar {method}?',\n removeHint: 'Ya no podrás usar este método para iniciar sesión.',\n removeLastHint: 'Sin ningún método, los códigos de recuperación también dejan de valer.',\n reauthTitle: 'Confirma tu identidad',\n reauthHint: 'Por seguridad, confirma antes de continuar. Vale por 5 minutos.',\n reauthHow: 'Cómo confirmar',\n reauthPassword: 'Contraseña',\n reauthRecoveryCode: 'Código de recuperación',\n currentPassword: 'Contraseña actual',\n passwordRequired: 'Ingresa la contraseña.',\n recoveryCode: 'Código de recuperación',\n recoveryCodePlaceholder: 'XXXXX-XXXXX',\n recoveryCodeRequired: 'Ingresa el código.',\n recoveryCodeLength: 'El código tiene 10 letras y números.',\n sendEmailCode: 'Enviar un código al correo registrado',\n sixDigitCode: 'Código de 6 dígitos',\n totpTitle: 'Escanea el código QR con la aplicación de autenticación',\n qrAlt: 'Código QR para configurar la aplicación de autenticación',\n manualKey: '¿Sin cámara? Escribe la clave:',\n appCode: 'Código de la aplicación',\n emailTitle: 'Registrar correo electrónico',\n email: 'Correo electrónico',\n emailPlaceholder: 'nombre@empresa.com',\n emailRequired: 'Ingresa el correo electrónico.',\n emailInvalid: 'Ingresa un correo electrónico válido.',\n sendCode: 'Enviar código',\n emailCodeTitle: 'Confirma el correo electrónico',\n emailCodeHint: 'Escribe el código de 6 dígitos enviado a {email}.',\n codesRemaining: { zero: 'Ningún código disponible', one: '1 código disponible', other: '{count} códigos disponibles' },\n codesHint: 'Cada uno vale una vez. Generar nuevos invalida los anteriores.',\n codesNeedMethod: 'Registra un método de verificación para generar códigos de recuperación.',\n generateCodes: 'Generar códigos',\n regenerateCodes: 'Generar códigos nuevos',\n codesTitle: 'Tus códigos de recuperación',\n codesShownOnce: 'Guárdalos en un lugar seguro: no se volverán a mostrar. Cada uno vale una vez.',\n copyCodes: 'Copiar',\n downloadCodes: 'Descargar .txt',\n codesCopied: 'Códigos copiados.',\n copyFailed: 'No se pudo copiar. Selecciona los códigos y cópialos manualmente.',\n codesSaved: 'Ya guardé los códigos',\n codesFileHeader: 'Códigos de recuperación de Argos (cada uno vale una vez)',\n codesFileName: 'codigos-de-recuperacion.txt',\n notices: {\n methodAdded: 'Método registrado.',\n deviceReplaced: 'Dispositivo cambiado. El anterior ya no genera códigos válidos.',\n methodRemoved: 'Método quitado.',\n codesRegenerated: 'Códigos de recuperación generados. Los anteriores ya no valen.',\n reauthCodeSent: 'Enviamos un código al correo registrado.',\n },\n errors: {\n generic: 'No se pudo completar. Intenta de nuevo.',\n network: 'No se pudo conectar con Argos. Revisa la conexión e intenta de nuevo.',\n login_required: 'La sesión de este inicio de sesión terminó en Argos. Inicia sesión de nuevo para administrar la cuenta.',\n invalid_token: 'La sesión de este inicio de sesión terminó en Argos. Inicia sesión de nuevo para administrar la cuenta.',\n reauthentication_required: 'La confirmación de identidad venció. Confirma de nuevo para continuar.',\n invalid_password: 'Contraseña incorrecta.',\n account_locked: 'Demasiados intentos con la contraseña. La cuenta quedó bloqueada unos minutos.',\n invalid_code: 'Código incorrecto.',\n invalid_recovery_code: 'Código de recuperación inválido o ya usado.',\n code_expired: 'El código venció. Pide otro.',\n code_not_requested: 'Pide el código antes de escribirlo.',\n too_many_attempts: 'Demasiados intentos. Espera unos minutos e intenta de nuevo.',\n too_many_requests: 'Espera un poco antes de pedir otro código.',\n mfa_method_not_allowed: 'Este método no se acepta en este entorno.',\n mfa_method_not_found: 'Este método ya no estaba registrado.',\n mfa_last_method: 'La verificación en dos pasos es obligatoria: mantén al menos un método.',\n invalid_email: 'Ingresa un correo electrónico válido.',\n enrollment_not_started: 'El registro venció. Empieza de nuevo.',\n sms_not_available: 'SMS no disponible.',\n mfa_required_for_recovery_codes: 'Registra un método de verificación antes de generar códigos.',\n session_not_found: 'La sesión ya se había cerrado.',\n },\n sessionsEmpty: 'Ninguna sesión activa.',\n thisSession: 'Esta sesión',\n thisBrowser: 'Este navegador',\n appsOnly: 'Solo aplicaciones',\n sessionDetail: 'IP {ip} · último uso {date}',\n unknownIp: 'desconocida',\n sessionSince: 'Desde {date}',\n sessionApps: 'Aplicaciones: {apps}',\n unnamedApp: 'Aplicación',\n endSession: 'Cerrar',\n confirmEndSession: 'Confirmar cierre',\n endOthers: 'Cerrar todas las demás',\n endOthersConfirm: {\n one: '¿Cerrar la otra sesión? Las aplicaciones abiertas en ella pedirán iniciar sesión de nuevo.',\n other: '¿Cerrar las {count} otras sesiones? Las aplicaciones abiertas en ellas pedirán iniciar sesión de nuevo.',\n },\n sessionEndedNotice: 'Sesión cerrada.',\n othersEndedNotice: { zero: 'Ninguna sesión cerrada.', one: '1 sesión cerrada.', other: '{count} sesiones cerradas.' },\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 logoutFailed: 'No se pudo cerrar la sesión ahora. Verifica la conexión e inténtalo de nuevo.',\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 'No administras esta app. Necesitas (a) estar en el grupo de administración de su proyecto 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 quien administra el proyecto.',\n pickClient: 'Selecciona el client que quieres administrar',\n groupsTitle: 'Grupos',\n groupsIntro: 'Crea, edita y elimina los grupos de este client y gestiona sus miembros — 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 colAllowedBadges: 'Credenciales permitidas',\n anyBadge: 'Cualquier credencial',\n allowedBadgesHint: 'Vacío = cualquier credencial. Con una o más elegidas, solo los grupos con una de esas credenciales pueden recibir acceso a esta pantalla en la pestaña Acceso.',\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 rotateSecret: 'Generar nuevo secreto',\n confirmRotateSecretHeading: '¿Generar un nuevo secreto?',\n confirmRotateSecret: 'El secreto actual deja de funcionar de inmediato; actualice el APP_SECRET del servicio que usa esta aplicación. Los tokens ya emitidos valen hasta que expiren (hasta 1 hora).',\n rotatedSecretHeading: 'Nuevo secreto de {name}',\n rotatedSecretWarning: 'Cópielo ahora: el secreto no se volverá a mostrar.',\n rotatedSecretNote: 'El servidor guarda solo un hash del secreto. Al cerrar esta ventana no hay forma de consultarlo; si se pierde, genere otro.',\n rotatedSecretLabel: 'Secreto de la aplicación {name}',\n copySecret: 'Copiar',\n secretCopied: 'Secreto copiado.',\n rotatedSecretDone: 'Listo',\n rotateSecretError: 'No se pudo generar el nuevo secreto. Inténtelo de nuevo.',\n rotateSecretNotFound: 'Aplicación no encontrada en este client.',\n rotateSecretForbidden: 'Usted no administra este client.',\n confirmDeleteAppHeading: '¿Eliminar aplicación?',\n confirmDeleteApp: 'La aplicación {name} se eliminará y su credencial dejará de funcionar. Esta acción no se puede deshacer.',\n confirmDeleteRouteHeading: '¿Eliminar ruta?',\n confirmDeleteRoute: 'La ruta {name} se eliminará de este cliente. Esta acción no se puede deshacer.',\n confirmDeleteRouterHeading: '¿Eliminar enrutador?',\n confirmDeleteRouter: 'El enrutador {path} se eliminará y la página sale del menú. Esta acción no se puede deshacer.',\n confirmRemoveAccessHeading: '¿Quitar acceso?',\n confirmRemoveAccess: 'El grupo {group} pierde el acceso a las rutas privadas de este cliente.',\n confirmRemoveConsumerHeading: '¿Quitar acceso a la aplicación?',\n confirmRemoveConsumer: 'El grupo {group} deja de consumir esta aplicación y pierde sus permisos de operación.',\n deleteDone: 'Eliminación completada.',\n deleteError: 'No se pudo eliminar. Inténtalo de nuevo.',\n colExcludable: 'Eliminable',\n excludableYes: 'Sí',\n excludableNo: 'No',\n colName: 'Nombre',\n colDisplay: 'Visible',\n colIcon: 'Ícono',\n colPath: 'Path',\n reorder: 'Reordenar',\n reorderTitle: 'Reordenar menú',\n reorderHint: 'Cambie el orden en que los elementos aparecen en el menú de la app: arrastre por el asa (o, con el teclado, Espacio en el asa y las flechas) o use los botones de subir y bajar. Para ordenar lo que hay dentro de un elemento, entre en él.',\n reorderPath: 'Nivel del menú',\n reorderRoot: 'Inicio del menú',\n reorderListLabel: 'Orden en {name}',\n reorderEmpty: 'Ningún enrutador registrado para ordenar.',\n moveUp: 'Mover {name} hacia arriba',\n moveDown: 'Mover {name} hacia abajo',\n openLevel: 'Ordenar lo que hay dentro de {name}',\n childCount: { one: '1 elemento dentro', other: '{count} elementos dentro' },\n movedTo: '{name}: posición {position} de {total}',\n reorderLoadError: 'No se pudo cargar el menú. Inténtelo de nuevo.',\n reorderSaveError: 'No se pudo guardar el orden. No se perdió nada: inténtelo de nuevo.',\n reorderSave: 'Guardar orden',\n newGroup: 'Nuevo grupo',\n editGroup: 'Editar grupo',\n groupsCaption: 'Grupos del proyecto',\n noGroups: 'Aún no hay grupos registrados.',\n accessLevel: 'Nivel de acceso',\n pickAccessLevel: 'Selecciona un nivel',\n noLevel: 'Sin nivel',\n noGroupsOfLevel: 'Ningún grupo en este nivel.',\n colStatus: 'Estado',\n groupName: 'Nombre',\n groupType: 'Tipo',\n groupTypePlaceholder: 'Selecciona el tipo',\n groupDescription: 'Descripción (opcional)',\n openGroup: 'Abrir el grupo {name}',\n adminGroupTag: 'Administración',\n adminGroupNote:\n 'Grupo de administración del proyecto: sus miembros administran esta app en el autoservicio. Es el único del proyecto, no se puede eliminar, renombrar, desactivar ni cambiar de tipo, y no puede quedarse sin miembros.',\n adminGroupEditNote: 'Grupo de administración del proyecto: solo se puede cambiar la descripción.',\n adminGroupLastMemberWarning: 'El grupo de administración no puede quedarse sin miembros: agrega a otra persona o deshaz una eliminación.',\n confirmDeleteGroupHeading: '¿Eliminar grupo?',\n confirmDeleteGroup:\n 'El grupo {name} se eliminará junto con sus miembros, los accesos a pantallas y los permisos en aplicaciones. Esta acción no se puede deshacer.',\n groupSaveError: 'No se pudo guardar el grupo. Inténtalo de nuevo.',\n membersSaveError: 'No se pudieron guardar todos los cambios de los miembros. Revisa la lista e inténtalo de nuevo.',\n appsCaption: 'Aplicaciones del proyecto',\n noApps: 'Ninguna aplicación registrada todavía.',\n colGrants: 'Grants',\n openApp: 'Abrir la aplicación {name}',\n tabTokens: 'Tokens',\n tokensCaption: 'Tokens de la aplicación',\n noTokens: 'Ningún token creado para esta aplicación todavía.',\n newToken: 'Nuevo token',\n colTokenPrefix: 'Inicio del token',\n colExpiresAt: 'Vence',\n colLastUsed: 'Último uso',\n tokenExpired: 'Vencido',\n tokenRevoked: 'Revocado',\n neverUsed: 'Nunca',\n revokeToken: 'Revocar',\n confirmRevokeTokenHeading: '¿Revocar token?',\n confirmRevokeToken: 'El token {name} deja de funcionar de inmediato. La revocación no se puede deshacer.',\n tokenRevokedDone: 'Token {name} revocado.',\n tokenRevokeError: 'No se pudo revocar el token. Inténtalo de nuevo.',\n tokensLoadError: 'No se pudieron cargar los tokens de la aplicación.',\n tokenName: 'Nombre',\n tokenDescription: 'Descripción (opcional)',\n tokenExpiresAt: 'Vence el',\n tokenExpiresHint: 'Desde mañana hasta 365 días a partir de hoy.',\n tokenExpiresInvalid: 'Elige una fecha entre mañana y 365 días a partir de hoy.',\n tokenOperations: 'Operaciones concedidas al token',\n tokenOperationsNote: 'Nada viene marcado: el token no tiene login, así que marca las operaciones protected y private que puede llamar. Las public no necesitan token.',\n freeForAll: 'abierta a todos',\n freeForAuthenticated: 'abierta a autenticados',\n freeNoPermission: 'no depende de permiso',\n publicNoToken: 'pública: no necesita token',\n createToken: 'Crear token',\n tokenSaveError: 'No se pudo crear el token. Inténtalo de nuevo.',\n tokenCreatedHeading: 'Token {name} creado',\n tokenCreatedWarning: 'Cópialo ahora: el token no se mostrará de nuevo.',\n tokenCreatedNote: 'Envíalo en el encabezado x-api-token. El servidor guarda solo un hash del token; si se pierde, revócalo y crea otro.',\n tokenValueLabel: 'Token {name}',\n copyToken: 'Copiar',\n tokenCopied: 'Token copiado.',\n hierarchyHint: 'De arriba hacia abajo: Navegación solo con Header, Menú solo con Navegación, Ítem solo con Menú y Submenú solo con Ítem. Borrar un nivel borra los de abajo.',\n routerSaveError: 'No se pudo guardar el enrutador. Inténtalo de nuevo.',\n permissionsSaveError: 'No se pudieron guardar todos los cambios de las operaciones. Vuelve a abrir el panel y revisa.',\n permissionsSummaryGroup: '{marked} de {total} operaciones protegidas liberadas para el grupo.',\n permissionsSummaryToken: '{marked} de {total} operaciones liberadas para el token.',\n permissionsFreeGroup: {\n one: '1 operación no depende de permiso (public o private) y aparece marcada.',\n other: '{count} operaciones no dependen de permiso (public o private) y aparecen marcadas.',\n },\n permissionsFreeToken: {\n one: '1 operación public no necesita token y no se puede liberar.',\n other: '{count} operaciones public no necesitan token y no se pueden liberar.',\n },\n permissionsFolderCount: '{marked} de {total}',\n permissionsTreeLabel: 'Operaciones',\n tokenErrors: {\n invalidExpiresAt: 'Fecha de vencimiento no válida. Elige otra fecha.',\n invalidValidity: 'El vencimiento debe estar entre mañana y 365 días a partir de hoy.',\n invalidOperationIds: 'Alguna operación elegida ya no existe en esta aplicación. Vuelve a abrir el formulario y elige de nuevo.',\n operationNotProtected: 'Solo las operaciones protected se pueden conceder a un grupo; las public y private ya valen para él.',\n operationPublic: 'Una operación pública no necesita token y no se le puede conceder. Desmárcala e inténtalo de nuevo.',\n appNotFound: 'Aplicación no encontrada en este client. Puede haber sido eliminada.',\n tokenNotFound: 'Token no encontrado en esta aplicación. Puede que ya haya sido revocado.',\n },\n routerErrors: {\n hierarchyGap: 'La jerarquía tiene un nivel vacío en el medio: cada nivel necesita el de arriba (Header → Navegación → Menú → Ítem → Submenú). Completa el nivel que falta o borra los de abajo.',\n invalidAllowedTypes: 'Alguna credencial elegida ya no existe. Revisa las credenciales permitidas.',\n },\n groupErrors: {\n invalidType: 'Ese tipo de grupo ya no existe. Elige otro tipo.',\n adminTypeReserved: 'El tipo Administrador es solo del grupo de administración del proyecto.',\n emptyUpdate: 'Nada que guardar: no se cambió ningún campo.',\n groupProjectImmutable: 'El grupo no cambia de proyecto.',\n groupNameTaken: 'Ya existe un grupo con ese nombre en este proyecto.',\n adminGroupImmutable: 'El grupo de administración no cambia de nombre ni de tipo, ni se desactiva.',\n adminGroupProtected: 'El grupo de administración del proyecto no se puede eliminar.',\n adminGroupLastMember: 'El grupo de administración no puede quedarse sin miembros.',\n adminGroupAccessProtected: 'El acceso del grupo de administración a esta app no se puede quitar.',\n groupNotFound: 'Grupo no encontrado en este proyecto. Puede que se haya eliminado.',\n },\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 loginAttempts: {\n refresh: 'Actualizar',\n user: 'Usuario',\n userPlaceholder: 'Usuario, correo o identificador escrito',\n period: 'Período',\n result: 'Resultado',\n method: 'Método',\n all: 'Todos',\n clear: 'Limpiar',\n advancedFilters: 'Filtros avanzados',\n ip: 'IP o red',\n ipPlaceholder: '10.0.0.5 o 10.0.0.0/8',\n ipHint: 'IP exacta o red en notación CIDR.',\n reason: 'Motivo',\n caption: 'Intentos de inicio de sesión',\n pageItems: 'intentos',\n pageSize: 'Intentos por página',\n colDate: 'Fecha/hora',\n colResult: 'Resultado',\n colMethod: 'Método',\n colUser: 'Usuario',\n colReason: 'Motivo',\n colIp: 'IP',\n colRealm: 'Realm',\n colClient: 'Client',\n colUserAgent: 'Navegador',\n filterByIp: 'Filtrar por esta IP',\n filterByUser: 'Filtrar por este usuario',\n noMatchingUser: 'sin usuario correspondiente',\n methods: { local: 'Contraseña', mfa: 'MFA', github: 'GitHub', google: 'Google', keycloak: 'Keycloak', entraid: 'Entra ID' },\n results: { success: 'Éxito', failure: 'Fallo', cancelled: 'Cancelado' },\n reasons: {\n bad_password: 'Contraseña incorrecta',\n unknown_user: 'Usuario inexistente o inactivo',\n locked: 'Cuenta bloqueada por intentos',\n mfa_failed: 'Código de verificación incorrecto',\n mfa_expired: 'Código de verificación vencido',\n mfa_not_allowed: 'Método de verificación no permitido',\n mfa_invalid_method: 'Método de verificación desconocido',\n recovery_failed: 'Código de recuperación incorrecto o ya usado',\n recovery_refused: 'Código de recuperación rechazado',\n not_linked: 'Cuenta externa no vinculada',\n wrong_realm: 'Usuario de otro realm',\n },\n forbiddenAdmin: 'Tu cuenta no puede consultar los intentos de inicio de sesión. Pide a un administrador la operación admin:attempts:list.',\n forbiddenClient: 'Solo el grupo de administración del proyecto, con la insignia Administrador activa, ve los intentos de inicio de sesión de esta aplicación.',\n loadErrorDetail: 'No se pudieron cargar los intentos: {detail}',\n loadError: 'No se pudieron cargar los intentos de inicio de sesión.',\n },\n accountFeatures: {\n aiAgent: 'Conectar un agente de IA',\n aiAgentDescription: 'Genera el token y la configuración MCP para pegar en Claude Code.',\n aiAgentKeywords: 'ia agente claude mcp asistente llm automatización',\n aiAgentHelp: 'El agente usa un token de aplicación personal (x-app-token) con los permisos del nivel de acceso elegido. Revóquelo en \"Tokens de aplicación\" cuando ya no lo necesite.',\n aiAgentStart: 'Conectar agente',\n aiAgentServers: 'Servidores MCP',\n aiAgentAccess: 'Acceso del agente',\n aiAgentReadOnly: 'Solo lectura',\n aiAgentReadWrite: 'Lectura y escritura',\n aiAgentWriteHint: 'El agente podrá cambiar datos en su nombre. Prefiera solo lectura cuando sea suficiente.',\n aiAgentReadOnlyServer: '{name} (solo lectura)',\n aiAgentTokenName: 'Agente de IA ({date})',\n aiAgentGenerate: 'Generar configuración',\n aiAgentSelectServer: 'Elija al menos un servidor.',\n aiAgentResult: 'Configuración lista',\n aiAgentResultHint: 'Péguelo en .mcp.json, en la raíz del proyecto (Claude Code). El token aparece solo ahora: cópielo antes de terminar. Válido hasta {date}.',\n aiAgentCopy: 'Copiar configuración',\n aiAgentCopied: 'Configuración copiada. No la comparta: contiene su token.',\n aiAgentDone: 'Terminar',\n aiAgentCreateError: 'No fue posible generar el token del agente.',\n aiAgentUnavailable: 'No disponible en esta aplicación: no está conectada a argos-admin.',\n activity: 'Actividad de la cuenta',\n activityDescription: 'Inicios de sesión e intentos fallidos en los últimos 90 días.',\n activityKeywords: 'login acceso historial intento falla ip navegador seguridad',\n activityFilter: 'Mostrar',\n activityAll: 'Todas',\n activityFailures: 'Solo fallas',\n activityDetail: '{date} · IP {ip}',\n activityApp: 'Aplicación: {app}',\n activityEmpty: 'Nada en los últimos 90 días.',\n activityMore: 'Cargar más',\n activityShowing: '{shown} de {total}',\n activityLoadError: 'No fue posible cargar la actividad de la cuenta.',\n unknownIp: 'desconocido',\n unknownApp: 'sin nombre',\n idle: 'Cerrar por inactividad',\n idleDescription: 'Sale solo después de un tiempo sin uso, con un aviso antes.',\n idleKeywords: 'inactividad tiempo salir automático logout seguridad bloqueo',\n idleNever: 'Nunca',\n idleOption: '{minutes} min',\n idleLimitHint: 'Esta aplicación cierra la sesión en un máximo de {minutes} min sin uso.',\n idleWarningHeading: 'La sesión se va a cerrar',\n idleWarningText: { one: 'Sin actividad desde hace un tiempo. La sesión termina en {count} segundo.', other: 'Sin actividad desde hace un tiempo. La sesión termina en {count} segundos.' },\n idleStay: 'Seguir conectado',\n idleLogout: 'Salir ahora',\n startPage: 'Pantalla inicial',\n startPageDescription: 'Dónde se abre la aplicación después del inicio de sesión.',\n startPageKeywords: 'inicio apertura login favorito última pantalla',\n startHome: 'Inicio',\n startLast: 'Última pantalla visitada',\n startFavorite: 'Favorito: {name}',\n startPageHint: 'Marque pantallas como favoritas para abrir en una de ellas.',\n defaultBadge: 'Credencial predeterminada',\n defaultBadgeDescription: 'Nivel de acceso con el que entra en esta aplicación, en cualquier navegador.',\n defaultBadgeKeywords: 'credencial badge nivel acceso perfil predeterminado login',\n defaultBadgeAuto: 'Automático (el de menor nivel)',\n defaultBadgeSaved: 'Credencial predeterminada guardada. Vale desde el próximo inicio de sesión.',\n defaultBadgeError: 'No fue posible guardar la credencial predeterminada.',\n defaultBadgeLoadError: 'No fue posible cargar sus credenciales.',\n notices: 'Notificaciones',\n noticesDescription: 'Los avisos que muestra esta aplicación.',\n noticesKeywords: 'notificación aviso alerta navegador push',\n browserNotices: 'Avisos del navegador',\n browserNoticesDescription: 'Aviso del sistema cuando la pestaña está en segundo plano.',\n browserNoticesDenied: 'El navegador bloqueó las notificaciones de este sitio. Permítalas en la configuración del navegador.',\n browserNoticesUnsupported: 'Este navegador no muestra notificaciones.',\n noticeOpen: 'Abrir',\n sync: 'Preferencias en la cuenta',\n syncDescription: 'Apariencia, región, favoritos y las demás preferencias lo acompañan en cualquier navegador.',\n syncKeywords: 'sincronizar nube cuenta navegador preferencias respaldo',\n syncSynced: 'Sincronizado a las {time}',\n syncSaving: 'Guardando…',\n syncLocal: 'Solo en este navegador: la cuenta no está disponible.',\n syncError: 'No fue posible sincronizar. Inténtelo de nuevo.',\n syncNow: 'Sincronizar ahora',\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 *\n * `meta.locale` é o de formatação da lib (`HermesI18nService.formatLocale`) quando a língua é a mesma: a\n * variante regional (`en-GB`) e o relógio/primeiro dia da semana escolhidos em Região valem também nas\n * datas e horas que o spine formata.\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 picked = i18n.pick(catalogs, SPINE_MESSAGES_PT_BR);\n const base = config.override ? mergeCatalog(config.override, picked) : picked;\n const locale = i18n.formatLocale();\n const sameLanguage = locale.split('-')[0].toLowerCase() === base.meta.locale.split('-')[0].toLowerCase();\n return sameLanguage && locale !== base.meta.locale ? { ...base, meta: { ...base.meta, locale } } : 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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"}
|
|
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/user-storage.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 * Recursos opcionais do painel de configurações (todos desligados sem configuração). Ver `SpineFeatures`.\n */\n features?: SpineFeatures;\n}\n\n/** Um servidor MCP do app, oferecido em Sessões › \"Conectar um agente de IA\". */\nexport interface SpineMcpServer {\n /** Nome da entrada no `.mcp.json` (ex.: `hefesto`). Letras, números, `-` e `_`. */\n name: string;\n /** URL do MCP. Relativa (`/hefesto/mcp`) é resolvida contra a origem da página. */\n url: string;\n /** Rótulo exibido (padrão: `name`). */\n label?: string;\n /** Valor de `x-mcp-scopes` no modo só leitura. Omitido: o header não vai (o MCP já é só leitura sem ele). */\n readScopes?: string;\n /** Valor de `x-mcp-scopes` no modo leitura e escrita (ex.: `deploy.*`). Omitido: o servidor só é oferecido para leitura. */\n writeScopes?: string;\n}\n\n/** Tipo de aviso que o app emite (`SpineNoticesService.notify`), ligável/desligável em Configurações › Notificações. */\nexport interface SpineNoticeType {\n /** Identificador estável (ex.: `deploy-concluido`): é a chave da preferência salva. */\n id: string;\n label: string;\n description?: string;\n /** Ligado enquanto a pessoa não escolher. Padrão: `true`. */\n defaultEnabled?: boolean;\n}\n\n/**\n * Recursos opcionais do painel de configurações. Cada um só aparece quando ligado aqui (e, quando depende do Argos,\n * com a API da conta disponível — `AUTH_CONFIG` com `authority`/`realmId`).\n */\nexport interface SpineFeatures {\n /** Sessões › \"Conectar um agente de IA\": gera um token de aplicação e a configuração MCP pronta para colar.\n * Precisa de `SPINE_ADMIN_API` (tokens de aplicação). */\n aiAgent?: { servers: readonly SpineMcpServer[] };\n /** MFA › \"Atividade da conta\": entradas e tentativas que falharam desta conta (últimos 90 dias, API da conta). */\n accountActivity?: boolean;\n /** Conta › \"Encerrar por inatividade\". `true` = opções padrão; `{ min, max }` limita os minutos (com `max` a\n * opção \"Nunca\" some e a escolha é limitada a ele). */\n idleTimeout?: boolean | { min?: number; max?: number };\n /** Conta › \"Tela inicial\": início, um favorito ou a última tela visitada, aplicada depois do login. */\n startPage?: boolean;\n /** Conta › \"Crachá padrão\": o nível de acesso com que o login entra (guardado no Argos, vale nos outros navegadores). */\n defaultBadge?: boolean;\n /** Configurações › Notificações: os tipos de aviso que o app emite e o aviso do navegador com a aba em segundo plano. */\n notices?: { types: readonly SpineNoticeType[] };\n /** Preferências (aparência, região, acessibilidade, favoritos, tela inicial…) guardadas também na conta do Argos,\n * para acompanharem a pessoa em qualquer navegador. Sem a API da conta, ficam só no navegador. */\n accountPreferences?: 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, HermesMotionService, HermesShortcutService, HermesZoomService } from '@trismegisto/angular';\nimport { HermesMotionPreference, TimeHourCycle, Weekday, normalizeMotionPreference, normalizeTextScale } from '@trismegisto/primitives';\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 TEXT_SCALE_SUFFIX = 'text_scale';\nconst MOTION_SUFFIX = 'motion';\nconst HOUR_CYCLE_SUFFIX = 'hour_cycle';\nconst WEEK_START_SUFFIX = 'week_start';\nconst IDLE_SUFFIX = 'idle_minutes';\nconst START_PAGE_SUFFIX = 'start_page';\nconst NOTICES_SUFFIX = 'notices';\nconst BROWSER_NOTICES_SUFFIX = 'browser_notices';\n\n/** Minutos de inatividade oferecidos em \"Encerrar por inatividade\" (0 = nunca). */\nexport const SPINE_IDLE_OPTIONS: readonly number[] = [0, 5, 15, 30, 60];\n\n/**\n * Tela inicial depois do login: `home` (a padrão do app), `last` (a última visitada) ou `fav:<id>` (um favorito,\n * pelo `id` do `SpineQuickAccessService`).\n */\nexport type SpineStartPagePreference = 'home' | 'last' | `fav:${string}`;\n\n/** Relógio escolhido em Região: vazio = o do idioma. */\nexport type SpineHourCyclePreference = '' | TimeHourCycle;\n/** Primeiro dia da semana escolhido em Região: `null` = o do idioma. */\nexport type SpineWeekStartPreference = Weekday | null;\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, relógio de\n * 12/24 h e primeiro dia da semana (`HermesI18nService.setRegionalFormat`), tamanho do texto\n * (`HermesZoomService.setTextScale`), movimento (`HermesMotionService.setPreference`) e o interruptor dos\n * atalhos de tecla única (WCAG 2.1.4) do `HermesShortcutService`.\n *\n * Também guarda as preferências dos recursos opcionais (`SpineFeatures`): minutos de inatividade, tela inicial,\n * tipos de aviso ligados e o aviso do navegador.\n *\n * Vive no navegador (localStorage, sincronizado entre abas). Com `SpineFeatures.accountPreferences`, o\n * `SpineAccountPreferencesService` (`@trismegisto/spine/layout`) espelha estes valores na conta do Argos e os aplica\n * pelos mesmos `set*` no login: quem lê `timeZone()` 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 textScaleKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${TEXT_SCALE_SUFFIX}`;\n private readonly motionKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${MOTION_SUFFIX}`;\n private readonly hourCycleKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${HOUR_CYCLE_SUFFIX}`;\n private readonly weekStartKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${WEEK_START_SUFFIX}`;\n private readonly shortcuts = inject(HermesShortcutService);\n private readonly i18n = inject(HermesI18nService);\n private readonly zoom = inject(HermesZoomService);\n private readonly motionService = inject(HermesMotionService);\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 /** Tamanho do texto (1 = 100%; os oferecidos em `HERMES_TEXT_SCALES`). */\n readonly textScale = signal(normalizeTextScale(this.read(this.textScaleKey)));\n\n /** Movimento: `system` segue o `prefers-reduced-motion`; `reduce` sempre reduz; `full` nunca. */\n readonly motion = signal<HermesMotionPreference>(normalizeMotionPreference(this.read(this.motionKey)));\n\n /** Relógio: `h23` (24 horas), `h12` (12 horas) ou vazio (o do idioma). */\n readonly hourCycle = signal<SpineHourCyclePreference>(toHourCycle(this.read(this.hourCycleKey)));\n\n /** Primeiro dia da semana (0 = domingo, 1 = segunda) ou `null` (o do idioma). */\n readonly weekStart = signal<SpineWeekStartPreference>(toWeekStart(this.read(this.weekStartKey)));\n\n private readonly idleKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${IDLE_SUFFIX}`;\n private readonly startPageKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${START_PAGE_SUFFIX}`;\n private readonly noticesKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${NOTICES_SUFFIX}`;\n private readonly browserNoticesKey = `${this.ns ? `hermes_${this.ns}` : 'hermes'}_${BROWSER_NOTICES_SUFFIX}`;\n\n /** Encerrar a sessão depois de tantos minutos sem uso (0 = nunca). Os limites do app (`SpineFeatures.idleTimeout`)\n * são aplicados por quem usa o valor (`SpineIdleService`), não aqui. */\n readonly idleMinutes = signal(toIdleMinutes(this.read(this.idleKey)));\n\n /** Tela que abre depois do login. */\n readonly startPage = signal<SpineStartPagePreference>(toStartPage(this.read(this.startPageKey)));\n\n /** Tipos de aviso que a pessoa ligou/desligou (`id` → ligado); tipo ausente segue o `defaultEnabled` dele. */\n readonly noticeTypes = signal<Readonly<Record<string, boolean>>>(toNoticeTypes(this.read(this.noticesKey)));\n\n /** Aviso do navegador (Notification API) quando a aba está em segundo plano. */\n readonly browserNotices = signal(this.read(this.browserNoticesKey) === 'on');\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 if (e.data?.type === 'TEXT_SCALE_CHANGED') this.applyTextScale(normalizeTextScale(e.data.value));\n if (e.data?.type === 'MOTION_CHANGED') this.applyMotion(normalizeMotionPreference(e.data.value));\n if (e.data?.type === 'HOUR_CYCLE_CHANGED') this.applyRegionalFormat(toHourCycle(e.data.value), this.weekStart());\n if (e.data?.type === 'WEEK_START_CHANGED') this.applyRegionalFormat(this.hourCycle(), toWeekStart(e.data.value));\n if (e.data?.type === 'IDLE_CHANGED') this.idleMinutes.set(toIdleMinutes(e.data.value));\n if (e.data?.type === 'START_PAGE_CHANGED') this.startPage.set(toStartPage(e.data.value));\n if (e.data?.type === 'NOTICES_CHANGED') this.noticeTypes.set(toNoticeTypes(JSON.stringify(e.data.value ?? {})));\n if (e.data?.type === 'BROWSER_NOTICES_CHANGED') this.browserNotices.set(e.data.value === true);\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.textScale() !== 1) this.zoom.setTextScale(this.textScale());\n if (this.motion() !== 'system') this.motionService.setPreference(this.motion());\n if (this.hourCycle() || this.weekStart() !== null) this.applyRegionalFormat(this.hourCycle(), this.weekStart());\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 /** Tamanho do texto na hora (1 = 100%), guarda e avisa as outras abas. */\n setTextScale(value: number): void {\n const scale = normalizeTextScale(value);\n this.applyTextScale(scale);\n this.write(this.textScaleKey, scale === 1 ? '' : String(scale));\n this.channel?.postMessage({ type: 'TEXT_SCALE_CHANGED', value: scale });\n }\n\n private applyTextScale(scale: number): void {\n this.textScale.set(scale);\n this.zoom.setTextScale(scale);\n }\n\n /** Movimento na hora (`system`/`reduce`/`full`), guarda e avisa as outras abas. */\n setMotion(value: HermesMotionPreference): void {\n const motion = normalizeMotionPreference(value);\n this.applyMotion(motion);\n this.write(this.motionKey, motion === 'system' ? '' : motion);\n this.channel?.postMessage({ type: 'MOTION_CHANGED', value: motion });\n }\n\n private applyMotion(motion: HermesMotionPreference): void {\n this.motion.set(motion);\n this.motionService.setPreference(motion);\n }\n\n /** Relógio na hora (`h23`/`h12`; vazio = o do idioma), guarda e avisa as outras abas. */\n setHourCycle(value: SpineHourCyclePreference): void {\n const cycle = toHourCycle(value);\n this.applyRegionalFormat(cycle, this.weekStart());\n this.write(this.hourCycleKey, cycle);\n this.channel?.postMessage({ type: 'HOUR_CYCLE_CHANGED', value: cycle });\n }\n\n /** Primeiro dia da semana na hora (0 = domingo, 1 = segunda; `null` = o do idioma), guarda e avisa. */\n setWeekStart(value: SpineWeekStartPreference): void {\n const day = toWeekStart(value);\n this.applyRegionalFormat(this.hourCycle(), day);\n this.write(this.weekStartKey, day === null ? '' : String(day));\n this.channel?.postMessage({ type: 'WEEK_START_CHANGED', value: day });\n }\n\n private applyRegionalFormat(hourCycle: SpineHourCyclePreference, weekStart: SpineWeekStartPreference): void {\n this.hourCycle.set(hourCycle);\n this.weekStart.set(weekStart);\n this.i18n.setRegionalFormat({ hourCycle: hourCycle || null, firstDayOfWeek: weekStart });\n }\n\n /** Minutos sem uso até encerrar a sessão (0 = nunca), guarda e avisa as outras abas. */\n setIdleMinutes(value: number): void {\n const minutes = toIdleMinutes(value);\n this.idleMinutes.set(minutes);\n this.write(this.idleKey, minutes ? String(minutes) : '');\n this.channel?.postMessage({ type: 'IDLE_CHANGED', value: minutes });\n }\n\n /** Tela inicial depois do login, guarda e avisa as outras abas. */\n setStartPage(value: SpineStartPagePreference): void {\n const page = toStartPage(value);\n this.startPage.set(page);\n this.write(this.startPageKey, page === 'home' ? '' : page);\n this.channel?.postMessage({ type: 'START_PAGE_CHANGED', value: page });\n }\n\n /** Liga/desliga um tipo de aviso, guarda e avisa as outras abas. */\n setNoticeType(id: string, enabled: boolean): void {\n this.setNoticeTypes({ ...this.noticeTypes(), [id]: enabled });\n }\n\n /** Troca o mapa inteiro de tipos de aviso (restaurar, sincronização com a conta). */\n setNoticeTypes(value: Readonly<Record<string, boolean>>): void {\n const types = toNoticeTypes(JSON.stringify(value ?? {}));\n this.noticeTypes.set(types);\n this.write(this.noticesKey, Object.keys(types).length ? JSON.stringify(types) : '');\n this.channel?.postMessage({ type: 'NOTICES_CHANGED', value: types });\n }\n\n /** Liga/desliga o aviso do navegador, guarda e avisa as outras abas (a permissão é pedida por quem chama). */\n setBrowserNotices(enabled: boolean): void {\n this.browserNotices.set(enabled);\n this.write(this.browserNoticesKey, enabled ? 'on' : '');\n this.channel?.postMessage({ type: 'BROWSER_NOTICES_CHANGED', value: enabled });\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\nfunction toIdleMinutes(value: unknown): number {\n const minutes = Number(value);\n return Number.isInteger(minutes) && minutes > 0 && minutes <= 24 * 60 ? minutes : 0;\n}\n\nfunction toStartPage(value: unknown): SpineStartPagePreference {\n if (value === 'last') return 'last';\n if (typeof value === 'string' && value.startsWith('fav:') && value.length > 4 && value.length <= 500) return value as `fav:${string}`;\n return 'home';\n}\n\n/** Texto JSON salvo → mapa `id` → booleano (o resto é descartado). */\nfunction toNoticeTypes(raw: string): Record<string, boolean> {\n let parsed: unknown;\n try { parsed = raw ? JSON.parse(raw) : {}; } catch { return {}; }\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return {};\n const out: Record<string, boolean> = {};\n for (const [id, enabled] of Object.entries(parsed as Record<string, unknown>)) {\n if (typeof enabled === 'boolean' && /^[\\w.:-]{1,64}$/.test(id)) out[id] = enabled;\n }\n return out;\n}\n\nfunction toHourCycle(value: unknown): SpineHourCyclePreference {\n return value === 'h12' || value === 'h23' ? value : '';\n}\n\n/** `0`…`6` (número ou texto salvo) → dia da semana; o resto, `null`. */\nfunction toWeekStart(value: unknown): SpineWeekStartPreference {\n if (value === null || value === undefined || value === '') return null;\n const day = Number(value);\n return Number.isInteger(day) && day >= 0 && day <= 6 ? (day as Weekday) : null;\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, Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { AuthorizationService } from '@orfeu/angular/core';\nimport { SPINE_CONFIG } from './app-config.token';\n\n/** Listas do shell guardadas no navegador, por usuário. */\nexport const SPINE_USER_STORAGE_KEYS = {\n favorites: 'nav_favorites',\n recents: 'nav_recent',\n recentSearches: 'header_recent_searches',\n /** Última tela visitada, guardada só com a tela inicial \"Última tela visitada\" (`SpineStartPageService`). */\n lastPage: 'start_last_page',\n} as const;\n\nexport type SpineUserStorageKey = (typeof SPINE_USER_STORAGE_KEYS)[keyof typeof SPINE_USER_STORAGE_KEYS];\n\n/** Históricos (o que a pessoa visitou/buscou): apagados no logout. Favoritos ficam (preferência do usuário). */\nconst HISTORY_KEYS: readonly SpineUserStorageKey[] = [SPINE_USER_STORAGE_KEYS.recents, SPINE_USER_STORAGE_KEYS.recentSearches];\n// A última tela (`lastPage`) fica no logout de propósito: é ela que a tela inicial \"Última tela visitada\" abre no\n// próximo login. Só é gravada quando a pessoa escolheu essa opção.\n\n/**\n * Chaves de `localStorage` do shell por usuário: `<clientId>_<lista>_<sub>`, com o `sub` do token da sessão.\n * Num computador compartilhado, uma pessoa não vê os recentes/buscas/favoritos de quem entrou antes.\n *\n * - Sem `sub` (sem sessão, ou app sem `@orfeu/angular`) a chave é a antiga, `<clientId>_<lista>`.\n * - Com `sub`, a chave antiga sem usuário é apagada (era compartilhada entre todas as contas do navegador).\n * - No logout (`clearHistory()`, chamado pelo `SpineLogoutService` só quando o `logout()` deu certo, e o `isAuth$`\n * indo para `false`, que cobre o logout vindo de outra aba) os HISTÓRICOS do usuário saem; os favoritos ficam.\n * Logout que falhou no Argos (`@orfeu/angular` 1.3.x) mantém a sessão e os históricos.\n */\n@Injectable({ providedIn: 'root' })\nexport class SpineUserStorage {\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly auth = inject(AuthorizationService, { optional: true });\n private readonly ns = inject(SPINE_CONFIG, { optional: true })?.clientId || 'app';\n private readonly listeners = new Set<() => void>();\n /** Último usuário visto: o token some no logout, mas a limpeza precisa saber de quem era. */\n private lastUser = '';\n\n constructor() {\n const isAuth$ = (this.auth as { isAuth$?: { subscribe(next: (v: boolean) => void): { unsubscribe(): void } } } | null)?.isAuth$;\n if (!this.browser || !isAuth$?.subscribe) return;\n let was = false;\n const sub = isAuth$.subscribe((authenticated) => {\n if (was && !authenticated) this.clearHistory();\n was = authenticated;\n this.notify();\n });\n inject(DestroyRef).onDestroy(() => sub.unsubscribe());\n }\n\n /** `sub` do token da sessão (só leitura do payload); vazio sem sessão. */\n userId(): string {\n let token: string | null | undefined;\n try {\n token = this.auth?.getToken();\n } catch {\n token = null;\n }\n const sub = token ? decodeSub(token) : '';\n if (sub) this.lastUser = sub;\n return sub;\n }\n\n /** Chave de `localStorage` da lista para o usuário atual. */\n key(list: SpineUserStorageKey): string {\n const user = this.userId();\n const legacy = `${this.ns}_${list}`;\n if (!user) return legacy;\n this.dropLegacy(legacy);\n return `${legacy}_${user}`;\n }\n\n /** Apaga buscas recentes e páginas recentes do usuário (o atual ou o último visto). Favoritos ficam. */\n clearHistory(): void {\n if (!this.browser) return;\n const user = this.userId() || this.lastUser;\n for (const list of HISTORY_KEYS) {\n try {\n localStorage.removeItem(user ? `${this.ns}_${list}_${user}` : `${this.ns}_${list}`);\n } catch {\n /* storage indisponível */\n }\n }\n this.notify();\n }\n\n /**\n * Apaga uma lista do usuário atual (Configurações › Dados do navegador): a chave dele, e também a antiga sem\n * usuário. Quem guarda a lista em memória relê (`onChange`).\n */\n clear(list: SpineUserStorageKey): void {\n if (!this.browser) return;\n try {\n localStorage.removeItem(this.key(list));\n localStorage.removeItem(`${this.ns}_${list}`);\n } catch {\n /* storage indisponível */\n }\n this.notify();\n }\n\n /** Quantos itens a lista do usuário atual tem guardados (0 sem nada ou com valor ilegível). */\n count(list: SpineUserStorageKey): number {\n if (!this.browser) return 0;\n try {\n const parsed: unknown = JSON.parse(localStorage.getItem(this.key(list)) ?? '[]');\n return Array.isArray(parsed) ? parsed.length : 0;\n } catch {\n return 0;\n }\n }\n\n /** Avisa quando a sessão muda ou o histórico é limpo (quem guarda a lista em memória relê). */\n onChange(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n private notify(): void {\n for (const listener of [...this.listeners]) listener();\n }\n\n private dropLegacy(key: string): void {\n if (!this.browser) return;\n try {\n if (localStorage.getItem(key) !== null) localStorage.removeItem(key);\n } catch {\n /* storage indisponível */\n }\n }\n}\n\nfunction decodeSub(token: string): string {\n const payload = token.split('.')[1];\n if (!payload) return '';\n try {\n const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/').padEnd(Math.ceil(payload.length / 4) * 4, '='));\n const sub = (JSON.parse(json) as Record<string, unknown>)['sub'];\n return typeof sub === 'string' ? sub : '';\n } catch {\n return '';\n }\n}\n","import { DestroyRef, Injectable, PLATFORM_ID, WritableSignal, computed, inject, signal } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { SPINE_USER_STORAGE_KEYS, SpineUserStorage } from './user-storage';\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 and per user in `localStorage` (`SpineUserStorage`: `<clientId>_nav_favorites_<sub>`).\n * Recents are cleared on logout; switching users reloads both lists.\n */\n@Injectable({ providedIn: 'root' })\nexport class SpineQuickAccessService {\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly storage = inject(SpineUserStorage);\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() {\n if (!this.browser) return;\n\n this.reload();\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 // Sessão mudou (logout, outra conta) ou histórico limpo: relê as listas do usuário atual.\n const stop = this.storage.onChange(() => this.reload());\n inject(DestroyRef).onDestroy(() => {\n window.removeEventListener('storage', onStorage);\n stop();\n });\n }\n\n private get favoritesKey(): string {\n return this.storage.key(SPINE_USER_STORAGE_KEYS.favorites);\n }\n\n private get recentsKey(): string {\n return this.storage.key(SPINE_USER_STORAGE_KEYS.recents);\n }\n\n private reload(): void {\n this.favoriteList.set(this.load(this.favoritesKey));\n this.recentList.set(this.load(this.recentsKey));\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 /** Troca a lista de favoritos inteira (sincronização com a conta). Itens inválidos ou repetidos são descartados. */\n setFavorites(items: readonly unknown[]): void {\n const seen = new Set<string>();\n const next = items.flatMap((entry) => {\n const item = normalize(entry);\n if (!item || seen.has(item.id)) return [];\n seen.add(item.id);\n return [item];\n });\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. Os que têm parâmetro saem por\n * `formatMessageHtml` (`@trismegisto/primitives`), que escapa o valor (o `check-strings` reprova `fmt` ali).\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 /** Detalhe de cada modo do menu lateral (toggletip ao lado do rótulo). */\n sidebarHelp: 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 /** Formato de hora (Região): automático pelo idioma, 24 ou 12 horas. `{now}` = hora agora no formato. */\n hourCycle: string;\n hourCycleHint: string;\n hourCycleKeywords: string;\n hourCycleAuto: string;\n hourCycle24: string;\n hourCycle12: string;\n /** Primeiro dia da semana (Região); domingo e segunda saem do `Intl`, no idioma. */\n weekStart: string;\n weekStartDescription: string;\n weekStartKeywords: string;\n weekStartAuto: string;\n shortcuts: string;\n shortcutsDescription: string;\n shortcutsKeywords: string;\n tour: string;\n tourDescription: string;\n tourKeywords: string;\n replayTour: string;\n /** Seção \"Acessibilidade\" (`?settings=acessibilidade`). */\n accessibility: string;\n accessibilityKeywords: string;\n textSize: string;\n textSizeDescription: string;\n textSizeKeywords: string;\n motion: string;\n motionDescription: string;\n motionKeywords: string;\n motionSystem: string;\n motionReduce: string;\n motionFull: string;\n /** Seção \"Ajuda\" (`?settings=ajuda`): novidades e tour. */\n help: string;\n helpKeywords: string;\n news: string;\n newsDescription: string;\n newsKeywords: string;\n showNews: string;\n /** Seção \"Dados do navegador\" (`?settings=dados`): listas guardadas e restaurar preferências. */\n browserData: string;\n browserDataDescription: string;\n browserDataKeywords: string;\n recentPages: string;\n recentPagesKeywords: string;\n recentSearches: string;\n recentSearchesKeywords: string;\n favorites: string;\n favoritesKeywords: string;\n /** Quantos itens a lista guarda (descrição da linha). */\n pagesCount: PluralMessage;\n searchesCount: PluralMessage;\n clear: string;\n confirmClear: string;\n cancel: string;\n recentPagesCleared: string;\n recentSearchesCleared: string;\n favoritesCleared: string;\n restorePreferences: string;\n restorePreferencesDescription: string;\n /** O que volta ao padrão e o que fica (toggletip ao lado do rótulo). */\n restorePreferencesHelp: string;\n restorePreferencesKeywords: string;\n restore: string;\n confirmRestore: string;\n preferencesRestored: 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 /** Nome acessível do toggletip de ajuda de uma linha; `{label}` é o rótulo da linha. */\n moreAbout: string;\n appTokens: string;\n appTokensDescription: string;\n appTokensKeywords: string;\n /** Detalhe dos tokens de aplicação (toggletip ao lado do rótulo). */\n appTokensHelp: string;\n logout: string;\n logoutDescription: string;\n logoutKeywords: string;\n /** Seção \"MFA\" (`?settings=mfa`; a antiga `seguranca` também abre). */\n mfa: string;\n mfaDescription: string;\n mfaKeywords: string;\n signedInAccount: string;\n /** `{realm}` = realm do Argos (nome ou id, como o app usa no login). */\n signedInRealm: string;\n twoFactor: string;\n twoFactorDescription: string;\n twoFactorKeywords: string;\n recoveryCodes: string;\n recoveryCodesDescription: string;\n recoveryCodesKeywords: string;\n /** Linha \"Sessões e dispositivos\" (dentro da seção Sessões). */\n sessions: string;\n sessionsDescription: string;\n sessionsKeywords: string;\n /** Seção \"Sessões\" (`?settings=sessoes`): sessão, token de acesso, tokens de aplicação, sessões e dispositivos. */\n sessionsSection: string;\n sessionsSectionDescription: string;\n sessionsSectionKeywords: 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 accountSecurity: {\n loading: string;\n loadError: string;\n /** A sessão do token acabou (encerrada em outro lugar, usuário desativado). */\n sessionEnded: string;\n retry: string;\n methodTotp: string;\n methodEmail: string;\n methodSms: string;\n active: string;\n /** `{detail}` = e-mail mascarado. */\n activeWithDetail: string;\n notRegistered: string;\n unavailable: string;\n requiredHint: string;\n add: string;\n replaceDevice: string;\n remove: string;\n cancel: string;\n confirm: string;\n /** `{method}`. */\n removeTitle: string;\n removeHint: string;\n removeLastHint: string;\n reauthTitle: string;\n reauthHint: string;\n reauthHow: string;\n reauthPassword: string;\n reauthRecoveryCode: string;\n currentPassword: string;\n passwordRequired: string;\n recoveryCode: string;\n recoveryCodePlaceholder: string;\n recoveryCodeRequired: string;\n recoveryCodeLength: string;\n sendEmailCode: string;\n sixDigitCode: string;\n totpTitle: string;\n qrAlt: string;\n manualKey: string;\n appCode: string;\n emailTitle: string;\n email: string;\n emailPlaceholder: string;\n emailRequired: string;\n emailInvalid: string;\n sendCode: string;\n emailCodeTitle: string;\n /** `{email}`. */\n emailCodeHint: string;\n codesRemaining: PluralMessage;\n codesHint: string;\n codesNeedMethod: string;\n generateCodes: string;\n regenerateCodes: string;\n codesTitle: string;\n codesShownOnce: string;\n copyCodes: string;\n downloadCodes: string;\n codesCopied: string;\n copyFailed: string;\n codesSaved: string;\n /** Primeira linha do .txt baixado/copiado. */\n codesFileHeader: string;\n codesFileName: string;\n notices: {\n methodAdded: string;\n deviceReplaced: string;\n methodRemoved: string;\n codesRegenerated: string;\n reauthCodeSent: string;\n };\n /** Por código de erro da API da conta do Argos; `generic` para o resto. */\n errors: {\n generic: string;\n network: string;\n login_required: string;\n invalid_token: string;\n reauthentication_required: string;\n invalid_password: string;\n account_locked: string;\n invalid_code: string;\n invalid_recovery_code: string;\n code_expired: string;\n code_not_requested: string;\n too_many_attempts: string;\n too_many_requests: string;\n mfa_method_not_allowed: string;\n mfa_method_not_found: string;\n mfa_last_method: string;\n invalid_email: string;\n enrollment_not_started: string;\n sms_not_available: string;\n mfa_required_for_recovery_codes: string;\n session_not_found: string;\n };\n sessionsEmpty: string;\n thisSession: string;\n thisBrowser: string;\n appsOnly: string;\n /** `{ip}`, `{date}`. */\n sessionDetail: string;\n unknownIp: string;\n /** `{date}`. */\n sessionSince: string;\n /** `{apps}`. */\n sessionApps: string;\n unnamedApp: string;\n endSession: string;\n confirmEndSession: string;\n endOthers: string;\n endOthersConfirm: PluralMessage;\n sessionEndedNotice: string;\n othersEndedNotice: PluralMessage;\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 /** `logout()` que o Argos não confirmou (o `@orfeu/angular` repetiu uma vez): a sessão continua. */\n logoutFailed: 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 /** Botão \"Consultar\" ao lado dos seletores de Grupos e Aplicações. */\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]`. Sem client: a pessoa não administra o app em que está logada. */\n noClients: string;\n /** `{status}`. A lista de clients administrados não veio (Argos fora do ar, rede, erro do servidor): não é falta de permissão. */\n clientsLoadError: string;\n retryLoad: 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 /** Placeholder do seletor de grupo (Grupos, depois do nível de acesso). */\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 /** @deprecated não é mais exibido (a tela Aplicações lista as aplicações numa tabela, sem \"Consultar\"). */\n appsSearchIntro: string;\n secretCreated: string;\n /** Rótulo do seletor de aplicação (Aplicações, com \"Consultar\"). */\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/Tokens). */\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 /** Título da coluna com o botão \"Gerenciar operações\" (abas Acessos e Tokens da aplicação). */\n colOperations: string;\n /** Título da coluna com o botão \"Gerenciar rotas\" (aba Acesso do client), como no painel do Argos. */\n colGuards: string;\n /** Campo de filtro no topo do drawer \"Gerenciar operações\" (rótulo acessível e placeholder). */\n filterOperations: string;\n /** Campo de filtro no topo do drawer \"Gerenciar rotas\". */\n filterRoutes: string;\n /** `{term}`. Filtro dos drawers sem nenhum item que case. */\n noFilterMatch: string;\n /** Nome acessível da árvore do drawer \"Gerenciar rotas\". */\n routesTreeLabel: 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 /** Coluna e campo do roteador: tipos de grupo (crachás) que podem receber acesso à tela (`allowed_type_ids`). */\n colAllowedBadges: string;\n /** Roteador sem restrição de crachá (`allowed_type_ids` vazio); também o placeholder do campo. */\n anyBadge: string;\n allowedBadgesHint: 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 /** Campo do id opcional na criação de rota, roteador e grupo (mesmo id em homologação e produção). */\n optionalId: string;\n optionalIdPlaceholder: string;\n optionalIdHint: string;\n optionalIdInvalid: string;\n /** 409 id_taken: o id escolhido já existe. */\n idTaken: string;\n /** Confirmação das exclusões (diálogo): título e mensagem; `{name}`, `{path}` ou `{group}`. */\n /**\n * \"Gerar novo segredo\" de uma aplicação: botão, confirmação, a janela que mostra o segredo uma vez\n * (`{name}` = nome da aplicação), copiar e os erros (genérico, 404 e 403).\n */\n rotateSecret: string;\n confirmRotateSecretHeading: string;\n confirmRotateSecret: string;\n rotatedSecretHeading: string;\n rotatedSecretWarning: string;\n rotatedSecretNote: string;\n rotatedSecretLabel: string;\n copySecret: string;\n secretCopied: string;\n rotatedSecretDone: string;\n rotateSecretError: string;\n rotateSecretNotFound: string;\n rotateSecretForbidden: string;\n confirmDeleteAppHeading: string;\n confirmDeleteApp: string;\n confirmDeleteRouteHeading: string;\n confirmDeleteRoute: string;\n confirmDeleteRouterHeading: string;\n confirmDeleteRouter: string;\n confirmRemoveAccessHeading: string;\n confirmRemoveAccess: string;\n confirmRemoveConsumerHeading: string;\n confirmRemoveConsumer: string;\n /** Toasts depois de excluir/remover. */\n deleteDone: string;\n deleteError: string;\n colExcludable: string;\n excludableYes: string;\n excludableNo: string;\n colName: string;\n colDisplay: string;\n colIcon: string;\n colPath: string;\n /** Coluna do id (UUID) em Rotas e Roteadores: só o botão de copiar. */\n colId: string;\n /** `{name}`. Nome acessível do botão que copia o UUID da rota. */\n copyRouteId: string;\n /** `{name}`. Nome acessível do botão que copia o UUID do roteador. */\n copyRouterId: string;\n idCopied: string;\n /** Botão da aba Roteadores e título do modal que muda a ordem dos itens no menu do app. */\n reorder: string;\n reorderTitle: string;\n reorderHint: string;\n /** Nome acessível da trilha de níveis do modal e o primeiro degrau (o topo do menu). */\n reorderPath: string;\n reorderRoot: string;\n /** `{name}`: nome acessível da lista ordenável do nível aberto (ou o topo, `reorderRoot`). */\n reorderListLabel: string;\n reorderEmpty: string;\n /** `{name}`. */\n moveUp: string;\n moveDown: string;\n openLevel: string;\n childCount: PluralMessage;\n /** `{name}`, `{position}`, `{total}`: anúncio da região viva depois de mover por botão. */\n movedTo: string;\n reorderLoadError: string;\n reorderSaveError: string;\n reorderSave: string;\n /** Tela Grupos: lista dos grupos do projeto, criar/editar/excluir. */\n newGroup: string;\n editGroup: string;\n /** @deprecated não é mais exibido (a tela Grupos voltou ao seletor de nível + grupo, sem tabela). */\n groupsCaption: string;\n noGroups: string;\n /** Tela Grupos: primeiro seletor (o tipo do grupo, do nível mais alto para o mais baixo). */\n accessLevel: string;\n pickAccessLevel: string;\n /** Opção do seletor de nível para os grupos sem tipo. */\n noLevel: string;\n /** Nível escolhido sem nenhum grupo. */\n noGroupsOfLevel: string;\n colStatus: string;\n groupName: string;\n groupType: string;\n groupTypePlaceholder: string;\n groupDescription: string;\n /** @deprecated não é mais exibido (a tela Grupos voltou ao seletor, sem tabela). */\n openGroup: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupTag: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupNote: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupEditNote: string;\n /** @deprecated não é mais exibido (o grupo de administração do projeto é gerido só no painel central e não aparece no auto-serviço). */\n adminGroupLastMemberWarning: string;\n /** Confirmação da exclusão; `{name}`. */\n confirmDeleteGroupHeading: string;\n confirmDeleteGroup: string;\n groupSaveError: string;\n membersSaveError: string;\n /**\n * Erros do argos-admin-server nos grupos e acessos do auto-serviço, pelo código (`error`) da resposta\n * (ver `autoServiceErrorText`). `groupNotFound` é o 404 de grupo de outro projeto.\n */\n /** @deprecated não é mais exibido (a tela Aplicações voltou ao seletor + \"Consultar\", sem tabela). */\n appsCaption: string;\n /** Tela Aplicações: o projeto ainda não tem aplicação (embaixo do seletor). */\n noApps: string;\n /** @deprecated não é mais exibido (a tela Aplicações voltou ao seletor, sem tabela). */\n colGrants: string;\n /** @deprecated não é mais exibido (a tela Aplicações voltou ao seletor, sem tabela). */\n openApp: string;\n /** Aba Tokens da aplicação: tokens de API (`x-api-token`), criar e revogar. */\n tabTokens: string;\n tokensCaption: string;\n noTokens: string;\n newToken: string;\n colTokenPrefix: string;\n colExpiresAt: string;\n colLastUsed: string;\n tokenExpired: string;\n tokenRevoked: string;\n neverUsed: string;\n revokeToken: string;\n confirmRevokeTokenHeading: string;\n /** `{name}`. */\n confirmRevokeToken: string;\n /** `{name}`. */\n tokenRevokedDone: string;\n tokenRevokeError: string;\n tokensLoadError: string;\n /** Modal \"Novo token\": campos, validade (de amanhã a 365 dias) e as operações liberadas ao token. */\n tokenName: string;\n tokenDescription: string;\n tokenExpiresAt: string;\n tokenExpiresHint: string;\n tokenExpiresInvalid: string;\n tokenOperations: string;\n tokenOperationsNote: string;\n /** Grupo: por que a operação não depende de permissão (public/optional, private, outro nível). No \"Gerenciar operações\"\n * entra só no nome acessível da operação (leitor de tela), não aparece ao lado dela. */\n freeForAll: string;\n freeForAuthenticated: string;\n freeNoPermission: string;\n /** Token: operação public (caixa desmarcada e desabilitada; o token não precisa dela). Aparece no \"Novo token\"; no\n * \"Gerenciar operações\" entra só no nome acessível. */\n publicNoToken: string;\n createToken: string;\n tokenSaveError: string;\n /** O token criado, mostrado uma única vez; `{name}` = nome do token. */\n tokenCreatedHeading: string;\n tokenCreatedWarning: string;\n tokenCreatedNote: string;\n tokenValueLabel: string;\n copyToken: string;\n tokenCopied: string;\n /** Roteadores: a hierarquia é de cima para baixo (cada nível só com o de cima escolhido). */\n hierarchyHint: string;\n routerSaveError: string;\n /** \"Gerenciar operações\" (grupo ou token): falha ao gravar alguma liberação/retirada. */\n permissionsSaveError: string;\n /** \"Gerenciar operações\": resumo no topo (`{marked}` de `{total}` escolhíveis liberadas), grupo e token. */\n permissionsSummaryGroup: string;\n permissionsSummaryToken: string;\n /** Resumo das operações travadas (não dependem de permissão): grupo (aparecem marcadas) e token (public). */\n permissionsFreeGroup: PluralMessage;\n permissionsFreeToken: PluralMessage;\n /** Contador da pasta da árvore: `{marked}` de `{total}` operações escolhíveis dentro dela. */\n permissionsFolderCount: string;\n /** Nome acessível da árvore de operações. */\n permissionsTreeLabel: string;\n /** Erros do argos-admin-server nos tokens de aplicação, pelo código (`error`) da resposta (ver `autoServiceErrorText`). */\n tokenErrors: {\n invalidExpiresAt: string;\n invalidValidity: string;\n invalidOperationIds: string;\n /** `operation_not_protected`: grupo só recebe operação protected. */\n operationNotProtected: string;\n /** `operation_public`: operação public não se libera a token. */\n operationPublic: string;\n appNotFound: string;\n tokenNotFound: string;\n };\n /** Erros do argos-admin-server nos roteadores (`router_hierarchy_gap`: nível sem o nível de cima). */\n routerErrors: {\n hierarchyGap: string;\n /** Algum id de `allowed_type_ids` não é tipo de grupo do realm. */\n invalidAllowedTypes: string;\n };\n groupErrors: {\n invalidType: string;\n adminTypeReserved: string;\n emptyUpdate: string;\n groupProjectImmutable: string;\n groupNameTaken: string;\n adminGroupImmutable: string;\n adminGroupProtected: string;\n adminGroupLastMember: string;\n adminGroupAccessProtected: string;\n groupNotFound: string;\n };\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 /** Tela Tentativas de login (`SpineLoginAttemptsComponent`, `@trismegisto/spine/audit`). */\n /** Recursos opcionais do painel de configurações (`SpineFeatures`). */\n accountFeatures: {\n aiAgent: string;\n aiAgentDescription: string;\n aiAgentKeywords: string;\n aiAgentHelp: string;\n aiAgentStart: string;\n aiAgentServers: string;\n aiAgentAccess: string;\n aiAgentReadOnly: string;\n aiAgentReadWrite: string;\n aiAgentWriteHint: string;\n aiAgentReadOnlyServer: string;\n aiAgentTokenName: string;\n aiAgentGenerate: string;\n aiAgentSelectServer: string;\n aiAgentResult: string;\n aiAgentResultHint: string;\n aiAgentCopy: string;\n aiAgentCopied: string;\n aiAgentDone: string;\n aiAgentCreateError: string;\n aiAgentUnavailable: string;\n activity: string;\n activityDescription: string;\n activityKeywords: string;\n activityFilter: string;\n activityAll: string;\n activityFailures: string;\n activityDetail: string;\n activityApp: string;\n activityEmpty: string;\n activityMore: string;\n activityShowing: string;\n activityLoadError: string;\n unknownIp: string;\n unknownApp: string;\n idle: string;\n idleDescription: string;\n idleKeywords: string;\n idleNever: string;\n idleOption: string;\n idleLimitHint: string;\n idleWarningHeading: string;\n idleWarningText: PluralMessage;\n idleStay: string;\n idleLogout: string;\n startPage: string;\n startPageDescription: string;\n startPageKeywords: string;\n startHome: string;\n startLast: string;\n startFavorite: string;\n startPageHint: string;\n defaultBadge: string;\n defaultBadgeDescription: string;\n defaultBadgeKeywords: string;\n defaultBadgeAuto: string;\n defaultBadgeSaved: string;\n defaultBadgeError: string;\n defaultBadgeLoadError: string;\n notices: string;\n noticesDescription: string;\n noticesKeywords: string;\n browserNotices: string;\n browserNoticesDescription: string;\n browserNoticesDenied: string;\n browserNoticesUnsupported: string;\n /** Ação do aviso na tela que abre a `url` dele. */\n noticeOpen: string;\n sync: string;\n syncDescription: string;\n syncKeywords: string;\n syncSynced: string;\n syncSaving: string;\n syncLocal: string;\n syncError: string;\n syncNow: string;\n };\n loginAttempts: {\n refresh: string;\n user: string;\n userPlaceholder: string;\n period: string;\n result: string;\n method: string;\n all: string;\n clear: string;\n advancedFilters: string;\n ip: string;\n ipPlaceholder: string;\n ipHint: string;\n reason: string;\n caption: string;\n pageItems: string;\n pageSize: string;\n colDate: string;\n colResult: string;\n colMethod: string;\n colUser: string;\n colReason: string;\n colIp: string;\n colRealm: string;\n colClient: string;\n colUserAgent: string;\n filterByIp: string;\n filterByUser: string;\n /** Identificador digitado que não corresponde a usuário nenhum. */\n noMatchingUser: string;\n methods: Record<'local' | 'mfa' | 'github' | 'google' | 'keycloak' | 'entraid', string>;\n results: Record<'success' | 'failure' | 'cancelled', string>;\n reasons: Record<\n 'bad_password' | 'unknown_user' | 'locked' | 'mfa_failed' | 'mfa_expired' | 'mfa_not_allowed' | 'mfa_invalid_method'\n | 'recovery_failed' | 'recovery_refused' | 'not_linked' | 'wrong_realm',\n string\n >;\n /** 403 no painel central (falta a operação). */\n forbiddenAdmin: string;\n /** 403 no auto-serviço (não administra o client). */\n forbiddenClient: string;\n /** Erro com o detalhe do servidor: `{detail}`. */\n loadErrorDetail: string;\n loadError: 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 o do 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 mostra 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: 'Como o menu lateral abre e fecha.',\n sidebarKeywords: 'sidebar navegação barra lateral',\n sidebarHelp: 'Automático: abre ao aproximar o ponteiro. Fixo: fica sempre aberto. Compacto: mostra só os ícones.',\n sidebarAuto: 'Automático',\n sidebarFixed: 'Fixo',\n sidebarCompact: 'Compacto',\n region: 'Região',\n regionKeywords: 'idioma língua localização horário data hora semana',\n language: 'Idioma',\n languageDescription: '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: 'Para datas e horários. Agora: {now}',\n timeZoneAuto: 'Automático ({zone})',\n hourCycle: 'Formato de hora',\n hourCycleHint: 'Agora: {now}',\n hourCycleKeywords: 'relógio 24h 12h am pm horário',\n hourCycleAuto: 'Automático',\n hourCycle24: '24 horas',\n hourCycle12: '12 horas',\n weekStart: 'Primeiro dia da semana',\n weekStartDescription: 'Para calendários e seletores de data.',\n weekStartKeywords: 'semana calendário domingo segunda',\n weekStartAuto: 'Automático',\n shortcuts: 'Atalhos',\n shortcutsDescription: 'Pressione ? em qualquer tela para ver esta lista.',\n shortcutsKeywords: 'teclado teclas',\n tour: 'Tour guiado',\n tourDescription: 'Mostra de novo onde fica cada parte da tela.',\n tourKeywords: 'onboarding ajuda apresentação',\n replayTour: 'Refazer tour',\n accessibility: 'Acessibilidade',\n accessibilityKeywords: 'acessibilidade leitura visão',\n textSize: 'Tamanho do texto',\n textSizeDescription: 'Aumenta o texto e os controles de todas as telas.',\n textSizeKeywords: 'zoom fonte letra maior ampliar',\n motion: 'Reduzir animações',\n motionDescription: 'Sistema segue o computador ou o celular.',\n motionKeywords: 'animação movimento transição reduced motion enjoo tontura',\n motionSystem: 'Sistema',\n motionReduce: 'Sempre',\n motionFull: 'Nunca',\n help: 'Ajuda',\n helpKeywords: 'ajuda novidades tour apresentação',\n news: 'Novidades',\n newsDescription: 'O que mudou nas últimas versões.',\n newsKeywords: 'novidades versão lançamento changelog',\n showNews: 'Ver novidades',\n browserData: 'Dados do navegador',\n browserDataDescription: 'Guardados só neste navegador, para a sua conta.',\n browserDataKeywords: 'privacidade limpar apagar histórico dados',\n recentPages: 'Páginas recentes',\n recentPagesKeywords: 'histórico visitadas recentes',\n recentSearches: 'Buscas recentes',\n recentSearchesKeywords: 'busca pesquisa histórico',\n favorites: 'Favoritos',\n favoritesKeywords: 'favoritos estrela',\n pagesCount: { zero: 'Nenhuma página guardada', one: '{count} página guardada', other: '{count} páginas guardadas' },\n searchesCount: { zero: 'Nenhuma busca guardada', one: '{count} busca guardada', other: '{count} buscas guardadas' },\n clear: 'Limpar',\n confirmClear: 'Confirmar',\n cancel: 'Cancelar',\n recentPagesCleared: 'Páginas recentes apagadas.',\n recentSearchesCleared: 'Buscas recentes apagadas.',\n favoritesCleared: 'Favoritos apagados.',\n restorePreferences: 'Preferências',\n restorePreferencesDescription: 'Aparência, acessibilidade e formatos voltam ao padrão.',\n restorePreferencesHelp: 'Voltam ao padrão: tema, cor principal, densidade, fonte, menu lateral, tamanho do texto, animações, formato de hora e primeiro dia da semana. Idioma, fuso horário e atalhos de tecla única ficam como estão.',\n restorePreferencesKeywords: 'restaurar padrão redefinir reset preferências',\n restore: 'Restaurar padrão',\n confirmRestore: 'Confirmar',\n preferencesRestored: 'Preferências restauradas.',\n account: 'Conta',\n accountKeywords: 'perfil usuário login nível sair',\n user: 'Usuário',\n accessLevel: 'Nível de acesso',\n accessLevelKeywords: 'crachá badge perfil permissão grupo',\n session: 'Sessão',\n sessionDescription: '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. Não compartilhe.',\n accessTokenKeywords: 'jwt bearer api desenvolvedor',\n copy: 'Copiar',\n moreAbout: 'Mais sobre {label}',\n appTokens: 'Tokens de aplicação',\n appTokensDescription: 'Para usar a aplicação fora da interface: um MCP, um script.',\n appTokensKeywords: 'token app mcp api chave pat x-app-token automação script integração',\n appTokensHelp: '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 logout: 'Sair',\n logoutDescription: 'Encerra a sessão neste navegador.',\n logoutKeywords: 'logout desconectar',\n mfa: 'MFA',\n mfaDescription: 'Verificação em duas etapas da sua conta no Argos.',\n mfaKeywords: 'segurança argos senha autenticação mfa 2fa dois fatores duas etapas verificação',\n signedInAccount: 'Conta no Argos',\n signedInRealm: 'Realm {realm}',\n twoFactor: 'Verificação em duas etapas',\n twoFactorDescription: 'Um código além da senha para entrar.',\n twoFactorKeywords: 'mfa 2fa totp autenticador authenticator código e-mail método aparelho celular',\n recoveryCodes: 'Códigos de recuperação',\n recoveryCodesDescription: 'Para entrar se você perder o aparelho.',\n recoveryCodesKeywords: 'backup recuperação perdi celular aparelho mfa 2fa',\n sessions: 'Sessões e dispositivos',\n sessionsDescription: 'Onde a sua conta está conectada.',\n sessionsKeywords: 'dispositivos navegador ip encerrar desconectar sair aparelhos conectados',\n sessionsSection: 'Sessões',\n sessionsSectionDescription: 'Esta sessão, os tokens de aplicação e os dispositivos conectados.',\n sessionsSectionKeywords: 'sessão sessões token tokens dispositivos login segurança',\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: 'Versão, ambiente, navegador e preferências, para colar 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 accountSecurity: {\n loading: 'Carregando…',\n loadError: 'Não foi possível carregar a sua conta no Argos.',\n sessionEnded: 'A sessão deste login terminou no Argos. Entre de novo para gerenciar a conta.',\n retry: 'Tentar novamente',\n methodTotp: 'Aplicativo autenticador',\n methodEmail: 'E-mail',\n methodSms: 'SMS',\n active: 'Ativo',\n activeWithDetail: 'Ativo · {detail}',\n notRegistered: 'Não cadastrado',\n unavailable: 'Indisponível',\n requiredHint: 'Obrigatória neste ambiente: mantenha pelo menos um método.',\n add: 'Adicionar',\n replaceDevice: 'Trocar aparelho',\n remove: 'Remover',\n cancel: 'Cancelar',\n confirm: 'Confirmar',\n removeTitle: 'Remover {method}?',\n removeHint: 'Você deixa de poder usar este método para entrar.',\n removeLastHint: 'Sem nenhum método, os códigos de recuperação também deixam de valer.',\n reauthTitle: 'Confirme sua identidade',\n reauthHint: 'Por segurança, confirme antes de continuar. Vale por 5 minutos.',\n reauthHow: 'Como confirmar',\n reauthPassword: 'Senha',\n reauthRecoveryCode: 'Código de recuperação',\n currentPassword: 'Senha atual',\n passwordRequired: 'Informe a senha.',\n recoveryCode: 'Código de recuperação',\n recoveryCodePlaceholder: 'XXXXX-XXXXX',\n recoveryCodeRequired: 'Informe o código.',\n recoveryCodeLength: 'O código tem 10 letras e números.',\n sendEmailCode: 'Enviar código para o e-mail cadastrado',\n sixDigitCode: 'Código de 6 dígitos',\n totpTitle: 'Escaneie o QR Code no aplicativo autenticador',\n qrAlt: 'QR Code para configurar o aplicativo autenticador',\n manualKey: 'Sem câmera? Digite a chave:',\n appCode: 'Código do aplicativo',\n emailTitle: 'Cadastrar e-mail',\n email: 'E-mail',\n emailPlaceholder: 'nome@empresa.com',\n emailRequired: 'Informe o e-mail.',\n emailInvalid: 'Informe um e-mail válido.',\n sendCode: 'Enviar código',\n emailCodeTitle: 'Confirme o e-mail',\n emailCodeHint: 'Digite o código de 6 dígitos enviado para {email}.',\n codesRemaining: { zero: 'Nenhum código disponível', one: '1 código disponível', other: '{count} códigos disponíveis' },\n codesHint: 'Cada um vale uma vez. Gerar novos invalida os anteriores.',\n codesNeedMethod: 'Cadastre um método de verificação para gerar códigos de recuperação.',\n generateCodes: 'Gerar códigos',\n regenerateCodes: 'Gerar novos códigos',\n codesTitle: 'Seus códigos de recuperação',\n codesShownOnce: 'Guarde num lugar seguro: eles não serão mostrados de novo. Cada um vale uma vez.',\n copyCodes: 'Copiar',\n downloadCodes: 'Baixar .txt',\n codesCopied: 'Códigos copiados.',\n copyFailed: 'Não foi possível copiar. Selecione os códigos e copie manualmente.',\n codesSaved: 'Guardei os códigos',\n codesFileHeader: 'Códigos de recuperação do Argos (cada um vale uma vez)',\n codesFileName: 'codigos-de-recuperacao.txt',\n notices: {\n methodAdded: 'Método cadastrado.',\n deviceReplaced: 'Aparelho trocado. O anterior não gera mais códigos válidos.',\n methodRemoved: 'Método removido.',\n codesRegenerated: 'Códigos de recuperação gerados. Os anteriores não valem mais.',\n reauthCodeSent: 'Enviamos um código para o e-mail cadastrado.',\n },\n errors: {\n generic: 'Não foi possível concluir. Tente novamente.',\n network: 'Não foi possível falar com o Argos. Verifique a conexão e tente novamente.',\n login_required: 'A sessão deste login terminou no Argos. Entre de novo para gerenciar a conta.',\n invalid_token: 'A sessão deste login terminou no Argos. Entre de novo para gerenciar a conta.',\n reauthentication_required: 'A confirmação de identidade venceu. Confirme de novo para continuar.',\n invalid_password: 'Senha incorreta.',\n account_locked: 'Muitas tentativas com a senha. A conta ficou bloqueada por alguns minutos.',\n invalid_code: 'Código incorreto.',\n invalid_recovery_code: 'Código de recuperação inválido ou já usado.',\n code_expired: 'O código venceu. Peça outro.',\n code_not_requested: 'Peça o código antes de digitá-lo.',\n too_many_attempts: 'Muitas tentativas. Espere alguns minutos e tente de novo.',\n too_many_requests: 'Espere um pouco antes de pedir outro código.',\n mfa_method_not_allowed: 'Este método não é aceito neste ambiente.',\n mfa_method_not_found: 'Este método já não estava cadastrado.',\n mfa_last_method: 'A verificação em duas etapas é obrigatória: mantenha pelo menos um método.',\n invalid_email: 'Informe um e-mail válido.',\n enrollment_not_started: 'O cadastro venceu. Comece de novo.',\n sms_not_available: 'SMS indisponível.',\n mfa_required_for_recovery_codes: 'Cadastre um método de verificação antes de gerar códigos.',\n session_not_found: 'A sessão já tinha sido encerrada.',\n },\n sessionsEmpty: 'Nenhuma sessão ativa.',\n thisSession: 'Esta sessão',\n thisBrowser: 'Este navegador',\n appsOnly: 'Só aplicativos',\n sessionDetail: 'IP {ip} · último uso {date}',\n unknownIp: 'desconhecido',\n sessionSince: 'Desde {date}',\n sessionApps: 'Aplicativos: {apps}',\n unnamedApp: 'Aplicativo',\n endSession: 'Encerrar',\n confirmEndSession: 'Confirmar encerramento',\n endOthers: 'Encerrar todas as outras',\n endOthersConfirm: {\n one: 'Encerrar a outra sessão? Os aplicativos abertos nela vão pedir login de novo.',\n other: 'Encerrar as {count} outras sessões? Os aplicativos abertos nelas vão pedir login de novo.',\n },\n sessionEndedNotice: 'Sessão encerrada.',\n othersEndedNotice: { zero: 'Nenhuma sessão encerrada.', one: '1 sessão encerrada.', other: '{count} sessões encerradas.' },\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 logoutFailed: 'Não foi possível sair agora. Verifique a conexão e tente de novo.',\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ê não administra este app. É preciso (a) estar no grupo de administração do projeto dele 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 quem administra o projeto.',\n clientsLoadError: 'Não foi possível carregar os clients que você administra (HTTP {status}). Isso não é falta de permissão: o Argos não respondeu. Tente de novo em instantes.',\n retryLoad: 'Tentar de novo',\n pickClient: 'Selecione o client que deseja administrar',\n groupsTitle: 'Grupos',\n groupsIntro: 'Crie, edite e exclua os grupos deste client e gerencie os membros — 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 colOperations: 'Operações',\n colGuards: 'Guards',\n filterOperations: 'Filtrar operações',\n filterRoutes: 'Filtrar rotas',\n noFilterMatch: 'Nada encontrado para “{term}”.',\n routesTreeLabel: 'Rotas privadas',\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',\n colVisibility: 'Visibilidade',\n colAllowedBadges: 'Crachás permitidos',\n anyBadge: 'Qualquer crachá',\n allowedBadgesHint: 'Vazio = qualquer crachá. Com um ou mais escolhidos, só os grupos com um desses crachás podem receber acesso a esta tela na aba Acesso.',\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 optionalId: 'ID (opcional)',\n optionalIdPlaceholder: 'gerado automaticamente',\n optionalIdHint: 'Para manter homologação e produção com o mesmo id, cole o id do outro ambiente; vazio = gerado.',\n optionalIdInvalid: 'Informe um UUID (ex.: 7c92cf1e-ee8d-49cc-85f8-355a3d6e4b86) ou deixe vazio.',\n idTaken: 'Já existe um cadastro com este id. Use outro ou deixe o campo vazio.',\n rotateSecret: 'Gerar novo segredo',\n confirmRotateSecretHeading: 'Gerar um novo segredo?',\n confirmRotateSecret: 'O segredo atual deixa de funcionar na hora; atualize o APP_SECRET do serviço que usa esta aplicação. Tokens já emitidos valem até expirar (até 1 hora).',\n rotatedSecretHeading: 'Novo segredo de {name}',\n rotatedSecretWarning: 'Copie agora: o segredo não será mostrado de novo.',\n rotatedSecretNote: 'O servidor guarda só um hash do segredo. Ao fechar esta janela não há como consultá-lo; se ele se perder, gere outro.',\n rotatedSecretLabel: 'Segredo da aplicação {name}',\n copySecret: 'Copiar',\n secretCopied: 'Segredo copiado.',\n rotatedSecretDone: 'Concluir',\n rotateSecretError: 'Não foi possível gerar o novo segredo. Tente de novo.',\n rotateSecretNotFound: 'Aplicação não encontrada neste client.',\n rotateSecretForbidden: 'Você não administra este client.',\n confirmDeleteAppHeading: 'Excluir aplicação?',\n confirmDeleteApp: 'A aplicação {name} será excluída e a credencial dela para de funcionar. Esta ação não pode ser desfeita.',\n confirmDeleteRouteHeading: 'Excluir rota?',\n confirmDeleteRoute: 'A rota {name} será excluída deste cliente. Esta ação não pode ser desfeita.',\n confirmDeleteRouterHeading: 'Excluir roteador?',\n confirmDeleteRouter: 'O roteador {path} será excluído e a página sai do menu. Esta ação não pode ser desfeita.',\n confirmRemoveAccessHeading: 'Remover acesso?',\n confirmRemoveAccess: 'O grupo {group} perde o acesso às rotas privadas deste cliente.',\n confirmRemoveConsumerHeading: 'Remover acesso à aplicação?',\n confirmRemoveConsumer: 'O grupo {group} deixa de consumir esta aplicação e perde as permissões de operação dela.',\n deleteDone: 'Exclusão concluída.',\n deleteError: 'Não foi possível excluir. Tente de novo.',\n colExcludable: 'Excluível',\n excludableYes: 'Sim',\n excludableNo: 'Não',\n colName: 'Nome',\n colDisplay: 'Display',\n colIcon: 'Ícone',\n colPath: 'Path',\n colId: 'ID',\n copyRouteId: 'Copiar o ID da rota {name}',\n copyRouterId: 'Copiar o ID do roteador {name}',\n idCopied: 'ID copiado',\n reorder: 'Reordenar',\n reorderTitle: 'Reordenar menu',\n reorderHint: 'Mude a ordem em que os itens aparecem no menu do app: arraste pela alça (ou, no teclado, Espaço na alça e as setas) ou use os botões de subir e descer. Para ordenar o que fica dentro de um item, entre nele.',\n reorderPath: 'Nível do menu',\n reorderRoot: 'Topo do menu',\n reorderListLabel: 'Ordem em {name}',\n reorderEmpty: 'Nenhum roteador cadastrado para ordenar.',\n moveUp: 'Mover {name} para cima',\n moveDown: 'Mover {name} para baixo',\n openLevel: 'Ordenar o que fica dentro de {name}',\n childCount: { one: '1 item dentro', other: '{count} itens dentro' },\n movedTo: '{name}: posição {position} de {total}',\n reorderLoadError: 'Não foi possível carregar o menu. Tente de novo.',\n reorderSaveError: 'Não foi possível salvar a ordem. Nada foi perdido: tente de novo.',\n reorderSave: 'Salvar ordem',\n newGroup: 'Novo grupo',\n editGroup: 'Editar grupo',\n groupsCaption: 'Grupos do projeto',\n noGroups: 'Nenhum grupo cadastrado ainda.',\n accessLevel: 'Nível de acesso',\n pickAccessLevel: 'Selecione o nível',\n noLevel: 'Sem nível',\n noGroupsOfLevel: 'Nenhum grupo neste nível.',\n colStatus: 'Status',\n groupName: 'Nome',\n groupType: 'Tipo',\n groupTypePlaceholder: 'Selecione o tipo',\n groupDescription: 'Descrição (opcional)',\n openGroup: 'Abrir o grupo {name}',\n adminGroupTag: 'Administração',\n adminGroupNote:\n 'Grupo de administração do projeto: quem está nele administra este app no auto-serviço. É o único do projeto, não pode ser excluído, renomeado, desativado nem mudar de tipo, e não pode ficar sem membros.',\n adminGroupEditNote: 'Grupo de administração do projeto: só a descrição pode ser alterada.',\n adminGroupLastMemberWarning: 'O grupo de administração não pode ficar sem membros: inclua outra pessoa ou desfaça uma remoção.',\n confirmDeleteGroupHeading: 'Excluir grupo?',\n confirmDeleteGroup:\n 'O grupo {name} será excluído junto com os membros, os acessos a telas e as permissões em aplicações. Esta ação não pode ser desfeita.',\n groupSaveError: 'Não foi possível salvar o grupo. Tente de novo.',\n membersSaveError: 'Não foi possível salvar todas as alterações dos membros. Confira a lista e tente de novo.',\n appsCaption: 'Aplicações do projeto',\n noApps: 'Nenhuma aplicação cadastrada ainda.',\n colGrants: 'Grants',\n openApp: 'Abrir a aplicação {name}',\n tabTokens: 'Tokens',\n tokensCaption: 'Tokens da aplicação',\n noTokens: 'Nenhum token criado para esta aplicação ainda.',\n newToken: 'Novo token',\n colTokenPrefix: 'Início do token',\n colExpiresAt: 'Expira em',\n colLastUsed: 'Último uso',\n tokenExpired: 'Expirado',\n tokenRevoked: 'Revogado',\n neverUsed: 'Nunca',\n revokeToken: 'Revogar',\n confirmRevokeTokenHeading: 'Revogar token?',\n confirmRevokeToken: 'O token {name} deixa de funcionar na hora. A revogação não pode ser desfeita.',\n tokenRevokedDone: 'Token {name} revogado.',\n tokenRevokeError: 'Não foi possível revogar o token. Tente de novo.',\n tokensLoadError: 'Não foi possível carregar os tokens da aplicação.',\n tokenName: 'Nome',\n tokenDescription: 'Descrição (opcional)',\n tokenExpiresAt: 'Expira em',\n tokenExpiresHint: 'De amanhã até 365 dias a partir de hoje.',\n tokenExpiresInvalid: 'Escolha uma data entre amanhã e 365 dias a partir de hoje.',\n tokenOperations: 'Operações liberadas ao token',\n tokenOperationsNote: 'Nada vem marcado: o token não tem login, então marque as operações protected e private que ele pode chamar. As public não precisam de token.',\n freeForAll: 'liberada para todos',\n freeForAuthenticated: 'liberada para autenticados',\n freeNoPermission: 'não depende de permissão',\n publicNoToken: 'pública: não precisa de token',\n createToken: 'Criar token',\n tokenSaveError: 'Não foi possível criar o token. Tente de novo.',\n tokenCreatedHeading: 'Token {name} criado',\n tokenCreatedWarning: 'Copie agora: o token não será mostrado de novo.',\n tokenCreatedNote: 'Envie no cabeçalho x-api-token. O servidor guarda só um hash do token; se ele se perder, revogue e crie outro.',\n tokenValueLabel: 'Token {name}',\n copyToken: 'Copiar',\n tokenCopied: 'Token copiado.',\n hierarchyHint: 'De cima para baixo: Navegação só com Header, Menu só com Navegação, Item só com Menu e Submenu só com Item. Limpar um nível limpa os de baixo.',\n routerSaveError: 'Não foi possível salvar o roteador. Tente de novo.',\n permissionsSaveError: 'Não foi possível salvar todas as alterações das operações. Reabra o painel e confira.',\n permissionsSummaryGroup: '{marked} de {total} operações protegidas liberadas para o grupo.',\n permissionsSummaryToken: '{marked} de {total} operações liberadas para o token.',\n permissionsFreeGroup: {\n one: '1 operação não depende de permissão (public ou private) e aparece marcada.',\n other: '{count} operações não dependem de permissão (public ou private) e aparecem marcadas.',\n },\n permissionsFreeToken: {\n one: '1 operação public não precisa de token e não pode ser liberada.',\n other: '{count} operações public não precisam de token e não podem ser liberadas.',\n },\n permissionsFolderCount: '{marked} de {total}',\n permissionsTreeLabel: 'Operações',\n tokenErrors: {\n invalidExpiresAt: 'Data de validade inválida. Escolha outra data.',\n invalidValidity: 'A validade precisa ficar entre amanhã e 365 dias a partir de hoje.',\n invalidOperationIds: 'Alguma operação escolhida não existe mais nesta aplicação. Reabra o formulário e escolha de novo.',\n operationNotProtected: 'Só operações protected podem ser liberadas a um grupo; as public e private já valem para ele.',\n operationPublic: 'Operação pública não precisa de token e não pode ser liberada a ele. Desmarque-a e tente de novo.',\n appNotFound: 'Aplicação não encontrada neste client. Ela pode ter sido excluída.',\n tokenNotFound: 'Token não encontrado nesta aplicação. Ele pode já ter sido revogado.',\n },\n routerErrors: {\n hierarchyGap: 'A hierarquia tem um nível vazio no meio: cada nível precisa do de cima (Header → Navegação → Menu → Item → Submenu). Preencha o nível que falta ou limpe os de baixo.',\n invalidAllowedTypes: 'Algum crachá escolhido não existe mais. Revise os crachás permitidos.',\n },\n groupErrors: {\n invalidType: 'Esse tipo de grupo não existe mais. Escolha outro tipo.',\n adminTypeReserved: 'O tipo Administrador é só do grupo de administração do projeto.',\n emptyUpdate: 'Nada para salvar: nenhum campo foi alterado.',\n groupProjectImmutable: 'O grupo não muda de projeto.',\n groupNameTaken: 'Já existe um grupo com esse nome neste projeto.',\n adminGroupImmutable: 'O grupo de administração não muda de nome, de tipo nem é desativado.',\n adminGroupProtected: 'O grupo de administração do projeto não pode ser excluído.',\n adminGroupLastMember: 'O grupo de administração não pode ficar sem membros.',\n adminGroupAccessProtected: 'O acesso do grupo de administração a este app não pode ser removido.',\n groupNotFound: 'Grupo não encontrado neste projeto. Ele pode ter sido excluído.',\n },\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 loginAttempts: {\n refresh: 'Atualizar',\n user: 'Usuário',\n userPlaceholder: 'Usuário, e-mail ou identificador digitado',\n period: 'Período',\n result: 'Resultado',\n method: 'Método',\n all: 'Todos',\n clear: 'Limpar',\n advancedFilters: 'Filtros avançados',\n ip: 'IP ou rede',\n ipPlaceholder: '10.0.0.5 ou 10.0.0.0/8',\n ipHint: 'IP exato ou rede em notação CIDR.',\n reason: 'Motivo',\n caption: 'Tentativas de login',\n pageItems: 'tentativas',\n pageSize: 'Tentativas por página',\n colDate: 'Data/hora',\n colResult: 'Resultado',\n colMethod: 'Método',\n colUser: 'Usuário',\n colReason: 'Motivo',\n colIp: 'IP',\n colRealm: 'Realm',\n colClient: 'Client',\n colUserAgent: 'Navegador',\n filterByIp: 'Filtrar por este IP',\n filterByUser: 'Filtrar por este usuário',\n noMatchingUser: 'sem usuário correspondente',\n methods: { local: 'Senha', mfa: 'MFA', github: 'GitHub', google: 'Google', keycloak: 'Keycloak', entraid: 'Entra ID' },\n results: { success: 'Sucesso', failure: 'Falha', cancelled: 'Cancelada' },\n reasons: {\n bad_password: 'Senha incorreta',\n unknown_user: 'Usuário inexistente ou inativo',\n locked: 'Conta bloqueada por tentativas',\n mfa_failed: 'Código de verificação incorreto',\n mfa_expired: 'Código de verificação vencido',\n mfa_not_allowed: 'Método de verificação não permitido',\n mfa_invalid_method: 'Método de verificação desconhecido',\n recovery_failed: 'Código de recuperação incorreto ou já usado',\n recovery_refused: 'Código de recuperação recusado',\n not_linked: 'Conta externa não vinculada',\n wrong_realm: 'Usuário de outro realm',\n },\n forbiddenAdmin: 'Sua conta não pode consultar as tentativas de login. Peça a um administrador a operação admin:attempts:list.',\n forbiddenClient: 'Só o grupo de administração do projeto, com o crachá Administrador ativo, vê as tentativas de login desta aplicação.',\n loadErrorDetail: 'Não foi possível carregar as tentativas: {detail}',\n loadError: 'Não foi possível carregar as tentativas de login.',\n },\n accountFeatures: {\n aiAgent: 'Conectar um agente de IA',\n aiAgentDescription: 'Gera o token e a configuração MCP para colar no Claude Code.',\n aiAgentKeywords: 'ia agente claude mcp assistente llm automação',\n aiAgentHelp: 'O agente usa um token de aplicação pessoal (x-app-token) com as permissões do nível de acesso escolhido. Revogue em \"Tokens de aplicação\" quando não precisar mais.',\n aiAgentStart: 'Conectar agente',\n aiAgentServers: 'Servidores MCP',\n aiAgentAccess: 'Acesso do agente',\n aiAgentReadOnly: 'Só leitura',\n aiAgentReadWrite: 'Leitura e escrita',\n aiAgentWriteHint: 'O agente poderá alterar dados em seu nome. Prefira só leitura quando bastar.',\n aiAgentReadOnlyServer: '{name} (só leitura)',\n aiAgentTokenName: 'Agente de IA ({date})',\n aiAgentGenerate: 'Gerar configuração',\n aiAgentSelectServer: 'Escolha pelo menos um servidor.',\n aiAgentResult: 'Configuração pronta',\n aiAgentResultHint: 'Cole em .mcp.json, na raiz do projeto (Claude Code). O token aparece só agora: copie antes de concluir. Vale até {date}.',\n aiAgentCopy: 'Copiar configuração',\n aiAgentCopied: 'Configuração copiada. Não compartilhe: ela contém o seu token.',\n aiAgentDone: 'Concluir',\n aiAgentCreateError: 'Não foi possível gerar o token do agente.',\n aiAgentUnavailable: 'Indisponível neste aplicativo: ele não está ligado ao argos-admin.',\n activity: 'Atividade da conta',\n activityDescription: 'Entradas e tentativas que falharam nos últimos 90 dias.',\n activityKeywords: 'login entrada acesso histórico tentativa falha ip navegador segurança',\n activityFilter: 'Mostrar',\n activityAll: 'Todas',\n activityFailures: 'Só falhas',\n activityDetail: '{date} · IP {ip}',\n activityApp: 'Aplicativo: {app}',\n activityEmpty: 'Nada nos últimos 90 dias.',\n activityMore: 'Carregar mais',\n activityShowing: '{shown} de {total}',\n activityLoadError: 'Não foi possível carregar a atividade da conta.',\n unknownIp: 'desconhecido',\n unknownApp: 'sem nome',\n idle: 'Encerrar por inatividade',\n idleDescription: 'Sai sozinho depois de um tempo sem uso, com um aviso antes.',\n idleKeywords: 'inatividade ocioso tempo sair automático logout segurança bloqueio',\n idleNever: 'Nunca',\n idleOption: '{minutes} min',\n idleLimitHint: 'Esta aplicação encerra a sessão em no máximo {minutes} min sem uso.',\n idleWarningHeading: 'A sessão vai ser encerrada',\n idleWarningText: { one: 'Nenhuma atividade há algum tempo. A sessão termina em {count} segundo.', other: 'Nenhuma atividade há algum tempo. A sessão termina em {count} segundos.' },\n idleStay: 'Continuar conectado',\n idleLogout: 'Sair agora',\n startPage: 'Tela inicial',\n startPageDescription: 'Onde a aplicação abre depois do login.',\n startPageKeywords: 'início home abertura login favorito última tela',\n startHome: 'Início',\n startLast: 'Última tela visitada',\n startFavorite: 'Favorito: {name}',\n startPageHint: 'Marque telas como favoritas para abrir numa delas.',\n defaultBadge: 'Crachá padrão',\n defaultBadgeDescription: 'Nível de acesso com que você entra nesta aplicação, em qualquer navegador.',\n defaultBadgeKeywords: 'crachá badge nível acesso perfil padrão login',\n defaultBadgeAuto: 'Automático (o de menor nível)',\n defaultBadgeSaved: 'Crachá padrão salvo. Vale a partir do próximo login.',\n defaultBadgeError: 'Não foi possível salvar o crachá padrão.',\n defaultBadgeLoadError: 'Não foi possível carregar os seus crachás.',\n notices: 'Notificações',\n noticesDescription: 'Os avisos que esta aplicação mostra.',\n noticesKeywords: 'notificação aviso alerta navegador push',\n browserNotices: 'Avisos do navegador',\n browserNoticesDescription: 'Aviso do sistema quando a aba está em segundo plano.',\n browserNoticesDenied: 'O navegador bloqueou as notificações deste site. Libere nas configurações do navegador.',\n browserNoticesUnsupported: 'Este navegador não mostra notificações.',\n noticeOpen: 'Abrir',\n sync: 'Preferências na conta',\n syncDescription: 'Aparência, região, favoritos e as demais preferências acompanham você em qualquer navegador.',\n syncKeywords: 'sincronizar nuvem conta navegador preferências backup',\n syncSynced: 'Sincronizado às {time}',\n syncSaving: 'Salvando…',\n syncLocal: 'Só neste navegador: a conta não está disponível.',\n syncError: 'Não foi possível sincronizar. Tente de novo.',\n syncNow: 'Sincronizar agora',\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 the operating system one.',\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 shows 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: 'How the side menu opens and closes.',\n sidebarKeywords: 'sidebar navigation side bar',\n sidebarHelp: 'Automatic: opens when the pointer approaches. Fixed: always open. Compact: shows only the icons.',\n sidebarAuto: 'Automatic',\n sidebarFixed: 'Fixed',\n sidebarCompact: 'Compact',\n region: 'Region',\n regionKeywords: 'language locale time date hour week',\n language: 'Language',\n languageDescription: '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: 'For dates and times. Now: {now}',\n timeZoneAuto: 'Automatic ({zone})',\n hourCycle: 'Time format',\n hourCycleHint: 'Now: {now}',\n hourCycleKeywords: 'clock 24h 12h am pm hour',\n hourCycleAuto: 'Automatic',\n hourCycle24: '24-hour',\n hourCycle12: '12-hour',\n weekStart: 'First day of the week',\n weekStartDescription: 'For calendars and date pickers.',\n weekStartKeywords: 'week calendar sunday monday',\n weekStartAuto: 'Automatic',\n shortcuts: 'Shortcuts',\n shortcutsDescription: 'Press ? on any screen to see this list.',\n shortcutsKeywords: 'keyboard keys',\n tour: 'Guided tour',\n tourDescription: 'Shows again where each part of the screen is.',\n tourKeywords: 'onboarding help introduction',\n replayTour: 'Replay tour',\n accessibility: 'Accessibility',\n accessibilityKeywords: 'accessibility reading vision',\n textSize: 'Text size',\n textSizeDescription: 'Makes text and controls larger on every screen.',\n textSizeKeywords: 'zoom font letter bigger enlarge',\n motion: 'Reduce motion',\n motionDescription: 'System follows your computer or phone.',\n motionKeywords: 'animation motion transition reduced dizziness',\n motionSystem: 'System',\n motionReduce: 'Always',\n motionFull: 'Never',\n help: 'Help',\n helpKeywords: \"help what's new tour introduction\",\n news: \"What's new\",\n newsDescription: 'What changed in the latest versions.',\n newsKeywords: 'news version release changelog',\n showNews: \"See what's new\",\n browserData: 'Browser data',\n browserDataDescription: 'Stored only in this browser, for your account.',\n browserDataKeywords: 'privacy clear delete history data',\n recentPages: 'Recent pages',\n recentPagesKeywords: 'history visited recent',\n recentSearches: 'Recent searches',\n recentSearchesKeywords: 'search query history',\n favorites: 'Favorites',\n favoritesKeywords: 'favorites star bookmarks',\n pagesCount: { zero: 'No pages stored', one: '{count} page stored', other: '{count} pages stored' },\n searchesCount: { zero: 'No searches stored', one: '{count} search stored', other: '{count} searches stored' },\n clear: 'Clear',\n confirmClear: 'Confirm',\n cancel: 'Cancel',\n recentPagesCleared: 'Recent pages cleared.',\n recentSearchesCleared: 'Recent searches cleared.',\n favoritesCleared: 'Favorites cleared.',\n restorePreferences: 'Preferences',\n restorePreferencesDescription: 'Appearance, accessibility and formats go back to the defaults.',\n restorePreferencesHelp: 'Back to the defaults: theme, main color, density, font, side menu, text size, animations, time format and first day of the week. Language, time zone and single-key shortcuts stay as they are.',\n restorePreferencesKeywords: 'restore default reset preferences',\n restore: 'Restore defaults',\n confirmRestore: 'Confirm',\n preferencesRestored: 'Preferences restored.',\n account: 'Account',\n accountKeywords: 'profile user login level sign out',\n user: 'User',\n accessLevel: 'Access level',\n accessLevelKeywords: 'badge profile permission group',\n session: 'Session',\n sessionDescription: '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. Don't share it.\",\n accessTokenKeywords: 'jwt bearer api developer',\n copy: 'Copy',\n moreAbout: 'More about {label}',\n appTokens: 'Application tokens',\n appTokensDescription: 'To use the application outside the interface: an MCP, a script.',\n appTokensKeywords: 'token app mcp api key pat x-app-token automation script integration',\n appTokensHelp: '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 logout: 'Sign out',\n logoutDescription: 'Ends the session in this browser.',\n logoutKeywords: 'logout disconnect',\n mfa: 'MFA',\n mfaDescription: 'Two-step verification of your Argos account.',\n mfaKeywords: 'security argos password authentication mfa 2fa two-factor two-step verification',\n signedInAccount: 'Argos account',\n signedInRealm: 'Realm {realm}',\n twoFactor: 'Two-step verification',\n twoFactorDescription: 'A code on top of the password to sign in.',\n twoFactorKeywords: 'mfa 2fa totp authenticator code email method device phone',\n recoveryCodes: 'Recovery codes',\n recoveryCodesDescription: 'To sign in if you lose your device.',\n recoveryCodesKeywords: 'backup recovery lost phone device mfa 2fa',\n sessions: 'Sessions and devices',\n sessionsDescription: 'Where your account is signed in.',\n sessionsKeywords: 'devices browser ip end sign out disconnect connected',\n sessionsSection: 'Sessions',\n sessionsSectionDescription: 'This session, the application tokens and the signed-in devices.',\n sessionsSectionKeywords: 'session sessions token tokens devices login security',\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: 'Version, environment, browser and preferences, to paste 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 accountSecurity: {\n loading: 'Loading…',\n loadError: \"Couldn't load your Argos account.\",\n sessionEnded: 'This sign-in session has ended in Argos. Sign in again to manage your account.',\n retry: 'Try again',\n methodTotp: 'Authenticator app',\n methodEmail: 'Email',\n methodSms: 'SMS',\n active: 'Active',\n activeWithDetail: 'Active · {detail}',\n notRegistered: 'Not set up',\n unavailable: 'Unavailable',\n requiredHint: 'Required in this environment: keep at least one method.',\n add: 'Add',\n replaceDevice: 'Switch device',\n remove: 'Remove',\n cancel: 'Cancel',\n confirm: 'Confirm',\n removeTitle: 'Remove {method}?',\n removeHint: \"You won't be able to use this method to sign in anymore.\",\n removeLastHint: 'With no method left, the recovery codes stop working too.',\n reauthTitle: 'Confirm your identity',\n reauthHint: 'For security, confirm before continuing. It lasts 5 minutes.',\n reauthHow: 'How to confirm',\n reauthPassword: 'Password',\n reauthRecoveryCode: 'Recovery code',\n currentPassword: 'Current password',\n passwordRequired: 'Enter your password.',\n recoveryCode: 'Recovery code',\n recoveryCodePlaceholder: 'XXXXX-XXXXX',\n recoveryCodeRequired: 'Enter the code.',\n recoveryCodeLength: 'The code has 10 letters and digits.',\n sendEmailCode: 'Send a code to the registered email',\n sixDigitCode: '6-digit code',\n totpTitle: 'Scan the QR code with the authenticator app',\n qrAlt: 'QR code to set up the authenticator app',\n manualKey: 'No camera? Type the key:',\n appCode: 'Code from the app',\n emailTitle: 'Add email',\n email: 'Email',\n emailPlaceholder: 'name@company.com',\n emailRequired: 'Enter the email.',\n emailInvalid: 'Enter a valid email.',\n sendCode: 'Send code',\n emailCodeTitle: 'Confirm the email',\n emailCodeHint: 'Enter the 6-digit code sent to {email}.',\n codesRemaining: { zero: 'No codes available', one: '1 code available', other: '{count} codes available' },\n codesHint: 'Each one works once. Generating new ones invalidates the previous ones.',\n codesNeedMethod: 'Set up a verification method to generate recovery codes.',\n generateCodes: 'Generate codes',\n regenerateCodes: 'Generate new codes',\n codesTitle: 'Your recovery codes',\n codesShownOnce: \"Keep them somewhere safe: they won't be shown again. Each one works once.\",\n copyCodes: 'Copy',\n downloadCodes: 'Download .txt',\n codesCopied: 'Codes copied.',\n copyFailed: \"Couldn't copy. Select the codes and copy them manually.\",\n codesSaved: \"I've saved the codes\",\n codesFileHeader: 'Argos recovery codes (each one works once)',\n codesFileName: 'recovery-codes.txt',\n notices: {\n methodAdded: 'Method added.',\n deviceReplaced: 'Device switched. The previous one no longer generates valid codes.',\n methodRemoved: 'Method removed.',\n codesRegenerated: 'Recovery codes generated. The previous ones no longer work.',\n reauthCodeSent: 'We sent a code to the registered email.',\n },\n errors: {\n generic: \"Couldn't finish. Try again.\",\n network: \"Couldn't reach Argos. Check the connection and try again.\",\n login_required: 'This sign-in session has ended in Argos. Sign in again to manage your account.',\n invalid_token: 'This sign-in session has ended in Argos. Sign in again to manage your account.',\n reauthentication_required: 'The identity confirmation expired. Confirm again to continue.',\n invalid_password: 'Wrong password.',\n account_locked: 'Too many password attempts. The account is locked for a few minutes.',\n invalid_code: 'Wrong code.',\n invalid_recovery_code: 'Invalid or already used recovery code.',\n code_expired: 'The code expired. Request another one.',\n code_not_requested: 'Request the code before typing it.',\n too_many_attempts: 'Too many attempts. Wait a few minutes and try again.',\n too_many_requests: 'Wait a moment before requesting another code.',\n mfa_method_not_allowed: \"This method isn't accepted in this environment.\",\n mfa_method_not_found: 'This method was no longer set up.',\n mfa_last_method: 'Two-step verification is required: keep at least one method.',\n invalid_email: 'Enter a valid email.',\n enrollment_not_started: 'The setup expired. Start again.',\n sms_not_available: 'SMS unavailable.',\n mfa_required_for_recovery_codes: 'Set up a verification method before generating codes.',\n session_not_found: 'The session had already ended.',\n },\n sessionsEmpty: 'No active sessions.',\n thisSession: 'This session',\n thisBrowser: 'This browser',\n appsOnly: 'Apps only',\n sessionDetail: 'IP {ip} · last used {date}',\n unknownIp: 'unknown',\n sessionSince: 'Since {date}',\n sessionApps: 'Apps: {apps}',\n unnamedApp: 'App',\n endSession: 'End',\n confirmEndSession: 'Confirm ending',\n endOthers: 'End all other sessions',\n endOthersConfirm: {\n one: 'End the other session? Apps open in it will ask you to sign in again.',\n other: 'End the {count} other sessions? Apps open in them will ask you to sign in again.',\n },\n sessionEndedNotice: 'Session ended.',\n othersEndedNotice: { zero: 'No sessions ended.', one: '1 session ended.', other: '{count} sessions ended.' },\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 logoutFailed: \"Couldn't sign out right now. Check your connection and try again.\",\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 this app. You need to (a) be in its project's administration group and (b) be signed in with the <strong>Administrator</strong> badge active. Switch badges in your profile menu, if available, or ask whoever manages the project for access.\",\n clientsLoadError: 'Could not load the clients you administer (HTTP {status}). This is not a permission issue: Argos did not respond. Try again in a moment.',\n retryLoad: 'Try again',\n pickClient: 'Select the client you want to manage',\n groupsTitle: 'Groups',\n groupsIntro: \"Create, edit and delete this client's groups and manage their members — 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 colOperations: 'Operations',\n colGuards: 'Guards',\n filterOperations: 'Filter operations',\n filterRoutes: 'Filter routes',\n noFilterMatch: 'Nothing matches “{term}”.',\n routesTreeLabel: 'Private routes',\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 colAllowedBadges: 'Allowed badges',\n anyBadge: 'Any badge',\n allowedBadgesHint: 'Empty = any badge. With one or more chosen, only groups with one of those badges can be given access to this screen in the Access tab.',\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 optionalId: 'ID (optional)',\n optionalIdPlaceholder: 'generated automatically',\n optionalIdHint: 'To keep staging and production with the same id, paste the id from the other environment; empty = generated.',\n optionalIdInvalid: 'Enter a UUID (e.g. 7c92cf1e-ee8d-49cc-85f8-355a3d6e4b86) or leave it empty.',\n idTaken: 'This id is already in use. Choose another or leave the field empty.',\n rotateSecret: 'Generate new secret',\n confirmRotateSecretHeading: 'Generate a new secret?',\n confirmRotateSecret: 'The current secret stops working right away; update the APP_SECRET of the service that uses this application. Tokens already issued stay valid until they expire (up to 1 hour).',\n rotatedSecretHeading: 'New secret for {name}',\n rotatedSecretWarning: \"Copy it now: the secret won't be shown again.\",\n rotatedSecretNote: 'The server keeps only a hash of the secret. Once this window is closed there is no way to look it up; if it gets lost, generate another one.',\n rotatedSecretLabel: 'Secret of application {name}',\n copySecret: 'Copy',\n secretCopied: 'Secret copied.',\n rotatedSecretDone: 'Done',\n rotateSecretError: \"Couldn't generate the new secret. Try again.\",\n rotateSecretNotFound: 'Application not found in this client.',\n rotateSecretForbidden: \"You don't manage this client.\",\n confirmDeleteAppHeading: 'Delete application?',\n confirmDeleteApp: 'The application {name} will be deleted and its credential will stop working. This cannot be undone.',\n confirmDeleteRouteHeading: 'Delete route?',\n confirmDeleteRoute: 'The route {name} will be deleted from this client. This cannot be undone.',\n confirmDeleteRouterHeading: 'Delete router?',\n confirmDeleteRouter: 'The router {path} will be deleted and the page leaves the menu. This cannot be undone.',\n confirmRemoveAccessHeading: 'Remove access?',\n confirmRemoveAccess: 'The group {group} loses access to the private routes of this client.',\n confirmRemoveConsumerHeading: 'Remove access to the application?',\n confirmRemoveConsumer: 'The group {group} stops consuming this application and loses its operation permissions.',\n deleteDone: 'Deleted.',\n deleteError: 'Could not delete. Try again.',\n colExcludable: 'Deletable',\n excludableYes: 'Yes',\n excludableNo: 'No',\n colName: 'Name',\n colDisplay: 'Display',\n colIcon: 'Icon',\n colPath: 'Path',\n colId: 'ID',\n copyRouteId: 'Copy the ID of route {name}',\n copyRouterId: 'Copy the ID of router {name}',\n idCopied: 'ID copied',\n reorder: 'Reorder',\n reorderTitle: 'Reorder menu',\n reorderHint: 'Change the order in which items appear in the app menu: drag by the handle (or, on the keyboard, Space on the handle and the arrow keys) or use the up and down buttons. To order what sits inside an item, open it.',\n reorderPath: 'Menu level',\n reorderRoot: 'Top of the menu',\n reorderListLabel: 'Order in {name}',\n reorderEmpty: 'No router registered to order.',\n moveUp: 'Move {name} up',\n moveDown: 'Move {name} down',\n openLevel: 'Order what sits inside {name}',\n childCount: { one: '1 item inside', other: '{count} items inside' },\n movedTo: '{name}: position {position} of {total}',\n reorderLoadError: 'Could not load the menu. Try again.',\n reorderSaveError: 'Could not save the order. Nothing was lost: try again.',\n reorderSave: 'Save order',\n newGroup: 'New group',\n editGroup: 'Edit group',\n groupsCaption: 'Project groups',\n noGroups: 'No groups yet.',\n accessLevel: 'Access level',\n pickAccessLevel: 'Select a level',\n noLevel: 'No level',\n noGroupsOfLevel: 'No groups at this level.',\n colStatus: 'Status',\n groupName: 'Name',\n groupType: 'Type',\n groupTypePlaceholder: 'Select the type',\n groupDescription: 'Description (optional)',\n openGroup: 'Open the {name} group',\n adminGroupTag: 'Administration',\n adminGroupNote:\n \"The project's administration group: its members manage this app in self-service. It is the only one in the project and can't be deleted, renamed, disabled or change type, nor be left without members.\",\n adminGroupEditNote: \"The project's administration group: only the description can change.\",\n adminGroupLastMemberWarning: \"The administration group can't be left without members: add someone else or undo a removal.\",\n confirmDeleteGroupHeading: 'Delete group?',\n confirmDeleteGroup:\n 'The {name} group will be deleted along with its members, screen access and application permissions. This cannot be undone.',\n groupSaveError: 'Could not save the group. Try again.',\n membersSaveError: 'Could not save all member changes. Check the list and try again.',\n appsCaption: 'Project applications',\n noApps: 'No applications registered yet.',\n colGrants: 'Grants',\n openApp: 'Open the application {name}',\n tabTokens: 'Tokens',\n tokensCaption: 'Application tokens',\n noTokens: 'No tokens created for this application yet.',\n newToken: 'New token',\n colTokenPrefix: 'Token prefix',\n colExpiresAt: 'Expires',\n colLastUsed: 'Last used',\n tokenExpired: 'Expired',\n tokenRevoked: 'Revoked',\n neverUsed: 'Never',\n revokeToken: 'Revoke',\n confirmRevokeTokenHeading: 'Revoke token?',\n confirmRevokeToken: 'The token {name} stops working right away. Revoking cannot be undone.',\n tokenRevokedDone: 'Token {name} revoked.',\n tokenRevokeError: 'Could not revoke the token. Try again.',\n tokensLoadError: 'Could not load the application tokens.',\n tokenName: 'Name',\n tokenDescription: 'Description (optional)',\n tokenExpiresAt: 'Expires on',\n tokenExpiresHint: 'From tomorrow up to 365 days from today.',\n tokenExpiresInvalid: 'Pick a date between tomorrow and 365 days from today.',\n tokenOperations: 'Operations granted to the token',\n tokenOperationsNote: 'Nothing comes checked: a token has no login, so check the protected and private operations it may call. Public ones need no token.',\n freeForAll: 'open to everyone',\n freeForAuthenticated: 'open to authenticated callers',\n freeNoPermission: 'does not depend on permission',\n publicNoToken: 'public: no token needed',\n createToken: 'Create token',\n tokenSaveError: 'Could not create the token. Try again.',\n tokenCreatedHeading: 'Token {name} created',\n tokenCreatedWarning: 'Copy it now: the token will not be shown again.',\n tokenCreatedNote: 'Send it in the x-api-token header. The server keeps only a hash of the token; if it is lost, revoke it and create another.',\n tokenValueLabel: 'Token {name}',\n copyToken: 'Copy',\n tokenCopied: 'Token copied.',\n hierarchyHint: 'Top-down: Navigation only with a Header, Menu only with a Navigation, Item only with a Menu and Submenu only with an Item. Clearing a level clears the ones below.',\n routerSaveError: 'Could not save the router. Try again.',\n permissionsSaveError: 'Could not save all operation changes. Reopen the panel and check.',\n permissionsSummaryGroup: '{marked} of {total} protected operations granted to the group.',\n permissionsSummaryToken: '{marked} of {total} operations granted to the token.',\n permissionsFreeGroup: {\n one: '1 operation does not depend on permission (public or private) and shows as checked.',\n other: '{count} operations do not depend on permission (public or private) and show as checked.',\n },\n permissionsFreeToken: {\n one: '1 public operation needs no token and cannot be granted.',\n other: '{count} public operations need no token and cannot be granted.',\n },\n permissionsFolderCount: '{marked} of {total}',\n permissionsTreeLabel: 'Operations',\n tokenErrors: {\n invalidExpiresAt: 'Invalid expiration date. Pick another date.',\n invalidValidity: 'The expiration must be between tomorrow and 365 days from today.',\n invalidOperationIds: 'Some selected operation no longer exists in this application. Reopen the form and choose again.',\n operationNotProtected: 'Only protected operations can be granted to a group; public and private ones already apply to it.',\n operationPublic: 'A public operation needs no token and cannot be granted to one. Uncheck it and try again.',\n appNotFound: 'Application not found in this client. It may have been deleted.',\n tokenNotFound: 'Token not found in this application. It may have been revoked already.',\n },\n routerErrors: {\n hierarchyGap: 'The hierarchy has an empty level in the middle: each level needs the one above it (Header → Navigation → Menu → Item → Submenu). Fill in the missing level or clear the ones below.',\n invalidAllowedTypes: 'A chosen badge no longer exists. Review the allowed badges.',\n },\n groupErrors: {\n invalidType: 'That group type no longer exists. Choose another type.',\n adminTypeReserved: \"The Administrator type belongs only to the project's administration group.\",\n emptyUpdate: 'Nothing to save: no field was changed.',\n groupProjectImmutable: \"A group can't move to another project.\",\n groupNameTaken: 'A group with this name already exists in this project.',\n adminGroupImmutable: \"The administration group can't be renamed, change type or be disabled.\",\n adminGroupProtected: \"The project's administration group can't be deleted.\",\n adminGroupLastMember: \"The administration group can't be left without members.\",\n adminGroupAccessProtected: \"The administration group's access to this app can't be removed.\",\n groupNotFound: 'Group not found in this project. It may have been deleted.',\n },\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 loginAttempts: {\n refresh: 'Refresh',\n user: 'User',\n userPlaceholder: 'User, e-mail or typed identifier',\n period: 'Period',\n result: 'Result',\n method: 'Method',\n all: 'All',\n clear: 'Clear',\n advancedFilters: 'Advanced filters',\n ip: 'IP or network',\n ipPlaceholder: '10.0.0.5 or 10.0.0.0/8',\n ipHint: 'Exact IP or a network in CIDR notation.',\n reason: 'Reason',\n caption: 'Login attempts',\n pageItems: 'attempts',\n pageSize: 'Attempts per page',\n colDate: 'Date/time',\n colResult: 'Result',\n colMethod: 'Method',\n colUser: 'User',\n colReason: 'Reason',\n colIp: 'IP',\n colRealm: 'Realm',\n colClient: 'Client',\n colUserAgent: 'Browser',\n filterByIp: 'Filter by this IP',\n filterByUser: 'Filter by this user',\n noMatchingUser: 'no matching user',\n methods: { local: 'Password', mfa: 'MFA', github: 'GitHub', google: 'Google', keycloak: 'Keycloak', entraid: 'Entra ID' },\n results: { success: 'Success', failure: 'Failure', cancelled: 'Cancelled' },\n reasons: {\n bad_password: 'Wrong password',\n unknown_user: 'Unknown or inactive user',\n locked: 'Account locked after failed attempts',\n mfa_failed: 'Wrong verification code',\n mfa_expired: 'Expired verification code',\n mfa_not_allowed: 'Verification method not allowed',\n mfa_invalid_method: 'Unknown verification method',\n recovery_failed: 'Recovery code wrong or already used',\n recovery_refused: 'Recovery code refused',\n not_linked: 'External account not linked',\n wrong_realm: 'User from another realm',\n },\n forbiddenAdmin: 'Your account cannot read login attempts. Ask an administrator for the admin:attempts:list operation.',\n forbiddenClient: 'Only the project administration group, with the Administrator badge active, sees the login attempts of this application.',\n loadErrorDetail: 'Could not load the attempts: {detail}',\n loadError: 'Could not load the login attempts.',\n },\n accountFeatures: {\n aiAgent: 'Connect an AI agent',\n aiAgentDescription: 'Generates the token and the MCP configuration to paste into Claude Code.',\n aiAgentKeywords: 'ai agent claude mcp assistant llm automation',\n aiAgentHelp: 'The agent uses a personal application token (x-app-token) with the permissions of the chosen access level. Revoke it under \"Application tokens\" when you no longer need it.',\n aiAgentStart: 'Connect agent',\n aiAgentServers: 'MCP servers',\n aiAgentAccess: 'Agent access',\n aiAgentReadOnly: 'Read only',\n aiAgentReadWrite: 'Read and write',\n aiAgentWriteHint: 'The agent will be able to change data on your behalf. Prefer read only when it is enough.',\n aiAgentReadOnlyServer: '{name} (read only)',\n aiAgentTokenName: 'AI agent ({date})',\n aiAgentGenerate: 'Generate configuration',\n aiAgentSelectServer: 'Choose at least one server.',\n aiAgentResult: 'Configuration ready',\n aiAgentResultHint: 'Paste into .mcp.json at the project root (Claude Code). The token is shown only now: copy it before finishing. Valid until {date}.',\n aiAgentCopy: 'Copy configuration',\n aiAgentCopied: 'Configuration copied. Do not share it: it contains your token.',\n aiAgentDone: 'Finish',\n aiAgentCreateError: 'Could not generate the agent token.',\n aiAgentUnavailable: 'Unavailable in this application: it is not connected to argos-admin.',\n activity: 'Account activity',\n activityDescription: 'Sign-ins and failed attempts in the last 90 days.',\n activityKeywords: 'login sign-in access history attempt failure ip browser security',\n activityFilter: 'Show',\n activityAll: 'All',\n activityFailures: 'Failures only',\n activityDetail: '{date} · IP {ip}',\n activityApp: 'Application: {app}',\n activityEmpty: 'Nothing in the last 90 days.',\n activityMore: 'Load more',\n activityShowing: '{shown} of {total}',\n activityLoadError: 'Could not load the account activity.',\n unknownIp: 'unknown',\n unknownApp: 'unnamed',\n idle: 'Sign out when idle',\n idleDescription: 'Signs out by itself after a while without use, with a warning first.',\n idleKeywords: 'idle inactivity timeout sign out automatic logout security lock',\n idleNever: 'Never',\n idleOption: '{minutes} min',\n idleLimitHint: 'This application signs out after at most {minutes} min without use.',\n idleWarningHeading: 'Your session is about to end',\n idleWarningText: { one: 'No activity for a while. The session ends in {count} second.', other: 'No activity for a while. The session ends in {count} seconds.' },\n idleStay: 'Stay signed in',\n idleLogout: 'Sign out now',\n startPage: 'Start page',\n startPageDescription: 'Where the application opens after signing in.',\n startPageKeywords: 'home opening login favorite last page',\n startHome: 'Home',\n startLast: 'Last visited page',\n startFavorite: 'Favorite: {name}',\n startPageHint: 'Mark pages as favorites to open on one of them.',\n defaultBadge: 'Default badge',\n defaultBadgeDescription: 'Access level you sign in with in this application, in any browser.',\n defaultBadgeKeywords: 'badge access level profile default login',\n defaultBadgeAuto: 'Automatic (the lowest level)',\n defaultBadgeSaved: 'Default badge saved. It applies from the next sign-in.',\n defaultBadgeError: 'Could not save the default badge.',\n defaultBadgeLoadError: 'Could not load your badges.',\n notices: 'Notifications',\n noticesDescription: 'The notices this application shows.',\n noticesKeywords: 'notification notice alert browser push',\n browserNotices: 'Browser notifications',\n browserNoticesDescription: 'System notification when the tab is in the background.',\n browserNoticesDenied: 'The browser blocked notifications for this site. Allow them in the browser settings.',\n browserNoticesUnsupported: 'This browser does not show notifications.',\n noticeOpen: 'Open',\n sync: 'Preferences in your account',\n syncDescription: 'Appearance, region, favorites and the other preferences follow you in any browser.',\n syncKeywords: 'sync cloud account browser preferences backup',\n syncSynced: 'Synced at {time}',\n syncSaving: 'Saving…',\n syncLocal: 'Only in this browser: the account is not available.',\n syncError: 'Could not sync. Try again.',\n syncNow: 'Sync now',\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 el del 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 muestra más información en 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: 'Cómo se abre y se cierra el menú lateral.',\n sidebarKeywords: 'sidebar navegación barra lateral',\n sidebarHelp: 'Automático: se abre al acercar el puntero. Fijo: siempre abierto. Compacto: muestra solo los íconos.',\n sidebarAuto: 'Automático',\n sidebarFixed: 'Fijo',\n sidebarCompact: 'Compacto',\n region: 'Región',\n regionKeywords: 'idioma localización horario fecha hora semana',\n language: 'Idioma',\n languageDescription: '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: 'Para fechas y horas. Ahora: {now}',\n timeZoneAuto: 'Automático ({zone})',\n hourCycle: 'Formato de hora',\n hourCycleHint: 'Ahora: {now}',\n hourCycleKeywords: 'reloj 24h 12h am pm horario',\n hourCycleAuto: 'Automático',\n hourCycle24: '24 horas',\n hourCycle12: '12 horas',\n weekStart: 'Primer día de la semana',\n weekStartDescription: 'Para calendarios y selectores de fecha.',\n weekStartKeywords: 'semana calendario domingo lunes',\n weekStartAuto: 'Automático',\n shortcuts: 'Atajos',\n shortcutsDescription: 'Pulsa ? en cualquier pantalla para ver esta lista.',\n shortcutsKeywords: 'teclado teclas',\n tour: 'Recorrido guiado',\n tourDescription: 'Muestra de nuevo dónde está cada parte de la pantalla.',\n tourKeywords: 'onboarding ayuda presentación',\n replayTour: 'Repetir recorrido',\n accessibility: 'Accesibilidad',\n accessibilityKeywords: 'accesibilidad lectura visión',\n textSize: 'Tamaño del texto',\n textSizeDescription: 'Agranda el texto y los controles de todas las pantallas.',\n textSizeKeywords: 'zoom fuente letra más grande ampliar',\n motion: 'Reducir animaciones',\n motionDescription: 'Sistema sigue la computadora o el celular.',\n motionKeywords: 'animación movimiento transición reducido mareo',\n motionSystem: 'Sistema',\n motionReduce: 'Siempre',\n motionFull: 'Nunca',\n help: 'Ayuda',\n helpKeywords: 'ayuda novedades recorrido presentación',\n news: 'Novedades',\n newsDescription: 'Lo que cambió en las últimas versiones.',\n newsKeywords: 'novedades versión lanzamiento changelog',\n showNews: 'Ver novedades',\n browserData: 'Datos del navegador',\n browserDataDescription: 'Guardados solo en este navegador, para tu cuenta.',\n browserDataKeywords: 'privacidad limpiar borrar historial datos',\n recentPages: 'Páginas recientes',\n recentPagesKeywords: 'historial visitadas recientes',\n recentSearches: 'Búsquedas recientes',\n recentSearchesKeywords: 'búsqueda historial',\n favorites: 'Favoritos',\n favoritesKeywords: 'favoritos estrella',\n pagesCount: { zero: 'Ninguna página guardada', one: '{count} página guardada', other: '{count} páginas guardadas' },\n searchesCount: { zero: 'Ninguna búsqueda guardada', one: '{count} búsqueda guardada', other: '{count} búsquedas guardadas' },\n clear: 'Limpiar',\n confirmClear: 'Confirmar',\n cancel: 'Cancelar',\n recentPagesCleared: 'Páginas recientes borradas.',\n recentSearchesCleared: 'Búsquedas recientes borradas.',\n favoritesCleared: 'Favoritos borrados.',\n restorePreferences: 'Preferencias',\n restorePreferencesDescription: 'Apariencia, accesibilidad y formatos vuelven a los valores predeterminados.',\n restorePreferencesHelp: 'Vuelven a lo predeterminado: tema, color principal, densidad, fuente, menú lateral, tamaño del texto, animaciones, formato de hora y primer día de la semana. El idioma, la zona horaria y los atajos de una sola tecla se mantienen.',\n restorePreferencesKeywords: 'restaurar predeterminado restablecer reset preferencias',\n restore: 'Restaurar',\n confirmRestore: 'Confirmar',\n preferencesRestored: 'Preferencias restauradas.',\n account: 'Cuenta',\n accountKeywords: 'perfil usuario login nivel salir',\n user: 'Usuario',\n accessLevel: 'Nivel de acceso',\n accessLevelKeywords: 'credencial badge perfil permiso grupo',\n session: 'Sesión',\n sessionDescription: '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. No lo compartas.',\n accessTokenKeywords: 'jwt bearer api desarrollador',\n copy: 'Copiar',\n moreAbout: 'Más sobre {label}',\n appTokens: 'Tokens de aplicación',\n appTokensDescription: 'Para usar la aplicación fuera de la interfaz: un MCP, un script.',\n appTokensKeywords: 'token app mcp api clave pat x-app-token automatización script integración',\n appTokensHelp: 'El token vale solo para esta aplicación, con los permisos del nivel de acceso elegido, y vence en como máximo 1 año. Envíalo en el encabezado x-app-token.',\n logout: 'Salir',\n logoutDescription: 'Cierra la sesión en este navegador.',\n logoutKeywords: 'logout desconectar',\n mfa: 'MFA',\n mfaDescription: 'Verificación en dos pasos de tu cuenta en Argos.',\n mfaKeywords: 'seguridad argos contraseña autenticación mfa 2fa dos factores dos pasos verificación',\n signedInAccount: 'Cuenta de Argos',\n signedInRealm: 'Realm {realm}',\n twoFactor: 'Verificación en dos pasos',\n twoFactorDescription: 'Un código además de la contraseña para entrar.',\n twoFactorKeywords: 'mfa 2fa totp autenticador authenticator código correo método dispositivo celular',\n recoveryCodes: 'Códigos de recuperación',\n recoveryCodesDescription: 'Para entrar si pierdes el dispositivo.',\n recoveryCodesKeywords: 'respaldo recuperación perdí celular dispositivo mfa 2fa',\n sessions: 'Sesiones y dispositivos',\n sessionsDescription: 'Dónde está conectada tu cuenta.',\n sessionsKeywords: 'dispositivos navegador ip cerrar desconectar salir conectados',\n sessionsSection: 'Sesiones',\n sessionsSectionDescription: 'Esta sesión, los tokens de aplicación y los dispositivos conectados.',\n sessionsSectionKeywords: 'sesión sesiones token tokens dispositivos login seguridad',\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: 'Versión, entorno, navegador y preferencias, para pegar 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 accountSecurity: {\n loading: 'Cargando…',\n loadError: 'No se pudo cargar tu cuenta de Argos.',\n sessionEnded: 'La sesión de este inicio de sesión terminó en Argos. Inicia sesión de nuevo para administrar la cuenta.',\n retry: 'Intentar de nuevo',\n methodTotp: 'Aplicación de autenticación',\n methodEmail: 'Correo electrónico',\n methodSms: 'SMS',\n active: 'Activo',\n activeWithDetail: 'Activo · {detail}',\n notRegistered: 'No registrado',\n unavailable: 'No disponible',\n requiredHint: 'Obligatoria en este entorno: mantén al menos un método.',\n add: 'Agregar',\n replaceDevice: 'Cambiar dispositivo',\n remove: 'Quitar',\n cancel: 'Cancelar',\n confirm: 'Confirmar',\n removeTitle: '¿Quitar {method}?',\n removeHint: 'Ya no podrás usar este método para iniciar sesión.',\n removeLastHint: 'Sin ningún método, los códigos de recuperación también dejan de valer.',\n reauthTitle: 'Confirma tu identidad',\n reauthHint: 'Por seguridad, confirma antes de continuar. Vale por 5 minutos.',\n reauthHow: 'Cómo confirmar',\n reauthPassword: 'Contraseña',\n reauthRecoveryCode: 'Código de recuperación',\n currentPassword: 'Contraseña actual',\n passwordRequired: 'Ingresa la contraseña.',\n recoveryCode: 'Código de recuperación',\n recoveryCodePlaceholder: 'XXXXX-XXXXX',\n recoveryCodeRequired: 'Ingresa el código.',\n recoveryCodeLength: 'El código tiene 10 letras y números.',\n sendEmailCode: 'Enviar un código al correo registrado',\n sixDigitCode: 'Código de 6 dígitos',\n totpTitle: 'Escanea el código QR con la aplicación de autenticación',\n qrAlt: 'Código QR para configurar la aplicación de autenticación',\n manualKey: '¿Sin cámara? Escribe la clave:',\n appCode: 'Código de la aplicación',\n emailTitle: 'Registrar correo electrónico',\n email: 'Correo electrónico',\n emailPlaceholder: 'nombre@empresa.com',\n emailRequired: 'Ingresa el correo electrónico.',\n emailInvalid: 'Ingresa un correo electrónico válido.',\n sendCode: 'Enviar código',\n emailCodeTitle: 'Confirma el correo electrónico',\n emailCodeHint: 'Escribe el código de 6 dígitos enviado a {email}.',\n codesRemaining: { zero: 'Ningún código disponible', one: '1 código disponible', other: '{count} códigos disponibles' },\n codesHint: 'Cada uno vale una vez. Generar nuevos invalida los anteriores.',\n codesNeedMethod: 'Registra un método de verificación para generar códigos de recuperación.',\n generateCodes: 'Generar códigos',\n regenerateCodes: 'Generar códigos nuevos',\n codesTitle: 'Tus códigos de recuperación',\n codesShownOnce: 'Guárdalos en un lugar seguro: no se volverán a mostrar. Cada uno vale una vez.',\n copyCodes: 'Copiar',\n downloadCodes: 'Descargar .txt',\n codesCopied: 'Códigos copiados.',\n copyFailed: 'No se pudo copiar. Selecciona los códigos y cópialos manualmente.',\n codesSaved: 'Ya guardé los códigos',\n codesFileHeader: 'Códigos de recuperación de Argos (cada uno vale una vez)',\n codesFileName: 'codigos-de-recuperacion.txt',\n notices: {\n methodAdded: 'Método registrado.',\n deviceReplaced: 'Dispositivo cambiado. El anterior ya no genera códigos válidos.',\n methodRemoved: 'Método quitado.',\n codesRegenerated: 'Códigos de recuperación generados. Los anteriores ya no valen.',\n reauthCodeSent: 'Enviamos un código al correo registrado.',\n },\n errors: {\n generic: 'No se pudo completar. Intenta de nuevo.',\n network: 'No se pudo conectar con Argos. Revisa la conexión e intenta de nuevo.',\n login_required: 'La sesión de este inicio de sesión terminó en Argos. Inicia sesión de nuevo para administrar la cuenta.',\n invalid_token: 'La sesión de este inicio de sesión terminó en Argos. Inicia sesión de nuevo para administrar la cuenta.',\n reauthentication_required: 'La confirmación de identidad venció. Confirma de nuevo para continuar.',\n invalid_password: 'Contraseña incorrecta.',\n account_locked: 'Demasiados intentos con la contraseña. La cuenta quedó bloqueada unos minutos.',\n invalid_code: 'Código incorrecto.',\n invalid_recovery_code: 'Código de recuperación inválido o ya usado.',\n code_expired: 'El código venció. Pide otro.',\n code_not_requested: 'Pide el código antes de escribirlo.',\n too_many_attempts: 'Demasiados intentos. Espera unos minutos e intenta de nuevo.',\n too_many_requests: 'Espera un poco antes de pedir otro código.',\n mfa_method_not_allowed: 'Este método no se acepta en este entorno.',\n mfa_method_not_found: 'Este método ya no estaba registrado.',\n mfa_last_method: 'La verificación en dos pasos es obligatoria: mantén al menos un método.',\n invalid_email: 'Ingresa un correo electrónico válido.',\n enrollment_not_started: 'El registro venció. Empieza de nuevo.',\n sms_not_available: 'SMS no disponible.',\n mfa_required_for_recovery_codes: 'Registra un método de verificación antes de generar códigos.',\n session_not_found: 'La sesión ya se había cerrado.',\n },\n sessionsEmpty: 'Ninguna sesión activa.',\n thisSession: 'Esta sesión',\n thisBrowser: 'Este navegador',\n appsOnly: 'Solo aplicaciones',\n sessionDetail: 'IP {ip} · último uso {date}',\n unknownIp: 'desconocida',\n sessionSince: 'Desde {date}',\n sessionApps: 'Aplicaciones: {apps}',\n unnamedApp: 'Aplicación',\n endSession: 'Cerrar',\n confirmEndSession: 'Confirmar cierre',\n endOthers: 'Cerrar todas las demás',\n endOthersConfirm: {\n one: '¿Cerrar la otra sesión? Las aplicaciones abiertas en ella pedirán iniciar sesión de nuevo.',\n other: '¿Cerrar las {count} otras sesiones? Las aplicaciones abiertas en ellas pedirán iniciar sesión de nuevo.',\n },\n sessionEndedNotice: 'Sesión cerrada.',\n othersEndedNotice: { zero: 'Ninguna sesión cerrada.', one: '1 sesión cerrada.', other: '{count} sesiones cerradas.' },\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 logoutFailed: 'No se pudo cerrar la sesión ahora. Verifica la conexión e inténtalo de nuevo.',\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 'No administras esta app. Necesitas (a) estar en el grupo de administración de su proyecto 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 quien administra el proyecto.',\n clientsLoadError: 'No fue posible cargar los clients que administra (HTTP {status}). No es falta de permiso: Argos no respondió. Inténtelo de nuevo en un momento.',\n retryLoad: 'Intentar de nuevo',\n pickClient: 'Selecciona el client que quieres administrar',\n groupsTitle: 'Grupos',\n groupsIntro: 'Crea, edita y elimina los grupos de este client y gestiona sus miembros — 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 colOperations: 'Operaciones',\n colGuards: 'Guards',\n filterOperations: 'Filtrar operaciones',\n filterRoutes: 'Filtrar rutas',\n noFilterMatch: 'Nada coincide con “{term}”.',\n routesTreeLabel: 'Rutas privadas',\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 colAllowedBadges: 'Credenciales permitidas',\n anyBadge: 'Cualquier credencial',\n allowedBadgesHint: 'Vacío = cualquier credencial. Con una o más elegidas, solo los grupos con una de esas credenciales pueden recibir acceso a esta pantalla en la pestaña Acceso.',\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 optionalId: 'ID (opcional)',\n optionalIdPlaceholder: 'generado automáticamente',\n optionalIdHint: 'Para mantener homologación y producción con el mismo id, pega el id del otro entorno; vacío = generado.',\n optionalIdInvalid: 'Indica un UUID (p. ej. 7c92cf1e-ee8d-49cc-85f8-355a3d6e4b86) o déjalo vacío.',\n idTaken: 'Ya existe un registro con este id. Usa otro o deja el campo vacío.',\n rotateSecret: 'Generar nuevo secreto',\n confirmRotateSecretHeading: '¿Generar un nuevo secreto?',\n confirmRotateSecret: 'El secreto actual deja de funcionar de inmediato; actualice el APP_SECRET del servicio que usa esta aplicación. Los tokens ya emitidos valen hasta que expiren (hasta 1 hora).',\n rotatedSecretHeading: 'Nuevo secreto de {name}',\n rotatedSecretWarning: 'Cópielo ahora: el secreto no se volverá a mostrar.',\n rotatedSecretNote: 'El servidor guarda solo un hash del secreto. Al cerrar esta ventana no hay forma de consultarlo; si se pierde, genere otro.',\n rotatedSecretLabel: 'Secreto de la aplicación {name}',\n copySecret: 'Copiar',\n secretCopied: 'Secreto copiado.',\n rotatedSecretDone: 'Listo',\n rotateSecretError: 'No se pudo generar el nuevo secreto. Inténtelo de nuevo.',\n rotateSecretNotFound: 'Aplicación no encontrada en este client.',\n rotateSecretForbidden: 'Usted no administra este client.',\n confirmDeleteAppHeading: '¿Eliminar aplicación?',\n confirmDeleteApp: 'La aplicación {name} se eliminará y su credencial dejará de funcionar. Esta acción no se puede deshacer.',\n confirmDeleteRouteHeading: '¿Eliminar ruta?',\n confirmDeleteRoute: 'La ruta {name} se eliminará de este cliente. Esta acción no se puede deshacer.',\n confirmDeleteRouterHeading: '¿Eliminar enrutador?',\n confirmDeleteRouter: 'El enrutador {path} se eliminará y la página sale del menú. Esta acción no se puede deshacer.',\n confirmRemoveAccessHeading: '¿Quitar acceso?',\n confirmRemoveAccess: 'El grupo {group} pierde el acceso a las rutas privadas de este cliente.',\n confirmRemoveConsumerHeading: '¿Quitar acceso a la aplicación?',\n confirmRemoveConsumer: 'El grupo {group} deja de consumir esta aplicación y pierde sus permisos de operación.',\n deleteDone: 'Eliminación completada.',\n deleteError: 'No se pudo eliminar. Inténtalo de nuevo.',\n colExcludable: 'Eliminable',\n excludableYes: 'Sí',\n excludableNo: 'No',\n colName: 'Nombre',\n colDisplay: 'Visible',\n colIcon: 'Ícono',\n colPath: 'Path',\n colId: 'ID',\n copyRouteId: 'Copiar el ID de la ruta {name}',\n copyRouterId: 'Copiar el ID del enrutador {name}',\n idCopied: 'ID copiado',\n reorder: 'Reordenar',\n reorderTitle: 'Reordenar menú',\n reorderHint: 'Cambie el orden en que los elementos aparecen en el menú de la app: arrastre por el asa (o, con el teclado, Espacio en el asa y las flechas) o use los botones de subir y bajar. Para ordenar lo que hay dentro de un elemento, entre en él.',\n reorderPath: 'Nivel del menú',\n reorderRoot: 'Inicio del menú',\n reorderListLabel: 'Orden en {name}',\n reorderEmpty: 'Ningún enrutador registrado para ordenar.',\n moveUp: 'Mover {name} hacia arriba',\n moveDown: 'Mover {name} hacia abajo',\n openLevel: 'Ordenar lo que hay dentro de {name}',\n childCount: { one: '1 elemento dentro', other: '{count} elementos dentro' },\n movedTo: '{name}: posición {position} de {total}',\n reorderLoadError: 'No se pudo cargar el menú. Inténtelo de nuevo.',\n reorderSaveError: 'No se pudo guardar el orden. No se perdió nada: inténtelo de nuevo.',\n reorderSave: 'Guardar orden',\n newGroup: 'Nuevo grupo',\n editGroup: 'Editar grupo',\n groupsCaption: 'Grupos del proyecto',\n noGroups: 'Aún no hay grupos registrados.',\n accessLevel: 'Nivel de acceso',\n pickAccessLevel: 'Selecciona un nivel',\n noLevel: 'Sin nivel',\n noGroupsOfLevel: 'Ningún grupo en este nivel.',\n colStatus: 'Estado',\n groupName: 'Nombre',\n groupType: 'Tipo',\n groupTypePlaceholder: 'Selecciona el tipo',\n groupDescription: 'Descripción (opcional)',\n openGroup: 'Abrir el grupo {name}',\n adminGroupTag: 'Administración',\n adminGroupNote:\n 'Grupo de administración del proyecto: sus miembros administran esta app en el autoservicio. Es el único del proyecto, no se puede eliminar, renombrar, desactivar ni cambiar de tipo, y no puede quedarse sin miembros.',\n adminGroupEditNote: 'Grupo de administración del proyecto: solo se puede cambiar la descripción.',\n adminGroupLastMemberWarning: 'El grupo de administración no puede quedarse sin miembros: agrega a otra persona o deshaz una eliminación.',\n confirmDeleteGroupHeading: '¿Eliminar grupo?',\n confirmDeleteGroup:\n 'El grupo {name} se eliminará junto con sus miembros, los accesos a pantallas y los permisos en aplicaciones. Esta acción no se puede deshacer.',\n groupSaveError: 'No se pudo guardar el grupo. Inténtalo de nuevo.',\n membersSaveError: 'No se pudieron guardar todos los cambios de los miembros. Revisa la lista e inténtalo de nuevo.',\n appsCaption: 'Aplicaciones del proyecto',\n noApps: 'Ninguna aplicación registrada todavía.',\n colGrants: 'Grants',\n openApp: 'Abrir la aplicación {name}',\n tabTokens: 'Tokens',\n tokensCaption: 'Tokens de la aplicación',\n noTokens: 'Ningún token creado para esta aplicación todavía.',\n newToken: 'Nuevo token',\n colTokenPrefix: 'Inicio del token',\n colExpiresAt: 'Vence',\n colLastUsed: 'Último uso',\n tokenExpired: 'Vencido',\n tokenRevoked: 'Revocado',\n neverUsed: 'Nunca',\n revokeToken: 'Revocar',\n confirmRevokeTokenHeading: '¿Revocar token?',\n confirmRevokeToken: 'El token {name} deja de funcionar de inmediato. La revocación no se puede deshacer.',\n tokenRevokedDone: 'Token {name} revocado.',\n tokenRevokeError: 'No se pudo revocar el token. Inténtalo de nuevo.',\n tokensLoadError: 'No se pudieron cargar los tokens de la aplicación.',\n tokenName: 'Nombre',\n tokenDescription: 'Descripción (opcional)',\n tokenExpiresAt: 'Vence el',\n tokenExpiresHint: 'Desde mañana hasta 365 días a partir de hoy.',\n tokenExpiresInvalid: 'Elige una fecha entre mañana y 365 días a partir de hoy.',\n tokenOperations: 'Operaciones concedidas al token',\n tokenOperationsNote: 'Nada viene marcado: el token no tiene login, así que marca las operaciones protected y private que puede llamar. Las public no necesitan token.',\n freeForAll: 'abierta a todos',\n freeForAuthenticated: 'abierta a autenticados',\n freeNoPermission: 'no depende de permiso',\n publicNoToken: 'pública: no necesita token',\n createToken: 'Crear token',\n tokenSaveError: 'No se pudo crear el token. Inténtalo de nuevo.',\n tokenCreatedHeading: 'Token {name} creado',\n tokenCreatedWarning: 'Cópialo ahora: el token no se mostrará de nuevo.',\n tokenCreatedNote: 'Envíalo en el encabezado x-api-token. El servidor guarda solo un hash del token; si se pierde, revócalo y crea otro.',\n tokenValueLabel: 'Token {name}',\n copyToken: 'Copiar',\n tokenCopied: 'Token copiado.',\n hierarchyHint: 'De arriba hacia abajo: Navegación solo con Header, Menú solo con Navegación, Ítem solo con Menú y Submenú solo con Ítem. Borrar un nivel borra los de abajo.',\n routerSaveError: 'No se pudo guardar el enrutador. Inténtalo de nuevo.',\n permissionsSaveError: 'No se pudieron guardar todos los cambios de las operaciones. Vuelve a abrir el panel y revisa.',\n permissionsSummaryGroup: '{marked} de {total} operaciones protegidas liberadas para el grupo.',\n permissionsSummaryToken: '{marked} de {total} operaciones liberadas para el token.',\n permissionsFreeGroup: {\n one: '1 operación no depende de permiso (public o private) y aparece marcada.',\n other: '{count} operaciones no dependen de permiso (public o private) y aparecen marcadas.',\n },\n permissionsFreeToken: {\n one: '1 operación public no necesita token y no se puede liberar.',\n other: '{count} operaciones public no necesitan token y no se pueden liberar.',\n },\n permissionsFolderCount: '{marked} de {total}',\n permissionsTreeLabel: 'Operaciones',\n tokenErrors: {\n invalidExpiresAt: 'Fecha de vencimiento no válida. Elige otra fecha.',\n invalidValidity: 'El vencimiento debe estar entre mañana y 365 días a partir de hoy.',\n invalidOperationIds: 'Alguna operación elegida ya no existe en esta aplicación. Vuelve a abrir el formulario y elige de nuevo.',\n operationNotProtected: 'Solo las operaciones protected se pueden conceder a un grupo; las public y private ya valen para él.',\n operationPublic: 'Una operación pública no necesita token y no se le puede conceder. Desmárcala e inténtalo de nuevo.',\n appNotFound: 'Aplicación no encontrada en este client. Puede haber sido eliminada.',\n tokenNotFound: 'Token no encontrado en esta aplicación. Puede que ya haya sido revocado.',\n },\n routerErrors: {\n hierarchyGap: 'La jerarquía tiene un nivel vacío en el medio: cada nivel necesita el de arriba (Header → Navegación → Menú → Ítem → Submenú). Completa el nivel que falta o borra los de abajo.',\n invalidAllowedTypes: 'Alguna credencial elegida ya no existe. Revisa las credenciales permitidas.',\n },\n groupErrors: {\n invalidType: 'Ese tipo de grupo ya no existe. Elige otro tipo.',\n adminTypeReserved: 'El tipo Administrador es solo del grupo de administración del proyecto.',\n emptyUpdate: 'Nada que guardar: no se cambió ningún campo.',\n groupProjectImmutable: 'El grupo no cambia de proyecto.',\n groupNameTaken: 'Ya existe un grupo con ese nombre en este proyecto.',\n adminGroupImmutable: 'El grupo de administración no cambia de nombre ni de tipo, ni se desactiva.',\n adminGroupProtected: 'El grupo de administración del proyecto no se puede eliminar.',\n adminGroupLastMember: 'El grupo de administración no puede quedarse sin miembros.',\n adminGroupAccessProtected: 'El acceso del grupo de administración a esta app no se puede quitar.',\n groupNotFound: 'Grupo no encontrado en este proyecto. Puede que se haya eliminado.',\n },\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 loginAttempts: {\n refresh: 'Actualizar',\n user: 'Usuario',\n userPlaceholder: 'Usuario, correo o identificador escrito',\n period: 'Período',\n result: 'Resultado',\n method: 'Método',\n all: 'Todos',\n clear: 'Limpiar',\n advancedFilters: 'Filtros avanzados',\n ip: 'IP o red',\n ipPlaceholder: '10.0.0.5 o 10.0.0.0/8',\n ipHint: 'IP exacta o red en notación CIDR.',\n reason: 'Motivo',\n caption: 'Intentos de inicio de sesión',\n pageItems: 'intentos',\n pageSize: 'Intentos por página',\n colDate: 'Fecha/hora',\n colResult: 'Resultado',\n colMethod: 'Método',\n colUser: 'Usuario',\n colReason: 'Motivo',\n colIp: 'IP',\n colRealm: 'Realm',\n colClient: 'Client',\n colUserAgent: 'Navegador',\n filterByIp: 'Filtrar por esta IP',\n filterByUser: 'Filtrar por este usuario',\n noMatchingUser: 'sin usuario correspondiente',\n methods: { local: 'Contraseña', mfa: 'MFA', github: 'GitHub', google: 'Google', keycloak: 'Keycloak', entraid: 'Entra ID' },\n results: { success: 'Éxito', failure: 'Fallo', cancelled: 'Cancelado' },\n reasons: {\n bad_password: 'Contraseña incorrecta',\n unknown_user: 'Usuario inexistente o inactivo',\n locked: 'Cuenta bloqueada por intentos',\n mfa_failed: 'Código de verificación incorrecto',\n mfa_expired: 'Código de verificación vencido',\n mfa_not_allowed: 'Método de verificación no permitido',\n mfa_invalid_method: 'Método de verificación desconocido',\n recovery_failed: 'Código de recuperación incorrecto o ya usado',\n recovery_refused: 'Código de recuperación rechazado',\n not_linked: 'Cuenta externa no vinculada',\n wrong_realm: 'Usuario de otro realm',\n },\n forbiddenAdmin: 'Tu cuenta no puede consultar los intentos de inicio de sesión. Pide a un administrador la operación admin:attempts:list.',\n forbiddenClient: 'Solo el grupo de administración del proyecto, con la insignia Administrador activa, ve los intentos de inicio de sesión de esta aplicación.',\n loadErrorDetail: 'No se pudieron cargar los intentos: {detail}',\n loadError: 'No se pudieron cargar los intentos de inicio de sesión.',\n },\n accountFeatures: {\n aiAgent: 'Conectar un agente de IA',\n aiAgentDescription: 'Genera el token y la configuración MCP para pegar en Claude Code.',\n aiAgentKeywords: 'ia agente claude mcp asistente llm automatización',\n aiAgentHelp: 'El agente usa un token de aplicación personal (x-app-token) con los permisos del nivel de acceso elegido. Revóquelo en \"Tokens de aplicación\" cuando ya no lo necesite.',\n aiAgentStart: 'Conectar agente',\n aiAgentServers: 'Servidores MCP',\n aiAgentAccess: 'Acceso del agente',\n aiAgentReadOnly: 'Solo lectura',\n aiAgentReadWrite: 'Lectura y escritura',\n aiAgentWriteHint: 'El agente podrá cambiar datos en su nombre. Prefiera solo lectura cuando sea suficiente.',\n aiAgentReadOnlyServer: '{name} (solo lectura)',\n aiAgentTokenName: 'Agente de IA ({date})',\n aiAgentGenerate: 'Generar configuración',\n aiAgentSelectServer: 'Elija al menos un servidor.',\n aiAgentResult: 'Configuración lista',\n aiAgentResultHint: 'Péguelo en .mcp.json, en la raíz del proyecto (Claude Code). El token aparece solo ahora: cópielo antes de terminar. Válido hasta {date}.',\n aiAgentCopy: 'Copiar configuración',\n aiAgentCopied: 'Configuración copiada. No la comparta: contiene su token.',\n aiAgentDone: 'Terminar',\n aiAgentCreateError: 'No fue posible generar el token del agente.',\n aiAgentUnavailable: 'No disponible en esta aplicación: no está conectada a argos-admin.',\n activity: 'Actividad de la cuenta',\n activityDescription: 'Inicios de sesión e intentos fallidos en los últimos 90 días.',\n activityKeywords: 'login acceso historial intento falla ip navegador seguridad',\n activityFilter: 'Mostrar',\n activityAll: 'Todas',\n activityFailures: 'Solo fallas',\n activityDetail: '{date} · IP {ip}',\n activityApp: 'Aplicación: {app}',\n activityEmpty: 'Nada en los últimos 90 días.',\n activityMore: 'Cargar más',\n activityShowing: '{shown} de {total}',\n activityLoadError: 'No fue posible cargar la actividad de la cuenta.',\n unknownIp: 'desconocido',\n unknownApp: 'sin nombre',\n idle: 'Cerrar por inactividad',\n idleDescription: 'Sale solo después de un tiempo sin uso, con un aviso antes.',\n idleKeywords: 'inactividad tiempo salir automático logout seguridad bloqueo',\n idleNever: 'Nunca',\n idleOption: '{minutes} min',\n idleLimitHint: 'Esta aplicación cierra la sesión en un máximo de {minutes} min sin uso.',\n idleWarningHeading: 'La sesión se va a cerrar',\n idleWarningText: { one: 'Sin actividad desde hace un tiempo. La sesión termina en {count} segundo.', other: 'Sin actividad desde hace un tiempo. La sesión termina en {count} segundos.' },\n idleStay: 'Seguir conectado',\n idleLogout: 'Salir ahora',\n startPage: 'Pantalla inicial',\n startPageDescription: 'Dónde se abre la aplicación después del inicio de sesión.',\n startPageKeywords: 'inicio apertura login favorito última pantalla',\n startHome: 'Inicio',\n startLast: 'Última pantalla visitada',\n startFavorite: 'Favorito: {name}',\n startPageHint: 'Marque pantallas como favoritas para abrir en una de ellas.',\n defaultBadge: 'Credencial predeterminada',\n defaultBadgeDescription: 'Nivel de acceso con el que entra en esta aplicación, en cualquier navegador.',\n defaultBadgeKeywords: 'credencial badge nivel acceso perfil predeterminado login',\n defaultBadgeAuto: 'Automático (el de menor nivel)',\n defaultBadgeSaved: 'Credencial predeterminada guardada. Vale desde el próximo inicio de sesión.',\n defaultBadgeError: 'No fue posible guardar la credencial predeterminada.',\n defaultBadgeLoadError: 'No fue posible cargar sus credenciales.',\n notices: 'Notificaciones',\n noticesDescription: 'Los avisos que muestra esta aplicación.',\n noticesKeywords: 'notificación aviso alerta navegador push',\n browserNotices: 'Avisos del navegador',\n browserNoticesDescription: 'Aviso del sistema cuando la pestaña está en segundo plano.',\n browserNoticesDenied: 'El navegador bloqueó las notificaciones de este sitio. Permítalas en la configuración del navegador.',\n browserNoticesUnsupported: 'Este navegador no muestra notificaciones.',\n noticeOpen: 'Abrir',\n sync: 'Preferencias en la cuenta',\n syncDescription: 'Apariencia, región, favoritos y las demás preferencias lo acompañan en cualquier navegador.',\n syncKeywords: 'sincronizar nube cuenta navegador preferencias respaldo',\n syncSynced: 'Sincronizado a las {time}',\n syncSaving: 'Guardando…',\n syncLocal: 'Solo en este navegador: la cuenta no está disponible.',\n syncError: 'No fue posible sincronizar. Inténtelo de nuevo.',\n syncNow: 'Sincronizar ahora',\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 *\n * `meta.locale` é o de formatação da lib (`HermesI18nService.formatLocale`) quando a língua é a mesma: a\n * variante regional (`en-GB`) e o relógio/primeiro dia da semana escolhidos em Região valem também nas\n * datas e horas que o spine formata.\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 picked = i18n.pick(catalogs, SPINE_MESSAGES_PT_BR);\n const base = config.override ? mergeCatalog(config.override, picked) : picked;\n const locale = i18n.formatLocale();\n const sameLanguage = locale.split('-')[0].toLowerCase() === base.meta.locale.split('-')[0].toLowerCase();\n return sameLanguage && locale !== base.meta.locale ? { ...base, meta: { ...base.meta, locale } } : 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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"}
|