@trismegisto/spine 2.1.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +105 -19
  2. package/fesm2022/trismegisto-spine-audit.mjs +264 -10
  3. package/fesm2022/trismegisto-spine-audit.mjs.map +1 -1
  4. package/fesm2022/trismegisto-spine-auto-service-apps.technical-BAKdkVdz.mjs +84 -0
  5. package/fesm2022/trismegisto-spine-auto-service-apps.technical-BAKdkVdz.mjs.map +1 -0
  6. package/fesm2022/trismegisto-spine-auto-service-apps.usage-CAXMP5r8.mjs +87 -0
  7. package/fesm2022/trismegisto-spine-auto-service-apps.usage-CAXMP5r8.mjs.map +1 -0
  8. package/fesm2022/{trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs → trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs} +6 -5
  9. package/fesm2022/trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs.map +1 -0
  10. package/fesm2022/{trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs → trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs} +9 -8
  11. package/fesm2022/trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs.map +1 -0
  12. package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs → trismegisto-spine-auto-service-auto-service-audit.component-BIL8tH1I.mjs} +4 -4
  13. package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs.map → trismegisto-spine-auto-service-auto-service-audit.component-BIL8tH1I.mjs.map} +1 -1
  14. package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs → trismegisto-spine-auto-service-auto-service-client-picker.component-CBt_0Uli.mjs} +3 -3
  15. package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs.map → trismegisto-spine-auto-service-auto-service-client-picker.component-CBt_0Uli.mjs.map} +1 -1
  16. package/fesm2022/{trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs → trismegisto-spine-auto-service-auto-service-client.component-DAxhZC-a.mjs} +123 -27
  17. package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-DAxhZC-a.mjs.map +1 -0
  18. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-CoJYTtBU.mjs +87 -0
  19. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-CoJYTtBU.mjs.map +1 -0
  20. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-UVMGF7-B.mjs +544 -0
  21. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-UVMGF7-B.mjs.map +1 -0
  22. package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-Boi-kG0G.mjs +37 -0
  23. package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-Boi-kG0G.mjs.map +1 -0
  24. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DmLafUkX.mjs +943 -0
  25. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DmLafUkX.mjs.map +1 -0
  26. package/fesm2022/{trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs → trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs} +24 -3
  27. package/fesm2022/trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs.map +1 -0
  28. package/fesm2022/{trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs → trismegisto-spine-auto-service-client.usage-CcJANb20.mjs} +15 -6
  29. package/fesm2022/trismegisto-spine-auto-service-client.usage-CcJANb20.mjs.map +1 -0
  30. package/fesm2022/trismegisto-spine-auto-service-groups.technical-BlktCM70.mjs +65 -0
  31. package/fesm2022/trismegisto-spine-auto-service-groups.technical-BlktCM70.mjs.map +1 -0
  32. package/fesm2022/trismegisto-spine-auto-service-groups.usage-Cz5sCKgn.mjs +81 -0
  33. package/fesm2022/trismegisto-spine-auto-service-groups.usage-Cz5sCKgn.mjs.map +1 -0
  34. package/fesm2022/{trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs → trismegisto-spine-auto-service-home.component-5_aji1hf.mjs} +5 -4
  35. package/fesm2022/trismegisto-spine-auto-service-home.component-5_aji1hf.mjs.map +1 -0
  36. package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs +37 -0
  37. package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs.map +1 -0
  38. package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs +60 -0
  39. package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs.map +1 -0
  40. package/fesm2022/trismegisto-spine-auto-service.mjs +49 -29
  41. package/fesm2022/trismegisto-spine-auto-service.mjs.map +1 -1
  42. package/fesm2022/trismegisto-spine-layout.mjs +1850 -217
  43. package/fesm2022/trismegisto-spine-layout.mjs.map +1 -1
  44. package/fesm2022/trismegisto-spine-shell.mjs +28 -8
  45. package/fesm2022/trismegisto-spine-shell.mjs.map +1 -1
  46. package/fesm2022/trismegisto-spine.mjs +1163 -87
  47. package/fesm2022/trismegisto-spine.mjs.map +1 -1
  48. package/package.json +6 -6
  49. package/types/trismegisto-spine-audit.d.ts +180 -5
  50. package/types/trismegisto-spine-audit.d.ts.map +1 -1
  51. package/types/trismegisto-spine-auto-service.d.ts +100 -7
  52. package/types/trismegisto-spine-auto-service.d.ts.map +1 -1
  53. package/types/trismegisto-spine-layout.d.ts +885 -22
  54. package/types/trismegisto-spine-layout.d.ts.map +1 -1
  55. package/types/trismegisto-spine-shell.d.ts +11 -2
  56. package/types/trismegisto-spine-shell.d.ts.map +1 -1
  57. package/types/trismegisto-spine.d.ts +496 -34
  58. package/types/trismegisto-spine.d.ts.map +1 -1
  59. package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs +0 -48
  60. package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs.map +0 -1
  61. package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs +0 -55
  62. package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs.map +0 -1
  63. package/fesm2022/trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs.map +0 -1
  64. package/fesm2022/trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs.map +0 -1
  65. package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs.map +0 -1
  66. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs +0 -39
  67. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs.map +0 -1
  68. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs +0 -357
  69. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs.map +0 -1
  70. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs +0 -502
  71. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs.map +0 -1
  72. package/fesm2022/trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs.map +0 -1
  73. package/fesm2022/trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs.map +0 -1
  74. package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs +0 -39
  75. package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs.map +0 -1
  76. package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs +0 -54
  77. package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs.map +0 -1
  78. package/fesm2022/trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { Type, InjectionToken, NgZone, EnvironmentProviders, Provider } from '@angular/core';
3
3
  import { HermesThemeName, HermesThemeMode, HermesFamily, HermesDensity } from '@trismegisto/angular';
4
- import { HermesThemeExtension, PluralMessage, CatalogOverride } from '@trismegisto/primitives';
4
+ import { HermesThemeExtension, TimeHourCycle, HermesMotionPreference, Weekday, PluralMessage, CatalogOverride } from '@trismegisto/primitives';
5
5
 
