@trismegisto/spine 2.1.2 → 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 +74 -17
  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 +1698 -156
  43. package/fesm2022/trismegisto-spine-layout.mjs.map +1 -1
  44. package/fesm2022/trismegisto-spine-shell.mjs +17 -1
  45. package/fesm2022/trismegisto-spine-shell.mjs.map +1 -1
  46. package/fesm2022/trismegisto-spine.mjs +1157 -85
  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 +833 -13
  54. package/types/trismegisto-spine-layout.d.ts.map +1 -1
  55. package/types/trismegisto-spine-shell.d.ts +8 -0
  56. package/types/trismegisto-spine-shell.d.ts.map +1 -1
  57. package/types/trismegisto-spine.d.ts +491 -32
  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
  /**
@@ -373,12 +497,19 @@ declare class SpineUserStorage {
373
497
  key(list: SpineUserStorageKey): string;
374
498
  /** Apaga buscas recentes e páginas recentes do usuário (o atual ou o último visto). Favoritos ficam. */
375
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;
376
507
  /** Avisa quando a sessão muda ou o histórico é limpo (quem guarda a lista em memória relê). */
377
508
  onChange(listener: () => void): () => void;
378
509
  private notify;
379
510
  private dropLegacy;
380
- static ɵfac: i0.ɵɵFactoryDeclaration<SpineUserStorage, never>;
381
- static ɵprov: i0.ɵɵInjectableDeclaration<SpineUserStorage>;
511
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineUserStorage, never>;
512
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineUserStorage>;
382
513
  }
383
514
 
384
515
  /**
@@ -632,6 +763,8 @@ interface SpineMessages {
632
763
  sidebar: string;
633
764
  sidebarDescription: string;
634
765
  sidebarKeywords: string;
766
+ /** Detalhe de cada modo do menu lateral (toggletip ao lado do rótulo). */
767
+ sidebarHelp: string;
635
768
  sidebarAuto: string;
636
769
  sidebarFixed: string;
637
770
  sidebarCompact: string;