6
6
  interface Route {
7
7
  route_display_name?: string | null;
@@ -136,6 +136,62 @@ interface SpineConfig {
136
136
  * Padrão: `isDevMode()`. Apps com build de produção em homologação passam
137
137
  * `!environment.production` (ou equivalente) para mostrá-la fora de produção. */
138
138
  technicalDocs?: boolean;
139
+ /**
140
+ * Recursos opcionais do painel de configurações (todos desligados sem configuração). Ver `SpineFeatures`.
141
+ */
142
+ features?: SpineFeatures;
143
+ }
144
+ /** Um servidor MCP do app, oferecido em Sessões › "Conectar um agente de IA". */
145
+ interface SpineMcpServer {
146
+ /** Nome da entrada no `.mcp.json` (ex.: `hefesto`). Letras, números, `-` e `_`. */
147
+ name: string;
148
+ /** URL do MCP. Relativa (`/hefesto/mcp`) é resolvida contra a origem da página. */
149
+ url: string;
150
+ /** Rótulo exibido (padrão: `name`). */
151
+ label?: string;
152
+ /** Valor de `x-mcp-scopes` no modo só leitura. Omitido: o header não vai (o MCP já é só leitura sem ele). */
153
+ readScopes?: string;
154
+ /** Valor de `x-mcp-scopes` no modo leitura e escrita (ex.: `deploy.*`). Omitido: o servidor só é oferecido para leitura. */
155
+ writeScopes?: string;
156
+ }
157
+ /** Tipo de aviso que o app emite (`SpineNoticesService.notify`), ligável/desligável em Configurações › Notificações. */
158
+ interface SpineNoticeType {
159
+ /** Identificador estável (ex.: `deploy-concluido`): é a chave da preferência salva. */
160
+ id: string;
161
+ label: string;
162
+ description?: string;
163
+ /** Ligado enquanto a pessoa não escolher. Padrão: `true`. */
164
+ defaultEnabled?: boolean;
165
+ }
166
+ /**
167
+ * Recursos opcionais do painel de configurações. Cada um só aparece quando ligado aqui (e, quando depende do Argos,
168
+ * com a API da conta disponível — `AUTH_CONFIG` com `authority`/`realmId`).
169
+ */
170
+ interface SpineFeatures {
171
+ /** Sessões › "Conectar um agente de IA": gera um token de aplicação e a configuração MCP pronta para colar.
172
+ * Precisa de `SPINE_ADMIN_API` (tokens de aplicação). */
173
+ aiAgent?: {
174
+ servers: readonly SpineMcpServer[];
175
+ };
176
+ /** MFA › "Atividade da conta": entradas e tentativas que falharam desta conta (últimos 90 dias, API da conta). */
177
+ accountActivity?: boolean;
178
+ /** Conta › "Encerrar por inatividade". `true` = opções padrão; `{ min, max }` limita os minutos (com `max` a
179
+ * opção "Nunca" some e a escolha é limitada a ele). */
180
+ idleTimeout?: boolean | {
181
+ min?: number;
182
+ max?: number;
183
+ };
184
+ /** Conta › "Tela inicial": início, um favorito ou a última tela visitada, aplicada depois do login. */
185
+ startPage?: boolean;
186
+ /** Conta › "Crachá padrão": o nível de acesso com que o login entra (guardado no Argos, vale nos outros navegadores). */
187
+ defaultBadge?: boolean;
188
+ /** Configurações › Notificações: os tipos de aviso que o app emite e o aviso do navegador com a aba em segundo plano. */
189
+ notices?: {
190
+ types: readonly SpineNoticeType[];
191
+ };
192
+ /** Preferências (aparência, região, acessibilidade, favoritos, tela inicial…) guardadas também na conta do Argos,
193
+ * para acompanharem a pessoa em qualquer navegador. Sem a API da conta, ficam só no navegador. */
194
+ accountPreferences?: boolean;
139
195
  }
140
196
  declare const SPINE_CONFIG: InjectionToken<SpineConfig>;
141
197
 
@@ -161,8 +217,8 @@ declare class ThemeService {
161
217
  get mode(): HermesThemeMode;
162
218
  setMode(mode: HermesThemeMode): void;
163
219
  setTheme(theme: HermesThemeName): void;
164
- static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, [null, null, null, { optional: true; }]>;
165
- static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
220
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeService, [null, null, null, { optional: true; }]>;
221
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
166
222
  }
167
223
 
168
224
  /**
@@ -178,8 +234,8 @@ declare class ThemePresetService {
178
234
  get current(): HermesFamily;
179
235
  get families(): readonly HermesFamily[];
180
236
  setPreset(family: HermesFamily): void;
181
- static ɵfac: i0.ɵɵFactoryDeclaration<ThemePresetService, never>;
182
- static ɵprov: i0.ɵɵInjectableDeclaration<ThemePresetService>;
237
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemePresetService, never>;
238
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemePresetService>;
183
239
  }
184
240
 
185
241
  interface DensitySetting {
@@ -203,8 +259,8 @@ declare class DensityService {
203
259
  /** Só alterna entre comfortable e compact — mesmo comportamento do spine antigo
204
260
  * (que chamava a densidade não-compacta de "regular"; o DS novo chama de "comfortable"). */
205
261
  toggleDensity(): void;
206
- static ɵfac: i0.ɵɵFactoryDeclaration<DensityService, [null, null, { optional: true; }]>;
207
- static ɵprov: i0.ɵɵInjectableDeclaration<DensityService>;
262
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DensityService, [null, null, { optional: true; }]>;
263
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DensityService>;
208
264
  }
209
265
 
210
266
  /** Registra o catálogo de ícones inteiro — o spine (header/sidebar/navegação/modal/onboarding)
@@ -240,14 +296,30 @@ interface PackageInfo {
240
296
  }
241
297
  declare const APP_PACKAGE_INFO: InjectionToken<PackageInfo>;
242
298
 
299
+ /** Minutos de inatividade oferecidos em "Encerrar por inatividade" (0 = nunca). */
300
+ declare const SPINE_IDLE_OPTIONS: readonly number[];
301
+ /**
302
+ * Tela inicial depois do login: `home` (a padrão do app), `last` (a última visitada) ou `fav:<id>` (um favorito,
303
+ * pelo `id` do `SpineQuickAccessService`).
304
+ */
305
+ type SpineStartPagePreference = 'home' | 'last' | `fav:${string}`;
306
+ /** Relógio escolhido em Região: vazio = o do idioma. */
307
+ type SpineHourCyclePreference = '' | TimeHourCycle;
308
+ /** Primeiro dia da semana escolhido em Região: `null` = o do idioma. */
309
+ type SpineWeekStartPreference = Weekday | null;
243
310
  /**
244
311
  * Preferências do usuário que não são de tema (tema/família/densidade continuam no
245
- * `HermesThemeService`; modo do menu lateral no `HermesSidebarService`): fuso horário, idioma e o
246
- * interruptor dos atalhos de tecla única (WCAG 2.1.4) do `HermesShortcutService`.
312
+ * `HermesThemeService`; modo do menu lateral no `HermesSidebarService`): fuso horário, idioma, relógio de
313
+ * 12/24 h e primeiro dia da semana (`HermesI18nService.setRegionalFormat`), tamanho do texto
314
+ * (`HermesZoomService.setTextScale`), movimento (`HermesMotionService.setPreference`) e o interruptor dos
315
+ * atalhos de tecla única (WCAG 2.1.4) do `HermesShortcutService`.
316
+ *
317
+ * Também guarda as preferências dos recursos opcionais (`SpineFeatures`): minutos de inatividade, tela inicial,
318
+ * tipos de aviso ligados e o aviso do navegador.
247
319
  *
248
- * Por enquanto vive no navegador (localStorage, sincronizado entre abas). A sincronização com o
249
- * servidor (argos-admin `/me/preferences`) entra depois sem mudar esta API: quem lê `timeZone()`
250
- * não precisa saber de onde o valor veio.
320
+ * Vive no navegador (localStorage, sincronizado entre abas). Com `SpineFeatures.accountPreferences`, o
321
+ * `SpineAccountPreferencesService` (`@trismegisto/spine/layout`) espelha estes valores na conta do Argos e os aplica
322
+ * pelos mesmos `set*` no login: quem lê `timeZone()` não precisa saber de onde o valor veio.
251
323
  */