@@ -648,6 +781,18 @@ interface SpineMessages {
648
781
  timeZoneHint: string;
649
782
  /** `{zone}` = fuso detectado no navegador. */
650
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;
651
796
  shortcuts: string;
652
797
  shortcutsDescription: string;
653
798
  shortcutsKeywords: string;
@@ -655,6 +800,52 @@ interface SpineMessages {
655
800
  tourDescription: string;
656
801
  tourKeywords: string;
657
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;
658
849
  account: string;
659
850
  accountKeywords: string;
660
851
  user: string;
@@ -673,15 +864,20 @@ interface SpineMessages {
673
864
  accessTokenDescription: string;
674
865
  accessTokenKeywords: string;
675
866
  copy: string;
867
+ /** Nome acessível do toggletip de ajuda de uma linha; `{label}` é o rótulo da linha. */
868
+ moreAbout: string;
676
869
  appTokens: string;
677
870
  appTokensDescription: string;
678
871
  appTokensKeywords: string;
872
+ /** Detalhe dos tokens de aplicação (toggletip ao lado do rótulo). */
873
+ appTokensHelp: string;
679
874
  logout: string;
680
875
  logoutDescription: string;
681
876
  logoutKeywords: string;
682
- security: string;
683
- securityDescription: string;
684
- securityKeywords: string;
877
+ /** Seção "MFA" (`?settings=mfa`; a antiga `seguranca` também abre). */
878
+ mfa: string;
879
+ mfaDescription: string;
880
+ mfaKeywords: string;
685
881
  signedInAccount: string;
686
882
  /** `{realm}` = realm do Argos (nome ou id, como o app usa no login). */
687
883
  signedInRealm: string;
@@ -691,9 +887,14 @@ interface SpineMessages {
691
887
  recoveryCodes: string;
692
888
  recoveryCodesDescription: string;
693
889
  recoveryCodesKeywords: string;
890
+ /** Linha "Sessões e dispositivos" (dentro da seção Sessões). */
694
891
  sessions: string;
695
892
  sessionsDescription: string;
696
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;
697
898
  about: string;
698
899
  aboutKeywords: string;
699
900
  application: string;
@@ -962,6 +1163,7 @@ interface SpineMessages {
962
1163
  create: string;
963
1164
  edit: string;
964
1165
  remove: string;
1166
+ /** @deprecated não é mais exibido (Grupos e Aplicações viraram tabelas, sem "Consultar"). */
965
1167
  search: string;
966
1168
  active: string;
967
1169
  inactive: string;
@@ -975,13 +1177,14 @@ interface SpineMessages {
975
1177
  tabRoutes: string;
976
1178
  tabRouters: string;
977
1179
  tabAccess: string;
978
- /** `[innerHTML]`. */
1180
+ /** `[innerHTML]`. Sem client: a pessoa não administra o app em que está logada. */
979
1181
  noClients: string;
980
1182
  pickClient: string;
981
1183
  groupsTitle: string;
982
1184
  groupsIntro: string;
983
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). */
984
1186
  groupsFixed: string;
1187
+ /** @deprecated não é mais exibido (a tela Grupos lista os grupos numa tabela, sem "Consultar"). */
985
1188
  pickGroup: string;
986
1189
  noDescription: string;
987
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). */
@@ -1026,13 +1229,15 @@ interface SpineMessages {
1026
1229
  guardsHint: string;
1027
1230
  noPrivateRoutes: string;
1028
1231
  register: string;
1232
+ /** @deprecated não é mais exibido (a tela Aplicações lista as aplicações numa tabela, sem "Consultar"). */
1029
1233
  appsSearchIntro: string;
1030
1234
  secretCreated: string;
1235
+ /** @deprecated não é mais exibido (a tela Aplicações lista as aplicações numa tabela, sem "Consultar"). */
1031
1236
  pickApp: string;
1032
1237
  disable: string;
1033
1238
  enable: string;
1034
1239
  delete: string;
1035
- /** 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). */
1036
1241
  appSections: string;
1037
1242
  tabOperations: string;
1038
1243
  tabAccesses: string;
@@ -1075,6 +1280,11 @@ interface SpineMessages {
1075
1280
  colPage: string;
1076
1281
  colBuiltPath: string;
1077
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;
1078
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). */
1079
1289
  routesTitle: string;
1080
1290
  newRoute: string;
@@ -1098,6 +1308,23 @@ interface SpineMessages {
1098
1308
  pathHint: string;
1099
1309
  pathInvalid: string;
1100
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;
1101
1328
  confirmDeleteAppHeading: string;
1102
1329
  confirmDeleteApp: string;
1103
1330
  confirmDeleteRouteHeading: string;
@@ -1138,6 +1365,113 @@ interface SpineMessages {
1138
1365
  reorderLoadError: string;
1139
1366
  reorderSaveError: string;
1140
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
+ };
1141
1475
  };
1142
1476
  /**
1143
1477
  * Tela "Auditoria" (`@trismegisto/spine/audit`, `SpineAuditComponent`): a mesma nos dois escopos — o
@@ -1335,6 +1669,127 @@ interface SpineMessages {
1335
1669
  /** `{app}`, `{operation}`, `{outcome}`, `{offset}`, `{duration}`. */
1336
1670
  spanRow: string;
1337
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
+ };
1338
1793
  }
1339
1794
  declare const SPINE_MESSAGES_PT_BR: SpineMessages;
1340
1795
 
@@ -1360,11 +1815,15 @@ declare function currentSpineMessages(): SpineMessages;
1360
1815
  * Textos do spine no idioma ativo da lib (`HermesI18nService.locale`): uma troca de idioma com
1361
1816
  * `setLocale` atualiza a lib e o spine juntos, sem recarregar. Leitura igual à do `HERMES_MESSAGES`
1362
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.
1363
1822
  */
1364
1823
  declare const SPINE_MESSAGES: InjectionToken<SpineMessages>;
1365
1824
  /** Sobrescreve textos do spine e/ou acrescenta idiomas. O idioma em si vem de `provideHermesI18n`. */
1366
1825
  declare function provideSpineMessages(config: SpineI18nConfig): Provider;
1367
1826
 
1368
- 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 };
1369
- 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 };
1370
1829
  //# sourceMappingURL=trismegisto-spine.d.ts.map