252
324
  declare class SpinePreferencesService {
253
325
  private readonly browser;
@@ -256,24 +328,51 @@ declare class SpinePreferencesService {
256
328
  private readonly timeZoneKey;
257
329
  private readonly languageKey;
258
330
  private readonly characterKeysKey;
331
+ private readonly textScaleKey;
332
+ private readonly motionKey;
333
+ private readonly hourCycleKey;
334
+ private readonly weekStartKey;
259
335
  private readonly shortcuts;
260
336
  private readonly i18n;
337
+ private readonly zoom;
338
+ private readonly motionService;
261
339
  /** Idioma com que o app subiu (`provideHermesI18n`) — vale quando a pessoa não escolheu nenhum. */
262
340
  readonly appLanguage: string;
263
341
  private readonly channel;
264
342
  /** Fuso escolhido (IANA, ex.: "America/Sao_Paulo"). Vazio = o do navegador. */
265
- readonly timeZone: i0.WritableSignal<string>;
343
+ readonly timeZone: _angular_core.WritableSignal<string>;
266
344
  /** Fuso do navegador, para mostrar ao lado da opção "automático". */
267
345
  readonly browserTimeZone: string;
268
346
  /** O fuso que vale de fato: o escolhido ou, sem escolha, o do navegador. */
269
- readonly effectiveTimeZone: i0.Signal<string>;
347
+ readonly effectiveTimeZone: _angular_core.Signal<string>;
270
348
  /** Idioma escolhido (BCP 47: `pt-BR`, `en`, `es`). Vazio = o padrão do app. */
271
- readonly language: i0.WritableSignal<string>;
349
+ readonly language: _angular_core.WritableSignal<string>;
272
350
  /**
273
351
  * Atalhos de tecla única (`?`, `G H`) ligados — WCAG 2.1.4. Guardado por app (`'on'`/`'off'`);
274
352
  * sem escolha salva, vale o padrão do `HermesShortcutService` (`provideHermesShortcuts`).
275
353
  */
276
- readonly characterKeys: i0.WritableSignal<boolean>;
354
+ readonly characterKeys: _angular_core.WritableSignal<boolean>;
355
+ /** Tamanho do texto (1 = 100%; os oferecidos em `HERMES_TEXT_SCALES`). */
356
+ readonly textScale: _angular_core.WritableSignal<number>;
357
+ /** Movimento: `system` segue o `prefers-reduced-motion`; `reduce` sempre reduz; `full` nunca. */
358
+ readonly motion: _angular_core.WritableSignal<HermesMotionPreference>;
359
+ /** Relógio: `h23` (24 horas), `h12` (12 horas) ou vazio (o do idioma). */
360
+ readonly hourCycle: _angular_core.WritableSignal<SpineHourCyclePreference>;
361
+ /** Primeiro dia da semana (0 = domingo, 1 = segunda) ou `null` (o do idioma). */
362
+ readonly weekStart: _angular_core.WritableSignal<SpineWeekStartPreference>;
363
+ private readonly idleKey;
364
+ private readonly startPageKey;
365
+ private readonly noticesKey;
366
+ private readonly browserNoticesKey;
367
+ /** Encerrar a sessão depois de tantos minutos sem uso (0 = nunca). Os limites do app (`SpineFeatures.idleTimeout`)
368
+ * são aplicados por quem usa o valor (`SpineIdleService`), não aqui. */
369
+ readonly idleMinutes: _angular_core.WritableSignal<number>;
370
+ /** Tela que abre depois do login. */
371
+ readonly startPage: _angular_core.WritableSignal<SpineStartPagePreference>;
372
+ /** Tipos de aviso que a pessoa ligou/desligou (`id` → ligado); tipo ausente segue o `defaultEnabled` dele. */
373
+ readonly noticeTypes: _angular_core.WritableSignal<Readonly<Record<string, boolean>>>;
374
+ /** Aviso do navegador (Notification API) quando a aba está em segundo plano. */
375
+ readonly browserNotices: _angular_core.WritableSignal<boolean>;
277
376
  /** Idiomas oferecidos na configuração, cada um com o nome no próprio idioma (padrão de mercado). */
278
377
  readonly languages: readonly {
279
378
  readonly value: string;
@@ -288,13 +387,34 @@ declare class SpinePreferencesService {
288
387
  /** Troca o idioma da lib e do spine na hora, guarda e avisa as outras abas. Vazio = padrão do app. */
289
388
  setLanguage(value: string): void;
290
389
  private applyLanguage;
390
+ /** Tamanho do texto na hora (1 = 100%), guarda e avisa as outras abas. */
391
+ setTextScale(value: number): void;
392
+ private applyTextScale;
393
+ /** Movimento na hora (`system`/`reduce`/`full`), guarda e avisa as outras abas. */
394
+ setMotion(value: HermesMotionPreference): void;
395
+ private applyMotion;
396
+ /** Relógio na hora (`h23`/`h12`; vazio = o do idioma), guarda e avisa as outras abas. */
397
+ setHourCycle(value: SpineHourCyclePreference): void;
398
+ /** Primeiro dia da semana na hora (0 = domingo, 1 = segunda; `null` = o do idioma), guarda e avisa. */
399
+ setWeekStart(value: SpineWeekStartPreference): void;
400
+ private applyRegionalFormat;
401
+ /** Minutos sem uso até encerrar a sessão (0 = nunca), guarda e avisa as outras abas. */
402
+ setIdleMinutes(value: number): void;
403
+ /** Tela inicial depois do login, guarda e avisa as outras abas. */
404
+ setStartPage(value: SpineStartPagePreference): void;
405
+ /** Liga/desliga um tipo de aviso, guarda e avisa as outras abas. */
406
+ setNoticeType(id: string, enabled: boolean): void;
407
+ /** Troca o mapa inteiro de tipos de aviso (restaurar, sincronização com a conta). */
408
+ setNoticeTypes(value: Readonly<Record<string, boolean>>): void;
409
+ /** Liga/desliga o aviso do navegador, guarda e avisa as outras abas (a permissão é pedida por quem chama). */
410
+ setBrowserNotices(enabled: boolean): void;
291
411
  setTimeZone(value: string): void;
292
412
  /** Todos os fusos IANA que o navegador conhece (vazio em navegador antigo). */
293
413
  supportedTimeZones(): string[];
294
414
  private read;
295
415
  private write;
296
- static ɵfac: i0.ɵɵFactoryDeclaration<SpinePreferencesService, never>;
297
- static ɵprov: i0.ɵɵInjectableDeclaration<SpinePreferencesService>;
416
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinePreferencesService, never>;
417
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpinePreferencesService>;
298
418
  }
299
419
 
300
420
  /**
@@ -325,8 +445,8 @@ declare class SpineQuickAccessService {
325
445
  private readonly storage;
326
446
  private readonly favoriteList;
327
447
  private readonly recentList;
328
- readonly favorites: i0.Signal<readonly QuickAccessItem[]>;
329
- readonly recents: i0.Signal<readonly QuickAccessItem[]>;
448
+ readonly favorites: _angular_core.Signal<readonly QuickAccessItem[]>;
449
+ readonly recents: _angular_core.Signal<readonly QuickAccessItem[]>;
330
450
  private readonly favoriteSet;
331
451
  constructor();
332
452
  private get favoritesKey();
@@ -334,12 +454,14 @@ declare class SpineQuickAccessService {
334
454
  private reload;
335
455
  isFavorite(id: string | null | undefined): boolean;
336
456
  toggleFavorite(item: QuickAccessItem): void;
457
+ /** Troca a lista de favoritos inteira (sincronização com a conta). Itens inválidos ou repetidos são descartados. */
458
+ setFavorites(items: readonly unknown[]): void;
337
459
  recordVisit(item: QuickAccessItem): void;
338
460
  forgetRecent(id: string): void;
339
461
  private commit;
340
462
  private load;
341
- static ɵfac: i0.ɵɵFactoryDeclaration<SpineQuickAccessService, never>;
342
- static ɵprov: i0.ɵɵInjectableDeclaration<SpineQuickAccessService>;
463
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineQuickAccessService, never>;
464
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineQuickAccessService>;
343
465
  }
344
466
 
345
467
  /** Listas do shell guardadas no navegador, por usuário. */
@@ -347,6 +469,8 @@ declare const SPINE_USER_STORAGE_KEYS: {
347
469
  readonly favorites: "nav_favorites";
348
470
  readonly recents: "nav_recent";
349
471
  readonly recentSearches: "header_recent_searches";
472
+ /** Última tela visitada, guardada só com a tela inicial "Última tela visitada" (`SpineStartPageService`). */
473
+ readonly lastPage: "start_last_page";
350
474
  };
351
475
  type SpineUserStorageKey = (typeof SPINE_USER_STORAGE_KEYS)[keyof typeof SPINE_USER_STORAGE_KEYS];
352
476
  /**
@@ -355,8 +479,9 @@ type SpineUserStorageKey = (typeof SPINE_USER_STORAGE_KEYS)[keyof typeof SPINE_U
355
479
  *
356
480
  * - Sem `sub` (sem sessão, ou app sem `@orfeu/angular`) a chave é a antiga, `<clientId>_<lista>`.
357
481
  * - Com `sub`, a chave antiga sem usuário é apagada (era compartilhada entre todas as contas do navegador).
358
- * - No logout (`clearHistory()`, chamado pelo spine antes do `logout()`, e o `isAuth$` indo para `false`, que
359
- * cobre o logout vindo de outra aba) os HISTÓRICOS do usuário saem; os favoritos ficam.
482
+ * - No logout (`clearHistory()`, chamado pelo `SpineLogoutService` só quando o `logout()` deu certo, e o `isAuth$`
483
+ * indo para `false`, que cobre o logout vindo de outra aba) os HISTÓRICOS do usuário saem; os favoritos ficam.
484
+ * Logout que falhou no Argos (`@orfeu/angular` 1.3.x) mantém a sessão e os históricos.
360
485
  */
361
486
  declare class SpineUserStorage {
362
487
  private readonly browser;
@@ -372,12 +497,19 @@ declare class SpineUserStorage {
372
497
  key(list: SpineUserStorageKey): string;
373
498
  /** Apaga buscas recentes e páginas recentes do usuário (o atual ou o último visto). Favoritos ficam. */
374
499
  clearHistory(): void;
500
+ /**
501
+ * Apaga uma lista do usuário atual (Configurações › Dados do navegador): a chave dele, e também a antiga sem
502
+ * usuário. Quem guarda a lista em memória relê (`onChange`).
503
+ */
504
+ clear(list: SpineUserStorageKey): void;
505
+ /** Quantos itens a lista do usuário atual tem guardados (0 sem nada ou com valor ilegível). */
506
+ count(list: SpineUserStorageKey): number;
375
507
  /** Avisa quando a sessão muda ou o histórico é limpo (quem guarda a lista em memória relê). */
376
508
  onChange(listener: () => void): () => void;
377
509
  private notify;
378
510
  private dropLegacy;
379
- static ɵfac: i0.ɵɵFactoryDeclaration<SpineUserStorage, never>;
380
- static ɵprov: i0.ɵɵInjectableDeclaration<SpineUserStorage>;
511
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineUserStorage, never>;
512
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineUserStorage>;
381
513
  }
382
514
 
383
515
  /**
@@ -631,6 +763,8 @@ interface SpineMessages {
631
763
  sidebar: string;
632
764
  sidebarDescription: string;
633
765
  sidebarKeywords: string;
766
+ /** Detalhe de cada modo do menu lateral (toggletip ao lado do rótulo). */
767
+ sidebarHelp: string;
634
768
  sidebarAuto: string;
635
769
  sidebarFixed: string;
636
770
  sidebarCompact: string;
@@ -647,6 +781,18 @@ interface SpineMessages {
647
781
  timeZoneHint: string;
648
782
  /** `{zone}` = fuso detectado no navegador. */
649
783
  timeZoneAuto: string;
784
+ /** Formato de hora (Região): automático pelo idioma, 24 ou 12 horas. `{now}` = hora agora no formato. */
785
+ hourCycle: string;
786
+ hourCycleHint: string;
787
+ hourCycleKeywords: string;
788
+ hourCycleAuto: string;
789
+ hourCycle24: string;
790
+ hourCycle12: string;
791
+ /** Primeiro dia da semana (Região); domingo e segunda saem do `Intl`, no idioma. */
792
+ weekStart: string;
793
+ weekStartDescription: string;
794
+ weekStartKeywords: string;
795
+ weekStartAuto: string;
650
796
  shortcuts: string;
651
797
  shortcutsDescription: string;
652
798
  shortcutsKeywords: string;
@@ -654,6 +800,52 @@ interface SpineMessages {
654
800
  tourDescription: string;
655
801
  tourKeywords: string;
656
802
  replayTour: string;
803
+ /** Seção "Acessibilidade" (`?settings=acessibilidade`). */
804
+ accessibility: string;
805
+ accessibilityKeywords: string;
806
+ textSize: string;
807
+ textSizeDescription: string;
808
+ textSizeKeywords: string;
809
+ motion: string;
810
+ motionDescription: string;
811
+ motionKeywords: string;
812
+ motionSystem: string;
813
+ motionReduce: string;
814
+ motionFull: string;
815
+ /** Seção "Ajuda" (`?settings=ajuda`): novidades e tour. */
816
+ help: string;
817
+ helpKeywords: string;
818
+ news: string;
819
+ newsDescription: string;
820
+ newsKeywords: string;
821
+ showNews: string;
822
+ /** Seção "Dados do navegador" (`?settings=dados`): listas guardadas e restaurar preferências. */
823
+ browserData: string;
824
+ browserDataDescription: string;
825
+ browserDataKeywords: string;
826
+ recentPages: string;
827
+ recentPagesKeywords: string;
828
+ recentSearches: string;
829
+ recentSearchesKeywords: string;
830
+ favorites: string;
831
+ favoritesKeywords: string;
832
+ /** Quantos itens a lista guarda (descrição da linha). */
833
+ pagesCount: PluralMessage;
834
+ searchesCount: PluralMessage;
835
+ clear: string;
836
+ confirmClear: string;
837
+ cancel: string;
838
+ recentPagesCleared: string;
839
+ recentSearchesCleared: string;
840
+ favoritesCleared: string;
841
+ restorePreferences: string;
842
+ restorePreferencesDescription: string;
843
+ /** O que volta ao padrão e o que fica (toggletip ao lado do rótulo). */
844
+ restorePreferencesHelp: string;
845
+ restorePreferencesKeywords: string;
846
+ restore: string;
847
+ confirmRestore: string;
848
+ preferencesRestored: string;
657
849
  account: string;
658
850
  accountKeywords: string;
659
851
  user: string;
@@ -672,15 +864,20 @@ interface SpineMessages {
672
864
  accessTokenDescription: string;
673
865
  accessTokenKeywords: string;
674
866
  copy: string;
867
+ /** Nome acessível do toggletip de ajuda de uma linha; `{label}` é o rótulo da linha. */
868
+ moreAbout: string;
675
869
  appTokens: string;
676
870
  appTokensDescription: string;
677
871
  appTokensKeywords: string;
872
+ /** Detalhe dos tokens de aplicação (toggletip ao lado do rótulo). */
873
+ appTokensHelp: string;
678
874
  logout: string;
679
875
  logoutDescription: string;
680
876
  logoutKeywords: string;
681
- security: string;
682
- securityDescription: string;
683
- securityKeywords: string;
877
+ /** Seção "MFA" (`?settings=mfa`; a antiga `seguranca` também abre). */
878
+ mfa: string;
879
+ mfaDescription: string;
880
+ mfaKeywords: string;
684
881
  signedInAccount: string;
685
882
  /** `{realm}` = realm do Argos (nome ou id, como o app usa no login). */
686
883
  signedInRealm: string;
@@ -690,9 +887,14 @@ interface SpineMessages {
690
887
  recoveryCodes: string;
691
888
  recoveryCodesDescription: string;
692
889
  recoveryCodesKeywords: string;
890
+ /** Linha "Sessões e dispositivos" (dentro da seção Sessões). */
693
891
  sessions: string;
694
892
  sessionsDescription: string;
695
893
  sessionsKeywords: string;
894
+ /** Seção "Sessões" (`?settings=sessoes`): sessão, token de acesso, tokens de aplicação, sessões e dispositivos. */
895
+ sessionsSection: string;
896
+ sessionsSectionDescription: string;
897
+ sessionsSectionKeywords: string;
696
898
  about: string;
697
899
  aboutKeywords: string;
698
900
  application: string;
@@ -923,6 +1125,8 @@ interface SpineMessages {
923
1125
  signInAgain: string;
924
1126
  callbackFailedHeading: string;
925
1127
  callbackFailedText: string;
1128
+ /** `logout()` que o Argos não confirmou (o `@orfeu/angular` repetiu uma vez): a sessão continua. */
1129
+ logoutFailed: string;
926
1130
  };
927
1131
  routing: {
928
1132
  notPublished: string;
@@ -959,6 +1163,7 @@ interface SpineMessages {
959
1163
  create: string;
960
1164
  edit: string;
961
1165
  remove: string;
1166
+ /** @deprecated não é mais exibido (Grupos e Aplicações viraram tabelas, sem "Consultar"). */
962
1167
  search: string;
963
1168
  active: string;
964
1169
  inactive: string;
@@ -972,13 +1177,14 @@ interface SpineMessages {
972
1177
  tabRoutes: string;
973
1178
  tabRouters: string;
974
1179
  tabAccess: string;
975
- /** `[innerHTML]`. */
1180
+ /** `[innerHTML]`. Sem client: a pessoa não administra o app em que está logada. */
976
1181
  noClients: string;
977
1182
  pickClient: string;
978
1183
  groupsTitle: string;
979
1184
  groupsIntro: string;
980
1185
  /** @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). */
981
1186
  groupsFixed: string;
1187
+ /** @deprecated não é mais exibido (a tela Grupos lista os grupos numa tabela, sem "Consultar"). */
982
1188
  pickGroup: string;
983
1189
  noDescription: string;
984
1190
  /** @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). */
@@ -1023,13 +1229,15 @@ interface SpineMessages {
1023
1229
  guardsHint: string;
1024
1230
  noPrivateRoutes: string;
1025
1231
  register: string;
1232
+ /** @deprecated não é mais exibido (a tela Aplicações lista as aplicações numa tabela, sem "Consultar"). */
1026
1233
  appsSearchIntro: string;
1027
1234
  secretCreated: string;
1235
+ /** @deprecated não é mais exibido (a tela Aplicações lista as aplicações numa tabela, sem "Consultar"). */
1028
1236
  pickApp: string;
1029
1237
  disable: string;
1030
1238
  enable: string;
1031
1239
  delete: string;
1032
- /** Nome acessível da faixa de abas da aplicação escolhida (Operações/Acessos). */
1240
+ /** Nome acessível da faixa de abas da aplicação escolhida (Operações/Acessos/Tokens). */
1033
1241
  appSections: string;
1034
1242
  tabOperations: string;
1035
1243
  tabAccesses: string;
@@ -1072,6 +1280,11 @@ interface SpineMessages {
1072
1280
  colPage: string;
1073
1281
  colBuiltPath: string;
1074
1282
  colVisibility: string;
1283
+ /** Coluna e campo do roteador: tipos de grupo (crachás) que podem receber acesso à tela (`allowed_type_ids`). */
1284
+ colAllowedBadges: string;
1285
+ /** Roteador sem restrição de crachá (`allowed_type_ids` vazio); também o placeholder do campo. */
1286
+ anyBadge: string;
1287
+ allowedBadgesHint: string;
1075
1288
  /** @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). */
1076
1289
  routesTitle: string;
1077
1290
  newRoute: string;
@@ -1095,6 +1308,23 @@ interface SpineMessages {
1095
1308
  pathHint: string;
1096
1309
  pathInvalid: string;
1097
1310
  /** Confirmação das exclusões (diálogo): título e mensagem; `{name}`, `{path}` ou `{group}`. */
1311
+ /**
1312
+ * "Gerar novo segredo" de uma aplicação: botão, confirmação, a janela que mostra o segredo uma vez
1313
+ * (`{name}` = nome da aplicação), copiar e os erros (genérico, 404 e 403).
1314
+ */
1315
+ rotateSecret: string;
1316
+ confirmRotateSecretHeading: string;
1317
+ confirmRotateSecret: string;
1318
+ rotatedSecretHeading: string;
1319
+ rotatedSecretWarning: string;
1320
+ rotatedSecretNote: string;
1321
+ rotatedSecretLabel: string;
1322
+ copySecret: string;
1323
+ secretCopied: string;
1324
+ rotatedSecretDone: string;
1325
+ rotateSecretError: string;
1326
+ rotateSecretNotFound: string;
1327
+ rotateSecretForbidden: string;
1098
1328
  confirmDeleteAppHeading: string;
1099
1329
  confirmDeleteApp: string;
1100
1330
  confirmDeleteRouteHeading: string;
@@ -1135,6 +1365,113 @@ interface SpineMessages {
1135
1365
  reorderLoadError: string;
1136
1366
  reorderSaveError: string;
1137
1367
  reorderSave: string;
1368
+ /** Tela Grupos: lista dos grupos do projeto, criar/editar/excluir. */
1369
+ newGroup: string;
1370
+ editGroup: string;
1371
+ groupsCaption: string;
1372
+ noGroups: string;
1373
+ colStatus: string;
1374
+ groupName: string;
1375
+ groupType: string;
1376
+ groupTypePlaceholder: string;
1377
+ groupDescription: string;
1378
+ /** `{name}`: nome acessível do botão que abre o grupo na lista. */
1379
+ openGroup: string;
1380
+ /** @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). */
1381
+ adminGroupTag: string;
1382
+ /** @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). */
1383
+ adminGroupNote: string;
1384
+ /** @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). */
1385
+ adminGroupEditNote: string;
1386
+ /** @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). */
1387
+ adminGroupLastMemberWarning: string;
1388
+ /** Confirmação da exclusão; `{name}`. */
1389
+ confirmDeleteGroupHeading: string;
1390
+ confirmDeleteGroup: string;
1391
+ groupSaveError: string;
1392
+ membersSaveError: string;
1393
+ /**
1394
+ * Erros do argos-admin-server nos grupos e acessos do auto-serviço, pelo código (`error`) da resposta
1395
+ * (ver `autoServiceErrorText`). `groupNotFound` é o 404 de grupo de outro projeto.
1396
+ */
1397
+ /** Tela Aplicações: tabela das aplicações do projeto (clicar na linha abre a aplicação embaixo). */
1398
+ appsCaption: string;
1399
+ noApps: string;
1400
+ colGrants: string;
1401
+ /** `{name}`: nome acessível do botão que abre a aplicação na lista. */
1402
+ openApp: string;
1403
+ /** Aba Tokens da aplicação: tokens de API (`x-api-token`), criar e revogar. */
1404
+ tabTokens: string;
1405
+ tokensCaption: string;
1406
+ noTokens: string;
1407
+ newToken: string;
1408
+ colTokenPrefix: string;
1409
+ colExpiresAt: string;
1410
+ colLastUsed: string;
1411
+ tokenExpired: string;
1412
+ tokenRevoked: string;
1413
+ neverUsed: string;
1414
+ revokeToken: string;
1415
+ confirmRevokeTokenHeading: string;
1416
+ /** `{name}`. */
1417
+ confirmRevokeToken: string;
1418
+ /** `{name}`. */
1419
+ tokenRevokedDone: string;
1420
+ tokenRevokeError: string;
1421
+ tokensLoadError: string;
1422
+ /** Modal "Novo token": campos, validade (de amanhã a 365 dias) e as operações liberadas ao token. */
1423
+ tokenName: string;
1424
+ tokenDescription: string;
1425
+ tokenExpiresAt: string;
1426
+ tokenExpiresHint: string;
1427
+ tokenExpiresInvalid: string;
1428
+ tokenOperations: string;
1429
+ tokenOperationsNote: string;
1430
+ /** Por que a operação não depende de permissão (caixa marcada e desabilitada): public/optional, private, outro nível. */
1431
+ freeForAll: string;
1432
+ freeForAuthenticated: string;
1433
+ freeNoPermission: string;
1434
+ createToken: string;
1435
+ tokenSaveError: string;
1436
+ /** O token criado, mostrado uma única vez; `{name}` = nome do token. */
1437
+ tokenCreatedHeading: string;
1438
+ tokenCreatedWarning: string;
1439
+ tokenCreatedNote: string;
1440
+ tokenValueLabel: string;
1441
+ copyToken: string;
1442
+ tokenCopied: string;
1443
+ /** Roteadores: a hierarquia é de cima para baixo (cada nível só com o de cima escolhido). */
1444
+ hierarchyHint: string;
1445
+ routerSaveError: string;
1446
+ /** "Gerenciar operações" (grupo ou token): falha ao gravar alguma liberação/retirada. */
1447
+ permissionsSaveError: string;
1448
+ /** Erros do argos-admin-server nos tokens de aplicação, pelo código (`error`) da resposta (ver `autoServiceErrorText`). */
1449
+ tokenErrors: {
1450
+ invalidExpiresAt: string;
1451
+ invalidValidity: string;
1452
+ invalidOperationIds: string;
1453
+ operationNotProtected: string;
1454
+ appNotFound: string;
1455
+ tokenNotFound: string;
1456
+ };
1457
+ /** Erros do argos-admin-server nos roteadores (`router_hierarchy_gap`: nível sem o nível de cima). */
1458
+ routerErrors: {
1459
+ hierarchyGap: string;
1460
+ /** Algum id de `allowed_type_ids` não é tipo de grupo do realm. */
1461
+ invalidAllowedTypes: string;
1462
+ };
1463
+ groupErrors: {
1464
+ invalidType: string;
1465
+ adminTypeReserved: string;
1466
+ emptyUpdate: string;
1467
+ groupProjectImmutable: string;
1468
+ groupNameTaken: string;
1469
+ adminGroupImmutable: string;
1470
+ adminGroupProtected: string;
1471
+ adminGroupLastMember: string;
1472
+ adminGroupAccessProtected: string;
1473
+ groupNotFound: string;
1474
+ };
1138
1475
  };
1139
1476
  /**
1140
1477
  * Tela "Auditoria" (`@trismegisto/spine/audit`, `SpineAuditComponent`): a mesma nos dois escopos — o
@@ -1332,6 +1669,127 @@ interface SpineMessages {
1332
1669
  /** `{app}`, `{operation}`, `{outcome}`, `{offset}`, `{duration}`. */
1333
1670
  spanRow: string;
1334
1671
  };
1672
+ /** Tela Tentativas de login (`SpineLoginAttemptsComponent`, `@trismegisto/spine/audit`). */
1673
+ /** Recursos opcionais do painel de configurações (`SpineFeatures`). */
1674
+ accountFeatures: {
1675
+ aiAgent: string;
1676
+ aiAgentDescription: string;
1677
+ aiAgentKeywords: string;
1678
+ aiAgentHelp: string;
1679
+ aiAgentStart: string;
1680
+ aiAgentServers: string;
1681
+ aiAgentAccess: string;
1682
+ aiAgentReadOnly: string;
1683
+ aiAgentReadWrite: string;
1684
+ aiAgentWriteHint: string;
1685
+ aiAgentReadOnlyServer: string;
1686
+ aiAgentTokenName: string;
1687
+ aiAgentGenerate: string;
1688
+ aiAgentSelectServer: string;
1689
+ aiAgentResult: string;
1690
+ aiAgentResultHint: string;
1691
+ aiAgentCopy: string;
1692
+ aiAgentCopied: string;
1693
+ aiAgentDone: string;
1694
+ aiAgentCreateError: string;
1695
+ aiAgentUnavailable: string;
1696
+ activity: string;
1697
+ activityDescription: string;
1698
+ activityKeywords: string;
1699
+ activityFilter: string;
1700
+ activityAll: string;
1701
+ activityFailures: string;
1702
+ activityDetail: string;
1703
+ activityApp: string;
1704
+ activityEmpty: string;
1705
+ activityMore: string;
1706
+ activityShowing: string;
1707
+ activityLoadError: string;
1708
+ unknownIp: string;
1709
+ unknownApp: string;
1710
+ idle: string;
1711
+ idleDescription: string;
1712
+ idleKeywords: string;
1713
+ idleNever: string;
1714
+ idleOption: string;
1715
+ idleLimitHint: string;
1716
+ idleWarningHeading: string;
1717
+ idleWarningText: PluralMessage;
1718
+ idleStay: string;
1719
+ idleLogout: string;
1720
+ startPage: string;
1721
+ startPageDescription: string;
1722
+ startPageKeywords: string;
1723
+ startHome: string;
1724
+ startLast: string;
1725
+ startFavorite: string;
1726
+ startPageHint: string;
1727
+ defaultBadge: string;
1728
+ defaultBadgeDescription: string;
1729
+ defaultBadgeKeywords: string;
1730
+ defaultBadgeAuto: string;
1731
+ defaultBadgeSaved: string;
1732
+ defaultBadgeError: string;
1733
+ defaultBadgeLoadError: string;
1734
+ notices: string;
1735
+ noticesDescription: string;
1736
+ noticesKeywords: string;
1737
+ browserNotices: string;
1738
+ browserNoticesDescription: string;
1739
+ browserNoticesDenied: string;
1740
+ browserNoticesUnsupported: string;
1741
+ /** Ação do aviso na tela que abre a `url` dele. */
1742
+ noticeOpen: string;
1743
+ sync: string;
1744
+ syncDescription: string;
1745
+ syncKeywords: string;
1746
+ syncSynced: string;
1747
+ syncSaving: string;
1748
+ syncLocal: string;
1749
+ syncError: string;
1750
+ syncNow: string;
1751
+ };
1752
+ loginAttempts: {
1753
+ refresh: string;
1754
+ user: string;
1755
+ userPlaceholder: string;
1756
+ period: string;
1757
+ result: string;
1758
+ method: string;
1759
+ all: string;
1760
+ clear: string;
1761
+ advancedFilters: string;
1762
+ ip: string;
1763
+ ipPlaceholder: string;
1764
+ ipHint: string;
1765
+ reason: string;
1766
+ caption: string;
1767
+ pageItems: string;
1768
+ pageSize: string;
1769
+ colDate: string;
1770
+ colResult: string;
1771
+ colMethod: string;
1772
+ colUser: string;
1773
+ colReason: string;
1774
+ colIp: string;
1775
+ colRealm: string;
1776
+ colClient: string;
1777
+ colUserAgent: string;
1778
+ filterByIp: string;
1779
+ filterByUser: string;
1780
+ /** Identificador digitado que não corresponde a usuário nenhum. */
1781
+ noMatchingUser: string;
1782
+ methods: Record<'local' | 'mfa' | 'github' | 'google' | 'keycloak' | 'entraid', string>;
1783
+ results: Record<'success' | 'failure' | 'cancelled', string>;
1784
+ reasons: Record<'bad_password' | 'unknown_user' | 'locked' | 'mfa_failed' | 'mfa_expired' | 'mfa_not_allowed' | 'mfa_invalid_method' | 'recovery_failed' | 'recovery_refused' | 'not_linked' | 'wrong_realm', string>;
1785
+ /** 403 no painel central (falta a operação). */
1786
+ forbiddenAdmin: string;
1787
+ /** 403 no auto-serviço (não administra o client). */
1788
+ forbiddenClient: string;
1789
+ /** Erro com o detalhe do servidor: `{detail}`. */
1790
+ loadErrorDetail: string;
1791
+ loadError: string;
1792
+ };
1335
1793
  }
1336
1794
  declare const SPINE_MESSAGES_PT_BR: SpineMessages;
1337
1795
 
@@ -1357,11 +1815,15 @@ declare function currentSpineMessages(): SpineMessages;
1357
1815
  * Textos do spine no idioma ativo da lib (`HermesI18nService.locale`): uma troca de idioma com
1358
1816
  * `setLocale` atualiza a lib e o spine juntos, sem recarregar. Leitura igual à do `HERMES_MESSAGES`
1359
1817
  * (`inject(SPINE_MESSAGES).header.settings`), viva também em template.
1818
+ *
1819
+ * `meta.locale` é o de formatação da lib (`HermesI18nService.formatLocale`) quando a língua é a mesma: a
1820
+ * variante regional (`en-GB`) e o relógio/primeiro dia da semana escolhidos em Região valem também nas
1821
+ * datas e horas que o spine formata.
1360
1822
  */
1361
1823
  declare const SPINE_MESSAGES: InjectionToken<SpineMessages>;
1362
1824
  /** Sobrescreve textos do spine e/ou acrescenta idiomas. O idioma em si vem de `provideHermesI18n`. */
1363
1825
  declare function provideSpineMessages(config: SpineI18nConfig): Provider;
1364
1826
 
1365
- export { APP_PACKAGE_INFO, DensityService, HERMES_DS_IMPORTS, SPINE_ADMIN_API, SPINE_CONFIG, SPINE_DEFAULT_LOGO, SPINE_I18N_CONFIG, SPINE_MESSAGES, SPINE_MESSAGES_EN, SPINE_MESSAGES_ES, SPINE_MESSAGES_PT_BR, SPINE_NEWS, SPINE_USER_STORAGE_KEYS, SpinePreferencesService, SpineQuickAccessService, SpineUserStorage, ThemePresetService, ThemeService, applyRuntimeEnvironment, applySpineFavicon, currentSpineMessages, mergeRouteTree, provideSpineMessages, provideSpineNews, provideUi, resolveSpineLogo, routerIdOf, spineRoutesOf };
1366
- export type { DensitySetting, PackageInfo, QuickAccessItem, Route, RuntimeEnvironmentInfo, RuntimeEnvironmentShape, SpineConfig, SpineI18nConfig, SpineLogoConfig, SpineLogoSources, SpineMessages, SpineMessagesOverride, SpineNewsIllustration, SpineNewsItem, SpineNewsSlide, SpineUserStorageKey };
1827
+ export { APP_PACKAGE_INFO, DensityService, HERMES_DS_IMPORTS, SPINE_ADMIN_API, SPINE_CONFIG, SPINE_DEFAULT_LOGO, SPINE_I18N_CONFIG, SPINE_IDLE_OPTIONS, SPINE_MESSAGES, SPINE_MESSAGES_EN, SPINE_MESSAGES_ES, SPINE_MESSAGES_PT_BR, SPINE_NEWS, SPINE_USER_STORAGE_KEYS, SpinePreferencesService, SpineQuickAccessService, SpineUserStorage, ThemePresetService, ThemeService, applyRuntimeEnvironment, applySpineFavicon, currentSpineMessages, mergeRouteTree, provideSpineMessages, provideSpineNews, provideUi, resolveSpineLogo, routerIdOf, spineRoutesOf };
1828
+ export type { DensitySetting, PackageInfo, QuickAccessItem, Route, RuntimeEnvironmentInfo, RuntimeEnvironmentShape, SpineConfig, SpineFeatures, SpineHourCyclePreference, SpineI18nConfig, SpineLogoConfig, SpineLogoSources, SpineMcpServer, SpineMessages, SpineMessagesOverride, SpineNewsIllustration, SpineNewsItem, SpineNewsSlide, SpineNoticeType, SpineStartPagePreference, SpineUserStorageKey, SpineWeekStartPreference };
1367
1829
  //# sourceMappingURL=trismegisto-spine.d.ts.map